├── .gitignore ├── .npmignore ├── LICENSE ├── README.md ├── chatbox ├── .env.local.example ├── components │ ├── admin │ │ ├── index.tsx │ │ └── store.tsx │ ├── api.ts │ ├── shared │ │ ├── chat.tsx │ │ └── form.tsx │ ├── style.tsx │ └── widget │ │ ├── components │ │ ├── email.tsx │ │ ├── header.tsx │ │ ├── icon-close.tsx │ │ ├── icon-default.tsx │ │ ├── modal.tsx │ │ └── trigger-button.tsx │ │ ├── index.tsx │ │ └── store.tsx ├── next-env.d.ts ├── package.json ├── pages │ ├── _app.tsx │ ├── api │ │ └── chatbox │ │ │ └── [...chatbox].ts │ ├── chat │ │ └── [id].tsx │ └── index.tsx ├── postcss.config.js ├── styles │ └── chatbox.css ├── tsconfig.json ├── tsconfig.module.json ├── tsup.config.ts └── yarn.lock └── example ├── .env.local.example ├── .gitignore ├── next-env.d.ts ├── next.config.js ├── package.json ├── pages ├── _app.tsx ├── api │ └── chatbox │ │ └── [...chatbox].ts ├── chat │ └── [id].tsx └── index.tsx ├── postcss.config.js ├── public └── favicon.ico ├── styles └── globals.css ├── tailwind.config.js ├── tsconfig.json └── 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 | dist 18 | 19 | # misc 20 | .DS_Store 21 | *.pem 22 | .idea/ 23 | 24 | # debug 25 | npm-debug.log* 26 | yarn-debug.log* 27 | yarn-error.log* 28 | .pnpm-debug.log* 29 | 30 | # local env files 31 | .env.local 32 | 33 | # vercel 34 | .vercel 35 | -------------------------------------------------------------------------------- /.npmignore: -------------------------------------------------------------------------------- 1 | node_modules/ 2 | example/ 3 | src/ 4 | .idea/ 5 | .prettierignore 6 | *-lock.yaml 7 | *-lock.json 8 | vite* 9 | tsconfig.json 10 | index.html 11 | -------------------------------------------------------------------------------- /LICENSE: -------------------------------------------------------------------------------- 1 | MIT License 2 | 3 | Copyright (c) 2022 burak-upstash 4 | 5 | Permission is hereby granted, free of charge, to any person obtaining a copy 6 | of this software and associated documentation files (the "Software"), to deal 7 | in the Software without restriction, including without limitation the rights 8 | to use, copy, modify, merge, publish, distribute, sublicense, and/or sell 9 | copies of the Software, and to permit persons to whom the Software is 10 | furnished to do so, subject to the following conditions: 11 | 12 | The above copyright notice and this permission notice shall be included in all 13 | copies or substantial portions of the Software. 14 | 15 | THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR 16 | IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, 17 | FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE 18 | AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER 19 | LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, 20 | OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE 21 | SOFTWARE. 22 | -------------------------------------------------------------------------------- /README.md: -------------------------------------------------------------------------------- 1 | # ChatBox Widget for Next.js Apps 2 | 3 | > [!NOTE] 4 | > **This project is a Community Project.** 5 | > 6 | > The project is maintained and supported by the community. Upstash may contribute but does not officially support or assume responsibility for it. 7 | 8 | Create a ChatBox Widget (like Intercom live chat) for your Next.js app. Nothing to maintain, it is completely serverless. When your website's visitor starts a session, the chat link is sent to your Slack channel. 9 | 10 | Check out the [the demo](https://upstash-chatbox.vercel.app). 11 | 12 | 13 | Here the steps: 14 | 15 | ### 1. Create Upstash Redis 16 | 17 | We will use [Upstash Redis](https://upstash.com) to keep the data as well as messaging (Redis pub/sub). 18 | 19 | Create a free Redis database at [Upstash Console](https://console.upstash.com) 20 | 21 | Copy the `.env.local.example` file to `.env.local` (which will be ignored by 22 | Git): 23 | 24 | ```bash 25 | cp .env.local.example .env.local 26 | ``` 27 | 28 | - `UPSTASH_REDIS_REST_URL` and `UPSTASH_REDIS_REST_TOKEN` can be found at the 29 | database details page in Upstash Console. 30 | - `SLACK_WEBHOOK_URL` can be found at the Slack integration page 31 | in https://api.slack.com/messaging/webhooks 32 | 33 | ### 2. Install Package 34 | 35 | ```bash 36 | yarn add @upstash/chatbox 37 | ``` 38 | 39 | ### 3. Import CSS and Widget 40 | 41 | ```jsx 42 | // pages/_app.js 43 | 44 | import "@upstash/chatbox/style.css"; 45 | import dynamic from "next/dynamic"; 46 | 47 | const ChatBoxWidget = dynamic({ 48 | loader: () => import("@upstash/chatbox/chatbox"), 49 | ssr: false, 50 | }); 51 | 52 | export default function MyApp({ Component, pageProps }) { 53 | return ( 54 | <> 55 | 56 | 57 | 58 | ); 59 | } 60 | ``` 61 | 62 | The options can be passed as React props 63 | 64 | | key | type | default | 65 | | ---------------- | -------------------- | ---------------------------------------- | 66 | | `themeColor?` | `string` | #2d00c6 | 67 | | `textColor?` | `string` | #fff | 68 | | `title?` | `string` | Hi 👋 | 69 | | `description?` | `string` | Ask us anything, or share your feedback. | 70 | | `showOnInitial?` | `boolean` | false | 71 | | `customIcon?` | `React.ReactElement` | | 72 | 73 | ### 4. Admin Dashboard 74 | 75 | ```js 76 | // pages/chat/[id].js 77 | 78 | import dynamic from "next/dynamic"; 79 | 80 | const ChatBoxAdmin = dynamic({ 81 | loader: () => import("@upstash/chatbox/admin"), 82 | ssr: false, 83 | }); 84 | 85 | export default function () { 86 | return ; 87 | } 88 | ``` 89 | 90 | ### 5. Create API 91 | 92 | ```js 93 | // pages/api/chatbox/[...chatbox].js 94 | 95 | import createChatBoxAPI from "@upstash/chatbox/api"; 96 | 97 | const ChatBoxAPI = createChatBoxAPI({ 98 | webhooks: [process.env.SLACK_WEBHOOK_URL], 99 | }); 100 | 101 | export default ChatBoxAPI; 102 | ``` 103 | 104 | ### Support 105 | Use [Upstash Discord](https://discord.gg/w9SenAtbme) channel to get support. 106 | 107 | -------------------------------------------------------------------------------- /chatbox/.env.local.example: -------------------------------------------------------------------------------- 1 | UPSTASH_REDIS_REST_URL= 2 | UPSTASH_REDIS_REST_TOKEN= 3 | SLACK_WEBHOOK_URL= 4 | -------------------------------------------------------------------------------- /chatbox/components/admin/index.tsx: -------------------------------------------------------------------------------- 1 | import React, { useContext } from "react"; 2 | import { useRouter } from "next/router"; 3 | import FeedbackContext, { ChatBoxProvider } from "./store"; 4 | import Chat from "../shared/chat"; 5 | import Form from "../shared/form"; 6 | 7 | function ChatBoxAdmin() { 8 | const { id, isChatTrigger, chat, message, setMessage, onSendMessage } = 9 | useContext(FeedbackContext); 10 | 11 | return ( 12 |
13 |
14 |
15 |
16 |

Hi, chat id: {id}:

