mirror of
				https://github.com/ChatGPTNextWeb/ChatGPT-Next-Web.git
				synced 2025-10-28 12:53:45 +08:00 
			
		
		
		
	Compare commits
	
		
			54 Commits
		
	
	
		
	
	| Author | SHA1 | Date | |
|---|---|---|---|
|  | f0abdc80eb | ||
|  | 70a4f94c81 | ||
|  | f7e4b36746 | ||
|  | 4e6b71ace5 | ||
|  | c916cd1a87 | ||
|  | 442a529a72 | ||
|  | e1243f3d59 | ||
|  | 62f8cd1db6 | ||
|  | af5f67d459 | ||
|  | 13424a893e | ||
|  | 30473ec41e | ||
|  | 24d382c70d | ||
|  | 3ddedc903e | ||
|  | e3c279b8be | ||
|  | d909b676c5 | ||
|  | 08a8ac9971 | ||
|  | 7073fd2f3b | ||
|  | a9f67a48a1 | ||
|  | fd058cc693 | ||
|  | c98df33003 | ||
|  | 3f8b14f5f8 | ||
|  | 1c335a68e0 | ||
|  | fb98050d9f | ||
|  | 91cb7aa13d | ||
|  | ab0f7cc0c9 | ||
|  | b51f7f9a25 | ||
|  | d275e32e70 | ||
|  | 22cf78d506 | ||
|  | c7c318b31e | ||
|  | a4d012828c | ||
|  | 72cfebd2bc | ||
|  | a832cfb343 | ||
|  | 9ef680db57 | ||
|  | 2c09f4ef90 | ||
|  | c44454bf74 | ||
|  | ad1b9b7f6d | ||
|  | 15e063e1b5 | ||
|  | c00a63e4c3 | ||
|  | dbda27b1d6 | ||
|  | 9eef879dbe | ||
|  | cb29423636 | ||
|  | d754eecf07 | ||
|  | 1e308782ee | ||
|  | 69139cd85b | ||
|  | f59235bd5a | ||
|  | 2930ba0457 | ||
|  | 1513881eed | ||
|  | 5e361f6748 | ||
|  | b182543a21 | ||
|  | cbce8b444f | ||
|  | 38e92cfc62 | ||
|  | a7764dc6d5 | ||
|  | c74552c4c5 | ||
|  | 7a0b437626 | 
							
								
								
									
										14
									
								
								.babelrc
									
									
									
									
									
										Normal file
									
								
							
							
						
						
									
										14
									
								
								.babelrc
									
									
									
									
									
										Normal file
									
								
							| @@ -0,0 +1,14 @@ | |||||||
