├── .gitignore
├── README.md
├── jsconfig.json
├── lib
└── dbConnect.js
├── model
└── ShortUrl.js
├── next.config.js
├── package.json
├── postcss.config.js
├── public
├── android-chrome-192x192.png
├── android-chrome-512x512.png
├── apple-touch-icon.png
├── favicon-16x16.png
├── favicon-32x32.png
├── favicon.ico
└── website.png
├── src
├── components
│ ├── DesktopModal.js
│ ├── Features.js
│ ├── GetLink.js
│ ├── Hero.js
│ ├── MobileModal.js
│ ├── Navbar.js
│ ├── SecurityForm.js
│ ├── ShortLinks.js
│ └── UseWindowSize.js
├── pages
│ ├── 404.js
│ ├── [url].js
│ ├── _app.js
│ ├── _document.js
│ ├── api
│ │ ├── create-shortlink.js
│ │ ├── getclicks.js
│ │ └── redirect.js
│ └── index.js
├── redux
│ ├── reducers
│ │ ├── bottomSheet.js
│ │ ├── getUrl.js
│ │ └── localStorage.js
│ └── store.js
└── styles
│ └── globals.css
├── tailwind.config.js
└── yarn.lock
/.gitignore:
--------------------------------------------------------------------------------
1 | # See https://help.github.com/articles/ignoring-files/ for more about ignoring files.
2 |
3 | # dependencies
4 | /node_modules
5 | /.pnp
6 | .pnp.js
7 |
8 | # testing
9 | /coverage
10 |
11 | # next.js
12 | /.next/
13 | /out/
14 |
15 | # production
16 | /build
17 |
18 | # misc
19 | .DS_Store
20 | *.pem
21 |
22 | # debug
23 | npm-debug.log*
24 | yarn-debug.log*
25 | yarn-error.log*
26 | .pnpm-debug.log*
27 |
28 | # local env files
29 | .env*.local
30 |
31 | # vercel
32 | .vercel
33 |
--------------------------------------------------------------------------------
/README.md:
--------------------------------------------------------------------------------
1 | # [Securelink](https://securelink.vercel.app/)- Securely Share Your Links with Custom Access Controls 🔗🔐
2 |
3 |
4 |
5 |
6 |
7 |
8 |
9 | ## Introduction
10 |
11 | SecureLink is a link shortener that gives you full control over your links. You can customize your short links according to your preferences, protect them with a password to keep them secure, and delete them automatically after a single view to enhance security. You can also limit the number of clicks on your link for added security, set an expiration time for your links, and encrypt your destination link before saving it to the server for enhanced privacy.
12 |
13 |
14 |
15 | ## Features
16 | - Customize your short links according to your preferences
17 | - Protect your links with a password to keep them secure
18 | - Delete the link automatically after a single view to enhance security
19 | - Limit the number of clicks on your link for added security
20 | - Set an expiration time for your links, after which they will become inactive
21 | - Encrypt your destination link before saving it to the server for enhanced privacy
22 |
23 |
24 |
25 | ## Usage
26 | 1. Enter the destination link you want to shorten in the input box.
27 |
28 | 2. You can enter your custom path name like 'github' or 'twitter', or you can generate a random path name by clicking on the "randomize" button.
29 |
30 | 3. You can choose other additional options for extra security of your sharable link like:
31 | - **Password** : You can make your link protected and add a password. It will decrypt your destination URL so no one can access it without a password.
32 | - **View once**: You can turn on this feature to make the user view the link only once. After that, the link will be destroyed automatically and no one can access it again.
33 | - **Click limit**: You can set a limit on the number of clicks to avoid misuse of your link.
34 | - **Expiration time**: You can set an expiration time limit up to 30 minutes after which the link will be destroyed automatically.
35 |
36 |
37 | 4. After adding all these, click on the "Generate link" button. It will take 3-5 seconds, and after that, you will see all your generated links in the featured section. (Non-working links destroy automatically after their expire time.)
38 |
39 | 5. Copy the generated short link and share it with anyone you want.
40 |
41 |
42 | ## Try it out
43 | Visit [securelink.vercel.app](https://securelink.vercel.app/) and start securing your links today!
44 |
--------------------------------------------------------------------------------
/jsconfig.json:
--------------------------------------------------------------------------------
1 | {
2 | "compilerOptions": {
3 | "paths": {
4 | "@/*": ["./src/*"]
5 | }
6 | }
7 | }
8 |
--------------------------------------------------------------------------------
/lib/dbConnect.js:
--------------------------------------------------------------------------------
1 | import mongoose from 'mongoose';
2 |
3 | const connectMongo = async () => mongoose.connect(process.env.NEXT_PUBLIC_MONGO_URI);
4 |
5 | export default connectMongo
--------------------------------------------------------------------------------
/model/ShortUrl.js:
--------------------------------------------------------------------------------
1 | import mongoose from 'mongoose';
2 |
3 | const shortUrlSchema = new mongoose.Schema({
4 | destinationUrl: {
5 | type: String,
6 | required: true,
7 | unique: true,
8 | },
9 | shortUrl: {
10 | type: String,
11 | required: true,
12 | unique: true,
13 | },
14 | password: {
15 | type: String,
16 | },
17 | protection: {
18 | type: Boolean,
19 | default: false,
20 | },
21 | clickCount: {
22 | type: Number,
23 | default: 0
24 | },
25 | readCount: {
26 | type: Number,
27 | default: 20
28 | },
29 | viewOnce: {
30 | type: Boolean,
31 | default: false,
32 | },
33 | isopen: {
34 | type: Boolean,
35 | default: false,
36 | },
37 | expiresAt: {
38 | type: Date,
39 | default: Date.now() + 5 * 60 * 1000, // 5 minutes in milliseconds
40 | index: { expires: 0 }
41 | }
42 | });
43 |
44 | const ShortUrl = mongoose.models.ShortUrl || mongoose.model('ShortUrl', shortUrlSchema);
45 |
46 | export default ShortUrl;
47 |
--------------------------------------------------------------------------------
/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": "link-shortner",
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 | "@reduxjs/toolkit": "^1.9.3",
13 | "axios": "^1.3.4",
14 | "bcrypt": "^5.1.0",
15 | "crypto-js": "^4.1.1",
16 | "express-validator": "^6.15.0",
17 | "focus-trap-react": "^10.1.1",
18 | "framer-motion": "^10.5.0",
19 | "mongoose": "^7.0.1",
20 | "nanoid": "^4.0.1",
21 | "next": "13.2.4",
22 | "prop-types": "^15.8.1",
23 | "react": "18.2.0",
24 | "react-dom": "18.2.0",
25 | "react-hot-toast": "^2.4.0",
26 | "react-icons": "^4.8.0",
27 | "react-modal-sheet": "^1.10.1",
28 | "react-redux": "^8.0.5",
29 | "shortid": "^2.2.16"
30 | },
31 | "devDependencies": {
32 | "autoprefixer": "^10.4.14",
33 | "postcss": "^8.4.21",
34 | "tailwindcss": "^3.2.7"
35 | }
36 | }
37 |
--------------------------------------------------------------------------------
/postcss.config.js:
--------------------------------------------------------------------------------
1 | module.exports = {
2 | plugins: {
3 | tailwindcss: {},
4 | autoprefixer: {},
5 | },
6 | }
7 |
--------------------------------------------------------------------------------
/public/android-chrome-192x192.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/sujjeee/securelink/3460fe108cf1f1bafd665489751b682cb1326c8c/public/android-chrome-192x192.png
--------------------------------------------------------------------------------
/public/android-chrome-512x512.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/sujjeee/securelink/3460fe108cf1f1bafd665489751b682cb1326c8c/public/android-chrome-512x512.png
--------------------------------------------------------------------------------
/public/apple-touch-icon.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/sujjeee/securelink/3460fe108cf1f1bafd665489751b682cb1326c8c/public/apple-touch-icon.png
--------------------------------------------------------------------------------
/public/favicon-16x16.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/sujjeee/securelink/3460fe108cf1f1bafd665489751b682cb1326c8c/public/favicon-16x16.png
--------------------------------------------------------------------------------
/public/favicon-32x32.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/sujjeee/securelink/3460fe108cf1f1bafd665489751b682cb1326c8c/public/favicon-32x32.png
--------------------------------------------------------------------------------
/public/favicon.ico:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/sujjeee/securelink/3460fe108cf1f1bafd665489751b682cb1326c8c/public/favicon.ico
--------------------------------------------------------------------------------
/public/website.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/sujjeee/securelink/3460fe108cf1f1bafd665489751b682cb1326c8c/public/website.png
--------------------------------------------------------------------------------
/src/components/DesktopModal.js:
--------------------------------------------------------------------------------
1 | import React, { useState } from 'react'
2 | import SecurityForm from './SecurityForm'
3 |
4 | const DesktopModal = () => {
5 | return (
6 |
7 |
8 |
9 |
10 |
11 |
12 | Secure Your Link!
13 |
14 |
15 |
16 |
17 |
18 |
19 |
20 | )
21 | }
22 |
23 | export default DesktopModal
--------------------------------------------------------------------------------
/src/components/Features.js:
--------------------------------------------------------------------------------
1 | import React from 'react'
2 | import { BiEdit, BiLock } from 'react-icons/bi'
3 | import { AiOutlineEyeInvisible, AiOutlineCloudServer, AiOutlineFieldTime } from 'react-icons/ai'
4 | import { HiCursorClick } from 'react-icons/hi'
5 |
6 | const Features = () => {
7 | return (
8 |
9 |
10 |
11 |
12 |
13 |
14 |
15 |
16 |
17 | Customize your short links according to your preferences.
18 |
19 |
20 |
21 |
22 |
23 |
24 |
25 |
26 |
27 |
28 |
29 |
30 | Protect your links with a password to keep them secure.
31 |
32 |
33 |
34 |
35 |
36 |
37 |
38 |
39 |
40 |
41 |
42 |
43 | Delete the link automatically after a single view to enhance security.
44 |
45 |
46 |
47 |
48 |
49 |
50 |
51 |
52 |
53 |
54 |
55 |
56 | Limit the number of clicks on your link for added security.
57 |
58 |
59 |
60 |
61 |
62 |
63 |
64 |
65 |
66 |
67 |
68 |
69 | Set an expiration time for your links, after which they will become inactive.
70 |
71 |
72 |
73 |
74 |
75 |
76 |
77 |
78 |
79 |
80 |
81 |
82 | Encrypt your destination link before saving it to the server for enhanced privacy.
83 |
84 |
85 |
86 |
87 |
88 | )
89 | }
90 |
91 | export default Features
--------------------------------------------------------------------------------
/src/components/GetLink.js:
--------------------------------------------------------------------------------
1 | import React, { useState } from 'react'
2 | import { TbShieldLock } from 'react-icons/tb'
3 | import DesktopModal from './DesktopModal'
4 | import MobileModal from './MobileModal'
5 | import useWindowSize from './UseWindowSize'
6 | import { useDispatch, useSelector } from 'react-redux'
7 | import { toggle } from '@/redux/reducers/bottomSheet'
8 | import { setUrl } from '@/redux/reducers/getUrl'
9 |
10 |
11 | const GetLink = () => {
12 | const [newUrl, setNewUrl] = useState('')
13 |
14 | // getting value form redux
15 | const isToggled = useSelector((state) => state.bottomSheet);
16 |
17 | const dispatch = useDispatch();
18 |
19 | // checking screen ratio
20 | const { isMobile, isDesktop } = useWindowSize();
21 |
22 | const handleBottomSheet = async (e) => {
23 | dispatch(toggle())
24 | dispatch(setUrl(newUrl))
25 | }
26 | const setChange = (event) => {
27 | setNewUrl(event.target.value);
28 | }
29 |
30 | return (
31 | <>
32 |
33 |
42 |
43 |
48 |
49 | Secure Link
50 |
51 |
52 |
53 |
54 |
55 | {isMobile &&
}
56 | {isToggled && (isDesktop &&
57 |
58 |
59 | )}
60 |
61 |
62 | >
63 | )
64 | }
65 |
66 | export default GetLink
--------------------------------------------------------------------------------
/src/components/Hero.js:
--------------------------------------------------------------------------------
1 | import React from 'react'
2 | import Link from 'next/link';
3 | import { ImTwitter } from 'react-icons/im';
4 |
5 | const Hero = () => {
6 | return (
7 |
8 |
9 |
13 | Introducing SecureLink
14 |
15 |
16 |
17 | Securely Share Your Links with Custom Access Controls
18 |
19 |
20 |
21 | SecureLink is a link shortener that gives you full control over your links. You can set a password, a read count limit and a one-time open option for your links.
22 |
23 |
24 | )
25 | }
26 |
27 | export default Hero
--------------------------------------------------------------------------------
/src/components/MobileModal.js:
--------------------------------------------------------------------------------
1 | import React from 'react'
2 | import Sheet from 'react-modal-sheet';
3 | import { useDispatch } from 'react-redux';
4 | import { toggle } from '@/redux/reducers/bottomSheet';
5 | import SecurityForm from './SecurityForm';
6 |
7 |
8 | const MobileModal = ({ openModal }) => {
9 | const dispatch = useDispatch();
10 |
11 | return (
12 |
13 | dispatch(toggle())}
16 | detent="content-height" >
17 |
18 |
19 |
20 |
21 |
22 |
23 |
24 |
25 |
26 | )
27 | }
28 |
29 | export default MobileModal
--------------------------------------------------------------------------------
/src/components/Navbar.js:
--------------------------------------------------------------------------------
1 | import Link from 'next/link'
2 | import React from 'react'
3 | import { AiFillGithub, AiOutlineTwitter } from 'react-icons/ai'
4 | import { TbShieldLock } from 'react-icons/tb'
5 |
6 | const Navbar = () => {
7 |
8 | return (
9 |
10 |
11 |
12 |
13 | SecureLink
14 |
15 |
16 |
17 |
18 |
21 |
22 |
23 |
26 |
27 |
28 |
29 |
41 |
42 |
43 |
44 | )
45 | }
46 |
47 | export default Navbar
--------------------------------------------------------------------------------
/src/components/SecurityForm.js:
--------------------------------------------------------------------------------
1 | import React, { useState } from 'react'
2 | import { RxShuffle } from 'react-icons/rx'
3 | import { AiOutlineLink, AiOutlineEyeInvisible, AiOutlineEye } from 'react-icons/ai'
4 | import axios from 'axios';
5 | import { useDispatch, useSelector } from 'react-redux';
6 | import { toggle } from '@/redux/reducers/bottomSheet';
7 | import { addLink } from '@/redux/reducers/localStorage';
8 | import shortid from 'shortid';
9 | import { toast, Toaster } from 'react-hot-toast';
10 | import useWindowSize from './UseWindowSize';
11 |
12 | const SecurityForm = () => {
13 | const userUrl = useSelector(state => state.getUrl);
14 | const dispatch = useDispatch();
15 |
16 | const { isMobile } = useWindowSize();
17 | const [showPassword, setShowPassword] = useState(false)
18 | const [showLoader, setShowLoader] = useState(false)
19 |
20 | const [urlData, setUrlData] = useState({
21 | originalUrl: userUrl,
22 | shortId: "",
23 | protection: false,
24 | password: "",
25 | viewOnce: false,
26 | readCount: 50,
27 | expiresAt: 5
28 | })
29 | const { originalUrl, shortId, protection, password, viewOnce, readCount, expiresAt } = urlData
30 | const setChanges = (e) => {
31 | const { name, value, checked } = e.target;
32 | if (name === "protection" || name === "viewOnce") {
33 | setUrlData({
34 | ...urlData,
35 | [name]: checked,
36 | password: checked ? password : null
37 | });
38 | } else {
39 | setUrlData({
40 | ...urlData,
41 | [name]: value
42 | });
43 | }
44 | }
45 |
46 |
47 | const genRandom = () => {
48 | setUrlData(prevUrlData => {
49 | return {
50 | ...prevUrlData,
51 | shortId: shortid.generate()
52 | }
53 | });
54 | }
55 |
56 | const handleFormSubmit = async (e) => {
57 | e.preventDefault();
58 | if (protection && !password) {
59 | alert('Please enter a password for the protected URL.');
60 | return;
61 | }
62 |
63 | try {
64 | setShowLoader(true);
65 | const res = await axios.post('/api/create-shortlink', { originalUrl, shortId, protection, password, viewOnce, readCount, expiresAt });
66 |
67 | if (res) {
68 | setTimeout(() => {
69 | setShowLoader(false);
70 | dispatch(toggle())
71 | window.scrollTo({
72 | top: document.getElementById('generated_links').offsetTop - 200,
73 | behavior: 'smooth'
74 | });
75 |
76 | toast.success("Link generated successfully");
77 | const link = { shortId: res.data.shortUrl, expiresAt: res.data.expiresAt };
78 | dispatch(addLink(link));
79 |
80 | // Get the existing links array from the local storage
81 | const existingLinks = JSON.parse(localStorage.getItem("secure-links")) || [];
82 |
83 | // Add the new link to the array
84 | existingLinks.push(link);
85 |
86 | // Store the updated array in the local storage
87 | localStorage.setItem("secure-links", JSON.stringify(existingLinks));
88 |
89 | }, 2000);
90 | }
91 | } catch (error) {
92 | console.error(error)
93 | setShowLoader(false)
94 | toast.error("Invalid entry")
95 | }
96 |
97 | };
98 | return (
99 |
276 | )
277 | }
278 |
279 | export default SecurityForm
--------------------------------------------------------------------------------
/src/components/ShortLinks.js:
--------------------------------------------------------------------------------
1 | import React from 'react'
2 | import { MdContentCopy } from 'react-icons/md'
3 | import { AiOutlineRise, AiOutlineLink } from 'react-icons/ai'
4 | import useWindowSize from './UseWindowSize';
5 | import { toast, Toaster } from 'react-hot-toast';
6 |
7 | const ShortLinks = ({ shortedLinks }) => {
8 | const { isMobile, isDesktop } = useWindowSize();
9 | return (
10 |
11 |
12 |
13 |
14 |
15 |
16 |
31 |
32 |
33 |
34 |
35 | {shortedLinks.clicks ? shortedLinks.clicks : 0}
36 |
37 | clicks
38 |
39 |
40 |
41 |
{
44 | navigator.clipboard.writeText(shortedLinks.shortId)
45 | toast.success("Copied shortlink to clipboard")
46 | }}
47 | className="flex gap-2" >
48 |
49 |
50 |
51 |
52 |
53 |
54 |
55 | )
56 | }
57 |
58 | export default ShortLinks
--------------------------------------------------------------------------------
/src/components/UseWindowSize.js:
--------------------------------------------------------------------------------
1 | import { useState, useEffect } from "react";
2 |
3 | export default function useWindowSize() {
4 | const [windowSize, setWindowSize] = useState({
5 | width: undefined,
6 | height: undefined,
7 | });
8 |
9 | useEffect(() => {
10 | const handleResize = () => {
11 | setWindowSize({
12 | width: window.innerWidth,
13 | height: window.innerHeight,
14 | });
15 | };
16 |
17 | window.addEventListener("resize", handleResize);
18 | handleResize();
19 |
20 | return () => window.removeEventListener("resize", handleResize);
21 | }, []);
22 |
23 | const isMobile = typeof windowSize?.width === "number" && windowSize?.width < 768;
24 | const isDesktop = typeof windowSize?.width === "number" && windowSize?.width >= 768;
25 |
26 | return { windowSize, isMobile, isDesktop };
27 | }
28 |
--------------------------------------------------------------------------------
/src/pages/404.js:
--------------------------------------------------------------------------------
1 | import React from 'react'
2 |
3 | const notFound = () => {
4 | return (
5 |
6 |
7 |
You are lost!
8 |
11 |
12 |
13 | )
14 | }
15 |
16 | export default notFound
--------------------------------------------------------------------------------
/src/pages/[url].js:
--------------------------------------------------------------------------------
1 | import axios from 'axios';
2 | import React, { useState } from 'react';
3 | import CryptoJS from 'crypto-js'
4 |
5 | export async function getServerSideProps(context) {
6 | const { url } = context.params;
7 | const hostName = context.req.headers.host;
8 |
9 | // if you want to use in localhost then turn 'https' to 'http'
10 | const response = await fetch(`https://${hostName}/api/redirect?link=https://${hostName}/${url}`);
11 | const data = await response.json();
12 |
13 | if (data.success === true) {
14 | if (data.protection === true) {
15 | return {
16 | props: {
17 | requiresPassword: true,
18 | shortUrl: `https://${hostName}/${url}`,
19 | },
20 | };
21 | } else {
22 | const encryptedString = data.destinationUrl
23 | const decryptedName = CryptoJS.AES.decrypt(encryptedString, process.env.NEXT_PUBLIC_NEXTAUTH_KEY).toString(CryptoJS.enc.Utf8)
24 | return {
25 | redirect: {
26 | destination: decryptedName,
27 | permanent: false,
28 | },
29 | };
30 | }
31 | } else {
32 | return {
33 | notFound: true,
34 | };
35 | }
36 | }
37 |
38 |
39 | export default function Page({ shortUrl }) {
40 |
41 | const [password, setPassword] = useState('');
42 |
43 | async function handleSubmit(event) {
44 | event.preventDefault();
45 |
46 | try {
47 | const response = await axios.post('/api/redirect', {
48 | password,
49 | shortUrl,
50 | });
51 |
52 | if (response.data.success === true) {
53 | const encryptUrl = response.data.destinationUrl
54 | var decryptUrl = CryptoJS.AES.decrypt(encryptUrl, process.env.NEXT_PUBLIC_NEXTAUTH_KEY).toString(CryptoJS.enc.Utf8);
55 | window.location.href = decryptUrl
56 | }
57 | } catch (error) {
58 | console.error('error:', error);
59 | alert("worng cred!")
60 | }
61 | }
62 |
63 | function handleChange(event) {
64 | setPassword(event.target.value);
65 | }
66 |
67 | return (
68 |
69 |
70 |
71 |
Password Required
72 |
This link is password protected. Please enter the password to view it.
73 |
74 |
85 |
86 |
87 | );
88 | }
89 |
90 |
--------------------------------------------------------------------------------
/src/pages/_app.js:
--------------------------------------------------------------------------------
1 | import { store } from '@/redux/store'
2 | import '@/styles/globals.css'
3 | import Script from 'next/script'
4 | import { Provider } from 'react-redux'
5 |
6 |
7 | export default function App({ Component, pageProps }) {
8 | return (
9 | <>
10 | {/* Global Site Tag (gtag.js) - Google Analytics */}
11 |
14 |
15 |
25 |
26 |
27 |
28 |
29 |
30 | >
31 | )
32 | }
33 |
--------------------------------------------------------------------------------
/src/pages/_document.js:
--------------------------------------------------------------------------------
1 | import { Html, Head, Main, NextScript } from 'next/document'
2 |
3 | export default function Document() {
4 | return (
5 |
6 |
8 |
9 |
10 |
11 |
12 | )
13 | }
14 |
--------------------------------------------------------------------------------
/src/pages/api/create-shortlink.js:
--------------------------------------------------------------------------------
1 | import connectMongo from '../../../lib/dbConnect';
2 | import ShortUrl from '../../../model/ShortUrl';
3 | import CryptoJS from 'crypto-js';
4 | import { validationResult, check } from 'express-validator';
5 | import bcrypt from 'bcrypt';
6 |
7 | async function createShortLink(req, res) {
8 | try {
9 | // connect to mongodb
10 | await connectMongo();
11 |
12 | // Validating the API request body
13 | const validationRules = [
14 | check('originalUrl')
15 | .notEmpty()
16 | .withMessage('Destination URL is required')
17 | .isURL()
18 | .withMessage('Destination URL is invalid'),
19 | check('shortId')
20 | .notEmpty()
21 | .withMessage('Short URL is required'),
22 | check('protection')
23 | .optional()
24 | .isBoolean()
25 | .withMessage('Protection should be a boolean value'),
26 | check('password')
27 | .optional()
28 | .custom((value, { req }) => {
29 | if (req.body.protection && !value) {
30 | throw new Error('Password is required for protected URL');
31 | }
32 | return true;
33 | }),
34 | check('viewOnce')
35 | .optional()
36 | .isBoolean()
37 | .withMessage('View Once should be a boolean value'),
38 | check('readCount')
39 | .optional()
40 | .notEmpty()
41 | .withMessage('Read Count is required')
42 | .isInt({ min: 1, max: 100 })
43 | .withMessage('Read Count should be an integer value and should be between 1 and 30'),
44 | check('expiresAt')
45 | .optional()
46 | .notEmpty()
47 | .withMessage('Expires time is required')
48 | .isInt({ min: 1, max: 30 })
49 | .withMessage('Expires time should be an integer value and should be between 1 and 30'),
50 | ];
51 |
52 | await Promise.all(validationRules.map((validation) => validation.run(req)));
53 |
54 | // Checking for errors in req body
55 | const errors = validationResult(req);
56 | if (!errors.isEmpty()) {
57 | return res.status(422).json({ errors: errors.array() });
58 | }
59 |
60 | const { originalUrl, shortId, protection, password, viewOnce, readCount, expiresAt } = req.body;
61 |
62 | // hashing password using bcrypt.js
63 | let passwordHash = null;
64 | if (protection) {
65 | if (!password) {
66 | return res.status(400).json({ error: 'Password is required for protected URL' });
67 | }
68 | passwordHash = await bcrypt.hash(password, 10);
69 | }
70 |
71 | // converting the date taken by user in minutes to ISO format
72 | const expirationTime = expiresAt ? new Date(Date.now() + expiresAt * 60 * 1000) : new Date(Date.now() + 5 * 60 * 1000);
73 |
74 | let url = await ShortUrl.findOne({ originalUrl });
75 |
76 | // creating field to database
77 | if (!url) {
78 |
79 | // if you want to use in localhost then turn 'https' to 'http'
80 | const checkShortId = await ShortUrl.findOne({ shortUrl: `https://${req.headers.host}/${shortId}` });
81 | if (checkShortId) {
82 | return res.status(409).json({ success: false, message: 'Short URL is already taken' });
83 | }
84 |
85 | const shortUrl = `https://${req.headers.host}/${shortId}`;
86 | const destinationUrl = CryptoJS.AES.encrypt(originalUrl, process.env.NEXT_PUBLIC_NEXTAUTH_KEY).toString();
87 |
88 | url = await ShortUrl.create({
89 | destinationUrl,
90 | shortUrl,
91 | password: passwordHash,
92 | protection,
93 | viewOnce,
94 | clickCount: 0,
95 | open: false,
96 | expiresAt: expirationTime,
97 | readCount,
98 | });
99 | }
100 |
101 | res.status(200).json({ success: true, shortUrl: url.shortUrl, expiresAt: url.expiresAt });
102 | } catch (error) {
103 | console.error(error);
104 | res.status(500).json({ success: false, message: 'Internal server error' });
105 | }
106 | }
107 |
108 | export default createShortLink;
109 |
--------------------------------------------------------------------------------
/src/pages/api/getclicks.js:
--------------------------------------------------------------------------------
1 | import connectMongo from '../../../lib/dbConnect';
2 | import ShortUrl from '../../../model/ShortUrl';
3 |
4 | export default async function handler(req, res) {
5 | try {
6 | await connectMongo();
7 |
8 | if (req.method === 'GET' && req.query.link) {
9 | const { link } = req.query;
10 |
11 | const url = await ShortUrl.findOne(
12 | { shortUrl: link },
13 | );
14 |
15 | if (!url) {
16 | res.status(404).json({ success: false, message: 'Url Not Found!' });
17 | return;
18 | }
19 |
20 | res.status(200).json({ success: true, clicksCounts: url.clickCount });
21 | }
22 | } catch (error) {
23 | console.error(error);
24 | res.status(500).json({ success: false, message: 'Internal Server Error' });
25 | }
26 | }
27 |
--------------------------------------------------------------------------------
/src/pages/api/redirect.js:
--------------------------------------------------------------------------------
1 | import connectMongo from '../../../lib/dbConnect';
2 | import ShortUrl from '../../../model/ShortUrl';
3 | import bcrypt from 'bcrypt';
4 |
5 | export default async function handler(req, res) {
6 | try {
7 | await connectMongo();
8 |
9 | if (req.method === 'GET' && req.query.link) {
10 | const { link } = req.query;
11 |
12 | const url = await ShortUrl.findOneAndUpdate(
13 | { shortUrl: link },
14 | { $inc: { clickCount: 1 } },
15 | { new: true }
16 | );
17 |
18 | if (url.isopen || url.clickCount >= url.readCount) {
19 | await ShortUrl.deleteOne({ _id: url._id });
20 | res.status(404).json({ success: false, message: 'Url Not Found!' });
21 | return;
22 | }
23 |
24 | if (url.protection) {
25 | res.status(200).json({ success: true, protection: url.protection });
26 | return;
27 | }
28 |
29 | if (url.viewOnce && !url.protection) {
30 | await ShortUrl.findOneAndUpdate({ _id: url._id }, { $set: { isopen: true } });
31 | }
32 |
33 | res.status(200).json({ success: true, destinationUrl: url.destinationUrl, protection: url.protection });
34 | } else if (req.method === 'POST' && req.body.shortUrl && req.body.password) {
35 | const { shortUrl, password } = req.body;
36 |
37 | const url = await ShortUrl.findOne({ shortUrl });
38 |
39 | if (!url) {
40 | res.status(404).json({ success: false, message: 'Url Not Found!' });
41 | return;
42 | }
43 |
44 | if (url.isopen || url.clickCount >= url.readCount) {
45 | await ShortUrl.deleteOne({ _id: url._id });
46 | res.status(404).json({ success: false, message: 'Url Not Found!' });
47 | return;
48 | }
49 |
50 | const checkPass = await bcrypt.compare(password, url.password);
51 |
52 | if (checkPass) {
53 | if (url.viewOnce) {
54 | await ShortUrl.findOneAndUpdate({ _id: url._id }, { $set: { isopen: true } }, { new: true });
55 | }
56 | res.status(200).json({ success: true, destinationUrl: url.destinationUrl });
57 | } else {
58 | res.status(401).json({ success: false, message: 'Unauthorized' });
59 | }
60 | } else {
61 | res.status(400).json({ success: false, message: 'Bad Request' });
62 | }
63 | } catch (error) {
64 | console.error(error);
65 | res.status(500).json({ success: false, message: 'Internal Server Error' });
66 | }
67 | }
68 |
--------------------------------------------------------------------------------
/src/pages/index.js:
--------------------------------------------------------------------------------
1 | import React, { useEffect, useState } from 'react'
2 | import { useSelector } from 'react-redux';
3 | import Features from '@/components/Features';
4 | import GetLink from '@/components/GetLink';
5 | import Hero from '@/components/Hero';
6 | import Navbar from '@/components/Navbar';
7 | import ShortLinks from '@/components/ShortLinks';
8 | import Head from 'next/head';
9 |
10 | const Home = () => {
11 |
12 | let description = "SecureLink helps you protect your links online with custom settings and features.";
13 | let ogimage = "https://securelink.vercel.app/website.png";
14 | let sitename = "SecureLink";
15 | let title = "SecureLink - Link Shortener with Security Features";
16 |
17 | const [urls, setUrls] = useState([]);
18 | const [filterUrls, setFilterUrls] = useState([])
19 | const localUrl = useSelector(state => state.localStorage);
20 |
21 | const gitUrl = {
22 | shortId: "https://securelink.vercel.app/github"
23 | }
24 |
25 | const fetchData = async (urls) => {
26 | try {
27 | const updatedUrls = await Promise.all(
28 | urls.map(async (url) => {
29 | const response = await fetch(`/api/getclicks?link=${url.shortId}`);
30 | const data = await response.json();
31 | return { ...url, clicks: data.clicksCounts };
32 | })
33 | );
34 | setUrls(updatedUrls);
35 | } catch (error) {
36 | console.log(error);
37 | }
38 | };
39 |
40 | useEffect(() => {
41 | try {
42 | const genratedUrls = JSON.parse(localStorage.getItem("secure-links"));
43 | if (genratedUrls) {
44 | const currentTime = new Date().getTime();
45 | const filteredUrls = genratedUrls.filter(
46 | (link) => new Date(link.expiresAt).getTime() > currentTime
47 | );
48 | localStorage.setItem("secure-links", JSON.stringify(filteredUrls));
49 | setFilterUrls(filteredUrls);
50 | }
51 | } catch (error) {
52 | console.log(error);
53 | }
54 | }, [localUrl]);
55 |
56 | useEffect(() => {
57 | if (filterUrls.length > 0) {
58 | fetchData(filterUrls);
59 | }
60 | }, [filterUrls]);
61 |
62 | return (
63 | <>
64 |
65 | SecureLinks
66 |
67 |
68 |
69 |
70 |
71 |
72 |
73 |
74 |
75 |
76 |
77 |
78 |
79 |
80 |
81 |
82 |
83 |
84 |
85 |
86 |
89 |
90 |
91 |
92 |
93 |
94 | Generated links
95 |
96 |
97 |
98 |
99 |
100 | {urls.map((url, index) => (
101 |
102 |
103 |
104 | ))}
105 |
106 |
107 |
108 |
109 |
110 |
111 | Powerful Access Control
112 |
113 |
114 |
115 |
116 |
117 |
118 |
119 |
120 | Protect your links now!
121 |
122 |
123 | >
124 | )
125 | }
126 |
127 | export default Home
--------------------------------------------------------------------------------
/src/redux/reducers/bottomSheet.js:
--------------------------------------------------------------------------------
1 | import { createSlice } from '@reduxjs/toolkit'
2 |
3 | const initialState = false
4 |
5 | const bottomSheetSlice = createSlice({
6 | name: 'bottomSheet',
7 | initialState,
8 | reducers: {
9 | toggle(state) {
10 | return !state
11 | },
12 | },
13 | })
14 |
15 | export const { toggle } = bottomSheetSlice.actions
16 | export default bottomSheetSlice.reducer
--------------------------------------------------------------------------------
/src/redux/reducers/getUrl.js:
--------------------------------------------------------------------------------
1 | import { createSlice } from '@reduxjs/toolkit';
2 |
3 | const initialState = '';
4 |
5 | const getUrlSlice = createSlice({
6 | name: 'getUrl',
7 | initialState,
8 | reducers: {
9 | setUrl(state, action) {
10 | return action.payload;
11 | },
12 | },
13 | });
14 |
15 | export const { setUrl } = getUrlSlice.actions;
16 | export default getUrlSlice.reducer;
17 |
--------------------------------------------------------------------------------
/src/redux/reducers/localStorage.js:
--------------------------------------------------------------------------------
1 | import { createSlice } from '@reduxjs/toolkit';
2 |
3 | const initialState = [];
4 |
5 | const localStorageSlice = createSlice({
6 | name: 'localStorage',
7 | initialState,
8 | reducers: {
9 | addLink: (state, action) => {
10 | state.push(action.payload);
11 | }
12 | },
13 | });
14 |
15 | export const { addLink } = localStorageSlice.actions;
16 | export default localStorageSlice.reducer;
17 |
--------------------------------------------------------------------------------
/src/redux/store.js:
--------------------------------------------------------------------------------
1 | import { configureStore } from '@reduxjs/toolkit'
2 | import bottomSheetReducer from './reducers/bottomSheet'
3 | import getUrlReducer from './reducers/getUrl'
4 | import localStorageReducer from './reducers/localStorage'
5 |
6 |
7 | export const store = configureStore({
8 | reducer: {
9 | bottomSheet: bottomSheetReducer,
10 | getUrl: getUrlReducer,
11 | localStorage: localStorageReducer
12 | }
13 | })
14 |
--------------------------------------------------------------------------------
/src/styles/globals.css:
--------------------------------------------------------------------------------
1 | @tailwind base;
2 | @tailwind components;
3 | @tailwind utilities;
4 |
5 | body{
6 | background-color: #111113
7 | }
8 | /* Hide scrollbar for #pop-up element for all browsers */
9 | #pop-up::-webkit-scrollbar {
10 | display: none;
11 | }
12 |
13 | /* Hide scrollbar for #pop-up element for IE, Edge, and Firefox */
14 | #pop-up {
15 | -ms-overflow-style: none; /* IE and Edge */
16 | scrollbar-width: none; /* Firefox */
17 | }
--------------------------------------------------------------------------------
/tailwind.config.js:
--------------------------------------------------------------------------------
1 | /** @type {import('tailwindcss').Config} */
2 | module.exports = {
3 | content: ["./src/**/*.{js,ts,jsx,tsx}"],
4 | theme: {
5 | extend: {},
6 | },
7 | plugins: [],
8 | }
9 |
--------------------------------------------------------------------------------
/yarn.lock:
--------------------------------------------------------------------------------
1 | # THIS IS AN AUTOGENERATED FILE. DO NOT EDIT THIS FILE DIRECTLY.
2 | # yarn lockfile v1
3 |
4 |
5 | "@babel/runtime@^7.12.1", "@babel/runtime@^7.9.2":
6 | version "7.21.0"
7 | resolved "https://registry.yarnpkg.com/@babel/runtime/-/runtime-7.21.0.tgz#5b55c9d394e5fcf304909a8b00c07dc217b56673"
8 | integrity sha512-xwII0//EObnq89Ji5AKYQaRYiW/nZ3llSv29d49IuxPhKbtJoLP+9QUUZ4nVragQVtaVGeZrpB+ZtG/Pdy/POw==
9 | dependencies:
10 | regenerator-runtime "^0.13.11"
11 |
12 | "@emotion/is-prop-valid@^0.8.2":
13 | version "0.8.8"
14 | resolved "https://registry.yarnpkg.com/@emotion/is-prop-valid/-/is-prop-valid-0.8.8.tgz#db28b1c4368a259b60a97311d6a952d4fd01ac1a"
15 | integrity sha512-u5WtneEAr5IDG2Wv65yhunPSMLIpuKsbuOktRojfrEiEvRyC85LgPMZI63cr7NUqT8ZIGdSVg8ZKGxIug4lXcA==
16 | dependencies:
17 | "@emotion/memoize" "0.7.4"
18 |
19 | "@emotion/memoize@0.7.4":
20 | version "0.7.4"
21 | resolved "https://registry.yarnpkg.com/@emotion/memoize/-/memoize-0.7.4.tgz#19bf0f5af19149111c40d98bb0cf82119f5d9eeb"
22 | integrity sha512-Ja/Vfqe3HpuzRsG1oBtWTHk2PGZ7GR+2Vz5iYGelAw8dx32K0y7PjVuxK6z1nMpZOqAFsRUPCkK1YjJ56qJlgw==
23 |
24 | "@mapbox/node-pre-gyp@^1.0.10":
25 | version "1.0.10"
26 | resolved "https://registry.yarnpkg.com/@mapbox/node-pre-gyp/-/node-pre-gyp-1.0.10.tgz#8e6735ccebbb1581e5a7e652244cadc8a844d03c"
27 | integrity sha512-4ySo4CjzStuprMwk35H5pPbkymjv1SF3jGLj6rAHp/xT/RF7TL7bd9CTm1xDY49K2qF7jmR/g7k+SkLETP6opA==
28 | dependencies:
29 | detect-libc "^2.0.0"
30 | https-proxy-agent "^5.0.0"
31 | make-dir "^3.1.0"
32 | node-fetch "^2.6.7"
33 | nopt "^5.0.0"
34 | npmlog "^5.0.1"
35 | rimraf "^3.0.2"
36 | semver "^7.3.5"
37 | tar "^6.1.11"
38 |
39 | "@next/env@13.2.4":
40 | version "13.2.4"
41 | resolved "https://registry.yarnpkg.com/@next/env/-/env-13.2.4.tgz#8b763700262b2445140a44a8c8d088cef676dbae"
42 | integrity sha512-+Mq3TtpkeeKFZanPturjcXt+KHfKYnLlX6jMLyCrmpq6OOs4i1GqBOAauSkii9QeKCMTYzGppar21JU57b/GEA==
43 |
44 | "@next/swc-android-arm-eabi@13.2.4":
45 | version "13.2.4"
46 | resolved "https://registry.yarnpkg.com/@next/swc-android-arm-eabi/-/swc-android-arm-eabi-13.2.4.tgz#758d0403771e549f9cee71cbabc0cb16a6c947c0"
47 | integrity sha512-DWlalTSkLjDU11MY11jg17O1gGQzpRccM9Oes2yTqj2DpHndajrXHGxj9HGtJ+idq2k7ImUdJVWS2h2l/EDJOw==
48 |
49 | "@next/swc-android-arm64@13.2.4":
50 | version "13.2.4"
51 | resolved "https://registry.yarnpkg.com/@next/swc-android-arm64/-/swc-android-arm64-13.2.4.tgz#834d586523045110d5602e0c8aae9028835ac427"
52 | integrity sha512-sRavmUImUCf332Gy+PjIfLkMhiRX1Ez4SI+3vFDRs1N5eXp+uNzjFUK/oLMMOzk6KFSkbiK/3Wt8+dHQR/flNg==
53 |
54 | "@next/swc-darwin-arm64@13.2.4":
55 | version "13.2.4"
56 | resolved "https://registry.yarnpkg.com/@next/swc-darwin-arm64/-/swc-darwin-arm64-13.2.4.tgz#5006fca179a36ef3a24d293abadec7438dbb48c6"
57 | integrity sha512-S6vBl+OrInP47TM3LlYx65betocKUUlTZDDKzTiRDbsRESeyIkBtZ6Qi5uT2zQs4imqllJznVjFd1bXLx3Aa6A==
58 |
59 | "@next/swc-darwin-x64@13.2.4":
60 | version "13.2.4"
61 | resolved "https://registry.yarnpkg.com/@next/swc-darwin-x64/-/swc-darwin-x64-13.2.4.tgz#6549c7c04322766acc3264ccdb3e1b43fcaf7946"
62 | integrity sha512-a6LBuoYGcFOPGd4o8TPo7wmv5FnMr+Prz+vYHopEDuhDoMSHOnC+v+Ab4D7F0NMZkvQjEJQdJS3rqgFhlZmKlw==
63 |
64 | "@next/swc-freebsd-x64@13.2.4":
65 | version "13.2.4"
66 | resolved "https://registry.yarnpkg.com/@next/swc-freebsd-x64/-/swc-freebsd-x64-13.2.4.tgz#0bbe28979e3e868debc2cc06e45e186ce195b7f4"
67 | integrity sha512-kkbzKVZGPaXRBPisoAQkh3xh22r+TD+5HwoC5bOkALraJ0dsOQgSMAvzMXKsN3tMzJUPS0tjtRf1cTzrQ0I5vQ==
68 |
69 | "@next/swc-linux-arm-gnueabihf@13.2.4":
70 | version "13.2.4"
71 | resolved "https://registry.yarnpkg.com/@next/swc-linux-arm-gnueabihf/-/swc-linux-arm-gnueabihf-13.2.4.tgz#1d28d2203f5a7427d6e7119d7bcb5fc40959fb3e"
72 | integrity sha512-7qA1++UY0fjprqtjBZaOA6cas/7GekpjVsZn/0uHvquuITFCdKGFCsKNBx3S0Rpxmx6WYo0GcmhNRM9ru08BGg==
73 |
74 | "@next/swc-linux-arm64-gnu@13.2.4":
75 | version "13.2.4"
76 | resolved "https://registry.yarnpkg.com/@next/swc-linux-arm64-gnu/-/swc-linux-arm64-gnu-13.2.4.tgz#eb26448190948cdf4c44b8f34110a3ecea32f1d0"
77 | integrity sha512-xzYZdAeq883MwXgcwc72hqo/F/dwUxCukpDOkx/j1HTq/J0wJthMGjinN9wH5bPR98Mfeh1MZJ91WWPnZOedOg==
78 |
79 | "@next/swc-linux-arm64-musl@13.2.4":
80 | version "13.2.4"
81 | resolved "https://registry.yarnpkg.com/@next/swc-linux-arm64-musl/-/swc-linux-arm64-musl-13.2.4.tgz#c4227c0acd94a420bb14924820710e6284d234d3"
82 | integrity sha512-8rXr3WfmqSiYkb71qzuDP6I6R2T2tpkmf83elDN8z783N9nvTJf2E7eLx86wu2OJCi4T05nuxCsh4IOU3LQ5xw==
83 |
84 | "@next/swc-linux-x64-gnu@13.2.4":
85 | version "13.2.4"
86 | resolved "https://registry.yarnpkg.com/@next/swc-linux-x64-gnu/-/swc-linux-x64-gnu-13.2.4.tgz#6bcb540944ee9b0209b33bfc23b240c2044dfc3e"
87 | integrity sha512-Ngxh51zGSlYJ4EfpKG4LI6WfquulNdtmHg1yuOYlaAr33KyPJp4HeN/tivBnAHcZkoNy0hh/SbwDyCnz5PFJQQ==
88 |
89 | "@next/swc-linux-x64-musl@13.2.4":
90 | version "13.2.4"
91 | resolved "https://registry.yarnpkg.com/@next/swc-linux-x64-musl/-/swc-linux-x64-musl-13.2.4.tgz#ce21e43251eaf09a09df39372b2c3e38028c30ff"
92 | integrity sha512-gOvwIYoSxd+j14LOcvJr+ekd9fwYT1RyMAHOp7znA10+l40wkFiMONPLWiZuHxfRk+Dy7YdNdDh3ImumvL6VwA==
93 |
94 | "@next/swc-win32-arm64-msvc@13.2.4":
95 | version "13.2.4"
96 | resolved "https://registry.yarnpkg.com/@next/swc-win32-arm64-msvc/-/swc-win32-arm64-msvc-13.2.4.tgz#68220063d8e5e082f5465498675640dedb670ff1"
97 | integrity sha512-q3NJzcfClgBm4HvdcnoEncmztxrA5GXqKeiZ/hADvC56pwNALt3ngDC6t6qr1YW9V/EPDxCYeaX4zYxHciW4Dw==
98 |
99 | "@next/swc-win32-ia32-msvc@13.2.4":
100 | version "13.2.4"
101 | resolved "https://registry.yarnpkg.com/@next/swc-win32-ia32-msvc/-/swc-win32-ia32-msvc-13.2.4.tgz#7c120ab54a081be9566df310bed834f168252990"
102 | integrity sha512-/eZ5ncmHUYtD2fc6EUmAIZlAJnVT2YmxDsKs1Ourx0ttTtvtma/WKlMV5NoUsyOez0f9ExLyOpeCoz5aj+MPXw==
103 |
104 | "@next/swc-win32-x64-msvc@13.2.4":
105 | version "13.2.4"
106 | resolved "https://registry.yarnpkg.com/@next/swc-win32-x64-msvc/-/swc-win32-x64-msvc-13.2.4.tgz#5abda92fe12b9829bf7951c4a221282c56041144"
107 | integrity sha512-0MffFmyv7tBLlji01qc0IaPP/LVExzvj7/R5x1Jph1bTAIj4Vu81yFQWHHQAP6r4ff9Ukj1mBK6MDNVXm7Tcvw==
108 |
109 | "@nodelib/fs.scandir@2.1.5":
110 | version "2.1.5"
111 | resolved "https://registry.yarnpkg.com/@nodelib/fs.scandir/-/fs.scandir-2.1.5.tgz#7619c2eb21b25483f6d167548b4cfd5a7488c3d5"
112 | integrity sha512-vq24Bq3ym5HEQm2NKCr3yXDwjc7vTsEThRDnkp2DK9p1uqLR+DHurm/NOTo0KG7HYHU7eppKZj3MyqYuMBf62g==
113 | dependencies:
114 | "@nodelib/fs.stat" "2.0.5"
115 | run-parallel "^1.1.9"
116 |
117 | "@nodelib/fs.stat@2.0.5", "@nodelib/fs.stat@^2.0.2":
118 | version "2.0.5"
119 | resolved "https://registry.yarnpkg.com/@nodelib/fs.stat/-/fs.stat-2.0.5.tgz#5bd262af94e9d25bd1e71b05deed44876a222e8b"
120 | integrity sha512-RkhPPp2zrqDAQA/2jNhnztcPAlv64XdhIp7a7454A5ovI7Bukxgt7MX7udwAu3zg1DcpPU0rz3VV1SeaqvY4+A==
121 |
122 | "@nodelib/fs.walk@^1.2.3":
123 | version "1.2.8"
124 | resolved "https://registry.yarnpkg.com/@nodelib/fs.walk/-/fs.walk-1.2.8.tgz#e95737e8bb6746ddedf69c556953494f196fe69a"
125 | integrity sha512-oGB+UxlgWcgQkgwo8GcEGwemoTFt3FIO9ababBmaGwXIoBKZ+GTy0pP185beGg7Llih/NSHSV2XAs1lnznocSg==
126 | dependencies:
127 | "@nodelib/fs.scandir" "2.1.5"
128 | fastq "^1.6.0"
129 |
130 | "@react-aria/ssr@^3.4.1":
131 | version "3.5.0"
132 | resolved "https://registry.yarnpkg.com/@react-aria/ssr/-/ssr-3.5.0.tgz#40c1270a75868185f72a88cafe37bd1392f690cb"
133 | integrity sha512-h0MJdSWOd1qObLnJ8mprU31wI8tmKFJMuwT22MpWq6psisOOZaga6Ml4u6Ee6M6duWWISjXvqO4Sb/J0PBA+nQ==
134 | dependencies:
135 | "@swc/helpers" "^0.4.14"
136 |
137 | "@react-aria/utils@3.14.2":
138 | version "3.14.2"
139 | resolved "https://registry.yarnpkg.com/@react-aria/utils/-/utils-3.14.2.tgz#3a8d0d14abab4bb1095e101ee44dc5e3e43e6217"
140 | integrity sha512-3nr5gsAf/J/W+6Tu4NF3Q7m+1mXjfpXESh7TPa6UR6v3tVDTsJVMrITg2BkHN1jM8xELcl2ZxyUffOWqOXzWuA==
141 | dependencies:
142 | "@react-aria/ssr" "^3.4.1"
143 | "@react-stately/utils" "^3.5.2"
144 | "@react-types/shared" "^3.16.0"
145 | "@swc/helpers" "^0.4.14"
146 | clsx "^1.1.1"
147 |
148 | "@react-stately/utils@^3.5.2":
149 | version "3.6.0"
150 | resolved "https://registry.yarnpkg.com/@react-stately/utils/-/utils-3.6.0.tgz#f273e7fcb348254347d2e88c8f0c45571060c207"
151 | integrity sha512-rptF7iUWDrquaYvBAS4QQhOBQyLBncDeHF03WnHXAxnuPJXNcr9cXJtjJPGCs036ZB8Q2hc9BGG5wNyMkF5v+Q==
152 | dependencies:
153 | "@swc/helpers" "^0.4.14"
154 |
155 | "@react-types/shared@^3.16.0":
156 | version "3.17.0"
157 | resolved "https://registry.yarnpkg.com/@react-types/shared/-/shared-3.17.0.tgz#b7c5e318664aadb315d305a27dd2a209d1837d95"
158 | integrity sha512-1SNZ/RhVrrQ1e6yE0bPV7d5Sfp+Uv0dfUEhwF9MAu2v5msu7AMewnsiojKNA0QA6Ing1gpDLjHCxtayQfuxqcg==
159 |
160 | "@reduxjs/toolkit@^1.9.3":
161 | version "1.9.3"
162 | resolved "https://registry.yarnpkg.com/@reduxjs/toolkit/-/toolkit-1.9.3.tgz#27e1a33072b5a312e4f7fa19247fec160bbb2df9"
163 | integrity sha512-GU2TNBQVofL09VGmuSioNPQIu6Ml0YLf4EJhgj0AvBadRlCGzUWet8372LjvO4fqKZF2vH1xU0htAa7BrK9pZg==
164 | dependencies:
165 | immer "^9.0.16"
166 | redux "^4.2.0"
167 | redux-thunk "^2.4.2"
168 | reselect "^4.1.7"
169 |
170 | "@swc/helpers@0.4.14", "@swc/helpers@^0.4.14":
171 | version "0.4.14"
172 | resolved "https://registry.yarnpkg.com/@swc/helpers/-/helpers-0.4.14.tgz#1352ac6d95e3617ccb7c1498ff019654f1e12a74"
173 | integrity sha512-4C7nX/dvpzB7za4Ql9K81xK3HPxCpHMgwTZVyf+9JQ6VUbn9jjZVN7/Nkdz/Ugzs2CSjqnL/UPXroiVBVHUWUw==
174 | dependencies:
175 | tslib "^2.4.0"
176 |
177 | "@types/hoist-non-react-statics@^3.3.1":
178 | version "3.3.1"
179 | resolved "https://registry.yarnpkg.com/@types/hoist-non-react-statics/-/hoist-non-react-statics-3.3.1.tgz#1124aafe5118cb591977aeb1ceaaed1070eb039f"
180 | integrity sha512-iMIqiko6ooLrTh1joXodJK5X9xeEALT1kM5G3ZLhD3hszxBdIEd5C75U834D9mLcINgD4OyZf5uQXjkuYydWvA==
181 | dependencies:
182 | "@types/react" "*"
183 | hoist-non-react-statics "^3.3.0"
184 |
185 | "@types/node@*":
186 | version "18.15.3"
187 | resolved "https://registry.yarnpkg.com/@types/node/-/node-18.15.3.tgz#f0b991c32cfc6a4e7f3399d6cb4b8cf9a0315014"
188 | integrity sha512-p6ua9zBxz5otCmbpb5D3U4B5Nanw6Pk3PPyX05xnxbB/fRv71N7CPmORg7uAD5P70T0xmx1pzAx/FUfa5X+3cw==
189 |
190 | "@types/prop-types@*":
191 | version "15.7.5"
192 | resolved "https://registry.yarnpkg.com/@types/prop-types/-/prop-types-15.7.5.tgz#5f19d2b85a98e9558036f6a3cacc8819420f05cf"
193 | integrity sha512-JCB8C6SnDoQf0cNycqd/35A7MjcnK+ZTqE7judS6o7utxUCg6imJg3QK2qzHKszlTjcj2cn+NwMB2i96ubpj7w==
194 |
195 | "@types/react@*":
196 | version "18.0.28"
197 | resolved "https://registry.yarnpkg.com/@types/react/-/react-18.0.28.tgz#accaeb8b86f4908057ad629a26635fe641480065"
198 | integrity sha512-RD0ivG1kEztNBdoAK7lekI9M+azSnitIn85h4iOiaLjaTrMjzslhaqCGaI4IyCJ1RljWiLCEu4jyrLLgqxBTew==
199 | dependencies:
200 | "@types/prop-types" "*"
201 | "@types/scheduler" "*"
202 | csstype "^3.0.2"
203 |
204 | "@types/scheduler@*":
205 | version "0.16.2"
206 | resolved "https://registry.yarnpkg.com/@types/scheduler/-/scheduler-0.16.2.tgz#1a62f89525723dde24ba1b01b092bf5df8ad4d39"
207 | integrity sha512-hppQEBDmlwhFAXKJX2KnWLYu5yMfi91yazPb2l+lbJiwW+wdo1gNeRA+3RgNSO39WYX2euey41KEwnqesU2Jew==
208 |
209 | "@types/use-sync-external-store@^0.0.3":
210 | version "0.0.3"
211 | resolved "https://registry.yarnpkg.com/@types/use-sync-external-store/-/use-sync-external-store-0.0.3.tgz#b6725d5f4af24ace33b36fafd295136e75509f43"
212 | integrity sha512-EwmlvuaxPNej9+T4v5AuBPJa2x2UOJVdjCtDHgcDqitUeOtjnJKJ+apYjVcAoBEMjKW1VVFGZLUb5+qqa09XFA==
213 |
214 | "@types/webidl-conversions@*":
215 | version "7.0.0"
216 | resolved "https://registry.yarnpkg.com/@types/webidl-conversions/-/webidl-conversions-7.0.0.tgz#2b8e60e33906459219aa587e9d1a612ae994cfe7"
217 | integrity sha512-xTE1E+YF4aWPJJeUzaZI5DRntlkY3+BCVJi0axFptnjGmAoWxkyREIh/XMrfxVLejwQxMCfDXdICo0VLxThrog==
218 |
219 | "@types/whatwg-url@^8.2.1":
220 | version "8.2.2"
221 | resolved "https://registry.yarnpkg.com/@types/whatwg-url/-/whatwg-url-8.2.2.tgz#749d5b3873e845897ada99be4448041d4cc39e63"
222 | integrity sha512-FtQu10RWgn3D9U4aazdwIE2yzphmTJREDqNdODHrbrZmmMqI0vMheC/6NE/J1Yveaj8H+ela+YwWTjq5PGmuhA==
223 | dependencies:
224 | "@types/node" "*"
225 | "@types/webidl-conversions" "*"
226 |
227 | abbrev@1:
228 | version "1.1.1"
229 | resolved "https://registry.yarnpkg.com/abbrev/-/abbrev-1.1.1.tgz#f8f2c887ad10bf67f634f005b6987fed3179aac8"
230 | integrity sha512-nne9/IiQ/hzIhY6pdDnbBtz7DjPTKrY00P/zvPSm5pOFkl6xuGrGnXn/VtTNNfNtAfZ9/1RtehkszU9qcTii0Q==
231 |
232 | acorn-node@^1.8.2:
233 | version "1.8.2"
234 | resolved "https://registry.yarnpkg.com/acorn-node/-/acorn-node-1.8.2.tgz#114c95d64539e53dede23de8b9d96df7c7ae2af8"
235 | integrity sha512-8mt+fslDufLYntIoPAaIMUe/lrbrehIiwmR3t2k9LljIzoigEPF27eLk2hy8zSGzmR/ogr7zbRKINMo1u0yh5A==
236 | dependencies:
237 | acorn "^7.0.0"
238 | acorn-walk "^7.0.0"
239 | xtend "^4.0.2"
240 |
241 | acorn-walk@^7.0.0:
242 | version "7.2.0"
243 | resolved "https://registry.yarnpkg.com/acorn-walk/-/acorn-walk-7.2.0.tgz#0de889a601203909b0fbe07b8938dc21d2e967bc"
244 | integrity sha512-OPdCF6GsMIP+Az+aWfAAOEt2/+iVDKE7oy6lJ098aoe59oAmK76qV6Gw60SbZ8jHuG2wH058GF4pLFbYamYrVA==
245 |
246 | acorn@^7.0.0:
247 | version "7.4.1"
248 | resolved "https://registry.yarnpkg.com/acorn/-/acorn-7.4.1.tgz#feaed255973d2e77555b83dbc08851a6c63520fa"
249 | integrity sha512-nQyp0o1/mNdbTO1PO6kHkwSrmgZ0MT/jCCpNiwbUjGoRN4dlBhqJtoQuCnEOKzgTVwg0ZWiCoQy6SxMebQVh8A==
250 |
251 | agent-base@6:
252 | version "6.0.2"
253 | resolved "https://registry.yarnpkg.com/agent-base/-/agent-base-6.0.2.tgz#49fff58577cfee3f37176feab4c22e00f86d7f77"
254 | integrity sha512-RZNwNclF7+MS/8bDg70amg32dyeZGZxiDuQmZxKLAlQjr3jGyLx+4Kkk58UO7D2QdgFIQCovuSuZESne6RG6XQ==
255 | dependencies:
256 | debug "4"
257 |
258 | ansi-regex@^5.0.1:
259 | version "5.0.1"
260 | resolved "https://registry.yarnpkg.com/ansi-regex/-/ansi-regex-5.0.1.tgz#082cb2c89c9fe8659a311a53bd6a4dc5301db304"
261 | integrity sha512-quJQXlTSUGL2LH9SUXo8VwsY4soanhgo6LNSm84E1LBcE8s3O0wpdiRzyR9z/ZZJMlMWv37qOOb9pdJlMUEKFQ==
262 |
263 | anymatch@~3.1.2:
264 | version "3.1.3"
265 | resolved "https://registry.yarnpkg.com/anymatch/-/anymatch-3.1.3.tgz#790c58b19ba1720a84205b57c618d5ad8524973e"
266 | integrity sha512-KMReFUr0B4t+D+OBkjR3KYqvocp2XaSzO55UcB6mgQMd3KbcE+mWTyvVV7D/zsdEbNnV6acZUutkiHQXvTr1Rw==
267 | dependencies:
268 | normalize-path "^3.0.0"
269 | picomatch "^2.0.4"
270 |
271 | "aproba@^1.0.3 || ^2.0.0":
272 | version "2.0.0"
273 | resolved "https://registry.yarnpkg.com/aproba/-/aproba-2.0.0.tgz#52520b8ae5b569215b354efc0caa3fe1e45a8adc"
274 | integrity sha512-lYe4Gx7QT+MKGbDsA+Z+he/Wtef0BiwDOlK/XkBrdfsh9J/jPPXbX0tE9x9cl27Tmu5gg3QUbUrQYa/y+KOHPQ==
275 |
276 | are-we-there-yet@^2.0.0:
277 | version "2.0.0"
278 | resolved "https://registry.yarnpkg.com/are-we-there-yet/-/are-we-there-yet-2.0.0.tgz#372e0e7bd279d8e94c653aaa1f67200884bf3e1c"
279 | integrity sha512-Ci/qENmwHnsYo9xKIcUJN5LeDKdJ6R1Z1j9V/J5wyq8nh/mYPEpIKJbBZXtZjG04HiK7zV/p6Vs9952MrMeUIw==
280 | dependencies:
281 | delegates "^1.0.0"
282 | readable-stream "^3.6.0"
283 |
284 | arg@^5.0.2:
285 | version "5.0.2"
286 | resolved "https://registry.yarnpkg.com/arg/-/arg-5.0.2.tgz#c81433cc427c92c4dcf4865142dbca6f15acd59c"
287 | integrity sha512-PYjyFOLKQ9y57JvQ6QLo8dAgNqswh8M1RMJYdQduT6xbWSgK36P/Z/v+p888pM69jMMfS8Xd8F6I1kQ/I9HUGg==
288 |
289 | asynckit@^0.4.0:
290 | version "0.4.0"
291 | resolved "https://registry.yarnpkg.com/asynckit/-/asynckit-0.4.0.tgz#c79ed97f7f34cb8f2ba1bc9790bcc366474b4b79"
292 | integrity sha512-Oei9OH4tRh0YqU3GxhX79dM/mwVgvbZJaSNaRk+bshkj0S5cfHcgYakreBjrHwatXKbz+IoIdYLxrKim2MjW0Q==
293 |
294 | autoprefixer@^10.4.14:
295 | version "10.4.14"
296 | resolved "https://registry.yarnpkg.com/autoprefixer/-/autoprefixer-10.4.14.tgz#e28d49902f8e759dd25b153264e862df2705f79d"
297 | integrity sha512-FQzyfOsTlwVzjHxKEqRIAdJx9niO6VCBCoEwax/VLSoQF29ggECcPuBqUMZ+u8jCZOPSy8b8/8KnuFbp0SaFZQ==
298 | dependencies:
299 | browserslist "^4.21.5"
300 | caniuse-lite "^1.0.30001464"
301 | fraction.js "^4.2.0"
302 | normalize-range "^0.1.2"
303 | picocolors "^1.0.0"
304 | postcss-value-parser "^4.2.0"
305 |
306 | axios@^1.3.4:
307 | version "1.3.4"
308 | resolved "https://registry.yarnpkg.com/axios/-/axios-1.3.4.tgz#f5760cefd9cfb51fd2481acf88c05f67c4523024"
309 | integrity sha512-toYm+Bsyl6VC5wSkfkbbNB6ROv7KY93PEBBL6xyDczaIHasAiv4wPqQ/c4RjoQzipxRD2W5g21cOqQulZ7rHwQ==
310 | dependencies:
311 | follow-redirects "^1.15.0"
312 | form-data "^4.0.0"
313 | proxy-from-env "^1.1.0"
314 |
315 | balanced-match@^1.0.0:
316 | version "1.0.2"
317 | resolved "https://registry.yarnpkg.com/balanced-match/-/balanced-match-1.0.2.tgz#e83e3a7e3f300b34cb9d87f615fa0cbf357690ee"
318 | integrity sha512-3oSeUO0TMV67hN1AmbXsK4yaqU7tjiHlbxRDZOpH0KW9+CeX4bRAaX0Anxt0tx2MrpRpWwQaPwIlISEJhYU5Pw==
319 |
320 | bcrypt@^5.1.0:
321 | version "5.1.0"
322 | resolved "https://registry.yarnpkg.com/bcrypt/-/bcrypt-5.1.0.tgz#bbb27665dbc400480a524d8991ac7434e8529e17"
323 | integrity sha512-RHBS7HI5N5tEnGTmtR/pppX0mmDSBpQ4aCBsj7CEQfYXDcO74A8sIBYcJMuCsis2E81zDxeENYhv66oZwLiA+Q==
324 | dependencies:
325 | "@mapbox/node-pre-gyp" "^1.0.10"
326 | node-addon-api "^5.0.0"
327 |
328 | binary-extensions@^2.0.0:
329 | version "2.2.0"
330 | resolved "https://registry.yarnpkg.com/binary-extensions/-/binary-extensions-2.2.0.tgz#75f502eeaf9ffde42fc98829645be4ea76bd9e2d"
331 | integrity sha512-jDctJ/IVQbZoJykoeHbhXpOlNBqGNcwXJKJog42E5HDPUwQTSdjCHdihjj0DlnheQ7blbT6dHOafNAiS8ooQKA==
332 |
333 | brace-expansion@^1.1.7:
334 | version "1.1.11"
335 | resolved "https://registry.yarnpkg.com/brace-expansion/-/brace-expansion-1.1.11.tgz#3c7fcbf529d87226f3d2f52b966ff5271eb441dd"
336 | integrity sha512-iCuPHDFgrHX7H2vEI/5xpz07zSHB00TpugqhmYtVmMO6518mCuRMoOYFldEBl0g187ufozdaHgWKcYFb61qGiA==
337 | dependencies:
338 | balanced-match "^1.0.0"
339 | concat-map "0.0.1"
340 |
341 | braces@^3.0.2, braces@~3.0.2:
342 | version "3.0.2"
343 | resolved "https://registry.yarnpkg.com/braces/-/braces-3.0.2.tgz#3454e1a462ee8d599e236df336cd9ea4f8afe107"
344 | integrity sha512-b8um+L1RzM3WDSzvhm6gIz1yfTbBt6YTlcEKAvsmqCZZFw46z626lVj9j1yEPW33H5H+lBQpZMP1k8l+78Ha0A==
345 | dependencies:
346 | fill-range "^7.0.1"
347 |
348 | browserslist@^4.21.5:
349 | version "4.21.5"
350 | resolved "https://registry.yarnpkg.com/browserslist/-/browserslist-4.21.5.tgz#75c5dae60063ee641f977e00edd3cfb2fb7af6a7"
351 | integrity sha512-tUkiguQGW7S3IhB7N+c2MV/HZPSCPAAiYBZXLsBhFB/PCy6ZKKsZrmBayHV9fdGV/ARIfJ14NkxKzRDjvp7L6w==
352 | dependencies:
353 | caniuse-lite "^1.0.30001449"
354 | electron-to-chromium "^1.4.284"
355 | node-releases "^2.0.8"
356 | update-browserslist-db "^1.0.10"
357 |
358 | bson@^5.0.1:
359 | version "5.0.1"
360 | resolved "https://registry.yarnpkg.com/bson/-/bson-5.0.1.tgz#4cd3eeeabf6652ef0d6ab600f9a18212d39baac3"
361 | integrity sha512-y09gBGusgHtinMon/GVbv1J6FrXhnr/+6hqLlSmEFzkz6PodqF6TxjyvfvY3AfO+oG1mgUtbC86xSbOlwvM62Q==
362 |
363 | camelcase-css@^2.0.1:
364 | version "2.0.1"
365 | resolved "https://registry.yarnpkg.com/camelcase-css/-/camelcase-css-2.0.1.tgz#ee978f6947914cc30c6b44741b6ed1df7f043fd5"
366 | integrity sha512-QOSvevhslijgYwRx6Rv7zKdMF8lbRmx+uQGx2+vDc+KI/eBnsy9kit5aj23AgGu3pa4t9AgwbnXWqS+iOY+2aA==
367 |
368 | caniuse-lite@^1.0.30001406:
369 | version "1.0.30001466"
370 | resolved "https://registry.yarnpkg.com/caniuse-lite/-/caniuse-lite-1.0.30001466.tgz#c1e6197c540392e09709ecaa9e3e403428c53375"
371 | integrity sha512-ewtFBSfWjEmxUgNBSZItFSmVtvk9zkwkl1OfRZlKA8slltRN+/C/tuGVrF9styXkN36Yu3+SeJ1qkXxDEyNZ5w==
372 |
373 | caniuse-lite@^1.0.30001449, caniuse-lite@^1.0.30001464:
374 | version "1.0.30001467"
375 | resolved "https://registry.yarnpkg.com/caniuse-lite/-/caniuse-lite-1.0.30001467.tgz#1afc9c16ed61f50dd87139da87ca43a3e0051c77"
376 | integrity sha512-cEdN/5e+RPikvl9AHm4uuLXxeCNq8rFsQ+lPHTfe/OtypP3WwnVVbjn+6uBV7PaFL6xUFzTh+sSCOz1rKhcO+Q==
377 |
378 | chokidar@^3.5.3:
379 | version "3.5.3"
380 | resolved "https://registry.yarnpkg.com/chokidar/-/chokidar-3.5.3.tgz#1cf37c8707b932bd1af1ae22c0432e2acd1903bd"
381 | integrity sha512-Dr3sfKRP6oTcjf2JmUmFJfeVMvXBdegxB0iVQ5eb2V10uFJUCAS8OByZdVAyVb8xXNz3GjjTgj9kLWsZTqE6kw==
382 | dependencies:
383 | anymatch "~3.1.2"
384 | braces "~3.0.2"
385 | glob-parent "~5.1.2"
386 | is-binary-path "~2.1.0"
387 | is-glob "~4.0.1"
388 | normalize-path "~3.0.0"
389 | readdirp "~3.6.0"
390 | optionalDependencies:
391 | fsevents "~2.3.2"
392 |
393 | chownr@^2.0.0:
394 | version "2.0.0"
395 | resolved "https://registry.yarnpkg.com/chownr/-/chownr-2.0.0.tgz#15bfbe53d2eab4cf70f18a8cd68ebe5b3cb1dece"
396 | integrity sha512-bIomtDF5KGpdogkLd9VspvFzk9KfpyyGlS8YFVZl7TGPBHL5snIOnxeshwVgPteQ9b4Eydl+pVbIyE1DcvCWgQ==
397 |
398 | client-only@0.0.1:
399 | version "0.0.1"
400 | resolved "https://registry.yarnpkg.com/client-only/-/client-only-0.0.1.tgz#38bba5d403c41ab150bff64a95c85013cf73bca1"
401 | integrity sha512-IV3Ou0jSMzZrd3pZ48nLkT9DA7Ag1pnPzaiQhpW7c3RbcqqzvzzVu+L8gfqMp/8IM2MQtSiqaCxrrcfu8I8rMA==
402 |
403 | clsx@^1.1.1:
404 | version "1.2.1"
405 | resolved "https://registry.yarnpkg.com/clsx/-/clsx-1.2.1.tgz#0ddc4a20a549b59c93a4116bb26f5294ca17dc12"
406 | integrity sha512-EcR6r5a8bj6pu3ycsa/E/cKVGuTgZJZdsyUYHOksG/UHIiKfjxzRxYJpyVBwYaQeOvghal9fcc4PidlgzugAQg==
407 |
408 | color-name@^1.1.4:
409 | version "1.1.4"
410 | resolved "https://registry.yarnpkg.com/color-name/-/color-name-1.1.4.tgz#c2a09a87acbde69543de6f63fa3995c826c536a2"
411 | integrity sha512-dOy+3AuW3a2wNbZHIuMZpTcgjGuLU/uBL/ubcZF9OXbDo8ff4O8yVp5Bf0efS8uEoYo5q4Fx7dY9OgQGXgAsQA==
412 |
413 | color-support@^1.1.2:
414 | version "1.1.3"
415 | resolved "https://registry.yarnpkg.com/color-support/-/color-support-1.1.3.tgz#93834379a1cc9a0c61f82f52f0d04322251bd5a2"
416 | integrity sha512-qiBjkpbMLO/HL68y+lh4q0/O1MZFj2RX6X/KmMa3+gJD3z+WwI1ZzDHysvqHGS3mP6mznPckpXmw1nI9cJjyRg==
417 |
418 | combined-stream@^1.0.8:
419 | version "1.0.8"
420 | resolved "https://registry.yarnpkg.com/combined-stream/-/combined-stream-1.0.8.tgz#c3d45a8b34fd730631a110a8a2520682b31d5a7f"
421 | integrity sha512-FQN4MRfuJeHf7cBbBMJFXhKSDq+2kAArBlmRBvcvFE5BB1HZKXtSFASDhdlz9zOYwxh8lDdnvmMOe/+5cdoEdg==
422 | dependencies:
423 | delayed-stream "~1.0.0"
424 |
425 | concat-map@0.0.1:
426 | version "0.0.1"
427 | resolved "https://registry.yarnpkg.com/concat-map/-/concat-map-0.0.1.tgz#d8a96bd77fd68df7793a73036a3ba0d5405d477b"
428 | integrity sha512-/Srv4dswyQNBfohGpz9o6Yb3Gz3SrUDqBH5rTuhGR7ahtlbYKnVxw2bCFMRljaA7EXHaXZ8wsHdodFvbkhKmqg==
429 |
430 | console-control-strings@^1.0.0, console-control-strings@^1.1.0:
431 | version "1.1.0"
432 | resolved "https://registry.yarnpkg.com/console-control-strings/-/console-control-strings-1.1.0.tgz#3d7cf4464db6446ea644bf4b39507f9851008e8e"
433 | integrity sha512-ty/fTekppD2fIwRvnZAVdeOiGd1c7YXEixbgJTNzqcxJWKQnjJ/V1bNEEE6hygpM3WjwHFUVK6HTjWSzV4a8sQ==
434 |
435 | crypto-js@^4.1.1:
436 | version "4.1.1"
437 | resolved "https://registry.yarnpkg.com/crypto-js/-/crypto-js-4.1.1.tgz#9e485bcf03521041bd85844786b83fb7619736cf"
438 | integrity sha512-o2JlM7ydqd3Qk9CA0L4NL6mTzU2sdx96a+oOfPu8Mkl/PK51vSyoi8/rQ8NknZtk44vq15lmhAj9CIAGwgeWKw==
439 |
440 | cssesc@^3.0.0:
441 | version "3.0.0"
442 | resolved "https://registry.yarnpkg.com/cssesc/-/cssesc-3.0.0.tgz#37741919903b868565e1c09ea747445cd18983ee"
443 | integrity sha512-/Tb/JcjK111nNScGob5MNtsntNM1aCNUDipB/TkwZFhyDrrE47SOx/18wF2bbjgc3ZzCSKW1T5nt5EbFoAz/Vg==
444 |
445 | csstype@^3.0.2:
446 | version "3.1.1"
447 | resolved "https://registry.yarnpkg.com/csstype/-/csstype-3.1.1.tgz#841b532c45c758ee546a11d5bd7b7b473c8c30b9"
448 | integrity sha512-DJR/VvkAvSZW9bTouZue2sSxDwdTN92uHjqeKVm+0dAqdfNykRzQ95tay8aXMBAAPpUiq4Qcug2L7neoRh2Egw==
449 |
450 | debug@4, debug@4.x:
451 | version "4.3.4"
452 | resolved "https://registry.yarnpkg.com/debug/-/debug-4.3.4.tgz#1319f6579357f2338d3337d2cdd4914bb5dcc865"
453 | integrity sha512-PRWFHuSU3eDtQJPvnNY7Jcket1j0t5OuOsFzPPzsekD52Zl8qUfFIPEiswXqIvHWGVHOgX+7G/vCNNhehwxfkQ==
454 | dependencies:
455 | ms "2.1.2"
456 |
457 | defined@^1.0.0:
458 | version "1.0.1"
459 | resolved "https://registry.yarnpkg.com/defined/-/defined-1.0.1.tgz#c0b9db27bfaffd95d6f61399419b893df0f91ebf"
460 | integrity sha512-hsBd2qSVCRE+5PmNdHt1uzyrFu5d3RwmFDKzyNZMFq/EwDNJF7Ee5+D5oEKF0hU6LhtoUF1macFvOe4AskQC1Q==
461 |
462 | delayed-stream@~1.0.0:
463 | version "1.0.0"
464 | resolved "https://registry.yarnpkg.com/delayed-stream/-/delayed-stream-1.0.0.tgz#df3ae199acadfb7d440aaae0b29e2272b24ec619"
465 | integrity sha512-ZySD7Nf91aLB0RxL4KGrKHBXl7Eds1DAmEdcoVawXnLD7SDhpNgtuII2aAkg7a7QS41jxPSZ17p4VdGnMHk3MQ==
466 |
467 | delegates@^1.0.0:
468 | version "1.0.0"
469 | resolved "https://registry.yarnpkg.com/delegates/-/delegates-1.0.0.tgz#84c6e159b81904fdca59a0ef44cd870d31250f9a"
470 | integrity sha512-bd2L678uiWATM6m5Z1VzNCErI3jiGzt6HGY8OVICs40JQq/HALfbyNJmp0UDakEY4pMMaN0Ly5om/B1VI/+xfQ==
471 |
472 | detect-libc@^2.0.0:
473 | version "2.0.1"
474 | resolved "https://registry.yarnpkg.com/detect-libc/-/detect-libc-2.0.1.tgz#e1897aa88fa6ad197862937fbc0441ef352ee0cd"
475 | integrity sha512-463v3ZeIrcWtdgIg6vI6XUncguvr2TnGl4SzDXinkt9mSLpBJKXT3mW6xT3VQdDN11+WVs29pgvivTc4Lp8v+w==
476 |
477 | detective@^5.2.1:
478 | version "5.2.1"
479 | resolved "https://registry.yarnpkg.com/detective/-/detective-5.2.1.tgz#6af01eeda11015acb0e73f933242b70f24f91034"
480 | integrity sha512-v9XE1zRnz1wRtgurGu0Bs8uHKFSTdteYZNbIPFVhUZ39L/S79ppMpdmVOZAnoz1jfEFodc48n6MX483Xo3t1yw==
481 | dependencies:
482 | acorn-node "^1.8.2"
483 | defined "^1.0.0"
484 | minimist "^1.2.6"
485 |
486 | didyoumean@^1.2.2:
487 | version "1.2.2"
488 | resolved "https://registry.yarnpkg.com/didyoumean/-/didyoumean-1.2.2.tgz#989346ffe9e839b4555ecf5666edea0d3e8ad037"
489 | integrity sha512-gxtyfqMg7GKyhQmb056K7M3xszy/myH8w+B4RT+QXBQsvAOdc3XymqDDPHx1BgPgsdAA5SIifona89YtRATDzw==
490 |
491 | dlv@^1.1.3:
492 | version "1.1.3"
493 | resolved "https://registry.yarnpkg.com/dlv/-/dlv-1.1.3.tgz#5c198a8a11453596e751494d49874bc7732f2e79"
494 | integrity sha512-+HlytyjlPKnIG8XuRG8WvmBP8xs8P71y+SKKS6ZXWoEgLuePxtDoUEiH7WkdePWrQ5JBpE6aoVqfZfJUQkjXwA==
495 |
496 | electron-to-chromium@^1.4.284:
497 | version "1.4.332"
498 | resolved "https://registry.yarnpkg.com/electron-to-chromium/-/electron-to-chromium-1.4.332.tgz#b981fcf61587abe03c24b301b2cfbdcc2b70e8a5"
499 | integrity sha512-c1Vbv5tuUlBFp0mb3mCIjw+REEsgthRgNE8BlbEDKmvzb8rxjcVki6OkQP83vLN34s0XCxpSkq7AZNep1a6xhw==
500 |
501 | emoji-regex@^8.0.0:
502 | version "8.0.0"
503 | resolved "https://registry.yarnpkg.com/emoji-regex/-/emoji-regex-8.0.0.tgz#e818fd69ce5ccfcb404594f842963bf53164cc37"
504 | integrity sha512-MSjYzcWNOA0ewAHpz0MxpYFvwg6yjy1NG3xteoqz644VCo/RPgnr1/GGt+ic3iJTzQ8Eu3TdM14SawnVUmGE6A==
505 |
506 | escalade@^3.1.1:
507 | version "3.1.1"
508 | resolved "https://registry.yarnpkg.com/escalade/-/escalade-3.1.1.tgz#d8cfdc7000965c5a0174b4a82eaa5c0552742e40"
509 | integrity sha512-k0er2gUkLf8O0zKJiAhmkTnJlTvINGv7ygDNPbeIsX/TJjGJZHuh9B2UxbsaEkmlEo9MfhrSzmhIlhRlI2GXnw==
510 |
511 | express-validator@^6.15.0:
512 | version "6.15.0"
513 | resolved "https://registry.yarnpkg.com/express-validator/-/express-validator-6.15.0.tgz#5e4601428960b0d66f5f4ae09cb32ed2077374a4"
514 | integrity sha512-r05VYoBL3i2pswuehoFSy+uM8NBuVaY7avp5qrYjQBDzagx2Z5A77FZqPT8/gNLF3HopWkIzaTFaC4JysWXLqg==
515 | dependencies:
516 | lodash "^4.17.21"
517 | validator "^13.9.0"
518 |
519 | fast-glob@^3.2.12:
520 | version "3.2.12"
521 | resolved "https://registry.yarnpkg.com/fast-glob/-/fast-glob-3.2.12.tgz#7f39ec99c2e6ab030337142da9e0c18f37afae80"
522 | integrity sha512-DVj4CQIYYow0BlaelwK1pHl5n5cRSJfM60UA0zK891sVInoPri2Ekj7+e1CT3/3qxXenpI+nBBmQAcJPJgaj4w==
523 | dependencies:
524 | "@nodelib/fs.stat" "^2.0.2"
525 | "@nodelib/fs.walk" "^1.2.3"
526 | glob-parent "^5.1.2"
527 | merge2 "^1.3.0"
528 | micromatch "^4.0.4"
529 |
530 | fastq@^1.6.0:
531 | version "1.15.0"
532 | resolved "https://registry.yarnpkg.com/fastq/-/fastq-1.15.0.tgz#d04d07c6a2a68fe4599fea8d2e103a937fae6b3a"
533 | integrity sha512-wBrocU2LCXXa+lWBt8RoIRD89Fi8OdABODa/kEnyeyjS5aZO5/GNvI5sEINADqP/h8M29UHTHUb53sUu5Ihqdw==
534 | dependencies:
535 | reusify "^1.0.4"
536 |
537 | fill-range@^7.0.1:
538 | version "7.0.1"
539 | resolved "https://registry.yarnpkg.com/fill-range/-/fill-range-7.0.1.tgz#1919a6a7c75fe38b2c7c77e5198535da9acdda40"
540 | integrity sha512-qOo9F+dMUmC2Lcb4BbVvnKJxTPjCm+RRpe4gDuGrzkL7mEVl/djYSu2OdQ2Pa302N4oqkSg9ir6jaLWJ2USVpQ==
541 | dependencies:
542 | to-regex-range "^5.0.1"
543 |
544 | focus-trap-react@^10.1.1:
545 | version "10.1.1"
546 | resolved "https://registry.yarnpkg.com/focus-trap-react/-/focus-trap-react-10.1.1.tgz#c14e150076827905b7b32b9d02d6d97534dfaa99"
547 | integrity sha512-OtLeSIQPKFzMzbLHkGtfZYwGLMhTRHd3CDhfyd0DDx8tvXzlgpseClDiuiKoiIHZtdjsbXTfTmUuuLKaxrwSyQ==
548 | dependencies:
549 | focus-trap "^7.4.0"
550 | tabbable "^6.1.1"
551 |
552 | focus-trap@^7.4.0:
553 | version "7.4.0"
554 | resolved "https://registry.yarnpkg.com/focus-trap/-/focus-trap-7.4.0.tgz#20f760a497f593b01d2e446168009c1f12ab0385"
555 | integrity sha512-yI7FwUqU4TVb+7t6PaQ3spT/42r/KLEi8mtdGoQo2li/kFzmu9URmalTvw7xCCJtSOyhBxscvEAmvjeN9iHARg==
556 | dependencies:
557 | tabbable "^6.1.1"
558 |
559 | follow-redirects@^1.15.0:
560 | version "1.15.2"
561 | resolved "https://registry.yarnpkg.com/follow-redirects/-/follow-redirects-1.15.2.tgz#b460864144ba63f2681096f274c4e57026da2c13"
562 | integrity sha512-VQLG33o04KaQ8uYi2tVNbdrWp1QWxNNea+nmIB4EVM28v0hmP17z7aG1+wAkNzVq4KeXTq3221ye5qTJP91JwA==
563 |
564 | form-data@^4.0.0:
565 | version "4.0.0"
566 | resolved "https://registry.yarnpkg.com/form-data/-/form-data-4.0.0.tgz#93919daeaf361ee529584b9b31664dc12c9fa452"
567 | integrity sha512-ETEklSGi5t0QMZuiXoA/Q6vcnxcLQP5vdugSpuAyi6SVGi2clPPp+xgEhuMaHC+zGgn31Kd235W35f7Hykkaww==
568 | dependencies:
569 | asynckit "^0.4.0"
570 | combined-stream "^1.0.8"
571 | mime-types "^2.1.12"
572 |
573 | fraction.js@^4.2.0:
574 | version "4.2.0"
575 | resolved "https://registry.yarnpkg.com/fraction.js/-/fraction.js-4.2.0.tgz#448e5109a313a3527f5a3ab2119ec4cf0e0e2950"
576 | integrity sha512-MhLuK+2gUcnZe8ZHlaaINnQLl0xRIGRfcGk2yl8xoQAfHrSsL3rYu6FCmBdkdbhc9EPlwyGHewaRsvwRMJtAlA==
577 |
578 | framer-motion@^10.5.0:
579 | version "10.5.0"
580 | resolved "https://registry.yarnpkg.com/framer-motion/-/framer-motion-10.5.0.tgz#0519193acdd60669ec27fde948a389d8e1f5251b"
581 | integrity sha512-84Gh6Ct+KCk82YOnS7oq68IMlqcyaejrj2Xtxmh+CPOi7gqa1SZORZYWMJujQ2Qw0YRM2j1xQQdQo/+BtoQicQ==
582 | dependencies:
583 | tslib "^2.4.0"
584 | optionalDependencies:
585 | "@emotion/is-prop-valid" "^0.8.2"
586 |
587 | fs-minipass@^2.0.0:
588 | version "2.1.0"
589 | resolved "https://registry.yarnpkg.com/fs-minipass/-/fs-minipass-2.1.0.tgz#7f5036fdbf12c63c169190cbe4199c852271f9fb"
590 | integrity sha512-V/JgOLFCS+R6Vcq0slCuaeWEdNC3ouDlJMNIsacH2VtALiu9mV4LPrHc5cDl8k5aw6J8jwgWWpiTo5RYhmIzvg==
591 | dependencies:
592 | minipass "^3.0.0"
593 |
594 | fs.realpath@^1.0.0:
595 | version "1.0.0"
596 | resolved "https://registry.yarnpkg.com/fs.realpath/-/fs.realpath-1.0.0.tgz#1504ad2523158caa40db4a2787cb01411994ea4f"
597 | integrity sha512-OO0pH2lK6a0hZnAdau5ItzHPI6pUlvI7jMVnxUQRtw4owF2wk8lOSabtGDCTP4Ggrg2MbGnWO9X8K1t4+fGMDw==
598 |
599 | fsevents@~2.3.2:
600 | version "2.3.2"
601 | resolved "https://registry.yarnpkg.com/fsevents/-/fsevents-2.3.2.tgz#8a526f78b8fdf4623b709e0b975c52c24c02fd1a"
602 | integrity sha512-xiqMQR4xAeHTuB9uWm+fFRcIOgKBMiOBP+eXiyT7jsgVCq1bkVygt00oASowB7EdtpOHaaPgKt812P9ab+DDKA==
603 |
604 | function-bind@^1.1.1:
605 | version "1.1.1"
606 | resolved "https://registry.yarnpkg.com/function-bind/-/function-bind-1.1.1.tgz#a56899d3ea3c9bab874bb9773b7c5ede92f4895d"
607 | integrity sha512-yIovAzMX49sF8Yl58fSCWJ5svSLuaibPxXQJFLmBObTuCr0Mf1KiPopGM9NiFjiYBCbfaa2Fh6breQ6ANVTI0A==
608 |
609 | gauge@^3.0.0:
610 | version "3.0.2"
611 | resolved "https://registry.yarnpkg.com/gauge/-/gauge-3.0.2.tgz#03bf4441c044383908bcfa0656ad91803259b395"
612 | integrity sha512-+5J6MS/5XksCuXq++uFRsnUd7Ovu1XenbeuIuNRJxYWjgQbPuFhT14lAvsWfqfAmnwluf1OwMjz39HjfLPci0Q==
613 | dependencies:
614 | aproba "^1.0.3 || ^2.0.0"
615 | color-support "^1.1.2"
616 | console-control-strings "^1.0.0"
617 | has-unicode "^2.0.1"
618 | object-assign "^4.1.1"
619 | signal-exit "^3.0.0"
620 | string-width "^4.2.3"
621 | strip-ansi "^6.0.1"
622 | wide-align "^1.1.2"
623 |
624 | glob-parent@^5.1.2, glob-parent@~5.1.2:
625 | version "5.1.2"
626 | resolved "https://registry.yarnpkg.com/glob-parent/-/glob-parent-5.1.2.tgz#869832c58034fe68a4093c17dc15e8340d8401c4"
627 | integrity sha512-AOIgSQCepiJYwP3ARnGx+5VnTu2HBYdzbGP45eLw1vr3zB3vZLeyed1sC9hnbcOc9/SrMyM5RPQrkGz4aS9Zow==
628 | dependencies:
629 | is-glob "^4.0.1"
630 |
631 | glob-parent@^6.0.2:
632 | version "6.0.2"
633 | resolved "https://registry.yarnpkg.com/glob-parent/-/glob-parent-6.0.2.tgz#6d237d99083950c79290f24c7642a3de9a28f9e3"
634 | integrity sha512-XxwI8EOhVQgWp6iDL+3b0r86f4d6AX6zSU55HfB4ydCEuXLXc5FcYeOu+nnGftS4TEju/11rt4KJPTMgbfmv4A==
635 | dependencies:
636 | is-glob "^4.0.3"
637 |
638 | glob@^7.1.3:
639 | version "7.2.3"
640 | resolved "https://registry.yarnpkg.com/glob/-/glob-7.2.3.tgz#b8df0fb802bbfa8e89bd1d938b4e16578ed44f2b"
641 | integrity sha512-nFR0zLpU2YCaRxwoCJvL6UvCH2JFyFVIvwTLsIf21AuHlMskA1hhTdk+LlYJtOlYt9v6dvszD2BGRqBL+iQK9Q==
642 | dependencies:
643 | fs.realpath "^1.0.0"
644 | inflight "^1.0.4"
645 | inherits "2"
646 | minimatch "^3.1.1"
647 | once "^1.3.0"
648 | path-is-absolute "^1.0.0"
649 |
650 | goober@^2.1.10:
651 | version "2.1.12"
652 | resolved "https://registry.yarnpkg.com/goober/-/goober-2.1.12.tgz#6c1645314ac9a68fe76408e1f502c63df8a39042"
653 | integrity sha512-yXHAvO08FU1JgTXX6Zn6sYCUFfB/OJSX8HHjDSgerZHZmFKAb08cykp5LBw5QnmyMcZyPRMqkdyHUSSzge788Q==
654 |
655 | has-unicode@^2.0.1:
656 | version "2.0.1"
657 | resolved "https://registry.yarnpkg.com/has-unicode/-/has-unicode-2.0.1.tgz#e0e6fe6a28cf51138855e086d1691e771de2a8b9"
658 | integrity sha512-8Rf9Y83NBReMnx0gFzA8JImQACstCYWUplepDa9xprwwtmgEZUF0h/i5xSA625zB/I37EtrswSST6OXxwaaIJQ==
659 |
660 | has@^1.0.3:
661 | version "1.0.3"
662 | resolved "https://registry.yarnpkg.com/has/-/has-1.0.3.tgz#722d7cbfc1f6aa8241f16dd814e011e1f41e8796"
663 | integrity sha512-f2dvO0VU6Oej7RkWJGrehjbzMAjFp5/VKPp5tTpWIV4JHHZK1/BxbFRtf/siA2SWTe09caDmVtYYzWEIbBS4zw==
664 | dependencies:
665 | function-bind "^1.1.1"
666 |
667 | hoist-non-react-statics@^3.3.0, hoist-non-react-statics@^3.3.2:
668 | version "3.3.2"
669 | resolved "https://registry.yarnpkg.com/hoist-non-react-statics/-/hoist-non-react-statics-3.3.2.tgz#ece0acaf71d62c2969c2ec59feff42a4b1a85b45"
670 | integrity sha512-/gGivxi8JPKWNm/W0jSmzcMPpfpPLc3dY/6GxhX2hQ9iGj3aDfklV4ET7NjKpSinLpJ5vafa9iiGIEZg10SfBw==
671 | dependencies:
672 | react-is "^16.7.0"
673 |
674 | https-proxy-agent@^5.0.0:
675 | version "5.0.1"
676 | resolved "https://registry.yarnpkg.com/https-proxy-agent/-/https-proxy-agent-5.0.1.tgz#c59ef224a04fe8b754f3db0063a25ea30d0005d6"
677 | integrity sha512-dFcAjpTQFgoLMzC2VwU+C/CbS7uRL0lWmxDITmqm7C+7F0Odmj6s9l6alZc6AELXhrnggM2CeWSXHGOdX2YtwA==
678 | dependencies:
679 | agent-base "6"
680 | debug "4"
681 |
682 | immer@^9.0.16:
683 | version "9.0.19"
684 | resolved "https://registry.yarnpkg.com/immer/-/immer-9.0.19.tgz#67fb97310555690b5f9cd8380d38fc0aabb6b38b"
685 | integrity sha512-eY+Y0qcsB4TZKwgQzLaE/lqYMlKhv5J9dyd2RhhtGhNo2njPXDqU9XPfcNfa3MIDsdtZt5KlkIsirlo4dHsWdQ==
686 |
687 | inflight@^1.0.4:
688 | version "1.0.6"
689 | resolved "https://registry.yarnpkg.com/inflight/-/inflight-1.0.6.tgz#49bd6331d7d02d0c09bc910a1075ba8165b56df9"
690 | integrity sha512-k92I/b08q4wvFscXCLvqfsHCrjrF7yiXsQuIVvVE7N82W3+aqpzuUdBbfhWcy/FZR3/4IgflMgKLOsvPDrGCJA==
691 | dependencies:
692 | once "^1.3.0"
693 | wrappy "1"
694 |
695 | inherits@2, inherits@^2.0.3:
696 | version "2.0.4"
697 | resolved "https://registry.yarnpkg.com/inherits/-/inherits-2.0.4.tgz#0fa2c64f932917c3433a0ded55363aae37416b7c"
698 | integrity sha512-k/vGaX4/Yla3WzyMCvTQOXYeIHvqOKtnqBduzTHpzpQZzAskKMhZ2K+EnBiSM9zGSoIFeMpXKxa4dYeZIQqewQ==
699 |
700 | ip@^2.0.0:
701 | version "2.0.0"
702 | resolved "https://registry.yarnpkg.com/ip/-/ip-2.0.0.tgz#4cf4ab182fee2314c75ede1276f8c80b479936da"
703 | integrity sha512-WKa+XuLG1A1R0UWhl2+1XQSi+fZWMsYKffMZTTYsiZaUD8k2yDAj5atimTUD2TZkyCkNEeYE5NhFZmupOGtjYQ==
704 |
705 | is-binary-path@~2.1.0:
706 | version "2.1.0"
707 | resolved "https://registry.yarnpkg.com/is-binary-path/-/is-binary-path-2.1.0.tgz#ea1f7f3b80f064236e83470f86c09c254fb45b09"
708 | integrity sha512-ZMERYes6pDydyuGidse7OsHxtbI7WVeUEozgR/g7rd0xUimYNlvZRE/K2MgZTjWy725IfelLeVcEM97mmtRGXw==
709 | dependencies:
710 | binary-extensions "^2.0.0"
711 |
712 | is-core-module@^2.9.0:
713 | version "2.11.0"
714 | resolved "https://registry.yarnpkg.com/is-core-module/-/is-core-module-2.11.0.tgz#ad4cb3e3863e814523c96f3f58d26cc570ff0144"
715 | integrity sha512-RRjxlvLDkD1YJwDbroBHMb+cukurkDWNyHx7D3oNB5x9rb5ogcksMC5wHCadcXoo67gVr/+3GFySh3134zi6rw==
716 | dependencies:
717 | has "^1.0.3"
718 |
719 | is-extglob@^2.1.1:
720 | version "2.1.1"
721 | resolved "https://registry.yarnpkg.com/is-extglob/-/is-extglob-2.1.1.tgz#a88c02535791f02ed37c76a1b9ea9773c833f8c2"
722 | integrity sha512-SbKbANkN603Vi4jEZv49LeVJMn4yGwsbzZworEoyEiutsN3nJYdbO36zfhGJ6QEDpOZIFkDtnq5JRxmvl3jsoQ==
723 |
724 | is-fullwidth-code-point@^3.0.0:
725 | version "3.0.0"
726 | resolved "https://registry.yarnpkg.com/is-fullwidth-code-point/-/is-fullwidth-code-point-3.0.0.tgz#f116f8064fe90b3f7844a38997c0b75051269f1d"
727 | integrity sha512-zymm5+u+sCsSWyD9qNaejV3DFvhCKclKdizYaJUuHA83RLjb7nSuGnddCHGv0hk+KY7BMAlsWeK4Ueg6EV6XQg==
728 |
729 | is-glob@^4.0.1, is-glob@^4.0.3, is-glob@~4.0.1:
730 | version "4.0.3"
731 | resolved "https://registry.yarnpkg.com/is-glob/-/is-glob-4.0.3.tgz#64f61e42cbbb2eec2071a9dac0b28ba1e65d5084"
732 | integrity sha512-xelSayHH36ZgE7ZWhli7pW34hNbNl8Ojv5KVmkJD4hBdD3th8Tfk9vYasLM+mXWOZhFkgZfxhLSnrwRr4elSSg==
733 | dependencies:
734 | is-extglob "^2.1.1"
735 |
736 | is-number@^7.0.0:
737 | version "7.0.0"
738 | resolved "https://registry.yarnpkg.com/is-number/-/is-number-7.0.0.tgz#7535345b896734d5f80c4d06c50955527a14f12b"
739 | integrity sha512-41Cifkg6e8TylSpdtTpeLVMqvSBEVzTttHvERD741+pnZ8ANv0004MRL43QKPDlK9cGvNp6NZWZUBlbGXYxxng==
740 |
741 | "js-tokens@^3.0.0 || ^4.0.0":
742 | version "4.0.0"
743 | resolved "https://registry.yarnpkg.com/js-tokens/-/js-tokens-4.0.0.tgz#19203fb59991df98e3a287050d4647cdeaf32499"
744 | integrity sha512-RdJUflcE3cUzKiMqQgsCu06FPu9UdIJO0beYbPhHN4k6apgJtifcoCtT9bcxOpYBtpD2kCM6Sbzg4CausW/PKQ==
745 |
746 | kareem@2.5.1:
747 | version "2.5.1"
748 | resolved "https://registry.yarnpkg.com/kareem/-/kareem-2.5.1.tgz#7b8203e11819a8e77a34b3517d3ead206764d15d"
749 | integrity sha512-7jFxRVm+jD+rkq3kY0iZDJfsO2/t4BBPeEb2qKn2lR/9KhuksYk5hxzfRYWMPV8P/x2d0kHD306YyWLzjjH+uA==
750 |
751 | lilconfig@^2.0.5, lilconfig@^2.0.6:
752 | version "2.1.0"
753 | resolved "https://registry.yarnpkg.com/lilconfig/-/lilconfig-2.1.0.tgz#78e23ac89ebb7e1bfbf25b18043de756548e7f52"
754 | integrity sha512-utWOt/GHzuUxnLKxB6dk81RoOeoNeHgbrXiuGk4yyF5qlRz+iIVWu56E2fqGHFrXz0QNUhLB/8nKqvRH66JKGQ==
755 |
756 | lodash@^4.17.21:
757 | version "4.17.21"
758 | resolved "https://registry.yarnpkg.com/lodash/-/lodash-4.17.21.tgz#679591c564c3bffaae8454cf0b3df370c3d6911c"
759 | integrity sha512-v2kDEe57lecTulaDIuNTPy3Ry4gLGJ6Z1O3vE1krgXZNrsQ+LFTGHVxVjcXPs17LhbZVGedAJv8XZ1tvj5FvSg==
760 |
761 | loose-envify@^1.1.0, loose-envify@^1.4.0:
762 | version "1.4.0"
763 | resolved "https://registry.yarnpkg.com/loose-envify/-/loose-envify-1.4.0.tgz#71ee51fa7be4caec1a63839f7e682d8132d30caf"
764 | integrity sha512-lyuxPGr/Wfhrlem2CL/UcnUc1zcqKAImBDzukY7Y5F/yQiNdko6+fRLevlw1HgMySw7f611UIY408EtxRSoK3Q==
765 | dependencies:
766 | js-tokens "^3.0.0 || ^4.0.0"
767 |
768 | lru-cache@^6.0.0:
769 | version "6.0.0"
770 | resolved "https://registry.yarnpkg.com/lru-cache/-/lru-cache-6.0.0.tgz#6d6fe6570ebd96aaf90fcad1dafa3b2566db3a94"
771 | integrity sha512-Jo6dJ04CmSjuznwJSS3pUeWmd/H0ffTlkXXgwZi+eq1UCmqQwCh+eLsYOYCwY991i2Fah4h1BEMCx4qThGbsiA==
772 | dependencies:
773 | yallist "^4.0.0"
774 |
775 | make-dir@^3.1.0:
776 | version "3.1.0"
777 | resolved "https://registry.yarnpkg.com/make-dir/-/make-dir-3.1.0.tgz#415e967046b3a7f1d185277d84aa58203726a13f"
778 | integrity sha512-g3FeP20LNwhALb/6Cz6Dd4F2ngze0jz7tbzrD2wAV+o9FeNHe4rL+yK2md0J/fiSf1sa1ADhXqi5+oVwOM/eGw==
779 | dependencies:
780 | semver "^6.0.0"
781 |
782 | memory-pager@^1.0.2:
783 | version "1.5.0"
784 | resolved "https://registry.yarnpkg.com/memory-pager/-/memory-pager-1.5.0.tgz#d8751655d22d384682741c972f2c3d6dfa3e66b5"
785 | integrity sha512-ZS4Bp4r/Zoeq6+NLJpP+0Zzm0pR8whtGPf1XExKLJBAczGMnSi3It14OiNCStjQjM6NU1okjQGSxgEZN8eBYKg==
786 |
787 | merge2@^1.3.0:
788 | version "1.4.1"
789 | resolved "https://registry.yarnpkg.com/merge2/-/merge2-1.4.1.tgz#4368892f885e907455a6fd7dc55c0c9d404990ae"
790 | integrity sha512-8q7VEgMJW4J8tcfVPy8g09NcQwZdbwFEqhe/WZkoIzjn/3TGDwtOCYtXGxA3O8tPzpczCCDgv+P2P5y00ZJOOg==
791 |
792 | micromatch@^4.0.4, micromatch@^4.0.5:
793 | version "4.0.5"
794 | resolved "https://registry.yarnpkg.com/micromatch/-/micromatch-4.0.5.tgz#bc8999a7cbbf77cdc89f132f6e467051b49090c6"
795 | integrity sha512-DMy+ERcEW2q8Z2Po+WNXuw3c5YaUSFjAO5GsJqfEl7UjvtIuFKO6ZrKvcItdy98dwFI2N1tg3zNIdKaQT+aNdA==
796 | dependencies:
797 | braces "^3.0.2"
798 | picomatch "^2.3.1"
799 |
800 | mime-db@1.52.0:
801 | version "1.52.0"
802 | resolved "https://registry.yarnpkg.com/mime-db/-/mime-db-1.52.0.tgz#bbabcdc02859f4987301c856e3387ce5ec43bf70"
803 | integrity sha512-sPU4uV7dYlvtWJxwwxHD0PuihVNiE7TyAbQ5SWxDCB9mUYvOgroQOwYQQOKPJ8CIbE+1ETVlOoK1UC2nU3gYvg==
804 |
805 | mime-types@^2.1.12:
806 | version "2.1.35"
807 | resolved "https://registry.yarnpkg.com/mime-types/-/mime-types-2.1.35.tgz#381a871b62a734450660ae3deee44813f70d959a"
808 | integrity sha512-ZDY+bPm5zTTF+YpCrAU9nK0UgICYPT0QtT1NZWFv4s++TNkcgVaT0g6+4R2uI4MjQjzysHB1zxuWL50hzaeXiw==
809 | dependencies:
810 | mime-db "1.52.0"
811 |
812 | minimatch@^3.1.1:
813 | version "3.1.2"
814 | resolved "https://registry.yarnpkg.com/minimatch/-/minimatch-3.1.2.tgz#19cd194bfd3e428f049a70817c038d89ab4be35b"
815 | integrity sha512-J7p63hRiAjw1NDEww1W7i37+ByIrOWO5XQQAzZ3VOcL0PNybwpfmV/N05zFAzwQ9USyEcX6t3UO+K5aqBQOIHw==
816 | dependencies:
817 | brace-expansion "^1.1.7"
818 |
819 | minimist@^1.2.6:
820 | version "1.2.8"
821 | resolved "https://registry.yarnpkg.com/minimist/-/minimist-1.2.8.tgz#c1a464e7693302e082a075cee0c057741ac4772c"
822 | integrity sha512-2yyAR8qBkN3YuheJanUpWC5U3bb5osDywNB8RzDVlDwDHbocAJveqqj1u8+SVD7jkWT4yvsHCpWqqWqAxb0zCA==
823 |
824 | minipass@^3.0.0:
825 | version "3.3.6"
826 | resolved "https://registry.yarnpkg.com/minipass/-/minipass-3.3.6.tgz#7bba384db3a1520d18c9c0e5251c3444e95dd94a"
827 | integrity sha512-DxiNidxSEK+tHG6zOIklvNOwm3hvCrbUrdtzY74U6HKTJxvIDfOUL5W5P2Ghd3DTkhhKPYGqeNUIh5qcM4YBfw==
828 | dependencies:
829 | yallist "^4.0.0"
830 |
831 | minipass@^4.0.0:
832 | version "4.2.5"
833 | resolved "https://registry.yarnpkg.com/minipass/-/minipass-4.2.5.tgz#9e0e5256f1e3513f8c34691dd68549e85b2c8ceb"
834 | integrity sha512-+yQl7SX3bIT83Lhb4BVorMAHVuqsskxRdlmO9kTpyukp8vsm2Sn/fUOV9xlnG8/a5JsypJzap21lz/y3FBMJ8Q==
835 |
836 | minizlib@^2.1.1:
837 | version "2.1.2"
838 | resolved "https://registry.yarnpkg.com/minizlib/-/minizlib-2.1.2.tgz#e90d3466ba209b932451508a11ce3d3632145931"
839 | integrity sha512-bAxsR8BVfj60DWXHE3u30oHzfl4G7khkSuPW+qvpd7jFRHm7dLxOjUk1EHACJ/hxLY8phGJ0YhYHZo7jil7Qdg==
840 | dependencies:
841 | minipass "^3.0.0"
842 | yallist "^4.0.0"
843 |
844 | mkdirp@^1.0.3:
845 | version "1.0.4"
846 | resolved "https://registry.yarnpkg.com/mkdirp/-/mkdirp-1.0.4.tgz#3eb5ed62622756d79a5f0e2a221dfebad75c2f7e"
847 | integrity sha512-vVqVZQyf3WLx2Shd0qJ9xuvqgAyKPLAiqITEtqW0oIUjzo3PePDd6fW9iFz30ef7Ysp/oiWqbhszeGWW2T6Gzw==
848 |
849 | mongodb-connection-string-url@^2.6.0:
850 | version "2.6.0"
851 | resolved "https://registry.yarnpkg.com/mongodb-connection-string-url/-/mongodb-connection-string-url-2.6.0.tgz#57901bf352372abdde812c81be47b75c6b2ec5cf"
852 | integrity sha512-WvTZlI9ab0QYtTYnuMLgobULWhokRjtC7db9LtcVfJ+Hsnyr5eo6ZtNAt3Ly24XZScGMelOcGtm7lSn0332tPQ==
853 | dependencies:
854 | "@types/whatwg-url" "^8.2.1"
855 | whatwg-url "^11.0.0"
856 |
857 | mongodb@5.1.0:
858 | version "5.1.0"
859 | resolved "https://registry.yarnpkg.com/mongodb/-/mongodb-5.1.0.tgz#e551f9e496777bde9173e51d16c163ab2c805b9d"
860 | integrity sha512-qgKb7y+EI90y4weY3z5+lIgm8wmexbonz0GalHkSElQXVKtRuwqXuhXKccyvIjXCJVy9qPV82zsinY0W1FBnJw==
861 | dependencies:
862 | bson "^5.0.1"
863 | mongodb-connection-string-url "^2.6.0"
864 | socks "^2.7.1"
865 | optionalDependencies:
866 | saslprep "^1.0.3"
867 |
868 | mongoose@^7.0.1:
869 | version "7.0.1"
870 | resolved "https://registry.yarnpkg.com/mongoose/-/mongoose-7.0.1.tgz#9afc737d10b3920c2c9b77ac5ac77fd6ff828d3d"
871 | integrity sha512-fxm2bPRG457Hb8RLwN8cMCokK8HNem/7g+qp5SrHC7Pt4Z4jqn1+/3cuc8W7uqehKDWEtpirggI7uw08x2ZIjQ==
872 | dependencies:
873 | bson "^5.0.1"
874 | kareem "2.5.1"
875 | mongodb "5.1.0"
876 | mpath "0.9.0"
877 | mquery "5.0.0"
878 | ms "2.1.3"
879 | sift "16.0.1"
880 |
881 | mpath@0.9.0:
882 | version "0.9.0"
883 | resolved "https://registry.yarnpkg.com/mpath/-/mpath-0.9.0.tgz#0c122fe107846e31fc58c75b09c35514b3871904"
884 | integrity sha512-ikJRQTk8hw5DEoFVxHG1Gn9T/xcjtdnOKIU1JTmGjZZlg9LST2mBLmcX3/ICIbgJydT2GOc15RnNy5mHmzfSew==
885 |
886 | mquery@5.0.0:
887 | version "5.0.0"
888 | resolved "https://registry.yarnpkg.com/mquery/-/mquery-5.0.0.tgz#a95be5dfc610b23862df34a47d3e5d60e110695d"
889 | integrity sha512-iQMncpmEK8R8ncT8HJGsGc9Dsp8xcgYMVSbs5jgnm1lFHTZqMJTUWTDx1LBO8+mK3tPNZWFLBghQEIOULSTHZg==
890 | dependencies:
891 | debug "4.x"
892 |
893 | ms@2.1.2:
894 | version "2.1.2"
895 | resolved "https://registry.yarnpkg.com/ms/-/ms-2.1.2.tgz#d09d1f357b443f493382a8eb3ccd183872ae6009"
896 | integrity sha512-sGkPx+VjMtmA6MX27oA4FBFELFCZZ4S4XqeGOXCv68tT+jb3vk/RyaKWP0PTKyWtmLSM0b+adUTEvbs1PEaH2w==
897 |
898 | ms@2.1.3:
899 | version "2.1.3"
900 | resolved "https://registry.yarnpkg.com/ms/-/ms-2.1.3.tgz#574c8138ce1d2b5861f0b44579dbadd60c6615b2"
901 | integrity sha512-6FlzubTLZG3J2a/NVCAleEhjzq5oxgHyaCU9yYXvcLsvoVaHJq/s5xXI6/XXP6tz7R9xAOtHnSO/tXtF3WRTlA==
902 |
903 | nanoid@^2.1.0:
904 | version "2.1.11"
905 | resolved "https://registry.yarnpkg.com/nanoid/-/nanoid-2.1.11.tgz#ec24b8a758d591561531b4176a01e3ab4f0f0280"
906 | integrity sha512-s/snB+WGm6uwi0WjsZdaVcuf3KJXlfGl2LcxgwkEwJF0D/BWzVWAZW/XY4bFaiR7s0Jk3FPvlnepg1H1b1UwlA==
907 |
908 | nanoid@^3.3.4:
909 | version "3.3.4"
910 | resolved "https://registry.yarnpkg.com/nanoid/-/nanoid-3.3.4.tgz#730b67e3cd09e2deacf03c027c81c9d9dbc5e8ab"
911 | integrity sha512-MqBkQh/OHTS2egovRtLk45wEyNXwF+cokD+1YPf9u5VfJiRdAiRwB2froX5Co9Rh20xs4siNPm8naNotSD6RBw==
912 |
913 | nanoid@^4.0.1:
914 | version "4.0.1"
915 | resolved "https://registry.yarnpkg.com/nanoid/-/nanoid-4.0.1.tgz#398d7ccfdbf9faf2231b2ca7e8fff5dbca6a509b"
916 | integrity sha512-udKGtCCUafD3nQtJg9wBhRP3KMbPglUsgV5JVsXhvyBs/oefqb4sqMEhKBBgqZncYowu58p1prsZQBYvAj/Gww==
917 |
918 | next@13.2.4:
919 | version "13.2.4"
920 | resolved "https://registry.yarnpkg.com/next/-/next-13.2.4.tgz#2363330392b0f7da02ab41301f60857ffa7f67d6"
921 | integrity sha512-g1I30317cThkEpvzfXujf0O4wtaQHtDCLhlivwlTJ885Ld+eOgcz7r3TGQzeU+cSRoNHtD8tsJgzxVdYojFssw==
922 | dependencies:
923 | "@next/env" "13.2.4"
924 | "@swc/helpers" "0.4.14"
925 | caniuse-lite "^1.0.30001406"
926 | postcss "8.4.14"
927 | styled-jsx "5.1.1"
928 | optionalDependencies:
929 | "@next/swc-android-arm-eabi" "13.2.4"
930 | "@next/swc-android-arm64" "13.2.4"
931 | "@next/swc-darwin-arm64" "13.2.4"
932 | "@next/swc-darwin-x64" "13.2.4"
933 | "@next/swc-freebsd-x64" "13.2.4"
934 | "@next/swc-linux-arm-gnueabihf" "13.2.4"
935 | "@next/swc-linux-arm64-gnu" "13.2.4"
936 | "@next/swc-linux-arm64-musl" "13.2.4"
937 | "@next/swc-linux-x64-gnu" "13.2.4"
938 | "@next/swc-linux-x64-musl" "13.2.4"
939 | "@next/swc-win32-arm64-msvc" "13.2.4"
940 | "@next/swc-win32-ia32-msvc" "13.2.4"
941 | "@next/swc-win32-x64-msvc" "13.2.4"
942 |
943 | node-addon-api@^5.0.0:
944 | version "5.1.0"
945 | resolved "https://registry.yarnpkg.com/node-addon-api/-/node-addon-api-5.1.0.tgz#49da1ca055e109a23d537e9de43c09cca21eb762"
946 | integrity sha512-eh0GgfEkpnoWDq+VY8OyvYhFEzBk6jIYbRKdIlyTiAXIVJ8PyBaKb0rp7oDtoddbdoHWhq8wwr+XZ81F1rpNdA==
947 |
948 | node-fetch@^2.6.7:
949 | version "2.6.9"
950 | resolved "https://registry.yarnpkg.com/node-fetch/-/node-fetch-2.6.9.tgz#7c7f744b5cc6eb5fd404e0c7a9fec630a55657e6"
951 | integrity sha512-DJm/CJkZkRjKKj4Zi4BsKVZh3ValV5IR5s7LVZnW+6YMh0W1BfNA8XSs6DLMGYlId5F3KnA70uu2qepcR08Qqg==
952 | dependencies:
953 | whatwg-url "^5.0.0"
954 |
955 | node-releases@^2.0.8:
956 | version "2.0.10"
957 | resolved "https://registry.yarnpkg.com/node-releases/-/node-releases-2.0.10.tgz#c311ebae3b6a148c89b1813fd7c4d3c024ef537f"
958 | integrity sha512-5GFldHPXVG/YZmFzJvKK2zDSzPKhEp0+ZR5SVaoSag9fsL5YgHbUHDfnG5494ISANDcK4KwPXAx2xqVEydmd7w==
959 |
960 | nopt@^5.0.0:
961 | version "5.0.0"
962 | resolved "https://registry.yarnpkg.com/nopt/-/nopt-5.0.0.tgz#530942bb58a512fccafe53fe210f13a25355dc88"
963 | integrity sha512-Tbj67rffqceeLpcRXrT7vKAN8CwfPeIBgM7E6iBkmKLV7bEMwpGgYLGv0jACUsECaa/vuxP0IjEont6umdMgtQ==
964 | dependencies:
965 | abbrev "1"
966 |
967 | normalize-path@^3.0.0, normalize-path@~3.0.0:
968 | version "3.0.0"
969 | resolved "https://registry.yarnpkg.com/normalize-path/-/normalize-path-3.0.0.tgz#0dcd69ff23a1c9b11fd0978316644a0388216a65"
970 | integrity sha512-6eZs5Ls3WtCisHWp9S2GUy8dqkpGi4BVSz3GaqiE6ezub0512ESztXUwUB6C6IKbQkY2Pnb/mD4WYojCRwcwLA==
971 |
972 | normalize-range@^0.1.2:
973 | version "0.1.2"
974 | resolved "https://registry.yarnpkg.com/normalize-range/-/normalize-range-0.1.2.tgz#2d10c06bdfd312ea9777695a4d28439456b75942"
975 | integrity sha512-bdok/XvKII3nUpklnV6P2hxtMNrCboOjAcyBuQnWEhO665FwrSNRxU+AqpsyvO6LgGYPspN+lu5CLtw4jPRKNA==
976 |
977 | npmlog@^5.0.1:
978 | version "5.0.1"
979 | resolved "https://registry.yarnpkg.com/npmlog/-/npmlog-5.0.1.tgz#f06678e80e29419ad67ab964e0fa69959c1eb8b0"
980 | integrity sha512-AqZtDUWOMKs1G/8lwylVjrdYgqA4d9nu8hc+0gzRxlDb1I10+FHBGMXs6aiQHFdCUUlqH99MUMuLfzWDNDtfxw==
981 | dependencies:
982 | are-we-there-yet "^2.0.0"
983 | console-control-strings "^1.1.0"
984 | gauge "^3.0.0"
985 | set-blocking "^2.0.0"
986 |
987 | object-assign@^4.1.1:
988 | version "4.1.1"
989 | resolved "https://registry.yarnpkg.com/object-assign/-/object-assign-4.1.1.tgz#2109adc7965887cfc05cbbd442cac8bfbb360863"
990 | integrity sha512-rJgTQnkUnH1sFw8yT6VSU3zD3sWmu6sZhIseY8VX+GRu3P6F7Fu+JNDoXfklElbLJSnc3FUQHVe4cU5hj+BcUg==
991 |
992 | object-hash@^3.0.0:
993 | version "3.0.0"
994 | resolved "https://registry.yarnpkg.com/object-hash/-/object-hash-3.0.0.tgz#73f97f753e7baffc0e2cc9d6e079079744ac82e9"
995 | integrity sha512-RSn9F68PjH9HqtltsSnqYC1XXoWe9Bju5+213R98cNGttag9q9yAOTzdbsqvIa7aNm5WffBZFpWYr2aWrklWAw==
996 |
997 | once@^1.3.0:
998 | version "1.4.0"
999 | resolved "https://registry.yarnpkg.com/once/-/once-1.4.0.tgz#583b1aa775961d4b113ac17d9c50baef9dd76bd1"
1000 | integrity sha512-lNaJgI+2Q5URQBkccEKHTQOPaXdUxnZZElQTZY0MFUAuaEqe1E+Nyvgdz/aIyNi6Z9MzO5dv1H8n58/GELp3+w==
1001 | dependencies:
1002 | wrappy "1"
1003 |
1004 | path-is-absolute@^1.0.0:
1005 | version "1.0.1"
1006 | resolved "https://registry.yarnpkg.com/path-is-absolute/-/path-is-absolute-1.0.1.tgz#174b9268735534ffbc7ace6bf53a5a9e1b5c5f5f"
1007 | integrity sha512-AVbw3UJ2e9bq64vSaS9Am0fje1Pa8pbGqTTsmXfaIiMpnr5DlDhfJOuLj9Sf95ZPVDAUerDfEk88MPmPe7UCQg==
1008 |
1009 | path-parse@^1.0.7:
1010 | version "1.0.7"
1011 | resolved "https://registry.yarnpkg.com/path-parse/-/path-parse-1.0.7.tgz#fbc114b60ca42b30d9daf5858e4bd68bbedb6735"
1012 | integrity sha512-LDJzPVEEEPR+y48z93A0Ed0yXb8pAByGWo/k5YYdYgpY2/2EsOsksJrq7lOHxryrVOn1ejG6oAp8ahvOIQD8sw==
1013 |
1014 | picocolors@^1.0.0:
1015 | version "1.0.0"
1016 | resolved "https://registry.yarnpkg.com/picocolors/-/picocolors-1.0.0.tgz#cb5bdc74ff3f51892236eaf79d68bc44564ab81c"
1017 | integrity sha512-1fygroTLlHu66zi26VoTDv8yRgm0Fccecssto+MhsZ0D/DGW2sm8E8AjW7NU5VVTRt5GxbeZ5qBuJr+HyLYkjQ==
1018 |
1019 | picomatch@^2.0.4, picomatch@^2.2.1, picomatch@^2.3.1:
1020 | version "2.3.1"
1021 | resolved "https://registry.yarnpkg.com/picomatch/-/picomatch-2.3.1.tgz#3ba3833733646d9d3e4995946c1365a67fb07a42"
1022 | integrity sha512-JU3teHTNjmE2VCGFzuY8EXzCDVwEqB2a8fsIvwaStHhAWJEeVd1o1QD80CU6+ZdEXXSLbSsuLwJjkCBWqRQUVA==
1023 |
1024 | pify@^2.3.0:
1025 | version "2.3.0"
1026 | resolved "https://registry.yarnpkg.com/pify/-/pify-2.3.0.tgz#ed141a6ac043a849ea588498e7dca8b15330e90c"
1027 | integrity sha512-udgsAY+fTnvv7kI7aaxbqwWNb0AHiB0qBO89PZKPkoTmGOgdbrHDKD+0B2X4uTfJ/FT1R09r9gTsjUjNJotuog==
1028 |
1029 | postcss-import@^14.1.0:
1030 | version "14.1.0"
1031 | resolved "https://registry.yarnpkg.com/postcss-import/-/postcss-import-14.1.0.tgz#a7333ffe32f0b8795303ee9e40215dac922781f0"
1032 | integrity sha512-flwI+Vgm4SElObFVPpTIT7SU7R3qk2L7PyduMcokiaVKuWv9d/U+Gm/QAd8NDLuykTWTkcrjOeD2Pp1rMeBTGw==
1033 | dependencies:
1034 | postcss-value-parser "^4.0.0"
1035 | read-cache "^1.0.0"
1036 | resolve "^1.1.7"
1037 |
1038 | postcss-js@^4.0.0:
1039 | version "4.0.1"
1040 | resolved "https://registry.yarnpkg.com/postcss-js/-/postcss-js-4.0.1.tgz#61598186f3703bab052f1c4f7d805f3991bee9d2"
1041 | integrity sha512-dDLF8pEO191hJMtlHFPRa8xsizHaM82MLfNkUHdUtVEV3tgTp5oj+8qbEqYM57SLfc74KSbw//4SeJma2LRVIw==
1042 | dependencies:
1043 | camelcase-css "^2.0.1"
1044 |
1045 | postcss-load-config@^3.1.4:
1046 | version "3.1.4"
1047 | resolved "https://registry.yarnpkg.com/postcss-load-config/-/postcss-load-config-3.1.4.tgz#1ab2571faf84bb078877e1d07905eabe9ebda855"
1048 | integrity sha512-6DiM4E7v4coTE4uzA8U//WhtPwyhiim3eyjEMFCnUpzbrkK9wJHgKDT2mR+HbtSrd/NubVaYTOpSpjUl8NQeRg==
1049 | dependencies:
1050 | lilconfig "^2.0.5"
1051 | yaml "^1.10.2"
1052 |
1053 | postcss-nested@6.0.0:
1054 | version "6.0.0"
1055 | resolved "https://registry.yarnpkg.com/postcss-nested/-/postcss-nested-6.0.0.tgz#1572f1984736578f360cffc7eb7dca69e30d1735"
1056 | integrity sha512-0DkamqrPcmkBDsLn+vQDIrtkSbNkv5AD/M322ySo9kqFkCIYklym2xEmWkwo+Y3/qZo34tzEPNUw4y7yMCdv5w==
1057 | dependencies:
1058 | postcss-selector-parser "^6.0.10"
1059 |
1060 | postcss-selector-parser@^6.0.10, postcss-selector-parser@^6.0.11:
1061 | version "6.0.11"
1062 | resolved "https://registry.yarnpkg.com/postcss-selector-parser/-/postcss-selector-parser-6.0.11.tgz#2e41dc39b7ad74046e1615185185cd0b17d0c8dc"
1063 | integrity sha512-zbARubNdogI9j7WY4nQJBiNqQf3sLS3wCP4WfOidu+p28LofJqDH1tcXypGrcmMHhDk2t9wGhCsYe/+szLTy1g==
1064 | dependencies:
1065 | cssesc "^3.0.0"
1066 | util-deprecate "^1.0.2"
1067 |
1068 | postcss-value-parser@^4.0.0, postcss-value-parser@^4.2.0:
1069 | version "4.2.0"
1070 | resolved "https://registry.yarnpkg.com/postcss-value-parser/-/postcss-value-parser-4.2.0.tgz#723c09920836ba6d3e5af019f92bc0971c02e514"
1071 | integrity sha512-1NNCs6uurfkVbeXG4S8JFT9t19m45ICnif8zWLd5oPSZ50QnwMfK+H3jv408d4jw/7Bttv5axS5IiHoLaVNHeQ==
1072 |
1073 | postcss@8.4.14:
1074 | version "8.4.14"
1075 | resolved "https://registry.yarnpkg.com/postcss/-/postcss-8.4.14.tgz#ee9274d5622b4858c1007a74d76e42e56fd21caf"
1076 | integrity sha512-E398TUmfAYFPBSdzgeieK2Y1+1cpdxJx8yXbK/m57nRhKSmk1GB2tO4lbLBtlkfPQTDKfe4Xqv1ASWPpayPEig==
1077 | dependencies:
1078 | nanoid "^3.3.4"
1079 | picocolors "^1.0.0"
1080 | source-map-js "^1.0.2"
1081 |
1082 | postcss@^8.0.9, postcss@^8.4.21:
1083 | version "8.4.21"
1084 | resolved "https://registry.yarnpkg.com/postcss/-/postcss-8.4.21.tgz#c639b719a57efc3187b13a1d765675485f4134f4"
1085 | integrity sha512-tP7u/Sn/dVxK2NnruI4H9BG+x+Wxz6oeZ1cJ8P6G/PZY0IKk4k/63TDsQf2kQq3+qoJeLm2kIBUNlZe3zgb4Zg==
1086 | dependencies:
1087 | nanoid "^3.3.4"
1088 | picocolors "^1.0.0"
1089 | source-map-js "^1.0.2"
1090 |
1091 | prop-types@^15.8.1:
1092 | version "15.8.1"
1093 | resolved "https://registry.yarnpkg.com/prop-types/-/prop-types-15.8.1.tgz#67d87bf1a694f48435cf332c24af10214a3140b5"
1094 | integrity sha512-oj87CgZICdulUohogVAR7AjlC0327U4el4L6eAvOqCeudMDVU0NThNaV+b9Df4dXgSP1gXMTnPdhfe/2qDH5cg==
1095 | dependencies:
1096 | loose-envify "^1.4.0"
1097 | object-assign "^4.1.1"
1098 | react-is "^16.13.1"
1099 |
1100 | proxy-from-env@^1.1.0:
1101 | version "1.1.0"
1102 | resolved "https://registry.yarnpkg.com/proxy-from-env/-/proxy-from-env-1.1.0.tgz#e102f16ca355424865755d2c9e8ea4f24d58c3e2"
1103 | integrity sha512-D+zkORCbA9f1tdWRK0RaCR3GPv50cMxcrz4X8k5LTSUD1Dkw47mKJEZQNunItRTkWwgtaUSo1RVFRIG9ZXiFYg==
1104 |
1105 | punycode@^2.1.1:
1106 | version "2.3.0"
1107 | resolved "https://registry.yarnpkg.com/punycode/-/punycode-2.3.0.tgz#f67fa67c94da8f4d0cfff981aee4118064199b8f"
1108 | integrity sha512-rRV+zQD8tVFys26lAGR9WUuS4iUAngJScM+ZRSKtvl5tKeZ2t5bvdNFdNHBW9FWR4guGHlgmsZ1G7BSm2wTbuA==
1109 |
1110 | queue-microtask@^1.2.2:
1111 | version "1.2.3"
1112 | resolved "https://registry.yarnpkg.com/queue-microtask/-/queue-microtask-1.2.3.tgz#4929228bbc724dfac43e0efb058caf7b6cfb6243"
1113 | integrity sha512-NuaNSa6flKT5JaSYQzJok04JzTL1CA6aGhv5rfLW3PgqA+M2ChpZQnAC8h8i4ZFkBS8X5RqkDBHA7r4hej3K9A==
1114 |
1115 | quick-lru@^5.1.1:
1116 | version "5.1.1"
1117 | resolved "https://registry.yarnpkg.com/quick-lru/-/quick-lru-5.1.1.tgz#366493e6b3e42a3a6885e2e99d18f80fb7a8c932"
1118 | integrity sha512-WuyALRjWPDGtt/wzJiadO5AXY+8hZ80hVpe6MyivgraREW751X3SbhRvG3eLKOYN+8VEvqLcf3wdnt44Z4S4SA==
1119 |
1120 | react-dom@18.2.0:
1121 | version "18.2.0"
1122 | resolved "https://registry.yarnpkg.com/react-dom/-/react-dom-18.2.0.tgz#22aaf38708db2674ed9ada224ca4aa708d821e3d"
1123 | integrity sha512-6IMTriUmvsjHUjNtEDudZfuDQUoWXVxKHhlEGSk81n4YFS+r/Kl99wXiwlVXtPBtJenozv2P+hxDsw9eA7Xo6g==
1124 | dependencies:
1125 | loose-envify "^1.1.0"
1126 | scheduler "^0.23.0"
1127 |
1128 | react-hot-toast@^2.4.0:
1129 | version "2.4.0"
1130 | resolved "https://registry.yarnpkg.com/react-hot-toast/-/react-hot-toast-2.4.0.tgz#b91e7a4c1b6e3068fc599d3d83b4fb48668ae51d"
1131 | integrity sha512-qnnVbXropKuwUpriVVosgo8QrB+IaPJCpL8oBI6Ov84uvHZ5QQcTp2qg6ku2wNfgJl6rlQXJIQU5q+5lmPOutA==
1132 | dependencies:
1133 | goober "^2.1.10"
1134 |
1135 | react-icons@^4.8.0:
1136 | version "4.8.0"
1137 | resolved "https://registry.yarnpkg.com/react-icons/-/react-icons-4.8.0.tgz#621e900caa23b912f737e41be57f27f6b2bff445"
1138 | integrity sha512-N6+kOLcihDiAnj5Czu637waJqSnwlMNROzVZMhfX68V/9bu9qHaMIJC4UdozWoOk57gahFCNHwVvWzm0MTzRjg==
1139 |
1140 | react-is@^16.13.1, react-is@^16.7.0:
1141 | version "16.13.1"
1142 | resolved "https://registry.yarnpkg.com/react-is/-/react-is-16.13.1.tgz#789729a4dc36de2999dc156dd6c1d9c18cea56a4"
1143 | integrity sha512-24e6ynE2H+OKt4kqsOvNd8kBpV65zoxbA4BVsEOB3ARVWQki/DHzaUoC5KuON/BiccDaCCTZBuOcfZs70kR8bQ==
1144 |
1145 | react-is@^18.0.0:
1146 | version "18.2.0"
1147 | resolved "https://registry.yarnpkg.com/react-is/-/react-is-18.2.0.tgz#199431eeaaa2e09f86427efbb4f1473edb47609b"
1148 | integrity sha512-xWGDIW6x921xtzPkhiULtthJHoJvBbF3q26fzloPCK0hsvxtPVelvftw3zjbHWSkR2km9Z+4uxbDDK/6Zw9B8w==
1149 |
1150 | react-modal-sheet@^1.10.1:
1151 | version "1.10.1"
1152 | resolved "https://registry.yarnpkg.com/react-modal-sheet/-/react-modal-sheet-1.10.1.tgz#969bd825b8ec8d57728bf901a07bf305b526e514"
1153 | integrity sha512-ZeFgkDL4fOKjDab1zWPjGBmL0FtA7hRtodZafT21X1uRRCP2rXJMNrETSyQKvffdXw/CaB2gYa/i0EWK8mMpuQ==
1154 | dependencies:
1155 | "@react-aria/utils" "3.14.2"
1156 |
1157 | react-redux@^8.0.5:
1158 | version "8.0.5"
1159 | resolved "https://registry.yarnpkg.com/react-redux/-/react-redux-8.0.5.tgz#e5fb8331993a019b8aaf2e167a93d10af469c7bd"
1160 | integrity sha512-Q2f6fCKxPFpkXt1qNRZdEDLlScsDWyrgSj0mliK59qU6W5gvBiKkdMEG2lJzhd1rCctf0hb6EtePPLZ2e0m1uw==
1161 | dependencies:
1162 | "@babel/runtime" "^7.12.1"
1163 | "@types/hoist-non-react-statics" "^3.3.1"
1164 | "@types/use-sync-external-store" "^0.0.3"
1165 | hoist-non-react-statics "^3.3.2"
1166 | react-is "^18.0.0"
1167 | use-sync-external-store "^1.0.0"
1168 |
1169 | react@18.2.0:
1170 | version "18.2.0"
1171 | resolved "https://registry.yarnpkg.com/react/-/react-18.2.0.tgz#555bd98592883255fa00de14f1151a917b5d77d5"
1172 | integrity sha512-/3IjMdb2L9QbBdWiW5e3P2/npwMBaU9mHCSCUzNln0ZCYbcfTsGbTJrU/kGemdH2IWmB2ioZ+zkxtmq6g09fGQ==
1173 | dependencies:
1174 | loose-envify "^1.1.0"
1175 |
1176 | read-cache@^1.0.0:
1177 | version "1.0.0"
1178 | resolved "https://registry.yarnpkg.com/read-cache/-/read-cache-1.0.0.tgz#e664ef31161166c9751cdbe8dbcf86b5fb58f774"
1179 | integrity sha512-Owdv/Ft7IjOgm/i0xvNDZ1LrRANRfew4b2prF3OWMQLxLfu3bS8FVhCsrSCMK4lR56Y9ya+AThoTpDCTxCmpRA==
1180 | dependencies:
1181 | pify "^2.3.0"
1182 |
1183 | readable-stream@^3.6.0:
1184 | version "3.6.2"
1185 | resolved "https://registry.yarnpkg.com/readable-stream/-/readable-stream-3.6.2.tgz#56a9b36ea965c00c5a93ef31eb111a0f11056967"
1186 | integrity sha512-9u/sniCrY3D5WdsERHzHE4G2YCXqoG5FTHUiCC4SIbr6XcLZBY05ya9EKjYek9O5xOAwjGq+1JdGBAS7Q9ScoA==
1187 | dependencies:
1188 | inherits "^2.0.3"
1189 | string_decoder "^1.1.1"
1190 | util-deprecate "^1.0.1"
1191 |
1192 | readdirp@~3.6.0:
1193 | version "3.6.0"
1194 | resolved "https://registry.yarnpkg.com/readdirp/-/readdirp-3.6.0.tgz#74a370bd857116e245b29cc97340cd431a02a6c7"
1195 | integrity sha512-hOS089on8RduqdbhvQ5Z37A0ESjsqz6qnRcffsMU3495FuTdqSm+7bhJ29JvIOsBDEEnan5DPu9t3To9VRlMzA==
1196 | dependencies:
1197 | picomatch "^2.2.1"
1198 |
1199 | redux-thunk@^2.4.2:
1200 | version "2.4.2"
1201 | resolved "https://registry.yarnpkg.com/redux-thunk/-/redux-thunk-2.4.2.tgz#b9d05d11994b99f7a91ea223e8b04cf0afa5ef3b"
1202 | integrity sha512-+P3TjtnP0k/FEjcBL5FZpoovtvrTNT/UXd4/sluaSyrURlSlhLSzEdfsTBW7WsKB6yPvgd7q/iZPICFjW4o57Q==
1203 |
1204 | redux@^4.2.0:
1205 | version "4.2.1"
1206 | resolved "https://registry.yarnpkg.com/redux/-/redux-4.2.1.tgz#c08f4306826c49b5e9dc901dee0452ea8fce6197"
1207 | integrity sha512-LAUYz4lc+Do8/g7aeRa8JkyDErK6ekstQaqWQrNRW//MY1TvCEpMtpTWvlQ+FPbWCx+Xixu/6SHt5N0HR+SB4w==
1208 | dependencies:
1209 | "@babel/runtime" "^7.9.2"
1210 |
1211 | regenerator-runtime@^0.13.11:
1212 | version "0.13.11"
1213 | resolved "https://registry.yarnpkg.com/regenerator-runtime/-/regenerator-runtime-0.13.11.tgz#f6dca3e7ceec20590d07ada785636a90cdca17f9"
1214 | integrity sha512-kY1AZVr2Ra+t+piVaJ4gxaFaReZVH40AKNo7UCX6W+dEwBo/2oZJzqfuN1qLq1oL45o56cPaTXELwrTh8Fpggg==
1215 |
1216 | reselect@^4.1.7:
1217 | version "4.1.7"
1218 | resolved "https://registry.yarnpkg.com/reselect/-/reselect-4.1.7.tgz#56480d9ff3d3188970ee2b76527bd94a95567a42"
1219 | integrity sha512-Zu1xbUt3/OPwsXL46hvOOoQrap2azE7ZQbokq61BQfiXvhewsKDwhMeZjTX9sX0nvw1t/U5Audyn1I9P/m9z0A==
1220 |
1221 | resolve@^1.1.7, resolve@^1.22.1:
1222 | version "1.22.1"
1223 | resolved "https://registry.yarnpkg.com/resolve/-/resolve-1.22.1.tgz#27cb2ebb53f91abb49470a928bba7558066ac177"
1224 | integrity sha512-nBpuuYuY5jFsli/JIs1oldw6fOQCBioohqWZg/2hiaOybXOft4lonv85uDOKXdf8rhyK159cxU5cDcK/NKk8zw==
1225 | dependencies:
1226 | is-core-module "^2.9.0"
1227 | path-parse "^1.0.7"
1228 | supports-preserve-symlinks-flag "^1.0.0"
1229 |
1230 | reusify@^1.0.4:
1231 | version "1.0.4"
1232 | resolved "https://registry.yarnpkg.com/reusify/-/reusify-1.0.4.tgz#90da382b1e126efc02146e90845a88db12925d76"
1233 | integrity sha512-U9nH88a3fc/ekCF1l0/UP1IosiuIjyTh7hBvXVMHYgVcfGvt897Xguj2UOLDeI5BG2m7/uwyaLVT6fbtCwTyzw==
1234 |
1235 | rimraf@^3.0.2:
1236 | version "3.0.2"
1237 | resolved "https://registry.yarnpkg.com/rimraf/-/rimraf-3.0.2.tgz#f1a5402ba6220ad52cc1282bac1ae3aa49fd061a"
1238 | integrity sha512-JZkJMZkAGFFPP2YqXZXPbMlMBgsxzE8ILs4lMIX/2o0L9UBw9O/Y3o6wFw/i9YLapcUJWwqbi3kdxIPdC62TIA==
1239 | dependencies:
1240 | glob "^7.1.3"
1241 |
1242 | run-parallel@^1.1.9:
1243 | version "1.2.0"
1244 | resolved "https://registry.yarnpkg.com/run-parallel/-/run-parallel-1.2.0.tgz#66d1368da7bdf921eb9d95bd1a9229e7f21a43ee"
1245 | integrity sha512-5l4VyZR86LZ/lDxZTR6jqL8AFE2S0IFLMP26AbjsLVADxHdhB/c0GUsH+y39UfCi3dzz8OlQuPmnaJOMoDHQBA==
1246 | dependencies:
1247 | queue-microtask "^1.2.2"
1248 |
1249 | safe-buffer@~5.2.0:
1250 | version "5.2.1"
1251 | resolved "https://registry.yarnpkg.com/safe-buffer/-/safe-buffer-5.2.1.tgz#1eaf9fa9bdb1fdd4ec75f58f9cdb4e6b7827eec6"
1252 | integrity sha512-rp3So07KcdmmKbGvgaNxQSJr7bGVSVk5S9Eq1F+ppbRo70+YeaDxkw5Dd8NPN+GD6bjnYm2VuPuCXmpuYvmCXQ==
1253 |
1254 | saslprep@^1.0.3:
1255 | version "1.0.3"
1256 | resolved "https://registry.yarnpkg.com/saslprep/-/saslprep-1.0.3.tgz#4c02f946b56cf54297e347ba1093e7acac4cf226"
1257 | integrity sha512-/MY/PEMbk2SuY5sScONwhUDsV2p77Znkb/q3nSVstq/yQzYJOH/Azh29p9oJLsl3LnQwSvZDKagDGBsBwSooag==
1258 | dependencies:
1259 | sparse-bitfield "^3.0.3"
1260 |
1261 | scheduler@^0.23.0:
1262 | version "0.23.0"
1263 | resolved "https://registry.yarnpkg.com/scheduler/-/scheduler-0.23.0.tgz#ba8041afc3d30eb206a487b6b384002e4e61fdfe"
1264 | integrity sha512-CtuThmgHNg7zIZWAXi3AsyIzA3n4xx7aNyjwC2VJldO2LMVDhFK+63xGqq6CsJH4rTAt6/M+N4GhZiDYPx9eUw==
1265 | dependencies:
1266 | loose-envify "^1.1.0"
1267 |
1268 | semver@^6.0.0:
1269 | version "6.3.0"
1270 | resolved "https://registry.yarnpkg.com/semver/-/semver-6.3.0.tgz#ee0a64c8af5e8ceea67687b133761e1becbd1d3d"
1271 | integrity sha512-b39TBaTSfV6yBrapU89p5fKekE2m/NwnDocOVruQFS1/veMgdzuPcnOM34M6CwxW8jH/lxEa5rBoDeUwu5HHTw==
1272 |
1273 | semver@^7.3.5:
1274 | version "7.3.8"
1275 | resolved "https://registry.yarnpkg.com/semver/-/semver-7.3.8.tgz#07a78feafb3f7b32347d725e33de7e2a2df67798"
1276 | integrity sha512-NB1ctGL5rlHrPJtFDVIVzTyQylMLu9N9VICA6HSFJo8MCGVTMW6gfpicwKmmK/dAjTOrqu5l63JJOpDSrAis3A==
1277 | dependencies:
1278 | lru-cache "^6.0.0"
1279 |
1280 | set-blocking@^2.0.0:
1281 | version "2.0.0"
1282 | resolved "https://registry.yarnpkg.com/set-blocking/-/set-blocking-2.0.0.tgz#045f9782d011ae9a6803ddd382b24392b3d890f7"
1283 | integrity sha512-KiKBS8AnWGEyLzofFfmvKwpdPzqiy16LvQfK3yv/fVH7Bj13/wl3JSR1J+rfgRE9q7xUJK4qvgS8raSOeLUehw==
1284 |
1285 | shortid@^2.2.16:
1286 | version "2.2.16"
1287 | resolved "https://registry.yarnpkg.com/shortid/-/shortid-2.2.16.tgz#b742b8f0cb96406fd391c76bfc18a67a57fe5608"
1288 | integrity sha512-Ugt+GIZqvGXCIItnsL+lvFJOiN7RYqlGy7QE41O3YC1xbNSeDGIRO7xg2JJXIAj1cAGnOeC1r7/T9pgrtQbv4g==
1289 | dependencies:
1290 | nanoid "^2.1.0"
1291 |
1292 | sift@16.0.1:
1293 | version "16.0.1"
1294 | resolved "https://registry.yarnpkg.com/sift/-/sift-16.0.1.tgz#e9c2ccc72191585008cf3e36fc447b2d2633a053"
1295 | integrity sha512-Wv6BjQ5zbhW7VFefWusVP33T/EM0vYikCaQ2qR8yULbsilAT8/wQaXvuQ3ptGLpoKx+lihJE3y2UTgKDyyNHZQ==
1296 |
1297 | signal-exit@^3.0.0:
1298 | version "3.0.7"
1299 | resolved "https://registry.yarnpkg.com/signal-exit/-/signal-exit-3.0.7.tgz#a9a1767f8af84155114eaabd73f99273c8f59ad9"
1300 | integrity sha512-wnD2ZE+l+SPC/uoS0vXeE9L1+0wuaMqKlfz9AMUo38JsyLSBWSFcHR1Rri62LZc12vLr1gb3jl7iwQhgwpAbGQ==
1301 |
1302 | smart-buffer@^4.2.0:
1303 | version "4.2.0"
1304 | resolved "https://registry.yarnpkg.com/smart-buffer/-/smart-buffer-4.2.0.tgz#6e1d71fa4f18c05f7d0ff216dd16a481d0e8d9ae"
1305 | integrity sha512-94hK0Hh8rPqQl2xXc3HsaBoOXKV20MToPkcXvwbISWLEs+64sBq5kFgn2kJDHb1Pry9yrP0dxrCI9RRci7RXKg==
1306 |
1307 | socks@^2.7.1:
1308 | version "2.7.1"
1309 | resolved "https://registry.yarnpkg.com/socks/-/socks-2.7.1.tgz#d8e651247178fde79c0663043e07240196857d55"
1310 | integrity sha512-7maUZy1N7uo6+WVEX6psASxtNlKaNVMlGQKkG/63nEDdLOWNbiUMoLK7X4uYoLhQstau72mLgfEWcXcwsaHbYQ==
1311 | dependencies:
1312 | ip "^2.0.0"
1313 | smart-buffer "^4.2.0"
1314 |
1315 | source-map-js@^1.0.2:
1316 | version "1.0.2"
1317 | resolved "https://registry.yarnpkg.com/source-map-js/-/source-map-js-1.0.2.tgz#adbc361d9c62df380125e7f161f71c826f1e490c"
1318 | integrity sha512-R0XvVJ9WusLiqTCEiGCmICCMplcCkIwwR11mOSD9CR5u+IXYdiseeEuXCVAjS54zqwkLcPNnmU4OeJ6tUrWhDw==
1319 |
1320 | sparse-bitfield@^3.0.3:
1321 | version "3.0.3"
1322 | resolved "https://registry.yarnpkg.com/sparse-bitfield/-/sparse-bitfield-3.0.3.tgz#ff4ae6e68656056ba4b3e792ab3334d38273ca11"
1323 | integrity sha512-kvzhi7vqKTfkh0PZU+2D2PIllw2ymqJKujUcyPMd9Y75Nv4nPbGJZXNhxsgdQab2BmlDct1YnfQCguEvHr7VsQ==
1324 | dependencies:
1325 | memory-pager "^1.0.2"
1326 |
1327 | "string-width@^1.0.2 || 2 || 3 || 4", string-width@^4.2.3:
1328 | version "4.2.3"
1329 | resolved "https://registry.yarnpkg.com/string-width/-/string-width-4.2.3.tgz#269c7117d27b05ad2e536830a8ec895ef9c6d010"
1330 | integrity sha512-wKyQRQpjJ0sIp62ErSZdGsjMJWsap5oRNihHhu6G7JVO/9jIB6UyevL+tXuOqrng8j/cxKTWyWUwvSTriiZz/g==
1331 | dependencies:
1332 | emoji-regex "^8.0.0"
1333 | is-fullwidth-code-point "^3.0.0"
1334 | strip-ansi "^6.0.1"
1335 |
1336 | string_decoder@^1.1.1:
1337 | version "1.3.0"
1338 | resolved "https://registry.yarnpkg.com/string_decoder/-/string_decoder-1.3.0.tgz#42f114594a46cf1a8e30b0a84f56c78c3edac21e"
1339 | integrity sha512-hkRX8U1WjJFd8LsDJ2yQ/wWWxaopEsABU1XfkM8A+j0+85JAGppt16cr1Whg6KIbb4okU6Mql6BOj+uup/wKeA==
1340 | dependencies:
1341 | safe-buffer "~5.2.0"
1342 |
1343 | strip-ansi@^6.0.1:
1344 | version "6.0.1"
1345 | resolved "https://registry.yarnpkg.com/strip-ansi/-/strip-ansi-6.0.1.tgz#9e26c63d30f53443e9489495b2105d37b67a85d9"
1346 | integrity sha512-Y38VPSHcqkFrCpFnQ9vuSXmquuv5oXOKpGeT6aGrr3o3Gc9AlVa6JBfUSOCnbxGGZF+/0ooI7KrPuUSztUdU5A==
1347 | dependencies:
1348 | ansi-regex "^5.0.1"
1349 |
1350 | styled-jsx@5.1.1:
1351 | version "5.1.1"
1352 | resolved "https://registry.yarnpkg.com/styled-jsx/-/styled-jsx-5.1.1.tgz#839a1c3aaacc4e735fed0781b8619ea5d0009d1f"
1353 | integrity sha512-pW7uC1l4mBZ8ugbiZrcIsiIvVx1UmTfw7UkC3Um2tmfUq9Bhk8IiyEIPl6F8agHgjzku6j0xQEZbfA5uSgSaCw==
1354 | dependencies:
1355 | client-only "0.0.1"
1356 |
1357 | supports-preserve-symlinks-flag@^1.0.0:
1358 | version "1.0.0"
1359 | resolved "https://registry.yarnpkg.com/supports-preserve-symlinks-flag/-/supports-preserve-symlinks-flag-1.0.0.tgz#6eda4bd344a3c94aea376d4cc31bc77311039e09"
1360 | integrity sha512-ot0WnXS9fgdkgIcePe6RHNk1WA8+muPa6cSjeR3V8K27q9BB1rTE3R1p7Hv0z1ZyAc8s6Vvv8DIyWf681MAt0w==
1361 |
1362 | tabbable@^6.1.1:
1363 | version "6.1.1"
1364 | resolved "https://registry.yarnpkg.com/tabbable/-/tabbable-6.1.1.tgz#40cfead5ed11be49043f04436ef924c8890186a0"
1365 | integrity sha512-4kl5w+nCB44EVRdO0g/UGoOp3vlwgycUVtkk/7DPyeLZUCuNFFKCFG6/t/DgHLrUPHjrZg6s5tNm+56Q2B0xyg==
1366 |
1367 | tailwindcss@^3.2.7:
1368 | version "3.2.7"
1369 | resolved "https://registry.yarnpkg.com/tailwindcss/-/tailwindcss-3.2.7.tgz#5936dd08c250b05180f0944500c01dce19188c07"
1370 | integrity sha512-B6DLqJzc21x7wntlH/GsZwEXTBttVSl1FtCzC8WP4oBc/NKef7kaax5jeihkkCEWc831/5NDJ9gRNDK6NEioQQ==
1371 | dependencies:
1372 | arg "^5.0.2"
1373 | chokidar "^3.5.3"
1374 | color-name "^1.1.4"
1375 | detective "^5.2.1"
1376 | didyoumean "^1.2.2"
1377 | dlv "^1.1.3"
1378 | fast-glob "^3.2.12"
1379 | glob-parent "^6.0.2"
1380 | is-glob "^4.0.3"
1381 | lilconfig "^2.0.6"
1382 | micromatch "^4.0.5"
1383 | normalize-path "^3.0.0"
1384 | object-hash "^3.0.0"
1385 | picocolors "^1.0.0"
1386 | postcss "^8.0.9"
1387 | postcss-import "^14.1.0"
1388 | postcss-js "^4.0.0"
1389 | postcss-load-config "^3.1.4"
1390 | postcss-nested "6.0.0"
1391 | postcss-selector-parser "^6.0.11"
1392 | postcss-value-parser "^4.2.0"
1393 | quick-lru "^5.1.1"
1394 | resolve "^1.22.1"
1395 |
1396 | tar@^6.1.11:
1397 | version "6.1.13"
1398 | resolved "https://registry.yarnpkg.com/tar/-/tar-6.1.13.tgz#46e22529000f612180601a6fe0680e7da508847b"
1399 | integrity sha512-jdIBIN6LTIe2jqzay/2vtYLlBHa3JF42ot3h1dW8Q0PaAG4v8rm0cvpVePtau5C6OKXGGcgO9q2AMNSWxiLqKw==
1400 | dependencies:
1401 | chownr "^2.0.0"
1402 | fs-minipass "^2.0.0"
1403 | minipass "^4.0.0"
1404 | minizlib "^2.1.1"
1405 | mkdirp "^1.0.3"
1406 | yallist "^4.0.0"
1407 |
1408 | to-regex-range@^5.0.1:
1409 | version "5.0.1"
1410 | resolved "https://registry.yarnpkg.com/to-regex-range/-/to-regex-range-5.0.1.tgz#1648c44aae7c8d988a326018ed72f5b4dd0392e4"
1411 | integrity sha512-65P7iz6X5yEr1cwcgvQxbbIw7Uk3gOy5dIdtZ4rDveLqhrdJP+Li/Hx6tyK0NEb+2GCyneCMJiGqrADCSNk8sQ==
1412 | dependencies:
1413 | is-number "^7.0.0"
1414 |
1415 | tr46@^3.0.0:
1416 | version "3.0.0"
1417 | resolved "https://registry.yarnpkg.com/tr46/-/tr46-3.0.0.tgz#555c4e297a950617e8eeddef633c87d4d9d6cbf9"
1418 | integrity sha512-l7FvfAHlcmulp8kr+flpQZmVwtu7nfRV7NZujtN0OqES8EL4O4e0qqzL0DC5gAvx/ZC/9lk6rhcUwYvkBnBnYA==
1419 | dependencies:
1420 | punycode "^2.1.1"
1421 |
1422 | tr46@~0.0.3:
1423 | version "0.0.3"
1424 | resolved "https://registry.yarnpkg.com/tr46/-/tr46-0.0.3.tgz#8184fd347dac9cdc185992f3a6622e14b9d9ab6a"
1425 | integrity sha512-N3WMsuqV66lT30CrXNbEjx4GEwlow3v6rr4mCcv6prnfwhS01rkgyFdjPNBYd9br7LpXV1+Emh01fHnq2Gdgrw==
1426 |
1427 | tslib@^2.4.0:
1428 | version "2.5.0"
1429 | resolved "https://registry.yarnpkg.com/tslib/-/tslib-2.5.0.tgz#42bfed86f5787aeb41d031866c8f402429e0fddf"
1430 | integrity sha512-336iVw3rtn2BUK7ORdIAHTyxHGRIHVReokCR3XjbckJMK7ms8FysBfhLR8IXnAgy7T0PTPNBWKiH514FOW/WSg==
1431 |
1432 | update-browserslist-db@^1.0.10:
1433 | version "1.0.10"
1434 | resolved "https://registry.yarnpkg.com/update-browserslist-db/-/update-browserslist-db-1.0.10.tgz#0f54b876545726f17d00cd9a2561e6dade943ff3"
1435 | integrity sha512-OztqDenkfFkbSG+tRxBeAnCVPckDBcvibKd35yDONx6OU8N7sqgwc7rCbkJ/WcYtVRZ4ba68d6byhC21GFh7sQ==
1436 | dependencies:
1437 | escalade "^3.1.1"
1438 | picocolors "^1.0.0"
1439 |
1440 | use-sync-external-store@^1.0.0:
1441 | version "1.2.0"
1442 | resolved "https://registry.yarnpkg.com/use-sync-external-store/-/use-sync-external-store-1.2.0.tgz#7dbefd6ef3fe4e767a0cf5d7287aacfb5846928a"
1443 | integrity sha512-eEgnFxGQ1Ife9bzYs6VLi8/4X6CObHMw9Qr9tPY43iKwsPw8xE8+EFsf/2cFZ5S3esXgpWgtSCtLNS41F+sKPA==
1444 |
1445 | util-deprecate@^1.0.1, util-deprecate@^1.0.2:
1446 | version "1.0.2"
1447 | resolved "https://registry.yarnpkg.com/util-deprecate/-/util-deprecate-1.0.2.tgz#450d4dc9fa70de732762fbd2d4a28981419a0ccf"
1448 | integrity sha512-EPD5q1uXyFxJpCrLnCc1nHnq3gOa6DZBocAIiI2TaSCA7VCJ1UJDMagCzIkXNsUYfD1daK//LTEQ8xiIbrHtcw==
1449 |
1450 | validator@^13.9.0:
1451 | version "13.9.0"
1452 | resolved "https://registry.yarnpkg.com/validator/-/validator-13.9.0.tgz#33e7b85b604f3bbce9bb1a05d5c3e22e1c2ff855"
1453 | integrity sha512-B+dGG8U3fdtM0/aNK4/X8CXq/EcxU2WPrPEkJGslb47qyHsxmbggTWK0yEA4qnYVNF+nxNlN88o14hIcPmSIEA==
1454 |
1455 | webidl-conversions@^3.0.0:
1456 | version "3.0.1"
1457 | resolved "https://registry.yarnpkg.com/webidl-conversions/-/webidl-conversions-3.0.1.tgz#24534275e2a7bc6be7bc86611cc16ae0a5654871"
1458 | integrity sha512-2JAn3z8AR6rjK8Sm8orRC0h/bcl/DqL7tRPdGZ4I1CjdF+EaMLmYxBHyXuKL849eucPFhvBoxMsflfOb8kxaeQ==
1459 |
1460 | webidl-conversions@^7.0.0:
1461 | version "7.0.0"
1462 | resolved "https://registry.yarnpkg.com/webidl-conversions/-/webidl-conversions-7.0.0.tgz#256b4e1882be7debbf01d05f0aa2039778ea080a"
1463 | integrity sha512-VwddBukDzu71offAQR975unBIGqfKZpM+8ZX6ySk8nYhVoo5CYaZyzt3YBvYtRtO+aoGlqxPg/B87NGVZ/fu6g==
1464 |
1465 | whatwg-url@^11.0.0:
1466 | version "11.0.0"
1467 | resolved "https://registry.yarnpkg.com/whatwg-url/-/whatwg-url-11.0.0.tgz#0a849eebb5faf2119b901bb76fd795c2848d4018"
1468 | integrity sha512-RKT8HExMpoYx4igMiVMY83lN6UeITKJlBQ+vR/8ZJ8OCdSiN3RwCq+9gH0+Xzj0+5IrM6i4j/6LuvzbZIQgEcQ==
1469 | dependencies:
1470 | tr46 "^3.0.0"
1471 | webidl-conversions "^7.0.0"
1472 |
1473 | whatwg-url@^5.0.0:
1474 | version "5.0.0"
1475 | resolved "https://registry.yarnpkg.com/whatwg-url/-/whatwg-url-5.0.0.tgz#966454e8765462e37644d3626f6742ce8b70965d"
1476 | integrity sha512-saE57nupxk6v3HY35+jzBwYa0rKSy0XR8JSxZPwgLr7ys0IBzhGviA1/TUGJLmSVqs8pb9AnvICXEuOHLprYTw==
1477 | dependencies:
1478 | tr46 "~0.0.3"
1479 | webidl-conversions "^3.0.0"
1480 |
1481 | wide-align@^1.1.2:
1482 | version "1.1.5"
1483 | resolved "https://registry.yarnpkg.com/wide-align/-/wide-align-1.1.5.tgz#df1d4c206854369ecf3c9a4898f1b23fbd9d15d3"
1484 | integrity sha512-eDMORYaPNZ4sQIuuYPDHdQvf4gyCF9rEEV/yPxGfwPkRodwEgiMUUXTx/dex+Me0wxx53S+NgUHaP7y3MGlDmg==
1485 | dependencies:
1486 | string-width "^1.0.2 || 2 || 3 || 4"
1487 |
1488 | wrappy@1:
1489 | version "1.0.2"
1490 | resolved "https://registry.yarnpkg.com/wrappy/-/wrappy-1.0.2.tgz#b5243d8f3ec1aa35f1364605bc0d1036e30ab69f"
1491 | integrity sha512-l4Sp/DRseor9wL6EvV2+TuQn63dMkPjZ/sp9XkghTEbV9KlPS1xUsZ3u7/IQO4wxtcFB4bgpQPRcR3QCvezPcQ==
1492 |
1493 | xtend@^4.0.2:
1494 | version "4.0.2"
1495 | resolved "https://registry.yarnpkg.com/xtend/-/xtend-4.0.2.tgz#bb72779f5fa465186b1f438f674fa347fdb5db54"
1496 | integrity sha512-LKYU1iAXJXUgAXn9URjiu+MWhyUXHsvfp7mcuYm9dSUKK0/CjtrUwFAxD82/mCWbtLsGjFIad0wIsod4zrTAEQ==
1497 |
1498 | yallist@^4.0.0:
1499 | version "4.0.0"
1500 | resolved "https://registry.yarnpkg.com/yallist/-/yallist-4.0.0.tgz#9bb92790d9c0effec63be73519e11a35019a3a72"
1501 | integrity sha512-3wdGidZyq5PB084XLES5TpOSRA3wjXAlIWMhum2kRcv/41Sn2emQ0dycQW4uZXLejwKvg6EsvbdlVL+FYEct7A==
1502 |
1503 | yaml@^1.10.2:
1504 | version "1.10.2"
1505 | resolved "https://registry.yarnpkg.com/yaml/-/yaml-1.10.2.tgz#2301c5ffbf12b467de8da2333a459e29e7920e4b"
1506 | integrity sha512-r3vXyErRCYJ7wg28yvBY5VSoAF8ZvlcW9/BwUzEtUsjvX/DKs24dIkuwjtuprwJJHsbyUbLApepYTR1BN4uHrg==
1507 |
--------------------------------------------------------------------------------