17 |
18 | 19 |
24 |
25 |
26 |
27 | ); 28 | } 29 | 30 | export interface IChatBoxAdmin {} 31 | 32 | export default function ChatBoxAdminRoot(props: IChatBoxAdmin) { 33 | const router = useRouter(); 34 | const { id } = router.query; 35 | 36 | return ( 37 | 38 | 39 | 40 | ); 41 | } 42 | -------------------------------------------------------------------------------- /chatbox/components/admin/store.tsx: -------------------------------------------------------------------------------- 1 | import React, { createContext, useEffect, useState } from "react"; 2 | 3 | interface IChatBoxContext { 4 | id: string; 5 | isChatTrigger: number; 6 | chat: string[]; 7 | message: string; 8 | setMessage: (message: string) => void; 9 | onSendMessage: () => void; 10 | } 11 | 12 | const defaultState = {} as IChatBoxContext; 13 | 14 | const ChatBoxContext = createContext(defaultState); 15 | 16 | export function ChatBoxProvider({ 17 | children, 18 | id, 19 | }: { 20 | children: any; 21 | id: string; 22 | }) { 23 | const [isChatTrigger, setIsChatTrigger] = useState(performance.now()); 24 | const [chat, setChat] = useState([]); 25 | const [message, setMessage] = useState(""); 26 | 27 | async function fetchList() { 28 | const response = await fetch(`/api/chatbox/chat/${id}`, { method: "GET" }); 29 | const data = await response.json(); 30 | setChat(data.chatData); 31 | } 32 | 33 | const onSendMessage = async () => { 34 | let replyText = "o:" + message; 35 | 36 | await fetch(`/api/chatbox/chat/${id}`, { 37 | method: "POST", 38 | headers: { 39 | "Content-Type": "application/json", 40 | }, 41 | body: JSON.stringify({ text: replyText }), 42 | }); 43 | 44 | await fetchList(); 45 | setIsChatTrigger(performance.now()); 46 | setMessage(""); 47 | }; 48 | 49 | useEffect(() => { 50 | if (!id) return; 51 | 52 | fetchList(); 53 | setTimeout(() => { 54 | setIsChatTrigger(performance.now()); 55 | }, 100); 56 | 57 | const interval = setInterval(() => { 58 | fetchList(); 59 | }, 3000); 60 | 61 | return () => clearInterval(interval); 62 | }, [id]); 63 | 64 | return ( 65 | 75 | {children} 76 | 77 | ); 78 | } 79 | 80 | export default ChatBoxContext; 81 | -------------------------------------------------------------------------------- /chatbox/components/api.ts: -------------------------------------------------------------------------------- 1 | import { Redis } from "@upstash/redis"; 2 | import { NextApiRequest, NextApiResponse } from "next"; 3 | 4 | export default function createChatBoxAPI(options: { webhooks: string[] }) { 5 | const redis = Redis.fromEnv(); 6 | 7 | return async function (req: NextApiRequest, res: NextApiResponse) { 8 | const method = req.method; 9 | 10 | const api = req.query.chatbox[0]; 11 | const chatId = req.query.chatbox[1]; 12 | const host = `http://${req.headers.host}`; 13 | 14 | try { 15 | if (!chatId) throw new Error("Missing chatId"); 16 | 17 | switch (api) { 18 | case "chat": 19 | switch (method) { 20 | // GET: /chat/[id] 21 | case "GET": 22 | const chatData = await redis.lrange(chatId, 0, 2 ** 32 - 1); 23 | return res.status(200).json({ chatData }); 24 | 25 | // POST: /chat/[id] 26 | case "POST": 27 | const chatText = req.body.text; 28 | 29 | const response = await redis.rpush(chatId, chatText); 30 | return res.status(200).json({ response }); 31 | 32 | default: 33 | throw new Error("Method not allowed"); 34 | } 35 | 36 | case "slack-email": 37 | // POST: /slack-email/[id] 38 | if (method !== "POST") throw new Error("Method not allowed"); 39 | 40 | const slackEmail = req.body.email; 41 | if (!slackEmail) throw new Error("Missing email"); 42 | 43 | const notifyEmailText = `A user left their email address ${slackEmail} with chat id: ${host}/chat/${chatId}`; 44 | 45 | const requestsEmail = options.webhooks.map(async (webhook) => { 46 | return fetch(webhook, { 47 | method: "POST", 48 | body: JSON.stringify({ text: notifyEmailText }), 49 | headers: { 50 | "Content-Type": "application/json", 51 | }, 52 | }); 53 | }); 54 | 55 | await Promise.all(requestsEmail); 56 | 57 | return res.status(200).json({ response: "ok" }); 58 | 59 | case "slack": 60 | // POST: /slack/[id] 61 | if (method !== "POST") throw new Error("Method not allowed"); 62 | 63 | let notifyText = `New chat with id: ${host}/chat/${chatId}`; 64 | 65 | if (req.body) { 66 | notifyText = `Old chat with id: ${host}/chat/${chatId} has a new message!`; 67 | } 68 | 69 | const requestsNotify = options.webhooks.map(async (webhook) => { 70 | return fetch(webhook, { 71 | method: "POST", 72 | body: JSON.stringify({ text: notifyText }), 73 | headers: { 74 | "Content-Type": "application/json", 75 | }, 76 | }); 77 | }); 78 | 79 | await Promise.all(requestsNotify); 80 | 81 | return res.status(200).json({ response: "ok" }); 82 | 83 | default: 84 | throw new Error("Method not allowed"); 85 | } 86 | } catch (err) { 87 | let message = err; 88 | 89 | console.log(err); 90 | 91 | if (err instanceof TypeError) { 92 | message = err.message; 93 | } 94 | 95 | return res.status(500).json({ message }); 96 | } 97 | }; 98 | } 99 | -------------------------------------------------------------------------------- /chatbox/components/shared/chat.tsx: -------------------------------------------------------------------------------- 1 | import React, { useEffect, useRef } from "react"; 2 | import Email from "../widget/components/email"; 3 | 4 | interface IChatBoxAdminChat { 5 | chat: string[]; 6 | emailForm?: boolean; 7 | isChatTrigger: number; 8 | } 9 | 10 | export default function Chat({ 11 | isChatTrigger, 12 | chat, 13 | emailForm = false, 14 | }: IChatBoxAdminChat) { 15 | const chatContainerRef = useRef(null); 16 | 17 | useEffect(() => { 18 | if (!chatContainerRef.current) return; 19 | chatContainerRef.current.scrollTo({ 20 | behavior: "smooth", 21 | top: 99999, 22 | }); 23 | }, [isChatTrigger]); 24 | 25 | function parseString(str: string) { 26 | let sender = str.substring(0, 1); 27 | let message = str.substring(2); 28 | return [sender, message]; 29 | } 30 | 31 | const Messages = chat.map((item, index) => { 32 | const parsedStr = parseString(item); 33 | const isIn = parsedStr[0] === "i"; 34 | const classNames = isIn 35 | ? "chatbox-chat-message-in" 36 | : "chatbox-chat-message-out"; 37 | 38 | const Message = () => ( 39 |
40 | {parsedStr[1]} 41 |
42 | ); 43 | 44 | if (emailForm && index === 0) { 45 | return ( 46 |
47 | 48 | 49 |
50 | ); 51 | } 52 | 53 | return ( 54 |
55 | 56 |
57 | ); 58 | }); 59 | 60 | return ( 61 |
62 | {Messages} 63 |
64 | ); 65 | } 66 | -------------------------------------------------------------------------------- /chatbox/components/shared/form.tsx: -------------------------------------------------------------------------------- 1 | import React from "react"; 2 | import TextareaAutosize from "react-textarea-autosize"; 3 | 4 | interface IChatBoxAdminForm { 5 | message: string; 6 | setMessage: (message: string) => void; 7 | onSendMessage: () => void; 8 | } 9 | 10 | export default function Form({ 11 | message, 12 | setMessage, 13 | onSendMessage, 14 | }: IChatBoxAdminForm) { 15 | return ( 16 | { 19 | e.preventDefault(); 20 | onSendMessage(); 21 | }} 22 | > 23 | { 32 | setMessage( 33 | event.target.value 34 | .split("\n") 35 | .filter((v) => v) 36 | .join(" ") 37 | ); 38 | }} 39 | onKeyUp={(event) => { 40 | if (event.key === "Enter") { 41 | event.preventDefault(); 42 | onSendMessage(); 43 | } 44 | }} 45 | /> 46 | 47 |
48 | 65 |
66 | 67 | ); 68 | } 69 | -------------------------------------------------------------------------------- /chatbox/components/style.tsx: -------------------------------------------------------------------------------- 1 | import "../styles/chatbox.css"; 2 | -------------------------------------------------------------------------------- /chatbox/components/widget/components/email.tsx: -------------------------------------------------------------------------------- 1 | import React, { useContext } from "react"; 2 | import FeedbackContext from "../store"; 3 | 4 | export default function Email() { 5 | const { isEmailSent, email, setEmail, onSendEmail } = 6 | useContext(FeedbackContext); 7 | 8 | if (isEmailSent) 9 | return ( 10 |
11 | Thank you for your email. We'll be in touch as soon as possible. 12 |
13 | ); 14 | 15 | return ( 16 |
{ 19 | event.preventDefault(); 20 | onSendEmail(); 21 | }} 22 | > 23 |

24 | Don’t have time to wait for a response? Leave your email and we’ll be in 25 | touch as soon as possible. 26 |

27 | 28 | setEmail(event.target.value)} 33 | /> 34 |
35 | ); 36 | } 37 | -------------------------------------------------------------------------------- /chatbox/components/widget/components/header.tsx: -------------------------------------------------------------------------------- 1 | import React, { useContext } from "react"; 2 | import FeedbackContext from "../store"; 3 | 4 | export default function Header() { 5 | const { title, description } = useContext(FeedbackContext); 6 | 7 | return ( 8 |
9 |

{title ? title : "Hi 👋"}

10 |

11 | {description ? description : "Ask us anything, or share your feedback."} 12 |

13 |
14 | ); 15 | } 16 | -------------------------------------------------------------------------------- /chatbox/components/widget/components/icon-close.tsx: -------------------------------------------------------------------------------- 1 | import React from "react"; 2 | 3 | export default function IconClose({ size = 30, ...props }) { 4 | return ( 5 | 17 | 18 | 19 | 20 | 21 | ); 22 | } 23 | -------------------------------------------------------------------------------- /chatbox/components/widget/components/icon-default.tsx: -------------------------------------------------------------------------------- 1 | import React from "react"; 2 | 3 | export default function IconDefault({ size = 30, ...props }) { 4 | return ( 5 | 17 | 18 | 19 | 20 | 21 | 22 | 23 | ); 24 | } 25 | -------------------------------------------------------------------------------- /chatbox/components/widget/components/modal.tsx: -------------------------------------------------------------------------------- 1 | import React, { useContext } from "react"; 2 | import FeedbackContext from "../store"; 3 | import Form from "../../shared/form"; 4 | import Chat from "../../shared/chat"; 5 | import Header from "./header"; 6 | 7 | export default function Modal() { 8 | const { 9 | isModalShow, 10 | isChatTrigger, 11 | chat, 12 | message, 13 | setMessage, 14 | onSendMessage, 15 | onSendEmail, 16 | } = useContext(FeedbackContext); 17 | 18 | if (!isModalShow) return null; 19 | 20 | return ( 21 |
22 |
23 | 24 | 25 |
30 |
31 | ); 32 | } 33 | -------------------------------------------------------------------------------- /chatbox/components/widget/components/trigger-button.tsx: -------------------------------------------------------------------------------- 1 | import React, { useContext } from "react"; 2 | import FeedbackContext from "../store"; 3 | import IconDefault from "./icon-default"; 4 | import IconClose from "./icon-close"; 5 | 6 | export default function TriggerButton({ 7 | children, 8 | }: { 9 | children?: React.ReactElement; 10 | }) { 11 | const { isModalShow, onModalShow } = useContext(FeedbackContext); 12 | 13 | return ( 14 | 29 | ); 30 | } 31 | -------------------------------------------------------------------------------- /chatbox/components/widget/index.tsx: -------------------------------------------------------------------------------- 1 | import React from "react"; 2 | import Modal from "./components/modal"; 3 | import TriggerButton from "./components/trigger-button"; 4 | import { ChatBoxProvider } from "./store"; 5 | 6 | // import "../styles.css"; 7 | 8 | export interface IChatBoxWidget { 9 | themeColor?: string; 10 | textColor?: string; 11 | autoMessage?: string; 12 | title?: string; 13 | description?: string; 14 | showOnInitial?: boolean; 15 | customIcon?: React.ReactElement; 16 | } 17 | 18 | export default function ChatBox({ 19 | themeColor = "#2d00c6", 20 | textColor = "#fff", 21 | autoMessage, 22 | title, 23 | description, 24 | showOnInitial = false, 25 | customIcon, 26 | }: IChatBoxWidget) { 27 | return ( 28 | 36 |
44 |
45 | {customIcon} 46 | 47 |
48 |
49 |
50 | ); 51 | } 52 | -------------------------------------------------------------------------------- /chatbox/components/widget/store.tsx: -------------------------------------------------------------------------------- 1 | import React, { createContext, useEffect, useState } from "react"; 2 | import { nanoid } from "nanoid"; 3 | 4 | function getWithExpiry(key: string) { 5 | const itemStr = localStorage.getItem(key); 6 | 7 | if (!itemStr) return null; 8 | 9 | const item = JSON.parse(itemStr); 10 | const now = new Date(); 11 | 12 | if (now.getTime() > item.expiry) { 13 | localStorage.removeItem(key); 14 | window.location.reload(); 15 | return null; 16 | } 17 | 18 | return item.value; 19 | } 20 | 21 | // default is 24 hours 22 | function setWithExpiry(key: string, value: string, ttl = 24 * 60 * 60 * 1000) { 23 | const now = new Date(); 24 | 25 | const item = { 26 | value: value, 27 | expiry: now.getTime() + ttl, 28 | }; 29 | 30 | localStorage.setItem(key, JSON.stringify(item)); 31 | } 32 | 33 | interface IChatBoxContext { 34 | themeColor?: string; 35 | textColor?: string; 36 | 37 | autoMessage?: string; 38 | title?: string; 39 | description?: string; 40 | 41 | showOnInitial: boolean; 42 | 43 | isModalShow: boolean; 44 | onModalShow: (state: boolean) => void; 45 | 46 | isChatTrigger: number; 47 | chat: string[]; 48 | message: string; 49 | setMessage: (message: string) => void; 50 | onSendMessage: () => void; 51 | 52 | isEmailSent: boolean; 53 | email: string; 54 | setEmail: (email: string) => void; 55 | onSendEmail: () => void; 56 | } 57 | 58 | const defaultState = { 59 | showOnInitial: false, 60 | } as IChatBoxContext; 61 | 62 | const ChatBoxContext = createContext(defaultState); 63 | 64 | export function ChatBoxProvider({ 65 | themeColor, 66 | textColor, 67 | autoMessage, 68 | title, 69 | description, 70 | showOnInitial, 71 | children, 72 | }: { 73 | themeColor?: string; 74 | textColor?: string; 75 | autoMessage?: string; 76 | title?: string; 77 | description?: string; 78 | showOnInitial: boolean; 79 | children: any; 80 | }) { 81 | let initialID = "visitor"; 82 | const localID = getWithExpiry("chatbox_id"); 83 | 84 | const [UID, setUID] = useState(localID ? localID : initialID); 85 | const [chatInitiated, setChatInitiated] = useState(localID ? true : false); 86 | 87 | const [isEmailSent, setIsEmailSent] = useState(getWithExpiry("emailSent")); 88 | 89 | const [hasBeen5Minutes, setHasBeen5Minutes] = useState( 90 | getWithExpiry("hasBeen5Minutes") 91 | ); 92 | 93 | const [isChatTrigger, setIsChatTrigger] = useState(performance.now()); 94 | const [chat, setChat] = useState([]); 95 | const [message, setMessage] = useState(""); 96 | const [email, setEmail] = useState(""); 97 | 98 | const [isModalShow, setIsModalShow] = useState(showOnInitial); 99 | 100 | async function fetchList(id = UID) { 101 | const response = await fetch(`/api/chatbox/chat/${id}`, { method: "GET" }); 102 | const data = await response.json(); 103 | setChat(data.chatData); 104 | } 105 | 106 | const onSendMessage = async () => { 107 | try { 108 | let id = UID; 109 | let chatInitiatedTemp = chatInitiated; 110 | 111 | if (!chatInitiated) { 112 | id = nanoid(10); 113 | 114 | const initResponse = await fetch(`/api/chatbox/slack/${id}`, { 115 | method: "POST", 116 | }); 117 | 118 | setWithExpiry("chatbox_id", id); 119 | 120 | if (initResponse.status !== 200) { 121 | localStorage.removeItem("chatbox_id"); 122 | localStorage.removeItem("hasBeen5Minutes"); 123 | localStorage.removeItem("emailSent"); 124 | 125 | throw new Error("Failed to init chat"); 126 | } 127 | 128 | setChatInitiated(true); 129 | setUID(id); 130 | } 131 | 132 | // If it has been 5 minutes after the last message, resend notification to slack. 133 | const hasBeen5Minutes = getWithExpiry("hasBeen5Minutes"); 134 | 135 | setWithExpiry("hasBeen5Minutes", "false", 5 * 60 * 1000); 136 | 137 | setHasBeen5Minutes(false); 138 | 139 | if (!hasBeen5Minutes && chatInitiatedTemp) { 140 | const initResponse = await fetch(`/api/chatbox/slack/${id}`, { 141 | method: "POST", 142 | headers: { 143 | "Content-Type": "application/json", 144 | }, 145 | body: JSON.stringify({ reminder: "Reminder" }), 146 | }); 147 | 148 | if (initResponse.status !== 200) { 149 | localStorage.removeItem("hasBeen5Minutes"); 150 | setHasBeen5Minutes(true); 151 | throw new Error("Failed to post reminder."); 152 | } 153 | } 154 | 155 | let replyText = "i:" + message; 156 | 157 | const replyResponse = await fetch(`/api/chatbox/chat/${id}`, { 158 | method: "POST", 159 | headers: { 160 | "Content-Type": "application/json", 161 | }, 162 | body: JSON.stringify({ text: replyText }), 163 | }); 164 | 165 | if (replyResponse.status !== 200) { 166 | throw new Error("Failed to reply"); 167 | } 168 | 169 | await fetchList(id); 170 | setIsChatTrigger(performance.now()); 171 | setMessage(""); 172 | } catch (err) { 173 | alert(err); 174 | } 175 | }; 176 | 177 | const onSendEmail = async () => { 178 | try { 179 | if (isEmailSent) return; 180 | 181 | let id = UID; 182 | 183 | if (!chatInitiated) { 184 | id = nanoid(10); 185 | 186 | setWithExpiry("chatbox_id", id); 187 | setWithExpiry("hasBeen5Minutes", "false", 5 * 60 * 1000); 188 | setUID(id); 189 | } 190 | 191 | const response = await fetch(`/api/chatbox/slack-email/${id}`, { 192 | method: "POST", 193 | headers: { 194 | "Content-Type": "application/json", 195 | }, 196 | body: JSON.stringify({ email }), 197 | }); 198 | 199 | if (response.status !== 200) { 200 | throw new Error("Failed to send email address"); 201 | } 202 | 203 | setWithExpiry("emailSent", "true"); 204 | setIsEmailSent(true); 205 | } catch (err) { 206 | alert(err); 207 | } 208 | }; 209 | 210 | const onModalShow = (status: boolean) => { 211 | setIsModalShow(status); 212 | if (status) setIsChatTrigger(performance.now()); 213 | }; 214 | 215 | useEffect(() => { 216 | if (!chatInitiated || !isModalShow) return; 217 | 218 | fetchList(); 219 | 220 | const interval = setInterval(() => { 221 | fetchList(); 222 | }, 3000); 223 | 224 | return () => clearInterval(interval); 225 | }, [chatInitiated, isModalShow, UID, hasBeen5Minutes]); 226 | 227 | return ( 228 | 252 | {children} 253 | 254 | ); 255 | } 256 | 257 | export default ChatBoxContext; 258 | -------------------------------------------------------------------------------- /chatbox/next-env.d.ts: -------------------------------------------------------------------------------- 1 | /// 2 | /// 3 | 4 | // NOTE: This file should not be edited 5 | // see https://nextjs.org/docs/basic-features/typescript for more information. 6 | -------------------------------------------------------------------------------- /chatbox/package.json: -------------------------------------------------------------------------------- 1 | { 2 | "name": "@upstash/chatbox", 3 | "version": "1.3.1", 4 | "license": "MIT", 5 | "main": "./chatbox.js", 6 | "module": "./chatbox.mjs", 7 | "types": "./chatbox.d.ts", 8 | "scripts": { 9 | "build": "tsup && cp package.json ./dist/", 10 | "dev": "next dev" 11 | }, 12 | "dependencies": { 13 | "@upstash/redis": "^1.2.0", 14 | "nanoid": "^3.3.3", 15 | "next": "^12.1.5", 16 | "react": "17.0.2", 17 | "react-dom": "17.0.2", 18 | "react-textarea-autosize": "^8.3.3" 19 | }, 20 | "devDependencies": { 21 | "@types/node": "^17.0.25", 22 | "@types/react": "^17.0.44", 23 | "@types/react-dom": "^17.0.15", 24 | "autoprefixer": "^10.4.5", 25 | "postcss": "^8.4.12", 26 | "prettier": "^2.6.2", 27 | "tsup": "^5.12.6", 28 | "typescript": "^4.6.3" 29 | }, 30 | "homepage": "https://github.com/upstash/chatbox#readme", 31 | "repository": { 32 | "type": "git", 33 | "url": "git+https://ademilter@github.com/upstash/chatbox.git" 34 | }, 35 | "bugs": { 36 | "url": "https://github.com/upstash/chatbox/issues" 37 | } 38 | } 39 | -------------------------------------------------------------------------------- /chatbox/pages/_app.tsx: -------------------------------------------------------------------------------- 1 | import "../styles/chatbox.css"; 2 | 3 | import { AppProps } from "next/app"; 4 | import dynamic from "next/dynamic"; 5 | 6 | const ChatBoxWidget = dynamic({ 7 | loader: () => import("../components/widget/index"), 8 | ssr: false, 9 | }); 10 | 11 | export default function App(props: AppProps) { 12 | const { Component, pageProps } = props; 13 | 14 | return ( 15 | <> 16 | 17 | 18 | 19 | ); 20 | } 21 | -------------------------------------------------------------------------------- /chatbox/pages/api/chatbox/[...chatbox].ts: -------------------------------------------------------------------------------- 1 | import createChatBoxAPI from "../../../components/api"; 2 | 3 | const ChatBoxAPI = createChatBoxAPI({ 4 | webhooks: [process.env.SLACK_WEBHOOK_URL!], 5 | }); 6 | 7 | export default ChatBoxAPI; 8 | -------------------------------------------------------------------------------- /chatbox/pages/chat/[id].tsx: -------------------------------------------------------------------------------- 1 | import dynamic from "next/dynamic"; 2 | 3 | const ChatBoxAdmin = dynamic({ 4 | loader: () => import("../../components/admin/index"), 5 | ssr: false, 6 | }); 7 | 8 | export default function () { 9 | return ; 10 | } 11 | -------------------------------------------------------------------------------- /chatbox/pages/index.tsx: -------------------------------------------------------------------------------- 1 | export default function Home() { 2 | return
hi
; 3 | } 4 | -------------------------------------------------------------------------------- /chatbox/postcss.config.js: -------------------------------------------------------------------------------- 1 | module.exports = { 2 | plugins: { 3 | autoprefixer: {}, 4 | }, 5 | }; 6 | -------------------------------------------------------------------------------- /chatbox/styles/chatbox.css: -------------------------------------------------------------------------------- 1 | .chatbox { 2 | --color-primary: #000; 3 | --color-text: #fff; 4 | 5 | font-size: 15px; 6 | line-height: 1.4; 7 | 8 | -webkit-text-size-adjust: 100%; 9 | font-family: system-ui, sans-serif; 10 | -webkit-font-smoothing: antialiased; 11 | text-rendering: optimizeLegibility; 12 | -moz-osx-font-smoothing: grayscale; 13 | } 14 | 15 | .chatbox * { 16 | box-sizing: border-box; 17 | border: 0; 18 | margin: 0; 19 | padding: 0; 20 | font: inherit; 21 | background-color: transparent; 22 | } 23 | 24 | .chatbox-chat { 25 | display: flex; 26 | flex-direction: column; 27 | gap: 5px; 28 | padding: 1rem; 29 | height: 100%; 30 | overflow-y: scroll; 31 | } 32 | 33 | .chatbox-chat-message { 34 | position: relative; 35 | display: flex; 36 | } 37 | 38 | .chatbox-chat-message span { 39 | padding: 10px 15px; 40 | display: inline-flex; 41 | border-radius: 10px; 42 | } 43 | 44 | .chatbox-chat-message.chatbox-chat-message-out { 45 | margin-right: 3rem; 46 | } 47 | 48 | .chatbox-chat-message.chatbox-chat-message-out span { 49 | background-color: #eee; 50 | } 51 | 52 | .chatbox-chat-message.chatbox-chat-message-in { 53 | margin-left: 3rem; 54 | justify-content: flex-end; 55 | } 56 | 57 | .chatbox-chat-message.chatbox-chat-message-in span { 58 | color: var(--color-text); 59 | background-color: var(--color-primary); 60 | } 61 | 62 | .chatbox-form { 63 | position: relative; 64 | border-top: 1px solid #eee; 65 | } 66 | 67 | .chatbox-form-message { 68 | display: block; 69 | height: 50px; 70 | width: 100%; 71 | padding: 1rem; 72 | outline: 0; 73 | resize: none; 74 | } 75 | 76 | .chatbox-form-message::placeholder { 77 | color: #aaa; 78 | } 79 | 80 | .chatbox-form-submit { 81 | cursor: pointer; 82 | z-index: 2; 83 | position: absolute; 84 | right: 1rem; 85 | top: 10px; 86 | display: flex; 87 | align-items: center; 88 | justify-content: center; 89 | padding: 5px; 90 | } 91 | 92 | 93 | /* widget */ 94 | 95 | .chatbox-widget-root { 96 | position: fixed; 97 | z-index: 99999; 98 | bottom: 20px; 99 | right: 20px; 100 | width: 100vw; 101 | height: 0; 102 | } 103 | 104 | .chatbox-widget-trigger-button { 105 | cursor: pointer; 106 | z-index: 1; 107 | position: absolute; 108 | right: 0; 109 | bottom: 0; 110 | width: 54px; 111 | height: 54px; 112 | background-color: var(--color-primary); 113 | display: flex; 114 | align-items: center; 115 | justify-content: center; 116 | border-radius: 60px; 117 | box-shadow: rgb(0 0 0 / 6%) 0 1px 6px 0, rgb(0 0 0 / 16%) 0 2px 32px 0; 118 | } 119 | 120 | .chatbox-widget-modal { 121 | display: grid; 122 | grid-template-rows: auto 1fr auto; 123 | overflow: hidden; 124 | z-index: 2; 125 | position: absolute; 126 | bottom: calc(100% + 60px + 20px); 127 | right: 0; 128 | height: 460px; 129 | width: 320px; 130 | max-width: 100%; 131 | background-color: #fff; 132 | border-radius: 10px; 133 | box-shadow: rgba(0, 0, 0, 0.16) 0 5px 40px; 134 | } 135 | 136 | .chatbox-widget-header { 137 | padding: 1rem; 138 | color: var(--color-text); 139 | background-color: var(--color-primary); 140 | } 141 | 142 | .chatbox-widget-header h2 { 143 | font-size: 1.2rem; 144 | font-weight: bold; 145 | } 146 | 147 | /* admin */ 148 | 149 | .chatbox-admin-root { 150 | position: fixed; 151 | inset: 0; 152 | background-color: #eee; 153 | } 154 | 155 | .chatbox-admin-grid { 156 | display: grid; 157 | grid-template-rows: auto 1fr auto; 158 | height: 100vh; 159 | margin: 0 auto; 160 | width: 400px; 161 | background-color: #fff; 162 | } 163 | 164 | .chatbox-admin-header { 165 | padding: 1rem; 166 | color: var(--color-text); 167 | background-color: var(--color-primary); 168 | } 169 | 170 | 171 | .chatbox-widget-header p { 172 | font-size: 0.9rem; 173 | } 174 | 175 | .chatbox-widget-email-form { 176 | padding: 1rem; 177 | background-color: rgba(0, 0, 0, 0.06); 178 | border-radius: 10px; 179 | margin-top: 5px; 180 | 181 | } 182 | 183 | .chatbox-widget-email-form input { 184 | background-color: white; 185 | padding: 10px; 186 | width: 100%; 187 | border-radius: 10px; 188 | margin-top: 10px; 189 | } 190 | -------------------------------------------------------------------------------- /chatbox/tsconfig.json: -------------------------------------------------------------------------------- 1 | { 2 | "compilerOptions": { 3 | // Default 4 | "target": "es5", 5 | "esModuleInterop": true, 6 | "forceConsistentCasingInFileNames": true, 7 | "strict": true, 8 | "skipLibCheck": true, 9 | // Added 10 | "jsx": "preserve", 11 | "module": "ESNext", 12 | "declaration": true, 13 | "declarationDir": "types", 14 | "sourceMap": true, 15 | "moduleResolution": "node", 16 | "allowSyntheticDefaultImports": true, 17 | "emitDeclarationOnly": true, 18 | "outDir": "dist", 19 | // "lib": [ 20 | // "dom", 21 | // "dom.iterable", 22 | // "esnext" 23 | // ], 24 | // "allowJs": true, 25 | // "noEmit": true, 26 | // "incremental": true, 27 | // "resolveJsonModule": true, 28 | // "isolatedModules": true 29 | }, 30 | // "include": [ 31 | // "next-env.d.ts", 32 | // "**/*.ts", 33 | // "**/*.tsx" 34 | // ], 35 | // "exclude": [ 36 | // "node_modules" 37 | // ] 38 | } 39 | -------------------------------------------------------------------------------- /chatbox/tsconfig.module.json: -------------------------------------------------------------------------------- 1 | { 2 | "extends": "./tsconfig", 3 | "files": ["src/index.ts"], 4 | "compilerOptions": { 5 | "outDir": "dist/module", 6 | "module": "ES2015" 7 | } 8 | } 9 | -------------------------------------------------------------------------------- /chatbox/tsup.config.ts: -------------------------------------------------------------------------------- 1 | import { defineConfig } from "tsup"; 2 | 3 | export default defineConfig({ 4 | entry: { 5 | chatbox: "./components/widget/index.tsx", 6 | admin: "./components/admin/index.tsx", 7 | api: "./components/api.ts", 8 | style: "./components/style.tsx", 9 | }, 10 | format: ["cjs", "esm"], 11 | clean: true, 12 | bundle: true, 13 | dts: true, 14 | }); 15 | -------------------------------------------------------------------------------- /chatbox/yarn.lock: -------------------------------------------------------------------------------- 1 | # THIS IS AN AUTOGENERATED FILE. DO NOT EDIT THIS FILE DIRECTLY. 2 | # yarn lockfile v1 3 | 4 | 5 | "@babel/runtime@^7.10.2": 6 | version "7.18.3" 7 | resolved "https://registry.yarnpkg.com/@babel/runtime/-/runtime-7.18.3.tgz#c7b654b57f6f63cf7f8b418ac9ca04408c4579f4" 8 | integrity sha512-38Y8f7YUhce/K7RMwTp7m0uCumpv9hZkitCbBClqQIow1qSbCvGkcegKOXpEWCQLfWmevgRiWokZ1GkpfhbZug== 9 | dependencies: 10 | regenerator-runtime "^0.13.4" 11 | 12 | "@next/env@12.1.6": 13 | version "12.1.6" 14 | resolved "https://registry.yarnpkg.com/@next/env/-/env-12.1.6.tgz#5f44823a78335355f00f1687cfc4f1dafa3eca08" 15 | integrity sha512-Te/OBDXFSodPU6jlXYPAXpmZr/AkG6DCATAxttQxqOWaq6eDFX25Db3dK0120GZrSZmv4QCe9KsZmJKDbWs4OA== 16 | 17 | "@next/swc-android-arm-eabi@12.1.6": 18 | version "12.1.6" 19 | resolved "https://registry.yarnpkg.com/@next/swc-android-arm-eabi/-/swc-android-arm-eabi-12.1.6.tgz#79a35349b98f2f8c038ab6261aa9cd0d121c03f9" 20 | integrity sha512-BxBr3QAAAXWgk/K7EedvzxJr2dE014mghBSA9iOEAv0bMgF+MRq4PoASjuHi15M2zfowpcRG8XQhMFtxftCleQ== 21 | 22 | "@next/swc-android-arm64@12.1.6": 23 | version "12.1.6" 24 | resolved "https://registry.yarnpkg.com/@next/swc-android-arm64/-/swc-android-arm64-12.1.6.tgz#ec08ea61794f8752c8ebcacbed0aafc5b9407456" 25 | integrity sha512-EboEk3ROYY7U6WA2RrMt/cXXMokUTXXfnxe2+CU+DOahvbrO8QSWhlBl9I9ZbFzJx28AGB9Yo3oQHCvph/4Lew== 26 | 27 | "@next/swc-darwin-arm64@12.1.6": 28 | version "12.1.6" 29 | resolved "https://registry.yarnpkg.com/@next/swc-darwin-arm64/-/swc-darwin-arm64-12.1.6.tgz#d1053805615fd0706e9b1667893a72271cd87119" 30 | integrity sha512-P0EXU12BMSdNj1F7vdkP/VrYDuCNwBExtRPDYawgSUakzi6qP0iKJpya2BuLvNzXx+XPU49GFuDC5X+SvY0mOw== 31 | 32 | "@next/swc-darwin-x64@12.1.6": 33 | version "12.1.6" 34 | resolved "https://registry.yarnpkg.com/@next/swc-darwin-x64/-/swc-darwin-x64-12.1.6.tgz#2d1b926a22f4c5230d5b311f9c56cfdcc406afec" 35 | integrity sha512-9FptMnbgHJK3dRDzfTpexs9S2hGpzOQxSQbe8omz6Pcl7rnEp9x4uSEKY51ho85JCjL4d0tDLBcXEJZKKLzxNg== 36 | 37 | "@next/swc-linux-arm-gnueabihf@12.1.6": 38 | version "12.1.6" 39 | resolved "https://registry.yarnpkg.com/@next/swc-linux-arm-gnueabihf/-/swc-linux-arm-gnueabihf-12.1.6.tgz#c021918d2a94a17f823106a5e069335b8a19724f" 40 | integrity sha512-PvfEa1RR55dsik/IDkCKSFkk6ODNGJqPY3ysVUZqmnWMDSuqFtf7BPWHFa/53znpvVB5XaJ5Z1/6aR5CTIqxPw== 41 | 42 | "@next/swc-linux-arm64-gnu@12.1.6": 43 | version "12.1.6" 44 | resolved "https://registry.yarnpkg.com/@next/swc-linux-arm64-gnu/-/swc-linux-arm64-gnu-12.1.6.tgz#ac55c07bfabde378dfa0ce2b8fc1c3b2897e81ae" 45 | integrity sha512-53QOvX1jBbC2ctnmWHyRhMajGq7QZfl974WYlwclXarVV418X7ed7o/EzGY+YVAEKzIVaAB9JFFWGXn8WWo0gQ== 46 | 47 | "@next/swc-linux-arm64-musl@12.1.6": 48 | version "12.1.6" 49 | resolved "https://registry.yarnpkg.com/@next/swc-linux-arm64-musl/-/swc-linux-arm64-musl-12.1.6.tgz#e429f826279894be9096be6bec13e75e3d6bd671" 50 | integrity sha512-CMWAkYqfGdQCS+uuMA1A2UhOfcUYeoqnTW7msLr2RyYAys15pD960hlDfq7QAi8BCAKk0sQ2rjsl0iqMyziohQ== 51 | 52 | "@next/swc-linux-x64-gnu@12.1.6": 53 | version "12.1.6" 54 | resolved "https://registry.yarnpkg.com/@next/swc-linux-x64-gnu/-/swc-linux-x64-gnu-12.1.6.tgz#1f276c0784a5ca599bfa34b2fcc0b38f3a738e08" 55 | integrity sha512-AC7jE4Fxpn0s3ujngClIDTiEM/CQiB2N2vkcyWWn6734AmGT03Duq6RYtPMymFobDdAtZGFZd5nR95WjPzbZAQ== 56 | 57 | "@next/swc-linux-x64-musl@12.1.6": 58 | version "12.1.6" 59 | resolved "https://registry.yarnpkg.com/@next/swc-linux-x64-musl/-/swc-linux-x64-musl-12.1.6.tgz#1d9933dd6ba303dcfd8a2acd6ac7c27ed41e2eea" 60 | integrity sha512-c9Vjmi0EVk0Kou2qbrynskVarnFwfYIi+wKufR9Ad7/IKKuP6aEhOdZiIIdKsYWRtK2IWRF3h3YmdnEa2WLUag== 61 | 62 | "@next/swc-win32-arm64-msvc@12.1.6": 63 | version "12.1.6" 64 | resolved "https://registry.yarnpkg.com/@next/swc-win32-arm64-msvc/-/swc-win32-arm64-msvc-12.1.6.tgz#2ef9837f12ca652b1783d72ecb86208906042f02" 65 | integrity sha512-3UTOL/5XZSKFelM7qN0it35o3Cegm6LsyuERR3/OoqEExyj3aCk7F025b54/707HTMAnjlvQK3DzLhPu/xxO4g== 66 | 67 | "@next/swc-win32-ia32-msvc@12.1.6": 68 | version "12.1.6" 69 | resolved "https://registry.yarnpkg.com/@next/swc-win32-ia32-msvc/-/swc-win32-ia32-msvc-12.1.6.tgz#74003d0aa1c59dfa56cb15481a5c607cbc0027b9" 70 | integrity sha512-8ZWoj6nCq6fI1yCzKq6oK0jE6Mxlz4MrEsRyu0TwDztWQWe7rh4XXGLAa2YVPatYcHhMcUL+fQQbqd1MsgaSDA== 71 | 72 | "@next/swc-win32-x64-msvc@12.1.6": 73 | version "12.1.6" 74 | resolved "https://registry.yarnpkg.com/@next/swc-win32-x64-msvc/-/swc-win32-x64-msvc-12.1.6.tgz#a350caf42975e7197b24b495b8d764eec7e6a36e" 75 | integrity sha512-4ZEwiRuZEicXhXqmhw3+de8Z4EpOLQj/gp+D9fFWo6ii6W1kBkNNvvEx4A90ugppu+74pT1lIJnOuz3A9oQeJA== 76 | 77 | "@nodelib/fs.scandir@2.1.5": 78 | version "2.1.5" 79 | resolved "https://registry.yarnpkg.com/@nodelib/fs.scandir/-/fs.scandir-2.1.5.tgz#7619c2eb21b25483f6d167548b4cfd5a7488c3d5" 80 | integrity sha512-vq24Bq3ym5HEQm2NKCr3yXDwjc7vTsEThRDnkp2DK9p1uqLR+DHurm/NOTo0KG7HYHU7eppKZj3MyqYuMBf62g== 81 | dependencies: 82 | "@nodelib/fs.stat" "2.0.5" 83 | run-parallel "^1.1.9" 84 | 85 | "@nodelib/fs.stat@2.0.5", "@nodelib/fs.stat@^2.0.2": 86 | version "2.0.5" 87 | resolved "https://registry.yarnpkg.com/@nodelib/fs.stat/-/fs.stat-2.0.5.tgz#5bd262af94e9d25bd1e71b05deed44876a222e8b" 88 | integrity sha512-RkhPPp2zrqDAQA/2jNhnztcPAlv64XdhIp7a7454A5ovI7Bukxgt7MX7udwAu3zg1DcpPU0rz3VV1SeaqvY4+A== 89 | 90 | "@nodelib/fs.walk@^1.2.3": 91 | version "1.2.8" 92 | resolved "https://registry.yarnpkg.com/@nodelib/fs.walk/-/fs.walk-1.2.8.tgz#e95737e8bb6746ddedf69c556953494f196fe69a" 93 | integrity sha512-oGB+UxlgWcgQkgwo8GcEGwemoTFt3FIO9ababBmaGwXIoBKZ+GTy0pP185beGg7Llih/NSHSV2XAs1lnznocSg== 94 | dependencies: 95 | "@nodelib/fs.scandir" "2.1.5" 96 | fastq "^1.6.0" 97 | 98 | "@types/node@^17.0.25": 99 | version "17.0.38" 100 | resolved "https://registry.yarnpkg.com/@types/node/-/node-17.0.38.tgz#f8bb07c371ccb1903f3752872c89f44006132947" 101 | integrity sha512-5jY9RhV7c0Z4Jy09G+NIDTsCZ5G0L5n+Z+p+Y7t5VJHM30bgwzSjVtlcBxqAj+6L/swIlvtOSzr8rBk/aNyV2g== 102 | 103 | "@types/prop-types@*": 104 | version "15.7.5" 105 | resolved "https://registry.yarnpkg.com/@types/prop-types/-/prop-types-15.7.5.tgz#5f19d2b85a98e9558036f6a3cacc8819420f05cf" 106 | integrity sha512-JCB8C6SnDoQf0cNycqd/35A7MjcnK+ZTqE7judS6o7utxUCg6imJg3QK2qzHKszlTjcj2cn+NwMB2i96ubpj7w== 107 | 108 | "@types/react-dom@^17.0.15": 109 | version "17.0.17" 110 | resolved "https://registry.yarnpkg.com/@types/react-dom/-/react-dom-17.0.17.tgz#2e3743277a793a96a99f1bf87614598289da68a1" 111 | integrity sha512-VjnqEmqGnasQKV0CWLevqMTXBYG9GbwuE6x3VetERLh0cq2LTptFE73MrQi2S7GkKXCf2GgwItB/melLnxfnsg== 112 | dependencies: 113 | "@types/react" "^17" 114 | 115 | "@types/react@^17", "@types/react@^17.0.44": 116 | version "17.0.45" 117 | resolved "https://registry.yarnpkg.com/@types/react/-/react-17.0.45.tgz#9b3d5b661fd26365fefef0e766a1c6c30ccf7b3f" 118 | integrity sha512-YfhQ22Lah2e3CHPsb93tRwIGNiSwkuz1/blk4e6QrWS0jQzCSNbGLtOEYhPg02W0yGTTmpajp7dCTbBAMN3qsg== 119 | dependencies: 120 | "@types/prop-types" "*" 121 | "@types/scheduler" "*" 122 | csstype "^3.0.2" 123 | 124 | "@types/scheduler@*": 125 | version "0.16.2" 126 | resolved "https://registry.yarnpkg.com/@types/scheduler/-/scheduler-0.16.2.tgz#1a62f89525723dde24ba1b01b092bf5df8ad4d39" 127 | integrity sha512-hppQEBDmlwhFAXKJX2KnWLYu5yMfi91yazPb2l+lbJiwW+wdo1gNeRA+3RgNSO39WYX2euey41KEwnqesU2Jew== 128 | 129 | "@upstash/redis@^1.2.0": 130 | version "1.6.1" 131 | resolved "https://registry.yarnpkg.com/@upstash/redis/-/redis-1.6.1.tgz#5ce62e44d92ce1494a9df5385d814b5006346c9c" 132 | integrity sha512-2SGkAzBewW8MoRT5YpypWxdxRdsX6ydCLktldDvGocCeSJcx00gj+sXi3WfRvVfXQS9EDR3cJVKoaBhbmn1IyA== 133 | dependencies: 134 | isomorphic-fetch "^3.0.0" 135 | 136 | any-promise@^1.0.0: 137 | version "1.3.0" 138 | resolved "https://registry.yarnpkg.com/any-promise/-/any-promise-1.3.0.tgz#abc6afeedcea52e809cdc0376aed3ce39635d17f" 139 | integrity sha512-7UvmKalWRt1wgjL1RrGxoSJW/0QZFIegpeGvZG9kjp8vrRu55XTHbwnqq2GpXm9uLbcuhxm3IqX9OB4MZR1b2A== 140 | 141 | anymatch@~3.1.2: 142 | version "3.1.2" 143 | resolved "https://registry.yarnpkg.com/anymatch/-/anymatch-3.1.2.tgz#c0557c096af32f106198f4f4e2a383537e378716" 144 | integrity sha512-P43ePfOAIupkguHUycrc4qJ9kz8ZiuOUijaETwX7THt0Y/GNK7v0aa8rY816xWjZ7rJdA5XdMcpVFTKMq+RvWg== 145 | dependencies: 146 | normalize-path "^3.0.0" 147 | picomatch "^2.0.4" 148 | 149 | array-union@^2.1.0: 150 | version "2.1.0" 151 | resolved "https://registry.yarnpkg.com/array-union/-/array-union-2.1.0.tgz#b798420adbeb1de828d84acd8a2e23d3efe85e8d" 152 | integrity sha512-HGyxoOTYUyCM6stUe6EJgnd4EoewAI7zMdfqO+kGjnlZmBDz/cR5pf8r/cR4Wq60sL/p0IkcjUEEPwS3GFrIyw== 153 | 154 | autoprefixer@^10.4.5: 155 | version "10.4.7" 156 | resolved "https://registry.yarnpkg.com/autoprefixer/-/autoprefixer-10.4.7.tgz#1db8d195f41a52ca5069b7593be167618edbbedf" 157 | integrity sha512-ypHju4Y2Oav95SipEcCcI5J7CGPuvz8oat7sUtYj3ClK44bldfvtvcxK6IEK++7rqB7YchDGzweZIBG+SD0ZAA== 158 | dependencies: 159 | browserslist "^4.20.3" 160 | caniuse-lite "^1.0.30001335" 161 | fraction.js "^4.2.0" 162 | normalize-range "^0.1.2" 163 | picocolors "^1.0.0" 164 | postcss-value-parser "^4.2.0" 165 | 166 | balanced-match@^1.0.0: 167 | version "1.0.2" 168 | resolved "https://registry.yarnpkg.com/balanced-match/-/balanced-match-1.0.2.tgz#e83e3a7e3f300b34cb9d87f615fa0cbf357690ee" 169 | integrity sha512-3oSeUO0TMV67hN1AmbXsK4yaqU7tjiHlbxRDZOpH0KW9+CeX4bRAaX0Anxt0tx2MrpRpWwQaPwIlISEJhYU5Pw== 170 | 171 | binary-extensions@^2.0.0: 172 | version "2.2.0" 173 | resolved "https://registry.yarnpkg.com/binary-extensions/-/binary-extensions-2.2.0.tgz#75f502eeaf9ffde42fc98829645be4ea76bd9e2d" 174 | integrity sha512-jDctJ/IVQbZoJykoeHbhXpOlNBqGNcwXJKJog42E5HDPUwQTSdjCHdihjj0DlnheQ7blbT6dHOafNAiS8ooQKA== 175 | 176 | brace-expansion@^1.1.7: 177 | version "1.1.11" 178 | resolved "https://registry.yarnpkg.com/brace-expansion/-/brace-expansion-1.1.11.tgz#3c7fcbf529d87226f3d2f52b966ff5271eb441dd" 179 | integrity sha512-iCuPHDFgrHX7H2vEI/5xpz07zSHB00TpugqhmYtVmMO6518mCuRMoOYFldEBl0g187ufozdaHgWKcYFb61qGiA== 180 | dependencies: 181 | balanced-match "^1.0.0" 182 | concat-map "0.0.1" 183 | 184 | braces@^3.0.2, braces@~3.0.2: 185 | version "3.0.2" 186 | resolved "https://registry.yarnpkg.com/braces/-/braces-3.0.2.tgz#3454e1a462ee8d599e236df336cd9ea4f8afe107" 187 | integrity sha512-b8um+L1RzM3WDSzvhm6gIz1yfTbBt6YTlcEKAvsmqCZZFw46z626lVj9j1yEPW33H5H+lBQpZMP1k8l+78Ha0A== 188 | dependencies: 189 | fill-range "^7.0.1" 190 | 191 | browserslist@^4.20.3: 192 | version "4.20.3" 193 | resolved "https://registry.yarnpkg.com/browserslist/-/browserslist-4.20.3.tgz#eb7572f49ec430e054f56d52ff0ebe9be915f8bf" 194 | integrity sha512-NBhymBQl1zM0Y5dQT/O+xiLP9/rzOIQdKM/eMJBAq7yBgaB6krIYLGejrwVYnSHZdqjscB1SPuAjHwxjvN6Wdg== 195 | dependencies: 196 | caniuse-lite "^1.0.30001332" 197 | electron-to-chromium "^1.4.118" 198 | escalade "^3.1.1" 199 | node-releases "^2.0.3" 200 | picocolors "^1.0.0" 201 | 202 | bundle-require@^3.0.2: 203 | version "3.0.4" 204 | resolved "https://registry.yarnpkg.com/bundle-require/-/bundle-require-3.0.4.tgz#2b52ba77d99c0a586b5854cd21d36954e63cc110" 205 | integrity sha512-VXG6epB1yrLAvWVQpl92qF347/UXmncQj7J3U8kZEbdVZ1ZkQyr4hYeL/9RvcE8vVVdp53dY78Fd/3pqfRqI1A== 206 | dependencies: 207 | load-tsconfig "^0.2.0" 208 | 209 | cac@^6.7.12: 210 | version "6.7.12" 211 | resolved "https://registry.yarnpkg.com/cac/-/cac-6.7.12.tgz#6fb5ea2ff50bd01490dbda497f4ae75a99415193" 212 | integrity sha512-rM7E2ygtMkJqD9c7WnFU6fruFcN3xe4FM5yUmgxhZzIKJk4uHl9U/fhwdajGFQbQuv43FAUo1Fe8gX/oIKDeSA== 213 | 214 | caniuse-lite@^1.0.30001332, caniuse-lite@^1.0.30001335: 215 | version "1.0.30001344" 216 | resolved "https://registry.yarnpkg.com/caniuse-lite/-/caniuse-lite-1.0.30001344.tgz#8a1e7fdc4db9c2ec79a05e9fd68eb93a761888bb" 217 | integrity sha512-0ZFjnlCaXNOAYcV7i+TtdKBp0L/3XEU2MF/x6Du1lrh+SRX4IfzIVL4HNJg5pB2PmFb8rszIGyOvsZnqqRoc2g== 218 | 219 | chokidar@^3.5.1: 220 | version "3.5.3" 221 | resolved "https://registry.yarnpkg.com/chokidar/-/chokidar-3.5.3.tgz#1cf37c8707b932bd1af1ae22c0432e2acd1903bd" 222 | integrity sha512-Dr3sfKRP6oTcjf2JmUmFJfeVMvXBdegxB0iVQ5eb2V10uFJUCAS8OByZdVAyVb8xXNz3GjjTgj9kLWsZTqE6kw== 223 | dependencies: 224 | anymatch "~3.1.2" 225 | braces "~3.0.2" 226 | glob-parent "~5.1.2" 227 | is-binary-path "~2.1.0" 228 | is-glob "~4.0.1" 229 | normalize-path "~3.0.0" 230 | readdirp "~3.6.0" 231 | optionalDependencies: 232 | fsevents "~2.3.2" 233 | 234 | commander@^4.0.0: 235 | version "4.1.1" 236 | resolved "https://registry.yarnpkg.com/commander/-/commander-4.1.1.tgz#9fd602bd936294e9e9ef46a3f4d6964044b18068" 237 | integrity sha512-NOKm8xhkzAjzFx8B2v5OAHT+u5pRQc2UCa2Vq9jYL/31o2wi9mxBA7LIFs3sV5VSC49z6pEhfbMULvShKj26WA== 238 | 239 | concat-map@0.0.1: 240 | version "0.0.1" 241 | resolved "https://registry.yarnpkg.com/concat-map/-/concat-map-0.0.1.tgz#d8a96bd77fd68df7793a73036a3ba0d5405d477b" 242 | integrity sha512-/Srv4dswyQNBfohGpz9o6Yb3Gz3SrUDqBH5rTuhGR7ahtlbYKnVxw2bCFMRljaA7EXHaXZ8wsHdodFvbkhKmqg== 243 | 244 | cross-spawn@^7.0.3: 245 | version "7.0.3" 246 | resolved "https://registry.yarnpkg.com/cross-spawn/-/cross-spawn-7.0.3.tgz#f73a85b9d5d41d045551c177e2882d4ac85728a6" 247 | integrity sha512-iRDPJKUPVEND7dHPO8rkbOnPpyDygcDFtWjpeWNCgy8WP2rXcxXL8TskReQl6OrB2G7+UJrags1q15Fudc7G6w== 248 | dependencies: 249 | path-key "^3.1.0" 250 | shebang-command "^2.0.0" 251 | which "^2.0.1" 252 | 253 | csstype@^3.0.2: 254 | version "3.1.0" 255 | resolved "https://registry.yarnpkg.com/csstype/-/csstype-3.1.0.tgz#4ddcac3718d787cf9df0d1b7d15033925c8f29f2" 256 | integrity sha512-uX1KG+x9h5hIJsaKR9xHUeUraxf8IODOwq9JLNPq6BwB04a/xgpq3rcx47l5BZu5zBPlgD342tdke3Hom/nJRA== 257 | 258 | debug@^4.3.1: 259 | version "4.3.4" 260 | resolved "https://registry.yarnpkg.com/debug/-/debug-4.3.4.tgz#1319f6579357f2338d3337d2cdd4914bb5dcc865" 261 | integrity sha512-PRWFHuSU3eDtQJPvnNY7Jcket1j0t5OuOsFzPPzsekD52Zl8qUfFIPEiswXqIvHWGVHOgX+7G/vCNNhehwxfkQ== 262 | dependencies: 263 | ms "2.1.2" 264 | 265 | dir-glob@^3.0.1: 266 | version "3.0.1" 267 | resolved "https://registry.yarnpkg.com/dir-glob/-/dir-glob-3.0.1.tgz#56dbf73d992a4a93ba1584f4534063fd2e41717f" 268 | integrity sha512-WkrWp9GR4KXfKGYzOLmTuGVi1UWFfws377n9cc55/tb6DuqyF6pcQ5AbiHEshaDpY9v6oaSr2XCDidGmMwdzIA== 269 | dependencies: 270 | path-type "^4.0.0" 271 | 272 | electron-to-chromium@^1.4.118: 273 | version "1.4.143" 274 | resolved "https://registry.yarnpkg.com/electron-to-chromium/-/electron-to-chromium-1.4.143.tgz#10f1bb595ad6cd893c05097039c685dcf5c8e30c" 275 | integrity sha512-2hIgvu0+pDfXIqmVmV5X6iwMjQ2KxDsWKwM+oI1fABEOy/Dqmll0QJRmIQ3rm+XaoUa/qKrmy5h7LSTFQ6Ldzg== 276 | 277 | esbuild-android-64@0.14.42: 278 | version "0.14.42" 279 | resolved "https://registry.yarnpkg.com/esbuild-android-64/-/esbuild-android-64-0.14.42.tgz#d7ab3d44d3671218d22bce52f65642b12908d954" 280 | integrity sha512-P4Y36VUtRhK/zivqGVMqhptSrFILAGlYp0Z8r9UQqHJ3iWztRCNWnlBzD9HRx0DbueXikzOiwyOri+ojAFfW6A== 281 | 282 | esbuild-android-arm64@0.14.42: 283 | version "0.14.42" 284 | resolved "https://registry.yarnpkg.com/esbuild-android-arm64/-/esbuild-android-arm64-0.14.42.tgz#45336d8bec49abddb3a022996a23373f45a57c27" 285 | integrity sha512-0cOqCubq+RWScPqvtQdjXG3Czb3AWI2CaKw3HeXry2eoA2rrPr85HF7IpdU26UWdBXgPYtlTN1LUiuXbboROhg== 286 | 287 | esbuild-darwin-64@0.14.42: 288 | version "0.14.42" 289 | resolved "https://registry.yarnpkg.com/esbuild-darwin-64/-/esbuild-darwin-64-0.14.42.tgz#6dff5e44cd70a88c33323e2f5fb598e40c68a9e0" 290 | integrity sha512-ipiBdCA3ZjYgRfRLdQwP82rTiv/YVMtW36hTvAN5ZKAIfxBOyPXY7Cejp3bMXWgzKD8B6O+zoMzh01GZsCuEIA== 291 | 292 | esbuild-darwin-arm64@0.14.42: 293 | version "0.14.42" 294 | resolved "https://registry.yarnpkg.com/esbuild-darwin-arm64/-/esbuild-darwin-arm64-0.14.42.tgz#2c7313e1b12d2fa5b889c03213d682fb92ca8c4f" 295 | integrity sha512-bU2tHRqTPOaoH/4m0zYHbFWpiYDmaA0gt90/3BMEFaM0PqVK/a6MA2V/ypV5PO0v8QxN6gH5hBPY4YJ2lopXgA== 296 | 297 | esbuild-freebsd-64@0.14.42: 298 | version "0.14.42" 299 | resolved "https://registry.yarnpkg.com/esbuild-freebsd-64/-/esbuild-freebsd-64-0.14.42.tgz#ad1c5a564a7e473b8ce95ee7f76618d05d6daffc" 300 | integrity sha512-75h1+22Ivy07+QvxHyhVqOdekupiTZVLN1PMwCDonAqyXd8TVNJfIRFrdL8QmSJrOJJ5h8H1I9ETyl2L8LQDaw== 301 | 302 | esbuild-freebsd-arm64@0.14.42: 303 | version "0.14.42" 304 | resolved "https://registry.yarnpkg.com/esbuild-freebsd-arm64/-/esbuild-freebsd-arm64-0.14.42.tgz#4bdb480234144f944f1930829bace7561135ddc7" 305 | integrity sha512-W6Jebeu5TTDQMJUJVarEzRU9LlKpNkPBbjqSu+GUPTHDCly5zZEQq9uHkmHHl7OKm+mQ2zFySN83nmfCeZCyNA== 306 | 307 | esbuild-linux-32@0.14.42: 308 | version "0.14.42" 309 | resolved "https://registry.yarnpkg.com/esbuild-linux-32/-/esbuild-linux-32-0.14.42.tgz#ef18fd19f067e9d2b5f677d6b82fa81519f5a8c2" 310 | integrity sha512-Ooy/Bj+mJ1z4jlWcK5Dl6SlPlCgQB9zg1UrTCeY8XagvuWZ4qGPyYEWGkT94HUsRi2hKsXvcs6ThTOjBaJSMfg== 311 | 312 | esbuild-linux-64@0.14.42: 313 | version "0.14.42" 314 | resolved "https://registry.yarnpkg.com/esbuild-linux-64/-/esbuild-linux-64-0.14.42.tgz#d84e7333b1c1b22cf8b5b9dbb5dd9b2ecb34b79f" 315 | integrity sha512-2L0HbzQfbTuemUWfVqNIjOfaTRt9zsvjnme6lnr7/MO9toz/MJ5tZhjqrG6uDWDxhsaHI2/nsDgrv8uEEN2eoA== 316 | 317 | esbuild-linux-arm64@0.14.42: 318 | version "0.14.42" 319 | resolved "https://registry.yarnpkg.com/esbuild-linux-arm64/-/esbuild-linux-arm64-0.14.42.tgz#dc19e282f8c4ffbaa470c02a4d171e4ae0180cca" 320 | integrity sha512-c3Ug3e9JpVr8jAcfbhirtpBauLxzYPpycjWulD71CF6ZSY26tvzmXMJYooQ2YKqDY4e/fPu5K8bm7MiXMnyxuA== 321 | 322 | esbuild-linux-arm@0.14.42: 323 | version "0.14.42" 324 | resolved "https://registry.yarnpkg.com/esbuild-linux-arm/-/esbuild-linux-arm-0.14.42.tgz#d49870e63e2242b8156bf473f2ee5154226be328" 325 | integrity sha512-STq69yzCMhdRaWnh29UYrLSr/qaWMm/KqwaRF1pMEK7kDiagaXhSL1zQGXbYv94GuGY/zAwzK98+6idCMUOOCg== 326 | 327 | esbuild-linux-mips64le@0.14.42: 328 | version "0.14.42" 329 | resolved "https://registry.yarnpkg.com/esbuild-linux-mips64le/-/esbuild-linux-mips64le-0.14.42.tgz#f4e6ff9bf8a6f175470498826f48d093b054fc22" 330 | integrity sha512-QuvpHGbYlkyXWf2cGm51LBCHx6eUakjaSrRpUqhPwjh/uvNUYvLmz2LgPTTPwCqaKt0iwL+OGVL0tXA5aDbAbg== 331 | 332 | esbuild-linux-ppc64le@0.14.42: 333 | version "0.14.42" 334 | resolved "https://registry.yarnpkg.com/esbuild-linux-ppc64le/-/esbuild-linux-ppc64le-0.14.42.tgz#ac9c66fc80ba9f8fda15a4cc08f4e55f6c0aed63" 335 | integrity sha512-8ohIVIWDbDT+i7lCx44YCyIRrOW1MYlks9fxTo0ME2LS/fxxdoJBwHWzaDYhjvf8kNpA+MInZvyOEAGoVDrMHg== 336 | 337 | esbuild-linux-riscv64@0.14.42: 338 | version "0.14.42" 339 | resolved "https://registry.yarnpkg.com/esbuild-linux-riscv64/-/esbuild-linux-riscv64-0.14.42.tgz#21e0ae492a3a9bf4eecbfc916339a66e204256d0" 340 | integrity sha512-DzDqK3TuoXktPyG1Lwx7vhaF49Onv3eR61KwQyxYo4y5UKTpL3NmuarHSIaSVlTFDDpcIajCDwz5/uwKLLgKiQ== 341 | 342 | esbuild-linux-s390x@0.14.42: 343 | version "0.14.42" 344 | resolved "https://registry.yarnpkg.com/esbuild-linux-s390x/-/esbuild-linux-s390x-0.14.42.tgz#06d40b957250ffd9a2183bfdfc9a03d6fd21b3e8" 345 | integrity sha512-YFRhPCxl8nb//Wn6SiS5pmtplBi4z9yC2gLrYoYI/tvwuB1jldir9r7JwAGy1Ck4D7sE7wBN9GFtUUX/DLdcEQ== 346 | 347 | esbuild-netbsd-64@0.14.42: 348 | version "0.14.42" 349 | resolved "https://registry.yarnpkg.com/esbuild-netbsd-64/-/esbuild-netbsd-64-0.14.42.tgz#185664f05f10914f14ed43bd9e22b7de584267f7" 350 | integrity sha512-QYSD2k+oT9dqB/4eEM9c+7KyNYsIPgzYOSrmfNGDIyJrbT1d+CFVKvnKahDKNJLfOYj8N4MgyFaU9/Ytc6w5Vw== 351 | 352 | esbuild-openbsd-64@0.14.42: 353 | version "0.14.42" 354 | resolved "https://registry.yarnpkg.com/esbuild-openbsd-64/-/esbuild-openbsd-64-0.14.42.tgz#c29006f659eb4e55283044bbbd4eb4054fae8839" 355 | integrity sha512-M2meNVIKWsm2HMY7+TU9AxM7ZVwI9havdsw6m/6EzdXysyCFFSoaTQ/Jg03izjCsK17FsVRHqRe26Llj6x0MNA== 356 | 357 | esbuild-sunos-64@0.14.42: 358 | version "0.14.42" 359 | resolved "https://registry.yarnpkg.com/esbuild-sunos-64/-/esbuild-sunos-64-0.14.42.tgz#aa9eec112cd1e7105e7bb37000eca7d460083f8f" 360 | integrity sha512-uXV8TAZEw36DkgW8Ak3MpSJs1ofBb3Smkc/6pZ29sCAN1KzCAQzsje4sUwugf+FVicrHvlamCOlFZIXgct+iqQ== 361 | 362 | esbuild-windows-32@0.14.42: 363 | version "0.14.42" 364 | resolved "https://registry.yarnpkg.com/esbuild-windows-32/-/esbuild-windows-32-0.14.42.tgz#c3fc450853c61a74dacc5679de301db23b73e61e" 365 | integrity sha512-4iw/8qWmRICWi9ZOnJJf9sYt6wmtp3hsN4TdI5NqgjfOkBVMxNdM9Vt3626G1Rda9ya2Q0hjQRD9W1o+m6Lz6g== 366 | 367 | esbuild-windows-64@0.14.42: 368 | version "0.14.42" 369 | resolved "https://registry.yarnpkg.com/esbuild-windows-64/-/esbuild-windows-64-0.14.42.tgz#b877aa37ff47d9fcf0ccb1ca6a24b31475a5e555" 370 | integrity sha512-j3cdK+Y3+a5H0wHKmLGTJcq0+/2mMBHPWkItR3vytp/aUGD/ua/t2BLdfBIzbNN9nLCRL9sywCRpOpFMx3CxzA== 371 | 372 | esbuild-windows-arm64@0.14.42: 373 | version "0.14.42" 374 | resolved "https://registry.yarnpkg.com/esbuild-windows-arm64/-/esbuild-windows-arm64-0.14.42.tgz#79da8744626f24bc016dc40d016950b5a4a2bac5" 375 | integrity sha512-+lRAARnF+hf8J0mN27ujO+VbhPbDqJ8rCcJKye4y7YZLV6C4n3pTRThAb388k/zqF5uM0lS5O201u0OqoWSicw== 376 | 377 | esbuild@^0.14.25: 378 | version "0.14.42" 379 | resolved "https://registry.yarnpkg.com/esbuild/-/esbuild-0.14.42.tgz#98587df0b024d5f6341b12a1d735a2bff55e1836" 380 | integrity sha512-V0uPZotCEHokJdNqyozH6qsaQXqmZEOiZWrXnds/zaH/0SyrIayRXWRB98CENO73MIZ9T3HBIOsmds5twWtmgw== 381 | optionalDependencies: 382 | esbuild-android-64 "0.14.42" 383 | esbuild-android-arm64 "0.14.42" 384 | esbuild-darwin-64 "0.14.42" 385 | esbuild-darwin-arm64 "0.14.42" 386 | esbuild-freebsd-64 "0.14.42" 387 | esbuild-freebsd-arm64 "0.14.42" 388 | esbuild-linux-32 "0.14.42" 389 | esbuild-linux-64 "0.14.42" 390 | esbuild-linux-arm "0.14.42" 391 | esbuild-linux-arm64 "0.14.42" 392 | esbuild-linux-mips64le "0.14.42" 393 | esbuild-linux-ppc64le "0.14.42" 394 | esbuild-linux-riscv64 "0.14.42" 395 | esbuild-linux-s390x "0.14.42" 396 | esbuild-netbsd-64 "0.14.42" 397 | esbuild-openbsd-64 "0.14.42" 398 | esbuild-sunos-64 "0.14.42" 399 | esbuild-windows-32 "0.14.42" 400 | esbuild-windows-64 "0.14.42" 401 | esbuild-windows-arm64 "0.14.42" 402 | 403 | escalade@^3.1.1: 404 | version "3.1.1" 405 | resolved "https://registry.yarnpkg.com/escalade/-/escalade-3.1.1.tgz#d8cfdc7000965c5a0174b4a82eaa5c0552742e40" 406 | integrity sha512-k0er2gUkLf8O0zKJiAhmkTnJlTvINGv7ygDNPbeIsX/TJjGJZHuh9B2UxbsaEkmlEo9MfhrSzmhIlhRlI2GXnw== 407 | 408 | execa@^5.0.0: 409 | version "5.1.1" 410 | resolved "https://registry.yarnpkg.com/execa/-/execa-5.1.1.tgz#f80ad9cbf4298f7bd1d4c9555c21e93741c411dd" 411 | integrity sha512-8uSpZZocAZRBAPIEINJj3Lo9HyGitllczc27Eh5YYojjMFMn8yHMDMaUHE2Jqfq05D/wucwI4JGURyXt1vchyg== 412 | dependencies: 413 | cross-spawn "^7.0.3" 414 | get-stream "^6.0.0" 415 | human-signals "^2.1.0" 416 | is-stream "^2.0.0" 417 | merge-stream "^2.0.0" 418 | npm-run-path "^4.0.1" 419 | onetime "^5.1.2" 420 | signal-exit "^3.0.3" 421 | strip-final-newline "^2.0.0" 422 | 423 | fast-glob@^3.2.9: 424 | version "3.2.11" 425 | resolved "https://registry.yarnpkg.com/fast-glob/-/fast-glob-3.2.11.tgz#a1172ad95ceb8a16e20caa5c5e56480e5129c1d9" 426 | integrity sha512-xrO3+1bxSo3ZVHAnqzyuewYT6aMFHRAd4Kcs92MAonjwQZLsK9d0SF1IyQ3k5PoirxTW0Oe/RqFgMQ6TcNE5Ew== 427 | dependencies: 428 | "@nodelib/fs.stat" "^2.0.2" 429 | "@nodelib/fs.walk" "^1.2.3" 430 | glob-parent "^5.1.2" 431 | merge2 "^1.3.0" 432 | micromatch "^4.0.4" 433 | 434 | fastq@^1.6.0: 435 | version "1.13.0" 436 | resolved "https://registry.yarnpkg.com/fastq/-/fastq-1.13.0.tgz#616760f88a7526bdfc596b7cab8c18938c36b98c" 437 | integrity sha512-YpkpUnK8od0o1hmeSc7UUs/eB/vIPWJYjKck2QKIzAf71Vm1AAQ3EbuZB3g2JIy+pg+ERD0vqI79KyZiB2e2Nw== 438 | dependencies: 439 | reusify "^1.0.4" 440 | 441 | fill-range@^7.0.1: 442 | version "7.0.1" 443 | resolved "https://registry.yarnpkg.com/fill-range/-/fill-range-7.0.1.tgz#1919a6a7c75fe38b2c7c77e5198535da9acdda40" 444 | integrity sha512-qOo9F+dMUmC2Lcb4BbVvnKJxTPjCm+RRpe4gDuGrzkL7mEVl/djYSu2OdQ2Pa302N4oqkSg9ir6jaLWJ2USVpQ== 445 | dependencies: 446 | to-regex-range "^5.0.1" 447 | 448 | fraction.js@^4.2.0: 449 | version "4.2.0" 450 | resolved "https://registry.yarnpkg.com/fraction.js/-/fraction.js-4.2.0.tgz#448e5109a313a3527f5a3ab2119ec4cf0e0e2950" 451 | integrity sha512-MhLuK+2gUcnZe8ZHlaaINnQLl0xRIGRfcGk2yl8xoQAfHrSsL3rYu6FCmBdkdbhc9EPlwyGHewaRsvwRMJtAlA== 452 | 453 | fs.realpath@^1.0.0: 454 | version "1.0.0" 455 | resolved "https://registry.yarnpkg.com/fs.realpath/-/fs.realpath-1.0.0.tgz#1504ad2523158caa40db4a2787cb01411994ea4f" 456 | integrity sha512-OO0pH2lK6a0hZnAdau5ItzHPI6pUlvI7jMVnxUQRtw4owF2wk8lOSabtGDCTP4Ggrg2MbGnWO9X8K1t4+fGMDw== 457 | 458 | fsevents@~2.3.2: 459 | version "2.3.2" 460 | resolved "https://registry.yarnpkg.com/fsevents/-/fsevents-2.3.2.tgz#8a526f78b8fdf4623b709e0b975c52c24c02fd1a" 461 | integrity sha512-xiqMQR4xAeHTuB9uWm+fFRcIOgKBMiOBP+eXiyT7jsgVCq1bkVygt00oASowB7EdtpOHaaPgKt812P9ab+DDKA== 462 | 463 | get-stream@^6.0.0: 464 | version "6.0.1" 465 | resolved "https://registry.yarnpkg.com/get-stream/-/get-stream-6.0.1.tgz#a262d8eef67aced57c2852ad6167526a43cbf7b7" 466 | integrity sha512-ts6Wi+2j3jQjqi70w5AlN8DFnkSwC+MqmxEzdEALB2qXZYV3X/b1CTfgPLGJNMeAWxdPfU8FO1ms3NUfaHCPYg== 467 | 468 | glob-parent@^5.1.2, glob-parent@~5.1.2: 469 | version "5.1.2" 470 | resolved "https://registry.yarnpkg.com/glob-parent/-/glob-parent-5.1.2.tgz#869832c58034fe68a4093c17dc15e8340d8401c4" 471 | integrity sha512-AOIgSQCepiJYwP3ARnGx+5VnTu2HBYdzbGP45eLw1vr3zB3vZLeyed1sC9hnbcOc9/SrMyM5RPQrkGz4aS9Zow== 472 | dependencies: 473 | is-glob "^4.0.1" 474 | 475 | glob@7.1.6: 476 | version "7.1.6" 477 | resolved "https://registry.yarnpkg.com/glob/-/glob-7.1.6.tgz#141f33b81a7c2492e125594307480c46679278a6" 478 | integrity sha512-LwaxwyZ72Lk7vZINtNNrywX0ZuLyStrdDtabefZKAY5ZGJhVtgdznluResxNmPitE0SAO+O26sWTHeKSI2wMBA== 479 | dependencies: 480 | fs.realpath "^1.0.0" 481 | inflight "^1.0.4" 482 | inherits "2" 483 | minimatch "^3.0.4" 484 | once "^1.3.0" 485 | path-is-absolute "^1.0.0" 486 | 487 | globby@^11.0.3: 488 | version "11.1.0" 489 | resolved "https://registry.yarnpkg.com/globby/-/globby-11.1.0.tgz#bd4be98bb042f83d796f7e3811991fbe82a0d34b" 490 | integrity sha512-jhIXaOzy1sb8IyocaruWSn1TjmnBVs8Ayhcy83rmxNJ8q2uWKCAj3CnJY+KpGSXCueAPc0i05kVvVKtP1t9S3g== 491 | dependencies: 492 | array-union "^2.1.0" 493 | dir-glob "^3.0.1" 494 | fast-glob "^3.2.9" 495 | ignore "^5.2.0" 496 | merge2 "^1.4.1" 497 | slash "^3.0.0" 498 | 499 | human-signals@^2.1.0: 500 | version "2.1.0" 501 | resolved "https://registry.yarnpkg.com/human-signals/-/human-signals-2.1.0.tgz#dc91fcba42e4d06e4abaed33b3e7a3c02f514ea0" 502 | integrity sha512-B4FFZ6q/T2jhhksgkbEW3HBvWIfDW85snkQgawt07S7J5QXTk6BkNV+0yAeZrM5QpMAdYlocGoljn0sJ/WQkFw== 503 | 504 | ignore@^5.2.0: 505 | version "5.2.0" 506 | resolved "https://registry.yarnpkg.com/ignore/-/ignore-5.2.0.tgz#6d3bac8fa7fe0d45d9f9be7bac2fc279577e345a" 507 | integrity sha512-CmxgYGiEPCLhfLnpPp1MoRmifwEIOgjcHXxOBjv7mY96c+eWScsOP9c112ZyLdWHi0FxHjI+4uVhKYp/gcdRmQ== 508 | 509 | inflight@^1.0.4: 510 | version "1.0.6" 511 | resolved "https://registry.yarnpkg.com/inflight/-/inflight-1.0.6.tgz#49bd6331d7d02d0c09bc910a1075ba8165b56df9" 512 | integrity sha512-k92I/b08q4wvFscXCLvqfsHCrjrF7yiXsQuIVvVE7N82W3+aqpzuUdBbfhWcy/FZR3/4IgflMgKLOsvPDrGCJA== 513 | dependencies: 514 | once "^1.3.0" 515 | wrappy "1" 516 | 517 | inherits@2: 518 | version "2.0.4" 519 | resolved "https://registry.yarnpkg.com/inherits/-/inherits-2.0.4.tgz#0fa2c64f932917c3433a0ded55363aae37416b7c" 520 | integrity sha512-k/vGaX4/Yla3WzyMCvTQOXYeIHvqOKtnqBduzTHpzpQZzAskKMhZ2K+EnBiSM9zGSoIFeMpXKxa4dYeZIQqewQ== 521 | 522 | is-binary-path@~2.1.0: 523 | version "2.1.0" 524 | resolved "https://registry.yarnpkg.com/is-binary-path/-/is-binary-path-2.1.0.tgz#ea1f7f3b80f064236e83470f86c09c254fb45b09" 525 | integrity sha512-ZMERYes6pDydyuGidse7OsHxtbI7WVeUEozgR/g7rd0xUimYNlvZRE/K2MgZTjWy725IfelLeVcEM97mmtRGXw== 526 | dependencies: 527 | binary-extensions "^2.0.0" 528 | 529 | is-extglob@^2.1.1: 530 | version "2.1.1" 531 | resolved "https://registry.yarnpkg.com/is-extglob/-/is-extglob-2.1.1.tgz#a88c02535791f02ed37c76a1b9ea9773c833f8c2" 532 | integrity sha512-SbKbANkN603Vi4jEZv49LeVJMn4yGwsbzZworEoyEiutsN3nJYdbO36zfhGJ6QEDpOZIFkDtnq5JRxmvl3jsoQ== 533 | 534 | is-glob@^4.0.1, is-glob@~4.0.1: 535 | version "4.0.3" 536 | resolved "https://registry.yarnpkg.com/is-glob/-/is-glob-4.0.3.tgz#64f61e42cbbb2eec2071a9dac0b28ba1e65d5084" 537 | integrity sha512-xelSayHH36ZgE7ZWhli7pW34hNbNl8Ojv5KVmkJD4hBdD3th8Tfk9vYasLM+mXWOZhFkgZfxhLSnrwRr4elSSg== 538 | dependencies: 539 | is-extglob "^2.1.1" 540 | 541 | is-number@^7.0.0: 542 | version "7.0.0" 543 | resolved "https://registry.yarnpkg.com/is-number/-/is-number-7.0.0.tgz#7535345b896734d5f80c4d06c50955527a14f12b" 544 | integrity sha512-41Cifkg6e8TylSpdtTpeLVMqvSBEVzTttHvERD741+pnZ8ANv0004MRL43QKPDlK9cGvNp6NZWZUBlbGXYxxng== 545 | 546 | is-stream@^2.0.0: 547 | version "2.0.1" 548 | resolved "https://registry.yarnpkg.com/is-stream/-/is-stream-2.0.1.tgz#fac1e3d53b97ad5a9d0ae9cef2389f5810a5c077" 549 | integrity sha512-hFoiJiTl63nn+kstHGBtewWSKnQLpyb155KHheA1l39uvtO9nWIop1p3udqPcUd/xbF1VLMO4n7OI6p7RbngDg== 550 | 551 | isexe@^2.0.0: 552 | version "2.0.0" 553 | resolved "https://registry.yarnpkg.com/isexe/-/isexe-2.0.0.tgz#e8fbf374dc556ff8947a10dcb0572d633f2cfa10" 554 | integrity sha512-RHxMLp9lnKHGHRng9QFhRCMbYAcVpn69smSGcq3f36xjgVVWThj4qqLbTLlq7Ssj8B+fIQ1EuCEGI2lKsyQeIw== 555 | 556 | isomorphic-fetch@^3.0.0: 557 | version "3.0.0" 558 | resolved "https://registry.yarnpkg.com/isomorphic-fetch/-/isomorphic-fetch-3.0.0.tgz#0267b005049046d2421207215d45d6a262b8b8b4" 559 | integrity sha512-qvUtwJ3j6qwsF3jLxkZ72qCgjMysPzDfeV240JHiGZsANBYd+EEuu35v7dfrJ9Up0Ak07D7GGSkGhCHTqg/5wA== 560 | dependencies: 561 | node-fetch "^2.6.1" 562 | whatwg-fetch "^3.4.1" 563 | 564 | joycon@^3.0.1: 565 | version "3.1.1" 566 | resolved "https://registry.yarnpkg.com/joycon/-/joycon-3.1.1.tgz#bce8596d6ae808f8b68168f5fc69280996894f03" 567 | integrity sha512-34wB/Y7MW7bzjKRjUKTa46I2Z7eV62Rkhva+KkopW7Qvv/OSWBqvkSY7vusOPrNuZcUG3tApvdVgNB8POj3SPw== 568 | 569 | "js-tokens@^3.0.0 || ^4.0.0": 570 | version "4.0.0" 571 | resolved "https://registry.yarnpkg.com/js-tokens/-/js-tokens-4.0.0.tgz#19203fb59991df98e3a287050d4647cdeaf32499" 572 | integrity sha512-RdJUflcE3cUzKiMqQgsCu06FPu9UdIJO0beYbPhHN4k6apgJtifcoCtT9bcxOpYBtpD2kCM6Sbzg4CausW/PKQ== 573 | 574 | lilconfig@^2.0.5: 575 | version "2.0.5" 576 | resolved "https://registry.yarnpkg.com/lilconfig/-/lilconfig-2.0.5.tgz#19e57fd06ccc3848fd1891655b5a447092225b25" 577 | integrity sha512-xaYmXZtTHPAw5m+xLN8ab9C+3a8YmV3asNSPOATITbtwrfbwaLJj8h66H1WMIpALCkqsIzK3h7oQ+PdX+LQ9Eg== 578 | 579 | lines-and-columns@^1.1.6: 580 | version "1.2.4" 581 | resolved "https://registry.yarnpkg.com/lines-and-columns/-/lines-and-columns-1.2.4.tgz#eca284f75d2965079309dc0ad9255abb2ebc1632" 582 | integrity sha512-7ylylesZQ/PV29jhEDl3Ufjo6ZX7gCqJr5F7PKrqc93v7fzSymt1BpwEU8nAUXs8qzzvqhbjhK5QZg6Mt/HkBg== 583 | 584 | load-tsconfig@^0.2.0: 585 | version "0.2.3" 586 | resolved "https://registry.yarnpkg.com/load-tsconfig/-/load-tsconfig-0.2.3.tgz#08af3e7744943caab0c75f8af7f1703639c3ef1f" 587 | integrity sha512-iyT2MXws+dc2Wi6o3grCFtGXpeMvHmJqS27sMPGtV2eUu4PeFnG+33I8BlFK1t1NWMjOpcx9bridn5yxLDX2gQ== 588 | 589 | lodash.sortby@^4.7.0: 590 | version "4.7.0" 591 | resolved "https://registry.yarnpkg.com/lodash.sortby/-/lodash.sortby-4.7.0.tgz#edd14c824e2cc9c1e0b0a1b42bb5210516a42438" 592 | integrity sha512-HDWXG8isMntAyRF5vZ7xKuEvOhT4AhlRt/3czTSjvGUxjYCBVRQY48ViDHyfYz9VIoBkW4TMGQNapx+l3RUwdA== 593 | 594 | loose-envify@^1.1.0: 595 | version "1.4.0" 596 | resolved "https://registry.yarnpkg.com/loose-envify/-/loose-envify-1.4.0.tgz#71ee51fa7be4caec1a63839f7e682d8132d30caf" 597 | integrity sha512-lyuxPGr/Wfhrlem2CL/UcnUc1zcqKAImBDzukY7Y5F/yQiNdko6+fRLevlw1HgMySw7f611UIY408EtxRSoK3Q== 598 | dependencies: 599 | js-tokens "^3.0.0 || ^4.0.0" 600 | 601 | merge-stream@^2.0.0: 602 | version "2.0.0" 603 | resolved "https://registry.yarnpkg.com/merge-stream/-/merge-stream-2.0.0.tgz#52823629a14dd00c9770fb6ad47dc6310f2c1f60" 604 | integrity sha512-abv/qOcuPfk3URPfDzmZU1LKmuw8kT+0nIHvKrKgFrwifol/doWcdA4ZqsWQ8ENrFKkd67Mfpo/LovbIUsbt3w== 605 | 606 | merge2@^1.3.0, merge2@^1.4.1: 607 | version "1.4.1" 608 | resolved "https://registry.yarnpkg.com/merge2/-/merge2-1.4.1.tgz#4368892f885e907455a6fd7dc55c0c9d404990ae" 609 | integrity sha512-8q7VEgMJW4J8tcfVPy8g09NcQwZdbwFEqhe/WZkoIzjn/3TGDwtOCYtXGxA3O8tPzpczCCDgv+P2P5y00ZJOOg== 610 | 611 | micromatch@^4.0.4: 612 | version "4.0.5" 613 | resolved "https://registry.yarnpkg.com/micromatch/-/micromatch-4.0.5.tgz#bc8999a7cbbf77cdc89f132f6e467051b49090c6" 614 | integrity sha512-DMy+ERcEW2q8Z2Po+WNXuw3c5YaUSFjAO5GsJqfEl7UjvtIuFKO6ZrKvcItdy98dwFI2N1tg3zNIdKaQT+aNdA== 615 | dependencies: 616 | braces "^3.0.2" 617 | picomatch "^2.3.1" 618 | 619 | mimic-fn@^2.1.0: 620 | version "2.1.0" 621 | resolved "https://registry.yarnpkg.com/mimic-fn/-/mimic-fn-2.1.0.tgz#7ed2c2ccccaf84d3ffcb7a69b57711fc2083401b" 622 | integrity sha512-OqbOk5oEQeAZ8WXWydlu9HJjz9WVdEIvamMCcXmuqUYjTknH/sqsWvhQ3vgwKFRR1HpjvNBKQ37nbJgYzGqGcg== 623 | 624 | minimatch@^3.0.4: 625 | version "3.1.2" 626 | resolved "https://registry.yarnpkg.com/minimatch/-/minimatch-3.1.2.tgz#19cd194bfd3e428f049a70817c038d89ab4be35b" 627 | integrity sha512-J7p63hRiAjw1NDEww1W7i37+ByIrOWO5XQQAzZ3VOcL0PNybwpfmV/N05zFAzwQ9USyEcX6t3UO+K5aqBQOIHw== 628 | dependencies: 629 | brace-expansion "^1.1.7" 630 | 631 | ms@2.1.2: 632 | version "2.1.2" 633 | resolved "https://registry.yarnpkg.com/ms/-/ms-2.1.2.tgz#d09d1f357b443f493382a8eb3ccd183872ae6009" 634 | integrity sha512-sGkPx+VjMtmA6MX27oA4FBFELFCZZ4S4XqeGOXCv68tT+jb3vk/RyaKWP0PTKyWtmLSM0b+adUTEvbs1PEaH2w== 635 | 636 | mz@^2.7.0: 637 | version "2.7.0" 638 | resolved "https://registry.yarnpkg.com/mz/-/mz-2.7.0.tgz#95008057a56cafadc2bc63dde7f9ff6955948e32" 639 | integrity sha512-z81GNO7nnYMEhrGh9LeymoE4+Yr0Wn5McHIZMK5cfQCl+NDX08sCZgUc9/6MHni9IWuFLm1Z3HTCXu2z9fN62Q== 640 | dependencies: 641 | any-promise "^1.0.0" 642 | object-assign "^4.0.1" 643 | thenify-all "^1.0.0" 644 | 645 | nanoid@^3.1.30, nanoid@^3.3.3, nanoid@^3.3.4: 646 | version "3.3.4" 647 | resolved "https://registry.yarnpkg.com/nanoid/-/nanoid-3.3.4.tgz#730b67e3cd09e2deacf03c027c81c9d9dbc5e8ab" 648 | integrity sha512-MqBkQh/OHTS2egovRtLk45wEyNXwF+cokD+1YPf9u5VfJiRdAiRwB2froX5Co9Rh20xs4siNPm8naNotSD6RBw== 649 | 650 | next@^12.1.5: 651 | version "12.1.6" 652 | resolved "https://registry.yarnpkg.com/next/-/next-12.1.6.tgz#eb205e64af1998651f96f9df44556d47d8bbc533" 653 | integrity sha512-cebwKxL3/DhNKfg9tPZDQmbRKjueqykHHbgaoG4VBRH3AHQJ2HO0dbKFiS1hPhe1/qgc2d/hFeadsbPicmLD+A== 654 | dependencies: 655 | "@next/env" "12.1.6" 656 | caniuse-lite "^1.0.30001332" 657 | postcss "8.4.5" 658 | styled-jsx "5.0.2" 659 | optionalDependencies: 660 | "@next/swc-android-arm-eabi" "12.1.6" 661 | "@next/swc-android-arm64" "12.1.6" 662 | "@next/swc-darwin-arm64" "12.1.6" 663 | "@next/swc-darwin-x64" "12.1.6" 664 | "@next/swc-linux-arm-gnueabihf" "12.1.6" 665 | "@next/swc-linux-arm64-gnu" "12.1.6" 666 | "@next/swc-linux-arm64-musl" "12.1.6" 667 | "@next/swc-linux-x64-gnu" "12.1.6" 668 | "@next/swc-linux-x64-musl" "12.1.6" 669 | "@next/swc-win32-arm64-msvc" "12.1.6" 670 | "@next/swc-win32-ia32-msvc" "12.1.6" 671 | "@next/swc-win32-x64-msvc" "12.1.6" 672 | 673 | node-fetch@^2.6.1: 674 | version "2.6.7" 675 | resolved "https://registry.yarnpkg.com/node-fetch/-/node-fetch-2.6.7.tgz#24de9fba827e3b4ae44dc8b20256a379160052ad" 676 | integrity sha512-ZjMPFEfVx5j+y2yF35Kzx5sF7kDzxuDj6ziH4FFbOp87zKDZNx8yExJIb05OGF4Nlt9IHFIMBkRl41VdvcNdbQ== 677 | dependencies: 678 | whatwg-url "^5.0.0" 679 | 680 | node-releases@^2.0.3: 681 | version "2.0.5" 682 | resolved "https://registry.yarnpkg.com/node-releases/-/node-releases-2.0.5.tgz#280ed5bc3eba0d96ce44897d8aee478bfb3d9666" 683 | integrity sha512-U9h1NLROZTq9uE1SNffn6WuPDg8icmi3ns4rEl/oTfIle4iLjTliCzgTsbaIFMq/Xn078/lfY/BL0GWZ+psK4Q== 684 | 685 | normalize-path@^3.0.0, normalize-path@~3.0.0: 686 | version "3.0.0" 687 | resolved "https://registry.yarnpkg.com/normalize-path/-/normalize-path-3.0.0.tgz#0dcd69ff23a1c9b11fd0978316644a0388216a65" 688 | integrity sha512-6eZs5Ls3WtCisHWp9S2GUy8dqkpGi4BVSz3GaqiE6ezub0512ESztXUwUB6C6IKbQkY2Pnb/mD4WYojCRwcwLA== 689 | 690 | normalize-range@^0.1.2: 691 | version "0.1.2" 692 | resolved "https://registry.yarnpkg.com/normalize-range/-/normalize-range-0.1.2.tgz#2d10c06bdfd312ea9777695a4d28439456b75942" 693 | integrity sha512-bdok/XvKII3nUpklnV6P2hxtMNrCboOjAcyBuQnWEhO665FwrSNRxU+AqpsyvO6LgGYPspN+lu5CLtw4jPRKNA== 694 | 695 | npm-run-path@^4.0.1: 696 | version "4.0.1" 697 | resolved "https://registry.yarnpkg.com/npm-run-path/-/npm-run-path-4.0.1.tgz#b7ecd1e5ed53da8e37a55e1c2269e0b97ed748ea" 698 | integrity sha512-S48WzZW777zhNIrn7gxOlISNAqi9ZC/uQFnRdbeIHhZhCA6UqpkOT8T1G7BvfdgP4Er8gF4sUbaS0i7QvIfCWw== 699 | dependencies: 700 | path-key "^3.0.0" 701 | 702 | object-assign@^4.0.1, object-assign@^4.1.1: 703 | version "4.1.1" 704 | resolved "https://registry.yarnpkg.com/object-assign/-/object-assign-4.1.1.tgz#2109adc7965887cfc05cbbd442cac8bfbb360863" 705 | integrity sha512-rJgTQnkUnH1sFw8yT6VSU3zD3sWmu6sZhIseY8VX+GRu3P6F7Fu+JNDoXfklElbLJSnc3FUQHVe4cU5hj+BcUg== 706 | 707 | once@^1.3.0: 708 | version "1.4.0" 709 | resolved "https://registry.yarnpkg.com/once/-/once-1.4.0.tgz#583b1aa775961d4b113ac17d9c50baef9dd76bd1" 710 | integrity sha512-lNaJgI+2Q5URQBkccEKHTQOPaXdUxnZZElQTZY0MFUAuaEqe1E+Nyvgdz/aIyNi6Z9MzO5dv1H8n58/GELp3+w== 711 | dependencies: 712 | wrappy "1" 713 | 714 | onetime@^5.1.2: 715 | version "5.1.2" 716 | resolved "https://registry.yarnpkg.com/onetime/-/onetime-5.1.2.tgz#d0e96ebb56b07476df1dd9c4806e5237985ca45e" 717 | integrity sha512-kbpaSSGJTWdAY5KPVeMOKXSrPtr8C8C7wodJbcsd51jRnmD+GZu8Y0VoU6Dm5Z4vWr0Ig/1NKuWRKf7j5aaYSg== 718 | dependencies: 719 | mimic-fn "^2.1.0" 720 | 721 | path-is-absolute@^1.0.0: 722 | version "1.0.1" 723 | resolved "https://registry.yarnpkg.com/path-is-absolute/-/path-is-absolute-1.0.1.tgz#174b9268735534ffbc7ace6bf53a5a9e1b5c5f5f" 724 | integrity sha512-AVbw3UJ2e9bq64vSaS9Am0fje1Pa8pbGqTTsmXfaIiMpnr5DlDhfJOuLj9Sf95ZPVDAUerDfEk88MPmPe7UCQg== 725 | 726 | path-key@^3.0.0, path-key@^3.1.0: 727 | version "3.1.1" 728 | resolved "https://registry.yarnpkg.com/path-key/-/path-key-3.1.1.tgz#581f6ade658cbba65a0d3380de7753295054f375" 729 | integrity sha512-ojmeN0qd+y0jszEtoY48r0Peq5dwMEkIlCOu6Q5f41lfkswXuKtYrhgoTpLnyIcHm24Uhqx+5Tqm2InSwLhE6Q== 730 | 731 | path-type@^4.0.0: 732 | version "4.0.0" 733 | resolved "https://registry.yarnpkg.com/path-type/-/path-type-4.0.0.tgz#84ed01c0a7ba380afe09d90a8c180dcd9d03043b" 734 | integrity sha512-gDKb8aZMDeD/tZWs9P6+q0J9Mwkdl6xMV8TjnGP3qJVJ06bdMgkbBlLU8IdfOsIsFz2BW1rNVT3XuNEl8zPAvw== 735 | 736 | picocolors@^1.0.0: 737 | version "1.0.0" 738 | resolved "https://registry.yarnpkg.com/picocolors/-/picocolors-1.0.0.tgz#cb5bdc74ff3f51892236eaf79d68bc44564ab81c" 739 | integrity sha512-1fygroTLlHu66zi26VoTDv8yRgm0Fccecssto+MhsZ0D/DGW2sm8E8AjW7NU5VVTRt5GxbeZ5qBuJr+HyLYkjQ== 740 | 741 | picomatch@^2.0.4, picomatch@^2.2.1, picomatch@^2.3.1: 742 | version "2.3.1" 743 | resolved "https://registry.yarnpkg.com/picomatch/-/picomatch-2.3.1.tgz#3ba3833733646d9d3e4995946c1365a67fb07a42" 744 | integrity sha512-JU3teHTNjmE2VCGFzuY8EXzCDVwEqB2a8fsIvwaStHhAWJEeVd1o1QD80CU6+ZdEXXSLbSsuLwJjkCBWqRQUVA== 745 | 746 | pirates@^4.0.1: 747 | version "4.0.5" 748 | resolved "https://registry.yarnpkg.com/pirates/-/pirates-4.0.5.tgz#feec352ea5c3268fb23a37c702ab1699f35a5f3b" 749 | integrity sha512-8V9+HQPupnaXMA23c5hvl69zXvTwTzyAYasnkb0Tts4XvO4CliqONMOnvlq26rkhLC3nWDFBJf73LU1e1VZLaQ== 750 | 751 | postcss-load-config@^3.0.1: 752 | version "3.1.4" 753 | resolved "https://registry.yarnpkg.com/postcss-load-config/-/postcss-load-config-3.1.4.tgz#1ab2571faf84bb078877e1d07905eabe9ebda855" 754 | integrity sha512-6DiM4E7v4coTE4uzA8U//WhtPwyhiim3eyjEMFCnUpzbrkK9wJHgKDT2mR+HbtSrd/NubVaYTOpSpjUl8NQeRg== 755 | dependencies: 756 | lilconfig "^2.0.5" 757 | yaml "^1.10.2" 758 | 759 | postcss-value-parser@^4.2.0: 760 | version "4.2.0" 761 | resolved "https://registry.yarnpkg.com/postcss-value-parser/-/postcss-value-parser-4.2.0.tgz#723c09920836ba6d3e5af019f92bc0971c02e514" 762 | integrity sha512-1NNCs6uurfkVbeXG4S8JFT9t19m45ICnif8zWLd5oPSZ50QnwMfK+H3jv408d4jw/7Bttv5axS5IiHoLaVNHeQ== 763 | 764 | postcss@8.4.5: 765 | version "8.4.5" 766 | resolved "https://registry.yarnpkg.com/postcss/-/postcss-8.4.5.tgz#bae665764dfd4c6fcc24dc0fdf7e7aa00cc77f95" 767 | integrity sha512-jBDboWM8qpaqwkMwItqTQTiFikhs/67OYVvblFFTM7MrZjt6yMKd6r2kgXizEbTTljacm4NldIlZnhbjr84QYg== 768 | dependencies: 769 | nanoid "^3.1.30" 770 | picocolors "^1.0.0" 771 | source-map-js "^1.0.1" 772 | 773 | postcss@^8.4.12: 774 | version "8.4.14" 775 | resolved "https://registry.yarnpkg.com/postcss/-/postcss-8.4.14.tgz#ee9274d5622b4858c1007a74d76e42e56fd21caf" 776 | integrity sha512-E398TUmfAYFPBSdzgeieK2Y1+1cpdxJx8yXbK/m57nRhKSmk1GB2tO4lbLBtlkfPQTDKfe4Xqv1ASWPpayPEig== 777 | dependencies: 778 | nanoid "^3.3.4" 779 | picocolors "^1.0.0" 780 | source-map-js "^1.0.2" 781 | 782 | prettier@^2.6.2: 783 | version "2.6.2" 784 | resolved "https://registry.yarnpkg.com/prettier/-/prettier-2.6.2.tgz#e26d71a18a74c3d0f0597f55f01fb6c06c206032" 785 | integrity sha512-PkUpF+qoXTqhOeWL9fu7As8LXsIUZ1WYaJiY/a7McAQzxjk82OF0tibkFXVCDImZtWxbvojFjerkiLb0/q8mew== 786 | 787 | punycode@^2.1.0: 788 | version "2.1.1" 789 | resolved "https://registry.yarnpkg.com/punycode/-/punycode-2.1.1.tgz#b58b010ac40c22c5657616c8d2c2c02c7bf479ec" 790 | integrity sha512-XRsRjdf+j5ml+y/6GKHPZbrF/8p2Yga0JPtdqTIY2Xe5ohJPD9saDJJLPvp9+NSBprVvevdXZybnj2cv8OEd0A== 791 | 792 | queue-microtask@^1.2.2: 793 | version "1.2.3" 794 | resolved "https://registry.yarnpkg.com/queue-microtask/-/queue-microtask-1.2.3.tgz#4929228bbc724dfac43e0efb058caf7b6cfb6243" 795 | integrity sha512-NuaNSa6flKT5JaSYQzJok04JzTL1CA6aGhv5rfLW3PgqA+M2ChpZQnAC8h8i4ZFkBS8X5RqkDBHA7r4hej3K9A== 796 | 797 | react-dom@17.0.2: 798 | version "17.0.2" 799 | resolved "https://registry.yarnpkg.com/react-dom/-/react-dom-17.0.2.tgz#ecffb6845e3ad8dbfcdc498f0d0a939736502c23" 800 | integrity sha512-s4h96KtLDUQlsENhMn1ar8t2bEa+q/YAtj8pPPdIjPDGBDIVNsrD9aXNWqspUe6AzKCIG0C1HZZLqLV7qpOBGA== 801 | dependencies: 802 | loose-envify "^1.1.0" 803 | object-assign "^4.1.1" 804 | scheduler "^0.20.2" 805 | 806 | react-textarea-autosize@^8.3.3: 807 | version "8.3.4" 808 | resolved "https://registry.yarnpkg.com/react-textarea-autosize/-/react-textarea-autosize-8.3.4.tgz#270a343de7ad350534141b02c9cb78903e553524" 809 | integrity sha512-CdtmP8Dc19xL8/R6sWvtknD/eCXkQr30dtvC4VmGInhRsfF8X/ihXCq6+9l9qbxmKRiq407/7z5fxE7cVWQNgQ== 810 | dependencies: 811 | "@babel/runtime" "^7.10.2" 812 | use-composed-ref "^1.3.0" 813 | use-latest "^1.2.1" 814 | 815 | react@17.0.2: 816 | version "17.0.2" 817 | resolved "https://registry.yarnpkg.com/react/-/react-17.0.2.tgz#d0b5cc516d29eb3eee383f75b62864cfb6800037" 818 | integrity sha512-gnhPt75i/dq/z3/6q/0asP78D0u592D5L1pd7M8P+dck6Fu/jJeL6iVVK23fptSUZj8Vjf++7wXA8UNclGQcbA== 819 | dependencies: 820 | loose-envify "^1.1.0" 821 | object-assign "^4.1.1" 822 | 823 | readdirp@~3.6.0: 824 | version "3.6.0" 825 | resolved "https://registry.yarnpkg.com/readdirp/-/readdirp-3.6.0.tgz#74a370bd857116e245b29cc97340cd431a02a6c7" 826 | integrity sha512-hOS089on8RduqdbhvQ5Z37A0ESjsqz6qnRcffsMU3495FuTdqSm+7bhJ29JvIOsBDEEnan5DPu9t3To9VRlMzA== 827 | dependencies: 828 | picomatch "^2.2.1" 829 | 830 | regenerator-runtime@^0.13.4: 831 | version "0.13.9" 832 | resolved "https://registry.yarnpkg.com/regenerator-runtime/-/regenerator-runtime-0.13.9.tgz#8925742a98ffd90814988d7566ad30ca3b263b52" 833 | integrity sha512-p3VT+cOEgxFsRRA9X4lkI1E+k2/CtnKtU4gcxyaCUreilL/vqI6CdZ3wxVUx3UOUg+gnUOQQcRI7BmSI656MYA== 834 | 835 | resolve-from@^5.0.0: 836 | version "5.0.0" 837 | resolved "https://registry.yarnpkg.com/resolve-from/-/resolve-from-5.0.0.tgz#c35225843df8f776df21c57557bc087e9dfdfc69" 838 | integrity sha512-qYg9KP24dD5qka9J47d0aVky0N+b4fTU89LN9iDnjB5waksiC49rvMB0PrUJQGoTmH50XPiqOvAjDfaijGxYZw== 839 | 840 | reusify@^1.0.4: 841 | version "1.0.4" 842 | resolved "https://registry.yarnpkg.com/reusify/-/reusify-1.0.4.tgz#90da382b1e126efc02146e90845a88db12925d76" 843 | integrity sha512-U9nH88a3fc/ekCF1l0/UP1IosiuIjyTh7hBvXVMHYgVcfGvt897Xguj2UOLDeI5BG2m7/uwyaLVT6fbtCwTyzw== 844 | 845 | rollup@^2.74.1: 846 | version "2.75.4" 847 | resolved "https://registry.yarnpkg.com/rollup/-/rollup-2.75.4.tgz#c3518c326c98e508b628a93015a03a276c331f22" 848 | integrity sha512-JgZiJMJkKImMZJ8ZY1zU80Z2bA/TvrL/7D9qcBCrfl2bP+HUaIw0QHUroB4E3gBpFl6CRFM1YxGbuYGtdAswbQ== 849 | optionalDependencies: 850 | fsevents "~2.3.2" 851 | 852 | run-parallel@^1.1.9: 853 | version "1.2.0" 854 | resolved "https://registry.yarnpkg.com/run-parallel/-/run-parallel-1.2.0.tgz#66d1368da7bdf921eb9d95bd1a9229e7f21a43ee" 855 | integrity sha512-5l4VyZR86LZ/lDxZTR6jqL8AFE2S0IFLMP26AbjsLVADxHdhB/c0GUsH+y39UfCi3dzz8OlQuPmnaJOMoDHQBA== 856 | dependencies: 857 | queue-microtask "^1.2.2" 858 | 859 | scheduler@^0.20.2: 860 | version "0.20.2" 861 | resolved "https://registry.yarnpkg.com/scheduler/-/scheduler-0.20.2.tgz#4baee39436e34aa93b4874bddcbf0fe8b8b50e91" 862 | integrity sha512-2eWfGgAqqWFGqtdMmcL5zCMK1U8KlXv8SQFGglL3CEtd0aDVDWgeF/YoCmvln55m5zSk3J/20hTaSBeSObsQDQ== 863 | dependencies: 864 | loose-envify "^1.1.0" 865 | object-assign "^4.1.1" 866 | 867 | shebang-command@^2.0.0: 868 | version "2.0.0" 869 | resolved "https://registry.yarnpkg.com/shebang-command/-/shebang-command-2.0.0.tgz#ccd0af4f8835fbdc265b82461aaf0c36663f34ea" 870 | integrity sha512-kHxr2zZpYtdmrN1qDjrrX/Z1rR1kG8Dx+gkpK1G4eXmvXswmcE1hTWBWYUzlraYw1/yZp6YuDY77YtvbN0dmDA== 871 | dependencies: 872 | shebang-regex "^3.0.0" 873 | 874 | shebang-regex@^3.0.0: 875 | version "3.0.0" 876 | resolved "https://registry.yarnpkg.com/shebang-regex/-/shebang-regex-3.0.0.tgz#ae16f1644d873ecad843b0307b143362d4c42172" 877 | integrity sha512-7++dFhtcx3353uBaq8DDR4NuxBetBzC7ZQOhmTQInHEd6bSrXdiEyzCvG07Z44UYdLShWUyXt5M/yhz8ekcb1A== 878 | 879 | signal-exit@^3.0.3: 880 | version "3.0.7" 881 | resolved "https://registry.yarnpkg.com/signal-exit/-/signal-exit-3.0.7.tgz#a9a1767f8af84155114eaabd73f99273c8f59ad9" 882 | integrity sha512-wnD2ZE+l+SPC/uoS0vXeE9L1+0wuaMqKlfz9AMUo38JsyLSBWSFcHR1Rri62LZc12vLr1gb3jl7iwQhgwpAbGQ== 883 | 884 | slash@^3.0.0: 885 | version "3.0.0" 886 | resolved "https://registry.yarnpkg.com/slash/-/slash-3.0.0.tgz#6539be870c165adbd5240220dbe361f1bc4d4634" 887 | integrity sha512-g9Q1haeby36OSStwb4ntCGGGaKsaVSjQ68fBxoQcutl5fS1vuY18H3wSt3jFyFtrkx+Kz0V1G85A4MyAdDMi2Q== 888 | 889 | source-map-js@^1.0.1, source-map-js@^1.0.2: 890 | version "1.0.2" 891 | resolved "https://registry.yarnpkg.com/source-map-js/-/source-map-js-1.0.2.tgz#adbc361d9c62df380125e7f161f71c826f1e490c" 892 | integrity sha512-R0XvVJ9WusLiqTCEiGCmICCMplcCkIwwR11mOSD9CR5u+IXYdiseeEuXCVAjS54zqwkLcPNnmU4OeJ6tUrWhDw== 893 | 894 | source-map@0.8.0-beta.0: 895 | version "0.8.0-beta.0" 896 | resolved "https://registry.yarnpkg.com/source-map/-/source-map-0.8.0-beta.0.tgz#d4c1bb42c3f7ee925f005927ba10709e0d1d1f11" 897 | integrity sha512-2ymg6oRBpebeZi9UUNsgQ89bhx01TcTkmNTGnNO88imTmbSgy4nfujrgVEFKWpMTEGA11EDkTt7mqObTPdigIA== 898 | dependencies: 899 | whatwg-url "^7.0.0" 900 | 901 | strip-final-newline@^2.0.0: 902 | version "2.0.0" 903 | resolved "https://registry.yarnpkg.com/strip-final-newline/-/strip-final-newline-2.0.0.tgz#89b852fb2fcbe936f6f4b3187afb0a12c1ab58ad" 904 | integrity sha512-BrpvfNAE3dcvq7ll3xVumzjKjZQ5tI1sEUIKr3Uoks0XUl45St3FlatVqef9prk4jRDzhW6WZg+3bk93y6pLjA== 905 | 906 | styled-jsx@5.0.2: 907 | version "5.0.2" 908 | resolved "https://registry.yarnpkg.com/styled-jsx/-/styled-jsx-5.0.2.tgz#ff230fd593b737e9e68b630a694d460425478729" 909 | integrity sha512-LqPQrbBh3egD57NBcHET4qcgshPks+yblyhPlH2GY8oaDgKs8SK4C3dBh3oSJjgzJ3G5t1SYEZGHkP+QEpX9EQ== 910 | 911 | sucrase@^3.20.3: 912 | version "3.21.0" 913 | resolved "https://registry.yarnpkg.com/sucrase/-/sucrase-3.21.0.tgz#6a5affdbe716b22e4dc99c57d366ad0d216444b9" 914 | integrity sha512-FjAhMJjDcifARI7bZej0Bi1yekjWQHoEvWIXhLPwDhC6O4iZ5PtGb86WV56riW87hzpgB13wwBKO9vKAiWu5VQ== 915 | dependencies: 916 | commander "^4.0.0" 917 | glob "7.1.6" 918 | lines-and-columns "^1.1.6" 919 | mz "^2.7.0" 920 | pirates "^4.0.1" 921 | ts-interface-checker "^0.1.9" 922 | 923 | thenify-all@^1.0.0: 924 | version "1.6.0" 925 | resolved "https://registry.yarnpkg.com/thenify-all/-/thenify-all-1.6.0.tgz#1a1918d402d8fc3f98fbf234db0bcc8cc10e9726" 926 | integrity sha1-GhkY1ALY/D+Y+/I02wvMjMEOlyY= 927 | dependencies: 928 | thenify ">= 3.1.0 < 4" 929 | 930 | "thenify@>= 3.1.0 < 4": 931 | version "3.3.1" 932 | resolved "https://registry.yarnpkg.com/thenify/-/thenify-3.3.1.tgz#8932e686a4066038a016dd9e2ca46add9838a95f" 933 | integrity sha512-RVZSIV5IG10Hk3enotrhvz0T9em6cyHBLkH/YAZuKqd8hRkKhSfCGIcP2KUY0EPxndzANBmNllzWPwak+bheSw== 934 | dependencies: 935 | any-promise "^1.0.0" 936 | 937 | to-regex-range@^5.0.1: 938 | version "5.0.1" 939 | resolved "https://registry.yarnpkg.com/to-regex-range/-/to-regex-range-5.0.1.tgz#1648c44aae7c8d988a326018ed72f5b4dd0392e4" 940 | integrity sha512-65P7iz6X5yEr1cwcgvQxbbIw7Uk3gOy5dIdtZ4rDveLqhrdJP+Li/Hx6tyK0NEb+2GCyneCMJiGqrADCSNk8sQ== 941 | dependencies: 942 | is-number "^7.0.0" 943 | 944 | tr46@^1.0.1: 945 | version "1.0.1" 946 | resolved "https://registry.yarnpkg.com/tr46/-/tr46-1.0.1.tgz#a8b13fd6bfd2489519674ccde55ba3693b706d09" 947 | integrity sha1-qLE/1r/SSJUZZ0zN5VujaTtwbQk= 948 | dependencies: 949 | punycode "^2.1.0" 950 | 951 | tr46@~0.0.3: 952 | version "0.0.3" 953 | resolved "https://registry.yarnpkg.com/tr46/-/tr46-0.0.3.tgz#8184fd347dac9cdc185992f3a6622e14b9d9ab6a" 954 | integrity sha1-gYT9NH2snNwYWZLzpmIuFLnZq2o= 955 | 956 | tree-kill@^1.2.2: 957 | version "1.2.2" 958 | resolved "https://registry.yarnpkg.com/tree-kill/-/tree-kill-1.2.2.tgz#4ca09a9092c88b73a7cdc5e8a01b507b0790a0cc" 959 | integrity sha512-L0Orpi8qGpRG//Nd+H90vFB+3iHnue1zSSGmNOOCh1GLJ7rUKVwV2HvijphGQS2UmhUZewS9VgvxYIdgr+fG1A== 960 | 961 | ts-interface-checker@^0.1.9: 962 | version "0.1.13" 963 | resolved "https://registry.yarnpkg.com/ts-interface-checker/-/ts-interface-checker-0.1.13.tgz#784fd3d679722bc103b1b4b8030bcddb5db2a699" 964 | integrity sha512-Y/arvbn+rrz3JCKl9C4kVNfTfSm2/mEp5FSz5EsZSANGPSlQrpRI5M4PKF+mJnE52jOO90PnPSc3Ur3bTQw0gA== 965 | 966 | tsup@^5.12.6: 967 | version "5.12.9" 968 | resolved "https://registry.yarnpkg.com/tsup/-/tsup-5.12.9.tgz#8cdd9b4bc6493317cb92edf5f3476920dddcdb18" 969 | integrity sha512-dUpuouWZYe40lLufo64qEhDpIDsWhRbr2expv5dHEMjwqeKJS2aXA/FPqs1dxO4T6mBojo7rvo3jP9NNzaKyDg== 970 | dependencies: 971 | bundle-require "^3.0.2" 972 | cac "^6.7.12" 973 | chokidar "^3.5.1" 974 | debug "^4.3.1" 975 | esbuild "^0.14.25" 976 | execa "^5.0.0" 977 | globby "^11.0.3" 978 | joycon "^3.0.1" 979 | postcss-load-config "^3.0.1" 980 | resolve-from "^5.0.0" 981 | rollup "^2.74.1" 982 | source-map "0.8.0-beta.0" 983 | sucrase "^3.20.3" 984 | tree-kill "^1.2.2" 985 | 986 | typescript@^4.6.3: 987 | version "4.7.2" 988 | resolved "https://registry.yarnpkg.com/typescript/-/typescript-4.7.2.tgz#1f9aa2ceb9af87cca227813b4310fff0b51593c4" 989 | integrity sha512-Mamb1iX2FDUpcTRzltPxgWMKy3fhg0TN378ylbktPGPK/99KbDtMQ4W1hwgsbPAsG3a0xKa1vmw4VKZQbkvz5A== 990 | 991 | use-composed-ref@^1.3.0: 992 | version "1.3.0" 993 | resolved "https://registry.yarnpkg.com/use-composed-ref/-/use-composed-ref-1.3.0.tgz#3d8104db34b7b264030a9d916c5e94fbe280dbda" 994 | integrity sha512-GLMG0Jc/jiKov/3Ulid1wbv3r54K9HlMW29IWcDFPEqFkSO2nS0MuefWgMJpeHQ9YJeXDL3ZUF+P3jdXlZX/cQ== 995 | 996 | use-isomorphic-layout-effect@^1.1.1: 997 | version "1.1.2" 998 | resolved "https://registry.yarnpkg.com/use-isomorphic-layout-effect/-/use-isomorphic-layout-effect-1.1.2.tgz#497cefb13d863d687b08477d9e5a164ad8c1a6fb" 999 | integrity sha512-49L8yCO3iGT/ZF9QttjwLF/ZD9Iwto5LnH5LmEdk/6cFmXddqi2ulF0edxTwjj+7mqvpVVGQWvbXZdn32wRSHA== 1000 | 1001 | use-latest@^1.2.1: 1002 | version "1.2.1" 1003 | resolved "https://registry.yarnpkg.com/use-latest/-/use-latest-1.2.1.tgz#d13dfb4b08c28e3e33991546a2cee53e14038cf2" 1004 | integrity sha512-xA+AVm/Wlg3e2P/JiItTziwS7FK92LWrDB0p+hgXloIMuVCeJJ8v6f0eeHyPZaJrM+usM1FkFfbNCrJGs8A/zw== 1005 | dependencies: 1006 | use-isomorphic-layout-effect "^1.1.1" 1007 | 1008 | webidl-conversions@^3.0.0: 1009 | version "3.0.1" 1010 | resolved "https://registry.yarnpkg.com/webidl-conversions/-/webidl-conversions-3.0.1.tgz#24534275e2a7bc6be7bc86611cc16ae0a5654871" 1011 | integrity sha1-JFNCdeKnvGvnvIZhHMFq4KVlSHE= 1012 | 1013 | webidl-conversions@^4.0.2: 1014 | version "4.0.2" 1015 | resolved "https://registry.yarnpkg.com/webidl-conversions/-/webidl-conversions-4.0.2.tgz#a855980b1f0b6b359ba1d5d9fb39ae941faa63ad" 1016 | integrity sha512-YQ+BmxuTgd6UXZW3+ICGfyqRyHXVlD5GtQr5+qjiNW7bF0cqrzX500HVXPBOvgXb5YnzDd+h0zqyv61KUD7+Sg== 1017 | 1018 | whatwg-fetch@^3.4.1: 1019 | version "3.6.2" 1020 | resolved "https://registry.yarnpkg.com/whatwg-fetch/-/whatwg-fetch-3.6.2.tgz#dced24f37f2624ed0281725d51d0e2e3fe677f8c" 1021 | integrity sha512-bJlen0FcuU/0EMLrdbJ7zOnW6ITZLrZMIarMUVmdKtsGvZna8vxKYaexICWPfZ8qwf9fzNq+UEIZrnSaApt6RA== 1022 | 1023 | whatwg-url@^5.0.0: 1024 | version "5.0.0" 1025 | resolved "https://registry.yarnpkg.com/whatwg-url/-/whatwg-url-5.0.0.tgz#966454e8765462e37644d3626f6742ce8b70965d" 1026 | integrity sha1-lmRU6HZUYuN2RNNib2dCzotwll0= 1027 | dependencies: 1028 | tr46 "~0.0.3" 1029 | webidl-conversions "^3.0.0" 1030 | 1031 | whatwg-url@^7.0.0: 1032 | version "7.1.0" 1033 | resolved "https://registry.yarnpkg.com/whatwg-url/-/whatwg-url-7.1.0.tgz#c2c492f1eca612988efd3d2266be1b9fc6170d06" 1034 | integrity sha512-WUu7Rg1DroM7oQvGWfOiAK21n74Gg+T4elXEQYkOhtyLeWiJFoOGLXPKI/9gzIie9CtwVLm8wtw6YJdKyxSjeg== 1035 | dependencies: 1036 | lodash.sortby "^4.7.0" 1037 | tr46 "^1.0.1" 1038 | webidl-conversions "^4.0.2" 1039 | 1040 | which@^2.0.1: 1041 | version "2.0.2" 1042 | resolved "https://registry.yarnpkg.com/which/-/which-2.0.2.tgz#7c6a8dd0a636a0327e10b59c9286eee93f3f51b1" 1043 | integrity sha512-BLI3Tl1TW3Pvl70l3yq3Y64i+awpwXqsGBYWkkqMtnbXgrMD+yj7rhW0kuEDxzJaYXGjEW5ogapKNMEKNMjibA== 1044 | dependencies: 1045 | isexe "^2.0.0" 1046 | 1047 | wrappy@1: 1048 | version "1.0.2" 1049 | resolved "https://registry.yarnpkg.com/wrappy/-/wrappy-1.0.2.tgz#b5243d8f3ec1aa35f1364605bc0d1036e30ab69f" 1050 | integrity sha1-tSQ9jz7BqjXxNkYFvA0QNuMKtp8= 1051 | 1052 | yaml@^1.10.2: 1053 | version "1.10.2" 1054 | resolved "https://registry.yarnpkg.com/yaml/-/yaml-1.10.2.tgz#2301c5ffbf12b467de8da2333a459e29e7920e4b" 1055 | integrity sha512-r3vXyErRCYJ7wg28yvBY5VSoAF8ZvlcW9/BwUzEtUsjvX/DKs24dIkuwjtuprwJJHsbyUbLApepYTR1BN4uHrg== 1056 | -------------------------------------------------------------------------------- /example/.env.local.example: -------------------------------------------------------------------------------- 1 | UPSTASH_REDIS_REST_URL= 2 | UPSTASH_REDIS_REST_TOKEN= 3 | SLACK_WEBHOOK_URL= 4 | -------------------------------------------------------------------------------- /example/.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 | /dist 18 | 19 | # misc 20 | .DS_Store 21 | *.pem 22 | .idea/ 23 | 24 | # debug 25 | npm-debug.log* 26 | yarn-debug.log* 27 | yarn-error.log* 28 | .pnpm-debug.log* 29 | 30 | # local env files 31 | example/.env.local 32 | 33 | # vercel 34 | .vercel 35 | -------------------------------------------------------------------------------- /example/next-env.d.ts: -------------------------------------------------------------------------------- 1 | /// 2 | /// 3 | 4 | // NOTE: This file should not be edited 5 | // see https://nextjs.org/docs/basic-features/typescript for more information. 6 | -------------------------------------------------------------------------------- /example/next.config.js: -------------------------------------------------------------------------------- 1 | /** @type {import('next').NextConfig} */ 2 | 3 | const nextConfig = { 4 | reactStrictMode: true, 5 | }; 6 | 7 | module.exports = nextConfig; 8 | -------------------------------------------------------------------------------- /example/package.json: -------------------------------------------------------------------------------- 1 | { 2 | "name": "chatbox-design-template", 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 | "reconfigure": "rm -rf node_modules/ .next/ && yarn && next dev" 11 | }, 12 | "dependencies": { 13 | "@upstash/chatbox": "../chatbox/dist", 14 | "next": "12.1.6", 15 | "react": "^17.0.2", 16 | "react-dom": "^17.0.2", 17 | "react-textarea-autosize": "^8.3.4" 18 | }, 19 | "devDependencies": { 20 | "@types/node": "^17.0.36", 21 | "@types/react": "^17.0.45", 22 | "autoprefixer": "^10.4.7", 23 | "postcss": "^8.4.14", 24 | "prettier": "^2.6.2", 25 | "prettier-plugin-tailwindcss": "^0.1.11", 26 | "tailwindcss": "^3.0.24", 27 | "typescript": "^4.7.2" 28 | } 29 | } 30 | -------------------------------------------------------------------------------- /example/pages/_app.tsx: -------------------------------------------------------------------------------- 1 | import "styles/globals.css"; 2 | import "@upstash/chatbox/style.css"; 3 | 4 | import { AppProps } from "next/app"; 5 | import Head from "next/head"; 6 | 7 | export default function App(props: AppProps) { 8 | const { Component, pageProps } = props; 9 | 10 | return ( 11 | <> 12 | 13 | ChatBox Widget for Next.js Apps 14 | 15 | 16 | 17 | 18 | 19 | ); 20 | } 21 | -------------------------------------------------------------------------------- /example/pages/api/chatbox/[...chatbox].ts: -------------------------------------------------------------------------------- 1 | import createChatBoxAPI from "@upstash/chatbox/api"; 2 | 3 | const ChatBoxAPI = createChatBoxAPI({ 4 | webhooks: [process.env.SLACK_WEBHOOK_URL!], 5 | }); 6 | 7 | export default ChatBoxAPI; 8 | -------------------------------------------------------------------------------- /example/pages/chat/[id].tsx: -------------------------------------------------------------------------------- 1 | import dynamic from "next/dynamic"; 2 | 3 | const ChatBoxAdmin = dynamic({ 4 | loader: () => import("@upstash/chatbox/admin"), 5 | ssr: false, 6 | }); 7 | 8 | export default function () { 9 | return ; 10 | } 11 | -------------------------------------------------------------------------------- /example/pages/index.tsx: -------------------------------------------------------------------------------- 1 | import { useEffect, useState } from "react"; 2 | import dynamic from "next/dynamic"; 3 | 4 | const colors = require("tailwindcss/colors"); 5 | 6 | const ChatBoxWidget = dynamic({ 7 | loader: () => import("@upstash/chatbox/chatbox"), 8 | ssr: false, 9 | }); 10 | 11 | export default function Home() { 12 | const [chatID, setChatID] = useState(null); 13 | 14 | const [title, setTitle] = useState(""); 15 | const [description, setDescription] = useState(""); 16 | const [themeColor, setThemeColor] = useState(colors.emerald[500]); 17 | const [textColor, setTextColor] = useState("#ffffff"); 18 | 19 | useEffect(() => { 20 | getID(); 21 | }, [chatID]); 22 | 23 | function getID() { 24 | const storageFetched = localStorage.getItem("chatbox_id"); 25 | 26 | if (!storageFetched) { 27 | setChatID(null); 28 | return null; 29 | } 30 | 31 | let id = JSON.parse(storageFetched!).value; 32 | setChatID(id); 33 | return id; 34 | } 35 | 36 | return ( 37 |
38 |
39 |

40 | 41 | @upstash/chatbox 42 | 43 |

44 | 45 |

46 | Create a ChatBox Widget (like Intercom live chat) for your Next.js site. Nothing to maintain, it is completely serverless. 47 |

48 | 49 |

50 | When your website's visitor starts a session, the chat link is sent to 51 | your Slack channel. 52 |

53 |
54 | 55 |
56 | 57 |
58 |

Demo

59 | 60 |
    61 |
  1. 62 | Initiate a chat session by clicking the 63 | button at the bottom right. 64 | 71 | 75 | 82 | 89 | 90 |
  2. 91 |
  3. 92 | {" "} 103 | to interact with the chat.️ 104 |
  4. 105 |
106 | 107 |

108 | Admin page link will also posted to the Slack channel in the format 109 | of yoursite.com/chat/:id 110 |

111 | 112 |
113 | Appearance 114 | 115 |
116 | 117 | { 121 | setThemeColor(e.target.value); 122 | }} 123 | /> 124 | 125 | { 129 | setTextColor(e.target.value); 130 | }} 131 | /> 132 | 133 | { 138 | setTitle(e.target.value); 139 | }} 140 | /> 141 | 142 | { 147 | setDescription(e.target.value); 148 | }} 149 | /> 150 |
151 |
152 |
153 | 154 |
155 | 156 |
157 |