|  | { | ||||||
|  |   "presets": [ | ||||||
|  |     [ | ||||||
|  |       "next/babel", | ||||||
|  |       { | ||||||
|  |         "preset-env": { | ||||||
|  |           "targets": { | ||||||
|  |             "browsers": ["> 0.25%, not dead"] | ||||||
|  |           } | ||||||
|  |         } | ||||||
|  |       } | ||||||
|  |     ] | ||||||
|  |   ] | ||||||
|  | } | ||||||
| @@ -14,7 +14,7 @@ One-Click to get well-designed cross-platform ChatGPT web UI. | |||||||
| [![MacOS][MacOS-image]][download-url] | [![MacOS][MacOS-image]][download-url] | ||||||
| [![Linux][Linux-image]][download-url] | [![Linux][Linux-image]][download-url] | ||||||
|  |  | ||||||
| [Web App](https://chatgpt.nextweb.fun/) / [Desktop App](https://github.com/Yidadaa/ChatGPT-Next-Web/releases) / [Issues](https://github.com/Yidadaa/ChatGPT-Next-Web/issues) / [Buy Me a Coffee](https://www.buymeacoffee.com/yidadaa) | [Web App](https://chatgpt.nextweb.fun/) / [Desktop App](https://github.com/Yidadaa/ChatGPT-Next-Web/releases) / [Issues](https://github.com/Yidadaa/ChatGPT-Next-Web/issues) / [Discord](https://discord.gg/YCkeafCafC) / [Buy Me a Coffee](https://www.buymeacoffee.com/yidadaa) | ||||||
|  |  | ||||||
| [网页版](https://chatgpt.nextweb.fun/) / [客户端](https://github.com/Yidadaa/ChatGPT-Next-Web/releases) / [反馈](https://github.com/Yidadaa/ChatGPT-Next-Web/issues) / [QQ 群](https://github.com/Yidadaa/ChatGPT-Next-Web/discussions/1724) / [打赏开发者](https://user-images.githubusercontent.com/16968934/227772541-5bcd52d8-61b7-488c-a203-0330d8006e2b.jpg) | [网页版](https://chatgpt.nextweb.fun/) / [客户端](https://github.com/Yidadaa/ChatGPT-Next-Web/releases) / [反馈](https://github.com/Yidadaa/ChatGPT-Next-Web/issues) / [QQ 群](https://github.com/Yidadaa/ChatGPT-Next-Web/discussions/1724) / [打赏开发者](https://user-images.githubusercontent.com/16968934/227772541-5bcd52d8-61b7-488c-a203-0330d8006e2b.jpg) | ||||||
|  |  | ||||||
|   | |||||||
| @@ -2,8 +2,8 @@ import { NextRequest, NextResponse } from "next/server"; | |||||||
|  |  | ||||||
| export const OPENAI_URL = "api.openai.com"; | export const OPENAI_URL = "api.openai.com"; | ||||||
| const DEFAULT_PROTOCOL = "https"; | const DEFAULT_PROTOCOL = "https"; | ||||||
| const PROTOCOL = process.env.PROTOCOL ?? DEFAULT_PROTOCOL; | const PROTOCOL = process.env.PROTOCOL || DEFAULT_PROTOCOL; | ||||||
| const BASE_URL = process.env.BASE_URL ?? OPENAI_URL; | const BASE_URL = process.env.BASE_URL || OPENAI_URL; | ||||||
| const DISABLE_GPT4 = !!process.env.DISABLE_GPT4; | const DISABLE_GPT4 = !!process.env.DISABLE_GPT4; | ||||||
|  |  | ||||||
| export async function requestOpenai(req: NextRequest) { | export async function requestOpenai(req: NextRequest) { | ||||||
| @@ -35,12 +35,12 @@ export async function requestOpenai(req: NextRequest) { | |||||||
|   const fetchOptions: RequestInit = { |   const fetchOptions: RequestInit = { | ||||||
|     headers: { |     headers: { | ||||||
|       "Content-Type": "application/json", |       "Content-Type": "application/json", | ||||||
|  |       "Cache-Control": "no-store", | ||||||
|       Authorization: authValue, |       Authorization: authValue, | ||||||
|       ...(process.env.OPENAI_ORG_ID && { |       ...(process.env.OPENAI_ORG_ID && { | ||||||
|         "OpenAI-Organization": process.env.OPENAI_ORG_ID, |         "OpenAI-Organization": process.env.OPENAI_ORG_ID, | ||||||
|       }), |       }), | ||||||
|     }, |     }, | ||||||
|     cache: "no-store", |  | ||||||
|     method: req.method, |     method: req.method, | ||||||
|     body: req.body, |     body: req.body, | ||||||
|     // @ts-ignore |     // @ts-ignore | ||||||
|   | |||||||
| @@ -99,7 +99,7 @@ export class ClientApi { | |||||||
|     // 敬告二开开发者们,为了开源大模型的发展,请不要修改上述消息,此消息用于后续数据清洗使用 |     // 敬告二开开发者们,为了开源大模型的发展,请不要修改上述消息,此消息用于后续数据清洗使用 | ||||||
|     // Please do not modify this message |     // Please do not modify this message | ||||||
|  |  | ||||||
|     console.log("[Share]", msgs); |     console.log("[Share]", messages, msgs); | ||||||
|     const clientConfig = getClientConfig(); |     const clientConfig = getClientConfig(); | ||||||
|     const proxyUrl = "/sharegpt"; |     const proxyUrl = "/sharegpt"; | ||||||
|     const rawUrl = "https://sharegpt.com/api/conversations"; |     const rawUrl = "https://sharegpt.com/api/conversations"; | ||||||
|   | |||||||
| @@ -1,5 +1,6 @@ | |||||||
| import { | import { | ||||||
|   DEFAULT_API_HOST, |   DEFAULT_API_HOST, | ||||||
|  |   DEFAULT_MODELS, | ||||||
|   OpenaiPath, |   OpenaiPath, | ||||||
|   REQUEST_TIMEOUT_MS, |   REQUEST_TIMEOUT_MS, | ||||||
| } from "@/app/constant"; | } from "@/app/constant"; | ||||||
| @@ -23,6 +24,8 @@ export interface OpenAIListModelResponse { | |||||||
| } | } | ||||||
|  |  | ||||||
| export class ChatGPTApi implements LLMApi { | export class ChatGPTApi implements LLMApi { | ||||||
|  |   private disableListModels = true; | ||||||
|  |  | ||||||
|   path(path: string): string { |   path(path: string): string { | ||||||
|     let openaiUrl = useAccessStore.getState().openaiUrl; |     let openaiUrl = useAccessStore.getState().openaiUrl; | ||||||
|     if (openaiUrl.length === 0) { |     if (openaiUrl.length === 0) { | ||||||
| @@ -246,6 +249,10 @@ export class ChatGPTApi implements LLMApi { | |||||||
|   } |   } | ||||||
|  |  | ||||||
|   async models(): Promise<LLMModel[]> { |   async models(): Promise<LLMModel[]> { | ||||||
|  |     if (this.disableListModels) { | ||||||
|  |       return DEFAULT_MODELS.slice(); | ||||||
|  |     } | ||||||
|  |  | ||||||
|     const res = await fetch(this.path(OpenaiPath.ListModelPath), { |     const res = await fetch(this.path(OpenaiPath.ListModelPath), { | ||||||
|       method: "GET", |       method: "GET", | ||||||
|       headers: { |       headers: { | ||||||
|   | |||||||
| @@ -101,6 +101,19 @@ | |||||||
|     width: 100%; |     width: 100%; | ||||||
|     margin-bottom: 10px; |     margin-bottom: 10px; | ||||||
|  |  | ||||||
|  |     &:hover { | ||||||
|  |       .context-drag { | ||||||
|  |         opacity: 1; | ||||||
|  |       } | ||||||
|  |     } | ||||||
|  |  | ||||||
|  |     .context-drag { | ||||||
|  |       display: flex; | ||||||
|  |       align-items: center; | ||||||
|  |       opacity: 0.5; | ||||||
|  |       transition: all ease 0.3s; | ||||||
|  |     } | ||||||
|  |  | ||||||
|     .context-role { |     .context-role { | ||||||
|       margin-right: 10px; |       margin-right: 10px; | ||||||
|     } |     } | ||||||
|   | |||||||
| @@ -5,6 +5,7 @@ import React, { | |||||||
|   useEffect, |   useEffect, | ||||||
|   useMemo, |   useMemo, | ||||||
|   useCallback, |   useCallback, | ||||||
|  |   Fragment, | ||||||
| } from "react"; | } from "react"; | ||||||
|  |  | ||||||
| import SendWhiteIcon from "../icons/send-white.svg"; | import SendWhiteIcon from "../icons/send-white.svg"; | ||||||
| @@ -710,7 +711,7 @@ export function Chat() { | |||||||
|   }; |   }; | ||||||
|  |  | ||||||
|   const findLastUserIndex = (messageId: string) => { |   const findLastUserIndex = (messageId: string) => { | ||||||
|     // find last user input message and resend |     // find last user input message | ||||||
|     let lastUserMessageIndex: number | null = null; |     let lastUserMessageIndex: number | null = null; | ||||||
|     for (let i = 0; i < session.messages.length; i += 1) { |     for (let i = 0; i < session.messages.length; i += 1) { | ||||||
|       const message = session.messages[i]; |       const message = session.messages[i]; | ||||||
| @@ -737,17 +738,56 @@ export function Chat() { | |||||||
|   }; |   }; | ||||||
|  |  | ||||||
|   const onResend = (message: ChatMessage) => { |   const onResend = (message: ChatMessage) => { | ||||||
|     let content = message.content; |     // when it is resending a message | ||||||
|  |     // 1. for a user's message, find the next bot response | ||||||
|  |     // 2. for a bot's message, find the last user's input | ||||||
|  |     // 3. delete original user input and bot's message | ||||||
|  |     // 4. resend the user's input | ||||||
|  |  | ||||||
|     if (message.role === "assistant" && message.id) { |     const resendingIndex = session.messages.findIndex( | ||||||
|       const userIndex = findLastUserIndex(message.id); |       (m) => m.id === message.id, | ||||||
|       if (userIndex) { |     ); | ||||||
|         content = session.messages.at(userIndex)?.content ?? content; |  | ||||||
|  |     if (resendingIndex <= 0 || resendingIndex >= session.messages.length) { | ||||||
|  |       console.error("[Chat] failed to find resending message", message); | ||||||
|  |       return; | ||||||
|  |     } | ||||||
|  |  | ||||||
|  |     let userMessage: ChatMessage | undefined; | ||||||
|  |     let botMessage: ChatMessage | undefined; | ||||||
|  |  | ||||||
|  |     if (message.role === "assistant") { | ||||||
|  |       // if it is resending a bot's message, find the user input for it | ||||||
|  |       botMessage = message; | ||||||
|  |       for (let i = resendingIndex; i >= 0; i -= 1) { | ||||||
|  |         if (session.messages[i].role === "user") { | ||||||
|  |           userMessage = session.messages[i]; | ||||||
|  |           break; | ||||||
|  |         } | ||||||
|  |       } | ||||||
|  |     } else if (message.role === "user") { | ||||||
|  |       // if it is resending a user's input, find the bot's response | ||||||
|  |       userMessage = message; | ||||||
|  |       for (let i = resendingIndex; i < session.messages.length; i += 1) { | ||||||
|  |         if (session.messages[i].role === "assistant") { | ||||||
|  |           botMessage = session.messages[i]; | ||||||
|  |           break; | ||||||
|  |         } | ||||||
|       } |       } | ||||||
|     } |     } | ||||||
|  |  | ||||||
|  |     if (userMessage === undefined) { | ||||||
|  |       console.error("[Chat] failed to resend", message); | ||||||
|  |       return; | ||||||
|  |     } | ||||||
|  |  | ||||||
|  |     // delete the original messages | ||||||
|  |     deleteMessage(userMessage.id); | ||||||
|  |     deleteMessage(botMessage?.id); | ||||||
|  |  | ||||||
|  |     // resend the message | ||||||
|     setIsLoading(true); |     setIsLoading(true); | ||||||
|     chatStore.onUserInput(content).then(() => setIsLoading(false)); |     chatStore.onUserInput(userMessage.content).then(() => setIsLoading(false)); | ||||||
|     inputRef.current?.focus(); |     inputRef.current?.focus(); | ||||||
|   }; |   }; | ||||||
|  |  | ||||||
| @@ -936,9 +976,8 @@ export function Chat() { | |||||||
|           const shouldShowClearContextDivider = i === clearContextIndex - 1; |           const shouldShowClearContextDivider = i === clearContextIndex - 1; | ||||||
|  |  | ||||||
|           return ( |           return ( | ||||||
|             <> |             <Fragment key={i}> | ||||||
|               <div |               <div | ||||||
|                 key={i} |  | ||||||
|                 className={ |                 className={ | ||||||
|                   isUser ? styles["chat-message-user"] : styles["chat-message"] |                   isUser ? styles["chat-message-user"] : styles["chat-message"] | ||||||
|                 } |                 } | ||||||
| @@ -1043,7 +1082,7 @@ export function Chat() { | |||||||
|                 </div> |                 </div> | ||||||
|               </div> |               </div> | ||||||
|               {shouldShowClearContextDivider && <ClearContextDivider />} |               {shouldShowClearContextDivider && <ClearContextDivider />} | ||||||
|             </> |             </Fragment> | ||||||
|           ); |           ); | ||||||
|         })} |         })} | ||||||
|       </div> |       </div> | ||||||
|   | |||||||
| @@ -8,6 +8,7 @@ import { | |||||||
|   Modal, |   Modal, | ||||||
|   Select, |   Select, | ||||||
|   showImageModal, |   showImageModal, | ||||||
|  |   showModal, | ||||||
|   showToast, |   showToast, | ||||||
| } from "./ui-lib"; | } from "./ui-lib"; | ||||||
| import { IconButton } from "./button"; | import { IconButton } from "./button"; | ||||||
| @@ -244,11 +245,11 @@ export function RenderExport(props: { | |||||||
|     } |     } | ||||||
|  |  | ||||||
|     const renderMsgs = messages.map((v, i) => { |     const renderMsgs = messages.map((v, i) => { | ||||||
|       const [_, role] = v.id.split(":"); |       const [role, _] = v.id.split(":"); | ||||||
|       return { |       return { | ||||||
|         id: i.toString(), |         id: i.toString(), | ||||||
|         role: role as any, |         role: role as any, | ||||||
|         content: v.innerHTML, |         content: role === "user" ? v.textContent ?? "" : v.innerHTML, | ||||||
|         date: "", |         date: "", | ||||||
|       }; |       }; | ||||||
|     }); |     }); | ||||||
| @@ -287,7 +288,30 @@ export function PreviewActions(props: { | |||||||
|       .share(msgs) |       .share(msgs) | ||||||
|       .then((res) => { |       .then((res) => { | ||||||
|         if (!res) return; |         if (!res) return; | ||||||
|         copyToClipboard(res); |         showModal({ | ||||||
|  |           title: Locale.Export.Share, | ||||||
|  |           children: [ | ||||||
|  |             <input | ||||||
|  |               type="text" | ||||||
|  |               value={res} | ||||||
|  |               key="input" | ||||||
|  |               style={{ | ||||||
|  |                 width: "100%", | ||||||
|  |                 maxWidth: "unset", | ||||||
|  |               }} | ||||||
|  |               readOnly | ||||||
|  |               onClick={(e) => e.currentTarget.select()} | ||||||
|  |             ></input>, | ||||||
|  |           ], | ||||||
|  |           actions: [ | ||||||
|  |             <IconButton | ||||||
|  |               icon={<CopyIcon />} | ||||||
|  |               text={Locale.Chat.Actions.Copy} | ||||||
|  |               key="copy" | ||||||
|  |               onClick={() => copyToClipboard(res)} | ||||||
|  |             />, | ||||||
|  |           ], | ||||||
|  |         }); | ||||||
|         setTimeout(() => { |         setTimeout(() => { | ||||||
|           window.open(res, "_blank"); |           window.open(res, "_blank"); | ||||||
|         }, 800); |         }, 800); | ||||||
|   | |||||||
| @@ -61,24 +61,36 @@ | |||||||
|       } |       } | ||||||
|     } |     } | ||||||
|   } |   } | ||||||
|  |  | ||||||
|  |   &:hover, | ||||||
|  |   &:active { | ||||||
|  |     .sidebar-drag { | ||||||
|  |       background-color: rgba($color: #000000, $alpha: 0.01); | ||||||
|  |  | ||||||
|  |       svg { | ||||||
|  |         opacity: 0.2; | ||||||
|  |       } | ||||||
|  |     } | ||||||
|  |   } | ||||||
| } | } | ||||||
|  |  | ||||||
| .sidebar-drag { | .sidebar-drag { | ||||||
|   $width: 10px; |   $width: 14px; | ||||||
|  |  | ||||||
|   position: absolute; |   position: absolute; | ||||||
|   top: 0; |   top: 0; | ||||||
|   right: 0; |   right: 0; | ||||||
|   height: 100%; |   height: 100%; | ||||||
|   width: $width; |   width: $width; | ||||||
|   background-color: var(--black); |   background-color: rgba($color: #000000, $alpha: 0); | ||||||
|   cursor: ew-resize; |   cursor: ew-resize; | ||||||
|   opacity: 0; |  | ||||||
|   transition: all ease 0.3s; |   transition: all ease 0.3s; | ||||||
|  |   display: flex; | ||||||
|  |   align-items: center; | ||||||
|  |  | ||||||
|   &:hover, |   svg { | ||||||
|   &:active { |     opacity: 0; | ||||||
|     opacity: 0.2; |     margin-left: -2px; | ||||||
|   } |   } | ||||||
| } | } | ||||||
|  |  | ||||||
|   | |||||||
| @@ -28,6 +28,7 @@ import { useAppConfig } from "../store/config"; | |||||||
| import { AuthPage } from "./auth"; | import { AuthPage } from "./auth"; | ||||||
| import { getClientConfig } from "../config/client"; | import { getClientConfig } from "../config/client"; | ||||||
| import { api } from "../client/api"; | import { api } from "../client/api"; | ||||||
|  | import { useAccessStore } from "../store"; | ||||||
|  |  | ||||||
| export function Loading(props: { noLogo?: boolean }) { | export function Loading(props: { noLogo?: boolean }) { | ||||||
|   return ( |   return ( | ||||||
| @@ -171,6 +172,7 @@ export function Home() { | |||||||
|  |  | ||||||
|   useEffect(() => { |   useEffect(() => { | ||||||
|     console.log("[Config] got config from build time", getClientConfig()); |     console.log("[Config] got config from build time", getClientConfig()); | ||||||
|  |     useAccessStore.getState().fetch(); | ||||||
|   }, []); |   }, []); | ||||||
|  |  | ||||||
|   if (!useHasHydrated()) { |   if (!useHasHydrated()) { | ||||||
|   | |||||||
| @@ -11,6 +11,7 @@ import CloseIcon from "../icons/close.svg"; | |||||||
| import DeleteIcon from "../icons/delete.svg"; | import DeleteIcon from "../icons/delete.svg"; | ||||||
| import EyeIcon from "../icons/eye.svg"; | import EyeIcon from "../icons/eye.svg"; | ||||||
| import CopyIcon from "../icons/copy.svg"; | import CopyIcon from "../icons/copy.svg"; | ||||||
|  | import DragIcon from "../icons/drag.svg"; | ||||||
|  |  | ||||||
| import { DEFAULT_MASK_AVATAR, Mask, useMaskStore } from "../store/mask"; | import { DEFAULT_MASK_AVATAR, Mask, useMaskStore } from "../store/mask"; | ||||||
| import { | import { | ||||||
| @@ -42,6 +43,20 @@ import { ModelConfigList } from "./model-config"; | |||||||
| import { FileName, Path } from "../constant"; | import { FileName, Path } from "../constant"; | ||||||
| import { BUILTIN_MASK_STORE } from "../masks"; | import { BUILTIN_MASK_STORE } from "../masks"; | ||||||
| import { nanoid } from "nanoid"; | import { nanoid } from "nanoid"; | ||||||
|  | import { | ||||||
|  |   DragDropContext, | ||||||
|  |   Droppable, | ||||||
|  |   Draggable, | ||||||
|  |   OnDragEndResponder, | ||||||
|  | } from "@hello-pangea/dnd"; | ||||||
|  |  | ||||||
|  | // drag and drop helper function | ||||||
|  | function reorder<T>(list: T[], startIndex: number, endIndex: number): T[] { | ||||||
|  |   const result = [...list]; | ||||||
|  |   const [removed] = result.splice(startIndex, 1); | ||||||
|  |   result.splice(endIndex, 0, removed); | ||||||
|  |   return result; | ||||||
|  | } | ||||||
|  |  | ||||||
| export function MaskAvatar(props: { mask: Mask }) { | export function MaskAvatar(props: { mask: Mask }) { | ||||||
|   return props.mask.avatar !== DEFAULT_MASK_AVATAR ? ( |   return props.mask.avatar !== DEFAULT_MASK_AVATAR ? ( | ||||||
| @@ -192,6 +207,7 @@ export function MaskConfig(props: { | |||||||
| } | } | ||||||
|  |  | ||||||
| function ContextPromptItem(props: { | function ContextPromptItem(props: { | ||||||
|  |   index: number; | ||||||
|   prompt: ChatMessage; |   prompt: ChatMessage; | ||||||
|   update: (prompt: ChatMessage) => void; |   update: (prompt: ChatMessage) => void; | ||||||
|   remove: () => void; |   remove: () => void; | ||||||
| @@ -199,53 +215,67 @@ function ContextPromptItem(props: { | |||||||
|   const [focusingInput, setFocusingInput] = useState(false); |   const [focusingInput, setFocusingInput] = useState(false); | ||||||
|  |  | ||||||
|   return ( |   return ( | ||||||
|     <div className={chatStyle["context-prompt-row"]}> |     <Draggable draggableId={props.prompt.id || props.index.toString()} index={props.index}> | ||||||
|       {!focusingInput && ( |       {(provided) => ( | ||||||
|         <Select |         <div | ||||||
|           value={props.prompt.role} |           className={chatStyle["context-prompt-row"]} | ||||||
|           className={chatStyle["context-role"]} |           ref={provided.innerRef} | ||||||
|           onChange={(e) => |           {...provided.draggableProps} | ||||||
|             props.update({ |           {...provided.dragHandleProps} | ||||||
|               ...props.prompt, |  | ||||||
|               role: e.target.value as any, |  | ||||||
|             }) |  | ||||||
|           } |  | ||||||
|         > |         > | ||||||
|           {ROLES.map((r) => ( |           {!focusingInput && ( | ||||||
|             <option key={r} value={r}> |             <> | ||||||
|               {r} |               <div className={chatStyle["context-drag"]}> | ||||||
|             </option> |                 <DragIcon /> | ||||||
|           ))} |               </div> | ||||||
|         </Select> |               <Select | ||||||
|  |                 value={props.prompt.role} | ||||||
|  |                 className={chatStyle["context-role"]} | ||||||
|  |                 onChange={(e) => | ||||||
|  |                   props.update({ | ||||||
|  |                     ...props.prompt, | ||||||
|  |                     role: e.target.value as any, | ||||||
|  |                   }) | ||||||
|  |                 } | ||||||
|  |               > | ||||||
|  |                 {ROLES.map((r) => ( | ||||||
|  |                   <option key={r} value={r}> | ||||||
|  |                     {r} | ||||||
|  |                   </option> | ||||||
|  |                 ))} | ||||||
|  |               </Select> | ||||||
|  |             </> | ||||||
|  |           )} | ||||||
|  |           <Input | ||||||
|  |             value={props.prompt.content} | ||||||
|  |             type="text" | ||||||
|  |             className={chatStyle["context-content"]} | ||||||
|  |             rows={focusingInput ? 5 : 1} | ||||||
|  |             onFocus={() => setFocusingInput(true)} | ||||||
|  |             onBlur={() => { | ||||||
|  |               setFocusingInput(false); | ||||||
|  |               // If the selection is not removed when the user loses focus, some | ||||||
|  |               // extensions like "Translate" will always display a floating bar | ||||||
|  |               window?.getSelection()?.removeAllRanges(); | ||||||
|  |             }} | ||||||
|  |             onInput={(e) => | ||||||
|  |               props.update({ | ||||||
|  |                 ...props.prompt, | ||||||
|  |                 content: e.currentTarget.value as any, | ||||||
|  |               }) | ||||||
|  |             } | ||||||
|  |           /> | ||||||
|  |           {!focusingInput && ( | ||||||
|  |             <IconButton | ||||||
|  |               icon={<DeleteIcon />} | ||||||
|  |               className={chatStyle["context-delete-button"]} | ||||||
|  |               onClick={() => props.remove()} | ||||||
|  |               bordered | ||||||
|  |             /> | ||||||
|  |           )} | ||||||
|  |         </div> | ||||||
|       )} |       )} | ||||||
|       <Input |     </Draggable> | ||||||
|         value={props.prompt.content} |  | ||||||
|         type="text" |  | ||||||
|         className={chatStyle["context-content"]} |  | ||||||
|         rows={focusingInput ? 5 : 1} |  | ||||||
|         onFocus={() => setFocusingInput(true)} |  | ||||||
|         onBlur={() => { |  | ||||||
|           setFocusingInput(false); |  | ||||||
|           // If the selection is not removed when the user loses focus, some |  | ||||||
|           // extensions like "Translate" will always display a floating bar |  | ||||||
|           window?.getSelection()?.removeAllRanges(); |  | ||||||
|         }} |  | ||||||
|         onInput={(e) => |  | ||||||
|           props.update({ |  | ||||||
|             ...props.prompt, |  | ||||||
|             content: e.currentTarget.value as any, |  | ||||||
|           }) |  | ||||||
|         } |  | ||||||
|       /> |  | ||||||
|       {!focusingInput && ( |  | ||||||
|         <IconButton |  | ||||||
|           icon={<DeleteIcon />} |  | ||||||
|           className={chatStyle["context-delete-button"]} |  | ||||||
|           onClick={() => props.remove()} |  | ||||||
|           bordered |  | ||||||
|         /> |  | ||||||
|       )} |  | ||||||
|     </div> |  | ||||||
|   ); |   ); | ||||||
| } | } | ||||||
|  |  | ||||||
| @@ -267,17 +297,41 @@ export function ContextPrompts(props: { | |||||||
|     props.updateContext((context) => (context[i] = prompt)); |     props.updateContext((context) => (context[i] = prompt)); | ||||||
|   }; |   }; | ||||||
|  |  | ||||||
|  |   const onDragEnd: OnDragEndResponder = (result) => { | ||||||
|  |     if (!result.destination) { | ||||||
|  |       return; | ||||||
|  |     } | ||||||
|  |     const newContext = reorder( | ||||||
|  |       context, | ||||||
|  |       result.source.index, | ||||||
|  |       result.destination.index, | ||||||
|  |     ); | ||||||
|  |     props.updateContext((context) => { | ||||||
|  |       context.splice(0, context.length, ...newContext); | ||||||
|  |     }); | ||||||
|  |   }; | ||||||
|  |  | ||||||
|   return ( |   return ( | ||||||
|     <> |     <> | ||||||
|       <div className={chatStyle["context-prompt"]} style={{ marginBottom: 20 }}> |       <div className={chatStyle["context-prompt"]} style={{ marginBottom: 20 }}> | ||||||
|         {context.map((c, i) => ( |         <DragDropContext onDragEnd={onDragEnd}> | ||||||
|           <ContextPromptItem |           <Droppable droppableId="context-prompt-list"> | ||||||
|             key={i} |             {(provided) => ( | ||||||
|             prompt={c} |               <div ref={provided.innerRef} {...provided.droppableProps}> | ||||||
|             update={(prompt) => updateContextPrompt(i, prompt)} |                 {context.map((c, i) => ( | ||||||
|             remove={() => removeContextPrompt(i)} |                   <ContextPromptItem | ||||||
|           /> |                     index={i} | ||||||
|         ))} |                     key={c.id} | ||||||
|  |                     prompt={c} | ||||||
|  |                     update={(prompt) => updateContextPrompt(i, prompt)} | ||||||
|  |                     remove={() => removeContextPrompt(i)} | ||||||
|  |                   /> | ||||||
|  |                 ))} | ||||||
|  |                 {provided.placeholder} | ||||||
|  |               </div> | ||||||
|  |             )} | ||||||
|  |           </Droppable> | ||||||
|  |         </DragDropContext> | ||||||
|  |  | ||||||
|         <div className={chatStyle["context-prompt-row"]}> |         <div className={chatStyle["context-prompt-row"]}> | ||||||
|           <IconButton |           <IconButton | ||||||
|   | |||||||
| @@ -130,6 +130,22 @@ export function ModelConfigList(props: { | |||||||
|         ></InputRange> |         ></InputRange> | ||||||
|       </ListItem> |       </ListItem> | ||||||
|  |  | ||||||
|  |       <ListItem | ||||||
|  |         title={Locale.Settings.InjectSystemPrompts.Title} | ||||||
|  |         subTitle={Locale.Settings.InjectSystemPrompts.SubTitle} | ||||||
|  |       > | ||||||
|  |         <input | ||||||
|  |           type="checkbox" | ||||||
|  |           checked={props.modelConfig.enableInjectSystemPrompts} | ||||||
|  |           onChange={(e) => | ||||||
|  |             props.updateConfig( | ||||||
|  |               (config) => | ||||||
|  |                 (config.enableInjectSystemPrompts = e.currentTarget.checked), | ||||||
|  |             ) | ||||||
|  |           } | ||||||
|  |         ></input> | ||||||
|  |       </ListItem> | ||||||
|  |  | ||||||
|       <ListItem |       <ListItem | ||||||
|         title={Locale.Settings.InputTemplate.Title} |         title={Locale.Settings.InputTemplate.Title} | ||||||
|         subTitle={Locale.Settings.InputTemplate.SubTitle} |         subTitle={Locale.Settings.InputTemplate.SubTitle} | ||||||
|   | |||||||
| @@ -10,6 +10,7 @@ import AddIcon from "../icons/add.svg"; | |||||||
| import CloseIcon from "../icons/close.svg"; | import CloseIcon from "../icons/close.svg"; | ||||||
| import MaskIcon from "../icons/mask.svg"; | import MaskIcon from "../icons/mask.svg"; | ||||||
| import PluginIcon from "../icons/plugin.svg"; | import PluginIcon from "../icons/plugin.svg"; | ||||||
|  | import DragIcon from "../icons/drag.svg"; | ||||||
|  |  | ||||||
| import Locale from "../locales"; | import Locale from "../locales"; | ||||||
|  |  | ||||||
| @@ -198,7 +199,9 @@ export function SideBar(props: { className?: string }) { | |||||||
|       <div |       <div | ||||||
|         className={styles["sidebar-drag"]} |         className={styles["sidebar-drag"]} | ||||||
|         onMouseDown={(e) => onDragMouseDown(e as any)} |         onMouseDown={(e) => onDragMouseDown(e as any)} | ||||||
|       ></div> |       > | ||||||
|  |         <DragIcon /> | ||||||
|  |       </div> | ||||||
|     </div> |     </div> | ||||||
|   ); |   ); | ||||||
| } | } | ||||||
|   | |||||||
| @@ -108,24 +108,4 @@ export const DEFAULT_MODELS = [ | |||||||
|     name: "gpt-3.5-turbo-16k-0613", |     name: "gpt-3.5-turbo-16k-0613", | ||||||
|     available: true, |     available: true, | ||||||
|   }, |   }, | ||||||
|   { |  | ||||||
|     name: "qwen-v1", // 通义千问 |  | ||||||
|     available: false, |  | ||||||
|   }, |  | ||||||
|   { |  | ||||||
|     name: "ernie", // 文心一言 |  | ||||||
|     available: false, |  | ||||||
|   }, |  | ||||||
|   { |  | ||||||
|     name: "spark", // 讯飞星火 |  | ||||||
|     available: false, |  | ||||||
|   }, |  | ||||||
|   { |  | ||||||
|     name: "llama", // llama |  | ||||||
|     available: false, |  | ||||||
|   }, |  | ||||||
|   { |  | ||||||
|     name: "chatglm", // chatglm-6b |  | ||||||
|     available: false, |  | ||||||
|   }, |  | ||||||
| ] as const; | ] as const; | ||||||
|   | |||||||
							
								
								
									
										1
									
								
								app/icons/drag.svg
									
									
									
									
									
										Normal file
									
								
							
							
						
						
									
										1
									
								
								app/icons/drag.svg
									
									
									
									
									
										Normal file
									
								
							| @@ -0,0 +1 @@ | |||||||
|  | <svg xmlns="http://www.w3.org/2000/svg" xmlns:xlink="http://www.w3.org/1999/xlink" width="16" height="16" viewBox="0 0 16 16" fill="none"><g opacity="1"  transform="translate(0 0)  rotate(0)"><mask id="bg-mask-0" fill="white"><use transform="translate(0 0)  rotate(0)" xlink:href="#path_0"></use></mask><g mask="url(#bg-mask-0)" ><path id="路径 1" fill-rule="evenodd" style="fill:#333333" opacity="1" d="M6.33663,3.33c0,0.74 -0.6,1.34 -1.34,1.34c-0.73,0 -1.33,-0.6 -1.33,-1.34c0,-0.73 0.6,-1.33 1.33,-1.33c0.74,0 1.34,0.6 1.34,1.33zM4.99663,9.33c-0.73,0 -1.33,-0.59 -1.33,-1.33c0,-0.74 0.6,-1.33 1.33,-1.33c0.74,0 1.34,0.59 1.34,1.33c0,0.74 -0.6,1.33 -1.34,1.33zM4.99663,14c-0.73,0 -1.33,-0.6 -1.33,-1.33c0,-0.74 0.6,-1.34 1.33,-1.34c0.74,0 1.34,0.6 1.34,1.34c0,0.73 -0.6,1.33 -1.34,1.33z"></path><path id="路径 2" fill-rule="evenodd" style="fill:#333333" opacity="1" d="M12.3366,3.33c0,0.74 -0.6,1.34 -1.34,1.34c-0.73,0 -1.32997,-0.6 -1.32997,-1.34c0,-0.73 0.59997,-1.33 1.32997,-1.33c0.74,0 1.34,0.6 1.34,1.33zM10.9966,9.33c-0.73,0 -1.32997,-0.59 -1.32997,-1.33c0,-0.74 0.59997,-1.33 1.32997,-1.33c0.74,0 1.34,0.59 1.34,1.33c0,0.74 -0.6,1.33 -1.34,1.33zM10.9966,14c-0.73,0 -1.32997,-0.6 -1.32997,-1.33c0,-0.74 0.59997,-1.34 1.32997,-1.34c0.74,0 1.34,0.6 1.34,1.34c0,0.73 -0.6,1.33 -1.34,1.33z"></path></g></g><defs><rect id="path_0" x="0" y="0" width="16" height="16" /></defs></svg> | ||||||
| After Width: | Height: | Size: 1.4 KiB | 
| @@ -3,8 +3,9 @@ import "./styles/globals.scss"; | |||||||
| import "./styles/markdown.scss"; | import "./styles/markdown.scss"; | ||||||
| import "./styles/highlight.scss"; | import "./styles/highlight.scss"; | ||||||
| import { getClientConfig } from "./config/client"; | import { getClientConfig } from "./config/client"; | ||||||
|  | import { type Metadata } from 'next'; | ||||||
|  |  | ||||||
| export const metadata = { | export const metadata: Metadata = { | ||||||
|   title: "ChatGPT Next Web", |   title: "ChatGPT Next Web", | ||||||
|   description: "Your personal ChatGPT Chat Bot.", |   description: "Your personal ChatGPT Chat Bot.", | ||||||
|   viewport: { |   viewport: { | ||||||
|   | |||||||
| @@ -110,6 +110,11 @@ const ar: PartialLocaleType = { | |||||||
|       Title: "حجم الخط", |       Title: "حجم الخط", | ||||||
|       SubTitle: "ضبط حجم الخط لمحتوى الدردشة", |       SubTitle: "ضبط حجم الخط لمحتوى الدردشة", | ||||||
|     }, |     }, | ||||||
|  |     InjectSystemPrompts: { | ||||||
|  |       Title: "حقن تلميحات النظام", | ||||||
|  |       SubTitle: | ||||||
|  |         "قم بإضافة تلميحة نظام محاكاة ChatGPT إلى بداية قائمة الرسائل المُطلَبة في كل طلب", | ||||||
|  |     }, | ||||||
|     InputTemplate: { |     InputTemplate: { | ||||||
|       Title: "نموذج الإدخال", |       Title: "نموذج الإدخال", | ||||||
|       SubTitle: "سيتم ملء أحدث رسالة في هذا النموذج", |       SubTitle: "سيتم ملء أحدث رسالة في هذا النموذج", | ||||||
|   | |||||||
| @@ -135,7 +135,11 @@ const bn: PartialLocaleType = { | |||||||
|       Title: "ফন্ট সাইজ", |       Title: "ফন্ট সাইজ", | ||||||
|       SubTitle: "চ্যাট সামগ্রীর ফন্ট সাইজ সংশোধন করুন", |       SubTitle: "চ্যাট সামগ্রীর ফন্ট সাইজ সংশোধন করুন", | ||||||
|     }, |     }, | ||||||
|  |     InjectSystemPrompts: { | ||||||
|  |       Title: "حقن تلميحات النظام", | ||||||
|  |       SubTitle: | ||||||
|  |         "قم بإضافة تلميحة نظام محاكاة ChatGPT إلى بداية قائمة الرسائل المُطلَبة في كل طلب", | ||||||
|  |     }, | ||||||
|     InputTemplate: { |     InputTemplate: { | ||||||
|       Title: "ইনপুট টেমপ্লেট", |       Title: "ইনপুট টেমপ্লেট", | ||||||
|       SubTitle: "নতুনতম বার্তা এই টেমপ্লেটে পূরণ হবে", |       SubTitle: "নতুনতম বার্তা এই টেমপ্লেটে পূরণ হবে", | ||||||
|   | |||||||
| @@ -139,7 +139,10 @@ const cn = { | |||||||
|       Title: "字体大小", |       Title: "字体大小", | ||||||
|       SubTitle: "聊天内容的字体大小", |       SubTitle: "聊天内容的字体大小", | ||||||
|     }, |     }, | ||||||
|  |     InjectSystemPrompts: { | ||||||
|  |       Title: "注入系统级提示信息", | ||||||
|  |       SubTitle: "强制给每次请求的消息列表开头添加一个模拟 ChatGPT 的系统提示", | ||||||
|  |     }, | ||||||
|     InputTemplate: { |     InputTemplate: { | ||||||
|       Title: "用户输入预处理", |       Title: "用户输入预处理", | ||||||
|       SubTitle: "用户最新的一条消息会填充到此模板", |       SubTitle: "用户最新的一条消息会填充到此模板", | ||||||
|   | |||||||
| @@ -71,6 +71,11 @@ const cs: PartialLocaleType = { | |||||||
|       Title: "Velikost písma", |       Title: "Velikost písma", | ||||||
|       SubTitle: "Nastavení velikosti písma obsahu chatu", |       SubTitle: "Nastavení velikosti písma obsahu chatu", | ||||||
|     }, |     }, | ||||||
|  |     InjectSystemPrompts: { | ||||||
|  |       Title: "Vložit systémové prompty", | ||||||
|  |       SubTitle: | ||||||
|  |         "Vynutit přidání simulovaného systémového promptu ChatGPT na začátek seznamu zpráv každého požadavku", | ||||||
|  |     }, | ||||||
|     Update: { |     Update: { | ||||||
|       Version: (x: string) => `Verze: ${x}`, |       Version: (x: string) => `Verze: ${x}`, | ||||||
|       IsLatest: "Aktuální verze", |       IsLatest: "Aktuální verze", | ||||||
|   | |||||||
| @@ -71,6 +71,11 @@ const de: PartialLocaleType = { | |||||||
|       Title: "Schriftgröße", |       Title: "Schriftgröße", | ||||||
|       SubTitle: "Schriftgröße des Chat-Inhalts anpassen", |       SubTitle: "Schriftgröße des Chat-Inhalts anpassen", | ||||||
|     }, |     }, | ||||||
|  |     InjectSystemPrompts: { | ||||||
|  |       Title: "System-Prompts einfügen", | ||||||
|  |       SubTitle: | ||||||
|  |         "Erzwingt das Hinzufügen eines simulierten systemweiten Prompts von ChatGPT am Anfang der Nachrichtenliste bei jeder Anfrage", | ||||||
|  |     }, | ||||||
|     Update: { |     Update: { | ||||||
|       Version: (x: string) => `Version: ${x}`, |       Version: (x: string) => `Version: ${x}`, | ||||||
|       IsLatest: "Neueste Version", |       IsLatest: "Neueste Version", | ||||||
|   | |||||||
| @@ -141,7 +141,10 @@ const en: LocaleType = { | |||||||
|       Title: "Font Size", |       Title: "Font Size", | ||||||
|       SubTitle: "Adjust font size of chat content", |       SubTitle: "Adjust font size of chat content", | ||||||
|     }, |     }, | ||||||
|  |     InjectSystemPrompts: { | ||||||
|  |       Title: "Inject System Prompts", | ||||||
|  |       SubTitle: "Inject a global system prompt for every request", | ||||||
|  |     }, | ||||||
|     InputTemplate: { |     InputTemplate: { | ||||||
|       Title: "Input Template", |       Title: "Input Template", | ||||||
|       SubTitle: "Newest message will be filled to this template", |       SubTitle: "Newest message will be filled to this template", | ||||||
|   | |||||||
| @@ -71,6 +71,11 @@ const es: PartialLocaleType = { | |||||||
|       Title: "Tamaño de fuente", |       Title: "Tamaño de fuente", | ||||||
|       SubTitle: "Ajustar el tamaño de fuente del contenido del chat", |       SubTitle: "Ajustar el tamaño de fuente del contenido del chat", | ||||||
|     }, |     }, | ||||||
|  |     InjectSystemPrompts: { | ||||||
|  |       Title: "Inyectar Prompts del Sistema", | ||||||
|  |       SubTitle: | ||||||
|  |         "Agregar forzosamente un prompt de sistema simulado de ChatGPT al comienzo de la lista de mensajes en cada solicitud", | ||||||
|  |     }, | ||||||
|     Update: { |     Update: { | ||||||
|       Version: (x: string) => `Versión: ${x}`, |       Version: (x: string) => `Versión: ${x}`, | ||||||
|       IsLatest: "Última versión", |       IsLatest: "Última versión", | ||||||
|   | |||||||
| @@ -111,6 +111,11 @@ const fr: PartialLocaleType = { | |||||||
|       Title: "Taille des polices", |       Title: "Taille des polices", | ||||||
|       SubTitle: "Ajuste la taille de police du contenu de la conversation", |       SubTitle: "Ajuste la taille de police du contenu de la conversation", | ||||||
|     }, |     }, | ||||||
|  |     InjectSystemPrompts: { | ||||||
|  |       Title: "Injecter des invites système", | ||||||
|  |       SubTitle: | ||||||
|  |         "Ajoute de force une invite système simulée de ChatGPT au début de la liste des messages pour chaque demande", | ||||||
|  |     }, | ||||||
|     InputTemplate: { |     InputTemplate: { | ||||||
|       Title: "Template", |       Title: "Template", | ||||||
|       SubTitle: "Le message le plus récent sera ajouté à ce template.", |       SubTitle: "Le message le plus récent sera ajouté à ce template.", | ||||||
|   | |||||||
| @@ -71,6 +71,11 @@ const it: PartialLocaleType = { | |||||||
|       Title: "Dimensione carattere", |       Title: "Dimensione carattere", | ||||||
|       SubTitle: "Regolare la dimensione dei caratteri del contenuto della chat", |       SubTitle: "Regolare la dimensione dei caratteri del contenuto della chat", | ||||||
|     }, |     }, | ||||||
|  |     InjectSystemPrompts: { | ||||||
|  |       Title: "Inserisci Prompts di Sistema", | ||||||
|  |       SubTitle: | ||||||
|  |         "Aggiungi forzatamente un prompt di sistema simulato di ChatGPT all'inizio della lista dei messaggi per ogni richiesta", | ||||||
|  |     }, | ||||||
|     Update: { |     Update: { | ||||||
|       Version: (x: string) => `Versione: ${x}`, |       Version: (x: string) => `Versione: ${x}`, | ||||||
|       IsLatest: "Ultima versione", |       IsLatest: "Ultima versione", | ||||||
|   | |||||||
| @@ -84,6 +84,11 @@ const jp: PartialLocaleType = { | |||||||
|       Title: "フォントサイズ", |       Title: "フォントサイズ", | ||||||
|       SubTitle: "チャット内容のフォントサイズ", |       SubTitle: "チャット内容のフォントサイズ", | ||||||
|     }, |     }, | ||||||
|  |     InjectSystemPrompts: { | ||||||
|  |       Title: "システムプロンプトの挿入", | ||||||
|  |       SubTitle: | ||||||
|  |         "各リクエストのメッセージリストの先頭に、ChatGPTのシステムプロンプトを強制的に追加します", | ||||||
|  |     }, | ||||||
|     InputTemplate: { |     InputTemplate: { | ||||||
|       Title: "入力の前処理", |       Title: "入力の前処理", | ||||||
|       SubTitle: "新規入力がこのテンプレートに埋め込まれます", |       SubTitle: "新規入力がこのテンプレートに埋め込まれます", | ||||||
|   | |||||||
| @@ -71,6 +71,11 @@ const ko: PartialLocaleType = { | |||||||
|       Title: "글꼴 크기", |       Title: "글꼴 크기", | ||||||
|       SubTitle: "채팅 내용의 글꼴 크기 조정", |       SubTitle: "채팅 내용의 글꼴 크기 조정", | ||||||
|     }, |     }, | ||||||
|  |     InjectSystemPrompts: { | ||||||
|  |       Title: "시스템 프롬프트 주입", | ||||||
|  |       SubTitle: | ||||||
|  |         "각 요청의 메시지 목록의 시작에 ChatGPT 시스템 프롬프트를 강제로 추가합니다", | ||||||
|  |     }, | ||||||
|     Update: { |     Update: { | ||||||
|       Version: (x: string) => `버전: ${x}`, |       Version: (x: string) => `버전: ${x}`, | ||||||
|       IsLatest: "최신 버전", |       IsLatest: "최신 버전", | ||||||
|   | |||||||
| @@ -65,6 +65,11 @@ const no: PartialLocaleType = { | |||||||
|       Title: "Fontstørrelsen", |       Title: "Fontstørrelsen", | ||||||
|       SubTitle: "Juster fontstørrelsen for samtaleinnholdet.", |       SubTitle: "Juster fontstørrelsen for samtaleinnholdet.", | ||||||
|     }, |     }, | ||||||
|  |     InjectSystemPrompts: { | ||||||
|  |       Title: "Sett inn systemprompter", | ||||||
|  |       SubTitle: | ||||||
|  |         "Tving tillegg av en simulert ChatGPT-systemprompt i begynnelsen av meldingslisten for hver forespørsel", | ||||||
|  |     }, | ||||||
|     Update: { |     Update: { | ||||||
|       Version: (x: string) => `Versjon: ${x}`, |       Version: (x: string) => `Versjon: ${x}`, | ||||||
|       IsLatest: "Siste versjon", |       IsLatest: "Siste versjon", | ||||||
|   | |||||||
| @@ -71,6 +71,11 @@ const ru: PartialLocaleType = { | |||||||
|       Title: "Размер шрифта", |       Title: "Размер шрифта", | ||||||
|       SubTitle: "Настроить размер шрифта контента чата", |       SubTitle: "Настроить размер шрифта контента чата", | ||||||
|     }, |     }, | ||||||
|  |     InjectSystemPrompts: { | ||||||
|  |       Title: "Вставить системные подсказки", | ||||||
|  |       SubTitle: | ||||||
|  |         "Принудительно добавить симулированную системную подсказку ChatGPT в начало списка сообщений для каждого запроса", | ||||||
|  |     }, | ||||||
|     Update: { |     Update: { | ||||||
|       Version: (x: string) => `Версия: ${x}`, |       Version: (x: string) => `Версия: ${x}`, | ||||||
|       IsLatest: "Последняя версия", |       IsLatest: "Последняя версия", | ||||||
|   | |||||||
| @@ -71,6 +71,11 @@ const tr: PartialLocaleType = { | |||||||
|       Title: "Yazı Boyutu", |       Title: "Yazı Boyutu", | ||||||
|       SubTitle: "Sohbet içeriğinin yazı boyutunu ayarlayın", |       SubTitle: "Sohbet içeriğinin yazı boyutunu ayarlayın", | ||||||
|     }, |     }, | ||||||
|  |     InjectSystemPrompts: { | ||||||
|  |       Title: "Sistem İpucu Ekleyin", | ||||||
|  |       SubTitle: | ||||||
|  |         "Her istek için ileti listesinin başına simüle edilmiş bir ChatGPT sistem ipucu ekleyin", | ||||||
|  |     }, | ||||||
|     Update: { |     Update: { | ||||||
|       Version: (x: string) => `Sürüm: ${x}`, |       Version: (x: string) => `Sürüm: ${x}`, | ||||||
|       IsLatest: "En son sürüm", |       IsLatest: "En son sürüm", | ||||||
|   | |||||||
| @@ -69,6 +69,10 @@ const tw: PartialLocaleType = { | |||||||
|       Title: "字型大小", |       Title: "字型大小", | ||||||
|       SubTitle: "聊天內容的字型大小", |       SubTitle: "聊天內容的字型大小", | ||||||
|     }, |     }, | ||||||
|  |     InjectSystemPrompts: { | ||||||
|  |       Title: "注入系統提示", | ||||||
|  |       SubTitle: "強制在每個請求的訊息列表開頭添加一個模擬 ChatGPT 的系統提示", | ||||||
|  |     }, | ||||||
|     Update: { |     Update: { | ||||||
|       Version: (x: string) => `當前版本:${x}`, |       Version: (x: string) => `當前版本:${x}`, | ||||||
|       IsLatest: "已是最新版本", |       IsLatest: "已是最新版本", | ||||||
|   | |||||||
| @@ -71,6 +71,11 @@ const vi: PartialLocaleType = { | |||||||
|       Title: "Font chữ", |       Title: "Font chữ", | ||||||
|       SubTitle: "Thay đổi font chữ của nội dung trò chuyện", |       SubTitle: "Thay đổi font chữ của nội dung trò chuyện", | ||||||
|     }, |     }, | ||||||
|  |     InjectSystemPrompts: { | ||||||
|  |       Title: "Tiêm Prompt Hệ thống", | ||||||
|  |       SubTitle: | ||||||
|  |         "Bắt buộc thêm một prompt hệ thống giả lập ChatGPT ở đầu danh sách tin nhắn cho mỗi yêu cầu", | ||||||
|  |     }, | ||||||
|     Update: { |     Update: { | ||||||
|       Version: (x: string) => `Phiên bản: ${x}`, |       Version: (x: string) => `Phiên bản: ${x}`, | ||||||
|       IsLatest: "Phiên bản mới nhất", |       IsLatest: "Phiên bản mới nhất", | ||||||
|   | |||||||
| @@ -1,6 +1,6 @@ | |||||||
| import { create } from "zustand"; | import { create } from "zustand"; | ||||||
| import { persist } from "zustand/middleware"; | import { persist } from "zustand/middleware"; | ||||||
| import { DEFAULT_API_HOST, StoreKey } from "../constant"; | import { DEFAULT_API_HOST, DEFAULT_MODELS, StoreKey } from "../constant"; | ||||||
| import { getHeaders } from "../client/api"; | import { getHeaders } from "../client/api"; | ||||||
| import { BOT_HELLO } from "./chat"; | import { BOT_HELLO } from "./chat"; | ||||||
| import { getClientConfig } from "../config/client"; | import { getClientConfig } from "../config/client"; | ||||||
| @@ -11,8 +11,10 @@ export interface AccessControlStore { | |||||||
|  |  | ||||||
|   needCode: boolean; |   needCode: boolean; | ||||||
|   hideUserApiKey: boolean; |   hideUserApiKey: boolean; | ||||||
|   openaiUrl: string; |  | ||||||
|   hideBalanceQuery: boolean; |   hideBalanceQuery: boolean; | ||||||
|  |   disableGPT4: boolean; | ||||||
|  |  | ||||||
|  |   openaiUrl: string; | ||||||
|  |  | ||||||
|   updateToken: (_: string) => void; |   updateToken: (_: string) => void; | ||||||
|   updateCode: (_: string) => void; |   updateCode: (_: string) => void; | ||||||
| @@ -35,8 +37,10 @@ export const useAccessStore = create<AccessControlStore>()( | |||||||
|       accessCode: "", |       accessCode: "", | ||||||
|       needCode: true, |       needCode: true, | ||||||
|       hideUserApiKey: false, |       hideUserApiKey: false, | ||||||
|       openaiUrl: DEFAULT_OPENAI_URL, |  | ||||||
|       hideBalanceQuery: false, |       hideBalanceQuery: false, | ||||||
|  |       disableGPT4: false, | ||||||
|  |  | ||||||
|  |       openaiUrl: DEFAULT_OPENAI_URL, | ||||||
|  |  | ||||||
|       enabledAccessControl() { |       enabledAccessControl() { | ||||||
|         get().fetch(); |         get().fetch(); | ||||||
| @@ -75,8 +79,10 @@ export const useAccessStore = create<AccessControlStore>()( | |||||||
|             console.log("[Config] got config from server", res); |             console.log("[Config] got config from server", res); | ||||||
|             set(() => ({ ...res })); |             set(() => ({ ...res })); | ||||||
|  |  | ||||||
|             if ((res as any).botHello) { |             if (res.disableGPT4) { | ||||||
|               BOT_HELLO.content = (res as any).botHello; |               DEFAULT_MODELS.forEach( | ||||||
|  |                 (m: any) => (m.available = !m.name.startsWith("gpt-4")), | ||||||
|  |               ); | ||||||
|             } |             } | ||||||
|           }) |           }) | ||||||
|           .catch(() => { |           .catch(() => { | ||||||
|   | |||||||
| @@ -289,7 +289,6 @@ export const useChatStore = create<ChatStore>()( | |||||||
|         const botMessage: ChatMessage = createMessage({ |         const botMessage: ChatMessage = createMessage({ | ||||||
|           role: "assistant", |           role: "assistant", | ||||||
|           streaming: true, |           streaming: true, | ||||||
|           id: userMessage.id! + 1, |  | ||||||
|           model: modelConfig.model, |           model: modelConfig.model, | ||||||
|         }); |         }); | ||||||
|  |  | ||||||
| @@ -387,8 +386,7 @@ export const useChatStore = create<ChatStore>()( | |||||||
|         const contextPrompts = session.mask.context.slice(); |         const contextPrompts = session.mask.context.slice(); | ||||||
|  |  | ||||||
|         // system prompts, to get close to OpenAI Web ChatGPT |         // system prompts, to get close to OpenAI Web ChatGPT | ||||||
|         // only will be injected if user does not use a mask or set none context prompts |         const shouldInjectSystemPrompts = modelConfig.enableInjectSystemPrompts; | ||||||
|         const shouldInjectSystemPrompts = contextPrompts.length === 0; |  | ||||||
|         const systemPrompts = shouldInjectSystemPrompts |         const systemPrompts = shouldInjectSystemPrompts | ||||||
|           ? [ |           ? [ | ||||||
|               createMessage({ |               createMessage({ | ||||||
| @@ -591,7 +589,7 @@ export const useChatStore = create<ChatStore>()( | |||||||
|     }), |     }), | ||||||
|     { |     { | ||||||
|       name: StoreKey.Chat, |       name: StoreKey.Chat, | ||||||
|       version: 3, |       version: 3.1, | ||||||
|       migrate(persistedState, version) { |       migrate(persistedState, version) { | ||||||
|         const state = persistedState as any; |         const state = persistedState as any; | ||||||
|         const newState = JSON.parse(JSON.stringify(state)) as ChatStore; |         const newState = JSON.parse(JSON.stringify(state)) as ChatStore; | ||||||
| @@ -619,6 +617,23 @@ export const useChatStore = create<ChatStore>()( | |||||||
|           }); |           }); | ||||||
|         } |         } | ||||||
|  |  | ||||||
|  |         // Enable `enableInjectSystemPrompts` attribute for old sessions. | ||||||
|  |         // Resolve issue of old sessions not automatically enabling. | ||||||
|  |         if (version < 3.1) { | ||||||
|  |           newState.sessions.forEach((s) => { | ||||||
|  |             if ( | ||||||
|  |               // Exclude those already set by user | ||||||
|  |               !s.mask.modelConfig.hasOwnProperty("enableInjectSystemPrompts") | ||||||
|  |             ) { | ||||||
|  |               // Because users may have changed this configuration, | ||||||
|  |               // the user's current configuration is used instead of the default | ||||||
|  |               const config = useAppConfig.getState(); | ||||||
|  |               s.mask.modelConfig.enableInjectSystemPrompts = | ||||||
|  |                 config.modelConfig.enableInjectSystemPrompts; | ||||||
|  |             } | ||||||
|  |           }); | ||||||
|  |         } | ||||||
|  |  | ||||||
|         return newState; |         return newState; | ||||||
|       }, |       }, | ||||||
|     }, |     }, | ||||||
|   | |||||||
| @@ -47,6 +47,7 @@ export const DEFAULT_CONFIG = { | |||||||
|     sendMemory: true, |     sendMemory: true, | ||||||
|     historyMessageCount: 4, |     historyMessageCount: 4, | ||||||
|     compressMessageLengthThreshold: 1000, |     compressMessageLengthThreshold: 1000, | ||||||
|  |     enableInjectSystemPrompts: true, | ||||||
|     template: DEFAULT_INPUT_TEMPLATE, |     template: DEFAULT_INPUT_TEMPLATE, | ||||||
|   }, |   }, | ||||||
| }; | }; | ||||||
| @@ -146,7 +147,7 @@ export const useAppConfig = create<ChatConfigStore>()( | |||||||
|     }), |     }), | ||||||
|     { |     { | ||||||
|       name: StoreKey.Config, |       name: StoreKey.Config, | ||||||
|       version: 3.5, |       version: 3.6, | ||||||
|       migrate(persistedState, version) { |       migrate(persistedState, version) { | ||||||
|         const state = persistedState as ChatConfig; |         const state = persistedState as ChatConfig; | ||||||
|  |  | ||||||
| @@ -165,6 +166,10 @@ export const useAppConfig = create<ChatConfigStore>()( | |||||||
|           state.customModels = "claude,claude-100k"; |           state.customModels = "claude,claude-100k"; | ||||||
|         } |         } | ||||||
|  |  | ||||||
|  |         if (version < 3.6) { | ||||||
|  |           state.modelConfig.enableInjectSystemPrompts = true; | ||||||
|  |         } | ||||||
|  |  | ||||||
|         return state as any; |         return state as any; | ||||||
|       }, |       }, | ||||||
|     }, |     }, | ||||||
|   | |||||||
| @@ -109,7 +109,7 @@ export const useMaskStore = create<MaskStore>()( | |||||||
|     }), |     }), | ||||||
|     { |     { | ||||||
|       name: StoreKey.Mask, |       name: StoreKey.Mask, | ||||||
|       version: 3, |       version: 3.1, | ||||||
|  |  | ||||||
|       migrate(state, version) { |       migrate(state, version) { | ||||||
|         const newState = JSON.parse(JSON.stringify(state)) as MaskState; |         const newState = JSON.parse(JSON.stringify(state)) as MaskState; | ||||||
| @@ -119,6 +119,14 @@ export const useMaskStore = create<MaskStore>()( | |||||||
|           Object.values(newState.masks).forEach((m) => (m.id = nanoid())); |           Object.values(newState.masks).forEach((m) => (m.id = nanoid())); | ||||||
|         } |         } | ||||||
|  |  | ||||||
|  |         if (version < 3.1) { | ||||||
|  |           const updatedMasks: Record<string, Mask> = {}; | ||||||
|  |           Object.values(newState.masks).forEach((m) => { | ||||||
|  |             updatedMasks[m.id] = m; | ||||||
|  |           }); | ||||||
|  |           newState.masks = updatedMasks; | ||||||
|  |         } | ||||||
|  |  | ||||||
|         return newState as any; |         return newState as any; | ||||||
|       }, |       }, | ||||||
|     }, |     }, | ||||||
|   | |||||||
| @@ -30,6 +30,9 @@ const nextConfig = { | |||||||
|   images: { |   images: { | ||||||
|     unoptimized: mode === "export", |     unoptimized: mode === "export", | ||||||
|   }, |   }, | ||||||
|  |   experimental: { | ||||||
|  |     forceSwcTransforms: true, | ||||||
|  |   }, | ||||||
| }; | }; | ||||||
|  |  | ||||||
| if (mode !== "export") { | if (mode !== "export") { | ||||||
|   | |||||||
							
								
								
									
										10
									
								
								package.json
									
									
									
									
									
								
							
							
						
						
									
										10
									
								
								package.json
									
									
									
									
									
								
							| @@ -25,12 +25,12 @@ | |||||||
|     "html-to-image": "^1.11.11", |     "html-to-image": "^1.11.11", | ||||||
|     "mermaid": "^10.2.3", |     "mermaid": "^10.2.3", | ||||||
|     "nanoid": "^4.0.2", |     "nanoid": "^4.0.2", | ||||||
|     "next": "^13.4.6", |     "next": "^13.4.9", | ||||||
|     "node-fetch": "^3.3.1", |     "node-fetch": "^3.3.1", | ||||||
|     "react": "^18.2.0", |     "react": "^18.2.0", | ||||||
|     "react-dom": "^18.2.0", |     "react-dom": "^18.2.0", | ||||||
|     "react-markdown": "^8.0.7", |     "react-markdown": "^8.0.7", | ||||||
|     "react-router-dom": "^6.10.0", |     "react-router-dom": "^6.14.1", | ||||||
|     "rehype-highlight": "^6.0.0", |     "rehype-highlight": "^6.0.0", | ||||||
|     "rehype-katex": "^6.0.3", |     "rehype-katex": "^6.0.3", | ||||||
|     "remark-breaks": "^3.0.2", |     "remark-breaks": "^3.0.2", | ||||||
| @@ -42,14 +42,14 @@ | |||||||
|     "zustand": "^4.3.8" |     "zustand": "^4.3.8" | ||||||
|   }, |   }, | ||||||
|   "devDependencies": { |   "devDependencies": { | ||||||
|     "@tauri-apps/cli": "^1.3.1", |     "@tauri-apps/cli": "^1.4.0", | ||||||
|     "@types/node": "^20.3.3", |     "@types/node": "^20.3.3", | ||||||
|     "@types/react": "^18.2.12", |     "@types/react": "^18.2.14", | ||||||
|     "@types/react-dom": "^18.0.11", |     "@types/react-dom": "^18.0.11", | ||||||
|     "@types/react-katex": "^3.0.0", |     "@types/react-katex": "^3.0.0", | ||||||
|     "@types/spark-md5": "^3.0.2", |     "@types/spark-md5": "^3.0.2", | ||||||
|     "cross-env": "^7.0.3", |     "cross-env": "^7.0.3", | ||||||
|     "eslint": "^8.36.0", |     "eslint": "^8.44.0", | ||||||
|     "eslint-config-next": "13.2.3", |     "eslint-config-next": "13.2.3", | ||||||
|     "eslint-config-prettier": "^8.8.0", |     "eslint-config-prettier": "^8.8.0", | ||||||
|     "eslint-plugin-prettier": "^4.2.1", |     "eslint-plugin-prettier": "^4.2.1", | ||||||
|   | |||||||
| @@ -9,7 +9,7 @@ | |||||||
|   }, |   }, | ||||||
|   "package": { |   "package": { | ||||||
|     "productName": "ChatGPT Next Web", |     "productName": "ChatGPT Next Web", | ||||||
|     "version": "2.8.9" |     "version": "2.9.0" | ||||||
|   }, |   }, | ||||||
|   "tauri": { |   "tauri": { | ||||||
|     "allowlist": { |     "allowlist": { | ||||||
|   | |||||||
							
								
								
									
										389
									
								
								yarn.lock
									
									
									
									
									
								
							
							
						
						
									
										389
									
								
								yarn.lock
									
									
									
									
									
								
							| @@ -2,6 +2,11 @@ | |||||||
| # yarn lockfile v1 | # yarn lockfile v1 | ||||||
|  |  | ||||||
|  |  | ||||||
|  | "@aashutoshrathi/word-wrap@^1.2.3": | ||||||
|  |   version "1.2.6" | ||||||
|  |   resolved "https://registry.yarnpkg.com/@aashutoshrathi/word-wrap/-/word-wrap-1.2.6.tgz#bd9154aec9983f77b3a034ecaa015c2e4201f6cf" | ||||||
|  |   integrity sha512-1Yjs2SvM8TflER/OD3cOjhWWOZb58A2t7wpE2S9XfBYTiIl+XFhQG2bjy4Pu1I+EAlCNUzRDYDdFwFYUKvXcIA== | ||||||
|  |  | ||||||
| "@ampproject/remapping@^2.2.0": | "@ampproject/remapping@^2.2.0": | ||||||
|   version "2.2.0" |   version "2.2.0" | ||||||
|   resolved "https://registry.yarnpkg.com/@ampproject/remapping/-/remapping-2.2.0.tgz#56c133824780de3174aed5ab6834f3026790154d" |   resolved "https://registry.yarnpkg.com/@ampproject/remapping/-/remapping-2.2.0.tgz#56c133824780de3174aed5ab6834f3026790154d" | ||||||
| @@ -1012,14 +1017,14 @@ | |||||||
|   resolved "https://registry.yarnpkg.com/@eslint-community/regexpp/-/regexpp-4.5.0.tgz#f6f729b02feee2c749f57e334b7a1b5f40a81724" |   resolved "https://registry.yarnpkg.com/@eslint-community/regexpp/-/regexpp-4.5.0.tgz#f6f729b02feee2c749f57e334b7a1b5f40a81724" | ||||||
|   integrity sha512-vITaYzIcNmjn5tF5uxcZ/ft7/RXGrMUIS9HalWckEOF6ESiwXKoMzAQf2UW0aVd6rnOeExTJVd5hmWXucBKGXQ== |   integrity sha512-vITaYzIcNmjn5tF5uxcZ/ft7/RXGrMUIS9HalWckEOF6ESiwXKoMzAQf2UW0aVd6rnOeExTJVd5hmWXucBKGXQ== | ||||||
|  |  | ||||||
| "@eslint/eslintrc@^2.0.2": | "@eslint/eslintrc@^2.1.0": | ||||||
|   version "2.0.2" |   version "2.1.0" | ||||||
|   resolved "https://registry.yarnpkg.com/@eslint/eslintrc/-/eslintrc-2.0.2.tgz#01575e38707add677cf73ca1589abba8da899a02" |   resolved "https://registry.yarnpkg.com/@eslint/eslintrc/-/eslintrc-2.1.0.tgz#82256f164cc9e0b59669efc19d57f8092706841d" | ||||||
|   integrity sha512-3W4f5tDUra+pA+FzgugqL2pRimUTDJWKr7BINqOpkZrC0uYI0NIc0/JFgBROCU07HR6GieA5m3/rsPIhDmCXTQ== |   integrity sha512-Lj7DECXqIVCqnqjjHMPna4vn6GJcMgul/wuS0je9OZ9gsL0zzDpKPVtcG1HaDVc+9y+qgXneTeUMbCqXJNpH1A== | ||||||
|   dependencies: |   dependencies: | ||||||
|     ajv "^6.12.4" |     ajv "^6.12.4" | ||||||
|     debug "^4.3.2" |     debug "^4.3.2" | ||||||
|     espree "^9.5.1" |     espree "^9.6.0" | ||||||
|     globals "^13.19.0" |     globals "^13.19.0" | ||||||
|     ignore "^5.2.0" |     ignore "^5.2.0" | ||||||
|     import-fresh "^3.2.1" |     import-fresh "^3.2.1" | ||||||
| @@ -1027,10 +1032,10 @@ | |||||||
|     minimatch "^3.1.2" |     minimatch "^3.1.2" | ||||||
|     strip-json-comments "^3.1.1" |     strip-json-comments "^3.1.1" | ||||||
|  |  | ||||||
| "@eslint/js@8.37.0": | "@eslint/js@8.44.0": | ||||||
|   version "8.37.0" |   version "8.44.0" | ||||||
|   resolved "https://registry.yarnpkg.com/@eslint/js/-/js-8.37.0.tgz#cf1b5fa24217fe007f6487a26d765274925efa7d" |   resolved "https://registry.yarnpkg.com/@eslint/js/-/js-8.44.0.tgz#961a5903c74139390478bdc808bcde3fc45ab7af" | ||||||
|   integrity sha512-x5vzdtOOGgFVDCUs81QRB2+liax8rFg3+7hqM+QhBG0/G3F1ZsoYl97UrqgHgQ9KKT7G6c4V+aTUCgu/n22v1A== |   integrity sha512-Ag+9YM4ocKQx9AarydN0KY2j0ErMHNIocPDrVo8zAE44xLTjEtz81OdR68/cydGtk6m6jDb5Za3r2useMzYmSw== | ||||||
|  |  | ||||||
| "@fortaine/fetch-event-source@^3.0.6": | "@fortaine/fetch-event-source@^3.0.6": | ||||||
|   version "3.0.6" |   version "3.0.6" | ||||||
| @@ -1050,10 +1055,10 @@ | |||||||
|     redux "^4.2.1" |     redux "^4.2.1" | ||||||
|     use-memo-one "^1.1.3" |     use-memo-one "^1.1.3" | ||||||
|  |  | ||||||
| "@humanwhocodes/config-array@^0.11.8": | "@humanwhocodes/config-array@^0.11.10": | ||||||
|   version "0.11.8" |   version "0.11.10" | ||||||
|   resolved "https://registry.yarnpkg.com/@humanwhocodes/config-array/-/config-array-0.11.8.tgz#03595ac2075a4dc0f191cc2131de14fbd7d410b9" |   resolved "https://registry.yarnpkg.com/@humanwhocodes/config-array/-/config-array-0.11.10.tgz#5a3ffe32cc9306365fb3fd572596cd602d5e12d2" | ||||||
|   integrity sha512-UybHIJzJnR5Qc/MsD9Kr+RpO2h+/P1GhOwdiLPXK5TWk5sgTdu88bTD9UP+CKbPPh5Rni1u0GjAdYQLemG8g+g== |   integrity sha512-KVVjQmNUepDVGXNuoRRdmmEjruj0KfiGSbS8LVc12LMsWDQzRXJ0qdhN8L8uUigKpfEHRhlaQFY0ib1tnUbNeQ== | ||||||
|   dependencies: |   dependencies: | ||||||
|     "@humanwhocodes/object-schema" "^1.2.1" |     "@humanwhocodes/object-schema" "^1.2.1" | ||||||
|     debug "^4.1.1" |     debug "^4.1.1" | ||||||
| @@ -1126,10 +1131,10 @@ | |||||||
|     "@jridgewell/resolve-uri" "3.1.0" |     "@jridgewell/resolve-uri" "3.1.0" | ||||||
|     "@jridgewell/sourcemap-codec" "1.4.14" |     "@jridgewell/sourcemap-codec" "1.4.14" | ||||||
|  |  | ||||||
| "@next/env@13.4.6": | "@next/env@13.4.9": | ||||||
|   version "13.4.6" |   version "13.4.9" | ||||||
|   resolved "https://registry.yarnpkg.com/@next/env/-/env-13.4.6.tgz#3f2041c7758660d7255707ae4cb9166519113dea" |   resolved "https://registry.yarnpkg.com/@next/env/-/env-13.4.9.tgz#b77759514dd56bfa9791770755a2482f4d6ca93e" | ||||||
|   integrity sha512-nqUxEtvDqFhmV1/awSg0K2XHNwkftNaiUqCYO9e6+MYmqNObpKVl7OgMkGaQ2SZnFx5YqF0t60ZJTlyJIDAijg== |   integrity sha512-vuDRK05BOKfmoBYLNi2cujG2jrYbEod/ubSSyqgmEx9n/W3eZaJQdRNhTfumO+qmq/QTzLurW487n/PM/fHOkw== | ||||||
|  |  | ||||||
| "@next/eslint-plugin-next@13.2.3": | "@next/eslint-plugin-next@13.2.3": | ||||||
|   version "13.2.3" |   version "13.2.3" | ||||||
| @@ -1138,50 +1143,50 @@ | |||||||
|   dependencies: |   dependencies: | ||||||
|     glob "7.1.7" |     glob "7.1.7" | ||||||
|  |  | ||||||
| "@next/swc-darwin-arm64@13.4.6": | "@next/swc-darwin-arm64@13.4.9": | ||||||
|   version "13.4.6" |   version "13.4.9" | ||||||
|   resolved "https://registry.yarnpkg.com/@next/swc-darwin-arm64/-/swc-darwin-arm64-13.4.6.tgz#47485f3deaee6681b4a4036c74bb9c4b728d5ddd" |   resolved "https://registry.yarnpkg.com/@next/swc-darwin-arm64/-/swc-darwin-arm64-13.4.9.tgz#0ed408d444bbc6b0a20f3506a9b4222684585677" | ||||||
|   integrity sha512-ahi6VP98o4HV19rkOXPSUu+ovfHfUxbJQ7VVJ7gL2FnZRr7onEFC1oGQ6NQHpm8CxpIzSSBW79kumlFMOmZVjg== |   integrity sha512-TVzGHpZoVBk3iDsTOQA/R6MGmFp0+17SWXMEWd6zG30AfuELmSSMe2SdPqxwXU0gbpWkJL1KgfLzy5ReN0crqQ== | ||||||
|  |  | ||||||
| "@next/swc-darwin-x64@13.4.6": | "@next/swc-darwin-x64@13.4.9": | ||||||
|   version "13.4.6" |   version "13.4.9" | ||||||
|   resolved "https://registry.yarnpkg.com/@next/swc-darwin-x64/-/swc-darwin-x64-13.4.6.tgz#a6a5b232ec0f2079224fb8ed6bf11dc479af1acf" |   resolved "https://registry.yarnpkg.com/@next/swc-darwin-x64/-/swc-darwin-x64-13.4.9.tgz#a08fccdee68201522fe6618ec81f832084b222f8" | ||||||
|   integrity sha512-13cXxKFsPJIJKzUqrU5XB1mc0xbUgYsRcdH6/rB8c4NMEbWGdtD4QoK9ShN31TZdePpD4k416Ur7p+deMIxnnA== |   integrity sha512-aSfF1fhv28N2e7vrDZ6zOQ+IIthocfaxuMWGReB5GDriF0caTqtHttAvzOMgJgXQtQx6XhyaJMozLTSEXeNN+A== | ||||||
|  |  | ||||||
| "@next/swc-linux-arm64-gnu@13.4.6": | "@next/swc-linux-arm64-gnu@13.4.9": | ||||||
|   version "13.4.6" |   version "13.4.9" | ||||||
|   resolved "https://registry.yarnpkg.com/@next/swc-linux-arm64-gnu/-/swc-linux-arm64-gnu-13.4.6.tgz#2a67144e863d9c45fdbd13c7827370e7f2a28405" |   resolved "https://registry.yarnpkg.com/@next/swc-linux-arm64-gnu/-/swc-linux-arm64-gnu-13.4.9.tgz#1798c2341bb841e96521433eed00892fb24abbd1" | ||||||
|   integrity sha512-Ti+NMHEjTNktCVxNjeWbYgmZvA2AqMMI2AMlzkXsU7W4pXCMhrryAmAIoo+7YdJbsx01JQWYVxGe62G6DoCLaA== |   integrity sha512-JhKoX5ECzYoTVyIy/7KykeO4Z2lVKq7HGQqvAH+Ip9UFn1MOJkOnkPRB7v4nmzqAoY+Je05Aj5wNABR1N18DMg== | ||||||
|  |  | ||||||
| "@next/swc-linux-arm64-musl@13.4.6": | "@next/swc-linux-arm64-musl@13.4.9": | ||||||
|   version "13.4.6" |   version "13.4.9" | ||||||
|   resolved "https://registry.yarnpkg.com/@next/swc-linux-arm64-musl/-/swc-linux-arm64-musl-13.4.6.tgz#5a191ac3575a70598e9e9c6e7264fc0b8a90b2db" |   resolved "https://registry.yarnpkg.com/@next/swc-linux-arm64-musl/-/swc-linux-arm64-musl-13.4.9.tgz#cee04c51610eddd3638ce2499205083656531ea0" | ||||||
|   integrity sha512-OHoC6gO7XfjstgwR+z6UHKlvhqJfyMtNaJidjx3sEcfaDwS7R2lqR5AABi8PuilGgi0BO0O0sCXqLlpp3a0emQ== |   integrity sha512-OOn6zZBIVkm/4j5gkPdGn4yqQt+gmXaLaSjRSO434WplV8vo2YaBNbSHaTM9wJpZTHVDYyjzuIYVEzy9/5RVZw== | ||||||
|  |  | ||||||
| "@next/swc-linux-x64-gnu@13.4.6": | "@next/swc-linux-x64-gnu@13.4.9": | ||||||
|   version "13.4.6" |   version "13.4.9" | ||||||
|   resolved "https://registry.yarnpkg.com/@next/swc-linux-x64-gnu/-/swc-linux-x64-gnu-13.4.6.tgz#d38adf842a8b8f9de492454328fd32a2c53350f3" |   resolved "https://registry.yarnpkg.com/@next/swc-linux-x64-gnu/-/swc-linux-x64-gnu-13.4.9.tgz#1932d0367916adbc6844b244cda1d4182bd11f7a" | ||||||
|   integrity sha512-zHZxPGkUlpfNJCboUrFqwlwEX5vI9LSN70b8XEb0DYzzlrZyCyOi7hwDp/+3Urm9AB7YCAJkgR5Sp1XBVjHdfQ== |   integrity sha512-iA+fJXFPpW0SwGmx/pivVU+2t4zQHNOOAr5T378PfxPHY6JtjV6/0s1vlAJUdIHeVpX98CLp9k5VuKgxiRHUpg== | ||||||
|  |  | ||||||
| "@next/swc-linux-x64-musl@13.4.6": | "@next/swc-linux-x64-musl@13.4.9": | ||||||
|   version "13.4.6" |   version "13.4.9" | ||||||
|   resolved "https://registry.yarnpkg.com/@next/swc-linux-x64-musl/-/swc-linux-x64-musl-13.4.6.tgz#74c745774358b78be7f958e7a8b7d93936cd6ebc" |   resolved "https://registry.yarnpkg.com/@next/swc-linux-x64-musl/-/swc-linux-x64-musl-13.4.9.tgz#a66aa8c1383b16299b72482f6360facd5cde3c7a" | ||||||
|   integrity sha512-K/Y8lYGTwTpv5ME8PSJxwxLolaDRdVy+lOd9yMRMiQE0BLUhtxtCWC9ypV42uh9WpLjoaD0joOsB9Q6mbrSGJg== |   integrity sha512-rlNf2WUtMM+GAQrZ9gMNdSapkVi3koSW3a+dmBVp42lfugWVvnyzca/xJlN48/7AGx8qu62WyO0ya1ikgOxh6A== | ||||||
|  |  | ||||||
| "@next/swc-win32-arm64-msvc@13.4.6": | "@next/swc-win32-arm64-msvc@13.4.9": | ||||||
|   version "13.4.6" |   version "13.4.9" | ||||||
|   resolved "https://registry.yarnpkg.com/@next/swc-win32-arm64-msvc/-/swc-win32-arm64-msvc-13.4.6.tgz#1e1e02c175573e64808fc1a7e8650e3e217f1edc" |   resolved "https://registry.yarnpkg.com/@next/swc-win32-arm64-msvc/-/swc-win32-arm64-msvc-13.4.9.tgz#39482ee856c867177a612a30b6861c75e0736a4a" | ||||||
|   integrity sha512-U6LtxEUrjBL2tpW+Kr1nHCSJWNeIed7U7l5o7FiKGGwGgIlFi4UHDiLI6TQ2lxi20fAU33CsruV3U0GuzMlXIw== |   integrity sha512-5T9ybSugXP77nw03vlgKZxD99AFTHaX8eT1ayKYYnGO9nmYhJjRPxcjU5FyYI+TdkQgEpIcH7p/guPLPR0EbKA== | ||||||
|  |  | ||||||
| "@next/swc-win32-ia32-msvc@13.4.6": | "@next/swc-win32-ia32-msvc@13.4.9": | ||||||
|   version "13.4.6" |   version "13.4.9" | ||||||
|   resolved "https://registry.yarnpkg.com/@next/swc-win32-ia32-msvc/-/swc-win32-ia32-msvc-13.4.6.tgz#2b528ae3ec7f6e727f4f0d81a1015f63da55c7a6" |   resolved "https://registry.yarnpkg.com/@next/swc-win32-ia32-msvc/-/swc-win32-ia32-msvc-13.4.9.tgz#29db85e34b597ade1a918235d16a760a9213c190" | ||||||
|   integrity sha512-eEBeAqpCfhdPSlCZCayjCiyIllVqy4tcqvm1xmg3BgJG0G5ITiMM4Cw2WVeRSgWDJqQGRyyb+q8Y2ltzhXOWsQ== |   integrity sha512-ojZTCt1lP2ucgpoiFgrFj07uq4CZsq4crVXpLGgQfoFq00jPKRPgesuGPaz8lg1yLfvafkU3Jd1i8snKwYR3LA== | ||||||
|  |  | ||||||
| "@next/swc-win32-x64-msvc@13.4.6": | "@next/swc-win32-x64-msvc@13.4.9": | ||||||
|   version "13.4.6" |   version "13.4.9" | ||||||
|   resolved "https://registry.yarnpkg.com/@next/swc-win32-x64-msvc/-/swc-win32-x64-msvc-13.4.6.tgz#38620bd68267ff13e50ecd432f1822eac51382a8" |   resolved "https://registry.yarnpkg.com/@next/swc-win32-x64-msvc/-/swc-win32-x64-msvc-13.4.9.tgz#0c2758164cccd61bc5a1c6cd8284fe66173e4a2b" | ||||||
|   integrity sha512-OrZs94AuO3ZS5tnqlyPRNgfWvboXaDQCi5aXGve3o3C+Sj0ctMUV9+Do+0zMvvLRumR8E0PTWKvtz9n5vzIsWw== |   integrity sha512-QbT03FXRNdpuL+e9pLnu+XajZdm/TtIXVYY4lA9t+9l0fLZbHXDYEKitAqxrOj37o3Vx5ufxiRAniaIebYDCgw== | ||||||
|  |  | ||||||
| "@nodelib/fs.scandir@2.1.5": | "@nodelib/fs.scandir@2.1.5": | ||||||
|   version "2.1.5" |   version "2.1.5" | ||||||
| @@ -1216,10 +1221,10 @@ | |||||||
|     tiny-glob "^0.2.9" |     tiny-glob "^0.2.9" | ||||||
|     tslib "^2.4.0" |     tslib "^2.4.0" | ||||||
|  |  | ||||||
| "@remix-run/router@1.5.0": | "@remix-run/router@1.7.1": | ||||||
|   version "1.5.0" |   version "1.7.1" | ||||||
|   resolved "https://registry.npmmirror.com/@remix-run/router/-/router-1.5.0.tgz#57618e57942a5f0131374a9fdb0167e25a117fdc" |   resolved "https://registry.yarnpkg.com/@remix-run/router/-/router-1.7.1.tgz#fea7ac35ae4014637c130011f59428f618730498" | ||||||
|   integrity sha512-bkUDCp8o1MvFO+qxkODcbhSqRa6P2GXgrGZVpt0dCXNW2HCSCqYI0ZoAqEOSAjRWmmlKcYgFvN4B4S+zo/f8kg== |   integrity sha512-bgVQM4ZJ2u2CM8k1ey70o1ePFXsEzYVZoWghh6WjM8p59jQ7HxzbHW4SbnWFG7V9ig9chLawQxDTZ3xzOF8MkQ== | ||||||
|  |  | ||||||
| "@rushstack/eslint-patch@^1.1.3": | "@rushstack/eslint-patch@^1.1.3": | ||||||
|   version "1.2.0" |   version "1.2.0" | ||||||
| @@ -1339,65 +1344,71 @@ | |||||||
|   dependencies: |   dependencies: | ||||||
|     tslib "^2.4.0" |     tslib "^2.4.0" | ||||||
|  |  | ||||||
| "@tauri-apps/cli-darwin-arm64@1.3.1": | "@tauri-apps/cli-darwin-arm64@1.4.0": | ||||||
|   version "1.3.1" |   version "1.4.0" | ||||||
|   resolved "https://registry.yarnpkg.com/@tauri-apps/cli-darwin-arm64/-/cli-darwin-arm64-1.3.1.tgz#ef0fe290e0a6e3e53fa2cc4f1a72a0c87921427c" |   resolved "https://registry.yarnpkg.com/@tauri-apps/cli-darwin-arm64/-/cli-darwin-arm64-1.4.0.tgz#e76bb8515ae31f03f2cbd440c1a09b237a79b3ac" | ||||||
|   integrity sha512-QlepYVPgOgspcwA/u4kGG4ZUijlXfdRtno00zEy+LxinN/IRXtk+6ErVtsmoLi1ZC9WbuMwzAcsRvqsD+RtNAg== |   integrity sha512-nA/ml0SfUt6/CYLVbHmT500Y+ijqsuv5+s9EBnVXYSLVg9kbPUZJJHluEYK+xKuOj6xzyuT/+rZFMRapmJD3jQ== | ||||||
|  |  | ||||||
| "@tauri-apps/cli-darwin-x64@1.3.1": | "@tauri-apps/cli-darwin-x64@1.4.0": | ||||||
|   version "1.3.1" |   version "1.4.0" | ||||||
|   resolved "https://registry.yarnpkg.com/@tauri-apps/cli-darwin-x64/-/cli-darwin-x64-1.3.1.tgz#4c84ea0f08a5b636b067943d637a38e091a4aad3" |   resolved "https://registry.yarnpkg.com/@tauri-apps/cli-darwin-x64/-/cli-darwin-x64-1.4.0.tgz#dd1472460550d0aa0ec6e699b073be2d77e5b962" | ||||||
|   integrity sha512-fKcAUPVFO3jfDKXCSDGY0MhZFF/wDtx3rgFnogWYu4knk38o9RaqRkvMvqJhLYPuWaEM5h6/z1dRrr9KKCbrVg== |   integrity sha512-ov/F6Zr+dg9B0PtRu65stFo2G0ow2TUlneqYYrkj+vA3n+moWDHfVty0raDjMLQbQt3rv3uayFMXGPMgble9OA== | ||||||
|  |  | ||||||
| "@tauri-apps/cli-linux-arm-gnueabihf@1.3.1": | "@tauri-apps/cli-linux-arm-gnueabihf@1.4.0": | ||||||
|   version "1.3.1" |   version "1.4.0" | ||||||
|   resolved "https://registry.yarnpkg.com/@tauri-apps/cli-linux-arm-gnueabihf/-/cli-linux-arm-gnueabihf-1.3.1.tgz#a4f1b237189e4f8f89cc890e1dc2eec76d4345be" |   resolved "https://registry.yarnpkg.com/@tauri-apps/cli-linux-arm-gnueabihf/-/cli-linux-arm-gnueabihf-1.4.0.tgz#325e90e47d260ba71a499850ce769b5a6bdfd48d" | ||||||
|   integrity sha512-+4H0dv8ltJHYu/Ma1h9ixUPUWka9EjaYa8nJfiMsdCI4LJLNE6cPveE7RmhZ59v9GW1XB108/k083JUC/OtGvA== |   integrity sha512-zwjbiMncycXDV7doovymyKD7sCg53ouAmfgpUqEBOTY3vgBi9TwijyPhJOqoG5vUVWhouNBC08akGmE4dja15g== | ||||||
|  |  | ||||||
| "@tauri-apps/cli-linux-arm64-gnu@1.3.1": | "@tauri-apps/cli-linux-arm64-gnu@1.4.0": | ||||||
|   version "1.3.1" |   version "1.4.0" | ||||||
|   resolved "https://registry.yarnpkg.com/@tauri-apps/cli-linux-arm64-gnu/-/cli-linux-arm64-gnu-1.3.1.tgz#e2391326b64dfe13c7442bdcc13c4988ce5e6df9" |   resolved "https://registry.yarnpkg.com/@tauri-apps/cli-linux-arm64-gnu/-/cli-linux-arm64-gnu-1.4.0.tgz#b5d8f5cba3f8f7c7d44d071681f0ab0a37f2c46e" | ||||||
|   integrity sha512-Pj3odVO1JAxLjYmoXKxcrpj/tPxcA8UP8N06finhNtBtBaxAjrjjxKjO4968KB0BUH7AASIss9EL4Tr0FGnDuw== |   integrity sha512-5MCBcziqXC72mMXnkZU68mutXIR6zavDxopArE2gQtK841IlE06bIgtLi0kUUhlFJk2nhPRgiDgdLbrPlyt7fw== | ||||||
|  |  | ||||||
| "@tauri-apps/cli-linux-arm64-musl@1.3.1": | "@tauri-apps/cli-linux-arm64-musl@1.4.0": | ||||||
|   version "1.3.1" |   version "1.4.0" | ||||||
|   resolved "https://registry.yarnpkg.com/@tauri-apps/cli-linux-arm64-musl/-/cli-linux-arm64-musl-1.3.1.tgz#49354349f80f879ffc6950c0c03c0aea1395efa5" |   resolved "https://registry.yarnpkg.com/@tauri-apps/cli-linux-arm64-musl/-/cli-linux-arm64-musl-1.4.0.tgz#f805ab2ee415875900f4b456f17dc4900d2a7911" | ||||||
|   integrity sha512-tA0JdDLPFaj42UDIVcF2t8V0tSha40rppcmAR/MfQpTCxih6399iMjwihz9kZE1n4b5O4KTq9GliYo50a8zYlQ== |   integrity sha512-7J3pRB6n6uNYgIfCeKt2Oz8J7oSaz2s8GGFRRH2HPxuTHrBNCinzVYm68UhVpJrL3bnGkU0ziVZLsW/iaOGfUg== | ||||||
|  |  | ||||||
| "@tauri-apps/cli-linux-x64-gnu@1.3.1": | "@tauri-apps/cli-linux-x64-gnu@1.4.0": | ||||||
|   version "1.3.1" |   version "1.4.0" | ||||||
|   resolved "https://registry.yarnpkg.com/@tauri-apps/cli-linux-x64-gnu/-/cli-linux-x64-gnu-1.3.1.tgz#9a33ffe9e0d9b1b3825db57cbcfcddeb773682c6" |   resolved "https://registry.yarnpkg.com/@tauri-apps/cli-linux-x64-gnu/-/cli-linux-x64-gnu-1.4.0.tgz#d3f5e69c22420c7ac9e4021b7a94bce2e48cb45d" | ||||||
|   integrity sha512-FDU+Mnvk6NLkqQimcNojdKpMN4Y3W51+SQl+NqG9AFCWprCcSg62yRb84751ujZuf2MGT8HQOfmd0i77F4Q3tQ== |   integrity sha512-Zh5gfAJxOv5AVWxcwuueaQ2vIAhlg0d6nZui6nMyfIJ8dbf3aZQ5ZzP38sYow5h/fbvgL+3GSQxZRBIa3c2E1w== | ||||||
|  |  | ||||||
| "@tauri-apps/cli-linux-x64-musl@1.3.1": | "@tauri-apps/cli-linux-x64-musl@1.4.0": | ||||||
|   version "1.3.1" |   version "1.4.0" | ||||||
|   resolved "https://registry.yarnpkg.com/@tauri-apps/cli-linux-x64-musl/-/cli-linux-x64-musl-1.3.1.tgz#5283731e894c17bc070c499e73145cfe2633ef21" |   resolved "https://registry.yarnpkg.com/@tauri-apps/cli-linux-x64-musl/-/cli-linux-x64-musl-1.4.0.tgz#2e7f718272ffdd9ace80f57a35023ba0c74767ad" | ||||||
|   integrity sha512-MpO3akXFmK8lZYEbyQRDfhdxz1JkTBhonVuz5rRqxwA7gnGWHa1aF1+/2zsy7ahjB2tQ9x8DDFDMdVE20o9HrA== |   integrity sha512-OLAYoICU3FaYiTdBsI+lQTKnDHeMmFMXIApN0M+xGiOkoIOQcV9CConMPjgmJQ867+NHRNgUGlvBEAh9CiJodQ== | ||||||
|  |  | ||||||
| "@tauri-apps/cli-win32-ia32-msvc@1.3.1": | "@tauri-apps/cli-win32-arm64-msvc@1.4.0": | ||||||
|   version "1.3.1" |   version "1.4.0" | ||||||
|   resolved "https://registry.yarnpkg.com/@tauri-apps/cli-win32-ia32-msvc/-/cli-win32-ia32-msvc-1.3.1.tgz#f31538abfd94f27ade1f17d01f30da6be1660c6f" |   resolved "https://registry.yarnpkg.com/@tauri-apps/cli-win32-arm64-msvc/-/cli-win32-arm64-msvc-1.4.0.tgz#85cdb52a06feb92da785def4d02512099464525e" | ||||||
|   integrity sha512-9Boeo3K5sOrSBAZBuYyGkpV2RfnGQz3ZhGJt4hE6P+HxRd62lS6+qDKAiw1GmkZ0l1drc2INWrNeT50gwOKwIQ== |   integrity sha512-gZ05GENFbI6CB5MlOUsLlU0kZ9UtHn9riYtSXKT6MYs8HSPRffPHaHSL0WxsJweWh9nR5Hgh/TUU8uW3sYCzCg== | ||||||
|  |  | ||||||
| "@tauri-apps/cli-win32-x64-msvc@1.3.1": | "@tauri-apps/cli-win32-ia32-msvc@1.4.0": | ||||||
|   version "1.3.1" |   version "1.4.0" | ||||||
|   resolved "https://registry.yarnpkg.com/@tauri-apps/cli-win32-x64-msvc/-/cli-win32-x64-msvc-1.3.1.tgz#1eb09d55b99916a3cd84cb91c75ef906db67d35d" |   resolved "https://registry.yarnpkg.com/@tauri-apps/cli-win32-ia32-msvc/-/cli-win32-ia32-msvc-1.4.0.tgz#0b7c921204058215aec9a5a00f735e73909bd330" | ||||||
|   integrity sha512-wMrTo91hUu5CdpbElrOmcZEoJR4aooTG+fbtcc87SMyPGQy1Ux62b+ZdwLvL1sVTxnIm//7v6QLRIWGiUjCPwA== |   integrity sha512-JsetT/lTx/Zq98eo8T5CiRyF1nKeX04RO8JlJrI3ZOYsZpp/A5RJvMd/szQ17iOzwiHdge+tx7k2jHysR6oBlQ== | ||||||
|  |  | ||||||
| "@tauri-apps/cli@^1.3.1": | "@tauri-apps/cli-win32-x64-msvc@1.4.0": | ||||||
|   version "1.3.1" |   version "1.4.0" | ||||||
|   resolved "https://registry.yarnpkg.com/@tauri-apps/cli/-/cli-1.3.1.tgz#4c5259bf1f9c97084dd016e6b34dca53de380e24" |   resolved "https://registry.yarnpkg.com/@tauri-apps/cli-win32-x64-msvc/-/cli-win32-x64-msvc-1.4.0.tgz#23abe3f08c0df89111c29602f91c21a23577b908" | ||||||
|   integrity sha512-o4I0JujdITsVRm3/0spfJX7FcKYrYV1DXJqzlWIn6IY25/RltjU6qbC1TPgVww3RsRX63jyVUTcWpj5wwFl+EQ== |   integrity sha512-z8Olcnwp5aYhzqUAarFjqF+oELCjuYWnB2HAJHlfsYNfDCAORY5kct3Fklz8PSsubC3U2EugWn8n42DwnThurg== | ||||||
|  |  | ||||||
|  | "@tauri-apps/cli@^1.4.0": | ||||||
|  |   version "1.4.0" | ||||||
|  |   resolved "https://registry.yarnpkg.com/@tauri-apps/cli/-/cli-1.4.0.tgz#72732ae61e6b7d097e44a8a2ef5f211b2d01d98b" | ||||||
|  |   integrity sha512-VXYr2i2iVFl98etQSQsqLzXgX96bnWiNZd1YADgatqwy/qecbd6Kl5ZAPB5R4ynsgE8A1gU7Fbzh7dCEQYFfmA== | ||||||
|   optionalDependencies: |   optionalDependencies: | ||||||
|     "@tauri-apps/cli-darwin-arm64" "1.3.1" |     "@tauri-apps/cli-darwin-arm64" "1.4.0" | ||||||
|     "@tauri-apps/cli-darwin-x64" "1.3.1" |     "@tauri-apps/cli-darwin-x64" "1.4.0" | ||||||
|     "@tauri-apps/cli-linux-arm-gnueabihf" "1.3.1" |     "@tauri-apps/cli-linux-arm-gnueabihf" "1.4.0" | ||||||
|     "@tauri-apps/cli-linux-arm64-gnu" "1.3.1" |     "@tauri-apps/cli-linux-arm64-gnu" "1.4.0" | ||||||
|     "@tauri-apps/cli-linux-arm64-musl" "1.3.1" |     "@tauri-apps/cli-linux-arm64-musl" "1.4.0" | ||||||
|     "@tauri-apps/cli-linux-x64-gnu" "1.3.1" |     "@tauri-apps/cli-linux-x64-gnu" "1.4.0" | ||||||
|     "@tauri-apps/cli-linux-x64-musl" "1.3.1" |     "@tauri-apps/cli-linux-x64-musl" "1.4.0" | ||||||
|     "@tauri-apps/cli-win32-ia32-msvc" "1.3.1" |     "@tauri-apps/cli-win32-arm64-msvc" "1.4.0" | ||||||
|     "@tauri-apps/cli-win32-x64-msvc" "1.3.1" |     "@tauri-apps/cli-win32-ia32-msvc" "1.4.0" | ||||||
|  |     "@tauri-apps/cli-win32-x64-msvc" "1.4.0" | ||||||
|  |  | ||||||
| "@trysound/sax@0.2.0": | "@trysound/sax@0.2.0": | ||||||
|   version "0.2.0" |   version "0.2.0" | ||||||
| @@ -1508,10 +1519,10 @@ | |||||||
|   dependencies: |   dependencies: | ||||||
|     "@types/react" "*" |     "@types/react" "*" | ||||||
|  |  | ||||||
| "@types/react@*", "@types/react@^18.2.12": | "@types/react@*", "@types/react@^18.2.14": | ||||||
|   version "18.2.12" |   version "18.2.14" | ||||||
|   resolved "https://registry.yarnpkg.com/@types/react/-/react-18.2.12.tgz#95d584338610b78bb9ba0415e3180fb03debdf97" |   resolved "https://registry.yarnpkg.com/@types/react/-/react-18.2.14.tgz#fa7a6fecf1ce35ca94e74874f70c56ce88f7a127" | ||||||
|   integrity sha512-ndmBMLCgn38v3SntMeoJaIrO6tGHYKMEBohCUmw8HoLLQdRMOIGXfeYaBTLe2lsFaSB3MOK1VXscYFnmLtTSmw== |   integrity sha512-A0zjq+QN/O0Kpe30hA1GidzyFjatVvrpIvWLxD+xv67Vt91TWWgco9IvrJBkeyHm1trGaFS/FSGqPlhyeZRm0g== | ||||||
|   dependencies: |   dependencies: | ||||||
|     "@types/prop-types" "*" |     "@types/prop-types" "*" | ||||||
|     "@types/scheduler" "*" |     "@types/scheduler" "*" | ||||||
| @@ -1732,10 +1743,10 @@ acorn@^8.7.1, acorn@^8.8.2: | |||||||
|   resolved "https://registry.npmmirror.com/acorn/-/acorn-8.9.0.tgz#78a16e3b2bcc198c10822786fa6679e245db5b59" |   resolved "https://registry.npmmirror.com/acorn/-/acorn-8.9.0.tgz#78a16e3b2bcc198c10822786fa6679e245db5b59" | ||||||
|   integrity sha512-jaVNAFBHNLXspO543WnNNPZFRtavh3skAkITqD0/2aeMkKZTN+254PyhwxFYrk3vQ1xfY+2wbesJMs/JC8/PwQ== |   integrity sha512-jaVNAFBHNLXspO543WnNNPZFRtavh3skAkITqD0/2aeMkKZTN+254PyhwxFYrk3vQ1xfY+2wbesJMs/JC8/PwQ== | ||||||
|  |  | ||||||
| acorn@^8.8.0: | acorn@^8.9.0: | ||||||
|   version "8.8.2" |   version "8.10.0" | ||||||
|   resolved "https://registry.yarnpkg.com/acorn/-/acorn-8.8.2.tgz#1b2f25db02af965399b9776b0c2c391276d37c4a" |   resolved "https://registry.yarnpkg.com/acorn/-/acorn-8.10.0.tgz#8be5b3907a67221a81ab23c7889c4c5526b62ec5" | ||||||
|   integrity sha512-xjIYgE8HBrkpd/sJqOGNspf8uHG+NOHGOw6a/Urj8taM2EXfdNAH2oFcPeIFfsv3+kz/mJrS5VuMqbNLjCa2vw== |   integrity sha512-F0SAmZ8iUtS//m8DmCTA0jlh6TDKkHQyK6xc6V4KDTyZKA9dnvX9/3sRTVQrWm79glUAZbnmmNcdYwUIHWVybw== | ||||||
|  |  | ||||||
| aggregate-error@^3.0.0: | aggregate-error@^3.0.0: | ||||||
|   version "3.1.0" |   version "3.1.0" | ||||||
| @@ -2007,12 +2018,7 @@ camelcase@^6.2.0: | |||||||
|   resolved "https://registry.yarnpkg.com/camelcase/-/camelcase-6.3.0.tgz#5685b95eb209ac9c0c177467778c9c84df58ba9a" |   resolved "https://registry.yarnpkg.com/camelcase/-/camelcase-6.3.0.tgz#5685b95eb209ac9c0c177467778c9c84df58ba9a" | ||||||
|   integrity sha512-Gmy6FhYlCY7uOElZUSbxo2UCDH8owEk996gkbrpsgGtrJLM3J7jGxl9Ic7Qwwj4ivOE5AWZWRMecDdF7hqGjFA== |   integrity sha512-Gmy6FhYlCY7uOElZUSbxo2UCDH8owEk996gkbrpsgGtrJLM3J7jGxl9Ic7Qwwj4ivOE5AWZWRMecDdF7hqGjFA== | ||||||
|  |  | ||||||
| caniuse-lite@^1.0.30001406, caniuse-lite@^1.0.30001449: | caniuse-lite@^1.0.30001406, caniuse-lite@^1.0.30001449, caniuse-lite@^1.0.30001503: | ||||||
|   version "1.0.30001473" |  | ||||||
|   resolved "https://registry.yarnpkg.com/caniuse-lite/-/caniuse-lite-1.0.30001473.tgz#3859898b3cab65fc8905bb923df36ad35058153c" |  | ||||||
|   integrity sha512-ewDad7+D2vlyy+E4UJuVfiBsU69IL+8oVmTuZnH5Q6CIUbxNfI50uVpRHbUPDD6SUaN2o0Lh4DhTrvLG/Tn1yg== |  | ||||||
|  |  | ||||||
| caniuse-lite@^1.0.30001503: |  | ||||||
|   version "1.0.30001509" |   version "1.0.30001509" | ||||||
|   resolved "https://registry.npmmirror.com/caniuse-lite/-/caniuse-lite-1.0.30001509.tgz#2b7ad5265392d6d2de25cd8776d1ab3899570d14" |   resolved "https://registry.npmmirror.com/caniuse-lite/-/caniuse-lite-1.0.30001509.tgz#2b7ad5265392d6d2de25cd8776d1ab3899570d14" | ||||||
|   integrity sha512-2uDDk+TRiTX5hMcUYT/7CSyzMZxjfGu0vAUjS2g0LSD8UoXOv0LtpH4LxGMemsiPq6LCVIUjNwVM0erkOkGCDA== |   integrity sha512-2uDDk+TRiTX5hMcUYT/7CSyzMZxjfGu0vAUjS2g0LSD8UoXOv0LtpH4LxGMemsiPq6LCVIUjNwVM0erkOkGCDA== | ||||||
| @@ -2999,29 +3005,29 @@ eslint-scope@5.1.1: | |||||||
|     esrecurse "^4.3.0" |     esrecurse "^4.3.0" | ||||||
|     estraverse "^4.1.1" |     estraverse "^4.1.1" | ||||||
|  |  | ||||||
| eslint-scope@^7.1.1: | eslint-scope@^7.2.0: | ||||||
|   version "7.1.1" |   version "7.2.0" | ||||||
|   resolved "https://registry.yarnpkg.com/eslint-scope/-/eslint-scope-7.1.1.tgz#fff34894c2f65e5226d3041ac480b4513a163642" |   resolved "https://registry.yarnpkg.com/eslint-scope/-/eslint-scope-7.2.0.tgz#f21ebdafda02352f103634b96dd47d9f81ca117b" | ||||||
|   integrity sha512-QKQM/UXpIiHcLqJ5AOyIW7XZmzjkzQXYE54n1++wb0u9V/abW3l9uQnxX8Z5Xd18xyKIMTUAyQ0k1e8pz6LUrw== |   integrity sha512-DYj5deGlHBfMt15J7rdtyKNq/Nqlv5KfU4iodrQ019XESsRnwXH9KAE0y3cwtUHDo2ob7CypAnCqefh6vioWRw== | ||||||
|   dependencies: |   dependencies: | ||||||
|     esrecurse "^4.3.0" |     esrecurse "^4.3.0" | ||||||
|     estraverse "^5.2.0" |     estraverse "^5.2.0" | ||||||
|  |  | ||||||
| eslint-visitor-keys@^3.3.0, eslint-visitor-keys@^3.4.0: | eslint-visitor-keys@^3.3.0, eslint-visitor-keys@^3.4.1: | ||||||
|   version "3.4.0" |   version "3.4.1" | ||||||
|   resolved "https://registry.yarnpkg.com/eslint-visitor-keys/-/eslint-visitor-keys-3.4.0.tgz#c7f0f956124ce677047ddbc192a68f999454dedc" |   resolved "https://registry.yarnpkg.com/eslint-visitor-keys/-/eslint-visitor-keys-3.4.1.tgz#c22c48f48942d08ca824cc526211ae400478a994" | ||||||
|   integrity sha512-HPpKPUBQcAsZOsHAFwTtIKcYlCje62XB7SEAcxjtmW6TD1WVpkS6i6/hOVtTZIl4zGj/mBqpFVGvaDneik+VoQ== |   integrity sha512-pZnmmLwYzf+kWaM/Qgrvpen51upAktaaiI01nsJD/Yr3lMOdNtq0cxkrrg16w64VtisN6okbs7Q8AfGqj4c9fA== | ||||||
|  |  | ||||||
| eslint@^8.36.0: | eslint@^8.44.0: | ||||||
|   version "8.37.0" |   version "8.44.0" | ||||||
|   resolved "https://registry.yarnpkg.com/eslint/-/eslint-8.37.0.tgz#1f660ef2ce49a0bfdec0b0d698e0b8b627287412" |   resolved "https://registry.yarnpkg.com/eslint/-/eslint-8.44.0.tgz#51246e3889b259bbcd1d7d736a0c10add4f0e500" | ||||||
|   integrity sha512-NU3Ps9nI05GUoVMxcZx1J8CNR6xOvUT4jAUMH5+z8lpp3aEdPVCImKw6PWG4PY+Vfkpr+jvMpxs/qoE7wq0sPw== |   integrity sha512-0wpHoUbDUHgNCyvFB5aXLiQVfK9B0at6gUvzy83k4kAsQ/u769TQDX6iKC+aO4upIHO9WSaA3QoXYQDHbNwf1A== | ||||||
|   dependencies: |   dependencies: | ||||||
|     "@eslint-community/eslint-utils" "^4.2.0" |     "@eslint-community/eslint-utils" "^4.2.0" | ||||||
|     "@eslint-community/regexpp" "^4.4.0" |     "@eslint-community/regexpp" "^4.4.0" | ||||||
|     "@eslint/eslintrc" "^2.0.2" |     "@eslint/eslintrc" "^2.1.0" | ||||||
|     "@eslint/js" "8.37.0" |     "@eslint/js" "8.44.0" | ||||||
|     "@humanwhocodes/config-array" "^0.11.8" |     "@humanwhocodes/config-array" "^0.11.10" | ||||||
|     "@humanwhocodes/module-importer" "^1.0.1" |     "@humanwhocodes/module-importer" "^1.0.1" | ||||||
|     "@nodelib/fs.walk" "^1.2.8" |     "@nodelib/fs.walk" "^1.2.8" | ||||||
|     ajv "^6.10.0" |     ajv "^6.10.0" | ||||||
| @@ -3030,9 +3036,9 @@ eslint@^8.36.0: | |||||||
|     debug "^4.3.2" |     debug "^4.3.2" | ||||||
|     doctrine "^3.0.0" |     doctrine "^3.0.0" | ||||||
|     escape-string-regexp "^4.0.0" |     escape-string-regexp "^4.0.0" | ||||||
|     eslint-scope "^7.1.1" |     eslint-scope "^7.2.0" | ||||||
|     eslint-visitor-keys "^3.4.0" |     eslint-visitor-keys "^3.4.1" | ||||||
|     espree "^9.5.1" |     espree "^9.6.0" | ||||||
|     esquery "^1.4.2" |     esquery "^1.4.2" | ||||||
|     esutils "^2.0.2" |     esutils "^2.0.2" | ||||||
|     fast-deep-equal "^3.1.3" |     fast-deep-equal "^3.1.3" | ||||||
| @@ -3040,32 +3046,31 @@ eslint@^8.36.0: | |||||||
|     find-up "^5.0.0" |     find-up "^5.0.0" | ||||||
|     glob-parent "^6.0.2" |     glob-parent "^6.0.2" | ||||||
|     globals "^13.19.0" |     globals "^13.19.0" | ||||||
|     grapheme-splitter "^1.0.4" |     graphemer "^1.4.0" | ||||||
|     ignore "^5.2.0" |     ignore "^5.2.0" | ||||||
|     import-fresh "^3.0.0" |     import-fresh "^3.0.0" | ||||||
|     imurmurhash "^0.1.4" |     imurmurhash "^0.1.4" | ||||||
|     is-glob "^4.0.0" |     is-glob "^4.0.0" | ||||||
|     is-path-inside "^3.0.3" |     is-path-inside "^3.0.3" | ||||||
|     js-sdsl "^4.1.4" |  | ||||||
|     js-yaml "^4.1.0" |     js-yaml "^4.1.0" | ||||||
|     json-stable-stringify-without-jsonify "^1.0.1" |     json-stable-stringify-without-jsonify "^1.0.1" | ||||||
|     levn "^0.4.1" |     levn "^0.4.1" | ||||||
|     lodash.merge "^4.6.2" |     lodash.merge "^4.6.2" | ||||||
|     minimatch "^3.1.2" |     minimatch "^3.1.2" | ||||||
|     natural-compare "^1.4.0" |     natural-compare "^1.4.0" | ||||||
|     optionator "^0.9.1" |     optionator "^0.9.3" | ||||||
|     strip-ansi "^6.0.1" |     strip-ansi "^6.0.1" | ||||||
|     strip-json-comments "^3.1.0" |     strip-json-comments "^3.1.0" | ||||||
|     text-table "^0.2.0" |     text-table "^0.2.0" | ||||||
|  |  | ||||||
| espree@^9.5.1: | espree@^9.6.0: | ||||||
|   version "9.5.1" |   version "9.6.0" | ||||||
|   resolved "https://registry.yarnpkg.com/espree/-/espree-9.5.1.tgz#4f26a4d5f18905bf4f2e0bd99002aab807e96dd4" |   resolved "https://registry.yarnpkg.com/espree/-/espree-9.6.0.tgz#80869754b1c6560f32e3b6929194a3fe07c5b82f" | ||||||
|   integrity sha512-5yxtHSZXRSW5pvv3hAlXM5+/Oswi1AUFqBmbibKb5s6bp3rGIDkyXU6xCoyuuLhijr4SFwPrXRoZjz0AZDN9tg== |   integrity sha512-1FH/IiruXZ84tpUlm0aCUEwMl2Ho5ilqVh0VvQXw+byAz/4SAciyHLlfmL5WYqsvD38oymdUwBss0LtK8m4s/A== | ||||||
|   dependencies: |   dependencies: | ||||||
|     acorn "^8.8.0" |     acorn "^8.9.0" | ||||||
|     acorn-jsx "^5.3.2" |     acorn-jsx "^5.3.2" | ||||||
|     eslint-visitor-keys "^3.4.0" |     eslint-visitor-keys "^3.4.1" | ||||||
|  |  | ||||||
| esquery@^1.4.2: | esquery@^1.4.2: | ||||||
|   version "1.5.0" |   version "1.5.0" | ||||||
| @@ -3402,10 +3407,10 @@ graceful-fs@^4.1.2, graceful-fs@^4.2.4, graceful-fs@^4.2.9: | |||||||
|   resolved "https://registry.yarnpkg.com/graceful-fs/-/graceful-fs-4.2.11.tgz#4183e4e8bf08bb6e05bbb2f7d2e0c8f712ca40e3" |   resolved "https://registry.yarnpkg.com/graceful-fs/-/graceful-fs-4.2.11.tgz#4183e4e8bf08bb6e05bbb2f7d2e0c8f712ca40e3" | ||||||
|   integrity sha512-RbJ5/jmFcNNCcDV5o9eTnBLJ/HszWV0P73bc+Ff4nS/rJj+YaS6IGyiOL0VoBYX+l1Wrl3k63h/KrH+nhJ0XvQ== |   integrity sha512-RbJ5/jmFcNNCcDV5o9eTnBLJ/HszWV0P73bc+Ff4nS/rJj+YaS6IGyiOL0VoBYX+l1Wrl3k63h/KrH+nhJ0XvQ== | ||||||
|  |  | ||||||
| grapheme-splitter@^1.0.4: | graphemer@^1.4.0: | ||||||
|   version "1.0.4" |   version "1.4.0" | ||||||
|   resolved "https://registry.yarnpkg.com/grapheme-splitter/-/grapheme-splitter-1.0.4.tgz#9cf3a665c6247479896834af35cf1dbb4400767e" |   resolved "https://registry.yarnpkg.com/graphemer/-/graphemer-1.4.0.tgz#fb2f1d55e0e3a1849aeffc90c4fa0dd53a0e66c6" | ||||||
|   integrity sha512-bzh50DW9kTPM00T8y4o8vQg89Di9oLJVLW/KaOGIXJWP/iqCN6WKYkbNOF04vFLJhwcpYUh9ydh/+5vpOqV4YQ== |   integrity sha512-EtKwoO6kxCL9WO5xipiHTZlSzBm7WLT627TqC/uVRd0HKmq8NXyebnNYxDoBi7wt8eTWrUrKXCOVaFq9x1kgag== | ||||||
|  |  | ||||||
| has-bigints@^1.0.1, has-bigints@^1.0.2: | has-bigints@^1.0.1, has-bigints@^1.0.2: | ||||||
|   version "1.0.2" |   version "1.0.2" | ||||||
| @@ -3858,11 +3863,6 @@ jest-worker@^27.4.5: | |||||||
|     merge-stream "^2.0.0" |     merge-stream "^2.0.0" | ||||||
|     supports-color "^8.0.0" |     supports-color "^8.0.0" | ||||||
|  |  | ||||||
| js-sdsl@^4.1.4: |  | ||||||
|   version "4.4.0" |  | ||||||
|   resolved "https://registry.yarnpkg.com/js-sdsl/-/js-sdsl-4.4.0.tgz#8b437dbe642daa95760400b602378ed8ffea8430" |  | ||||||
|   integrity sha512-FfVSdx6pJ41Oa+CF7RDaFmTnCaFhua+SNYQX74riGOpl96x+2jQCqEfQ2bnXu/5DPCqlRuiqyvTJM0Qjz26IVg== |  | ||||||
|  |  | ||||||
| "js-tokens@^3.0.0 || ^4.0.0", js-tokens@^4.0.0: | "js-tokens@^3.0.0 || ^4.0.0", js-tokens@^4.0.0: | ||||||
|   version "4.0.0" |   version "4.0.0" | ||||||
|   resolved "https://registry.yarnpkg.com/js-tokens/-/js-tokens-4.0.0.tgz#19203fb59991df98e3a287050d4647cdeaf32499" |   resolved "https://registry.yarnpkg.com/js-tokens/-/js-tokens-4.0.0.tgz#19203fb59991df98e3a287050d4647cdeaf32499" | ||||||
| @@ -4654,12 +4654,12 @@ neo-async@^2.6.2: | |||||||
|   resolved "https://registry.npmmirror.com/neo-async/-/neo-async-2.6.2.tgz#b4aafb93e3aeb2d8174ca53cf163ab7d7308305f" |   resolved "https://registry.npmmirror.com/neo-async/-/neo-async-2.6.2.tgz#b4aafb93e3aeb2d8174ca53cf163ab7d7308305f" | ||||||
|   integrity sha512-Yd3UES5mWCSqR+qNT93S3UoYUkqAZ9lLg8a7g9rimsWmYGK8cVToA4/sF3RrshdyV3sAGMXVUmpMYOw+dLpOuw== |   integrity sha512-Yd3UES5mWCSqR+qNT93S3UoYUkqAZ9lLg8a7g9rimsWmYGK8cVToA4/sF3RrshdyV3sAGMXVUmpMYOw+dLpOuw== | ||||||
|  |  | ||||||
| next@^13.4.6: | next@^13.4.9: | ||||||
|   version "13.4.6" |   version "13.4.9" | ||||||
|   resolved "https://registry.yarnpkg.com/next/-/next-13.4.6.tgz#ebe52f5c74d60176d45b45e73f25a51103713ea4" |   resolved "https://registry.yarnpkg.com/next/-/next-13.4.9.tgz#473de5997cb4c5d7a4fb195f566952a1cbffbeba" | ||||||
|   integrity sha512-sjVqjxU+U2aXZnYt4Ud6CTLNNwWjdSfMgemGpIQJcN3Z7Jni9xRWbR0ie5fQzCg87aLqQVhKA2ud2gPoqJ9lGw== |   integrity sha512-vtefFm/BWIi/eWOqf1GsmKG3cjKw1k3LjuefKRcL3iiLl3zWzFdPG3as6xtxrGO6gwTzzaO1ktL4oiHt/uvTjA== | ||||||
|   dependencies: |   dependencies: | ||||||
|     "@next/env" "13.4.6" |     "@next/env" "13.4.9" | ||||||
|     "@swc/helpers" "0.5.1" |     "@swc/helpers" "0.5.1" | ||||||
|     busboy "1.6.0" |     busboy "1.6.0" | ||||||
|     caniuse-lite "^1.0.30001406" |     caniuse-lite "^1.0.30001406" | ||||||
| @@ -4668,15 +4668,15 @@ next@^13.4.6: | |||||||
|     watchpack "2.4.0" |     watchpack "2.4.0" | ||||||
|     zod "3.21.4" |     zod "3.21.4" | ||||||
|   optionalDependencies: |   optionalDependencies: | ||||||
|     "@next/swc-darwin-arm64" "13.4.6" |     "@next/swc-darwin-arm64" "13.4.9" | ||||||
|     "@next/swc-darwin-x64" "13.4.6" |     "@next/swc-darwin-x64" "13.4.9" | ||||||
|     "@next/swc-linux-arm64-gnu" "13.4.6" |     "@next/swc-linux-arm64-gnu" "13.4.9" | ||||||
|     "@next/swc-linux-arm64-musl" "13.4.6" |     "@next/swc-linux-arm64-musl" "13.4.9" | ||||||
|     "@next/swc-linux-x64-gnu" "13.4.6" |     "@next/swc-linux-x64-gnu" "13.4.9" | ||||||
|     "@next/swc-linux-x64-musl" "13.4.6" |     "@next/swc-linux-x64-musl" "13.4.9" | ||||||
|     "@next/swc-win32-arm64-msvc" "13.4.6" |     "@next/swc-win32-arm64-msvc" "13.4.9" | ||||||
|     "@next/swc-win32-ia32-msvc" "13.4.6" |     "@next/swc-win32-ia32-msvc" "13.4.9" | ||||||
|     "@next/swc-win32-x64-msvc" "13.4.6" |     "@next/swc-win32-x64-msvc" "13.4.9" | ||||||
|  |  | ||||||
| node-domexception@^1.0.0: | node-domexception@^1.0.0: | ||||||
|   version "1.0.0" |   version "1.0.0" | ||||||
| @@ -4824,17 +4824,17 @@ open@^8.4.0: | |||||||
|     is-docker "^2.1.1" |     is-docker "^2.1.1" | ||||||
|     is-wsl "^2.2.0" |     is-wsl "^2.2.0" | ||||||
|  |  | ||||||
| optionator@^0.9.1: | optionator@^0.9.3: | ||||||
|   version "0.9.1" |   version "0.9.3" | ||||||
|   resolved "https://registry.yarnpkg.com/optionator/-/optionator-0.9.1.tgz#4f236a6373dae0566a6d43e1326674f50c291499" |   resolved "https://registry.yarnpkg.com/optionator/-/optionator-0.9.3.tgz#007397d44ed1872fdc6ed31360190f81814e2c64" | ||||||
|   integrity sha512-74RlY5FCnhq4jRxVUPKDaRwrVNXMqsGsiW6AJw4XK8hmtm10wC0ypZBLw5IIp85NZMr91+qd1RvvENwg7jjRFw== |   integrity sha512-JjCoypp+jKn1ttEFExxhetCKeJt9zhAgAve5FXHixTvFDW/5aEktX9bufBKLRRMdU7bNtpLfcGu94B3cdEJgjg== | ||||||
|   dependencies: |   dependencies: | ||||||
|  |     "@aashutoshrathi/word-wrap" "^1.2.3" | ||||||
|     deep-is "^0.1.3" |     deep-is "^0.1.3" | ||||||
|     fast-levenshtein "^2.0.6" |     fast-levenshtein "^2.0.6" | ||||||
|     levn "^0.4.1" |     levn "^0.4.1" | ||||||
|     prelude-ls "^1.2.1" |     prelude-ls "^1.2.1" | ||||||
|     type-check "^0.4.0" |     type-check "^0.4.0" | ||||||
|     word-wrap "^1.2.3" |  | ||||||
|  |  | ||||||
| p-limit@^3.0.2: | p-limit@^3.0.2: | ||||||
|   version "3.1.0" |   version "3.1.0" | ||||||
| @@ -5039,20 +5039,20 @@ react-redux@^8.1.1: | |||||||
|     react-is "^18.0.0" |     react-is "^18.0.0" | ||||||
|     use-sync-external-store "^1.0.0" |     use-sync-external-store "^1.0.0" | ||||||
|  |  | ||||||
| react-router-dom@^6.10.0: | react-router-dom@^6.14.1: | ||||||
|   version "6.10.0" |   version "6.14.1" | ||||||
|   resolved "https://registry.npmmirror.com/react-router-dom/-/react-router-dom-6.10.0.tgz#090ddc5c84dc41b583ce08468c4007c84245f61f" |   resolved "https://registry.yarnpkg.com/react-router-dom/-/react-router-dom-6.14.1.tgz#0ad7ba7abdf75baa61169d49f096f0494907a36f" | ||||||
|   integrity sha512-E5dfxRPuXKJqzwSe/qGcqdwa18QiWC6f3H3cWXM24qj4N0/beCIf/CWTipop2xm7mR0RCS99NnaqPNjHtrAzCg== |   integrity sha512-ssF6M5UkQjHK70fgukCJyjlda0Dgono2QGwqGvuk7D+EDGHdacEN3Yke2LTMjkrpHuFwBfDFsEjGVXBDmL+bWw== | ||||||
|   dependencies: |   dependencies: | ||||||
|     "@remix-run/router" "1.5.0" |     "@remix-run/router" "1.7.1" | ||||||
|     react-router "6.10.0" |     react-router "6.14.1" | ||||||
|  |  | ||||||
| react-router@6.10.0: | react-router@6.14.1: | ||||||
|   version "6.10.0" |   version "6.14.1" | ||||||
|   resolved "https://registry.npmmirror.com/react-router/-/react-router-6.10.0.tgz#230f824fde9dd0270781b5cb497912de32c0a971" |   resolved "https://registry.yarnpkg.com/react-router/-/react-router-6.14.1.tgz#5e82bcdabf21add859dc04b1859f91066b3a5810" | ||||||
|   integrity sha512-Nrg0BWpQqrC3ZFFkyewrflCud9dio9ME3ojHCF/WLsprJVzkq3q3UeEhMCAW1dobjeGbWgjNn/PVF6m46ANxXQ== |   integrity sha512-U4PfgvG55LdvbQjg5Y9QRWyVxIdO1LlpYT7x+tMAxd9/vmiPuJhIwdxZuIQLN/9e3O4KFDHYfR9gzGeYMasW8g== | ||||||
|   dependencies: |   dependencies: | ||||||
|     "@remix-run/router" "1.5.0" |     "@remix-run/router" "1.7.1" | ||||||
|  |  | ||||||
| react@^18.2.0: | react@^18.2.0: | ||||||
|   version "18.2.0" |   version "18.2.0" | ||||||
| @@ -5322,14 +5322,14 @@ schema-utils@^3.1.1, schema-utils@^3.2.0: | |||||||
|     ajv-keywords "^3.5.2" |     ajv-keywords "^3.5.2" | ||||||
|  |  | ||||||
| semver@^6.1.1, semver@^6.1.2, semver@^6.3.0: | semver@^6.1.1, semver@^6.1.2, semver@^6.3.0: | ||||||
|   version "6.3.0" |   version "6.3.1" | ||||||
|   resolved "https://registry.yarnpkg.com/semver/-/semver-6.3.0.tgz#ee0a64c8af5e8ceea67687b133761e1becbd1d3d" |   resolved "https://registry.yarnpkg.com/semver/-/semver-6.3.1.tgz#556d2ef8689146e46dcea4bfdd095f3434dffcb4" | ||||||
|   integrity sha512-b39TBaTSfV6yBrapU89p5fKekE2m/NwnDocOVruQFS1/veMgdzuPcnOM34M6CwxW8jH/lxEa5rBoDeUwu5HHTw== |   integrity sha512-BR7VvDCVHO+q2xBEWskxS6DJE1qRnb7DxzUrogb71CWoSficBxYsiAGd+Kl0mmq/MprG9yArRkyrQxTO6XjMzA== | ||||||
|  |  | ||||||
| semver@^7.3.7: | semver@^7.3.7: | ||||||
|   version "7.3.8" |   version "7.5.4" | ||||||
|   resolved "https://registry.yarnpkg.com/semver/-/semver-7.3.8.tgz#07a78feafb3f7b32347d725e33de7e2a2df67798" |   resolved "https://registry.yarnpkg.com/semver/-/semver-7.5.4.tgz#483986ec4ed38e1c6c48c34894a9182dbff68a6e" | ||||||
|   integrity sha512-NB1ctGL5rlHrPJtFDVIVzTyQylMLu9N9VICA6HSFJo8MCGVTMW6gfpicwKmmK/dAjTOrqu5l63JJOpDSrAis3A== |   integrity sha512-1bCSESV6Pv+i21Hvpxp3Dx+pSD8lIPt8uVjRrxAUt/nbswYc+tK6Y2btiULjd4+fnq15PX+nqQDC7Oft7WkwcA== | ||||||
|   dependencies: |   dependencies: | ||||||
|     lru-cache "^6.0.0" |     lru-cache "^6.0.0" | ||||||
|  |  | ||||||
| @@ -6027,11 +6027,6 @@ which@^2.0.1: | |||||||
|   dependencies: |   dependencies: | ||||||
|     isexe "^2.0.0" |     isexe "^2.0.0" | ||||||
|  |  | ||||||
| word-wrap@^1.2.3: |  | ||||||
|   version "1.2.3" |  | ||||||
|   resolved "https://registry.yarnpkg.com/word-wrap/-/word-wrap-1.2.3.tgz#610636f6b1f703891bd34771ccb17fb93b47079c" |  | ||||||
|   integrity sha512-Hz/mrNwitNRh/HUAtM/VT/5VH+ygD6DV7mYKZAtHOrbs8U7lvPS6xf7EJKMF0uW1KJCl0H701g3ZGus+muE5vQ== |  | ||||||
|  |  | ||||||
| wrap-ansi@^6.2.0: | wrap-ansi@^6.2.0: | ||||||
|   version "6.2.0" |   version "6.2.0" | ||||||
|   resolved "https://registry.yarnpkg.com/wrap-ansi/-/wrap-ansi-6.2.0.tgz#e9393ba07102e6c91a3b221478f0257cd2856e53" |   resolved "https://registry.yarnpkg.com/wrap-ansi/-/wrap-ansi-6.2.0.tgz#e9393ba07102e6c91a3b221478f0257cd2856e53" | ||||||
|   | |||||||
		Reference in New Issue
	
	Block a user