forked from React-Group/interstellar_ai
Merge branch 'main' into main
This commit is contained in:
commit
588cc98db5
8 changed files with 202 additions and 121 deletions
|
@ -1,30 +1,28 @@
|
||||||
|
|
||||||
type Message = {
|
// type Message = {
|
||||||
role: string;
|
// role: string;
|
||||||
content:string
|
// content:string
|
||||||
}
|
// }
|
||||||
|
|
||||||
type Chat = {
|
// type Chat = {
|
||||||
name: string;
|
// name: string;
|
||||||
messages: Message[];
|
// messages: Message[];
|
||||||
timestamp: number;
|
// timestamp: number;
|
||||||
};
|
// };
|
||||||
|
|
||||||
export let chatHistory: Chat[] = [];
|
// export function addMessageToHistory(index: number, chat: Chat): void {
|
||||||
|
// if (index >= 0 && index < chatHistory.length) {
|
||||||
|
// chatHistory[index] = chat;
|
||||||
|
// chatHistory.sort((a, b) => b.timestamp - a.timestamp)
|
||||||
|
// }
|
||||||
|
// }
|
||||||
|
|
||||||
export function addMessageToHistory(index: number, chat: Chat): void {
|
// export function removeMessageFromHistory(timestamp: number): void {
|
||||||
if (index >= 0 && index < chatHistory.length) {
|
// const index = chatHistory.findIndex((msg) => msg.timestamp === timestamp);
|
||||||
chatHistory[index] = chat;
|
// if (index > -1) {
|
||||||
chatHistory.sort((a, b) => b.timestamp - a.timestamp)
|
// chatHistory.splice(index, 1);
|
||||||
}
|
// console.log(`Removed message with timestamp: ${timestamp}`);
|
||||||
}
|
// } else {
|
||||||
|
// console.log(`Message not found with timestamp: ${timestamp}`);
|
||||||
export function removeMessageFromHistory(timestamp: number): void {
|
// }
|
||||||
const index = chatHistory.findIndex((msg) => msg.timestamp === timestamp);
|
// }
|
||||||
if (index > -1) {
|
|
||||||
chatHistory.splice(index, 1);
|
|
||||||
console.log(`Removed message with timestamp: ${timestamp}`);
|
|
||||||
} else {
|
|
||||||
console.log(`Message not found with timestamp: ${timestamp}`);
|
|
||||||
}
|
|
||||||
}
|
|
||||||
|
|
|
@ -5,41 +5,50 @@ import InputFrontend from "../components/InputFrontend";
|
||||||
import { sendToVoiceRecognition } from "./voice_backend"
|
import { sendToVoiceRecognition } from "./voice_backend"
|
||||||
import axios from "axios";
|
import axios from "axios";
|
||||||
import { changeHistory, checkCredentials, getHistory } from './database';
|
import { changeHistory, checkCredentials, getHistory } from './database';
|
||||||
import { addMessageToHistory, removeMessageFromHistory } from "./ChatHistory";
|
import { useChatHistory } from '../hooks/useChatHistory';
|
||||||
|
|
||||||
interface InputOutputHandlerProps {
|
const InputOutputBackend: React.FC = () => {
|
||||||
selectedIndex: number;
|
|
||||||
}
|
|
||||||
|
|
||||||
const InputOutputBackend: React.FC<InputOutputHandlerProps> = ({selectedIndex}) => {
|
|
||||||
// # variables
|
// # variables
|
||||||
type Message = {
|
type Message = {
|
||||||
role: string
|
role: string
|
||||||
content: string
|
content: string
|
||||||
}
|
}
|
||||||
|
|
||||||
type Chat = {
|
|
||||||
name?: string
|
|
||||||
messages: Message[]
|
|
||||||
timestamp: string
|
|
||||||
}
|
|
||||||
|
|
||||||
// Define state variables for user preferences and messages
|
// Define state variables for user preferences and messages
|
||||||
|
const [chatHistory, setChatHistory, setSelectedIndex] = useChatHistory()
|
||||||
const [preferredCurrency, setPreferredCurrency] = useState<string>("USD");
|
const [preferredCurrency, setPreferredCurrency] = useState<string>("USD");
|
||||||
const [preferredLanguage, setPreferredLanguage] = useState<string>("english");
|
const [preferredLanguage, setPreferredLanguage] = useState<string>("english");
|
||||||
const [timeFormat, setTimeFormat] = useState<string>("24-hour");
|
const [timeFormat, setTimeFormat] = useState<string>("24-hour");
|
||||||
const [preferredMeasurement, setPreferredMeasurement] = useState<string>("metric");
|
const [preferredMeasurement, setPreferredMeasurement] = useState<string>("metric");
|
||||||
const [timeZone, setTimeZone] = useState<string>("GMT");
|
const [timeZone, setTimeZone] = useState<string>("GMT");
|
||||||
const [dateFormat, setDateFormat] = useState<string>("DD-MM-YYYY");
|
const [dateFormat, setDateFormat] = useState<string>("DD-MM-YYYY");
|
||||||
const [messages, setMessages] = useState<Message[]>([]);
|
const [messages, setMessages] = useState<Message[]>(chatHistory.chats[chatHistory.selectedIndex]?.messages || []);
|
||||||
const [myBoolean, setMyBoolean] = useState<boolean>(false);
|
const [myBoolean, setMyBoolean] = useState<boolean>(false);
|
||||||
|
const [systemMessage, setSystemMessage] = useState<string>("You are a helpful assistant")
|
||||||
const apiURL = new URL("http://localhost:5000/interstellar_ai/api/ai_create")
|
const apiURL = new URL("http://localhost:5000/interstellar_ai/api/ai_create")
|
||||||
if (typeof window !== 'undefined') {
|
if (typeof window !== 'undefined') {
|
||||||
apiURL.hostname = window.location.hostname;
|
apiURL.hostname = window.location.hostname;
|
||||||
} else {
|
} else {
|
||||||
apiURL.hostname = "localhost"
|
apiURL.hostname = "localhost"
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
||||||
|
useEffect(() => {
|
||||||
|
|
||||||
|
console.log("History", chatHistory);
|
||||||
|
console.log("Messages", messages);
|
||||||
|
|
||||||
|
// Get the current chat's messages
|
||||||
|
const currentMessages = chatHistory.chats[chatHistory.selectedIndex]?.messages || [];
|
||||||
|
|
||||||
|
// If currentMessages is not empty, update messages only if it's not the same
|
||||||
|
if (currentMessages.length > 0 && JSON.stringify(currentMessages) !== JSON.stringify(messages)) {
|
||||||
|
setMessages(currentMessages);
|
||||||
|
} else if (messages.length === 0) {
|
||||||
|
setMessages([{ role: "system", content: systemMessage }, { role: "assistant", content: "Hello! How can I help you?" }]);
|
||||||
|
}
|
||||||
|
}, [chatHistory, setSelectedIndex]);
|
||||||
|
|
||||||
// Update messages when any of the settings change
|
// Update messages when any of the settings change
|
||||||
useEffect(() => {
|
useEffect(() => {
|
||||||
if (typeof localStorage !== 'undefined') {
|
if (typeof localStorage !== 'undefined') {
|
||||||
|
@ -51,11 +60,14 @@ const InputOutputBackend: React.FC<InputOutputHandlerProps> = ({selectedIndex})
|
||||||
setDateFormat(localStorage.getItem("dateFormat") || "DD-MM-YYYY");
|
setDateFormat(localStorage.getItem("dateFormat") || "DD-MM-YYYY");
|
||||||
setMyBoolean(localStorage.getItem('myBoolean') === 'true');
|
setMyBoolean(localStorage.getItem('myBoolean') === 'true');
|
||||||
}
|
}
|
||||||
|
},[])
|
||||||
|
|
||||||
|
useEffect(() => {
|
||||||
const measurementString = (preferredMeasurement == "Metric")
|
const measurementString = (preferredMeasurement == "Metric")
|
||||||
? "All measurements follow the metric system. Refuse to use any other measurement system."
|
? "All measurements follow the metric system. Refuse to use any other measurement system."
|
||||||
: "All measurements follow the imperial system. Refuse to use any other measurement system.";
|
: "All measurements follow the imperial system. Refuse to use any other measurement system.";
|
||||||
|
|
||||||
const systemMessage = myBoolean
|
const newSystemMessage = myBoolean
|
||||||
? `You are operating in the timezone: ${timeZone}. Use the ${timeFormat} time format and ${dateFormat} for dates.
|
? `You are operating in the timezone: ${timeZone}. Use the ${timeFormat} time format and ${dateFormat} for dates.
|
||||||
${measurementString}
|
${measurementString}
|
||||||
The currency is ${preferredCurrency}.
|
The currency is ${preferredCurrency}.
|
||||||
|
@ -63,12 +75,20 @@ const InputOutputBackend: React.FC<InputOutputHandlerProps> = ({selectedIndex})
|
||||||
You are only able to change language if the user specifically states you must.
|
You are only able to change language if the user specifically states you must.
|
||||||
Do not answer in multiple languages or multiple measurement systems under any circumstances other than the user requesting it.`
|
Do not answer in multiple languages or multiple measurement systems under any circumstances other than the user requesting it.`
|
||||||
: `You are a helpful assistant`;
|
: `You are a helpful assistant`;
|
||||||
setMessages([
|
|
||||||
{ role: "system", content: systemMessage },
|
setSystemMessage(newSystemMessage)
|
||||||
{ role: "assistant", content: "Hello! How may I help you?" },
|
|
||||||
]);
|
|
||||||
}, [preferredCurrency, preferredLanguage, timeFormat, preferredMeasurement, timeZone, dateFormat, myBoolean]);
|
}, [preferredCurrency, preferredLanguage, timeFormat, preferredMeasurement, timeZone, dateFormat, myBoolean]);
|
||||||
|
|
||||||
|
useEffect(() => {
|
||||||
|
const updateSystemprompt = (prompt: string) => {
|
||||||
|
setMessages(prevMessages => {
|
||||||
|
const newMessage = { role: "system", content: prompt }
|
||||||
|
return [newMessage, ...prevMessages]
|
||||||
|
})
|
||||||
|
}
|
||||||
|
updateSystemprompt
|
||||||
|
},[systemMessage])
|
||||||
|
|
||||||
|
|
||||||
const conversationRef = useRef<HTMLDivElement>(null)
|
const conversationRef = useRef<HTMLDivElement>(null)
|
||||||
const [copyClicked, setCopyClicked] = useState(false)
|
const [copyClicked, setCopyClicked] = useState(false)
|
||||||
|
@ -180,7 +200,11 @@ const InputOutputBackend: React.FC<InputOutputHandlerProps> = ({selectedIndex})
|
||||||
};
|
};
|
||||||
|
|
||||||
const addMessage = (role: string, content: string) => {
|
const addMessage = (role: string, content: string) => {
|
||||||
setMessages(previous => [...previous, { role, content }])
|
const newMessage: Message = { role: role, content: content }
|
||||||
|
setMessages((prevMessages) => [...prevMessages, newMessage])
|
||||||
|
const updatedChats = [...chatHistory.chats]
|
||||||
|
updatedChats[chatHistory.selectedIndex].messages.push(newMessage)
|
||||||
|
setChatHistory({...chatHistory, chats:updatedChats})
|
||||||
}
|
}
|
||||||
const handleSendClick = (inputValue: string, override: boolean) => {
|
const handleSendClick = (inputValue: string, override: boolean) => {
|
||||||
if (inputValue != "") {
|
if (inputValue != "") {
|
||||||
|
|
|
@ -2,6 +2,7 @@ import React, { ForwardedRef, useState, useEffect, useRef } from 'react';
|
||||||
import Markdown from 'react-markdown';
|
import Markdown from 'react-markdown';
|
||||||
import rehypeRaw from 'rehype-raw';
|
import rehypeRaw from 'rehype-raw';
|
||||||
import remarkGfm from 'remark-gfm';
|
import remarkGfm from 'remark-gfm';
|
||||||
|
import { useChatHistory } from '../hooks/useChatHistory';
|
||||||
|
|
||||||
type Message = {
|
type Message = {
|
||||||
role: string;
|
role: string;
|
||||||
|
@ -21,6 +22,7 @@ const ConversationFrontend = React.forwardRef<HTMLDivElement, ConversationProps>
|
||||||
({ messages, onStopClick, onResendClick, onEditClick, onCopyClick, isClicked }, ref: ForwardedRef<HTMLDivElement>) => {
|
({ messages, onStopClick, onResendClick, onEditClick, onCopyClick, isClicked }, ref: ForwardedRef<HTMLDivElement>) => {
|
||||||
const [isScrolling, setIsScrolling] = useState(true);
|
const [isScrolling, setIsScrolling] = useState(true);
|
||||||
const messagesEndRef = useRef<HTMLDivElement | null>(null);
|
const messagesEndRef = useRef<HTMLDivElement | null>(null);
|
||||||
|
const [chatHistory, setChatHistory, setSelectedIndex] = useChatHistory()
|
||||||
|
|
||||||
useEffect(() => {
|
useEffect(() => {
|
||||||
const observer = new IntersectionObserver(
|
const observer = new IntersectionObserver(
|
||||||
|
@ -58,7 +60,7 @@ const ConversationFrontend = React.forwardRef<HTMLDivElement, ConversationProps>
|
||||||
return (
|
return (
|
||||||
<div className="output" ref={ref}>
|
<div className="output" ref={ref}>
|
||||||
<div className="conversation resize" id="conversation">
|
<div className="conversation resize" id="conversation">
|
||||||
{messages.map((message, index) => {
|
{chatHistory.chats[chatHistory.selectedIndex].messages.map((message, index) => {
|
||||||
if (index >= 1) {
|
if (index >= 1) {
|
||||||
return (
|
return (
|
||||||
<div
|
<div
|
||||||
|
|
|
@ -1,11 +1,8 @@
|
||||||
import React, { useState } from 'react';
|
import React, { useState } from 'react';
|
||||||
|
import { useChatHistory } from '../hooks/useChatHistory';
|
||||||
|
|
||||||
interface HistoryProps{
|
const History: React.FC = () => {
|
||||||
selectedIndex: number;
|
const [chatHistory, setChatHistory, setSelectedIndex] = useChatHistory()
|
||||||
setSelectedIndex: (index: number) => void;
|
|
||||||
}
|
|
||||||
|
|
||||||
const History: React.FC<HistoryProps> = ({selectedIndex, setSelectedIndex}) => {
|
|
||||||
|
|
||||||
const handleHistoryClick = (index: number) => {
|
const handleHistoryClick = (index: number) => {
|
||||||
setSelectedIndex(index)
|
setSelectedIndex(index)
|
||||||
|
@ -16,9 +13,9 @@ const History: React.FC<HistoryProps> = ({selectedIndex, setSelectedIndex}) => {
|
||||||
<div className="history">
|
<div className="history">
|
||||||
<ul>
|
<ul>
|
||||||
{/* Populate with history items */}
|
{/* Populate with history items */}
|
||||||
{Array.from({ length: 20 }, (_, index) => (
|
{chatHistory.chats.map((chats, index) => (
|
||||||
<li key={index}>
|
<li key={index}>
|
||||||
<a href="#" onClick={()=>handleHistoryClick(index)}>history{index + 1}</a>
|
<a href="#" onClick={() => handleHistoryClick(index)}>{chatHistory.chats[index].name}</a>
|
||||||
</li>
|
</li>
|
||||||
))}
|
))}
|
||||||
</ul>
|
</ul>
|
||||||
|
|
55
app/hooks/useChatHistory.tsx
Normal file
55
app/hooks/useChatHistory.tsx
Normal file
|
@ -0,0 +1,55 @@
|
||||||
|
import { useEffect, useState } from "react"
|
||||||
|
|
||||||
|
interface Message {
|
||||||
|
role: string
|
||||||
|
content:string
|
||||||
|
}
|
||||||
|
|
||||||
|
interface ChatMessages {
|
||||||
|
name: string
|
||||||
|
messages: Message[]
|
||||||
|
timestamp: number
|
||||||
|
|
||||||
|
}
|
||||||
|
|
||||||
|
interface GlobalChatHistory {
|
||||||
|
chats: ChatMessages[]
|
||||||
|
selectedIndex: number
|
||||||
|
}
|
||||||
|
|
||||||
|
let globalChatHistory: GlobalChatHistory = {
|
||||||
|
chats: [
|
||||||
|
{ name: "Chat 1", messages: [], timestamp: 4 }
|
||||||
|
],
|
||||||
|
selectedIndex:0
|
||||||
|
}
|
||||||
|
let listeners: ((state: GlobalChatHistory) => void)[] = []
|
||||||
|
|
||||||
|
const setGlobalState = (newState: GlobalChatHistory): void => {
|
||||||
|
globalChatHistory = newState;
|
||||||
|
listeners.forEach((listener) => listener(globalChatHistory))
|
||||||
|
}
|
||||||
|
|
||||||
|
export const useChatHistory = (): [GlobalChatHistory, (newState:GlobalChatHistory) => void, (index:number)=>void] => {
|
||||||
|
const [state, setState] = useState<GlobalChatHistory>(globalChatHistory)
|
||||||
|
|
||||||
|
useEffect(() => {
|
||||||
|
console.log("help", globalChatHistory);
|
||||||
|
|
||||||
|
const listener = (newState: GlobalChatHistory) => {
|
||||||
|
setState(newState)
|
||||||
|
}
|
||||||
|
|
||||||
|
listeners.push(listener)
|
||||||
|
|
||||||
|
return () => {
|
||||||
|
listeners = listeners.filter((l) => l!== listener)
|
||||||
|
}
|
||||||
|
}, [])
|
||||||
|
|
||||||
|
const setSelectedIndex = (index: number) => {
|
||||||
|
setGlobalState({...state,selectedIndex:index})
|
||||||
|
}
|
||||||
|
|
||||||
|
return [state, setGlobalState, setSelectedIndex]
|
||||||
|
}
|
|
@ -1,7 +1,7 @@
|
||||||
You will need to make three folders:
|
You will need to make three folders:
|
||||||
|
|
||||||
node-bin - contains nodejs portable
|
node-bin - contains nodejs portable
|
||||||
python-bin - contains python3 portable - don't forget to add the .pth file and adjust it accordingly, because import site is normally missing.
|
python-bin - contains python3 portable - don't forget to add the .pth file and adjust it accordingly, because import site is normally missing. -- also put your python files in here too, else it will not run!
|
||||||
ollama.bin - contains ollama portable
|
ollama.bin - contains ollama portable
|
||||||
|
|
||||||
you also need vc redist 2019
|
you also need vc redist 2019
|
|
@ -1,4 +1,4 @@
|
||||||
python313.zip
|
python312.zip
|
||||||
.
|
.
|
||||||
|
|
||||||
# Uncomment to run site.main() automatically
|
# Uncomment to run site.main() automatically
|
133
package-lock.json
generated
133
package-lock.json
generated
|
@ -685,9 +685,9 @@
|
||||||
"license": "MIT"
|
"license": "MIT"
|
||||||
},
|
},
|
||||||
"node_modules/@types/node": {
|
"node_modules/@types/node": {
|
||||||
"version": "20.16.10",
|
"version": "20.16.11",
|
||||||
"resolved": "https://registry.npmjs.org/@types/node/-/node-20.16.10.tgz",
|
"resolved": "https://registry.npmjs.org/@types/node/-/node-20.16.11.tgz",
|
||||||
"integrity": "sha512-vQUKgWTjEIRFCvK6CyriPH3MZYiYlNy0fKiEYHWbcoWLEgs4opurGGKlebrTLqdSMIbXImH6XExNiIyNUv3WpA==",
|
"integrity": "sha512-y+cTCACu92FyA5fgQSAI8A1H429g7aSK2HsO7K4XYUWc4dY5IUz55JSDIYT6/VsOLfGy8vmvQYC2hfb0iF16Uw==",
|
||||||
"license": "MIT",
|
"license": "MIT",
|
||||||
"dependencies": {
|
"dependencies": {
|
||||||
"undici-types": "~6.19.2"
|
"undici-types": "~6.19.2"
|
||||||
|
@ -700,9 +700,9 @@
|
||||||
"license": "MIT"
|
"license": "MIT"
|
||||||
},
|
},
|
||||||
"node_modules/@types/react": {
|
"node_modules/@types/react": {
|
||||||
"version": "18.3.10",
|
"version": "18.3.11",
|
||||||
"resolved": "https://registry.npmjs.org/@types/react/-/react-18.3.10.tgz",
|
"resolved": "https://registry.npmjs.org/@types/react/-/react-18.3.11.tgz",
|
||||||
"integrity": "sha512-02sAAlBnP39JgXwkAq3PeU9DVaaGpZyF3MGcC0MKgQVkZor5IiiDAipVaxQHtDJAmO4GIy/rVBy/LzVj76Cyqg==",
|
"integrity": "sha512-r6QZ069rFTjrEYgFdOck1gK7FLVsgJE7tTz0pQBczlBNUhBNk0MQH4UbnFSwjpQLMkLzgqvBBa+qGpLje16eTQ==",
|
||||||
"license": "MIT",
|
"license": "MIT",
|
||||||
"dependencies": {
|
"dependencies": {
|
||||||
"@types/prop-types": "*",
|
"@types/prop-types": "*",
|
||||||
|
@ -745,17 +745,17 @@
|
||||||
}
|
}
|
||||||
},
|
},
|
||||||
"node_modules/@typescript-eslint/eslint-plugin": {
|
"node_modules/@typescript-eslint/eslint-plugin": {
|
||||||
"version": "8.8.0",
|
"version": "8.8.1",
|
||||||
"resolved": "https://registry.npmjs.org/@typescript-eslint/eslint-plugin/-/eslint-plugin-8.8.0.tgz",
|
"resolved": "https://registry.npmjs.org/@typescript-eslint/eslint-plugin/-/eslint-plugin-8.8.1.tgz",
|
||||||
"integrity": "sha512-wORFWjU30B2WJ/aXBfOm1LX9v9nyt9D3jsSOxC3cCaTQGCW5k4jNpmjFv3U7p/7s4yvdjHzwtv2Sd2dOyhjS0A==",
|
"integrity": "sha512-xfvdgA8AP/vxHgtgU310+WBnLB4uJQ9XdyP17RebG26rLtDrQJV3ZYrcopX91GrHmMoH8bdSwMRh2a//TiJ1jQ==",
|
||||||
"dev": true,
|
"dev": true,
|
||||||
"license": "MIT",
|
"license": "MIT",
|
||||||
"dependencies": {
|
"dependencies": {
|
||||||
"@eslint-community/regexpp": "^4.10.0",
|
"@eslint-community/regexpp": "^4.10.0",
|
||||||
"@typescript-eslint/scope-manager": "8.8.0",
|
"@typescript-eslint/scope-manager": "8.8.1",
|
||||||
"@typescript-eslint/type-utils": "8.8.0",
|
"@typescript-eslint/type-utils": "8.8.1",
|
||||||
"@typescript-eslint/utils": "8.8.0",
|
"@typescript-eslint/utils": "8.8.1",
|
||||||
"@typescript-eslint/visitor-keys": "8.8.0",
|
"@typescript-eslint/visitor-keys": "8.8.1",
|
||||||
"graphemer": "^1.4.0",
|
"graphemer": "^1.4.0",
|
||||||
"ignore": "^5.3.1",
|
"ignore": "^5.3.1",
|
||||||
"natural-compare": "^1.4.0",
|
"natural-compare": "^1.4.0",
|
||||||
|
@ -779,16 +779,16 @@
|
||||||
}
|
}
|
||||||
},
|
},
|
||||||
"node_modules/@typescript-eslint/parser": {
|
"node_modules/@typescript-eslint/parser": {
|
||||||
"version": "8.8.0",
|
"version": "8.8.1",
|
||||||
"resolved": "https://registry.npmjs.org/@typescript-eslint/parser/-/parser-8.8.0.tgz",
|
"resolved": "https://registry.npmjs.org/@typescript-eslint/parser/-/parser-8.8.1.tgz",
|
||||||
"integrity": "sha512-uEFUsgR+tl8GmzmLjRqz+VrDv4eoaMqMXW7ruXfgThaAShO9JTciKpEsB+TvnfFfbg5IpujgMXVV36gOJRLtZg==",
|
"integrity": "sha512-hQUVn2Lij2NAxVFEdvIGxT9gP1tq2yM83m+by3whWFsWC+1y8pxxxHUFE1UqDu2VsGi2i6RLcv4QvouM84U+ow==",
|
||||||
"dev": true,
|
"dev": true,
|
||||||
"license": "BSD-2-Clause",
|
"license": "BSD-2-Clause",
|
||||||
"dependencies": {
|
"dependencies": {
|
||||||
"@typescript-eslint/scope-manager": "8.8.0",
|
"@typescript-eslint/scope-manager": "8.8.1",
|
||||||
"@typescript-eslint/types": "8.8.0",
|
"@typescript-eslint/types": "8.8.1",
|
||||||
"@typescript-eslint/typescript-estree": "8.8.0",
|
"@typescript-eslint/typescript-estree": "8.8.1",
|
||||||
"@typescript-eslint/visitor-keys": "8.8.0",
|
"@typescript-eslint/visitor-keys": "8.8.1",
|
||||||
"debug": "^4.3.4"
|
"debug": "^4.3.4"
|
||||||
},
|
},
|
||||||
"engines": {
|
"engines": {
|
||||||
|
@ -808,14 +808,14 @@
|
||||||
}
|
}
|
||||||
},
|
},
|
||||||
"node_modules/@typescript-eslint/scope-manager": {
|
"node_modules/@typescript-eslint/scope-manager": {
|
||||||
"version": "8.8.0",
|
"version": "8.8.1",
|
||||||
"resolved": "https://registry.npmjs.org/@typescript-eslint/scope-manager/-/scope-manager-8.8.0.tgz",
|
"resolved": "https://registry.npmjs.org/@typescript-eslint/scope-manager/-/scope-manager-8.8.1.tgz",
|
||||||
"integrity": "sha512-EL8eaGC6gx3jDd8GwEFEV091210U97J0jeEHrAYvIYosmEGet4wJ+g0SYmLu+oRiAwbSA5AVrt6DxLHfdd+bUg==",
|
"integrity": "sha512-X4JdU+66Mazev/J0gfXlcC/dV6JI37h+93W9BRYXrSn0hrE64IoWgVkO9MSJgEzoWkxONgaQpICWg8vAN74wlA==",
|
||||||
"dev": true,
|
"dev": true,
|
||||||
"license": "MIT",
|
"license": "MIT",
|
||||||
"dependencies": {
|
"dependencies": {
|
||||||
"@typescript-eslint/types": "8.8.0",
|
"@typescript-eslint/types": "8.8.1",
|
||||||
"@typescript-eslint/visitor-keys": "8.8.0"
|
"@typescript-eslint/visitor-keys": "8.8.1"
|
||||||
},
|
},
|
||||||
"engines": {
|
"engines": {
|
||||||
"node": "^18.18.0 || ^20.9.0 || >=21.1.0"
|
"node": "^18.18.0 || ^20.9.0 || >=21.1.0"
|
||||||
|
@ -826,14 +826,14 @@
|
||||||
}
|
}
|
||||||
},
|
},
|
||||||
"node_modules/@typescript-eslint/type-utils": {
|
"node_modules/@typescript-eslint/type-utils": {
|
||||||
"version": "8.8.0",
|
"version": "8.8.1",
|
||||||
"resolved": "https://registry.npmjs.org/@typescript-eslint/type-utils/-/type-utils-8.8.0.tgz",
|
"resolved": "https://registry.npmjs.org/@typescript-eslint/type-utils/-/type-utils-8.8.1.tgz",
|
||||||
"integrity": "sha512-IKwJSS7bCqyCeG4NVGxnOP6lLT9Okc3Zj8hLO96bpMkJab+10HIfJbMouLrlpyOr3yrQ1cA413YPFiGd1mW9/Q==",
|
"integrity": "sha512-qSVnpcbLP8CALORf0za+vjLYj1Wp8HSoiI8zYU5tHxRVj30702Z1Yw4cLwfNKhTPWp5+P+k1pjmD5Zd1nhxiZA==",
|
||||||
"dev": true,
|
"dev": true,
|
||||||
"license": "MIT",
|
"license": "MIT",
|
||||||
"dependencies": {
|
"dependencies": {
|
||||||
"@typescript-eslint/typescript-estree": "8.8.0",
|
"@typescript-eslint/typescript-estree": "8.8.1",
|
||||||
"@typescript-eslint/utils": "8.8.0",
|
"@typescript-eslint/utils": "8.8.1",
|
||||||
"debug": "^4.3.4",
|
"debug": "^4.3.4",
|
||||||
"ts-api-utils": "^1.3.0"
|
"ts-api-utils": "^1.3.0"
|
||||||
},
|
},
|
||||||
|
@ -851,9 +851,9 @@
|
||||||
}
|
}
|
||||||
},
|
},
|
||||||
"node_modules/@typescript-eslint/types": {
|
"node_modules/@typescript-eslint/types": {
|
||||||
"version": "8.8.0",
|
"version": "8.8.1",
|
||||||
"resolved": "https://registry.npmjs.org/@typescript-eslint/types/-/types-8.8.0.tgz",
|
"resolved": "https://registry.npmjs.org/@typescript-eslint/types/-/types-8.8.1.tgz",
|
||||||
"integrity": "sha512-QJwc50hRCgBd/k12sTykOJbESe1RrzmX6COk8Y525C9l7oweZ+1lw9JiU56im7Amm8swlz00DRIlxMYLizr2Vw==",
|
"integrity": "sha512-WCcTP4SDXzMd23N27u66zTKMuEevH4uzU8C9jf0RO4E04yVHgQgW+r+TeVTNnO1KIfrL8ebgVVYYMMO3+jC55Q==",
|
||||||
"dev": true,
|
"dev": true,
|
||||||
"license": "MIT",
|
"license": "MIT",
|
||||||
"engines": {
|
"engines": {
|
||||||
|
@ -865,14 +865,14 @@
|
||||||
}
|
}
|
||||||
},
|
},
|
||||||
"node_modules/@typescript-eslint/typescript-estree": {
|
"node_modules/@typescript-eslint/typescript-estree": {
|
||||||
"version": "8.8.0",
|
"version": "8.8.1",
|
||||||
"resolved": "https://registry.npmjs.org/@typescript-eslint/typescript-estree/-/typescript-estree-8.8.0.tgz",
|
"resolved": "https://registry.npmjs.org/@typescript-eslint/typescript-estree/-/typescript-estree-8.8.1.tgz",
|
||||||
"integrity": "sha512-ZaMJwc/0ckLz5DaAZ+pNLmHv8AMVGtfWxZe/x2JVEkD5LnmhWiQMMcYT7IY7gkdJuzJ9P14fRy28lUrlDSWYdw==",
|
"integrity": "sha512-A5d1R9p+X+1js4JogdNilDuuq+EHZdsH9MjTVxXOdVFfTJXunKJR/v+fNNyO4TnoOn5HqobzfRlc70NC6HTcdg==",
|
||||||
"dev": true,
|
"dev": true,
|
||||||
"license": "BSD-2-Clause",
|
"license": "BSD-2-Clause",
|
||||||
"dependencies": {
|
"dependencies": {
|
||||||
"@typescript-eslint/types": "8.8.0",
|
"@typescript-eslint/types": "8.8.1",
|
||||||
"@typescript-eslint/visitor-keys": "8.8.0",
|
"@typescript-eslint/visitor-keys": "8.8.1",
|
||||||
"debug": "^4.3.4",
|
"debug": "^4.3.4",
|
||||||
"fast-glob": "^3.3.2",
|
"fast-glob": "^3.3.2",
|
||||||
"is-glob": "^4.0.3",
|
"is-glob": "^4.0.3",
|
||||||
|
@ -933,16 +933,16 @@
|
||||||
}
|
}
|
||||||
},
|
},
|
||||||
"node_modules/@typescript-eslint/utils": {
|
"node_modules/@typescript-eslint/utils": {
|
||||||
"version": "8.8.0",
|
"version": "8.8.1",
|
||||||
"resolved": "https://registry.npmjs.org/@typescript-eslint/utils/-/utils-8.8.0.tgz",
|
"resolved": "https://registry.npmjs.org/@typescript-eslint/utils/-/utils-8.8.1.tgz",
|
||||||
"integrity": "sha512-QE2MgfOTem00qrlPgyByaCHay9yb1+9BjnMFnSFkUKQfu7adBXDTnCAivURnuPPAG/qiB+kzKkZKmKfaMT0zVg==",
|
"integrity": "sha512-/QkNJDbV0bdL7H7d0/y0qBbV2HTtf0TIyjSDTvvmQEzeVx8jEImEbLuOA4EsvE8gIgqMitns0ifb5uQhMj8d9w==",
|
||||||
"dev": true,
|
"dev": true,
|
||||||
"license": "MIT",
|
"license": "MIT",
|
||||||
"dependencies": {
|
"dependencies": {
|
||||||
"@eslint-community/eslint-utils": "^4.4.0",
|
"@eslint-community/eslint-utils": "^4.4.0",
|
||||||
"@typescript-eslint/scope-manager": "8.8.0",
|
"@typescript-eslint/scope-manager": "8.8.1",
|
||||||
"@typescript-eslint/types": "8.8.0",
|
"@typescript-eslint/types": "8.8.1",
|
||||||
"@typescript-eslint/typescript-estree": "8.8.0"
|
"@typescript-eslint/typescript-estree": "8.8.1"
|
||||||
},
|
},
|
||||||
"engines": {
|
"engines": {
|
||||||
"node": "^18.18.0 || ^20.9.0 || >=21.1.0"
|
"node": "^18.18.0 || ^20.9.0 || >=21.1.0"
|
||||||
|
@ -956,13 +956,13 @@
|
||||||
}
|
}
|
||||||
},
|
},
|
||||||
"node_modules/@typescript-eslint/visitor-keys": {
|
"node_modules/@typescript-eslint/visitor-keys": {
|
||||||
"version": "8.8.0",
|
"version": "8.8.1",
|
||||||
"resolved": "https://registry.npmjs.org/@typescript-eslint/visitor-keys/-/visitor-keys-8.8.0.tgz",
|
"resolved": "https://registry.npmjs.org/@typescript-eslint/visitor-keys/-/visitor-keys-8.8.1.tgz",
|
||||||
"integrity": "sha512-8mq51Lx6Hpmd7HnA2fcHQo3YgfX1qbccxQOgZcb4tvasu//zXRaA1j5ZRFeCw/VRAdFi4mRM9DnZw0Nu0Q2d1g==",
|
"integrity": "sha512-0/TdC3aeRAsW7MDvYRwEc1Uwm0TIBfzjPFgg60UU2Haj5qsCs9cc3zNgY71edqE3LbWfF/WoZQd3lJoDXFQpag==",
|
||||||
"dev": true,
|
"dev": true,
|
||||||
"license": "MIT",
|
"license": "MIT",
|
||||||
"dependencies": {
|
"dependencies": {
|
||||||
"@typescript-eslint/types": "8.8.0",
|
"@typescript-eslint/types": "8.8.1",
|
||||||
"eslint-visitor-keys": "^3.4.3"
|
"eslint-visitor-keys": "^3.4.3"
|
||||||
},
|
},
|
||||||
"engines": {
|
"engines": {
|
||||||
|
@ -1457,9 +1457,9 @@
|
||||||
}
|
}
|
||||||
},
|
},
|
||||||
"node_modules/caniuse-lite": {
|
"node_modules/caniuse-lite": {
|
||||||
"version": "1.0.30001664",
|
"version": "1.0.30001667",
|
||||||
"resolved": "https://registry.npmjs.org/caniuse-lite/-/caniuse-lite-1.0.30001664.tgz",
|
"resolved": "https://registry.npmjs.org/caniuse-lite/-/caniuse-lite-1.0.30001667.tgz",
|
||||||
"integrity": "sha512-AmE7k4dXiNKQipgn7a2xg558IRqPN3jMQY/rOsbxDhrd0tyChwbITBfiwtnqz8bi2M5mIWbxAYBvk7W7QBUS2g==",
|
"integrity": "sha512-7LTwJjcRkzKFmtqGsibMeuXmvFDfZq/nzIjnmgCGzKKRVzjD72selLDK1oPF/Oxzmt4fNcPvTDvGqSDG4tCALw==",
|
||||||
"funding": [
|
"funding": [
|
||||||
{
|
{
|
||||||
"type": "opencollective",
|
"type": "opencollective",
|
||||||
|
@ -2256,6 +2256,7 @@
|
||||||
"version": "8.57.1",
|
"version": "8.57.1",
|
||||||
"resolved": "https://registry.npmjs.org/eslint/-/eslint-8.57.1.tgz",
|
"resolved": "https://registry.npmjs.org/eslint/-/eslint-8.57.1.tgz",
|
||||||
"integrity": "sha512-ypowyDxpVSYpkXr9WPv2PAZCtNip1Mv5KTW0SCurXv/9iOpcrH9PaqUElksqEB6pChqHGDRCFTyrZlGhnLNGiA==",
|
"integrity": "sha512-ypowyDxpVSYpkXr9WPv2PAZCtNip1Mv5KTW0SCurXv/9iOpcrH9PaqUElksqEB6pChqHGDRCFTyrZlGhnLNGiA==",
|
||||||
|
"deprecated": "This version is no longer supported. Please see https://eslint.org/version-support for other options.",
|
||||||
"dev": true,
|
"dev": true,
|
||||||
"license": "MIT",
|
"license": "MIT",
|
||||||
"dependencies": {
|
"dependencies": {
|
||||||
|
@ -2423,9 +2424,9 @@
|
||||||
}
|
}
|
||||||
},
|
},
|
||||||
"node_modules/eslint-plugin-import": {
|
"node_modules/eslint-plugin-import": {
|
||||||
"version": "2.30.0",
|
"version": "2.31.0",
|
||||||
"resolved": "https://registry.npmjs.org/eslint-plugin-import/-/eslint-plugin-import-2.30.0.tgz",
|
"resolved": "https://registry.npmjs.org/eslint-plugin-import/-/eslint-plugin-import-2.31.0.tgz",
|
||||||
"integrity": "sha512-/mHNE9jINJfiD2EKkg1BKyPyUk4zdnT54YgbOgfjSakWT5oyX/qQLVNTkehyfpcMxZXMy1zyonZ2v7hZTX43Yw==",
|
"integrity": "sha512-ixmkI62Rbc2/w8Vfxyh1jQRTdRTF52VxwRVHl/ykPAmqG+Nb7/kNn+byLP0LxPgI7zWA16Jt82SybJInmMia3A==",
|
||||||
"dev": true,
|
"dev": true,
|
||||||
"license": "MIT",
|
"license": "MIT",
|
||||||
"dependencies": {
|
"dependencies": {
|
||||||
|
@ -2437,7 +2438,7 @@
|
||||||
"debug": "^3.2.7",
|
"debug": "^3.2.7",
|
||||||
"doctrine": "^2.1.0",
|
"doctrine": "^2.1.0",
|
||||||
"eslint-import-resolver-node": "^0.3.9",
|
"eslint-import-resolver-node": "^0.3.9",
|
||||||
"eslint-module-utils": "^2.9.0",
|
"eslint-module-utils": "^2.12.0",
|
||||||
"hasown": "^2.0.2",
|
"hasown": "^2.0.2",
|
||||||
"is-core-module": "^2.15.1",
|
"is-core-module": "^2.15.1",
|
||||||
"is-glob": "^4.0.3",
|
"is-glob": "^4.0.3",
|
||||||
|
@ -2446,13 +2447,14 @@
|
||||||
"object.groupby": "^1.0.3",
|
"object.groupby": "^1.0.3",
|
||||||
"object.values": "^1.2.0",
|
"object.values": "^1.2.0",
|
||||||
"semver": "^6.3.1",
|
"semver": "^6.3.1",
|
||||||
|
"string.prototype.trimend": "^1.0.8",
|
||||||
"tsconfig-paths": "^3.15.0"
|
"tsconfig-paths": "^3.15.0"
|
||||||
},
|
},
|
||||||
"engines": {
|
"engines": {
|
||||||
"node": ">=4"
|
"node": ">=4"
|
||||||
},
|
},
|
||||||
"peerDependencies": {
|
"peerDependencies": {
|
||||||
"eslint": "^2 || ^3 || ^4 || ^5 || ^6 || ^7.2.0 || ^8"
|
"eslint": "^2 || ^3 || ^4 || ^5 || ^6 || ^7.2.0 || ^8 || ^9"
|
||||||
}
|
}
|
||||||
},
|
},
|
||||||
"node_modules/eslint-plugin-import/node_modules/debug": {
|
"node_modules/eslint-plugin-import/node_modules/debug": {
|
||||||
|
@ -4136,9 +4138,9 @@
|
||||||
"license": "ISC"
|
"license": "ISC"
|
||||||
},
|
},
|
||||||
"node_modules/iterator.prototype": {
|
"node_modules/iterator.prototype": {
|
||||||
"version": "1.1.2",
|
"version": "1.1.3",
|
||||||
"resolved": "https://registry.npmjs.org/iterator.prototype/-/iterator.prototype-1.1.2.tgz",
|
"resolved": "https://registry.npmjs.org/iterator.prototype/-/iterator.prototype-1.1.3.tgz",
|
||||||
"integrity": "sha512-DR33HMMr8EzwuRL8Y9D3u2BMj8+RqSE850jfGu59kS7tbmPLzGkZmVSfyCFSDxuZiEY6Rzt3T2NA/qU+NwVj1w==",
|
"integrity": "sha512-FW5iMbeQ6rBGm/oKgzq2aW4KvAGpxPzYES8N4g4xNXUKpL1mclMvOe+76AcLDTvD+Ze+sOpVhgdAQEKF4L9iGQ==",
|
||||||
"dev": true,
|
"dev": true,
|
||||||
"license": "MIT",
|
"license": "MIT",
|
||||||
"dependencies": {
|
"dependencies": {
|
||||||
|
@ -4147,6 +4149,9 @@
|
||||||
"has-symbols": "^1.0.3",
|
"has-symbols": "^1.0.3",
|
||||||
"reflect.getprototypeof": "^1.0.4",
|
"reflect.getprototypeof": "^1.0.4",
|
||||||
"set-function-name": "^2.0.1"
|
"set-function-name": "^2.0.1"
|
||||||
|
},
|
||||||
|
"engines": {
|
||||||
|
"node": ">= 0.4"
|
||||||
}
|
}
|
||||||
},
|
},
|
||||||
"node_modules/jackspeak": {
|
"node_modules/jackspeak": {
|
||||||
|
@ -6294,16 +6299,16 @@
|
||||||
}
|
}
|
||||||
},
|
},
|
||||||
"node_modules/regexp.prototype.flags": {
|
"node_modules/regexp.prototype.flags": {
|
||||||
"version": "1.5.2",
|
"version": "1.5.3",
|
||||||
"resolved": "https://registry.npmjs.org/regexp.prototype.flags/-/regexp.prototype.flags-1.5.2.tgz",
|
"resolved": "https://registry.npmjs.org/regexp.prototype.flags/-/regexp.prototype.flags-1.5.3.tgz",
|
||||||
"integrity": "sha512-NcDiDkTLuPR+++OCKB0nWafEmhg/Da8aUPLPMQbK+bxKKCm1/S5he+AqYa4PlMCVBalb4/yxIRub6qkEx5yJbw==",
|
"integrity": "sha512-vqlC04+RQoFalODCbCumG2xIOvapzVMHwsyIGM/SIE8fRhFFsXeH8/QQ+s0T0kDAhKc4k30s73/0ydkHQz6HlQ==",
|
||||||
"dev": true,
|
"dev": true,
|
||||||
"license": "MIT",
|
"license": "MIT",
|
||||||
"dependencies": {
|
"dependencies": {
|
||||||
"call-bind": "^1.0.6",
|
"call-bind": "^1.0.7",
|
||||||
"define-properties": "^1.2.1",
|
"define-properties": "^1.2.1",
|
||||||
"es-errors": "^1.3.0",
|
"es-errors": "^1.3.0",
|
||||||
"set-function-name": "^2.0.1"
|
"set-function-name": "^2.0.2"
|
||||||
},
|
},
|
||||||
"engines": {
|
"engines": {
|
||||||
"node": ">= 0.4"
|
"node": ">= 0.4"
|
||||||
|
|
Loading…
Reference in a new issue