Setup

158 | 159 |

160 | You can refer to the{" "} 161 | 166 | GitHub README 167 | {" "} 168 | file for installation. 169 |

170 |
171 | 172 | 178 |
179 |
180 |
181 | ); 182 | } 183 | -------------------------------------------------------------------------------- /example/postcss.config.js: -------------------------------------------------------------------------------- 1 | module.exports = { 2 | plugins: { 3 | tailwindcss: {}, 4 | autoprefixer: {}, 5 | }, 6 | }; 7 | -------------------------------------------------------------------------------- /example/public/favicon.ico: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/upstash/chatbox/7e36613ea5f5b1e28cc0b1223836b8f91bcb1859/example/public/favicon.ico -------------------------------------------------------------------------------- /example/styles/globals.css: -------------------------------------------------------------------------------- 1 | @tailwind base; 2 | @tailwind components; 3 | @tailwind utilities; 4 | 5 | @layer base { 6 | body { 7 | @apply antialiased text-gray-900 overflow-y-scroll; 8 | } 9 | 10 | svg { 11 | @apply fill-transparent; 12 | } 13 | 14 | a { 15 | @apply transition; 16 | } 17 | 18 | pre { 19 | @apply bg-zinc-800 text-zinc-50 p-6 rounded-lg text-sm 20 | } 21 | } 22 | -------------------------------------------------------------------------------- /example/tailwind.config.js: -------------------------------------------------------------------------------- 1 | module.exports = { 2 | content: [ 3 | "./pages/**/*.{js,ts,jsx,tsx}", 4 | "./components/**/*.{js,ts,jsx,tsx}", 5 | ], 6 | }; 7 | -------------------------------------------------------------------------------- /example/tsconfig.json: -------------------------------------------------------------------------------- 1 | { 2 | "compilerOptions": { 3 | "target": "es5", 4 | "lib": [ 5 | "dom", 6 | "dom.iterable", 7 | "esnext" 8 | ], 9 | "allowJs": true, 10 | "skipLibCheck": true, 11 | "strict": true, 12 | "forceConsistentCasingInFileNames": true, 13 | "noEmit": true, 14 | "esModuleInterop": true, 15 | "module": "esnext", 16 | "moduleResolution": "node", 17 | "resolveJsonModule": true, 18 | "isolatedModules": true, 19 | "jsx": "preserve", 20 | "incremental": true, 21 | "baseUrl": "." 22 | }, 23 | "include": [ 24 | "next-env.d.ts", 25 | "**/*.ts", 26 | "**/*.tsx" 27 | ], 28 | "exclude": [ 29 | "node_modules" 30 | ] 31 | } 32 | -------------------------------------------------------------------------------- /example/yarn.lock: -------------------------------------------------------------------------------- 1 | # THIS IS AN AUTOGENERATED FILE. DO NOT EDIT THIS FILE DIRECTLY. 2 | # yarn lockfile v1 3 | 4 | 5 | "@babel/runtime@^7.10.2": 6 | version "7.18.3" 7 | resolved "https://registry.yarnpkg.com/@babel/runtime/-/runtime-7.18.3.tgz#c7b654b57f6f63cf7f8b418ac9ca04408c4579f4" 8 | integrity sha512-38Y8f7YUhce/K7RMwTp7m0uCumpv9hZkitCbBClqQIow1qSbCvGkcegKOXpEWCQLfWmevgRiWokZ1GkpfhbZug== 9 | dependencies: 10 | regenerator-runtime "^0.13.4" 11 | 12 | "@next/env@12.1.6": 13 | version "12.1.6" 14 | resolved "https://registry.yarnpkg.com/@next/env/-/env-12.1.6.tgz#5f44823a78335355f00f1687cfc4f1dafa3eca08" 15 | integrity sha512-Te/OBDXFSodPU6jlXYPAXpmZr/AkG6DCATAxttQxqOWaq6eDFX25Db3dK0120GZrSZmv4QCe9KsZmJKDbWs4OA== 16 | 17 | "@next/swc-android-arm-eabi@12.1.6": 18 | version "12.1.6" 19 | resolved "https://registry.yarnpkg.com/@next/swc-android-arm-eabi/-/swc-android-arm-eabi-12.1.6.tgz#79a35349b98f2f8c038ab6261aa9cd0d121c03f9" 20 | integrity sha512-BxBr3QAAAXWgk/K7EedvzxJr2dE014mghBSA9iOEAv0bMgF+MRq4PoASjuHi15M2zfowpcRG8XQhMFtxftCleQ== 21 | 22 | "@next/swc-android-arm64@12.1.6": 23 | version "12.1.6" 24 | resolved "https://registry.yarnpkg.com/@next/swc-android-arm64/-/swc-android-arm64-12.1.6.tgz#ec08ea61794f8752c8ebcacbed0aafc5b9407456" 25 | integrity sha512-EboEk3ROYY7U6WA2RrMt/cXXMokUTXXfnxe2+CU+DOahvbrO8QSWhlBl9I9ZbFzJx28AGB9Yo3oQHCvph/4Lew== 26 | 27 | "@next/swc-darwin-arm64@12.1.6": 28 | version "12.1.6" 29 | resolved "https://registry.yarnpkg.com/@next/swc-darwin-arm64/-/swc-darwin-arm64-12.1.6.tgz#d1053805615fd0706e9b1667893a72271cd87119" 30 | integrity sha512-P0EXU12BMSdNj1F7vdkP/VrYDuCNwBExtRPDYawgSUakzi6qP0iKJpya2BuLvNzXx+XPU49GFuDC5X+SvY0mOw== 31 | 32 | "@next/swc-darwin-x64@12.1.6": 33 | version "12.1.6" 34 | resolved "https://registry.yarnpkg.com/@next/swc-darwin-x64/-/swc-darwin-x64-12.1.6.tgz#2d1b926a22f4c5230d5b311f9c56cfdcc406afec" 35 | integrity sha512-9FptMnbgHJK3dRDzfTpexs9S2hGpzOQxSQbe8omz6Pcl7rnEp9x4uSEKY51ho85JCjL4d0tDLBcXEJZKKLzxNg== 36 | 37 | "@next/swc-linux-arm-gnueabihf@12.1.6": 38 | version "12.1.6" 39 | resolved "https://registry.yarnpkg.com/@next/swc-linux-arm-gnueabihf/-/swc-linux-arm-gnueabihf-12.1.6.tgz#c021918d2a94a17f823106a5e069335b8a19724f" 40 | integrity sha512-PvfEa1RR55dsik/IDkCKSFkk6ODNGJqPY3ysVUZqmnWMDSuqFtf7BPWHFa/53znpvVB5XaJ5Z1/6aR5CTIqxPw== 41 | 42 | "@next/swc-linux-arm64-gnu@12.1.6": 43 | version "12.1.6" 44 | resolved "https://registry.yarnpkg.com/@next/swc-linux-arm64-gnu/-/swc-linux-arm64-gnu-12.1.6.tgz#ac55c07bfabde378dfa0ce2b8fc1c3b2897e81ae" 45 | integrity sha512-53QOvX1jBbC2ctnmWHyRhMajGq7QZfl974WYlwclXarVV418X7ed7o/EzGY+YVAEKzIVaAB9JFFWGXn8WWo0gQ== 46 | 47 | "@next/swc-linux-arm64-musl@12.1.6": 48 | version "12.1.6" 49 | resolved "https://registry.yarnpkg.com/@next/swc-linux-arm64-musl/-/swc-linux-arm64-musl-12.1.6.tgz#e429f826279894be9096be6bec13e75e3d6bd671" 50 | integrity sha512-CMWAkYqfGdQCS+uuMA1A2UhOfcUYeoqnTW7msLr2RyYAys15pD960hlDfq7QAi8BCAKk0sQ2rjsl0iqMyziohQ== 51 | 52 | "@next/swc-linux-x64-gnu@12.1.6": 53 | version "12.1.6" 54 | resolved "https://registry.yarnpkg.com/@next/swc-linux-x64-gnu/-/swc-linux-x64-gnu-12.1.6.tgz#1f276c0784a5ca599bfa34b2fcc0b38f3a738e08" 55 | integrity sha512-AC7jE4Fxpn0s3ujngClIDTiEM/CQiB2N2vkcyWWn6734AmGT03Duq6RYtPMymFobDdAtZGFZd5nR95WjPzbZAQ== 56 | 57 | "@next/swc-linux-x64-musl@12.1.6": 58 | version "12.1.6" 59 | resolved "https://registry.yarnpkg.com/@next/swc-linux-x64-musl/-/swc-linux-x64-musl-12.1.6.tgz#1d9933dd6ba303dcfd8a2acd6ac7c27ed41e2eea" 60 | integrity sha512-c9Vjmi0EVk0Kou2qbrynskVarnFwfYIi+wKufR9Ad7/IKKuP6aEhOdZiIIdKsYWRtK2IWRF3h3YmdnEa2WLUag== 61 | 62 | "@next/swc-win32-arm64-msvc@12.1.6": 63 | version "12.1.6" 64 | resolved "https://registry.yarnpkg.com/@next/swc-win32-arm64-msvc/-/swc-win32-arm64-msvc-12.1.6.tgz#2ef9837f12ca652b1783d72ecb86208906042f02" 65 | integrity sha512-3UTOL/5XZSKFelM7qN0it35o3Cegm6LsyuERR3/OoqEExyj3aCk7F025b54/707HTMAnjlvQK3DzLhPu/xxO4g== 66 | 67 | "@next/swc-win32-ia32-msvc@12.1.6": 68 | version "12.1.6" 69 | resolved "https://registry.yarnpkg.com/@next/swc-win32-ia32-msvc/-/swc-win32-ia32-msvc-12.1.6.tgz#74003d0aa1c59dfa56cb15481a5c607cbc0027b9" 70 | integrity sha512-8ZWoj6nCq6fI1yCzKq6oK0jE6Mxlz4MrEsRyu0TwDztWQWe7rh4XXGLAa2YVPatYcHhMcUL+fQQbqd1MsgaSDA== 71 | 72 | "@next/swc-win32-x64-msvc@12.1.6": 73 | version "12.1.6" 74 | resolved "https://registry.yarnpkg.com/@next/swc-win32-x64-msvc/-/swc-win32-x64-msvc-12.1.6.tgz#a350caf42975e7197b24b495b8d764eec7e6a36e" 75 | integrity sha512-4ZEwiRuZEicXhXqmhw3+de8Z4EpOLQj/gp+D9fFWo6ii6W1kBkNNvvEx4A90ugppu+74pT1lIJnOuz3A9oQeJA== 76 | 77 | "@nodelib/fs.scandir@2.1.5": 78 | version "2.1.5" 79 | resolved "https://registry.yarnpkg.com/@nodelib/fs.scandir/-/fs.scandir-2.1.5.tgz#7619c2eb21b25483f6d167548b4cfd5a7488c3d5" 80 | integrity sha512-vq24Bq3ym5HEQm2NKCr3yXDwjc7vTsEThRDnkp2DK9p1uqLR+DHurm/NOTo0KG7HYHU7eppKZj3MyqYuMBf62g== 81 | dependencies: 82 | "@nodelib/fs.stat" "2.0.5" 83 | run-parallel "^1.1.9" 84 | 85 | "@nodelib/fs.stat@2.0.5", "@nodelib/fs.stat@^2.0.2": 86 | version "2.0.5" 87 | resolved "https://registry.yarnpkg.com/@nodelib/fs.stat/-/fs.stat-2.0.5.tgz#5bd262af94e9d25bd1e71b05deed44876a222e8b" 88 | integrity sha512-RkhPPp2zrqDAQA/2jNhnztcPAlv64XdhIp7a7454A5ovI7Bukxgt7MX7udwAu3zg1DcpPU0rz3VV1SeaqvY4+A== 89 | 90 | "@nodelib/fs.walk@^1.2.3": 91 | version "1.2.8" 92 | resolved "https://registry.yarnpkg.com/@nodelib/fs.walk/-/fs.walk-1.2.8.tgz#e95737e8bb6746ddedf69c556953494f196fe69a" 93 | integrity sha512-oGB+UxlgWcgQkgwo8GcEGwemoTFt3FIO9ababBmaGwXIoBKZ+GTy0pP185beGg7Llih/NSHSV2XAs1lnznocSg== 94 | dependencies: 95 | "@nodelib/fs.scandir" "2.1.5" 96 | fastq "^1.6.0" 97 | 98 | "@types/node@^17.0.36": 99 | version "17.0.42" 100 | resolved "https://registry.yarnpkg.com/@types/node/-/node-17.0.42.tgz#d7e8f22700efc94d125103075c074396b5f41f9b" 101 | integrity sha512-Q5BPGyGKcvQgAMbsr7qEGN/kIPN6zZecYYABeTDBizOsau+2NMdSVTar9UQw21A2+JyA2KRNDYaYrPB0Rpk2oQ== 102 | 103 | "@types/prop-types@*": 104 | version "15.7.5" 105 | resolved "https://registry.yarnpkg.com/@types/prop-types/-/prop-types-15.7.5.tgz#5f19d2b85a98e9558036f6a3cacc8819420f05cf" 106 | integrity sha512-JCB8C6SnDoQf0cNycqd/35A7MjcnK+ZTqE7judS6o7utxUCg6imJg3QK2qzHKszlTjcj2cn+NwMB2i96ubpj7w== 107 | 108 | "@types/react@^17.0.45": 109 | version "17.0.45" 110 | resolved "https://registry.yarnpkg.com/@types/react/-/react-17.0.45.tgz#9b3d5b661fd26365fefef0e766a1c6c30ccf7b3f" 111 | integrity sha512-YfhQ22Lah2e3CHPsb93tRwIGNiSwkuz1/blk4e6QrWS0jQzCSNbGLtOEYhPg02W0yGTTmpajp7dCTbBAMN3qsg== 112 | dependencies: 113 | "@types/prop-types" "*" 114 | "@types/scheduler" "*" 115 | csstype "^3.0.2" 116 | 117 | "@types/scheduler@*": 118 | version "0.16.2" 119 | resolved "https://registry.yarnpkg.com/@types/scheduler/-/scheduler-0.16.2.tgz#1a62f89525723dde24ba1b01b092bf5df8ad4d39" 120 | integrity sha512-hppQEBDmlwhFAXKJX2KnWLYu5yMfi91yazPb2l+lbJiwW+wdo1gNeRA+3RgNSO39WYX2euey41KEwnqesU2Jew== 121 | 122 | "@upstash/chatbox@../chatbox/dist": 123 | version "1.3.0" 124 | dependencies: 125 | "@upstash/redis" "^1.2.0" 126 | nanoid "^3.3.3" 127 | next "^12.1.5" 128 | react "17.0.2" 129 | react-dom "17.0.2" 130 | react-textarea-autosize "^8.3.3" 131 | 132 | "@upstash/redis@^1.2.0": 133 | version "1.6.1" 134 | resolved "https://registry.yarnpkg.com/@upstash/redis/-/redis-1.6.1.tgz#5ce62e44d92ce1494a9df5385d814b5006346c9c" 135 | integrity sha512-2SGkAzBewW8MoRT5YpypWxdxRdsX6ydCLktldDvGocCeSJcx00gj+sXi3WfRvVfXQS9EDR3cJVKoaBhbmn1IyA== 136 | dependencies: 137 | isomorphic-fetch "^3.0.0" 138 | 139 | acorn-node@^1.8.2: 140 | version "1.8.2" 141 | resolved "https://registry.yarnpkg.com/acorn-node/-/acorn-node-1.8.2.tgz#114c95d64539e53dede23de8b9d96df7c7ae2af8" 142 | integrity sha512-8mt+fslDufLYntIoPAaIMUe/lrbrehIiwmR3t2k9LljIzoigEPF27eLk2hy8zSGzmR/ogr7zbRKINMo1u0yh5A== 143 | dependencies: 144 | acorn "^7.0.0" 145 | acorn-walk "^7.0.0" 146 | xtend "^4.0.2" 147 | 148 | acorn-walk@^7.0.0: 149 | version "7.2.0" 150 | resolved "https://registry.yarnpkg.com/acorn-walk/-/acorn-walk-7.2.0.tgz#0de889a601203909b0fbe07b8938dc21d2e967bc" 151 | integrity sha512-OPdCF6GsMIP+Az+aWfAAOEt2/+iVDKE7oy6lJ098aoe59oAmK76qV6Gw60SbZ8jHuG2wH058GF4pLFbYamYrVA== 152 | 153 | acorn@^7.0.0: 154 | version "7.4.1" 155 | resolved "https://registry.yarnpkg.com/acorn/-/acorn-7.4.1.tgz#feaed255973d2e77555b83dbc08851a6c63520fa" 156 | integrity sha512-nQyp0o1/mNdbTO1PO6kHkwSrmgZ0MT/jCCpNiwbUjGoRN4dlBhqJtoQuCnEOKzgTVwg0ZWiCoQy6SxMebQVh8A== 157 | 158 | anymatch@~3.1.2: 159 | version "3.1.2" 160 | resolved "https://registry.yarnpkg.com/anymatch/-/anymatch-3.1.2.tgz#c0557c096af32f106198f4f4e2a383537e378716" 161 | integrity sha512-P43ePfOAIupkguHUycrc4qJ9kz8ZiuOUijaETwX7THt0Y/GNK7v0aa8rY816xWjZ7rJdA5XdMcpVFTKMq+RvWg== 162 | dependencies: 163 | normalize-path "^3.0.0" 164 | picomatch "^2.0.4" 165 | 166 | arg@^5.0.1: 167 | version "5.0.2" 168 | resolved "https://registry.yarnpkg.com/arg/-/arg-5.0.2.tgz#c81433cc427c92c4dcf4865142dbca6f15acd59c" 169 | integrity sha512-PYjyFOLKQ9y57JvQ6QLo8dAgNqswh8M1RMJYdQduT6xbWSgK36P/Z/v+p888pM69jMMfS8Xd8F6I1kQ/I9HUGg== 170 | 171 | autoprefixer@^10.4.7: 172 | version "10.4.7" 173 | resolved "https://registry.yarnpkg.com/autoprefixer/-/autoprefixer-10.4.7.tgz#1db8d195f41a52ca5069b7593be167618edbbedf" 174 | integrity sha512-ypHju4Y2Oav95SipEcCcI5J7CGPuvz8oat7sUtYj3ClK44bldfvtvcxK6IEK++7rqB7YchDGzweZIBG+SD0ZAA== 175 | dependencies: 176 | browserslist "^4.20.3" 177 | caniuse-lite "^1.0.30001335" 178 | fraction.js "^4.2.0" 179 | normalize-range "^0.1.2" 180 | picocolors "^1.0.0" 181 | postcss-value-parser "^4.2.0" 182 | 183 | binary-extensions@^2.0.0: 184 | version "2.2.0" 185 | resolved "https://registry.yarnpkg.com/binary-extensions/-/binary-extensions-2.2.0.tgz#75f502eeaf9ffde42fc98829645be4ea76bd9e2d" 186 | integrity sha512-jDctJ/IVQbZoJykoeHbhXpOlNBqGNcwXJKJog42E5HDPUwQTSdjCHdihjj0DlnheQ7blbT6dHOafNAiS8ooQKA== 187 | 188 | braces@^3.0.2, braces@~3.0.2: 189 | version "3.0.2" 190 | resolved "https://registry.yarnpkg.com/braces/-/braces-3.0.2.tgz#3454e1a462ee8d599e236df336cd9ea4f8afe107" 191 | integrity sha512-b8um+L1RzM3WDSzvhm6gIz1yfTbBt6YTlcEKAvsmqCZZFw46z626lVj9j1yEPW33H5H+lBQpZMP1k8l+78Ha0A== 192 | dependencies: 193 | fill-range "^7.0.1" 194 | 195 | browserslist@^4.20.3: 196 | version "4.20.4" 197 | resolved "https://registry.yarnpkg.com/browserslist/-/browserslist-4.20.4.tgz#98096c9042af689ee1e0271333dbc564b8ce4477" 198 | integrity sha512-ok1d+1WpnU24XYN7oC3QWgTyMhY/avPJ/r9T00xxvUOIparA/gc+UPUMaod3i+G6s+nI2nUb9xZ5k794uIwShw== 199 | dependencies: 200 | caniuse-lite "^1.0.30001349" 201 | electron-to-chromium "^1.4.147" 202 | escalade "^3.1.1" 203 | node-releases "^2.0.5" 204 | picocolors "^1.0.0" 205 | 206 | camelcase-css@^2.0.1: 207 | version "2.0.1" 208 | resolved "https://registry.yarnpkg.com/camelcase-css/-/camelcase-css-2.0.1.tgz#ee978f6947914cc30c6b44741b6ed1df7f043fd5" 209 | integrity sha512-QOSvevhslijgYwRx6Rv7zKdMF8lbRmx+uQGx2+vDc+KI/eBnsy9kit5aj23AgGu3pa4t9AgwbnXWqS+iOY+2aA== 210 | 211 | caniuse-lite@^1.0.30001332, caniuse-lite@^1.0.30001335, caniuse-lite@^1.0.30001349: 212 | version "1.0.30001352" 213 | resolved "https://registry.yarnpkg.com/caniuse-lite/-/caniuse-lite-1.0.30001352.tgz#cc6f5da3f983979ad1e2cdbae0505dccaa7c6a12" 214 | integrity sha512-GUgH8w6YergqPQDGWhJGt8GDRnY0L/iJVQcU3eJ46GYf52R8tk0Wxp0PymuFVZboJYXGiCqwozAYZNRjVj6IcA== 215 | 216 | chokidar@^3.5.3: 217 | version "3.5.3" 218 | resolved "https://registry.yarnpkg.com/chokidar/-/chokidar-3.5.3.tgz#1cf37c8707b932bd1af1ae22c0432e2acd1903bd" 219 | integrity sha512-Dr3sfKRP6oTcjf2JmUmFJfeVMvXBdegxB0iVQ5eb2V10uFJUCAS8OByZdVAyVb8xXNz3GjjTgj9kLWsZTqE6kw== 220 | dependencies: 221 | anymatch "~3.1.2" 222 | braces "~3.0.2" 223 | glob-parent "~5.1.2" 224 | is-binary-path "~2.1.0" 225 | is-glob "~4.0.1" 226 | normalize-path "~3.0.0" 227 | readdirp "~3.6.0" 228 | optionalDependencies: 229 | fsevents "~2.3.2" 230 | 231 | color-name@^1.1.4: 232 | version "1.1.4" 233 | resolved "https://registry.yarnpkg.com/color-name/-/color-name-1.1.4.tgz#c2a09a87acbde69543de6f63fa3995c826c536a2" 234 | integrity sha512-dOy+3AuW3a2wNbZHIuMZpTcgjGuLU/uBL/ubcZF9OXbDo8ff4O8yVp5Bf0efS8uEoYo5q4Fx7dY9OgQGXgAsQA== 235 | 236 | cssesc@^3.0.0: 237 | version "3.0.0" 238 | resolved "https://registry.yarnpkg.com/cssesc/-/cssesc-3.0.0.tgz#37741919903b868565e1c09ea747445cd18983ee" 239 | integrity sha512-/Tb/JcjK111nNScGob5MNtsntNM1aCNUDipB/TkwZFhyDrrE47SOx/18wF2bbjgc3ZzCSKW1T5nt5EbFoAz/Vg== 240 | 241 | csstype@^3.0.2: 242 | version "3.1.0" 243 | resolved "https://registry.yarnpkg.com/csstype/-/csstype-3.1.0.tgz#4ddcac3718d787cf9df0d1b7d15033925c8f29f2" 244 | integrity sha512-uX1KG+x9h5hIJsaKR9xHUeUraxf8IODOwq9JLNPq6BwB04a/xgpq3rcx47l5BZu5zBPlgD342tdke3Hom/nJRA== 245 | 246 | defined@^1.0.0: 247 | version "1.0.0" 248 | resolved "https://registry.yarnpkg.com/defined/-/defined-1.0.0.tgz#c98d9bcef75674188e110969151199e39b1fa693" 249 | integrity sha512-Y2caI5+ZwS5c3RiNDJ6u53VhQHv+hHKwhkI1iHvceKUHw9Df6EK2zRLfjejRgMuCuxK7PfSWIMwWecceVvThjQ== 250 | 251 | detective@^5.2.1: 252 | version "5.2.1" 253 | resolved "https://registry.yarnpkg.com/detective/-/detective-5.2.1.tgz#6af01eeda11015acb0e73f933242b70f24f91034" 254 | integrity sha512-v9XE1zRnz1wRtgurGu0Bs8uHKFSTdteYZNbIPFVhUZ39L/S79ppMpdmVOZAnoz1jfEFodc48n6MX483Xo3t1yw== 255 | dependencies: 256 | acorn-node "^1.8.2" 257 | defined "^1.0.0" 258 | minimist "^1.2.6" 259 | 260 | didyoumean@^1.2.2: 261 | version "1.2.2" 262 | resolved "https://registry.yarnpkg.com/didyoumean/-/didyoumean-1.2.2.tgz#989346ffe9e839b4555ecf5666edea0d3e8ad037" 263 | integrity sha512-gxtyfqMg7GKyhQmb056K7M3xszy/myH8w+B4RT+QXBQsvAOdc3XymqDDPHx1BgPgsdAA5SIifona89YtRATDzw== 264 | 265 | dlv@^1.1.3: 266 | version "1.1.3" 267 | resolved "https://registry.yarnpkg.com/dlv/-/dlv-1.1.3.tgz#5c198a8a11453596e751494d49874bc7732f2e79" 268 | integrity sha512-+HlytyjlPKnIG8XuRG8WvmBP8xs8P71y+SKKS6ZXWoEgLuePxtDoUEiH7WkdePWrQ5JBpE6aoVqfZfJUQkjXwA== 269 | 270 | electron-to-chromium@^1.4.147: 271 | version "1.4.152" 272 | resolved "https://registry.yarnpkg.com/electron-to-chromium/-/electron-to-chromium-1.4.152.tgz#7dedbe8f3dc1c597088982a203f392e60f7ee90a" 273 | integrity sha512-jk4Ju5SGZAQQJ1iI4Rgru7dDlvkQPLpNPWH9gIZmwCD4YteA5Bbk1xPcPDUf5jUYs3e1e80RXdi8XgKQZaigeg== 274 | 275 | escalade@^3.1.1: 276 | version "3.1.1" 277 | resolved "https://registry.yarnpkg.com/escalade/-/escalade-3.1.1.tgz#d8cfdc7000965c5a0174b4a82eaa5c0552742e40" 278 | integrity sha512-k0er2gUkLf8O0zKJiAhmkTnJlTvINGv7ygDNPbeIsX/TJjGJZHuh9B2UxbsaEkmlEo9MfhrSzmhIlhRlI2GXnw== 279 | 280 | fast-glob@^3.2.11: 281 | version "3.2.11" 282 | resolved "https://registry.yarnpkg.com/fast-glob/-/fast-glob-3.2.11.tgz#a1172ad95ceb8a16e20caa5c5e56480e5129c1d9" 283 | integrity sha512-xrO3+1bxSo3ZVHAnqzyuewYT6aMFHRAd4Kcs92MAonjwQZLsK9d0SF1IyQ3k5PoirxTW0Oe/RqFgMQ6TcNE5Ew== 284 | dependencies: 285 | "@nodelib/fs.stat" "^2.0.2" 286 | "@nodelib/fs.walk" "^1.2.3" 287 | glob-parent "^5.1.2" 288 | merge2 "^1.3.0" 289 | micromatch "^4.0.4" 290 | 291 | fastq@^1.6.0: 292 | version "1.13.0" 293 | resolved "https://registry.yarnpkg.com/fastq/-/fastq-1.13.0.tgz#616760f88a7526bdfc596b7cab8c18938c36b98c" 294 | integrity sha512-YpkpUnK8od0o1hmeSc7UUs/eB/vIPWJYjKck2QKIzAf71Vm1AAQ3EbuZB3g2JIy+pg+ERD0vqI79KyZiB2e2Nw== 295 | dependencies: 296 | reusify "^1.0.4" 297 | 298 | fill-range@^7.0.1: 299 | version "7.0.1" 300 | resolved "https://registry.yarnpkg.com/fill-range/-/fill-range-7.0.1.tgz#1919a6a7c75fe38b2c7c77e5198535da9acdda40" 301 | integrity sha512-qOo9F+dMUmC2Lcb4BbVvnKJxTPjCm+RRpe4gDuGrzkL7mEVl/djYSu2OdQ2Pa302N4oqkSg9ir6jaLWJ2USVpQ== 302 | dependencies: 303 | to-regex-range "^5.0.1" 304 | 305 | fraction.js@^4.2.0: 306 | version "4.2.0" 307 | resolved "https://registry.yarnpkg.com/fraction.js/-/fraction.js-4.2.0.tgz#448e5109a313a3527f5a3ab2119ec4cf0e0e2950" 308 | integrity sha512-MhLuK+2gUcnZe8ZHlaaINnQLl0xRIGRfcGk2yl8xoQAfHrSsL3rYu6FCmBdkdbhc9EPlwyGHewaRsvwRMJtAlA== 309 | 310 | fsevents@~2.3.2: 311 | version "2.3.2" 312 | resolved "https://registry.yarnpkg.com/fsevents/-/fsevents-2.3.2.tgz#8a526f78b8fdf4623b709e0b975c52c24c02fd1a" 313 | integrity sha512-xiqMQR4xAeHTuB9uWm+fFRcIOgKBMiOBP+eXiyT7jsgVCq1bkVygt00oASowB7EdtpOHaaPgKt812P9ab+DDKA== 314 | 315 | function-bind@^1.1.1: 316 | version "1.1.1" 317 | resolved "https://registry.yarnpkg.com/function-bind/-/function-bind-1.1.1.tgz#a56899d3ea3c9bab874bb9773b7c5ede92f4895d" 318 | integrity sha512-yIovAzMX49sF8Yl58fSCWJ5svSLuaibPxXQJFLmBObTuCr0Mf1KiPopGM9NiFjiYBCbfaa2Fh6breQ6ANVTI0A== 319 | 320 | glob-parent@^5.1.2, glob-parent@~5.1.2: 321 | version "5.1.2" 322 | resolved "https://registry.yarnpkg.com/glob-parent/-/glob-parent-5.1.2.tgz#869832c58034fe68a4093c17dc15e8340d8401c4" 323 | integrity sha512-AOIgSQCepiJYwP3ARnGx+5VnTu2HBYdzbGP45eLw1vr3zB3vZLeyed1sC9hnbcOc9/SrMyM5RPQrkGz4aS9Zow== 324 | dependencies: 325 | is-glob "^4.0.1" 326 | 327 | glob-parent@^6.0.2: 328 | version "6.0.2" 329 | resolved "https://registry.yarnpkg.com/glob-parent/-/glob-parent-6.0.2.tgz#6d237d99083950c79290f24c7642a3de9a28f9e3" 330 | integrity sha512-XxwI8EOhVQgWp6iDL+3b0r86f4d6AX6zSU55HfB4ydCEuXLXc5FcYeOu+nnGftS4TEju/11rt4KJPTMgbfmv4A== 331 | dependencies: 332 | is-glob "^4.0.3" 333 | 334 | has@^1.0.3: 335 | version "1.0.3" 336 | resolved "https://registry.yarnpkg.com/has/-/has-1.0.3.tgz#722d7cbfc1f6aa8241f16dd814e011e1f41e8796" 337 | integrity sha512-f2dvO0VU6Oej7RkWJGrehjbzMAjFp5/VKPp5tTpWIV4JHHZK1/BxbFRtf/siA2SWTe09caDmVtYYzWEIbBS4zw== 338 | dependencies: 339 | function-bind "^1.1.1" 340 | 341 | is-binary-path@~2.1.0: 342 | version "2.1.0" 343 | resolved "https://registry.yarnpkg.com/is-binary-path/-/is-binary-path-2.1.0.tgz#ea1f7f3b80f064236e83470f86c09c254fb45b09" 344 | integrity sha512-ZMERYes6pDydyuGidse7OsHxtbI7WVeUEozgR/g7rd0xUimYNlvZRE/K2MgZTjWy725IfelLeVcEM97mmtRGXw== 345 | dependencies: 346 | binary-extensions "^2.0.0" 347 | 348 | is-core-module@^2.8.1: 349 | version "2.9.0" 350 | resolved "https://registry.yarnpkg.com/is-core-module/-/is-core-module-2.9.0.tgz#e1c34429cd51c6dd9e09e0799e396e27b19a9c69" 351 | integrity sha512-+5FPy5PnwmO3lvfMb0AsoPaBG+5KHUI0wYFXOtYPnVVVspTFUuMZNfNaNVRt3FZadstu2c8x23vykRW/NBoU6A== 352 | dependencies: 353 | has "^1.0.3" 354 | 355 | is-extglob@^2.1.1: 356 | version "2.1.1" 357 | resolved "https://registry.yarnpkg.com/is-extglob/-/is-extglob-2.1.1.tgz#a88c02535791f02ed37c76a1b9ea9773c833f8c2" 358 | integrity sha512-SbKbANkN603Vi4jEZv49LeVJMn4yGwsbzZworEoyEiutsN3nJYdbO36zfhGJ6QEDpOZIFkDtnq5JRxmvl3jsoQ== 359 | 360 | is-glob@^4.0.1, is-glob@^4.0.3, is-glob@~4.0.1: 361 | version "4.0.3" 362 | resolved "https://registry.yarnpkg.com/is-glob/-/is-glob-4.0.3.tgz#64f61e42cbbb2eec2071a9dac0b28ba1e65d5084" 363 | integrity sha512-xelSayHH36ZgE7ZWhli7pW34hNbNl8Ojv5KVmkJD4hBdD3th8Tfk9vYasLM+mXWOZhFkgZfxhLSnrwRr4elSSg== 364 | dependencies: 365 | is-extglob "^2.1.1" 366 | 367 | is-number@^7.0.0: 368 | version "7.0.0" 369 | resolved "https://registry.yarnpkg.com/is-number/-/is-number-7.0.0.tgz#7535345b896734d5f80c4d06c50955527a14f12b" 370 | integrity sha512-41Cifkg6e8TylSpdtTpeLVMqvSBEVzTttHvERD741+pnZ8ANv0004MRL43QKPDlK9cGvNp6NZWZUBlbGXYxxng== 371 | 372 | isomorphic-fetch@^3.0.0: 373 | version "3.0.0" 374 | resolved "https://registry.yarnpkg.com/isomorphic-fetch/-/isomorphic-fetch-3.0.0.tgz#0267b005049046d2421207215d45d6a262b8b8b4" 375 | integrity sha512-qvUtwJ3j6qwsF3jLxkZ72qCgjMysPzDfeV240JHiGZsANBYd+EEuu35v7dfrJ9Up0Ak07D7GGSkGhCHTqg/5wA== 376 | dependencies: 377 | node-fetch "^2.6.1" 378 | whatwg-fetch "^3.4.1" 379 | 380 | "js-tokens@^3.0.0 || ^4.0.0": 381 | version "4.0.0" 382 | resolved "https://registry.yarnpkg.com/js-tokens/-/js-tokens-4.0.0.tgz#19203fb59991df98e3a287050d4647cdeaf32499" 383 | integrity sha512-RdJUflcE3cUzKiMqQgsCu06FPu9UdIJO0beYbPhHN4k6apgJtifcoCtT9bcxOpYBtpD2kCM6Sbzg4CausW/PKQ== 384 | 385 | lilconfig@^2.0.5: 386 | version "2.0.5" 387 | resolved "https://registry.yarnpkg.com/lilconfig/-/lilconfig-2.0.5.tgz#19e57fd06ccc3848fd1891655b5a447092225b25" 388 | integrity sha512-xaYmXZtTHPAw5m+xLN8ab9C+3a8YmV3asNSPOATITbtwrfbwaLJj8h66H1WMIpALCkqsIzK3h7oQ+PdX+LQ9Eg== 389 | 390 | loose-envify@^1.1.0: 391 | version "1.4.0" 392 | resolved "https://registry.yarnpkg.com/loose-envify/-/loose-envify-1.4.0.tgz#71ee51fa7be4caec1a63839f7e682d8132d30caf" 393 | integrity sha512-lyuxPGr/Wfhrlem2CL/UcnUc1zcqKAImBDzukY7Y5F/yQiNdko6+fRLevlw1HgMySw7f611UIY408EtxRSoK3Q== 394 | dependencies: 395 | js-tokens "^3.0.0 || ^4.0.0" 396 | 397 | merge2@^1.3.0: 398 | version "1.4.1" 399 | resolved "https://registry.yarnpkg.com/merge2/-/merge2-1.4.1.tgz#4368892f885e907455a6fd7dc55c0c9d404990ae" 400 | integrity sha512-8q7VEgMJW4J8tcfVPy8g09NcQwZdbwFEqhe/WZkoIzjn/3TGDwtOCYtXGxA3O8tPzpczCCDgv+P2P5y00ZJOOg== 401 | 402 | micromatch@^4.0.4: 403 | version "4.0.5" 404 | resolved "https://registry.yarnpkg.com/micromatch/-/micromatch-4.0.5.tgz#bc8999a7cbbf77cdc89f132f6e467051b49090c6" 405 | integrity sha512-DMy+ERcEW2q8Z2Po+WNXuw3c5YaUSFjAO5GsJqfEl7UjvtIuFKO6ZrKvcItdy98dwFI2N1tg3zNIdKaQT+aNdA== 406 | dependencies: 407 | braces "^3.0.2" 408 | picomatch "^2.3.1" 409 | 410 | minimist@^1.2.6: 411 | version "1.2.6" 412 | resolved "https://registry.yarnpkg.com/minimist/-/minimist-1.2.6.tgz#8637a5b759ea0d6e98702cfb3a9283323c93af44" 413 | integrity sha512-Jsjnk4bw3YJqYzbdyBiNsPWHPfO++UGG749Cxs6peCu5Xg4nrena6OVxOYxrQTqww0Jmwt+Ref8rggumkTLz9Q== 414 | 415 | nanoid@^3.1.30, nanoid@^3.3.3, nanoid@^3.3.4: 416 | version "3.3.4" 417 | resolved "https://registry.yarnpkg.com/nanoid/-/nanoid-3.3.4.tgz#730b67e3cd09e2deacf03c027c81c9d9dbc5e8ab" 418 | integrity sha512-MqBkQh/OHTS2egovRtLk45wEyNXwF+cokD+1YPf9u5VfJiRdAiRwB2froX5Co9Rh20xs4siNPm8naNotSD6RBw== 419 | 420 | next@12.1.6, next@^12.1.5: 421 | version "12.1.6" 422 | resolved "https://registry.yarnpkg.com/next/-/next-12.1.6.tgz#eb205e64af1998651f96f9df44556d47d8bbc533" 423 | integrity sha512-cebwKxL3/DhNKfg9tPZDQmbRKjueqykHHbgaoG4VBRH3AHQJ2HO0dbKFiS1hPhe1/qgc2d/hFeadsbPicmLD+A== 424 | dependencies: 425 | "@next/env" "12.1.6" 426 | caniuse-lite "^1.0.30001332" 427 | postcss "8.4.5" 428 | styled-jsx "5.0.2" 429 | optionalDependencies: 430 | "@next/swc-android-arm-eabi" "12.1.6" 431 | "@next/swc-android-arm64" "12.1.6" 432 | "@next/swc-darwin-arm64" "12.1.6" 433 | "@next/swc-darwin-x64" "12.1.6" 434 | "@next/swc-linux-arm-gnueabihf" "12.1.6" 435 | "@next/swc-linux-arm64-gnu" "12.1.6" 436 | "@next/swc-linux-arm64-musl" "12.1.6" 437 | "@next/swc-linux-x64-gnu" "12.1.6" 438 | "@next/swc-linux-x64-musl" "12.1.6" 439 | "@next/swc-win32-arm64-msvc" "12.1.6" 440 | "@next/swc-win32-ia32-msvc" "12.1.6" 441 | "@next/swc-win32-x64-msvc" "12.1.6" 442 | 443 | node-fetch@^2.6.1: 444 | version "2.6.7" 445 | resolved "https://registry.yarnpkg.com/node-fetch/-/node-fetch-2.6.7.tgz#24de9fba827e3b4ae44dc8b20256a379160052ad" 446 | integrity sha512-ZjMPFEfVx5j+y2yF35Kzx5sF7kDzxuDj6ziH4FFbOp87zKDZNx8yExJIb05OGF4Nlt9IHFIMBkRl41VdvcNdbQ== 447 | dependencies: 448 | whatwg-url "^5.0.0" 449 | 450 | node-releases@^2.0.5: 451 | version "2.0.5" 452 | resolved "https://registry.yarnpkg.com/node-releases/-/node-releases-2.0.5.tgz#280ed5bc3eba0d96ce44897d8aee478bfb3d9666" 453 | integrity sha512-U9h1NLROZTq9uE1SNffn6WuPDg8icmi3ns4rEl/oTfIle4iLjTliCzgTsbaIFMq/Xn078/lfY/BL0GWZ+psK4Q== 454 | 455 | normalize-path@^3.0.0, normalize-path@~3.0.0: 456 | version "3.0.0" 457 | resolved "https://registry.yarnpkg.com/normalize-path/-/normalize-path-3.0.0.tgz#0dcd69ff23a1c9b11fd0978316644a0388216a65" 458 | integrity sha512-6eZs5Ls3WtCisHWp9S2GUy8dqkpGi4BVSz3GaqiE6ezub0512ESztXUwUB6C6IKbQkY2Pnb/mD4WYojCRwcwLA== 459 | 460 | normalize-range@^0.1.2: 461 | version "0.1.2" 462 | resolved "https://registry.yarnpkg.com/normalize-range/-/normalize-range-0.1.2.tgz#2d10c06bdfd312ea9777695a4d28439456b75942" 463 | integrity sha512-bdok/XvKII3nUpklnV6P2hxtMNrCboOjAcyBuQnWEhO665FwrSNRxU+AqpsyvO6LgGYPspN+lu5CLtw4jPRKNA== 464 | 465 | object-assign@^4.1.1: 466 | version "4.1.1" 467 | resolved "https://registry.yarnpkg.com/object-assign/-/object-assign-4.1.1.tgz#2109adc7965887cfc05cbbd442cac8bfbb360863" 468 | integrity sha512-rJgTQnkUnH1sFw8yT6VSU3zD3sWmu6sZhIseY8VX+GRu3P6F7Fu+JNDoXfklElbLJSnc3FUQHVe4cU5hj+BcUg== 469 | 470 | object-hash@^3.0.0: 471 | version "3.0.0" 472 | resolved "https://registry.yarnpkg.com/object-hash/-/object-hash-3.0.0.tgz#73f97f753e7baffc0e2cc9d6e079079744ac82e9" 473 | integrity sha512-RSn9F68PjH9HqtltsSnqYC1XXoWe9Bju5+213R98cNGttag9q9yAOTzdbsqvIa7aNm5WffBZFpWYr2aWrklWAw== 474 | 475 | path-parse@^1.0.7: 476 | version "1.0.7" 477 | resolved "https://registry.yarnpkg.com/path-parse/-/path-parse-1.0.7.tgz#fbc114b60ca42b30d9daf5858e4bd68bbedb6735" 478 | integrity sha512-LDJzPVEEEPR+y48z93A0Ed0yXb8pAByGWo/k5YYdYgpY2/2EsOsksJrq7lOHxryrVOn1ejG6oAp8ahvOIQD8sw== 479 | 480 | picocolors@^1.0.0: 481 | version "1.0.0" 482 | resolved "https://registry.yarnpkg.com/picocolors/-/picocolors-1.0.0.tgz#cb5bdc74ff3f51892236eaf79d68bc44564ab81c" 483 | integrity sha512-1fygroTLlHu66zi26VoTDv8yRgm0Fccecssto+MhsZ0D/DGW2sm8E8AjW7NU5VVTRt5GxbeZ5qBuJr+HyLYkjQ== 484 | 485 | picomatch@^2.0.4, picomatch@^2.2.1, picomatch@^2.3.1: 486 | version "2.3.1" 487 | resolved "https://registry.yarnpkg.com/picomatch/-/picomatch-2.3.1.tgz#3ba3833733646d9d3e4995946c1365a67fb07a42" 488 | integrity sha512-JU3teHTNjmE2VCGFzuY8EXzCDVwEqB2a8fsIvwaStHhAWJEeVd1o1QD80CU6+ZdEXXSLbSsuLwJjkCBWqRQUVA== 489 | 490 | pify@^2.3.0: 491 | version "2.3.0" 492 | resolved "https://registry.yarnpkg.com/pify/-/pify-2.3.0.tgz#ed141a6ac043a849ea588498e7dca8b15330e90c" 493 | integrity sha512-udgsAY+fTnvv7kI7aaxbqwWNb0AHiB0qBO89PZKPkoTmGOgdbrHDKD+0B2X4uTfJ/FT1R09r9gTsjUjNJotuog== 494 | 495 | postcss-import@^14.1.0: 496 | version "14.1.0" 497 | resolved "https://registry.yarnpkg.com/postcss-import/-/postcss-import-14.1.0.tgz#a7333ffe32f0b8795303ee9e40215dac922781f0" 498 | integrity sha512-flwI+Vgm4SElObFVPpTIT7SU7R3qk2L7PyduMcokiaVKuWv9d/U+Gm/QAd8NDLuykTWTkcrjOeD2Pp1rMeBTGw== 499 | dependencies: 500 | postcss-value-parser "^4.0.0" 501 | read-cache "^1.0.0" 502 | resolve "^1.1.7" 503 | 504 | postcss-js@^4.0.0: 505 | version "4.0.0" 506 | resolved "https://registry.yarnpkg.com/postcss-js/-/postcss-js-4.0.0.tgz#31db79889531b80dc7bc9b0ad283e418dce0ac00" 507 | integrity sha512-77QESFBwgX4irogGVPgQ5s07vLvFqWr228qZY+w6lW599cRlK/HmnlivnnVUxkjHnCu4J16PDMHcH+e+2HbvTQ== 508 | dependencies: 509 | camelcase-css "^2.0.1" 510 | 511 | postcss-load-config@^3.1.4: 512 | version "3.1.4" 513 | resolved "https://registry.yarnpkg.com/postcss-load-config/-/postcss-load-config-3.1.4.tgz#1ab2571faf84bb078877e1d07905eabe9ebda855" 514 | integrity sha512-6DiM4E7v4coTE4uzA8U//WhtPwyhiim3eyjEMFCnUpzbrkK9wJHgKDT2mR+HbtSrd/NubVaYTOpSpjUl8NQeRg== 515 | dependencies: 516 | lilconfig "^2.0.5" 517 | yaml "^1.10.2" 518 | 519 | postcss-nested@5.0.6: 520 | version "5.0.6" 521 | resolved "https://registry.yarnpkg.com/postcss-nested/-/postcss-nested-5.0.6.tgz#466343f7fc8d3d46af3e7dba3fcd47d052a945bc" 522 | integrity sha512-rKqm2Fk0KbA8Vt3AdGN0FB9OBOMDVajMG6ZCf/GoHgdxUJ4sBFp0A/uMIRm+MJUdo33YXEtjqIz8u7DAp8B7DA== 523 | dependencies: 524 | postcss-selector-parser "^6.0.6" 525 | 526 | postcss-selector-parser@^6.0.10, postcss-selector-parser@^6.0.6: 527 | version "6.0.10" 528 | resolved "https://registry.yarnpkg.com/postcss-selector-parser/-/postcss-selector-parser-6.0.10.tgz#79b61e2c0d1bfc2602d549e11d0876256f8df88d" 529 | integrity sha512-IQ7TZdoaqbT+LCpShg46jnZVlhWD2w6iQYAcYXfHARZ7X1t/UGhhceQDs5X0cGqKvYlHNOuv7Oa1xmb0oQuA3w== 530 | dependencies: 531 | cssesc "^3.0.0" 532 | util-deprecate "^1.0.2" 533 | 534 | postcss-value-parser@^4.0.0, postcss-value-parser@^4.2.0: 535 | version "4.2.0" 536 | resolved "https://registry.yarnpkg.com/postcss-value-parser/-/postcss-value-parser-4.2.0.tgz#723c09920836ba6d3e5af019f92bc0971c02e514" 537 | integrity sha512-1NNCs6uurfkVbeXG4S8JFT9t19m45ICnif8zWLd5oPSZ50QnwMfK+H3jv408d4jw/7Bttv5axS5IiHoLaVNHeQ== 538 | 539 | postcss@8.4.5: 540 | version "8.4.5" 541 | resolved "https://registry.yarnpkg.com/postcss/-/postcss-8.4.5.tgz#bae665764dfd4c6fcc24dc0fdf7e7aa00cc77f95" 542 | integrity sha512-jBDboWM8qpaqwkMwItqTQTiFikhs/67OYVvblFFTM7MrZjt6yMKd6r2kgXizEbTTljacm4NldIlZnhbjr84QYg== 543 | dependencies: 544 | nanoid "^3.1.30" 545 | picocolors "^1.0.0" 546 | source-map-js "^1.0.1" 547 | 548 | postcss@^8.4.14: 549 | version "8.4.14" 550 | resolved "https://registry.yarnpkg.com/postcss/-/postcss-8.4.14.tgz#ee9274d5622b4858c1007a74d76e42e56fd21caf" 551 | integrity sha512-E398TUmfAYFPBSdzgeieK2Y1+1cpdxJx8yXbK/m57nRhKSmk1GB2tO4lbLBtlkfPQTDKfe4Xqv1ASWPpayPEig== 552 | dependencies: 553 | nanoid "^3.3.4" 554 | picocolors "^1.0.0" 555 | source-map-js "^1.0.2" 556 | 557 | prettier-plugin-tailwindcss@^0.1.11: 558 | version "0.1.11" 559 | resolved "https://registry.yarnpkg.com/prettier-plugin-tailwindcss/-/prettier-plugin-tailwindcss-0.1.11.tgz#6112da68d9d022b7f896d35c070464931c99c35f" 560 | integrity sha512-a28+1jvpIZQdZ/W97wOXb6VqI762MKE/TxMMuibMEHhyYsSxQA8Ek30KObd5kJI2HF1ldtSYprFayXJXi3pz8Q== 561 | 562 | prettier@^2.6.2: 563 | version "2.6.2" 564 | resolved "https://registry.yarnpkg.com/prettier/-/prettier-2.6.2.tgz#e26d71a18a74c3d0f0597f55f01fb6c06c206032" 565 | integrity sha512-PkUpF+qoXTqhOeWL9fu7As8LXsIUZ1WYaJiY/a7McAQzxjk82OF0tibkFXVCDImZtWxbvojFjerkiLb0/q8mew== 566 | 567 | queue-microtask@^1.2.2: 568 | version "1.2.3" 569 | resolved "https://registry.yarnpkg.com/queue-microtask/-/queue-microtask-1.2.3.tgz#4929228bbc724dfac43e0efb058caf7b6cfb6243" 570 | integrity sha512-NuaNSa6flKT5JaSYQzJok04JzTL1CA6aGhv5rfLW3PgqA+M2ChpZQnAC8h8i4ZFkBS8X5RqkDBHA7r4hej3K9A== 571 | 572 | quick-lru@^5.1.1: 573 | version "5.1.1" 574 | resolved "https://registry.yarnpkg.com/quick-lru/-/quick-lru-5.1.1.tgz#366493e6b3e42a3a6885e2e99d18f80fb7a8c932" 575 | integrity sha512-WuyALRjWPDGtt/wzJiadO5AXY+8hZ80hVpe6MyivgraREW751X3SbhRvG3eLKOYN+8VEvqLcf3wdnt44Z4S4SA== 576 | 577 | react-dom@17.0.2, react-dom@^17.0.2: 578 | version "17.0.2" 579 | resolved "https://registry.yarnpkg.com/react-dom/-/react-dom-17.0.2.tgz#ecffb6845e3ad8dbfcdc498f0d0a939736502c23" 580 | integrity sha512-s4h96KtLDUQlsENhMn1ar8t2bEa+q/YAtj8pPPdIjPDGBDIVNsrD9aXNWqspUe6AzKCIG0C1HZZLqLV7qpOBGA== 581 | dependencies: 582 | loose-envify "^1.1.0" 583 | object-assign "^4.1.1" 584 | scheduler "^0.20.2" 585 | 586 | react-textarea-autosize@^8.3.3, react-textarea-autosize@^8.3.4: 587 | version "8.3.4" 588 | resolved "https://registry.yarnpkg.com/react-textarea-autosize/-/react-textarea-autosize-8.3.4.tgz#270a343de7ad350534141b02c9cb78903e553524" 589 | integrity sha512-CdtmP8Dc19xL8/R6sWvtknD/eCXkQr30dtvC4VmGInhRsfF8X/ihXCq6+9l9qbxmKRiq407/7z5fxE7cVWQNgQ== 590 | dependencies: 591 | "@babel/runtime" "^7.10.2" 592 | use-composed-ref "^1.3.0" 593 | use-latest "^1.2.1" 594 | 595 | react@17.0.2, react@^17.0.2: 596 | version "17.0.2" 597 | resolved "https://registry.yarnpkg.com/react/-/react-17.0.2.tgz#d0b5cc516d29eb3eee383f75b62864cfb6800037" 598 | integrity sha512-gnhPt75i/dq/z3/6q/0asP78D0u592D5L1pd7M8P+dck6Fu/jJeL6iVVK23fptSUZj8Vjf++7wXA8UNclGQcbA== 599 | dependencies: 600 | loose-envify "^1.1.0" 601 | object-assign "^4.1.1" 602 | 603 | read-cache@^1.0.0: 604 | version "1.0.0" 605 | resolved "https://registry.yarnpkg.com/read-cache/-/read-cache-1.0.0.tgz#e664ef31161166c9751cdbe8dbcf86b5fb58f774" 606 | integrity sha512-Owdv/Ft7IjOgm/i0xvNDZ1LrRANRfew4b2prF3OWMQLxLfu3bS8FVhCsrSCMK4lR56Y9ya+AThoTpDCTxCmpRA== 607 | dependencies: 608 | pify "^2.3.0" 609 | 610 | readdirp@~3.6.0: 611 | version "3.6.0" 612 | resolved "https://registry.yarnpkg.com/readdirp/-/readdirp-3.6.0.tgz#74a370bd857116e245b29cc97340cd431a02a6c7" 613 | integrity sha512-hOS089on8RduqdbhvQ5Z37A0ESjsqz6qnRcffsMU3495FuTdqSm+7bhJ29JvIOsBDEEnan5DPu9t3To9VRlMzA== 614 | dependencies: 615 | picomatch "^2.2.1" 616 | 617 | regenerator-runtime@^0.13.4: 618 | version "0.13.9" 619 | resolved "https://registry.yarnpkg.com/regenerator-runtime/-/regenerator-runtime-0.13.9.tgz#8925742a98ffd90814988d7566ad30ca3b263b52" 620 | integrity sha512-p3VT+cOEgxFsRRA9X4lkI1E+k2/CtnKtU4gcxyaCUreilL/vqI6CdZ3wxVUx3UOUg+gnUOQQcRI7BmSI656MYA== 621 | 622 | resolve@^1.1.7, resolve@^1.22.0: 623 | version "1.22.0" 624 | resolved "https://registry.yarnpkg.com/resolve/-/resolve-1.22.0.tgz#5e0b8c67c15df57a89bdbabe603a002f21731198" 625 | integrity sha512-Hhtrw0nLeSrFQ7phPp4OOcVjLPIeMnRlr5mcnVuMe7M/7eBn98A3hmFRLoFo3DLZkivSYwhRUJTyPyWAk56WLw== 626 | dependencies: 627 | is-core-module "^2.8.1" 628 | path-parse "^1.0.7" 629 | supports-preserve-symlinks-flag "^1.0.0" 630 | 631 | reusify@^1.0.4: 632 | version "1.0.4" 633 | resolved "https://registry.yarnpkg.com/reusify/-/reusify-1.0.4.tgz#90da382b1e126efc02146e90845a88db12925d76" 634 | integrity sha512-U9nH88a3fc/ekCF1l0/UP1IosiuIjyTh7hBvXVMHYgVcfGvt897Xguj2UOLDeI5BG2m7/uwyaLVT6fbtCwTyzw== 635 | 636 | run-parallel@^1.1.9: 637 | version "1.2.0" 638 | resolved "https://registry.yarnpkg.com/run-parallel/-/run-parallel-1.2.0.tgz#66d1368da7bdf921eb9d95bd1a9229e7f21a43ee" 639 | integrity sha512-5l4VyZR86LZ/lDxZTR6jqL8AFE2S0IFLMP26AbjsLVADxHdhB/c0GUsH+y39UfCi3dzz8OlQuPmnaJOMoDHQBA== 640 | dependencies: 641 | queue-microtask "^1.2.2" 642 | 643 | scheduler@^0.20.2: 644 | version "0.20.2" 645 | resolved "https://registry.yarnpkg.com/scheduler/-/scheduler-0.20.2.tgz#4baee39436e34aa93b4874bddcbf0fe8b8b50e91" 646 | integrity sha512-2eWfGgAqqWFGqtdMmcL5zCMK1U8KlXv8SQFGglL3CEtd0aDVDWgeF/YoCmvln55m5zSk3J/20hTaSBeSObsQDQ== 647 | dependencies: 648 | loose-envify "^1.1.0" 649 | object-assign "^4.1.1" 650 | 651 | source-map-js@^1.0.1, source-map-js@^1.0.2: 652 | version "1.0.2" 653 | resolved "https://registry.yarnpkg.com/source-map-js/-/source-map-js-1.0.2.tgz#adbc361d9c62df380125e7f161f71c826f1e490c" 654 | integrity sha512-R0XvVJ9WusLiqTCEiGCmICCMplcCkIwwR11mOSD9CR5u+IXYdiseeEuXCVAjS54zqwkLcPNnmU4OeJ6tUrWhDw== 655 | 656 | styled-jsx@5.0.2: 657 | version "5.0.2" 658 | resolved "https://registry.yarnpkg.com/styled-jsx/-/styled-jsx-5.0.2.tgz#ff230fd593b737e9e68b630a694d460425478729" 659 | integrity sha512-LqPQrbBh3egD57NBcHET4qcgshPks+yblyhPlH2GY8oaDgKs8SK4C3dBh3oSJjgzJ3G5t1SYEZGHkP+QEpX9EQ== 660 | 661 | supports-preserve-symlinks-flag@^1.0.0: 662 | version "1.0.0" 663 | resolved "https://registry.yarnpkg.com/supports-preserve-symlinks-flag/-/supports-preserve-symlinks-flag-1.0.0.tgz#6eda4bd344a3c94aea376d4cc31bc77311039e09" 664 | integrity sha512-ot0WnXS9fgdkgIcePe6RHNk1WA8+muPa6cSjeR3V8K27q9BB1rTE3R1p7Hv0z1ZyAc8s6Vvv8DIyWf681MAt0w== 665 | 666 | tailwindcss@^3.0.24: 667 | version "3.1.2" 668 | resolved "https://registry.yarnpkg.com/tailwindcss/-/tailwindcss-3.1.2.tgz#b5607d17adb6cbb11a13738cc5fdf3e5527dcd7a" 669 | integrity sha512-yJ6L5s1U5AeS5g7HHy212zdQfjwD426FBfm59pet/JsyneuZuD4C2W7PpJEg4ppisiB21uLqtNagv8KXury3+Q== 670 | dependencies: 671 | arg "^5.0.1" 672 | chokidar "^3.5.3" 673 | color-name "^1.1.4" 674 | detective "^5.2.1" 675 | didyoumean "^1.2.2" 676 | dlv "^1.1.3" 677 | fast-glob "^3.2.11" 678 | glob-parent "^6.0.2" 679 | is-glob "^4.0.3" 680 | lilconfig "^2.0.5" 681 | normalize-path "^3.0.0" 682 | object-hash "^3.0.0" 683 | picocolors "^1.0.0" 684 | postcss "^8.4.14" 685 | postcss-import "^14.1.0" 686 | postcss-js "^4.0.0" 687 | postcss-load-config "^3.1.4" 688 | postcss-nested "5.0.6" 689 | postcss-selector-parser "^6.0.10" 690 | postcss-value-parser "^4.2.0" 691 | quick-lru "^5.1.1" 692 | resolve "^1.22.0" 693 | 694 | to-regex-range@^5.0.1: 695 | version "5.0.1" 696 | resolved "https://registry.yarnpkg.com/to-regex-range/-/to-regex-range-5.0.1.tgz#1648c44aae7c8d988a326018ed72f5b4dd0392e4" 697 | integrity sha512-65P7iz6X5yEr1cwcgvQxbbIw7Uk3gOy5dIdtZ4rDveLqhrdJP+Li/Hx6tyK0NEb+2GCyneCMJiGqrADCSNk8sQ== 698 | dependencies: 699 | is-number "^7.0.0" 700 | 701 | tr46@~0.0.3: 702 | version "0.0.3" 703 | resolved "https://registry.yarnpkg.com/tr46/-/tr46-0.0.3.tgz#8184fd347dac9cdc185992f3a6622e14b9d9ab6a" 704 | integrity sha512-N3WMsuqV66lT30CrXNbEjx4GEwlow3v6rr4mCcv6prnfwhS01rkgyFdjPNBYd9br7LpXV1+Emh01fHnq2Gdgrw== 705 | 706 | typescript@^4.7.2: 707 | version "4.7.3" 708 | resolved "https://registry.yarnpkg.com/typescript/-/typescript-4.7.3.tgz#8364b502d5257b540f9de4c40be84c98e23a129d" 709 | integrity sha512-WOkT3XYvrpXx4vMMqlD+8R8R37fZkjyLGlxavMc4iB8lrl8L0DeTcHbYgw/v0N/z9wAFsgBhcsF0ruoySS22mA== 710 | 711 | use-composed-ref@^1.3.0: 712 | version "1.3.0" 713 | resolved "https://registry.yarnpkg.com/use-composed-ref/-/use-composed-ref-1.3.0.tgz#3d8104db34b7b264030a9d916c5e94fbe280dbda" 714 | integrity sha512-GLMG0Jc/jiKov/3Ulid1wbv3r54K9HlMW29IWcDFPEqFkSO2nS0MuefWgMJpeHQ9YJeXDL3ZUF+P3jdXlZX/cQ== 715 | 716 | use-isomorphic-layout-effect@^1.1.1: 717 | version "1.1.2" 718 | resolved "https://registry.yarnpkg.com/use-isomorphic-layout-effect/-/use-isomorphic-layout-effect-1.1.2.tgz#497cefb13d863d687b08477d9e5a164ad8c1a6fb" 719 | integrity sha512-49L8yCO3iGT/ZF9QttjwLF/ZD9Iwto5LnH5LmEdk/6cFmXddqi2ulF0edxTwjj+7mqvpVVGQWvbXZdn32wRSHA== 720 | 721 | use-latest@^1.2.1: 722 | version "1.2.1" 723 | resolved "https://registry.yarnpkg.com/use-latest/-/use-latest-1.2.1.tgz#d13dfb4b08c28e3e33991546a2cee53e14038cf2" 724 | integrity sha512-xA+AVm/Wlg3e2P/JiItTziwS7FK92LWrDB0p+hgXloIMuVCeJJ8v6f0eeHyPZaJrM+usM1FkFfbNCrJGs8A/zw== 725 | dependencies: 726 | use-isomorphic-layout-effect "^1.1.1" 727 | 728 | util-deprecate@^1.0.2: 729 | version "1.0.2" 730 | resolved "https://registry.yarnpkg.com/util-deprecate/-/util-deprecate-1.0.2.tgz#450d4dc9fa70de732762fbd2d4a28981419a0ccf" 731 | integrity sha512-EPD5q1uXyFxJpCrLnCc1nHnq3gOa6DZBocAIiI2TaSCA7VCJ1UJDMagCzIkXNsUYfD1daK//LTEQ8xiIbrHtcw== 732 | 733 | webidl-conversions@^3.0.0: 734 | version "3.0.1" 735 | resolved "https://registry.yarnpkg.com/webidl-conversions/-/webidl-conversions-3.0.1.tgz#24534275e2a7bc6be7bc86611cc16ae0a5654871" 736 | integrity sha512-2JAn3z8AR6rjK8Sm8orRC0h/bcl/DqL7tRPdGZ4I1CjdF+EaMLmYxBHyXuKL849eucPFhvBoxMsflfOb8kxaeQ== 737 | 738 | whatwg-fetch@^3.4.1: 739 | version "3.6.2" 740 | resolved "https://registry.yarnpkg.com/whatwg-fetch/-/whatwg-fetch-3.6.2.tgz#dced24f37f2624ed0281725d51d0e2e3fe677f8c" 741 | integrity sha512-bJlen0FcuU/0EMLrdbJ7zOnW6ITZLrZMIarMUVmdKtsGvZna8vxKYaexICWPfZ8qwf9fzNq+UEIZrnSaApt6RA== 742 | 743 | whatwg-url@^5.0.0: 744 | version "5.0.0" 745 | resolved "https://registry.yarnpkg.com/whatwg-url/-/whatwg-url-5.0.0.tgz#966454e8765462e37644d3626f6742ce8b70965d" 746 | integrity sha512-saE57nupxk6v3HY35+jzBwYa0rKSy0XR8JSxZPwgLr7ys0IBzhGviA1/TUGJLmSVqs8pb9AnvICXEuOHLprYTw== 747 | dependencies: 748 | tr46 "~0.0.3" 749 | webidl-conversions "^3.0.0" 750 | 751 | xtend@^4.0.2: 752 | version "4.0.2" 753 | resolved "https://registry.yarnpkg.com/xtend/-/xtend-4.0.2.tgz#bb72779f5fa465186b1f438f674fa347fdb5db54" 754 | integrity sha512-LKYU1iAXJXUgAXn9URjiu+MWhyUXHsvfp7mcuYm9dSUKK0/CjtrUwFAxD82/mCWbtLsGjFIad0wIsod4zrTAEQ== 755 | 756 | yaml@^1.10.2: 757 | version "1.10.2" 758 | resolved "https://registry.yarnpkg.com/yaml/-/yaml-1.10.2.tgz#2301c5ffbf12b467de8da2333a459e29e7920e4b" 759 | integrity sha512-r3vXyErRCYJ7wg28yvBY5VSoAF8ZvlcW9/BwUzEtUsjvX/DKs24dIkuwjtuprwJJHsbyUbLApepYTR1BN4uHrg== 760 | --------------------------------------------------------------------------------