From b3c7afc1ee7a53427daed168d072df7a694dc36a Mon Sep 17 00:00:00 2001 From: Greg Rashkevitch Date: Sat, 4 Nov 2023 20:07:39 +0200 Subject: [PATCH 1/3] chatgpt clone --- components/Chat.tsx | 214 +++++++++ components/Message.tsx | 44 ++ components/MobileSidebar.tsx | 58 +++ components/{prompt.tsx => Prompt.tsx} | 0 components/Sidebar.tsx | 55 +++ hooks/useAppState.tsx | 14 + hooks/useAutoResizeTextArea.tsx | 16 + hooks/useLocalStorage.tsx | 33 ++ next.config.js | 9 + package.json | 10 +- pages/_app.tsx | 2 +- pages/_document.tsx | 13 + pages/api/integration/assistant.ts | 4 +- pages/api/server/chat-response.ts | 47 ++ ...{ai-response.ts => completion-response.ts} | 3 +- pages/index.tsx | 5 +- pages/object-view/index.tsx | 25 + postcss.config.js | 6 + shared/Constants.ts | 16 + styles.css | 7 - styles/global.css | 49 ++ tailwind.config.js | 20 + types/model.ts | 5 + yarn.lock | 440 +++++++++++++++++- 24 files changed, 1056 insertions(+), 39 deletions(-) create mode 100644 components/Chat.tsx create mode 100644 components/Message.tsx create mode 100644 components/MobileSidebar.tsx rename components/{prompt.tsx => Prompt.tsx} (100%) create mode 100644 components/Sidebar.tsx create mode 100644 hooks/useAppState.tsx create mode 100644 hooks/useAutoResizeTextArea.tsx create mode 100644 hooks/useLocalStorage.tsx create mode 100644 next.config.js create mode 100644 pages/_document.tsx create mode 100644 pages/api/server/chat-response.ts rename pages/api/server/{ai-response.ts => completion-response.ts} (87%) create mode 100644 pages/object-view/index.tsx create mode 100644 postcss.config.js create mode 100644 shared/Constants.ts delete mode 100644 styles.css create mode 100644 styles/global.css create mode 100644 tailwind.config.js create mode 100644 types/model.ts diff --git a/components/Chat.tsx b/components/Chat.tsx new file mode 100644 index 0000000..9eab8c2 --- /dev/null +++ b/components/Chat.tsx @@ -0,0 +1,214 @@ +import { useEffect, useRef, useState } from 'react'; +import { FiSend } from 'react-icons/fi'; +import { BsChevronDown, BsPlusLg } from 'react-icons/bs'; +import { RxHamburgerMenu } from 'react-icons/rx'; +import Message from './Message'; +import { DEFAULT_OPENAI_MODEL } from '../shared/Constants'; +import useAutoResizeTextArea from '../hooks/useAutoResizeTextArea'; + +const Chat = (props: any) => { + const { toggleComponentVisibility } = props; + + const [isLoading, setIsLoading] = useState(false); + const [errorMessage, setErrorMessage] = useState(''); + const [showEmptyChat, setShowEmptyChat] = useState(true); + const [conversation, setConversation] = useState([]); + const [message, setMessage] = useState(''); + const textAreaRef = useAutoResizeTextArea(); + const bottomOfChatRef = useRef(null); + + const selectedModel = DEFAULT_OPENAI_MODEL; + + useEffect(() => { + if (textAreaRef.current) { + textAreaRef.current.style.height = '24px'; + textAreaRef.current.style.height = `${textAreaRef.current.scrollHeight}px`; + } + }, [message, textAreaRef]); + + useEffect(() => { + if (bottomOfChatRef.current) { + bottomOfChatRef.current.scrollIntoView({ behavior: 'smooth' }); + } + }, [conversation]); + + const sendMessage = async (e: any) => { + e.preventDefault(); + + // Don't send empty messages + if (message.length < 1) { + setErrorMessage('Please enter a message.'); + return; + } else { + setErrorMessage(''); + } + + setIsLoading(true); + + // Add the message to the conversation + setConversation([...conversation, { content: message, role: 'user' }, { content: null, role: 'system' }]); + + // Clear the message & remove empty chat + setMessage(''); + setShowEmptyChat(false); + + try { + const response = await fetch(`/api/server/chat-response`, { + method: 'POST', + headers: { + 'Content-Type': 'application/json', + }, + body: JSON.stringify({ + messages: [...conversation, { content: message, role: 'user' }], + model: selectedModel, + }), + }); + + if (response.ok) { + const data = await response.json(); + + // Add the message to the conversation + setConversation([ + ...conversation, + { content: message, role: 'user' }, + { content: data.message, role: 'system' }, + ]); + } else { + console.error(response); + setErrorMessage(response.statusText); + } + + setIsLoading(false); + } catch (error: any) { + console.error(error); + setErrorMessage(error.message); + + setIsLoading(false); + } + }; + + const handleKeypress = (e: any) => { + // It's triggers by pressing the enter key + if (e.keyCode == 13 && !e.shiftKey) { + sendMessage(e); + e.preventDefault(); + } + }; + + return ( +
+
+ +

New chat

+ +
+
+
+
+
+ {!showEmptyChat && conversation.length > 0 ? ( +
+
+ Model: {selectedModel.name} +
+ {conversation.map((message, index) => ( + + ))} +
+
+
+ ) : null} + {showEmptyChat ? ( +
+
+
+ +
+
+

+ ChatGPT Clone +

+
+ ) : null} +
+
+
+
+
+
+
+ {errorMessage ? ( +
+
+ {errorMessage} +
+
+ ) : null} +
+ + +
+
+
+
+ ChatGPT Clone may produce inaccurate information about people, places, or facts. +
+
+
+
+ ); +}; + +export default Chat; diff --git a/components/Message.tsx b/components/Message.tsx new file mode 100644 index 0000000..bbd5181 --- /dev/null +++ b/components/Message.tsx @@ -0,0 +1,44 @@ +import { SiOpenai } from 'react-icons/si'; +import { HiUser } from 'react-icons/hi'; +import { TbCursorText } from 'react-icons/tb'; + +const Message = (props: any) => { + const { message } = props; + const { role, content: text } = message; + + const isUser = role === 'user'; + + return ( +
+
+
+
+
+ {isUser ? : } +
+
+ + 1 / 1 + +
+
+
+
+
+
+ {!isUser && text === null ? :

{text}

} +
+
+
+
+
+
+
+ ); +}; + +export default Message; diff --git a/components/MobileSidebar.tsx b/components/MobileSidebar.tsx new file mode 100644 index 0000000..19eef02 --- /dev/null +++ b/components/MobileSidebar.tsx @@ -0,0 +1,58 @@ +import React from 'react'; +import { IoMdClose } from 'react-icons/io'; +import Sidebar from './Sidebar'; + +const MobileSidebar = (props: any) => { + const { toggleComponentVisibility } = props; + + return ( +
+
+ +
+ +
+ +
+
+ ); +}; + +export default MobileSidebar; diff --git a/components/prompt.tsx b/components/Prompt.tsx similarity index 100% rename from components/prompt.tsx rename to components/Prompt.tsx diff --git a/components/Sidebar.tsx b/components/Sidebar.tsx new file mode 100644 index 0000000..5a263c4 --- /dev/null +++ b/components/Sidebar.tsx @@ -0,0 +1,55 @@ +import React from 'react'; +import { AiOutlineMessage, AiOutlinePlus, AiOutlineUser, AiOutlineSetting } from 'react-icons/ai'; +import { BiLinkExternal } from 'react-icons/bi'; +import { FiMessageSquare } from 'react-icons/fi'; +import { MdLogout } from 'react-icons/md'; + +const Sidebar = () => { + return ( +
+ +
+ ); +}; + +export default Sidebar; diff --git a/hooks/useAppState.tsx b/hooks/useAppState.tsx new file mode 100644 index 0000000..103240e --- /dev/null +++ b/hooks/useAppState.tsx @@ -0,0 +1,14 @@ +import { v4 as uuid } from 'uuid'; +import { LS_UUID } from '../shared/Constants'; +import useLocalStorage from './useLocalStorage'; + +function useAppState() { + const [userId, setUserId] = useLocalStorage(LS_UUID, uuid()); + + return { + userId, + setUserId, + }; +} + +export default useAppState; diff --git a/hooks/useAutoResizeTextArea.tsx b/hooks/useAutoResizeTextArea.tsx new file mode 100644 index 0000000..4622025 --- /dev/null +++ b/hooks/useAutoResizeTextArea.tsx @@ -0,0 +1,16 @@ +import { useRef, useEffect } from 'react'; + +function useAutoResizeTextArea() { + const textAreaRef = useRef(null); + + useEffect(() => { + if (textAreaRef.current) { + textAreaRef.current.style.height = '24px'; + textAreaRef.current.style.height = `${textAreaRef.current.scrollHeight}px`; + } + }, [textAreaRef]); + + return textAreaRef; +} + +export default useAutoResizeTextArea; diff --git a/hooks/useLocalStorage.tsx b/hooks/useLocalStorage.tsx new file mode 100644 index 0000000..9e07e17 --- /dev/null +++ b/hooks/useLocalStorage.tsx @@ -0,0 +1,33 @@ +import { useState, useEffect } from 'react'; + +function useLocalStorage(key: string, initialValue: T) { + const [storedValue, setStoredValue] = useState(() => { + // Check if window is defined to ensure running on the client-side + if (typeof window === 'undefined') { + return initialValue; + } + + try { + const item = localStorage.getItem(key); + return item ? JSON.parse(item) : initialValue; + } catch (error) { + console.error(error); + return initialValue; + } + }); + + useEffect(() => { + // Check if window is defined to ensure running on the client-side + if (typeof window !== 'undefined') { + try { + localStorage.setItem(key, JSON.stringify(storedValue)); + } catch (error) { + console.error(error); + } + } + }, [storedValue, key]); + + return [storedValue, setStoredValue] as const; +} + +export default useLocalStorage; diff --git a/next.config.js b/next.config.js new file mode 100644 index 0000000..59f9b02 --- /dev/null +++ b/next.config.js @@ -0,0 +1,9 @@ +/** @type {import('next').NextConfig} */ +const nextConfig = { + reactStrictMode: false, + env: { + OPENAI_API_KEY: process.env.OPENAI_API_KEY, + }, +}; + +module.exports = nextConfig; diff --git a/package.json b/package.json index bf9963a..8fcaff6 100644 --- a/package.json +++ b/package.json @@ -12,19 +12,23 @@ }, "dependencies": { "@mondaycom/apps-sdk": "^0.1.4", - "jose": "^4.15.4", + "autoprefixer": "^10.4.16", "jsonwebtoken": "^9.0.2", "monday-sdk-js": "^0.4.11", "next": "^13.5.5", - "openai": "^3.1.0", + "openai": "3.2.1", "react": "18.2.0", "react-dom": "18.2.0", - "swr": "^2.0.0" + "react-icons": "^4.11.0", + "swr": "^2.0.0", + "tailwindcss": "^3.3.5", + "uuid": "^9.0.1" }, "devDependencies": { "@types/node": "18.11.17", "@types/react": "18.0.26", "@types/react-dom": "18.0.10", + "@types/uuid": "^9.0.6", "encoding": "^0.1.13", "eslint": "8.30.0", "eslint-config-next": "13.1.1", diff --git a/pages/_app.tsx b/pages/_app.tsx index f0ac97f..a76ab3b 100644 --- a/pages/_app.tsx +++ b/pages/_app.tsx @@ -1,5 +1,5 @@ import { AppProps } from 'next/app'; -import '../styles.css'; +import '../styles/global.css'; export default function MyApp({ Component, pageProps }: AppProps) { return ; diff --git a/pages/_document.tsx b/pages/_document.tsx new file mode 100644 index 0000000..2e00669 --- /dev/null +++ b/pages/_document.tsx @@ -0,0 +1,13 @@ +import { Html, Head, Main, NextScript } from 'next/document'; + +export default function Document() { + return ( + + + +
+ + + + ); +} diff --git a/pages/api/integration/assistant.ts b/pages/api/integration/assistant.ts index d210316..f85302e 100644 --- a/pages/api/integration/assistant.ts +++ b/pages/api/integration/assistant.ts @@ -25,9 +25,7 @@ export default async function handler(req: NextApiRequest, res: NextApiResponse) const mondayClient = initMondayClient({ token: shortLivedToken, apiVersion: '2023-10' }); // answer only for the first update - const itemUpdates = await mondayClient.api( - `query { items(ids: [${itemId}]) { updates { id } } }`, - ); + const itemUpdates = await mondayClient.api(`query { items(ids: [${itemId}]) { updates { id } } }`); const firstUpdateId = itemUpdates.data.items[0].updates.pop().id; if (Number(firstUpdateId) !== updateId) { const msg = `Not answering for update ${updateId} in item ${itemId} because it's not the first update`; diff --git a/pages/api/server/chat-response.ts b/pages/api/server/chat-response.ts new file mode 100644 index 0000000..5f74fe1 --- /dev/null +++ b/pages/api/server/chat-response.ts @@ -0,0 +1,47 @@ +import { NextApiRequest, NextApiResponse } from 'next'; +import { ChatCompletionRequestMessage } from 'openai'; +import { DEFAULT_OPENAI_MODEL } from '../../../shared/Constants'; +import { OpenAIModel } from '../../../types/model'; +import { openai } from '../../../helpers/openai'; + +export default async function handler(req: NextApiRequest, res: NextApiResponse) { + if (req.method !== 'POST') { + res.status(405).json({ error: 'Method not allowed' }); + return; + } + + const body = req.body; + const messages = (body?.messages || []) as ChatCompletionRequestMessage[]; + const model = (body?.model || DEFAULT_OPENAI_MODEL) as OpenAIModel; + + try { + const promptMessage: ChatCompletionRequestMessage = { + role: 'system', + content: 'You are ChatGPT. Respond to the user like you normally would.', + }; + const initialMessages: ChatCompletionRequestMessage[] = messages.splice(0, 3); + const latestMessages: ChatCompletionRequestMessage[] = messages.slice(-5).map((message) => ({ + role: message.role, + content: message.content, + })); + + const completion = await openai.createChatCompletion({ + model: model.id, + temperature: 0.5, + messages: [promptMessage, ...initialMessages, ...latestMessages], + }); + + const responseMessage = completion.data.choices[0].message?.content.trim(); + + if (!responseMessage) { + res.status(400).json({ error: 'Unable get response from OpenAI. Please try again.' }); + } + + res.status(200).json({ message: responseMessage }); + } catch (error) { + console.error(error); + res.status(500).json({ + error: 'An error occurred during ping to OpenAI. Please try again.', + }); + } +} diff --git a/pages/api/server/ai-response.ts b/pages/api/server/completion-response.ts similarity index 87% rename from pages/api/server/ai-response.ts rename to pages/api/server/completion-response.ts index 6e1470a..db921ba 100644 --- a/pages/api/server/ai-response.ts +++ b/pages/api/server/completion-response.ts @@ -8,9 +8,10 @@ export default async function handler(req: NextApiRequest, res: NextApiResponse) } try { - const { message } = req.body; + const { message, model } = req.body; const response = await openai.createCompletion({ ...defaultOpenAIConfiguration, + model: model ?? defaultOpenAIConfiguration.model, prompt: `${message}`, }); diff --git a/pages/index.tsx b/pages/index.tsx index ba37d5f..fe0ac9c 100644 --- a/pages/index.tsx +++ b/pages/index.tsx @@ -9,10 +9,7 @@ export default function IndexPage() { Doc Slash Command
  • - Board View -
  • -
  • - Custom Object + Custom Object
  • diff --git a/pages/object-view/index.tsx b/pages/object-view/index.tsx new file mode 100644 index 0000000..048557f --- /dev/null +++ b/pages/object-view/index.tsx @@ -0,0 +1,25 @@ +import { useState } from 'react'; + +import Chat from '../../components/Chat'; +import Sidebar from '../../components/Sidebar'; +import MobileSidebar from '../../components/MobileSidebar'; + +export default function Home() { + const [isComponentVisible, setIsComponentVisible] = useState(false); + + const toggleComponentVisibility = () => { + setIsComponentVisible(!isComponentVisible); + }; + + return ( +
    + {isComponentVisible ? : null} +
    +
    + +
    +
    + +
    + ); +} diff --git a/postcss.config.js b/postcss.config.js new file mode 100644 index 0000000..12a703d --- /dev/null +++ b/postcss.config.js @@ -0,0 +1,6 @@ +module.exports = { + plugins: { + tailwindcss: {}, + autoprefixer: {}, + }, +}; diff --git a/shared/Constants.ts b/shared/Constants.ts new file mode 100644 index 0000000..f335386 --- /dev/null +++ b/shared/Constants.ts @@ -0,0 +1,16 @@ +import { OpenAIModel } from '../types/model'; + +export const LS_UUID = '@ls/uuid'; +export const DEFAULT_OPENAI_MODEL = { + name: 'Default (GPT-3.5)', + id: 'gpt-3.5-turbo', + available: true, +}; + +export const GPT4_OPENAI_MODEL = { + name: 'GPT-4', + id: 'gpt-4', + available: false, +}; + +export const OPENAI_MODELS: OpenAIModel[] = [DEFAULT_OPENAI_MODEL, GPT4_OPENAI_MODEL]; diff --git a/styles.css b/styles.css deleted file mode 100644 index dc7fdf8..0000000 --- a/styles.css +++ /dev/null @@ -1,7 +0,0 @@ -* { - box-sizing: border-box; -} -body { - margin: 0; - overflow: hidden; -} diff --git a/styles/global.css b/styles/global.css new file mode 100644 index 0000000..c86a93d --- /dev/null +++ b/styles/global.css @@ -0,0 +1,49 @@ +@tailwind base; +@tailwind components; +@tailwind utilities; + +* { + box-sizing: border-box; +} +body { + margin: 0; + overflow: hidden; +} + +:root { + --foreground-rgb: 0, 0, 0; + --background-start-rgb: 214, 219, 220; + --background-end-rgb: 255, 255, 255; + height: 100%; +} + +@media (prefers-color-scheme: dark) { + :root { + --foreground-rgb: 255, 255, 255; + --background-start-rgb: 0, 0, 0; + --background-end-rgb: 0, 0, 0; + } +} + +#__next { + height: 100vh; +} + +body { + height: 100%; +} + +.react-scroll-to-bottom--css-uzqrz-79elbk { + position: relative; +} + +.react-scroll-to-bottom--css-ikyem-1n7m0yu { + height: 100%; + overflow-y: auto; + width: 100%; +} + +textarea:focus { + outline: none; + box-shadow: none; +} diff --git a/tailwind.config.js b/tailwind.config.js new file mode 100644 index 0000000..2a92dcc --- /dev/null +++ b/tailwind.config.js @@ -0,0 +1,20 @@ +/** @type {import('tailwindcss').Config} */ +module.exports = { + content: ['./pages/**/*.{js,ts,jsx,tsx}', './components/**/*.{js,ts,jsx,tsx}'], + theme: { + extend: { + colors: { + 'gray-700': 'rgb(64,65,78)', + 'gray-800': 'rgba(52,53,65,1)', + 'gray-900': 'rgb(32,33,35)', + }, + width: { + 280: '280px', + }, + backgroundImage: { + 'vert-dark-gradient': 'linear-gradient(180deg, rgba(53, 55, 64, 0), #353740 58.85%)', + }, + }, + }, + plugins: [], +}; diff --git a/types/model.ts b/types/model.ts new file mode 100644 index 0000000..f769f10 --- /dev/null +++ b/types/model.ts @@ -0,0 +1,5 @@ +export type OpenAIModel = { + name: string; + id: string; + available: boolean; +}; diff --git a/yarn.lock b/yarn.lock index 3add285..b774a53 100644 --- a/yarn.lock +++ b/yarn.lock @@ -2,6 +2,11 @@ # yarn lockfile v1 +"@alloc/quick-lru@^5.2.0": + version "5.2.0" + resolved "https://registry.npmjs.org/@alloc/quick-lru/-/quick-lru-5.2.0.tgz#7bf68b20c0a350f936915fcae06f58e32007ce30" + integrity sha512-UrcABB+4bUrFABwbluTIBErXwvbsU/V7TZWfmbgJfbkwiBuziS9gxdODUyuiecfdGQ85jglMW6juS3+z5TsKLw== + "@babel/runtime-corejs3@^7.10.2": version "7.20.7" resolved "https://registry.yarnpkg.com/@babel/runtime-corejs3/-/runtime-corejs3-7.20.7.tgz#a1e5ea3d758ba6beb715210142912e3f29981d84" @@ -51,6 +56,38 @@ resolved "https://registry.yarnpkg.com/@humanwhocodes/object-schema/-/object-schema-1.2.1.tgz#b520529ec21d8e5945a1851dfd1c32e94e39ff45" integrity sha512-ZnQMnLV4e7hDlUvw8H+U8ASL02SS2Gn6+9Ac3wGGLIe7+je2AeAOxPY+izIPJDfFDb7eDjev0Us8MO1iFRN8hA== +"@jridgewell/gen-mapping@^0.3.2": + version "0.3.3" + resolved "https://registry.npmjs.org/@jridgewell/gen-mapping/-/gen-mapping-0.3.3.tgz#7e02e6eb5df901aaedb08514203b096614024098" + integrity sha512-HLhSWOLRi875zjjMG/r+Nv0oCW8umGb0BgEhyX3dDX3egwZtB8PqLnjz3yedt8R5StBrzcg4aBpnh8UA9D1BoQ== + dependencies: + "@jridgewell/set-array" "^1.0.1" + "@jridgewell/sourcemap-codec" "^1.4.10" + "@jridgewell/trace-mapping" "^0.3.9" + +"@jridgewell/resolve-uri@^3.1.0": + version "3.1.1" + resolved "https://registry.npmjs.org/@jridgewell/resolve-uri/-/resolve-uri-3.1.1.tgz#c08679063f279615a3326583ba3a90d1d82cc721" + integrity sha512-dSYZh7HhCDtCKm4QakX0xFpsRDqjjtZf/kjI/v3T3Nwt5r8/qz/M19F9ySyOqU94SXBmeG9ttTul+YnR4LOxFA== + +"@jridgewell/set-array@^1.0.1": + version "1.1.2" + resolved "https://registry.npmjs.org/@jridgewell/set-array/-/set-array-1.1.2.tgz#7c6cf998d6d20b914c0a55a91ae928ff25965e72" + integrity sha512-xnkseuNADM0gt2bs+BvhO0p78Mk762YnZdsuzFV018NoG1Sj1SCQvpSqa7XUaTam5vAGasABV9qXASMKnFMwMw== + +"@jridgewell/sourcemap-codec@^1.4.10", "@jridgewell/sourcemap-codec@^1.4.14": + version "1.4.15" + resolved "https://registry.npmjs.org/@jridgewell/sourcemap-codec/-/sourcemap-codec-1.4.15.tgz#d7c6e6755c78567a951e04ab52ef0fd26de59f32" + integrity sha512-eF2rxCRulEKXHTRiDrDy6erMYWqNw4LPdQ8UQA4huuxaQsVeRPFl2oM8oDGxMFhJUWZf9McpLtJasDDZb/Bpeg== + +"@jridgewell/trace-mapping@^0.3.9": + version "0.3.20" + resolved "https://registry.npmjs.org/@jridgewell/trace-mapping/-/trace-mapping-0.3.20.tgz#72e45707cf240fa6b081d0366f8265b0cd10197f" + integrity sha512-R8LcPeWZol2zR8mmH3JeKQ6QRCFb7XgUhV9ZlGhHLGyg4wpPiPZNQOOWhFZhxKw8u//yTbNGI42Bx/3paXEQ+Q== + dependencies: + "@jridgewell/resolve-uri" "^3.1.0" + "@jridgewell/sourcemap-codec" "^1.4.14" + "@mondaycom/apps-sdk@^0.1.4": version "0.1.4" resolved "https://registry.npmjs.org/@mondaycom/apps-sdk/-/apps-sdk-0.1.4.tgz#72ac02aee1bf461526bcbd7bd2c56996c1cbfa38" @@ -202,6 +239,11 @@ resolved "https://registry.yarnpkg.com/@types/scheduler/-/scheduler-0.16.2.tgz#1a62f89525723dde24ba1b01b092bf5df8ad4d39" integrity sha512-hppQEBDmlwhFAXKJX2KnWLYu5yMfi91yazPb2l+lbJiwW+wdo1gNeRA+3RgNSO39WYX2euey41KEwnqesU2Jew== +"@types/uuid@^9.0.6": + version "9.0.6" + resolved "https://registry.npmjs.org/@types/uuid/-/uuid-9.0.6.tgz#c91ae743d8344a54b2b0c691195f5ff5265f6dfb" + integrity sha512-BT2Krtx4xaO6iwzwMFUYvWBWkV2pr37zD68Vmp1CDV196MzczBRxuEpD6Pr395HAgebC/co7hOphs53r8V7jew== + "@typescript-eslint/parser@^5.42.0": version "5.47.1" resolved "https://registry.yarnpkg.com/@typescript-eslint/parser/-/parser-5.47.1.tgz#c4bf16f8c3c7608ce4bf8ff804b677fc899f173f" @@ -292,11 +334,29 @@ ansi-styles@^4.1.0: dependencies: color-convert "^2.0.1" +any-promise@^1.0.0: + version "1.3.0" + resolved "https://registry.npmjs.org/any-promise/-/any-promise-1.3.0.tgz#abc6afeedcea52e809cdc0376aed3ce39635d17f" + integrity sha512-7UvmKalWRt1wgjL1RrGxoSJW/0QZFIegpeGvZG9kjp8vrRu55XTHbwnqq2GpXm9uLbcuhxm3IqX9OB4MZR1b2A== + +anymatch@~3.1.2: + version "3.1.3" + resolved "https://registry.npmjs.org/anymatch/-/anymatch-3.1.3.tgz#790c58b19ba1720a84205b57c618d5ad8524973e" + integrity sha512-KMReFUr0B4t+D+OBkjR3KYqvocp2XaSzO55UcB6mgQMd3KbcE+mWTyvVV7D/zsdEbNnV6acZUutkiHQXvTr1Rw== + dependencies: + normalize-path "^3.0.0" + picomatch "^2.0.4" + app-root-path@^3.1.0: version "3.1.0" resolved "https://registry.npmjs.org/app-root-path/-/app-root-path-3.1.0.tgz#5971a2fc12ba170369a7a1ef018c71e6e47c2e86" integrity sha512-biN3PwB2gUtjaYy/isrU3aNWI5w+fAfvHkSvCKeQGxhmYpwKFUxudR3Yya+KqVRHBmEDYh+/lTozYCFbmzX4nA== +arg@^5.0.2: + version "5.0.2" + resolved "https://registry.npmjs.org/arg/-/arg-5.0.2.tgz#c81433cc427c92c4dcf4865142dbca6f15acd59c" + integrity sha512-PYjyFOLKQ9y57JvQ6QLo8dAgNqswh8M1RMJYdQduT6xbWSgK36P/Z/v+p888pM69jMMfS8Xd8F6I1kQ/I9HUGg== + argparse@^2.0.1: version "2.0.1" resolved "https://registry.yarnpkg.com/argparse/-/argparse-2.0.1.tgz#246f50f3ca78a3240f6c997e8a9bd1eac49e4b38" @@ -377,6 +437,18 @@ atomic-sleep@^1.0.0: resolved "https://registry.npmjs.org/atomic-sleep/-/atomic-sleep-1.0.0.tgz#eb85b77a601fc932cfe432c5acd364a9e2c9075b" integrity sha512-kNOjDqAh7px0XWNI+4QbzoiR/nTkHAWNud2uvnJquD1/x5a7EQZMJT0AczqK0Qn67oY/TTQ1LbUKajZpp3I9tQ== +autoprefixer@^10.4.16: + version "10.4.16" + resolved "https://registry.npmjs.org/autoprefixer/-/autoprefixer-10.4.16.tgz#fad1411024d8670880bdece3970aa72e3572feb8" + integrity sha512-7vd3UC6xKp0HLfua5IjZlcXvGAGy7cBAXTg2lyQ/8WpNhd6SiZ8Be+xm3FyBSYJx5GKcpRCzBh7RH4/0dnY+uQ== + dependencies: + browserslist "^4.21.10" + caniuse-lite "^1.0.30001538" + fraction.js "^4.3.6" + normalize-range "^0.1.2" + picocolors "^1.0.0" + postcss-value-parser "^4.2.0" + axe-core@^4.4.3: version "4.6.1" resolved "https://registry.yarnpkg.com/axe-core/-/axe-core-4.6.1.tgz#79cccdee3e3ab61a8f42c458d4123a6768e6fbce" @@ -384,7 +456,7 @@ axe-core@^4.4.3: axios@^0.26.0: version "0.26.1" - resolved "https://registry.yarnpkg.com/axios/-/axios-0.26.1.tgz#1ede41c51fcf51bbbd6fd43669caaa4f0495aaa9" + resolved "https://registry.npmjs.org/axios/-/axios-0.26.1.tgz#1ede41c51fcf51bbbd6fd43669caaa4f0495aaa9" integrity sha512-fPwcX4EvnSHuInCMItEhAGnaSEXRBjtzh9fOtsE6E1G6p7vl7edEeZe11QHf18+6+9gR5PbKV/sGKNaD8YaMeA== dependencies: follow-redirects "^1.14.8" @@ -409,6 +481,11 @@ bignumber.js@^9.0.0: resolved "https://registry.npmjs.org/bignumber.js/-/bignumber.js-9.1.2.tgz#b7c4242259c008903b13707983b5f4bbd31eda0c" integrity sha512-2/mKyZH9K85bzOEfhXDBFZTGd1CTs+5IHpeFQo9luiBG7hghdC851Pj2WAhb6E3R6b9tZj/XKhbg4fum+Kepug== +binary-extensions@^2.0.0: + version "2.2.0" + resolved "https://registry.npmjs.org/binary-extensions/-/binary-extensions-2.2.0.tgz#75f502eeaf9ffde42fc98829645be4ea76bd9e2d" + integrity sha512-jDctJ/IVQbZoJykoeHbhXpOlNBqGNcwXJKJog42E5HDPUwQTSdjCHdihjj0DlnheQ7blbT6dHOafNAiS8ooQKA== + brace-expansion@^1.1.7: version "1.1.11" resolved "https://registry.yarnpkg.com/brace-expansion/-/brace-expansion-1.1.11.tgz#3c7fcbf529d87226f3d2f52b966ff5271eb441dd" @@ -424,13 +501,23 @@ brace-expansion@^2.0.1: dependencies: balanced-match "^1.0.0" -braces@^3.0.2: +braces@^3.0.2, braces@~3.0.2: version "3.0.2" resolved "https://registry.yarnpkg.com/braces/-/braces-3.0.2.tgz#3454e1a462ee8d599e236df336cd9ea4f8afe107" integrity sha512-b8um+L1RzM3WDSzvhm6gIz1yfTbBt6YTlcEKAvsmqCZZFw46z626lVj9j1yEPW33H5H+lBQpZMP1k8l+78Ha0A== dependencies: fill-range "^7.0.1" +browserslist@^4.21.10: + version "4.22.1" + resolved "https://registry.npmjs.org/browserslist/-/browserslist-4.22.1.tgz#ba91958d1a59b87dab6fed8dfbcb3da5e2e9c619" + integrity sha512-FEVc202+2iuClEhZhrWy6ZiAcRLvNMyYcxZ8raemul1DYVOVdFsbqckWLdsixQZCpJlwe77Z3UTalE7jsjnKfQ== + dependencies: + caniuse-lite "^1.0.30001541" + electron-to-chromium "^1.4.535" + node-releases "^2.0.13" + update-browserslist-db "^1.0.13" + buffer-equal-constant-time@1.0.1: version "1.0.1" resolved "https://registry.npmjs.org/buffer-equal-constant-time/-/buffer-equal-constant-time-1.0.1.tgz#f8e71132f7ffe6e01a5c9697a4c6f3e48d5cc819" @@ -464,11 +551,21 @@ callsites@^3.0.0: resolved "https://registry.yarnpkg.com/callsites/-/callsites-3.1.0.tgz#b3630abd8943432f54b3f0519238e33cd7df2f73" integrity sha512-P8BjAsXvZS+VIDUI11hHCQEv74YT67YUi5JJFNWIqL235sBmjX4+qx9Muvls5ivyNENctx46xQLQ3aTuE7ssaQ== +camelcase-css@^2.0.1: + version "2.0.1" + resolved "https://registry.npmjs.org/camelcase-css/-/camelcase-css-2.0.1.tgz#ee978f6947914cc30c6b44741b6ed1df7f043fd5" + integrity sha512-QOSvevhslijgYwRx6Rv7zKdMF8lbRmx+uQGx2+vDc+KI/eBnsy9kit5aj23AgGu3pa4t9AgwbnXWqS+iOY+2aA== + caniuse-lite@^1.0.30001406: version "1.0.30001441" resolved "https://registry.yarnpkg.com/caniuse-lite/-/caniuse-lite-1.0.30001441.tgz#987437b266260b640a23cd18fbddb509d7f69f3e" integrity sha512-OyxRR4Vof59I3yGWXws6i908EtGbMzVUi3ganaZQHmydk1iwDhRnvaPG2WaR0KcqrDFKrxVZHULT396LEPhXfg== +caniuse-lite@^1.0.30001538, caniuse-lite@^1.0.30001541: + version "1.0.30001561" + resolved "https://registry.npmjs.org/caniuse-lite/-/caniuse-lite-1.0.30001561.tgz#752f21f56f96f1b1a52e97aae98c57c562d5d9da" + integrity sha512-NTt0DNoKe958Q0BE0j0c1V9jbUzhBxHIEJy7asmGrpE0yG63KTV7PLHPnK2E1O9RsQrQ081I3NLuXGS6zht3cw== + chalk@^4.0.0: version "4.1.2" resolved "https://registry.yarnpkg.com/chalk/-/chalk-4.1.2.tgz#aac4e2b7734a740867aeb16bf02aad556a1e7a01" @@ -477,6 +574,21 @@ chalk@^4.0.0: ansi-styles "^4.1.0" supports-color "^7.1.0" +chokidar@^3.5.3: + version "3.5.3" + resolved "https://registry.npmjs.org/chokidar/-/chokidar-3.5.3.tgz#1cf37c8707b932bd1af1ae22c0432e2acd1903bd" + integrity sha512-Dr3sfKRP6oTcjf2JmUmFJfeVMvXBdegxB0iVQ5eb2V10uFJUCAS8OByZdVAyVb8xXNz3GjjTgj9kLWsZTqE6kw== + dependencies: + anymatch "~3.1.2" + braces "~3.0.2" + glob-parent "~5.1.2" + is-binary-path "~2.1.0" + is-glob "~4.0.1" + normalize-path "~3.0.0" + readdirp "~3.6.0" + optionalDependencies: + fsevents "~2.3.2" + client-only@0.0.1: version "0.0.1" resolved "https://registry.npmjs.org/client-only/-/client-only-0.0.1.tgz#38bba5d403c41ab150bff64a95c85013cf73bca1" @@ -506,6 +618,11 @@ combined-stream@^1.0.8: dependencies: delayed-stream "~1.0.0" +commander@^4.0.0: + version "4.1.1" + resolved "https://registry.npmjs.org/commander/-/commander-4.1.1.tgz#9fd602bd936294e9e9ef46a3f4d6964044b18068" + integrity sha512-NOKm8xhkzAjzFx8B2v5OAHT+u5pRQc2UCa2Vq9jYL/31o2wi9mxBA7LIFs3sV5VSC49z6pEhfbMULvShKj26WA== + concat-map@0.0.1: version "0.0.1" resolved "https://registry.yarnpkg.com/concat-map/-/concat-map-0.0.1.tgz#d8a96bd77fd68df7793a73036a3ba0d5405d477b" @@ -525,6 +642,11 @@ cross-spawn@^7.0.2, cross-spawn@^7.0.3: shebang-command "^2.0.0" which "^2.0.1" +cssesc@^3.0.0: + version "3.0.0" + resolved "https://registry.npmjs.org/cssesc/-/cssesc-3.0.0.tgz#37741919903b868565e1c09ea747445cd18983ee" + integrity sha512-/Tb/JcjK111nNScGob5MNtsntNM1aCNUDipB/TkwZFhyDrrE47SOx/18wF2bbjgc3ZzCSKW1T5nt5EbFoAz/Vg== + csstype@^3.0.2: version "3.1.1" resolved "https://registry.yarnpkg.com/csstype/-/csstype-3.1.1.tgz#841b532c45c758ee546a11d5bd7b7b473c8c30b9" @@ -584,6 +706,11 @@ delayed-stream@~1.0.0: resolved "https://registry.yarnpkg.com/delayed-stream/-/delayed-stream-1.0.0.tgz#df3ae199acadfb7d440aaae0b29e2272b24ec619" integrity sha512-ZySD7Nf91aLB0RxL4KGrKHBXl7Eds1DAmEdcoVawXnLD7SDhpNgtuII2aAkg7a7QS41jxPSZ17p4VdGnMHk3MQ== +didyoumean@^1.2.2: + version "1.2.2" + resolved "https://registry.npmjs.org/didyoumean/-/didyoumean-1.2.2.tgz#989346ffe9e839b4555ecf5666edea0d3e8ad037" + integrity sha512-gxtyfqMg7GKyhQmb056K7M3xszy/myH8w+B4RT+QXBQsvAOdc3XymqDDPHx1BgPgsdAA5SIifona89YtRATDzw== + dir-glob@^3.0.1: version "3.0.1" resolved "https://registry.yarnpkg.com/dir-glob/-/dir-glob-3.0.1.tgz#56dbf73d992a4a93ba1584f4534063fd2e41717f" @@ -591,6 +718,11 @@ dir-glob@^3.0.1: dependencies: path-type "^4.0.0" +dlv@^1.1.3: + version "1.1.3" + resolved "https://registry.npmjs.org/dlv/-/dlv-1.1.3.tgz#5c198a8a11453596e751494d49874bc7732f2e79" + integrity sha512-+HlytyjlPKnIG8XuRG8WvmBP8xs8P71y+SKKS6ZXWoEgLuePxtDoUEiH7WkdePWrQ5JBpE6aoVqfZfJUQkjXwA== + doctrine@^2.1.0: version "2.1.0" resolved "https://registry.yarnpkg.com/doctrine/-/doctrine-2.1.0.tgz#5cd01fc101621b42c4cd7f5d1a66243716d3f39d" @@ -612,6 +744,11 @@ ecdsa-sig-formatter@1.0.11, ecdsa-sig-formatter@^1.0.11: dependencies: safe-buffer "^5.0.1" +electron-to-chromium@^1.4.535: + version "1.4.576" + resolved "https://registry.npmjs.org/electron-to-chromium/-/electron-to-chromium-1.4.576.tgz#0c6940fdc0d60f7e34bd742b29d8fa847c9294d1" + integrity sha512-yXsZyXJfAqzWk1WKryr0Wl0MN2D47xodPvEEwlVePBnhU5E7raevLQR+E6b9JAD3GfL/7MbAL9ZtWQQPcLx7wA== + emoji-regex@^9.2.2: version "9.2.2" resolved "https://registry.yarnpkg.com/emoji-regex/-/emoji-regex-9.2.2.tgz#840c8803b0d8047f4ff0cf963176b32d4ef3ed72" @@ -686,6 +823,11 @@ es-to-primitive@^1.2.1: is-date-object "^1.0.1" is-symbol "^1.0.2" +escalade@^3.1.1: + version "3.1.1" + resolved "https://registry.npmjs.org/escalade/-/escalade-3.1.1.tgz#d8cfdc7000965c5a0174b4a82eaa5c0552742e40" + integrity sha512-k0er2gUkLf8O0zKJiAhmkTnJlTvINGv7ygDNPbeIsX/TJjGJZHuh9B2UxbsaEkmlEo9MfhrSzmhIlhRlI2GXnw== + escape-string-regexp@^4.0.0: version "4.0.0" resolved "https://registry.yarnpkg.com/escape-string-regexp/-/escape-string-regexp-4.0.0.tgz#14ba83a5d373e3d311e5afca29cf5bfad965bf34" @@ -942,6 +1084,17 @@ fast-glob@^3.2.11, fast-glob@^3.2.9: merge2 "^1.3.0" micromatch "^4.0.4" +fast-glob@^3.3.0: + version "3.3.1" + resolved "https://registry.npmjs.org/fast-glob/-/fast-glob-3.3.1.tgz#784b4e897340f3dbbef17413b3f11acf03c874c4" + integrity sha512-kNFPyjhh5cKjrUltxs+wFx+ZkbRaxxmZ+X0ZU31SOsxCEtP9VPgtq2teZw1DebupL5GmDaNQ6yKMMVcM41iqDg== + dependencies: + "@nodelib/fs.stat" "^2.0.2" + "@nodelib/fs.walk" "^1.2.3" + glob-parent "^5.1.2" + merge2 "^1.3.0" + micromatch "^4.0.4" + fast-json-stable-stringify@^2.0.0: version "2.1.0" resolved "https://registry.yarnpkg.com/fast-json-stable-stringify/-/fast-json-stable-stringify-2.1.0.tgz#874bf69c6f404c2b5d99c481341399fd55892633" @@ -1010,9 +1163,9 @@ flatted@^3.1.0: integrity sha512-5nqDSxl8nn5BSNxyR3n4I6eDmbolI6WT+QqR547RwxQapgjQBmtktdP+HTBb/a/zLsbzERTONyUB5pefh5TtjQ== follow-redirects@^1.14.8: - version "1.15.2" - resolved "https://registry.yarnpkg.com/follow-redirects/-/follow-redirects-1.15.2.tgz#b460864144ba63f2681096f274c4e57026da2c13" - integrity sha512-VQLG33o04KaQ8uYi2tVNbdrWp1QWxNNea+nmIB4EVM28v0hmP17z7aG1+wAkNzVq4KeXTq3221ye5qTJP91JwA== + version "1.15.3" + resolved "https://registry.npmjs.org/follow-redirects/-/follow-redirects-1.15.3.tgz#fe2f3ef2690afce7e82ed0b44db08165b207123a" + integrity sha512-1VzOtuEM8pC9SFU1E+8KfTjZyMztRsgEfwQl44z8A25uy13jSzTj6dyK2Df52iV0vgHCfBwLhDWevLn95w5v6Q== form-data@^4.0.0: version "4.0.0" @@ -1023,16 +1176,31 @@ form-data@^4.0.0: combined-stream "^1.0.8" mime-types "^2.1.12" +fraction.js@^4.3.6: + version "4.3.7" + resolved "https://registry.npmjs.org/fraction.js/-/fraction.js-4.3.7.tgz#06ca0085157e42fda7f9e726e79fefc4068840f7" + integrity sha512-ZsDfxO51wGAXREY55a7la9LScWpwv9RxIrYABrlvOFBlH/ShPnrtsXeuUIfXKKOVicNxQ+o8JTbJvjS4M89yew== + fs.realpath@^1.0.0: version "1.0.0" resolved "https://registry.yarnpkg.com/fs.realpath/-/fs.realpath-1.0.0.tgz#1504ad2523158caa40db4a2787cb01411994ea4f" integrity sha512-OO0pH2lK6a0hZnAdau5ItzHPI6pUlvI7jMVnxUQRtw4owF2wk8lOSabtGDCTP4Ggrg2MbGnWO9X8K1t4+fGMDw== +fsevents@~2.3.2: + version "2.3.3" + resolved "https://registry.npmjs.org/fsevents/-/fsevents-2.3.3.tgz#cac6407785d03675a2a5e1a5305c697b347d90d6" + integrity sha512-5xoDfX+fL7faATnagmWPpbFtwh/R77WmMMqqHGS65C3vvB0YHrgF+B1YmZ3441tMj5n63k0212XNoJwzlhffQw== + function-bind@^1.1.1: version "1.1.1" resolved "https://registry.yarnpkg.com/function-bind/-/function-bind-1.1.1.tgz#a56899d3ea3c9bab874bb9773b7c5ede92f4895d" integrity sha512-yIovAzMX49sF8Yl58fSCWJ5svSLuaibPxXQJFLmBObTuCr0Mf1KiPopGM9NiFjiYBCbfaa2Fh6breQ6ANVTI0A== +function-bind@^1.1.2: + version "1.1.2" + resolved "https://registry.npmjs.org/function-bind/-/function-bind-1.1.2.tgz#2c02d864d97f3ea6c8830c464cbd11ab6eab7a1c" + integrity sha512-7XHNxH7qX9xG5mIwxkhumTox/MIRNcOgDrxWsMt2pAr23WHp6MrRlN7FBSFpCpr+oVO0F744iUgR82nJMfG2SA== + function.prototype.name@^1.1.5: version "1.1.5" resolved "https://registry.yarnpkg.com/function.prototype.name/-/function.prototype.name-1.1.5.tgz#cce0505fe1ffb80503e6f9e46cc64e46a12a9621" @@ -1088,7 +1256,7 @@ get-tsconfig@^4.2.0: resolved "https://registry.yarnpkg.com/get-tsconfig/-/get-tsconfig-4.3.0.tgz#4c26fae115d1050e836aea65d6fe56b507ee249b" integrity sha512-YCcF28IqSay3fqpIu5y3Krg/utCBHBeoflkZyHj/QcqI2nrLPC3ZegS9CmIo+hJb8K7aiGsuUl7PwWVjNG2HQQ== -glob-parent@^5.1.2: +glob-parent@^5.1.2, glob-parent@~5.1.2: version "5.1.2" resolved "https://registry.yarnpkg.com/glob-parent/-/glob-parent-5.1.2.tgz#869832c58034fe68a4093c17dc15e8340d8401c4" integrity sha512-AOIgSQCepiJYwP3ARnGx+5VnTu2HBYdzbGP45eLw1vr3zB3vZLeyed1sC9hnbcOc9/SrMyM5RPQrkGz4aS9Zow== @@ -1107,6 +1275,18 @@ glob-to-regexp@^0.4.1: resolved "https://registry.npmjs.org/glob-to-regexp/-/glob-to-regexp-0.4.1.tgz#c75297087c851b9a578bd217dd59a92f59fe546e" integrity sha512-lkX1HJXwyMcprw/5YUZc2s7DrpAiHB21/V+E1rHUrVNokkvB6bqMzT0VfV6/86ZNabt1k14YOIaT7nDvOX3Iiw== +glob@7.1.6: + version "7.1.6" + resolved "https://registry.npmjs.org/glob/-/glob-7.1.6.tgz#141f33b81a7c2492e125594307480c46679278a6" + integrity sha512-LwaxwyZ72Lk7vZINtNNrywX0ZuLyStrdDtabefZKAY5ZGJhVtgdznluResxNmPitE0SAO+O26sWTHeKSI2wMBA== + dependencies: + fs.realpath "^1.0.0" + inflight "^1.0.4" + inherits "2" + minimatch "^3.0.4" + once "^1.3.0" + path-is-absolute "^1.0.0" + glob@7.1.7: version "7.1.7" resolved "https://registry.yarnpkg.com/glob/-/glob-7.1.7.tgz#3b193e9233f01d42d0b3f78294bbeeb418f94a90" @@ -1271,6 +1451,13 @@ has@^1.0.3: dependencies: function-bind "^1.1.1" +hasown@^2.0.0: + version "2.0.0" + resolved "https://registry.npmjs.org/hasown/-/hasown-2.0.0.tgz#f4c513d454a57b7c7e1650778de226b11700546c" + integrity sha512-vUptKVTpIJhcczKBbgnS+RtcuYMB8+oNzPK2/Hp3hanz8JmpATdmmgLgSaadVREkDm+e2giHwY3ZRkyjSIDDFA== + dependencies: + function-bind "^1.1.2" + help-me@^4.0.1: version "4.2.0" resolved "https://registry.npmjs.org/help-me/-/help-me-4.2.0.tgz#50712bfd799ff1854ae1d312c36eafcea85b0563" @@ -1351,6 +1538,13 @@ is-bigint@^1.0.1: dependencies: has-bigints "^1.0.1" +is-binary-path@~2.1.0: + version "2.1.0" + resolved "https://registry.npmjs.org/is-binary-path/-/is-binary-path-2.1.0.tgz#ea1f7f3b80f064236e83470f86c09c254fb45b09" + integrity sha512-ZMERYes6pDydyuGidse7OsHxtbI7WVeUEozgR/g7rd0xUimYNlvZRE/K2MgZTjWy725IfelLeVcEM97mmtRGXw== + dependencies: + binary-extensions "^2.0.0" + is-boolean-object@^1.1.0: version "1.1.2" resolved "https://registry.yarnpkg.com/is-boolean-object/-/is-boolean-object-1.1.2.tgz#5c6dc200246dd9321ae4b885a114bb1f75f63719" @@ -1371,6 +1565,13 @@ is-core-module@^2.10.0, is-core-module@^2.8.1, is-core-module@^2.9.0: dependencies: has "^1.0.3" +is-core-module@^2.13.0: + version "2.13.1" + resolved "https://registry.npmjs.org/is-core-module/-/is-core-module-2.13.1.tgz#ad0d7532c6fea9da1ebdc82742d74525c6273384" + integrity sha512-hHrIjvZsftOsvKSn2TRYl63zvxsgE0K+0mYMoH6gD4omR5IWB2KynivBQczo3+wF1cCkjzvptnI9Q0sPU66ilw== + dependencies: + hasown "^2.0.0" + is-date-object@^1.0.1: version "1.0.5" resolved "https://registry.yarnpkg.com/is-date-object/-/is-date-object-1.0.5.tgz#0841d5536e724c25597bf6ea62e1bd38298df31f" @@ -1388,7 +1589,7 @@ is-extglob@^2.1.1: resolved "https://registry.yarnpkg.com/is-extglob/-/is-extglob-2.1.1.tgz#a88c02535791f02ed37c76a1b9ea9773c833f8c2" integrity sha512-SbKbANkN603Vi4jEZv49LeVJMn4yGwsbzZworEoyEiutsN3nJYdbO36zfhGJ6QEDpOZIFkDtnq5JRxmvl3jsoQ== -is-glob@^4.0.0, is-glob@^4.0.1, is-glob@^4.0.3: +is-glob@^4.0.0, is-glob@^4.0.1, is-glob@^4.0.3, is-glob@~4.0.1: version "4.0.3" resolved "https://registry.yarnpkg.com/is-glob/-/is-glob-4.0.3.tgz#64f61e42cbbb2eec2071a9dac0b28ba1e65d5084" integrity sha512-xelSayHH36ZgE7ZWhli7pW34hNbNl8Ojv5KVmkJD4hBdD3th8Tfk9vYasLM+mXWOZhFkgZfxhLSnrwRr4elSSg== @@ -1470,10 +1671,10 @@ isexe@^2.0.0: resolved "https://registry.yarnpkg.com/isexe/-/isexe-2.0.0.tgz#e8fbf374dc556ff8947a10dcb0572d633f2cfa10" integrity sha512-RHxMLp9lnKHGHRng9QFhRCMbYAcVpn69smSGcq3f36xjgVVWThj4qqLbTLlq7Ssj8B+fIQ1EuCEGI2lKsyQeIw== -jose@^4.15.4: - version "4.15.4" - resolved "https://registry.npmjs.org/jose/-/jose-4.15.4.tgz#02a9a763803e3872cf55f29ecef0dfdcc218cc03" - integrity sha512-W+oqK4H+r5sITxfxpSU+MMdr/YSWGvgZMQDIsNoBDGGy4i7GBPTtvFKibQzW06n3U3TqHjhvBJsirShsEJ6eeQ== +jiti@^1.19.1: + version "1.21.0" + resolved "https://registry.npmjs.org/jiti/-/jiti-1.21.0.tgz#7c97f8fe045724e136a397f7340475244156105d" + integrity sha512-gFqAIbuKyyso/3G2qhiO2OM6shY6EPP/R0+mkDbyspxKazh8BXDC5FiFsUjlczgdNz/vfra0da2y+aHrusLG/Q== joycon@^3.1.1: version "3.1.1" @@ -1599,6 +1800,16 @@ levn@^0.4.1: prelude-ls "^1.2.1" type-check "~0.4.0" +lilconfig@^2.0.5, lilconfig@^2.1.0: + version "2.1.0" + resolved "https://registry.npmjs.org/lilconfig/-/lilconfig-2.1.0.tgz#78e23ac89ebb7e1bfbf25b18043de756548e7f52" + integrity sha512-utWOt/GHzuUxnLKxB6dk81RoOeoNeHgbrXiuGk4yyF5qlRz+iIVWu56E2fqGHFrXz0QNUhLB/8nKqvRH66JKGQ== + +lines-and-columns@^1.1.6: + version "1.2.4" + resolved "https://registry.npmjs.org/lines-and-columns/-/lines-and-columns-1.2.4.tgz#eca284f75d2965079309dc0ad9255abb2ebc1632" + integrity sha512-7ylylesZQ/PV29jhEDl3Ufjo6ZX7gCqJr5F7PKrqc93v7fzSymt1BpwEU8nAUXs8qzzvqhbjhK5QZg6Mt/HkBg== + locate-path@^6.0.0: version "6.0.0" resolved "https://registry.yarnpkg.com/locate-path/-/locate-path-6.0.0.tgz#55321eb309febbc59c4801d931a72452a681d286" @@ -1665,7 +1876,7 @@ merge2@^1.3.0, merge2@^1.4.1: resolved "https://registry.yarnpkg.com/merge2/-/merge2-1.4.1.tgz#4368892f885e907455a6fd7dc55c0c9d404990ae" integrity sha512-8q7VEgMJW4J8tcfVPy8g09NcQwZdbwFEqhe/WZkoIzjn/3TGDwtOCYtXGxA3O8tPzpczCCDgv+P2P5y00ZJOOg== -micromatch@^4.0.4: +micromatch@^4.0.4, micromatch@^4.0.5: version "4.0.5" resolved "https://registry.yarnpkg.com/micromatch/-/micromatch-4.0.5.tgz#bc8999a7cbbf77cdc89f132f6e467051b49090c6" integrity sha512-DMy+ERcEW2q8Z2Po+WNXuw3c5YaUSFjAO5GsJqfEl7UjvtIuFKO6ZrKvcItdy98dwFI2N1tg3zNIdKaQT+aNdA== @@ -1726,6 +1937,15 @@ ms@^2.1.1: resolved "https://registry.yarnpkg.com/ms/-/ms-2.1.3.tgz#574c8138ce1d2b5861f0b44579dbadd60c6615b2" integrity sha512-6FlzubTLZG3J2a/NVCAleEhjzq5oxgHyaCU9yYXvcLsvoVaHJq/s5xXI6/XXP6tz7R9xAOtHnSO/tXtF3WRTlA== +mz@^2.7.0: + version "2.7.0" + resolved "https://registry.npmjs.org/mz/-/mz-2.7.0.tgz#95008057a56cafadc2bc63dde7f9ff6955948e32" + integrity sha512-z81GNO7nnYMEhrGh9LeymoE4+Yr0Wn5McHIZMK5cfQCl+NDX08sCZgUc9/6MHni9IWuFLm1Z3HTCXu2z9fN62Q== + dependencies: + any-promise "^1.0.0" + object-assign "^4.0.1" + thenify-all "^1.0.0" + nanoid@^3.3.6: version "3.3.6" resolved "https://registry.npmjs.org/nanoid/-/nanoid-3.3.6.tgz#443380c856d6e9f9824267d960b4236ad583ea4c" @@ -1778,11 +1998,31 @@ node-forge@^1.3.1: resolved "https://registry.npmjs.org/node-forge/-/node-forge-1.3.1.tgz#be8da2af243b2417d5f646a770663a92b7e9ded3" integrity sha512-dPEtOeMvF9VMcYV/1Wb8CPoVAXtp6MKMlcbAt4ddqmGqUJ6fQZFXkNZNkNlfevtNkGtaSoXf/vNNNSvgrdXwtA== -object-assign@^4.1.1: +node-releases@^2.0.13: + version "2.0.13" + resolved "https://registry.npmjs.org/node-releases/-/node-releases-2.0.13.tgz#d5ed1627c23e3461e819b02e57b75e4899b1c81d" + integrity sha512-uYr7J37ae/ORWdZeQ1xxMJe3NtdmqMC/JZK+geofDrkLUApKRHPd18/TxtBOJ4A0/+uUIliorNrfYV6s1b02eQ== + +normalize-path@^3.0.0, normalize-path@~3.0.0: + version "3.0.0" + resolved "https://registry.npmjs.org/normalize-path/-/normalize-path-3.0.0.tgz#0dcd69ff23a1c9b11fd0978316644a0388216a65" + integrity sha512-6eZs5Ls3WtCisHWp9S2GUy8dqkpGi4BVSz3GaqiE6ezub0512ESztXUwUB6C6IKbQkY2Pnb/mD4WYojCRwcwLA== + +normalize-range@^0.1.2: + version "0.1.2" + resolved "https://registry.npmjs.org/normalize-range/-/normalize-range-0.1.2.tgz#2d10c06bdfd312ea9777695a4d28439456b75942" + integrity sha512-bdok/XvKII3nUpklnV6P2hxtMNrCboOjAcyBuQnWEhO665FwrSNRxU+AqpsyvO6LgGYPspN+lu5CLtw4jPRKNA== + +object-assign@^4.0.1, object-assign@^4.1.1: version "4.1.1" resolved "https://registry.yarnpkg.com/object-assign/-/object-assign-4.1.1.tgz#2109adc7965887cfc05cbbd442cac8bfbb360863" integrity sha512-rJgTQnkUnH1sFw8yT6VSU3zD3sWmu6sZhIseY8VX+GRu3P6F7Fu+JNDoXfklElbLJSnc3FUQHVe4cU5hj+BcUg== +object-hash@^3.0.0: + version "3.0.0" + resolved "https://registry.npmjs.org/object-hash/-/object-hash-3.0.0.tgz#73f97f753e7baffc0e2cc9d6e079079744ac82e9" + integrity sha512-RSn9F68PjH9HqtltsSnqYC1XXoWe9Bju5+213R98cNGttag9q9yAOTzdbsqvIa7aNm5WffBZFpWYr2aWrklWAw== + object-inspect@^1.12.2, object-inspect@^1.9.0: version "1.12.2" resolved "https://registry.yarnpkg.com/object-inspect/-/object-inspect-1.12.2.tgz#c0641f26394532f28ab8d796ab954e43c009a8ea" @@ -1859,10 +2099,10 @@ open@^8.4.0: is-docker "^2.1.1" is-wsl "^2.2.0" -openai@^3.1.0: - version "3.1.0" - resolved "https://registry.yarnpkg.com/openai/-/openai-3.1.0.tgz#13bfb228cf777155b882c2deb3a03bc5094cb7b3" - integrity sha512-v5kKFH5o+8ld+t0arudj833Mgm3GcgBnbyN9946bj6u7bvel4Yg6YFz2A4HLIYDzmMjIo0s6vSG9x73kOwvdCg== +openai@3.2.1: + version "3.2.1" + resolved "https://registry.npmjs.org/openai/-/openai-3.2.1.tgz#1fa35bdf979cbde8453b43f2dd3a7d401ee40866" + integrity sha512-762C9BNlJPbjjlWZi4WYK9iM2tAVAv0uUp1UmI34vb0CN5T2mjB/qM6RYBmNKMh/dN9fC+bxqPwWJZUTWW052A== dependencies: axios "^0.26.0" form-data "^4.0.0" @@ -1930,11 +2170,16 @@ picocolors@^1.0.0: resolved "https://registry.yarnpkg.com/picocolors/-/picocolors-1.0.0.tgz#cb5bdc74ff3f51892236eaf79d68bc44564ab81c" integrity sha512-1fygroTLlHu66zi26VoTDv8yRgm0Fccecssto+MhsZ0D/DGW2sm8E8AjW7NU5VVTRt5GxbeZ5qBuJr+HyLYkjQ== -picomatch@^2.3.1: +picomatch@^2.0.4, picomatch@^2.2.1, picomatch@^2.3.1: version "2.3.1" resolved "https://registry.yarnpkg.com/picomatch/-/picomatch-2.3.1.tgz#3ba3833733646d9d3e4995946c1365a67fb07a42" integrity sha512-JU3teHTNjmE2VCGFzuY8EXzCDVwEqB2a8fsIvwaStHhAWJEeVd1o1QD80CU6+ZdEXXSLbSsuLwJjkCBWqRQUVA== +pify@^2.3.0: + version "2.3.0" + resolved "https://registry.npmjs.org/pify/-/pify-2.3.0.tgz#ed141a6ac043a849ea588498e7dca8b15330e90c" + integrity sha512-udgsAY+fTnvv7kI7aaxbqwWNb0AHiB0qBO89PZKPkoTmGOgdbrHDKD+0B2X4uTfJ/FT1R09r9gTsjUjNJotuog== + pino-abstract-transport@^1.0.0, pino-abstract-transport@v1.1.0: version "1.1.0" resolved "https://registry.npmjs.org/pino-abstract-transport/-/pino-abstract-transport-1.1.0.tgz#083d98f966262164504afb989bccd05f665937a8" @@ -1985,7 +2230,56 @@ pino@^8.14.1: sonic-boom "^3.7.0" thread-stream "^2.0.0" -postcss@8.4.31: +pirates@^4.0.1: + version "4.0.6" + resolved "https://registry.npmjs.org/pirates/-/pirates-4.0.6.tgz#3018ae32ecfcff6c29ba2267cbf21166ac1f36b9" + integrity sha512-saLsH7WeYYPiD25LDuLRRY/i+6HaPYr6G1OUlN39otzkSTxKnubR9RTxS3/Kk50s1g2JTgFwWQDQyplC5/SHZg== + +postcss-import@^15.1.0: + version "15.1.0" + resolved "https://registry.npmjs.org/postcss-import/-/postcss-import-15.1.0.tgz#41c64ed8cc0e23735a9698b3249ffdbf704adc70" + integrity sha512-hpr+J05B2FVYUAXHeK1YyI267J/dDDhMU6B6civm8hSY1jYJnBXxzKDKDswzJmtLHryrjhnDjqqp/49t8FALew== + dependencies: + postcss-value-parser "^4.0.0" + read-cache "^1.0.0" + resolve "^1.1.7" + +postcss-js@^4.0.1: + version "4.0.1" + resolved "https://registry.npmjs.org/postcss-js/-/postcss-js-4.0.1.tgz#61598186f3703bab052f1c4f7d805f3991bee9d2" + integrity sha512-dDLF8pEO191hJMtlHFPRa8xsizHaM82MLfNkUHdUtVEV3tgTp5oj+8qbEqYM57SLfc74KSbw//4SeJma2LRVIw== + dependencies: + camelcase-css "^2.0.1" + +postcss-load-config@^4.0.1: + version "4.0.1" + resolved "https://registry.npmjs.org/postcss-load-config/-/postcss-load-config-4.0.1.tgz#152383f481c2758274404e4962743191d73875bd" + integrity sha512-vEJIc8RdiBRu3oRAI0ymerOn+7rPuMvRXslTvZUKZonDHFIczxztIyJ1urxM1x9JXEikvpWWTUUqal5j/8QgvA== + dependencies: + lilconfig "^2.0.5" + yaml "^2.1.1" + +postcss-nested@^6.0.1: + version "6.0.1" + resolved "https://registry.npmjs.org/postcss-nested/-/postcss-nested-6.0.1.tgz#f83dc9846ca16d2f4fa864f16e9d9f7d0961662c" + integrity sha512-mEp4xPMi5bSWiMbsgoPfcP74lsWLHkQbZc3sY+jWYd65CUwXrUaTp0fmNpa01ZcETKlIgUdFN/MpS2xZtqL9dQ== + dependencies: + postcss-selector-parser "^6.0.11" + +postcss-selector-parser@^6.0.11: + version "6.0.13" + resolved "https://registry.npmjs.org/postcss-selector-parser/-/postcss-selector-parser-6.0.13.tgz#d05d8d76b1e8e173257ef9d60b706a8e5e99bf1b" + integrity sha512-EaV1Gl4mUEV4ddhDnv/xtj7sxwrwxdetHdWUGnT4VJQf+4d05v6lHYZr8N573k5Z0BViss7BDhfWtKS3+sfAqQ== + dependencies: + cssesc "^3.0.0" + util-deprecate "^1.0.2" + +postcss-value-parser@^4.0.0, postcss-value-parser@^4.2.0: + version "4.2.0" + resolved "https://registry.npmjs.org/postcss-value-parser/-/postcss-value-parser-4.2.0.tgz#723c09920836ba6d3e5af019f92bc0971c02e514" + integrity sha512-1NNCs6uurfkVbeXG4S8JFT9t19m45ICnif8zWLd5oPSZ50QnwMfK+H3jv408d4jw/7Bttv5axS5IiHoLaVNHeQ== + +postcss@8.4.31, postcss@^8.4.23: version "8.4.31" resolved "https://registry.npmjs.org/postcss/-/postcss-8.4.31.tgz#92b451050a9f914da6755af352bdc0192508656d" integrity sha512-PS08Iboia9mts/2ygV3eLpY5ghnUcfLV/EXTOW1E2qYxJKGGBUtNjN76FYHnMs36RmARn41bC0AZmn+rR0OVpQ== @@ -2054,6 +2348,11 @@ react-dom@18.2.0: loose-envify "^1.1.0" scheduler "^0.23.0" +react-icons@^4.11.0: + version "4.11.0" + resolved "https://registry.npmjs.org/react-icons/-/react-icons-4.11.0.tgz#4b0e31c9bfc919608095cc429c4f1846f4d66c65" + integrity sha512-V+4khzYcE5EBk/BvcuYRq6V/osf11ODUM2J8hg2FDSswRrGvqiYUYPRy4OdrWaQOBj4NcpJfmHZLNaD+VH0TyA== + react-is@^16.13.1: version "16.13.1" resolved "https://registry.yarnpkg.com/react-is/-/react-is-16.13.1.tgz#789729a4dc36de2999dc156dd6c1d9c18cea56a4" @@ -2066,6 +2365,13 @@ react@18.2.0: dependencies: loose-envify "^1.1.0" +read-cache@^1.0.0: + version "1.0.0" + resolved "https://registry.npmjs.org/read-cache/-/read-cache-1.0.0.tgz#e664ef31161166c9751cdbe8dbcf86b5fb58f774" + integrity sha512-Owdv/Ft7IjOgm/i0xvNDZ1LrRANRfew4b2prF3OWMQLxLfu3bS8FVhCsrSCMK4lR56Y9ya+AThoTpDCTxCmpRA== + dependencies: + pify "^2.3.0" + readable-stream@^3.6.0: version "3.6.2" resolved "https://registry.npmjs.org/readable-stream/-/readable-stream-3.6.2.tgz#56a9b36ea965c00c5a93ef31eb111a0f11056967" @@ -2086,6 +2392,13 @@ readable-stream@^4.0.0: process "^0.11.10" string_decoder "^1.3.0" +readdirp@~3.6.0: + version "3.6.0" + resolved "https://registry.npmjs.org/readdirp/-/readdirp-3.6.0.tgz#74a370bd857116e245b29cc97340cd431a02a6c7" + integrity sha512-hOS089on8RduqdbhvQ5Z37A0ESjsqz6qnRcffsMU3495FuTdqSm+7bhJ29JvIOsBDEEnan5DPu9t3To9VRlMzA== + dependencies: + picomatch "^2.2.1" + real-require@^0.2.0: version "0.2.0" resolved "https://registry.npmjs.org/real-require/-/real-require-0.2.0.tgz#209632dea1810be2ae063a6ac084fee7e33fba78" @@ -2115,6 +2428,15 @@ resolve-from@^4.0.0: resolved "https://registry.yarnpkg.com/resolve-from/-/resolve-from-4.0.0.tgz#4abcd852ad32dd7baabfe9b40e00a36db5f392e6" integrity sha512-pb/MYmXstAkysRFx8piNI1tGFNQIFA3vkE3Gq4EuA1dF6gHp/+vgZqsCGJapvy8N3Q+4o7FwvquPJcnZ7RYy4g== +resolve@^1.1.7, resolve@^1.22.2: + version "1.22.8" + resolved "https://registry.npmjs.org/resolve/-/resolve-1.22.8.tgz#b6c87a9f2aa06dfab52e3d70ac8cde321fa5a48d" + integrity sha512-oKWePCxqpd6FlLvGV1VU0x7bkPmmCNolxzjMf4NczoDnQcIWrAF+cPtZn5i6n+RfD2d9i0tzpKnG6Yk168yIyw== + dependencies: + is-core-module "^2.13.0" + path-parse "^1.0.7" + supports-preserve-symlinks-flag "^1.0.0" + resolve@^1.20.0, resolve@^1.22.0: version "1.22.1" resolved "https://registry.yarnpkg.com/resolve/-/resolve-1.22.1.tgz#27cb2ebb53f91abb49470a928bba7558066ac177" @@ -2323,6 +2645,19 @@ styled-jsx@5.1.1: dependencies: client-only "0.0.1" +sucrase@^3.32.0: + version "3.34.0" + resolved "https://registry.npmjs.org/sucrase/-/sucrase-3.34.0.tgz#1e0e2d8fcf07f8b9c3569067d92fbd8690fb576f" + integrity sha512-70/LQEZ07TEcxiU2dz51FKaE6hCTWC6vr7FOk3Gr0U60C3shtAN+H+BFr9XlYe5xqf3RA8nrc+VIwzCfnxuXJw== + dependencies: + "@jridgewell/gen-mapping" "^0.3.2" + commander "^4.0.0" + glob "7.1.6" + lines-and-columns "^1.1.6" + mz "^2.7.0" + pirates "^4.0.1" + ts-interface-checker "^0.1.9" + supports-color@^7.1.0: version "7.2.0" resolved "https://registry.yarnpkg.com/supports-color/-/supports-color-7.2.0.tgz#1b7dcdcb32b8138801b3e478ba6a51caa89648da" @@ -2350,6 +2685,34 @@ synckit@^0.8.4: "@pkgr/utils" "^2.3.1" tslib "^2.4.0" +tailwindcss@^3.3.5: + version "3.3.5" + resolved "https://registry.npmjs.org/tailwindcss/-/tailwindcss-3.3.5.tgz#22a59e2fbe0ecb6660809d9cc5f3976b077be3b8" + integrity sha512-5SEZU4J7pxZgSkv7FP1zY8i2TIAOooNZ1e/OGtxIEv6GltpoiXUqWvLy89+a10qYTB1N5Ifkuw9lqQkN9sscvA== + dependencies: + "@alloc/quick-lru" "^5.2.0" + arg "^5.0.2" + chokidar "^3.5.3" + didyoumean "^1.2.2" + dlv "^1.1.3" + fast-glob "^3.3.0" + glob-parent "^6.0.2" + is-glob "^4.0.3" + jiti "^1.19.1" + lilconfig "^2.1.0" + micromatch "^4.0.5" + normalize-path "^3.0.0" + object-hash "^3.0.0" + picocolors "^1.0.0" + postcss "^8.4.23" + postcss-import "^15.1.0" + postcss-js "^4.0.1" + postcss-load-config "^4.0.1" + postcss-nested "^6.0.1" + postcss-selector-parser "^6.0.11" + resolve "^1.22.2" + sucrase "^3.32.0" + tapable@^2.2.0: version "2.2.1" resolved "https://registry.yarnpkg.com/tapable/-/tapable-2.2.1.tgz#1967a73ef4060a82f12ab96af86d52fdb76eeca0" @@ -2360,6 +2723,20 @@ text-table@^0.2.0: resolved "https://registry.yarnpkg.com/text-table/-/text-table-0.2.0.tgz#7f5ee823ae805207c00af2df4a84ec3fcfa570b4" integrity sha512-N+8UisAXDGk8PFXP4HAzVR9nbfmVJ3zYLAWiTIoqC5v5isinhr+r5uaO8+7r3BMfuNIufIsA7RdpVgacC2cSpw== +thenify-all@^1.0.0: + version "1.6.0" + resolved "https://registry.npmjs.org/thenify-all/-/thenify-all-1.6.0.tgz#1a1918d402d8fc3f98fbf234db0bcc8cc10e9726" + integrity sha512-RNxQH/qI8/t3thXJDwcstUO4zeqo64+Uy/+sNVRBx4Xn2OX+OZ9oP+iJnNFqplFra2ZUVeKCSa2oVWi3T4uVmA== + dependencies: + thenify ">= 3.1.0 < 4" + +"thenify@>= 3.1.0 < 4": + version "3.3.1" + resolved "https://registry.npmjs.org/thenify/-/thenify-3.3.1.tgz#8932e686a4066038a016dd9e2ca46add9838a95f" + integrity sha512-RVZSIV5IG10Hk3enotrhvz0T9em6cyHBLkH/YAZuKqd8hRkKhSfCGIcP2KUY0EPxndzANBmNllzWPwak+bheSw== + dependencies: + any-promise "^1.0.0" + thread-stream@^2.0.0: version "2.4.1" resolved "https://registry.npmjs.org/thread-stream/-/thread-stream-2.4.1.tgz#6d588b14f0546e59d3f306614f044bc01ce43351" @@ -2387,6 +2764,11 @@ tr46@~0.0.3: resolved "https://registry.npmjs.org/tr46/-/tr46-0.0.3.tgz#8184fd347dac9cdc185992f3a6622e14b9d9ab6a" integrity sha512-N3WMsuqV66lT30CrXNbEjx4GEwlow3v6rr4mCcv6prnfwhS01rkgyFdjPNBYd9br7LpXV1+Emh01fHnq2Gdgrw== +ts-interface-checker@^0.1.9: + version "0.1.13" + resolved "https://registry.npmjs.org/ts-interface-checker/-/ts-interface-checker-0.1.13.tgz#784fd3d679722bc103b1b4b8030bcddb5db2a699" + integrity sha512-Y/arvbn+rrz3JCKl9C4kVNfTfSm2/mEp5FSz5EsZSANGPSlQrpRI5M4PKF+mJnE52jOO90PnPSc3Ur3bTQw0gA== + tsconfig-paths@^3.14.1: version "3.14.1" resolved "https://registry.yarnpkg.com/tsconfig-paths/-/tsconfig-paths-3.14.1.tgz#ba0734599e8ea36c862798e920bcf163277b137a" @@ -2441,6 +2823,14 @@ unbox-primitive@^1.0.2: has-symbols "^1.0.3" which-boxed-primitive "^1.0.2" +update-browserslist-db@^1.0.13: + version "1.0.13" + resolved "https://registry.npmjs.org/update-browserslist-db/-/update-browserslist-db-1.0.13.tgz#3c5e4f5c083661bd38ef64b6328c26ed6c8248c4" + integrity sha512-xebP81SNcPuNpPP3uzeW1NYXxI3rxyJzF3pD6sH4jE7o/IX+WtSpwnVU+qIsDPyk0d3hmFQ7mjqc6AtV604hbg== + dependencies: + escalade "^3.1.1" + picocolors "^1.0.0" + uri-js@^4.2.2: version "4.4.1" resolved "https://registry.yarnpkg.com/uri-js/-/uri-js-4.4.1.tgz#9b1a52595225859e55f669d928f88c6c57f2a77e" @@ -2453,11 +2843,16 @@ use-sync-external-store@^1.2.0: resolved "https://registry.yarnpkg.com/use-sync-external-store/-/use-sync-external-store-1.2.0.tgz#7dbefd6ef3fe4e767a0cf5d7287aacfb5846928a" integrity sha512-eEgnFxGQ1Ife9bzYs6VLi8/4X6CObHMw9Qr9tPY43iKwsPw8xE8+EFsf/2cFZ5S3esXgpWgtSCtLNS41F+sKPA== -util-deprecate@^1.0.1: +util-deprecate@^1.0.1, util-deprecate@^1.0.2: version "1.0.2" resolved "https://registry.npmjs.org/util-deprecate/-/util-deprecate-1.0.2.tgz#450d4dc9fa70de732762fbd2d4a28981419a0ccf" integrity sha512-EPD5q1uXyFxJpCrLnCc1nHnq3gOa6DZBocAIiI2TaSCA7VCJ1UJDMagCzIkXNsUYfD1daK//LTEQ8xiIbrHtcw== +uuid@^9.0.1: + version "9.0.1" + resolved "https://registry.npmjs.org/uuid/-/uuid-9.0.1.tgz#e188d4c8853cc722220392c424cd637f32293f30" + integrity sha512-b+1eJOlsR9K8HJpow9Ok3fiWOWSIcIzXodvv0rQjVoOVNpWMpxf1wZNpt4y9h10odCNrqnYp1OBzRktckBe3sA== + watchpack@2.4.0: version "2.4.0" resolved "https://registry.npmjs.org/watchpack/-/watchpack-2.4.0.tgz#fa33032374962c78113f93c7f2fb4c54c9862a5d" @@ -2512,6 +2907,11 @@ yallist@^4.0.0: resolved "https://registry.yarnpkg.com/yallist/-/yallist-4.0.0.tgz#9bb92790d9c0effec63be73519e11a35019a3a72" integrity sha512-3wdGidZyq5PB084XLES5TpOSRA3wjXAlIWMhum2kRcv/41Sn2emQ0dycQW4uZXLejwKvg6EsvbdlVL+FYEct7A== +yaml@^2.1.1: + version "2.3.4" + resolved "https://registry.npmjs.org/yaml/-/yaml-2.3.4.tgz#53fc1d514be80aabf386dc6001eb29bf3b7523b2" + integrity sha512-8aAvwVUSHpfEqTQ4w/KMlf3HcRdt50E5ODIQJBw1fQ5RL34xabzxtUlzTXVqc4rkZsPbvrXKWnABCD7kWSmocA== + yocto-queue@^0.1.0: version "0.1.0" resolved "https://registry.yarnpkg.com/yocto-queue/-/yocto-queue-0.1.0.tgz#0294eb3dee05028d31ee1a5fa2c556a6aaf10a1b" From 01d779d16199a8339cfdf14f949c58881a0fcac0 Mon Sep 17 00:00:00 2001 From: Greg Rashkevitch Date: Sun, 5 Nov 2023 08:41:04 +0200 Subject: [PATCH 2/3] chatgpt clone --- components/Prompt.tsx | 2 +- components/Sidebar.tsx | 20 -------------------- pages/api/server/completion-response.ts | 3 +-- pages/doc-slash-command/index.tsx | 2 +- 4 files changed, 3 insertions(+), 24 deletions(-) diff --git a/components/Prompt.tsx b/components/Prompt.tsx index 4fdfae2..956432e 100644 --- a/components/Prompt.tsx +++ b/components/Prompt.tsx @@ -30,7 +30,7 @@ const Prompt = () => { return; } try { - const { data } = await axios.post('/api/server/ai-response', { + const { data } = await axios.post('/api/server/completion-response', { message, }); insertBotTextAndClose(data.bot); diff --git a/components/Sidebar.tsx b/components/Sidebar.tsx index 5a263c4..5453e9b 100644 --- a/components/Sidebar.tsx +++ b/components/Sidebar.tsx @@ -27,26 +27,6 @@ const Sidebar = () => { Clear conversations - - - My plan - - - - Settings - - - - Get help - - - - Log out - ); diff --git a/pages/api/server/completion-response.ts b/pages/api/server/completion-response.ts index db921ba..6e1470a 100644 --- a/pages/api/server/completion-response.ts +++ b/pages/api/server/completion-response.ts @@ -8,10 +8,9 @@ export default async function handler(req: NextApiRequest, res: NextApiResponse) } try { - const { message, model } = req.body; + const { message } = req.body; const response = await openai.createCompletion({ ...defaultOpenAIConfiguration, - model: model ?? defaultOpenAIConfiguration.model, prompt: `${message}`, }); diff --git a/pages/doc-slash-command/index.tsx b/pages/doc-slash-command/index.tsx index a422841..8b7f2c1 100644 --- a/pages/doc-slash-command/index.tsx +++ b/pages/doc-slash-command/index.tsx @@ -1,5 +1,5 @@ 'use client'; -import Prompt from '../../components/prompt'; +import Prompt from '../../components/Prompt'; export default function Home() { return ( From 51a62a30cc2d5a1a7274a82b14071bee27a21525 Mon Sep 17 00:00:00 2001 From: Greg Rashkevitch Date: Sun, 5 Nov 2023 08:59:08 +0200 Subject: [PATCH 3/3] move all folders to main src folder --- .mappsignore | 6 ------ {components => src/components}/Chat.tsx | 0 {components => src/components}/Message.tsx | 0 {components => src/components}/MobileSidebar.tsx | 0 {components => src/components}/Prompt.tsx | 0 {components => src/components}/Sidebar.tsx | 0 {components => src/components}/prompt.module.css | 0 {helpers => src/helpers}/auth.ts | 0 {helpers => src/helpers}/errors.ts | 0 {helpers => src/helpers}/openai.ts | 0 {hooks => src/hooks}/useAppState.tsx | 0 {hooks => src/hooks}/useAutoResizeTextArea.tsx | 0 {hooks => src/hooks}/useLocalStorage.tsx | 0 {pages => src/pages}/_app.tsx | 0 {pages => src/pages}/_document.tsx | 0 {pages => src/pages}/api/integration/assistant.ts | 0 {pages => src/pages}/api/server/chat-response.ts | 0 {pages => src/pages}/api/server/completion-response.ts | 0 {pages => src/pages}/doc-slash-command/index.tsx | 0 {pages => src/pages}/index.tsx | 0 {pages => src/pages}/object-view/index.tsx | 0 {shared => src/shared}/Constants.ts | 0 {styles => src/styles}/global.css | 0 {types => src/types}/model.ts | 0 tailwind.config.js | 2 +- 25 files changed, 1 insertion(+), 7 deletions(-) delete mode 100644 .mappsignore rename {components => src/components}/Chat.tsx (100%) rename {components => src/components}/Message.tsx (100%) rename {components => src/components}/MobileSidebar.tsx (100%) rename {components => src/components}/Prompt.tsx (100%) rename {components => src/components}/Sidebar.tsx (100%) rename {components => src/components}/prompt.module.css (100%) rename {helpers => src/helpers}/auth.ts (100%) rename {helpers => src/helpers}/errors.ts (100%) rename {helpers => src/helpers}/openai.ts (100%) rename {hooks => src/hooks}/useAppState.tsx (100%) rename {hooks => src/hooks}/useAutoResizeTextArea.tsx (100%) rename {hooks => src/hooks}/useLocalStorage.tsx (100%) rename {pages => src/pages}/_app.tsx (100%) rename {pages => src/pages}/_document.tsx (100%) rename {pages => src/pages}/api/integration/assistant.ts (100%) rename {pages => src/pages}/api/server/chat-response.ts (100%) rename {pages => src/pages}/api/server/completion-response.ts (100%) rename {pages => src/pages}/doc-slash-command/index.tsx (100%) rename {pages => src/pages}/index.tsx (100%) rename {pages => src/pages}/object-view/index.tsx (100%) rename {shared => src/shared}/Constants.ts (100%) rename {styles => src/styles}/global.css (100%) rename {types => src/types}/model.ts (100%) diff --git a/.mappsignore b/.mappsignore deleted file mode 100644 index f9c5f40..0000000 --- a/.mappsignore +++ /dev/null @@ -1,6 +0,0 @@ -node_modules -.git -.vscode -.idea -.next -code.tar.gz \ No newline at end of file diff --git a/components/Chat.tsx b/src/components/Chat.tsx similarity index 100% rename from components/Chat.tsx rename to src/components/Chat.tsx diff --git a/components/Message.tsx b/src/components/Message.tsx similarity index 100% rename from components/Message.tsx rename to src/components/Message.tsx diff --git a/components/MobileSidebar.tsx b/src/components/MobileSidebar.tsx similarity index 100% rename from components/MobileSidebar.tsx rename to src/components/MobileSidebar.tsx diff --git a/components/Prompt.tsx b/src/components/Prompt.tsx similarity index 100% rename from components/Prompt.tsx rename to src/components/Prompt.tsx diff --git a/components/Sidebar.tsx b/src/components/Sidebar.tsx similarity index 100% rename from components/Sidebar.tsx rename to src/components/Sidebar.tsx diff --git a/components/prompt.module.css b/src/components/prompt.module.css similarity index 100% rename from components/prompt.module.css rename to src/components/prompt.module.css diff --git a/helpers/auth.ts b/src/helpers/auth.ts similarity index 100% rename from helpers/auth.ts rename to src/helpers/auth.ts diff --git a/helpers/errors.ts b/src/helpers/errors.ts similarity index 100% rename from helpers/errors.ts rename to src/helpers/errors.ts diff --git a/helpers/openai.ts b/src/helpers/openai.ts similarity index 100% rename from helpers/openai.ts rename to src/helpers/openai.ts diff --git a/hooks/useAppState.tsx b/src/hooks/useAppState.tsx similarity index 100% rename from hooks/useAppState.tsx rename to src/hooks/useAppState.tsx diff --git a/hooks/useAutoResizeTextArea.tsx b/src/hooks/useAutoResizeTextArea.tsx similarity index 100% rename from hooks/useAutoResizeTextArea.tsx rename to src/hooks/useAutoResizeTextArea.tsx diff --git a/hooks/useLocalStorage.tsx b/src/hooks/useLocalStorage.tsx similarity index 100% rename from hooks/useLocalStorage.tsx rename to src/hooks/useLocalStorage.tsx diff --git a/pages/_app.tsx b/src/pages/_app.tsx similarity index 100% rename from pages/_app.tsx rename to src/pages/_app.tsx diff --git a/pages/_document.tsx b/src/pages/_document.tsx similarity index 100% rename from pages/_document.tsx rename to src/pages/_document.tsx diff --git a/pages/api/integration/assistant.ts b/src/pages/api/integration/assistant.ts similarity index 100% rename from pages/api/integration/assistant.ts rename to src/pages/api/integration/assistant.ts diff --git a/pages/api/server/chat-response.ts b/src/pages/api/server/chat-response.ts similarity index 100% rename from pages/api/server/chat-response.ts rename to src/pages/api/server/chat-response.ts diff --git a/pages/api/server/completion-response.ts b/src/pages/api/server/completion-response.ts similarity index 100% rename from pages/api/server/completion-response.ts rename to src/pages/api/server/completion-response.ts diff --git a/pages/doc-slash-command/index.tsx b/src/pages/doc-slash-command/index.tsx similarity index 100% rename from pages/doc-slash-command/index.tsx rename to src/pages/doc-slash-command/index.tsx diff --git a/pages/index.tsx b/src/pages/index.tsx similarity index 100% rename from pages/index.tsx rename to src/pages/index.tsx diff --git a/pages/object-view/index.tsx b/src/pages/object-view/index.tsx similarity index 100% rename from pages/object-view/index.tsx rename to src/pages/object-view/index.tsx diff --git a/shared/Constants.ts b/src/shared/Constants.ts similarity index 100% rename from shared/Constants.ts rename to src/shared/Constants.ts diff --git a/styles/global.css b/src/styles/global.css similarity index 100% rename from styles/global.css rename to src/styles/global.css diff --git a/types/model.ts b/src/types/model.ts similarity index 100% rename from types/model.ts rename to src/types/model.ts diff --git a/tailwind.config.js b/tailwind.config.js index 2a92dcc..923001f 100644 --- a/tailwind.config.js +++ b/tailwind.config.js @@ -1,6 +1,6 @@ /** @type {import('tailwindcss').Config} */ module.exports = { - content: ['./pages/**/*.{js,ts,jsx,tsx}', './components/**/*.{js,ts,jsx,tsx}'], + content: ['./src/pages/**/*.{js,ts,jsx,tsx}', './src/components/**/*.{js,ts,jsx,tsx}'], theme: { extend: { colors: {