diff --git a/.DS_Store b/.DS_Store new file mode 100644 index 0000000..d05d5b1 Binary files /dev/null and b/.DS_Store differ diff --git a/addbannerlogicc.drawio b/addbannerlogicc.drawio new file mode 100644 index 0000000..993f446 --- /dev/null +++ b/addbannerlogicc.drawio @@ -0,0 +1,63 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + \ No newline at end of file diff --git a/adminpanellogic.drawio b/adminpanellogic.drawio new file mode 100644 index 0000000..b4a740b --- /dev/null +++ b/adminpanellogic.drawio @@ -0,0 +1,115 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + \ No newline at end of file diff --git a/backend/controllers/messageController.js b/backend/controllers/messageController.js index a8d0656..3aeee51 100644 --- a/backend/controllers/messageController.js +++ b/backend/controllers/messageController.js @@ -3,100 +3,165 @@ import Message from "../models/messageModel.js"; import { getRecipientSocketId, io } from "../socket/socket.js"; import { v2 as cloudinary } from "cloudinary"; +// this is is just a comment to see if anything is actually being affected and if im pushing changes as a head master thats all +// Start of sendMessage function async function sendMessage(req, res) { - try { - const { recipientId, message } = req.body; - let { img } = req.body; - const senderId = req.user._id; - - let conversation = await Conversation.findOne({ - participants: { $all: [senderId, recipientId] }, - }); - - if (!conversation) { - conversation = new Conversation({ - participants: [senderId, recipientId], - lastMessage: { - text: message, - sender: senderId, - }, - }); - await conversation.save(); - } - - if (img) { - const uploadedResponse = await cloudinary.uploader.upload(img); - img = uploadedResponse.secure_url; - } - - const newMessage = new Message({ - conversationId: conversation._id, - sender: senderId, - text: message, - img: img || "", - }); - - await Promise.all([ - newMessage.save(), - conversation.updateOne({ - lastMessage: { - text: message, - sender: senderId, - }, - }), - ]); - - const recipientSocketId = getRecipientSocketId(recipientId); - if (recipientSocketId) { - io.to(recipientSocketId).emit("newMessage", newMessage); - } - - res.status(201).json(newMessage); - } catch (error) { - res.status(500).json({ error: error.message }); - } + try { + const { recipientId, message } = req.body; + let { img } = req.body; + const senderId = req.user._id; + + + let conversation = await Conversation.findOne({ + participants: { $all: [senderId, recipientId] }, + }); + + + if (!conversation) { + conversation = new Conversation({ + participants: [senderId, recipientId], + lastMessage: { + text: message, + sender: senderId, + }, + }); + await conversation.save(); + } + + + if (img) { + const uploadedResponse = await cloudinary.uploader.upload(img); + img = uploadedResponse.secure_url; + } + + + const newMessage = new Message({ + conversationId: conversation._id, + sender: senderId, + text: message, + img: img || "", + }); + + + await Promise.all([ + newMessage.save(), + conversation.updateOne({ + lastMessage: { + text: message, + sender: senderId, + }, + }), + ]); + + + const recipientSocketId = getRecipientSocketId(recipientId); + if (recipientSocketId) { + io.to(recipientSocketId).emit("newMessage", newMessage); + } + + + res.status(201).json(newMessage); + } catch (error) { + res.status(500).json({ error: error.message }); + } } +// End of sendMessage function + +// Start of getMessages function async function getMessages(req, res) { - const { otherUserId } = req.params; - const userId = req.user._id; - try { - const conversation = await Conversation.findOne({ - participants: { $all: [userId, otherUserId] }, - }); - - if (!conversation) { - return res.status(404).json({ error: "Conversation not found" }); - } - - const messages = await Message.find({ - conversationId: conversation._id, - }).sort({ createdAt: 1 }); - - res.status(200).json(messages); - } catch (error) { - res.status(500).json({ error: error.message }); - } + const { otherUserId } = req.params; + const userId = req.user._id; + try { + const conversation = await Conversation.findOne({ + participants: { $all: [userId, otherUserId] }, + }); + + + if (!conversation) { + return res.status(404).json({ error: "Conversation not found" }); + } + + + const messages = await Message.find({ + conversationId: conversation._id, + }).sort({ createdAt: 1 }); + + + res.status(200).json(messages); + } catch (error) { + res.status(500).json({ error: error.message }); + } } +// End of getMessages function + +// Start of getConversations function async function getConversations(req, res) { - const userId = req.user._id; - try { - const conversations = await Conversation.find({ participants: userId }).populate({ - path: "participants", - select: "username profilePic", - }); - - // remove the current user from the participants array - conversations.forEach((conversation) => { - conversation.participants = conversation.participants.filter( - (participant) => participant._id.toString() !== userId.toString() - ); - }); - res.status(200).json(conversations); - } catch (error) { - res.status(500).json({ error: error.message }); - } + const userId = req.user._id; + try { + const conversations = await Conversation.find({ participants: userId }).populate({ + path: "participants", + select: "username profilePic", + }); + + + // remove the current user from the participants array + conversations.forEach((conversation) => { + conversation.participants = conversation.participants.filter( + (participant) => participant._id.toString() !== userId.toString() + ); + }); + res.status(200).json(conversations); + } catch (error) { + res.status(500).json({ error: error.message }); + } } +// End of getConversations function + + +// Start of deleteMessage function +async function deleteMessage(req, res) { + try { + const { messageId } = req.params; + const userId = req.user._id; + + + const message = await Message.findById(messageId); + + + // Check if the message exists and if the user is the sender + if (!message || message.sender.toString() !== userId.toString()) { + return res.status(403).json({ error: "You can only delete your own messages" }); + } + + + // Delete the message + await message.deleteOne(); + + + // Optionally, you can update the conversation's last message if the deleted message was the last one + const conversation = await Conversation.findById(message.conversationId); + if (conversation && conversation.lastMessage && conversation.lastMessage.text === message.text) { + const lastMessage = await Message.findOne({ conversationId: message.conversationId }).sort({ createdAt: -1 }); + if (lastMessage) { + conversation.lastMessage = { + text: lastMessage.text, + sender: lastMessage.sender, + }; + } else { + conversation.lastMessage = { text: "", sender: "" }; + } + await conversation.save(); + } + + + res.status(200).json({ message: "Message deleted successfully" }); + } catch (error) { + res.status(500).json({ error: error.message }); + } +} +// End of deleteMessage function + -export { sendMessage, getMessages, getConversations }; +export { sendMessage, getMessages, getConversations, deleteMessage }; diff --git a/backend/controllers/postController.js b/backend/controllers/postController.js index 3f964a4..1fa111e 100644 --- a/backend/controllers/postController.js +++ b/backend/controllers/postController.js @@ -1,171 +1,1815 @@ +// this is th euodated post controller with the the new changes(dont use this) +// import Post from "../models/postModel.js"; +// import User from "../models/userModel.js"; +// import { v2 as cloudinary } from "cloudinary"; + +// const createPost = async (req, res) => { +// try { +// const { text, targetAudience } = req.body; +// let { img } = req.body; +// const userId = req.user._id; + +// if (!text) { +// return res.status(400).json({ error: "Text field is required" }); +// } + +// // Ensure text length is within limit (500 characters max) +// if (text.length > 500) { +// return res.status(400).json({ error: "Text must be less than 500 characters" }); +// } + +// // Find the user who is creating the post +// const user = await User.findById(userId); +// if (!user) { +// return res.status(404).json({ error: "User not found" }); +// } + +// // Handle image upload if provided +// if (img) { +// const uploadedResponse = await cloudinary.uploader.upload(img); +// img = uploadedResponse.secure_url; +// } + +// // Check target audience permissions based on user role +// let finalTargetAudience = null; +// if (user.role === "admin") { +// // Admin can set any target audience +// finalTargetAudience = targetAudience; +// } else if (user.role === "teacher") { +// // Teachers can target "all" or their own department +// finalTargetAudience = targetAudience === "all" || targetAudience === user.department ? targetAudience : "all"; +// } else if (user.role === "student") { +// // Students cannot specify a target audience +// finalTargetAudience = null; +// } + +// // Create a new post +// const newPost = new Post({ +// postedBy: userId, +// text, +// img, +// targetAudience: finalTargetAudience, +// }); + +// // Save the post +// await newPost.save(); +// res.status(201).json(newPost); +// } catch (err) { +// res.status(500).json({ error: err.message }); +// } +// }; + +// const getPost = async (req, res) => { +// try { +// const postId = req.params.id; +// const post = await Post.findById(postId).populate("postedBy", "username profilePic"); + +// if (!post) { +// return res.status(404).json({ error: "Post not found" }); +// } + +// res.status(200).json(post); +// } catch (err) { +// res.status(500).json({ error: err.message }); +// } +// }; + +// const deletePost = async (req, res) => { +// try { +// const post = await Post.findById(req.params.id); +// if (!post) { +// return res.status(404).json({ error: "Post not found" }); +// } + +// if (post.postedBy.toString() !== req.user._id.toString()) { +// return res.status(401).json({ error: "Unauthorized to delete post" }); +// } + +// if (post.img) { +// const imgId = post.img.split("/").pop().split(".")[0]; +// await cloudinary.uploader.destroy(imgId); +// } + +// await Post.findByIdAndDelete(req.params.id); +// res.status(200).json({ message: "Post deleted successfully" }); +// } catch (err) { +// res.status(500).json({ error: err.message }); +// } +// }; + +// const likeUnlikePost = async (req, res) => { +// try { +// const { id: postId } = req.params; +// const userId = req.user._id; + +// const post = await Post.findById(postId); +// if (!post) { +// return res.status(404).json({ error: "Post not found" }); +// } + +// const userLikedPost = post.likes.includes(userId); +// if (userLikedPost) { +// await Post.updateOne({ _id: postId }, { $pull: { likes: userId } }); +// res.status(200).json({ message: "Post unliked successfully" }); +// } else { +// post.likes.push(userId); +// await post.save(); +// res.status(200).json({ message: "Post liked successfully" }); +// } +// } catch (err) { +// res.status(500).json({ error: err.message }); +// } +// }; + +// const replyToPost = async (req, res) => { +// try { +// const { text } = req.body; +// const postId = req.params.id; +// const userId = req.user._id; +// const userProfilePic = req.user.profilePic; +// const username = req.user.username; + +// if (!text) { +// return res.status(400).json({ error: "Text field is required" }); +// } + +// const post = await Post.findById(postId); +// if (!post) { +// return res.status(404).json({ error: "Post not found" }); +// } + +// const reply = { userId, text, userProfilePic, username }; +// post.replies.push(reply); +// await post.save(); + +// res.status(200).json(reply); +// } catch (err) { +// res.status(500).json({ error: err.message }); +// } +// }; + +// const repostPost = async (req, res) => { +// try { +// const postId = req.params.id; +// const userId = req.user._id; + +// const post = await Post.findById(postId); +// if (!post) { +// return res.status(404).json({ error: "Post not found" }); +// } + +// if (post.reposts.includes(userId)) { +// return res.status(400).json({ error: "Post already reposted" }); +// } + +// post.reposts.push(userId); +// await post.save(); +// res.status(200).json({ message: "Post reposted successfully", post }); +// } catch (err) { +// res.status(500).json({ error: err.message }); +// } +// }; + +// const getFeedPosts = async (req, res) => { +// try { +// const userId = req.user && req.user._id; +// if (!userId) { +// return res.status(401).json({ error: "Unauthorized, user not authenticated" }); +// } + +// const user = await User.findById(userId).select("role following yearGroup department isStudent"); + +// if (!user) { +// return res.status(404).json({ error: "User not found" }); +// } + +// const following = user.following || []; +// const allUserIds = [...following, userId]; + +// let queryConditions = [ +// { targetAudience: null }, +// { targetAudience: "all" }, +// { postedBy: { $in: allUserIds } }, +// ]; + +// if (user.role === "student") { +// queryConditions.push({ targetAudience: user.yearGroup }); +// } else if (user.role === "teacher") { +// queryConditions.push({ targetAudience: user.department }); +// } + +// const feedPosts = await Post.find({ +// $or: queryConditions, +// }).sort({ createdAt: -1 }); + +// res.status(200).json(feedPosts); +// } catch (err) { +// res.status(500).json({ error: "Could not fetch posts" }); +// } +// }; + +// const getUserPosts = async (req, res) => { +// const { username } = req.params; +// try { +// const user = await User.findOne({ username }); +// if (!user) { +// return res.status(404).json({ error: "User not found" }); +// } + +// const posts = await Post.find({ postedBy: user._id }).sort({ createdAt: -1 }); +// res.status(200).json(posts); +// } catch (error) { +// res.status(500).json({ error: error.message }); +// } +// }; + +// export { +// createPost, +// getPost, +// deletePost, +// likeUnlikePost, +// replyToPost, +// repostPost, +// getFeedPosts, +// getUserPosts, +// }; + +// original use this version (working this si the one to use) +// import Post from "../models/postModel.js"; +// import User from "../models/userModel.js"; +// import { v2 as cloudinary } from "cloudinary"; + +// const createPost = async (req, res) => { +// try { +// const { postedBy, text, targetAudience } = req.body; +// let { img } = req.body; + +// if (!postedBy || !text) { +// return res.status(400).json({ error: "PostedBy and text fields are required" }); +// } + +// // Find the user who is posting +// const user = await User.findById(postedBy); +// if (!user) { +// return res.status(404).json({ error: "User not found" }); +// } + +// // Check if the user is authorized to post +// if (user._id.toString() !== req.user._id.toString()) { +// return res.status(401).json({ error: "Unauthorized to create post" }); +// } + +// // Ensure text length is within limit (500 characters max) +// if (text.length > 500) { +// return res.status(400).json({ error: `Text must be less than 500 characters` }); +// } + +// // Handle image upload if provided +// if (img) { +// const uploadedResponse = await cloudinary.uploader.upload(img); +// img = uploadedResponse.secure_url; +// } + +// // Only teachers can set the `targetAudience` +// let finalTargetAudience = null; +// if (user.role === "teacher") { +// finalTargetAudience = targetAudience || 'all'; // Default to 'all' if not specified +// } + +// // Create the new post +// const newPost = new Post({ +// postedBy, +// text, +// img, +// targetAudience: finalTargetAudience, // Target audience only for teachers +// }); + +// // Save the post +// await newPost.save(); + +// // Respond with the newly created post +// res.status(201).json(newPost); + +// } catch (err) { +// res.status(500).json({ error: err.message }); +// } +// }; + +// const getPost = async (req, res) => { +// try { +// const postId = req.params.id; + +// // Fetch the post with the postedBy details +// const post = await Post.findById(postId).populate("postedBy", "username profilePic"); + +// if (!post) { +// return res.status(404).json({ error: "Post not found" }); +// } + +// // Return the post since the middleware has already filtered access +// res.status(200).json(post); +// } catch (err) { +// res.status(500).json({ error: err.message }); +// } +// }; + +// const deletePost = async (req, res) => { +// try { +// const post = await Post.findById(req.params.id); +// if (!post) { +// return res.status(404).json({ error: "Post not found" }); +// } + +// if (post.postedBy.toString() !== req.user._id.toString()) { +// return res.status(401).json({ error: "Unauthorized to delete post" }); +// } + +// if (post.img) { +// const imgId = post.img.split("/").pop().split(".")[0]; +// await cloudinary.uploader.destroy(imgId); +// } + +// await Post.findByIdAndDelete(req.params.id); + +// res.status(200).json({ message: "Post deleted successfully" }); +// } catch (err) { +// res.status(500).json({ error: err.message }); +// } +// }; + +// const likeUnlikePost = async (req, res) => { +// try { +// const { id: postId } = req.params; +// const userId = req.user._id; + +// const post = await Post.findById(postId); + +// if (!post) { +// return res.status(404).json({ error: "Post not found" }); +// } + +// const userLikedPost = post.likes.includes(userId); + +// if (userLikedPost) { +// // Unlike post +// await Post.updateOne({ _id: postId }, { $pull: { likes: userId } }); +// res.status(200).json({ message: "Post unliked successfully" }); +// } else { +// // Like post +// post.likes.push(userId); +// await post.save(); +// res.status(200).json({ message: "Post liked successfully" }); +// } +// } catch (err) { +// res.status(500).json({ error: err.message }); +// } +// }; + +// const replyToPost = async (req, res) => { +// try { +// const { text } = req.body; +// const postId = req.params.id; +// const userId = req.user._id; +// const userProfilePic = req.user.profilePic; +// const username = req.user.username; + +// if (!text) { +// return res.status(400).json({ error: "Text field is required" }); +// } + +// const post = await Post.findById(postId); +// if (!post) { +// return res.status(404).json({ error: "Post not found" }); +// } + +// const reply = { userId, text, userProfilePic, username }; + +// post.replies.push(reply); +// await post.save(); + +// res.status(200).json(reply); +// } catch (err) { +// res.status(500).json({ error: err.message }); +// } +// }; + +// // New repostPost method +// const repostPost = async (req, res) => { +// try { +// const postId = req.params.id; +// const userId = req.user._id; + +// const post = await Post.findById(postId); +// if (!post) { +// return res.status(404).json({ error: "Post not found" }); +// } + +// // Ensure the post is not already reposted by this user +// if (post.reposts.includes(userId)) { +// return res.status(400).json({ error: "Post already reposted" }); +// } + +// // Add user ID to reposts array +// post.reposts.push(userId); +// await post.save(); + +// res.status(200).json({ message: "Post reposted successfully", post }); +// } catch (err) { +// res.status(500).json({ error: err.message }); +// } +// }; + +// const getFeedPosts = async (req, res) => { +// try { +// const userId = req.user && req.user._id; // Ensure req.user exists before accessing userId + +// if (!userId) { +// return res.status(401).json({ error: "Unauthorized, user not authenticated" }); +// } + +// const user = await User.findById(userId).select("role following yearGroup isStudent"); + +// if (!user) { +// return res.status(404).json({ error: "User not found" }); +// } + +// // Retrieve the list of users the current user is following +// const following = user.following || []; + +// // Include the current user’s own ID in the list to fetch their posts as well +// const allUserIds = [...following, userId]; + +// // Fetch posts based on target audience and user roles +// const feedPosts = await Post.find({ +// $or: [ +// { targetAudience: null }, // Posts without specific targeting (public) +// { targetAudience: "all" }, // Posts targeted to all users +// { targetAudience: user.isStudent ? user.yearGroup : user.role }, // Posts targeted to user's year group or role +// { postedBy: { $in: allUserIds } }, // Posts by users the current user is following +// ], +// }).sort({ createdAt: -1 }); + +// // If no posts found, return an empty array instead of 404 +// if (!feedPosts.length) { +// return res.status(200).json([]); +// } + +// res.status(200).json(feedPosts); +// } catch (err) { +// console.error("Error fetching feed posts:", err.message); +// res.status(500).json({ error: "Could not fetch posts" }); +// } +// }; + +// const getUserPosts = async (req, res) => { +// const { username } = req.params; +// try { +// const user = await User.findOne({ username }); +// if (!user) { +// return res.status(404).json({ error: "User not found" }); +// } + +// const posts = await Post.find({ postedBy: user._id }).sort({ +// createdAt: -1, +// }); + +// res.status(200).json(posts); +// } catch (error) { +// res.status(500).json({ error: error.message }); +// } +// }; + +// export { +// createPost, +// getPost, +// deletePost, +// likeUnlikePost, +// replyToPost, +// getFeedPosts, +// getUserPosts, +// }; + +// this is the new version Admin role update +// import Post from "../models/postModel.js"; +// import User from "../models/userModel.js"; +// import { v2 as cloudinary } from "cloudinary"; + +// const createPost = async (req, res) => { +// try { +// const { +// postedBy, +// text, +// targetYearGroups, +// targetDepartments, +// targetAudience, +// } = req.body; +// let { img } = req.body; + +// // Validate required fields +// if (!postedBy || !text) { +// return res +// .status(400) +// .json({ error: "PostedBy and text fields are required" }); +// } + +// // Find the user who is posting +// const user = await User.findById(postedBy); +// if (!user) { +// return res.status(404).json({ error: "User not found" }); +// } + +// // Authorization check +// if (user._id.toString() !== req.user._id.toString()) { +// return res.status(401).json({ error: "Unauthorized to create post" }); +// } + +// // Role-specific post creation rules +// switch (user.role) { +// case "student": +// // Students can only post to 'all' +// req.body.targetAudience = "all"; +// req.body.targetYearGroups = []; +// req.body.targetDepartments = []; +// break; + +// case "teacher": +// // Teachers must specify year groups +// if (!targetYearGroups || targetYearGroups.length === 0) { +// return res.status(400).json({ +// error: "Teachers must specify at least one year group to target", +// }); +// } +// // Ensure the teacher is targeting only year groups +// req.body.targetDepartments = []; +// req.body.targetAudience = targetYearGroups[0]; // Set first targeted year group as audience +// break; + +// case "admin": +// // Admins must specify a target +// if (!targetAudience && !targetYearGroups && !targetDepartments) { +// return res.status(400).json({ +// error: +// "Admin must specify a target audience, year groups, or departments", +// }); +// } +// break; + +// default: +// return res.status(403).json({ error: "Unauthorized to create posts" }); +// } + +// // Handle image upload if provided +// if (img) { +// const uploadedResponse = await cloudinary.uploader.upload(img); +// img = uploadedResponse.secure_url; +// } + +// // Create the post +// const newPost = new Post({ +// postedBy, +// text, +// img, +// targetYearGroups: targetYearGroups || [], +// targetDepartments: targetDepartments || [], +// targetAudience: req.body.targetAudience || "all", +// }); + +// await newPost.save(); +// res.status(201).json(newPost); +// } catch (err) { +// console.error("Error in createPost:", err.message); +// res.status(500).json({ error: "Failed to create post" }); +// } +// }; + + +// const getPost = async (req, res) => { +// try { +// const postId = req.params.id; + +// // Fetch the post matching the filter and ID +// const post = await Post.findOne({ _id: postId, ...req.filter }).populate( +// "postedBy", +// "username profilePic" +// ); + +// if (!post) { +// return res.status(404).json({ error: "Post not found or access denied" }); +// } + +// res.status(200).json(post); +// } catch (err) { +// res.status(500).json({ error: err.message }); +// } +// }; + +// const deletePost = async (req, res) => { +// try { +// const post = await Post.findById(req.params.id); +// if (!post) { +// return res.status(404).json({ error: "Post not found" }); +// } + +// if (post.postedBy.toString() !== req.user._id.toString()) { +// return res.status(401).json({ error: "Unauthorized to delete post" }); +// } + +// if (post.img) { +// const imgId = post.img.split("/").pop().split(".")[0]; +// await cloudinary.uploader.destroy(imgId); +// } + +// await Post.findByIdAndDelete(req.params.id); + +// res.status(200).json({ message: "Post deleted successfully" }); +// } catch (err) { +// res.status(500).json({ error: err.message }); +// } +// }; + +// const likeUnlikePost = async (req, res) => { +// try { +// const { id: postId } = req.params; +// const userId = req.user._id; + +// const post = await Post.findById(postId); + +// if (!post) { +// return res.status(404).json({ error: "Post not found" }); +// } + +// const userLikedPost = post.likes.includes(userId); + +// if (userLikedPost) { +// // Unlike post +// await Post.updateOne({ _id: postId }, { $pull: { likes: userId } }); +// res.status(200).json({ message: "Post unliked successfully" }); +// } else { +// // Like post +// post.likes.push(userId); +// await post.save(); +// res.status(200).json({ message: "Post liked successfully" }); +// } +// } catch (err) { +// res.status(500).json({ error: err.message }); +// } +// }; + +// const replyToPost = async (req, res) => { +// try { +// const { text } = req.body; +// const postId = req.params.id; +// const userId = req.user._id; +// const userProfilePic = req.user.profilePic; +// const username = req.user.username; + +// if (!text) { +// return res.status(400).json({ error: "Text field is required" }); +// } + +// const post = await Post.findById(postId); +// if (!post) { +// return res.status(404).json({ error: "Post not found" }); +// } + +// const reply = { userId, text, userProfilePic, username }; + +// post.replies.push(reply); +// await post.save(); + +// res.status(200).json(reply); +// } catch (err) { +// res.status(500).json({ error: err.message }); +// } +// }; + +// // New repostPost method +// const repostPost = async (req, res) => { +// try { +// const postId = req.params.id; +// const userId = req.user._id; + +// const post = await Post.findById(postId); +// if (!post) { +// return res.status(404).json({ error: "Post not found" }); +// } + +// // Ensure the post is not already reposted by this user +// if (post.reposts.includes(userId)) { +// return res.status(400).json({ error: "Post already reposted" }); +// } + +// // Add user ID to reposts array +// post.reposts.push(userId); +// await post.save(); + +// res.status(200).json({ message: "Post reposted successfully", post }); +// } catch (err) { +// res.status(500).json({ error: err.message }); +// } +// }; + +// const getFeedPosts = async (req, res) => { +// try { +// const userId = req.user && req.user._id; + +// if (!userId) { +// return res +// .status(401) +// .json({ error: "Unauthorized, user not authenticated" }); +// } + +// const user = await User.findById(userId).select( +// "role following yearGroup department isStudent" +// ); + +// if (!user) { +// return res.status(404).json({ error: "User not found" }); +// } + +// // Retrieve the list of users the current user is following +// const following = user.following || []; + +// // Construct a precise filtering condition +// const postFilter = { +// $or: [ +// // Always allow posts targeted to 'all' +// { targetAudience: "all" }, + +// // For students, show posts targeting their EXACT year group +// ...(user.role === "student" +// ? [ +// { targetYearGroups: { $in: [user.yearGroup] } }, +// { targetAudience: user.yearGroup }, +// ] +// : []), + +// // For teachers, show posts targeting their EXACT department +// ...(user.role === "teacher" +// ? [ +// { targetDepartments: { $in: [user.department] } }, +// { targetAudience: user.department }, +// ] +// : []), + +// // For admin/TV, show additional posts +// ...(user.role === "admin" || user.role === "tv" +// ? [{ targetAudience: "tv" }] +// : []), + +// // Always show posts from users the current user is following +// { postedBy: { $in: following } }, + +// // Ensure users see their own posts +// { postedBy: userId } +// ], +// }; + +// // Fetch posts matching the filter +// const feedPosts = await Post.find(postFilter) +// .populate("postedBy", "username profilePic") +// .sort({ createdAt: -1 }) +// .limit(50); // Limit to prevent overwhelming results + +// res.status(200).json(feedPosts); +// } catch (err) { +// console.error("Error fetching feed posts:", err.message); +// res.status(500).json({ error: "Could not fetch posts" }); +// } +// }; + +// const getUserPosts = async (req, res) => { +// const { username } = req.params; +// try { +// const user = await User.findOne({ username }); +// if (!user) { +// return res.status(404).json({ error: "User not found" }); +// } + +// const posts = await Post.find({ postedBy: user._id }).sort({ +// createdAt: -1, +// }); + +// res.status(200).json(posts); +// } catch (error) { +// res.status(500).json({ error: error.message }); +// } +// }; + +// export { +// createPost, +// getPost, +// deletePost, +// likeUnlikePost, +// replyToPost, +// getFeedPosts, +// getUserPosts, +// }; + + +// post notis(working) +// import Post from "../models/postModel.js"; +// import User from "../models/userModel.js"; +// import { v2 as cloudinary } from "cloudinary"; +// import nodemailer from 'nodemailer'; + +// // Email configuration +// const transporter = nodemailer.createTransport({ +// host: "smtp-relay.brevo.com", +// port: 587, +// auth: { +// user: "81d810001@smtp-brevo.com", +// pass: "6IBdE9hsKrHUxD4G", +// }, +// }); + +// // Helper function to send notification email +// const sendNotificationEmail = async (recipientEmail, posterId, postId, posterUsername) => { +// const mailOptions = { +// from: "pearnet104@gmail.com", +// to: recipientEmail, +// subject: "New Post on Pear! 🍐", +// html: ` +//
+//

New Post on Pear! 🍐

+//

Hello! ${posterUsername} just made a new post on Pear.

+//

Don't miss out on the conversation!

+// +// View Post +// +//

+// You received this email because you have notifications enabled. +// You can disable these in your Pear account settings. +//

+//
+// ` +// }; + +// try { +// await transporter.sendMail(mailOptions); +// console.log(`Notification email sent to ${recipientEmail}`); +// } catch (error) { +// console.error(`Error sending notification email to ${recipientEmail}:`, error); +// } +// }; + +// const createPost = async (req, res) => { +// try { +// const { +// postedBy, +// text, +// targetYearGroups, +// targetDepartments, +// targetAudience, +// } = req.body; +// let { img } = req.body; + +// // Validate required fields +// if (!postedBy || !text) { +// return res +// .status(400) +// .json({ error: "PostedBy and text fields are required" }); +// } + +// // Find the user who is posting +// const user = await User.findById(postedBy); +// if (!user) { +// return res.status(404).json({ error: "User not found" }); +// } + +// // Authorization check +// if (user._id.toString() !== req.user._id.toString()) { +// return res.status(401).json({ error: "Unauthorized to create post" }); +// } + +// // Role-specific post creation rules +// switch (user.role) { +// case "student": +// // Students can only post to 'all' +// req.body.targetAudience = "all"; +// req.body.targetYearGroups = []; +// req.body.targetDepartments = []; +// break; + +// case "teacher": +// // Teachers must specify year groups +// if (!targetYearGroups || targetYearGroups.length === 0) { +// return res.status(400).json({ +// error: "Teachers must specify at least one year group to target", +// }); +// } +// // Ensure the teacher is targeting only year groups +// req.body.targetDepartments = []; +// req.body.targetAudience = targetYearGroups[0]; // Set first targeted year group as audience +// break; + +// case "admin": +// // Admins must specify a target +// if (!targetAudience && !targetYearGroups && !targetDepartments) { +// return res.status(400).json({ +// error: +// "Admin must specify a target audience, year groups, or departments", +// }); +// } +// break; + +// default: +// return res.status(403).json({ error: "Unauthorized to create posts" }); +// } + +// // Handle image upload if provided +// if (img) { +// const uploadedResponse = await cloudinary.uploader.upload(img); +// img = uploadedResponse.secure_url; +// } + +// // Create the post +// const newPost = new Post({ +// postedBy, +// text, +// img, +// targetYearGroups: targetYearGroups || [], +// targetDepartments: targetDepartments || [], +// targetAudience: req.body.targetAudience || "all", +// }); + +// await newPost.save(); + +// // After successfully creating the post, send notifications +// try { +// // Find all users who have notifications enabled +// const usersToNotify = await User.find({ +// notificationPreferences: true, +// _id: { $ne: postedBy } // Exclude the post creator +// }); + +// // Send notifications in parallel +// const notificationPromises = usersToNotify.map(recipient => +// sendNotificationEmail( +// recipient.email, +// postedBy, +// newPost._id, +// user.username +// ) +// ); + +// // Use Promise.allSettled to handle all notification attempts +// await Promise.allSettled(notificationPromises); + +// } catch (notificationError) { +// // Log notification errors but don't fail the post creation +// console.error("Error sending notifications:", notificationError); +// } + +// res.status(201).json(newPost); +// } catch (err) { +// console.error("Error in createPost:", err.message); +// res.status(500).json({ error: "Failed to create post" }); +// } +// }; + +// const toggleNotifications = async (req, res) => { +// try { +// const userId = req.user._id; +// const user = await User.findById(userId); + +// if (!user) { +// return res.status(404).json({ error: "User not found" }); +// } + +// // Toggle the notification preferences +// user.notificationPreferences = !user.notificationPreferences; +// await user.save(); + +// res.status(200).json({ +// message: `Notifications ${user.notificationPreferences ? 'enabled' : 'disabled'}`, +// notificationPreferences: user.notificationPreferences +// }); +// } catch (err) { +// res.status(500).json({ error: err.message }); +// } +// }; + +// const getPost = async (req, res) => { +// try { +// const postId = req.params.id; + +// // Fetch the post matching the filter and ID +// const post = await Post.findOne({ _id: postId, ...req.filter }).populate( +// "postedBy", +// "username profilePic" +// ); + +// if (!post) { +// return res.status(404).json({ error: "Post not found or access denied" }); +// } + +// res.status(200).json(post); +// } catch (err) { +// res.status(500).json({ error: err.message }); +// } +// }; + +// const deletePost = async (req, res) => { +// try { +// const post = await Post.findById(req.params.id); +// if (!post) { +// return res.status(404).json({ error: "Post not found" }); +// } + +// if (post.postedBy.toString() !== req.user._id.toString()) { +// return res.status(401).json({ error: "Unauthorized to delete post" }); +// } + +// if (post.img) { +// const imgId = post.img.split("/").pop().split(".")[0]; +// await cloudinary.uploader.destroy(imgId); +// } + +// await Post.findByIdAndDelete(req.params.id); + +// res.status(200).json({ message: "Post deleted successfully" }); +// } catch (err) { +// res.status(500).json({ error: err.message }); +// } +// }; + +// const likeUnlikePost = async (req, res) => { +// try { +// const { id: postId } = req.params; +// const userId = req.user._id; + +// const post = await Post.findById(postId); + +// if (!post) { +// return res.status(404).json({ error: "Post not found" }); +// } + +// const userLikedPost = post.likes.includes(userId); + +// if (userLikedPost) { +// // Unlike post +// await Post.updateOne({ _id: postId }, { $pull: { likes: userId } }); +// res.status(200).json({ message: "Post unliked successfully" }); +// } else { +// // Like post +// post.likes.push(userId); +// await post.save(); +// res.status(200).json({ message: "Post liked successfully" }); +// } +// } catch (err) { +// res.status(500).json({ error: err.message }); +// } +// }; + +// const replyToPost = async (req, res) => { +// try { +// const { text } = req.body; +// const postId = req.params.id; +// const userId = req.user._id; +// const userProfilePic = req.user.profilePic; +// const username = req.user.username; + +// if (!text) { +// return res.status(400).json({ error: "Text field is required" }); +// } + +// const post = await Post.findById(postId); +// if (!post) { +// return res.status(404).json({ error: "Post not found" }); +// } + +// const reply = { userId, text, userProfilePic, username }; + +// post.replies.push(reply); +// await post.save(); + +// res.status(200).json(reply); +// } catch (err) { +// res.status(500).json({ error: err.message }); +// } +// }; + +// // New repostPost method +// const repostPost = async (req, res) => { +// try { +// const postId = req.params.id; +// const userId = req.user._id; + +// const post = await Post.findById(postId); +// if (!post) { +// return res.status(404).json({ error: "Post not found" }); +// } + +// // Ensure the post is not already reposted by this user +// if (post.reposts.includes(userId)) { +// return res.status(400).json({ error: "Post already reposted" }); +// } + +// // Add user ID to reposts array +// post.reposts.push(userId); +// await post.save(); + +// res.status(200).json({ message: "Post reposted successfully", post }); +// } catch (err) { +// res.status(500).json({ error: err.message }); +// } +// }; +// original +// const getFeedPosts = async (req, res) => { +// try { +// const userId = req.user && req.user._id; + +// if (!userId) { +// return res +// .status(401) +// .json({ error: "Unauthorized, user not authenticated" }); +// } + +// const user = await User.findById(userId).select( +// "role following yearGroup department isStudent" +// ); + +// if (!user) { +// return res.status(404).json({ error: "User not found" }); +// } + +// // Retrieve the list of users the current user is following +// const following = user.following || []; + +// // Construct a precise filtering condition +// const postFilter = { +// $or: [ +// // Always allow posts targeted to 'all' +// { targetAudience: "all" }, + +// // For students, show posts targeting their EXACT year group +// ...(user.role === "student" +// ? [ +// { targetYearGroups: { $in: [user.yearGroup] } }, +// { targetAudience: user.yearGroup }, +// ] +// : []), + +// // For teachers, show posts targeting their EXACT department +// ...(user.role === "teacher" +// ? [ +// { targetDepartments: { $in: [user.department] } }, +// { targetAudience: user.department }, +// ] +// : []), + +// // For admin/TV, show additional posts +// ...(user.role === "admin" || user.role === "tv" +// ? [{ targetAudience: "tv" }] +// : []), + +// // Always show posts from users the current user is following +// { postedBy: { $in: following } }, + +// // Ensure users see their own posts +// { postedBy: userId } +// ], +// }; + +// // Fetch posts matching the filter +// const feedPosts = await Post.find(postFilter) +// .populate("postedBy", "username profilePic") +// .sort({ createdAt: -1 }) +// .limit(50); // Limit to prevent overwhelming results + +// res.status(200).json(feedPosts); +// } catch (err) { +// console.error("Error fetching feed posts:", err.message); +// res.status(500).json({ error: "Could not fetch posts" }); +// } +// }; + +// const getUserPosts = async (req, res) => { +// const { username } = req.params; +// try { +// const user = await User.findOne({ username }); +// if (!user) { +// return res.status(404).json({ error: "User not found" }); +// } + +// const posts = await Post.find({ postedBy: user._id }).sort({ +// createdAt: -1, +// }); + +// res.status(200).json(posts); +// } catch (error) { +// res.status(500).json({ error: error.message }); +// } +// }; + +// export { +// createPost, +// toggleNotifications, +// getPost, +// deletePost, +// likeUnlikePost, +// replyToPost, +// getFeedPosts, +// getUserPosts, +// }; + +// post review import Post from "../models/postModel.js"; import User from "../models/userModel.js"; import { v2 as cloudinary } from "cloudinary"; +import nodemailer from 'nodemailer'; + +// Email configuration +const transporter = nodemailer.createTransport({ + host: "smtp-relay.brevo.com", + port: 587, + auth: { + user: "81d810001@smtp-brevo.com", + pass: "6IBdE9hsKrHUxD4G", + }, +}); + +// Helper function to send notification email +const sendNotificationEmail = async (recipientEmail, posterId, postId, posterUsername) => { + const mailOptions = { + from: "pearnet104@gmail.com", + to: recipientEmail, + subject: "New Post on Pear! 🍐", + html: ` +
+

New Post on Pear! 🍐

+

Hello! ${posterUsername} just made a new post on Pear.

+

Don't miss out on the conversation!

+ + View Post + +

+ You received this email because you have notifications enabled. + You can disable these in your Pear account settings. +

+
+ ` + }; + + try { + await transporter.sendMail(mailOptions); + console.log(`Notification email sent to ${recipientEmail}`); + } catch (error) { + console.error(`Error sending notification email to ${recipientEmail}:`, error); + } +}; const createPost = async (req, res) => { - try { - const { postedBy, text } = req.body; - let { img } = req.body; - - if (!postedBy || !text) { - return res.status(400).json({ error: "Postedby and text fields are required" }); - } - - const user = await User.findById(postedBy); - if (!user) { - return res.status(404).json({ error: "User not found" }); - } - - if (user._id.toString() !== req.user._id.toString()) { - return res.status(401).json({ error: "Unauthorized to create post" }); - } - - const maxLength = 500; - if (text.length > maxLength) { - return res.status(400).json({ error: `Text must be less than ${maxLength} characters` }); - } - - if (img) { - const uploadedResponse = await cloudinary.uploader.upload(img); - img = uploadedResponse.secure_url; - } - - const newPost = new Post({ postedBy, text, img }); - await newPost.save(); - - res.status(201).json(newPost); - } catch (err) { - res.status(500).json({ error: err.message }); - console.log(err); - } + try { + const { + postedBy, + text, + targetYearGroups, + targetDepartments, + targetAudience, + } = req.body; + + let { img } = req.body; + + // Validate required fields + if (!postedBy || !text) { + return res + .status(400) + .json({ error: 'PostedBy and text fields are required' }); + } + + // Find the user who is posting + const user = await User.findById(postedBy); + if (!user) { + return res.status(404).json({ error: 'User not found' }); + } + + // Authorization check + if (user._id.toString() !== req.user._id.toString()) { + return res.status(401).json({ error: 'Unauthorized to create post' }); + } + + // Role-specific post creation rules + switch (user.role) { + case 'student': + req.body.targetAudience = 'all'; + req.body.targetYearGroups = []; + req.body.targetDepartments = []; + break; + + case 'teacher': + if (!targetYearGroups || targetYearGroups.length === 0) { + return res.status(400).json({ + error: 'Teachers must specify at least one year group to target', + }); + } + req.body.targetDepartments = []; + req.body.targetAudience = targetYearGroups[0]; + break; + + case 'admin': + if (!targetAudience && !targetYearGroups && !targetDepartments) { + return res.status(400).json({ + error: 'Admin must specify a target audience, year groups, or departments', + }); + } + break; + + default: + return res.status(403).json({ error: 'Unauthorized to create posts' }); + } + + // Handle image upload if provided + if (img) { + const uploadedResponse = await cloudinary.uploader.upload(img); + img = uploadedResponse.secure_url; + } + + // Fetch admins and create post with reviewers if it's a student post + const adminUsers = await User.find({ role: 'admin' }); // Fetch admins first + const reviewers = user.role === 'student' ? adminUsers.map(admin => ({ + userId: admin._id, + role: 'admin', + decision: 'pending' + })) : []; + + const newPost = new Post({ + postedBy, + text, + img, + targetYearGroups: targetYearGroups || [], + targetDepartments: targetDepartments || [], + reviewStatus: user.role === 'student' ? 'pending' : 'approved', + targetAudience: req.body.targetAudience || 'all', + reviewers + }); + + await newPost.save(); + + // Send notifications for non-student posts or approved student posts + if (user.role !== 'student' || newPost.reviewStatus === 'approved') { + try { + const usersToNotify = await User.find({ + notificationPreferences: true, + _id: { $ne: postedBy }, + }); + + const notificationPromises = usersToNotify.map((recipient) => + sendNotificationEmail( + recipient.email, + postedBy, + newPost._id, + user.username + ) + ); + + await Promise.allSettled(notificationPromises); + } catch (notificationError) { + console.error('Error sending notifications:', notificationError); + } + } + + res.status(201).json(newPost); + } catch (err) { + console.error('Error in createPost:', err); + res.status(500).json({ error: err.message || 'Failed to create post' }); + } }; -const getPost = async (req, res) => { - try { - const post = await Post.findById(req.params.id); - if (!post) { - return res.status(404).json({ error: "Post not found" }); - } +const getPendingReviews = async (req, res) => { + try { + if (!req.user) { + return res.status(401).json({ error: "User not authenticated" }); + } + + // Simplified query to just look for pending posts + const pendingReviews = await Post.find({ + reviewStatus: 'pending' + }).populate('postedBy', 'username profilePic email'); + + console.log("Found pending reviews:", pendingReviews); - res.status(200).json(post); - } catch (err) { - res.status(500).json({ error: err.message }); - } + res.status(200).json(pendingReviews); + } catch (err) { + console.error("Error in getPendingReviews:", err); + res.status(500).json({ + error: "Error fetching pending reviews", + details: err.message + }); + } }; +// New function to handle post reviews +const reviewPost = async (req, res) => { + try { + // Add debugging logs + console.log("Review request received:", { + user: req.user, + params: req.params, + body: req.body + }); -const deletePost = async (req, res) => { - try { - const post = await Post.findById(req.params.id); - if (!post) { - return res.status(404).json({ error: "Post not found" }); - } - - if (post.postedBy.toString() !== req.user._id.toString()) { - return res.status(401).json({ error: "Unauthorized to delete post" }); - } - - if (post.img) { - const imgId = post.img.split("/").pop().split(".")[0]; - await cloudinary.uploader.destroy(imgId); - } - - await Post.findByIdAndDelete(req.params.id); - - res.status(200).json({ message: "Post deleted successfully" }); - } catch (err) { - res.status(500).json({ error: err.message }); - } + // Check if user is authenticated + if (!req.user) { + console.log("Authentication failed: No user in request"); + return res.status(401).json({ error: "User not authenticated" }); + } + + // Check if user is authorized to review (admin or teacher) + if (req.user.role !== 'admin' && req.user.role !== 'teacher') { + console.log("Authorization failed: User role is", req.user.role); + return res.status(401).json({ error: "Not authorized to review posts" }); + } + + const { postId } = req.params; + const { decision } = req.body; + const reviewerId = req.user._id; + + console.log("Looking for post:", postId); + const post = await Post.findById(postId); + + if (!post) { + console.log("Post not found:", postId); + return res.status(404).json({ error: "Post not found" }); + } + + console.log("Found post:", post); + console.log("Looking for reviewer:", reviewerId); + + // Find the reviewer's entry + const reviewerIndex = post.reviewers.findIndex( + r => r.userId.toString() === reviewerId.toString() + ); + + console.log("Reviewer index:", reviewerIndex); + + if (reviewerIndex === -1) { + console.log("Reviewer not found in post.reviewers"); + return res.status(401).json({ error: "Not authorized to review this post" }); + } + + // Update reviewer's decision + post.reviewers[reviewerIndex].decision = decision; + post.reviewers[reviewerIndex].reviewedAt = new Date(); + + // Check review status + if (decision === 'approved') { + // Check if any admin or teacher has approved + const hasApproval = post.reviewers.some( + r => (r.role === 'admin' || r.role === 'teacher') && r.decision === 'approved' + ); + + if (hasApproval) { + post.reviewStatus = 'approved'; + console.log("Post approved"); + + // Send notifications now that post is approved + try { + const poster = await User.findById(post.postedBy); + const usersToNotify = await User.find({ + notificationPreferences: true, + _id: { $ne: post.postedBy }, + }); + + const notificationPromises = usersToNotify.map((recipient) => + sendNotificationEmail( + recipient.email, + post.postedBy, + post._id, + poster.username + ) + ); + + await Promise.allSettled(notificationPromises); + } catch (error) { + console.error("Error sending notifications:", error); + } + } + } else if (decision === 'rejected') { + // If any admin or teacher rejects, post is rejected + const hasRejection = post.reviewers.some( + r => (r.role === 'admin' || r.role === 'teacher') && r.decision === 'rejected' + ); + + if (hasRejection) { + post.reviewStatus = 'rejected'; + console.log("Post rejected"); + } + } + + await post.save(); + console.log("Post saved successfully"); + res.status(200).json(post); + } catch (err) { + console.error("Error in reviewPost:", err); + res.status(500).json({ error: err.message }); + } +}; + +const toggleNotifications = async (req, res) => { + try { + const userId = req.user._id; + const user = await User.findById(userId); + + if (!user) { + return res.status(404).json({ error: "User not found" }); + } + + // Toggle the notification preferences + user.notificationPreferences = !user.notificationPreferences; + await user.save(); + + res.status(200).json({ + message: `Notifications ${user.notificationPreferences ? 'enabled' : 'disabled'}`, + notificationPreferences: user.notificationPreferences + }); + } catch (err) { + res.status(500).json({ error: err.message }); + } +}; + +const getPost = async (req, res) => { + try { + const postId = req.params.id; + + const post = await Post.findById(postId).populate( + "postedBy", + "username profilePic" + ); + + if (!post) { + return res.status(404).json({ error: "Post not found" }); + } + + // Convert to plain object and ensure likes and reposts arrays exist + const postObject = post.toObject(); + + // Initialize arrays if they don't exist + postObject.likes = postObject.likes || []; + postObject.reposts = postObject.reposts || []; + + // Only check includes if user exists + if (req.user) { + postObject.isLiked = postObject.likes.includes(req.user._id.toString()); + postObject.isReposted = postObject.reposts.includes(req.user._id.toString()); + } + + res.status(200).json(postObject); + } catch (err) { + res.status(500).json({ error: err.message }); + } }; +const deletePost = async (req, res) => { + try { + const post = await Post.findById(req.params.id); + if (!post) { + return res.status(404).json({ error: "Post not found" }); + } + + // Allow deletion if user is post creator OR admin + if ( + post.postedBy.toString() !== req.user._id.toString() && + req.user.role !== "admin" + ) { + return res.status(401).json({ error: "Unauthorized to delete post" }); + } + + if (post.img) { + const imgId = post.img.split("/").pop().split(".")[0]; + await cloudinary.uploader.destroy(imgId); + } + await Post.findByIdAndDelete(req.params.id); + + res.status(200).json({ message: "Post deleted successfully" }); + } catch (err) { + res.status(500).json({ error: err.message }); + } +}; const likeUnlikePost = async (req, res) => { - try { - const { id: postId } = req.params; - const userId = req.user._id; - - const post = await Post.findById(postId); - - if (!post) { - return res.status(404).json({ error: "Post not found" }); - } - - const userLikedPost = post.likes.includes(userId); - - if (userLikedPost) { - // Unlike post - await Post.updateOne({ _id: postId }, { $pull: { likes: userId } }); - res.status(200).json({ message: "Post unliked successfully" }); - } else { - // Like post - post.likes.push(userId); - await post.save(); - res.status(200).json({ message: "Post liked successfully" }); - } - } catch (err) { - res.status(500).json({ error: err.message }); - } + try { + const { id: postId } = req.params; + const userId = req.user._id; + + const post = await Post.findById(postId); + + if (!post) { + return res.status(404).json({ error: "Post not found" }); + } + + const userLikedPost = post.likes.includes(userId); + + if (userLikedPost) { + // Unlike post + await Post.updateOne({ _id: postId }, { $pull: { likes: userId } }); + res.status(200).json({ message: "Post unliked successfully" }); + } else { + // Like post + post.likes.push(userId); + await post.save(); + res.status(200).json({ message: "Post liked successfully" }); + } + } catch (err) { + res.status(500).json({ error: err.message }); + } }; const replyToPost = async (req, res) => { - try { - const { text } = req.body; - const postId = req.params.id; - const userId = req.user._id; - const userProfilePic = req.user.profilePic; - const username = req.user.username; - - if (!text) { - return res.status(400).json({ error: "Text field is required" }); - } - - const post = await Post.findById(postId); - if (!post) { - return res.status(404).json({ error: "Post not found" }); - } - - const reply = { userId, text, userProfilePic, username }; - - post.replies.push(reply); - await post.save(); - - res.status(200).json(reply); - } catch (err) { - res.status(500).json({ error: err.message }); - } + try { + const { text } = req.body; + const postId = req.params.id; + const userId = req.user._id; + const userProfilePic = req.user.profilePic; + const username = req.user.username; + + if (!text) { + return res.status(400).json({ error: "Text field is required" }); + } + + const post = await Post.findById(postId); + if (!post) { + return res.status(404).json({ error: "Post not found" }); + } + + const reply = { userId, text, userProfilePic, username }; + + post.replies.push(reply); + await post.save(); + + res.status(200).json(reply); + } catch (err) { + res.status(500).json({ error: err.message }); + } }; -const getFeedPosts = async (req, res) => { - try { - const userId = req.user._id; - const user = await User.findById(userId); - if (!user) { - return res.status(404).json({ error: "User not found" }); - } +// New repostPost method +const repostPost = async (req, res) => { + try { + const postId = req.params.id; + const userId = req.user._id; + + const post = await Post.findById(postId); + if (!post) { + return res.status(404).json({ error: "Post not found" }); + } - const following = user.following; + // Ensure the post is not already reposted by this user + if (post.reposts.includes(userId)) { + return res.status(400).json({ error: "Post already reposted" }); + } - const feedPosts = await Post.find({ postedBy: { $in: following } }).sort({ createdAt: -1 }); + // Add user ID to reposts array + post.reposts.push(userId); + await post.save(); - res.status(200).json(feedPosts); - } catch (err) { - res.status(500).json({ error: err.message }); - } + res.status(200).json({ message: "Post reposted successfully", post }); + } catch (err) { + res.status(500).json({ error: err.message }); + } }; +// new code +const getFeedPosts = async (req, res) => { + try { + const userId = req.user && req.user._id; + + if (!userId) { + return res.status(401).json({ error: "Unauthorized, user not authenticated" }); + } + + const user = await User.findById(userId).select("role following yearGroup department"); + if (!user) { + return res.status(404).json({ error: "User not found" }); + } + + // Base filter conditions that apply to all posts + const baseFilter = { + $or: [ + { postedBy: userId }, // User's own posts + { postedBy: { $in: user.following || [] } }, // Posts from followed users + ] + }; + + // Audience-specific filter based on user role + let audienceFilter = { + $or: [ + { targetAudience: "all" }, // Posts targeted to everyone + ] + }; + + // Add role-specific filters + if (user.role === "student" && user.yearGroup) { + audienceFilter.$or.push( + { targetYearGroups: user.yearGroup }, + { targetAudience: user.yearGroup } + ); + } + else if (user.role === "teacher" && user.department) { + audienceFilter.$or.push( + { targetDepartments: user.department }, + { targetAudience: user.department } + ); + } + else if (user.role === "admin" || user.role === "tv") { + // Admins and TV can see all posts + audienceFilter = {}; // No additional filtering needed + } + + // Combine with approval status filter + const approvalFilter = { + $or: [ + { postedBy: { $in: await User.find({ role: { $ne: "student" } }).distinct('_id') } }, // Non-student posts + { $and: [ // Student posts must be approved + { postedBy: { $in: await User.find({ role: "student" }).distinct('_id') } }, + { reviewStatus: "approved" } + ]} + ] + }; + + // Combine all filters + const finalFilter = { + $and: [ + baseFilter, + audienceFilter, + approvalFilter + ] + }; + + const feedPosts = await Post.find(finalFilter) + .populate("postedBy", "username profilePic") + .sort({ createdAt: -1 }) + .limit(50); + res.status(200).json(feedPosts); + } catch (err) { + console.error("Error fetching feed posts:", err.message); + res.status(500).json({ error: "Could not fetch posts" }); + } +}; const getUserPosts = async (req, res) => { - const { username } = req.params; - try { - const user = await User.findOne({ username }); - if (!user) { - return res.status(404).json({ error: "User not found" }); - } - - const posts = await Post.find({ postedBy: user._id }).sort({ createdAt: -1 }); - - res.status(200).json(posts); - } catch (error) { - res.status(500).json({ error: error.message }); - } + const { username } = req.params; + try { + const user = await User.findOne({ username }); + if (!user) { + return res.status(404).json({ error: "User not found" }); + } + + const posts = await Post.find({ postedBy: user._id }) + .populate("postedBy", "username profilePic") + .sort({ + createdAt: -1, + }); + + res.status(200).json(posts); + } catch (error) { + res.status(500).json({ error: error.message }); + } }; -export { createPost, getPost, deletePost, likeUnlikePost, replyToPost, getFeedPosts, getUserPosts }; +const deleteComment = async (req, res) => { + try { + const { commentId } = req.params; + + // Find the post containing the comment + const post = await Post.findOne({ "replies._id": commentId }); + if (!post) { + return res.status(404).json({ error: "Post not found" }); + } + + // Find the comment + const comment = post.replies.id(commentId); + if (!comment) { + return res.status(404).json({ error: "Comment not found" }); + } + + // Authorization check + if (req.user.role !== "admin" && comment.userId.toString() !== req.user._id.toString()) { + return res.status(403).json({ error: "Unauthorized to delete comment" }); + } + + // Remove the comment from the array + post.replies.pull(commentId); + await post.save(); + + res.status(200).json({ message: "Comment deleted successfully" }); + } catch (err) { + res.status(500).json({ error: err.message }); + } +}; +export { + createPost, + deleteComment, + getPendingReviews, + reviewPost, + toggleNotifications, + getPost, + deletePost, + likeUnlikePost, + replyToPost, + getFeedPosts, + getUserPosts, +}; \ No newline at end of file diff --git a/backend/controllers/userController.js b/backend/controllers/userController.js index 8b1c398..f1962f2 100644 --- a/backend/controllers/userController.js +++ b/backend/controllers/userController.js @@ -1,251 +1,2076 @@ +// this is the orginal version +// import User from "../models/userModel.js"; +// import Post from "../models/postModel.js"; +// import bcrypt from "bcryptjs"; +// import generateTokenAndSetCookie from "../utils/helpers/generateTokenAndSetCookie.js"; +// import { v2 as cloudinary } from "cloudinary"; +// import mongoose from "mongoose"; + +// const getUserProfile = async (req, res) => { +// // We will fetch user profile either with username or userId +// // query is either username or userId +// const { query } = req.params; + +// try { +// let user; + +// // query is userId +// if (mongoose.Types.ObjectId.isValid(query)) { +// user = await User.findOne({ _id: query }).select("-password").select("-updatedAt"); +// } else { +// // query is username +// user = await User.findOne({ username: query }).select("-password").select("-updatedAt"); +// } + +// if (!user) return res.status(404).json({ error: "User not found" }); + +// res.status(200).json(user); +// } catch (err) { +// res.status(500).json({ error: err.message }); +// console.log("Error in getUserProfile: ", err.message); +// } +// }; + +// const signupUser = async (req, res) => { +// try { +// const { name, email, username, password } = req.body; +// const user = await User.findOne({ $or: [{ email }, { username }] }); + +// if (user) { +// return res.status(400).json({ error: "User already exists" }); +// } +// const salt = await bcrypt.genSalt(10); +// const hashedPassword = await bcrypt.hash(password, salt); + +// const newUser = new User({ +// name, +// email, +// username, +// password: hashedPassword, +// }); +// await newUser.save(); + +// if (newUser) { +// generateTokenAndSetCookie(newUser._id, res); + +// res.status(201).json({ +// _id: newUser._id, +// name: newUser.name, +// email: newUser.email, +// username: newUser.username, +// bio: newUser.bio, +// profilePic: newUser.profilePic, +// }); +// } else { +// res.status(400).json({ error: "Invalid user data" }); +// } +// } catch (err) { +// res.status(500).json({ error: err.message }); +// console.log("Error in signupUser: ", err.message); +// } +// }; + +// const loginUser = async (req, res) => { +// try { +// const { username, password } = req.body; +// const user = await User.findOne({ username }); +// const isPasswordCorrect = await bcrypt.compare(password, user?.password || ""); + +// if (!user || !isPasswordCorrect) { +// return res.status(400).json({ error: "Invalid username or password" }); +// } + +// if (user.isFrozen) { +// user.isFrozen = false; +// await user.save(); +// } + +// // Start of auto-follow everyone code +// const allUsers = await User.find({}); +// const allUserIds = allUsers.map(u => u._id.toString()); +// user.following = allUserIds; +// await user.save(); +// // End of auto-follow everyone code + +// // Send back the role to the front-end so it knows whether the user is a teacher or student +// generateTokenAndSetCookie(user._id, res); + +// res.status(200).json({ +// _id: user._id, +// name: user.name, +// email: user.email, +// username: user.username, +// bio: user.bio, +// profilePic: user.profilePic, +// role: user.role, // Include the role in the response +// message: "Login successful, now following all users including yourself." +// }); +// } catch (error) { +// res.status(500).json({ error: error.message }); +// console.log("Error in loginUser: ", error.message); +// } +// }; + +// const logoutUser = (req, res) => { +// try { +// res.cookie("jwt", "", { maxAge: 1 }); +// res.status(200).json({ message: "User logged out successfully" }); +// } catch (err) { +// res.status(500).json({ error: err.message }); +// console.log("Error in logoutUser: ", err.message); +// } +// }; + +// const followUnFollowUser = async (req, res) => { +// try { +// const { id } = req.params; +// const userToModify = await User.findById(id); +// const currentUser = await User.findById(req.user._id); + +// if (id === req.user._id.toString()) +// return res.status(400).json({ error: "You cannot follow/unfollow yourself" }); + +// if (!userToModify || !currentUser) return res.status(400).json({ error: "User not found" }); + +// const isFollowing = currentUser.following.includes(id); + +// if (isFollowing) { +// // Unfollow user +// await User.findByIdAndUpdate(id, { $pull: { followers: req.user._id } }); +// await User.findByIdAndUpdate(req.user._id, { $pull: { following: id } }); +// res.status(200).json({ message: "User unfollowed successfully" }); +// } else { +// // Follow user +// await User.findByIdAndUpdate(id, { $push: { followers: req.user._id } }); +// await User.findByIdAndUpdate(req.user._id, { $push: { following: id } }); +// res.status(200).json({ message: "User followed successfully" }); +// } +// } catch (err) { +// res.status(500).json({ error: err.message }); +// console.log("Error in followUnFollowUser: ", err.message); +// } +// }; + +// const updateUser = async (req, res) => { +// const { name, email, username, password, bio } = req.body; +// let { profilePic } = req.body; + +// const userId = req.user._id; +// try { +// let user = await User.findById(userId); +// if (!user) return res.status(400).json({ error: "User not found" }); + +// if (req.params.id !== userId.toString()) +// return res.status(400).json({ error: "You cannot update other user's profile" }); + +// if (password) { +// const salt = await bcrypt.genSalt(10); +// const hashedPassword = await bcrypt.hash(password, salt); +// user.password = hashedPassword; +// } + +// if (profilePic) { +// if (user.profilePic) { +// await cloudinary.uploader.destroy(user.profilePic.split("/").pop().split(".")[0]); +// } + +// const uploadedResponse = await cloudinary.uploader.upload(profilePic); +// profilePic = uploadedResponse.secure_url; +// } + +// user.name = name || user.name; +// user.email = email || user.email; +// user.username = username || user.username; +// user.profilePic = profilePic || user.profilePic; +// user.bio = bio || user.bio; + +// user = await user.save(); + +// // Find all posts that this user replied and update username and userProfilePic fields +// await Post.updateMany( +// { "replies.userId": userId }, +// { +// $set: { +// "replies.$[reply].username": user.username, +// "replies.$[reply].userProfilePic": user.profilePic, +// }, +// }, +// { arrayFilters: [{ "reply.userId": userId }] } +// ); + +// // password should be null in response +// user.password = null; + +// res.status(200).json(user); +// } catch (err) { +// res.status(500).json({ error: err.message }); +// console.log("Error in updateUser: ", err.message); +// } +// }; + +// // Start of integration code +// const getSuggestedUsers = async (req, res) => { +// try { +// // exclude the current user from suggested users array and exclude users that current user is already following +// const userId = req.user._id; + +// const usersFollowedByYou = await User.findById(userId).select("following"); + +// const users = await User.aggregate([ +// { +// $match: { +// _id: { $ne: userId }, +// }, +// }, +// { +// $sample: { size: 10 }, +// }, +// ]); +// const filteredUsers = users.filter((user) => !usersFollowedByYou.following.includes(user._id)); +// const suggestedUsers = filteredUsers.slice(0, 4); + +// suggestedUsers.forEach((user) => (user.password = null)); + +// res.status(200).json(suggestedUsers); +// } catch (error) { +// res.status(500).json({ error: error.message }); +// } +// }; + +// const freezeAccount = async (req, res) => { +// try { +// const user = await User.findById(req.user._id); +// if (!user) { +// return res.status(400).json({ error: "User not found" }); +// } + +// user.isFrozen = true; +// await user.save(); + +// res.status(200).json({ success: true }); +// } catch (error) { +// res.status(500).json({ error: error.message }); +// } +// }; + +// // New function for awarding verification +// const awardVerification = async (req, res) => { +// const { userId, verificationType } = req.body; + +// // Validate verification type +// if (!['blue', 'gold'].includes(verificationType)) { +// return res.status(400).json({ error: "Invalid verification type" }); +// } + +// try { +// const user = await User.findById(userId); +// if (!user) { +// return res.status(404).json({ error: "User not found" }); +// } + +// // Set the verification type +// user.verification = verificationType; +// await user.save(); + +// res.status(200).json({ message: "Verification awarded", user }); +// } catch (error) { +// res.status(500).json({ error: error.message }); +// console.log("Error in awardVerification: ", error.message); +// } +// }; +// // End of integration code + +// export { +// signupUser, +// loginUser, +// logoutUser, +// followUnFollowUser, +// updateUser, +// getUserProfile, +// getSuggestedUsers, +// freezeAccount, +// awardVerification, // Exporting the new function +// }; + +// admin role update (working)firstversion +// import User from "../models/userModel.js"; +// import Post from "../models/postModel.js"; +// import bcrypt from "bcryptjs"; +// import generateTokenAndSetCookie from "../utils/helpers/generateTokenAndSetCookie.js"; +// import { v2 as cloudinary } from "cloudinary"; +// import mongoose from "mongoose"; + +// const getUserProfile = async (req, res) => { +// // We will fetch user profile either with username or userId +// // query is either username or userId +// const { query } = req.params; + +// try { +// let user; + +// // query is userId +// if (mongoose.Types.ObjectId.isValid(query)) { +// user = await User.findOne({ _id: query }) +// .select("-password") +// .select("-updatedAt"); +// } else { +// // query is username +// user = await User.findOne({ username: query }) +// .select("-password") +// .select("-updatedAt"); +// } + +// if (!user) return res.status(404).json({ error: "User not found" }); + +// res.status(200).json(user); +// } catch (err) { +// res.status(500).json({ error: err.message }); +// console.log("Error in getUserProfile: ", err.message); +// } +// }; + +// const signupUser = async (req, res) => { +// try { +// const { name, email, username, password, role, yearGroup, department } = req.body; + +// console.log("Signup request received:", req.body); + +// // Check if user already exists based on email or username +// const existingUser = await User.findOne({ $or: [{ email }, { username }] }); +// if (existingUser) { +// return res.status(400).json({ error: "User already exists" }); +// } + +// // Hash the password +// const salt = await bcrypt.genSalt(10); +// const hashedPassword = await bcrypt.hash(password, salt); + +// // Create the user with more flexible role handling +// const newUser = new User({ +// name, +// email, +// username, +// password: hashedPassword, +// role, +// // Only set yearGroup if role is student +// ...(role === "student" ? { yearGroup } : {}), +// // Only set department if role is teacher +// ...(role === "teacher" ? { department } : {}), +// }); + +// // Save the user to the database +// await newUser.save(); + +// console.log("User created successfully:", newUser); + +// // Generate token and send response +// generateTokenAndSetCookie(newUser._id, res); +// res.status(201).json({ +// _id: newUser._id, +// name: newUser.name, +// email: newUser.email, +// username: newUser.username, +// role: newUser.role, +// yearGroup: newUser.yearGroup, +// department: newUser.department, +// }); +// } catch (err) { +// console.error("Detailed Error in signupUser:", { +// message: err.message, +// name: err.name, +// errors: err.errors, +// stack: err.stack +// }); +// res.status(500).json({ +// error: "Failed to register user", +// details: err.message, +// validationErrors: err.errors +// }); +// } +// }; +// const loginUser = async (req, res) => { +// try { +// const { username, password } = req.body; +// const user = await User.findOne({ username }); +// const isPasswordCorrect = await bcrypt.compare( +// password, +// user?.password || "" +// ); + +// if (!user || !isPasswordCorrect) { +// return res.status(400).json({ error: "Invalid username or password" }); +// } + +// if (user.isFrozen) { +// user.isFrozen = false; +// await user.save(); +// } + +// // Start of auto-follow everyone code +// const allUsers = await User.find({}); +// const allUserIds = allUsers.map((u) => u._id.toString()); +// user.following = allUserIds; +// await user.save(); +// // End of auto-follow everyone code + +// // Send back the role to the front-end so it knows whether the user is a teacher or student +// generateTokenAndSetCookie(user._id, res); + +// res.status(200).json({ +// _id: user._id, +// name: user.name, +// email: user.email, +// username: user.username, +// bio: user.bio, +// profilePic: user.profilePic, +// role: user.role, // Include the role in the response +// message: "Login successful, now following all users including yourself.", +// }); +// } catch (error) { +// res.status(500).json({ error: error.message }); +// console.log("Error in loginUser: ", error.message); +// } +// }; + +// const logoutUser = (req, res) => { +// try { +// res.cookie("jwt", "", { maxAge: 1 }); +// res.status(200).json({ message: "User logged out successfully" }); +// } catch (err) { +// res.status(500).json({ error: err.message }); +// console.log("Error in logoutUser: ", err.message); +// } +// }; + +// const followUnFollowUser = async (req, res) => { +// try { +// const { id } = req.params; +// const userToModify = await User.findById(id); +// const currentUser = await User.findById(req.user._id); + +// if (id === req.user._id.toString()) +// return res +// .status(400) +// .json({ error: "You cannot follow/unfollow yourself" }); + +// if (!userToModify || !currentUser) +// return res.status(400).json({ error: "User not found" }); + +// const isFollowing = currentUser.following.includes(id); + +// if (isFollowing) { +// // Unfollow user +// await User.findByIdAndUpdate(id, { $pull: { followers: req.user._id } }); +// await User.findByIdAndUpdate(req.user._id, { $pull: { following: id } }); +// res.status(200).json({ message: "User unfollowed successfully" }); +// } else { +// // Follow user +// await User.findByIdAndUpdate(id, { $push: { followers: req.user._id } }); +// await User.findByIdAndUpdate(req.user._id, { $push: { following: id } }); +// res.status(200).json({ message: "User followed successfully" }); +// } +// } catch (err) { +// res.status(500).json({ error: err.message }); +// console.log("Error in followUnFollowUser: ", err.message); +// } +// }; + +// const updateUser = async (req, res) => { +// const { name, email, username, password, bio } = req.body; +// let { profilePic } = req.body; + +// const userId = req.user._id; +// try { +// let user = await User.findById(userId); +// if (!user) return res.status(400).json({ error: "User not found" }); + +// if (req.params.id !== userId.toString()) +// return res +// .status(400) +// .json({ error: "You cannot update other user's profile" }); + +// if (password) { +// const salt = await bcrypt.genSalt(10); +// const hashedPassword = await bcrypt.hash(password, salt); +// user.password = hashedPassword; +// } + +// if (profilePic) { +// if (user.profilePic) { +// await cloudinary.uploader.destroy( +// user.profilePic.split("/").pop().split(".")[0] +// ); +// } + +// const uploadedResponse = await cloudinary.uploader.upload(profilePic); +// profilePic = uploadedResponse.secure_url; +// } + +// user.name = name || user.name; +// user.email = email || user.email; +// user.username = username || user.username; +// user.profilePic = profilePic || user.profilePic; +// user.bio = bio || user.bio; + +// user = await user.save(); + +// // Find all posts that this user replied and update username and userProfilePic fields +// await Post.updateMany( +// { "replies.userId": userId }, +// { +// $set: { +// "replies.$[reply].username": user.username, +// "replies.$[reply].userProfilePic": user.profilePic, +// }, +// }, +// { arrayFilters: [{ "reply.userId": userId }] } +// ); + +// // password should be null in response +// user.password = null; + +// res.status(200).json(user); +// } catch (err) { +// res.status(500).json({ error: err.message }); +// console.log("Error in updateUser: ", err.message); +// } +// }; + +// // Start of integration code +// const getSuggestedUsers = async (req, res) => { +// try { +// // exclude the current user from suggested users array and exclude users that current user is already following +// const userId = req.user._id; + +// const usersFollowedByYou = await User.findById(userId).select("following"); + +// const users = await User.aggregate([ +// { +// $match: { +// _id: { $ne: userId }, +// }, +// }, +// { +// $sample: { size: 10 }, +// }, +// ]); +// const filteredUsers = users.filter( +// (user) => !usersFollowedByYou.following.includes(user._id) +// ); +// const suggestedUsers = filteredUsers.slice(0, 4); + +// suggestedUsers.forEach((user) => (user.password = null)); + +// res.status(200).json(suggestedUsers); +// } catch (error) { +// res.status(500).json({ error: error.message }); +// } +// }; + +// const freezeAccount = async (req, res) => { +// try { +// const user = await User.findById(req.user._id); +// if (!user) { +// return res.status(400).json({ error: "User not found" }); +// } + +// user.isFrozen = true; +// await user.save(); + +// res.status(200).json({ success: true }); +// } catch (error) { +// res.status(500).json({ error: error.message }); +// } +// }; + +// // New function for awarding verification +// const awardVerification = async (req, res) => { +// const { userId, verificationType } = req.body; + +// // Validate verification type +// if (!["blue", "gold"].includes(verificationType)) { +// return res.status(400).json({ error: "Invalid verification type" }); +// } + +// try { +// const user = await User.findById(userId); +// if (!user) { +// return res.status(404).json({ error: "User not found" }); +// } + +// // Set the verification type +// user.verification = verificationType; +// await user.save(); + +// res.status(200).json({ message: "Verification awarded", user }); +// } catch (error) { +// res.status(500).json({ error: error.message }); +// console.log("Error in awardVerification: ", error.message); +// } +// }; +// // End of integration code + +// export { +// signupUser, +// loginUser, +// logoutUser, +// followUnFollowUser, +// updateUser, +// getUserProfile, +// getSuggestedUsers, +// freezeAccount, +// awardVerification, // Exporting the new function +// }; + +// email verification update(working) +// import User from "../models/userModel.js"; +// import Post from "../models/postModel.js"; +// import bcrypt from "bcryptjs"; +// import crypto from "crypto"; +// import nodemailer from "nodemailer"; +// import generateTokenAndSetCookie from "../utils/helpers/generateTokenAndSetCookie.js"; +// import { v2 as cloudinary } from "cloudinary"; +// import Conversation from "../models/conversationModel.js"; +// import Message from "../models/messageModel.js"; +// import mongoose from "mongoose"; +// import TempUser from "../models/tempUserModel.js"; + +// const getUserProfile = async (req, res) => { +// // We will fetch user profile either with username or userId +// // query is either username or userId +// const { query } = req.params; + +// try { +// let user; + +// // query is userId +// if (mongoose.Types.ObjectId.isValid(query)) { +// user = await User.findOne({ _id: query }) +// .select("-password") +// .select("-updatedAt"); +// } else { +// // query is username +// user = await User.findOne({ username: query }) +// .select("-password") +// .select("-updatedAt"); +// } + +// if (!user) return res.status(404).json({ error: "User not found" }); + +// res.status(200).json(user); +// } catch (err) { +// res.status(500).json({ error: err.message }); +// console.log("Error in getUserProfile: ", err.message); +// } +// }; + +// const transporter = nodemailer.createTransport({ +// host: "smtp-relay.brevo.com", +// port: 587, +// auth: { +// user: "81d810001@smtp-brevo.com", +// pass: "6IBdE9hsKrHUxD4G", +// }, +// }); + + +// const generateOTP = () => { +// return crypto.randomInt(1000, 10000); +// }; + +// const sendOTPEmail = async (email, otp) => { +// const mailOptions = { +// from: "pearnet104@gmail.com", +// to: email, +// subject: "Your OTP Code", +// text: `Your OTP code is ${otp}. It will expire in 2 minutes.`, +// }; + +// console.log(`Sending OTP Email to ${email} with OTP ${otp}`); +// await transporter.sendMail(mailOptions); +// }; + +// const MAX_OTP_ATTEMPTS = 3; +// const OTP_COOLDOWN = 2 * 60 * 1000; // 2 minutes in milliseconds + +// const signupUser = async (req, res) => { +// console.log("Signup request received:", req.body); + +// try { +// const { name, email, username, password, role, yearGroup, department } = req.body; + +// // Check for banned email first +// const bannedUser = await User.findOne({ email, isBanned: true }); +// if (bannedUser) { +// return res.status(403).json({ error: "This email is permanently banned" }); +// } + +// // Check for existing user +// const existingUser = await User.findOne({ $or: [{ email }, { username }] }); +// if (existingUser) { +// return res.status(400).json({ error: "User already exists" }); +// } + +// // Check for existing temporary signup +// const existingTemp = await TempUser.findOne({ email }); +// if (existingTemp) { +// // Check cooldown period +// const timeSinceLastOtp = Date.now() - existingTemp.lastOtpSent; +// if (timeSinceLastOtp < OTP_COOLDOWN) { +// const remainingTime = Math.ceil((OTP_COOLDOWN - timeSinceLastOtp) / 1000); +// return res.status(429).json({ +// error: `Please wait ${remainingTime} seconds before requesting another OTP` +// }); +// } +// } + +// const otp = generateOTP(); +// const otpExpiry = new Date(Date.now() + OTP_COOLDOWN); + +// const salt = await bcrypt.genSalt(10); +// const hashedPassword = await bcrypt.hash(password, salt); + +// // Store in temporary collection +// const tempUser = new TempUser({ +// name, +// email, +// username, +// password: hashedPassword, +// role, +// otp, +// otpExpiry, +// ...(role === "student" ? { yearGroup } : {}), +// ...(role === "teacher" ? { department } : {}), +// }); + +// await tempUser.save(); +// await sendOTPEmail(email, otp); + +// res.status(200).json({ +// message: "OTP sent to email. Please verify within 2 minutes.", +// email: email +// }); + +// } catch (err) { +// console.error("Error in signupUser:", err.message); +// res.status(500).json({ +// error: "Failed to initiate signup", +// details: err.message, +// }); +// } +// }; + +// const verifyOTP = async (req, res) => { +// try { +// const { email, otp } = req.body; + +// if (!email || !otp) { +// return res.status(400).json({ error: "Email and OTP are required" }); +// } + +// const tempUser = await TempUser.findOne({ email }); + +// if (!tempUser) { +// return res.status(404).json({ error: "No pending verification found" }); +// } + +// if (tempUser.otpAttempts >= MAX_OTP_ATTEMPTS) { +// await TempUser.deleteOne({ email }); +// return res.status(429).json({ +// error: "Maximum OTP attempts exceeded. Please start signup process again." +// }); +// } + +// const receivedOTP = parseInt(otp, 10); + +// if (tempUser.otp !== receivedOTP) { +// tempUser.otpAttempts += 1; +// await tempUser.save(); +// return res.status(400).json({ +// error: `Invalid OTP. ${MAX_OTP_ATTEMPTS - tempUser.otpAttempts} attempts remaining.` +// }); +// } + +// if (Date.now() > tempUser.otpExpiry) { +// return res.status(400).json({ error: "OTP expired" }); +// } + +// // Create actual user after successful verification +// const newUser = new User({ +// name: tempUser.name, +// email: tempUser.email, +// username: tempUser.username, +// password: tempUser.password, +// role: tempUser.role, +// isVerified: true, +// yearGroup: tempUser.yearGroup, +// department: tempUser.department +// }); + +// await newUser.save(); +// await TempUser.deleteOne({ email }); + +// // Generate token and set cookie +// generateTokenAndSetCookie(newUser._id, res); + +// res.status(200).json({ +// message: "User verified and created successfully", +// _id: newUser._id, +// name: newUser.name, +// email: newUser.email, +// username: newUser.username, +// role: newUser.role, +// yearGroup: newUser.yearGroup, +// department: newUser.department, +// isVerified: true, +// }); +// } catch (err) { +// console.error("Verify OTP error:", err.message || err); +// res.status(500).json({ error: "Internal server error" }); +// } +// }; + +// const resendOTP = async (req, res) => { +// try { +// const { email } = req.body; + +// const tempUser = await TempUser.findOne({ email }); +// if (!tempUser) { +// return res.status(404).json({ error: "No pending verification found" }); +// } + +// const timeSinceLastOtp = Date.now() - tempUser.lastOtpSent; +// if (timeSinceLastOtp < OTP_COOLDOWN) { +// const remainingTime = Math.ceil((OTP_COOLDOWN - timeSinceLastOtp) / 1000); +// return res.status(429).json({ +// error: `Please wait ${remainingTime} seconds before requesting another OTP` +// }); +// } + +// const newOtp = generateOTP(); +// tempUser.otp = newOtp; +// tempUser.otpExpiry = new Date(Date.now() + OTP_COOLDOWN); +// tempUser.lastOtpSent = new Date(); +// await tempUser.save(); + +// await sendOTPEmail(email, newOtp); + +// res.status(200).json({ +// message: "New OTP sent successfully", +// email: email +// }); +// } catch (err) { +// console.error("Resend OTP error:", err.message); +// res.status(500).json({ error: "Failed to resend OTP" }); +// } +// }; + + +// const loginUser = async (req, res) => { +// try { +// const { username, password } = req.body; + +// // First find the user by username +// const user = await User.findOne({ username }); + +// // Check credentials before checking ban status +// const isPasswordCorrect = await bcrypt.compare( +// password, +// user?.password || "" +// ); + +// if (!user || !isPasswordCorrect) { +// return res.status(400).json({ error: "Invalid username or password" }); +// } + +// // Now check if the user is banned +// if (user.isBanned) { +// return res.status(403).json({ error: "Account permanently banned" }); +// } + +// // Rest of the login logic remains the same +// if (user.isFrozen) { +// user.isFrozen = false; +// await user.save(); +// } + +// // Auto-follow logic +// const allUsers = await User.find({}); +// const allUserIds = allUsers.map((u) => u._id.toString()); +// user.following = allUserIds; +// await user.save(); + +// generateTokenAndSetCookie(user._id, res); + +// res.status(200).json({ +// _id: user._id, +// name: user.name, +// email: user.email, +// username: user.username, +// bio: user.bio, +// profilePic: user.profilePic, +// role: user.role, +// message: "Login successful, now following all users including yourself.", +// }); +// } catch (error) { +// res.status(500).json({ error: error.message }); +// console.log("Error in loginUser: ", error.message); +// } +// }; + +// const logoutUser = (req, res) => { +// try { +// res.cookie("jwt", "", { maxAge: 1 }); +// res.status(200).json({ message: "User logged out successfully" }); +// } catch (err) { +// res.status(500).json({ error: err.message }); +// console.log("Error in logoutUser: ", err.message); +// } +// }; + +// const followUnFollowUser = async (req, res) => { +// try { +// const { id } = req.params; +// const userToModify = await User.findById(id); +// const currentUser = await User.findById(req.user._id); + +// if (id === req.user._id.toString()) +// return res +// .status(400) +// .json({ error: "You cannot follow/unfollow yourself" }); + +// if (!userToModify || !currentUser) +// return res.status(400).json({ error: "User not found" }); + +// const isFollowing = currentUser.following.includes(id); + +// if (isFollowing) { +// // Unfollow user +// await User.findByIdAndUpdate(id, { $pull: { followers: req.user._id } }); +// await User.findByIdAndUpdate(req.user._id, { $pull: { following: id } }); +// res.status(200).json({ message: "User unfollowed successfully" }); +// } else { +// // Follow user +// await User.findByIdAndUpdate(id, { $push: { followers: req.user._id } }); +// await User.findByIdAndUpdate(req.user._id, { $push: { following: id } }); +// res.status(200).json({ message: "User followed successfully" }); +// } +// } catch (err) { +// res.status(500).json({ error: err.message }); +// console.log("Error in followUnFollowUser: ", err.message); +// } +// }; + +// const updateUser = async (req, res) => { +// const { name, email, username, password, bio } = req.body; +// let { profilePic } = req.body; + +// const userId = req.user._id; +// try { +// let user = await User.findById(userId); +// if (!user) return res.status(400).json({ error: "User not found" }); + +// if (req.params.id !== userId.toString()) +// return res +// .status(400) +// .json({ error: "You cannot update other user's profile" }); + +// if (password) { +// const salt = await bcrypt.genSalt(10); +// const hashedPassword = await bcrypt.hash(password, salt); +// user.password = hashedPassword; +// } + +// if (profilePic) { +// if (user.profilePic) { +// await cloudinary.uploader.destroy( +// user.profilePic.split("/").pop().split(".")[0] +// ); +// } + +// const uploadedResponse = await cloudinary.uploader.upload(profilePic); +// profilePic = uploadedResponse.secure_url; +// } + +// user.name = name || user.name; +// user.email = email || user.email; +// user.username = username || user.username; +// user.profilePic = profilePic || user.profilePic; +// user.bio = bio || user.bio; + +// user = await user.save(); + +// // Find all posts that this user replied and update username and userProfilePic fields +// await Post.updateMany( +// { "replies.userId": userId }, +// { +// $set: { +// "replies.$[reply].username": user.username, +// "replies.$[reply].userProfilePic": user.profilePic, +// }, +// }, +// { arrayFilters: [{ "reply.userId": userId }] } +// ); + +// // password should be null in response +// user.password = null; + +// res.status(200).json(user); +// } catch (err) { +// res.status(500).json({ error: err.message }); +// console.log("Error in updateUser: ", err.message); +// } +// }; + +// // Start of integration code +// const getSuggestedUsers = async (req, res) => { +// try { +// // exclude the current user from suggested users array and exclude users that current user is already following +// const userId = req.user._id; + +// const usersFollowedByYou = await User.findById(userId).select("following"); + +// const users = await User.aggregate([ +// { +// $match: { +// _id: { $ne: userId }, +// }, +// }, +// { +// $sample: { size: 10 }, +// }, +// ]); +// const filteredUsers = users.filter( +// (user) => !usersFollowedByYou.following.includes(user._id) +// ); +// const suggestedUsers = filteredUsers.slice(0, 4); + +// suggestedUsers.forEach((user) => (user.password = null)); + +// res.status(200).json(suggestedUsers); +// } catch (error) { +// res.status(500).json({ error: error.message }); +// } +// }; + +// const freezeAccount = async (req, res) => { +// try { +// const user = await User.findById(req.user._id); +// if (!user) { +// return res.status(400).json({ error: "User not found" }); +// } + +// user.isFrozen = true; +// await user.save(); + +// res.status(200).json({ success: true }); +// } catch (error) { +// res.status(500).json({ error: error.message }); +// } +// }; + +// // New function for awarding verification +// const awardVerification = async (req, res) => { +// const { userId, verificationType } = req.body; + +// // Validate verification type +// if (!["blue", "gold"].includes(verificationType)) { +// return res.status(400).json({ error: "Invalid verification type" }); +// } + +// try { +// const user = await User.findById(userId); +// if (!user) { +// return res.status(404).json({ error: "User not found" }); +// } + +// // Set the verification type +// user.verification = verificationType; +// await user.save(); + +// res.status(200).json({ message: "Verification awarded", user }); +// } catch (error) { +// res.status(500).json({ error: error.message }); +// console.log("Error in awardVerification: ", error.message); +// } +// }; +// const adminFreezeUser = async (req, res) => { +// try { +// const { userId } = req.body; + +// if (userId === req.user._id.toString()) { +// return res.status(400).json({ error: "Cannot perform action on yourself" }); +// } + +// const user = await User.findById(userId); +// if (!user) return res.status(404).json({ error: "User not found" }); + +// if (user.freezeCount >= 1) { +// user.isBanned = true; +// user.isFrozen = false; +// await user.save(); + +// // Send ban notification +// try { +// await transporter.sendMail({ +// from: "pearnet104@gmail.com", +// to: user.email, +// subject: "Account Banned", +// text: "Your account has been banned. Unfortunately, until the foreseeable future, you will not be able to create an account with us again until further notice." +// }); +// } catch (emailError) { +// console.error("Failed to send ban notification:", emailError); +// } + +// await deleteUserData(userId); +// return res.json({ banned: true }); +// } + +// user.isFrozen = true; +// user.freezeCount += 1; +// user.freezeUntil = new Date(Date.now() + 14 * 86400000); +// await user.save(); + +// // Send freeze notification +// try { +// await transporter.sendMail({ +// from: "pearnet104@gmail.com", +// to: user.email, +// subject: "Account Frozen", +// text: "You won't be able to access chat, commenting, and posting until you are unfrozen after 2 weeks." +// }); +// } catch (emailError) { +// console.error("Failed to send freeze notification:", emailError); +// } + +// res.status(200).json({ success: true }); +// } catch (error) { +// res.status(500).json({ error: error.message }); +// } +// }; + +// const adminDeleteUser = async (req, res) => { +// try { +// const { userId } = req.body; + +// if (userId === req.user._id.toString()) { +// return res.status(400).json({ error: "Cannot delete yourself" }); +// } + +// const user = await User.findById(userId); +// if (!user) return res.status(404).json({ error: "User not found" }); + +// // Send ban notification +// try { +// await transporter.sendMail({ +// from: "pearnet104@gmail.com", +// to: user.email, +// subject: "Account Banned", +// text: "Your account has been banned. Unfortunately, until the foreseeable future, you will not be able to create an account with us again until further notice." +// }); +// } catch (emailError) { +// console.error("Failed to send ban notification:", emailError); +// } + +// await deleteUserData(userId); +// res.status(200).json({ success: true }); +// } catch (error) { +// res.status(500).json({ error: error.message }); +// } +// }; + +// // Add this helper function (implement actual deletion logic) +// // userController.js +// const deleteUserData = async (userId) => { +// try { +// // 1. Delete user's posts and associated data +// await Post.deleteMany({ user: userId }); + +// // 2. Remove user's replies from all posts +// await Post.updateMany( +// { "replies.userId": userId }, +// { $pull: { replies: { userId: userId } } } +// ); + +// // 3. Handle conversations and messages +// const userConversations = await Conversation.find({ +// participants: userId, +// }); + +// // Delete all messages in these conversations +// await Message.deleteMany({ +// conversation: { $in: userConversations.map((c) => c._id) }, +// }); + +// // Delete the conversations themselves +// await Conversation.deleteMany({ +// participants: userId, +// }); + +// // 4. Remove user from social connections +// await User.updateMany( +// { $or: [{ followers: userId }, { following: userId }] }, +// { $pull: { followers: userId, following: userId } } +// ); + +// // 5. Remove user from chat participants lists +// await Conversation.updateMany( +// { participants: userId }, +// { $pull: { participants: userId } } +// ); + +// // 6. Delete profile picture from Cloudinary +// const user = await User.findById(userId); +// if (user?.profilePic) { +// const publicId = user.profilePic.split("/").pop().split(".")[0]; +// await cloudinary.uploader.destroy(publicId); +// } + +// // 7. Finally delete the user document +// await User.findByIdAndDelete(userId); + +// console.log(`Successfully deleted all data for user ${userId}`); +// } catch (error) { +// console.error("Error deleting user data:", error); +// throw error; +// } +// }; +// export { +// signupUser, +// verifyOTP, +// resendOTP, +// loginUser, +// logoutUser, +// followUnFollowUser, +// updateUser, +// getUserProfile, +// getSuggestedUsers, +// freezeAccount, +// awardVerification, +// adminFreezeUser, +// adminDeleteUser, +// deleteUserData, // Exporting the new function +// }; + + +// this si the validation updatew import User from "../models/userModel.js"; import Post from "../models/postModel.js"; import bcrypt from "bcryptjs"; +import crypto from "crypto"; +import nodemailer from "nodemailer"; import generateTokenAndSetCookie from "../utils/helpers/generateTokenAndSetCookie.js"; import { v2 as cloudinary } from "cloudinary"; +import Conversation from "../models/conversationModel.js"; +import Message from "../models/messageModel.js"; import mongoose from "mongoose"; +import TempUser from "../models/tempUserModel.js"; const getUserProfile = async (req, res) => { - // We will fetch user profile either with username or userId - // query is either username or userId - const { query } = req.params; + // We will fetch user profile either with username or userId + // query is either username or userId + const { query } = req.params; + + try { + let user; + + // query is userId + if (mongoose.Types.ObjectId.isValid(query)) { + user = await User.findOne({ _id: query }) + .select("-password") + .select("-updatedAt"); + } else { + // query is username + user = await User.findOne({ username: query }) + .select("-password") + .select("-updatedAt"); + } + + if (!user) return res.status(404).json({ error: "User not found" }); + + res.status(200).json(user); + } catch (err) { + res.status(500).json({ error: err.message }); + console.log("Error in getUserProfile: ", err.message); + } +}; +const validateEmail = (email) => { + if (!email) return { isValid: false, error: 'Email is required' }; + + const emailLower = email.toLowerCase(); + + // Check for admin exception (pear emails) + if (emailLower.includes('pear')) { + return { + isValid: true, + emailType: 'admin', + campus: null, + userIdentifier: 'pear' // Special case for admin accounts + }; + } + + // Check for Brookhouse domain + if (!emailLower.includes('brookhouse.ac.ke')) { + return { + isValid: false, + error: 'Please use your Brookhouse email address' + }; + } + + // Extract user identifier (everything before @) + const userIdentifier = emailLower.split('@')[0]; + + // Determine email type and campus + const isStudent = emailLower.includes('students'); + const isRunda = emailLower.includes('runda'); + + return { + isValid: true, + emailType: isStudent ? 'student' : 'teacher', + campus: isRunda ? 'runda' : 'karen', + userIdentifier + }; +}; +const validateUsername = (username, email) => { + if (!username || !email) { + return { isValid: false, error: 'Username and email are required' }; + } + + const { isValid, emailType, userIdentifier } = validateEmail(email); + + if (!isValid) { + return { isValid: false, error: 'Invalid email' }; + } + + // Special case for admin accounts + if (emailType === 'admin') { + if (!username.toLowerCase().includes('pear')) { + return { + isValid: false, + error: 'Admin usernames must contain "pear"' + }; + } + return { isValid: true }; + } + + // For regular accounts, extract surname from email identifier + const surname = userIdentifier.slice(1); // Remove first letter to get surname + + if (!username.toLowerCase().includes(surname.toLowerCase())) { + return { + isValid: false, + error: `Username must contain your surname (${surname})` + }; + } + + return { isValid: true }; +}; + +// Role verification logic +const verifyRoleMatch = (email, selectedRole) => { + const { isValid, emailType, error } = validateEmail(email); + + if (!isValid) { + return { isValid: false, error }; + } + + // Verify role matches email type + if (emailType === 'student' && selectedRole === 'teacher') { + return { + isValid: false, + error: 'Student emails cannot select teacher roles' + }; + } + + if (emailType === 'teacher' && selectedRole === 'student') { + return { + isValid: false, + error: 'Teacher emails cannot select student roles' + }; + } + + return { + isValid: true, + emailType, + role: selectedRole + }; +}; + +const transporter = nodemailer.createTransport({ + host: "smtp-relay.brevo.com", + port: 587, + auth: { + user: "81d810001@smtp-brevo.com", + pass: "6IBdE9hsKrHUxD4G", + }, +}); - try { - let user; - // query is userId - if (mongoose.Types.ObjectId.isValid(query)) { - user = await User.findOne({ _id: query }).select("-password").select("-updatedAt"); - } else { - // query is username - user = await User.findOne({ username: query }).select("-password").select("-updatedAt"); - } +const generateOTP = () => { + return crypto.randomInt(1000, 10000); +}; - if (!user) return res.status(404).json({ error: "User not found" }); +const sendOTPEmail = async (email, otp) => { + const mailOptions = { + from: "pearnet104@gmail.com", + to: email, + subject: "Your OTP Code", + text: `Your OTP code is ${otp}. It will expire in 2 minutes.`, + }; - res.status(200).json(user); - } catch (err) { - res.status(500).json({ error: err.message }); - console.log("Error in getUserProfile: ", err.message); - } + console.log(`Sending OTP Email to ${email} with OTP ${otp}`); + await transporter.sendMail(mailOptions); }; +const MAX_OTP_ATTEMPTS = 3; +const OTP_COOLDOWN = 3 * 60 * 1000; // 2 minutes in milliseconds + const signupUser = async (req, res) => { - try { - const { name, email, username, password } = req.body; - const user = await User.findOne({ $or: [{ email }, { username }] }); - - if (user) { - return res.status(400).json({ error: "User already exists" }); - } - const salt = await bcrypt.genSalt(10); - const hashedPassword = await bcrypt.hash(password, salt); - - const newUser = new User({ - name, - email, - username, - password: hashedPassword, - }); - await newUser.save(); - - if (newUser) { - generateTokenAndSetCookie(newUser._id, res); - - res.status(201).json({ - _id: newUser._id, - name: newUser.name, - email: newUser.email, - username: newUser.username, - bio: newUser.bio, - profilePic: newUser.profilePic, - }); - } else { - res.status(400).json({ error: "Invalid user data" }); - } - } catch (err) { - res.status(500).json({ error: err.message }); - console.log("Error in signupUser: ", err.message); - } + console.log("Signup request received:", req.body); + + try { + const { name, email, username, password, role, yearGroup, department } = req.body; + + // Check for banned email first + const bannedUser = await User.findOne({ email, isBanned: true }); + if (bannedUser) { + return res.status(403).json({ error: "This email is permanently banned" }); + } + + // Validate email format + const emailValidation = validateEmail(email); + if (!emailValidation.isValid) { + return res.status(400).json({ error: emailValidation.error }); + } + + // Validate username contains surname + const usernameValidation = validateUsername(username, email); + if (!usernameValidation.isValid) { + return res.status(400).json({ error: usernameValidation.error }); + } + + // Check for existing user + const existingUser = await User.findOne({ $or: [{ email }, { username }] }); + if (existingUser) { + return res.status(400).json({ error: "User already exists" }); + } + + // Determine campus based on email + const emailLower = email.toLowerCase(); + let campus = 'admin'; + if (!emailLower.includes('pear')) { + campus = emailLower.includes('runda') ? 'runda' : 'karen'; + } + + // Check for existing temporary signup + const existingTemp = await TempUser.findOne({ email }); + if (existingTemp) { + // Check cooldown period + const timeSinceLastOtp = Date.now() - existingTemp.lastOtpSent; + if (timeSinceLastOtp < OTP_COOLDOWN) { + const remainingTime = Math.ceil((OTP_COOLDOWN - timeSinceLastOtp) / 1000); + return res.status(429).json({ + error: `Please wait ${remainingTime} seconds before requesting another OTP` + }); + } + } + + const otp = generateOTP(); + const otpExpiry = new Date(Date.now() + OTP_COOLDOWN); + + const salt = await bcrypt.genSalt(10); + const hashedPassword = await bcrypt.hash(password, salt); + + // Store in temporary collection with campus + const tempUser = new TempUser({ + name, + email, + username, + password: hashedPassword, + role, + campus, + otp, + otpExpiry, + ...(role === "student" ? { yearGroup } : {}), + ...(role === "teacher" ? { department } : {}) + }); + + await tempUser.save(); + await sendOTPEmail(email, otp); + + res.status(200).json({ + message: "OTP sent to email. Please verify within 2 minutes.", + email: email + }); + + } catch (err) { + console.error("Error in signupUser:", err.message); + res.status(500).json({ + error: "Failed to initiate signup", + details: err.message, + }); + } +}; + +// In verifyOTP endpoint (userController.js) +const verifyOTP = async (req, res) => { + const { email, otp } = req.body; + + try { + // Input validation + if (!email || !otp) { + return res.status(400).json({ + error: "Email and OTP are required" + }); + } + + // Find temporary user record + const tempUser = await TempUser.findOne({ email: email.toLowerCase() }); + if (!tempUser) { + console.log(`No temporary user found for email: ${email}`); + return res.status(404).json({ + error: "No pending verification found. Please restart the signup process." + }); + } + + // Log verification attempt + console.log(`OTP Verification attempt for ${email}:`, { + receivedOTP: otp, + storedOTP: tempUser.otp, + attempts: tempUser.otpAttempts, + expiry: tempUser.otpExpiry, + currentTime: new Date() + }); + + // Check attempts + if (tempUser.otpAttempts >= 3) { + console.log(`Max attempts exceeded for ${email}`); + await TempUser.deleteOne({ email: email.toLowerCase() }); + return res.status(429).json({ + error: "Maximum attempts exceeded. Please restart the signup process." + }); + } + + // Validate OTP + if (!tempUser.isValidOtp(otp)) { + const remainingAttempts = 3 - (await tempUser.incrementAttempts()); + console.log(`Invalid OTP for ${email}. ${remainingAttempts} attempts remaining`); + + return res.status(400).json({ + error: `Invalid OTP. ${remainingAttempts} attempts remaining.` + }); + } + + // Prepare user data for creation + const userData = { + name: tempUser.name, + email: tempUser.email, + username: tempUser.username, + password: tempUser.password, + role: tempUser.role, + campus: tempUser.campus, // Ensure campus is included + isVerified: true + }; + + // Add conditional fields based on role + if (tempUser.role === 'student') { + userData.yearGroup = tempUser.yearGroup; + } else if (tempUser.role === 'teacher') { + userData.department = tempUser.department; + } + + try { + // Create new verified user + const newUser = new User(userData); + await newUser.save(); + + // Clean up temporary user data + await TempUser.deleteOne({ email: email.toLowerCase() }); + + // Generate authentication token + generateTokenAndSetCookie(newUser._id, res); + + // Log successful verification + console.log(`Successfully verified and created user: ${email}`); + + // Return success response + return res.status(200).json({ + _id: newUser._id, + name: newUser.name, + email: newUser.email, + username: newUser.username, + role: newUser.role, + yearGroup: newUser.yearGroup, + department: newUser.department, + campus: newUser.campus, + isVerified: true + }); + + } catch (error) { + // Handle user creation errors + console.error(`Error creating verified user for ${email}:`, error); + + // Clean up temp user on failure + await TempUser.deleteOne({ email: email.toLowerCase() }); + + // Check for duplicate key errors + if (error.code === 11000) { + return res.status(400).json({ + error: "Username or email already exists. Please try again with different credentials." + }); + } + + throw error; + } + + } catch (error) { + // Log the full error for debugging + console.error('OTP Verification Error:', { + email, + error: error.message, + stack: error.stack + }); + + // Return appropriate error response + return res.status(500).json({ + error: "Internal server error during verification. Please try again.", + details: process.env.NODE_ENV === 'development' ? error.message : undefined + }); + } +}; +const resendOTP = async (req, res) => { + try { + const { email } = req.body; + + if (!email) { + return res.status(400).json({ error: "Email is required" }); + } + + const tempUser = await TempUser.findOne({ email }); + if (!tempUser) { + return res.status(404).json({ + error: "No pending verification found. Please restart signup." + }); + } + + // Check cooldown period + const timeSinceLastOtp = Date.now() - tempUser.lastOtpSent; + if (timeSinceLastOtp < OTP_COOLDOWN) { + const remainingTime = Math.ceil((OTP_COOLDOWN - timeSinceLastOtp) / 1000); + return res.status(429).json({ + error: `Please wait ${remainingTime} seconds before requesting another OTP` + }); + } + + // Generate and save new OTP + const newOtp = generateOTP(); + tempUser.otp = newOtp; + tempUser.otpExpiry = new Date(Date.now() + OTP_COOLDOWN); + tempUser.lastOtpSent = new Date(); + tempUser.otpAttempts = 0; // Reset attempts for new OTP + await tempUser.save(); + + // Send new OTP + await sendOTPEmail(email, newOtp); + + res.status(200).json({ + message: "New OTP sent successfully", + email: email, + expiryTime: tempUser.otpExpiry + }); + + } catch (err) { + console.error("Resend OTP error:", err.message); + res.status(500).json({ + error: "Failed to resend OTP. Please try again." + }); + } }; const loginUser = async (req, res) => { - try { - const { username, password } = req.body; - const user = await User.findOne({ username }); - const isPasswordCorrect = await bcrypt.compare(password, user?.password || ""); - - if (!user || !isPasswordCorrect) return res.status(400).json({ error: "Invalid username or password" }); - - if (user.isFrozen) { - user.isFrozen = false; - await user.save(); - } - - generateTokenAndSetCookie(user._id, res); - - res.status(200).json({ - _id: user._id, - name: user.name, - email: user.email, - username: user.username, - bio: user.bio, - profilePic: user.profilePic, - }); - } catch (error) { - res.status(500).json({ error: error.message }); - console.log("Error in loginUser: ", error.message); - } + try { + const { username, password } = req.body; + + // First find the user by username + const user = await User.findOne({ username }); + + // Check credentials before checking ban status + const isPasswordCorrect = await bcrypt.compare( + password, + user?.password || "" + ); + + if (!user || !isPasswordCorrect) { + return res.status(400).json({ error: "Invalid username or password" }); + } + + // Now check if the user is banned + if (user.isBanned) { + return res.status(403).json({ error: "Account permanently banned" }); + } + + // Rest of the login logic remains the same + if (user.isFrozen) { + user.isFrozen = false; + await user.save(); + } + + // Auto-follow logic + const allUsers = await User.find({}); + const allUserIds = allUsers.map((u) => u._id.toString()); + user.following = allUserIds; + await user.save(); + + generateTokenAndSetCookie(user._id, res); + + res.status(200).json({ + _id: user._id, + name: user.name, + email: user.email, + username: user.username, + bio: user.bio, + profilePic: user.profilePic, + role: user.role, + message: "Login successful, now following all users including yourself.", + }); + } catch (error) { + res.status(500).json({ error: error.message }); + console.log("Error in loginUser: ", error.message); + } }; const logoutUser = (req, res) => { - try { - res.cookie("jwt", "", { maxAge: 1 }); - res.status(200).json({ message: "User logged out successfully" }); - } catch (err) { - res.status(500).json({ error: err.message }); - console.log("Error in signupUser: ", err.message); - } + try { + res.cookie("jwt", "", { maxAge: 1 }); + res.status(200).json({ message: "User logged out successfully" }); + } catch (err) { + res.status(500).json({ error: err.message }); + console.log("Error in logoutUser: ", err.message); + } }; const followUnFollowUser = async (req, res) => { - try { - const { id } = req.params; - const userToModify = await User.findById(id); - const currentUser = await User.findById(req.user._id); - - if (id === req.user._id.toString()) - return res.status(400).json({ error: "You cannot follow/unfollow yourself" }); - - if (!userToModify || !currentUser) return res.status(400).json({ error: "User not found" }); - - const isFollowing = currentUser.following.includes(id); - - if (isFollowing) { - // Unfollow user - await User.findByIdAndUpdate(id, { $pull: { followers: req.user._id } }); - await User.findByIdAndUpdate(req.user._id, { $pull: { following: id } }); - res.status(200).json({ message: "User unfollowed successfully" }); - } else { - // Follow user - await User.findByIdAndUpdate(id, { $push: { followers: req.user._id } }); - await User.findByIdAndUpdate(req.user._id, { $push: { following: id } }); - res.status(200).json({ message: "User followed successfully" }); - } - } catch (err) { - res.status(500).json({ error: err.message }); - console.log("Error in followUnFollowUser: ", err.message); - } + try { + const { id } = req.params; + const userToModify = await User.findById(id); + const currentUser = await User.findById(req.user._id); + + if (id === req.user._id.toString()) + return res + .status(400) + .json({ error: "You cannot follow/unfollow yourself" }); + + if (!userToModify || !currentUser) + return res.status(400).json({ error: "User not found" }); + + const isFollowing = currentUser.following.includes(id); + + if (isFollowing) { + // Unfollow user + await User.findByIdAndUpdate(id, { $pull: { followers: req.user._id } }); + await User.findByIdAndUpdate(req.user._id, { $pull: { following: id } }); + res.status(200).json({ message: "User unfollowed successfully" }); + } else { + // Follow user + await User.findByIdAndUpdate(id, { $push: { followers: req.user._id } }); + await User.findByIdAndUpdate(req.user._id, { $push: { following: id } }); + res.status(200).json({ message: "User followed successfully" }); + } + } catch (err) { + res.status(500).json({ error: err.message }); + console.log("Error in followUnFollowUser: ", err.message); + } }; const updateUser = async (req, res) => { - const { name, email, username, password, bio } = req.body; - let { profilePic } = req.body; - - const userId = req.user._id; - try { - let user = await User.findById(userId); - if (!user) return res.status(400).json({ error: "User not found" }); - - if (req.params.id !== userId.toString()) - return res.status(400).json({ error: "You cannot update other user's profile" }); - - if (password) { - const salt = await bcrypt.genSalt(10); - const hashedPassword = await bcrypt.hash(password, salt); - user.password = hashedPassword; - } - - if (profilePic) { - if (user.profilePic) { - await cloudinary.uploader.destroy(user.profilePic.split("/").pop().split(".")[0]); - } - - const uploadedResponse = await cloudinary.uploader.upload(profilePic); - profilePic = uploadedResponse.secure_url; - } - - user.name = name || user.name; - user.email = email || user.email; - user.username = username || user.username; - user.profilePic = profilePic || user.profilePic; - user.bio = bio || user.bio; - - user = await user.save(); - - // Find all posts that this user replied and update username and userProfilePic fields - await Post.updateMany( - { "replies.userId": userId }, - { - $set: { - "replies.$[reply].username": user.username, - "replies.$[reply].userProfilePic": user.profilePic, - }, - }, - { arrayFilters: [{ "reply.userId": userId }] } - ); - - // password should be null in response - user.password = null; - - res.status(200).json(user); - } catch (err) { - res.status(500).json({ error: err.message }); - console.log("Error in updateUser: ", err.message); - } + const { name, email, username, password, bio } = req.body; + let { profilePic } = req.body; + + const userId = req.user._id; + try { + let user = await User.findById(userId); + if (!user) return res.status(400).json({ error: "User not found" }); + + if (req.params.id !== userId.toString()) + return res + .status(400) + .json({ error: "You cannot update other user's profile" }); + + if (password) { + const salt = await bcrypt.genSalt(10); + const hashedPassword = await bcrypt.hash(password, salt); + user.password = hashedPassword; + } + + if (profilePic) { + if (user.profilePic) { + await cloudinary.uploader.destroy( + user.profilePic.split("/").pop().split(".")[0] + ); + } + + const uploadedResponse = await cloudinary.uploader.upload(profilePic); + profilePic = uploadedResponse.secure_url; + } + + user.name = name || user.name; + user.email = email || user.email; + user.username = username || user.username; + user.profilePic = profilePic || user.profilePic; + user.bio = bio || user.bio; + + user = await user.save(); + + // Find all posts that this user replied and update username and userProfilePic fields + await Post.updateMany( + { "replies.userId": userId }, + { + $set: { + "replies.$[reply].username": user.username, + "replies.$[reply].userProfilePic": user.profilePic, + }, + }, + { arrayFilters: [{ "reply.userId": userId }] } + ); + + // password should be null in response + user.password = null; + + res.status(200).json(user); + } catch (err) { + res.status(500).json({ error: err.message }); + console.log("Error in updateUser: ", err.message); + } }; +// Start of integration code const getSuggestedUsers = async (req, res) => { - try { - // exclude the current user from suggested users array and exclude users that current user is already following - const userId = req.user._id; + try { + // exclude the current user from suggested users array and exclude users that current user is already following + const userId = req.user._id; - const usersFollowedByYou = await User.findById(userId).select("following"); + const usersFollowedByYou = await User.findById(userId).select("following"); - const users = await User.aggregate([ - { - $match: { - _id: { $ne: userId }, - }, - }, - { - $sample: { size: 10 }, - }, - ]); - const filteredUsers = users.filter((user) => !usersFollowedByYou.following.includes(user._id)); - const suggestedUsers = filteredUsers.slice(0, 4); + const users = await User.aggregate([ + { + $match: { + _id: { $ne: userId }, + }, + }, + { + $sample: { size: 10 }, + }, + ]); + const filteredUsers = users.filter( + (user) => !usersFollowedByYou.following.includes(user._id) + ); + const suggestedUsers = filteredUsers.slice(0, 4); - suggestedUsers.forEach((user) => (user.password = null)); + suggestedUsers.forEach((user) => (user.password = null)); - res.status(200).json(suggestedUsers); - } catch (error) { - res.status(500).json({ error: error.message }); - } + res.status(200).json(suggestedUsers); + } catch (error) { + res.status(500).json({ error: error.message }); + } }; const freezeAccount = async (req, res) => { - try { - const user = await User.findById(req.user._id); - if (!user) { - return res.status(400).json({ error: "User not found" }); - } + try { + const user = await User.findById(req.user._id); + if (!user) { + return res.status(400).json({ error: "User not found" }); + } - user.isFrozen = true; - await user.save(); + user.isFrozen = true; + await user.save(); - res.status(200).json({ success: true }); - } catch (error) { - res.status(500).json({ error: error.message }); - } + res.status(200).json({ success: true }); + } catch (error) { + res.status(500).json({ error: error.message }); + } }; -export { - signupUser, - loginUser, - logoutUser, - followUnFollowUser, - updateUser, - getUserProfile, - getSuggestedUsers, - freezeAccount, +// New function for awarding verification +const awardVerification = async (req, res) => { + const { userId, verificationType } = req.body; + + // Validate verification type + if (!["blue", "gold"].includes(verificationType)) { + return res.status(400).json({ error: "Invalid verification type" }); + } + + try { + const user = await User.findById(userId); + if (!user) { + return res.status(404).json({ error: "User not found" }); + } + + // Set the verification type + user.verification = verificationType; + await user.save(); + + res.status(200).json({ message: "Verification awarded", user }); + } catch (error) { + res.status(500).json({ error: error.message }); + console.log("Error in awardVerification: ", error.message); + } +}; +const adminFreezeUser = async (req, res) => { + try { + const { userId } = req.body; + + if (userId === req.user._id.toString()) { + return res.status(400).json({ error: "Cannot perform action on yourself" }); + } + + const user = await User.findById(userId); + if (!user) return res.status(404).json({ error: "User not found" }); + + if (user.freezeCount >= 1) { + user.isBanned = true; + user.isFrozen = false; + await user.save(); + + // Send ban notification + try { + await transporter.sendMail({ + from: "pearnet104@gmail.com", + to: user.email, + subject: "Account Banned", + text: "Your account has been banned. Unfortunately, until the foreseeable future, you will not be able to create an account with us again until further notice." + }); + } catch (emailError) { + console.error("Failed to send ban notification:", emailError); + } + + await deleteUserData(userId); + return res.json({ banned: true }); + } + + user.isFrozen = true; + user.freezeCount += 1; + user.freezeUntil = new Date(Date.now() + 14 * 86400000); + await user.save(); + + // Send freeze notification + try { + await transporter.sendMail({ + from: "pearnet104@gmail.com", + to: user.email, + subject: "Account Frozen", + text: "You won't be able to access chat, commenting, and posting until you are unfrozen after 2 weeks." + }); + } catch (emailError) { + console.error("Failed to send freeze notification:", emailError); + } + + res.status(200).json({ success: true }); + } catch (error) { + res.status(500).json({ error: error.message }); + } +}; + +const adminDeleteUser = async (req, res) => { + try { + const { userId } = req.body; + + if (userId === req.user._id.toString()) { + return res.status(400).json({ error: "Cannot delete yourself" }); + } + + const user = await User.findById(userId); + if (!user) return res.status(404).json({ error: "User not found" }); + + // Send ban notification + try { + await transporter.sendMail({ + from: "pearnet104@gmail.com", + to: user.email, + subject: "Account Banned", + text: "Your account has been banned. Unfortunately, until the foreseeable future, you will not be able to create an account with us again until further notice." + }); + } catch (emailError) { + console.error("Failed to send ban notification:", emailError); + } + + await deleteUserData(userId); + res.status(200).json({ success: true }); + } catch (error) { + res.status(500).json({ error: error.message }); + } }; + +// Add this helper function (implement actual deletion logic) +// userController.js +const deleteUserData = async (userId) => { + try { + // 1. Delete user's posts and associated data + await Post.deleteMany({ user: userId }); + + // 2. Remove user's replies from all posts + await Post.updateMany( + { "replies.userId": userId }, + { $pull: { replies: { userId: userId } } } + ); + + // 3. Handle conversations and messages + const userConversations = await Conversation.find({ + participants: userId, + }); + + // Delete all messages in these conversations + await Message.deleteMany({ + conversation: { $in: userConversations.map((c) => c._id) }, + }); + + // Delete the conversations themselves + await Conversation.deleteMany({ + participants: userId, + }); + + // 4. Remove user from social connections + await User.updateMany( + { $or: [{ followers: userId }, { following: userId }] }, + { $pull: { followers: userId, following: userId } } + ); + + // 5. Remove user from chat participants lists + await Conversation.updateMany( + { participants: userId }, + { $pull: { participants: userId } } + ); + + // 6. Delete profile picture from Cloudinary + const user = await User.findById(userId); + if (user?.profilePic) { + const publicId = user.profilePic.split("/").pop().split(".")[0]; + await cloudinary.uploader.destroy(publicId); + } + + // 7. Finally delete the user document + await User.findByIdAndDelete(userId); + + console.log(`Successfully deleted all data for user ${userId}`); + } catch (error) { + console.error("Error deleting user data:", error); + throw error; + } +}; +export { + signupUser, + validateEmail, + verifyRoleMatch, + verifyOTP, + resendOTP, + loginUser, + logoutUser, + followUnFollowUser, + updateUser, + getUserProfile, + getSuggestedUsers, + freezeAccount, + awardVerification, + adminFreezeUser, + adminDeleteUser, + deleteUserData, // Exporting the new function +}; \ No newline at end of file diff --git a/backend/cron/cron.js b/backend/cron/cron.js index 9df5871..a4de6d2 100644 --- a/backend/cron/cron.js +++ b/backend/cron/cron.js @@ -1,7 +1,7 @@ import cron from "cron"; import https from "https"; -const URL = "https://threads-clone-9if3.onrender.com"; +const URL = "https://threads-clone-1-a9z0.onrender.com"; const job = new cron.CronJob("*/14 * * * *", function () { https diff --git a/backend/db/connectDB.js b/backend/db/connectDB.js index 8002f60..c2bc8e3 100644 --- a/backend/db/connectDB.js +++ b/backend/db/connectDB.js @@ -1,5 +1,39 @@ import mongoose from "mongoose"; +import dotenv from "dotenv"; +dotenv.config(); // Load environment variables +const connectDB = async () => { + try { + const conn = await mongoose.connect(process.env.MONGO_URI); + console.log(`MongoDB Connected: ${conn.connection.host}`); + } catch (err) { + console.error(`Error: ${err.message}`); + process.exit(1); + } +}; + +export default connectDB; + + + + + + + + + + + + + + + + + + + + +/* import mongoose from "mongoose"; const connectDB = async () => { try { const conn = await mongoose.connect(process.env.MONGO_URI, { @@ -14,5 +48,4 @@ const connectDB = async () => { process.exit(1); } }; - -export default connectDB; +export default connectDB; */ \ No newline at end of file diff --git a/backend/middlewares/adminMiddleware.js b/backend/middlewares/adminMiddleware.js new file mode 100644 index 0000000..6ad852d --- /dev/null +++ b/backend/middlewares/adminMiddleware.js @@ -0,0 +1,15 @@ +import User from "../models/userModel.js"; + +const adminMiddleware = async (req, res, next) => { + try { + const user = await User.findById(req.user._id); + if (user.role !== "admin") { + return res.status(403).json({ error: "Admin access required" }); + } + next(); + } catch (error) { + res.status(500).json({ error: error.message }); + } +}; + +export default adminMiddleware; \ No newline at end of file diff --git a/backend/middlewares/checkChatAccess.js b/backend/middlewares/checkChatAccess.js new file mode 100644 index 0000000..781b517 --- /dev/null +++ b/backend/middlewares/checkChatAccess.js @@ -0,0 +1,112 @@ + +// // original +// import User from "../models/userModel.js"; + +// const checkChatAccess = async (req, res, next) => { +// try { +// if (!req.user || !req.user._id) { +// return res.status(404).json({ error: "User not found" }); +// } + +// const userId = req.user._id; +// const user = await User.findById(userId); + +// if (!user) { +// return res.status(404).json({ error: "User not found" }); +// } + +// const currentDate = new Date(); +// const dayOfWeek = currentDate.getDay(); +// const currentTime = currentDate.getHours() * 100 + currentDate.getMinutes(); + +// const schoolStart = 810; +// const lunchStart = 1250; +// const lunchEnd = 1340; +// const schoolEnd = 1535; + +// // Check if the day is a school day (Monday to Friday) +// if (dayOfWeek >= 1 && dayOfWeek <= 5) { +// if (user.role === "student") { +// // Student access based on time +// if ( +// currentTime < schoolStart || +// (currentTime >= lunchStart && currentTime <= lunchEnd) || +// currentTime > schoolEnd +// ) { +// return next(); +// } else { +// return res.status(403).json({ error: "Access denied during school hours" }); +// } +// } else { +// // Teachers and admins have full access during school days +// return next(); +// } +// } else { +// // Weekend access (no restrictions) +// return next(); +// } +// } catch (error) { +// res.status(500).json({ error: error.message }); +// } +// }; + +// export default checkChatAccess; + + +// admin role update +import User from "../models/userModel.js"; + +const checkChatAccess = async (req, res, next) => { + try { + if (!req.user || !req.user._id) { + return res.status(401).json({ error: "Unauthorized" }); + } + + const userId = req.user._id; + const user = await User.findById(userId).select('role'); + + if (!user) { + return res.status(404).json({ error: "User not found" }); + } + + // Allow admin unrestricted access + if (user.role === "admin") { + return next(); + } + + const currentDate = new Date(); + const dayOfWeek = currentDate.getDay(); + const currentTime = currentDate.getHours() * 100 + currentDate.getMinutes(); + + const schoolStart = 810; // 8:10 AM + const lunchStart = 1250; // 12:50 PM + const lunchEnd = 1340; // 1:40 PM + const schoolEnd = 1535; // 3:35 PM + + // Check if weekday (Monday-Friday) + if (dayOfWeek >= 1 && dayOfWeek <= 5) { + if (user.role === "student") { + // Students can only access during non-class hours + const isAllowed = currentTime < schoolStart || + (currentTime >= lunchStart && currentTime <= lunchEnd) || + currentTime > schoolEnd; + + if (!isAllowed) { + return res.status(403).json({ + error: "Chat access restricted during class hours (8:10 AM - 3:35 PM) except lunch break" + }); + } + } + // Teachers have full access on weekdays + return next(); + } + + // Weekend access for everyone + next(); + } catch (error) { + console.error("Chat access check error:", error); + res.status(500).json({ error: "Server error during access check" }); + } +}; + +export default checkChatAccess; \ No newline at end of file diff --git a/backend/middlewares/checkTeacherAccess.js b/backend/middlewares/checkTeacherAccess.js new file mode 100644 index 0000000..b259062 --- /dev/null +++ b/backend/middlewares/checkTeacherAccess.js @@ -0,0 +1,82 @@ +// // working previous version(original) +// import User from "../models/userModel.js"; + +// const checkTeacherAccess = async (req, res, next) => { +// try { +// if (!req.user || !req.user._id) { +// return res.status(404).json({ error: "User not found" }); +// } + +// const userId = req.user._id; +// const user = await User.findById(userId); + +// if (!user) { +// return res.status(404).json({ error: "User not found" }); +// } + +// if (req.body.targetAudience && user.role !== "teacher") { +// return res.status(403).json({ error: "Access denied for targeted posting" }); +// } + +// next(); +// } catch (error) { +// res.status(500).json({ error: error.message }); +// } +// }; + +// export default checkTeacherAccess; + + +// admin role update +import User from "../models/userModel.js"; + +const checkTeacherAccess = async (req, res, next) => { + try { + if (!req.user || !req.user._id) { + return res.status(404).json({ error: "User not found" }); + } + + const userId = req.user._id; + const user = await User.findById(userId); + + if (!user) { + return res.status(404).json({ error: "User not found" }); + } + + // If user is a student, force target audience to "all" + if (user.role === "student") { + req.body.targetAudience = "all"; + req.body.targetYearGroups = []; + req.body.targetDepartments = []; + return next(); + } + + // Check if the user is attempting to target posts + if (req.body.targetAudience) { + // If the user is not a teacher or admin, deny access to target posts + if (user.role !== "teacher" && user.role !== "admin") { + return res.status(403).json({ error: "Access denied for targeted posting" }); + } + + // If the user is a teacher, ensure they are targeting only their allowed year groups or departments + if (user.role === "teacher") { + const { targetYearGroups, targetDepartments } = user; + const { yearGroup, department } = req.body.targetAudience; + + // Check if the yearGroup or department is valid for the teacher's access + if ( + (yearGroup && !targetYearGroups.includes(yearGroup)) || + (department && !targetDepartments.includes(department)) + ) { + return res.status(403).json({ error: "Access denied: Invalid target audience for this teacher" }); + } + } + } + + next(); + } catch (error) { + res.status(500).json({ error: error.message }); + } +}; + +export default checkTeacherAccess; diff --git a/backend/middlewares/filterPostsByAudience.js b/backend/middlewares/filterPostsByAudience.js new file mode 100644 index 0000000..79fd712 --- /dev/null +++ b/backend/middlewares/filterPostsByAudience.js @@ -0,0 +1,125 @@ +// // this is the original +// import User from "../models/userModel.js"; + +// const filterPostsByYearGroup = async (req, res, next) => { +// try { +// if (!req.user || !req.user._id) { +// return res.status(404).json({ error: "User not found" }); +// } + +// const user = await User.findById(req.user._id); + +// if (!user) { +// return res.status(404).json({ error: "User not found" }); +// } + +// if (user.email.includes("students") && user.yearGroup) { +// req.yearGroup = user.yearGroup; +// } else { +// req.yearGroup = "all"; +// } + +// next(); +// } catch (error) { +// res.status(500).json({ error: "Error filtering posts by year group" }); +// } +// }; + +// export default filterPostsByYearGroup; + + +// admin role update +// import User from "../models/userModel.js"; + +// const filterPostsByAudience = async (req, res, next) => { +// try { +// if (!req.user || !req.user._id) { +// return res.status(404).json({ error: "User not found" }); +// } + +// const user = await User.findById(req.user._id); + +// if (!user) { +// return res.status(404).json({ error: "User not found" }); +// } + +// let filter = {}; + +// if (user.role === "student") { +// filter.targetYearGroups = { $in: [user.yearGroup, "all"] }; +// } + +// if (user.role === "teacher") { +// filter.targetDepartments = { $in: [user.department] }; +// } + +// // Check if the user is admin or tv, and filter by targetTV +// if (user.role === "admin") { +// filter.targetTV = { $in: [true] }; // Admin can target TV posts +// } + +// if (user.role === "tv") { +// filter.targetTV = { $in: [true] }; // TV users see posts targeted to TV +// } + +// req.filter = filter; +// next(); +// } catch (error) { +// return res.status(500).json({ error: "Failed to filter posts by audience" }); +// } +// }; + +// export default filterPostsByAudience; + + +// filtering update testing +import User from "../models/userModel.js"; + +const filterPostsByAudience = async (req, res, next) => { + try { + // Ensure the user is authenticated + if (!req.user || !req.user._id) { + return res.status(404).json({ error: "User not found" }); + } + + // Fetch the user's details + const user = await User.findById(req.user._id); + + if (!user) { + return res.status(404).json({ error: "User not found" }); + } + + // Initialize an empty filter + let filter = {}; + + if (user.role === "student") { + // Students can only see posts targeted to their year group or all + filter = { targetYearGroups: { $in: [user.yearGroup, "all"] } }; + } else if (user.role === "teacher") { + // Teachers can see posts targeted to their department or posts targeted to all + filter = { + $or: [ + { targetDepartments: { $in: [user.department] } }, + { targetYearGroups: "all" }, + ], + }; + } else if (user.role === "admin" || user.role === "tv") { + // Admins and TV users can access posts targeting TV + filter = { targetTV: { $in: [true] } }; + } else { + return res.status(403).json({ error: "Access denied: invalid role" }); + } + + // Attach the filter to the request object for use in downstream operations + req.filter = filter; + next(); + } catch (error) { + return res + .status(500) + .json({ error: "Failed to filter posts by audience", details: error.message }); + } +}; + +export default filterPostsByAudience; + + diff --git a/backend/middlewares/protectRoute.js b/backend/middlewares/protectRoute.js index 1633ae9..a27b88b 100644 --- a/backend/middlewares/protectRoute.js +++ b/backend/middlewares/protectRoute.js @@ -1,23 +1,115 @@ -import User from "../models/userModel.js"; +// import User from "../models/userModel.js"; +// import jwt from "jsonwebtoken"; + +// const protectRoute = async (req, res, next) => { +// try { +// const token = req.cookies.jwt; + +// if (!token) return res.status(401).json({ message: "Unauthorized" }); + +// const decoded = jwt.verify(token, process.env.JWT_SECRET); + +// const user = await User.findById(decoded.userId).select("-password"); + +// req.user = user; + +// next(); +// } catch (err) { +// res.status(500).json({ message: err.message }); +// console.log("Error in signupUser: ", err.message); +// } +// }; + +// export default protectRoute; + + +// original working version +// import jwt from "jsonwebtoken"; +// import User from "../models/userModel.js"; // Ensure the User model is imported + +// const protectRoute = async (req, res, next) => { +// try { +// const token = req.cookies.jwt; + +// if (!token) { +// return res.status(401).json({ message: "Unauthorized, no token provided" }); +// } + +// const decoded = jwt.verify(token, process.env.JWT_SECRET); + +// if (!decoded) { +// return res.status(401).json({ message: "Unauthorized, token verification failed" }); +// } + +// // If user is already present, skip the database lookup +// if (req.user) { +// next(); +// return; +// } + +// const user = await User.findById(decoded.userId).select("-password"); + +// if (!user) { +// return res.status(404).json({ error: "User not found" }); +// } + +// req.user = user; +// next(); +// } catch (err) { +// console.error("Error in protectRoute middleware:", err.message); +// res.status(500).json({ message: err.message }); +// } +// }; + + +// export default protectRoute; + + import jwt from "jsonwebtoken"; +import User from "../models/userModel.js"; const protectRoute = async (req, res, next) => { - try { - const token = req.cookies.jwt; + try { + const token = req.cookies.jwt; + + if (!token) { + return res.status(401).json({ message: "Unauthorized, no token provided" }); + } + + const decoded = jwt.verify(token, process.env.JWT_SECRET); + + if (!decoded) { + return res.status(401).json({ message: "Unauthorized, token verification failed" }); + } + + // Skip database lookup if user is already attached + if (req.user) { + return next(); + } - if (!token) return res.status(401).json({ message: "Unauthorized" }); + const user = await User.findById(decoded.userId).select("-password"); - const decoded = jwt.verify(token, process.env.JWT_SECRET); + if (!user) { + return res.status(404).json({ error: "User not found" }); + } - const user = await User.findById(decoded.userId).select("-password"); + // Add ban/freeze checks (NEW) + if (user.isBanned) { + return res.status(403).json({ error: "Account permanently banned" }); + } - req.user = user; + if (user.isFrozen && new Date() < user.freezeUntil) { + return res.status(403).json({ + error: `Account frozen until ${user.freezeUntil.toLocaleDateString()}` + }); + } - next(); - } catch (err) { - res.status(500).json({ message: err.message }); - console.log("Error in signupUser: ", err.message); - } + req.user = user; + next(); + } catch (err) { + console.error("Error in protectRoute middleware:", err.message); + res.status(500).json({ message: err.message }); + } }; -export default protectRoute; +export default protectRoute; \ No newline at end of file diff --git a/backend/middlewares/validateObjectId.js b/backend/middlewares/validateObjectId.js new file mode 100644 index 0000000..6e8b0a1 --- /dev/null +++ b/backend/middlewares/validateObjectId.js @@ -0,0 +1,19 @@ +// File: src/middlewares/validateObjectId.js + +import mongoose from "mongoose"; + +const validateObjectId = (paramName) => { + return (req, res, next) => { + const id = req.params[paramName]; + + if (!mongoose.Types.ObjectId.isValid(id)) { + return res.status(400).json({ + error: `Invalid ${paramName.replace('Id', ' ID')} format` + }); + } + + next(); + }; +}; + +export default validateObjectId; \ No newline at end of file diff --git a/backend/models/postModel.js b/backend/models/postModel.js index 215c986..ca72dd2 100644 --- a/backend/models/postModel.js +++ b/backend/models/postModel.js @@ -1,50 +1,265 @@ +// //this is the original (working) +// import mongoose from "mongoose"; + +// const postSchema = mongoose.Schema( +// { +// postedBy: { +// type: mongoose.Schema.Types.ObjectId, +// ref: "User", +// required: true, +// }, +// text: { +// type: String, +// maxLength: 500, +// }, +// img: { +// type: String, +// }, +// likes: { +// type: [mongoose.Schema.Types.ObjectId], +// ref: "User", +// default: [], +// }, +// replies: [ +// { +// userId: { +// type: mongoose.Schema.Types.ObjectId, +// ref: "User", +// required: true, +// }, +// text: { +// type: String, +// required: true, +// }, +// userProfilePic: { +// type: String, +// }, +// username: { +// type: String, +// }, +// }, +// ], +// // other fields... +// targetAudience: { +// type: String, +// enum: ['all', 'Year 12', 'Year 13', null], // Add null if you want to allow it +// default: null, // Optionally set a default value +// }, +// }, +// { +// timestamps: true, +// } +// ); + +// const Post = mongoose.model("Post", postSchema); + +// export default Post; + +// this is the admin role update(working) +// import mongoose from "mongoose"; + +// const postSchema = mongoose.Schema( +// { +// postedBy: { +// type: mongoose.Schema.Types.ObjectId, +// ref: "User", +// required: true, +// }, +// text: { +// type: String, +// maxLength: 500, +// }, +// img: { +// type: String, +// }, +// likes: { +// type: [mongoose.Schema.Types.ObjectId], +// ref: "User", +// default: [], +// }, +// replies: [ +// { +// userId: { +// type: mongoose.Schema.Types.ObjectId, +// ref: "User", +// required: true, +// }, +// text: { +// type: String, +// required: true, +// }, +// userProfilePic: { +// type: String, +// }, +// username: { +// type: String, +// }, +// }, +// ], +// // Target audience for students and teachers +// targetAudience: { +// type: String, +// enum: [ +// "all", +// "Year 9", +// "Year 10", +// "Year 11", +// "Year 12", +// "Year 13", +// "Mathematics", +// "Physics", +// "Chemistry", +// "Biology", +// "Geography", +// "Computer Science", +// "Arts", +// "History", +// "Psychology", +// "Sociology", +// "Economics", +// "Business", +// "BTEC Business", +// "Physical Education", +// "BTEC Sport", +// "Music", +// "BTEC Music", +// "BTEC Art", +// "Englich", +// "tv", +// ], +// default: "all", +// }, +// // Specific year groups for targeting +// targetYearGroups: { +// type: [String], // Array to support multiple year groups +// default: [], // Default is an empty array +// }, +// // Specific departments for targeting +// targetDepartments: { +// type: [String], // Array to support multiple departments +// default: [], // Default is an empty array +// }, +// }, +// { +// timestamps: true, +// } +// ); +// const Post = mongoose.model("Post", postSchema); + +// export default Post; + + +// post review import mongoose from "mongoose"; const postSchema = mongoose.Schema( - { - postedBy: { - type: mongoose.Schema.Types.ObjectId, - ref: "User", - required: true, - }, - text: { - type: String, - maxLength: 500, - }, - img: { - type: String, - }, - likes: { - // array of user ids - type: [mongoose.Schema.Types.ObjectId], - ref: "User", - default: [], - }, - replies: [ - { - userId: { - type: mongoose.Schema.Types.ObjectId, - ref: "User", - required: true, - }, - text: { - type: String, - required: true, - }, - userProfilePic: { - type: String, - }, - username: { - type: String, - }, - }, - ], - }, - { - timestamps: true, - } + { + postedBy: { + type: mongoose.Schema.Types.ObjectId, + ref: "User", + required: true, + }, + text: { + type: String, + maxLength: 500, + }, + img: { + type: String, + }, + likes: { + type: [mongoose.Schema.Types.ObjectId], + ref: "User", + default: [], + }, + replies: [ + { + userId: { + type: mongoose.Schema.Types.ObjectId, + ref: "User", + required: true, + }, + text: { + type: String, + required: true, + }, + userProfilePic: { + type: String, + }, + username: { + type: String, + }, + }, + ], + // Target audience for students and teachers + targetAudience: { + type: String, + enum: [ + "all", + "Year 9", + "Year 10", + "Year 11", + "Year 12", + "Year 13", + "Mathematics", + "Physics", + "Chemistry", + "Biology", + "Geography", + "Computer Science", + "Arts", + "History", + "Psychology", + "Sociology", + "Economics", + "Business", + "BTEC Business", + "Physical Education", + "BTEC Sport", + "Music", + "BTEC Music", + "BTEC Art", + "Englich", + "tv", + + ], + default: "all", + }, + // Specific year groups for targeting + targetYearGroups: { + type: [String], // Array to support multiple year groups + default: [], // Default is an empty array + }, + // Specific departments for targeting + targetDepartments: { + type: [String], // Array to support multiple departments + default: [], // Default is an empty array + }, + reviewStatus: { + type: String, + enum: ['pending', 'approved', 'rejected'], + default: 'approved' // Default approved for non-student posts + }, + reviewers: [{ + userId: { + type: mongoose.Schema.Types.ObjectId, + ref: "User" + }, + role: { + type: String, + enum: ['admin', 'teacher', 'student'] + }, + decision: { + type: String, + enum: ['pending', 'approved', 'rejected'], + default: 'pending' + }, + reviewedAt: Date + }] + }, + { + timestamps: true, + } ); - const Post = mongoose.model("Post", postSchema); -export default Post; +export default Post; \ No newline at end of file diff --git a/backend/models/tempUserModel.js b/backend/models/tempUserModel.js new file mode 100644 index 0000000..109647c --- /dev/null +++ b/backend/models/tempUserModel.js @@ -0,0 +1,148 @@ +import mongoose from "mongoose"; + +const tempUserSchema = mongoose.Schema({ + name: { + type: String, + required: [true, "Name is required"], + trim: true + }, + email: { + type: String, + required: [true, "Email is required"], + unique: true, + trim: true, + lowercase: true + }, + username: { + type: String, + required: [true, "Username is required"], + unique: true, + trim: true + }, + password: { + type: String, + required: [true, "Password is required"] + }, + role: { + type: String, + required: [true, "Role is required"], + enum: { + values: ['student', 'teacher', 'admin'], + message: '{VALUE} is not a valid role' + } + }, + yearGroup: { + type: String, + validate: { + validator: function(v) { + // Only required if role is student + if (this.role === 'student') { + return !!v; + } + return true; + }, + message: 'Year group is required for students' + } + }, + department: { + type: String, + validate: { + validator: function(v) { + // Only required if role is teacher + if (this.role === 'teacher') { + return !!v; + } + return true; + }, + message: 'Department is required for teachers' + } + }, + campus: { + type: String, + enum: { + values: ['karen', 'runda', 'admin'], + message: '{VALUE} is not a valid campus' + } + }, + otp: { + type: Number, + required: [true, "OTP is required"], + validate: { + validator: function(v) { + // OTP should be a 4-digit number + return /^\d{4}$/.test(v.toString()); + }, + message: 'OTP must be a 4-digit number' + } + }, + otpExpiry: { + type: Date, + required: [true, "OTP expiry is required"], + validate: { + validator: function(v) { + // OTP expiry should be in the future + return v > new Date(); + }, + message: 'OTP expiry must be in the future' + } + }, + otpAttempts: { + type: Number, + default: 0, + min: [0, 'OTP attempts cannot be negative'], + max: [3, 'Maximum OTP attempts exceeded'] + }, + lastOtpSent: { + type: Date, + default: Date.now + } +}, { + timestamps: true, + toJSON: { virtuals: true }, + toObject: { virtuals: true } +}); + +// Add index for auto-deletion after 10 minutes +tempUserSchema.index({ createdAt: 1 }, { expireAfterSeconds: 600 }); + +// Add index for email and username uniqueness +tempUserSchema.index({ email: 1 }, { unique: true }); +tempUserSchema.index({ username: 1 }, { unique: true }); + +// Add virtual for checking if OTP is expired +tempUserSchema.virtual('isOtpExpired').get(function() { + return Date.now() > this.otpExpiry; +}); + +// Add methods for OTP validation +tempUserSchema.methods.isValidOtp = function(inputOtp) { + return !this.isOtpExpired && this.otp === parseInt(inputOtp, 10); +}; + +tempUserSchema.methods.incrementAttempts = async function() { + this.otpAttempts += 1; + await this.save(); + return this.otpAttempts; +}; + +// Add pre-save middleware for data validation +tempUserSchema.pre('save', function(next) { + // Convert email to lowercase + if (this.email) { + this.email = this.email.toLowerCase(); + } + + // Validate role-specific fields + if (this.role === 'student' && !this.yearGroup) { + next(new Error('Year group is required for students')); + } + + if (this.role === 'teacher' && !this.department) { + next(new Error('Department is required for teachers')); + } + + next(); +}); + +const TempUser = mongoose.model("TempUser", tempUserSchema); +export default TempUser; \ No newline at end of file diff --git a/backend/models/userModel.js b/backend/models/userModel.js index 5289058..4bd5c87 100644 --- a/backend/models/userModel.js +++ b/backend/models/userModel.js @@ -1,52 +1,433 @@ +// // this is the original(working) +// import mongoose from "mongoose"; + +// const userSchema = mongoose.Schema( +// { +// name: { +// type: String, +// required: true, +// }, +// username: { +// type: String, +// required: true, +// unique: true, +// }, +// email: { +// type: String, +// required: true, +// unique: true, +// }, +// password: { +// type: String, +// minLength: 6, +// required: true, +// }, +// profilePic: { +// type: String, +// default: "", +// }, +// followers: { +// type: [String], +// default: [], +// }, +// following: { +// type: [String], +// default: [], +// }, +// bio: { +// type: String, +// default: "", +// }, +// isFrozen: { +// type: Boolean, +// default: false, +// }, +// verification: { +// type: String, +// enum: ["none", "blue", "golden"], // Available verification options +// default: "none", // Default to no verification +// }, +// isStudent: { +// type: Boolean, +// default: false, // This field determines if the user is a student or not +// }, +// yearGroup: { +// type: String, // Store the selected year group +// required: function () { +// return this.isStudent; // yearGroup is only required if the user is a student +// }, +// }, +// role: { +// type: String, +// enum: ["user", "teacher", "student"], // Include 'student' in the allowed roles +// required: function () { +// return this.isStudent || this.role === "teacher"; // Role is required for students and teachers +// }, +// default: "user", // Default to 'user' if not provided +// }, +// }, +// { +// timestamps: true, // This will automatically add `createdAt` and `updatedAt` fields +// } +// ); + +// const User = mongoose.model("User", userSchema); + +// export default User; + +// this is the admin role update +// import mongoose from "mongoose"; + +// const userSchema = mongoose.Schema( +// { +// name: { +// type: String, +// required: true, +// }, +// username: { +// type: String, +// required: true, +// unique: true, +// }, +// email: { +// type: String, +// required: true, +// unique: true, +// }, +// password: { +// type: String, +// minLength: 6, +// required: true, +// }, +// isVerified: { type: Boolean, default: false }, +// verificationToken: { type: String, required: false }, +// profilePic: { +// type: String, +// default: "", +// }, +// followers: { +// type: [String], +// default: [], +// }, +// following: { +// type: [String], +// default: [], +// }, +// bio: { +// type: String, +// default: "", +// }, +// isFrozen: { +// type: Boolean, +// default: false, +// }, +// verification: { +// type: String, +// enum: ["none", "blue", "golden"], +// default: "none", +// }, +// isStudent: { +// type: Boolean, +// default: false, +// }, +// yearGroup: { +// type: String, +// enum: ["Year 9", "Year 10", "Year 11", "Year 12", "Year 13"], +// required: function () { +// return this.role === "student"; +// }, +// }, +// role: { +// type: String, +// enum: ["user", "teacher", "student", "admin", "tv"], +// required: true, +// default: "user", +// }, +// department: { +// type: String, +// enum: [ +// "Mathematics", +// "Physics", +// "Chemistry", +// "Biology", +// "Geography", +// "Computer Science", +// "Arts", +// "History", +// "Psychology", +// "Sociology", +// "Economics", +// "Business", +// "BTEC Business", +// "Physical Education", +// "BTEC Sport", +// "Music", +// "BTEC Music", +// "BTEC Art", +// "English", +// "tv", +// ], +// required: function () { +// return this.role === "teacher"; +// }, +// }, + +// }, +// { timestamps: true } +// ); + +// const User = mongoose.model("User", userSchema); +// export default User; + +// email verfification update(working) +// import mongoose from "mongoose"; + +// const userSchema = mongoose.Schema( +// { +// name: { +// type: String, +// required: true, +// }, +// username: { +// type: String, +// required: true, +// unique: true, +// }, +// email: { +// type: String, +// required: true, +// unique: true, +// }, +// password: { +// type: String, +// minLength: 6, +// required: true, +// }, +// isVerified: { type: Boolean, default: false }, +// verificationToken: { type: String, required: false }, +// profilePic: { +// type: String, +// default: "", +// }, +// followers: { +// type: [String], +// default: [], +// }, +// following: { +// type: [String], +// default: [], +// }, +// bio: { +// type: String, +// default: "", +// }, +// isFrozen: { +// type: Boolean, +// default: false, +// }, +// isFrozen: { +// type: Boolean, +// default: false, +// }, +// freezeCount: { +// type: Number, +// default: 0, +// }, +// freezeUntil: { +// type: Date, +// }, +// isBanned: { +// type: Boolean, +// default: false, +// }, +// verification: { +// type: String, +// enum: ["none", "blue", "golden"], +// default: "none", +// }, +// isStudent: { +// type: Boolean, +// default: false, +// }, +// yearGroup: { +// type: String, +// enum: ["Year 9", "Year 10", "Year 11", "Year 12", "Year 13"], +// required: function () { +// return this.role === "student"; +// }, +// }, +// role: { +// type: String, +// enum: ["user", "teacher", "student", "admin", "tv"], +// required: true, +// default: "user", +// }, +// department: { +// type: String, +// enum: [ +// "Mathematics", +// "Physics", +// "Chemistry", +// "Biology", +// "Geography", +// "Computer Science", +// "Arts", +// "History", +// "Psychology", +// "Sociology", +// "Economics", +// "Business", +// "BTEC Business", +// "Physical Education", +// "BTEC Sport", +// "Music", +// "BTEC Music", +// "BTEC Art", +// "English", +// "tv", +// ], +// required: function () { +// return this.role === "teacher"; +// }, +// }, +// otp: { type: Number, required: false }, // Field for OTP +// otpExpiry: { type: Date, required: false }, +// notificationPreferences: { +// type: Boolean, +// default: true, // Enable notifications by default +// }, // Field for OTP expiration// Field for OTP expiration +// }, +// { timestamps: true } +// ); + +// const User = mongoose.model("User", userSchema); +// export default User; + +// validation update import mongoose from "mongoose"; const userSchema = mongoose.Schema( - { - name: { - type: String, - required: true, - }, - username: { - type: String, - required: true, - unique: true, - }, - email: { - type: String, - required: true, - unique: true, - }, - password: { - type: String, - minLength: 6, - required: true, - }, - profilePic: { - type: String, - default: "", - }, - followers: { - type: [String], - default: [], - }, - following: { - type: [String], - default: [], - }, - bio: { - type: String, - default: "", - }, - isFrozen: { - type: Boolean, - default: false, - }, - }, - { - timestamps: true, - } + { + name: { + type: String, + required: true, + }, + username: { + type: String, + required: true, + unique: true, + }, + email: { + type: String, + required: true, + unique: true, + }, + password: { + type: String, + minLength: 6, + required: true, + }, + isVerified: { type: Boolean, default: false }, + verificationToken: { type: String, required: false }, + profilePic: { + type: String, + default: "", + }, + followers: { + type: [String], + default: [], + }, + following: { + type: [String], + default: [], + }, + bio: { + type: String, + default: "", + }, + isFrozen: { + type: Boolean, + default: false, + }, + isFrozen: { + type: Boolean, + default: false, + }, + freezeCount: { + type: Number, + default: 0, + }, + freezeUntil: { + type: Date, + }, + isBanned: { + type: Boolean, + default: false, + }, + verification: { + type: String, + enum: ["none", "blue", "golden"], + default: "none", + }, + isStudent: { + type: Boolean, + default: false, + }, + yearGroup: { + type: String, + enum: ["Year 9", "Year 10", "Year 11", "Year 12", "Year 13"], + required: function () { + return this.role === "student"; + }, + }, + campus: { + type: String, + enum: ['karen', 'runda', 'admin'], + required: true + }, + role: { + type: String, + enum: ["user", "teacher", "student", "admin", "tv"], + required: true, + default: "user", + }, + department: { + type: String, + enum: [ + "Mathematics", + "Physics", + "Chemistry", + "Biology", + "Geography", + "Computer Science", + "Arts", + "History", + "Psychology", + "Sociology", + "Economics", + "Business", + "BTEC Business", + "Physical Education", + "BTEC Sport", + "Music", + "BTEC Music", + "BTEC Art", + "English", + "tv", + ], + required: function () { + return this.role === "teacher"; + }, + }, + otp: { type: Number, required: false }, // Field for OTP + otpExpiry: { type: Date, required: false }, + notificationPreferences: { + type: Boolean, + default: true, // Enable notifications by default + }, // Field for OTP expiration// Field for OTP expiration + }, + { timestamps: true } ); const User = mongoose.model("User", userSchema); - export default User; diff --git a/backend/routes/messageRoutes.js b/backend/routes/messageRoutes.js index ba620fd..7b4fc3f 100644 --- a/backend/routes/messageRoutes.js +++ b/backend/routes/messageRoutes.js @@ -1,11 +1,39 @@ +// // original version before roles update +// import express from "express"; +// import protectRoute from "../middlewares/protectRoute.js"; +// import { getMessages, sendMessage, getConversations, deleteMessage } from "../controllers/messageController.js"; + + +// const router = express.Router(); + + +// router.get("/conversations", protectRoute, getConversations); +// router.get("/:otherUserId", protectRoute, getMessages); +// router.post("/", protectRoute, sendMessage); + + +// // Added delete message route +// router.delete("/:messageId", protectRoute, deleteMessage); + + +// export default router; + + +// version 2 import express from "express"; import protectRoute from "../middlewares/protectRoute.js"; -import { getMessages, sendMessage, getConversations } from "../controllers/messageController.js"; +import checkChatAccess from "../middlewares/checkChatAccess.js"; // Import the new middleware +import { getMessages, sendMessage, getConversations, deleteMessage } from "../controllers/messageController.js"; const router = express.Router(); -router.get("/conversations", protectRoute, getConversations); -router.get("/:otherUserId", protectRoute, getMessages); -router.post("/", protectRoute, sendMessage); +// Apply both protectRoute and checkChatAccess middleware +router.get("/conversations", protectRoute, checkChatAccess, getConversations); +router.get("/:otherUserId", protectRoute, checkChatAccess, getMessages); +router.post("/", protectRoute, checkChatAccess, sendMessage); + +// Added delete message route +router.delete("/:messageId", protectRoute, checkChatAccess, deleteMessage); export default router; + diff --git a/backend/routes/postRoutes.js b/backend/routes/postRoutes.js index 4397b2e..90814bc 100644 --- a/backend/routes/postRoutes.js +++ b/backend/routes/postRoutes.js @@ -1,23 +1,120 @@ +// athis is the orignal working version +// import express from "express"; +// import { +// createPost, +// deletePost, +// getPost, +// likeUnlikePost, +// replyToPost, +// getFeedPosts, +// getUserPosts, +// } from "../controllers/postController.js"; +// import protectRoute from "../middlewares/protectRoute.js"; +// import checkTeacherAccess from "../middlewares/checkTeacherAccess.js"; // Import the teacher access middleware + +// const router = express.Router(); + +// router.get("/feed", protectRoute, getFeedPosts); +// router.get("/:id", protectRoute, getPost); // Added protectRoute for consistency +// router.get("/user/:username", protectRoute, getUserPosts); // Added protectRoute for consistency +// router.post("/create", protectRoute, checkTeacherAccess, createPost); // Add the checkTeacherAccess middleware +// router.delete("/:id", protectRoute, deletePost); +// router.put("/like/:id", protectRoute, likeUnlikePost); +// router.put("/reply/:id", protectRoute, replyToPost); + +// export default router; + +// this is adding thje dmin role filtering update (working) +// import express from "express"; +// import { +// createPost, +// deletePost, +// getPost, +// likeUnlikePost, +// replyToPost, +// getFeedPosts, +// getUserPosts, +// toggleNotifications, // Add the new controller +// } from "../controllers/postController.js"; +// import protectRoute from "../middlewares/protectRoute.js"; +// import checkTeacherAccess from "../middlewares/checkTeacherAccess.js"; +// import filterPostsByAudience from "../middlewares/filterPostsByAudience.js"; + +// const router = express.Router(); + +// // Existing routes +// router.get("/feed", protectRoute, getFeedPosts); +// router.get("/:id", protectRoute, filterPostsByAudience, getPost); +// router.get("/user/:username", protectRoute, getUserPosts); +// router.post("/create", protectRoute, checkTeacherAccess, createPost); +// router.delete("/:id", protectRoute, deletePost); +// router.put("/like/:id", protectRoute, likeUnlikePost); +// router.put("/reply/:id", protectRoute, replyToPost); + +// // New notification toggle route +// router.post("/toggle-notifications", protectRoute, toggleNotifications); + +// export default router; + +// post review system +// File: src/routes/postRoutes.js + import express from "express"; import { - createPost, - deletePost, - getPost, - likeUnlikePost, - replyToPost, - getFeedPosts, - getUserPosts, + createPost, + deleteComment, + getPendingReviews, + reviewPost, + toggleNotifications, + getPost, + deletePost, + likeUnlikePost, + replyToPost, + getFeedPosts, + getUserPosts, } from "../controllers/postController.js"; import protectRoute from "../middlewares/protectRoute.js"; +import checkTeacherAccess from "../middlewares/checkTeacherAccess.js"; +import filterPostsByAudience from "../middlewares/filterPostsByAudience.js"; +import validateObjectId from "../middlewares/validateObjectId.js"; const router = express.Router(); +// Review system routes +router.get("/pending-reviews", protectRoute, getPendingReviews); +router.post( + "/review/:postId", + protectRoute, + validateObjectId("postId"), + reviewPost +); + +// Post creation and feed +router.post("/create", protectRoute, checkTeacherAccess, createPost); router.get("/feed", protectRoute, getFeedPosts); -router.get("/:id", getPost); -router.get("/user/:username", getUserPosts); -router.post("/create", protectRoute, createPost); -router.delete("/:id", protectRoute, deletePost); -router.put("/like/:id", protectRoute, likeUnlikePost); -router.put("/reply/:id", protectRoute, replyToPost); +router.post("/toggle-notifications", protectRoute, toggleNotifications); + +// User-specific posts +router.get("/user/:username", protectRoute, getUserPosts); + +// Single post operations +router.get( + "/:id", + protectRoute, + validateObjectId("id"), + filterPostsByAudience, + getPost +); +router.delete("/:id", protectRoute, validateObjectId("id"), deletePost); +router.put("/like/:id", protectRoute, validateObjectId("id"), likeUnlikePost); +router.put("/reply/:id", protectRoute, validateObjectId("id"), replyToPost); + +// Comment operations +router.delete( + "/comment/:commentId", + protectRoute, + validateObjectId("commentId"), + deleteComment +); export default router; diff --git a/backend/routes/userRoutes.js b/backend/routes/userRoutes.js index 2e61e9f..6406cc0 100644 --- a/backend/routes/userRoutes.js +++ b/backend/routes/userRoutes.js @@ -1,25 +1,94 @@ +// // working version (this is og og) +// import express from "express"; +// import { +// followUnFollowUser, +// getUserProfile, +// loginUser, +// logoutUser, +// signupUser, +// updateUser, +// getSuggestedUsers, +// freezeAccount, +// } from "../controllers/userController.js"; +// import protectRoute from "../middlewares/protectRoute.js"; + +// const router = express.Router(); + +// router.get("/profile/:query", getUserProfile); +// router.get("/suggested", protectRoute, getSuggestedUsers); +// router.post("/signup", signupUser); +// router.post("/login", loginUser); +// router.post("/logout", logoutUser); +// router.post("/follow/:id", protectRoute, followUnFollowUser); // Toggle state(follow/unfollow) +// router.put("/update/:id", protectRoute, updateUser); +// router.put("/freeze", protectRoute, freezeAccount); + +// export default router; + + + +//admin role working +// import express from "express"; +// import { +// followUnFollowUser, +// getUserProfile, +// loginUser, +// logoutUser, +// signupUser, +// updateUser, +// getSuggestedUsers, +// freezeAccount, +// } from "../controllers/userController.js"; +// import protectRoute from "../middlewares/protectRoute.js"; + +// const router = express.Router(); + +// router.get("/profile/:query", getUserProfile); +// router.get("/suggested", protectRoute, getSuggestedUsers); +// router.post("/signup", signupUser); +// router.post("/login", loginUser); +// router.post("/logout", logoutUser); +// router.post("/follow/:id", protectRoute, followUnFollowUser); // Toggle state(follow/unfollow) +// router.put("/update/:id", protectRoute, updateUser); +// router.put("/freeze", protectRoute, freezeAccount); + +// export default router; + +// email verififcation update import express from "express"; import express from "express"; import { - followUnFollowUser, - getUserProfile, - loginUser, - logoutUser, - signupUser, - updateUser, - getSuggestedUsers, - freezeAccount, + followUnFollowUser, + getUserProfile, + loginUser, + logoutUser, + signupUser, + updateUser, + getSuggestedUsers, + freezeAccount, + verifyOTP, + adminFreezeUser, // NEW IMPORT + adminDeleteUser // NEW IMPORT } from "../controllers/userController.js"; import protectRoute from "../middlewares/protectRoute.js"; +import adminMiddleware from "../middlewares/adminMiddleware.js"; // NEW IMPORT const router = express.Router(); +// Admin routes (NEW SECTION) +router.post("/admin/freeze-user", protectRoute, adminMiddleware, adminFreezeUser); +router.delete("/admin/delete-user", protectRoute, adminMiddleware, adminDeleteUser); + +// Existing routes router.get("/profile/:query", getUserProfile); router.get("/suggested", protectRoute, getSuggestedUsers); router.post("/signup", signupUser); router.post("/login", loginUser); router.post("/logout", logoutUser); -router.post("/follow/:id", protectRoute, followUnFollowUser); // Toggle state(follow/unfollow) +router.post("/follow/:id", protectRoute, followUnFollowUser); router.put("/update/:id", protectRoute, updateUser); router.put("/freeze", protectRoute, freezeAccount); +router.post("/verify-otp", verifyOTP); export default router; + + diff --git a/backend/server.js b/backend/server.js index 630b2ae..fc14897 100644 --- a/backend/server.js +++ b/backend/server.js @@ -1,3 +1,4 @@ +// // this is the server version 1(wworks) import path from "path"; import express from "express"; import dotenv from "dotenv"; @@ -46,3 +47,51 @@ if (process.env.NODE_ENV === "production") { } server.listen(PORT, () => console.log(`Server started at http://localhost:${PORT}`)); + + +// email verficiation update +// import path from "path"; +// import express from "express"; +// import dotenv from "dotenv"; +// import connectDB from "./db/connectDB.js"; +// import cookieParser from "cookie-parser"; +// import userRoutes from "./routes/userRoutes.js"; +// import postRoutes from "./routes/postRoutes.js"; +// import messageRoutes from "./routes/messageRoutes.js"; +// import { v2 as cloudinary } from "cloudinary"; +// import { app, server } from "./socket/socket.js"; +// import job from "./cron/cron.js"; + +// dotenv.config(); + +// connectDB(); +// job.start(); + +// const PORT = process.env.PORT || 5000; +// const __dirname = path.resolve(); + +// cloudinary.config({ +// cloud_name: process.env.CLOUDINARY_CLOUD_NAME, +// api_key: process.env.CLOUDINARY_API_KEY, +// api_secret: process.env.CLOUDINARY_API_SECRET, +// }); + +// // Middlewares +// app.use(express.json({ limit: "50mb" })); // To parse JSON data in the req.body +// app.use(express.urlencoded({ extended: true })); // To parse form data in the req.body +// app.use(cookieParser()); + +// // Routes +// app.use("/api/users", userRoutes); +// app.use("/api/posts", postRoutes); +// app.use("/api/messages", messageRoutes); + +// // React frontend setup +// if (process.env.NODE_ENV === "production") { +// app.use(express.static(path.join(__dirname, "/frontend/dist"))); +// app.get("*", (req, res) => { +// res.sendFile(path.resolve(__dirname, "frontend", "dist", "index.html")); +// }); +// } + +// server.listen(PORT, () => console.log(`Server started at http://localhost:${PORT}`)); diff --git a/frontend/index.html b/frontend/index.html index 4c5e28b..f466c6c 100644 --- a/frontend/index.html +++ b/frontend/index.html @@ -2,9 +2,9 @@ - + - Threads Clone + Pear
diff --git a/frontend/package-lock.json b/frontend/package-lock.json index 7ab3a00..3b01d8c 100644 --- a/frontend/package-lock.json +++ b/frontend/package-lock.json @@ -1,7 +1,7 @@ { "name": "threads-yt", "version": "0.0.0", - "lockfileVersion": 2, + "lockfileVersion": 3, "requires": true, "packages": { "": { @@ -9,12 +9,12 @@ "version": "0.0.0", "dependencies": { "@chakra-ui/icons": "^2.1.0", - "@chakra-ui/react": "^2.7.1", - "@emotion/react": "^11.11.1", - "@emotion/styled": "^11.11.0", + "@chakra-ui/react": "^2.8.2", + "@emotion/react": "^11.13.0", + "@emotion/styled": "^11.13.0", "backend": "file:..", "date-fns": "^2.30.0", - "framer-motion": "^10.12.21", + "framer-motion": "^10.18.0", "react": "^18.2.0", "react-dom": "^18.2.0", "react-icons": "^4.10.1", @@ -34,5102 +34,1272 @@ } }, "..": { + "name": "backend", "version": "1.0.0", "license": "ISC", "dependencies": { "bcryptjs": "^2.4.3", "cloudinary": "^1.40.0", "cookie-parser": "^1.4.6", - "dotenv": "^16.3.1", - "express": "^4.18.2", + "cron": "^3.1.7", + "dotenv": "^16.4.5", + "express": "^4.21.0", + "framer-motion": "^11.5.4", + "i18next": "^23.14.0", "jsonwebtoken": "^9.0.1", "mongoose": "^7.4.0", - "socket.io": "^4.7.2" + "react-i18next": "^15.0.1", + "socket.io": "^4.7.2", + "ws": "^8.18.0" }, "devDependencies": { "nodemon": "^3.0.1" } }, - "node_modules/@aashutoshrathi/word-wrap": { - "version": "1.2.6", - "resolved": "https://registry.npmjs.org/@aashutoshrathi/word-wrap/-/word-wrap-1.2.6.tgz", - "integrity": "sha512-1Yjs2SvM8TflER/OD3cOjhWWOZb58A2t7wpE2S9XfBYTiIl+XFhQG2bjy4Pu1I+EAlCNUzRDYDdFwFYUKvXcIA==", - "dev": true, - "engines": { - "node": ">=0.10.0" + "../node_modules/@mongodb-js/saslprep": { + "version": "1.1.8", + "license": "MIT", + "optional": true, + "dependencies": { + "sparse-bitfield": "^3.0.3" } }, - "node_modules/@ampproject/remapping": { - "version": "2.2.1", - "resolved": "https://registry.npmjs.org/@ampproject/remapping/-/remapping-2.2.1.tgz", - "integrity": "sha512-lFMjJTrFL3j7L9yBxwYfCq2k6qqwHyzuUl/XBnif78PWTJYyL/dfowQHWE3sp6U6ZzqWiiIZnpTMO96zhkjwtg==", + "../node_modules/@socket.io/component-emitter": { + "version": "3.1.0", + "license": "MIT" + }, + "../node_modules/@types/cookie": { + "version": "0.4.1", + "license": "MIT" + }, + "../node_modules/@types/cors": { + "version": "2.8.14", + "license": "MIT", + "dependencies": { + "@types/node": "*" + } + }, + "../node_modules/@types/luxon": { + "version": "3.4.2", + "license": "MIT" + }, + "../node_modules/@types/node": { + "version": "20.4.4", + "license": "MIT" + }, + "../node_modules/@types/webidl-conversions": { + "version": "7.0.3", + "license": "MIT" + }, + "../node_modules/@types/whatwg-url": { + "version": "8.2.2", + "license": "MIT", + "dependencies": { + "@types/node": "*", + "@types/webidl-conversions": "*" + } + }, + "../node_modules/abbrev": { + "version": "1.1.1", "dev": true, + "license": "ISC" + }, + "../node_modules/accepts": { + "version": "1.3.8", + "license": "MIT", "dependencies": { - "@jridgewell/gen-mapping": "^0.3.0", - "@jridgewell/trace-mapping": "^0.3.9" + "mime-types": "~2.1.34", + "negotiator": "0.6.3" }, "engines": { - "node": ">=6.0.0" + "node": ">= 0.6" } }, - "node_modules/@babel/code-frame": { - "version": "7.22.5", - "resolved": "https://registry.npmjs.org/@babel/code-frame/-/code-frame-7.22.5.tgz", - "integrity": "sha512-Xmwn266vad+6DAqEB2A6V/CcZVp62BbwVmcOJc2RPuwih1kw02TjQvWVWlcKGbBPd+8/0V5DEkOcizRGYsspYQ==", + "../node_modules/anymatch": { + "version": "3.1.3", + "dev": true, + "license": "ISC", "dependencies": { - "@babel/highlight": "^7.22.5" + "normalize-path": "^3.0.0", + "picomatch": "^2.0.4" }, "engines": { - "node": ">=6.9.0" + "node": ">= 8" } }, - "node_modules/@babel/compat-data": { - "version": "7.22.9", - "resolved": "https://registry.npmjs.org/@babel/compat-data/-/compat-data-7.22.9.tgz", - "integrity": "sha512-5UamI7xkUcJ3i9qVDS+KFDEK8/7oJ55/sJMB1Ge7IEapr7KfdfV/HErR+koZwOfd+SgtFKOKRhRakdg++DcJpQ==", + "../node_modules/array-flatten": { + "version": "1.1.1", + "license": "MIT" + }, + "../node_modules/balanced-match": { + "version": "1.0.2", "dev": true, + "license": "MIT" + }, + "../node_modules/base64id": { + "version": "2.0.0", + "license": "MIT", "engines": { - "node": ">=6.9.0" + "node": "^4.5.0 || >= 5.9" } }, - "node_modules/@babel/core": { - "version": "7.22.9", - "resolved": "https://registry.npmjs.org/@babel/core/-/core-7.22.9.tgz", - "integrity": "sha512-G2EgeufBcYw27U4hhoIwFcgc1XU7TlXJ3mv04oOv1WCuo900U/anZSPzEqNjwdjgffkk2Gs0AN0dW1CKVLcG7w==", + "../node_modules/bcryptjs": { + "version": "2.4.3", + "license": "MIT" + }, + "../node_modules/binary-extensions": { + "version": "2.2.0", "dev": true, + "license": "MIT", + "engines": { + "node": ">=8" + } + }, + "../node_modules/body-parser": { + "version": "1.20.2", + "license": "MIT", "dependencies": { - "@ampproject/remapping": "^2.2.0", - "@babel/code-frame": "^7.22.5", - "@babel/generator": "^7.22.9", - "@babel/helper-compilation-targets": "^7.22.9", - "@babel/helper-module-transforms": "^7.22.9", - "@babel/helpers": "^7.22.6", - "@babel/parser": "^7.22.7", - "@babel/template": "^7.22.5", - "@babel/traverse": "^7.22.8", - "@babel/types": "^7.22.5", - "convert-source-map": "^1.7.0", - "debug": "^4.1.0", - "gensync": "^1.0.0-beta.2", - "json5": "^2.2.2", - "semver": "^6.3.1" + "bytes": "3.1.2", + "content-type": "~1.0.5", + "debug": "2.6.9", + "depd": "2.0.0", + "destroy": "1.2.0", + "http-errors": "2.0.0", + "iconv-lite": "0.4.24", + "on-finished": "2.4.1", + "qs": "6.11.0", + "raw-body": "2.5.2", + "type-is": "~1.6.18", + "unpipe": "1.0.0" }, "engines": { - "node": ">=6.9.0" - }, - "funding": { - "type": "opencollective", - "url": "https://opencollective.com/babel" + "node": ">= 0.8", + "npm": "1.2.8000 || >= 1.4.16" } }, - "node_modules/@babel/generator": { - "version": "7.22.9", - "resolved": "https://registry.npmjs.org/@babel/generator/-/generator-7.22.9.tgz", - "integrity": "sha512-KtLMbmicyuK2Ak/FTCJVbDnkN1SlT8/kceFTiuDiiRUUSMnHMidxSCdG4ndkTOHHpoomWe/4xkvHkEOncwjYIw==", + "../node_modules/brace-expansion": { + "version": "1.1.11", "dev": true, + "license": "MIT", "dependencies": { - "@babel/types": "^7.22.5", - "@jridgewell/gen-mapping": "^0.3.2", - "@jridgewell/trace-mapping": "^0.3.17", - "jsesc": "^2.5.1" - }, - "engines": { - "node": ">=6.9.0" + "balanced-match": "^1.0.0", + "concat-map": "0.0.1" } }, - "node_modules/@babel/helper-compilation-targets": { - "version": "7.22.9", - "resolved": "https://registry.npmjs.org/@babel/helper-compilation-targets/-/helper-compilation-targets-7.22.9.tgz", - "integrity": "sha512-7qYrNM6HjpnPHJbopxmb8hSPoZ0gsX8IvUS32JGVoy+pU9e5N0nLr1VjJoR6kA4d9dmGLxNYOjeB8sUDal2WMw==", + "../node_modules/braces": { + "version": "3.0.3", "dev": true, + "license": "MIT", "dependencies": { - "@babel/compat-data": "^7.22.9", - "@babel/helper-validator-option": "^7.22.5", - "browserslist": "^4.21.9", - "lru-cache": "^5.1.1", - "semver": "^6.3.1" + "fill-range": "^7.1.1" }, "engines": { - "node": ">=6.9.0" - }, - "peerDependencies": { - "@babel/core": "^7.0.0" + "node": ">=8" } }, - "node_modules/@babel/helper-environment-visitor": { - "version": "7.22.5", - "resolved": "https://registry.npmjs.org/@babel/helper-environment-visitor/-/helper-environment-visitor-7.22.5.tgz", - "integrity": "sha512-XGmhECfVA/5sAt+H+xpSg0mfrHq6FzNr9Oxh7PSEBBRUb/mL7Kz3NICXb194rCqAEdxkhPT1a88teizAFyvk8Q==", - "dev": true, + "../node_modules/bson": { + "version": "5.5.1", + "license": "Apache-2.0", "engines": { - "node": ">=6.9.0" + "node": ">=14.20.1" } }, - "node_modules/@babel/helper-function-name": { - "version": "7.22.5", - "resolved": "https://registry.npmjs.org/@babel/helper-function-name/-/helper-function-name-7.22.5.tgz", - "integrity": "sha512-wtHSq6jMRE3uF2otvfuD3DIvVhOsSNshQl0Qrd7qC9oQJzHvOL4qQXlQn2916+CXGywIjpGuIkoyZRRxHPiNQQ==", - "dev": true, + "../node_modules/buffer-equal-constant-time": { + "version": "1.0.1", + "license": "BSD-3-Clause" + }, + "../node_modules/bytes": { + "version": "3.1.2", + "license": "MIT", + "engines": { + "node": ">= 0.8" + } + }, + "../node_modules/call-bind": { + "version": "1.0.7", + "license": "MIT", "dependencies": { - "@babel/template": "^7.22.5", - "@babel/types": "^7.22.5" + "es-define-property": "^1.0.0", + "es-errors": "^1.3.0", + "function-bind": "^1.1.2", + "get-intrinsic": "^1.2.4", + "set-function-length": "^1.2.1" }, "engines": { - "node": ">=6.9.0" + "node": ">= 0.4" + }, + "funding": { + "url": "https://github.com/sponsors/ljharb" } }, - "node_modules/@babel/helper-hoist-variables": { - "version": "7.22.5", - "resolved": "https://registry.npmjs.org/@babel/helper-hoist-variables/-/helper-hoist-variables-7.22.5.tgz", - "integrity": "sha512-wGjk9QZVzvknA6yKIUURb8zY3grXCcOZt+/7Wcy8O2uctxhplmUPkOdlgoNhmdVee2c92JXbf1xpMtVNbfoxRw==", + "../node_modules/chokidar": { + "version": "3.5.3", "dev": true, + "funding": [ + { + "type": "individual", + "url": "https://paulmillr.com/funding/" + } + ], + "license": "MIT", "dependencies": { - "@babel/types": "^7.22.5" + "anymatch": "~3.1.2", + "braces": "~3.0.2", + "glob-parent": "~5.1.2", + "is-binary-path": "~2.1.0", + "is-glob": "~4.0.1", + "normalize-path": "~3.0.0", + "readdirp": "~3.6.0" }, "engines": { - "node": ">=6.9.0" + "node": ">= 8.10.0" + }, + "optionalDependencies": { + "fsevents": "~2.3.2" } }, - "node_modules/@babel/helper-module-imports": { - "version": "7.22.5", - "resolved": "https://registry.npmjs.org/@babel/helper-module-imports/-/helper-module-imports-7.22.5.tgz", - "integrity": "sha512-8Dl6+HD/cKifutF5qGd/8ZJi84QeAKh+CEe1sBzz8UayBBGg1dAIJrdHOcOM5b2MpzWL2yuotJTtGjETq0qjXg==", + "../node_modules/cloudinary": { + "version": "1.40.0", + "license": "MIT", "dependencies": { - "@babel/types": "^7.22.5" + "cloudinary-core": "^2.13.0", + "core-js": "^3.30.1", + "lodash": "^4.17.21", + "q": "^1.5.1" }, "engines": { - "node": ">=6.9.0" + "node": ">=0.6" } }, - "node_modules/@babel/helper-module-transforms": { - "version": "7.22.9", - "resolved": "https://registry.npmjs.org/@babel/helper-module-transforms/-/helper-module-transforms-7.22.9.tgz", - "integrity": "sha512-t+WA2Xn5K+rTeGtC8jCsdAH52bjggG5TKRuRrAGNM/mjIbO4GxvlLMFOEz9wXY5I2XQ60PMFsAG2WIcG82dQMQ==", + "../node_modules/cloudinary-core": { + "version": "2.13.0", + "license": "MIT", + "peerDependencies": { + "lodash": ">=4.0" + } + }, + "../node_modules/concat-map": { + "version": "0.0.1", "dev": true, + "license": "MIT" + }, + "../node_modules/content-disposition": { + "version": "0.5.4", + "license": "MIT", "dependencies": { - "@babel/helper-environment-visitor": "^7.22.5", - "@babel/helper-module-imports": "^7.22.5", - "@babel/helper-simple-access": "^7.22.5", - "@babel/helper-split-export-declaration": "^7.22.6", - "@babel/helper-validator-identifier": "^7.22.5" + "safe-buffer": "5.2.1" }, "engines": { - "node": ">=6.9.0" - }, - "peerDependencies": { - "@babel/core": "^7.0.0" + "node": ">= 0.6" } }, - "node_modules/@babel/helper-plugin-utils": { - "version": "7.22.5", - "resolved": "https://registry.npmjs.org/@babel/helper-plugin-utils/-/helper-plugin-utils-7.22.5.tgz", - "integrity": "sha512-uLls06UVKgFG9QD4OeFYLEGteMIAa5kpTPcFL28yuCIIzsf6ZyKZMllKVOCZFhiZ5ptnwX4mtKdWCBE/uT4amg==", - "dev": true, + "../node_modules/content-type": { + "version": "1.0.5", + "license": "MIT", "engines": { - "node": ">=6.9.0" + "node": ">= 0.6" } }, - "node_modules/@babel/helper-simple-access": { - "version": "7.22.5", - "resolved": "https://registry.npmjs.org/@babel/helper-simple-access/-/helper-simple-access-7.22.5.tgz", - "integrity": "sha512-n0H99E/K+Bika3++WNL17POvo4rKWZ7lZEp1Q+fStVbUi8nxPQEBOlTmCOxW/0JsS56SKKQ+ojAe2pHKJHN35w==", - "dev": true, - "dependencies": { - "@babel/types": "^7.22.5" - }, + "../node_modules/cookie": { + "version": "0.4.1", + "license": "MIT", "engines": { - "node": ">=6.9.0" + "node": ">= 0.6" } }, - "node_modules/@babel/helper-split-export-declaration": { - "version": "7.22.6", - "resolved": "https://registry.npmjs.org/@babel/helper-split-export-declaration/-/helper-split-export-declaration-7.22.6.tgz", - "integrity": "sha512-AsUnxuLhRYsisFiaJwvp1QF+I3KjD5FOxut14q/GzovUe6orHLesW2C7d754kRm53h5gqrz6sFl6sxc4BVtE/g==", - "dev": true, + "../node_modules/cookie-parser": { + "version": "1.4.6", + "license": "MIT", "dependencies": { - "@babel/types": "^7.22.5" + "cookie": "0.4.1", + "cookie-signature": "1.0.6" }, "engines": { - "node": ">=6.9.0" + "node": ">= 0.8.0" } }, - "node_modules/@babel/helper-string-parser": { - "version": "7.22.5", - "resolved": "https://registry.npmjs.org/@babel/helper-string-parser/-/helper-string-parser-7.22.5.tgz", - "integrity": "sha512-mM4COjgZox8U+JcXQwPijIZLElkgEpO5rsERVDJTc2qfCDfERyob6k5WegS14SX18IIjv+XD+GrqNumY5JRCDw==", - "engines": { - "node": ">=6.9.0" + "../node_modules/cookie-signature": { + "version": "1.0.6", + "license": "MIT" + }, + "../node_modules/core-js": { + "version": "3.32.0", + "hasInstallScript": true, + "license": "MIT", + "funding": { + "type": "opencollective", + "url": "https://opencollective.com/core-js" } }, - "node_modules/@babel/helper-validator-identifier": { - "version": "7.22.5", - "resolved": "https://registry.npmjs.org/@babel/helper-validator-identifier/-/helper-validator-identifier-7.22.5.tgz", - "integrity": "sha512-aJXu+6lErq8ltp+JhkJUfk1MTGyuA4v7f3pA+BJ5HLfNC6nAQ0Cpi9uOquUj8Hehg0aUiHzWQbOVJGao6ztBAQ==", + "../node_modules/cors": { + "version": "2.8.5", + "license": "MIT", + "dependencies": { + "object-assign": "^4", + "vary": "^1" + }, "engines": { - "node": ">=6.9.0" + "node": ">= 0.10" } }, - "node_modules/@babel/helper-validator-option": { - "version": "7.22.5", - "resolved": "https://registry.npmjs.org/@babel/helper-validator-option/-/helper-validator-option-7.22.5.tgz", - "integrity": "sha512-R3oB6xlIVKUnxNUxbmgq7pKjxpru24zlimpE8WK47fACIlM0II/Hm1RS8IaOI7NgCr6LNS+jl5l75m20npAziw==", - "dev": true, - "engines": { - "node": ">=6.9.0" + "../node_modules/cron": { + "version": "3.1.7", + "license": "MIT", + "dependencies": { + "@types/luxon": "~3.4.0", + "luxon": "~3.4.0" } }, - "node_modules/@babel/helpers": { - "version": "7.22.6", - "resolved": "https://registry.npmjs.org/@babel/helpers/-/helpers-7.22.6.tgz", - "integrity": "sha512-YjDs6y/fVOYFV8hAf1rxd1QvR9wJe1pDBZ2AREKq/SDayfPzgk0PBnVuTCE5X1acEpMMNOVUqoe+OwiZGJ+OaA==", - "dev": true, + "../node_modules/debug": { + "version": "2.6.9", + "license": "MIT", "dependencies": { - "@babel/template": "^7.22.5", - "@babel/traverse": "^7.22.6", - "@babel/types": "^7.22.5" - }, - "engines": { - "node": ">=6.9.0" + "ms": "2.0.0" } }, - "node_modules/@babel/highlight": { - "version": "7.22.5", - "resolved": "https://registry.npmjs.org/@babel/highlight/-/highlight-7.22.5.tgz", - "integrity": "sha512-BSKlD1hgnedS5XRnGOljZawtag7H1yPfQp0tdNJCHoH6AZ+Pcm9VvkrK59/Yy593Ypg0zMxH2BxD1VPYUQ7UIw==", + "../node_modules/define-data-property": { + "version": "1.1.4", + "license": "MIT", "dependencies": { - "@babel/helper-validator-identifier": "^7.22.5", - "chalk": "^2.0.0", - "js-tokens": "^4.0.0" + "es-define-property": "^1.0.0", + "es-errors": "^1.3.0", + "gopd": "^1.0.1" }, "engines": { - "node": ">=6.9.0" + "node": ">= 0.4" + }, + "funding": { + "url": "https://github.com/sponsors/ljharb" } }, - "node_modules/@babel/parser": { - "version": "7.22.7", - "resolved": "https://registry.npmjs.org/@babel/parser/-/parser-7.22.7.tgz", - "integrity": "sha512-7NF8pOkHP5o2vpmGgNGcfAeCvOYhGLyA3Z4eBQkT1RJlWu47n63bCs93QfJ2hIAFCil7L5P2IWhs1oToVgrL0Q==", - "dev": true, - "bin": { - "parser": "bin/babel-parser.js" - }, + "../node_modules/depd": { + "version": "2.0.0", + "license": "MIT", "engines": { - "node": ">=6.0.0" + "node": ">= 0.8" } }, - "node_modules/@babel/plugin-transform-react-jsx-self": { - "version": "7.22.5", - "resolved": "https://registry.npmjs.org/@babel/plugin-transform-react-jsx-self/-/plugin-transform-react-jsx-self-7.22.5.tgz", - "integrity": "sha512-nTh2ogNUtxbiSbxaT4Ds6aXnXEipHweN9YRgOX/oNXdf0cCrGn/+2LozFa3lnPV5D90MkjhgckCPBrsoSc1a7g==", - "dev": true, - "dependencies": { - "@babel/helper-plugin-utils": "^7.22.5" - }, + "../node_modules/destroy": { + "version": "1.2.0", + "license": "MIT", "engines": { - "node": ">=6.9.0" - }, - "peerDependencies": { - "@babel/core": "^7.0.0-0" + "node": ">= 0.8", + "npm": "1.2.8000 || >= 1.4.16" } }, - "node_modules/@babel/plugin-transform-react-jsx-source": { - "version": "7.22.5", - "resolved": "https://registry.npmjs.org/@babel/plugin-transform-react-jsx-source/-/plugin-transform-react-jsx-source-7.22.5.tgz", - "integrity": "sha512-yIiRO6yobeEIaI0RTbIr8iAK9FcBHLtZq0S89ZPjDLQXBA4xvghaKqI0etp/tF3htTM0sazJKKLz9oEiGRtu7w==", - "dev": true, - "dependencies": { - "@babel/helper-plugin-utils": "^7.22.5" - }, + "../node_modules/dotenv": { + "version": "16.4.5", + "license": "BSD-2-Clause", "engines": { - "node": ">=6.9.0" + "node": ">=12" }, - "peerDependencies": { - "@babel/core": "^7.0.0-0" + "funding": { + "url": "https://dotenvx.com" } }, - "node_modules/@babel/runtime": { - "version": "7.22.6", - "resolved": "https://registry.npmjs.org/@babel/runtime/-/runtime-7.22.6.tgz", - "integrity": "sha512-wDb5pWm4WDdF6LFUde3Jl8WzPA+3ZbxYqkC6xAXuD3irdEHN1k0NfTRrJD8ZD378SJ61miMLCqIOXYhd8x+AJQ==", + "../node_modules/ecdsa-sig-formatter": { + "version": "1.0.11", + "license": "Apache-2.0", "dependencies": { - "regenerator-runtime": "^0.13.11" - }, + "safe-buffer": "^5.0.1" + } + }, + "../node_modules/ee-first": { + "version": "1.1.1", + "license": "MIT" + }, + "../node_modules/encodeurl": { + "version": "1.0.2", + "license": "MIT", "engines": { - "node": ">=6.9.0" + "node": ">= 0.8" } }, - "node_modules/@babel/template": { - "version": "7.22.5", - "resolved": "https://registry.npmjs.org/@babel/template/-/template-7.22.5.tgz", - "integrity": "sha512-X7yV7eiwAxdj9k94NEylvbVHLiVG1nvzCV2EAowhxLTwODV1jl9UzZ48leOC0sH7OnuHrIkllaBgneUykIcZaw==", - "dev": true, + "../node_modules/engine.io": { + "version": "6.5.5", + "license": "MIT", "dependencies": { - "@babel/code-frame": "^7.22.5", - "@babel/parser": "^7.22.5", - "@babel/types": "^7.22.5" + "@types/cookie": "^0.4.1", + "@types/cors": "^2.8.12", + "@types/node": ">=10.0.0", + "accepts": "~1.3.4", + "base64id": "2.0.0", + "cookie": "~0.4.1", + "cors": "~2.8.5", + "debug": "~4.3.1", + "engine.io-parser": "~5.2.1", + "ws": "~8.17.1" }, "engines": { - "node": ">=6.9.0" + "node": ">=10.2.0" } }, - "node_modules/@babel/traverse": { - "version": "7.22.8", - "resolved": "https://registry.npmjs.org/@babel/traverse/-/traverse-7.22.8.tgz", - "integrity": "sha512-y6LPR+wpM2I3qJrsheCTwhIinzkETbplIgPBbwvqPKc+uljeA5gP+3nP8irdYt1mjQaDnlIcG+dw8OjAco4GXw==", - "dev": true, + "../node_modules/engine.io-parser": { + "version": "5.2.1", + "license": "MIT", + "engines": { + "node": ">=10.0.0" + } + }, + "../node_modules/engine.io/node_modules/debug": { + "version": "4.3.4", + "license": "MIT", "dependencies": { - "@babel/code-frame": "^7.22.5", - "@babel/generator": "^7.22.7", - "@babel/helper-environment-visitor": "^7.22.5", - "@babel/helper-function-name": "^7.22.5", - "@babel/helper-hoist-variables": "^7.22.5", - "@babel/helper-split-export-declaration": "^7.22.6", - "@babel/parser": "^7.22.7", - "@babel/types": "^7.22.5", - "debug": "^4.1.0", - "globals": "^11.1.0" + "ms": "2.1.2" }, "engines": { - "node": ">=6.9.0" + "node": ">=6.0" + }, + "peerDependenciesMeta": { + "supports-color": { + "optional": true + } } }, - "node_modules/@babel/types": { - "version": "7.22.5", - "resolved": "https://registry.npmjs.org/@babel/types/-/types-7.22.5.tgz", - "integrity": "sha512-zo3MIHGOkPOfoRXitsgHLjEXmlDaD/5KU1Uzuc9GNiZPhSqVxVRtxuPaSBZDsYZ9qV88AjtMtWW7ww98loJ9KA==", + "../node_modules/engine.io/node_modules/ms": { + "version": "2.1.2", + "license": "MIT" + }, + "../node_modules/es-define-property": { + "version": "1.0.0", + "license": "MIT", "dependencies": { - "@babel/helper-string-parser": "^7.22.5", - "@babel/helper-validator-identifier": "^7.22.5", - "to-fast-properties": "^2.0.0" + "get-intrinsic": "^1.2.4" }, "engines": { - "node": ">=6.9.0" + "node": ">= 0.4" } }, - "node_modules/@chakra-ui/accordion": { - "version": "2.2.0", - "resolved": "https://registry.npmjs.org/@chakra-ui/accordion/-/accordion-2.2.0.tgz", - "integrity": "sha512-2IK1iLzTZ22u8GKPPPn65mqJdZidn4AvkgAbv17ISdKA07VHJ8jSd4QF1T5iCXjKfZ0XaXozmhP4kDhjwF2IbQ==", - "dependencies": { - "@chakra-ui/descendant": "3.0.14", - "@chakra-ui/icon": "3.0.16", - "@chakra-ui/react-context": "2.0.8", - "@chakra-ui/react-use-controllable-state": "2.0.8", - "@chakra-ui/react-use-merge-refs": "2.0.7", - "@chakra-ui/shared-utils": "2.0.5", - "@chakra-ui/transition": "2.0.16" - }, - "peerDependencies": { - "@chakra-ui/system": ">=2.0.0", - "framer-motion": ">=4.0.0", - "react": ">=18" + "../node_modules/es-errors": { + "version": "1.3.0", + "license": "MIT", + "engines": { + "node": ">= 0.4" } }, - "node_modules/@chakra-ui/alert": { - "version": "2.1.0", - "resolved": "https://registry.npmjs.org/@chakra-ui/alert/-/alert-2.1.0.tgz", - "integrity": "sha512-OcfHwoXI5VrmM+tHJTHT62Bx6TfyfCxSa0PWUOueJzSyhlUOKBND5we6UtrOB7D0jwX45qKKEDJOLG5yCG21jQ==", + "../node_modules/escape-html": { + "version": "1.0.3", + "license": "MIT" + }, + "../node_modules/etag": { + "version": "1.8.1", + "license": "MIT", + "engines": { + "node": ">= 0.6" + } + }, + "../node_modules/express": { + "version": "4.19.2", + "license": "MIT", "dependencies": { - "@chakra-ui/icon": "3.0.16", - "@chakra-ui/react-context": "2.0.8", - "@chakra-ui/shared-utils": "2.0.5", - "@chakra-ui/spinner": "2.0.13" + "accepts": "~1.3.8", + "array-flatten": "1.1.1", + "body-parser": "1.20.2", + "content-disposition": "0.5.4", + "content-type": "~1.0.4", + "cookie": "0.6.0", + "cookie-signature": "1.0.6", + "debug": "2.6.9", + "depd": "2.0.0", + "encodeurl": "~1.0.2", + "escape-html": "~1.0.3", + "etag": "~1.8.1", + "finalhandler": "1.2.0", + "fresh": "0.5.2", + "http-errors": "2.0.0", + "merge-descriptors": "1.0.1", + "methods": "~1.1.2", + "on-finished": "2.4.1", + "parseurl": "~1.3.3", + "path-to-regexp": "0.1.7", + "proxy-addr": "~2.0.7", + "qs": "6.11.0", + "range-parser": "~1.2.1", + "safe-buffer": "5.2.1", + "send": "0.18.0", + "serve-static": "1.15.0", + "setprototypeof": "1.2.0", + "statuses": "2.0.1", + "type-is": "~1.6.18", + "utils-merge": "1.0.1", + "vary": "~1.1.2" }, - "peerDependencies": { - "@chakra-ui/system": ">=2.0.0", - "react": ">=18" + "engines": { + "node": ">= 0.10.0" } }, - "node_modules/@chakra-ui/anatomy": { - "version": "2.1.2", - "resolved": "https://registry.npmjs.org/@chakra-ui/anatomy/-/anatomy-2.1.2.tgz", - "integrity": "sha512-pKfOS/mztc4sUXHNc8ypJ1gPWSolWT770jrgVRfolVbYlki8y5Y+As996zMF6k5lewTu6j9DQequ7Cc9a69IVQ==" + "../node_modules/express/node_modules/cookie": { + "version": "0.6.0", + "license": "MIT", + "engines": { + "node": ">= 0.6" + } }, - "node_modules/@chakra-ui/avatar": { - "version": "2.2.11", - "resolved": "https://registry.npmjs.org/@chakra-ui/avatar/-/avatar-2.2.11.tgz", - "integrity": "sha512-CJFkoWvlCTDJTUBrKA/aVyG5Zz6TBEIVmmsJtqC6VcQuVDTxkWod8ruXnjb0LT2DUveL7xR5qZM9a5IXcsH3zg==", + "../node_modules/fill-range": { + "version": "7.1.1", + "dev": true, + "license": "MIT", "dependencies": { - "@chakra-ui/image": "2.0.16", - "@chakra-ui/react-children-utils": "2.0.6", - "@chakra-ui/react-context": "2.0.8", - "@chakra-ui/shared-utils": "2.0.5" + "to-regex-range": "^5.0.1" }, - "peerDependencies": { - "@chakra-ui/system": ">=2.0.0", - "react": ">=18" + "engines": { + "node": ">=8" } }, - "node_modules/@chakra-ui/breadcrumb": { - "version": "2.1.5", - "resolved": "https://registry.npmjs.org/@chakra-ui/breadcrumb/-/breadcrumb-2.1.5.tgz", - "integrity": "sha512-p3eQQrHQBkRB69xOmNyBJqEdfCrMt+e0eOH+Pm/DjFWfIVIbnIaFbmDCeWClqlLa21Ypc6h1hR9jEmvg8kmOog==", + "../node_modules/finalhandler": { + "version": "1.2.0", + "license": "MIT", "dependencies": { - "@chakra-ui/react-children-utils": "2.0.6", - "@chakra-ui/react-context": "2.0.8", - "@chakra-ui/shared-utils": "2.0.5" + "debug": "2.6.9", + "encodeurl": "~1.0.2", + "escape-html": "~1.0.3", + "on-finished": "2.4.1", + "parseurl": "~1.3.3", + "statuses": "2.0.1", + "unpipe": "~1.0.0" }, - "peerDependencies": { - "@chakra-ui/system": ">=2.0.0", - "react": ">=18" + "engines": { + "node": ">= 0.8" } }, - "node_modules/@chakra-ui/breakpoint-utils": { - "version": "2.0.8", - "resolved": "https://registry.npmjs.org/@chakra-ui/breakpoint-utils/-/breakpoint-utils-2.0.8.tgz", - "integrity": "sha512-Pq32MlEX9fwb5j5xx8s18zJMARNHlQZH2VH1RZgfgRDpp7DcEgtRW5AInfN5CfqdHLO1dGxA7I3MqEuL5JnIsA==", - "dependencies": { - "@chakra-ui/shared-utils": "2.0.5" + "../node_modules/forwarded": { + "version": "0.2.0", + "license": "MIT", + "engines": { + "node": ">= 0.6" } }, - "node_modules/@chakra-ui/button": { - "version": "2.0.18", - "resolved": "https://registry.npmjs.org/@chakra-ui/button/-/button-2.0.18.tgz", - "integrity": "sha512-E3c99+lOm6ou4nQVOTLkG+IdOPMjsQK+Qe7VyP8A/xeAMFONuibrWPRPpprr4ZkB4kEoLMfNuyH2+aEza3ScUA==", - "dependencies": { - "@chakra-ui/react-context": "2.0.8", - "@chakra-ui/react-use-merge-refs": "2.0.7", - "@chakra-ui/shared-utils": "2.0.5", - "@chakra-ui/spinner": "2.0.13" - }, - "peerDependencies": { - "@chakra-ui/system": ">=2.0.0", - "react": ">=18" + "../node_modules/fresh": { + "version": "0.5.2", + "license": "MIT", + "engines": { + "node": ">= 0.6" } }, - "node_modules/@chakra-ui/card": { - "version": "2.1.6", - "resolved": "https://registry.npmjs.org/@chakra-ui/card/-/card-2.1.6.tgz", - "integrity": "sha512-fFd/WAdRNVY/WOSQv4skpy0WeVhhI0f7dTY1Sm0jVl0KLmuP/GnpsWtKtqWjNcV00K963EXDyhlk6+9oxbP4gw==", - "dependencies": { - "@chakra-ui/shared-utils": "2.0.5" - }, - "peerDependencies": { - "@chakra-ui/system": ">=2.0.0", - "react": ">=18" + "../node_modules/fsevents": { + "version": "2.3.2", + "dev": true, + "license": "MIT", + "optional": true, + "os": [ + "darwin" + ], + "engines": { + "node": "^8.16.0 || ^10.6.0 || >=11.0.0" } }, - "node_modules/@chakra-ui/checkbox": { - "version": "2.2.15", - "resolved": "https://registry.npmjs.org/@chakra-ui/checkbox/-/checkbox-2.2.15.tgz", - "integrity": "sha512-Ju2yQjX8azgFa5f6VLPuwdGYobZ+rdbcYqjiks848JvPc75UsPhpS05cb4XlrKT7M16I8txDA5rPJdqqFicHCA==", - "dependencies": { - "@chakra-ui/form-control": "2.0.18", - "@chakra-ui/react-context": "2.0.8", - "@chakra-ui/react-types": "2.0.7", - "@chakra-ui/react-use-callback-ref": "2.0.7", - "@chakra-ui/react-use-controllable-state": "2.0.8", - "@chakra-ui/react-use-merge-refs": "2.0.7", - "@chakra-ui/react-use-safe-layout-effect": "2.0.5", - "@chakra-ui/react-use-update-effect": "2.0.7", - "@chakra-ui/shared-utils": "2.0.5", - "@chakra-ui/visually-hidden": "2.0.15", - "@zag-js/focus-visible": "0.2.2" - }, - "peerDependencies": { - "@chakra-ui/system": ">=2.0.0", - "react": ">=18" + "../node_modules/function-bind": { + "version": "1.1.2", + "license": "MIT", + "funding": { + "url": "https://github.com/sponsors/ljharb" } }, - "node_modules/@chakra-ui/clickable": { - "version": "2.0.14", - "resolved": "https://registry.npmjs.org/@chakra-ui/clickable/-/clickable-2.0.14.tgz", - "integrity": "sha512-jfsM1qaD74ZykLHmvmsKRhDyokLUxEfL8Il1VoZMNX5RBI0xW/56vKpLTFF/v/+vLPLS+Te2cZdD4+2O+G6ulA==", + "../node_modules/get-intrinsic": { + "version": "1.2.4", + "license": "MIT", "dependencies": { - "@chakra-ui/react-use-merge-refs": "2.0.7", - "@chakra-ui/shared-utils": "2.0.5" + "es-errors": "^1.3.0", + "function-bind": "^1.1.2", + "has-proto": "^1.0.1", + "has-symbols": "^1.0.3", + "hasown": "^2.0.0" }, - "peerDependencies": { - "react": ">=18" + "engines": { + "node": ">= 0.4" + }, + "funding": { + "url": "https://github.com/sponsors/ljharb" } }, - "node_modules/@chakra-ui/close-button": { - "version": "2.0.17", - "resolved": "https://registry.npmjs.org/@chakra-ui/close-button/-/close-button-2.0.17.tgz", - "integrity": "sha512-05YPXk456t1Xa3KpqTrvm+7smx+95dmaPiwjiBN3p7LHUQVHJd8ZXSDB0V+WKi419k3cVQeJUdU/azDO2f40sw==", + "../node_modules/glob-parent": { + "version": "5.1.2", + "dev": true, + "license": "ISC", "dependencies": { - "@chakra-ui/icon": "3.0.16" + "is-glob": "^4.0.1" }, - "peerDependencies": { - "@chakra-ui/system": ">=2.0.0", - "react": ">=18" + "engines": { + "node": ">= 6" } }, - "node_modules/@chakra-ui/color-mode": { - "version": "2.1.12", - "resolved": "https://registry.npmjs.org/@chakra-ui/color-mode/-/color-mode-2.1.12.tgz", - "integrity": "sha512-sYyfJGDoJSLYO+V2hxV9r033qhte5Nw/wAn5yRGGZnEEN1dKPEdWQ3XZvglWSDTNd0w9zkoH2w6vP4FBBYb/iw==", + "../node_modules/gopd": { + "version": "1.0.1", + "license": "MIT", "dependencies": { - "@chakra-ui/react-use-safe-layout-effect": "2.0.5" + "get-intrinsic": "^1.1.3" }, - "peerDependencies": { - "react": ">=18" + "funding": { + "url": "https://github.com/sponsors/ljharb" } }, - "node_modules/@chakra-ui/control-box": { - "version": "2.0.13", - "resolved": "https://registry.npmjs.org/@chakra-ui/control-box/-/control-box-2.0.13.tgz", - "integrity": "sha512-FEyrU4crxati80KUF/+1Z1CU3eZK6Sa0Yv7Z/ydtz9/tvGblXW9NFanoomXAOvcIFLbaLQPPATm9Gmpr7VG05A==", - "peerDependencies": { - "@chakra-ui/system": ">=2.0.0", - "react": ">=18" + "../node_modules/has-flag": { + "version": "3.0.0", + "dev": true, + "license": "MIT", + "engines": { + "node": ">=4" } }, - "node_modules/@chakra-ui/counter": { - "version": "2.0.14", - "resolved": "https://registry.npmjs.org/@chakra-ui/counter/-/counter-2.0.14.tgz", - "integrity": "sha512-KxcSRfUbb94dP77xTip2myoE7P2HQQN4V5fRJmNAGbzcyLciJ+aDylUU/UxgNcEjawUp6Q242NbWb1TSbKoqog==", + "../node_modules/has-property-descriptors": { + "version": "1.0.2", + "license": "MIT", "dependencies": { - "@chakra-ui/number-utils": "2.0.7", - "@chakra-ui/react-use-callback-ref": "2.0.7", - "@chakra-ui/shared-utils": "2.0.5" + "es-define-property": "^1.0.0" }, - "peerDependencies": { - "react": ">=18" + "funding": { + "url": "https://github.com/sponsors/ljharb" } }, - "node_modules/@chakra-ui/css-reset": { - "version": "2.1.2", - "resolved": "https://registry.npmjs.org/@chakra-ui/css-reset/-/css-reset-2.1.2.tgz", - "integrity": "sha512-4ySTLd+3iRpp4lX0yI9Yo2uQm2f+qwYGNOZF0cNcfN+4UJCd3IsaWxYRR/Anz+M51NVldZbYzC+TEYC/kpJc4A==", - "peerDependencies": { - "@emotion/react": ">=10.0.35", - "react": ">=18" + "../node_modules/has-proto": { + "version": "1.0.3", + "license": "MIT", + "engines": { + "node": ">= 0.4" + }, + "funding": { + "url": "https://github.com/sponsors/ljharb" } }, - "node_modules/@chakra-ui/descendant": { - "version": "3.0.14", - "resolved": "https://registry.npmjs.org/@chakra-ui/descendant/-/descendant-3.0.14.tgz", - "integrity": "sha512-+Ahvp9H4HMpfScIv9w1vaecGz7qWAaK1YFHHolz/SIsGLaLGlbdp+5UNabQC7L6TUnzzJDQDxzwif78rTD7ang==", - "dependencies": { - "@chakra-ui/react-context": "2.0.8", - "@chakra-ui/react-use-merge-refs": "2.0.7" + "../node_modules/has-symbols": { + "version": "1.0.3", + "license": "MIT", + "engines": { + "node": ">= 0.4" }, - "peerDependencies": { - "react": ">=18" + "funding": { + "url": "https://github.com/sponsors/ljharb" } }, - "node_modules/@chakra-ui/dom-utils": { - "version": "2.1.0", - "resolved": "https://registry.npmjs.org/@chakra-ui/dom-utils/-/dom-utils-2.1.0.tgz", - "integrity": "sha512-ZmF2qRa1QZ0CMLU8M1zCfmw29DmPNtfjR9iTo74U5FPr3i1aoAh7fbJ4qAlZ197Xw9eAW28tvzQuoVWeL5C7fQ==" - }, - "node_modules/@chakra-ui/editable": { - "version": "3.0.0", - "resolved": "https://registry.npmjs.org/@chakra-ui/editable/-/editable-3.0.0.tgz", - "integrity": "sha512-q/7C/TM3iLaoQKlEiM8AY565i9NoaXtS6N6N4HWIEL5mZJPbMeHKxrCHUZlHxYuQJqFOGc09ZPD9fAFx1GkYwQ==", + "../node_modules/hasown": { + "version": "2.0.2", + "license": "MIT", "dependencies": { - "@chakra-ui/react-context": "2.0.8", - "@chakra-ui/react-types": "2.0.7", - "@chakra-ui/react-use-callback-ref": "2.0.7", - "@chakra-ui/react-use-controllable-state": "2.0.8", - "@chakra-ui/react-use-focus-on-pointer-down": "2.0.6", - "@chakra-ui/react-use-merge-refs": "2.0.7", - "@chakra-ui/react-use-safe-layout-effect": "2.0.5", - "@chakra-ui/react-use-update-effect": "2.0.7", - "@chakra-ui/shared-utils": "2.0.5" + "function-bind": "^1.1.2" }, - "peerDependencies": { - "@chakra-ui/system": ">=2.0.0", - "react": ">=18" + "engines": { + "node": ">= 0.4" } }, - "node_modules/@chakra-ui/event-utils": { - "version": "2.0.8", - "resolved": "https://registry.npmjs.org/@chakra-ui/event-utils/-/event-utils-2.0.8.tgz", - "integrity": "sha512-IGM/yGUHS+8TOQrZGpAKOJl/xGBrmRYJrmbHfUE7zrG3PpQyXvbLDP1M+RggkCFVgHlJi2wpYIf0QtQlU0XZfw==" - }, - "node_modules/@chakra-ui/focus-lock": { - "version": "2.0.17", - "resolved": "https://registry.npmjs.org/@chakra-ui/focus-lock/-/focus-lock-2.0.17.tgz", - "integrity": "sha512-V+m4Ml9E8QY66DUpHX/imInVvz5XJ5zx59Tl0aNancXgeVY1Rt/ZdxuZdPLCAmPC/MF3GUOgnEA+WU8i+VL6Gw==", + "../node_modules/http-errors": { + "version": "2.0.0", + "license": "MIT", "dependencies": { - "@chakra-ui/dom-utils": "2.1.0", - "react-focus-lock": "^2.9.4" + "depd": "2.0.0", + "inherits": "2.0.4", + "setprototypeof": "1.2.0", + "statuses": "2.0.1", + "toidentifier": "1.0.1" }, - "peerDependencies": { - "react": ">=18" + "engines": { + "node": ">= 0.8" } }, - "node_modules/@chakra-ui/form-control": { - "version": "2.0.18", - "resolved": "https://registry.npmjs.org/@chakra-ui/form-control/-/form-control-2.0.18.tgz", - "integrity": "sha512-I0a0jG01IAtRPccOXSNugyRdUAe8Dy40ctqedZvznMweOXzbMCF1m+sHPLdWeWC/VI13VoAispdPY0/zHOdjsQ==", + "../node_modules/iconv-lite": { + "version": "0.4.24", + "license": "MIT", "dependencies": { - "@chakra-ui/icon": "3.0.16", - "@chakra-ui/react-context": "2.0.8", - "@chakra-ui/react-types": "2.0.7", - "@chakra-ui/react-use-merge-refs": "2.0.7", - "@chakra-ui/shared-utils": "2.0.5" + "safer-buffer": ">= 2.1.2 < 3" }, - "peerDependencies": { - "@chakra-ui/system": ">=2.0.0", - "react": ">=18" + "engines": { + "node": ">=0.10.0" } }, - "node_modules/@chakra-ui/hooks": { - "version": "2.2.0", - "resolved": "https://registry.npmjs.org/@chakra-ui/hooks/-/hooks-2.2.0.tgz", - "integrity": "sha512-GZE64mcr20w+3KbCUPqQJHHmiFnX5Rcp8jS3YntGA4D5X2qU85jka7QkjfBwv/iduZ5Ei0YpCMYGCpi91dhD1Q==", + "../node_modules/ignore-by-default": { + "version": "1.0.1", + "dev": true, + "license": "ISC" + }, + "../node_modules/inherits": { + "version": "2.0.4", + "license": "ISC" + }, + "../node_modules/ip-address": { + "version": "9.0.5", + "license": "MIT", "dependencies": { - "@chakra-ui/react-utils": "2.0.12", - "@chakra-ui/utils": "2.0.15", - "compute-scroll-into-view": "1.0.20", - "copy-to-clipboard": "3.3.3" + "jsbn": "1.1.0", + "sprintf-js": "^1.1.3" }, - "peerDependencies": { - "react": ">=18" + "engines": { + "node": ">= 12" } }, - "node_modules/@chakra-ui/icon": { - "version": "3.0.16", - "resolved": "https://registry.npmjs.org/@chakra-ui/icon/-/icon-3.0.16.tgz", - "integrity": "sha512-RpA1X5Ptz8Mt39HSyEIW1wxAz2AXyf9H0JJ5HVx/dBdMZaGMDJ0HyyPBVci0m4RCoJuyG1HHG/DXJaVfUTVAeg==", - "dependencies": { - "@chakra-ui/shared-utils": "2.0.5" - }, - "peerDependencies": { - "@chakra-ui/system": ">=2.0.0", - "react": ">=18" + "../node_modules/ipaddr.js": { + "version": "1.9.1", + "license": "MIT", + "engines": { + "node": ">= 0.10" } }, - "node_modules/@chakra-ui/icons": { + "../node_modules/is-binary-path": { "version": "2.1.0", - "resolved": "https://registry.npmjs.org/@chakra-ui/icons/-/icons-2.1.0.tgz", - "integrity": "sha512-pGFxFfQ/P5VnSRnTzK8zGAJxoxkxpHo/Br9ohRZdOpuhnIHSW7va0P53UoycEO5/vNJ/7BN0oDY0k9qurChcew==", + "dev": true, + "license": "MIT", "dependencies": { - "@chakra-ui/icon": "3.1.0" + "binary-extensions": "^2.0.0" }, - "peerDependencies": { - "@chakra-ui/system": ">=2.0.0", - "react": ">=18" + "engines": { + "node": ">=8" } }, - "node_modules/@chakra-ui/icons/node_modules/@chakra-ui/icon": { - "version": "3.1.0", - "resolved": "https://registry.npmjs.org/@chakra-ui/icon/-/icon-3.1.0.tgz", - "integrity": "sha512-t6v0lGCXRbwUJycN8A/nDTuLktMP+LRjKbYJnd2oL6Pm2vOl99XwEQ5cAEyEa4XoseYNEgXiLR+2TfvgfNFvcw==", - "dependencies": { - "@chakra-ui/shared-utils": "2.0.5" - }, - "peerDependencies": { - "@chakra-ui/system": ">=2.0.0", - "react": ">=18" + "../node_modules/is-extglob": { + "version": "2.1.1", + "dev": true, + "license": "MIT", + "engines": { + "node": ">=0.10.0" } }, - "node_modules/@chakra-ui/image": { - "version": "2.0.16", - "resolved": "https://registry.npmjs.org/@chakra-ui/image/-/image-2.0.16.tgz", - "integrity": "sha512-iFypk1slgP3OK7VIPOtkB0UuiqVxNalgA59yoRM43xLIeZAEZpKngUVno4A2kFS61yKN0eIY4hXD3Xjm+25EJA==", + "../node_modules/is-glob": { + "version": "4.0.3", + "dev": true, + "license": "MIT", "dependencies": { - "@chakra-ui/react-use-safe-layout-effect": "2.0.5", - "@chakra-ui/shared-utils": "2.0.5" + "is-extglob": "^2.1.1" }, - "peerDependencies": { - "@chakra-ui/system": ">=2.0.0", - "react": ">=18" + "engines": { + "node": ">=0.10.0" } }, - "node_modules/@chakra-ui/input": { - "version": "2.0.22", - "resolved": "https://registry.npmjs.org/@chakra-ui/input/-/input-2.0.22.tgz", - "integrity": "sha512-dCIC0/Q7mjZf17YqgoQsnXn0bus6vgriTRn8VmxOc+WcVl+KBSTBWujGrS5yu85WIFQ0aeqQvziDnDQybPqAbA==", - "dependencies": { - "@chakra-ui/form-control": "2.0.18", - "@chakra-ui/object-utils": "2.1.0", - "@chakra-ui/react-children-utils": "2.0.6", - "@chakra-ui/react-context": "2.0.8", - "@chakra-ui/shared-utils": "2.0.5" - }, - "peerDependencies": { - "@chakra-ui/system": ">=2.0.0", - "react": ">=18" - } - }, - "node_modules/@chakra-ui/layout": { - "version": "2.2.0", - "resolved": "https://registry.npmjs.org/@chakra-ui/layout/-/layout-2.2.0.tgz", - "integrity": "sha512-WvfsWQjqzbCxv7pbpPGVKxj9eQr7MC2i37ag4Wn7ClIG7uPuwHYTUWOnjnu27O3H/zA4cRVZ4Hs3GpSPbojZFQ==", - "dependencies": { - "@chakra-ui/breakpoint-utils": "2.0.8", - "@chakra-ui/icon": "3.0.16", - "@chakra-ui/object-utils": "2.1.0", - "@chakra-ui/react-children-utils": "2.0.6", - "@chakra-ui/react-context": "2.0.8", - "@chakra-ui/shared-utils": "2.0.5" - }, - "peerDependencies": { - "@chakra-ui/system": ">=2.0.0", - "react": ">=18" - } - }, - "node_modules/@chakra-ui/lazy-utils": { - "version": "2.0.5", - "resolved": "https://registry.npmjs.org/@chakra-ui/lazy-utils/-/lazy-utils-2.0.5.tgz", - "integrity": "sha512-UULqw7FBvcckQk2n3iPO56TMJvDsNv0FKZI6PlUNJVaGsPbsYxK/8IQ60vZgaTVPtVcjY6BE+y6zg8u9HOqpyg==" - }, - "node_modules/@chakra-ui/live-region": { - "version": "2.0.13", - "resolved": "https://registry.npmjs.org/@chakra-ui/live-region/-/live-region-2.0.13.tgz", - "integrity": "sha512-Ja+Slk6ZkxSA5oJzU2VuGU7TpZpbMb/4P4OUhIf2D30ctmIeXkxTWw1Bs1nGJAVtAPcGS5sKA+zb89i8g+0cTQ==", - "peerDependencies": { - "react": ">=18" - } - }, - "node_modules/@chakra-ui/media-query": { - "version": "3.2.12", - "resolved": "https://registry.npmjs.org/@chakra-ui/media-query/-/media-query-3.2.12.tgz", - "integrity": "sha512-8pSLDf3oxxhFrhd40rs7vSeIBfvOmIKHA7DJlGUC/y+9irD24ZwgmCtFnn+y3gI47hTJsopbSX+wb8nr7XPswA==", - "dependencies": { - "@chakra-ui/breakpoint-utils": "2.0.8", - "@chakra-ui/react-env": "3.0.0", - "@chakra-ui/shared-utils": "2.0.5" - }, - "peerDependencies": { - "@chakra-ui/system": ">=2.0.0", - "react": ">=18" - } - }, - "node_modules/@chakra-ui/menu": { - "version": "2.1.15", - "resolved": "https://registry.npmjs.org/@chakra-ui/menu/-/menu-2.1.15.tgz", - "integrity": "sha512-+1fh7KBKZyhy8wi7Q6nQAzrvjM6xggyhGMnSna0rt6FJVA2jlfkjb5FozyIVPnkfJKjkKd8THVhrs9E7pHNV/w==", - "dependencies": { - "@chakra-ui/clickable": "2.0.14", - "@chakra-ui/descendant": "3.0.14", - "@chakra-ui/lazy-utils": "2.0.5", - "@chakra-ui/popper": "3.0.14", - "@chakra-ui/react-children-utils": "2.0.6", - "@chakra-ui/react-context": "2.0.8", - "@chakra-ui/react-use-animation-state": "2.0.9", - "@chakra-ui/react-use-controllable-state": "2.0.8", - "@chakra-ui/react-use-disclosure": "2.0.8", - "@chakra-ui/react-use-focus-effect": "2.0.11", - "@chakra-ui/react-use-merge-refs": "2.0.7", - "@chakra-ui/react-use-outside-click": "2.1.0", - "@chakra-ui/react-use-update-effect": "2.0.7", - "@chakra-ui/shared-utils": "2.0.5", - "@chakra-ui/transition": "2.0.16" - }, - "peerDependencies": { - "@chakra-ui/system": ">=2.0.0", - "framer-motion": ">=4.0.0", - "react": ">=18" - } - }, - "node_modules/@chakra-ui/modal": { - "version": "2.2.12", - "resolved": "https://registry.npmjs.org/@chakra-ui/modal/-/modal-2.2.12.tgz", - "integrity": "sha512-F1nNmYGvyqlmxidbwaBM3y57NhZ/Qeyc8BE9tb1FL1v9nxQhkfrPvMQ9miK0O1syPN6aZ5MMj+uD3AsRFE+/tA==", - "dependencies": { - "@chakra-ui/close-button": "2.0.17", - "@chakra-ui/focus-lock": "2.0.17", - "@chakra-ui/portal": "2.0.16", - "@chakra-ui/react-context": "2.0.8", - "@chakra-ui/react-types": "2.0.7", - "@chakra-ui/react-use-merge-refs": "2.0.7", - "@chakra-ui/shared-utils": "2.0.5", - "@chakra-ui/transition": "2.0.16", - "aria-hidden": "^1.2.2", - "react-remove-scroll": "^2.5.5" - }, - "peerDependencies": { - "@chakra-ui/system": ">=2.0.0", - "framer-motion": ">=4.0.0", - "react": ">=18", - "react-dom": ">=18" - } - }, - "node_modules/@chakra-ui/number-input": { - "version": "2.0.19", - "resolved": "https://registry.npmjs.org/@chakra-ui/number-input/-/number-input-2.0.19.tgz", - "integrity": "sha512-HDaITvtMEqOauOrCPsARDxKD9PSHmhWywpcyCSOX0lMe4xx2aaGhU0QQFhsJsykj8Er6pytMv6t0KZksdDv3YA==", - "dependencies": { - "@chakra-ui/counter": "2.0.14", - "@chakra-ui/form-control": "2.0.18", - "@chakra-ui/icon": "3.0.16", - "@chakra-ui/react-context": "2.0.8", - "@chakra-ui/react-types": "2.0.7", - "@chakra-ui/react-use-callback-ref": "2.0.7", - "@chakra-ui/react-use-event-listener": "2.0.7", - "@chakra-ui/react-use-interval": "2.0.5", - "@chakra-ui/react-use-merge-refs": "2.0.7", - "@chakra-ui/react-use-safe-layout-effect": "2.0.5", - "@chakra-ui/react-use-update-effect": "2.0.7", - "@chakra-ui/shared-utils": "2.0.5" - }, - "peerDependencies": { - "@chakra-ui/system": ">=2.0.0", - "react": ">=18" - } - }, - "node_modules/@chakra-ui/number-utils": { - "version": "2.0.7", - "resolved": "https://registry.npmjs.org/@chakra-ui/number-utils/-/number-utils-2.0.7.tgz", - "integrity": "sha512-yOGxBjXNvLTBvQyhMDqGU0Oj26s91mbAlqKHiuw737AXHt0aPllOthVUqQMeaYLwLCjGMg0jtI7JReRzyi94Dg==" - }, - "node_modules/@chakra-ui/object-utils": { - "version": "2.1.0", - "resolved": "https://registry.npmjs.org/@chakra-ui/object-utils/-/object-utils-2.1.0.tgz", - "integrity": "sha512-tgIZOgLHaoti5PYGPTwK3t/cqtcycW0owaiOXoZOcpwwX/vlVb+H1jFsQyWiiwQVPt9RkoSLtxzXamx+aHH+bQ==" - }, - "node_modules/@chakra-ui/pin-input": { - "version": "2.0.20", - "resolved": "https://registry.npmjs.org/@chakra-ui/pin-input/-/pin-input-2.0.20.tgz", - "integrity": "sha512-IHVmerrtHN8F+jRB3W1HnMir1S1TUCWhI7qDInxqPtoRffHt6mzZgLZ0izx8p1fD4HkW4c1d4/ZLEz9uH9bBRg==", - "dependencies": { - "@chakra-ui/descendant": "3.0.14", - "@chakra-ui/react-children-utils": "2.0.6", - "@chakra-ui/react-context": "2.0.8", - "@chakra-ui/react-use-controllable-state": "2.0.8", - "@chakra-ui/react-use-merge-refs": "2.0.7", - "@chakra-ui/shared-utils": "2.0.5" - }, - "peerDependencies": { - "@chakra-ui/system": ">=2.0.0", - "react": ">=18" - } - }, - "node_modules/@chakra-ui/popover": { - "version": "2.1.12", - "resolved": "https://registry.npmjs.org/@chakra-ui/popover/-/popover-2.1.12.tgz", - "integrity": "sha512-Corh8trA1f3ydcMQqomgSvYNNhAlpxiBpMY2sglwYazOJcueHA8CI05cJVD0T/wwoTob7BShabhCGFZThn61Ng==", - "dependencies": { - "@chakra-ui/close-button": "2.0.17", - "@chakra-ui/lazy-utils": "2.0.5", - "@chakra-ui/popper": "3.0.14", - "@chakra-ui/react-context": "2.0.8", - "@chakra-ui/react-types": "2.0.7", - "@chakra-ui/react-use-animation-state": "2.0.9", - "@chakra-ui/react-use-disclosure": "2.0.8", - "@chakra-ui/react-use-focus-effect": "2.0.11", - "@chakra-ui/react-use-focus-on-pointer-down": "2.0.6", - "@chakra-ui/react-use-merge-refs": "2.0.7", - "@chakra-ui/shared-utils": "2.0.5" - }, - "peerDependencies": { - "@chakra-ui/system": ">=2.0.0", - "framer-motion": ">=4.0.0", - "react": ">=18" - } - }, - "node_modules/@chakra-ui/popper": { - "version": "3.0.14", - "resolved": "https://registry.npmjs.org/@chakra-ui/popper/-/popper-3.0.14.tgz", - "integrity": "sha512-RDMmmSfjsmHJbVn2agDyoJpTbQK33fxx//njwJdeyM0zTG/3/4xjI/Cxru3acJ2Y+1jFGmPqhO81stFjnbtfIw==", - "dependencies": { - "@chakra-ui/react-types": "2.0.7", - "@chakra-ui/react-use-merge-refs": "2.0.7", - "@popperjs/core": "^2.9.3" - }, - "peerDependencies": { - "react": ">=18" - } - }, - "node_modules/@chakra-ui/portal": { - "version": "2.0.16", - "resolved": "https://registry.npmjs.org/@chakra-ui/portal/-/portal-2.0.16.tgz", - "integrity": "sha512-bVID0qbQ0l4xq38LdqAN4EKD4/uFkDnXzFwOlviC9sl0dNhzICDb1ltuH/Adl1d2HTMqyN60O3GO58eHy7plnQ==", - "dependencies": { - "@chakra-ui/react-context": "2.0.8", - "@chakra-ui/react-use-safe-layout-effect": "2.0.5" - }, - "peerDependencies": { - "react": ">=18", - "react-dom": ">=18" - } - }, - "node_modules/@chakra-ui/progress": { - "version": "2.1.6", - "resolved": "https://registry.npmjs.org/@chakra-ui/progress/-/progress-2.1.6.tgz", - "integrity": "sha512-hHh5Ysv4z6bK+j2GJbi/FT9CVyto2PtNUNwBmr3oNMVsoOUMoRjczfXvvYqp0EHr9PCpxqrq7sRwgQXUzhbDSw==", - "dependencies": { - "@chakra-ui/react-context": "2.0.8" - }, - "peerDependencies": { - "@chakra-ui/system": ">=2.0.0", - "react": ">=18" - } - }, - "node_modules/@chakra-ui/provider": { - "version": "2.3.0", - "resolved": "https://registry.npmjs.org/@chakra-ui/provider/-/provider-2.3.0.tgz", - "integrity": "sha512-vKgmjoLVS3NnHW8RSYwmhhda2ZTi3fQc1egkYSVwngGky4CsN15I+XDhxJitVd66H41cjah/UNJyoeq7ACseLA==", - "dependencies": { - "@chakra-ui/css-reset": "2.1.2", - "@chakra-ui/portal": "2.0.16", - "@chakra-ui/react-env": "3.0.0", - "@chakra-ui/system": "2.5.8", - "@chakra-ui/utils": "2.0.15" - }, - "peerDependencies": { - "@emotion/react": "^11.0.0", - "@emotion/styled": "^11.0.0", - "react": ">=18", - "react-dom": ">=18" - } - }, - "node_modules/@chakra-ui/radio": { - "version": "2.0.22", - "resolved": "https://registry.npmjs.org/@chakra-ui/radio/-/radio-2.0.22.tgz", - "integrity": "sha512-GsQ5WAnLwivWl6gPk8P1x+tCcpVakCt5R5T0HumF7DGPXKdJbjS+RaFySrbETmyTJsKY4QrfXn+g8CWVrMjPjw==", - "dependencies": { - "@chakra-ui/form-control": "2.0.18", - "@chakra-ui/react-context": "2.0.8", - "@chakra-ui/react-types": "2.0.7", - "@chakra-ui/react-use-merge-refs": "2.0.7", - "@chakra-ui/shared-utils": "2.0.5", - "@zag-js/focus-visible": "0.2.2" - }, - "peerDependencies": { - "@chakra-ui/system": ">=2.0.0", - "react": ">=18" - } - }, - "node_modules/@chakra-ui/react": { - "version": "2.7.1", - "resolved": "https://registry.npmjs.org/@chakra-ui/react/-/react-2.7.1.tgz", - "integrity": "sha512-uIYIAg+gnUoRbgdCfSEVvQnrEz0oWWXATGGSQpxmuJovNVyZKnX/Xug7NkWQfBUJPYRSG+VB69ZmsAFpyLSMtA==", - "dependencies": { - "@chakra-ui/accordion": "2.2.0", - "@chakra-ui/alert": "2.1.0", - "@chakra-ui/avatar": "2.2.11", - "@chakra-ui/breadcrumb": "2.1.5", - "@chakra-ui/button": "2.0.18", - "@chakra-ui/card": "2.1.6", - "@chakra-ui/checkbox": "2.2.15", - "@chakra-ui/close-button": "2.0.17", - "@chakra-ui/control-box": "2.0.13", - "@chakra-ui/counter": "2.0.14", - "@chakra-ui/css-reset": "2.1.2", - "@chakra-ui/editable": "3.0.0", - "@chakra-ui/focus-lock": "2.0.17", - "@chakra-ui/form-control": "2.0.18", - "@chakra-ui/hooks": "2.2.0", - "@chakra-ui/icon": "3.0.16", - "@chakra-ui/image": "2.0.16", - "@chakra-ui/input": "2.0.22", - "@chakra-ui/layout": "2.2.0", - "@chakra-ui/live-region": "2.0.13", - "@chakra-ui/media-query": "3.2.12", - "@chakra-ui/menu": "2.1.15", - "@chakra-ui/modal": "2.2.12", - "@chakra-ui/number-input": "2.0.19", - "@chakra-ui/pin-input": "2.0.20", - "@chakra-ui/popover": "2.1.12", - "@chakra-ui/popper": "3.0.14", - "@chakra-ui/portal": "2.0.16", - "@chakra-ui/progress": "2.1.6", - "@chakra-ui/provider": "2.3.0", - "@chakra-ui/radio": "2.0.22", - "@chakra-ui/react-env": "3.0.0", - "@chakra-ui/select": "2.0.19", - "@chakra-ui/skeleton": "2.0.24", - "@chakra-ui/skip-nav": "2.0.15", - "@chakra-ui/slider": "2.0.25", - "@chakra-ui/spinner": "2.0.13", - "@chakra-ui/stat": "2.0.18", - "@chakra-ui/stepper": "2.2.0", - "@chakra-ui/styled-system": "2.9.1", - "@chakra-ui/switch": "2.0.27", - "@chakra-ui/system": "2.5.8", - "@chakra-ui/table": "2.0.17", - "@chakra-ui/tabs": "2.1.9", - "@chakra-ui/tag": "3.0.0", - "@chakra-ui/textarea": "2.0.19", - "@chakra-ui/theme": "3.1.2", - "@chakra-ui/theme-utils": "2.0.18", - "@chakra-ui/toast": "6.1.4", - "@chakra-ui/tooltip": "2.2.9", - "@chakra-ui/transition": "2.0.16", - "@chakra-ui/utils": "2.0.15", - "@chakra-ui/visually-hidden": "2.0.15" - }, - "peerDependencies": { - "@emotion/react": "^11.0.0", - "@emotion/styled": "^11.0.0", - "framer-motion": ">=4.0.0", - "react": ">=18", - "react-dom": ">=18" - } - }, - "node_modules/@chakra-ui/react-children-utils": { - "version": "2.0.6", - "resolved": "https://registry.npmjs.org/@chakra-ui/react-children-utils/-/react-children-utils-2.0.6.tgz", - "integrity": "sha512-QVR2RC7QsOsbWwEnq9YduhpqSFnZGvjjGREV8ygKi8ADhXh93C8azLECCUVgRJF2Wc+So1fgxmjLcbZfY2VmBA==", - "peerDependencies": { - "react": ">=18" - } - }, - "node_modules/@chakra-ui/react-context": { - "version": "2.0.8", - "resolved": "https://registry.npmjs.org/@chakra-ui/react-context/-/react-context-2.0.8.tgz", - "integrity": "sha512-tRTKdn6lCTXM6WPjSokAAKCw2ioih7Eg8cNgaYRSwKBck8nkz9YqxgIIEj3dJD7MGtpl24S/SNI98iRWkRwR/A==", - "peerDependencies": { - "react": ">=18" - } - }, - "node_modules/@chakra-ui/react-env": { - "version": "3.0.0", - "resolved": "https://registry.npmjs.org/@chakra-ui/react-env/-/react-env-3.0.0.tgz", - "integrity": "sha512-tfMRO2v508HQWAqSADFrwZgR9oU10qC97oV6zGbjHh9ALP0/IcFR+Bi71KRTveDTm85fMeAzZYGj57P3Dsipkw==", - "dependencies": { - "@chakra-ui/react-use-safe-layout-effect": "2.0.5" - }, - "peerDependencies": { - "react": ">=18" - } - }, - "node_modules/@chakra-ui/react-types": { - "version": "2.0.7", - "resolved": "https://registry.npmjs.org/@chakra-ui/react-types/-/react-types-2.0.7.tgz", - "integrity": "sha512-12zv2qIZ8EHwiytggtGvo4iLT0APris7T0qaAWqzpUGS0cdUtR8W+V1BJ5Ocq+7tA6dzQ/7+w5hmXih61TuhWQ==", - "peerDependencies": { - "react": ">=18" - } - }, - "node_modules/@chakra-ui/react-use-animation-state": { - "version": "2.0.9", - "resolved": "https://registry.npmjs.org/@chakra-ui/react-use-animation-state/-/react-use-animation-state-2.0.9.tgz", - "integrity": "sha512-WFoD5OG03PBmzJCoRwM8rVfU442AvKBPPgA0yGGlKioH29OGuX7W78Ml+cYdXxonTiB03YSRZzUwaUnP4wAy1Q==", - "dependencies": { - "@chakra-ui/dom-utils": "2.1.0", - "@chakra-ui/react-use-event-listener": "2.0.7" - }, - "peerDependencies": { - "react": ">=18" - } - }, - "node_modules/@chakra-ui/react-use-callback-ref": { - "version": "2.0.7", - "resolved": "https://registry.npmjs.org/@chakra-ui/react-use-callback-ref/-/react-use-callback-ref-2.0.7.tgz", - "integrity": "sha512-YjT76nTpfHAK5NxplAlZsQwNju5KmQExnqsWNPFeOR6vvbC34+iPSTr+r91i1Hdy7gBSbevsOsd5Wm6RN3GuMw==", - "peerDependencies": { - "react": ">=18" - } - }, - "node_modules/@chakra-ui/react-use-controllable-state": { - "version": "2.0.8", - "resolved": "https://registry.npmjs.org/@chakra-ui/react-use-controllable-state/-/react-use-controllable-state-2.0.8.tgz", - "integrity": "sha512-F7rdCbLEmRjwwODqWZ3y+mKgSSHPcLQxeUygwk1BkZPXbKkJJKymOIjIynil2cbH7ku3hcSIWRvuhpCcfQWJ7Q==", - "dependencies": { - "@chakra-ui/react-use-callback-ref": "2.0.7" - }, - "peerDependencies": { - "react": ">=18" - } - }, - "node_modules/@chakra-ui/react-use-disclosure": { - "version": "2.0.8", - "resolved": "https://registry.npmjs.org/@chakra-ui/react-use-disclosure/-/react-use-disclosure-2.0.8.tgz", - "integrity": "sha512-2ir/mHe1YND40e+FyLHnDsnDsBQPwzKDLzfe9GZri7y31oU83JSbHdlAXAhp3bpjohslwavtRCp+S/zRxfO9aQ==", - "dependencies": { - "@chakra-ui/react-use-callback-ref": "2.0.7" - }, - "peerDependencies": { - "react": ">=18" - } - }, - "node_modules/@chakra-ui/react-use-event-listener": { - "version": "2.0.7", - "resolved": "https://registry.npmjs.org/@chakra-ui/react-use-event-listener/-/react-use-event-listener-2.0.7.tgz", - "integrity": "sha512-4wvpx4yudIO3B31pOrXuTHDErawmwiXnvAN7gLEOVREi16+YGNcFnRJ5X5nRrmB7j2MDUtsEDpRBFfw5Z9xQ5g==", - "dependencies": { - "@chakra-ui/react-use-callback-ref": "2.0.7" - }, - "peerDependencies": { - "react": ">=18" - } - }, - "node_modules/@chakra-ui/react-use-focus-effect": { - "version": "2.0.11", - "resolved": "https://registry.npmjs.org/@chakra-ui/react-use-focus-effect/-/react-use-focus-effect-2.0.11.tgz", - "integrity": "sha512-/zadgjaCWD50TfuYsO1vDS2zSBs2p/l8P2DPEIA8FuaowbBubKrk9shKQDWmbfDU7KArGxPxrvo+VXvskPPjHw==", - "dependencies": { - "@chakra-ui/dom-utils": "2.1.0", - "@chakra-ui/react-use-event-listener": "2.0.7", - "@chakra-ui/react-use-safe-layout-effect": "2.0.5", - "@chakra-ui/react-use-update-effect": "2.0.7" - }, - "peerDependencies": { - "react": ">=18" - } - }, - "node_modules/@chakra-ui/react-use-focus-on-pointer-down": { - "version": "2.0.6", - "resolved": "https://registry.npmjs.org/@chakra-ui/react-use-focus-on-pointer-down/-/react-use-focus-on-pointer-down-2.0.6.tgz", - "integrity": "sha512-OigXiLRVySn3tyVqJ/rn57WGuukW8TQe8fJYiLwXbcNyAMuYYounvRxvCy2b53sQ7QIZamza0N0jhirbH5FNoQ==", - "dependencies": { - "@chakra-ui/react-use-event-listener": "2.0.7" - }, - "peerDependencies": { - "react": ">=18" - } - }, - "node_modules/@chakra-ui/react-use-interval": { - "version": "2.0.5", - "resolved": "https://registry.npmjs.org/@chakra-ui/react-use-interval/-/react-use-interval-2.0.5.tgz", - "integrity": "sha512-1nbdwMi2K87V6p5f5AseOKif2CkldLaJlq1TOqaPRwb7v3aU9rltBtYdf+fIyuHSToNJUV6wd9budCFdLCl3Fg==", - "dependencies": { - "@chakra-ui/react-use-callback-ref": "2.0.7" - }, - "peerDependencies": { - "react": ">=18" - } - }, - "node_modules/@chakra-ui/react-use-latest-ref": { - "version": "2.0.5", - "resolved": "https://registry.npmjs.org/@chakra-ui/react-use-latest-ref/-/react-use-latest-ref-2.0.5.tgz", - "integrity": "sha512-3mIuFzMyIo3Ok/D8uhV9voVg7KkrYVO/pwVvNPJOHsDQqCA6DpYE4WDsrIx+fVcwad3Ta7SupexR5PoI+kq6QQ==", - "peerDependencies": { - "react": ">=18" - } - }, - "node_modules/@chakra-ui/react-use-merge-refs": { - "version": "2.0.7", - "resolved": "https://registry.npmjs.org/@chakra-ui/react-use-merge-refs/-/react-use-merge-refs-2.0.7.tgz", - "integrity": "sha512-zds4Uhsc+AMzdH8JDDkLVet9baUBgtOjPbhC5r3A0ZXjZvGhCztFAVE3aExYiVoMPoHLKbLcqvCWE6ioFKz1lw==", - "peerDependencies": { - "react": ">=18" - } - }, - "node_modules/@chakra-ui/react-use-outside-click": { - "version": "2.1.0", - "resolved": "https://registry.npmjs.org/@chakra-ui/react-use-outside-click/-/react-use-outside-click-2.1.0.tgz", - "integrity": "sha512-JanCo4QtWvMl9ZZUpKJKV62RlMWDFdPCE0Q64a7eWTOQgWWcpyBW7TOYRunQTqrK30FqkYFJCOlAWOtn+6Rw7A==", - "dependencies": { - "@chakra-ui/react-use-callback-ref": "2.0.7" - }, - "peerDependencies": { - "react": ">=18" - } - }, - "node_modules/@chakra-ui/react-use-pan-event": { - "version": "2.0.9", - "resolved": "https://registry.npmjs.org/@chakra-ui/react-use-pan-event/-/react-use-pan-event-2.0.9.tgz", - "integrity": "sha512-xu35QXkiyrgsHUOnctl+SwNcwf9Rl62uYE5y8soKOZdBm8E+FvZIt2hxUzK1EoekbJCMzEZ0Yv1ZQCssVkSLaQ==", - "dependencies": { - "@chakra-ui/event-utils": "2.0.8", - "@chakra-ui/react-use-latest-ref": "2.0.5", - "framesync": "6.1.2" - }, - "peerDependencies": { - "react": ">=18" - } - }, - "node_modules/@chakra-ui/react-use-previous": { - "version": "2.0.5", - "resolved": "https://registry.npmjs.org/@chakra-ui/react-use-previous/-/react-use-previous-2.0.5.tgz", - "integrity": "sha512-BIZgjycPE4Xr+MkhKe0h67uHXzQQkBX/u5rYPd65iMGdX1bCkbE0oorZNfOHLKdTmnEb4oVsNvfN6Rfr+Mnbxw==", - "peerDependencies": { - "react": ">=18" - } - }, - "node_modules/@chakra-ui/react-use-safe-layout-effect": { - "version": "2.0.5", - "resolved": "https://registry.npmjs.org/@chakra-ui/react-use-safe-layout-effect/-/react-use-safe-layout-effect-2.0.5.tgz", - "integrity": "sha512-MwAQBz3VxoeFLaesaSEN87reVNVbjcQBDex2WGexAg6hUB6n4gc1OWYH/iXp4tzp4kuggBNhEHkk9BMYXWfhJQ==", - "peerDependencies": { - "react": ">=18" - } - }, - "node_modules/@chakra-ui/react-use-size": { - "version": "2.0.10", - "resolved": "https://registry.npmjs.org/@chakra-ui/react-use-size/-/react-use-size-2.0.10.tgz", - "integrity": "sha512-fdIkH14GDnKQrtQfxX8N3gxbXRPXEl67Y3zeD9z4bKKcQUAYIMqs0MsPZY+FMpGQw8QqafM44nXfL038aIrC5w==", - "dependencies": { - "@zag-js/element-size": "0.3.2" - }, - "peerDependencies": { - "react": ">=18" - } - }, - "node_modules/@chakra-ui/react-use-timeout": { - "version": "2.0.5", - "resolved": "https://registry.npmjs.org/@chakra-ui/react-use-timeout/-/react-use-timeout-2.0.5.tgz", - "integrity": "sha512-QqmB+jVphh3h/CS60PieorpY7UqSPkrQCB7f7F+i9vwwIjtP8fxVHMmkb64K7VlzQiMPzv12nlID5dqkzlv0mw==", - "dependencies": { - "@chakra-ui/react-use-callback-ref": "2.0.7" - }, - "peerDependencies": { - "react": ">=18" - } - }, - "node_modules/@chakra-ui/react-use-update-effect": { - "version": "2.0.7", - "resolved": "https://registry.npmjs.org/@chakra-ui/react-use-update-effect/-/react-use-update-effect-2.0.7.tgz", - "integrity": "sha512-vBM2bmmM83ZdDtasWv3PXPznpTUd+FvqBC8J8rxoRmvdMEfrxTiQRBJhiGHLpS9BPLLPQlosN6KdFU97csB6zg==", - "peerDependencies": { - "react": ">=18" - } - }, - "node_modules/@chakra-ui/react-utils": { - "version": "2.0.12", - "resolved": "https://registry.npmjs.org/@chakra-ui/react-utils/-/react-utils-2.0.12.tgz", - "integrity": "sha512-GbSfVb283+YA3kA8w8xWmzbjNWk14uhNpntnipHCftBibl0lxtQ9YqMFQLwuFOO0U2gYVocszqqDWX+XNKq9hw==", - "dependencies": { - "@chakra-ui/utils": "2.0.15" - }, - "peerDependencies": { - "react": ">=18" - } - }, - "node_modules/@chakra-ui/select": { - "version": "2.0.19", - "resolved": "https://registry.npmjs.org/@chakra-ui/select/-/select-2.0.19.tgz", - "integrity": "sha512-eAlFh+JhwtJ17OrB6fO6gEAGOMH18ERNrXLqWbYLrs674Le7xuREgtuAYDoxUzvYXYYTTdOJtVbcHGriI3o6rA==", - "dependencies": { - "@chakra-ui/form-control": "2.0.18", - "@chakra-ui/shared-utils": "2.0.5" - }, - "peerDependencies": { - "@chakra-ui/system": ">=2.0.0", - "react": ">=18" - } - }, - "node_modules/@chakra-ui/shared-utils": { - "version": "2.0.5", - "resolved": "https://registry.npmjs.org/@chakra-ui/shared-utils/-/shared-utils-2.0.5.tgz", - "integrity": "sha512-4/Wur0FqDov7Y0nCXl7HbHzCg4aq86h+SXdoUeuCMD3dSj7dpsVnStLYhng1vxvlbUnLpdF4oz5Myt3i/a7N3Q==" - }, - "node_modules/@chakra-ui/skeleton": { - "version": "2.0.24", - "resolved": "https://registry.npmjs.org/@chakra-ui/skeleton/-/skeleton-2.0.24.tgz", - "integrity": "sha512-1jXtVKcl/jpbrJlc/TyMsFyI651GTXY5ma30kWyTXoby2E+cxbV6OR8GB/NMZdGxbQBax8/VdtYVjI0n+OBqWA==", - "dependencies": { - "@chakra-ui/media-query": "3.2.12", - "@chakra-ui/react-use-previous": "2.0.5", - "@chakra-ui/shared-utils": "2.0.5" - }, - "peerDependencies": { - "@chakra-ui/system": ">=2.0.0", - "react": ">=18" - } - }, - "node_modules/@chakra-ui/skip-nav": { - "version": "2.0.15", - "resolved": "https://registry.npmjs.org/@chakra-ui/skip-nav/-/skip-nav-2.0.15.tgz", - "integrity": "sha512-5UtmlnV4BmIgEk6lQ0h81JEYhPX04wJEk5ZMoilQ2zEQYL6TkVVHkhRXyc1Zfq76hmHuZPXZV/yJeTecj6jIrA==", - "peerDependencies": { - "@chakra-ui/system": ">=2.0.0", - "react": ">=18" - } - }, - "node_modules/@chakra-ui/slider": { - "version": "2.0.25", - "resolved": "https://registry.npmjs.org/@chakra-ui/slider/-/slider-2.0.25.tgz", - "integrity": "sha512-FnWSi0AIXP+9sHMCPboOKGqm902k8dJtsJ7tu3D0AcKkE62WtYLZ2sTqvwJxCfSl4KqVI1i571SrF9WadnnJ8w==", - "dependencies": { - "@chakra-ui/number-utils": "2.0.7", - "@chakra-ui/react-context": "2.0.8", - "@chakra-ui/react-types": "2.0.7", - "@chakra-ui/react-use-callback-ref": "2.0.7", - "@chakra-ui/react-use-controllable-state": "2.0.8", - "@chakra-ui/react-use-latest-ref": "2.0.5", - "@chakra-ui/react-use-merge-refs": "2.0.7", - "@chakra-ui/react-use-pan-event": "2.0.9", - "@chakra-ui/react-use-size": "2.0.10", - "@chakra-ui/react-use-update-effect": "2.0.7" - }, - "peerDependencies": { - "@chakra-ui/system": ">=2.0.0", - "react": ">=18" - } - }, - "node_modules/@chakra-ui/spinner": { - "version": "2.0.13", - "resolved": "https://registry.npmjs.org/@chakra-ui/spinner/-/spinner-2.0.13.tgz", - "integrity": "sha512-T1/aSkVpUIuiYyrjfn1+LsQEG7Onbi1UE9ccS/evgf61Dzy4GgTXQUnDuWFSgpV58owqirqOu6jn/9eCwDlzlg==", - "dependencies": { - "@chakra-ui/shared-utils": "2.0.5" - }, - "peerDependencies": { - "@chakra-ui/system": ">=2.0.0", - "react": ">=18" - } - }, - "node_modules/@chakra-ui/stat": { - "version": "2.0.18", - "resolved": "https://registry.npmjs.org/@chakra-ui/stat/-/stat-2.0.18.tgz", - "integrity": "sha512-wKyfBqhVlIs9bkSerUc6F9KJMw0yTIEKArW7dejWwzToCLPr47u+CtYO6jlJHV6lRvkhi4K4Qc6pyvtJxZ3VpA==", - "dependencies": { - "@chakra-ui/icon": "3.0.16", - "@chakra-ui/react-context": "2.0.8", - "@chakra-ui/shared-utils": "2.0.5" - }, - "peerDependencies": { - "@chakra-ui/system": ">=2.0.0", - "react": ">=18" - } - }, - "node_modules/@chakra-ui/stepper": { - "version": "2.2.0", - "resolved": "https://registry.npmjs.org/@chakra-ui/stepper/-/stepper-2.2.0.tgz", - "integrity": "sha512-8ZLxV39oghSVtOUGK8dX8Z6sWVSQiKVmsK4c3OQDa8y2TvxP0VtFD0Z5U1xJlOjQMryZRWhGj9JBc3iQLukuGg==", - "dependencies": { - "@chakra-ui/icon": "3.0.16", - "@chakra-ui/react-context": "2.0.8", - "@chakra-ui/shared-utils": "2.0.5" - }, - "peerDependencies": { - "@chakra-ui/system": ">=2.0.0", - "react": ">=18" - } - }, - "node_modules/@chakra-ui/styled-system": { - "version": "2.9.1", - "resolved": "https://registry.npmjs.org/@chakra-ui/styled-system/-/styled-system-2.9.1.tgz", - "integrity": "sha512-jhYKBLxwOPi9/bQt9kqV3ELa/4CjmNNruTyXlPp5M0v0+pDMUngPp48mVLoskm9RKZGE0h1qpvj/jZ3K7c7t8w==", - "dependencies": { - "@chakra-ui/shared-utils": "2.0.5", - "csstype": "^3.0.11", - "lodash.mergewith": "4.6.2" - } - }, - "node_modules/@chakra-ui/switch": { - "version": "2.0.27", - "resolved": "https://registry.npmjs.org/@chakra-ui/switch/-/switch-2.0.27.tgz", - "integrity": "sha512-z76y2fxwMlvRBrC5W8xsZvo3gP+zAEbT3Nqy5P8uh/IPd5OvDsGeac90t5cgnQTyxMOpznUNNK+1eUZqtLxWnQ==", - "dependencies": { - "@chakra-ui/checkbox": "2.2.15", - "@chakra-ui/shared-utils": "2.0.5" - }, - "peerDependencies": { - "@chakra-ui/system": ">=2.0.0", - "framer-motion": ">=4.0.0", - "react": ">=18" - } - }, - "node_modules/@chakra-ui/system": { - "version": "2.5.8", - "resolved": "https://registry.npmjs.org/@chakra-ui/system/-/system-2.5.8.tgz", - "integrity": "sha512-Vy8UUaCxikOzOGE54IP8tKouvU38rEYU1HCSquU9+oe7Jd70HaiLa4vmUKvHyMUmxkOzDHIkgZLbVQCubSnN5w==", - "dependencies": { - "@chakra-ui/color-mode": "2.1.12", - "@chakra-ui/object-utils": "2.1.0", - "@chakra-ui/react-utils": "2.0.12", - "@chakra-ui/styled-system": "2.9.1", - "@chakra-ui/theme-utils": "2.0.18", - "@chakra-ui/utils": "2.0.15", - "react-fast-compare": "3.2.1" - }, - "peerDependencies": { - "@emotion/react": "^11.0.0", - "@emotion/styled": "^11.0.0", - "react": ">=18" - } - }, - "node_modules/@chakra-ui/table": { - "version": "2.0.17", - "resolved": "https://registry.npmjs.org/@chakra-ui/table/-/table-2.0.17.tgz", - "integrity": "sha512-OScheTEp1LOYvTki2NFwnAYvac8siAhW9BI5RKm5f5ORL2gVJo4I72RUqE0aKe1oboxgm7CYt5afT5PS5cG61A==", - "dependencies": { - "@chakra-ui/react-context": "2.0.8", - "@chakra-ui/shared-utils": "2.0.5" - }, - "peerDependencies": { - "@chakra-ui/system": ">=2.0.0", - "react": ">=18" - } - }, - "node_modules/@chakra-ui/tabs": { - "version": "2.1.9", - "resolved": "https://registry.npmjs.org/@chakra-ui/tabs/-/tabs-2.1.9.tgz", - "integrity": "sha512-Yf8e0kRvaGM6jfkJum0aInQ0U3ZlCafmrYYni2lqjcTtThqu+Yosmo3iYlnullXxCw5MVznfrkb9ySvgQowuYg==", - "dependencies": { - "@chakra-ui/clickable": "2.0.14", - "@chakra-ui/descendant": "3.0.14", - "@chakra-ui/lazy-utils": "2.0.5", - "@chakra-ui/react-children-utils": "2.0.6", - "@chakra-ui/react-context": "2.0.8", - "@chakra-ui/react-use-controllable-state": "2.0.8", - "@chakra-ui/react-use-merge-refs": "2.0.7", - "@chakra-ui/react-use-safe-layout-effect": "2.0.5", - "@chakra-ui/shared-utils": "2.0.5" - }, - "peerDependencies": { - "@chakra-ui/system": ">=2.0.0", - "react": ">=18" - } - }, - "node_modules/@chakra-ui/tag": { - "version": "3.0.0", - "resolved": "https://registry.npmjs.org/@chakra-ui/tag/-/tag-3.0.0.tgz", - "integrity": "sha512-YWdMmw/1OWRwNkG9pX+wVtZio+B89odaPj6XeMn5nfNN8+jyhIEpouWv34+CO9G0m1lupJTxPSfgLAd7cqXZMA==", - "dependencies": { - "@chakra-ui/icon": "3.0.16", - "@chakra-ui/react-context": "2.0.8" - }, - "peerDependencies": { - "@chakra-ui/system": ">=2.0.0", - "react": ">=18" - } - }, - "node_modules/@chakra-ui/textarea": { - "version": "2.0.19", - "resolved": "https://registry.npmjs.org/@chakra-ui/textarea/-/textarea-2.0.19.tgz", - "integrity": "sha512-adJk+qVGsFeJDvfn56CcJKKse8k7oMGlODrmpnpTdF+xvlsiTM+1GfaJvgNSpHHuQFdz/A0z1uJtfGefk0G2ZA==", - "dependencies": { - "@chakra-ui/form-control": "2.0.18", - "@chakra-ui/shared-utils": "2.0.5" - }, - "peerDependencies": { - "@chakra-ui/system": ">=2.0.0", - "react": ">=18" - } - }, - "node_modules/@chakra-ui/theme": { - "version": "3.1.2", - "resolved": "https://registry.npmjs.org/@chakra-ui/theme/-/theme-3.1.2.tgz", - "integrity": "sha512-ebUXMS3LZw2OZxEQNYaFw3/XuA3jpyprhS/frjHMvZKSOaCjMW+c9z25S0jp1NnpQff08VGI8EWbyVZECXU1QA==", - "dependencies": { - "@chakra-ui/anatomy": "2.1.2", - "@chakra-ui/shared-utils": "2.0.5", - "@chakra-ui/theme-tools": "2.0.18" - }, - "peerDependencies": { - "@chakra-ui/styled-system": ">=2.8.0" - } - }, - "node_modules/@chakra-ui/theme-tools": { - "version": "2.0.18", - "resolved": "https://registry.npmjs.org/@chakra-ui/theme-tools/-/theme-tools-2.0.18.tgz", - "integrity": "sha512-MbiRuXb2tb41FbnW41zhsYYAU0znlpfYZnu0mxCf8U2otCwPekJCfESUGYypjq4JnydQ7TDOk+Kz/Wi974l4mw==", - "dependencies": { - "@chakra-ui/anatomy": "2.1.2", - "@chakra-ui/shared-utils": "2.0.5", - "color2k": "^2.0.0" - }, - "peerDependencies": { - "@chakra-ui/styled-system": ">=2.0.0" - } - }, - "node_modules/@chakra-ui/theme-utils": { - "version": "2.0.18", - "resolved": "https://registry.npmjs.org/@chakra-ui/theme-utils/-/theme-utils-2.0.18.tgz", - "integrity": "sha512-aSbkUUiFpc1NHC7lQdA6uYlr6EcZFXz6b4aJ7VRDpqTiywvqYnvfGzhmsB0z94vgtS9qXc6HoIwBp25jYGV2MA==", - "dependencies": { - "@chakra-ui/shared-utils": "2.0.5", - "@chakra-ui/styled-system": "2.9.1", - "@chakra-ui/theme": "3.1.2", - "lodash.mergewith": "4.6.2" - } - }, - "node_modules/@chakra-ui/toast": { - "version": "6.1.4", - "resolved": "https://registry.npmjs.org/@chakra-ui/toast/-/toast-6.1.4.tgz", - "integrity": "sha512-wAcPHq/N/ar4jQxkUGhnsbp+lx2eKOpHxn1KaWdHXUkqCNUA1z09fvBsoMyzObSiiwbDuQPZG5RxsOhzfPZX4Q==", - "dependencies": { - "@chakra-ui/alert": "2.1.0", - "@chakra-ui/close-button": "2.0.17", - "@chakra-ui/portal": "2.0.16", - "@chakra-ui/react-context": "2.0.8", - "@chakra-ui/react-use-timeout": "2.0.5", - "@chakra-ui/react-use-update-effect": "2.0.7", - "@chakra-ui/shared-utils": "2.0.5", - "@chakra-ui/styled-system": "2.9.1", - "@chakra-ui/theme": "3.1.2" - }, - "peerDependencies": { - "@chakra-ui/system": "2.5.8", - "framer-motion": ">=4.0.0", - "react": ">=18", - "react-dom": ">=18" - } - }, - "node_modules/@chakra-ui/tooltip": { - "version": "2.2.9", - "resolved": "https://registry.npmjs.org/@chakra-ui/tooltip/-/tooltip-2.2.9.tgz", - "integrity": "sha512-ZoksllanqXRUyMDaiogvUVJ+RdFXwZrfrwx3RV22fejYZIQ602hZ3QHtHLB5ZnKFLbvXKMZKM23HxFTSb0Ytqg==", - "dependencies": { - "@chakra-ui/dom-utils": "2.1.0", - "@chakra-ui/popper": "3.0.14", - "@chakra-ui/portal": "2.0.16", - "@chakra-ui/react-types": "2.0.7", - "@chakra-ui/react-use-disclosure": "2.0.8", - "@chakra-ui/react-use-event-listener": "2.0.7", - "@chakra-ui/react-use-merge-refs": "2.0.7", - "@chakra-ui/shared-utils": "2.0.5" - }, - "peerDependencies": { - "@chakra-ui/system": ">=2.0.0", - "framer-motion": ">=4.0.0", - "react": ">=18", - "react-dom": ">=18" - } - }, - "node_modules/@chakra-ui/transition": { - "version": "2.0.16", - "resolved": "https://registry.npmjs.org/@chakra-ui/transition/-/transition-2.0.16.tgz", - "integrity": "sha512-E+RkwlPc3H7P1crEXmXwDXMB2lqY2LLia2P5siQ4IEnRWIgZXlIw+8Em+NtHNgusel2N+9yuB0wT9SeZZeZ3CQ==", - "dependencies": { - "@chakra-ui/shared-utils": "2.0.5" - }, - "peerDependencies": { - "framer-motion": ">=4.0.0", - "react": ">=18" - } - }, - "node_modules/@chakra-ui/utils": { - "version": "2.0.15", - "resolved": "https://registry.npmjs.org/@chakra-ui/utils/-/utils-2.0.15.tgz", - "integrity": "sha512-El4+jL0WSaYYs+rJbuYFDbjmfCcfGDmRY95GO4xwzit6YAPZBLcR65rOEwLps+XWluZTy1xdMrusg/hW0c1aAA==", - "dependencies": { - "@types/lodash.mergewith": "4.6.7", - "css-box-model": "1.2.1", - "framesync": "6.1.2", - "lodash.mergewith": "4.6.2" - } - }, - "node_modules/@chakra-ui/visually-hidden": { - "version": "2.0.15", - "resolved": "https://registry.npmjs.org/@chakra-ui/visually-hidden/-/visually-hidden-2.0.15.tgz", - "integrity": "sha512-WWULIiucYRBIewHKFA7BssQ2ABLHLVd9lrUo3N3SZgR0u4ZRDDVEUNOy+r+9ruDze8+36dGbN9wsN1IdELtdOw==", - "peerDependencies": { - "@chakra-ui/system": ">=2.0.0", - "react": ">=18" - } - }, - "node_modules/@emotion/babel-plugin": { - "version": "11.11.0", - "resolved": "https://registry.npmjs.org/@emotion/babel-plugin/-/babel-plugin-11.11.0.tgz", - "integrity": "sha512-m4HEDZleaaCH+XgDDsPF15Ht6wTLsgDTeR3WYj9Q/k76JtWhrJjcP4+/XlG8LGT/Rol9qUfOIztXeA84ATpqPQ==", - "dependencies": { - "@babel/helper-module-imports": "^7.16.7", - "@babel/runtime": "^7.18.3", - "@emotion/hash": "^0.9.1", - "@emotion/memoize": "^0.8.1", - "@emotion/serialize": "^1.1.2", - "babel-plugin-macros": "^3.1.0", - "convert-source-map": "^1.5.0", - "escape-string-regexp": "^4.0.0", - "find-root": "^1.1.0", - "source-map": "^0.5.7", - "stylis": "4.2.0" - } - }, - "node_modules/@emotion/babel-plugin/node_modules/escape-string-regexp": { - "version": "4.0.0", - "resolved": "https://registry.npmjs.org/escape-string-regexp/-/escape-string-regexp-4.0.0.tgz", - "integrity": "sha512-TtpcNJ3XAzx3Gq8sWRzJaVajRs0uVxA2YAkdb1jm2YkPz4G6egUFAyA3n5vtEIZefPk5Wa4UXbKuS5fKkJWdgA==", - "engines": { - "node": ">=10" - }, - "funding": { - "url": "https://github.com/sponsors/sindresorhus" - } - }, - "node_modules/@emotion/cache": { - "version": "11.11.0", - "resolved": "https://registry.npmjs.org/@emotion/cache/-/cache-11.11.0.tgz", - "integrity": "sha512-P34z9ssTCBi3e9EI1ZsWpNHcfY1r09ZO0rZbRO2ob3ZQMnFI35jB536qoXbkdesr5EUhYi22anuEJuyxifaqAQ==", - "dependencies": { - "@emotion/memoize": "^0.8.1", - "@emotion/sheet": "^1.2.2", - "@emotion/utils": "^1.2.1", - "@emotion/weak-memoize": "^0.3.1", - "stylis": "4.2.0" - } - }, - "node_modules/@emotion/hash": { - "version": "0.9.1", - "resolved": "https://registry.npmjs.org/@emotion/hash/-/hash-0.9.1.tgz", - "integrity": "sha512-gJB6HLm5rYwSLI6PQa+X1t5CFGrv1J1TWG+sOyMCeKz2ojaj6Fnl/rZEspogG+cvqbt4AE/2eIyD2QfLKTBNlQ==" - }, - "node_modules/@emotion/is-prop-valid": { - "version": "1.2.1", - "resolved": "https://registry.npmjs.org/@emotion/is-prop-valid/-/is-prop-valid-1.2.1.tgz", - "integrity": "sha512-61Mf7Ufx4aDxx1xlDeOm8aFFigGHE4z+0sKCa+IHCeZKiyP9RLD0Mmx7m8b9/Cf37f7NAvQOOJAbQQGVr5uERw==", - "dependencies": { - "@emotion/memoize": "^0.8.1" - } - }, - "node_modules/@emotion/memoize": { - "version": "0.8.1", - "resolved": "https://registry.npmjs.org/@emotion/memoize/-/memoize-0.8.1.tgz", - "integrity": "sha512-W2P2c/VRW1/1tLox0mVUalvnWXxavmv/Oum2aPsRcoDJuob75FC3Y8FbpfLwUegRcxINtGUMPq0tFCvYNTBXNA==" - }, - "node_modules/@emotion/react": { - "version": "11.11.1", - "resolved": "https://registry.npmjs.org/@emotion/react/-/react-11.11.1.tgz", - "integrity": "sha512-5mlW1DquU5HaxjLkfkGN1GA/fvVGdyHURRiX/0FHl2cfIfRxSOfmxEH5YS43edp0OldZrZ+dkBKbngxcNCdZvA==", - "dependencies": { - "@babel/runtime": "^7.18.3", - "@emotion/babel-plugin": "^11.11.0", - "@emotion/cache": "^11.11.0", - "@emotion/serialize": "^1.1.2", - "@emotion/use-insertion-effect-with-fallbacks": "^1.0.1", - "@emotion/utils": "^1.2.1", - "@emotion/weak-memoize": "^0.3.1", - "hoist-non-react-statics": "^3.3.1" - }, - "peerDependencies": { - "react": ">=16.8.0" - }, - "peerDependenciesMeta": { - "@types/react": { - "optional": true - } - } - }, - "node_modules/@emotion/serialize": { - "version": "1.1.2", - "resolved": "https://registry.npmjs.org/@emotion/serialize/-/serialize-1.1.2.tgz", - "integrity": "sha512-zR6a/fkFP4EAcCMQtLOhIgpprZOwNmCldtpaISpvz348+DP4Mz8ZoKaGGCQpbzepNIUWbq4w6hNZkwDyKoS+HA==", - "dependencies": { - "@emotion/hash": "^0.9.1", - "@emotion/memoize": "^0.8.1", - "@emotion/unitless": "^0.8.1", - "@emotion/utils": "^1.2.1", - "csstype": "^3.0.2" - } - }, - "node_modules/@emotion/sheet": { - "version": "1.2.2", - "resolved": "https://registry.npmjs.org/@emotion/sheet/-/sheet-1.2.2.tgz", - "integrity": "sha512-0QBtGvaqtWi+nx6doRwDdBIzhNdZrXUppvTM4dtZZWEGTXL/XE/yJxLMGlDT1Gt+UHH5IX1n+jkXyytE/av7OA==" - }, - "node_modules/@emotion/styled": { - "version": "11.11.0", - "resolved": "https://registry.npmjs.org/@emotion/styled/-/styled-11.11.0.tgz", - "integrity": "sha512-hM5Nnvu9P3midq5aaXj4I+lnSfNi7Pmd4EWk1fOZ3pxookaQTNew6bp4JaCBYM4HVFZF9g7UjJmsUmC2JlxOng==", - "dependencies": { - "@babel/runtime": "^7.18.3", - "@emotion/babel-plugin": "^11.11.0", - "@emotion/is-prop-valid": "^1.2.1", - "@emotion/serialize": "^1.1.2", - "@emotion/use-insertion-effect-with-fallbacks": "^1.0.1", - "@emotion/utils": "^1.2.1" - }, - "peerDependencies": { - "@emotion/react": "^11.0.0-rc.0", - "react": ">=16.8.0" - }, - "peerDependenciesMeta": { - "@types/react": { - "optional": true - } - } - }, - "node_modules/@emotion/unitless": { - "version": "0.8.1", - "resolved": "https://registry.npmjs.org/@emotion/unitless/-/unitless-0.8.1.tgz", - "integrity": "sha512-KOEGMu6dmJZtpadb476IsZBclKvILjopjUii3V+7MnXIQCYh8W3NgNcgwo21n9LXZX6EDIKvqfjYxXebDwxKmQ==" - }, - "node_modules/@emotion/use-insertion-effect-with-fallbacks": { - "version": "1.0.1", - "resolved": "https://registry.npmjs.org/@emotion/use-insertion-effect-with-fallbacks/-/use-insertion-effect-with-fallbacks-1.0.1.tgz", - "integrity": "sha512-jT/qyKZ9rzLErtrjGgdkMBn2OP8wl0G3sQlBb3YPryvKHsjvINUhVaPFfP+fpBcOkmrVOVEEHQFJ7nbj2TH2gw==", - "peerDependencies": { - "react": ">=16.8.0" - } - }, - "node_modules/@emotion/utils": { - "version": "1.2.1", - "resolved": "https://registry.npmjs.org/@emotion/utils/-/utils-1.2.1.tgz", - "integrity": "sha512-Y2tGf3I+XVnajdItskUCn6LX+VUDmP6lTL4fcqsXAv43dnlbZiuW4MWQW38rW/BVWSE7Q/7+XQocmpnRYILUmg==" - }, - "node_modules/@emotion/weak-memoize": { - "version": "0.3.1", - "resolved": "https://registry.npmjs.org/@emotion/weak-memoize/-/weak-memoize-0.3.1.tgz", - "integrity": "sha512-EsBwpc7hBUJWAsNPBmJy4hxWx12v6bshQsldrVmjxJoc3isbxhOrF2IcCpaXxfvq03NwkI7sbsOLXbYuqF/8Ww==" - }, - "node_modules/@esbuild/android-arm": { - "version": "0.18.13", - "resolved": "https://registry.npmjs.org/@esbuild/android-arm/-/android-arm-0.18.13.tgz", - "integrity": "sha512-KwqFhxRFMKZINHzCqf8eKxE0XqWlAVPRxwy6rc7CbVFxzUWB2sA/s3hbMZeemPdhN3fKBkqOaFhTbS8xJXYIWQ==", - "cpu": [ - "arm" - ], - "dev": true, - "optional": true, - "os": [ - "android" - ], - "engines": { - "node": ">=12" - } - }, - "node_modules/@esbuild/android-arm64": { - "version": "0.18.13", - "resolved": "https://registry.npmjs.org/@esbuild/android-arm64/-/android-arm64-0.18.13.tgz", - "integrity": "sha512-j7NhycJUoUAG5kAzGf4fPWfd17N6SM3o1X6MlXVqfHvs2buFraCJzos9vbeWjLxOyBKHyPOnuCuipbhvbYtTAg==", - "cpu": [ - "arm64" - ], - "dev": true, - "optional": true, - "os": [ - "android" - ], - "engines": { - "node": ">=12" - } - }, - "node_modules/@esbuild/android-x64": { - "version": "0.18.13", - "resolved": "https://registry.npmjs.org/@esbuild/android-x64/-/android-x64-0.18.13.tgz", - "integrity": "sha512-M2eZkRxR6WnWfVELHmv6MUoHbOqnzoTVSIxgtsyhm/NsgmL+uTmag/VVzdXvmahak1I6sOb1K/2movco5ikDJg==", - "cpu": [ - "x64" - ], - "dev": true, - "optional": true, - "os": [ - "android" - ], - "engines": { - "node": ">=12" - } - }, - "node_modules/@esbuild/darwin-arm64": { - "version": "0.18.13", - "resolved": "https://registry.npmjs.org/@esbuild/darwin-arm64/-/darwin-arm64-0.18.13.tgz", - "integrity": "sha512-f5goG30YgR1GU+fxtaBRdSW3SBG9pZW834Mmhxa6terzcboz7P2R0k4lDxlkP7NYRIIdBbWp+VgwQbmMH4yV7w==", - "cpu": [ - "arm64" - ], - "dev": true, - "optional": true, - "os": [ - "darwin" - ], - "engines": { - "node": ">=12" - } - }, - "node_modules/@esbuild/darwin-x64": { - "version": "0.18.13", - "resolved": "https://registry.npmjs.org/@esbuild/darwin-x64/-/darwin-x64-0.18.13.tgz", - "integrity": "sha512-RIrxoKH5Eo+yE5BtaAIMZaiKutPhZjw+j0OCh8WdvKEKJQteacq0myZvBDLU+hOzQOZWJeDnuQ2xgSScKf1Ovw==", - "cpu": [ - "x64" - ], - "dev": true, - "optional": true, - "os": [ - "darwin" - ], - "engines": { - "node": ">=12" - } - }, - "node_modules/@esbuild/freebsd-arm64": { - "version": "0.18.13", - "resolved": "https://registry.npmjs.org/@esbuild/freebsd-arm64/-/freebsd-arm64-0.18.13.tgz", - "integrity": "sha512-AfRPhHWmj9jGyLgW/2FkYERKmYR+IjYxf2rtSLmhOrPGFh0KCETFzSjx/JX/HJnvIqHt/DRQD/KAaVsUKoI3Xg==", - "cpu": [ - "arm64" - ], - "dev": true, - "optional": true, - "os": [ - "freebsd" - ], - "engines": { - "node": ">=12" - } - }, - "node_modules/@esbuild/freebsd-x64": { - "version": "0.18.13", - "resolved": "https://registry.npmjs.org/@esbuild/freebsd-x64/-/freebsd-x64-0.18.13.tgz", - "integrity": "sha512-pGzWWZJBInhIgdEwzn8VHUBang8UvFKsvjDkeJ2oyY5gZtAM6BaxK0QLCuZY+qoj/nx/lIaItH425rm/hloETA==", - "cpu": [ - "x64" - ], - "dev": true, - "optional": true, - "os": [ - "freebsd" - ], - "engines": { - "node": ">=12" - } - }, - "node_modules/@esbuild/linux-arm": { - "version": "0.18.13", - "resolved": "https://registry.npmjs.org/@esbuild/linux-arm/-/linux-arm-0.18.13.tgz", - "integrity": "sha512-4iMxLRMCxGyk7lEvkkvrxw4aJeC93YIIrfbBlUJ062kilUUnAiMb81eEkVvCVoh3ON283ans7+OQkuy1uHW+Hw==", - "cpu": [ - "arm" - ], - "dev": true, - "optional": true, - "os": [ - "linux" - ], - "engines": { - "node": ">=12" - } - }, - "node_modules/@esbuild/linux-arm64": { - "version": "0.18.13", - "resolved": "https://registry.npmjs.org/@esbuild/linux-arm64/-/linux-arm64-0.18.13.tgz", - "integrity": "sha512-hCzZbVJEHV7QM77fHPv2qgBcWxgglGFGCxk6KfQx6PsVIdi1u09X7IvgE9QKqm38OpkzaAkPnnPqwRsltvLkIQ==", - "cpu": [ - "arm64" - ], - "dev": true, - "optional": true, - "os": [ - "linux" - ], - "engines": { - "node": ">=12" - } - }, - "node_modules/@esbuild/linux-ia32": { - "version": "0.18.13", - "resolved": "https://registry.npmjs.org/@esbuild/linux-ia32/-/linux-ia32-0.18.13.tgz", - "integrity": "sha512-I3OKGbynl3AAIO6onXNrup/ttToE6Rv2XYfFgLK/wnr2J+1g+7k4asLrE+n7VMhaqX+BUnyWkCu27rl+62Adug==", - "cpu": [ - "ia32" - ], - "dev": true, - "optional": true, - "os": [ - "linux" - ], - "engines": { - "node": ">=12" - } - }, - "node_modules/@esbuild/linux-loong64": { - "version": "0.18.13", - "resolved": "https://registry.npmjs.org/@esbuild/linux-loong64/-/linux-loong64-0.18.13.tgz", - "integrity": "sha512-8pcKDApAsKc6WW51ZEVidSGwGbebYw2qKnO1VyD8xd6JN0RN6EUXfhXmDk9Vc4/U3Y4AoFTexQewQDJGsBXBpg==", - "cpu": [ - "loong64" - ], - "dev": true, - "optional": true, - "os": [ - "linux" - ], - "engines": { - "node": ">=12" - } - }, - "node_modules/@esbuild/linux-mips64el": { - "version": "0.18.13", - "resolved": "https://registry.npmjs.org/@esbuild/linux-mips64el/-/linux-mips64el-0.18.13.tgz", - "integrity": "sha512-6GU+J1PLiVqWx8yoCK4Z0GnfKyCGIH5L2KQipxOtbNPBs+qNDcMJr9euxnyJ6FkRPyMwaSkjejzPSISD9hb+gg==", - "cpu": [ - "mips64el" - ], - "dev": true, - "optional": true, - "os": [ - "linux" - ], - "engines": { - "node": ">=12" - } - }, - "node_modules/@esbuild/linux-ppc64": { - "version": "0.18.13", - "resolved": "https://registry.npmjs.org/@esbuild/linux-ppc64/-/linux-ppc64-0.18.13.tgz", - "integrity": "sha512-pfn/OGZ8tyR8YCV7MlLl5hAit2cmS+j/ZZg9DdH0uxdCoJpV7+5DbuXrR+es4ayRVKIcfS9TTMCs60vqQDmh+w==", - "cpu": [ - "ppc64" - ], - "dev": true, - "optional": true, - "os": [ - "linux" - ], - "engines": { - "node": ">=12" - } - }, - "node_modules/@esbuild/linux-riscv64": { - "version": "0.18.13", - "resolved": "https://registry.npmjs.org/@esbuild/linux-riscv64/-/linux-riscv64-0.18.13.tgz", - "integrity": "sha512-aIbhU3LPg0lOSCfVeGHbmGYIqOtW6+yzO+Nfv57YblEK01oj0mFMtvDJlOaeAZ6z0FZ9D13oahi5aIl9JFphGg==", - "cpu": [ - "riscv64" - ], - "dev": true, - "optional": true, - "os": [ - "linux" - ], - "engines": { - "node": ">=12" - } - }, - "node_modules/@esbuild/linux-s390x": { - "version": "0.18.13", - "resolved": "https://registry.npmjs.org/@esbuild/linux-s390x/-/linux-s390x-0.18.13.tgz", - "integrity": "sha512-Pct1QwF2sp+5LVi4Iu5Y+6JsGaV2Z2vm4O9Dd7XZ5tKYxEHjFtb140fiMcl5HM1iuv6xXO8O1Vrb1iJxHlv8UA==", - "cpu": [ - "s390x" - ], - "dev": true, - "optional": true, - "os": [ - "linux" - ], - "engines": { - "node": ">=12" - } - }, - "node_modules/@esbuild/linux-x64": { - "version": "0.18.13", - "resolved": "https://registry.npmjs.org/@esbuild/linux-x64/-/linux-x64-0.18.13.tgz", - "integrity": "sha512-zTrIP0KzYP7O0+3ZnmzvUKgGtUvf4+piY8PIO3V8/GfmVd3ZyHJGz7Ht0np3P1wz+I8qJ4rjwJKqqEAbIEPngA==", - "cpu": [ - "x64" - ], - "dev": true, - "optional": true, - "os": [ - "linux" - ], - "engines": { - "node": ">=12" - } - }, - "node_modules/@esbuild/netbsd-x64": { - "version": "0.18.13", - "resolved": "https://registry.npmjs.org/@esbuild/netbsd-x64/-/netbsd-x64-0.18.13.tgz", - "integrity": "sha512-I6zs10TZeaHDYoGxENuksxE1sxqZpCp+agYeW039yqFwh3MgVvdmXL5NMveImOC6AtpLvE4xG5ujVic4NWFIDQ==", - "cpu": [ - "x64" - ], - "dev": true, - "optional": true, - "os": [ - "netbsd" - ], - "engines": { - "node": ">=12" - } - }, - "node_modules/@esbuild/openbsd-x64": { - "version": "0.18.13", - "resolved": "https://registry.npmjs.org/@esbuild/openbsd-x64/-/openbsd-x64-0.18.13.tgz", - "integrity": "sha512-W5C5nczhrt1y1xPG5bV+0M12p2vetOGlvs43LH8SopQ3z2AseIROu09VgRqydx5qFN7y9qCbpgHLx0kb0TcW7g==", - "cpu": [ - "x64" - ], - "dev": true, - "optional": true, - "os": [ - "openbsd" - ], - "engines": { - "node": ">=12" - } - }, - "node_modules/@esbuild/sunos-x64": { - "version": "0.18.13", - "resolved": "https://registry.npmjs.org/@esbuild/sunos-x64/-/sunos-x64-0.18.13.tgz", - "integrity": "sha512-X/xzuw4Hzpo/yq3YsfBbIsipNgmsm8mE/QeWbdGdTTeZ77fjxI2K0KP3AlhZ6gU3zKTw1bKoZTuKLnqcJ537qw==", - "cpu": [ - "x64" - ], - "dev": true, - "optional": true, - "os": [ - "sunos" - ], - "engines": { - "node": ">=12" - } - }, - "node_modules/@esbuild/win32-arm64": { - "version": "0.18.13", - "resolved": "https://registry.npmjs.org/@esbuild/win32-arm64/-/win32-arm64-0.18.13.tgz", - "integrity": "sha512-4CGYdRQT/ILd+yLLE5i4VApMPfGE0RPc/wFQhlluDQCK09+b4JDbxzzjpgQqTPrdnP7r5KUtGVGZYclYiPuHrw==", - "cpu": [ - "arm64" - ], - "dev": true, - "optional": true, - "os": [ - "win32" - ], - "engines": { - "node": ">=12" - } - }, - "node_modules/@esbuild/win32-ia32": { - "version": "0.18.13", - "resolved": "https://registry.npmjs.org/@esbuild/win32-ia32/-/win32-ia32-0.18.13.tgz", - "integrity": "sha512-D+wKZaRhQI+MUGMH+DbEr4owC2D7XnF+uyGiZk38QbgzLcofFqIOwFs7ELmIeU45CQgfHNy9Q+LKW3cE8g37Kg==", - "cpu": [ - "ia32" - ], - "dev": true, - "optional": true, - "os": [ - "win32" - ], - "engines": { - "node": ">=12" - } - }, - "node_modules/@esbuild/win32-x64": { - "version": "0.18.13", - "resolved": "https://registry.npmjs.org/@esbuild/win32-x64/-/win32-x64-0.18.13.tgz", - "integrity": "sha512-iVl6lehAfJS+VmpF3exKpNQ8b0eucf5VWfzR8S7xFve64NBNz2jPUgx1X93/kfnkfgP737O+i1k54SVQS7uVZA==", - "cpu": [ - "x64" - ], - "dev": true, - "optional": true, - "os": [ - "win32" - ], - "engines": { - "node": ">=12" - } - }, - "node_modules/@eslint-community/eslint-utils": { - "version": "4.4.0", - "resolved": "https://registry.npmjs.org/@eslint-community/eslint-utils/-/eslint-utils-4.4.0.tgz", - "integrity": "sha512-1/sA4dwrzBAyeUoQ6oxahHKmrZvsnLCg4RfxW3ZFGGmQkSNQPFNLV9CUEFQP1x9EYXHTo5p6xdhZM1Ne9p/AfA==", - "dev": true, - "dependencies": { - "eslint-visitor-keys": "^3.3.0" - }, - "engines": { - "node": "^12.22.0 || ^14.17.0 || >=16.0.0" - }, - "peerDependencies": { - "eslint": "^6.0.0 || ^7.0.0 || >=8.0.0" - } - }, - "node_modules/@eslint-community/regexpp": { - "version": "4.5.1", - "resolved": "https://registry.npmjs.org/@eslint-community/regexpp/-/regexpp-4.5.1.tgz", - "integrity": "sha512-Z5ba73P98O1KUYCCJTUeVpja9RcGoMdncZ6T49FCUl2lN38JtCJ+3WgIDBv0AuY4WChU5PmtJmOCTlN6FZTFKQ==", - "dev": true, - "engines": { - "node": "^12.0.0 || ^14.0.0 || >=16.0.0" - } - }, - "node_modules/@eslint/eslintrc": { - "version": "2.1.0", - "resolved": "https://registry.npmjs.org/@eslint/eslintrc/-/eslintrc-2.1.0.tgz", - "integrity": "sha512-Lj7DECXqIVCqnqjjHMPna4vn6GJcMgul/wuS0je9OZ9gsL0zzDpKPVtcG1HaDVc+9y+qgXneTeUMbCqXJNpH1A==", - "dev": true, - "dependencies": { - "ajv": "^6.12.4", - "debug": "^4.3.2", - "espree": "^9.6.0", - "globals": "^13.19.0", - "ignore": "^5.2.0", - "import-fresh": "^3.2.1", - "js-yaml": "^4.1.0", - "minimatch": "^3.1.2", - "strip-json-comments": "^3.1.1" - }, - "engines": { - "node": "^12.22.0 || ^14.17.0 || >=16.0.0" - }, - "funding": { - "url": "https://opencollective.com/eslint" - } - }, - "node_modules/@eslint/eslintrc/node_modules/globals": { - "version": "13.20.0", - "resolved": "https://registry.npmjs.org/globals/-/globals-13.20.0.tgz", - "integrity": "sha512-Qg5QtVkCy/kv3FUSlu4ukeZDVf9ee0iXLAUYX13gbR17bnejFTzr4iS9bY7kwCf1NztRNm1t91fjOiyx4CSwPQ==", - "dev": true, - "dependencies": { - "type-fest": "^0.20.2" - }, - "engines": { - "node": ">=8" - }, - "funding": { - "url": "https://github.com/sponsors/sindresorhus" - } - }, - "node_modules/@eslint/js": { - "version": "8.44.0", - "resolved": "https://registry.npmjs.org/@eslint/js/-/js-8.44.0.tgz", - "integrity": "sha512-Ag+9YM4ocKQx9AarydN0KY2j0ErMHNIocPDrVo8zAE44xLTjEtz81OdR68/cydGtk6m6jDb5Za3r2useMzYmSw==", - "dev": true, - "engines": { - "node": "^12.22.0 || ^14.17.0 || >=16.0.0" - } - }, - "node_modules/@humanwhocodes/config-array": { - "version": "0.11.10", - "resolved": "https://registry.npmjs.org/@humanwhocodes/config-array/-/config-array-0.11.10.tgz", - "integrity": "sha512-KVVjQmNUepDVGXNuoRRdmmEjruj0KfiGSbS8LVc12LMsWDQzRXJ0qdhN8L8uUigKpfEHRhlaQFY0ib1tnUbNeQ==", - "dev": true, - "dependencies": { - "@humanwhocodes/object-schema": "^1.2.1", - "debug": "^4.1.1", - "minimatch": "^3.0.5" - }, - "engines": { - "node": ">=10.10.0" - } - }, - "node_modules/@humanwhocodes/module-importer": { - "version": "1.0.1", - "resolved": "https://registry.npmjs.org/@humanwhocodes/module-importer/-/module-importer-1.0.1.tgz", - "integrity": "sha512-bxveV4V8v5Yb4ncFTT3rPSgZBOpCkjfK0y4oVVVJwIuDVBRMDXrPyXRL988i5ap9m9bnyEEjWfm5WkBmtffLfA==", - "dev": true, - "engines": { - "node": ">=12.22" - }, - "funding": { - "type": "github", - "url": "https://github.com/sponsors/nzakas" - } - }, - "node_modules/@humanwhocodes/object-schema": { - "version": "1.2.1", - "resolved": "https://registry.npmjs.org/@humanwhocodes/object-schema/-/object-schema-1.2.1.tgz", - "integrity": "sha512-ZnQMnLV4e7hDlUvw8H+U8ASL02SS2Gn6+9Ac3wGGLIe7+je2AeAOxPY+izIPJDfFDb7eDjev0Us8MO1iFRN8hA==", - "dev": true - }, - "node_modules/@jridgewell/gen-mapping": { - "version": "0.3.3", - "resolved": "https://registry.npmjs.org/@jridgewell/gen-mapping/-/gen-mapping-0.3.3.tgz", - "integrity": "sha512-HLhSWOLRi875zjjMG/r+Nv0oCW8umGb0BgEhyX3dDX3egwZtB8PqLnjz3yedt8R5StBrzcg4aBpnh8UA9D1BoQ==", - "dev": true, - "dependencies": { - "@jridgewell/set-array": "^1.0.1", - "@jridgewell/sourcemap-codec": "^1.4.10", - "@jridgewell/trace-mapping": "^0.3.9" - }, - "engines": { - "node": ">=6.0.0" - } - }, - "node_modules/@jridgewell/resolve-uri": { - "version": "3.1.0", - "resolved": "https://registry.npmjs.org/@jridgewell/resolve-uri/-/resolve-uri-3.1.0.tgz", - "integrity": "sha512-F2msla3tad+Mfht5cJq7LSXcdudKTWCVYUgw6pLFOOHSTtZlj6SWNYAp+AhuqLmWdBO2X5hPrLcu8cVP8fy28w==", - "dev": true, - "engines": { - "node": ">=6.0.0" - } - }, - "node_modules/@jridgewell/set-array": { - "version": "1.1.2", - "resolved": "https://registry.npmjs.org/@jridgewell/set-array/-/set-array-1.1.2.tgz", - "integrity": "sha512-xnkseuNADM0gt2bs+BvhO0p78Mk762YnZdsuzFV018NoG1Sj1SCQvpSqa7XUaTam5vAGasABV9qXASMKnFMwMw==", - "dev": true, - "engines": { - "node": ">=6.0.0" - } - }, - "node_modules/@jridgewell/sourcemap-codec": { - "version": "1.4.15", - "resolved": "https://registry.npmjs.org/@jridgewell/sourcemap-codec/-/sourcemap-codec-1.4.15.tgz", - "integrity": "sha512-eF2rxCRulEKXHTRiDrDy6erMYWqNw4LPdQ8UQA4huuxaQsVeRPFl2oM8oDGxMFhJUWZf9McpLtJasDDZb/Bpeg==", - "dev": true - }, - "node_modules/@jridgewell/trace-mapping": { - "version": "0.3.18", - "resolved": "https://registry.npmjs.org/@jridgewell/trace-mapping/-/trace-mapping-0.3.18.tgz", - "integrity": "sha512-w+niJYzMHdd7USdiH2U6869nqhD2nbfZXND5Yp93qIbEmnDNk7PD48o+YchRVpzMU7M6jVCbenTR7PA1FLQ9pA==", - "dev": true, - "dependencies": { - "@jridgewell/resolve-uri": "3.1.0", - "@jridgewell/sourcemap-codec": "1.4.14" - } - }, - "node_modules/@jridgewell/trace-mapping/node_modules/@jridgewell/sourcemap-codec": { - "version": "1.4.14", - "resolved": "https://registry.npmjs.org/@jridgewell/sourcemap-codec/-/sourcemap-codec-1.4.14.tgz", - "integrity": "sha512-XPSJHWmi394fuUuzDnGz1wiKqWfo1yXecHQMRf2l6hztTO+nPru658AyDngaBe7isIxEkRsPR3FZh+s7iVa4Uw==", - "dev": true - }, - "node_modules/@nodelib/fs.scandir": { - "version": "2.1.5", - "resolved": "https://registry.npmjs.org/@nodelib/fs.scandir/-/fs.scandir-2.1.5.tgz", - "integrity": "sha512-vq24Bq3ym5HEQm2NKCr3yXDwjc7vTsEThRDnkp2DK9p1uqLR+DHurm/NOTo0KG7HYHU7eppKZj3MyqYuMBf62g==", - "dev": true, - "dependencies": { - "@nodelib/fs.stat": "2.0.5", - "run-parallel": "^1.1.9" - }, - "engines": { - "node": ">= 8" - } - }, - "node_modules/@nodelib/fs.stat": { - "version": "2.0.5", - "resolved": "https://registry.npmjs.org/@nodelib/fs.stat/-/fs.stat-2.0.5.tgz", - "integrity": "sha512-RkhPPp2zrqDAQA/2jNhnztcPAlv64XdhIp7a7454A5ovI7Bukxgt7MX7udwAu3zg1DcpPU0rz3VV1SeaqvY4+A==", - "dev": true, - "engines": { - "node": ">= 8" - } - }, - "node_modules/@nodelib/fs.walk": { - "version": "1.2.8", - "resolved": "https://registry.npmjs.org/@nodelib/fs.walk/-/fs.walk-1.2.8.tgz", - "integrity": "sha512-oGB+UxlgWcgQkgwo8GcEGwemoTFt3FIO9ababBmaGwXIoBKZ+GTy0pP185beGg7Llih/NSHSV2XAs1lnznocSg==", - "dev": true, - "dependencies": { - "@nodelib/fs.scandir": "2.1.5", - "fastq": "^1.6.0" - }, - "engines": { - "node": ">= 8" - } - }, - "node_modules/@popperjs/core": { - "version": "2.11.8", - "resolved": "https://registry.npmjs.org/@popperjs/core/-/core-2.11.8.tgz", - "integrity": "sha512-P1st0aksCrn9sGZhp8GMYwBnQsbvAWsZAX44oXNNvLHGqAOcoVxmjZiohstwQ7SqKnbR47akdNi+uleWD8+g6A==", - "funding": { - "type": "opencollective", - "url": "https://opencollective.com/popperjs" - } - }, - "node_modules/@remix-run/router": { - "version": "1.7.1", - "resolved": "https://registry.npmjs.org/@remix-run/router/-/router-1.7.1.tgz", - "integrity": "sha512-bgVQM4ZJ2u2CM8k1ey70o1ePFXsEzYVZoWghh6WjM8p59jQ7HxzbHW4SbnWFG7V9ig9chLawQxDTZ3xzOF8MkQ==", - "engines": { - "node": ">=14" - } - }, - "node_modules/@socket.io/component-emitter": { - "version": "3.1.0", - "resolved": "https://registry.npmjs.org/@socket.io/component-emitter/-/component-emitter-3.1.0.tgz", - "integrity": "sha512-+9jVqKhRSpsc591z5vX+X5Yyw+he/HCB4iQ/RYxw35CEPaY1gnsNE43nf9n9AaYjAQrTiI/mOwKUKdUs9vf7Xg==" - }, - "node_modules/@types/lodash": { - "version": "4.14.195", - "resolved": "https://registry.npmjs.org/@types/lodash/-/lodash-4.14.195.tgz", - "integrity": "sha512-Hwx9EUgdwf2GLarOjQp5ZH8ZmblzcbTBC2wtQWNKARBSxM9ezRIAUpeDTgoQRAFB0+8CNWXVA9+MaSOzOF3nPg==" - }, - "node_modules/@types/lodash.mergewith": { - "version": "4.6.7", - "resolved": "https://registry.npmjs.org/@types/lodash.mergewith/-/lodash.mergewith-4.6.7.tgz", - "integrity": "sha512-3m+lkO5CLRRYU0fhGRp7zbsGi6+BZj0uTVSwvcKU+nSlhjA9/QRNfuSGnD2mX6hQA7ZbmcCkzk5h4ZYGOtk14A==", - "dependencies": { - "@types/lodash": "*" - } - }, - "node_modules/@types/parse-json": { - "version": "4.0.0", - "resolved": "https://registry.npmjs.org/@types/parse-json/-/parse-json-4.0.0.tgz", - "integrity": "sha512-//oorEZjL6sbPcKUaCdIGlIUeH26mgzimjBB77G6XRgnDl/L5wOnpyBGRe/Mmf5CVW3PwEBE1NjiMZ/ssFh4wA==" - }, - "node_modules/@types/prop-types": { - "version": "15.7.5", - "resolved": "https://registry.npmjs.org/@types/prop-types/-/prop-types-15.7.5.tgz", - "integrity": "sha512-JCB8C6SnDoQf0cNycqd/35A7MjcnK+ZTqE7judS6o7utxUCg6imJg3QK2qzHKszlTjcj2cn+NwMB2i96ubpj7w==", - "devOptional": true - }, - "node_modules/@types/react": { - "version": "18.2.15", - "resolved": "https://registry.npmjs.org/@types/react/-/react-18.2.15.tgz", - "integrity": "sha512-oEjE7TQt1fFTFSbf8kkNuc798ahTUzn3Le67/PWjE8MAfYAD/qB7O8hSTcromLFqHCt9bcdOg5GXMokzTjJ5SA==", - "devOptional": true, - "dependencies": { - "@types/prop-types": "*", - "@types/scheduler": "*", - "csstype": "^3.0.2" - } - }, - "node_modules/@types/react-dom": { - "version": "18.2.7", - "resolved": "https://registry.npmjs.org/@types/react-dom/-/react-dom-18.2.7.tgz", - "integrity": "sha512-GRaAEriuT4zp9N4p1i8BDBYmEyfo+xQ3yHjJU4eiK5NDa1RmUZG+unZABUTK4/Ox/M+GaHwb6Ow8rUITrtjszA==", - "dev": true, - "dependencies": { - "@types/react": "*" - } - }, - "node_modules/@types/scheduler": { - "version": "0.16.3", - "resolved": "https://registry.npmjs.org/@types/scheduler/-/scheduler-0.16.3.tgz", - "integrity": "sha512-5cJ8CB4yAx7BH1oMvdU0Jh9lrEXyPkar6F9G/ERswkCuvP4KQZfZkSjcMbAICCpQTN4OuZn8tz0HiKv9TGZgrQ==", - "devOptional": true - }, - "node_modules/@vitejs/plugin-react": { - "version": "4.0.3", - "resolved": "https://registry.npmjs.org/@vitejs/plugin-react/-/plugin-react-4.0.3.tgz", - "integrity": "sha512-pwXDog5nwwvSIzwrvYYmA2Ljcd/ZNlcsSG2Q9CNDBwnsd55UGAyr2doXtB5j+2uymRCnCfExlznzzSFbBRcoCg==", - "dev": true, - "dependencies": { - "@babel/core": "^7.22.5", - "@babel/plugin-transform-react-jsx-self": "^7.22.5", - "@babel/plugin-transform-react-jsx-source": "^7.22.5", - "react-refresh": "^0.14.0" - }, - "engines": { - "node": "^14.18.0 || >=16.0.0" - }, - "peerDependencies": { - "vite": "^4.2.0" - } - }, - "node_modules/@zag-js/element-size": { - "version": "0.3.2", - "resolved": "https://registry.npmjs.org/@zag-js/element-size/-/element-size-0.3.2.tgz", - "integrity": "sha512-bVvvigUGvAuj7PCkE5AbzvTJDTw5f3bg9nQdv+ErhVN8SfPPppLJEmmWdxqsRzrHXgx8ypJt/+Ty0kjtISVDsQ==" - }, - "node_modules/@zag-js/focus-visible": { - "version": "0.2.2", - "resolved": "https://registry.npmjs.org/@zag-js/focus-visible/-/focus-visible-0.2.2.tgz", - "integrity": "sha512-0j2gZq8HiZ51z4zNnSkF1iSkqlwRDvdH+son3wHdoz+7IUdMN/5Exd4TxMJ+gq2Of1DiXReYLL9qqh2PdQ4wgA==" - }, - "node_modules/acorn": { - "version": "8.10.0", - "resolved": "https://registry.npmjs.org/acorn/-/acorn-8.10.0.tgz", - "integrity": "sha512-F0SAmZ8iUtS//m8DmCTA0jlh6TDKkHQyK6xc6V4KDTyZKA9dnvX9/3sRTVQrWm79glUAZbnmmNcdYwUIHWVybw==", - "dev": true, - "bin": { - "acorn": "bin/acorn" - }, - "engines": { - "node": ">=0.4.0" - } - }, - "node_modules/acorn-jsx": { - "version": "5.3.2", - "resolved": "https://registry.npmjs.org/acorn-jsx/-/acorn-jsx-5.3.2.tgz", - "integrity": "sha512-rq9s+JNhf0IChjtDXxllJ7g41oZk5SlXtp0LHwyA5cejwn7vKmKp4pPri6YEePv2PU65sAsegbXtIinmDFDXgQ==", - "dev": true, - "peerDependencies": { - "acorn": "^6.0.0 || ^7.0.0 || ^8.0.0" - } - }, - "node_modules/ajv": { - "version": "6.12.6", - "resolved": "https://registry.npmjs.org/ajv/-/ajv-6.12.6.tgz", - "integrity": "sha512-j3fVLgvTo527anyYyJOGTYJbG+vnnQYvE0m5mmkc1TK+nxAppkCLMIL0aZ4dblVCNoGShhm+kzE4ZUykBoMg4g==", - "dev": true, - "dependencies": { - "fast-deep-equal": "^3.1.1", - "fast-json-stable-stringify": "^2.0.0", - "json-schema-traverse": "^0.4.1", - "uri-js": "^4.2.2" - }, - "funding": { - "type": "github", - "url": "https://github.com/sponsors/epoberezkin" - } - }, - "node_modules/ansi-regex": { - "version": "5.0.1", - "resolved": "https://registry.npmjs.org/ansi-regex/-/ansi-regex-5.0.1.tgz", - "integrity": "sha512-quJQXlTSUGL2LH9SUXo8VwsY4soanhgo6LNSm84E1LBcE8s3O0wpdiRzyR9z/ZZJMlMWv37qOOb9pdJlMUEKFQ==", - "dev": true, - "engines": { - "node": ">=8" - } - }, - "node_modules/ansi-styles": { - "version": "3.2.1", - "resolved": "https://registry.npmjs.org/ansi-styles/-/ansi-styles-3.2.1.tgz", - "integrity": "sha512-VT0ZI6kZRdTh8YyJw3SMbYm/u+NqfsAxEpWO0Pf9sq8/e94WxxOpPKx9FR1FlyCtOVDNOQ+8ntlqFxiRc+r5qA==", - "dependencies": { - "color-convert": "^1.9.0" - }, - "engines": { - "node": ">=4" - } - }, - "node_modules/argparse": { - "version": "2.0.1", - "resolved": "https://registry.npmjs.org/argparse/-/argparse-2.0.1.tgz", - "integrity": "sha512-8+9WqebbFzpX9OR+Wa6O29asIogeRMzcGtAINdpMHHyAg10f05aSFVBbcEqGf/PXw1EjAZ+q2/bEBg3DvurK3Q==", - "dev": true - }, - "node_modules/aria-hidden": { - "version": "1.2.3", - "resolved": "https://registry.npmjs.org/aria-hidden/-/aria-hidden-1.2.3.tgz", - "integrity": "sha512-xcLxITLe2HYa1cnYnwCjkOO1PqUHQpozB8x9AR0OgWN2woOBi5kSDVxKfd0b7sb1hw5qFeJhXm9H1nu3xSfLeQ==", - "dependencies": { - "tslib": "^2.0.0" - }, - "engines": { - "node": ">=10" - } - }, - "node_modules/array-buffer-byte-length": { - "version": "1.0.0", - "resolved": "https://registry.npmjs.org/array-buffer-byte-length/-/array-buffer-byte-length-1.0.0.tgz", - "integrity": "sha512-LPuwb2P+NrQw3XhxGc36+XSvuBPopovXYTR9Ew++Du9Yb/bx5AzBfrIsBoj0EZUifjQU+sHL21sseZ3jerWO/A==", - "dev": true, - "dependencies": { - "call-bind": "^1.0.2", - "is-array-buffer": "^3.0.1" - }, - "funding": { - "url": "https://github.com/sponsors/ljharb" - } - }, - "node_modules/array-includes": { - "version": "3.1.6", - "resolved": "https://registry.npmjs.org/array-includes/-/array-includes-3.1.6.tgz", - "integrity": "sha512-sgTbLvL6cNnw24FnbaDyjmvddQ2ML8arZsgaJhoABMoplz/4QRhtrYS+alr1BUM1Bwp6dhx8vVCBSLG+StwOFw==", - "dev": true, - "dependencies": { - "call-bind": "^1.0.2", - "define-properties": "^1.1.4", - "es-abstract": "^1.20.4", - "get-intrinsic": "^1.1.3", - "is-string": "^1.0.7" - }, - "engines": { - "node": ">= 0.4" - }, - "funding": { - "url": "https://github.com/sponsors/ljharb" - } - }, - "node_modules/array.prototype.flat": { - "version": "1.3.1", - "resolved": "https://registry.npmjs.org/array.prototype.flat/-/array.prototype.flat-1.3.1.tgz", - "integrity": "sha512-roTU0KWIOmJ4DRLmwKd19Otg0/mT3qPNt0Qb3GWW8iObuZXxrjB/pzn0R3hqpRSWg4HCwqx+0vwOnWnvlOyeIA==", - "dev": true, - "dependencies": { - "call-bind": "^1.0.2", - "define-properties": "^1.1.4", - "es-abstract": "^1.20.4", - "es-shim-unscopables": "^1.0.0" - }, - "engines": { - "node": ">= 0.4" - }, - "funding": { - "url": "https://github.com/sponsors/ljharb" - } - }, - "node_modules/array.prototype.flatmap": { - "version": "1.3.1", - "resolved": "https://registry.npmjs.org/array.prototype.flatmap/-/array.prototype.flatmap-1.3.1.tgz", - "integrity": "sha512-8UGn9O1FDVvMNB0UlLv4voxRMze7+FpHyF5mSMRjWHUMlpoDViniy05870VlxhfgTnLbpuwTzvD76MTtWxB/mQ==", - "dev": true, - "dependencies": { - "call-bind": "^1.0.2", - "define-properties": "^1.1.4", - "es-abstract": "^1.20.4", - "es-shim-unscopables": "^1.0.0" - }, - "engines": { - "node": ">= 0.4" - }, - "funding": { - "url": "https://github.com/sponsors/ljharb" - } - }, - "node_modules/array.prototype.tosorted": { - "version": "1.1.1", - "resolved": "https://registry.npmjs.org/array.prototype.tosorted/-/array.prototype.tosorted-1.1.1.tgz", - "integrity": "sha512-pZYPXPRl2PqWcsUs6LOMn+1f1532nEoPTYowBtqLwAW+W8vSVhkIGnmOX1t/UQjD6YGI0vcD2B1U7ZFGQH9jnQ==", - "dev": true, - "dependencies": { - "call-bind": "^1.0.2", - "define-properties": "^1.1.4", - "es-abstract": "^1.20.4", - "es-shim-unscopables": "^1.0.0", - "get-intrinsic": "^1.1.3" - } - }, - "node_modules/available-typed-arrays": { - "version": "1.0.5", - "resolved": "https://registry.npmjs.org/available-typed-arrays/-/available-typed-arrays-1.0.5.tgz", - "integrity": "sha512-DMD0KiN46eipeziST1LPP/STfDU0sufISXmjSgvVsoU2tqxctQeASejWcfNtxYKqETM1UxQ8sp2OrSBWpHY6sw==", - "dev": true, - "engines": { - "node": ">= 0.4" - }, - "funding": { - "url": "https://github.com/sponsors/ljharb" - } - }, - "node_modules/babel-plugin-macros": { - "version": "3.1.0", - "resolved": "https://registry.npmjs.org/babel-plugin-macros/-/babel-plugin-macros-3.1.0.tgz", - "integrity": "sha512-Cg7TFGpIr01vOQNODXOOaGz2NpCU5gl8x1qJFbb6hbZxR7XrcE2vtbAsTAbJ7/xwJtUuJEw8K8Zr/AE0LHlesg==", - "dependencies": { - "@babel/runtime": "^7.12.5", - "cosmiconfig": "^7.0.0", - "resolve": "^1.19.0" - }, - "engines": { - "node": ">=10", - "npm": ">=6" - } - }, - "node_modules/babel-plugin-macros/node_modules/resolve": { - "version": "1.22.2", - "resolved": "https://registry.npmjs.org/resolve/-/resolve-1.22.2.tgz", - "integrity": "sha512-Sb+mjNHOULsBv818T40qSPeRiuWLyaGMa5ewydRLFimneixmVy2zdivRl+AF6jaYPC8ERxGDmFSiqui6SfPd+g==", - "dependencies": { - "is-core-module": "^2.11.0", - "path-parse": "^1.0.7", - "supports-preserve-symlinks-flag": "^1.0.0" - }, - "bin": { - "resolve": "bin/resolve" - }, - "funding": { - "url": "https://github.com/sponsors/ljharb" - } - }, - "node_modules/backend": { - "resolved": "..", - "link": true - }, - "node_modules/balanced-match": { - "version": "1.0.2", - "resolved": "https://registry.npmjs.org/balanced-match/-/balanced-match-1.0.2.tgz", - "integrity": "sha512-3oSeUO0TMV67hN1AmbXsK4yaqU7tjiHlbxRDZOpH0KW9+CeX4bRAaX0Anxt0tx2MrpRpWwQaPwIlISEJhYU5Pw==", - "dev": true - }, - "node_modules/brace-expansion": { - "version": "1.1.11", - "resolved": "https://registry.npmjs.org/brace-expansion/-/brace-expansion-1.1.11.tgz", - "integrity": "sha512-iCuPHDFgrHX7H2vEI/5xpz07zSHB00TpugqhmYtVmMO6518mCuRMoOYFldEBl0g187ufozdaHgWKcYFb61qGiA==", - "dev": true, - "dependencies": { - "balanced-match": "^1.0.0", - "concat-map": "0.0.1" - } - }, - "node_modules/browserslist": { - "version": "4.21.9", - "resolved": "https://registry.npmjs.org/browserslist/-/browserslist-4.21.9.tgz", - "integrity": "sha512-M0MFoZzbUrRU4KNfCrDLnvyE7gub+peetoTid3TBIqtunaDJyXlwhakT+/VkvSXcfIzFfK/nkCs4nmyTmxdNSg==", - "dev": true, - "funding": [ - { - "type": "opencollective", - "url": "https://opencollective.com/browserslist" - }, - { - "type": "tidelift", - "url": "https://tidelift.com/funding/github/npm/browserslist" - }, - { - "type": "github", - "url": "https://github.com/sponsors/ai" - } - ], - "dependencies": { - "caniuse-lite": "^1.0.30001503", - "electron-to-chromium": "^1.4.431", - "node-releases": "^2.0.12", - "update-browserslist-db": "^1.0.11" - }, - "bin": { - "browserslist": "cli.js" - }, - "engines": { - "node": "^6 || ^7 || ^8 || ^9 || ^10 || ^11 || ^12 || >=13.7" - } - }, - "node_modules/call-bind": { - "version": "1.0.2", - "resolved": "https://registry.npmjs.org/call-bind/-/call-bind-1.0.2.tgz", - "integrity": "sha512-7O+FbCihrB5WGbFYesctwmTKae6rOiIzmz1icreWJ+0aA7LJfuqhEso2T9ncpcFtzMQtzXf2QGGueWJGTYsqrA==", - "dev": true, - "dependencies": { - "function-bind": "^1.1.1", - "get-intrinsic": "^1.0.2" - }, - "funding": { - "url": "https://github.com/sponsors/ljharb" - } - }, - "node_modules/callsites": { - "version": "3.1.0", - "resolved": "https://registry.npmjs.org/callsites/-/callsites-3.1.0.tgz", - "integrity": "sha512-P8BjAsXvZS+VIDUI11hHCQEv74YT67YUi5JJFNWIqL235sBmjX4+qx9Muvls5ivyNENctx46xQLQ3aTuE7ssaQ==", - "engines": { - "node": ">=6" - } - }, - "node_modules/caniuse-lite": { - "version": "1.0.30001516", - "resolved": "https://registry.npmjs.org/caniuse-lite/-/caniuse-lite-1.0.30001516.tgz", - "integrity": "sha512-Wmec9pCBY8CWbmI4HsjBeQLqDTqV91nFVR83DnZpYyRnPI1wePDsTg0bGLPC5VU/3OIZV1fmxEea1b+tFKe86g==", - "dev": true, - "funding": [ - { - "type": "opencollective", - "url": "https://opencollective.com/browserslist" - }, - { - "type": "tidelift", - "url": "https://tidelift.com/funding/github/npm/caniuse-lite" - }, - { - "type": "github", - "url": "https://github.com/sponsors/ai" - } - ] - }, - "node_modules/chalk": { - "version": "2.4.2", - "resolved": "https://registry.npmjs.org/chalk/-/chalk-2.4.2.tgz", - "integrity": "sha512-Mti+f9lpJNcwF4tWV8/OrTTtF1gZi+f8FqlyAdouralcFWFQWF2+NgCHShjkCb+IFBLq9buZwE1xckQU4peSuQ==", - "dependencies": { - "ansi-styles": "^3.2.1", - "escape-string-regexp": "^1.0.5", - "supports-color": "^5.3.0" - }, - "engines": { - "node": ">=4" - } - }, - "node_modules/color-convert": { - "version": "1.9.3", - "resolved": "https://registry.npmjs.org/color-convert/-/color-convert-1.9.3.tgz", - "integrity": "sha512-QfAUtd+vFdAtFQcC8CCyYt1fYWxSqAiK2cSD6zDB8N3cpsEBAvRxp9zOGg6G/SHHJYAT88/az/IuDGALsNVbGg==", - "dependencies": { - "color-name": "1.1.3" - } - }, - "node_modules/color-name": { - "version": "1.1.3", - "resolved": "https://registry.npmjs.org/color-name/-/color-name-1.1.3.tgz", - "integrity": "sha512-72fSenhMw2HZMTVHeCA9KCmpEIbzWiQsjN+BHcBbS9vr1mtt+vJjPdksIBNUmKAW8TFUDPJK5SUU3QhE9NEXDw==" - }, - "node_modules/color2k": { - "version": "2.0.2", - "resolved": "https://registry.npmjs.org/color2k/-/color2k-2.0.2.tgz", - "integrity": "sha512-kJhwH5nAwb34tmyuqq/lgjEKzlFXn1U99NlnB6Ws4qVaERcRUYeYP1cBw6BJ4vxaWStAUEef4WMr7WjOCnBt8w==" - }, - "node_modules/compute-scroll-into-view": { - "version": "1.0.20", - "resolved": "https://registry.npmjs.org/compute-scroll-into-view/-/compute-scroll-into-view-1.0.20.tgz", - "integrity": "sha512-UCB0ioiyj8CRjtrvaceBLqqhZCVP+1B8+NWQhmdsm0VXOJtobBCf1dBQmebCCo34qZmUwZfIH2MZLqNHazrfjg==" - }, - "node_modules/concat-map": { - "version": "0.0.1", - "resolved": "https://registry.npmjs.org/concat-map/-/concat-map-0.0.1.tgz", - "integrity": "sha512-/Srv4dswyQNBfohGpz9o6Yb3Gz3SrUDqBH5rTuhGR7ahtlbYKnVxw2bCFMRljaA7EXHaXZ8wsHdodFvbkhKmqg==", - "dev": true - }, - "node_modules/convert-source-map": { - "version": "1.9.0", - "resolved": "https://registry.npmjs.org/convert-source-map/-/convert-source-map-1.9.0.tgz", - "integrity": "sha512-ASFBup0Mz1uyiIjANan1jzLQami9z1PoYSZCiiYW2FczPbenXc45FZdBZLzOT+r6+iciuEModtmCti+hjaAk0A==" - }, - "node_modules/copy-to-clipboard": { - "version": "3.3.3", - "resolved": "https://registry.npmjs.org/copy-to-clipboard/-/copy-to-clipboard-3.3.3.tgz", - "integrity": "sha512-2KV8NhB5JqC3ky0r9PMCAZKbUHSwtEo4CwCs0KXgruG43gX5PMqDEBbVU4OUzw2MuAWUfsuFmWvEKG5QRfSnJA==", - "dependencies": { - "toggle-selection": "^1.0.6" - } - }, - "node_modules/cosmiconfig": { - "version": "7.1.0", - "resolved": "https://registry.npmjs.org/cosmiconfig/-/cosmiconfig-7.1.0.tgz", - "integrity": "sha512-AdmX6xUzdNASswsFtmwSt7Vj8po9IuqXm0UXz7QKPuEUmPB4XyjGfaAr2PSuELMwkRMVH1EpIkX5bTZGRB3eCA==", - "dependencies": { - "@types/parse-json": "^4.0.0", - "import-fresh": "^3.2.1", - "parse-json": "^5.0.0", - "path-type": "^4.0.0", - "yaml": "^1.10.0" - }, - "engines": { - "node": ">=10" - } - }, - "node_modules/cross-spawn": { - "version": "7.0.3", - "resolved": "https://registry.npmjs.org/cross-spawn/-/cross-spawn-7.0.3.tgz", - "integrity": "sha512-iRDPJKUPVEND7dHPO8rkbOnPpyDygcDFtWjpeWNCgy8WP2rXcxXL8TskReQl6OrB2G7+UJrags1q15Fudc7G6w==", - "dev": true, - "dependencies": { - "path-key": "^3.1.0", - "shebang-command": "^2.0.0", - "which": "^2.0.1" - }, - "engines": { - "node": ">= 8" - } - }, - "node_modules/css-box-model": { - "version": "1.2.1", - "resolved": "https://registry.npmjs.org/css-box-model/-/css-box-model-1.2.1.tgz", - "integrity": "sha512-a7Vr4Q/kd/aw96bnJG332W9V9LkJO69JRcaCYDUqjp6/z0w6VcZjgAcTbgFxEPfBgdnAwlh3iwu+hLopa+flJw==", - "dependencies": { - "tiny-invariant": "^1.0.6" - } - }, - "node_modules/csstype": { - "version": "3.1.2", - "resolved": "https://registry.npmjs.org/csstype/-/csstype-3.1.2.tgz", - "integrity": "sha512-I7K1Uu0MBPzaFKg4nI5Q7Vs2t+3gWWW648spaF+Rg7pI9ds18Ugn+lvg4SHczUdKlHI5LWBXyqfS8+DufyBsgQ==" - }, - "node_modules/date-fns": { - "version": "2.30.0", - "resolved": "https://registry.npmjs.org/date-fns/-/date-fns-2.30.0.tgz", - "integrity": "sha512-fnULvOpxnC5/Vg3NCiWelDsLiUc9bRwAPs/+LfTLNvetFCtCTN+yQz15C/fs4AwX1R9K5GLtLfn8QW+dWisaAw==", - "dependencies": { - "@babel/runtime": "^7.21.0" - }, - "engines": { - "node": ">=0.11" - }, - "funding": { - "type": "opencollective", - "url": "https://opencollective.com/date-fns" - } - }, - "node_modules/debug": { - "version": "4.3.4", - "resolved": "https://registry.npmjs.org/debug/-/debug-4.3.4.tgz", - "integrity": "sha512-PRWFHuSU3eDtQJPvnNY7Jcket1j0t5OuOsFzPPzsekD52Zl8qUfFIPEiswXqIvHWGVHOgX+7G/vCNNhehwxfkQ==", - "dependencies": { - "ms": "2.1.2" - }, - "engines": { - "node": ">=6.0" - }, - "peerDependenciesMeta": { - "supports-color": { - "optional": true - } - } - }, - "node_modules/deep-is": { - "version": "0.1.4", - "resolved": "https://registry.npmjs.org/deep-is/-/deep-is-0.1.4.tgz", - "integrity": "sha512-oIPzksmTg4/MriiaYGO+okXDT7ztn/w3Eptv/+gSIdMdKsJo0u4CfYNFJPy+4SKMuCqGw2wxnA+URMg3t8a/bQ==", - "dev": true - }, - "node_modules/define-properties": { - "version": "1.2.0", - "resolved": "https://registry.npmjs.org/define-properties/-/define-properties-1.2.0.tgz", - "integrity": "sha512-xvqAVKGfT1+UAvPwKTVw/njhdQ8ZhXK4lI0bCIuCMrp2up9nPnaDftrLtmpTazqd1o+UY4zgzU+avtMbDP+ldA==", - "dev": true, - "dependencies": { - "has-property-descriptors": "^1.0.0", - "object-keys": "^1.1.1" - }, - "engines": { - "node": ">= 0.4" - }, - "funding": { - "url": "https://github.com/sponsors/ljharb" - } - }, - "node_modules/detect-node-es": { - "version": "1.1.0", - "resolved": "https://registry.npmjs.org/detect-node-es/-/detect-node-es-1.1.0.tgz", - "integrity": "sha512-ypdmJU/TbBby2Dxibuv7ZLW3Bs1QEmM7nHjEANfohJLvE0XVujisn1qPJcZxg+qDucsr+bP6fLD1rPS3AhJ7EQ==" - }, - "node_modules/doctrine": { - "version": "3.0.0", - "resolved": "https://registry.npmjs.org/doctrine/-/doctrine-3.0.0.tgz", - "integrity": "sha512-yS+Q5i3hBf7GBkd4KG8a7eBNNWNGLTaEwwYWUijIYM7zrlYDM0BFXHjjPWlWZ1Rg7UaddZeIDmi9jF3HmqiQ2w==", - "dev": true, - "dependencies": { - "esutils": "^2.0.2" - }, - "engines": { - "node": ">=6.0.0" - } - }, - "node_modules/electron-to-chromium": { - "version": "1.4.461", - "resolved": "https://registry.npmjs.org/electron-to-chromium/-/electron-to-chromium-1.4.461.tgz", - "integrity": "sha512-1JkvV2sgEGTDXjdsaQCeSwYYuhLRphRpc+g6EHTFELJXEiznLt3/0pZ9JuAOQ5p2rI3YxKTbivtvajirIfhrEQ==", - "dev": true - }, - "node_modules/engine.io-client": { - "version": "6.5.2", - "resolved": "https://registry.npmjs.org/engine.io-client/-/engine.io-client-6.5.2.tgz", - "integrity": "sha512-CQZqbrpEYnrpGqC07a9dJDz4gePZUgTPMU3NKJPSeQOyw27Tst4Pl3FemKoFGAlHzgZmKjoRmiJvbWfhCXUlIg==", - "dependencies": { - "@socket.io/component-emitter": "~3.1.0", - "debug": "~4.3.1", - "engine.io-parser": "~5.2.1", - "ws": "~8.11.0", - "xmlhttprequest-ssl": "~2.0.0" - } - }, - "node_modules/engine.io-parser": { - "version": "5.2.1", - "resolved": "https://registry.npmjs.org/engine.io-parser/-/engine.io-parser-5.2.1.tgz", - "integrity": "sha512-9JktcM3u18nU9N2Lz3bWeBgxVgOKpw7yhRaoxQA3FUDZzzw+9WlA6p4G4u0RixNkg14fH7EfEc/RhpurtiROTQ==", - "engines": { - "node": ">=10.0.0" - } - }, - "node_modules/error-ex": { - "version": "1.3.2", - "resolved": "https://registry.npmjs.org/error-ex/-/error-ex-1.3.2.tgz", - "integrity": "sha512-7dFHNmqeFSEt2ZBsCriorKnn3Z2pj+fd9kmI6QoWw4//DL+icEBfc0U7qJCisqrTsKTjw4fNFy2pW9OqStD84g==", - "dependencies": { - "is-arrayish": "^0.2.1" - } - }, - "node_modules/es-abstract": { - "version": "1.21.3", - "resolved": "https://registry.npmjs.org/es-abstract/-/es-abstract-1.21.3.tgz", - "integrity": "sha512-ZU4miiY1j3sGPFLJ34VJXEqhpmL+HGByCinGHv4HC+Fxl2fI2Z4yR6tl0mORnDr6PA8eihWo4LmSWDbvhALckg==", - "dev": true, - "dependencies": { - "array-buffer-byte-length": "^1.0.0", - "available-typed-arrays": "^1.0.5", - "call-bind": "^1.0.2", - "es-set-tostringtag": "^2.0.1", - "es-to-primitive": "^1.2.1", - "function.prototype.name": "^1.1.5", - "get-intrinsic": "^1.2.1", - "get-symbol-description": "^1.0.0", - "globalthis": "^1.0.3", - "gopd": "^1.0.1", - "has": "^1.0.3", - "has-property-descriptors": "^1.0.0", - "has-proto": "^1.0.1", - "has-symbols": "^1.0.3", - "internal-slot": "^1.0.5", - "is-array-buffer": "^3.0.2", - "is-callable": "^1.2.7", - "is-negative-zero": "^2.0.2", - "is-regex": "^1.1.4", - "is-shared-array-buffer": "^1.0.2", - "is-string": "^1.0.7", - "is-typed-array": "^1.1.10", - "is-weakref": "^1.0.2", - "object-inspect": "^1.12.3", - "object-keys": "^1.1.1", - "object.assign": "^4.1.4", - "regexp.prototype.flags": "^1.5.0", - "safe-regex-test": "^1.0.0", - "string.prototype.trim": "^1.2.7", - "string.prototype.trimend": "^1.0.6", - "string.prototype.trimstart": "^1.0.6", - "typed-array-byte-offset": "^1.0.0", - "typed-array-length": "^1.0.4", - "unbox-primitive": "^1.0.2", - "which-typed-array": "^1.1.10" - }, - "engines": { - "node": ">= 0.4" - }, - "funding": { - "url": "https://github.com/sponsors/ljharb" - } - }, - "node_modules/es-set-tostringtag": { - "version": "2.0.1", - "resolved": "https://registry.npmjs.org/es-set-tostringtag/-/es-set-tostringtag-2.0.1.tgz", - "integrity": "sha512-g3OMbtlwY3QewlqAiMLI47KywjWZoEytKr8pf6iTC8uJq5bIAH52Z9pnQ8pVL6whrCto53JZDuUIsifGeLorTg==", - "dev": true, - "dependencies": { - "get-intrinsic": "^1.1.3", - "has": "^1.0.3", - "has-tostringtag": "^1.0.0" - }, - "engines": { - "node": ">= 0.4" - } - }, - "node_modules/es-shim-unscopables": { - "version": "1.0.0", - "resolved": "https://registry.npmjs.org/es-shim-unscopables/-/es-shim-unscopables-1.0.0.tgz", - "integrity": "sha512-Jm6GPcCdC30eMLbZ2x8z2WuRwAws3zTBBKuusffYVUrNj/GVSUAZ+xKMaUpfNDR5IbyNA5LJbaecoUVbmUcB1w==", - "dev": true, - "dependencies": { - "has": "^1.0.3" - } - }, - "node_modules/es-to-primitive": { - "version": "1.2.1", - "resolved": "https://registry.npmjs.org/es-to-primitive/-/es-to-primitive-1.2.1.tgz", - "integrity": "sha512-QCOllgZJtaUo9miYBcLChTUaHNjJF3PYs1VidD7AwiEj1kYxKeQTctLAezAOH5ZKRH0g2IgPn6KwB4IT8iRpvA==", - "dev": true, - "dependencies": { - "is-callable": "^1.1.4", - "is-date-object": "^1.0.1", - "is-symbol": "^1.0.2" - }, - "engines": { - "node": ">= 0.4" - }, - "funding": { - "url": "https://github.com/sponsors/ljharb" - } - }, - "node_modules/esbuild": { - "version": "0.18.13", - "resolved": "https://registry.npmjs.org/esbuild/-/esbuild-0.18.13.tgz", - "integrity": "sha512-vhg/WR/Oiu4oUIkVhmfcc23G6/zWuEQKFS+yiosSHe4aN6+DQRXIfeloYGibIfVhkr4wyfuVsGNLr+sQU1rWWw==", - "dev": true, - "hasInstallScript": true, - "bin": { - "esbuild": "bin/esbuild" - }, - "engines": { - "node": ">=12" - }, - "optionalDependencies": { - "@esbuild/android-arm": "0.18.13", - "@esbuild/android-arm64": "0.18.13", - "@esbuild/android-x64": "0.18.13", - "@esbuild/darwin-arm64": "0.18.13", - "@esbuild/darwin-x64": "0.18.13", - "@esbuild/freebsd-arm64": "0.18.13", - "@esbuild/freebsd-x64": "0.18.13", - "@esbuild/linux-arm": "0.18.13", - "@esbuild/linux-arm64": "0.18.13", - "@esbuild/linux-ia32": "0.18.13", - "@esbuild/linux-loong64": "0.18.13", - "@esbuild/linux-mips64el": "0.18.13", - "@esbuild/linux-ppc64": "0.18.13", - "@esbuild/linux-riscv64": "0.18.13", - "@esbuild/linux-s390x": "0.18.13", - "@esbuild/linux-x64": "0.18.13", - "@esbuild/netbsd-x64": "0.18.13", - "@esbuild/openbsd-x64": "0.18.13", - "@esbuild/sunos-x64": "0.18.13", - "@esbuild/win32-arm64": "0.18.13", - "@esbuild/win32-ia32": "0.18.13", - "@esbuild/win32-x64": "0.18.13" - } - }, - "node_modules/escalade": { - "version": "3.1.1", - "resolved": "https://registry.npmjs.org/escalade/-/escalade-3.1.1.tgz", - "integrity": "sha512-k0er2gUkLf8O0zKJiAhmkTnJlTvINGv7ygDNPbeIsX/TJjGJZHuh9B2UxbsaEkmlEo9MfhrSzmhIlhRlI2GXnw==", - "dev": true, - "engines": { - "node": ">=6" - } - }, - "node_modules/escape-string-regexp": { - "version": "1.0.5", - "resolved": "https://registry.npmjs.org/escape-string-regexp/-/escape-string-regexp-1.0.5.tgz", - "integrity": "sha512-vbRorB5FUQWvla16U8R/qgaFIya2qGzwDrNmCZuYKrbdSUMG6I1ZCGQRefkRVhuOkIGVne7BQ35DSfo1qvJqFg==", - "engines": { - "node": ">=0.8.0" - } - }, - "node_modules/eslint": { - "version": "8.45.0", - "resolved": "https://registry.npmjs.org/eslint/-/eslint-8.45.0.tgz", - "integrity": "sha512-pd8KSxiQpdYRfYa9Wufvdoct3ZPQQuVuU5O6scNgMuOMYuxvH0IGaYK0wUFjo4UYYQQCUndlXiMbnxopwvvTiw==", - "dev": true, - "dependencies": { - "@eslint-community/eslint-utils": "^4.2.0", - "@eslint-community/regexpp": "^4.4.0", - "@eslint/eslintrc": "^2.1.0", - "@eslint/js": "8.44.0", - "@humanwhocodes/config-array": "^0.11.10", - "@humanwhocodes/module-importer": "^1.0.1", - "@nodelib/fs.walk": "^1.2.8", - "ajv": "^6.10.0", - "chalk": "^4.0.0", - "cross-spawn": "^7.0.2", - "debug": "^4.3.2", - "doctrine": "^3.0.0", - "escape-string-regexp": "^4.0.0", - "eslint-scope": "^7.2.0", - "eslint-visitor-keys": "^3.4.1", - "espree": "^9.6.0", - "esquery": "^1.4.2", - "esutils": "^2.0.2", - "fast-deep-equal": "^3.1.3", - "file-entry-cache": "^6.0.1", - "find-up": "^5.0.0", - "glob-parent": "^6.0.2", - "globals": "^13.19.0", - "graphemer": "^1.4.0", - "ignore": "^5.2.0", - "imurmurhash": "^0.1.4", - "is-glob": "^4.0.0", - "is-path-inside": "^3.0.3", - "js-yaml": "^4.1.0", - "json-stable-stringify-without-jsonify": "^1.0.1", - "levn": "^0.4.1", - "lodash.merge": "^4.6.2", - "minimatch": "^3.1.2", - "natural-compare": "^1.4.0", - "optionator": "^0.9.3", - "strip-ansi": "^6.0.1", - "text-table": "^0.2.0" - }, - "bin": { - "eslint": "bin/eslint.js" - }, - "engines": { - "node": "^12.22.0 || ^14.17.0 || >=16.0.0" - }, - "funding": { - "url": "https://opencollective.com/eslint" - } - }, - "node_modules/eslint-plugin-react": { - "version": "7.32.2", - "resolved": "https://registry.npmjs.org/eslint-plugin-react/-/eslint-plugin-react-7.32.2.tgz", - "integrity": "sha512-t2fBMa+XzonrrNkyVirzKlvn5RXzzPwRHtMvLAtVZrt8oxgnTQaYbU6SXTOO1mwQgp1y5+toMSKInnzGr0Knqg==", - "dev": true, - "dependencies": { - "array-includes": "^3.1.6", - "array.prototype.flatmap": "^1.3.1", - "array.prototype.tosorted": "^1.1.1", - "doctrine": "^2.1.0", - "estraverse": "^5.3.0", - "jsx-ast-utils": "^2.4.1 || ^3.0.0", - "minimatch": "^3.1.2", - "object.entries": "^1.1.6", - "object.fromentries": "^2.0.6", - "object.hasown": "^1.1.2", - "object.values": "^1.1.6", - "prop-types": "^15.8.1", - "resolve": "^2.0.0-next.4", - "semver": "^6.3.0", - "string.prototype.matchall": "^4.0.8" - }, - "engines": { - "node": ">=4" - }, - "peerDependencies": { - "eslint": "^3 || ^4 || ^5 || ^6 || ^7 || ^8" - } - }, - "node_modules/eslint-plugin-react-hooks": { - "version": "4.6.0", - "resolved": "https://registry.npmjs.org/eslint-plugin-react-hooks/-/eslint-plugin-react-hooks-4.6.0.tgz", - "integrity": "sha512-oFc7Itz9Qxh2x4gNHStv3BqJq54ExXmfC+a1NjAta66IAN87Wu0R/QArgIS9qKzX3dXKPI9H5crl9QchNMY9+g==", - "dev": true, - "engines": { - "node": ">=10" - }, - "peerDependencies": { - "eslint": "^3.0.0 || ^4.0.0 || ^5.0.0 || ^6.0.0 || ^7.0.0 || ^8.0.0-0" - } - }, - "node_modules/eslint-plugin-react-refresh": { - "version": "0.4.3", - "resolved": "https://registry.npmjs.org/eslint-plugin-react-refresh/-/eslint-plugin-react-refresh-0.4.3.tgz", - "integrity": "sha512-Hh0wv8bUNY877+sI0BlCUlsS0TYYQqvzEwJsJJPM2WF4RnTStSnSR3zdJYa2nPOJgg3UghXi54lVyMSmpCalzA==", - "dev": true, - "peerDependencies": { - "eslint": ">=7" - } - }, - "node_modules/eslint-plugin-react/node_modules/doctrine": { - "version": "2.1.0", - "resolved": "https://registry.npmjs.org/doctrine/-/doctrine-2.1.0.tgz", - "integrity": "sha512-35mSku4ZXK0vfCuHEDAwt55dg2jNajHZ1odvF+8SSr82EsZY4QmXfuWso8oEd8zRhVObSN18aM0CjSdoBX7zIw==", - "dev": true, - "dependencies": { - "esutils": "^2.0.2" - }, - "engines": { - "node": ">=0.10.0" - } - }, - "node_modules/eslint-scope": { - "version": "7.2.1", - "resolved": "https://registry.npmjs.org/eslint-scope/-/eslint-scope-7.2.1.tgz", - "integrity": "sha512-CvefSOsDdaYYvxChovdrPo/ZGt8d5lrJWleAc1diXRKhHGiTYEI26cvo8Kle/wGnsizoCJjK73FMg1/IkIwiNA==", - "dev": true, - "dependencies": { - "esrecurse": "^4.3.0", - "estraverse": "^5.2.0" - }, - "engines": { - "node": "^12.22.0 || ^14.17.0 || >=16.0.0" - }, - "funding": { - "url": "https://opencollective.com/eslint" - } - }, - "node_modules/eslint-visitor-keys": { - "version": "3.4.1", - "resolved": "https://registry.npmjs.org/eslint-visitor-keys/-/eslint-visitor-keys-3.4.1.tgz", - "integrity": "sha512-pZnmmLwYzf+kWaM/Qgrvpen51upAktaaiI01nsJD/Yr3lMOdNtq0cxkrrg16w64VtisN6okbs7Q8AfGqj4c9fA==", - "dev": true, - "engines": { - "node": "^12.22.0 || ^14.17.0 || >=16.0.0" - }, - "funding": { - "url": "https://opencollective.com/eslint" - } - }, - "node_modules/eslint/node_modules/ansi-styles": { - "version": "4.3.0", - "resolved": "https://registry.npmjs.org/ansi-styles/-/ansi-styles-4.3.0.tgz", - "integrity": "sha512-zbB9rCJAT1rbjiVDb2hqKFHNYLxgtk8NURxZ3IZwD3F6NtxbXZQCnnSi1Lkx+IDohdPlFp222wVALIheZJQSEg==", - "dev": true, - "dependencies": { - "color-convert": "^2.0.1" - }, - "engines": { - "node": ">=8" - }, - "funding": { - "url": "https://github.com/chalk/ansi-styles?sponsor=1" - } - }, - "node_modules/eslint/node_modules/chalk": { - "version": "4.1.2", - "resolved": "https://registry.npmjs.org/chalk/-/chalk-4.1.2.tgz", - "integrity": "sha512-oKnbhFyRIXpUuez8iBMmyEa4nbj4IOQyuhc/wy9kY7/WVPcwIO9VA668Pu8RkO7+0G76SLROeyw9CpQ061i4mA==", - "dev": true, - "dependencies": { - "ansi-styles": "^4.1.0", - "supports-color": "^7.1.0" - }, - "engines": { - "node": ">=10" - }, - "funding": { - "url": "https://github.com/chalk/chalk?sponsor=1" - } - }, - "node_modules/eslint/node_modules/color-convert": { - "version": "2.0.1", - "resolved": "https://registry.npmjs.org/color-convert/-/color-convert-2.0.1.tgz", - "integrity": "sha512-RRECPsj7iu/xb5oKYcsFHSppFNnsj/52OVTRKb4zP5onXwVF3zVmmToNcOfGC+CRDpfK/U584fMg38ZHCaElKQ==", - "dev": true, - "dependencies": { - "color-name": "~1.1.4" - }, - "engines": { - "node": ">=7.0.0" - } - }, - "node_modules/eslint/node_modules/color-name": { - "version": "1.1.4", - "resolved": "https://registry.npmjs.org/color-name/-/color-name-1.1.4.tgz", - "integrity": "sha512-dOy+3AuW3a2wNbZHIuMZpTcgjGuLU/uBL/ubcZF9OXbDo8ff4O8yVp5Bf0efS8uEoYo5q4Fx7dY9OgQGXgAsQA==", - "dev": true - }, - "node_modules/eslint/node_modules/escape-string-regexp": { - "version": "4.0.0", - "resolved": "https://registry.npmjs.org/escape-string-regexp/-/escape-string-regexp-4.0.0.tgz", - "integrity": "sha512-TtpcNJ3XAzx3Gq8sWRzJaVajRs0uVxA2YAkdb1jm2YkPz4G6egUFAyA3n5vtEIZefPk5Wa4UXbKuS5fKkJWdgA==", - "dev": true, - "engines": { - "node": ">=10" - }, - "funding": { - "url": "https://github.com/sponsors/sindresorhus" - } - }, - "node_modules/eslint/node_modules/globals": { - "version": "13.20.0", - "resolved": "https://registry.npmjs.org/globals/-/globals-13.20.0.tgz", - "integrity": "sha512-Qg5QtVkCy/kv3FUSlu4ukeZDVf9ee0iXLAUYX13gbR17bnejFTzr4iS9bY7kwCf1NztRNm1t91fjOiyx4CSwPQ==", - "dev": true, - "dependencies": { - "type-fest": "^0.20.2" - }, - "engines": { - "node": ">=8" - }, - "funding": { - "url": "https://github.com/sponsors/sindresorhus" - } - }, - "node_modules/eslint/node_modules/has-flag": { - "version": "4.0.0", - "resolved": "https://registry.npmjs.org/has-flag/-/has-flag-4.0.0.tgz", - "integrity": "sha512-EykJT/Q1KjTWctppgIAgfSO0tKVuZUjhgMr17kqTumMl6Afv3EISleU7qZUzoXDFTAHTDC4NOoG/ZxU3EvlMPQ==", - "dev": true, - "engines": { - "node": ">=8" - } - }, - "node_modules/eslint/node_modules/supports-color": { - "version": "7.2.0", - "resolved": "https://registry.npmjs.org/supports-color/-/supports-color-7.2.0.tgz", - "integrity": "sha512-qpCAvRl9stuOHveKsn7HncJRvv501qIacKzQlO/+Lwxc9+0q2wLyv4Dfvt80/DPn2pqOBsJdDiogXGR9+OvwRw==", - "dev": true, - "dependencies": { - "has-flag": "^4.0.0" - }, - "engines": { - "node": ">=8" - } - }, - "node_modules/espree": { - "version": "9.6.1", - "resolved": "https://registry.npmjs.org/espree/-/espree-9.6.1.tgz", - "integrity": "sha512-oruZaFkjorTpF32kDSI5/75ViwGeZginGGy2NoOSg3Q9bnwlnmDm4HLnkl0RE3n+njDXR037aY1+x58Z/zFdwQ==", - "dev": true, - "dependencies": { - "acorn": "^8.9.0", - "acorn-jsx": "^5.3.2", - "eslint-visitor-keys": "^3.4.1" - }, - "engines": { - "node": "^12.22.0 || ^14.17.0 || >=16.0.0" - }, - "funding": { - "url": "https://opencollective.com/eslint" - } - }, - "node_modules/esquery": { - "version": "1.5.0", - "resolved": "https://registry.npmjs.org/esquery/-/esquery-1.5.0.tgz", - "integrity": "sha512-YQLXUplAwJgCydQ78IMJywZCceoqk1oH01OERdSAJc/7U2AylwjhSCLDEtqwg811idIS/9fIU5GjG73IgjKMVg==", - "dev": true, - "dependencies": { - "estraverse": "^5.1.0" - }, - "engines": { - "node": ">=0.10" - } - }, - "node_modules/esrecurse": { - "version": "4.3.0", - "resolved": "https://registry.npmjs.org/esrecurse/-/esrecurse-4.3.0.tgz", - "integrity": "sha512-KmfKL3b6G+RXvP8N1vr3Tq1kL/oCFgn2NYXEtqP8/L3pKapUA4G8cFVaoF3SU323CD4XypR/ffioHmkti6/Tag==", - "dev": true, - "dependencies": { - "estraverse": "^5.2.0" - }, - "engines": { - "node": ">=4.0" - } - }, - "node_modules/estraverse": { - "version": "5.3.0", - "resolved": "https://registry.npmjs.org/estraverse/-/estraverse-5.3.0.tgz", - "integrity": "sha512-MMdARuVEQziNTeJD8DgMqmhwR11BRQ/cBP+pLtYdSTnf3MIO8fFeiINEbX36ZdNlfU/7A9f3gUw49B3oQsvwBA==", - "dev": true, - "engines": { - "node": ">=4.0" - } - }, - "node_modules/esutils": { - "version": "2.0.3", - "resolved": "https://registry.npmjs.org/esutils/-/esutils-2.0.3.tgz", - "integrity": "sha512-kVscqXk4OCp68SZ0dkgEKVi6/8ij300KBWTJq32P/dYeWTSwK41WyTxalN1eRmA5Z9UU/LX9D7FWSmV9SAYx6g==", - "dev": true, - "engines": { - "node": ">=0.10.0" - } - }, - "node_modules/fast-deep-equal": { - "version": "3.1.3", - "resolved": "https://registry.npmjs.org/fast-deep-equal/-/fast-deep-equal-3.1.3.tgz", - "integrity": "sha512-f3qQ9oQy9j2AhBe/H9VC91wLmKBCCU/gDOnKNAYG5hswO7BLKj09Hc5HYNz9cGI++xlpDCIgDaitVs03ATR84Q==", - "dev": true - }, - "node_modules/fast-json-stable-stringify": { - "version": "2.1.0", - "resolved": "https://registry.npmjs.org/fast-json-stable-stringify/-/fast-json-stable-stringify-2.1.0.tgz", - "integrity": "sha512-lhd/wF+Lk98HZoTCtlVraHtfh5XYijIjalXck7saUtuanSDyLMxnHhSXEDJqHxD7msR8D0uCmqlkwjCV8xvwHw==", - "dev": true - }, - "node_modules/fast-levenshtein": { - "version": "2.0.6", - "resolved": "https://registry.npmjs.org/fast-levenshtein/-/fast-levenshtein-2.0.6.tgz", - "integrity": "sha512-DCXu6Ifhqcks7TZKY3Hxp3y6qphY5SJZmrWMDrKcERSOXWQdMhU9Ig/PYrzyw/ul9jOIyh0N4M0tbC5hodg8dw==", - "dev": true - }, - "node_modules/fastq": { - "version": "1.15.0", - "resolved": "https://registry.npmjs.org/fastq/-/fastq-1.15.0.tgz", - "integrity": "sha512-wBrocU2LCXXa+lWBt8RoIRD89Fi8OdABODa/kEnyeyjS5aZO5/GNvI5sEINADqP/h8M29UHTHUb53sUu5Ihqdw==", - "dev": true, - "dependencies": { - "reusify": "^1.0.4" - } - }, - "node_modules/file-entry-cache": { - "version": "6.0.1", - "resolved": "https://registry.npmjs.org/file-entry-cache/-/file-entry-cache-6.0.1.tgz", - "integrity": "sha512-7Gps/XWymbLk2QLYK4NzpMOrYjMhdIxXuIvy2QBsLE6ljuodKvdkWs/cpyJJ3CVIVpH0Oi1Hvg1ovbMzLdFBBg==", - "dev": true, - "dependencies": { - "flat-cache": "^3.0.4" - }, - "engines": { - "node": "^10.12.0 || >=12.0.0" - } - }, - "node_modules/find-root": { - "version": "1.1.0", - "resolved": "https://registry.npmjs.org/find-root/-/find-root-1.1.0.tgz", - "integrity": "sha512-NKfW6bec6GfKc0SGx1e07QZY9PE99u0Bft/0rzSD5k3sO/vwkVUpDUKVm5Gpp5Ue3YfShPFTX2070tDs5kB9Ng==" - }, - "node_modules/find-up": { - "version": "5.0.0", - "resolved": "https://registry.npmjs.org/find-up/-/find-up-5.0.0.tgz", - "integrity": "sha512-78/PXT1wlLLDgTzDs7sjq9hzz0vXD+zn+7wypEe4fXQxCmdmqfGsEPQxmiCSQI3ajFV91bVSsvNtrJRiW6nGng==", - "dev": true, - "dependencies": { - "locate-path": "^6.0.0", - "path-exists": "^4.0.0" - }, - "engines": { - "node": ">=10" - }, - "funding": { - "url": "https://github.com/sponsors/sindresorhus" - } - }, - "node_modules/flat-cache": { - "version": "3.0.4", - "resolved": "https://registry.npmjs.org/flat-cache/-/flat-cache-3.0.4.tgz", - "integrity": "sha512-dm9s5Pw7Jc0GvMYbshN6zchCA9RgQlzzEZX3vylR9IqFfS8XciblUXOKfW6SiuJ0e13eDYZoZV5wdrev7P3Nwg==", - "dev": true, - "dependencies": { - "flatted": "^3.1.0", - "rimraf": "^3.0.2" - }, - "engines": { - "node": "^10.12.0 || >=12.0.0" - } - }, - "node_modules/flatted": { - "version": "3.2.7", - "resolved": "https://registry.npmjs.org/flatted/-/flatted-3.2.7.tgz", - "integrity": "sha512-5nqDSxl8nn5BSNxyR3n4I6eDmbolI6WT+QqR547RwxQapgjQBmtktdP+HTBb/a/zLsbzERTONyUB5pefh5TtjQ==", - "dev": true - }, - "node_modules/focus-lock": { - "version": "0.11.6", - "resolved": "https://registry.npmjs.org/focus-lock/-/focus-lock-0.11.6.tgz", - "integrity": "sha512-KSuV3ur4gf2KqMNoZx3nXNVhqCkn42GuTYCX4tXPEwf0MjpFQmNMiN6m7dXaUXgIoivL6/65agoUMg4RLS0Vbg==", - "dependencies": { - "tslib": "^2.0.3" - }, - "engines": { - "node": ">=10" - } - }, - "node_modules/for-each": { - "version": "0.3.3", - "resolved": "https://registry.npmjs.org/for-each/-/for-each-0.3.3.tgz", - "integrity": "sha512-jqYfLp7mo9vIyQf8ykW2v7A+2N4QjeCeI5+Dz9XraiO1ign81wjiH7Fb9vSOWvQfNtmSa4H2RoQTrrXivdUZmw==", - "dev": true, - "dependencies": { - "is-callable": "^1.1.3" - } - }, - "node_modules/framer-motion": { - "version": "10.12.21", - "resolved": "https://registry.npmjs.org/framer-motion/-/framer-motion-10.12.21.tgz", - "integrity": "sha512-EmnP73O5+1OGm2jtQNoBPPuAJvhySl+p4/9PL7PPJHt58nkPWeFaxhCJaUDXDf6N3jSLluefxopc0FrMCQ+/tQ==", - "dependencies": { - "tslib": "^2.4.0" - }, - "optionalDependencies": { - "@emotion/is-prop-valid": "^0.8.2" - }, - "peerDependencies": { - "react": "^18.0.0", - "react-dom": "^18.0.0" - }, - "peerDependenciesMeta": { - "react": { - "optional": true - }, - "react-dom": { - "optional": true - } - } - }, - "node_modules/framer-motion/node_modules/@emotion/is-prop-valid": { - "version": "0.8.8", - "resolved": "https://registry.npmjs.org/@emotion/is-prop-valid/-/is-prop-valid-0.8.8.tgz", - "integrity": "sha512-u5WtneEAr5IDG2Wv65yhunPSMLIpuKsbuOktRojfrEiEvRyC85LgPMZI63cr7NUqT8ZIGdSVg8ZKGxIug4lXcA==", - "optional": true, - "dependencies": { - "@emotion/memoize": "0.7.4" - } - }, - "node_modules/framer-motion/node_modules/@emotion/memoize": { - "version": "0.7.4", - "resolved": "https://registry.npmjs.org/@emotion/memoize/-/memoize-0.7.4.tgz", - "integrity": "sha512-Ja/Vfqe3HpuzRsG1oBtWTHk2PGZ7GR+2Vz5iYGelAw8dx32K0y7PjVuxK6z1nMpZOqAFsRUPCkK1YjJ56qJlgw==", - "optional": true - }, - "node_modules/framesync": { - "version": "6.1.2", - "resolved": "https://registry.npmjs.org/framesync/-/framesync-6.1.2.tgz", - "integrity": "sha512-jBTqhX6KaQVDyus8muwZbBeGGP0XgujBRbQ7gM7BRdS3CadCZIHiawyzYLnafYcvZIh5j8WE7cxZKFn7dXhu9g==", - "dependencies": { - "tslib": "2.4.0" - } - }, - "node_modules/framesync/node_modules/tslib": { - "version": "2.4.0", - "resolved": "https://registry.npmjs.org/tslib/-/tslib-2.4.0.tgz", - "integrity": "sha512-d6xOpEDfsi2CZVlPQzGeux8XMwLT9hssAsaPYExaQMuYskwb+x1x7J371tWlbBdWHroy99KnVB6qIkUbs5X3UQ==" - }, - "node_modules/fs.realpath": { - "version": "1.0.0", - "resolved": "https://registry.npmjs.org/fs.realpath/-/fs.realpath-1.0.0.tgz", - "integrity": "sha512-OO0pH2lK6a0hZnAdau5ItzHPI6pUlvI7jMVnxUQRtw4owF2wk8lOSabtGDCTP4Ggrg2MbGnWO9X8K1t4+fGMDw==", - "dev": true - }, - "node_modules/fsevents": { - "version": "2.3.2", - "resolved": "https://registry.npmjs.org/fsevents/-/fsevents-2.3.2.tgz", - "integrity": "sha512-xiqMQR4xAeHTuB9uWm+fFRcIOgKBMiOBP+eXiyT7jsgVCq1bkVygt00oASowB7EdtpOHaaPgKt812P9ab+DDKA==", - "dev": true, - "hasInstallScript": true, - "optional": true, - "os": [ - "darwin" - ], - "engines": { - "node": "^8.16.0 || ^10.6.0 || >=11.0.0" - } - }, - "node_modules/function-bind": { - "version": "1.1.1", - "resolved": "https://registry.npmjs.org/function-bind/-/function-bind-1.1.1.tgz", - "integrity": "sha512-yIovAzMX49sF8Yl58fSCWJ5svSLuaibPxXQJFLmBObTuCr0Mf1KiPopGM9NiFjiYBCbfaa2Fh6breQ6ANVTI0A==" - }, - "node_modules/function.prototype.name": { - "version": "1.1.5", - "resolved": "https://registry.npmjs.org/function.prototype.name/-/function.prototype.name-1.1.5.tgz", - "integrity": "sha512-uN7m/BzVKQnCUF/iW8jYea67v++2u7m5UgENbHRtdDVclOUP+FMPlCNdmk0h/ysGyo2tavMJEDqJAkJdRa1vMA==", - "dev": true, - "dependencies": { - "call-bind": "^1.0.2", - "define-properties": "^1.1.3", - "es-abstract": "^1.19.0", - "functions-have-names": "^1.2.2" - }, - "engines": { - "node": ">= 0.4" - }, - "funding": { - "url": "https://github.com/sponsors/ljharb" - } - }, - "node_modules/functions-have-names": { - "version": "1.2.3", - "resolved": "https://registry.npmjs.org/functions-have-names/-/functions-have-names-1.2.3.tgz", - "integrity": "sha512-xckBUXyTIqT97tq2x2AMb+g163b5JFysYk0x4qxNFwbfQkmNZoiRHb6sPzI9/QV33WeuvVYBUIiD4NzNIyqaRQ==", - "dev": true, - "funding": { - "url": "https://github.com/sponsors/ljharb" - } - }, - "node_modules/gensync": { - "version": "1.0.0-beta.2", - "resolved": "https://registry.npmjs.org/gensync/-/gensync-1.0.0-beta.2.tgz", - "integrity": "sha512-3hN7NaskYvMDLQY55gnW3NQ+mesEAepTqlg+VEbj7zzqEMBVNhzcGYYeqFo/TlYz6eQiFcp1HcsCZO+nGgS8zg==", - "dev": true, - "engines": { - "node": ">=6.9.0" - } - }, - "node_modules/get-intrinsic": { - "version": "1.2.1", - "resolved": "https://registry.npmjs.org/get-intrinsic/-/get-intrinsic-1.2.1.tgz", - "integrity": "sha512-2DcsyfABl+gVHEfCOaTrWgyt+tb6MSEGmKq+kI5HwLbIYgjgmMcV8KQ41uaKz1xxUcn9tJtgFbQUEVcEbd0FYw==", - "dev": true, - "dependencies": { - "function-bind": "^1.1.1", - "has": "^1.0.3", - "has-proto": "^1.0.1", - "has-symbols": "^1.0.3" - }, - "funding": { - "url": "https://github.com/sponsors/ljharb" - } - }, - "node_modules/get-nonce": { - "version": "1.0.1", - "resolved": "https://registry.npmjs.org/get-nonce/-/get-nonce-1.0.1.tgz", - "integrity": "sha512-FJhYRoDaiatfEkUK8HKlicmu/3SGFD51q3itKDGoSTysQJBnfOcxU5GxnhE1E6soB76MbT0MBtnKJuXyAx+96Q==", - "engines": { - "node": ">=6" - } - }, - "node_modules/get-symbol-description": { - "version": "1.0.0", - "resolved": "https://registry.npmjs.org/get-symbol-description/-/get-symbol-description-1.0.0.tgz", - "integrity": "sha512-2EmdH1YvIQiZpltCNgkuiUnyukzxM/R6NDJX31Ke3BG1Nq5b0S2PhX59UKi9vZpPDQVdqn+1IcaAwnzTT5vCjw==", - "dev": true, - "dependencies": { - "call-bind": "^1.0.2", - "get-intrinsic": "^1.1.1" - }, - "engines": { - "node": ">= 0.4" - }, - "funding": { - "url": "https://github.com/sponsors/ljharb" - } - }, - "node_modules/glob": { - "version": "7.2.3", - "resolved": "https://registry.npmjs.org/glob/-/glob-7.2.3.tgz", - "integrity": "sha512-nFR0zLpU2YCaRxwoCJvL6UvCH2JFyFVIvwTLsIf21AuHlMskA1hhTdk+LlYJtOlYt9v6dvszD2BGRqBL+iQK9Q==", - "dev": true, - "dependencies": { - "fs.realpath": "^1.0.0", - "inflight": "^1.0.4", - "inherits": "2", - "minimatch": "^3.1.1", - "once": "^1.3.0", - "path-is-absolute": "^1.0.0" - }, - "engines": { - "node": "*" - }, - "funding": { - "url": "https://github.com/sponsors/isaacs" - } - }, - "node_modules/glob-parent": { - "version": "6.0.2", - "resolved": "https://registry.npmjs.org/glob-parent/-/glob-parent-6.0.2.tgz", - "integrity": "sha512-XxwI8EOhVQgWp6iDL+3b0r86f4d6AX6zSU55HfB4ydCEuXLXc5FcYeOu+nnGftS4TEju/11rt4KJPTMgbfmv4A==", - "dev": true, - "dependencies": { - "is-glob": "^4.0.3" - }, - "engines": { - "node": ">=10.13.0" - } - }, - "node_modules/globals": { - "version": "11.12.0", - "resolved": "https://registry.npmjs.org/globals/-/globals-11.12.0.tgz", - "integrity": "sha512-WOBp/EEGUiIsJSp7wcv/y6MO+lV9UoncWqxuFfm8eBwzWNgyfBd6Gz+IeKQ9jCmyhoH99g15M3T+QaVHFjizVA==", - "dev": true, - "engines": { - "node": ">=4" - } - }, - "node_modules/globalthis": { - "version": "1.0.3", - "resolved": "https://registry.npmjs.org/globalthis/-/globalthis-1.0.3.tgz", - "integrity": "sha512-sFdI5LyBiNTHjRd7cGPWapiHWMOXKyuBNX/cWJ3NfzrZQVa8GI/8cofCl74AOVqq9W5kNmguTIzJ/1s2gyI9wA==", - "dev": true, - "dependencies": { - "define-properties": "^1.1.3" - }, - "engines": { - "node": ">= 0.4" - }, - "funding": { - "url": "https://github.com/sponsors/ljharb" - } - }, - "node_modules/gopd": { - "version": "1.0.1", - "resolved": "https://registry.npmjs.org/gopd/-/gopd-1.0.1.tgz", - "integrity": "sha512-d65bNlIadxvpb/A2abVdlqKqV563juRnZ1Wtk6s1sIR8uNsXR70xqIzVqxVf1eTqDunwT2MkczEeaezCKTZhwA==", - "dev": true, - "dependencies": { - "get-intrinsic": "^1.1.3" - }, - "funding": { - "url": "https://github.com/sponsors/ljharb" - } - }, - "node_modules/graphemer": { - "version": "1.4.0", - "resolved": "https://registry.npmjs.org/graphemer/-/graphemer-1.4.0.tgz", - "integrity": "sha512-EtKwoO6kxCL9WO5xipiHTZlSzBm7WLT627TqC/uVRd0HKmq8NXyebnNYxDoBi7wt8eTWrUrKXCOVaFq9x1kgag==", - "dev": true - }, - "node_modules/hamt_plus": { - "version": "1.0.2", - "resolved": "https://registry.npmjs.org/hamt_plus/-/hamt_plus-1.0.2.tgz", - "integrity": "sha512-t2JXKaehnMb9paaYA7J0BX8QQAY8lwfQ9Gjf4pg/mk4krt+cmwmU652HOoWonf+7+EQV97ARPMhhVgU1ra2GhA==" - }, - "node_modules/has": { - "version": "1.0.3", - "resolved": "https://registry.npmjs.org/has/-/has-1.0.3.tgz", - "integrity": "sha512-f2dvO0VU6Oej7RkWJGrehjbzMAjFp5/VKPp5tTpWIV4JHHZK1/BxbFRtf/siA2SWTe09caDmVtYYzWEIbBS4zw==", - "dependencies": { - "function-bind": "^1.1.1" - }, - "engines": { - "node": ">= 0.4.0" - } - }, - "node_modules/has-bigints": { - "version": "1.0.2", - "resolved": "https://registry.npmjs.org/has-bigints/-/has-bigints-1.0.2.tgz", - "integrity": "sha512-tSvCKtBr9lkF0Ex0aQiP9N+OpV4zi2r/Nee5VkRDbaqv35RLYMzbwQfFSZZH0kR+Rd6302UJZ2p/bJCEoR3VoQ==", - "dev": true, - "funding": { - "url": "https://github.com/sponsors/ljharb" - } - }, - "node_modules/has-flag": { - "version": "3.0.0", - "resolved": "https://registry.npmjs.org/has-flag/-/has-flag-3.0.0.tgz", - "integrity": "sha512-sKJf1+ceQBr4SMkvQnBDNDtf4TXpVhVGateu0t918bl30FnbE2m4vNLX+VWe/dpjlb+HugGYzW7uQXH98HPEYw==", - "engines": { - "node": ">=4" - } - }, - "node_modules/has-property-descriptors": { - "version": "1.0.0", - "resolved": "https://registry.npmjs.org/has-property-descriptors/-/has-property-descriptors-1.0.0.tgz", - "integrity": "sha512-62DVLZGoiEBDHQyqG4w9xCuZ7eJEwNmJRWw2VY84Oedb7WFcA27fiEVe8oUQx9hAUJ4ekurquucTGwsyO1XGdQ==", - "dev": true, - "dependencies": { - "get-intrinsic": "^1.1.1" - }, - "funding": { - "url": "https://github.com/sponsors/ljharb" - } - }, - "node_modules/has-proto": { - "version": "1.0.1", - "resolved": "https://registry.npmjs.org/has-proto/-/has-proto-1.0.1.tgz", - "integrity": "sha512-7qE+iP+O+bgF9clE5+UoBFzE65mlBiVj3tKCrlNQ0Ogwm0BjpT/gK4SlLYDMybDh5I3TCTKnPPa0oMG7JDYrhg==", - "dev": true, - "engines": { - "node": ">= 0.4" - }, - "funding": { - "url": "https://github.com/sponsors/ljharb" - } - }, - "node_modules/has-symbols": { - "version": "1.0.3", - "resolved": "https://registry.npmjs.org/has-symbols/-/has-symbols-1.0.3.tgz", - "integrity": "sha512-l3LCuF6MgDNwTDKkdYGEihYjt5pRPbEg46rtlmnSPlUbgmB8LOIrKJbYYFBSbnPaJexMKtiPO8hmeRjRz2Td+A==", - "dev": true, - "engines": { - "node": ">= 0.4" - }, - "funding": { - "url": "https://github.com/sponsors/ljharb" - } - }, - "node_modules/has-tostringtag": { - "version": "1.0.0", - "resolved": "https://registry.npmjs.org/has-tostringtag/-/has-tostringtag-1.0.0.tgz", - "integrity": "sha512-kFjcSNhnlGV1kyoGk7OXKSawH5JOb/LzUc5w9B02hOTO0dfFRjbHQKvg1d6cf3HbeUmtU9VbbV3qzZ2Teh97WQ==", - "dev": true, - "dependencies": { - "has-symbols": "^1.0.2" - }, - "engines": { - "node": ">= 0.4" - }, - "funding": { - "url": "https://github.com/sponsors/ljharb" - } - }, - "node_modules/hoist-non-react-statics": { - "version": "3.3.2", - "resolved": "https://registry.npmjs.org/hoist-non-react-statics/-/hoist-non-react-statics-3.3.2.tgz", - "integrity": "sha512-/gGivxi8JPKWNm/W0jSmzcMPpfpPLc3dY/6GxhX2hQ9iGj3aDfklV4ET7NjKpSinLpJ5vafa9iiGIEZg10SfBw==", - "dependencies": { - "react-is": "^16.7.0" - } - }, - "node_modules/ignore": { - "version": "5.2.4", - "resolved": "https://registry.npmjs.org/ignore/-/ignore-5.2.4.tgz", - "integrity": "sha512-MAb38BcSbH0eHNBxn7ql2NH/kX33OkB3lZ1BNdh7ENeRChHTYsTvWrMubiIAMNS2llXEEgZ1MUOBtXChP3kaFQ==", - "dev": true, - "engines": { - "node": ">= 4" - } - }, - "node_modules/import-fresh": { - "version": "3.3.0", - "resolved": "https://registry.npmjs.org/import-fresh/-/import-fresh-3.3.0.tgz", - "integrity": "sha512-veYYhQa+D1QBKznvhUHxb8faxlrwUnxseDAbAp457E0wLNio2bOSKnjYDhMj+YiAq61xrMGhQk9iXVk5FzgQMw==", - "dependencies": { - "parent-module": "^1.0.0", - "resolve-from": "^4.0.0" - }, - "engines": { - "node": ">=6" - }, - "funding": { - "url": "https://github.com/sponsors/sindresorhus" - } - }, - "node_modules/imurmurhash": { - "version": "0.1.4", - "resolved": "https://registry.npmjs.org/imurmurhash/-/imurmurhash-0.1.4.tgz", - "integrity": "sha512-JmXMZ6wuvDmLiHEml9ykzqO6lwFbof0GG4IkcGaENdCRDDmMVnny7s5HsIgHCbaq0w2MyPhDqkhTUgS2LU2PHA==", - "dev": true, - "engines": { - "node": ">=0.8.19" - } - }, - "node_modules/inflight": { - "version": "1.0.6", - "resolved": "https://registry.npmjs.org/inflight/-/inflight-1.0.6.tgz", - "integrity": "sha512-k92I/b08q4wvFscXCLvqfsHCrjrF7yiXsQuIVvVE7N82W3+aqpzuUdBbfhWcy/FZR3/4IgflMgKLOsvPDrGCJA==", - "dev": true, - "dependencies": { - "once": "^1.3.0", - "wrappy": "1" - } - }, - "node_modules/inherits": { - "version": "2.0.4", - "resolved": "https://registry.npmjs.org/inherits/-/inherits-2.0.4.tgz", - "integrity": "sha512-k/vGaX4/Yla3WzyMCvTQOXYeIHvqOKtnqBduzTHpzpQZzAskKMhZ2K+EnBiSM9zGSoIFeMpXKxa4dYeZIQqewQ==", - "dev": true - }, - "node_modules/internal-slot": { - "version": "1.0.5", - "resolved": "https://registry.npmjs.org/internal-slot/-/internal-slot-1.0.5.tgz", - "integrity": "sha512-Y+R5hJrzs52QCG2laLn4udYVnxsfny9CpOhNhUvk/SSSVyF6T27FzRbF0sroPidSu3X8oEAkOn2K804mjpt6UQ==", - "dev": true, - "dependencies": { - "get-intrinsic": "^1.2.0", - "has": "^1.0.3", - "side-channel": "^1.0.4" - }, - "engines": { - "node": ">= 0.4" - } - }, - "node_modules/invariant": { - "version": "2.2.4", - "resolved": "https://registry.npmjs.org/invariant/-/invariant-2.2.4.tgz", - "integrity": "sha512-phJfQVBuaJM5raOpJjSfkiD6BpbCE4Ns//LaXl6wGYtUBY83nWS6Rf9tXm2e8VaK60JEjYldbPif/A2B1C2gNA==", - "dependencies": { - "loose-envify": "^1.0.0" - } - }, - "node_modules/is-array-buffer": { - "version": "3.0.2", - "resolved": "https://registry.npmjs.org/is-array-buffer/-/is-array-buffer-3.0.2.tgz", - "integrity": "sha512-y+FyyR/w8vfIRq4eQcM1EYgSTnmHXPqaF+IgzgraytCFq5Xh8lllDVmAZolPJiZttZLeFSINPYMaEJ7/vWUa1w==", - "dev": true, - "dependencies": { - "call-bind": "^1.0.2", - "get-intrinsic": "^1.2.0", - "is-typed-array": "^1.1.10" - }, - "funding": { - "url": "https://github.com/sponsors/ljharb" - } - }, - "node_modules/is-arrayish": { - "version": "0.2.1", - "resolved": "https://registry.npmjs.org/is-arrayish/-/is-arrayish-0.2.1.tgz", - "integrity": "sha512-zz06S8t0ozoDXMG+ube26zeCTNXcKIPJZJi8hBrF4idCLms4CG9QtK7qBl1boi5ODzFpjswb5JPmHCbMpjaYzg==" - }, - "node_modules/is-bigint": { - "version": "1.0.4", - "resolved": "https://registry.npmjs.org/is-bigint/-/is-bigint-1.0.4.tgz", - "integrity": "sha512-zB9CruMamjym81i2JZ3UMn54PKGsQzsJeo6xvN3HJJ4CAsQNB6iRutp2To77OfCNuoxspsIhzaPoO1zyCEhFOg==", - "dev": true, - "dependencies": { - "has-bigints": "^1.0.1" - }, - "funding": { - "url": "https://github.com/sponsors/ljharb" - } - }, - "node_modules/is-boolean-object": { - "version": "1.1.2", - "resolved": "https://registry.npmjs.org/is-boolean-object/-/is-boolean-object-1.1.2.tgz", - "integrity": "sha512-gDYaKHJmnj4aWxyj6YHyXVpdQawtVLHU5cb+eztPGczf6cjuTdwve5ZIEfgXqH4e57An1D1AKf8CZ3kYrQRqYA==", - "dev": true, - "dependencies": { - "call-bind": "^1.0.2", - "has-tostringtag": "^1.0.0" - }, - "engines": { - "node": ">= 0.4" - }, - "funding": { - "url": "https://github.com/sponsors/ljharb" - } - }, - "node_modules/is-callable": { - "version": "1.2.7", - "resolved": "https://registry.npmjs.org/is-callable/-/is-callable-1.2.7.tgz", - "integrity": "sha512-1BC0BVFhS/p0qtw6enp8e+8OD0UrK0oFLztSjNzhcKA3WDuJxxAPXzPuPtKkjEY9UUoEWlX/8fgKeu2S8i9JTA==", - "dev": true, - "engines": { - "node": ">= 0.4" - }, - "funding": { - "url": "https://github.com/sponsors/ljharb" - } - }, - "node_modules/is-core-module": { - "version": "2.12.1", - "resolved": "https://registry.npmjs.org/is-core-module/-/is-core-module-2.12.1.tgz", - "integrity": "sha512-Q4ZuBAe2FUsKtyQJoQHlvP8OvBERxO3jEmy1I7hcRXcJBGGHFh/aJBswbXuS9sgrDH2QUO8ilkwNPHvHMd8clg==", - "dependencies": { - "has": "^1.0.3" - }, - "funding": { - "url": "https://github.com/sponsors/ljharb" - } - }, - "node_modules/is-date-object": { - "version": "1.0.5", - "resolved": "https://registry.npmjs.org/is-date-object/-/is-date-object-1.0.5.tgz", - "integrity": "sha512-9YQaSxsAiSwcvS33MBk3wTCVnWK+HhF8VZR2jRxehM16QcVOdHqPn4VPHmRK4lSr38n9JriurInLcP90xsYNfQ==", - "dev": true, - "dependencies": { - "has-tostringtag": "^1.0.0" - }, - "engines": { - "node": ">= 0.4" - }, - "funding": { - "url": "https://github.com/sponsors/ljharb" - } - }, - "node_modules/is-extglob": { - "version": "2.1.1", - "resolved": "https://registry.npmjs.org/is-extglob/-/is-extglob-2.1.1.tgz", - "integrity": "sha512-SbKbANkN603Vi4jEZv49LeVJMn4yGwsbzZworEoyEiutsN3nJYdbO36zfhGJ6QEDpOZIFkDtnq5JRxmvl3jsoQ==", - "dev": true, - "engines": { - "node": ">=0.10.0" - } - }, - "node_modules/is-glob": { - "version": "4.0.3", - "resolved": "https://registry.npmjs.org/is-glob/-/is-glob-4.0.3.tgz", - "integrity": "sha512-xelSayHH36ZgE7ZWhli7pW34hNbNl8Ojv5KVmkJD4hBdD3th8Tfk9vYasLM+mXWOZhFkgZfxhLSnrwRr4elSSg==", - "dev": true, - "dependencies": { - "is-extglob": "^2.1.1" - }, - "engines": { - "node": ">=0.10.0" - } - }, - "node_modules/is-negative-zero": { - "version": "2.0.2", - "resolved": "https://registry.npmjs.org/is-negative-zero/-/is-negative-zero-2.0.2.tgz", - "integrity": "sha512-dqJvarLawXsFbNDeJW7zAz8ItJ9cd28YufuuFzh0G8pNHjJMnY08Dv7sYX2uF5UpQOwieAeOExEYAWWfu7ZZUA==", - "dev": true, - "engines": { - "node": ">= 0.4" - }, - "funding": { - "url": "https://github.com/sponsors/ljharb" - } - }, - "node_modules/is-number-object": { - "version": "1.0.7", - "resolved": "https://registry.npmjs.org/is-number-object/-/is-number-object-1.0.7.tgz", - "integrity": "sha512-k1U0IRzLMo7ZlYIfzRu23Oh6MiIFasgpb9X76eqfFZAqwH44UI4KTBvBYIZ1dSL9ZzChTB9ShHfLkR4pdW5krQ==", - "dev": true, - "dependencies": { - "has-tostringtag": "^1.0.0" - }, - "engines": { - "node": ">= 0.4" - }, - "funding": { - "url": "https://github.com/sponsors/ljharb" - } - }, - "node_modules/is-path-inside": { - "version": "3.0.3", - "resolved": "https://registry.npmjs.org/is-path-inside/-/is-path-inside-3.0.3.tgz", - "integrity": "sha512-Fd4gABb+ycGAmKou8eMftCupSir5lRxqf4aD/vd0cD2qc4HL07OjCeuHMr8Ro4CoMaeCKDB0/ECBOVWjTwUvPQ==", - "dev": true, - "engines": { - "node": ">=8" - } - }, - "node_modules/is-regex": { - "version": "1.1.4", - "resolved": "https://registry.npmjs.org/is-regex/-/is-regex-1.1.4.tgz", - "integrity": "sha512-kvRdxDsxZjhzUX07ZnLydzS1TU/TJlTUHHY4YLL87e37oUA49DfkLqgy+VjFocowy29cKvcSiu+kIv728jTTVg==", - "dev": true, - "dependencies": { - "call-bind": "^1.0.2", - "has-tostringtag": "^1.0.0" - }, - "engines": { - "node": ">= 0.4" - }, - "funding": { - "url": "https://github.com/sponsors/ljharb" - } - }, - "node_modules/is-shared-array-buffer": { - "version": "1.0.2", - "resolved": "https://registry.npmjs.org/is-shared-array-buffer/-/is-shared-array-buffer-1.0.2.tgz", - "integrity": "sha512-sqN2UDu1/0y6uvXyStCOzyhAjCSlHceFoMKJW8W9EU9cvic/QdsZ0kEU93HEy3IUEFZIiH/3w+AH/UQbPHNdhA==", - "dev": true, - "dependencies": { - "call-bind": "^1.0.2" - }, - "funding": { - "url": "https://github.com/sponsors/ljharb" - } - }, - "node_modules/is-string": { - "version": "1.0.7", - "resolved": "https://registry.npmjs.org/is-string/-/is-string-1.0.7.tgz", - "integrity": "sha512-tE2UXzivje6ofPW7l23cjDOMa09gb7xlAqG6jG5ej6uPV32TlWP3NKPigtaGeHNu9fohccRYvIiZMfOOnOYUtg==", - "dev": true, - "dependencies": { - "has-tostringtag": "^1.0.0" - }, - "engines": { - "node": ">= 0.4" - }, - "funding": { - "url": "https://github.com/sponsors/ljharb" - } - }, - "node_modules/is-symbol": { - "version": "1.0.4", - "resolved": "https://registry.npmjs.org/is-symbol/-/is-symbol-1.0.4.tgz", - "integrity": "sha512-C/CPBqKWnvdcxqIARxyOh4v1UUEOCHpgDa0WYgpKDFMszcrPcffg5uhwSgPCLD2WWxmq6isisz87tzT01tuGhg==", - "dev": true, - "dependencies": { - "has-symbols": "^1.0.2" - }, - "engines": { - "node": ">= 0.4" - }, - "funding": { - "url": "https://github.com/sponsors/ljharb" - } - }, - "node_modules/is-typed-array": { - "version": "1.1.10", - "resolved": "https://registry.npmjs.org/is-typed-array/-/is-typed-array-1.1.10.tgz", - "integrity": "sha512-PJqgEHiWZvMpaFZ3uTc8kHPM4+4ADTlDniuQL7cU/UDA0Ql7F70yGfHph3cLNe+c9toaigv+DFzTJKhc2CtO6A==", - "dev": true, - "dependencies": { - "available-typed-arrays": "^1.0.5", - "call-bind": "^1.0.2", - "for-each": "^0.3.3", - "gopd": "^1.0.1", - "has-tostringtag": "^1.0.0" - }, - "engines": { - "node": ">= 0.4" - }, - "funding": { - "url": "https://github.com/sponsors/ljharb" - } - }, - "node_modules/is-weakref": { - "version": "1.0.2", - "resolved": "https://registry.npmjs.org/is-weakref/-/is-weakref-1.0.2.tgz", - "integrity": "sha512-qctsuLZmIQ0+vSSMfoVvyFe2+GSEvnmZ2ezTup1SBse9+twCCeial6EEi3Nc2KFcf6+qz2FBPnjXsk8xhKSaPQ==", - "dev": true, - "dependencies": { - "call-bind": "^1.0.2" - }, - "funding": { - "url": "https://github.com/sponsors/ljharb" - } - }, - "node_modules/isexe": { - "version": "2.0.0", - "resolved": "https://registry.npmjs.org/isexe/-/isexe-2.0.0.tgz", - "integrity": "sha512-RHxMLp9lnKHGHRng9QFhRCMbYAcVpn69smSGcq3f36xjgVVWThj4qqLbTLlq7Ssj8B+fIQ1EuCEGI2lKsyQeIw==", - "dev": true - }, - "node_modules/js-tokens": { - "version": "4.0.0", - "resolved": "https://registry.npmjs.org/js-tokens/-/js-tokens-4.0.0.tgz", - "integrity": "sha512-RdJUflcE3cUzKiMqQgsCu06FPu9UdIJO0beYbPhHN4k6apgJtifcoCtT9bcxOpYBtpD2kCM6Sbzg4CausW/PKQ==" - }, - "node_modules/js-yaml": { - "version": "4.1.0", - "resolved": "https://registry.npmjs.org/js-yaml/-/js-yaml-4.1.0.tgz", - "integrity": "sha512-wpxZs9NoxZaJESJGIZTyDEaYpl0FKSA+FB9aJiyemKhMwkxQg63h4T1KJgUGHpTqPDNRcmmYLugrRjJlBtWvRA==", - "dev": true, - "dependencies": { - "argparse": "^2.0.1" - }, - "bin": { - "js-yaml": "bin/js-yaml.js" - } - }, - "node_modules/jsesc": { - "version": "2.5.2", - "resolved": "https://registry.npmjs.org/jsesc/-/jsesc-2.5.2.tgz", - "integrity": "sha512-OYu7XEzjkCQ3C5Ps3QIZsQfNpqoJyZZA99wd9aWd05NCtC5pWOkShK2mkL6HXQR6/Cy2lbNdPlZBpuQHXE63gA==", - "dev": true, - "bin": { - "jsesc": "bin/jsesc" - }, - "engines": { - "node": ">=4" - } - }, - "node_modules/json-parse-even-better-errors": { - "version": "2.3.1", - "resolved": "https://registry.npmjs.org/json-parse-even-better-errors/-/json-parse-even-better-errors-2.3.1.tgz", - "integrity": "sha512-xyFwyhro/JEof6Ghe2iz2NcXoj2sloNsWr/XsERDK/oiPCfaNhl5ONfp+jQdAZRQQ0IJWNzH9zIZF7li91kh2w==" - }, - "node_modules/json-schema-traverse": { - "version": "0.4.1", - "resolved": "https://registry.npmjs.org/json-schema-traverse/-/json-schema-traverse-0.4.1.tgz", - "integrity": "sha512-xbbCH5dCYU5T8LcEhhuh7HJ88HXuW3qsI3Y0zOZFKfZEHcpWiHU/Jxzk629Brsab/mMiHQti9wMP+845RPe3Vg==", - "dev": true - }, - "node_modules/json-stable-stringify-without-jsonify": { - "version": "1.0.1", - "resolved": "https://registry.npmjs.org/json-stable-stringify-without-jsonify/-/json-stable-stringify-without-jsonify-1.0.1.tgz", - "integrity": "sha512-Bdboy+l7tA3OGW6FjyFHWkP5LuByj1Tk33Ljyq0axyzdk9//JSi2u3fP1QSmd1KNwq6VOKYGlAu87CisVir6Pw==", - "dev": true - }, - "node_modules/json5": { - "version": "2.2.3", - "resolved": "https://registry.npmjs.org/json5/-/json5-2.2.3.tgz", - "integrity": "sha512-XmOWe7eyHYH14cLdVPoyg+GOH3rYX++KpzrylJwSW98t3Nk+U8XOl8FWKOgwtzdb8lXGf6zYwDUzeHMWfxasyg==", - "dev": true, - "bin": { - "json5": "lib/cli.js" - }, - "engines": { - "node": ">=6" - } - }, - "node_modules/jsx-ast-utils": { - "version": "3.3.4", - "resolved": "https://registry.npmjs.org/jsx-ast-utils/-/jsx-ast-utils-3.3.4.tgz", - "integrity": "sha512-fX2TVdCViod6HwKEtSWGHs57oFhVfCMwieb9PuRDgjDPh5XeqJiHFFFJCHxU5cnTc3Bu/GRL+kPiFmw8XWOfKw==", - "dev": true, - "dependencies": { - "array-includes": "^3.1.6", - "array.prototype.flat": "^1.3.1", - "object.assign": "^4.1.4", - "object.values": "^1.1.6" - }, - "engines": { - "node": ">=4.0" - } - }, - "node_modules/levn": { - "version": "0.4.1", - "resolved": "https://registry.npmjs.org/levn/-/levn-0.4.1.tgz", - "integrity": "sha512-+bT2uH4E5LGE7h/n3evcS/sQlJXCpIp6ym8OWJ5eV6+67Dsql/LaaT7qJBAt2rzfoa/5QBGBhxDix1dMt2kQKQ==", - "dev": true, - "dependencies": { - "prelude-ls": "^1.2.1", - "type-check": "~0.4.0" - }, - "engines": { - "node": ">= 0.8.0" - } - }, - "node_modules/lines-and-columns": { - "version": "1.2.4", - "resolved": "https://registry.npmjs.org/lines-and-columns/-/lines-and-columns-1.2.4.tgz", - "integrity": "sha512-7ylylesZQ/PV29jhEDl3Ufjo6ZX7gCqJr5F7PKrqc93v7fzSymt1BpwEU8nAUXs8qzzvqhbjhK5QZg6Mt/HkBg==" - }, - "node_modules/locate-path": { - "version": "6.0.0", - "resolved": "https://registry.npmjs.org/locate-path/-/locate-path-6.0.0.tgz", - "integrity": "sha512-iPZK6eYjbxRu3uB4/WZ3EsEIMJFMqAoopl3R+zuq0UjcAm/MO6KCweDgPfP3elTztoKP3KtnVHxTn2NHBSDVUw==", - "dev": true, - "dependencies": { - "p-locate": "^5.0.0" - }, - "engines": { - "node": ">=10" - }, - "funding": { - "url": "https://github.com/sponsors/sindresorhus" - } - }, - "node_modules/lodash.merge": { - "version": "4.6.2", - "resolved": "https://registry.npmjs.org/lodash.merge/-/lodash.merge-4.6.2.tgz", - "integrity": "sha512-0KpjqXRVvrYyCsX1swR/XTK0va6VQkQM6MNo7PqW77ByjAhoARA8EfrP1N4+KlKj8YS0ZUCtRT/YUuhyYDujIQ==", - "dev": true - }, - "node_modules/lodash.mergewith": { - "version": "4.6.2", - "resolved": "https://registry.npmjs.org/lodash.mergewith/-/lodash.mergewith-4.6.2.tgz", - "integrity": "sha512-GK3g5RPZWTRSeLSpgP8Xhra+pnjBC56q9FZYe1d5RN3TJ35dbkGy3YqBSMbyCrlbi+CM9Z3Jk5yTL7RCsqboyQ==" - }, - "node_modules/loose-envify": { - "version": "1.4.0", - "resolved": "https://registry.npmjs.org/loose-envify/-/loose-envify-1.4.0.tgz", - "integrity": "sha512-lyuxPGr/Wfhrlem2CL/UcnUc1zcqKAImBDzukY7Y5F/yQiNdko6+fRLevlw1HgMySw7f611UIY408EtxRSoK3Q==", - "dependencies": { - "js-tokens": "^3.0.0 || ^4.0.0" - }, - "bin": { - "loose-envify": "cli.js" - } - }, - "node_modules/lru-cache": { - "version": "5.1.1", - "resolved": "https://registry.npmjs.org/lru-cache/-/lru-cache-5.1.1.tgz", - "integrity": "sha512-KpNARQA3Iwv+jTA0utUVVbrh+Jlrr1Fv0e56GGzAFOXN7dk/FviaDW8LHmK52DlcH4WP2n6gI8vN1aesBFgo9w==", - "dev": true, - "dependencies": { - "yallist": "^3.0.2" - } - }, - "node_modules/minimatch": { - "version": "3.1.2", - "resolved": "https://registry.npmjs.org/minimatch/-/minimatch-3.1.2.tgz", - "integrity": "sha512-J7p63hRiAjw1NDEww1W7i37+ByIrOWO5XQQAzZ3VOcL0PNybwpfmV/N05zFAzwQ9USyEcX6t3UO+K5aqBQOIHw==", - "dev": true, - "dependencies": { - "brace-expansion": "^1.1.7" - }, - "engines": { - "node": "*" - } - }, - "node_modules/ms": { - "version": "2.1.2", - "resolved": "https://registry.npmjs.org/ms/-/ms-2.1.2.tgz", - "integrity": "sha512-sGkPx+VjMtmA6MX27oA4FBFELFCZZ4S4XqeGOXCv68tT+jb3vk/RyaKWP0PTKyWtmLSM0b+adUTEvbs1PEaH2w==" - }, - "node_modules/nanoid": { - "version": "3.3.6", - "resolved": "https://registry.npmjs.org/nanoid/-/nanoid-3.3.6.tgz", - "integrity": "sha512-BGcqMMJuToF7i1rt+2PWSNVnWIkGCU78jBG3RxO/bZlnZPK2Cmi2QaffxGO/2RvWi9sL+FAiRiXMgsyxQ1DIDA==", - "dev": true, - "funding": [ - { - "type": "github", - "url": "https://github.com/sponsors/ai" - } - ], - "bin": { - "nanoid": "bin/nanoid.cjs" - }, - "engines": { - "node": "^10 || ^12 || ^13.7 || ^14 || >=15.0.1" - } - }, - "node_modules/natural-compare": { - "version": "1.4.0", - "resolved": "https://registry.npmjs.org/natural-compare/-/natural-compare-1.4.0.tgz", - "integrity": "sha512-OWND8ei3VtNC9h7V60qff3SVobHr996CTwgxubgyQYEpg290h9J0buyECNNJexkFm5sOajh5G116RYA1c8ZMSw==", - "dev": true - }, - "node_modules/node-releases": { - "version": "2.0.13", - "resolved": "https://registry.npmjs.org/node-releases/-/node-releases-2.0.13.tgz", - "integrity": "sha512-uYr7J37ae/ORWdZeQ1xxMJe3NtdmqMC/JZK+geofDrkLUApKRHPd18/TxtBOJ4A0/+uUIliorNrfYV6s1b02eQ==", - "dev": true - }, - "node_modules/object-assign": { - "version": "4.1.1", - "resolved": "https://registry.npmjs.org/object-assign/-/object-assign-4.1.1.tgz", - "integrity": "sha512-rJgTQnkUnH1sFw8yT6VSU3zD3sWmu6sZhIseY8VX+GRu3P6F7Fu+JNDoXfklElbLJSnc3FUQHVe4cU5hj+BcUg==", - "engines": { - "node": ">=0.10.0" - } - }, - "node_modules/object-inspect": { - "version": "1.12.3", - "resolved": "https://registry.npmjs.org/object-inspect/-/object-inspect-1.12.3.tgz", - "integrity": "sha512-geUvdk7c+eizMNUDkRpW1wJwgfOiOeHbxBR/hLXK1aT6zmVSO0jsQcs7fj6MGw89jC/cjGfLcNOrtMYtGqm81g==", - "dev": true, - "funding": { - "url": "https://github.com/sponsors/ljharb" - } - }, - "node_modules/object-keys": { - "version": "1.1.1", - "resolved": "https://registry.npmjs.org/object-keys/-/object-keys-1.1.1.tgz", - "integrity": "sha512-NuAESUOUMrlIXOfHKzD6bpPu3tYt3xvjNdRIQ+FeT0lNb4K8WR70CaDxhuNguS2XG+GjkyMwOzsN5ZktImfhLA==", - "dev": true, - "engines": { - "node": ">= 0.4" - } - }, - "node_modules/object.assign": { - "version": "4.1.4", - "resolved": "https://registry.npmjs.org/object.assign/-/object.assign-4.1.4.tgz", - "integrity": "sha512-1mxKf0e58bvyjSCtKYY4sRe9itRk3PJpquJOjeIkz885CczcI4IvJJDLPS72oowuSh+pBxUFROpX+TU++hxhZQ==", - "dev": true, - "dependencies": { - "call-bind": "^1.0.2", - "define-properties": "^1.1.4", - "has-symbols": "^1.0.3", - "object-keys": "^1.1.1" - }, - "engines": { - "node": ">= 0.4" - }, - "funding": { - "url": "https://github.com/sponsors/ljharb" - } - }, - "node_modules/object.entries": { - "version": "1.1.6", - "resolved": "https://registry.npmjs.org/object.entries/-/object.entries-1.1.6.tgz", - "integrity": "sha512-leTPzo4Zvg3pmbQ3rDK69Rl8GQvIqMWubrkxONG9/ojtFE2rD9fjMKfSI5BxW3osRH1m6VdzmqK8oAY9aT4x5w==", - "dev": true, - "dependencies": { - "call-bind": "^1.0.2", - "define-properties": "^1.1.4", - "es-abstract": "^1.20.4" - }, - "engines": { - "node": ">= 0.4" - } - }, - "node_modules/object.fromentries": { - "version": "2.0.6", - "resolved": "https://registry.npmjs.org/object.fromentries/-/object.fromentries-2.0.6.tgz", - "integrity": "sha512-VciD13dswC4j1Xt5394WR4MzmAQmlgN72phd/riNp9vtD7tp4QQWJ0R4wvclXcafgcYK8veHRed2W6XeGBvcfg==", - "dev": true, - "dependencies": { - "call-bind": "^1.0.2", - "define-properties": "^1.1.4", - "es-abstract": "^1.20.4" - }, - "engines": { - "node": ">= 0.4" - }, - "funding": { - "url": "https://github.com/sponsors/ljharb" - } - }, - "node_modules/object.hasown": { - "version": "1.1.2", - "resolved": "https://registry.npmjs.org/object.hasown/-/object.hasown-1.1.2.tgz", - "integrity": "sha512-B5UIT3J1W+WuWIU55h0mjlwaqxiE5vYENJXIXZ4VFe05pNYrkKuK0U/6aFcb0pKywYJh7IhfoqUfKVmrJJHZHw==", - "dev": true, - "dependencies": { - "define-properties": "^1.1.4", - "es-abstract": "^1.20.4" - }, - "funding": { - "url": "https://github.com/sponsors/ljharb" - } - }, - "node_modules/object.values": { - "version": "1.1.6", - "resolved": "https://registry.npmjs.org/object.values/-/object.values-1.1.6.tgz", - "integrity": "sha512-FVVTkD1vENCsAcwNs9k6jea2uHC/X0+JcjG8YA60FN5CMaJmG95wT9jek/xX9nornqGRrBkKtzuAu2wuHpKqvw==", - "dev": true, - "dependencies": { - "call-bind": "^1.0.2", - "define-properties": "^1.1.4", - "es-abstract": "^1.20.4" - }, - "engines": { - "node": ">= 0.4" - }, - "funding": { - "url": "https://github.com/sponsors/ljharb" - } - }, - "node_modules/once": { - "version": "1.4.0", - "resolved": "https://registry.npmjs.org/once/-/once-1.4.0.tgz", - "integrity": "sha512-lNaJgI+2Q5URQBkccEKHTQOPaXdUxnZZElQTZY0MFUAuaEqe1E+Nyvgdz/aIyNi6Z9MzO5dv1H8n58/GELp3+w==", - "dev": true, - "dependencies": { - "wrappy": "1" - } - }, - "node_modules/optionator": { - "version": "0.9.3", - "resolved": "https://registry.npmjs.org/optionator/-/optionator-0.9.3.tgz", - "integrity": "sha512-JjCoypp+jKn1ttEFExxhetCKeJt9zhAgAve5FXHixTvFDW/5aEktX9bufBKLRRMdU7bNtpLfcGu94B3cdEJgjg==", - "dev": true, - "dependencies": { - "@aashutoshrathi/word-wrap": "^1.2.3", - "deep-is": "^0.1.3", - "fast-levenshtein": "^2.0.6", - "levn": "^0.4.1", - "prelude-ls": "^1.2.1", - "type-check": "^0.4.0" - }, - "engines": { - "node": ">= 0.8.0" - } - }, - "node_modules/p-limit": { - "version": "3.1.0", - "resolved": "https://registry.npmjs.org/p-limit/-/p-limit-3.1.0.tgz", - "integrity": "sha512-TYOanM3wGwNGsZN2cVTYPArw454xnXj5qmWF1bEoAc4+cU/ol7GVh7odevjp1FNHduHc3KZMcFduxU5Xc6uJRQ==", - "dev": true, - "dependencies": { - "yocto-queue": "^0.1.0" - }, - "engines": { - "node": ">=10" - }, - "funding": { - "url": "https://github.com/sponsors/sindresorhus" - } - }, - "node_modules/p-locate": { - "version": "5.0.0", - "resolved": "https://registry.npmjs.org/p-locate/-/p-locate-5.0.0.tgz", - "integrity": "sha512-LaNjtRWUBY++zB5nE/NwcaoMylSPk+S+ZHNB1TzdbMJMny6dynpAGt7X/tl/QYq3TIeE6nxHppbo2LGymrG5Pw==", - "dev": true, - "dependencies": { - "p-limit": "^3.0.2" - }, - "engines": { - "node": ">=10" - }, - "funding": { - "url": "https://github.com/sponsors/sindresorhus" - } - }, - "node_modules/parent-module": { - "version": "1.0.1", - "resolved": "https://registry.npmjs.org/parent-module/-/parent-module-1.0.1.tgz", - "integrity": "sha512-GQ2EWRpQV8/o+Aw8YqtfZZPfNRWZYkbidE9k5rpl/hC3vtHHBfGm2Ifi6qWV+coDGkrUKZAxE3Lot5kcsRlh+g==", - "dependencies": { - "callsites": "^3.0.0" - }, - "engines": { - "node": ">=6" - } - }, - "node_modules/parse-json": { - "version": "5.2.0", - "resolved": "https://registry.npmjs.org/parse-json/-/parse-json-5.2.0.tgz", - "integrity": "sha512-ayCKvm/phCGxOkYRSCM82iDwct8/EonSEgCSxWxD7ve6jHggsFl4fZVQBPRNgQoKiuV/odhFrGzQXZwbifC8Rg==", - "dependencies": { - "@babel/code-frame": "^7.0.0", - "error-ex": "^1.3.1", - "json-parse-even-better-errors": "^2.3.0", - "lines-and-columns": "^1.1.6" - }, - "engines": { - "node": ">=8" - }, - "funding": { - "url": "https://github.com/sponsors/sindresorhus" - } - }, - "node_modules/path-exists": { - "version": "4.0.0", - "resolved": "https://registry.npmjs.org/path-exists/-/path-exists-4.0.0.tgz", - "integrity": "sha512-ak9Qy5Q7jYb2Wwcey5Fpvg2KoAc/ZIhLSLOSBmRmygPsGwkVVt0fZa0qrtMz+m6tJTAHfZQ8FnmB4MG4LWy7/w==", - "dev": true, - "engines": { - "node": ">=8" - } - }, - "node_modules/path-is-absolute": { - "version": "1.0.1", - "resolved": "https://registry.npmjs.org/path-is-absolute/-/path-is-absolute-1.0.1.tgz", - "integrity": "sha512-AVbw3UJ2e9bq64vSaS9Am0fje1Pa8pbGqTTsmXfaIiMpnr5DlDhfJOuLj9Sf95ZPVDAUerDfEk88MPmPe7UCQg==", - "dev": true, - "engines": { - "node": ">=0.10.0" - } - }, - "node_modules/path-key": { - "version": "3.1.1", - "resolved": "https://registry.npmjs.org/path-key/-/path-key-3.1.1.tgz", - "integrity": "sha512-ojmeN0qd+y0jszEtoY48r0Peq5dwMEkIlCOu6Q5f41lfkswXuKtYrhgoTpLnyIcHm24Uhqx+5Tqm2InSwLhE6Q==", - "dev": true, - "engines": { - "node": ">=8" - } - }, - "node_modules/path-parse": { - "version": "1.0.7", - "resolved": "https://registry.npmjs.org/path-parse/-/path-parse-1.0.7.tgz", - "integrity": "sha512-LDJzPVEEEPR+y48z93A0Ed0yXb8pAByGWo/k5YYdYgpY2/2EsOsksJrq7lOHxryrVOn1ejG6oAp8ahvOIQD8sw==" - }, - "node_modules/path-type": { - "version": "4.0.0", - "resolved": "https://registry.npmjs.org/path-type/-/path-type-4.0.0.tgz", - "integrity": "sha512-gDKb8aZMDeD/tZWs9P6+q0J9Mwkdl6xMV8TjnGP3qJVJ06bdMgkbBlLU8IdfOsIsFz2BW1rNVT3XuNEl8zPAvw==", - "engines": { - "node": ">=8" - } - }, - "node_modules/picocolors": { - "version": "1.0.0", - "resolved": "https://registry.npmjs.org/picocolors/-/picocolors-1.0.0.tgz", - "integrity": "sha512-1fygroTLlHu66zi26VoTDv8yRgm0Fccecssto+MhsZ0D/DGW2sm8E8AjW7NU5VVTRt5GxbeZ5qBuJr+HyLYkjQ==", - "dev": true - }, - "node_modules/postcss": { - "version": "8.4.26", - "resolved": "https://registry.npmjs.org/postcss/-/postcss-8.4.26.tgz", - "integrity": "sha512-jrXHFF8iTloAenySjM/ob3gSj7pCu0Ji49hnjqzsgSRa50hkWCKD0HQ+gMNJkW38jBI68MpAAg7ZWwHwX8NMMw==", - "dev": true, - "funding": [ - { - "type": "opencollective", - "url": "https://opencollective.com/postcss/" - }, - { - "type": "tidelift", - "url": "https://tidelift.com/funding/github/npm/postcss" - }, - { - "type": "github", - "url": "https://github.com/sponsors/ai" - } - ], - "dependencies": { - "nanoid": "^3.3.6", - "picocolors": "^1.0.0", - "source-map-js": "^1.0.2" - }, - "engines": { - "node": "^10 || ^12 || >=14" - } - }, - "node_modules/prelude-ls": { - "version": "1.2.1", - "resolved": "https://registry.npmjs.org/prelude-ls/-/prelude-ls-1.2.1.tgz", - "integrity": "sha512-vkcDPrRZo1QZLbn5RLGPpg/WmIQ65qoWWhcGKf/b5eplkkarX0m9z8ppCat4mlOqUsWpyNuYgO3VRyrYHSzX5g==", - "dev": true, - "engines": { - "node": ">= 0.8.0" - } - }, - "node_modules/prop-types": { - "version": "15.8.1", - "resolved": "https://registry.npmjs.org/prop-types/-/prop-types-15.8.1.tgz", - "integrity": "sha512-oj87CgZICdulUohogVAR7AjlC0327U4el4L6eAvOqCeudMDVU0NThNaV+b9Df4dXgSP1gXMTnPdhfe/2qDH5cg==", - "dependencies": { - "loose-envify": "^1.4.0", - "object-assign": "^4.1.1", - "react-is": "^16.13.1" - } - }, - "node_modules/punycode": { - "version": "2.3.0", - "resolved": "https://registry.npmjs.org/punycode/-/punycode-2.3.0.tgz", - "integrity": "sha512-rRV+zQD8tVFys26lAGR9WUuS4iUAngJScM+ZRSKtvl5tKeZ2t5bvdNFdNHBW9FWR4guGHlgmsZ1G7BSm2wTbuA==", + "../node_modules/is-number": { + "version": "7.0.0", "dev": true, + "license": "MIT", "engines": { - "node": ">=6" + "node": ">=0.12.0" } }, - "node_modules/queue-microtask": { - "version": "1.2.3", - "resolved": "https://registry.npmjs.org/queue-microtask/-/queue-microtask-1.2.3.tgz", - "integrity": "sha512-NuaNSa6flKT5JaSYQzJok04JzTL1CA6aGhv5rfLW3PgqA+M2ChpZQnAC8h8i4ZFkBS8X5RqkDBHA7r4hej3K9A==", - "dev": true, - "funding": [ - { - "type": "github", - "url": "https://github.com/sponsors/feross" - }, - { - "type": "patreon", - "url": "https://www.patreon.com/feross" - }, - { - "type": "consulting", - "url": "https://feross.org/support" - } - ] + "../node_modules/jsbn": { + "version": "1.1.0", + "license": "MIT" }, - "node_modules/react": { - "version": "18.2.0", - "resolved": "https://registry.npmjs.org/react/-/react-18.2.0.tgz", - "integrity": "sha512-/3IjMdb2L9QbBdWiW5e3P2/npwMBaU9mHCSCUzNln0ZCYbcfTsGbTJrU/kGemdH2IWmB2ioZ+zkxtmq6g09fGQ==", + "../node_modules/jsonwebtoken": { + "version": "9.0.1", + "license": "MIT", "dependencies": { - "loose-envify": "^1.1.0" + "jws": "^3.2.2", + "lodash": "^4.17.21", + "ms": "^2.1.1", + "semver": "^7.3.8" }, "engines": { - "node": ">=0.10.0" + "node": ">=12", + "npm": ">=6" } }, - "node_modules/react-clientside-effect": { - "version": "1.2.6", - "resolved": "https://registry.npmjs.org/react-clientside-effect/-/react-clientside-effect-1.2.6.tgz", - "integrity": "sha512-XGGGRQAKY+q25Lz9a/4EPqom7WRjz3z9R2k4jhVKA/puQFH/5Nt27vFZYql4m4NVNdUvX8PS3O7r/Zzm7cjUlg==", - "dependencies": { - "@babel/runtime": "^7.12.13" - }, - "peerDependencies": { - "react": "^15.3.0 || ^16.0.0 || ^17.0.0 || ^18.0.0" - } + "../node_modules/jsonwebtoken/node_modules/ms": { + "version": "2.1.3", + "license": "MIT" }, - "node_modules/react-dom": { - "version": "18.2.0", - "resolved": "https://registry.npmjs.org/react-dom/-/react-dom-18.2.0.tgz", - "integrity": "sha512-6IMTriUmvsjHUjNtEDudZfuDQUoWXVxKHhlEGSk81n4YFS+r/Kl99wXiwlVXtPBtJenozv2P+hxDsw9eA7Xo6g==", + "../node_modules/jwa": { + "version": "1.4.1", + "license": "MIT", "dependencies": { - "loose-envify": "^1.1.0", - "scheduler": "^0.23.0" - }, - "peerDependencies": { - "react": "^18.2.0" + "buffer-equal-constant-time": "1.0.1", + "ecdsa-sig-formatter": "1.0.11", + "safe-buffer": "^5.0.1" } }, - "node_modules/react-fast-compare": { - "version": "3.2.1", - "resolved": "https://registry.npmjs.org/react-fast-compare/-/react-fast-compare-3.2.1.tgz", - "integrity": "sha512-xTYf9zFim2pEif/Fw16dBiXpe0hoy5PxcD8+OwBnTtNLfIm3g6WxhKNurY+6OmdH1u6Ta/W/Vl6vjbYP1MFnDg==" - }, - "node_modules/react-focus-lock": { - "version": "2.9.5", - "resolved": "https://registry.npmjs.org/react-focus-lock/-/react-focus-lock-2.9.5.tgz", - "integrity": "sha512-h6vrdgUbsH2HeD5I7I3Cx1PPrmwGuKYICS+kB9m+32X/9xHRrAbxgvaBpG7BFBN9h3tO+C3qX1QAVESmi4CiIA==", + "../node_modules/jws": { + "version": "3.2.2", + "license": "MIT", "dependencies": { - "@babel/runtime": "^7.0.0", - "focus-lock": "^0.11.6", - "prop-types": "^15.6.2", - "react-clientside-effect": "^1.2.6", - "use-callback-ref": "^1.3.0", - "use-sidecar": "^1.1.2" - }, - "peerDependencies": { - "@types/react": "^16.8.0 || ^17.0.0 || ^18.0.0", - "react": "^16.8.0 || ^17.0.0 || ^18.0.0" - }, - "peerDependenciesMeta": { - "@types/react": { - "optional": true - } - } - }, - "node_modules/react-icons": { - "version": "4.10.1", - "resolved": "https://registry.npmjs.org/react-icons/-/react-icons-4.10.1.tgz", - "integrity": "sha512-/ngzDP/77tlCfqthiiGNZeYFACw85fUjZtLbedmJ5DTlNDIwETxhwBzdOJ21zj4iJdvc0J3y7yOsX3PpxAJzrw==", - "peerDependencies": { - "react": "*" + "jwa": "^1.4.1", + "safe-buffer": "^5.0.1" } }, - "node_modules/react-is": { - "version": "16.13.1", - "resolved": "https://registry.npmjs.org/react-is/-/react-is-16.13.1.tgz", - "integrity": "sha512-24e6ynE2H+OKt4kqsOvNd8kBpV65zoxbA4BVsEOB3ARVWQki/DHzaUoC5KuON/BiccDaCCTZBuOcfZs70kR8bQ==" - }, - "node_modules/react-refresh": { - "version": "0.14.0", - "resolved": "https://registry.npmjs.org/react-refresh/-/react-refresh-0.14.0.tgz", - "integrity": "sha512-wViHqhAd8OHeLS/IRMJjTSDHF3U9eWi62F/MledQGPdJGDhodXJ9PBLNGr6WWL7qlH12Mt3TyTpbS+hGXMjCzQ==", - "dev": true, + "../node_modules/kareem": { + "version": "2.5.1", + "license": "Apache-2.0", "engines": { - "node": ">=0.10.0" + "node": ">=12.0.0" } }, - "node_modules/react-remove-scroll": { - "version": "2.5.6", - "resolved": "https://registry.npmjs.org/react-remove-scroll/-/react-remove-scroll-2.5.6.tgz", - "integrity": "sha512-bO856ad1uDYLefgArk559IzUNeQ6SWH4QnrevIUjH+GczV56giDfl3h0Idptf2oIKxQmd1p9BN25jleKodTALg==", - "dependencies": { - "react-remove-scroll-bar": "^2.3.4", - "react-style-singleton": "^2.2.1", - "tslib": "^2.1.0", - "use-callback-ref": "^1.3.0", - "use-sidecar": "^1.1.2" - }, - "engines": { - "node": ">=10" - }, - "peerDependencies": { - "@types/react": "^16.8.0 || ^17.0.0 || ^18.0.0", - "react": "^16.8.0 || ^17.0.0 || ^18.0.0" - }, - "peerDependenciesMeta": { - "@types/react": { - "optional": true - } - } + "../node_modules/lodash": { + "version": "4.17.21", + "license": "MIT" }, - "node_modules/react-remove-scroll-bar": { - "version": "2.3.4", - "resolved": "https://registry.npmjs.org/react-remove-scroll-bar/-/react-remove-scroll-bar-2.3.4.tgz", - "integrity": "sha512-63C4YQBUt0m6ALadE9XV56hV8BgJWDmmTPY758iIJjfQKt2nYwoUrPk0LXRXcB/yIj82T1/Ixfdpdk68LwIB0A==", + "../node_modules/lru-cache": { + "version": "6.0.0", + "license": "ISC", "dependencies": { - "react-style-singleton": "^2.2.1", - "tslib": "^2.0.0" + "yallist": "^4.0.0" }, "engines": { "node": ">=10" - }, - "peerDependencies": { - "@types/react": "^16.8.0 || ^17.0.0 || ^18.0.0", - "react": "^16.8.0 || ^17.0.0 || ^18.0.0" - }, - "peerDependenciesMeta": { - "@types/react": { - "optional": true - } - } - }, - "node_modules/react-router": { - "version": "6.14.1", - "resolved": "https://registry.npmjs.org/react-router/-/react-router-6.14.1.tgz", - "integrity": "sha512-U4PfgvG55LdvbQjg5Y9QRWyVxIdO1LlpYT7x+tMAxd9/vmiPuJhIwdxZuIQLN/9e3O4KFDHYfR9gzGeYMasW8g==", - "dependencies": { - "@remix-run/router": "1.7.1" - }, - "engines": { - "node": ">=14" - }, - "peerDependencies": { - "react": ">=16.8" } }, - "node_modules/react-router-dom": { - "version": "6.14.1", - "resolved": "https://registry.npmjs.org/react-router-dom/-/react-router-dom-6.14.1.tgz", - "integrity": "sha512-ssF6M5UkQjHK70fgukCJyjlda0Dgono2QGwqGvuk7D+EDGHdacEN3Yke2LTMjkrpHuFwBfDFsEjGVXBDmL+bWw==", - "dependencies": { - "@remix-run/router": "1.7.1", - "react-router": "6.14.1" - }, + "../node_modules/luxon": { + "version": "3.4.4", + "license": "MIT", "engines": { - "node": ">=14" - }, - "peerDependencies": { - "react": ">=16.8", - "react-dom": ">=16.8" + "node": ">=12" } }, - "node_modules/react-style-singleton": { - "version": "2.2.1", - "resolved": "https://registry.npmjs.org/react-style-singleton/-/react-style-singleton-2.2.1.tgz", - "integrity": "sha512-ZWj0fHEMyWkHzKYUr2Bs/4zU6XLmq9HsgBURm7g5pAVfyn49DgUiNgY2d4lXRlYSiCif9YBGpQleewkcqddc7g==", - "dependencies": { - "get-nonce": "^1.0.0", - "invariant": "^2.2.4", - "tslib": "^2.0.0" - }, + "../node_modules/media-typer": { + "version": "0.3.0", + "license": "MIT", "engines": { - "node": ">=10" - }, - "peerDependencies": { - "@types/react": "^16.8.0 || ^17.0.0 || ^18.0.0", - "react": "^16.8.0 || ^17.0.0 || ^18.0.0" - }, - "peerDependenciesMeta": { - "@types/react": { - "optional": true - } + "node": ">= 0.6" } }, - "node_modules/recoil": { - "version": "0.7.7", - "resolved": "https://registry.npmjs.org/recoil/-/recoil-0.7.7.tgz", - "integrity": "sha512-8Og5KPQW9LwC577Vc7Ug2P0vQshkv1y3zG3tSSkWMqkWSwHmE+by06L8JtnGocjW6gcCvfwB3YtrJG6/tWivNQ==", - "dependencies": { - "hamt_plus": "1.0.2" - }, - "peerDependencies": { - "react": ">=16.13.1" - }, - "peerDependenciesMeta": { - "react-dom": { - "optional": true - }, - "react-native": { - "optional": true - } - } + "../node_modules/memory-pager": { + "version": "1.5.0", + "license": "MIT", + "optional": true }, - "node_modules/regenerator-runtime": { - "version": "0.13.11", - "resolved": "https://registry.npmjs.org/regenerator-runtime/-/regenerator-runtime-0.13.11.tgz", - "integrity": "sha512-kY1AZVr2Ra+t+piVaJ4gxaFaReZVH40AKNo7UCX6W+dEwBo/2oZJzqfuN1qLq1oL45o56cPaTXELwrTh8Fpggg==" + "../node_modules/merge-descriptors": { + "version": "1.0.1", + "license": "MIT" }, - "node_modules/regexp.prototype.flags": { - "version": "1.5.0", - "resolved": "https://registry.npmjs.org/regexp.prototype.flags/-/regexp.prototype.flags-1.5.0.tgz", - "integrity": "sha512-0SutC3pNudRKgquxGoRGIz946MZVHqbNfPjBdxeOhBrdgDKlRoXmYLQN9xRbrR09ZXWeGAdPuif7egofn6v5LA==", - "dev": true, - "dependencies": { - "call-bind": "^1.0.2", - "define-properties": "^1.2.0", - "functions-have-names": "^1.2.3" - }, + "../node_modules/methods": { + "version": "1.1.2", + "license": "MIT", "engines": { - "node": ">= 0.4" - }, - "funding": { - "url": "https://github.com/sponsors/ljharb" + "node": ">= 0.6" } }, - "node_modules/resolve": { - "version": "2.0.0-next.4", - "resolved": "https://registry.npmjs.org/resolve/-/resolve-2.0.0-next.4.tgz", - "integrity": "sha512-iMDbmAWtfU+MHpxt/I5iWI7cY6YVEZUQ3MBgPQ++XD1PELuJHIl82xBmObyP2KyQmkNB2dsqF7seoQQiAn5yDQ==", - "dev": true, - "dependencies": { - "is-core-module": "^2.9.0", - "path-parse": "^1.0.7", - "supports-preserve-symlinks-flag": "^1.0.0" - }, + "../node_modules/mime": { + "version": "1.6.0", + "license": "MIT", "bin": { - "resolve": "bin/resolve" + "mime": "cli.js" }, - "funding": { - "url": "https://github.com/sponsors/ljharb" + "engines": { + "node": ">=4" } }, - "node_modules/resolve-from": { - "version": "4.0.0", - "resolved": "https://registry.npmjs.org/resolve-from/-/resolve-from-4.0.0.tgz", - "integrity": "sha512-pb/MYmXstAkysRFx8piNI1tGFNQIFA3vkE3Gq4EuA1dF6gHp/+vgZqsCGJapvy8N3Q+4o7FwvquPJcnZ7RYy4g==", + "../node_modules/mime-db": { + "version": "1.52.0", + "license": "MIT", "engines": { - "node": ">=4" + "node": ">= 0.6" } }, - "node_modules/reusify": { - "version": "1.0.4", - "resolved": "https://registry.npmjs.org/reusify/-/reusify-1.0.4.tgz", - "integrity": "sha512-U9nH88a3fc/ekCF1l0/UP1IosiuIjyTh7hBvXVMHYgVcfGvt897Xguj2UOLDeI5BG2m7/uwyaLVT6fbtCwTyzw==", - "dev": true, + "../node_modules/mime-types": { + "version": "2.1.35", + "license": "MIT", + "dependencies": { + "mime-db": "1.52.0" + }, "engines": { - "iojs": ">=1.0.0", - "node": ">=0.10.0" + "node": ">= 0.6" } }, - "node_modules/rimraf": { - "version": "3.0.2", - "resolved": "https://registry.npmjs.org/rimraf/-/rimraf-3.0.2.tgz", - "integrity": "sha512-JZkJMZkAGFFPP2YqXZXPbMlMBgsxzE8ILs4lMIX/2o0L9UBw9O/Y3o6wFw/i9YLapcUJWwqbi3kdxIPdC62TIA==", + "../node_modules/minimatch": { + "version": "3.1.2", "dev": true, + "license": "ISC", "dependencies": { - "glob": "^7.1.3" - }, - "bin": { - "rimraf": "bin.js" + "brace-expansion": "^1.1.7" }, - "funding": { - "url": "https://github.com/sponsors/isaacs" + "engines": { + "node": "*" } }, - "node_modules/rollup": { - "version": "3.26.2", - "resolved": "https://registry.npmjs.org/rollup/-/rollup-3.26.2.tgz", - "integrity": "sha512-6umBIGVz93er97pMgQO08LuH3m6PUb3jlDUUGFsNJB6VgTCUaDFpupf5JfU30529m/UKOgmiX+uY6Sx8cOYpLA==", - "dev": true, - "bin": { - "rollup": "dist/bin/rollup" + "../node_modules/mongodb": { + "version": "5.9.2", + "license": "Apache-2.0", + "dependencies": { + "bson": "^5.5.0", + "mongodb-connection-string-url": "^2.6.0", + "socks": "^2.7.1" }, "engines": { - "node": ">=14.18.0", - "npm": ">=8.0.0" + "node": ">=14.20.1" }, "optionalDependencies": { - "fsevents": "~2.3.2" - } - }, - "node_modules/run-parallel": { - "version": "1.2.0", - "resolved": "https://registry.npmjs.org/run-parallel/-/run-parallel-1.2.0.tgz", - "integrity": "sha512-5l4VyZR86LZ/lDxZTR6jqL8AFE2S0IFLMP26AbjsLVADxHdhB/c0GUsH+y39UfCi3dzz8OlQuPmnaJOMoDHQBA==", - "dev": true, - "funding": [ - { - "type": "github", - "url": "https://github.com/sponsors/feross" + "@mongodb-js/saslprep": "^1.1.0" + }, + "peerDependencies": { + "@aws-sdk/credential-providers": "^3.188.0", + "@mongodb-js/zstd": "^1.0.0", + "kerberos": "^1.0.0 || ^2.0.0", + "mongodb-client-encryption": ">=2.3.0 <3", + "snappy": "^7.2.2" + }, + "peerDependenciesMeta": { + "@aws-sdk/credential-providers": { + "optional": true }, - { - "type": "patreon", - "url": "https://www.patreon.com/feross" + "@mongodb-js/zstd": { + "optional": true }, - { - "type": "consulting", - "url": "https://feross.org/support" + "kerberos": { + "optional": true + }, + "mongodb-client-encryption": { + "optional": true + }, + "snappy": { + "optional": true } - ], + } + }, + "../node_modules/mongodb-connection-string-url": { + "version": "2.6.0", + "license": "Apache-2.0", "dependencies": { - "queue-microtask": "^1.2.2" + "@types/whatwg-url": "^8.2.1", + "whatwg-url": "^11.0.0" } }, - "node_modules/safe-regex-test": { - "version": "1.0.0", - "resolved": "https://registry.npmjs.org/safe-regex-test/-/safe-regex-test-1.0.0.tgz", - "integrity": "sha512-JBUUzyOgEwXQY1NuPtvcj/qcBDbDmEvWufhlnXZIm75DEHp+afM1r1ujJpJsV/gSM4t59tpDyPi1sd6ZaPFfsA==", - "dev": true, + "../node_modules/mongoose": { + "version": "7.8.0", + "license": "MIT", "dependencies": { - "call-bind": "^1.0.2", - "get-intrinsic": "^1.1.3", - "is-regex": "^1.1.4" + "bson": "^5.5.0", + "kareem": "2.5.1", + "mongodb": "5.9.2", + "mpath": "0.9.0", + "mquery": "5.0.0", + "ms": "2.1.3", + "sift": "16.0.1" + }, + "engines": { + "node": ">=14.20.1" }, "funding": { - "url": "https://github.com/sponsors/ljharb" + "type": "opencollective", + "url": "https://opencollective.com/mongoose" } }, - "node_modules/scheduler": { - "version": "0.23.0", - "resolved": "https://registry.npmjs.org/scheduler/-/scheduler-0.23.0.tgz", - "integrity": "sha512-CtuThmgHNg7zIZWAXi3AsyIzA3n4xx7aNyjwC2VJldO2LMVDhFK+63xGqq6CsJH4rTAt6/M+N4GhZiDYPx9eUw==", - "dependencies": { - "loose-envify": "^1.1.0" + "../node_modules/mongoose/node_modules/ms": { + "version": "2.1.3", + "license": "MIT" + }, + "../node_modules/mpath": { + "version": "0.9.0", + "license": "MIT", + "engines": { + "node": ">=4.0.0" } }, - "node_modules/semver": { - "version": "6.3.1", - "resolved": "https://registry.npmjs.org/semver/-/semver-6.3.1.tgz", - "integrity": "sha512-BR7VvDCVHO+q2xBEWskxS6DJE1qRnb7DxzUrogb71CWoSficBxYsiAGd+Kl0mmq/MprG9yArRkyrQxTO6XjMzA==", - "dev": true, - "bin": { - "semver": "bin/semver.js" + "../node_modules/mquery": { + "version": "5.0.0", + "license": "MIT", + "dependencies": { + "debug": "4.x" + }, + "engines": { + "node": ">=14.0.0" } }, - "node_modules/shebang-command": { - "version": "2.0.0", - "resolved": "https://registry.npmjs.org/shebang-command/-/shebang-command-2.0.0.tgz", - "integrity": "sha512-kHxr2zZpYtdmrN1qDjrrX/Z1rR1kG8Dx+gkpK1G4eXmvXswmcE1hTWBWYUzlraYw1/yZp6YuDY77YtvbN0dmDA==", - "dev": true, + "../node_modules/mquery/node_modules/debug": { + "version": "4.3.4", + "license": "MIT", "dependencies": { - "shebang-regex": "^3.0.0" + "ms": "2.1.2" }, "engines": { - "node": ">=8" + "node": ">=6.0" + }, + "peerDependenciesMeta": { + "supports-color": { + "optional": true + } } }, - "node_modules/shebang-regex": { - "version": "3.0.0", - "resolved": "https://registry.npmjs.org/shebang-regex/-/shebang-regex-3.0.0.tgz", - "integrity": "sha512-7++dFhtcx3353uBaq8DDR4NuxBetBzC7ZQOhmTQInHEd6bSrXdiEyzCvG07Z44UYdLShWUyXt5M/yhz8ekcb1A==", - "dev": true, + "../node_modules/mquery/node_modules/ms": { + "version": "2.1.2", + "license": "MIT" + }, + "../node_modules/ms": { + "version": "2.0.0", + "license": "MIT" + }, + "../node_modules/negotiator": { + "version": "0.6.3", + "license": "MIT", "engines": { - "node": ">=8" + "node": ">= 0.6" } }, - "node_modules/side-channel": { - "version": "1.0.4", - "resolved": "https://registry.npmjs.org/side-channel/-/side-channel-1.0.4.tgz", - "integrity": "sha512-q5XPytqFEIKHkGdiMIrY10mvLRvnQh42/+GoBlFW3b2LXLE2xxJpZFdm94we0BaoV3RwJyGqg5wS7epxTv0Zvw==", + "../node_modules/nodemon": { + "version": "3.0.1", "dev": true, + "license": "MIT", "dependencies": { - "call-bind": "^1.0.0", - "get-intrinsic": "^1.0.2", - "object-inspect": "^1.9.0" + "chokidar": "^3.5.2", + "debug": "^3.2.7", + "ignore-by-default": "^1.0.1", + "minimatch": "^3.1.2", + "pstree.remy": "^1.1.8", + "semver": "^7.5.3", + "simple-update-notifier": "^2.0.0", + "supports-color": "^5.5.0", + "touch": "^3.1.0", + "undefsafe": "^2.0.5" + }, + "bin": { + "nodemon": "bin/nodemon.js" + }, + "engines": { + "node": ">=10" }, "funding": { - "url": "https://github.com/sponsors/ljharb" + "type": "opencollective", + "url": "https://opencollective.com/nodemon" } }, - "node_modules/socket.io-client": { - "version": "4.7.2", - "resolved": "https://registry.npmjs.org/socket.io-client/-/socket.io-client-4.7.2.tgz", - "integrity": "sha512-vtA0uD4ibrYD793SOIAwlo8cj6haOeMHrGvwPxJsxH7CeIksqJ+3Zc06RvWTIFgiSqx4A3sOnTXpfAEE2Zyz6w==", + "../node_modules/nodemon/node_modules/debug": { + "version": "3.2.7", + "dev": true, + "license": "MIT", "dependencies": { - "@socket.io/component-emitter": "~3.1.0", - "debug": "~4.3.2", - "engine.io-client": "~6.5.2", - "socket.io-parser": "~4.2.4" - }, - "engines": { - "node": ">=10.0.0" + "ms": "^2.1.1" } }, - "node_modules/socket.io-parser": { - "version": "4.2.4", - "resolved": "https://registry.npmjs.org/socket.io-parser/-/socket.io-parser-4.2.4.tgz", - "integrity": "sha512-/GbIKmo8ioc+NIWIhwdecY0ge+qVBSMdgxGygevmdHj24bsfgtCmcUUcQ5ZzcylGFHsN3k4HB4Cgkl96KVnuew==", + "../node_modules/nodemon/node_modules/ms": { + "version": "2.1.3", + "dev": true, + "license": "MIT" + }, + "../node_modules/nopt": { + "version": "1.0.10", + "dev": true, + "license": "MIT", "dependencies": { - "@socket.io/component-emitter": "~3.1.0", - "debug": "~4.3.1" + "abbrev": "1" }, - "engines": { - "node": ">=10.0.0" + "bin": { + "nopt": "bin/nopt.js" } }, - "node_modules/source-map": { - "version": "0.5.7", - "resolved": "https://registry.npmjs.org/source-map/-/source-map-0.5.7.tgz", - "integrity": "sha512-LbrmJOMUSdEVxIKvdcJzQC+nQhe8FUZQTXQy6+I75skNgn3OoQ0DZA8YnFa7gp8tqtL3KPf1kmo0R5DoApeSGQ==", + "../node_modules/normalize-path": { + "version": "3.0.0", + "dev": true, + "license": "MIT", "engines": { "node": ">=0.10.0" } }, - "node_modules/source-map-js": { - "version": "1.0.2", - "resolved": "https://registry.npmjs.org/source-map-js/-/source-map-js-1.0.2.tgz", - "integrity": "sha512-R0XvVJ9WusLiqTCEiGCmICCMplcCkIwwR11mOSD9CR5u+IXYdiseeEuXCVAjS54zqwkLcPNnmU4OeJ6tUrWhDw==", - "dev": true, + "../node_modules/object-assign": { + "version": "4.1.1", + "license": "MIT", "engines": { "node": ">=0.10.0" } }, - "node_modules/string.prototype.matchall": { - "version": "4.0.8", - "resolved": "https://registry.npmjs.org/string.prototype.matchall/-/string.prototype.matchall-4.0.8.tgz", - "integrity": "sha512-6zOCOcJ+RJAQshcTvXPHoxoQGONa3e/Lqx90wUA+wEzX78sg5Bo+1tQo4N0pohS0erG9qtCqJDjNCQBjeWVxyg==", - "dev": true, - "dependencies": { - "call-bind": "^1.0.2", - "define-properties": "^1.1.4", - "es-abstract": "^1.20.4", - "get-intrinsic": "^1.1.3", - "has-symbols": "^1.0.3", - "internal-slot": "^1.0.3", - "regexp.prototype.flags": "^1.4.3", - "side-channel": "^1.0.4" + "../node_modules/object-inspect": { + "version": "1.13.2", + "license": "MIT", + "engines": { + "node": ">= 0.4" }, "funding": { "url": "https://github.com/sponsors/ljharb" } }, - "node_modules/string.prototype.trim": { - "version": "1.2.7", - "resolved": "https://registry.npmjs.org/string.prototype.trim/-/string.prototype.trim-1.2.7.tgz", - "integrity": "sha512-p6TmeT1T3411M8Cgg9wBTMRtY2q9+PNy9EV1i2lIXUN/btt763oIfxwN3RR8VU6wHX8j/1CFy0L+YuThm6bgOg==", - "dev": true, + "../node_modules/on-finished": { + "version": "2.4.1", + "license": "MIT", "dependencies": { - "call-bind": "^1.0.2", - "define-properties": "^1.1.4", - "es-abstract": "^1.20.4" + "ee-first": "1.1.1" }, "engines": { - "node": ">= 0.4" - }, - "funding": { - "url": "https://github.com/sponsors/ljharb" + "node": ">= 0.8" } }, - "node_modules/string.prototype.trimend": { - "version": "1.0.6", - "resolved": "https://registry.npmjs.org/string.prototype.trimend/-/string.prototype.trimend-1.0.6.tgz", - "integrity": "sha512-JySq+4mrPf9EsDBEDYMOb/lM7XQLulwg5R/m1r0PXEFqrV0qHvl58sdTilSXtKOflCsK2E8jxf+GKC0T07RWwQ==", - "dev": true, - "dependencies": { - "call-bind": "^1.0.2", - "define-properties": "^1.1.4", - "es-abstract": "^1.20.4" - }, - "funding": { - "url": "https://github.com/sponsors/ljharb" + "../node_modules/parseurl": { + "version": "1.3.3", + "license": "MIT", + "engines": { + "node": ">= 0.8" } }, - "node_modules/string.prototype.trimstart": { - "version": "1.0.6", - "resolved": "https://registry.npmjs.org/string.prototype.trimstart/-/string.prototype.trimstart-1.0.6.tgz", - "integrity": "sha512-omqjMDaY92pbn5HOX7f9IccLA+U1tA9GvtU4JrodiXFfYB7jPzzHpRzpglLAjtUV6bB557zwClJezTqnAiYnQA==", + "../node_modules/path-to-regexp": { + "version": "0.1.7", + "license": "MIT" + }, + "../node_modules/picomatch": { + "version": "2.3.1", "dev": true, - "dependencies": { - "call-bind": "^1.0.2", - "define-properties": "^1.1.4", - "es-abstract": "^1.20.4" + "license": "MIT", + "engines": { + "node": ">=8.6" }, "funding": { - "url": "https://github.com/sponsors/ljharb" + "url": "https://github.com/sponsors/jonschlinkert" } }, - "node_modules/strip-ansi": { - "version": "6.0.1", - "resolved": "https://registry.npmjs.org/strip-ansi/-/strip-ansi-6.0.1.tgz", - "integrity": "sha512-Y38VPSHcqkFrCpFnQ9vuSXmquuv5oXOKpGeT6aGrr3o3Gc9AlVa6JBfUSOCnbxGGZF+/0ooI7KrPuUSztUdU5A==", - "dev": true, + "../node_modules/proxy-addr": { + "version": "2.0.7", + "license": "MIT", "dependencies": { - "ansi-regex": "^5.0.1" + "forwarded": "0.2.0", + "ipaddr.js": "1.9.1" }, "engines": { - "node": ">=8" + "node": ">= 0.10" } }, - "node_modules/strip-json-comments": { - "version": "3.1.1", - "resolved": "https://registry.npmjs.org/strip-json-comments/-/strip-json-comments-3.1.1.tgz", - "integrity": "sha512-6fPc+R4ihwqP6N/aIv2f1gMH8lOVtWQHoqC4yK6oSDVVocumAsfCqjkXnqiYMhmMwS/mEHLp7Vehlt3ql6lEig==", + "../node_modules/pstree.remy": { + "version": "1.1.8", "dev": true, + "license": "MIT" + }, + "../node_modules/punycode": { + "version": "2.3.1", + "license": "MIT", "engines": { - "node": ">=8" + "node": ">=6" + } + }, + "../node_modules/q": { + "version": "1.5.1", + "license": "MIT", + "engines": { + "node": ">=0.6.0", + "teleport": ">=0.2.0" + } + }, + "../node_modules/qs": { + "version": "6.11.0", + "license": "BSD-3-Clause", + "dependencies": { + "side-channel": "^1.0.4" + }, + "engines": { + "node": ">=0.6" }, "funding": { - "url": "https://github.com/sponsors/sindresorhus" + "url": "https://github.com/sponsors/ljharb" } }, - "node_modules/stylis": { - "version": "4.2.0", - "resolved": "https://registry.npmjs.org/stylis/-/stylis-4.2.0.tgz", - "integrity": "sha512-Orov6g6BB1sDfYgzWfTHDOxamtX1bE/zo104Dh9e6fqJ3PooipYyfJ0pUmrZO2wAvO8YbEyeFrkV91XTsGMSrw==" + "../node_modules/range-parser": { + "version": "1.2.1", + "license": "MIT", + "engines": { + "node": ">= 0.6" + } }, - "node_modules/supports-color": { - "version": "5.5.0", - "resolved": "https://registry.npmjs.org/supports-color/-/supports-color-5.5.0.tgz", - "integrity": "sha512-QjVjwdXIt408MIiAqCX4oUKsgU2EqAGzs2Ppkm4aQYbjm+ZEWEcW4SfFNTr4uMNZma0ey4f5lgLrkB0aX0QMow==", + "../node_modules/raw-body": { + "version": "2.5.2", + "license": "MIT", "dependencies": { - "has-flag": "^3.0.0" + "bytes": "3.1.2", + "http-errors": "2.0.0", + "iconv-lite": "0.4.24", + "unpipe": "1.0.0" }, "engines": { - "node": ">=4" + "node": ">= 0.8" } }, - "node_modules/supports-preserve-symlinks-flag": { - "version": "1.0.0", - "resolved": "https://registry.npmjs.org/supports-preserve-symlinks-flag/-/supports-preserve-symlinks-flag-1.0.0.tgz", - "integrity": "sha512-ot0WnXS9fgdkgIcePe6RHNk1WA8+muPa6cSjeR3V8K27q9BB1rTE3R1p7Hv0z1ZyAc8s6Vvv8DIyWf681MAt0w==", - "engines": { - "node": ">= 0.4" + "../node_modules/readdirp": { + "version": "3.6.0", + "dev": true, + "license": "MIT", + "dependencies": { + "picomatch": "^2.2.1" }, - "funding": { - "url": "https://github.com/sponsors/ljharb" + "engines": { + "node": ">=8.10.0" } }, - "node_modules/text-table": { - "version": "0.2.0", - "resolved": "https://registry.npmjs.org/text-table/-/text-table-0.2.0.tgz", - "integrity": "sha512-N+8UisAXDGk8PFXP4HAzVR9nbfmVJ3zYLAWiTIoqC5v5isinhr+r5uaO8+7r3BMfuNIufIsA7RdpVgacC2cSpw==", - "dev": true + "../node_modules/safe-buffer": { + "version": "5.2.1", + "funding": [ + { + "type": "github", + "url": "https://github.com/sponsors/feross" + }, + { + "type": "patreon", + "url": "https://www.patreon.com/feross" + }, + { + "type": "consulting", + "url": "https://feross.org/support" + } + ], + "license": "MIT" }, - "node_modules/tiny-invariant": { - "version": "1.3.1", - "resolved": "https://registry.npmjs.org/tiny-invariant/-/tiny-invariant-1.3.1.tgz", - "integrity": "sha512-AD5ih2NlSssTCwsMznbvwMZpJ1cbhkGd2uueNxzv2jDlEeZdU04JQfRnggJQ8DrcVBGjAsCKwFBbDlVNtEMlzw==" + "../node_modules/safer-buffer": { + "version": "2.1.2", + "license": "MIT" }, - "node_modules/to-fast-properties": { - "version": "2.0.0", - "resolved": "https://registry.npmjs.org/to-fast-properties/-/to-fast-properties-2.0.0.tgz", - "integrity": "sha512-/OaKK0xYrs3DmxRYqL/yDc+FxFUVYhDlXMhRmv3z915w2HF1tnN1omB354j8VUGO/hbRzyD6Y3sA7v7GS/ceog==", + "../node_modules/semver": { + "version": "7.5.4", + "license": "ISC", + "dependencies": { + "lru-cache": "^6.0.0" + }, + "bin": { + "semver": "bin/semver.js" + }, "engines": { - "node": ">=4" + "node": ">=10" } }, - "node_modules/toggle-selection": { - "version": "1.0.6", - "resolved": "https://registry.npmjs.org/toggle-selection/-/toggle-selection-1.0.6.tgz", - "integrity": "sha512-BiZS+C1OS8g/q2RRbJmy59xpyghNBqrr6k5L/uKBGRsTfxmu3ffiRnd8mlGPUVayg8pvfi5urfnu8TU7DVOkLQ==" + "../node_modules/send": { + "version": "0.18.0", + "license": "MIT", + "dependencies": { + "debug": "2.6.9", + "depd": "2.0.0", + "destroy": "1.2.0", + "encodeurl": "~1.0.2", + "escape-html": "~1.0.3", + "etag": "~1.8.1", + "fresh": "0.5.2", + "http-errors": "2.0.0", + "mime": "1.6.0", + "ms": "2.1.3", + "on-finished": "2.4.1", + "range-parser": "~1.2.1", + "statuses": "2.0.1" + }, + "engines": { + "node": ">= 0.8.0" + } }, - "node_modules/tslib": { - "version": "2.6.0", - "resolved": "https://registry.npmjs.org/tslib/-/tslib-2.6.0.tgz", - "integrity": "sha512-7At1WUettjcSRHXCyYtTselblcHl9PJFFVKiCAy/bY97+BPZXSQ2wbq0P9s8tK2G7dFQfNnlJnPAiArVBVBsfA==" + "../node_modules/send/node_modules/ms": { + "version": "2.1.3", + "license": "MIT" }, - "node_modules/type-check": { - "version": "0.4.0", - "resolved": "https://registry.npmjs.org/type-check/-/type-check-0.4.0.tgz", - "integrity": "sha512-XleUoc9uwGXqjWwXaUTZAmzMcFZ5858QA2vvx1Ur5xIcixXIP+8LnFDgRplU30us6teqdlskFfu+ae4K79Ooew==", - "dev": true, + "../node_modules/serve-static": { + "version": "1.15.0", + "license": "MIT", "dependencies": { - "prelude-ls": "^1.2.1" + "encodeurl": "~1.0.2", + "escape-html": "~1.0.3", + "parseurl": "~1.3.3", + "send": "0.18.0" }, "engines": { "node": ">= 0.8.0" } }, - "node_modules/type-fest": { - "version": "0.20.2", - "resolved": "https://registry.npmjs.org/type-fest/-/type-fest-0.20.2.tgz", - "integrity": "sha512-Ne+eE4r0/iWnpAxD852z3A+N0Bt5RN//NjJwRd2VFHEmrywxf5vsZlh4R6lixl6B+wz/8d+maTSAkN1FIkI3LQ==", - "dev": true, - "engines": { - "node": ">=10" + "../node_modules/set-function-length": { + "version": "1.2.2", + "license": "MIT", + "dependencies": { + "define-data-property": "^1.1.4", + "es-errors": "^1.3.0", + "function-bind": "^1.1.2", + "get-intrinsic": "^1.2.4", + "gopd": "^1.0.1", + "has-property-descriptors": "^1.0.2" }, - "funding": { - "url": "https://github.com/sponsors/sindresorhus" + "engines": { + "node": ">= 0.4" } }, - "node_modules/typed-array-byte-offset": { - "version": "1.0.0", - "resolved": "https://registry.npmjs.org/typed-array-byte-offset/-/typed-array-byte-offset-1.0.0.tgz", - "integrity": "sha512-RD97prjEt9EL8YgAgpOkf3O4IF9lhJFr9g0htQkm0rchFp/Vx7LW5Q8fSXXub7BXAODyUQohRMyOc3faCPd0hg==", - "dev": true, + "../node_modules/setprototypeof": { + "version": "1.2.0", + "license": "ISC" + }, + "../node_modules/side-channel": { + "version": "1.0.6", + "license": "MIT", "dependencies": { - "available-typed-arrays": "^1.0.5", - "call-bind": "^1.0.2", - "for-each": "^0.3.3", - "has-proto": "^1.0.1", - "is-typed-array": "^1.1.10" + "call-bind": "^1.0.7", + "es-errors": "^1.3.0", + "get-intrinsic": "^1.2.4", + "object-inspect": "^1.13.1" }, "engines": { "node": ">= 0.4" @@ -5138,319 +1308,324 @@ "url": "https://github.com/sponsors/ljharb" } }, - "node_modules/typed-array-length": { - "version": "1.0.4", - "resolved": "https://registry.npmjs.org/typed-array-length/-/typed-array-length-1.0.4.tgz", - "integrity": "sha512-KjZypGq+I/H7HI5HlOoGHkWUUGq+Q0TPhQurLbyrVrvnKTBgzLhIJ7j6J/XTQOi0d1RjyZ0wdas8bKs2p0x3Ng==", + "../node_modules/sift": { + "version": "16.0.1", + "license": "MIT" + }, + "../node_modules/simple-update-notifier": { + "version": "2.0.0", "dev": true, + "license": "MIT", "dependencies": { - "call-bind": "^1.0.2", - "for-each": "^0.3.3", - "is-typed-array": "^1.1.9" + "semver": "^7.5.3" }, - "funding": { - "url": "https://github.com/sponsors/ljharb" + "engines": { + "node": ">=10" } }, - "node_modules/unbox-primitive": { - "version": "1.0.2", - "resolved": "https://registry.npmjs.org/unbox-primitive/-/unbox-primitive-1.0.2.tgz", - "integrity": "sha512-61pPlCD9h51VoreyJ0BReideM3MDKMKnh6+V9L08331ipq6Q8OFXZYiqP6n/tbHx4s5I9uRhcye6BrbkizkBDw==", - "dev": true, - "dependencies": { - "call-bind": "^1.0.2", - "has-bigints": "^1.0.2", - "has-symbols": "^1.0.3", - "which-boxed-primitive": "^1.0.2" - }, - "funding": { - "url": "https://github.com/sponsors/ljharb" + "../node_modules/smart-buffer": { + "version": "4.2.0", + "license": "MIT", + "engines": { + "node": ">= 6.0.0", + "npm": ">= 3.0.0" } }, - "node_modules/update-browserslist-db": { - "version": "1.0.11", - "resolved": "https://registry.npmjs.org/update-browserslist-db/-/update-browserslist-db-1.0.11.tgz", - "integrity": "sha512-dCwEFf0/oT85M1fHBg4F0jtLwJrutGoHSQXCh7u4o2t1drG+c0a9Flnqww6XUKSfQMPpJBRjU8d4RXB09qtvaA==", - "dev": true, - "funding": [ - { - "type": "opencollective", - "url": "https://opencollective.com/browserslist" - }, - { - "type": "tidelift", - "url": "https://tidelift.com/funding/github/npm/browserslist" - }, - { - "type": "github", - "url": "https://github.com/sponsors/ai" - } - ], + "../node_modules/socket.io": { + "version": "4.7.2", + "license": "MIT", "dependencies": { - "escalade": "^3.1.1", - "picocolors": "^1.0.0" - }, - "bin": { - "update-browserslist-db": "cli.js" + "accepts": "~1.3.4", + "base64id": "~2.0.0", + "cors": "~2.8.5", + "debug": "~4.3.2", + "engine.io": "~6.5.2", + "socket.io-adapter": "~2.5.2", + "socket.io-parser": "~4.2.4" }, - "peerDependencies": { - "browserslist": ">= 4.21.0" + "engines": { + "node": ">=10.2.0" } }, - "node_modules/uri-js": { - "version": "4.4.1", - "resolved": "https://registry.npmjs.org/uri-js/-/uri-js-4.4.1.tgz", - "integrity": "sha512-7rKUyy33Q1yc98pQ1DAmLtwX109F7TIfWlW1Ydo8Wl1ii1SeHieeh0HHfPeL2fMXK6z0s8ecKs9frCuLJvndBg==", - "dev": true, + "../node_modules/socket.io-adapter": { + "version": "2.5.5", + "license": "MIT", "dependencies": { - "punycode": "^2.1.0" + "debug": "~4.3.4", + "ws": "~8.17.1" } }, - "node_modules/use-callback-ref": { - "version": "1.3.0", - "resolved": "https://registry.npmjs.org/use-callback-ref/-/use-callback-ref-1.3.0.tgz", - "integrity": "sha512-3FT9PRuRdbB9HfXhEq35u4oZkvpJ5kuYbpqhCfmiZyReuRgpnhDlbr2ZEnnuS0RrJAPn6l23xjFg9kpDM+Ms7w==", + "../node_modules/socket.io-adapter/node_modules/debug": { + "version": "4.3.6", + "license": "MIT", "dependencies": { - "tslib": "^2.0.0" + "ms": "2.1.2" }, "engines": { - "node": ">=10" - }, - "peerDependencies": { - "@types/react": "^16.8.0 || ^17.0.0 || ^18.0.0", - "react": "^16.8.0 || ^17.0.0 || ^18.0.0" + "node": ">=6.0" }, "peerDependenciesMeta": { - "@types/react": { + "supports-color": { "optional": true } } }, - "node_modules/use-sidecar": { - "version": "1.1.2", - "resolved": "https://registry.npmjs.org/use-sidecar/-/use-sidecar-1.1.2.tgz", - "integrity": "sha512-epTbsLuzZ7lPClpz2TyryBfztm7m+28DlEv2ZCQ3MDr5ssiwyOwGH/e5F9CkfWjJ1t4clvI58yF822/GUkjjhw==", + "../node_modules/socket.io-adapter/node_modules/ms": { + "version": "2.1.2", + "license": "MIT" + }, + "../node_modules/socket.io-parser": { + "version": "4.2.4", + "license": "MIT", "dependencies": { - "detect-node-es": "^1.1.0", - "tslib": "^2.0.0" + "@socket.io/component-emitter": "~3.1.0", + "debug": "~4.3.1" }, "engines": { - "node": ">=10" + "node": ">=10.0.0" + } + }, + "../node_modules/socket.io-parser/node_modules/debug": { + "version": "4.3.4", + "license": "MIT", + "dependencies": { + "ms": "2.1.2" }, - "peerDependencies": { - "@types/react": "^16.9.0 || ^17.0.0 || ^18.0.0", - "react": "^16.8.0 || ^17.0.0 || ^18.0.0" + "engines": { + "node": ">=6.0" }, "peerDependenciesMeta": { - "@types/react": { + "supports-color": { "optional": true } } }, - "node_modules/vite": { - "version": "4.4.4", - "resolved": "https://registry.npmjs.org/vite/-/vite-4.4.4.tgz", - "integrity": "sha512-4mvsTxjkveWrKDJI70QmelfVqTm+ihFAb6+xf4sjEU2TmUCTlVX87tmg/QooPEMQb/lM9qGHT99ebqPziEd3wg==", - "dev": true, + "../node_modules/socket.io-parser/node_modules/ms": { + "version": "2.1.2", + "license": "MIT" + }, + "../node_modules/socket.io/node_modules/debug": { + "version": "4.3.4", + "license": "MIT", "dependencies": { - "esbuild": "^0.18.10", - "postcss": "^8.4.25", - "rollup": "^3.25.2" - }, - "bin": { - "vite": "bin/vite.js" + "ms": "2.1.2" }, "engines": { - "node": "^14.18.0 || >=16.0.0" - }, - "funding": { - "url": "https://github.com/vitejs/vite?sponsor=1" - }, - "optionalDependencies": { - "fsevents": "~2.3.2" - }, - "peerDependencies": { - "@types/node": ">= 14", - "less": "*", - "lightningcss": "^1.21.0", - "sass": "*", - "stylus": "*", - "sugarss": "*", - "terser": "^5.4.0" + "node": ">=6.0" }, "peerDependenciesMeta": { - "@types/node": { - "optional": true - }, - "less": { - "optional": true - }, - "lightningcss": { - "optional": true - }, - "sass": { - "optional": true - }, - "stylus": { - "optional": true - }, - "sugarss": { - "optional": true - }, - "terser": { + "supports-color": { "optional": true } } }, - "node_modules/which": { - "version": "2.0.2", - "resolved": "https://registry.npmjs.org/which/-/which-2.0.2.tgz", - "integrity": "sha512-BLI3Tl1TW3Pvl70l3yq3Y64i+awpwXqsGBYWkkqMtnbXgrMD+yj7rhW0kuEDxzJaYXGjEW5ogapKNMEKNMjibA==", - "dev": true, + "../node_modules/socket.io/node_modules/ms": { + "version": "2.1.2", + "license": "MIT" + }, + "../node_modules/socks": { + "version": "2.8.3", + "license": "MIT", "dependencies": { - "isexe": "^2.0.0" + "ip-address": "^9.0.5", + "smart-buffer": "^4.2.0" }, - "bin": { - "node-which": "bin/node-which" + "engines": { + "node": ">= 10.0.0", + "npm": ">= 3.0.0" + } + }, + "../node_modules/sparse-bitfield": { + "version": "3.0.3", + "license": "MIT", + "optional": true, + "dependencies": { + "memory-pager": "^1.0.2" + } + }, + "../node_modules/sprintf-js": { + "version": "1.1.3", + "license": "BSD-3-Clause" + }, + "../node_modules/statuses": { + "version": "2.0.1", + "license": "MIT", + "engines": { + "node": ">= 0.8" + } + }, + "../node_modules/supports-color": { + "version": "5.5.0", + "dev": true, + "license": "MIT", + "dependencies": { + "has-flag": "^3.0.0" }, "engines": { - "node": ">= 8" + "node": ">=4" } }, - "node_modules/which-boxed-primitive": { - "version": "1.0.2", - "resolved": "https://registry.npmjs.org/which-boxed-primitive/-/which-boxed-primitive-1.0.2.tgz", - "integrity": "sha512-bwZdv0AKLpplFY2KZRX6TvyuN7ojjr7lwkg6ml0roIy9YeuSr7JS372qlNW18UQYzgYK9ziGcerWqZOmEn9VNg==", + "../node_modules/to-regex-range": { + "version": "5.0.1", "dev": true, + "license": "MIT", "dependencies": { - "is-bigint": "^1.0.1", - "is-boolean-object": "^1.1.0", - "is-number-object": "^1.0.4", - "is-string": "^1.0.5", - "is-symbol": "^1.0.3" + "is-number": "^7.0.0" }, - "funding": { - "url": "https://github.com/sponsors/ljharb" + "engines": { + "node": ">=8.0" } }, - "node_modules/which-typed-array": { - "version": "1.1.10", - "resolved": "https://registry.npmjs.org/which-typed-array/-/which-typed-array-1.1.10.tgz", - "integrity": "sha512-uxoA5vLUfRPdjCuJ1h5LlYdmTLbYfums398v3WLkM+i/Wltl2/XyZpQWKbN++ck5L64SR/grOHqtXCUKmlZPNA==", + "../node_modules/toidentifier": { + "version": "1.0.1", + "license": "MIT", + "engines": { + "node": ">=0.6" + } + }, + "../node_modules/touch": { + "version": "3.1.0", "dev": true, + "license": "ISC", "dependencies": { - "available-typed-arrays": "^1.0.5", - "call-bind": "^1.0.2", - "for-each": "^0.3.3", - "gopd": "^1.0.1", - "has-tostringtag": "^1.0.0", - "is-typed-array": "^1.1.10" + "nopt": "~1.0.10" + }, + "bin": { + "nodetouch": "bin/nodetouch.js" + } + }, + "../node_modules/tr46": { + "version": "3.0.0", + "license": "MIT", + "dependencies": { + "punycode": "^2.1.1" }, "engines": { - "node": ">= 0.4" + "node": ">=12" + } + }, + "../node_modules/type-is": { + "version": "1.6.18", + "license": "MIT", + "dependencies": { + "media-typer": "0.3.0", + "mime-types": "~2.1.24" }, - "funding": { - "url": "https://github.com/sponsors/ljharb" + "engines": { + "node": ">= 0.6" } }, - "node_modules/wrappy": { - "version": "1.0.2", - "resolved": "https://registry.npmjs.org/wrappy/-/wrappy-1.0.2.tgz", - "integrity": "sha512-l4Sp/DRseor9wL6EvV2+TuQn63dMkPjZ/sp9XkghTEbV9KlPS1xUsZ3u7/IQO4wxtcFB4bgpQPRcR3QCvezPcQ==", - "dev": true + "../node_modules/undefsafe": { + "version": "2.0.5", + "dev": true, + "license": "MIT" }, - "node_modules/ws": { - "version": "8.11.0", - "resolved": "https://registry.npmjs.org/ws/-/ws-8.11.0.tgz", - "integrity": "sha512-HPG3wQd9sNQoT9xHyNCXoDUa+Xw/VevmY9FoHyQ+g+rrMn4j6FB4np7Z0OhdTgjx6MgQLK7jwSy1YecU1+4Asg==", + "../node_modules/unpipe": { + "version": "1.0.0", + "license": "MIT", + "engines": { + "node": ">= 0.8" + } + }, + "../node_modules/utils-merge": { + "version": "1.0.1", + "license": "MIT", + "engines": { + "node": ">= 0.4.0" + } + }, + "../node_modules/vary": { + "version": "1.1.2", + "license": "MIT", + "engines": { + "node": ">= 0.8" + } + }, + "../node_modules/webidl-conversions": { + "version": "7.0.0", + "license": "BSD-2-Clause", + "engines": { + "node": ">=12" + } + }, + "../node_modules/whatwg-url": { + "version": "11.0.0", + "license": "MIT", + "dependencies": { + "tr46": "^3.0.0", + "webidl-conversions": "^7.0.0" + }, + "engines": { + "node": ">=12" + } + }, + "../node_modules/ws": { + "version": "8.17.1", + "license": "MIT", "engines": { "node": ">=10.0.0" }, "peerDependencies": { "bufferutil": "^4.0.1", - "utf-8-validate": "^5.0.2" + "utf-8-validate": ">=5.0.2" }, "peerDependenciesMeta": { "bufferutil": { "optional": true }, - "utf-8-validate": { - "optional": true - } - } - }, - "node_modules/xmlhttprequest-ssl": { - "version": "2.0.0", - "resolved": "https://registry.npmjs.org/xmlhttprequest-ssl/-/xmlhttprequest-ssl-2.0.0.tgz", - "integrity": "sha512-QKxVRxiRACQcVuQEYFsI1hhkrMlrXHPegbbd1yn9UHOmRxY+si12nQYzri3vbzt8VdTTRviqcKxcyllFas5z2A==", - "engines": { - "node": ">=0.4.0" - } - }, - "node_modules/yallist": { - "version": "3.1.1", - "resolved": "https://registry.npmjs.org/yallist/-/yallist-3.1.1.tgz", - "integrity": "sha512-a4UGQaWPH59mOXUYnAG2ewncQS4i4F43Tv3JoAM+s2VDAmS9NsK8GpDMLrCHPksFT7h3K6TOoUNn2pb7RoXx4g==", - "dev": true - }, - "node_modules/yaml": { - "version": "1.10.2", - "resolved": "https://registry.npmjs.org/yaml/-/yaml-1.10.2.tgz", - "integrity": "sha512-r3vXyErRCYJ7wg28yvBY5VSoAF8ZvlcW9/BwUzEtUsjvX/DKs24dIkuwjtuprwJJHsbyUbLApepYTR1BN4uHrg==", - "engines": { - "node": ">= 6" + "utf-8-validate": { + "optional": true + } } }, - "node_modules/yocto-queue": { - "version": "0.1.0", - "resolved": "https://registry.npmjs.org/yocto-queue/-/yocto-queue-0.1.0.tgz", - "integrity": "sha512-rVksvsnNCdJ/ohGc6xgPwyN8eheCxsiLM8mxuE/t/mOVqJewPuO1miLpTHQiRgTKCLexL4MeAFVagts7HmNZ2Q==", + "../node_modules/yallist": { + "version": "4.0.0", + "license": "ISC" + }, + "node_modules/@aashutoshrathi/word-wrap": { + "version": "1.2.6", "dev": true, + "license": "MIT", "engines": { - "node": ">=10" - }, - "funding": { - "url": "https://github.com/sponsors/sindresorhus" + "node": ">=0.10.0" } - } - }, - "dependencies": { - "@aashutoshrathi/word-wrap": { - "version": "1.2.6", - "resolved": "https://registry.npmjs.org/@aashutoshrathi/word-wrap/-/word-wrap-1.2.6.tgz", - "integrity": "sha512-1Yjs2SvM8TflER/OD3cOjhWWOZb58A2t7wpE2S9XfBYTiIl+XFhQG2bjy4Pu1I+EAlCNUzRDYDdFwFYUKvXcIA==", - "dev": true }, - "@ampproject/remapping": { + "node_modules/@ampproject/remapping": { "version": "2.2.1", - "resolved": "https://registry.npmjs.org/@ampproject/remapping/-/remapping-2.2.1.tgz", - "integrity": "sha512-lFMjJTrFL3j7L9yBxwYfCq2k6qqwHyzuUl/XBnif78PWTJYyL/dfowQHWE3sp6U6ZzqWiiIZnpTMO96zhkjwtg==", "dev": true, - "requires": { + "license": "Apache-2.0", + "dependencies": { "@jridgewell/gen-mapping": "^0.3.0", "@jridgewell/trace-mapping": "^0.3.9" + }, + "engines": { + "node": ">=6.0.0" } }, - "@babel/code-frame": { - "version": "7.22.5", - "resolved": "https://registry.npmjs.org/@babel/code-frame/-/code-frame-7.22.5.tgz", - "integrity": "sha512-Xmwn266vad+6DAqEB2A6V/CcZVp62BbwVmcOJc2RPuwih1kw02TjQvWVWlcKGbBPd+8/0V5DEkOcizRGYsspYQ==", - "requires": { - "@babel/highlight": "^7.22.5" + "node_modules/@babel/code-frame": { + "version": "7.24.7", + "license": "MIT", + "dependencies": { + "@babel/highlight": "^7.24.7", + "picocolors": "^1.0.0" + }, + "engines": { + "node": ">=6.9.0" } }, - "@babel/compat-data": { + "node_modules/@babel/compat-data": { "version": "7.22.9", - "resolved": "https://registry.npmjs.org/@babel/compat-data/-/compat-data-7.22.9.tgz", - "integrity": "sha512-5UamI7xkUcJ3i9qVDS+KFDEK8/7oJ55/sJMB1Ge7IEapr7KfdfV/HErR+koZwOfd+SgtFKOKRhRakdg++DcJpQ==", - "dev": true + "dev": true, + "license": "MIT", + "engines": { + "node": ">=6.9.0" + } }, - "@babel/core": { + "node_modules/@babel/core": { "version": "7.22.9", - "resolved": "https://registry.npmjs.org/@babel/core/-/core-7.22.9.tgz", - "integrity": "sha512-G2EgeufBcYw27U4hhoIwFcgc1XU7TlXJ3mv04oOv1WCuo900U/anZSPzEqNjwdjgffkk2Gs0AN0dW1CKVLcG7w==", "dev": true, - "requires": { + "license": "MIT", + "dependencies": { "@ampproject/remapping": "^2.2.0", "@babel/code-frame": "^7.22.5", "@babel/generator": "^7.22.9", @@ -5466,1411 +1641,1522 @@ "gensync": "^1.0.0-beta.2", "json5": "^2.2.2", "semver": "^6.3.1" + }, + "engines": { + "node": ">=6.9.0" + }, + "funding": { + "type": "opencollective", + "url": "https://opencollective.com/babel" } }, - "@babel/generator": { - "version": "7.22.9", - "resolved": "https://registry.npmjs.org/@babel/generator/-/generator-7.22.9.tgz", - "integrity": "sha512-KtLMbmicyuK2Ak/FTCJVbDnkN1SlT8/kceFTiuDiiRUUSMnHMidxSCdG4ndkTOHHpoomWe/4xkvHkEOncwjYIw==", + "node_modules/@babel/generator": { + "version": "7.25.0", "dev": true, - "requires": { - "@babel/types": "^7.22.5", - "@jridgewell/gen-mapping": "^0.3.2", - "@jridgewell/trace-mapping": "^0.3.17", + "license": "MIT", + "dependencies": { + "@babel/types": "^7.25.0", + "@jridgewell/gen-mapping": "^0.3.5", + "@jridgewell/trace-mapping": "^0.3.25", "jsesc": "^2.5.1" + }, + "engines": { + "node": ">=6.9.0" } }, - "@babel/helper-compilation-targets": { + "node_modules/@babel/helper-compilation-targets": { "version": "7.22.9", - "resolved": "https://registry.npmjs.org/@babel/helper-compilation-targets/-/helper-compilation-targets-7.22.9.tgz", - "integrity": "sha512-7qYrNM6HjpnPHJbopxmb8hSPoZ0gsX8IvUS32JGVoy+pU9e5N0nLr1VjJoR6kA4d9dmGLxNYOjeB8sUDal2WMw==", "dev": true, - "requires": { + "license": "MIT", + "dependencies": { "@babel/compat-data": "^7.22.9", "@babel/helper-validator-option": "^7.22.5", "browserslist": "^4.21.9", "lru-cache": "^5.1.1", "semver": "^6.3.1" + }, + "engines": { + "node": ">=6.9.0" + }, + "peerDependencies": { + "@babel/core": "^7.0.0" } }, - "@babel/helper-environment-visitor": { - "version": "7.22.5", - "resolved": "https://registry.npmjs.org/@babel/helper-environment-visitor/-/helper-environment-visitor-7.22.5.tgz", - "integrity": "sha512-XGmhECfVA/5sAt+H+xpSg0mfrHq6FzNr9Oxh7PSEBBRUb/mL7Kz3NICXb194rCqAEdxkhPT1a88teizAFyvk8Q==", - "dev": true - }, - "@babel/helper-function-name": { - "version": "7.22.5", - "resolved": "https://registry.npmjs.org/@babel/helper-function-name/-/helper-function-name-7.22.5.tgz", - "integrity": "sha512-wtHSq6jMRE3uF2otvfuD3DIvVhOsSNshQl0Qrd7qC9oQJzHvOL4qQXlQn2916+CXGywIjpGuIkoyZRRxHPiNQQ==", - "dev": true, - "requires": { - "@babel/template": "^7.22.5", - "@babel/types": "^7.22.5" - } - }, - "@babel/helper-hoist-variables": { + "node_modules/@babel/helper-environment-visitor": { "version": "7.22.5", - "resolved": "https://registry.npmjs.org/@babel/helper-hoist-variables/-/helper-hoist-variables-7.22.5.tgz", - "integrity": "sha512-wGjk9QZVzvknA6yKIUURb8zY3grXCcOZt+/7Wcy8O2uctxhplmUPkOdlgoNhmdVee2c92JXbf1xpMtVNbfoxRw==", "dev": true, - "requires": { - "@babel/types": "^7.22.5" + "license": "MIT", + "engines": { + "node": ">=6.9.0" } }, - "@babel/helper-module-imports": { + "node_modules/@babel/helper-module-imports": { "version": "7.22.5", - "resolved": "https://registry.npmjs.org/@babel/helper-module-imports/-/helper-module-imports-7.22.5.tgz", - "integrity": "sha512-8Dl6+HD/cKifutF5qGd/8ZJi84QeAKh+CEe1sBzz8UayBBGg1dAIJrdHOcOM5b2MpzWL2yuotJTtGjETq0qjXg==", - "requires": { + "license": "MIT", + "dependencies": { "@babel/types": "^7.22.5" + }, + "engines": { + "node": ">=6.9.0" } }, - "@babel/helper-module-transforms": { + "node_modules/@babel/helper-module-transforms": { "version": "7.22.9", - "resolved": "https://registry.npmjs.org/@babel/helper-module-transforms/-/helper-module-transforms-7.22.9.tgz", - "integrity": "sha512-t+WA2Xn5K+rTeGtC8jCsdAH52bjggG5TKRuRrAGNM/mjIbO4GxvlLMFOEz9wXY5I2XQ60PMFsAG2WIcG82dQMQ==", "dev": true, - "requires": { + "license": "MIT", + "dependencies": { "@babel/helper-environment-visitor": "^7.22.5", "@babel/helper-module-imports": "^7.22.5", "@babel/helper-simple-access": "^7.22.5", "@babel/helper-split-export-declaration": "^7.22.6", "@babel/helper-validator-identifier": "^7.22.5" + }, + "engines": { + "node": ">=6.9.0" + }, + "peerDependencies": { + "@babel/core": "^7.0.0" } }, - "@babel/helper-plugin-utils": { + "node_modules/@babel/helper-plugin-utils": { "version": "7.22.5", - "resolved": "https://registry.npmjs.org/@babel/helper-plugin-utils/-/helper-plugin-utils-7.22.5.tgz", - "integrity": "sha512-uLls06UVKgFG9QD4OeFYLEGteMIAa5kpTPcFL28yuCIIzsf6ZyKZMllKVOCZFhiZ5ptnwX4mtKdWCBE/uT4amg==", - "dev": true + "dev": true, + "license": "MIT", + "engines": { + "node": ">=6.9.0" + } }, - "@babel/helper-simple-access": { + "node_modules/@babel/helper-simple-access": { "version": "7.22.5", - "resolved": "https://registry.npmjs.org/@babel/helper-simple-access/-/helper-simple-access-7.22.5.tgz", - "integrity": "sha512-n0H99E/K+Bika3++WNL17POvo4rKWZ7lZEp1Q+fStVbUi8nxPQEBOlTmCOxW/0JsS56SKKQ+ojAe2pHKJHN35w==", "dev": true, - "requires": { + "license": "MIT", + "dependencies": { "@babel/types": "^7.22.5" + }, + "engines": { + "node": ">=6.9.0" } }, - "@babel/helper-split-export-declaration": { + "node_modules/@babel/helper-split-export-declaration": { "version": "7.22.6", - "resolved": "https://registry.npmjs.org/@babel/helper-split-export-declaration/-/helper-split-export-declaration-7.22.6.tgz", - "integrity": "sha512-AsUnxuLhRYsisFiaJwvp1QF+I3KjD5FOxut14q/GzovUe6orHLesW2C7d754kRm53h5gqrz6sFl6sxc4BVtE/g==", "dev": true, - "requires": { + "license": "MIT", + "dependencies": { "@babel/types": "^7.22.5" + }, + "engines": { + "node": ">=6.9.0" } }, - "@babel/helper-string-parser": { - "version": "7.22.5", - "resolved": "https://registry.npmjs.org/@babel/helper-string-parser/-/helper-string-parser-7.22.5.tgz", - "integrity": "sha512-mM4COjgZox8U+JcXQwPijIZLElkgEpO5rsERVDJTc2qfCDfERyob6k5WegS14SX18IIjv+XD+GrqNumY5JRCDw==" + "node_modules/@babel/helper-string-parser": { + "version": "7.24.8", + "license": "MIT", + "engines": { + "node": ">=6.9.0" + } }, - "@babel/helper-validator-identifier": { - "version": "7.22.5", - "resolved": "https://registry.npmjs.org/@babel/helper-validator-identifier/-/helper-validator-identifier-7.22.5.tgz", - "integrity": "sha512-aJXu+6lErq8ltp+JhkJUfk1MTGyuA4v7f3pA+BJ5HLfNC6nAQ0Cpi9uOquUj8Hehg0aUiHzWQbOVJGao6ztBAQ==" + "node_modules/@babel/helper-validator-identifier": { + "version": "7.24.7", + "license": "MIT", + "engines": { + "node": ">=6.9.0" + } }, - "@babel/helper-validator-option": { + "node_modules/@babel/helper-validator-option": { "version": "7.22.5", - "resolved": "https://registry.npmjs.org/@babel/helper-validator-option/-/helper-validator-option-7.22.5.tgz", - "integrity": "sha512-R3oB6xlIVKUnxNUxbmgq7pKjxpru24zlimpE8WK47fACIlM0II/Hm1RS8IaOI7NgCr6LNS+jl5l75m20npAziw==", - "dev": true + "dev": true, + "license": "MIT", + "engines": { + "node": ">=6.9.0" + } }, - "@babel/helpers": { + "node_modules/@babel/helpers": { "version": "7.22.6", - "resolved": "https://registry.npmjs.org/@babel/helpers/-/helpers-7.22.6.tgz", - "integrity": "sha512-YjDs6y/fVOYFV8hAf1rxd1QvR9wJe1pDBZ2AREKq/SDayfPzgk0PBnVuTCE5X1acEpMMNOVUqoe+OwiZGJ+OaA==", "dev": true, - "requires": { + "license": "MIT", + "dependencies": { "@babel/template": "^7.22.5", "@babel/traverse": "^7.22.6", "@babel/types": "^7.22.5" + }, + "engines": { + "node": ">=6.9.0" } }, - "@babel/highlight": { - "version": "7.22.5", - "resolved": "https://registry.npmjs.org/@babel/highlight/-/highlight-7.22.5.tgz", - "integrity": "sha512-BSKlD1hgnedS5XRnGOljZawtag7H1yPfQp0tdNJCHoH6AZ+Pcm9VvkrK59/Yy593Ypg0zMxH2BxD1VPYUQ7UIw==", - "requires": { - "@babel/helper-validator-identifier": "^7.22.5", - "chalk": "^2.0.0", - "js-tokens": "^4.0.0" + "node_modules/@babel/highlight": { + "version": "7.24.7", + "license": "MIT", + "dependencies": { + "@babel/helper-validator-identifier": "^7.24.7", + "chalk": "^2.4.2", + "js-tokens": "^4.0.0", + "picocolors": "^1.0.0" + }, + "engines": { + "node": ">=6.9.0" } }, - "@babel/parser": { - "version": "7.22.7", - "resolved": "https://registry.npmjs.org/@babel/parser/-/parser-7.22.7.tgz", - "integrity": "sha512-7NF8pOkHP5o2vpmGgNGcfAeCvOYhGLyA3Z4eBQkT1RJlWu47n63bCs93QfJ2hIAFCil7L5P2IWhs1oToVgrL0Q==", - "dev": true + "node_modules/@babel/parser": { + "version": "7.25.3", + "dev": true, + "license": "MIT", + "dependencies": { + "@babel/types": "^7.25.2" + }, + "bin": { + "parser": "bin/babel-parser.js" + }, + "engines": { + "node": ">=6.0.0" + } }, - "@babel/plugin-transform-react-jsx-self": { + "node_modules/@babel/plugin-transform-react-jsx-self": { "version": "7.22.5", - "resolved": "https://registry.npmjs.org/@babel/plugin-transform-react-jsx-self/-/plugin-transform-react-jsx-self-7.22.5.tgz", - "integrity": "sha512-nTh2ogNUtxbiSbxaT4Ds6aXnXEipHweN9YRgOX/oNXdf0cCrGn/+2LozFa3lnPV5D90MkjhgckCPBrsoSc1a7g==", "dev": true, - "requires": { + "license": "MIT", + "dependencies": { "@babel/helper-plugin-utils": "^7.22.5" + }, + "engines": { + "node": ">=6.9.0" + }, + "peerDependencies": { + "@babel/core": "^7.0.0-0" } }, - "@babel/plugin-transform-react-jsx-source": { + "node_modules/@babel/plugin-transform-react-jsx-source": { "version": "7.22.5", - "resolved": "https://registry.npmjs.org/@babel/plugin-transform-react-jsx-source/-/plugin-transform-react-jsx-source-7.22.5.tgz", - "integrity": "sha512-yIiRO6yobeEIaI0RTbIr8iAK9FcBHLtZq0S89ZPjDLQXBA4xvghaKqI0etp/tF3htTM0sazJKKLz9oEiGRtu7w==", "dev": true, - "requires": { + "license": "MIT", + "dependencies": { "@babel/helper-plugin-utils": "^7.22.5" + }, + "engines": { + "node": ">=6.9.0" + }, + "peerDependencies": { + "@babel/core": "^7.0.0-0" } }, - "@babel/runtime": { + "node_modules/@babel/runtime": { "version": "7.22.6", - "resolved": "https://registry.npmjs.org/@babel/runtime/-/runtime-7.22.6.tgz", - "integrity": "sha512-wDb5pWm4WDdF6LFUde3Jl8WzPA+3ZbxYqkC6xAXuD3irdEHN1k0NfTRrJD8ZD378SJ61miMLCqIOXYhd8x+AJQ==", - "requires": { + "license": "MIT", + "dependencies": { "regenerator-runtime": "^0.13.11" + }, + "engines": { + "node": ">=6.9.0" } }, - "@babel/template": { - "version": "7.22.5", - "resolved": "https://registry.npmjs.org/@babel/template/-/template-7.22.5.tgz", - "integrity": "sha512-X7yV7eiwAxdj9k94NEylvbVHLiVG1nvzCV2EAowhxLTwODV1jl9UzZ48leOC0sH7OnuHrIkllaBgneUykIcZaw==", + "node_modules/@babel/template": { + "version": "7.25.0", "dev": true, - "requires": { - "@babel/code-frame": "^7.22.5", - "@babel/parser": "^7.22.5", - "@babel/types": "^7.22.5" + "license": "MIT", + "dependencies": { + "@babel/code-frame": "^7.24.7", + "@babel/parser": "^7.25.0", + "@babel/types": "^7.25.0" + }, + "engines": { + "node": ">=6.9.0" } }, - "@babel/traverse": { - "version": "7.22.8", - "resolved": "https://registry.npmjs.org/@babel/traverse/-/traverse-7.22.8.tgz", - "integrity": "sha512-y6LPR+wpM2I3qJrsheCTwhIinzkETbplIgPBbwvqPKc+uljeA5gP+3nP8irdYt1mjQaDnlIcG+dw8OjAco4GXw==", + "node_modules/@babel/traverse": { + "version": "7.25.3", "dev": true, - "requires": { - "@babel/code-frame": "^7.22.5", - "@babel/generator": "^7.22.7", - "@babel/helper-environment-visitor": "^7.22.5", - "@babel/helper-function-name": "^7.22.5", - "@babel/helper-hoist-variables": "^7.22.5", - "@babel/helper-split-export-declaration": "^7.22.6", - "@babel/parser": "^7.22.7", - "@babel/types": "^7.22.5", - "debug": "^4.1.0", + "license": "MIT", + "dependencies": { + "@babel/code-frame": "^7.24.7", + "@babel/generator": "^7.25.0", + "@babel/parser": "^7.25.3", + "@babel/template": "^7.25.0", + "@babel/types": "^7.25.2", + "debug": "^4.3.1", "globals": "^11.1.0" + }, + "engines": { + "node": ">=6.9.0" } }, - "@babel/types": { - "version": "7.22.5", - "resolved": "https://registry.npmjs.org/@babel/types/-/types-7.22.5.tgz", - "integrity": "sha512-zo3MIHGOkPOfoRXitsgHLjEXmlDaD/5KU1Uzuc9GNiZPhSqVxVRtxuPaSBZDsYZ9qV88AjtMtWW7ww98loJ9KA==", - "requires": { - "@babel/helper-string-parser": "^7.22.5", - "@babel/helper-validator-identifier": "^7.22.5", + "node_modules/@babel/types": { + "version": "7.25.2", + "license": "MIT", + "dependencies": { + "@babel/helper-string-parser": "^7.24.8", + "@babel/helper-validator-identifier": "^7.24.7", "to-fast-properties": "^2.0.0" + }, + "engines": { + "node": ">=6.9.0" } }, - "@chakra-ui/accordion": { - "version": "2.2.0", - "resolved": "https://registry.npmjs.org/@chakra-ui/accordion/-/accordion-2.2.0.tgz", - "integrity": "sha512-2IK1iLzTZ22u8GKPPPn65mqJdZidn4AvkgAbv17ISdKA07VHJ8jSd4QF1T5iCXjKfZ0XaXozmhP4kDhjwF2IbQ==", - "requires": { - "@chakra-ui/descendant": "3.0.14", - "@chakra-ui/icon": "3.0.16", - "@chakra-ui/react-context": "2.0.8", - "@chakra-ui/react-use-controllable-state": "2.0.8", - "@chakra-ui/react-use-merge-refs": "2.0.7", + "node_modules/@chakra-ui/accordion": { + "version": "2.3.1", + "license": "MIT", + "dependencies": { + "@chakra-ui/descendant": "3.1.0", + "@chakra-ui/icon": "3.2.0", + "@chakra-ui/react-context": "2.1.0", + "@chakra-ui/react-use-controllable-state": "2.1.0", + "@chakra-ui/react-use-merge-refs": "2.1.0", "@chakra-ui/shared-utils": "2.0.5", - "@chakra-ui/transition": "2.0.16" + "@chakra-ui/transition": "2.1.0" + }, + "peerDependencies": { + "@chakra-ui/system": ">=2.0.0", + "framer-motion": ">=4.0.0", + "react": ">=18" } }, - "@chakra-ui/alert": { - "version": "2.1.0", - "resolved": "https://registry.npmjs.org/@chakra-ui/alert/-/alert-2.1.0.tgz", - "integrity": "sha512-OcfHwoXI5VrmM+tHJTHT62Bx6TfyfCxSa0PWUOueJzSyhlUOKBND5we6UtrOB7D0jwX45qKKEDJOLG5yCG21jQ==", - "requires": { - "@chakra-ui/icon": "3.0.16", - "@chakra-ui/react-context": "2.0.8", + "node_modules/@chakra-ui/alert": { + "version": "2.2.2", + "license": "MIT", + "dependencies": { + "@chakra-ui/icon": "3.2.0", + "@chakra-ui/react-context": "2.1.0", "@chakra-ui/shared-utils": "2.0.5", - "@chakra-ui/spinner": "2.0.13" + "@chakra-ui/spinner": "2.1.0" + }, + "peerDependencies": { + "@chakra-ui/system": ">=2.0.0", + "react": ">=18" } }, - "@chakra-ui/anatomy": { - "version": "2.1.2", - "resolved": "https://registry.npmjs.org/@chakra-ui/anatomy/-/anatomy-2.1.2.tgz", - "integrity": "sha512-pKfOS/mztc4sUXHNc8ypJ1gPWSolWT770jrgVRfolVbYlki8y5Y+As996zMF6k5lewTu6j9DQequ7Cc9a69IVQ==" - }, - "@chakra-ui/avatar": { - "version": "2.2.11", - "resolved": "https://registry.npmjs.org/@chakra-ui/avatar/-/avatar-2.2.11.tgz", - "integrity": "sha512-CJFkoWvlCTDJTUBrKA/aVyG5Zz6TBEIVmmsJtqC6VcQuVDTxkWod8ruXnjb0LT2DUveL7xR5qZM9a5IXcsH3zg==", - "requires": { - "@chakra-ui/image": "2.0.16", + "node_modules/@chakra-ui/anatomy": { + "version": "2.2.2", + "license": "MIT" + }, + "node_modules/@chakra-ui/avatar": { + "version": "2.3.0", + "license": "MIT", + "dependencies": { + "@chakra-ui/image": "2.1.0", "@chakra-ui/react-children-utils": "2.0.6", - "@chakra-ui/react-context": "2.0.8", + "@chakra-ui/react-context": "2.1.0", "@chakra-ui/shared-utils": "2.0.5" + }, + "peerDependencies": { + "@chakra-ui/system": ">=2.0.0", + "react": ">=18" } }, - "@chakra-ui/breadcrumb": { - "version": "2.1.5", - "resolved": "https://registry.npmjs.org/@chakra-ui/breadcrumb/-/breadcrumb-2.1.5.tgz", - "integrity": "sha512-p3eQQrHQBkRB69xOmNyBJqEdfCrMt+e0eOH+Pm/DjFWfIVIbnIaFbmDCeWClqlLa21Ypc6h1hR9jEmvg8kmOog==", - "requires": { + "node_modules/@chakra-ui/breadcrumb": { + "version": "2.2.0", + "license": "MIT", + "dependencies": { "@chakra-ui/react-children-utils": "2.0.6", - "@chakra-ui/react-context": "2.0.8", + "@chakra-ui/react-context": "2.1.0", "@chakra-ui/shared-utils": "2.0.5" + }, + "peerDependencies": { + "@chakra-ui/system": ">=2.0.0", + "react": ">=18" } }, - "@chakra-ui/breakpoint-utils": { + "node_modules/@chakra-ui/breakpoint-utils": { "version": "2.0.8", - "resolved": "https://registry.npmjs.org/@chakra-ui/breakpoint-utils/-/breakpoint-utils-2.0.8.tgz", - "integrity": "sha512-Pq32MlEX9fwb5j5xx8s18zJMARNHlQZH2VH1RZgfgRDpp7DcEgtRW5AInfN5CfqdHLO1dGxA7I3MqEuL5JnIsA==", - "requires": { + "license": "MIT", + "dependencies": { "@chakra-ui/shared-utils": "2.0.5" } }, - "@chakra-ui/button": { - "version": "2.0.18", - "resolved": "https://registry.npmjs.org/@chakra-ui/button/-/button-2.0.18.tgz", - "integrity": "sha512-E3c99+lOm6ou4nQVOTLkG+IdOPMjsQK+Qe7VyP8A/xeAMFONuibrWPRPpprr4ZkB4kEoLMfNuyH2+aEza3ScUA==", - "requires": { - "@chakra-ui/react-context": "2.0.8", - "@chakra-ui/react-use-merge-refs": "2.0.7", + "node_modules/@chakra-ui/button": { + "version": "2.1.0", + "license": "MIT", + "dependencies": { + "@chakra-ui/react-context": "2.1.0", + "@chakra-ui/react-use-merge-refs": "2.1.0", "@chakra-ui/shared-utils": "2.0.5", - "@chakra-ui/spinner": "2.0.13" + "@chakra-ui/spinner": "2.1.0" + }, + "peerDependencies": { + "@chakra-ui/system": ">=2.0.0", + "react": ">=18" } }, - "@chakra-ui/card": { - "version": "2.1.6", - "resolved": "https://registry.npmjs.org/@chakra-ui/card/-/card-2.1.6.tgz", - "integrity": "sha512-fFd/WAdRNVY/WOSQv4skpy0WeVhhI0f7dTY1Sm0jVl0KLmuP/GnpsWtKtqWjNcV00K963EXDyhlk6+9oxbP4gw==", - "requires": { + "node_modules/@chakra-ui/card": { + "version": "2.2.0", + "license": "MIT", + "dependencies": { "@chakra-ui/shared-utils": "2.0.5" + }, + "peerDependencies": { + "@chakra-ui/system": ">=2.0.0", + "react": ">=18" } }, - "@chakra-ui/checkbox": { - "version": "2.2.15", - "resolved": "https://registry.npmjs.org/@chakra-ui/checkbox/-/checkbox-2.2.15.tgz", - "integrity": "sha512-Ju2yQjX8azgFa5f6VLPuwdGYobZ+rdbcYqjiks848JvPc75UsPhpS05cb4XlrKT7M16I8txDA5rPJdqqFicHCA==", - "requires": { - "@chakra-ui/form-control": "2.0.18", - "@chakra-ui/react-context": "2.0.8", + "node_modules/@chakra-ui/checkbox": { + "version": "2.3.2", + "license": "MIT", + "dependencies": { + "@chakra-ui/form-control": "2.2.0", + "@chakra-ui/react-context": "2.1.0", "@chakra-ui/react-types": "2.0.7", - "@chakra-ui/react-use-callback-ref": "2.0.7", - "@chakra-ui/react-use-controllable-state": "2.0.8", - "@chakra-ui/react-use-merge-refs": "2.0.7", - "@chakra-ui/react-use-safe-layout-effect": "2.0.5", - "@chakra-ui/react-use-update-effect": "2.0.7", + "@chakra-ui/react-use-callback-ref": "2.1.0", + "@chakra-ui/react-use-controllable-state": "2.1.0", + "@chakra-ui/react-use-merge-refs": "2.1.0", + "@chakra-ui/react-use-safe-layout-effect": "2.1.0", + "@chakra-ui/react-use-update-effect": "2.1.0", "@chakra-ui/shared-utils": "2.0.5", - "@chakra-ui/visually-hidden": "2.0.15", - "@zag-js/focus-visible": "0.2.2" + "@chakra-ui/visually-hidden": "2.2.0", + "@zag-js/focus-visible": "0.16.0" + }, + "peerDependencies": { + "@chakra-ui/system": ">=2.0.0", + "react": ">=18" } }, - "@chakra-ui/clickable": { - "version": "2.0.14", - "resolved": "https://registry.npmjs.org/@chakra-ui/clickable/-/clickable-2.0.14.tgz", - "integrity": "sha512-jfsM1qaD74ZykLHmvmsKRhDyokLUxEfL8Il1VoZMNX5RBI0xW/56vKpLTFF/v/+vLPLS+Te2cZdD4+2O+G6ulA==", - "requires": { - "@chakra-ui/react-use-merge-refs": "2.0.7", + "node_modules/@chakra-ui/clickable": { + "version": "2.1.0", + "license": "MIT", + "dependencies": { + "@chakra-ui/react-use-merge-refs": "2.1.0", "@chakra-ui/shared-utils": "2.0.5" + }, + "peerDependencies": { + "react": ">=18" + } + }, + "node_modules/@chakra-ui/close-button": { + "version": "2.1.1", + "license": "MIT", + "dependencies": { + "@chakra-ui/icon": "3.2.0" + }, + "peerDependencies": { + "@chakra-ui/system": ">=2.0.0", + "react": ">=18" } }, - "@chakra-ui/close-button": { - "version": "2.0.17", - "resolved": "https://registry.npmjs.org/@chakra-ui/close-button/-/close-button-2.0.17.tgz", - "integrity": "sha512-05YPXk456t1Xa3KpqTrvm+7smx+95dmaPiwjiBN3p7LHUQVHJd8ZXSDB0V+WKi419k3cVQeJUdU/azDO2f40sw==", - "requires": { - "@chakra-ui/icon": "3.0.16" + "node_modules/@chakra-ui/color-mode": { + "version": "2.2.0", + "license": "MIT", + "dependencies": { + "@chakra-ui/react-use-safe-layout-effect": "2.1.0" + }, + "peerDependencies": { + "react": ">=18" } }, - "@chakra-ui/color-mode": { - "version": "2.1.12", - "resolved": "https://registry.npmjs.org/@chakra-ui/color-mode/-/color-mode-2.1.12.tgz", - "integrity": "sha512-sYyfJGDoJSLYO+V2hxV9r033qhte5Nw/wAn5yRGGZnEEN1dKPEdWQ3XZvglWSDTNd0w9zkoH2w6vP4FBBYb/iw==", - "requires": { - "@chakra-ui/react-use-safe-layout-effect": "2.0.5" + "node_modules/@chakra-ui/control-box": { + "version": "2.1.0", + "license": "MIT", + "peerDependencies": { + "@chakra-ui/system": ">=2.0.0", + "react": ">=18" } }, - "@chakra-ui/control-box": { - "version": "2.0.13", - "resolved": "https://registry.npmjs.org/@chakra-ui/control-box/-/control-box-2.0.13.tgz", - "integrity": "sha512-FEyrU4crxati80KUF/+1Z1CU3eZK6Sa0Yv7Z/ydtz9/tvGblXW9NFanoomXAOvcIFLbaLQPPATm9Gmpr7VG05A==", - "requires": {} - }, - "@chakra-ui/counter": { - "version": "2.0.14", - "resolved": "https://registry.npmjs.org/@chakra-ui/counter/-/counter-2.0.14.tgz", - "integrity": "sha512-KxcSRfUbb94dP77xTip2myoE7P2HQQN4V5fRJmNAGbzcyLciJ+aDylUU/UxgNcEjawUp6Q242NbWb1TSbKoqog==", - "requires": { + "node_modules/@chakra-ui/counter": { + "version": "2.1.0", + "license": "MIT", + "dependencies": { "@chakra-ui/number-utils": "2.0.7", - "@chakra-ui/react-use-callback-ref": "2.0.7", + "@chakra-ui/react-use-callback-ref": "2.1.0", "@chakra-ui/shared-utils": "2.0.5" + }, + "peerDependencies": { + "react": ">=18" } }, - "@chakra-ui/css-reset": { - "version": "2.1.2", - "resolved": "https://registry.npmjs.org/@chakra-ui/css-reset/-/css-reset-2.1.2.tgz", - "integrity": "sha512-4ySTLd+3iRpp4lX0yI9Yo2uQm2f+qwYGNOZF0cNcfN+4UJCd3IsaWxYRR/Anz+M51NVldZbYzC+TEYC/kpJc4A==", - "requires": {} + "node_modules/@chakra-ui/css-reset": { + "version": "2.3.0", + "license": "MIT", + "peerDependencies": { + "@emotion/react": ">=10.0.35", + "react": ">=18" + } }, - "@chakra-ui/descendant": { - "version": "3.0.14", - "resolved": "https://registry.npmjs.org/@chakra-ui/descendant/-/descendant-3.0.14.tgz", - "integrity": "sha512-+Ahvp9H4HMpfScIv9w1vaecGz7qWAaK1YFHHolz/SIsGLaLGlbdp+5UNabQC7L6TUnzzJDQDxzwif78rTD7ang==", - "requires": { - "@chakra-ui/react-context": "2.0.8", - "@chakra-ui/react-use-merge-refs": "2.0.7" + "node_modules/@chakra-ui/descendant": { + "version": "3.1.0", + "license": "MIT", + "dependencies": { + "@chakra-ui/react-context": "2.1.0", + "@chakra-ui/react-use-merge-refs": "2.1.0" + }, + "peerDependencies": { + "react": ">=18" } }, - "@chakra-ui/dom-utils": { + "node_modules/@chakra-ui/dom-utils": { "version": "2.1.0", - "resolved": "https://registry.npmjs.org/@chakra-ui/dom-utils/-/dom-utils-2.1.0.tgz", - "integrity": "sha512-ZmF2qRa1QZ0CMLU8M1zCfmw29DmPNtfjR9iTo74U5FPr3i1aoAh7fbJ4qAlZ197Xw9eAW28tvzQuoVWeL5C7fQ==" + "license": "MIT" }, - "@chakra-ui/editable": { - "version": "3.0.0", - "resolved": "https://registry.npmjs.org/@chakra-ui/editable/-/editable-3.0.0.tgz", - "integrity": "sha512-q/7C/TM3iLaoQKlEiM8AY565i9NoaXtS6N6N4HWIEL5mZJPbMeHKxrCHUZlHxYuQJqFOGc09ZPD9fAFx1GkYwQ==", - "requires": { - "@chakra-ui/react-context": "2.0.8", + "node_modules/@chakra-ui/editable": { + "version": "3.1.0", + "license": "MIT", + "dependencies": { + "@chakra-ui/react-context": "2.1.0", "@chakra-ui/react-types": "2.0.7", - "@chakra-ui/react-use-callback-ref": "2.0.7", - "@chakra-ui/react-use-controllable-state": "2.0.8", - "@chakra-ui/react-use-focus-on-pointer-down": "2.0.6", - "@chakra-ui/react-use-merge-refs": "2.0.7", - "@chakra-ui/react-use-safe-layout-effect": "2.0.5", - "@chakra-ui/react-use-update-effect": "2.0.7", + "@chakra-ui/react-use-callback-ref": "2.1.0", + "@chakra-ui/react-use-controllable-state": "2.1.0", + "@chakra-ui/react-use-focus-on-pointer-down": "2.1.0", + "@chakra-ui/react-use-merge-refs": "2.1.0", + "@chakra-ui/react-use-safe-layout-effect": "2.1.0", + "@chakra-ui/react-use-update-effect": "2.1.0", "@chakra-ui/shared-utils": "2.0.5" + }, + "peerDependencies": { + "@chakra-ui/system": ">=2.0.0", + "react": ">=18" } }, - "@chakra-ui/event-utils": { + "node_modules/@chakra-ui/event-utils": { "version": "2.0.8", - "resolved": "https://registry.npmjs.org/@chakra-ui/event-utils/-/event-utils-2.0.8.tgz", - "integrity": "sha512-IGM/yGUHS+8TOQrZGpAKOJl/xGBrmRYJrmbHfUE7zrG3PpQyXvbLDP1M+RggkCFVgHlJi2wpYIf0QtQlU0XZfw==" - }, - "@chakra-ui/focus-lock": { - "version": "2.0.17", - "resolved": "https://registry.npmjs.org/@chakra-ui/focus-lock/-/focus-lock-2.0.17.tgz", - "integrity": "sha512-V+m4Ml9E8QY66DUpHX/imInVvz5XJ5zx59Tl0aNancXgeVY1Rt/ZdxuZdPLCAmPC/MF3GUOgnEA+WU8i+VL6Gw==", - "requires": { + "license": "MIT" + }, + "node_modules/@chakra-ui/focus-lock": { + "version": "2.1.0", + "license": "MIT", + "dependencies": { "@chakra-ui/dom-utils": "2.1.0", "react-focus-lock": "^2.9.4" + }, + "peerDependencies": { + "react": ">=18" } }, - "@chakra-ui/form-control": { - "version": "2.0.18", - "resolved": "https://registry.npmjs.org/@chakra-ui/form-control/-/form-control-2.0.18.tgz", - "integrity": "sha512-I0a0jG01IAtRPccOXSNugyRdUAe8Dy40ctqedZvznMweOXzbMCF1m+sHPLdWeWC/VI13VoAispdPY0/zHOdjsQ==", - "requires": { - "@chakra-ui/icon": "3.0.16", - "@chakra-ui/react-context": "2.0.8", + "node_modules/@chakra-ui/form-control": { + "version": "2.2.0", + "license": "MIT", + "dependencies": { + "@chakra-ui/icon": "3.2.0", + "@chakra-ui/react-context": "2.1.0", "@chakra-ui/react-types": "2.0.7", - "@chakra-ui/react-use-merge-refs": "2.0.7", + "@chakra-ui/react-use-merge-refs": "2.1.0", "@chakra-ui/shared-utils": "2.0.5" + }, + "peerDependencies": { + "@chakra-ui/system": ">=2.0.0", + "react": ">=18" } }, - "@chakra-ui/hooks": { - "version": "2.2.0", - "resolved": "https://registry.npmjs.org/@chakra-ui/hooks/-/hooks-2.2.0.tgz", - "integrity": "sha512-GZE64mcr20w+3KbCUPqQJHHmiFnX5Rcp8jS3YntGA4D5X2qU85jka7QkjfBwv/iduZ5Ei0YpCMYGCpi91dhD1Q==", - "requires": { + "node_modules/@chakra-ui/hooks": { + "version": "2.2.1", + "license": "MIT", + "dependencies": { "@chakra-ui/react-utils": "2.0.12", "@chakra-ui/utils": "2.0.15", - "compute-scroll-into-view": "1.0.20", + "compute-scroll-into-view": "3.0.3", "copy-to-clipboard": "3.3.3" + }, + "peerDependencies": { + "react": ">=18" } }, - "@chakra-ui/icon": { - "version": "3.0.16", - "resolved": "https://registry.npmjs.org/@chakra-ui/icon/-/icon-3.0.16.tgz", - "integrity": "sha512-RpA1X5Ptz8Mt39HSyEIW1wxAz2AXyf9H0JJ5HVx/dBdMZaGMDJ0HyyPBVci0m4RCoJuyG1HHG/DXJaVfUTVAeg==", - "requires": { + "node_modules/@chakra-ui/icon": { + "version": "3.2.0", + "license": "MIT", + "dependencies": { "@chakra-ui/shared-utils": "2.0.5" + }, + "peerDependencies": { + "@chakra-ui/system": ">=2.0.0", + "react": ">=18" } }, - "@chakra-ui/icons": { + "node_modules/@chakra-ui/icons": { "version": "2.1.0", - "resolved": "https://registry.npmjs.org/@chakra-ui/icons/-/icons-2.1.0.tgz", - "integrity": "sha512-pGFxFfQ/P5VnSRnTzK8zGAJxoxkxpHo/Br9ohRZdOpuhnIHSW7va0P53UoycEO5/vNJ/7BN0oDY0k9qurChcew==", - "requires": { + "license": "MIT", + "dependencies": { "@chakra-ui/icon": "3.1.0" }, + "peerDependencies": { + "@chakra-ui/system": ">=2.0.0", + "react": ">=18" + } + }, + "node_modules/@chakra-ui/icons/node_modules/@chakra-ui/icon": { + "version": "3.1.0", + "license": "MIT", "dependencies": { - "@chakra-ui/icon": { - "version": "3.1.0", - "resolved": "https://registry.npmjs.org/@chakra-ui/icon/-/icon-3.1.0.tgz", - "integrity": "sha512-t6v0lGCXRbwUJycN8A/nDTuLktMP+LRjKbYJnd2oL6Pm2vOl99XwEQ5cAEyEa4XoseYNEgXiLR+2TfvgfNFvcw==", - "requires": { - "@chakra-ui/shared-utils": "2.0.5" - } - } + "@chakra-ui/shared-utils": "2.0.5" + }, + "peerDependencies": { + "@chakra-ui/system": ">=2.0.0", + "react": ">=18" } }, - "@chakra-ui/image": { - "version": "2.0.16", - "resolved": "https://registry.npmjs.org/@chakra-ui/image/-/image-2.0.16.tgz", - "integrity": "sha512-iFypk1slgP3OK7VIPOtkB0UuiqVxNalgA59yoRM43xLIeZAEZpKngUVno4A2kFS61yKN0eIY4hXD3Xjm+25EJA==", - "requires": { - "@chakra-ui/react-use-safe-layout-effect": "2.0.5", + "node_modules/@chakra-ui/image": { + "version": "2.1.0", + "license": "MIT", + "dependencies": { + "@chakra-ui/react-use-safe-layout-effect": "2.1.0", "@chakra-ui/shared-utils": "2.0.5" + }, + "peerDependencies": { + "@chakra-ui/system": ">=2.0.0", + "react": ">=18" } }, - "@chakra-ui/input": { - "version": "2.0.22", - "resolved": "https://registry.npmjs.org/@chakra-ui/input/-/input-2.0.22.tgz", - "integrity": "sha512-dCIC0/Q7mjZf17YqgoQsnXn0bus6vgriTRn8VmxOc+WcVl+KBSTBWujGrS5yu85WIFQ0aeqQvziDnDQybPqAbA==", - "requires": { - "@chakra-ui/form-control": "2.0.18", + "node_modules/@chakra-ui/input": { + "version": "2.1.2", + "license": "MIT", + "dependencies": { + "@chakra-ui/form-control": "2.2.0", "@chakra-ui/object-utils": "2.1.0", "@chakra-ui/react-children-utils": "2.0.6", - "@chakra-ui/react-context": "2.0.8", + "@chakra-ui/react-context": "2.1.0", "@chakra-ui/shared-utils": "2.0.5" + }, + "peerDependencies": { + "@chakra-ui/system": ">=2.0.0", + "react": ">=18" } }, - "@chakra-ui/layout": { - "version": "2.2.0", - "resolved": "https://registry.npmjs.org/@chakra-ui/layout/-/layout-2.2.0.tgz", - "integrity": "sha512-WvfsWQjqzbCxv7pbpPGVKxj9eQr7MC2i37ag4Wn7ClIG7uPuwHYTUWOnjnu27O3H/zA4cRVZ4Hs3GpSPbojZFQ==", - "requires": { + "node_modules/@chakra-ui/layout": { + "version": "2.3.1", + "license": "MIT", + "dependencies": { "@chakra-ui/breakpoint-utils": "2.0.8", - "@chakra-ui/icon": "3.0.16", + "@chakra-ui/icon": "3.2.0", "@chakra-ui/object-utils": "2.1.0", "@chakra-ui/react-children-utils": "2.0.6", - "@chakra-ui/react-context": "2.0.8", + "@chakra-ui/react-context": "2.1.0", "@chakra-ui/shared-utils": "2.0.5" + }, + "peerDependencies": { + "@chakra-ui/system": ">=2.0.0", + "react": ">=18" } }, - "@chakra-ui/lazy-utils": { + "node_modules/@chakra-ui/lazy-utils": { "version": "2.0.5", - "resolved": "https://registry.npmjs.org/@chakra-ui/lazy-utils/-/lazy-utils-2.0.5.tgz", - "integrity": "sha512-UULqw7FBvcckQk2n3iPO56TMJvDsNv0FKZI6PlUNJVaGsPbsYxK/8IQ60vZgaTVPtVcjY6BE+y6zg8u9HOqpyg==" + "license": "MIT" }, - "@chakra-ui/live-region": { - "version": "2.0.13", - "resolved": "https://registry.npmjs.org/@chakra-ui/live-region/-/live-region-2.0.13.tgz", - "integrity": "sha512-Ja+Slk6ZkxSA5oJzU2VuGU7TpZpbMb/4P4OUhIf2D30ctmIeXkxTWw1Bs1nGJAVtAPcGS5sKA+zb89i8g+0cTQ==", - "requires": {} - }, - "@chakra-ui/media-query": { - "version": "3.2.12", - "resolved": "https://registry.npmjs.org/@chakra-ui/media-query/-/media-query-3.2.12.tgz", - "integrity": "sha512-8pSLDf3oxxhFrhd40rs7vSeIBfvOmIKHA7DJlGUC/y+9irD24ZwgmCtFnn+y3gI47hTJsopbSX+wb8nr7XPswA==", - "requires": { + "node_modules/@chakra-ui/live-region": { + "version": "2.1.0", + "license": "MIT", + "peerDependencies": { + "react": ">=18" + } + }, + "node_modules/@chakra-ui/media-query": { + "version": "3.3.0", + "license": "MIT", + "dependencies": { "@chakra-ui/breakpoint-utils": "2.0.8", - "@chakra-ui/react-env": "3.0.0", + "@chakra-ui/react-env": "3.1.0", "@chakra-ui/shared-utils": "2.0.5" + }, + "peerDependencies": { + "@chakra-ui/system": ">=2.0.0", + "react": ">=18" } }, - "@chakra-ui/menu": { - "version": "2.1.15", - "resolved": "https://registry.npmjs.org/@chakra-ui/menu/-/menu-2.1.15.tgz", - "integrity": "sha512-+1fh7KBKZyhy8wi7Q6nQAzrvjM6xggyhGMnSna0rt6FJVA2jlfkjb5FozyIVPnkfJKjkKd8THVhrs9E7pHNV/w==", - "requires": { - "@chakra-ui/clickable": "2.0.14", - "@chakra-ui/descendant": "3.0.14", + "node_modules/@chakra-ui/menu": { + "version": "2.2.1", + "license": "MIT", + "dependencies": { + "@chakra-ui/clickable": "2.1.0", + "@chakra-ui/descendant": "3.1.0", "@chakra-ui/lazy-utils": "2.0.5", - "@chakra-ui/popper": "3.0.14", + "@chakra-ui/popper": "3.1.0", "@chakra-ui/react-children-utils": "2.0.6", - "@chakra-ui/react-context": "2.0.8", - "@chakra-ui/react-use-animation-state": "2.0.9", - "@chakra-ui/react-use-controllable-state": "2.0.8", - "@chakra-ui/react-use-disclosure": "2.0.8", - "@chakra-ui/react-use-focus-effect": "2.0.11", - "@chakra-ui/react-use-merge-refs": "2.0.7", - "@chakra-ui/react-use-outside-click": "2.1.0", - "@chakra-ui/react-use-update-effect": "2.0.7", + "@chakra-ui/react-context": "2.1.0", + "@chakra-ui/react-use-animation-state": "2.1.0", + "@chakra-ui/react-use-controllable-state": "2.1.0", + "@chakra-ui/react-use-disclosure": "2.1.0", + "@chakra-ui/react-use-focus-effect": "2.1.0", + "@chakra-ui/react-use-merge-refs": "2.1.0", + "@chakra-ui/react-use-outside-click": "2.2.0", + "@chakra-ui/react-use-update-effect": "2.1.0", "@chakra-ui/shared-utils": "2.0.5", - "@chakra-ui/transition": "2.0.16" - } - }, - "@chakra-ui/modal": { - "version": "2.2.12", - "resolved": "https://registry.npmjs.org/@chakra-ui/modal/-/modal-2.2.12.tgz", - "integrity": "sha512-F1nNmYGvyqlmxidbwaBM3y57NhZ/Qeyc8BE9tb1FL1v9nxQhkfrPvMQ9miK0O1syPN6aZ5MMj+uD3AsRFE+/tA==", - "requires": { - "@chakra-ui/close-button": "2.0.17", - "@chakra-ui/focus-lock": "2.0.17", - "@chakra-ui/portal": "2.0.16", - "@chakra-ui/react-context": "2.0.8", + "@chakra-ui/transition": "2.1.0" + }, + "peerDependencies": { + "@chakra-ui/system": ">=2.0.0", + "framer-motion": ">=4.0.0", + "react": ">=18" + } + }, + "node_modules/@chakra-ui/modal": { + "version": "2.3.1", + "license": "MIT", + "dependencies": { + "@chakra-ui/close-button": "2.1.1", + "@chakra-ui/focus-lock": "2.1.0", + "@chakra-ui/portal": "2.1.0", + "@chakra-ui/react-context": "2.1.0", "@chakra-ui/react-types": "2.0.7", - "@chakra-ui/react-use-merge-refs": "2.0.7", + "@chakra-ui/react-use-merge-refs": "2.1.0", "@chakra-ui/shared-utils": "2.0.5", - "@chakra-ui/transition": "2.0.16", - "aria-hidden": "^1.2.2", - "react-remove-scroll": "^2.5.5" - } - }, - "@chakra-ui/number-input": { - "version": "2.0.19", - "resolved": "https://registry.npmjs.org/@chakra-ui/number-input/-/number-input-2.0.19.tgz", - "integrity": "sha512-HDaITvtMEqOauOrCPsARDxKD9PSHmhWywpcyCSOX0lMe4xx2aaGhU0QQFhsJsykj8Er6pytMv6t0KZksdDv3YA==", - "requires": { - "@chakra-ui/counter": "2.0.14", - "@chakra-ui/form-control": "2.0.18", - "@chakra-ui/icon": "3.0.16", - "@chakra-ui/react-context": "2.0.8", + "@chakra-ui/transition": "2.1.0", + "aria-hidden": "^1.2.3", + "react-remove-scroll": "^2.5.6" + }, + "peerDependencies": { + "@chakra-ui/system": ">=2.0.0", + "framer-motion": ">=4.0.0", + "react": ">=18", + "react-dom": ">=18" + } + }, + "node_modules/@chakra-ui/number-input": { + "version": "2.1.2", + "license": "MIT", + "dependencies": { + "@chakra-ui/counter": "2.1.0", + "@chakra-ui/form-control": "2.2.0", + "@chakra-ui/icon": "3.2.0", + "@chakra-ui/react-context": "2.1.0", "@chakra-ui/react-types": "2.0.7", - "@chakra-ui/react-use-callback-ref": "2.0.7", - "@chakra-ui/react-use-event-listener": "2.0.7", - "@chakra-ui/react-use-interval": "2.0.5", - "@chakra-ui/react-use-merge-refs": "2.0.7", - "@chakra-ui/react-use-safe-layout-effect": "2.0.5", - "@chakra-ui/react-use-update-effect": "2.0.7", + "@chakra-ui/react-use-callback-ref": "2.1.0", + "@chakra-ui/react-use-event-listener": "2.1.0", + "@chakra-ui/react-use-interval": "2.1.0", + "@chakra-ui/react-use-merge-refs": "2.1.0", + "@chakra-ui/react-use-safe-layout-effect": "2.1.0", + "@chakra-ui/react-use-update-effect": "2.1.0", "@chakra-ui/shared-utils": "2.0.5" + }, + "peerDependencies": { + "@chakra-ui/system": ">=2.0.0", + "react": ">=18" } }, - "@chakra-ui/number-utils": { + "node_modules/@chakra-ui/number-utils": { "version": "2.0.7", - "resolved": "https://registry.npmjs.org/@chakra-ui/number-utils/-/number-utils-2.0.7.tgz", - "integrity": "sha512-yOGxBjXNvLTBvQyhMDqGU0Oj26s91mbAlqKHiuw737AXHt0aPllOthVUqQMeaYLwLCjGMg0jtI7JReRzyi94Dg==" + "license": "MIT" + }, + "node_modules/@chakra-ui/object-utils": { + "version": "2.1.0", + "license": "MIT" }, - "@chakra-ui/object-utils": { + "node_modules/@chakra-ui/pin-input": { "version": "2.1.0", - "resolved": "https://registry.npmjs.org/@chakra-ui/object-utils/-/object-utils-2.1.0.tgz", - "integrity": "sha512-tgIZOgLHaoti5PYGPTwK3t/cqtcycW0owaiOXoZOcpwwX/vlVb+H1jFsQyWiiwQVPt9RkoSLtxzXamx+aHH+bQ==" - }, - "@chakra-ui/pin-input": { - "version": "2.0.20", - "resolved": "https://registry.npmjs.org/@chakra-ui/pin-input/-/pin-input-2.0.20.tgz", - "integrity": "sha512-IHVmerrtHN8F+jRB3W1HnMir1S1TUCWhI7qDInxqPtoRffHt6mzZgLZ0izx8p1fD4HkW4c1d4/ZLEz9uH9bBRg==", - "requires": { - "@chakra-ui/descendant": "3.0.14", + "license": "MIT", + "dependencies": { + "@chakra-ui/descendant": "3.1.0", "@chakra-ui/react-children-utils": "2.0.6", - "@chakra-ui/react-context": "2.0.8", - "@chakra-ui/react-use-controllable-state": "2.0.8", - "@chakra-ui/react-use-merge-refs": "2.0.7", + "@chakra-ui/react-context": "2.1.0", + "@chakra-ui/react-use-controllable-state": "2.1.0", + "@chakra-ui/react-use-merge-refs": "2.1.0", "@chakra-ui/shared-utils": "2.0.5" + }, + "peerDependencies": { + "@chakra-ui/system": ">=2.0.0", + "react": ">=18" } }, - "@chakra-ui/popover": { - "version": "2.1.12", - "resolved": "https://registry.npmjs.org/@chakra-ui/popover/-/popover-2.1.12.tgz", - "integrity": "sha512-Corh8trA1f3ydcMQqomgSvYNNhAlpxiBpMY2sglwYazOJcueHA8CI05cJVD0T/wwoTob7BShabhCGFZThn61Ng==", - "requires": { - "@chakra-ui/close-button": "2.0.17", + "node_modules/@chakra-ui/popover": { + "version": "2.2.1", + "license": "MIT", + "dependencies": { + "@chakra-ui/close-button": "2.1.1", "@chakra-ui/lazy-utils": "2.0.5", - "@chakra-ui/popper": "3.0.14", - "@chakra-ui/react-context": "2.0.8", + "@chakra-ui/popper": "3.1.0", + "@chakra-ui/react-context": "2.1.0", "@chakra-ui/react-types": "2.0.7", - "@chakra-ui/react-use-animation-state": "2.0.9", - "@chakra-ui/react-use-disclosure": "2.0.8", - "@chakra-ui/react-use-focus-effect": "2.0.11", - "@chakra-ui/react-use-focus-on-pointer-down": "2.0.6", - "@chakra-ui/react-use-merge-refs": "2.0.7", + "@chakra-ui/react-use-animation-state": "2.1.0", + "@chakra-ui/react-use-disclosure": "2.1.0", + "@chakra-ui/react-use-focus-effect": "2.1.0", + "@chakra-ui/react-use-focus-on-pointer-down": "2.1.0", + "@chakra-ui/react-use-merge-refs": "2.1.0", "@chakra-ui/shared-utils": "2.0.5" + }, + "peerDependencies": { + "@chakra-ui/system": ">=2.0.0", + "framer-motion": ">=4.0.0", + "react": ">=18" } }, - "@chakra-ui/popper": { - "version": "3.0.14", - "resolved": "https://registry.npmjs.org/@chakra-ui/popper/-/popper-3.0.14.tgz", - "integrity": "sha512-RDMmmSfjsmHJbVn2agDyoJpTbQK33fxx//njwJdeyM0zTG/3/4xjI/Cxru3acJ2Y+1jFGmPqhO81stFjnbtfIw==", - "requires": { + "node_modules/@chakra-ui/popper": { + "version": "3.1.0", + "license": "MIT", + "dependencies": { "@chakra-ui/react-types": "2.0.7", - "@chakra-ui/react-use-merge-refs": "2.0.7", + "@chakra-ui/react-use-merge-refs": "2.1.0", "@popperjs/core": "^2.9.3" + }, + "peerDependencies": { + "react": ">=18" } }, - "@chakra-ui/portal": { - "version": "2.0.16", - "resolved": "https://registry.npmjs.org/@chakra-ui/portal/-/portal-2.0.16.tgz", - "integrity": "sha512-bVID0qbQ0l4xq38LdqAN4EKD4/uFkDnXzFwOlviC9sl0dNhzICDb1ltuH/Adl1d2HTMqyN60O3GO58eHy7plnQ==", - "requires": { - "@chakra-ui/react-context": "2.0.8", - "@chakra-ui/react-use-safe-layout-effect": "2.0.5" + "node_modules/@chakra-ui/portal": { + "version": "2.1.0", + "license": "MIT", + "dependencies": { + "@chakra-ui/react-context": "2.1.0", + "@chakra-ui/react-use-safe-layout-effect": "2.1.0" + }, + "peerDependencies": { + "react": ">=18", + "react-dom": ">=18" } }, - "@chakra-ui/progress": { - "version": "2.1.6", - "resolved": "https://registry.npmjs.org/@chakra-ui/progress/-/progress-2.1.6.tgz", - "integrity": "sha512-hHh5Ysv4z6bK+j2GJbi/FT9CVyto2PtNUNwBmr3oNMVsoOUMoRjczfXvvYqp0EHr9PCpxqrq7sRwgQXUzhbDSw==", - "requires": { - "@chakra-ui/react-context": "2.0.8" + "node_modules/@chakra-ui/progress": { + "version": "2.2.0", + "license": "MIT", + "dependencies": { + "@chakra-ui/react-context": "2.1.0" + }, + "peerDependencies": { + "@chakra-ui/system": ">=2.0.0", + "react": ">=18" } }, - "@chakra-ui/provider": { - "version": "2.3.0", - "resolved": "https://registry.npmjs.org/@chakra-ui/provider/-/provider-2.3.0.tgz", - "integrity": "sha512-vKgmjoLVS3NnHW8RSYwmhhda2ZTi3fQc1egkYSVwngGky4CsN15I+XDhxJitVd66H41cjah/UNJyoeq7ACseLA==", - "requires": { - "@chakra-ui/css-reset": "2.1.2", - "@chakra-ui/portal": "2.0.16", - "@chakra-ui/react-env": "3.0.0", - "@chakra-ui/system": "2.5.8", + "node_modules/@chakra-ui/provider": { + "version": "2.4.2", + "license": "MIT", + "dependencies": { + "@chakra-ui/css-reset": "2.3.0", + "@chakra-ui/portal": "2.1.0", + "@chakra-ui/react-env": "3.1.0", + "@chakra-ui/system": "2.6.2", "@chakra-ui/utils": "2.0.15" + }, + "peerDependencies": { + "@emotion/react": "^11.0.0", + "@emotion/styled": "^11.0.0", + "react": ">=18", + "react-dom": ">=18" } }, - "@chakra-ui/radio": { - "version": "2.0.22", - "resolved": "https://registry.npmjs.org/@chakra-ui/radio/-/radio-2.0.22.tgz", - "integrity": "sha512-GsQ5WAnLwivWl6gPk8P1x+tCcpVakCt5R5T0HumF7DGPXKdJbjS+RaFySrbETmyTJsKY4QrfXn+g8CWVrMjPjw==", - "requires": { - "@chakra-ui/form-control": "2.0.18", - "@chakra-ui/react-context": "2.0.8", + "node_modules/@chakra-ui/radio": { + "version": "2.1.2", + "license": "MIT", + "dependencies": { + "@chakra-ui/form-control": "2.2.0", + "@chakra-ui/react-context": "2.1.0", "@chakra-ui/react-types": "2.0.7", - "@chakra-ui/react-use-merge-refs": "2.0.7", + "@chakra-ui/react-use-merge-refs": "2.1.0", "@chakra-ui/shared-utils": "2.0.5", - "@zag-js/focus-visible": "0.2.2" - } - }, - "@chakra-ui/react": { - "version": "2.7.1", - "resolved": "https://registry.npmjs.org/@chakra-ui/react/-/react-2.7.1.tgz", - "integrity": "sha512-uIYIAg+gnUoRbgdCfSEVvQnrEz0oWWXATGGSQpxmuJovNVyZKnX/Xug7NkWQfBUJPYRSG+VB69ZmsAFpyLSMtA==", - "requires": { - "@chakra-ui/accordion": "2.2.0", - "@chakra-ui/alert": "2.1.0", - "@chakra-ui/avatar": "2.2.11", - "@chakra-ui/breadcrumb": "2.1.5", - "@chakra-ui/button": "2.0.18", - "@chakra-ui/card": "2.1.6", - "@chakra-ui/checkbox": "2.2.15", - "@chakra-ui/close-button": "2.0.17", - "@chakra-ui/control-box": "2.0.13", - "@chakra-ui/counter": "2.0.14", - "@chakra-ui/css-reset": "2.1.2", - "@chakra-ui/editable": "3.0.0", - "@chakra-ui/focus-lock": "2.0.17", - "@chakra-ui/form-control": "2.0.18", - "@chakra-ui/hooks": "2.2.0", - "@chakra-ui/icon": "3.0.16", - "@chakra-ui/image": "2.0.16", - "@chakra-ui/input": "2.0.22", - "@chakra-ui/layout": "2.2.0", - "@chakra-ui/live-region": "2.0.13", - "@chakra-ui/media-query": "3.2.12", - "@chakra-ui/menu": "2.1.15", - "@chakra-ui/modal": "2.2.12", - "@chakra-ui/number-input": "2.0.19", - "@chakra-ui/pin-input": "2.0.20", - "@chakra-ui/popover": "2.1.12", - "@chakra-ui/popper": "3.0.14", - "@chakra-ui/portal": "2.0.16", - "@chakra-ui/progress": "2.1.6", - "@chakra-ui/provider": "2.3.0", - "@chakra-ui/radio": "2.0.22", - "@chakra-ui/react-env": "3.0.0", - "@chakra-ui/select": "2.0.19", - "@chakra-ui/skeleton": "2.0.24", - "@chakra-ui/skip-nav": "2.0.15", - "@chakra-ui/slider": "2.0.25", - "@chakra-ui/spinner": "2.0.13", - "@chakra-ui/stat": "2.0.18", - "@chakra-ui/stepper": "2.2.0", - "@chakra-ui/styled-system": "2.9.1", - "@chakra-ui/switch": "2.0.27", - "@chakra-ui/system": "2.5.8", - "@chakra-ui/table": "2.0.17", - "@chakra-ui/tabs": "2.1.9", - "@chakra-ui/tag": "3.0.0", - "@chakra-ui/textarea": "2.0.19", - "@chakra-ui/theme": "3.1.2", - "@chakra-ui/theme-utils": "2.0.18", - "@chakra-ui/toast": "6.1.4", - "@chakra-ui/tooltip": "2.2.9", - "@chakra-ui/transition": "2.0.16", + "@zag-js/focus-visible": "0.16.0" + }, + "peerDependencies": { + "@chakra-ui/system": ">=2.0.0", + "react": ">=18" + } + }, + "node_modules/@chakra-ui/react": { + "version": "2.8.2", + "license": "MIT", + "dependencies": { + "@chakra-ui/accordion": "2.3.1", + "@chakra-ui/alert": "2.2.2", + "@chakra-ui/avatar": "2.3.0", + "@chakra-ui/breadcrumb": "2.2.0", + "@chakra-ui/button": "2.1.0", + "@chakra-ui/card": "2.2.0", + "@chakra-ui/checkbox": "2.3.2", + "@chakra-ui/close-button": "2.1.1", + "@chakra-ui/control-box": "2.1.0", + "@chakra-ui/counter": "2.1.0", + "@chakra-ui/css-reset": "2.3.0", + "@chakra-ui/editable": "3.1.0", + "@chakra-ui/focus-lock": "2.1.0", + "@chakra-ui/form-control": "2.2.0", + "@chakra-ui/hooks": "2.2.1", + "@chakra-ui/icon": "3.2.0", + "@chakra-ui/image": "2.1.0", + "@chakra-ui/input": "2.1.2", + "@chakra-ui/layout": "2.3.1", + "@chakra-ui/live-region": "2.1.0", + "@chakra-ui/media-query": "3.3.0", + "@chakra-ui/menu": "2.2.1", + "@chakra-ui/modal": "2.3.1", + "@chakra-ui/number-input": "2.1.2", + "@chakra-ui/pin-input": "2.1.0", + "@chakra-ui/popover": "2.2.1", + "@chakra-ui/popper": "3.1.0", + "@chakra-ui/portal": "2.1.0", + "@chakra-ui/progress": "2.2.0", + "@chakra-ui/provider": "2.4.2", + "@chakra-ui/radio": "2.1.2", + "@chakra-ui/react-env": "3.1.0", + "@chakra-ui/select": "2.1.2", + "@chakra-ui/skeleton": "2.1.0", + "@chakra-ui/skip-nav": "2.1.0", + "@chakra-ui/slider": "2.1.0", + "@chakra-ui/spinner": "2.1.0", + "@chakra-ui/stat": "2.1.1", + "@chakra-ui/stepper": "2.3.1", + "@chakra-ui/styled-system": "2.9.2", + "@chakra-ui/switch": "2.1.2", + "@chakra-ui/system": "2.6.2", + "@chakra-ui/table": "2.1.0", + "@chakra-ui/tabs": "3.0.0", + "@chakra-ui/tag": "3.1.1", + "@chakra-ui/textarea": "2.1.2", + "@chakra-ui/theme": "3.3.1", + "@chakra-ui/theme-utils": "2.0.21", + "@chakra-ui/toast": "7.0.2", + "@chakra-ui/tooltip": "2.3.1", + "@chakra-ui/transition": "2.1.0", "@chakra-ui/utils": "2.0.15", - "@chakra-ui/visually-hidden": "2.0.15" + "@chakra-ui/visually-hidden": "2.2.0" + }, + "peerDependencies": { + "@emotion/react": "^11.0.0", + "@emotion/styled": "^11.0.0", + "framer-motion": ">=4.0.0", + "react": ">=18", + "react-dom": ">=18" } }, - "@chakra-ui/react-children-utils": { + "node_modules/@chakra-ui/react-children-utils": { "version": "2.0.6", - "resolved": "https://registry.npmjs.org/@chakra-ui/react-children-utils/-/react-children-utils-2.0.6.tgz", - "integrity": "sha512-QVR2RC7QsOsbWwEnq9YduhpqSFnZGvjjGREV8ygKi8ADhXh93C8azLECCUVgRJF2Wc+So1fgxmjLcbZfY2VmBA==", - "requires": {} + "license": "MIT", + "peerDependencies": { + "react": ">=18" + } }, - "@chakra-ui/react-context": { - "version": "2.0.8", - "resolved": "https://registry.npmjs.org/@chakra-ui/react-context/-/react-context-2.0.8.tgz", - "integrity": "sha512-tRTKdn6lCTXM6WPjSokAAKCw2ioih7Eg8cNgaYRSwKBck8nkz9YqxgIIEj3dJD7MGtpl24S/SNI98iRWkRwR/A==", - "requires": {} + "node_modules/@chakra-ui/react-context": { + "version": "2.1.0", + "license": "MIT", + "peerDependencies": { + "react": ">=18" + } }, - "@chakra-ui/react-env": { - "version": "3.0.0", - "resolved": "https://registry.npmjs.org/@chakra-ui/react-env/-/react-env-3.0.0.tgz", - "integrity": "sha512-tfMRO2v508HQWAqSADFrwZgR9oU10qC97oV6zGbjHh9ALP0/IcFR+Bi71KRTveDTm85fMeAzZYGj57P3Dsipkw==", - "requires": { - "@chakra-ui/react-use-safe-layout-effect": "2.0.5" + "node_modules/@chakra-ui/react-env": { + "version": "3.1.0", + "license": "MIT", + "dependencies": { + "@chakra-ui/react-use-safe-layout-effect": "2.1.0" + }, + "peerDependencies": { + "react": ">=18" } }, - "@chakra-ui/react-types": { + "node_modules/@chakra-ui/react-types": { "version": "2.0.7", - "resolved": "https://registry.npmjs.org/@chakra-ui/react-types/-/react-types-2.0.7.tgz", - "integrity": "sha512-12zv2qIZ8EHwiytggtGvo4iLT0APris7T0qaAWqzpUGS0cdUtR8W+V1BJ5Ocq+7tA6dzQ/7+w5hmXih61TuhWQ==", - "requires": {} - }, - "@chakra-ui/react-use-animation-state": { - "version": "2.0.9", - "resolved": "https://registry.npmjs.org/@chakra-ui/react-use-animation-state/-/react-use-animation-state-2.0.9.tgz", - "integrity": "sha512-WFoD5OG03PBmzJCoRwM8rVfU442AvKBPPgA0yGGlKioH29OGuX7W78Ml+cYdXxonTiB03YSRZzUwaUnP4wAy1Q==", - "requires": { + "license": "MIT", + "peerDependencies": { + "react": ">=18" + } + }, + "node_modules/@chakra-ui/react-use-animation-state": { + "version": "2.1.0", + "license": "MIT", + "dependencies": { "@chakra-ui/dom-utils": "2.1.0", - "@chakra-ui/react-use-event-listener": "2.0.7" + "@chakra-ui/react-use-event-listener": "2.1.0" + }, + "peerDependencies": { + "react": ">=18" } }, - "@chakra-ui/react-use-callback-ref": { - "version": "2.0.7", - "resolved": "https://registry.npmjs.org/@chakra-ui/react-use-callback-ref/-/react-use-callback-ref-2.0.7.tgz", - "integrity": "sha512-YjT76nTpfHAK5NxplAlZsQwNju5KmQExnqsWNPFeOR6vvbC34+iPSTr+r91i1Hdy7gBSbevsOsd5Wm6RN3GuMw==", - "requires": {} + "node_modules/@chakra-ui/react-use-callback-ref": { + "version": "2.1.0", + "license": "MIT", + "peerDependencies": { + "react": ">=18" + } }, - "@chakra-ui/react-use-controllable-state": { - "version": "2.0.8", - "resolved": "https://registry.npmjs.org/@chakra-ui/react-use-controllable-state/-/react-use-controllable-state-2.0.8.tgz", - "integrity": "sha512-F7rdCbLEmRjwwODqWZ3y+mKgSSHPcLQxeUygwk1BkZPXbKkJJKymOIjIynil2cbH7ku3hcSIWRvuhpCcfQWJ7Q==", - "requires": { - "@chakra-ui/react-use-callback-ref": "2.0.7" + "node_modules/@chakra-ui/react-use-controllable-state": { + "version": "2.1.0", + "license": "MIT", + "dependencies": { + "@chakra-ui/react-use-callback-ref": "2.1.0" + }, + "peerDependencies": { + "react": ">=18" } }, - "@chakra-ui/react-use-disclosure": { - "version": "2.0.8", - "resolved": "https://registry.npmjs.org/@chakra-ui/react-use-disclosure/-/react-use-disclosure-2.0.8.tgz", - "integrity": "sha512-2ir/mHe1YND40e+FyLHnDsnDsBQPwzKDLzfe9GZri7y31oU83JSbHdlAXAhp3bpjohslwavtRCp+S/zRxfO9aQ==", - "requires": { - "@chakra-ui/react-use-callback-ref": "2.0.7" + "node_modules/@chakra-ui/react-use-disclosure": { + "version": "2.1.0", + "license": "MIT", + "dependencies": { + "@chakra-ui/react-use-callback-ref": "2.1.0" + }, + "peerDependencies": { + "react": ">=18" } }, - "@chakra-ui/react-use-event-listener": { - "version": "2.0.7", - "resolved": "https://registry.npmjs.org/@chakra-ui/react-use-event-listener/-/react-use-event-listener-2.0.7.tgz", - "integrity": "sha512-4wvpx4yudIO3B31pOrXuTHDErawmwiXnvAN7gLEOVREi16+YGNcFnRJ5X5nRrmB7j2MDUtsEDpRBFfw5Z9xQ5g==", - "requires": { - "@chakra-ui/react-use-callback-ref": "2.0.7" + "node_modules/@chakra-ui/react-use-event-listener": { + "version": "2.1.0", + "license": "MIT", + "dependencies": { + "@chakra-ui/react-use-callback-ref": "2.1.0" + }, + "peerDependencies": { + "react": ">=18" } }, - "@chakra-ui/react-use-focus-effect": { - "version": "2.0.11", - "resolved": "https://registry.npmjs.org/@chakra-ui/react-use-focus-effect/-/react-use-focus-effect-2.0.11.tgz", - "integrity": "sha512-/zadgjaCWD50TfuYsO1vDS2zSBs2p/l8P2DPEIA8FuaowbBubKrk9shKQDWmbfDU7KArGxPxrvo+VXvskPPjHw==", - "requires": { + "node_modules/@chakra-ui/react-use-focus-effect": { + "version": "2.1.0", + "license": "MIT", + "dependencies": { "@chakra-ui/dom-utils": "2.1.0", - "@chakra-ui/react-use-event-listener": "2.0.7", - "@chakra-ui/react-use-safe-layout-effect": "2.0.5", - "@chakra-ui/react-use-update-effect": "2.0.7" + "@chakra-ui/react-use-event-listener": "2.1.0", + "@chakra-ui/react-use-safe-layout-effect": "2.1.0", + "@chakra-ui/react-use-update-effect": "2.1.0" + }, + "peerDependencies": { + "react": ">=18" } }, - "@chakra-ui/react-use-focus-on-pointer-down": { - "version": "2.0.6", - "resolved": "https://registry.npmjs.org/@chakra-ui/react-use-focus-on-pointer-down/-/react-use-focus-on-pointer-down-2.0.6.tgz", - "integrity": "sha512-OigXiLRVySn3tyVqJ/rn57WGuukW8TQe8fJYiLwXbcNyAMuYYounvRxvCy2b53sQ7QIZamza0N0jhirbH5FNoQ==", - "requires": { - "@chakra-ui/react-use-event-listener": "2.0.7" + "node_modules/@chakra-ui/react-use-focus-on-pointer-down": { + "version": "2.1.0", + "license": "MIT", + "dependencies": { + "@chakra-ui/react-use-event-listener": "2.1.0" + }, + "peerDependencies": { + "react": ">=18" } }, - "@chakra-ui/react-use-interval": { - "version": "2.0.5", - "resolved": "https://registry.npmjs.org/@chakra-ui/react-use-interval/-/react-use-interval-2.0.5.tgz", - "integrity": "sha512-1nbdwMi2K87V6p5f5AseOKif2CkldLaJlq1TOqaPRwb7v3aU9rltBtYdf+fIyuHSToNJUV6wd9budCFdLCl3Fg==", - "requires": { - "@chakra-ui/react-use-callback-ref": "2.0.7" + "node_modules/@chakra-ui/react-use-interval": { + "version": "2.1.0", + "license": "MIT", + "dependencies": { + "@chakra-ui/react-use-callback-ref": "2.1.0" + }, + "peerDependencies": { + "react": ">=18" } }, - "@chakra-ui/react-use-latest-ref": { - "version": "2.0.5", - "resolved": "https://registry.npmjs.org/@chakra-ui/react-use-latest-ref/-/react-use-latest-ref-2.0.5.tgz", - "integrity": "sha512-3mIuFzMyIo3Ok/D8uhV9voVg7KkrYVO/pwVvNPJOHsDQqCA6DpYE4WDsrIx+fVcwad3Ta7SupexR5PoI+kq6QQ==", - "requires": {} - }, - "@chakra-ui/react-use-merge-refs": { - "version": "2.0.7", - "resolved": "https://registry.npmjs.org/@chakra-ui/react-use-merge-refs/-/react-use-merge-refs-2.0.7.tgz", - "integrity": "sha512-zds4Uhsc+AMzdH8JDDkLVet9baUBgtOjPbhC5r3A0ZXjZvGhCztFAVE3aExYiVoMPoHLKbLcqvCWE6ioFKz1lw==", - "requires": {} + "node_modules/@chakra-ui/react-use-latest-ref": { + "version": "2.1.0", + "license": "MIT", + "peerDependencies": { + "react": ">=18" + } }, - "@chakra-ui/react-use-outside-click": { + "node_modules/@chakra-ui/react-use-merge-refs": { "version": "2.1.0", - "resolved": "https://registry.npmjs.org/@chakra-ui/react-use-outside-click/-/react-use-outside-click-2.1.0.tgz", - "integrity": "sha512-JanCo4QtWvMl9ZZUpKJKV62RlMWDFdPCE0Q64a7eWTOQgWWcpyBW7TOYRunQTqrK30FqkYFJCOlAWOtn+6Rw7A==", - "requires": { - "@chakra-ui/react-use-callback-ref": "2.0.7" + "license": "MIT", + "peerDependencies": { + "react": ">=18" + } + }, + "node_modules/@chakra-ui/react-use-outside-click": { + "version": "2.2.0", + "license": "MIT", + "dependencies": { + "@chakra-ui/react-use-callback-ref": "2.1.0" + }, + "peerDependencies": { + "react": ">=18" } }, - "@chakra-ui/react-use-pan-event": { - "version": "2.0.9", - "resolved": "https://registry.npmjs.org/@chakra-ui/react-use-pan-event/-/react-use-pan-event-2.0.9.tgz", - "integrity": "sha512-xu35QXkiyrgsHUOnctl+SwNcwf9Rl62uYE5y8soKOZdBm8E+FvZIt2hxUzK1EoekbJCMzEZ0Yv1ZQCssVkSLaQ==", - "requires": { + "node_modules/@chakra-ui/react-use-pan-event": { + "version": "2.1.0", + "license": "MIT", + "dependencies": { "@chakra-ui/event-utils": "2.0.8", - "@chakra-ui/react-use-latest-ref": "2.0.5", + "@chakra-ui/react-use-latest-ref": "2.1.0", "framesync": "6.1.2" + }, + "peerDependencies": { + "react": ">=18" } }, - "@chakra-ui/react-use-previous": { - "version": "2.0.5", - "resolved": "https://registry.npmjs.org/@chakra-ui/react-use-previous/-/react-use-previous-2.0.5.tgz", - "integrity": "sha512-BIZgjycPE4Xr+MkhKe0h67uHXzQQkBX/u5rYPd65iMGdX1bCkbE0oorZNfOHLKdTmnEb4oVsNvfN6Rfr+Mnbxw==", - "requires": {} + "node_modules/@chakra-ui/react-use-previous": { + "version": "2.1.0", + "license": "MIT", + "peerDependencies": { + "react": ">=18" + } }, - "@chakra-ui/react-use-safe-layout-effect": { - "version": "2.0.5", - "resolved": "https://registry.npmjs.org/@chakra-ui/react-use-safe-layout-effect/-/react-use-safe-layout-effect-2.0.5.tgz", - "integrity": "sha512-MwAQBz3VxoeFLaesaSEN87reVNVbjcQBDex2WGexAg6hUB6n4gc1OWYH/iXp4tzp4kuggBNhEHkk9BMYXWfhJQ==", - "requires": {} + "node_modules/@chakra-ui/react-use-safe-layout-effect": { + "version": "2.1.0", + "license": "MIT", + "peerDependencies": { + "react": ">=18" + } }, - "@chakra-ui/react-use-size": { - "version": "2.0.10", - "resolved": "https://registry.npmjs.org/@chakra-ui/react-use-size/-/react-use-size-2.0.10.tgz", - "integrity": "sha512-fdIkH14GDnKQrtQfxX8N3gxbXRPXEl67Y3zeD9z4bKKcQUAYIMqs0MsPZY+FMpGQw8QqafM44nXfL038aIrC5w==", - "requires": { - "@zag-js/element-size": "0.3.2" + "node_modules/@chakra-ui/react-use-size": { + "version": "2.1.0", + "license": "MIT", + "dependencies": { + "@zag-js/element-size": "0.10.5" + }, + "peerDependencies": { + "react": ">=18" } }, - "@chakra-ui/react-use-timeout": { - "version": "2.0.5", - "resolved": "https://registry.npmjs.org/@chakra-ui/react-use-timeout/-/react-use-timeout-2.0.5.tgz", - "integrity": "sha512-QqmB+jVphh3h/CS60PieorpY7UqSPkrQCB7f7F+i9vwwIjtP8fxVHMmkb64K7VlzQiMPzv12nlID5dqkzlv0mw==", - "requires": { - "@chakra-ui/react-use-callback-ref": "2.0.7" + "node_modules/@chakra-ui/react-use-timeout": { + "version": "2.1.0", + "license": "MIT", + "dependencies": { + "@chakra-ui/react-use-callback-ref": "2.1.0" + }, + "peerDependencies": { + "react": ">=18" } }, - "@chakra-ui/react-use-update-effect": { - "version": "2.0.7", - "resolved": "https://registry.npmjs.org/@chakra-ui/react-use-update-effect/-/react-use-update-effect-2.0.7.tgz", - "integrity": "sha512-vBM2bmmM83ZdDtasWv3PXPznpTUd+FvqBC8J8rxoRmvdMEfrxTiQRBJhiGHLpS9BPLLPQlosN6KdFU97csB6zg==", - "requires": {} + "node_modules/@chakra-ui/react-use-update-effect": { + "version": "2.1.0", + "license": "MIT", + "peerDependencies": { + "react": ">=18" + } }, - "@chakra-ui/react-utils": { + "node_modules/@chakra-ui/react-utils": { "version": "2.0.12", - "resolved": "https://registry.npmjs.org/@chakra-ui/react-utils/-/react-utils-2.0.12.tgz", - "integrity": "sha512-GbSfVb283+YA3kA8w8xWmzbjNWk14uhNpntnipHCftBibl0lxtQ9YqMFQLwuFOO0U2gYVocszqqDWX+XNKq9hw==", - "requires": { + "license": "MIT", + "dependencies": { "@chakra-ui/utils": "2.0.15" + }, + "peerDependencies": { + "react": ">=18" } }, - "@chakra-ui/select": { - "version": "2.0.19", - "resolved": "https://registry.npmjs.org/@chakra-ui/select/-/select-2.0.19.tgz", - "integrity": "sha512-eAlFh+JhwtJ17OrB6fO6gEAGOMH18ERNrXLqWbYLrs674Le7xuREgtuAYDoxUzvYXYYTTdOJtVbcHGriI3o6rA==", - "requires": { - "@chakra-ui/form-control": "2.0.18", + "node_modules/@chakra-ui/select": { + "version": "2.1.2", + "license": "MIT", + "dependencies": { + "@chakra-ui/form-control": "2.2.0", "@chakra-ui/shared-utils": "2.0.5" + }, + "peerDependencies": { + "@chakra-ui/system": ">=2.0.0", + "react": ">=18" } }, - "@chakra-ui/shared-utils": { + "node_modules/@chakra-ui/shared-utils": { "version": "2.0.5", - "resolved": "https://registry.npmjs.org/@chakra-ui/shared-utils/-/shared-utils-2.0.5.tgz", - "integrity": "sha512-4/Wur0FqDov7Y0nCXl7HbHzCg4aq86h+SXdoUeuCMD3dSj7dpsVnStLYhng1vxvlbUnLpdF4oz5Myt3i/a7N3Q==" - }, - "@chakra-ui/skeleton": { - "version": "2.0.24", - "resolved": "https://registry.npmjs.org/@chakra-ui/skeleton/-/skeleton-2.0.24.tgz", - "integrity": "sha512-1jXtVKcl/jpbrJlc/TyMsFyI651GTXY5ma30kWyTXoby2E+cxbV6OR8GB/NMZdGxbQBax8/VdtYVjI0n+OBqWA==", - "requires": { - "@chakra-ui/media-query": "3.2.12", - "@chakra-ui/react-use-previous": "2.0.5", + "license": "MIT" + }, + "node_modules/@chakra-ui/skeleton": { + "version": "2.1.0", + "license": "MIT", + "dependencies": { + "@chakra-ui/media-query": "3.3.0", + "@chakra-ui/react-use-previous": "2.1.0", "@chakra-ui/shared-utils": "2.0.5" + }, + "peerDependencies": { + "@chakra-ui/system": ">=2.0.0", + "react": ">=18" } }, - "@chakra-ui/skip-nav": { - "version": "2.0.15", - "resolved": "https://registry.npmjs.org/@chakra-ui/skip-nav/-/skip-nav-2.0.15.tgz", - "integrity": "sha512-5UtmlnV4BmIgEk6lQ0h81JEYhPX04wJEk5ZMoilQ2zEQYL6TkVVHkhRXyc1Zfq76hmHuZPXZV/yJeTecj6jIrA==", - "requires": {} - }, - "@chakra-ui/slider": { - "version": "2.0.25", - "resolved": "https://registry.npmjs.org/@chakra-ui/slider/-/slider-2.0.25.tgz", - "integrity": "sha512-FnWSi0AIXP+9sHMCPboOKGqm902k8dJtsJ7tu3D0AcKkE62WtYLZ2sTqvwJxCfSl4KqVI1i571SrF9WadnnJ8w==", - "requires": { + "node_modules/@chakra-ui/skip-nav": { + "version": "2.1.0", + "license": "MIT", + "peerDependencies": { + "@chakra-ui/system": ">=2.0.0", + "react": ">=18" + } + }, + "node_modules/@chakra-ui/slider": { + "version": "2.1.0", + "license": "MIT", + "dependencies": { "@chakra-ui/number-utils": "2.0.7", - "@chakra-ui/react-context": "2.0.8", + "@chakra-ui/react-context": "2.1.0", "@chakra-ui/react-types": "2.0.7", - "@chakra-ui/react-use-callback-ref": "2.0.7", - "@chakra-ui/react-use-controllable-state": "2.0.8", - "@chakra-ui/react-use-latest-ref": "2.0.5", - "@chakra-ui/react-use-merge-refs": "2.0.7", - "@chakra-ui/react-use-pan-event": "2.0.9", - "@chakra-ui/react-use-size": "2.0.10", - "@chakra-ui/react-use-update-effect": "2.0.7" + "@chakra-ui/react-use-callback-ref": "2.1.0", + "@chakra-ui/react-use-controllable-state": "2.1.0", + "@chakra-ui/react-use-latest-ref": "2.1.0", + "@chakra-ui/react-use-merge-refs": "2.1.0", + "@chakra-ui/react-use-pan-event": "2.1.0", + "@chakra-ui/react-use-size": "2.1.0", + "@chakra-ui/react-use-update-effect": "2.1.0" + }, + "peerDependencies": { + "@chakra-ui/system": ">=2.0.0", + "react": ">=18" } }, - "@chakra-ui/spinner": { - "version": "2.0.13", - "resolved": "https://registry.npmjs.org/@chakra-ui/spinner/-/spinner-2.0.13.tgz", - "integrity": "sha512-T1/aSkVpUIuiYyrjfn1+LsQEG7Onbi1UE9ccS/evgf61Dzy4GgTXQUnDuWFSgpV58owqirqOu6jn/9eCwDlzlg==", - "requires": { + "node_modules/@chakra-ui/spinner": { + "version": "2.1.0", + "license": "MIT", + "dependencies": { "@chakra-ui/shared-utils": "2.0.5" + }, + "peerDependencies": { + "@chakra-ui/system": ">=2.0.0", + "react": ">=18" } }, - "@chakra-ui/stat": { - "version": "2.0.18", - "resolved": "https://registry.npmjs.org/@chakra-ui/stat/-/stat-2.0.18.tgz", - "integrity": "sha512-wKyfBqhVlIs9bkSerUc6F9KJMw0yTIEKArW7dejWwzToCLPr47u+CtYO6jlJHV6lRvkhi4K4Qc6pyvtJxZ3VpA==", - "requires": { - "@chakra-ui/icon": "3.0.16", - "@chakra-ui/react-context": "2.0.8", + "node_modules/@chakra-ui/stat": { + "version": "2.1.1", + "license": "MIT", + "dependencies": { + "@chakra-ui/icon": "3.2.0", + "@chakra-ui/react-context": "2.1.0", "@chakra-ui/shared-utils": "2.0.5" + }, + "peerDependencies": { + "@chakra-ui/system": ">=2.0.0", + "react": ">=18" } }, - "@chakra-ui/stepper": { - "version": "2.2.0", - "resolved": "https://registry.npmjs.org/@chakra-ui/stepper/-/stepper-2.2.0.tgz", - "integrity": "sha512-8ZLxV39oghSVtOUGK8dX8Z6sWVSQiKVmsK4c3OQDa8y2TvxP0VtFD0Z5U1xJlOjQMryZRWhGj9JBc3iQLukuGg==", - "requires": { - "@chakra-ui/icon": "3.0.16", - "@chakra-ui/react-context": "2.0.8", + "node_modules/@chakra-ui/stepper": { + "version": "2.3.1", + "license": "MIT", + "dependencies": { + "@chakra-ui/icon": "3.2.0", + "@chakra-ui/react-context": "2.1.0", "@chakra-ui/shared-utils": "2.0.5" + }, + "peerDependencies": { + "@chakra-ui/system": ">=2.0.0", + "react": ">=18" } }, - "@chakra-ui/styled-system": { - "version": "2.9.1", - "resolved": "https://registry.npmjs.org/@chakra-ui/styled-system/-/styled-system-2.9.1.tgz", - "integrity": "sha512-jhYKBLxwOPi9/bQt9kqV3ELa/4CjmNNruTyXlPp5M0v0+pDMUngPp48mVLoskm9RKZGE0h1qpvj/jZ3K7c7t8w==", - "requires": { + "node_modules/@chakra-ui/styled-system": { + "version": "2.9.2", + "license": "MIT", + "dependencies": { "@chakra-ui/shared-utils": "2.0.5", - "csstype": "^3.0.11", + "csstype": "^3.1.2", "lodash.mergewith": "4.6.2" } }, - "@chakra-ui/switch": { - "version": "2.0.27", - "resolved": "https://registry.npmjs.org/@chakra-ui/switch/-/switch-2.0.27.tgz", - "integrity": "sha512-z76y2fxwMlvRBrC5W8xsZvo3gP+zAEbT3Nqy5P8uh/IPd5OvDsGeac90t5cgnQTyxMOpznUNNK+1eUZqtLxWnQ==", - "requires": { - "@chakra-ui/checkbox": "2.2.15", + "node_modules/@chakra-ui/switch": { + "version": "2.1.2", + "license": "MIT", + "dependencies": { + "@chakra-ui/checkbox": "2.3.2", "@chakra-ui/shared-utils": "2.0.5" + }, + "peerDependencies": { + "@chakra-ui/system": ">=2.0.0", + "framer-motion": ">=4.0.0", + "react": ">=18" } }, - "@chakra-ui/system": { - "version": "2.5.8", - "resolved": "https://registry.npmjs.org/@chakra-ui/system/-/system-2.5.8.tgz", - "integrity": "sha512-Vy8UUaCxikOzOGE54IP8tKouvU38rEYU1HCSquU9+oe7Jd70HaiLa4vmUKvHyMUmxkOzDHIkgZLbVQCubSnN5w==", - "requires": { - "@chakra-ui/color-mode": "2.1.12", + "node_modules/@chakra-ui/system": { + "version": "2.6.2", + "license": "MIT", + "dependencies": { + "@chakra-ui/color-mode": "2.2.0", "@chakra-ui/object-utils": "2.1.0", "@chakra-ui/react-utils": "2.0.12", - "@chakra-ui/styled-system": "2.9.1", - "@chakra-ui/theme-utils": "2.0.18", + "@chakra-ui/styled-system": "2.9.2", + "@chakra-ui/theme-utils": "2.0.21", "@chakra-ui/utils": "2.0.15", - "react-fast-compare": "3.2.1" + "react-fast-compare": "3.2.2" + }, + "peerDependencies": { + "@emotion/react": "^11.0.0", + "@emotion/styled": "^11.0.0", + "react": ">=18" } }, - "@chakra-ui/table": { - "version": "2.0.17", - "resolved": "https://registry.npmjs.org/@chakra-ui/table/-/table-2.0.17.tgz", - "integrity": "sha512-OScheTEp1LOYvTki2NFwnAYvac8siAhW9BI5RKm5f5ORL2gVJo4I72RUqE0aKe1oboxgm7CYt5afT5PS5cG61A==", - "requires": { - "@chakra-ui/react-context": "2.0.8", + "node_modules/@chakra-ui/table": { + "version": "2.1.0", + "license": "MIT", + "dependencies": { + "@chakra-ui/react-context": "2.1.0", "@chakra-ui/shared-utils": "2.0.5" + }, + "peerDependencies": { + "@chakra-ui/system": ">=2.0.0", + "react": ">=18" } }, - "@chakra-ui/tabs": { - "version": "2.1.9", - "resolved": "https://registry.npmjs.org/@chakra-ui/tabs/-/tabs-2.1.9.tgz", - "integrity": "sha512-Yf8e0kRvaGM6jfkJum0aInQ0U3ZlCafmrYYni2lqjcTtThqu+Yosmo3iYlnullXxCw5MVznfrkb9ySvgQowuYg==", - "requires": { - "@chakra-ui/clickable": "2.0.14", - "@chakra-ui/descendant": "3.0.14", + "node_modules/@chakra-ui/tabs": { + "version": "3.0.0", + "license": "MIT", + "dependencies": { + "@chakra-ui/clickable": "2.1.0", + "@chakra-ui/descendant": "3.1.0", "@chakra-ui/lazy-utils": "2.0.5", "@chakra-ui/react-children-utils": "2.0.6", - "@chakra-ui/react-context": "2.0.8", - "@chakra-ui/react-use-controllable-state": "2.0.8", - "@chakra-ui/react-use-merge-refs": "2.0.7", - "@chakra-ui/react-use-safe-layout-effect": "2.0.5", + "@chakra-ui/react-context": "2.1.0", + "@chakra-ui/react-use-controllable-state": "2.1.0", + "@chakra-ui/react-use-merge-refs": "2.1.0", + "@chakra-ui/react-use-safe-layout-effect": "2.1.0", "@chakra-ui/shared-utils": "2.0.5" + }, + "peerDependencies": { + "@chakra-ui/system": ">=2.0.0", + "react": ">=18" } }, - "@chakra-ui/tag": { - "version": "3.0.0", - "resolved": "https://registry.npmjs.org/@chakra-ui/tag/-/tag-3.0.0.tgz", - "integrity": "sha512-YWdMmw/1OWRwNkG9pX+wVtZio+B89odaPj6XeMn5nfNN8+jyhIEpouWv34+CO9G0m1lupJTxPSfgLAd7cqXZMA==", - "requires": { - "@chakra-ui/icon": "3.0.16", - "@chakra-ui/react-context": "2.0.8" - } - }, - "@chakra-ui/textarea": { - "version": "2.0.19", - "resolved": "https://registry.npmjs.org/@chakra-ui/textarea/-/textarea-2.0.19.tgz", - "integrity": "sha512-adJk+qVGsFeJDvfn56CcJKKse8k7oMGlODrmpnpTdF+xvlsiTM+1GfaJvgNSpHHuQFdz/A0z1uJtfGefk0G2ZA==", - "requires": { - "@chakra-ui/form-control": "2.0.18", + "node_modules/@chakra-ui/tag": { + "version": "3.1.1", + "license": "MIT", + "dependencies": { + "@chakra-ui/icon": "3.2.0", + "@chakra-ui/react-context": "2.1.0" + }, + "peerDependencies": { + "@chakra-ui/system": ">=2.0.0", + "react": ">=18" + } + }, + "node_modules/@chakra-ui/textarea": { + "version": "2.1.2", + "license": "MIT", + "dependencies": { + "@chakra-ui/form-control": "2.2.0", "@chakra-ui/shared-utils": "2.0.5" + }, + "peerDependencies": { + "@chakra-ui/system": ">=2.0.0", + "react": ">=18" } }, - "@chakra-ui/theme": { - "version": "3.1.2", - "resolved": "https://registry.npmjs.org/@chakra-ui/theme/-/theme-3.1.2.tgz", - "integrity": "sha512-ebUXMS3LZw2OZxEQNYaFw3/XuA3jpyprhS/frjHMvZKSOaCjMW+c9z25S0jp1NnpQff08VGI8EWbyVZECXU1QA==", - "requires": { - "@chakra-ui/anatomy": "2.1.2", + "node_modules/@chakra-ui/theme": { + "version": "3.3.1", + "license": "MIT", + "dependencies": { + "@chakra-ui/anatomy": "2.2.2", "@chakra-ui/shared-utils": "2.0.5", - "@chakra-ui/theme-tools": "2.0.18" + "@chakra-ui/theme-tools": "2.1.2" + }, + "peerDependencies": { + "@chakra-ui/styled-system": ">=2.8.0" } }, - "@chakra-ui/theme-tools": { - "version": "2.0.18", - "resolved": "https://registry.npmjs.org/@chakra-ui/theme-tools/-/theme-tools-2.0.18.tgz", - "integrity": "sha512-MbiRuXb2tb41FbnW41zhsYYAU0znlpfYZnu0mxCf8U2otCwPekJCfESUGYypjq4JnydQ7TDOk+Kz/Wi974l4mw==", - "requires": { - "@chakra-ui/anatomy": "2.1.2", + "node_modules/@chakra-ui/theme-tools": { + "version": "2.1.2", + "license": "MIT", + "dependencies": { + "@chakra-ui/anatomy": "2.2.2", "@chakra-ui/shared-utils": "2.0.5", - "color2k": "^2.0.0" + "color2k": "^2.0.2" + }, + "peerDependencies": { + "@chakra-ui/styled-system": ">=2.0.0" } }, - "@chakra-ui/theme-utils": { - "version": "2.0.18", - "resolved": "https://registry.npmjs.org/@chakra-ui/theme-utils/-/theme-utils-2.0.18.tgz", - "integrity": "sha512-aSbkUUiFpc1NHC7lQdA6uYlr6EcZFXz6b4aJ7VRDpqTiywvqYnvfGzhmsB0z94vgtS9qXc6HoIwBp25jYGV2MA==", - "requires": { + "node_modules/@chakra-ui/theme-utils": { + "version": "2.0.21", + "license": "MIT", + "dependencies": { "@chakra-ui/shared-utils": "2.0.5", - "@chakra-ui/styled-system": "2.9.1", - "@chakra-ui/theme": "3.1.2", + "@chakra-ui/styled-system": "2.9.2", + "@chakra-ui/theme": "3.3.1", "lodash.mergewith": "4.6.2" } }, - "@chakra-ui/toast": { - "version": "6.1.4", - "resolved": "https://registry.npmjs.org/@chakra-ui/toast/-/toast-6.1.4.tgz", - "integrity": "sha512-wAcPHq/N/ar4jQxkUGhnsbp+lx2eKOpHxn1KaWdHXUkqCNUA1z09fvBsoMyzObSiiwbDuQPZG5RxsOhzfPZX4Q==", - "requires": { - "@chakra-ui/alert": "2.1.0", - "@chakra-ui/close-button": "2.0.17", - "@chakra-ui/portal": "2.0.16", - "@chakra-ui/react-context": "2.0.8", - "@chakra-ui/react-use-timeout": "2.0.5", - "@chakra-ui/react-use-update-effect": "2.0.7", + "node_modules/@chakra-ui/toast": { + "version": "7.0.2", + "license": "MIT", + "dependencies": { + "@chakra-ui/alert": "2.2.2", + "@chakra-ui/close-button": "2.1.1", + "@chakra-ui/portal": "2.1.0", + "@chakra-ui/react-context": "2.1.0", + "@chakra-ui/react-use-timeout": "2.1.0", + "@chakra-ui/react-use-update-effect": "2.1.0", "@chakra-ui/shared-utils": "2.0.5", - "@chakra-ui/styled-system": "2.9.1", - "@chakra-ui/theme": "3.1.2" + "@chakra-ui/styled-system": "2.9.2", + "@chakra-ui/theme": "3.3.1" + }, + "peerDependencies": { + "@chakra-ui/system": "2.6.2", + "framer-motion": ">=4.0.0", + "react": ">=18", + "react-dom": ">=18" } }, - "@chakra-ui/tooltip": { - "version": "2.2.9", - "resolved": "https://registry.npmjs.org/@chakra-ui/tooltip/-/tooltip-2.2.9.tgz", - "integrity": "sha512-ZoksllanqXRUyMDaiogvUVJ+RdFXwZrfrwx3RV22fejYZIQ602hZ3QHtHLB5ZnKFLbvXKMZKM23HxFTSb0Ytqg==", - "requires": { + "node_modules/@chakra-ui/tooltip": { + "version": "2.3.1", + "license": "MIT", + "dependencies": { "@chakra-ui/dom-utils": "2.1.0", - "@chakra-ui/popper": "3.0.14", - "@chakra-ui/portal": "2.0.16", + "@chakra-ui/popper": "3.1.0", + "@chakra-ui/portal": "2.1.0", "@chakra-ui/react-types": "2.0.7", - "@chakra-ui/react-use-disclosure": "2.0.8", - "@chakra-ui/react-use-event-listener": "2.0.7", - "@chakra-ui/react-use-merge-refs": "2.0.7", + "@chakra-ui/react-use-disclosure": "2.1.0", + "@chakra-ui/react-use-event-listener": "2.1.0", + "@chakra-ui/react-use-merge-refs": "2.1.0", "@chakra-ui/shared-utils": "2.0.5" + }, + "peerDependencies": { + "@chakra-ui/system": ">=2.0.0", + "framer-motion": ">=4.0.0", + "react": ">=18", + "react-dom": ">=18" } }, - "@chakra-ui/transition": { - "version": "2.0.16", - "resolved": "https://registry.npmjs.org/@chakra-ui/transition/-/transition-2.0.16.tgz", - "integrity": "sha512-E+RkwlPc3H7P1crEXmXwDXMB2lqY2LLia2P5siQ4IEnRWIgZXlIw+8Em+NtHNgusel2N+9yuB0wT9SeZZeZ3CQ==", - "requires": { + "node_modules/@chakra-ui/transition": { + "version": "2.1.0", + "license": "MIT", + "dependencies": { "@chakra-ui/shared-utils": "2.0.5" + }, + "peerDependencies": { + "framer-motion": ">=4.0.0", + "react": ">=18" } }, - "@chakra-ui/utils": { + "node_modules/@chakra-ui/utils": { "version": "2.0.15", - "resolved": "https://registry.npmjs.org/@chakra-ui/utils/-/utils-2.0.15.tgz", - "integrity": "sha512-El4+jL0WSaYYs+rJbuYFDbjmfCcfGDmRY95GO4xwzit6YAPZBLcR65rOEwLps+XWluZTy1xdMrusg/hW0c1aAA==", - "requires": { + "license": "MIT", + "dependencies": { "@types/lodash.mergewith": "4.6.7", "css-box-model": "1.2.1", "framesync": "6.1.2", "lodash.mergewith": "4.6.2" } }, - "@chakra-ui/visually-hidden": { - "version": "2.0.15", - "resolved": "https://registry.npmjs.org/@chakra-ui/visually-hidden/-/visually-hidden-2.0.15.tgz", - "integrity": "sha512-WWULIiucYRBIewHKFA7BssQ2ABLHLVd9lrUo3N3SZgR0u4ZRDDVEUNOy+r+9ruDze8+36dGbN9wsN1IdELtdOw==", - "requires": {} - }, - "@emotion/babel-plugin": { - "version": "11.11.0", - "resolved": "https://registry.npmjs.org/@emotion/babel-plugin/-/babel-plugin-11.11.0.tgz", - "integrity": "sha512-m4HEDZleaaCH+XgDDsPF15Ht6wTLsgDTeR3WYj9Q/k76JtWhrJjcP4+/XlG8LGT/Rol9qUfOIztXeA84ATpqPQ==", - "requires": { + "node_modules/@chakra-ui/visually-hidden": { + "version": "2.2.0", + "license": "MIT", + "peerDependencies": { + "@chakra-ui/system": ">=2.0.0", + "react": ">=18" + } + }, + "node_modules/@emotion/babel-plugin": { + "version": "11.12.0", + "license": "MIT", + "dependencies": { "@babel/helper-module-imports": "^7.16.7", "@babel/runtime": "^7.18.3", - "@emotion/hash": "^0.9.1", - "@emotion/memoize": "^0.8.1", - "@emotion/serialize": "^1.1.2", + "@emotion/hash": "^0.9.2", + "@emotion/memoize": "^0.9.0", + "@emotion/serialize": "^1.2.0", "babel-plugin-macros": "^3.1.0", "convert-source-map": "^1.5.0", "escape-string-regexp": "^4.0.0", "find-root": "^1.1.0", "source-map": "^0.5.7", "stylis": "4.2.0" + } + }, + "node_modules/@emotion/babel-plugin/node_modules/escape-string-regexp": { + "version": "4.0.0", + "license": "MIT", + "engines": { + "node": ">=10" }, - "dependencies": { - "escape-string-regexp": { - "version": "4.0.0", - "resolved": "https://registry.npmjs.org/escape-string-regexp/-/escape-string-regexp-4.0.0.tgz", - "integrity": "sha512-TtpcNJ3XAzx3Gq8sWRzJaVajRs0uVxA2YAkdb1jm2YkPz4G6egUFAyA3n5vtEIZefPk5Wa4UXbKuS5fKkJWdgA==" - } + "funding": { + "url": "https://github.com/sponsors/sindresorhus" } }, - "@emotion/cache": { - "version": "11.11.0", - "resolved": "https://registry.npmjs.org/@emotion/cache/-/cache-11.11.0.tgz", - "integrity": "sha512-P34z9ssTCBi3e9EI1ZsWpNHcfY1r09ZO0rZbRO2ob3ZQMnFI35jB536qoXbkdesr5EUhYi22anuEJuyxifaqAQ==", - "requires": { - "@emotion/memoize": "^0.8.1", - "@emotion/sheet": "^1.2.2", - "@emotion/utils": "^1.2.1", - "@emotion/weak-memoize": "^0.3.1", + "node_modules/@emotion/cache": { + "version": "11.13.1", + "license": "MIT", + "dependencies": { + "@emotion/memoize": "^0.9.0", + "@emotion/sheet": "^1.4.0", + "@emotion/utils": "^1.4.0", + "@emotion/weak-memoize": "^0.4.0", "stylis": "4.2.0" } }, - "@emotion/hash": { - "version": "0.9.1", - "resolved": "https://registry.npmjs.org/@emotion/hash/-/hash-0.9.1.tgz", - "integrity": "sha512-gJB6HLm5rYwSLI6PQa+X1t5CFGrv1J1TWG+sOyMCeKz2ojaj6Fnl/rZEspogG+cvqbt4AE/2eIyD2QfLKTBNlQ==" + "node_modules/@emotion/hash": { + "version": "0.9.2", + "license": "MIT" + }, + "node_modules/@emotion/is-prop-valid": { + "version": "1.3.0", + "license": "MIT", + "dependencies": { + "@emotion/memoize": "^0.9.0" + } + }, + "node_modules/@emotion/memoize": { + "version": "0.9.0", + "license": "MIT" }, - "@emotion/is-prop-valid": { - "version": "1.2.1", - "resolved": "https://registry.npmjs.org/@emotion/is-prop-valid/-/is-prop-valid-1.2.1.tgz", - "integrity": "sha512-61Mf7Ufx4aDxx1xlDeOm8aFFigGHE4z+0sKCa+IHCeZKiyP9RLD0Mmx7m8b9/Cf37f7NAvQOOJAbQQGVr5uERw==", - "requires": { - "@emotion/memoize": "^0.8.1" - } - }, - "@emotion/memoize": { - "version": "0.8.1", - "resolved": "https://registry.npmjs.org/@emotion/memoize/-/memoize-0.8.1.tgz", - "integrity": "sha512-W2P2c/VRW1/1tLox0mVUalvnWXxavmv/Oum2aPsRcoDJuob75FC3Y8FbpfLwUegRcxINtGUMPq0tFCvYNTBXNA==" - }, - "@emotion/react": { - "version": "11.11.1", - "resolved": "https://registry.npmjs.org/@emotion/react/-/react-11.11.1.tgz", - "integrity": "sha512-5mlW1DquU5HaxjLkfkGN1GA/fvVGdyHURRiX/0FHl2cfIfRxSOfmxEH5YS43edp0OldZrZ+dkBKbngxcNCdZvA==", - "requires": { + "node_modules/@emotion/react": { + "version": "11.13.0", + "license": "MIT", + "dependencies": { "@babel/runtime": "^7.18.3", - "@emotion/babel-plugin": "^11.11.0", - "@emotion/cache": "^11.11.0", - "@emotion/serialize": "^1.1.2", - "@emotion/use-insertion-effect-with-fallbacks": "^1.0.1", - "@emotion/utils": "^1.2.1", - "@emotion/weak-memoize": "^0.3.1", + "@emotion/babel-plugin": "^11.12.0", + "@emotion/cache": "^11.13.0", + "@emotion/serialize": "^1.3.0", + "@emotion/use-insertion-effect-with-fallbacks": "^1.1.0", + "@emotion/utils": "^1.4.0", + "@emotion/weak-memoize": "^0.4.0", "hoist-non-react-statics": "^3.3.1" + }, + "peerDependencies": { + "react": ">=16.8.0" + }, + "peerDependenciesMeta": { + "@types/react": { + "optional": true + } } }, - "@emotion/serialize": { - "version": "1.1.2", - "resolved": "https://registry.npmjs.org/@emotion/serialize/-/serialize-1.1.2.tgz", - "integrity": "sha512-zR6a/fkFP4EAcCMQtLOhIgpprZOwNmCldtpaISpvz348+DP4Mz8ZoKaGGCQpbzepNIUWbq4w6hNZkwDyKoS+HA==", - "requires": { - "@emotion/hash": "^0.9.1", - "@emotion/memoize": "^0.8.1", - "@emotion/unitless": "^0.8.1", - "@emotion/utils": "^1.2.1", + "node_modules/@emotion/serialize": { + "version": "1.3.0", + "license": "MIT", + "dependencies": { + "@emotion/hash": "^0.9.2", + "@emotion/memoize": "^0.9.0", + "@emotion/unitless": "^0.9.0", + "@emotion/utils": "^1.4.0", "csstype": "^3.0.2" } }, - "@emotion/sheet": { - "version": "1.2.2", - "resolved": "https://registry.npmjs.org/@emotion/sheet/-/sheet-1.2.2.tgz", - "integrity": "sha512-0QBtGvaqtWi+nx6doRwDdBIzhNdZrXUppvTM4dtZZWEGTXL/XE/yJxLMGlDT1Gt+UHH5IX1n+jkXyytE/av7OA==" - }, - "@emotion/styled": { - "version": "11.11.0", - "resolved": "https://registry.npmjs.org/@emotion/styled/-/styled-11.11.0.tgz", - "integrity": "sha512-hM5Nnvu9P3midq5aaXj4I+lnSfNi7Pmd4EWk1fOZ3pxookaQTNew6bp4JaCBYM4HVFZF9g7UjJmsUmC2JlxOng==", - "requires": { + "node_modules/@emotion/sheet": { + "version": "1.4.0", + "license": "MIT" + }, + "node_modules/@emotion/styled": { + "version": "11.13.0", + "license": "MIT", + "dependencies": { "@babel/runtime": "^7.18.3", - "@emotion/babel-plugin": "^11.11.0", - "@emotion/is-prop-valid": "^1.2.1", - "@emotion/serialize": "^1.1.2", - "@emotion/use-insertion-effect-with-fallbacks": "^1.0.1", - "@emotion/utils": "^1.2.1" + "@emotion/babel-plugin": "^11.12.0", + "@emotion/is-prop-valid": "^1.3.0", + "@emotion/serialize": "^1.3.0", + "@emotion/use-insertion-effect-with-fallbacks": "^1.1.0", + "@emotion/utils": "^1.4.0" + }, + "peerDependencies": { + "@emotion/react": "^11.0.0-rc.0", + "react": ">=16.8.0" + }, + "peerDependenciesMeta": { + "@types/react": { + "optional": true + } } }, - "@emotion/unitless": { - "version": "0.8.1", - "resolved": "https://registry.npmjs.org/@emotion/unitless/-/unitless-0.8.1.tgz", - "integrity": "sha512-KOEGMu6dmJZtpadb476IsZBclKvILjopjUii3V+7MnXIQCYh8W3NgNcgwo21n9LXZX6EDIKvqfjYxXebDwxKmQ==" - }, - "@emotion/use-insertion-effect-with-fallbacks": { - "version": "1.0.1", - "resolved": "https://registry.npmjs.org/@emotion/use-insertion-effect-with-fallbacks/-/use-insertion-effect-with-fallbacks-1.0.1.tgz", - "integrity": "sha512-jT/qyKZ9rzLErtrjGgdkMBn2OP8wl0G3sQlBb3YPryvKHsjvINUhVaPFfP+fpBcOkmrVOVEEHQFJ7nbj2TH2gw==", - "requires": {} - }, - "@emotion/utils": { - "version": "1.2.1", - "resolved": "https://registry.npmjs.org/@emotion/utils/-/utils-1.2.1.tgz", - "integrity": "sha512-Y2tGf3I+XVnajdItskUCn6LX+VUDmP6lTL4fcqsXAv43dnlbZiuW4MWQW38rW/BVWSE7Q/7+XQocmpnRYILUmg==" - }, - "@emotion/weak-memoize": { - "version": "0.3.1", - "resolved": "https://registry.npmjs.org/@emotion/weak-memoize/-/weak-memoize-0.3.1.tgz", - "integrity": "sha512-EsBwpc7hBUJWAsNPBmJy4hxWx12v6bshQsldrVmjxJoc3isbxhOrF2IcCpaXxfvq03NwkI7sbsOLXbYuqF/8Ww==" - }, - "@esbuild/android-arm": { - "version": "0.18.13", - "resolved": "https://registry.npmjs.org/@esbuild/android-arm/-/android-arm-0.18.13.tgz", - "integrity": "sha512-KwqFhxRFMKZINHzCqf8eKxE0XqWlAVPRxwy6rc7CbVFxzUWB2sA/s3hbMZeemPdhN3fKBkqOaFhTbS8xJXYIWQ==", - "dev": true, - "optional": true - }, - "@esbuild/android-arm64": { - "version": "0.18.13", - "resolved": "https://registry.npmjs.org/@esbuild/android-arm64/-/android-arm64-0.18.13.tgz", - "integrity": "sha512-j7NhycJUoUAG5kAzGf4fPWfd17N6SM3o1X6MlXVqfHvs2buFraCJzos9vbeWjLxOyBKHyPOnuCuipbhvbYtTAg==", - "dev": true, - "optional": true - }, - "@esbuild/android-x64": { - "version": "0.18.13", - "resolved": "https://registry.npmjs.org/@esbuild/android-x64/-/android-x64-0.18.13.tgz", - "integrity": "sha512-M2eZkRxR6WnWfVELHmv6MUoHbOqnzoTVSIxgtsyhm/NsgmL+uTmag/VVzdXvmahak1I6sOb1K/2movco5ikDJg==", - "dev": true, - "optional": true - }, - "@esbuild/darwin-arm64": { - "version": "0.18.13", - "resolved": "https://registry.npmjs.org/@esbuild/darwin-arm64/-/darwin-arm64-0.18.13.tgz", - "integrity": "sha512-f5goG30YgR1GU+fxtaBRdSW3SBG9pZW834Mmhxa6terzcboz7P2R0k4lDxlkP7NYRIIdBbWp+VgwQbmMH4yV7w==", - "dev": true, - "optional": true - }, - "@esbuild/darwin-x64": { - "version": "0.18.13", - "resolved": "https://registry.npmjs.org/@esbuild/darwin-x64/-/darwin-x64-0.18.13.tgz", - "integrity": "sha512-RIrxoKH5Eo+yE5BtaAIMZaiKutPhZjw+j0OCh8WdvKEKJQteacq0myZvBDLU+hOzQOZWJeDnuQ2xgSScKf1Ovw==", - "dev": true, - "optional": true - }, - "@esbuild/freebsd-arm64": { - "version": "0.18.13", - "resolved": "https://registry.npmjs.org/@esbuild/freebsd-arm64/-/freebsd-arm64-0.18.13.tgz", - "integrity": "sha512-AfRPhHWmj9jGyLgW/2FkYERKmYR+IjYxf2rtSLmhOrPGFh0KCETFzSjx/JX/HJnvIqHt/DRQD/KAaVsUKoI3Xg==", - "dev": true, - "optional": true - }, - "@esbuild/freebsd-x64": { - "version": "0.18.13", - "resolved": "https://registry.npmjs.org/@esbuild/freebsd-x64/-/freebsd-x64-0.18.13.tgz", - "integrity": "sha512-pGzWWZJBInhIgdEwzn8VHUBang8UvFKsvjDkeJ2oyY5gZtAM6BaxK0QLCuZY+qoj/nx/lIaItH425rm/hloETA==", - "dev": true, - "optional": true - }, - "@esbuild/linux-arm": { - "version": "0.18.13", - "resolved": "https://registry.npmjs.org/@esbuild/linux-arm/-/linux-arm-0.18.13.tgz", - "integrity": "sha512-4iMxLRMCxGyk7lEvkkvrxw4aJeC93YIIrfbBlUJ062kilUUnAiMb81eEkVvCVoh3ON283ans7+OQkuy1uHW+Hw==", - "dev": true, - "optional": true - }, - "@esbuild/linux-arm64": { - "version": "0.18.13", - "resolved": "https://registry.npmjs.org/@esbuild/linux-arm64/-/linux-arm64-0.18.13.tgz", - "integrity": "sha512-hCzZbVJEHV7QM77fHPv2qgBcWxgglGFGCxk6KfQx6PsVIdi1u09X7IvgE9QKqm38OpkzaAkPnnPqwRsltvLkIQ==", - "dev": true, - "optional": true - }, - "@esbuild/linux-ia32": { - "version": "0.18.13", - "resolved": "https://registry.npmjs.org/@esbuild/linux-ia32/-/linux-ia32-0.18.13.tgz", - "integrity": "sha512-I3OKGbynl3AAIO6onXNrup/ttToE6Rv2XYfFgLK/wnr2J+1g+7k4asLrE+n7VMhaqX+BUnyWkCu27rl+62Adug==", - "dev": true, - "optional": true - }, - "@esbuild/linux-loong64": { - "version": "0.18.13", - "resolved": "https://registry.npmjs.org/@esbuild/linux-loong64/-/linux-loong64-0.18.13.tgz", - "integrity": "sha512-8pcKDApAsKc6WW51ZEVidSGwGbebYw2qKnO1VyD8xd6JN0RN6EUXfhXmDk9Vc4/U3Y4AoFTexQewQDJGsBXBpg==", - "dev": true, - "optional": true - }, - "@esbuild/linux-mips64el": { - "version": "0.18.13", - "resolved": "https://registry.npmjs.org/@esbuild/linux-mips64el/-/linux-mips64el-0.18.13.tgz", - "integrity": "sha512-6GU+J1PLiVqWx8yoCK4Z0GnfKyCGIH5L2KQipxOtbNPBs+qNDcMJr9euxnyJ6FkRPyMwaSkjejzPSISD9hb+gg==", - "dev": true, - "optional": true - }, - "@esbuild/linux-ppc64": { - "version": "0.18.13", - "resolved": "https://registry.npmjs.org/@esbuild/linux-ppc64/-/linux-ppc64-0.18.13.tgz", - "integrity": "sha512-pfn/OGZ8tyR8YCV7MlLl5hAit2cmS+j/ZZg9DdH0uxdCoJpV7+5DbuXrR+es4ayRVKIcfS9TTMCs60vqQDmh+w==", - "dev": true, - "optional": true - }, - "@esbuild/linux-riscv64": { - "version": "0.18.13", - "resolved": "https://registry.npmjs.org/@esbuild/linux-riscv64/-/linux-riscv64-0.18.13.tgz", - "integrity": "sha512-aIbhU3LPg0lOSCfVeGHbmGYIqOtW6+yzO+Nfv57YblEK01oj0mFMtvDJlOaeAZ6z0FZ9D13oahi5aIl9JFphGg==", - "dev": true, - "optional": true - }, - "@esbuild/linux-s390x": { - "version": "0.18.13", - "resolved": "https://registry.npmjs.org/@esbuild/linux-s390x/-/linux-s390x-0.18.13.tgz", - "integrity": "sha512-Pct1QwF2sp+5LVi4Iu5Y+6JsGaV2Z2vm4O9Dd7XZ5tKYxEHjFtb140fiMcl5HM1iuv6xXO8O1Vrb1iJxHlv8UA==", - "dev": true, - "optional": true - }, - "@esbuild/linux-x64": { - "version": "0.18.13", - "resolved": "https://registry.npmjs.org/@esbuild/linux-x64/-/linux-x64-0.18.13.tgz", - "integrity": "sha512-zTrIP0KzYP7O0+3ZnmzvUKgGtUvf4+piY8PIO3V8/GfmVd3ZyHJGz7Ht0np3P1wz+I8qJ4rjwJKqqEAbIEPngA==", - "dev": true, - "optional": true - }, - "@esbuild/netbsd-x64": { - "version": "0.18.13", - "resolved": "https://registry.npmjs.org/@esbuild/netbsd-x64/-/netbsd-x64-0.18.13.tgz", - "integrity": "sha512-I6zs10TZeaHDYoGxENuksxE1sxqZpCp+agYeW039yqFwh3MgVvdmXL5NMveImOC6AtpLvE4xG5ujVic4NWFIDQ==", - "dev": true, - "optional": true - }, - "@esbuild/openbsd-x64": { - "version": "0.18.13", - "resolved": "https://registry.npmjs.org/@esbuild/openbsd-x64/-/openbsd-x64-0.18.13.tgz", - "integrity": "sha512-W5C5nczhrt1y1xPG5bV+0M12p2vetOGlvs43LH8SopQ3z2AseIROu09VgRqydx5qFN7y9qCbpgHLx0kb0TcW7g==", - "dev": true, - "optional": true + "node_modules/@emotion/unitless": { + "version": "0.9.0", + "license": "MIT" }, - "@esbuild/sunos-x64": { - "version": "0.18.13", - "resolved": "https://registry.npmjs.org/@esbuild/sunos-x64/-/sunos-x64-0.18.13.tgz", - "integrity": "sha512-X/xzuw4Hzpo/yq3YsfBbIsipNgmsm8mE/QeWbdGdTTeZ77fjxI2K0KP3AlhZ6gU3zKTw1bKoZTuKLnqcJ537qw==", - "dev": true, - "optional": true + "node_modules/@emotion/use-insertion-effect-with-fallbacks": { + "version": "1.1.0", + "license": "MIT", + "peerDependencies": { + "react": ">=16.8.0" + } }, - "@esbuild/win32-arm64": { - "version": "0.18.13", - "resolved": "https://registry.npmjs.org/@esbuild/win32-arm64/-/win32-arm64-0.18.13.tgz", - "integrity": "sha512-4CGYdRQT/ILd+yLLE5i4VApMPfGE0RPc/wFQhlluDQCK09+b4JDbxzzjpgQqTPrdnP7r5KUtGVGZYclYiPuHrw==", - "dev": true, - "optional": true + "node_modules/@emotion/utils": { + "version": "1.4.0", + "license": "MIT" }, - "@esbuild/win32-ia32": { - "version": "0.18.13", - "resolved": "https://registry.npmjs.org/@esbuild/win32-ia32/-/win32-ia32-0.18.13.tgz", - "integrity": "sha512-D+wKZaRhQI+MUGMH+DbEr4owC2D7XnF+uyGiZk38QbgzLcofFqIOwFs7ELmIeU45CQgfHNy9Q+LKW3cE8g37Kg==", - "dev": true, - "optional": true + "node_modules/@emotion/weak-memoize": { + "version": "0.4.0", + "license": "MIT" }, - "@esbuild/win32-x64": { + "node_modules/@esbuild/darwin-x64": { "version": "0.18.13", - "resolved": "https://registry.npmjs.org/@esbuild/win32-x64/-/win32-x64-0.18.13.tgz", - "integrity": "sha512-iVl6lehAfJS+VmpF3exKpNQ8b0eucf5VWfzR8S7xFve64NBNz2jPUgx1X93/kfnkfgP737O+i1k54SVQS7uVZA==", + "cpu": [ + "x64" + ], "dev": true, - "optional": true + "license": "MIT", + "optional": true, + "os": [ + "darwin" + ], + "engines": { + "node": ">=12" + } }, - "@eslint-community/eslint-utils": { + "node_modules/@eslint-community/eslint-utils": { "version": "4.4.0", - "resolved": "https://registry.npmjs.org/@eslint-community/eslint-utils/-/eslint-utils-4.4.0.tgz", - "integrity": "sha512-1/sA4dwrzBAyeUoQ6oxahHKmrZvsnLCg4RfxW3ZFGGmQkSNQPFNLV9CUEFQP1x9EYXHTo5p6xdhZM1Ne9p/AfA==", "dev": true, - "requires": { + "license": "MIT", + "dependencies": { "eslint-visitor-keys": "^3.3.0" + }, + "engines": { + "node": "^12.22.0 || ^14.17.0 || >=16.0.0" + }, + "peerDependencies": { + "eslint": "^6.0.0 || ^7.0.0 || >=8.0.0" } }, - "@eslint-community/regexpp": { + "node_modules/@eslint-community/regexpp": { "version": "4.5.1", - "resolved": "https://registry.npmjs.org/@eslint-community/regexpp/-/regexpp-4.5.1.tgz", - "integrity": "sha512-Z5ba73P98O1KUYCCJTUeVpja9RcGoMdncZ6T49FCUl2lN38JtCJ+3WgIDBv0AuY4WChU5PmtJmOCTlN6FZTFKQ==", - "dev": true + "dev": true, + "license": "MIT", + "engines": { + "node": "^12.0.0 || ^14.0.0 || >=16.0.0" + } }, - "@eslint/eslintrc": { + "node_modules/@eslint/eslintrc": { "version": "2.1.0", - "resolved": "https://registry.npmjs.org/@eslint/eslintrc/-/eslintrc-2.1.0.tgz", - "integrity": "sha512-Lj7DECXqIVCqnqjjHMPna4vn6GJcMgul/wuS0je9OZ9gsL0zzDpKPVtcG1HaDVc+9y+qgXneTeUMbCqXJNpH1A==", "dev": true, - "requires": { + "license": "MIT", + "dependencies": { "ajv": "^6.12.4", "debug": "^4.3.2", "espree": "^9.6.0", @@ -6881,313 +3167,370 @@ "minimatch": "^3.1.2", "strip-json-comments": "^3.1.1" }, + "engines": { + "node": "^12.22.0 || ^14.17.0 || >=16.0.0" + }, + "funding": { + "url": "https://opencollective.com/eslint" + } + }, + "node_modules/@eslint/eslintrc/node_modules/globals": { + "version": "13.20.0", + "dev": true, + "license": "MIT", "dependencies": { - "globals": { - "version": "13.20.0", - "resolved": "https://registry.npmjs.org/globals/-/globals-13.20.0.tgz", - "integrity": "sha512-Qg5QtVkCy/kv3FUSlu4ukeZDVf9ee0iXLAUYX13gbR17bnejFTzr4iS9bY7kwCf1NztRNm1t91fjOiyx4CSwPQ==", - "dev": true, - "requires": { - "type-fest": "^0.20.2" - } - } + "type-fest": "^0.20.2" + }, + "engines": { + "node": ">=8" + }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" } }, - "@eslint/js": { + "node_modules/@eslint/js": { "version": "8.44.0", - "resolved": "https://registry.npmjs.org/@eslint/js/-/js-8.44.0.tgz", - "integrity": "sha512-Ag+9YM4ocKQx9AarydN0KY2j0ErMHNIocPDrVo8zAE44xLTjEtz81OdR68/cydGtk6m6jDb5Za3r2useMzYmSw==", - "dev": true + "dev": true, + "license": "MIT", + "engines": { + "node": "^12.22.0 || ^14.17.0 || >=16.0.0" + } }, - "@humanwhocodes/config-array": { + "node_modules/@humanwhocodes/config-array": { "version": "0.11.10", - "resolved": "https://registry.npmjs.org/@humanwhocodes/config-array/-/config-array-0.11.10.tgz", - "integrity": "sha512-KVVjQmNUepDVGXNuoRRdmmEjruj0KfiGSbS8LVc12LMsWDQzRXJ0qdhN8L8uUigKpfEHRhlaQFY0ib1tnUbNeQ==", "dev": true, - "requires": { + "license": "Apache-2.0", + "dependencies": { "@humanwhocodes/object-schema": "^1.2.1", "debug": "^4.1.1", "minimatch": "^3.0.5" + }, + "engines": { + "node": ">=10.10.0" } }, - "@humanwhocodes/module-importer": { + "node_modules/@humanwhocodes/module-importer": { "version": "1.0.1", - "resolved": "https://registry.npmjs.org/@humanwhocodes/module-importer/-/module-importer-1.0.1.tgz", - "integrity": "sha512-bxveV4V8v5Yb4ncFTT3rPSgZBOpCkjfK0y4oVVVJwIuDVBRMDXrPyXRL988i5ap9m9bnyEEjWfm5WkBmtffLfA==", - "dev": true + "dev": true, + "license": "Apache-2.0", + "engines": { + "node": ">=12.22" + }, + "funding": { + "type": "github", + "url": "https://github.com/sponsors/nzakas" + } }, - "@humanwhocodes/object-schema": { + "node_modules/@humanwhocodes/object-schema": { "version": "1.2.1", - "resolved": "https://registry.npmjs.org/@humanwhocodes/object-schema/-/object-schema-1.2.1.tgz", - "integrity": "sha512-ZnQMnLV4e7hDlUvw8H+U8ASL02SS2Gn6+9Ac3wGGLIe7+je2AeAOxPY+izIPJDfFDb7eDjev0Us8MO1iFRN8hA==", - "dev": true + "dev": true, + "license": "BSD-3-Clause" }, - "@jridgewell/gen-mapping": { - "version": "0.3.3", - "resolved": "https://registry.npmjs.org/@jridgewell/gen-mapping/-/gen-mapping-0.3.3.tgz", - "integrity": "sha512-HLhSWOLRi875zjjMG/r+Nv0oCW8umGb0BgEhyX3dDX3egwZtB8PqLnjz3yedt8R5StBrzcg4aBpnh8UA9D1BoQ==", + "node_modules/@jridgewell/gen-mapping": { + "version": "0.3.5", "dev": true, - "requires": { - "@jridgewell/set-array": "^1.0.1", + "license": "MIT", + "dependencies": { + "@jridgewell/set-array": "^1.2.1", "@jridgewell/sourcemap-codec": "^1.4.10", - "@jridgewell/trace-mapping": "^0.3.9" + "@jridgewell/trace-mapping": "^0.3.24" + }, + "engines": { + "node": ">=6.0.0" } }, - "@jridgewell/resolve-uri": { + "node_modules/@jridgewell/resolve-uri": { "version": "3.1.0", - "resolved": "https://registry.npmjs.org/@jridgewell/resolve-uri/-/resolve-uri-3.1.0.tgz", - "integrity": "sha512-F2msla3tad+Mfht5cJq7LSXcdudKTWCVYUgw6pLFOOHSTtZlj6SWNYAp+AhuqLmWdBO2X5hPrLcu8cVP8fy28w==", - "dev": true + "dev": true, + "license": "MIT", + "engines": { + "node": ">=6.0.0" + } }, - "@jridgewell/set-array": { - "version": "1.1.2", - "resolved": "https://registry.npmjs.org/@jridgewell/set-array/-/set-array-1.1.2.tgz", - "integrity": "sha512-xnkseuNADM0gt2bs+BvhO0p78Mk762YnZdsuzFV018NoG1Sj1SCQvpSqa7XUaTam5vAGasABV9qXASMKnFMwMw==", - "dev": true + "node_modules/@jridgewell/set-array": { + "version": "1.2.1", + "dev": true, + "license": "MIT", + "engines": { + "node": ">=6.0.0" + } }, - "@jridgewell/sourcemap-codec": { + "node_modules/@jridgewell/sourcemap-codec": { "version": "1.4.15", - "resolved": "https://registry.npmjs.org/@jridgewell/sourcemap-codec/-/sourcemap-codec-1.4.15.tgz", - "integrity": "sha512-eF2rxCRulEKXHTRiDrDy6erMYWqNw4LPdQ8UQA4huuxaQsVeRPFl2oM8oDGxMFhJUWZf9McpLtJasDDZb/Bpeg==", - "dev": true + "dev": true, + "license": "MIT" }, - "@jridgewell/trace-mapping": { - "version": "0.3.18", - "resolved": "https://registry.npmjs.org/@jridgewell/trace-mapping/-/trace-mapping-0.3.18.tgz", - "integrity": "sha512-w+niJYzMHdd7USdiH2U6869nqhD2nbfZXND5Yp93qIbEmnDNk7PD48o+YchRVpzMU7M6jVCbenTR7PA1FLQ9pA==", + "node_modules/@jridgewell/trace-mapping": { + "version": "0.3.25", "dev": true, - "requires": { - "@jridgewell/resolve-uri": "3.1.0", - "@jridgewell/sourcemap-codec": "1.4.14" - }, + "license": "MIT", "dependencies": { - "@jridgewell/sourcemap-codec": { - "version": "1.4.14", - "resolved": "https://registry.npmjs.org/@jridgewell/sourcemap-codec/-/sourcemap-codec-1.4.14.tgz", - "integrity": "sha512-XPSJHWmi394fuUuzDnGz1wiKqWfo1yXecHQMRf2l6hztTO+nPru658AyDngaBe7isIxEkRsPR3FZh+s7iVa4Uw==", - "dev": true - } + "@jridgewell/resolve-uri": "^3.1.0", + "@jridgewell/sourcemap-codec": "^1.4.14" } }, - "@nodelib/fs.scandir": { + "node_modules/@nodelib/fs.scandir": { "version": "2.1.5", - "resolved": "https://registry.npmjs.org/@nodelib/fs.scandir/-/fs.scandir-2.1.5.tgz", - "integrity": "sha512-vq24Bq3ym5HEQm2NKCr3yXDwjc7vTsEThRDnkp2DK9p1uqLR+DHurm/NOTo0KG7HYHU7eppKZj3MyqYuMBf62g==", "dev": true, - "requires": { + "license": "MIT", + "dependencies": { "@nodelib/fs.stat": "2.0.5", "run-parallel": "^1.1.9" + }, + "engines": { + "node": ">= 8" } }, - "@nodelib/fs.stat": { + "node_modules/@nodelib/fs.stat": { "version": "2.0.5", - "resolved": "https://registry.npmjs.org/@nodelib/fs.stat/-/fs.stat-2.0.5.tgz", - "integrity": "sha512-RkhPPp2zrqDAQA/2jNhnztcPAlv64XdhIp7a7454A5ovI7Bukxgt7MX7udwAu3zg1DcpPU0rz3VV1SeaqvY4+A==", - "dev": true + "dev": true, + "license": "MIT", + "engines": { + "node": ">= 8" + } }, - "@nodelib/fs.walk": { + "node_modules/@nodelib/fs.walk": { "version": "1.2.8", - "resolved": "https://registry.npmjs.org/@nodelib/fs.walk/-/fs.walk-1.2.8.tgz", - "integrity": "sha512-oGB+UxlgWcgQkgwo8GcEGwemoTFt3FIO9ababBmaGwXIoBKZ+GTy0pP185beGg7Llih/NSHSV2XAs1lnznocSg==", "dev": true, - "requires": { + "license": "MIT", + "dependencies": { "@nodelib/fs.scandir": "2.1.5", "fastq": "^1.6.0" + }, + "engines": { + "node": ">= 8" } }, - "@popperjs/core": { + "node_modules/@popperjs/core": { "version": "2.11.8", - "resolved": "https://registry.npmjs.org/@popperjs/core/-/core-2.11.8.tgz", - "integrity": "sha512-P1st0aksCrn9sGZhp8GMYwBnQsbvAWsZAX44oXNNvLHGqAOcoVxmjZiohstwQ7SqKnbR47akdNi+uleWD8+g6A==" + "license": "MIT", + "funding": { + "type": "opencollective", + "url": "https://opencollective.com/popperjs" + } }, - "@remix-run/router": { + "node_modules/@remix-run/router": { "version": "1.7.1", - "resolved": "https://registry.npmjs.org/@remix-run/router/-/router-1.7.1.tgz", - "integrity": "sha512-bgVQM4ZJ2u2CM8k1ey70o1ePFXsEzYVZoWghh6WjM8p59jQ7HxzbHW4SbnWFG7V9ig9chLawQxDTZ3xzOF8MkQ==" + "license": "MIT", + "engines": { + "node": ">=14" + } }, - "@socket.io/component-emitter": { + "node_modules/@socket.io/component-emitter": { "version": "3.1.0", - "resolved": "https://registry.npmjs.org/@socket.io/component-emitter/-/component-emitter-3.1.0.tgz", - "integrity": "sha512-+9jVqKhRSpsc591z5vX+X5Yyw+he/HCB4iQ/RYxw35CEPaY1gnsNE43nf9n9AaYjAQrTiI/mOwKUKdUs9vf7Xg==" + "license": "MIT" }, - "@types/lodash": { + "node_modules/@types/lodash": { "version": "4.14.195", - "resolved": "https://registry.npmjs.org/@types/lodash/-/lodash-4.14.195.tgz", - "integrity": "sha512-Hwx9EUgdwf2GLarOjQp5ZH8ZmblzcbTBC2wtQWNKARBSxM9ezRIAUpeDTgoQRAFB0+8CNWXVA9+MaSOzOF3nPg==" + "license": "MIT" }, - "@types/lodash.mergewith": { + "node_modules/@types/lodash.mergewith": { "version": "4.6.7", - "resolved": "https://registry.npmjs.org/@types/lodash.mergewith/-/lodash.mergewith-4.6.7.tgz", - "integrity": "sha512-3m+lkO5CLRRYU0fhGRp7zbsGi6+BZj0uTVSwvcKU+nSlhjA9/QRNfuSGnD2mX6hQA7ZbmcCkzk5h4ZYGOtk14A==", - "requires": { + "license": "MIT", + "dependencies": { "@types/lodash": "*" } }, - "@types/parse-json": { - "version": "4.0.0", - "resolved": "https://registry.npmjs.org/@types/parse-json/-/parse-json-4.0.0.tgz", - "integrity": "sha512-//oorEZjL6sbPcKUaCdIGlIUeH26mgzimjBB77G6XRgnDl/L5wOnpyBGRe/Mmf5CVW3PwEBE1NjiMZ/ssFh4wA==" + "node_modules/@types/parse-json": { + "version": "4.0.2", + "license": "MIT" }, - "@types/prop-types": { + "node_modules/@types/prop-types": { "version": "15.7.5", - "resolved": "https://registry.npmjs.org/@types/prop-types/-/prop-types-15.7.5.tgz", - "integrity": "sha512-JCB8C6SnDoQf0cNycqd/35A7MjcnK+ZTqE7judS6o7utxUCg6imJg3QK2qzHKszlTjcj2cn+NwMB2i96ubpj7w==", - "devOptional": true + "devOptional": true, + "license": "MIT" }, - "@types/react": { + "node_modules/@types/react": { "version": "18.2.15", - "resolved": "https://registry.npmjs.org/@types/react/-/react-18.2.15.tgz", - "integrity": "sha512-oEjE7TQt1fFTFSbf8kkNuc798ahTUzn3Le67/PWjE8MAfYAD/qB7O8hSTcromLFqHCt9bcdOg5GXMokzTjJ5SA==", "devOptional": true, - "requires": { + "license": "MIT", + "dependencies": { "@types/prop-types": "*", "@types/scheduler": "*", "csstype": "^3.0.2" } }, - "@types/react-dom": { + "node_modules/@types/react-dom": { "version": "18.2.7", - "resolved": "https://registry.npmjs.org/@types/react-dom/-/react-dom-18.2.7.tgz", - "integrity": "sha512-GRaAEriuT4zp9N4p1i8BDBYmEyfo+xQ3yHjJU4eiK5NDa1RmUZG+unZABUTK4/Ox/M+GaHwb6Ow8rUITrtjszA==", "dev": true, - "requires": { + "license": "MIT", + "dependencies": { "@types/react": "*" } }, - "@types/scheduler": { + "node_modules/@types/scheduler": { "version": "0.16.3", - "resolved": "https://registry.npmjs.org/@types/scheduler/-/scheduler-0.16.3.tgz", - "integrity": "sha512-5cJ8CB4yAx7BH1oMvdU0Jh9lrEXyPkar6F9G/ERswkCuvP4KQZfZkSjcMbAICCpQTN4OuZn8tz0HiKv9TGZgrQ==", - "devOptional": true + "devOptional": true, + "license": "MIT" }, - "@vitejs/plugin-react": { + "node_modules/@vitejs/plugin-react": { "version": "4.0.3", - "resolved": "https://registry.npmjs.org/@vitejs/plugin-react/-/plugin-react-4.0.3.tgz", - "integrity": "sha512-pwXDog5nwwvSIzwrvYYmA2Ljcd/ZNlcsSG2Q9CNDBwnsd55UGAyr2doXtB5j+2uymRCnCfExlznzzSFbBRcoCg==", "dev": true, - "requires": { + "license": "MIT", + "dependencies": { "@babel/core": "^7.22.5", "@babel/plugin-transform-react-jsx-self": "^7.22.5", "@babel/plugin-transform-react-jsx-source": "^7.22.5", "react-refresh": "^0.14.0" + }, + "engines": { + "node": "^14.18.0 || >=16.0.0" + }, + "peerDependencies": { + "vite": "^4.2.0" } }, - "@zag-js/element-size": { - "version": "0.3.2", - "resolved": "https://registry.npmjs.org/@zag-js/element-size/-/element-size-0.3.2.tgz", - "integrity": "sha512-bVvvigUGvAuj7PCkE5AbzvTJDTw5f3bg9nQdv+ErhVN8SfPPppLJEmmWdxqsRzrHXgx8ypJt/+Ty0kjtISVDsQ==" + "node_modules/@zag-js/dom-query": { + "version": "0.16.0", + "license": "MIT" + }, + "node_modules/@zag-js/element-size": { + "version": "0.10.5", + "license": "MIT" }, - "@zag-js/focus-visible": { - "version": "0.2.2", - "resolved": "https://registry.npmjs.org/@zag-js/focus-visible/-/focus-visible-0.2.2.tgz", - "integrity": "sha512-0j2gZq8HiZ51z4zNnSkF1iSkqlwRDvdH+son3wHdoz+7IUdMN/5Exd4TxMJ+gq2Of1DiXReYLL9qqh2PdQ4wgA==" + "node_modules/@zag-js/focus-visible": { + "version": "0.16.0", + "license": "MIT", + "dependencies": { + "@zag-js/dom-query": "0.16.0" + } }, - "acorn": { + "node_modules/acorn": { "version": "8.10.0", - "resolved": "https://registry.npmjs.org/acorn/-/acorn-8.10.0.tgz", - "integrity": "sha512-F0SAmZ8iUtS//m8DmCTA0jlh6TDKkHQyK6xc6V4KDTyZKA9dnvX9/3sRTVQrWm79glUAZbnmmNcdYwUIHWVybw==", - "dev": true + "dev": true, + "license": "MIT", + "bin": { + "acorn": "bin/acorn" + }, + "engines": { + "node": ">=0.4.0" + } }, - "acorn-jsx": { + "node_modules/acorn-jsx": { "version": "5.3.2", - "resolved": "https://registry.npmjs.org/acorn-jsx/-/acorn-jsx-5.3.2.tgz", - "integrity": "sha512-rq9s+JNhf0IChjtDXxllJ7g41oZk5SlXtp0LHwyA5cejwn7vKmKp4pPri6YEePv2PU65sAsegbXtIinmDFDXgQ==", "dev": true, - "requires": {} + "license": "MIT", + "peerDependencies": { + "acorn": "^6.0.0 || ^7.0.0 || ^8.0.0" + } }, - "ajv": { + "node_modules/ajv": { "version": "6.12.6", - "resolved": "https://registry.npmjs.org/ajv/-/ajv-6.12.6.tgz", - "integrity": "sha512-j3fVLgvTo527anyYyJOGTYJbG+vnnQYvE0m5mmkc1TK+nxAppkCLMIL0aZ4dblVCNoGShhm+kzE4ZUykBoMg4g==", "dev": true, - "requires": { + "license": "MIT", + "dependencies": { "fast-deep-equal": "^3.1.1", "fast-json-stable-stringify": "^2.0.0", "json-schema-traverse": "^0.4.1", "uri-js": "^4.2.2" + }, + "funding": { + "type": "github", + "url": "https://github.com/sponsors/epoberezkin" } }, - "ansi-regex": { + "node_modules/ansi-regex": { "version": "5.0.1", - "resolved": "https://registry.npmjs.org/ansi-regex/-/ansi-regex-5.0.1.tgz", - "integrity": "sha512-quJQXlTSUGL2LH9SUXo8VwsY4soanhgo6LNSm84E1LBcE8s3O0wpdiRzyR9z/ZZJMlMWv37qOOb9pdJlMUEKFQ==", - "dev": true + "dev": true, + "license": "MIT", + "engines": { + "node": ">=8" + } }, - "ansi-styles": { + "node_modules/ansi-styles": { "version": "3.2.1", - "resolved": "https://registry.npmjs.org/ansi-styles/-/ansi-styles-3.2.1.tgz", - "integrity": "sha512-VT0ZI6kZRdTh8YyJw3SMbYm/u+NqfsAxEpWO0Pf9sq8/e94WxxOpPKx9FR1FlyCtOVDNOQ+8ntlqFxiRc+r5qA==", - "requires": { + "license": "MIT", + "dependencies": { "color-convert": "^1.9.0" + }, + "engines": { + "node": ">=4" } }, - "argparse": { + "node_modules/argparse": { "version": "2.0.1", - "resolved": "https://registry.npmjs.org/argparse/-/argparse-2.0.1.tgz", - "integrity": "sha512-8+9WqebbFzpX9OR+Wa6O29asIogeRMzcGtAINdpMHHyAg10f05aSFVBbcEqGf/PXw1EjAZ+q2/bEBg3DvurK3Q==", - "dev": true + "dev": true, + "license": "Python-2.0" }, - "aria-hidden": { - "version": "1.2.3", - "resolved": "https://registry.npmjs.org/aria-hidden/-/aria-hidden-1.2.3.tgz", - "integrity": "sha512-xcLxITLe2HYa1cnYnwCjkOO1PqUHQpozB8x9AR0OgWN2woOBi5kSDVxKfd0b7sb1hw5qFeJhXm9H1nu3xSfLeQ==", - "requires": { + "node_modules/aria-hidden": { + "version": "1.2.4", + "license": "MIT", + "dependencies": { "tslib": "^2.0.0" + }, + "engines": { + "node": ">=10" } }, - "array-buffer-byte-length": { + "node_modules/array-buffer-byte-length": { "version": "1.0.0", - "resolved": "https://registry.npmjs.org/array-buffer-byte-length/-/array-buffer-byte-length-1.0.0.tgz", - "integrity": "sha512-LPuwb2P+NrQw3XhxGc36+XSvuBPopovXYTR9Ew++Du9Yb/bx5AzBfrIsBoj0EZUifjQU+sHL21sseZ3jerWO/A==", "dev": true, - "requires": { + "license": "MIT", + "dependencies": { "call-bind": "^1.0.2", "is-array-buffer": "^3.0.1" + }, + "funding": { + "url": "https://github.com/sponsors/ljharb" } }, - "array-includes": { + "node_modules/array-includes": { "version": "3.1.6", - "resolved": "https://registry.npmjs.org/array-includes/-/array-includes-3.1.6.tgz", - "integrity": "sha512-sgTbLvL6cNnw24FnbaDyjmvddQ2ML8arZsgaJhoABMoplz/4QRhtrYS+alr1BUM1Bwp6dhx8vVCBSLG+StwOFw==", "dev": true, - "requires": { + "license": "MIT", + "dependencies": { "call-bind": "^1.0.2", "define-properties": "^1.1.4", "es-abstract": "^1.20.4", "get-intrinsic": "^1.1.3", "is-string": "^1.0.7" + }, + "engines": { + "node": ">= 0.4" + }, + "funding": { + "url": "https://github.com/sponsors/ljharb" } }, - "array.prototype.flat": { + "node_modules/array.prototype.flat": { "version": "1.3.1", - "resolved": "https://registry.npmjs.org/array.prototype.flat/-/array.prototype.flat-1.3.1.tgz", - "integrity": "sha512-roTU0KWIOmJ4DRLmwKd19Otg0/mT3qPNt0Qb3GWW8iObuZXxrjB/pzn0R3hqpRSWg4HCwqx+0vwOnWnvlOyeIA==", "dev": true, - "requires": { + "license": "MIT", + "dependencies": { "call-bind": "^1.0.2", "define-properties": "^1.1.4", "es-abstract": "^1.20.4", "es-shim-unscopables": "^1.0.0" + }, + "engines": { + "node": ">= 0.4" + }, + "funding": { + "url": "https://github.com/sponsors/ljharb" } }, - "array.prototype.flatmap": { + "node_modules/array.prototype.flatmap": { "version": "1.3.1", - "resolved": "https://registry.npmjs.org/array.prototype.flatmap/-/array.prototype.flatmap-1.3.1.tgz", - "integrity": "sha512-8UGn9O1FDVvMNB0UlLv4voxRMze7+FpHyF5mSMRjWHUMlpoDViniy05870VlxhfgTnLbpuwTzvD76MTtWxB/mQ==", "dev": true, - "requires": { + "license": "MIT", + "dependencies": { "call-bind": "^1.0.2", "define-properties": "^1.1.4", "es-abstract": "^1.20.4", "es-shim-unscopables": "^1.0.0" + }, + "engines": { + "node": ">= 0.4" + }, + "funding": { + "url": "https://github.com/sponsors/ljharb" } }, - "array.prototype.tosorted": { + "node_modules/array.prototype.tosorted": { "version": "1.1.1", - "resolved": "https://registry.npmjs.org/array.prototype.tosorted/-/array.prototype.tosorted-1.1.1.tgz", - "integrity": "sha512-pZYPXPRl2PqWcsUs6LOMn+1f1532nEoPTYowBtqLwAW+W8vSVhkIGnmOX1t/UQjD6YGI0vcD2B1U7ZFGQH9jnQ==", "dev": true, - "requires": { + "license": "MIT", + "dependencies": { "call-bind": "^1.0.2", "define-properties": "^1.1.4", "es-abstract": "^1.20.4", @@ -7195,268 +3538,316 @@ "get-intrinsic": "^1.1.3" } }, - "available-typed-arrays": { + "node_modules/available-typed-arrays": { "version": "1.0.5", - "resolved": "https://registry.npmjs.org/available-typed-arrays/-/available-typed-arrays-1.0.5.tgz", - "integrity": "sha512-DMD0KiN46eipeziST1LPP/STfDU0sufISXmjSgvVsoU2tqxctQeASejWcfNtxYKqETM1UxQ8sp2OrSBWpHY6sw==", - "dev": true + "dev": true, + "license": "MIT", + "engines": { + "node": ">= 0.4" + }, + "funding": { + "url": "https://github.com/sponsors/ljharb" + } }, - "babel-plugin-macros": { + "node_modules/babel-plugin-macros": { "version": "3.1.0", - "resolved": "https://registry.npmjs.org/babel-plugin-macros/-/babel-plugin-macros-3.1.0.tgz", - "integrity": "sha512-Cg7TFGpIr01vOQNODXOOaGz2NpCU5gl8x1qJFbb6hbZxR7XrcE2vtbAsTAbJ7/xwJtUuJEw8K8Zr/AE0LHlesg==", - "requires": { + "license": "MIT", + "dependencies": { "@babel/runtime": "^7.12.5", "cosmiconfig": "^7.0.0", "resolve": "^1.19.0" }, - "dependencies": { - "resolve": { - "version": "1.22.2", - "resolved": "https://registry.npmjs.org/resolve/-/resolve-1.22.2.tgz", - "integrity": "sha512-Sb+mjNHOULsBv818T40qSPeRiuWLyaGMa5ewydRLFimneixmVy2zdivRl+AF6jaYPC8ERxGDmFSiqui6SfPd+g==", - "requires": { - "is-core-module": "^2.11.0", - "path-parse": "^1.0.7", - "supports-preserve-symlinks-flag": "^1.0.0" - } - } + "engines": { + "node": ">=10", + "npm": ">=6" } }, - "backend": { - "version": "file:..", - "requires": { - "bcryptjs": "^2.4.3", - "cloudinary": "^1.40.0", - "cookie-parser": "^1.4.6", - "dotenv": "^16.3.1", - "express": "^4.18.2", - "jsonwebtoken": "^9.0.1", - "mongoose": "^7.4.0", - "nodemon": "^3.0.1", - "socket.io": "^4.7.2" + "node_modules/babel-plugin-macros/node_modules/resolve": { + "version": "1.22.8", + "license": "MIT", + "dependencies": { + "is-core-module": "^2.13.0", + "path-parse": "^1.0.7", + "supports-preserve-symlinks-flag": "^1.0.0" + }, + "bin": { + "resolve": "bin/resolve" + }, + "funding": { + "url": "https://github.com/sponsors/ljharb" } }, - "balanced-match": { + "node_modules/backend": { + "resolved": "..", + "link": true + }, + "node_modules/balanced-match": { "version": "1.0.2", - "resolved": "https://registry.npmjs.org/balanced-match/-/balanced-match-1.0.2.tgz", - "integrity": "sha512-3oSeUO0TMV67hN1AmbXsK4yaqU7tjiHlbxRDZOpH0KW9+CeX4bRAaX0Anxt0tx2MrpRpWwQaPwIlISEJhYU5Pw==", - "dev": true + "dev": true, + "license": "MIT" }, - "brace-expansion": { + "node_modules/brace-expansion": { "version": "1.1.11", - "resolved": "https://registry.npmjs.org/brace-expansion/-/brace-expansion-1.1.11.tgz", - "integrity": "sha512-iCuPHDFgrHX7H2vEI/5xpz07zSHB00TpugqhmYtVmMO6518mCuRMoOYFldEBl0g187ufozdaHgWKcYFb61qGiA==", "dev": true, - "requires": { + "license": "MIT", + "dependencies": { "balanced-match": "^1.0.0", "concat-map": "0.0.1" } }, - "browserslist": { + "node_modules/browserslist": { "version": "4.21.9", - "resolved": "https://registry.npmjs.org/browserslist/-/browserslist-4.21.9.tgz", - "integrity": "sha512-M0MFoZzbUrRU4KNfCrDLnvyE7gub+peetoTid3TBIqtunaDJyXlwhakT+/VkvSXcfIzFfK/nkCs4nmyTmxdNSg==", "dev": true, - "requires": { + "funding": [ + { + "type": "opencollective", + "url": "https://opencollective.com/browserslist" + }, + { + "type": "tidelift", + "url": "https://tidelift.com/funding/github/npm/browserslist" + }, + { + "type": "github", + "url": "https://github.com/sponsors/ai" + } + ], + "license": "MIT", + "dependencies": { "caniuse-lite": "^1.0.30001503", "electron-to-chromium": "^1.4.431", "node-releases": "^2.0.12", "update-browserslist-db": "^1.0.11" + }, + "bin": { + "browserslist": "cli.js" + }, + "engines": { + "node": "^6 || ^7 || ^8 || ^9 || ^10 || ^11 || ^12 || >=13.7" } }, - "call-bind": { + "node_modules/call-bind": { "version": "1.0.2", - "resolved": "https://registry.npmjs.org/call-bind/-/call-bind-1.0.2.tgz", - "integrity": "sha512-7O+FbCihrB5WGbFYesctwmTKae6rOiIzmz1icreWJ+0aA7LJfuqhEso2T9ncpcFtzMQtzXf2QGGueWJGTYsqrA==", "dev": true, - "requires": { + "license": "MIT", + "dependencies": { "function-bind": "^1.1.1", "get-intrinsic": "^1.0.2" + }, + "funding": { + "url": "https://github.com/sponsors/ljharb" } }, - "callsites": { + "node_modules/callsites": { "version": "3.1.0", - "resolved": "https://registry.npmjs.org/callsites/-/callsites-3.1.0.tgz", - "integrity": "sha512-P8BjAsXvZS+VIDUI11hHCQEv74YT67YUi5JJFNWIqL235sBmjX4+qx9Muvls5ivyNENctx46xQLQ3aTuE7ssaQ==" + "license": "MIT", + "engines": { + "node": ">=6" + } }, - "caniuse-lite": { + "node_modules/caniuse-lite": { "version": "1.0.30001516", - "resolved": "https://registry.npmjs.org/caniuse-lite/-/caniuse-lite-1.0.30001516.tgz", - "integrity": "sha512-Wmec9pCBY8CWbmI4HsjBeQLqDTqV91nFVR83DnZpYyRnPI1wePDsTg0bGLPC5VU/3OIZV1fmxEea1b+tFKe86g==", - "dev": true + "dev": true, + "funding": [ + { + "type": "opencollective", + "url": "https://opencollective.com/browserslist" + }, + { + "type": "tidelift", + "url": "https://tidelift.com/funding/github/npm/caniuse-lite" + }, + { + "type": "github", + "url": "https://github.com/sponsors/ai" + } + ], + "license": "CC-BY-4.0" }, - "chalk": { + "node_modules/chalk": { "version": "2.4.2", - "resolved": "https://registry.npmjs.org/chalk/-/chalk-2.4.2.tgz", - "integrity": "sha512-Mti+f9lpJNcwF4tWV8/OrTTtF1gZi+f8FqlyAdouralcFWFQWF2+NgCHShjkCb+IFBLq9buZwE1xckQU4peSuQ==", - "requires": { + "license": "MIT", + "dependencies": { "ansi-styles": "^3.2.1", "escape-string-regexp": "^1.0.5", "supports-color": "^5.3.0" + }, + "engines": { + "node": ">=4" } }, - "color-convert": { + "node_modules/color-convert": { "version": "1.9.3", - "resolved": "https://registry.npmjs.org/color-convert/-/color-convert-1.9.3.tgz", - "integrity": "sha512-QfAUtd+vFdAtFQcC8CCyYt1fYWxSqAiK2cSD6zDB8N3cpsEBAvRxp9zOGg6G/SHHJYAT88/az/IuDGALsNVbGg==", - "requires": { + "license": "MIT", + "dependencies": { "color-name": "1.1.3" } }, - "color-name": { + "node_modules/color-name": { "version": "1.1.3", - "resolved": "https://registry.npmjs.org/color-name/-/color-name-1.1.3.tgz", - "integrity": "sha512-72fSenhMw2HZMTVHeCA9KCmpEIbzWiQsjN+BHcBbS9vr1mtt+vJjPdksIBNUmKAW8TFUDPJK5SUU3QhE9NEXDw==" + "license": "MIT" }, - "color2k": { - "version": "2.0.2", - "resolved": "https://registry.npmjs.org/color2k/-/color2k-2.0.2.tgz", - "integrity": "sha512-kJhwH5nAwb34tmyuqq/lgjEKzlFXn1U99NlnB6Ws4qVaERcRUYeYP1cBw6BJ4vxaWStAUEef4WMr7WjOCnBt8w==" + "node_modules/color2k": { + "version": "2.0.3", + "license": "MIT" }, - "compute-scroll-into-view": { - "version": "1.0.20", - "resolved": "https://registry.npmjs.org/compute-scroll-into-view/-/compute-scroll-into-view-1.0.20.tgz", - "integrity": "sha512-UCB0ioiyj8CRjtrvaceBLqqhZCVP+1B8+NWQhmdsm0VXOJtobBCf1dBQmebCCo34qZmUwZfIH2MZLqNHazrfjg==" + "node_modules/compute-scroll-into-view": { + "version": "3.0.3", + "license": "MIT" }, - "concat-map": { + "node_modules/concat-map": { "version": "0.0.1", - "resolved": "https://registry.npmjs.org/concat-map/-/concat-map-0.0.1.tgz", - "integrity": "sha512-/Srv4dswyQNBfohGpz9o6Yb3Gz3SrUDqBH5rTuhGR7ahtlbYKnVxw2bCFMRljaA7EXHaXZ8wsHdodFvbkhKmqg==", - "dev": true + "dev": true, + "license": "MIT" }, - "convert-source-map": { + "node_modules/convert-source-map": { "version": "1.9.0", - "resolved": "https://registry.npmjs.org/convert-source-map/-/convert-source-map-1.9.0.tgz", - "integrity": "sha512-ASFBup0Mz1uyiIjANan1jzLQami9z1PoYSZCiiYW2FczPbenXc45FZdBZLzOT+r6+iciuEModtmCti+hjaAk0A==" + "license": "MIT" }, - "copy-to-clipboard": { + "node_modules/copy-to-clipboard": { "version": "3.3.3", - "resolved": "https://registry.npmjs.org/copy-to-clipboard/-/copy-to-clipboard-3.3.3.tgz", - "integrity": "sha512-2KV8NhB5JqC3ky0r9PMCAZKbUHSwtEo4CwCs0KXgruG43gX5PMqDEBbVU4OUzw2MuAWUfsuFmWvEKG5QRfSnJA==", - "requires": { + "license": "MIT", + "dependencies": { "toggle-selection": "^1.0.6" } }, - "cosmiconfig": { + "node_modules/cosmiconfig": { "version": "7.1.0", - "resolved": "https://registry.npmjs.org/cosmiconfig/-/cosmiconfig-7.1.0.tgz", - "integrity": "sha512-AdmX6xUzdNASswsFtmwSt7Vj8po9IuqXm0UXz7QKPuEUmPB4XyjGfaAr2PSuELMwkRMVH1EpIkX5bTZGRB3eCA==", - "requires": { + "license": "MIT", + "dependencies": { "@types/parse-json": "^4.0.0", "import-fresh": "^3.2.1", "parse-json": "^5.0.0", "path-type": "^4.0.0", "yaml": "^1.10.0" + }, + "engines": { + "node": ">=10" } }, - "cross-spawn": { + "node_modules/cross-spawn": { "version": "7.0.3", - "resolved": "https://registry.npmjs.org/cross-spawn/-/cross-spawn-7.0.3.tgz", - "integrity": "sha512-iRDPJKUPVEND7dHPO8rkbOnPpyDygcDFtWjpeWNCgy8WP2rXcxXL8TskReQl6OrB2G7+UJrags1q15Fudc7G6w==", "dev": true, - "requires": { + "license": "MIT", + "dependencies": { "path-key": "^3.1.0", "shebang-command": "^2.0.0", "which": "^2.0.1" + }, + "engines": { + "node": ">= 8" } }, - "css-box-model": { + "node_modules/css-box-model": { "version": "1.2.1", - "resolved": "https://registry.npmjs.org/css-box-model/-/css-box-model-1.2.1.tgz", - "integrity": "sha512-a7Vr4Q/kd/aw96bnJG332W9V9LkJO69JRcaCYDUqjp6/z0w6VcZjgAcTbgFxEPfBgdnAwlh3iwu+hLopa+flJw==", - "requires": { + "license": "MIT", + "dependencies": { "tiny-invariant": "^1.0.6" } }, - "csstype": { + "node_modules/csstype": { "version": "3.1.2", - "resolved": "https://registry.npmjs.org/csstype/-/csstype-3.1.2.tgz", - "integrity": "sha512-I7K1Uu0MBPzaFKg4nI5Q7Vs2t+3gWWW648spaF+Rg7pI9ds18Ugn+lvg4SHczUdKlHI5LWBXyqfS8+DufyBsgQ==" + "license": "MIT" }, - "date-fns": { + "node_modules/date-fns": { "version": "2.30.0", - "resolved": "https://registry.npmjs.org/date-fns/-/date-fns-2.30.0.tgz", - "integrity": "sha512-fnULvOpxnC5/Vg3NCiWelDsLiUc9bRwAPs/+LfTLNvetFCtCTN+yQz15C/fs4AwX1R9K5GLtLfn8QW+dWisaAw==", - "requires": { + "license": "MIT", + "dependencies": { "@babel/runtime": "^7.21.0" + }, + "engines": { + "node": ">=0.11" + }, + "funding": { + "type": "opencollective", + "url": "https://opencollective.com/date-fns" } }, - "debug": { + "node_modules/debug": { "version": "4.3.4", - "resolved": "https://registry.npmjs.org/debug/-/debug-4.3.4.tgz", - "integrity": "sha512-PRWFHuSU3eDtQJPvnNY7Jcket1j0t5OuOsFzPPzsekD52Zl8qUfFIPEiswXqIvHWGVHOgX+7G/vCNNhehwxfkQ==", - "requires": { + "license": "MIT", + "dependencies": { "ms": "2.1.2" + }, + "engines": { + "node": ">=6.0" + }, + "peerDependenciesMeta": { + "supports-color": { + "optional": true + } } }, - "deep-is": { + "node_modules/deep-is": { "version": "0.1.4", - "resolved": "https://registry.npmjs.org/deep-is/-/deep-is-0.1.4.tgz", - "integrity": "sha512-oIPzksmTg4/MriiaYGO+okXDT7ztn/w3Eptv/+gSIdMdKsJo0u4CfYNFJPy+4SKMuCqGw2wxnA+URMg3t8a/bQ==", - "dev": true + "dev": true, + "license": "MIT" }, - "define-properties": { + "node_modules/define-properties": { "version": "1.2.0", - "resolved": "https://registry.npmjs.org/define-properties/-/define-properties-1.2.0.tgz", - "integrity": "sha512-xvqAVKGfT1+UAvPwKTVw/njhdQ8ZhXK4lI0bCIuCMrp2up9nPnaDftrLtmpTazqd1o+UY4zgzU+avtMbDP+ldA==", "dev": true, - "requires": { + "license": "MIT", + "dependencies": { "has-property-descriptors": "^1.0.0", "object-keys": "^1.1.1" + }, + "engines": { + "node": ">= 0.4" + }, + "funding": { + "url": "https://github.com/sponsors/ljharb" } }, - "detect-node-es": { + "node_modules/detect-node-es": { "version": "1.1.0", - "resolved": "https://registry.npmjs.org/detect-node-es/-/detect-node-es-1.1.0.tgz", - "integrity": "sha512-ypdmJU/TbBby2Dxibuv7ZLW3Bs1QEmM7nHjEANfohJLvE0XVujisn1qPJcZxg+qDucsr+bP6fLD1rPS3AhJ7EQ==" + "license": "MIT" }, - "doctrine": { + "node_modules/doctrine": { "version": "3.0.0", - "resolved": "https://registry.npmjs.org/doctrine/-/doctrine-3.0.0.tgz", - "integrity": "sha512-yS+Q5i3hBf7GBkd4KG8a7eBNNWNGLTaEwwYWUijIYM7zrlYDM0BFXHjjPWlWZ1Rg7UaddZeIDmi9jF3HmqiQ2w==", "dev": true, - "requires": { + "license": "Apache-2.0", + "dependencies": { "esutils": "^2.0.2" + }, + "engines": { + "node": ">=6.0.0" } }, - "electron-to-chromium": { + "node_modules/electron-to-chromium": { "version": "1.4.461", - "resolved": "https://registry.npmjs.org/electron-to-chromium/-/electron-to-chromium-1.4.461.tgz", - "integrity": "sha512-1JkvV2sgEGTDXjdsaQCeSwYYuhLRphRpc+g6EHTFELJXEiznLt3/0pZ9JuAOQ5p2rI3YxKTbivtvajirIfhrEQ==", - "dev": true - }, - "engine.io-client": { - "version": "6.5.2", - "resolved": "https://registry.npmjs.org/engine.io-client/-/engine.io-client-6.5.2.tgz", - "integrity": "sha512-CQZqbrpEYnrpGqC07a9dJDz4gePZUgTPMU3NKJPSeQOyw27Tst4Pl3FemKoFGAlHzgZmKjoRmiJvbWfhCXUlIg==", - "requires": { + "dev": true, + "license": "ISC" + }, + "node_modules/engine.io-client": { + "version": "6.5.4", + "license": "MIT", + "dependencies": { "@socket.io/component-emitter": "~3.1.0", "debug": "~4.3.1", "engine.io-parser": "~5.2.1", - "ws": "~8.11.0", + "ws": "~8.17.1", "xmlhttprequest-ssl": "~2.0.0" } }, - "engine.io-parser": { + "node_modules/engine.io-parser": { "version": "5.2.1", - "resolved": "https://registry.npmjs.org/engine.io-parser/-/engine.io-parser-5.2.1.tgz", - "integrity": "sha512-9JktcM3u18nU9N2Lz3bWeBgxVgOKpw7yhRaoxQA3FUDZzzw+9WlA6p4G4u0RixNkg14fH7EfEc/RhpurtiROTQ==" + "license": "MIT", + "engines": { + "node": ">=10.0.0" + } }, - "error-ex": { + "node_modules/error-ex": { "version": "1.3.2", - "resolved": "https://registry.npmjs.org/error-ex/-/error-ex-1.3.2.tgz", - "integrity": "sha512-7dFHNmqeFSEt2ZBsCriorKnn3Z2pj+fd9kmI6QoWw4//DL+icEBfc0U7qJCisqrTsKTjw4fNFy2pW9OqStD84g==", - "requires": { + "license": "MIT", + "dependencies": { "is-arrayish": "^0.2.1" } }, - "es-abstract": { + "node_modules/es-abstract": { "version": "1.21.3", - "resolved": "https://registry.npmjs.org/es-abstract/-/es-abstract-1.21.3.tgz", - "integrity": "sha512-ZU4miiY1j3sGPFLJ34VJXEqhpmL+HGByCinGHv4HC+Fxl2fI2Z4yR6tl0mORnDr6PA8eihWo4LmSWDbvhALckg==", "dev": true, - "requires": { + "license": "MIT", + "dependencies": { "array-buffer-byte-length": "^1.0.0", "available-typed-arrays": "^1.0.5", "call-bind": "^1.0.2", @@ -7492,45 +3883,63 @@ "typed-array-length": "^1.0.4", "unbox-primitive": "^1.0.2", "which-typed-array": "^1.1.10" + }, + "engines": { + "node": ">= 0.4" + }, + "funding": { + "url": "https://github.com/sponsors/ljharb" } }, - "es-set-tostringtag": { + "node_modules/es-set-tostringtag": { "version": "2.0.1", - "resolved": "https://registry.npmjs.org/es-set-tostringtag/-/es-set-tostringtag-2.0.1.tgz", - "integrity": "sha512-g3OMbtlwY3QewlqAiMLI47KywjWZoEytKr8pf6iTC8uJq5bIAH52Z9pnQ8pVL6whrCto53JZDuUIsifGeLorTg==", "dev": true, - "requires": { + "license": "MIT", + "dependencies": { "get-intrinsic": "^1.1.3", "has": "^1.0.3", "has-tostringtag": "^1.0.0" + }, + "engines": { + "node": ">= 0.4" } }, - "es-shim-unscopables": { + "node_modules/es-shim-unscopables": { "version": "1.0.0", - "resolved": "https://registry.npmjs.org/es-shim-unscopables/-/es-shim-unscopables-1.0.0.tgz", - "integrity": "sha512-Jm6GPcCdC30eMLbZ2x8z2WuRwAws3zTBBKuusffYVUrNj/GVSUAZ+xKMaUpfNDR5IbyNA5LJbaecoUVbmUcB1w==", "dev": true, - "requires": { + "license": "MIT", + "dependencies": { "has": "^1.0.3" } }, - "es-to-primitive": { + "node_modules/es-to-primitive": { "version": "1.2.1", - "resolved": "https://registry.npmjs.org/es-to-primitive/-/es-to-primitive-1.2.1.tgz", - "integrity": "sha512-QCOllgZJtaUo9miYBcLChTUaHNjJF3PYs1VidD7AwiEj1kYxKeQTctLAezAOH5ZKRH0g2IgPn6KwB4IT8iRpvA==", "dev": true, - "requires": { + "license": "MIT", + "dependencies": { "is-callable": "^1.1.4", "is-date-object": "^1.0.1", "is-symbol": "^1.0.2" + }, + "engines": { + "node": ">= 0.4" + }, + "funding": { + "url": "https://github.com/sponsors/ljharb" } }, - "esbuild": { + "node_modules/esbuild": { "version": "0.18.13", - "resolved": "https://registry.npmjs.org/esbuild/-/esbuild-0.18.13.tgz", - "integrity": "sha512-vhg/WR/Oiu4oUIkVhmfcc23G6/zWuEQKFS+yiosSHe4aN6+DQRXIfeloYGibIfVhkr4wyfuVsGNLr+sQU1rWWw==", "dev": true, - "requires": { + "hasInstallScript": true, + "license": "MIT", + "bin": { + "esbuild": "bin/esbuild" + }, + "engines": { + "node": ">=12" + }, + "optionalDependencies": { "@esbuild/android-arm": "0.18.13", "@esbuild/android-arm64": "0.18.13", "@esbuild/android-x64": "0.18.13", @@ -7555,23 +3964,26 @@ "@esbuild/win32-x64": "0.18.13" } }, - "escalade": { + "node_modules/escalade": { "version": "3.1.1", - "resolved": "https://registry.npmjs.org/escalade/-/escalade-3.1.1.tgz", - "integrity": "sha512-k0er2gUkLf8O0zKJiAhmkTnJlTvINGv7ygDNPbeIsX/TJjGJZHuh9B2UxbsaEkmlEo9MfhrSzmhIlhRlI2GXnw==", - "dev": true + "dev": true, + "license": "MIT", + "engines": { + "node": ">=6" + } }, - "escape-string-regexp": { + "node_modules/escape-string-regexp": { "version": "1.0.5", - "resolved": "https://registry.npmjs.org/escape-string-regexp/-/escape-string-regexp-1.0.5.tgz", - "integrity": "sha512-vbRorB5FUQWvla16U8R/qgaFIya2qGzwDrNmCZuYKrbdSUMG6I1ZCGQRefkRVhuOkIGVne7BQ35DSfo1qvJqFg==" + "license": "MIT", + "engines": { + "node": ">=0.8.0" + } }, - "eslint": { + "node_modules/eslint": { "version": "8.45.0", - "resolved": "https://registry.npmjs.org/eslint/-/eslint-8.45.0.tgz", - "integrity": "sha512-pd8KSxiQpdYRfYa9Wufvdoct3ZPQQuVuU5O6scNgMuOMYuxvH0IGaYK0wUFjo4UYYQQCUndlXiMbnxopwvvTiw==", "dev": true, - "requires": { + "license": "MIT", + "dependencies": { "@eslint-community/eslint-utils": "^4.2.0", "@eslint-community/regexpp": "^4.4.0", "@eslint/eslintrc": "^2.1.0", @@ -7610,79 +4022,21 @@ "strip-ansi": "^6.0.1", "text-table": "^0.2.0" }, - "dependencies": { - "ansi-styles": { - "version": "4.3.0", - "resolved": "https://registry.npmjs.org/ansi-styles/-/ansi-styles-4.3.0.tgz", - "integrity": "sha512-zbB9rCJAT1rbjiVDb2hqKFHNYLxgtk8NURxZ3IZwD3F6NtxbXZQCnnSi1Lkx+IDohdPlFp222wVALIheZJQSEg==", - "dev": true, - "requires": { - "color-convert": "^2.0.1" - } - }, - "chalk": { - "version": "4.1.2", - "resolved": "https://registry.npmjs.org/chalk/-/chalk-4.1.2.tgz", - "integrity": "sha512-oKnbhFyRIXpUuez8iBMmyEa4nbj4IOQyuhc/wy9kY7/WVPcwIO9VA668Pu8RkO7+0G76SLROeyw9CpQ061i4mA==", - "dev": true, - "requires": { - "ansi-styles": "^4.1.0", - "supports-color": "^7.1.0" - } - }, - "color-convert": { - "version": "2.0.1", - "resolved": "https://registry.npmjs.org/color-convert/-/color-convert-2.0.1.tgz", - "integrity": "sha512-RRECPsj7iu/xb5oKYcsFHSppFNnsj/52OVTRKb4zP5onXwVF3zVmmToNcOfGC+CRDpfK/U584fMg38ZHCaElKQ==", - "dev": true, - "requires": { - "color-name": "~1.1.4" - } - }, - "color-name": { - "version": "1.1.4", - "resolved": "https://registry.npmjs.org/color-name/-/color-name-1.1.4.tgz", - "integrity": "sha512-dOy+3AuW3a2wNbZHIuMZpTcgjGuLU/uBL/ubcZF9OXbDo8ff4O8yVp5Bf0efS8uEoYo5q4Fx7dY9OgQGXgAsQA==", - "dev": true - }, - "escape-string-regexp": { - "version": "4.0.0", - "resolved": "https://registry.npmjs.org/escape-string-regexp/-/escape-string-regexp-4.0.0.tgz", - "integrity": "sha512-TtpcNJ3XAzx3Gq8sWRzJaVajRs0uVxA2YAkdb1jm2YkPz4G6egUFAyA3n5vtEIZefPk5Wa4UXbKuS5fKkJWdgA==", - "dev": true - }, - "globals": { - "version": "13.20.0", - "resolved": "https://registry.npmjs.org/globals/-/globals-13.20.0.tgz", - "integrity": "sha512-Qg5QtVkCy/kv3FUSlu4ukeZDVf9ee0iXLAUYX13gbR17bnejFTzr4iS9bY7kwCf1NztRNm1t91fjOiyx4CSwPQ==", - "dev": true, - "requires": { - "type-fest": "^0.20.2" - } - }, - "has-flag": { - "version": "4.0.0", - "resolved": "https://registry.npmjs.org/has-flag/-/has-flag-4.0.0.tgz", - "integrity": "sha512-EykJT/Q1KjTWctppgIAgfSO0tKVuZUjhgMr17kqTumMl6Afv3EISleU7qZUzoXDFTAHTDC4NOoG/ZxU3EvlMPQ==", - "dev": true - }, - "supports-color": { - "version": "7.2.0", - "resolved": "https://registry.npmjs.org/supports-color/-/supports-color-7.2.0.tgz", - "integrity": "sha512-qpCAvRl9stuOHveKsn7HncJRvv501qIacKzQlO/+Lwxc9+0q2wLyv4Dfvt80/DPn2pqOBsJdDiogXGR9+OvwRw==", - "dev": true, - "requires": { - "has-flag": "^4.0.0" - } - } + "bin": { + "eslint": "bin/eslint.js" + }, + "engines": { + "node": "^12.22.0 || ^14.17.0 || >=16.0.0" + }, + "funding": { + "url": "https://opencollective.com/eslint" } }, - "eslint-plugin-react": { + "node_modules/eslint-plugin-react": { "version": "7.32.2", - "resolved": "https://registry.npmjs.org/eslint-plugin-react/-/eslint-plugin-react-7.32.2.tgz", - "integrity": "sha512-t2fBMa+XzonrrNkyVirzKlvn5RXzzPwRHtMvLAtVZrt8oxgnTQaYbU6SXTOO1mwQgp1y5+toMSKInnzGr0Knqg==", "dev": true, - "requires": { + "license": "MIT", + "dependencies": { "array-includes": "^3.1.6", "array.prototype.flatmap": "^1.3.1", "array.prototype.tosorted": "^1.1.1", @@ -7699,1226 +4053,1727 @@ "semver": "^6.3.0", "string.prototype.matchall": "^4.0.8" }, - "dependencies": { - "doctrine": { - "version": "2.1.0", - "resolved": "https://registry.npmjs.org/doctrine/-/doctrine-2.1.0.tgz", - "integrity": "sha512-35mSku4ZXK0vfCuHEDAwt55dg2jNajHZ1odvF+8SSr82EsZY4QmXfuWso8oEd8zRhVObSN18aM0CjSdoBX7zIw==", - "dev": true, - "requires": { - "esutils": "^2.0.2" - } - } + "engines": { + "node": ">=4" + }, + "peerDependencies": { + "eslint": "^3 || ^4 || ^5 || ^6 || ^7 || ^8" } }, - "eslint-plugin-react-hooks": { + "node_modules/eslint-plugin-react-hooks": { "version": "4.6.0", - "resolved": "https://registry.npmjs.org/eslint-plugin-react-hooks/-/eslint-plugin-react-hooks-4.6.0.tgz", - "integrity": "sha512-oFc7Itz9Qxh2x4gNHStv3BqJq54ExXmfC+a1NjAta66IAN87Wu0R/QArgIS9qKzX3dXKPI9H5crl9QchNMY9+g==", "dev": true, - "requires": {} + "license": "MIT", + "engines": { + "node": ">=10" + }, + "peerDependencies": { + "eslint": "^3.0.0 || ^4.0.0 || ^5.0.0 || ^6.0.0 || ^7.0.0 || ^8.0.0-0" + } }, - "eslint-plugin-react-refresh": { + "node_modules/eslint-plugin-react-refresh": { "version": "0.4.3", - "resolved": "https://registry.npmjs.org/eslint-plugin-react-refresh/-/eslint-plugin-react-refresh-0.4.3.tgz", - "integrity": "sha512-Hh0wv8bUNY877+sI0BlCUlsS0TYYQqvzEwJsJJPM2WF4RnTStSnSR3zdJYa2nPOJgg3UghXi54lVyMSmpCalzA==", "dev": true, - "requires": {} + "license": "MIT", + "peerDependencies": { + "eslint": ">=7" + } + }, + "node_modules/eslint-plugin-react/node_modules/doctrine": { + "version": "2.1.0", + "dev": true, + "license": "Apache-2.0", + "dependencies": { + "esutils": "^2.0.2" + }, + "engines": { + "node": ">=0.10.0" + } }, - "eslint-scope": { + "node_modules/eslint-scope": { "version": "7.2.1", - "resolved": "https://registry.npmjs.org/eslint-scope/-/eslint-scope-7.2.1.tgz", - "integrity": "sha512-CvefSOsDdaYYvxChovdrPo/ZGt8d5lrJWleAc1diXRKhHGiTYEI26cvo8Kle/wGnsizoCJjK73FMg1/IkIwiNA==", "dev": true, - "requires": { + "license": "BSD-2-Clause", + "dependencies": { "esrecurse": "^4.3.0", "estraverse": "^5.2.0" + }, + "engines": { + "node": "^12.22.0 || ^14.17.0 || >=16.0.0" + }, + "funding": { + "url": "https://opencollective.com/eslint" } }, - "eslint-visitor-keys": { + "node_modules/eslint-visitor-keys": { "version": "3.4.1", - "resolved": "https://registry.npmjs.org/eslint-visitor-keys/-/eslint-visitor-keys-3.4.1.tgz", - "integrity": "sha512-pZnmmLwYzf+kWaM/Qgrvpen51upAktaaiI01nsJD/Yr3lMOdNtq0cxkrrg16w64VtisN6okbs7Q8AfGqj4c9fA==", - "dev": true + "dev": true, + "license": "Apache-2.0", + "engines": { + "node": "^12.22.0 || ^14.17.0 || >=16.0.0" + }, + "funding": { + "url": "https://opencollective.com/eslint" + } + }, + "node_modules/eslint/node_modules/ansi-styles": { + "version": "4.3.0", + "dev": true, + "license": "MIT", + "dependencies": { + "color-convert": "^2.0.1" + }, + "engines": { + "node": ">=8" + }, + "funding": { + "url": "https://github.com/chalk/ansi-styles?sponsor=1" + } + }, + "node_modules/eslint/node_modules/chalk": { + "version": "4.1.2", + "dev": true, + "license": "MIT", + "dependencies": { + "ansi-styles": "^4.1.0", + "supports-color": "^7.1.0" + }, + "engines": { + "node": ">=10" + }, + "funding": { + "url": "https://github.com/chalk/chalk?sponsor=1" + } + }, + "node_modules/eslint/node_modules/color-convert": { + "version": "2.0.1", + "dev": true, + "license": "MIT", + "dependencies": { + "color-name": "~1.1.4" + }, + "engines": { + "node": ">=7.0.0" + } + }, + "node_modules/eslint/node_modules/color-name": { + "version": "1.1.4", + "dev": true, + "license": "MIT" + }, + "node_modules/eslint/node_modules/escape-string-regexp": { + "version": "4.0.0", + "dev": true, + "license": "MIT", + "engines": { + "node": ">=10" + }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" + } + }, + "node_modules/eslint/node_modules/globals": { + "version": "13.20.0", + "dev": true, + "license": "MIT", + "dependencies": { + "type-fest": "^0.20.2" + }, + "engines": { + "node": ">=8" + }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" + } }, - "espree": { + "node_modules/eslint/node_modules/has-flag": { + "version": "4.0.0", + "dev": true, + "license": "MIT", + "engines": { + "node": ">=8" + } + }, + "node_modules/eslint/node_modules/supports-color": { + "version": "7.2.0", + "dev": true, + "license": "MIT", + "dependencies": { + "has-flag": "^4.0.0" + }, + "engines": { + "node": ">=8" + } + }, + "node_modules/espree": { "version": "9.6.1", - "resolved": "https://registry.npmjs.org/espree/-/espree-9.6.1.tgz", - "integrity": "sha512-oruZaFkjorTpF32kDSI5/75ViwGeZginGGy2NoOSg3Q9bnwlnmDm4HLnkl0RE3n+njDXR037aY1+x58Z/zFdwQ==", "dev": true, - "requires": { + "license": "BSD-2-Clause", + "dependencies": { "acorn": "^8.9.0", "acorn-jsx": "^5.3.2", "eslint-visitor-keys": "^3.4.1" + }, + "engines": { + "node": "^12.22.0 || ^14.17.0 || >=16.0.0" + }, + "funding": { + "url": "https://opencollective.com/eslint" } }, - "esquery": { + "node_modules/esquery": { "version": "1.5.0", - "resolved": "https://registry.npmjs.org/esquery/-/esquery-1.5.0.tgz", - "integrity": "sha512-YQLXUplAwJgCydQ78IMJywZCceoqk1oH01OERdSAJc/7U2AylwjhSCLDEtqwg811idIS/9fIU5GjG73IgjKMVg==", "dev": true, - "requires": { + "license": "BSD-3-Clause", + "dependencies": { "estraverse": "^5.1.0" + }, + "engines": { + "node": ">=0.10" } }, - "esrecurse": { + "node_modules/esrecurse": { "version": "4.3.0", - "resolved": "https://registry.npmjs.org/esrecurse/-/esrecurse-4.3.0.tgz", - "integrity": "sha512-KmfKL3b6G+RXvP8N1vr3Tq1kL/oCFgn2NYXEtqP8/L3pKapUA4G8cFVaoF3SU323CD4XypR/ffioHmkti6/Tag==", "dev": true, - "requires": { + "license": "BSD-2-Clause", + "dependencies": { "estraverse": "^5.2.0" + }, + "engines": { + "node": ">=4.0" } }, - "estraverse": { + "node_modules/estraverse": { "version": "5.3.0", - "resolved": "https://registry.npmjs.org/estraverse/-/estraverse-5.3.0.tgz", - "integrity": "sha512-MMdARuVEQziNTeJD8DgMqmhwR11BRQ/cBP+pLtYdSTnf3MIO8fFeiINEbX36ZdNlfU/7A9f3gUw49B3oQsvwBA==", - "dev": true + "dev": true, + "license": "BSD-2-Clause", + "engines": { + "node": ">=4.0" + } }, - "esutils": { + "node_modules/esutils": { "version": "2.0.3", - "resolved": "https://registry.npmjs.org/esutils/-/esutils-2.0.3.tgz", - "integrity": "sha512-kVscqXk4OCp68SZ0dkgEKVi6/8ij300KBWTJq32P/dYeWTSwK41WyTxalN1eRmA5Z9UU/LX9D7FWSmV9SAYx6g==", - "dev": true + "dev": true, + "license": "BSD-2-Clause", + "engines": { + "node": ">=0.10.0" + } }, - "fast-deep-equal": { + "node_modules/fast-deep-equal": { "version": "3.1.3", - "resolved": "https://registry.npmjs.org/fast-deep-equal/-/fast-deep-equal-3.1.3.tgz", - "integrity": "sha512-f3qQ9oQy9j2AhBe/H9VC91wLmKBCCU/gDOnKNAYG5hswO7BLKj09Hc5HYNz9cGI++xlpDCIgDaitVs03ATR84Q==", - "dev": true + "dev": true, + "license": "MIT" }, - "fast-json-stable-stringify": { + "node_modules/fast-json-stable-stringify": { "version": "2.1.0", - "resolved": "https://registry.npmjs.org/fast-json-stable-stringify/-/fast-json-stable-stringify-2.1.0.tgz", - "integrity": "sha512-lhd/wF+Lk98HZoTCtlVraHtfh5XYijIjalXck7saUtuanSDyLMxnHhSXEDJqHxD7msR8D0uCmqlkwjCV8xvwHw==", - "dev": true + "dev": true, + "license": "MIT" }, - "fast-levenshtein": { + "node_modules/fast-levenshtein": { "version": "2.0.6", - "resolved": "https://registry.npmjs.org/fast-levenshtein/-/fast-levenshtein-2.0.6.tgz", - "integrity": "sha512-DCXu6Ifhqcks7TZKY3Hxp3y6qphY5SJZmrWMDrKcERSOXWQdMhU9Ig/PYrzyw/ul9jOIyh0N4M0tbC5hodg8dw==", - "dev": true + "dev": true, + "license": "MIT" }, - "fastq": { + "node_modules/fastq": { "version": "1.15.0", - "resolved": "https://registry.npmjs.org/fastq/-/fastq-1.15.0.tgz", - "integrity": "sha512-wBrocU2LCXXa+lWBt8RoIRD89Fi8OdABODa/kEnyeyjS5aZO5/GNvI5sEINADqP/h8M29UHTHUb53sUu5Ihqdw==", "dev": true, - "requires": { + "license": "ISC", + "dependencies": { "reusify": "^1.0.4" } }, - "file-entry-cache": { + "node_modules/file-entry-cache": { "version": "6.0.1", - "resolved": "https://registry.npmjs.org/file-entry-cache/-/file-entry-cache-6.0.1.tgz", - "integrity": "sha512-7Gps/XWymbLk2QLYK4NzpMOrYjMhdIxXuIvy2QBsLE6ljuodKvdkWs/cpyJJ3CVIVpH0Oi1Hvg1ovbMzLdFBBg==", "dev": true, - "requires": { + "license": "MIT", + "dependencies": { "flat-cache": "^3.0.4" + }, + "engines": { + "node": "^10.12.0 || >=12.0.0" } }, - "find-root": { + "node_modules/find-root": { "version": "1.1.0", - "resolved": "https://registry.npmjs.org/find-root/-/find-root-1.1.0.tgz", - "integrity": "sha512-NKfW6bec6GfKc0SGx1e07QZY9PE99u0Bft/0rzSD5k3sO/vwkVUpDUKVm5Gpp5Ue3YfShPFTX2070tDs5kB9Ng==" + "license": "MIT" }, - "find-up": { + "node_modules/find-up": { "version": "5.0.0", - "resolved": "https://registry.npmjs.org/find-up/-/find-up-5.0.0.tgz", - "integrity": "sha512-78/PXT1wlLLDgTzDs7sjq9hzz0vXD+zn+7wypEe4fXQxCmdmqfGsEPQxmiCSQI3ajFV91bVSsvNtrJRiW6nGng==", "dev": true, - "requires": { + "license": "MIT", + "dependencies": { "locate-path": "^6.0.0", "path-exists": "^4.0.0" + }, + "engines": { + "node": ">=10" + }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" } }, - "flat-cache": { + "node_modules/flat-cache": { "version": "3.0.4", - "resolved": "https://registry.npmjs.org/flat-cache/-/flat-cache-3.0.4.tgz", - "integrity": "sha512-dm9s5Pw7Jc0GvMYbshN6zchCA9RgQlzzEZX3vylR9IqFfS8XciblUXOKfW6SiuJ0e13eDYZoZV5wdrev7P3Nwg==", "dev": true, - "requires": { + "license": "MIT", + "dependencies": { "flatted": "^3.1.0", "rimraf": "^3.0.2" + }, + "engines": { + "node": "^10.12.0 || >=12.0.0" } }, - "flatted": { + "node_modules/flatted": { "version": "3.2.7", - "resolved": "https://registry.npmjs.org/flatted/-/flatted-3.2.7.tgz", - "integrity": "sha512-5nqDSxl8nn5BSNxyR3n4I6eDmbolI6WT+QqR547RwxQapgjQBmtktdP+HTBb/a/zLsbzERTONyUB5pefh5TtjQ==", - "dev": true - }, - "focus-lock": { - "version": "0.11.6", - "resolved": "https://registry.npmjs.org/focus-lock/-/focus-lock-0.11.6.tgz", - "integrity": "sha512-KSuV3ur4gf2KqMNoZx3nXNVhqCkn42GuTYCX4tXPEwf0MjpFQmNMiN6m7dXaUXgIoivL6/65agoUMg4RLS0Vbg==", - "requires": { + "dev": true, + "license": "ISC" + }, + "node_modules/focus-lock": { + "version": "1.3.5", + "license": "MIT", + "dependencies": { "tslib": "^2.0.3" + }, + "engines": { + "node": ">=10" } }, - "for-each": { + "node_modules/for-each": { "version": "0.3.3", - "resolved": "https://registry.npmjs.org/for-each/-/for-each-0.3.3.tgz", - "integrity": "sha512-jqYfLp7mo9vIyQf8ykW2v7A+2N4QjeCeI5+Dz9XraiO1ign81wjiH7Fb9vSOWvQfNtmSa4H2RoQTrrXivdUZmw==", "dev": true, - "requires": { + "license": "MIT", + "dependencies": { "is-callable": "^1.1.3" } }, - "framer-motion": { - "version": "10.12.21", - "resolved": "https://registry.npmjs.org/framer-motion/-/framer-motion-10.12.21.tgz", - "integrity": "sha512-EmnP73O5+1OGm2jtQNoBPPuAJvhySl+p4/9PL7PPJHt58nkPWeFaxhCJaUDXDf6N3jSLluefxopc0FrMCQ+/tQ==", - "requires": { - "@emotion/is-prop-valid": "^0.8.2", + "node_modules/framer-motion": { + "version": "10.18.0", + "license": "MIT", + "dependencies": { "tslib": "^2.4.0" }, - "dependencies": { - "@emotion/is-prop-valid": { - "version": "0.8.8", - "resolved": "https://registry.npmjs.org/@emotion/is-prop-valid/-/is-prop-valid-0.8.8.tgz", - "integrity": "sha512-u5WtneEAr5IDG2Wv65yhunPSMLIpuKsbuOktRojfrEiEvRyC85LgPMZI63cr7NUqT8ZIGdSVg8ZKGxIug4lXcA==", - "optional": true, - "requires": { - "@emotion/memoize": "0.7.4" - } + "optionalDependencies": { + "@emotion/is-prop-valid": "^0.8.2" + }, + "peerDependencies": { + "react": "^18.0.0", + "react-dom": "^18.0.0" + }, + "peerDependenciesMeta": { + "react": { + "optional": true }, - "@emotion/memoize": { - "version": "0.7.4", - "resolved": "https://registry.npmjs.org/@emotion/memoize/-/memoize-0.7.4.tgz", - "integrity": "sha512-Ja/Vfqe3HpuzRsG1oBtWTHk2PGZ7GR+2Vz5iYGelAw8dx32K0y7PjVuxK6z1nMpZOqAFsRUPCkK1YjJ56qJlgw==", + "react-dom": { "optional": true } } }, - "framesync": { + "node_modules/framer-motion/node_modules/@emotion/is-prop-valid": { + "version": "0.8.8", + "license": "MIT", + "optional": true, + "dependencies": { + "@emotion/memoize": "0.7.4" + } + }, + "node_modules/framer-motion/node_modules/@emotion/memoize": { + "version": "0.7.4", + "license": "MIT", + "optional": true + }, + "node_modules/framesync": { "version": "6.1.2", - "resolved": "https://registry.npmjs.org/framesync/-/framesync-6.1.2.tgz", - "integrity": "sha512-jBTqhX6KaQVDyus8muwZbBeGGP0XgujBRbQ7gM7BRdS3CadCZIHiawyzYLnafYcvZIh5j8WE7cxZKFn7dXhu9g==", - "requires": { - "tslib": "2.4.0" - }, + "license": "MIT", "dependencies": { - "tslib": { - "version": "2.4.0", - "resolved": "https://registry.npmjs.org/tslib/-/tslib-2.4.0.tgz", - "integrity": "sha512-d6xOpEDfsi2CZVlPQzGeux8XMwLT9hssAsaPYExaQMuYskwb+x1x7J371tWlbBdWHroy99KnVB6qIkUbs5X3UQ==" - } + "tslib": "2.4.0" } }, - "fs.realpath": { + "node_modules/framesync/node_modules/tslib": { + "version": "2.4.0", + "license": "0BSD" + }, + "node_modules/fs.realpath": { "version": "1.0.0", - "resolved": "https://registry.npmjs.org/fs.realpath/-/fs.realpath-1.0.0.tgz", - "integrity": "sha512-OO0pH2lK6a0hZnAdau5ItzHPI6pUlvI7jMVnxUQRtw4owF2wk8lOSabtGDCTP4Ggrg2MbGnWO9X8K1t4+fGMDw==", - "dev": true + "dev": true, + "license": "ISC" }, - "fsevents": { - "version": "2.3.2", - "resolved": "https://registry.npmjs.org/fsevents/-/fsevents-2.3.2.tgz", - "integrity": "sha512-xiqMQR4xAeHTuB9uWm+fFRcIOgKBMiOBP+eXiyT7jsgVCq1bkVygt00oASowB7EdtpOHaaPgKt812P9ab+DDKA==", + "node_modules/fsevents": { + "version": "2.3.3", "dev": true, - "optional": true + "license": "MIT", + "optional": true, + "os": [ + "darwin" + ], + "engines": { + "node": "^8.16.0 || ^10.6.0 || >=11.0.0" + } }, - "function-bind": { - "version": "1.1.1", - "resolved": "https://registry.npmjs.org/function-bind/-/function-bind-1.1.1.tgz", - "integrity": "sha512-yIovAzMX49sF8Yl58fSCWJ5svSLuaibPxXQJFLmBObTuCr0Mf1KiPopGM9NiFjiYBCbfaa2Fh6breQ6ANVTI0A==" + "node_modules/function-bind": { + "version": "1.1.2", + "license": "MIT", + "funding": { + "url": "https://github.com/sponsors/ljharb" + } }, - "function.prototype.name": { + "node_modules/function.prototype.name": { "version": "1.1.5", - "resolved": "https://registry.npmjs.org/function.prototype.name/-/function.prototype.name-1.1.5.tgz", - "integrity": "sha512-uN7m/BzVKQnCUF/iW8jYea67v++2u7m5UgENbHRtdDVclOUP+FMPlCNdmk0h/ysGyo2tavMJEDqJAkJdRa1vMA==", "dev": true, - "requires": { + "license": "MIT", + "dependencies": { "call-bind": "^1.0.2", "define-properties": "^1.1.3", "es-abstract": "^1.19.0", "functions-have-names": "^1.2.2" + }, + "engines": { + "node": ">= 0.4" + }, + "funding": { + "url": "https://github.com/sponsors/ljharb" } }, - "functions-have-names": { + "node_modules/functions-have-names": { "version": "1.2.3", - "resolved": "https://registry.npmjs.org/functions-have-names/-/functions-have-names-1.2.3.tgz", - "integrity": "sha512-xckBUXyTIqT97tq2x2AMb+g163b5JFysYk0x4qxNFwbfQkmNZoiRHb6sPzI9/QV33WeuvVYBUIiD4NzNIyqaRQ==", - "dev": true + "dev": true, + "license": "MIT", + "funding": { + "url": "https://github.com/sponsors/ljharb" + } }, - "gensync": { + "node_modules/gensync": { "version": "1.0.0-beta.2", - "resolved": "https://registry.npmjs.org/gensync/-/gensync-1.0.0-beta.2.tgz", - "integrity": "sha512-3hN7NaskYvMDLQY55gnW3NQ+mesEAepTqlg+VEbj7zzqEMBVNhzcGYYeqFo/TlYz6eQiFcp1HcsCZO+nGgS8zg==", - "dev": true + "dev": true, + "license": "MIT", + "engines": { + "node": ">=6.9.0" + } }, - "get-intrinsic": { + "node_modules/get-intrinsic": { "version": "1.2.1", - "resolved": "https://registry.npmjs.org/get-intrinsic/-/get-intrinsic-1.2.1.tgz", - "integrity": "sha512-2DcsyfABl+gVHEfCOaTrWgyt+tb6MSEGmKq+kI5HwLbIYgjgmMcV8KQ41uaKz1xxUcn9tJtgFbQUEVcEbd0FYw==", "dev": true, - "requires": { + "license": "MIT", + "dependencies": { "function-bind": "^1.1.1", "has": "^1.0.3", "has-proto": "^1.0.1", "has-symbols": "^1.0.3" + }, + "funding": { + "url": "https://github.com/sponsors/ljharb" } }, - "get-nonce": { + "node_modules/get-nonce": { "version": "1.0.1", - "resolved": "https://registry.npmjs.org/get-nonce/-/get-nonce-1.0.1.tgz", - "integrity": "sha512-FJhYRoDaiatfEkUK8HKlicmu/3SGFD51q3itKDGoSTysQJBnfOcxU5GxnhE1E6soB76MbT0MBtnKJuXyAx+96Q==" + "license": "MIT", + "engines": { + "node": ">=6" + } }, - "get-symbol-description": { + "node_modules/get-symbol-description": { "version": "1.0.0", - "resolved": "https://registry.npmjs.org/get-symbol-description/-/get-symbol-description-1.0.0.tgz", - "integrity": "sha512-2EmdH1YvIQiZpltCNgkuiUnyukzxM/R6NDJX31Ke3BG1Nq5b0S2PhX59UKi9vZpPDQVdqn+1IcaAwnzTT5vCjw==", "dev": true, - "requires": { + "license": "MIT", + "dependencies": { "call-bind": "^1.0.2", "get-intrinsic": "^1.1.1" + }, + "engines": { + "node": ">= 0.4" + }, + "funding": { + "url": "https://github.com/sponsors/ljharb" } }, - "glob": { + "node_modules/glob": { "version": "7.2.3", - "resolved": "https://registry.npmjs.org/glob/-/glob-7.2.3.tgz", - "integrity": "sha512-nFR0zLpU2YCaRxwoCJvL6UvCH2JFyFVIvwTLsIf21AuHlMskA1hhTdk+LlYJtOlYt9v6dvszD2BGRqBL+iQK9Q==", "dev": true, - "requires": { + "license": "ISC", + "dependencies": { "fs.realpath": "^1.0.0", "inflight": "^1.0.4", "inherits": "2", "minimatch": "^3.1.1", "once": "^1.3.0", "path-is-absolute": "^1.0.0" + }, + "engines": { + "node": "*" + }, + "funding": { + "url": "https://github.com/sponsors/isaacs" } }, - "glob-parent": { + "node_modules/glob-parent": { "version": "6.0.2", - "resolved": "https://registry.npmjs.org/glob-parent/-/glob-parent-6.0.2.tgz", - "integrity": "sha512-XxwI8EOhVQgWp6iDL+3b0r86f4d6AX6zSU55HfB4ydCEuXLXc5FcYeOu+nnGftS4TEju/11rt4KJPTMgbfmv4A==", "dev": true, - "requires": { + "license": "ISC", + "dependencies": { "is-glob": "^4.0.3" + }, + "engines": { + "node": ">=10.13.0" } }, - "globals": { + "node_modules/globals": { "version": "11.12.0", - "resolved": "https://registry.npmjs.org/globals/-/globals-11.12.0.tgz", - "integrity": "sha512-WOBp/EEGUiIsJSp7wcv/y6MO+lV9UoncWqxuFfm8eBwzWNgyfBd6Gz+IeKQ9jCmyhoH99g15M3T+QaVHFjizVA==", - "dev": true + "dev": true, + "license": "MIT", + "engines": { + "node": ">=4" + } }, - "globalthis": { + "node_modules/globalthis": { "version": "1.0.3", - "resolved": "https://registry.npmjs.org/globalthis/-/globalthis-1.0.3.tgz", - "integrity": "sha512-sFdI5LyBiNTHjRd7cGPWapiHWMOXKyuBNX/cWJ3NfzrZQVa8GI/8cofCl74AOVqq9W5kNmguTIzJ/1s2gyI9wA==", "dev": true, - "requires": { + "license": "MIT", + "dependencies": { "define-properties": "^1.1.3" + }, + "engines": { + "node": ">= 0.4" + }, + "funding": { + "url": "https://github.com/sponsors/ljharb" } }, - "gopd": { + "node_modules/gopd": { "version": "1.0.1", - "resolved": "https://registry.npmjs.org/gopd/-/gopd-1.0.1.tgz", - "integrity": "sha512-d65bNlIadxvpb/A2abVdlqKqV563juRnZ1Wtk6s1sIR8uNsXR70xqIzVqxVf1eTqDunwT2MkczEeaezCKTZhwA==", "dev": true, - "requires": { + "license": "MIT", + "dependencies": { "get-intrinsic": "^1.1.3" + }, + "funding": { + "url": "https://github.com/sponsors/ljharb" } }, - "graphemer": { + "node_modules/graphemer": { "version": "1.4.0", - "resolved": "https://registry.npmjs.org/graphemer/-/graphemer-1.4.0.tgz", - "integrity": "sha512-EtKwoO6kxCL9WO5xipiHTZlSzBm7WLT627TqC/uVRd0HKmq8NXyebnNYxDoBi7wt8eTWrUrKXCOVaFq9x1kgag==", - "dev": true + "dev": true, + "license": "MIT" }, - "hamt_plus": { + "node_modules/hamt_plus": { "version": "1.0.2", - "resolved": "https://registry.npmjs.org/hamt_plus/-/hamt_plus-1.0.2.tgz", - "integrity": "sha512-t2JXKaehnMb9paaYA7J0BX8QQAY8lwfQ9Gjf4pg/mk4krt+cmwmU652HOoWonf+7+EQV97ARPMhhVgU1ra2GhA==" + "license": "MIT" }, - "has": { + "node_modules/has": { "version": "1.0.3", - "resolved": "https://registry.npmjs.org/has/-/has-1.0.3.tgz", - "integrity": "sha512-f2dvO0VU6Oej7RkWJGrehjbzMAjFp5/VKPp5tTpWIV4JHHZK1/BxbFRtf/siA2SWTe09caDmVtYYzWEIbBS4zw==", - "requires": { + "dev": true, + "license": "MIT", + "dependencies": { "function-bind": "^1.1.1" + }, + "engines": { + "node": ">= 0.4.0" } }, - "has-bigints": { + "node_modules/has-bigints": { "version": "1.0.2", - "resolved": "https://registry.npmjs.org/has-bigints/-/has-bigints-1.0.2.tgz", - "integrity": "sha512-tSvCKtBr9lkF0Ex0aQiP9N+OpV4zi2r/Nee5VkRDbaqv35RLYMzbwQfFSZZH0kR+Rd6302UJZ2p/bJCEoR3VoQ==", - "dev": true + "dev": true, + "license": "MIT", + "funding": { + "url": "https://github.com/sponsors/ljharb" + } }, - "has-flag": { + "node_modules/has-flag": { "version": "3.0.0", - "resolved": "https://registry.npmjs.org/has-flag/-/has-flag-3.0.0.tgz", - "integrity": "sha512-sKJf1+ceQBr4SMkvQnBDNDtf4TXpVhVGateu0t918bl30FnbE2m4vNLX+VWe/dpjlb+HugGYzW7uQXH98HPEYw==" + "license": "MIT", + "engines": { + "node": ">=4" + } }, - "has-property-descriptors": { + "node_modules/has-property-descriptors": { "version": "1.0.0", - "resolved": "https://registry.npmjs.org/has-property-descriptors/-/has-property-descriptors-1.0.0.tgz", - "integrity": "sha512-62DVLZGoiEBDHQyqG4w9xCuZ7eJEwNmJRWw2VY84Oedb7WFcA27fiEVe8oUQx9hAUJ4ekurquucTGwsyO1XGdQ==", "dev": true, - "requires": { + "license": "MIT", + "dependencies": { "get-intrinsic": "^1.1.1" + }, + "funding": { + "url": "https://github.com/sponsors/ljharb" } }, - "has-proto": { + "node_modules/has-proto": { "version": "1.0.1", - "resolved": "https://registry.npmjs.org/has-proto/-/has-proto-1.0.1.tgz", - "integrity": "sha512-7qE+iP+O+bgF9clE5+UoBFzE65mlBiVj3tKCrlNQ0Ogwm0BjpT/gK4SlLYDMybDh5I3TCTKnPPa0oMG7JDYrhg==", - "dev": true + "dev": true, + "license": "MIT", + "engines": { + "node": ">= 0.4" + }, + "funding": { + "url": "https://github.com/sponsors/ljharb" + } }, - "has-symbols": { + "node_modules/has-symbols": { "version": "1.0.3", - "resolved": "https://registry.npmjs.org/has-symbols/-/has-symbols-1.0.3.tgz", - "integrity": "sha512-l3LCuF6MgDNwTDKkdYGEihYjt5pRPbEg46rtlmnSPlUbgmB8LOIrKJbYYFBSbnPaJexMKtiPO8hmeRjRz2Td+A==", - "dev": true + "dev": true, + "license": "MIT", + "engines": { + "node": ">= 0.4" + }, + "funding": { + "url": "https://github.com/sponsors/ljharb" + } }, - "has-tostringtag": { + "node_modules/has-tostringtag": { "version": "1.0.0", - "resolved": "https://registry.npmjs.org/has-tostringtag/-/has-tostringtag-1.0.0.tgz", - "integrity": "sha512-kFjcSNhnlGV1kyoGk7OXKSawH5JOb/LzUc5w9B02hOTO0dfFRjbHQKvg1d6cf3HbeUmtU9VbbV3qzZ2Teh97WQ==", "dev": true, - "requires": { + "license": "MIT", + "dependencies": { "has-symbols": "^1.0.2" + }, + "engines": { + "node": ">= 0.4" + }, + "funding": { + "url": "https://github.com/sponsors/ljharb" + } + }, + "node_modules/hasown": { + "version": "2.0.2", + "license": "MIT", + "dependencies": { + "function-bind": "^1.1.2" + }, + "engines": { + "node": ">= 0.4" } }, - "hoist-non-react-statics": { + "node_modules/hoist-non-react-statics": { "version": "3.3.2", - "resolved": "https://registry.npmjs.org/hoist-non-react-statics/-/hoist-non-react-statics-3.3.2.tgz", - "integrity": "sha512-/gGivxi8JPKWNm/W0jSmzcMPpfpPLc3dY/6GxhX2hQ9iGj3aDfklV4ET7NjKpSinLpJ5vafa9iiGIEZg10SfBw==", - "requires": { + "license": "BSD-3-Clause", + "dependencies": { "react-is": "^16.7.0" } }, - "ignore": { + "node_modules/ignore": { "version": "5.2.4", - "resolved": "https://registry.npmjs.org/ignore/-/ignore-5.2.4.tgz", - "integrity": "sha512-MAb38BcSbH0eHNBxn7ql2NH/kX33OkB3lZ1BNdh7ENeRChHTYsTvWrMubiIAMNS2llXEEgZ1MUOBtXChP3kaFQ==", - "dev": true + "dev": true, + "license": "MIT", + "engines": { + "node": ">= 4" + } }, - "import-fresh": { + "node_modules/import-fresh": { "version": "3.3.0", - "resolved": "https://registry.npmjs.org/import-fresh/-/import-fresh-3.3.0.tgz", - "integrity": "sha512-veYYhQa+D1QBKznvhUHxb8faxlrwUnxseDAbAp457E0wLNio2bOSKnjYDhMj+YiAq61xrMGhQk9iXVk5FzgQMw==", - "requires": { + "license": "MIT", + "dependencies": { "parent-module": "^1.0.0", "resolve-from": "^4.0.0" + }, + "engines": { + "node": ">=6" + }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" } }, - "imurmurhash": { + "node_modules/imurmurhash": { "version": "0.1.4", - "resolved": "https://registry.npmjs.org/imurmurhash/-/imurmurhash-0.1.4.tgz", - "integrity": "sha512-JmXMZ6wuvDmLiHEml9ykzqO6lwFbof0GG4IkcGaENdCRDDmMVnny7s5HsIgHCbaq0w2MyPhDqkhTUgS2LU2PHA==", - "dev": true + "dev": true, + "license": "MIT", + "engines": { + "node": ">=0.8.19" + } }, - "inflight": { + "node_modules/inflight": { "version": "1.0.6", - "resolved": "https://registry.npmjs.org/inflight/-/inflight-1.0.6.tgz", - "integrity": "sha512-k92I/b08q4wvFscXCLvqfsHCrjrF7yiXsQuIVvVE7N82W3+aqpzuUdBbfhWcy/FZR3/4IgflMgKLOsvPDrGCJA==", "dev": true, - "requires": { + "license": "ISC", + "dependencies": { "once": "^1.3.0", "wrappy": "1" } }, - "inherits": { + "node_modules/inherits": { "version": "2.0.4", - "resolved": "https://registry.npmjs.org/inherits/-/inherits-2.0.4.tgz", - "integrity": "sha512-k/vGaX4/Yla3WzyMCvTQOXYeIHvqOKtnqBduzTHpzpQZzAskKMhZ2K+EnBiSM9zGSoIFeMpXKxa4dYeZIQqewQ==", - "dev": true + "dev": true, + "license": "ISC" }, - "internal-slot": { + "node_modules/internal-slot": { "version": "1.0.5", - "resolved": "https://registry.npmjs.org/internal-slot/-/internal-slot-1.0.5.tgz", - "integrity": "sha512-Y+R5hJrzs52QCG2laLn4udYVnxsfny9CpOhNhUvk/SSSVyF6T27FzRbF0sroPidSu3X8oEAkOn2K804mjpt6UQ==", "dev": true, - "requires": { + "license": "MIT", + "dependencies": { "get-intrinsic": "^1.2.0", "has": "^1.0.3", "side-channel": "^1.0.4" + }, + "engines": { + "node": ">= 0.4" } }, - "invariant": { + "node_modules/invariant": { "version": "2.2.4", - "resolved": "https://registry.npmjs.org/invariant/-/invariant-2.2.4.tgz", - "integrity": "sha512-phJfQVBuaJM5raOpJjSfkiD6BpbCE4Ns//LaXl6wGYtUBY83nWS6Rf9tXm2e8VaK60JEjYldbPif/A2B1C2gNA==", - "requires": { + "license": "MIT", + "dependencies": { "loose-envify": "^1.0.0" } }, - "is-array-buffer": { + "node_modules/is-array-buffer": { "version": "3.0.2", - "resolved": "https://registry.npmjs.org/is-array-buffer/-/is-array-buffer-3.0.2.tgz", - "integrity": "sha512-y+FyyR/w8vfIRq4eQcM1EYgSTnmHXPqaF+IgzgraytCFq5Xh8lllDVmAZolPJiZttZLeFSINPYMaEJ7/vWUa1w==", "dev": true, - "requires": { + "license": "MIT", + "dependencies": { "call-bind": "^1.0.2", "get-intrinsic": "^1.2.0", "is-typed-array": "^1.1.10" + }, + "funding": { + "url": "https://github.com/sponsors/ljharb" } }, - "is-arrayish": { + "node_modules/is-arrayish": { "version": "0.2.1", - "resolved": "https://registry.npmjs.org/is-arrayish/-/is-arrayish-0.2.1.tgz", - "integrity": "sha512-zz06S8t0ozoDXMG+ube26zeCTNXcKIPJZJi8hBrF4idCLms4CG9QtK7qBl1boi5ODzFpjswb5JPmHCbMpjaYzg==" + "license": "MIT" }, - "is-bigint": { + "node_modules/is-bigint": { "version": "1.0.4", - "resolved": "https://registry.npmjs.org/is-bigint/-/is-bigint-1.0.4.tgz", - "integrity": "sha512-zB9CruMamjym81i2JZ3UMn54PKGsQzsJeo6xvN3HJJ4CAsQNB6iRutp2To77OfCNuoxspsIhzaPoO1zyCEhFOg==", "dev": true, - "requires": { + "license": "MIT", + "dependencies": { "has-bigints": "^1.0.1" + }, + "funding": { + "url": "https://github.com/sponsors/ljharb" } }, - "is-boolean-object": { + "node_modules/is-boolean-object": { "version": "1.1.2", - "resolved": "https://registry.npmjs.org/is-boolean-object/-/is-boolean-object-1.1.2.tgz", - "integrity": "sha512-gDYaKHJmnj4aWxyj6YHyXVpdQawtVLHU5cb+eztPGczf6cjuTdwve5ZIEfgXqH4e57An1D1AKf8CZ3kYrQRqYA==", "dev": true, - "requires": { + "license": "MIT", + "dependencies": { "call-bind": "^1.0.2", "has-tostringtag": "^1.0.0" + }, + "engines": { + "node": ">= 0.4" + }, + "funding": { + "url": "https://github.com/sponsors/ljharb" } }, - "is-callable": { + "node_modules/is-callable": { "version": "1.2.7", - "resolved": "https://registry.npmjs.org/is-callable/-/is-callable-1.2.7.tgz", - "integrity": "sha512-1BC0BVFhS/p0qtw6enp8e+8OD0UrK0oFLztSjNzhcKA3WDuJxxAPXzPuPtKkjEY9UUoEWlX/8fgKeu2S8i9JTA==", - "dev": true + "dev": true, + "license": "MIT", + "engines": { + "node": ">= 0.4" + }, + "funding": { + "url": "https://github.com/sponsors/ljharb" + } }, - "is-core-module": { - "version": "2.12.1", - "resolved": "https://registry.npmjs.org/is-core-module/-/is-core-module-2.12.1.tgz", - "integrity": "sha512-Q4ZuBAe2FUsKtyQJoQHlvP8OvBERxO3jEmy1I7hcRXcJBGGHFh/aJBswbXuS9sgrDH2QUO8ilkwNPHvHMd8clg==", - "requires": { - "has": "^1.0.3" + "node_modules/is-core-module": { + "version": "2.15.0", + "license": "MIT", + "dependencies": { + "hasown": "^2.0.2" + }, + "engines": { + "node": ">= 0.4" + }, + "funding": { + "url": "https://github.com/sponsors/ljharb" } }, - "is-date-object": { + "node_modules/is-date-object": { "version": "1.0.5", - "resolved": "https://registry.npmjs.org/is-date-object/-/is-date-object-1.0.5.tgz", - "integrity": "sha512-9YQaSxsAiSwcvS33MBk3wTCVnWK+HhF8VZR2jRxehM16QcVOdHqPn4VPHmRK4lSr38n9JriurInLcP90xsYNfQ==", "dev": true, - "requires": { + "license": "MIT", + "dependencies": { "has-tostringtag": "^1.0.0" + }, + "engines": { + "node": ">= 0.4" + }, + "funding": { + "url": "https://github.com/sponsors/ljharb" } }, - "is-extglob": { + "node_modules/is-extglob": { "version": "2.1.1", - "resolved": "https://registry.npmjs.org/is-extglob/-/is-extglob-2.1.1.tgz", - "integrity": "sha512-SbKbANkN603Vi4jEZv49LeVJMn4yGwsbzZworEoyEiutsN3nJYdbO36zfhGJ6QEDpOZIFkDtnq5JRxmvl3jsoQ==", - "dev": true + "dev": true, + "license": "MIT", + "engines": { + "node": ">=0.10.0" + } }, - "is-glob": { + "node_modules/is-glob": { "version": "4.0.3", - "resolved": "https://registry.npmjs.org/is-glob/-/is-glob-4.0.3.tgz", - "integrity": "sha512-xelSayHH36ZgE7ZWhli7pW34hNbNl8Ojv5KVmkJD4hBdD3th8Tfk9vYasLM+mXWOZhFkgZfxhLSnrwRr4elSSg==", "dev": true, - "requires": { + "license": "MIT", + "dependencies": { "is-extglob": "^2.1.1" + }, + "engines": { + "node": ">=0.10.0" } }, - "is-negative-zero": { + "node_modules/is-negative-zero": { "version": "2.0.2", - "resolved": "https://registry.npmjs.org/is-negative-zero/-/is-negative-zero-2.0.2.tgz", - "integrity": "sha512-dqJvarLawXsFbNDeJW7zAz8ItJ9cd28YufuuFzh0G8pNHjJMnY08Dv7sYX2uF5UpQOwieAeOExEYAWWfu7ZZUA==", - "dev": true + "dev": true, + "license": "MIT", + "engines": { + "node": ">= 0.4" + }, + "funding": { + "url": "https://github.com/sponsors/ljharb" + } }, - "is-number-object": { + "node_modules/is-number-object": { "version": "1.0.7", - "resolved": "https://registry.npmjs.org/is-number-object/-/is-number-object-1.0.7.tgz", - "integrity": "sha512-k1U0IRzLMo7ZlYIfzRu23Oh6MiIFasgpb9X76eqfFZAqwH44UI4KTBvBYIZ1dSL9ZzChTB9ShHfLkR4pdW5krQ==", "dev": true, - "requires": { + "license": "MIT", + "dependencies": { "has-tostringtag": "^1.0.0" + }, + "engines": { + "node": ">= 0.4" + }, + "funding": { + "url": "https://github.com/sponsors/ljharb" } }, - "is-path-inside": { + "node_modules/is-path-inside": { "version": "3.0.3", - "resolved": "https://registry.npmjs.org/is-path-inside/-/is-path-inside-3.0.3.tgz", - "integrity": "sha512-Fd4gABb+ycGAmKou8eMftCupSir5lRxqf4aD/vd0cD2qc4HL07OjCeuHMr8Ro4CoMaeCKDB0/ECBOVWjTwUvPQ==", - "dev": true + "dev": true, + "license": "MIT", + "engines": { + "node": ">=8" + } }, - "is-regex": { + "node_modules/is-regex": { "version": "1.1.4", - "resolved": "https://registry.npmjs.org/is-regex/-/is-regex-1.1.4.tgz", - "integrity": "sha512-kvRdxDsxZjhzUX07ZnLydzS1TU/TJlTUHHY4YLL87e37oUA49DfkLqgy+VjFocowy29cKvcSiu+kIv728jTTVg==", "dev": true, - "requires": { + "license": "MIT", + "dependencies": { "call-bind": "^1.0.2", "has-tostringtag": "^1.0.0" + }, + "engines": { + "node": ">= 0.4" + }, + "funding": { + "url": "https://github.com/sponsors/ljharb" } }, - "is-shared-array-buffer": { + "node_modules/is-shared-array-buffer": { "version": "1.0.2", - "resolved": "https://registry.npmjs.org/is-shared-array-buffer/-/is-shared-array-buffer-1.0.2.tgz", - "integrity": "sha512-sqN2UDu1/0y6uvXyStCOzyhAjCSlHceFoMKJW8W9EU9cvic/QdsZ0kEU93HEy3IUEFZIiH/3w+AH/UQbPHNdhA==", "dev": true, - "requires": { + "license": "MIT", + "dependencies": { "call-bind": "^1.0.2" + }, + "funding": { + "url": "https://github.com/sponsors/ljharb" } }, - "is-string": { + "node_modules/is-string": { "version": "1.0.7", - "resolved": "https://registry.npmjs.org/is-string/-/is-string-1.0.7.tgz", - "integrity": "sha512-tE2UXzivje6ofPW7l23cjDOMa09gb7xlAqG6jG5ej6uPV32TlWP3NKPigtaGeHNu9fohccRYvIiZMfOOnOYUtg==", "dev": true, - "requires": { + "license": "MIT", + "dependencies": { "has-tostringtag": "^1.0.0" + }, + "engines": { + "node": ">= 0.4" + }, + "funding": { + "url": "https://github.com/sponsors/ljharb" } }, - "is-symbol": { + "node_modules/is-symbol": { "version": "1.0.4", - "resolved": "https://registry.npmjs.org/is-symbol/-/is-symbol-1.0.4.tgz", - "integrity": "sha512-C/CPBqKWnvdcxqIARxyOh4v1UUEOCHpgDa0WYgpKDFMszcrPcffg5uhwSgPCLD2WWxmq6isisz87tzT01tuGhg==", "dev": true, - "requires": { + "license": "MIT", + "dependencies": { "has-symbols": "^1.0.2" + }, + "engines": { + "node": ">= 0.4" + }, + "funding": { + "url": "https://github.com/sponsors/ljharb" } }, - "is-typed-array": { + "node_modules/is-typed-array": { "version": "1.1.10", - "resolved": "https://registry.npmjs.org/is-typed-array/-/is-typed-array-1.1.10.tgz", - "integrity": "sha512-PJqgEHiWZvMpaFZ3uTc8kHPM4+4ADTlDniuQL7cU/UDA0Ql7F70yGfHph3cLNe+c9toaigv+DFzTJKhc2CtO6A==", "dev": true, - "requires": { + "license": "MIT", + "dependencies": { "available-typed-arrays": "^1.0.5", "call-bind": "^1.0.2", "for-each": "^0.3.3", "gopd": "^1.0.1", "has-tostringtag": "^1.0.0" + }, + "engines": { + "node": ">= 0.4" + }, + "funding": { + "url": "https://github.com/sponsors/ljharb" } }, - "is-weakref": { + "node_modules/is-weakref": { "version": "1.0.2", - "resolved": "https://registry.npmjs.org/is-weakref/-/is-weakref-1.0.2.tgz", - "integrity": "sha512-qctsuLZmIQ0+vSSMfoVvyFe2+GSEvnmZ2ezTup1SBse9+twCCeial6EEi3Nc2KFcf6+qz2FBPnjXsk8xhKSaPQ==", "dev": true, - "requires": { + "license": "MIT", + "dependencies": { "call-bind": "^1.0.2" + }, + "funding": { + "url": "https://github.com/sponsors/ljharb" } }, - "isexe": { + "node_modules/isexe": { "version": "2.0.0", - "resolved": "https://registry.npmjs.org/isexe/-/isexe-2.0.0.tgz", - "integrity": "sha512-RHxMLp9lnKHGHRng9QFhRCMbYAcVpn69smSGcq3f36xjgVVWThj4qqLbTLlq7Ssj8B+fIQ1EuCEGI2lKsyQeIw==", - "dev": true + "dev": true, + "license": "ISC" }, - "js-tokens": { + "node_modules/js-tokens": { "version": "4.0.0", - "resolved": "https://registry.npmjs.org/js-tokens/-/js-tokens-4.0.0.tgz", - "integrity": "sha512-RdJUflcE3cUzKiMqQgsCu06FPu9UdIJO0beYbPhHN4k6apgJtifcoCtT9bcxOpYBtpD2kCM6Sbzg4CausW/PKQ==" + "license": "MIT" }, - "js-yaml": { + "node_modules/js-yaml": { "version": "4.1.0", - "resolved": "https://registry.npmjs.org/js-yaml/-/js-yaml-4.1.0.tgz", - "integrity": "sha512-wpxZs9NoxZaJESJGIZTyDEaYpl0FKSA+FB9aJiyemKhMwkxQg63h4T1KJgUGHpTqPDNRcmmYLugrRjJlBtWvRA==", "dev": true, - "requires": { + "license": "MIT", + "dependencies": { "argparse": "^2.0.1" + }, + "bin": { + "js-yaml": "bin/js-yaml.js" } }, - "jsesc": { + "node_modules/jsesc": { "version": "2.5.2", - "resolved": "https://registry.npmjs.org/jsesc/-/jsesc-2.5.2.tgz", - "integrity": "sha512-OYu7XEzjkCQ3C5Ps3QIZsQfNpqoJyZZA99wd9aWd05NCtC5pWOkShK2mkL6HXQR6/Cy2lbNdPlZBpuQHXE63gA==", - "dev": true + "dev": true, + "license": "MIT", + "bin": { + "jsesc": "bin/jsesc" + }, + "engines": { + "node": ">=4" + } }, - "json-parse-even-better-errors": { + "node_modules/json-parse-even-better-errors": { "version": "2.3.1", - "resolved": "https://registry.npmjs.org/json-parse-even-better-errors/-/json-parse-even-better-errors-2.3.1.tgz", - "integrity": "sha512-xyFwyhro/JEof6Ghe2iz2NcXoj2sloNsWr/XsERDK/oiPCfaNhl5ONfp+jQdAZRQQ0IJWNzH9zIZF7li91kh2w==" + "license": "MIT" }, - "json-schema-traverse": { + "node_modules/json-schema-traverse": { "version": "0.4.1", - "resolved": "https://registry.npmjs.org/json-schema-traverse/-/json-schema-traverse-0.4.1.tgz", - "integrity": "sha512-xbbCH5dCYU5T8LcEhhuh7HJ88HXuW3qsI3Y0zOZFKfZEHcpWiHU/Jxzk629Brsab/mMiHQti9wMP+845RPe3Vg==", - "dev": true + "dev": true, + "license": "MIT" }, - "json-stable-stringify-without-jsonify": { + "node_modules/json-stable-stringify-without-jsonify": { "version": "1.0.1", - "resolved": "https://registry.npmjs.org/json-stable-stringify-without-jsonify/-/json-stable-stringify-without-jsonify-1.0.1.tgz", - "integrity": "sha512-Bdboy+l7tA3OGW6FjyFHWkP5LuByj1Tk33Ljyq0axyzdk9//JSi2u3fP1QSmd1KNwq6VOKYGlAu87CisVir6Pw==", - "dev": true + "dev": true, + "license": "MIT" }, - "json5": { + "node_modules/json5": { "version": "2.2.3", - "resolved": "https://registry.npmjs.org/json5/-/json5-2.2.3.tgz", - "integrity": "sha512-XmOWe7eyHYH14cLdVPoyg+GOH3rYX++KpzrylJwSW98t3Nk+U8XOl8FWKOgwtzdb8lXGf6zYwDUzeHMWfxasyg==", - "dev": true + "dev": true, + "license": "MIT", + "bin": { + "json5": "lib/cli.js" + }, + "engines": { + "node": ">=6" + } }, - "jsx-ast-utils": { + "node_modules/jsx-ast-utils": { "version": "3.3.4", - "resolved": "https://registry.npmjs.org/jsx-ast-utils/-/jsx-ast-utils-3.3.4.tgz", - "integrity": "sha512-fX2TVdCViod6HwKEtSWGHs57oFhVfCMwieb9PuRDgjDPh5XeqJiHFFFJCHxU5cnTc3Bu/GRL+kPiFmw8XWOfKw==", "dev": true, - "requires": { + "license": "MIT", + "dependencies": { "array-includes": "^3.1.6", "array.prototype.flat": "^1.3.1", "object.assign": "^4.1.4", "object.values": "^1.1.6" + }, + "engines": { + "node": ">=4.0" } }, - "levn": { + "node_modules/levn": { "version": "0.4.1", - "resolved": "https://registry.npmjs.org/levn/-/levn-0.4.1.tgz", - "integrity": "sha512-+bT2uH4E5LGE7h/n3evcS/sQlJXCpIp6ym8OWJ5eV6+67Dsql/LaaT7qJBAt2rzfoa/5QBGBhxDix1dMt2kQKQ==", "dev": true, - "requires": { + "license": "MIT", + "dependencies": { "prelude-ls": "^1.2.1", "type-check": "~0.4.0" + }, + "engines": { + "node": ">= 0.8.0" } }, - "lines-and-columns": { + "node_modules/lines-and-columns": { "version": "1.2.4", - "resolved": "https://registry.npmjs.org/lines-and-columns/-/lines-and-columns-1.2.4.tgz", - "integrity": "sha512-7ylylesZQ/PV29jhEDl3Ufjo6ZX7gCqJr5F7PKrqc93v7fzSymt1BpwEU8nAUXs8qzzvqhbjhK5QZg6Mt/HkBg==" + "license": "MIT" }, - "locate-path": { + "node_modules/locate-path": { "version": "6.0.0", - "resolved": "https://registry.npmjs.org/locate-path/-/locate-path-6.0.0.tgz", - "integrity": "sha512-iPZK6eYjbxRu3uB4/WZ3EsEIMJFMqAoopl3R+zuq0UjcAm/MO6KCweDgPfP3elTztoKP3KtnVHxTn2NHBSDVUw==", "dev": true, - "requires": { + "license": "MIT", + "dependencies": { "p-locate": "^5.0.0" + }, + "engines": { + "node": ">=10" + }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" } }, - "lodash.merge": { + "node_modules/lodash.merge": { "version": "4.6.2", - "resolved": "https://registry.npmjs.org/lodash.merge/-/lodash.merge-4.6.2.tgz", - "integrity": "sha512-0KpjqXRVvrYyCsX1swR/XTK0va6VQkQM6MNo7PqW77ByjAhoARA8EfrP1N4+KlKj8YS0ZUCtRT/YUuhyYDujIQ==", - "dev": true + "dev": true, + "license": "MIT" }, - "lodash.mergewith": { + "node_modules/lodash.mergewith": { "version": "4.6.2", - "resolved": "https://registry.npmjs.org/lodash.mergewith/-/lodash.mergewith-4.6.2.tgz", - "integrity": "sha512-GK3g5RPZWTRSeLSpgP8Xhra+pnjBC56q9FZYe1d5RN3TJ35dbkGy3YqBSMbyCrlbi+CM9Z3Jk5yTL7RCsqboyQ==" + "license": "MIT" }, - "loose-envify": { + "node_modules/loose-envify": { "version": "1.4.0", - "resolved": "https://registry.npmjs.org/loose-envify/-/loose-envify-1.4.0.tgz", - "integrity": "sha512-lyuxPGr/Wfhrlem2CL/UcnUc1zcqKAImBDzukY7Y5F/yQiNdko6+fRLevlw1HgMySw7f611UIY408EtxRSoK3Q==", - "requires": { + "license": "MIT", + "dependencies": { "js-tokens": "^3.0.0 || ^4.0.0" + }, + "bin": { + "loose-envify": "cli.js" } }, - "lru-cache": { + "node_modules/lru-cache": { "version": "5.1.1", - "resolved": "https://registry.npmjs.org/lru-cache/-/lru-cache-5.1.1.tgz", - "integrity": "sha512-KpNARQA3Iwv+jTA0utUVVbrh+Jlrr1Fv0e56GGzAFOXN7dk/FviaDW8LHmK52DlcH4WP2n6gI8vN1aesBFgo9w==", "dev": true, - "requires": { + "license": "ISC", + "dependencies": { "yallist": "^3.0.2" } }, - "minimatch": { + "node_modules/minimatch": { "version": "3.1.2", - "resolved": "https://registry.npmjs.org/minimatch/-/minimatch-3.1.2.tgz", - "integrity": "sha512-J7p63hRiAjw1NDEww1W7i37+ByIrOWO5XQQAzZ3VOcL0PNybwpfmV/N05zFAzwQ9USyEcX6t3UO+K5aqBQOIHw==", "dev": true, - "requires": { + "license": "ISC", + "dependencies": { "brace-expansion": "^1.1.7" + }, + "engines": { + "node": "*" } }, - "ms": { + "node_modules/ms": { "version": "2.1.2", - "resolved": "https://registry.npmjs.org/ms/-/ms-2.1.2.tgz", - "integrity": "sha512-sGkPx+VjMtmA6MX27oA4FBFELFCZZ4S4XqeGOXCv68tT+jb3vk/RyaKWP0PTKyWtmLSM0b+adUTEvbs1PEaH2w==" + "license": "MIT" }, - "nanoid": { - "version": "3.3.6", - "resolved": "https://registry.npmjs.org/nanoid/-/nanoid-3.3.6.tgz", - "integrity": "sha512-BGcqMMJuToF7i1rt+2PWSNVnWIkGCU78jBG3RxO/bZlnZPK2Cmi2QaffxGO/2RvWi9sL+FAiRiXMgsyxQ1DIDA==", - "dev": true + "node_modules/nanoid": { + "version": "3.3.7", + "dev": true, + "funding": [ + { + "type": "github", + "url": "https://github.com/sponsors/ai" + } + ], + "license": "MIT", + "bin": { + "nanoid": "bin/nanoid.cjs" + }, + "engines": { + "node": "^10 || ^12 || ^13.7 || ^14 || >=15.0.1" + } }, - "natural-compare": { + "node_modules/natural-compare": { "version": "1.4.0", - "resolved": "https://registry.npmjs.org/natural-compare/-/natural-compare-1.4.0.tgz", - "integrity": "sha512-OWND8ei3VtNC9h7V60qff3SVobHr996CTwgxubgyQYEpg290h9J0buyECNNJexkFm5sOajh5G116RYA1c8ZMSw==", - "dev": true + "dev": true, + "license": "MIT" }, - "node-releases": { + "node_modules/node-releases": { "version": "2.0.13", - "resolved": "https://registry.npmjs.org/node-releases/-/node-releases-2.0.13.tgz", - "integrity": "sha512-uYr7J37ae/ORWdZeQ1xxMJe3NtdmqMC/JZK+geofDrkLUApKRHPd18/TxtBOJ4A0/+uUIliorNrfYV6s1b02eQ==", - "dev": true + "dev": true, + "license": "MIT" }, - "object-assign": { + "node_modules/object-assign": { "version": "4.1.1", - "resolved": "https://registry.npmjs.org/object-assign/-/object-assign-4.1.1.tgz", - "integrity": "sha512-rJgTQnkUnH1sFw8yT6VSU3zD3sWmu6sZhIseY8VX+GRu3P6F7Fu+JNDoXfklElbLJSnc3FUQHVe4cU5hj+BcUg==" + "license": "MIT", + "engines": { + "node": ">=0.10.0" + } }, - "object-inspect": { + "node_modules/object-inspect": { "version": "1.12.3", - "resolved": "https://registry.npmjs.org/object-inspect/-/object-inspect-1.12.3.tgz", - "integrity": "sha512-geUvdk7c+eizMNUDkRpW1wJwgfOiOeHbxBR/hLXK1aT6zmVSO0jsQcs7fj6MGw89jC/cjGfLcNOrtMYtGqm81g==", - "dev": true + "dev": true, + "license": "MIT", + "funding": { + "url": "https://github.com/sponsors/ljharb" + } }, - "object-keys": { + "node_modules/object-keys": { "version": "1.1.1", - "resolved": "https://registry.npmjs.org/object-keys/-/object-keys-1.1.1.tgz", - "integrity": "sha512-NuAESUOUMrlIXOfHKzD6bpPu3tYt3xvjNdRIQ+FeT0lNb4K8WR70CaDxhuNguS2XG+GjkyMwOzsN5ZktImfhLA==", - "dev": true + "dev": true, + "license": "MIT", + "engines": { + "node": ">= 0.4" + } }, - "object.assign": { + "node_modules/object.assign": { "version": "4.1.4", - "resolved": "https://registry.npmjs.org/object.assign/-/object.assign-4.1.4.tgz", - "integrity": "sha512-1mxKf0e58bvyjSCtKYY4sRe9itRk3PJpquJOjeIkz885CczcI4IvJJDLPS72oowuSh+pBxUFROpX+TU++hxhZQ==", "dev": true, - "requires": { + "license": "MIT", + "dependencies": { "call-bind": "^1.0.2", "define-properties": "^1.1.4", "has-symbols": "^1.0.3", "object-keys": "^1.1.1" + }, + "engines": { + "node": ">= 0.4" + }, + "funding": { + "url": "https://github.com/sponsors/ljharb" } }, - "object.entries": { + "node_modules/object.entries": { "version": "1.1.6", - "resolved": "https://registry.npmjs.org/object.entries/-/object.entries-1.1.6.tgz", - "integrity": "sha512-leTPzo4Zvg3pmbQ3rDK69Rl8GQvIqMWubrkxONG9/ojtFE2rD9fjMKfSI5BxW3osRH1m6VdzmqK8oAY9aT4x5w==", "dev": true, - "requires": { + "license": "MIT", + "dependencies": { "call-bind": "^1.0.2", "define-properties": "^1.1.4", "es-abstract": "^1.20.4" + }, + "engines": { + "node": ">= 0.4" } }, - "object.fromentries": { + "node_modules/object.fromentries": { "version": "2.0.6", - "resolved": "https://registry.npmjs.org/object.fromentries/-/object.fromentries-2.0.6.tgz", - "integrity": "sha512-VciD13dswC4j1Xt5394WR4MzmAQmlgN72phd/riNp9vtD7tp4QQWJ0R4wvclXcafgcYK8veHRed2W6XeGBvcfg==", "dev": true, - "requires": { + "license": "MIT", + "dependencies": { "call-bind": "^1.0.2", "define-properties": "^1.1.4", "es-abstract": "^1.20.4" + }, + "engines": { + "node": ">= 0.4" + }, + "funding": { + "url": "https://github.com/sponsors/ljharb" } }, - "object.hasown": { + "node_modules/object.hasown": { "version": "1.1.2", - "resolved": "https://registry.npmjs.org/object.hasown/-/object.hasown-1.1.2.tgz", - "integrity": "sha512-B5UIT3J1W+WuWIU55h0mjlwaqxiE5vYENJXIXZ4VFe05pNYrkKuK0U/6aFcb0pKywYJh7IhfoqUfKVmrJJHZHw==", "dev": true, - "requires": { + "license": "MIT", + "dependencies": { "define-properties": "^1.1.4", "es-abstract": "^1.20.4" + }, + "funding": { + "url": "https://github.com/sponsors/ljharb" } }, - "object.values": { + "node_modules/object.values": { "version": "1.1.6", - "resolved": "https://registry.npmjs.org/object.values/-/object.values-1.1.6.tgz", - "integrity": "sha512-FVVTkD1vENCsAcwNs9k6jea2uHC/X0+JcjG8YA60FN5CMaJmG95wT9jek/xX9nornqGRrBkKtzuAu2wuHpKqvw==", "dev": true, - "requires": { + "license": "MIT", + "dependencies": { "call-bind": "^1.0.2", "define-properties": "^1.1.4", "es-abstract": "^1.20.4" + }, + "engines": { + "node": ">= 0.4" + }, + "funding": { + "url": "https://github.com/sponsors/ljharb" } }, - "once": { + "node_modules/once": { "version": "1.4.0", - "resolved": "https://registry.npmjs.org/once/-/once-1.4.0.tgz", - "integrity": "sha512-lNaJgI+2Q5URQBkccEKHTQOPaXdUxnZZElQTZY0MFUAuaEqe1E+Nyvgdz/aIyNi6Z9MzO5dv1H8n58/GELp3+w==", "dev": true, - "requires": { + "license": "ISC", + "dependencies": { "wrappy": "1" } }, - "optionator": { + "node_modules/optionator": { "version": "0.9.3", - "resolved": "https://registry.npmjs.org/optionator/-/optionator-0.9.3.tgz", - "integrity": "sha512-JjCoypp+jKn1ttEFExxhetCKeJt9zhAgAve5FXHixTvFDW/5aEktX9bufBKLRRMdU7bNtpLfcGu94B3cdEJgjg==", "dev": true, - "requires": { + "license": "MIT", + "dependencies": { "@aashutoshrathi/word-wrap": "^1.2.3", "deep-is": "^0.1.3", "fast-levenshtein": "^2.0.6", "levn": "^0.4.1", "prelude-ls": "^1.2.1", "type-check": "^0.4.0" + }, + "engines": { + "node": ">= 0.8.0" } }, - "p-limit": { + "node_modules/p-limit": { "version": "3.1.0", - "resolved": "https://registry.npmjs.org/p-limit/-/p-limit-3.1.0.tgz", - "integrity": "sha512-TYOanM3wGwNGsZN2cVTYPArw454xnXj5qmWF1bEoAc4+cU/ol7GVh7odevjp1FNHduHc3KZMcFduxU5Xc6uJRQ==", "dev": true, - "requires": { + "license": "MIT", + "dependencies": { "yocto-queue": "^0.1.0" + }, + "engines": { + "node": ">=10" + }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" } }, - "p-locate": { + "node_modules/p-locate": { "version": "5.0.0", - "resolved": "https://registry.npmjs.org/p-locate/-/p-locate-5.0.0.tgz", - "integrity": "sha512-LaNjtRWUBY++zB5nE/NwcaoMylSPk+S+ZHNB1TzdbMJMny6dynpAGt7X/tl/QYq3TIeE6nxHppbo2LGymrG5Pw==", "dev": true, - "requires": { + "license": "MIT", + "dependencies": { "p-limit": "^3.0.2" + }, + "engines": { + "node": ">=10" + }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" } }, - "parent-module": { + "node_modules/parent-module": { "version": "1.0.1", - "resolved": "https://registry.npmjs.org/parent-module/-/parent-module-1.0.1.tgz", - "integrity": "sha512-GQ2EWRpQV8/o+Aw8YqtfZZPfNRWZYkbidE9k5rpl/hC3vtHHBfGm2Ifi6qWV+coDGkrUKZAxE3Lot5kcsRlh+g==", - "requires": { + "license": "MIT", + "dependencies": { "callsites": "^3.0.0" + }, + "engines": { + "node": ">=6" } }, - "parse-json": { + "node_modules/parse-json": { "version": "5.2.0", - "resolved": "https://registry.npmjs.org/parse-json/-/parse-json-5.2.0.tgz", - "integrity": "sha512-ayCKvm/phCGxOkYRSCM82iDwct8/EonSEgCSxWxD7ve6jHggsFl4fZVQBPRNgQoKiuV/odhFrGzQXZwbifC8Rg==", - "requires": { + "license": "MIT", + "dependencies": { "@babel/code-frame": "^7.0.0", "error-ex": "^1.3.1", "json-parse-even-better-errors": "^2.3.0", "lines-and-columns": "^1.1.6" + }, + "engines": { + "node": ">=8" + }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" } }, - "path-exists": { + "node_modules/path-exists": { "version": "4.0.0", - "resolved": "https://registry.npmjs.org/path-exists/-/path-exists-4.0.0.tgz", - "integrity": "sha512-ak9Qy5Q7jYb2Wwcey5Fpvg2KoAc/ZIhLSLOSBmRmygPsGwkVVt0fZa0qrtMz+m6tJTAHfZQ8FnmB4MG4LWy7/w==", - "dev": true + "dev": true, + "license": "MIT", + "engines": { + "node": ">=8" + } }, - "path-is-absolute": { + "node_modules/path-is-absolute": { "version": "1.0.1", - "resolved": "https://registry.npmjs.org/path-is-absolute/-/path-is-absolute-1.0.1.tgz", - "integrity": "sha512-AVbw3UJ2e9bq64vSaS9Am0fje1Pa8pbGqTTsmXfaIiMpnr5DlDhfJOuLj9Sf95ZPVDAUerDfEk88MPmPe7UCQg==", - "dev": true + "dev": true, + "license": "MIT", + "engines": { + "node": ">=0.10.0" + } }, - "path-key": { + "node_modules/path-key": { "version": "3.1.1", - "resolved": "https://registry.npmjs.org/path-key/-/path-key-3.1.1.tgz", - "integrity": "sha512-ojmeN0qd+y0jszEtoY48r0Peq5dwMEkIlCOu6Q5f41lfkswXuKtYrhgoTpLnyIcHm24Uhqx+5Tqm2InSwLhE6Q==", - "dev": true + "dev": true, + "license": "MIT", + "engines": { + "node": ">=8" + } }, - "path-parse": { + "node_modules/path-parse": { "version": "1.0.7", - "resolved": "https://registry.npmjs.org/path-parse/-/path-parse-1.0.7.tgz", - "integrity": "sha512-LDJzPVEEEPR+y48z93A0Ed0yXb8pAByGWo/k5YYdYgpY2/2EsOsksJrq7lOHxryrVOn1ejG6oAp8ahvOIQD8sw==" + "license": "MIT" }, - "path-type": { + "node_modules/path-type": { "version": "4.0.0", - "resolved": "https://registry.npmjs.org/path-type/-/path-type-4.0.0.tgz", - "integrity": "sha512-gDKb8aZMDeD/tZWs9P6+q0J9Mwkdl6xMV8TjnGP3qJVJ06bdMgkbBlLU8IdfOsIsFz2BW1rNVT3XuNEl8zPAvw==" + "license": "MIT", + "engines": { + "node": ">=8" + } }, - "picocolors": { - "version": "1.0.0", - "resolved": "https://registry.npmjs.org/picocolors/-/picocolors-1.0.0.tgz", - "integrity": "sha512-1fygroTLlHu66zi26VoTDv8yRgm0Fccecssto+MhsZ0D/DGW2sm8E8AjW7NU5VVTRt5GxbeZ5qBuJr+HyLYkjQ==", - "dev": true + "node_modules/picocolors": { + "version": "1.0.1", + "license": "ISC" }, - "postcss": { - "version": "8.4.26", - "resolved": "https://registry.npmjs.org/postcss/-/postcss-8.4.26.tgz", - "integrity": "sha512-jrXHFF8iTloAenySjM/ob3gSj7pCu0Ji49hnjqzsgSRa50hkWCKD0HQ+gMNJkW38jBI68MpAAg7ZWwHwX8NMMw==", + "node_modules/postcss": { + "version": "8.4.41", "dev": true, - "requires": { - "nanoid": "^3.3.6", - "picocolors": "^1.0.0", - "source-map-js": "^1.0.2" + "funding": [ + { + "type": "opencollective", + "url": "https://opencollective.com/postcss/" + }, + { + "type": "tidelift", + "url": "https://tidelift.com/funding/github/npm/postcss" + }, + { + "type": "github", + "url": "https://github.com/sponsors/ai" + } + ], + "license": "MIT", + "dependencies": { + "nanoid": "^3.3.7", + "picocolors": "^1.0.1", + "source-map-js": "^1.2.0" + }, + "engines": { + "node": "^10 || ^12 || >=14" } }, - "prelude-ls": { + "node_modules/prelude-ls": { "version": "1.2.1", - "resolved": "https://registry.npmjs.org/prelude-ls/-/prelude-ls-1.2.1.tgz", - "integrity": "sha512-vkcDPrRZo1QZLbn5RLGPpg/WmIQ65qoWWhcGKf/b5eplkkarX0m9z8ppCat4mlOqUsWpyNuYgO3VRyrYHSzX5g==", - "dev": true + "dev": true, + "license": "MIT", + "engines": { + "node": ">= 0.8.0" + } }, - "prop-types": { + "node_modules/prop-types": { "version": "15.8.1", - "resolved": "https://registry.npmjs.org/prop-types/-/prop-types-15.8.1.tgz", - "integrity": "sha512-oj87CgZICdulUohogVAR7AjlC0327U4el4L6eAvOqCeudMDVU0NThNaV+b9Df4dXgSP1gXMTnPdhfe/2qDH5cg==", - "requires": { + "license": "MIT", + "dependencies": { "loose-envify": "^1.4.0", "object-assign": "^4.1.1", "react-is": "^16.13.1" } }, - "punycode": { + "node_modules/punycode": { "version": "2.3.0", - "resolved": "https://registry.npmjs.org/punycode/-/punycode-2.3.0.tgz", - "integrity": "sha512-rRV+zQD8tVFys26lAGR9WUuS4iUAngJScM+ZRSKtvl5tKeZ2t5bvdNFdNHBW9FWR4guGHlgmsZ1G7BSm2wTbuA==", - "dev": true + "dev": true, + "license": "MIT", + "engines": { + "node": ">=6" + } }, - "queue-microtask": { + "node_modules/queue-microtask": { "version": "1.2.3", - "resolved": "https://registry.npmjs.org/queue-microtask/-/queue-microtask-1.2.3.tgz", - "integrity": "sha512-NuaNSa6flKT5JaSYQzJok04JzTL1CA6aGhv5rfLW3PgqA+M2ChpZQnAC8h8i4ZFkBS8X5RqkDBHA7r4hej3K9A==", - "dev": true + "dev": true, + "funding": [ + { + "type": "github", + "url": "https://github.com/sponsors/feross" + }, + { + "type": "patreon", + "url": "https://www.patreon.com/feross" + }, + { + "type": "consulting", + "url": "https://feross.org/support" + } + ], + "license": "MIT" }, - "react": { + "node_modules/react": { "version": "18.2.0", - "resolved": "https://registry.npmjs.org/react/-/react-18.2.0.tgz", - "integrity": "sha512-/3IjMdb2L9QbBdWiW5e3P2/npwMBaU9mHCSCUzNln0ZCYbcfTsGbTJrU/kGemdH2IWmB2ioZ+zkxtmq6g09fGQ==", - "requires": { + "license": "MIT", + "dependencies": { "loose-envify": "^1.1.0" + }, + "engines": { + "node": ">=0.10.0" } }, - "react-clientside-effect": { + "node_modules/react-clientside-effect": { "version": "1.2.6", - "resolved": "https://registry.npmjs.org/react-clientside-effect/-/react-clientside-effect-1.2.6.tgz", - "integrity": "sha512-XGGGRQAKY+q25Lz9a/4EPqom7WRjz3z9R2k4jhVKA/puQFH/5Nt27vFZYql4m4NVNdUvX8PS3O7r/Zzm7cjUlg==", - "requires": { + "license": "MIT", + "dependencies": { "@babel/runtime": "^7.12.13" + }, + "peerDependencies": { + "react": "^15.3.0 || ^16.0.0 || ^17.0.0 || ^18.0.0" } }, - "react-dom": { + "node_modules/react-dom": { "version": "18.2.0", - "resolved": "https://registry.npmjs.org/react-dom/-/react-dom-18.2.0.tgz", - "integrity": "sha512-6IMTriUmvsjHUjNtEDudZfuDQUoWXVxKHhlEGSk81n4YFS+r/Kl99wXiwlVXtPBtJenozv2P+hxDsw9eA7Xo6g==", - "requires": { + "license": "MIT", + "dependencies": { "loose-envify": "^1.1.0", "scheduler": "^0.23.0" + }, + "peerDependencies": { + "react": "^18.2.0" } }, - "react-fast-compare": { - "version": "3.2.1", - "resolved": "https://registry.npmjs.org/react-fast-compare/-/react-fast-compare-3.2.1.tgz", - "integrity": "sha512-xTYf9zFim2pEif/Fw16dBiXpe0hoy5PxcD8+OwBnTtNLfIm3g6WxhKNurY+6OmdH1u6Ta/W/Vl6vjbYP1MFnDg==" - }, - "react-focus-lock": { - "version": "2.9.5", - "resolved": "https://registry.npmjs.org/react-focus-lock/-/react-focus-lock-2.9.5.tgz", - "integrity": "sha512-h6vrdgUbsH2HeD5I7I3Cx1PPrmwGuKYICS+kB9m+32X/9xHRrAbxgvaBpG7BFBN9h3tO+C3qX1QAVESmi4CiIA==", - "requires": { + "node_modules/react-fast-compare": { + "version": "3.2.2", + "license": "MIT" + }, + "node_modules/react-focus-lock": { + "version": "2.12.1", + "license": "MIT", + "dependencies": { "@babel/runtime": "^7.0.0", - "focus-lock": "^0.11.6", + "focus-lock": "^1.3.5", "prop-types": "^15.6.2", "react-clientside-effect": "^1.2.6", - "use-callback-ref": "^1.3.0", + "use-callback-ref": "^1.3.2", "use-sidecar": "^1.1.2" + }, + "peerDependencies": { + "@types/react": "^16.8.0 || ^17.0.0 || ^18.0.0", + "react": "^16.8.0 || ^17.0.0 || ^18.0.0" + }, + "peerDependenciesMeta": { + "@types/react": { + "optional": true + } } }, - "react-icons": { + "node_modules/react-icons": { "version": "4.10.1", - "resolved": "https://registry.npmjs.org/react-icons/-/react-icons-4.10.1.tgz", - "integrity": "sha512-/ngzDP/77tlCfqthiiGNZeYFACw85fUjZtLbedmJ5DTlNDIwETxhwBzdOJ21zj4iJdvc0J3y7yOsX3PpxAJzrw==", - "requires": {} + "license": "MIT", + "peerDependencies": { + "react": "*" + } }, - "react-is": { + "node_modules/react-is": { "version": "16.13.1", - "resolved": "https://registry.npmjs.org/react-is/-/react-is-16.13.1.tgz", - "integrity": "sha512-24e6ynE2H+OKt4kqsOvNd8kBpV65zoxbA4BVsEOB3ARVWQki/DHzaUoC5KuON/BiccDaCCTZBuOcfZs70kR8bQ==" + "license": "MIT" }, - "react-refresh": { + "node_modules/react-refresh": { "version": "0.14.0", - "resolved": "https://registry.npmjs.org/react-refresh/-/react-refresh-0.14.0.tgz", - "integrity": "sha512-wViHqhAd8OHeLS/IRMJjTSDHF3U9eWi62F/MledQGPdJGDhodXJ9PBLNGr6WWL7qlH12Mt3TyTpbS+hGXMjCzQ==", - "dev": true - }, - "react-remove-scroll": { - "version": "2.5.6", - "resolved": "https://registry.npmjs.org/react-remove-scroll/-/react-remove-scroll-2.5.6.tgz", - "integrity": "sha512-bO856ad1uDYLefgArk559IzUNeQ6SWH4QnrevIUjH+GczV56giDfl3h0Idptf2oIKxQmd1p9BN25jleKodTALg==", - "requires": { - "react-remove-scroll-bar": "^2.3.4", + "dev": true, + "license": "MIT", + "engines": { + "node": ">=0.10.0" + } + }, + "node_modules/react-remove-scroll": { + "version": "2.5.10", + "license": "MIT", + "dependencies": { + "react-remove-scroll-bar": "^2.3.6", "react-style-singleton": "^2.2.1", "tslib": "^2.1.0", "use-callback-ref": "^1.3.0", "use-sidecar": "^1.1.2" + }, + "engines": { + "node": ">=10" + }, + "peerDependencies": { + "@types/react": "^16.8.0 || ^17.0.0 || ^18.0.0", + "react": "^16.8.0 || ^17.0.0 || ^18.0.0" + }, + "peerDependenciesMeta": { + "@types/react": { + "optional": true + } } }, - "react-remove-scroll-bar": { - "version": "2.3.4", - "resolved": "https://registry.npmjs.org/react-remove-scroll-bar/-/react-remove-scroll-bar-2.3.4.tgz", - "integrity": "sha512-63C4YQBUt0m6ALadE9XV56hV8BgJWDmmTPY758iIJjfQKt2nYwoUrPk0LXRXcB/yIj82T1/Ixfdpdk68LwIB0A==", - "requires": { + "node_modules/react-remove-scroll-bar": { + "version": "2.3.6", + "license": "MIT", + "dependencies": { "react-style-singleton": "^2.2.1", "tslib": "^2.0.0" + }, + "engines": { + "node": ">=10" + }, + "peerDependencies": { + "@types/react": "^16.8.0 || ^17.0.0 || ^18.0.0", + "react": "^16.8.0 || ^17.0.0 || ^18.0.0" + }, + "peerDependenciesMeta": { + "@types/react": { + "optional": true + } } }, - "react-router": { + "node_modules/react-router": { "version": "6.14.1", - "resolved": "https://registry.npmjs.org/react-router/-/react-router-6.14.1.tgz", - "integrity": "sha512-U4PfgvG55LdvbQjg5Y9QRWyVxIdO1LlpYT7x+tMAxd9/vmiPuJhIwdxZuIQLN/9e3O4KFDHYfR9gzGeYMasW8g==", - "requires": { + "license": "MIT", + "dependencies": { "@remix-run/router": "1.7.1" + }, + "engines": { + "node": ">=14" + }, + "peerDependencies": { + "react": ">=16.8" } }, - "react-router-dom": { + "node_modules/react-router-dom": { "version": "6.14.1", - "resolved": "https://registry.npmjs.org/react-router-dom/-/react-router-dom-6.14.1.tgz", - "integrity": "sha512-ssF6M5UkQjHK70fgukCJyjlda0Dgono2QGwqGvuk7D+EDGHdacEN3Yke2LTMjkrpHuFwBfDFsEjGVXBDmL+bWw==", - "requires": { + "license": "MIT", + "dependencies": { "@remix-run/router": "1.7.1", "react-router": "6.14.1" + }, + "engines": { + "node": ">=14" + }, + "peerDependencies": { + "react": ">=16.8", + "react-dom": ">=16.8" } }, - "react-style-singleton": { + "node_modules/react-style-singleton": { "version": "2.2.1", - "resolved": "https://registry.npmjs.org/react-style-singleton/-/react-style-singleton-2.2.1.tgz", - "integrity": "sha512-ZWj0fHEMyWkHzKYUr2Bs/4zU6XLmq9HsgBURm7g5pAVfyn49DgUiNgY2d4lXRlYSiCif9YBGpQleewkcqddc7g==", - "requires": { + "license": "MIT", + "dependencies": { "get-nonce": "^1.0.0", "invariant": "^2.2.4", "tslib": "^2.0.0" + }, + "engines": { + "node": ">=10" + }, + "peerDependencies": { + "@types/react": "^16.8.0 || ^17.0.0 || ^18.0.0", + "react": "^16.8.0 || ^17.0.0 || ^18.0.0" + }, + "peerDependenciesMeta": { + "@types/react": { + "optional": true + } } }, - "recoil": { + "node_modules/recoil": { "version": "0.7.7", - "resolved": "https://registry.npmjs.org/recoil/-/recoil-0.7.7.tgz", - "integrity": "sha512-8Og5KPQW9LwC577Vc7Ug2P0vQshkv1y3zG3tSSkWMqkWSwHmE+by06L8JtnGocjW6gcCvfwB3YtrJG6/tWivNQ==", - "requires": { + "license": "MIT", + "dependencies": { "hamt_plus": "1.0.2" + }, + "peerDependencies": { + "react": ">=16.13.1" + }, + "peerDependenciesMeta": { + "react-dom": { + "optional": true + }, + "react-native": { + "optional": true + } } }, - "regenerator-runtime": { + "node_modules/regenerator-runtime": { "version": "0.13.11", - "resolved": "https://registry.npmjs.org/regenerator-runtime/-/regenerator-runtime-0.13.11.tgz", - "integrity": "sha512-kY1AZVr2Ra+t+piVaJ4gxaFaReZVH40AKNo7UCX6W+dEwBo/2oZJzqfuN1qLq1oL45o56cPaTXELwrTh8Fpggg==" + "license": "MIT" }, - "regexp.prototype.flags": { + "node_modules/regexp.prototype.flags": { "version": "1.5.0", - "resolved": "https://registry.npmjs.org/regexp.prototype.flags/-/regexp.prototype.flags-1.5.0.tgz", - "integrity": "sha512-0SutC3pNudRKgquxGoRGIz946MZVHqbNfPjBdxeOhBrdgDKlRoXmYLQN9xRbrR09ZXWeGAdPuif7egofn6v5LA==", "dev": true, - "requires": { + "license": "MIT", + "dependencies": { "call-bind": "^1.0.2", "define-properties": "^1.2.0", "functions-have-names": "^1.2.3" + }, + "engines": { + "node": ">= 0.4" + }, + "funding": { + "url": "https://github.com/sponsors/ljharb" } }, - "resolve": { + "node_modules/resolve": { "version": "2.0.0-next.4", - "resolved": "https://registry.npmjs.org/resolve/-/resolve-2.0.0-next.4.tgz", - "integrity": "sha512-iMDbmAWtfU+MHpxt/I5iWI7cY6YVEZUQ3MBgPQ++XD1PELuJHIl82xBmObyP2KyQmkNB2dsqF7seoQQiAn5yDQ==", "dev": true, - "requires": { + "license": "MIT", + "dependencies": { "is-core-module": "^2.9.0", "path-parse": "^1.0.7", "supports-preserve-symlinks-flag": "^1.0.0" + }, + "bin": { + "resolve": "bin/resolve" + }, + "funding": { + "url": "https://github.com/sponsors/ljharb" } }, - "resolve-from": { + "node_modules/resolve-from": { "version": "4.0.0", - "resolved": "https://registry.npmjs.org/resolve-from/-/resolve-from-4.0.0.tgz", - "integrity": "sha512-pb/MYmXstAkysRFx8piNI1tGFNQIFA3vkE3Gq4EuA1dF6gHp/+vgZqsCGJapvy8N3Q+4o7FwvquPJcnZ7RYy4g==" + "license": "MIT", + "engines": { + "node": ">=4" + } }, - "reusify": { + "node_modules/reusify": { "version": "1.0.4", - "resolved": "https://registry.npmjs.org/reusify/-/reusify-1.0.4.tgz", - "integrity": "sha512-U9nH88a3fc/ekCF1l0/UP1IosiuIjyTh7hBvXVMHYgVcfGvt897Xguj2UOLDeI5BG2m7/uwyaLVT6fbtCwTyzw==", - "dev": true + "dev": true, + "license": "MIT", + "engines": { + "iojs": ">=1.0.0", + "node": ">=0.10.0" + } }, - "rimraf": { + "node_modules/rimraf": { "version": "3.0.2", - "resolved": "https://registry.npmjs.org/rimraf/-/rimraf-3.0.2.tgz", - "integrity": "sha512-JZkJMZkAGFFPP2YqXZXPbMlMBgsxzE8ILs4lMIX/2o0L9UBw9O/Y3o6wFw/i9YLapcUJWwqbi3kdxIPdC62TIA==", "dev": true, - "requires": { + "license": "ISC", + "dependencies": { "glob": "^7.1.3" + }, + "bin": { + "rimraf": "bin.js" + }, + "funding": { + "url": "https://github.com/sponsors/isaacs" } }, - "rollup": { - "version": "3.26.2", - "resolved": "https://registry.npmjs.org/rollup/-/rollup-3.26.2.tgz", - "integrity": "sha512-6umBIGVz93er97pMgQO08LuH3m6PUb3jlDUUGFsNJB6VgTCUaDFpupf5JfU30529m/UKOgmiX+uY6Sx8cOYpLA==", + "node_modules/rollup": { + "version": "3.29.4", "dev": true, - "requires": { + "license": "MIT", + "bin": { + "rollup": "dist/bin/rollup" + }, + "engines": { + "node": ">=14.18.0", + "npm": ">=8.0.0" + }, + "optionalDependencies": { "fsevents": "~2.3.2" } }, - "run-parallel": { + "node_modules/run-parallel": { "version": "1.2.0", - "resolved": "https://registry.npmjs.org/run-parallel/-/run-parallel-1.2.0.tgz", - "integrity": "sha512-5l4VyZR86LZ/lDxZTR6jqL8AFE2S0IFLMP26AbjsLVADxHdhB/c0GUsH+y39UfCi3dzz8OlQuPmnaJOMoDHQBA==", "dev": true, - "requires": { + "funding": [ + { + "type": "github", + "url": "https://github.com/sponsors/feross" + }, + { + "type": "patreon", + "url": "https://www.patreon.com/feross" + }, + { + "type": "consulting", + "url": "https://feross.org/support" + } + ], + "license": "MIT", + "dependencies": { "queue-microtask": "^1.2.2" } }, - "safe-regex-test": { + "node_modules/safe-regex-test": { "version": "1.0.0", - "resolved": "https://registry.npmjs.org/safe-regex-test/-/safe-regex-test-1.0.0.tgz", - "integrity": "sha512-JBUUzyOgEwXQY1NuPtvcj/qcBDbDmEvWufhlnXZIm75DEHp+afM1r1ujJpJsV/gSM4t59tpDyPi1sd6ZaPFfsA==", "dev": true, - "requires": { + "license": "MIT", + "dependencies": { "call-bind": "^1.0.2", "get-intrinsic": "^1.1.3", "is-regex": "^1.1.4" + }, + "funding": { + "url": "https://github.com/sponsors/ljharb" } }, - "scheduler": { + "node_modules/scheduler": { "version": "0.23.0", - "resolved": "https://registry.npmjs.org/scheduler/-/scheduler-0.23.0.tgz", - "integrity": "sha512-CtuThmgHNg7zIZWAXi3AsyIzA3n4xx7aNyjwC2VJldO2LMVDhFK+63xGqq6CsJH4rTAt6/M+N4GhZiDYPx9eUw==", - "requires": { + "license": "MIT", + "dependencies": { "loose-envify": "^1.1.0" } }, - "semver": { + "node_modules/semver": { "version": "6.3.1", - "resolved": "https://registry.npmjs.org/semver/-/semver-6.3.1.tgz", - "integrity": "sha512-BR7VvDCVHO+q2xBEWskxS6DJE1qRnb7DxzUrogb71CWoSficBxYsiAGd+Kl0mmq/MprG9yArRkyrQxTO6XjMzA==", - "dev": true + "dev": true, + "license": "ISC", + "bin": { + "semver": "bin/semver.js" + } }, - "shebang-command": { + "node_modules/shebang-command": { "version": "2.0.0", - "resolved": "https://registry.npmjs.org/shebang-command/-/shebang-command-2.0.0.tgz", - "integrity": "sha512-kHxr2zZpYtdmrN1qDjrrX/Z1rR1kG8Dx+gkpK1G4eXmvXswmcE1hTWBWYUzlraYw1/yZp6YuDY77YtvbN0dmDA==", "dev": true, - "requires": { + "license": "MIT", + "dependencies": { "shebang-regex": "^3.0.0" + }, + "engines": { + "node": ">=8" } }, - "shebang-regex": { + "node_modules/shebang-regex": { "version": "3.0.0", - "resolved": "https://registry.npmjs.org/shebang-regex/-/shebang-regex-3.0.0.tgz", - "integrity": "sha512-7++dFhtcx3353uBaq8DDR4NuxBetBzC7ZQOhmTQInHEd6bSrXdiEyzCvG07Z44UYdLShWUyXt5M/yhz8ekcb1A==", - "dev": true + "dev": true, + "license": "MIT", + "engines": { + "node": ">=8" + } }, - "side-channel": { + "node_modules/side-channel": { "version": "1.0.4", - "resolved": "https://registry.npmjs.org/side-channel/-/side-channel-1.0.4.tgz", - "integrity": "sha512-q5XPytqFEIKHkGdiMIrY10mvLRvnQh42/+GoBlFW3b2LXLE2xxJpZFdm94we0BaoV3RwJyGqg5wS7epxTv0Zvw==", "dev": true, - "requires": { + "license": "MIT", + "dependencies": { "call-bind": "^1.0.0", "get-intrinsic": "^1.0.2", "object-inspect": "^1.9.0" + }, + "funding": { + "url": "https://github.com/sponsors/ljharb" } }, - "socket.io-client": { + "node_modules/socket.io-client": { "version": "4.7.2", - "resolved": "https://registry.npmjs.org/socket.io-client/-/socket.io-client-4.7.2.tgz", - "integrity": "sha512-vtA0uD4ibrYD793SOIAwlo8cj6haOeMHrGvwPxJsxH7CeIksqJ+3Zc06RvWTIFgiSqx4A3sOnTXpfAEE2Zyz6w==", - "requires": { + "license": "MIT", + "dependencies": { "@socket.io/component-emitter": "~3.1.0", "debug": "~4.3.2", "engine.io-client": "~6.5.2", "socket.io-parser": "~4.2.4" + }, + "engines": { + "node": ">=10.0.0" } }, - "socket.io-parser": { + "node_modules/socket.io-parser": { "version": "4.2.4", - "resolved": "https://registry.npmjs.org/socket.io-parser/-/socket.io-parser-4.2.4.tgz", - "integrity": "sha512-/GbIKmo8ioc+NIWIhwdecY0ge+qVBSMdgxGygevmdHj24bsfgtCmcUUcQ5ZzcylGFHsN3k4HB4Cgkl96KVnuew==", - "requires": { + "license": "MIT", + "dependencies": { "@socket.io/component-emitter": "~3.1.0", "debug": "~4.3.1" + }, + "engines": { + "node": ">=10.0.0" + } + }, + "node_modules/source-map": { + "version": "0.5.7", + "license": "BSD-3-Clause", + "engines": { + "node": ">=0.10.0" } }, - "source-map": { - "version": "0.5.7", - "resolved": "https://registry.npmjs.org/source-map/-/source-map-0.5.7.tgz", - "integrity": "sha512-LbrmJOMUSdEVxIKvdcJzQC+nQhe8FUZQTXQy6+I75skNgn3OoQ0DZA8YnFa7gp8tqtL3KPf1kmo0R5DoApeSGQ==" - }, - "source-map-js": { - "version": "1.0.2", - "resolved": "https://registry.npmjs.org/source-map-js/-/source-map-js-1.0.2.tgz", - "integrity": "sha512-R0XvVJ9WusLiqTCEiGCmICCMplcCkIwwR11mOSD9CR5u+IXYdiseeEuXCVAjS54zqwkLcPNnmU4OeJ6tUrWhDw==", - "dev": true + "node_modules/source-map-js": { + "version": "1.2.0", + "dev": true, + "license": "BSD-3-Clause", + "engines": { + "node": ">=0.10.0" + } }, - "string.prototype.matchall": { + "node_modules/string.prototype.matchall": { "version": "4.0.8", - "resolved": "https://registry.npmjs.org/string.prototype.matchall/-/string.prototype.matchall-4.0.8.tgz", - "integrity": "sha512-6zOCOcJ+RJAQshcTvXPHoxoQGONa3e/Lqx90wUA+wEzX78sg5Bo+1tQo4N0pohS0erG9qtCqJDjNCQBjeWVxyg==", "dev": true, - "requires": { + "license": "MIT", + "dependencies": { "call-bind": "^1.0.2", "define-properties": "^1.1.4", "es-abstract": "^1.20.4", @@ -8927,268 +5782,420 @@ "internal-slot": "^1.0.3", "regexp.prototype.flags": "^1.4.3", "side-channel": "^1.0.4" + }, + "funding": { + "url": "https://github.com/sponsors/ljharb" } }, - "string.prototype.trim": { + "node_modules/string.prototype.trim": { "version": "1.2.7", - "resolved": "https://registry.npmjs.org/string.prototype.trim/-/string.prototype.trim-1.2.7.tgz", - "integrity": "sha512-p6TmeT1T3411M8Cgg9wBTMRtY2q9+PNy9EV1i2lIXUN/btt763oIfxwN3RR8VU6wHX8j/1CFy0L+YuThm6bgOg==", "dev": true, - "requires": { + "license": "MIT", + "dependencies": { "call-bind": "^1.0.2", "define-properties": "^1.1.4", "es-abstract": "^1.20.4" + }, + "engines": { + "node": ">= 0.4" + }, + "funding": { + "url": "https://github.com/sponsors/ljharb" } }, - "string.prototype.trimend": { + "node_modules/string.prototype.trimend": { "version": "1.0.6", - "resolved": "https://registry.npmjs.org/string.prototype.trimend/-/string.prototype.trimend-1.0.6.tgz", - "integrity": "sha512-JySq+4mrPf9EsDBEDYMOb/lM7XQLulwg5R/m1r0PXEFqrV0qHvl58sdTilSXtKOflCsK2E8jxf+GKC0T07RWwQ==", "dev": true, - "requires": { + "license": "MIT", + "dependencies": { "call-bind": "^1.0.2", "define-properties": "^1.1.4", "es-abstract": "^1.20.4" + }, + "funding": { + "url": "https://github.com/sponsors/ljharb" } }, - "string.prototype.trimstart": { + "node_modules/string.prototype.trimstart": { "version": "1.0.6", - "resolved": "https://registry.npmjs.org/string.prototype.trimstart/-/string.prototype.trimstart-1.0.6.tgz", - "integrity": "sha512-omqjMDaY92pbn5HOX7f9IccLA+U1tA9GvtU4JrodiXFfYB7jPzzHpRzpglLAjtUV6bB557zwClJezTqnAiYnQA==", "dev": true, - "requires": { + "license": "MIT", + "dependencies": { "call-bind": "^1.0.2", "define-properties": "^1.1.4", "es-abstract": "^1.20.4" + }, + "funding": { + "url": "https://github.com/sponsors/ljharb" } }, - "strip-ansi": { + "node_modules/strip-ansi": { "version": "6.0.1", - "resolved": "https://registry.npmjs.org/strip-ansi/-/strip-ansi-6.0.1.tgz", - "integrity": "sha512-Y38VPSHcqkFrCpFnQ9vuSXmquuv5oXOKpGeT6aGrr3o3Gc9AlVa6JBfUSOCnbxGGZF+/0ooI7KrPuUSztUdU5A==", "dev": true, - "requires": { + "license": "MIT", + "dependencies": { "ansi-regex": "^5.0.1" + }, + "engines": { + "node": ">=8" } }, - "strip-json-comments": { + "node_modules/strip-json-comments": { "version": "3.1.1", - "resolved": "https://registry.npmjs.org/strip-json-comments/-/strip-json-comments-3.1.1.tgz", - "integrity": "sha512-6fPc+R4ihwqP6N/aIv2f1gMH8lOVtWQHoqC4yK6oSDVVocumAsfCqjkXnqiYMhmMwS/mEHLp7Vehlt3ql6lEig==", - "dev": true + "dev": true, + "license": "MIT", + "engines": { + "node": ">=8" + }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" + } }, - "stylis": { + "node_modules/stylis": { "version": "4.2.0", - "resolved": "https://registry.npmjs.org/stylis/-/stylis-4.2.0.tgz", - "integrity": "sha512-Orov6g6BB1sDfYgzWfTHDOxamtX1bE/zo104Dh9e6fqJ3PooipYyfJ0pUmrZO2wAvO8YbEyeFrkV91XTsGMSrw==" + "license": "MIT" }, - "supports-color": { + "node_modules/supports-color": { "version": "5.5.0", - "resolved": "https://registry.npmjs.org/supports-color/-/supports-color-5.5.0.tgz", - "integrity": "sha512-QjVjwdXIt408MIiAqCX4oUKsgU2EqAGzs2Ppkm4aQYbjm+ZEWEcW4SfFNTr4uMNZma0ey4f5lgLrkB0aX0QMow==", - "requires": { + "license": "MIT", + "dependencies": { "has-flag": "^3.0.0" + }, + "engines": { + "node": ">=4" } }, - "supports-preserve-symlinks-flag": { + "node_modules/supports-preserve-symlinks-flag": { "version": "1.0.0", - "resolved": "https://registry.npmjs.org/supports-preserve-symlinks-flag/-/supports-preserve-symlinks-flag-1.0.0.tgz", - "integrity": "sha512-ot0WnXS9fgdkgIcePe6RHNk1WA8+muPa6cSjeR3V8K27q9BB1rTE3R1p7Hv0z1ZyAc8s6Vvv8DIyWf681MAt0w==" + "license": "MIT", + "engines": { + "node": ">= 0.4" + }, + "funding": { + "url": "https://github.com/sponsors/ljharb" + } }, - "text-table": { + "node_modules/text-table": { "version": "0.2.0", - "resolved": "https://registry.npmjs.org/text-table/-/text-table-0.2.0.tgz", - "integrity": "sha512-N+8UisAXDGk8PFXP4HAzVR9nbfmVJ3zYLAWiTIoqC5v5isinhr+r5uaO8+7r3BMfuNIufIsA7RdpVgacC2cSpw==", - "dev": true + "dev": true, + "license": "MIT" }, - "tiny-invariant": { + "node_modules/tiny-invariant": { "version": "1.3.1", - "resolved": "https://registry.npmjs.org/tiny-invariant/-/tiny-invariant-1.3.1.tgz", - "integrity": "sha512-AD5ih2NlSssTCwsMznbvwMZpJ1cbhkGd2uueNxzv2jDlEeZdU04JQfRnggJQ8DrcVBGjAsCKwFBbDlVNtEMlzw==" + "license": "MIT" }, - "to-fast-properties": { + "node_modules/to-fast-properties": { "version": "2.0.0", - "resolved": "https://registry.npmjs.org/to-fast-properties/-/to-fast-properties-2.0.0.tgz", - "integrity": "sha512-/OaKK0xYrs3DmxRYqL/yDc+FxFUVYhDlXMhRmv3z915w2HF1tnN1omB354j8VUGO/hbRzyD6Y3sA7v7GS/ceog==" + "license": "MIT", + "engines": { + "node": ">=4" + } }, - "toggle-selection": { + "node_modules/toggle-selection": { "version": "1.0.6", - "resolved": "https://registry.npmjs.org/toggle-selection/-/toggle-selection-1.0.6.tgz", - "integrity": "sha512-BiZS+C1OS8g/q2RRbJmy59xpyghNBqrr6k5L/uKBGRsTfxmu3ffiRnd8mlGPUVayg8pvfi5urfnu8TU7DVOkLQ==" + "license": "MIT" }, - "tslib": { + "node_modules/tslib": { "version": "2.6.0", - "resolved": "https://registry.npmjs.org/tslib/-/tslib-2.6.0.tgz", - "integrity": "sha512-7At1WUettjcSRHXCyYtTselblcHl9PJFFVKiCAy/bY97+BPZXSQ2wbq0P9s8tK2G7dFQfNnlJnPAiArVBVBsfA==" + "license": "0BSD" }, - "type-check": { + "node_modules/type-check": { "version": "0.4.0", - "resolved": "https://registry.npmjs.org/type-check/-/type-check-0.4.0.tgz", - "integrity": "sha512-XleUoc9uwGXqjWwXaUTZAmzMcFZ5858QA2vvx1Ur5xIcixXIP+8LnFDgRplU30us6teqdlskFfu+ae4K79Ooew==", "dev": true, - "requires": { + "license": "MIT", + "dependencies": { "prelude-ls": "^1.2.1" + }, + "engines": { + "node": ">= 0.8.0" } }, - "type-fest": { + "node_modules/type-fest": { "version": "0.20.2", - "resolved": "https://registry.npmjs.org/type-fest/-/type-fest-0.20.2.tgz", - "integrity": "sha512-Ne+eE4r0/iWnpAxD852z3A+N0Bt5RN//NjJwRd2VFHEmrywxf5vsZlh4R6lixl6B+wz/8d+maTSAkN1FIkI3LQ==", - "dev": true + "dev": true, + "license": "(MIT OR CC0-1.0)", + "engines": { + "node": ">=10" + }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" + } }, - "typed-array-byte-offset": { + "node_modules/typed-array-byte-offset": { "version": "1.0.0", - "resolved": "https://registry.npmjs.org/typed-array-byte-offset/-/typed-array-byte-offset-1.0.0.tgz", - "integrity": "sha512-RD97prjEt9EL8YgAgpOkf3O4IF9lhJFr9g0htQkm0rchFp/Vx7LW5Q8fSXXub7BXAODyUQohRMyOc3faCPd0hg==", "dev": true, - "requires": { + "license": "MIT", + "dependencies": { "available-typed-arrays": "^1.0.5", "call-bind": "^1.0.2", "for-each": "^0.3.3", "has-proto": "^1.0.1", "is-typed-array": "^1.1.10" + }, + "engines": { + "node": ">= 0.4" + }, + "funding": { + "url": "https://github.com/sponsors/ljharb" } }, - "typed-array-length": { + "node_modules/typed-array-length": { "version": "1.0.4", - "resolved": "https://registry.npmjs.org/typed-array-length/-/typed-array-length-1.0.4.tgz", - "integrity": "sha512-KjZypGq+I/H7HI5HlOoGHkWUUGq+Q0TPhQurLbyrVrvnKTBgzLhIJ7j6J/XTQOi0d1RjyZ0wdas8bKs2p0x3Ng==", "dev": true, - "requires": { + "license": "MIT", + "dependencies": { "call-bind": "^1.0.2", "for-each": "^0.3.3", "is-typed-array": "^1.1.9" + }, + "funding": { + "url": "https://github.com/sponsors/ljharb" } }, - "unbox-primitive": { + "node_modules/unbox-primitive": { "version": "1.0.2", - "resolved": "https://registry.npmjs.org/unbox-primitive/-/unbox-primitive-1.0.2.tgz", - "integrity": "sha512-61pPlCD9h51VoreyJ0BReideM3MDKMKnh6+V9L08331ipq6Q8OFXZYiqP6n/tbHx4s5I9uRhcye6BrbkizkBDw==", "dev": true, - "requires": { + "license": "MIT", + "dependencies": { "call-bind": "^1.0.2", "has-bigints": "^1.0.2", "has-symbols": "^1.0.3", "which-boxed-primitive": "^1.0.2" + }, + "funding": { + "url": "https://github.com/sponsors/ljharb" } }, - "update-browserslist-db": { + "node_modules/update-browserslist-db": { "version": "1.0.11", - "resolved": "https://registry.npmjs.org/update-browserslist-db/-/update-browserslist-db-1.0.11.tgz", - "integrity": "sha512-dCwEFf0/oT85M1fHBg4F0jtLwJrutGoHSQXCh7u4o2t1drG+c0a9Flnqww6XUKSfQMPpJBRjU8d4RXB09qtvaA==", "dev": true, - "requires": { + "funding": [ + { + "type": "opencollective", + "url": "https://opencollective.com/browserslist" + }, + { + "type": "tidelift", + "url": "https://tidelift.com/funding/github/npm/browserslist" + }, + { + "type": "github", + "url": "https://github.com/sponsors/ai" + } + ], + "license": "MIT", + "dependencies": { "escalade": "^3.1.1", "picocolors": "^1.0.0" + }, + "bin": { + "update-browserslist-db": "cli.js" + }, + "peerDependencies": { + "browserslist": ">= 4.21.0" } }, - "uri-js": { + "node_modules/uri-js": { "version": "4.4.1", - "resolved": "https://registry.npmjs.org/uri-js/-/uri-js-4.4.1.tgz", - "integrity": "sha512-7rKUyy33Q1yc98pQ1DAmLtwX109F7TIfWlW1Ydo8Wl1ii1SeHieeh0HHfPeL2fMXK6z0s8ecKs9frCuLJvndBg==", "dev": true, - "requires": { + "license": "BSD-2-Clause", + "dependencies": { "punycode": "^2.1.0" } }, - "use-callback-ref": { - "version": "1.3.0", - "resolved": "https://registry.npmjs.org/use-callback-ref/-/use-callback-ref-1.3.0.tgz", - "integrity": "sha512-3FT9PRuRdbB9HfXhEq35u4oZkvpJ5kuYbpqhCfmiZyReuRgpnhDlbr2ZEnnuS0RrJAPn6l23xjFg9kpDM+Ms7w==", - "requires": { + "node_modules/use-callback-ref": { + "version": "1.3.2", + "license": "MIT", + "dependencies": { "tslib": "^2.0.0" + }, + "engines": { + "node": ">=10" + }, + "peerDependencies": { + "@types/react": "^16.8.0 || ^17.0.0 || ^18.0.0", + "react": "^16.8.0 || ^17.0.0 || ^18.0.0" + }, + "peerDependenciesMeta": { + "@types/react": { + "optional": true + } } }, - "use-sidecar": { + "node_modules/use-sidecar": { "version": "1.1.2", - "resolved": "https://registry.npmjs.org/use-sidecar/-/use-sidecar-1.1.2.tgz", - "integrity": "sha512-epTbsLuzZ7lPClpz2TyryBfztm7m+28DlEv2ZCQ3MDr5ssiwyOwGH/e5F9CkfWjJ1t4clvI58yF822/GUkjjhw==", - "requires": { + "license": "MIT", + "dependencies": { "detect-node-es": "^1.1.0", "tslib": "^2.0.0" + }, + "engines": { + "node": ">=10" + }, + "peerDependencies": { + "@types/react": "^16.9.0 || ^17.0.0 || ^18.0.0", + "react": "^16.8.0 || ^17.0.0 || ^18.0.0" + }, + "peerDependenciesMeta": { + "@types/react": { + "optional": true + } } }, - "vite": { - "version": "4.4.4", - "resolved": "https://registry.npmjs.org/vite/-/vite-4.4.4.tgz", - "integrity": "sha512-4mvsTxjkveWrKDJI70QmelfVqTm+ihFAb6+xf4sjEU2TmUCTlVX87tmg/QooPEMQb/lM9qGHT99ebqPziEd3wg==", + "node_modules/vite": { + "version": "4.5.3", "dev": true, - "requires": { + "license": "MIT", + "dependencies": { "esbuild": "^0.18.10", - "fsevents": "~2.3.2", - "postcss": "^8.4.25", - "rollup": "^3.25.2" + "postcss": "^8.4.27", + "rollup": "^3.27.1" + }, + "bin": { + "vite": "bin/vite.js" + }, + "engines": { + "node": "^14.18.0 || >=16.0.0" + }, + "funding": { + "url": "https://github.com/vitejs/vite?sponsor=1" + }, + "optionalDependencies": { + "fsevents": "~2.3.2" + }, + "peerDependencies": { + "@types/node": ">= 14", + "less": "*", + "lightningcss": "^1.21.0", + "sass": "*", + "stylus": "*", + "sugarss": "*", + "terser": "^5.4.0" + }, + "peerDependenciesMeta": { + "@types/node": { + "optional": true + }, + "less": { + "optional": true + }, + "lightningcss": { + "optional": true + }, + "sass": { + "optional": true + }, + "stylus": { + "optional": true + }, + "sugarss": { + "optional": true + }, + "terser": { + "optional": true + } } }, - "which": { + "node_modules/which": { "version": "2.0.2", - "resolved": "https://registry.npmjs.org/which/-/which-2.0.2.tgz", - "integrity": "sha512-BLI3Tl1TW3Pvl70l3yq3Y64i+awpwXqsGBYWkkqMtnbXgrMD+yj7rhW0kuEDxzJaYXGjEW5ogapKNMEKNMjibA==", "dev": true, - "requires": { + "license": "ISC", + "dependencies": { "isexe": "^2.0.0" + }, + "bin": { + "node-which": "bin/node-which" + }, + "engines": { + "node": ">= 8" } }, - "which-boxed-primitive": { + "node_modules/which-boxed-primitive": { "version": "1.0.2", - "resolved": "https://registry.npmjs.org/which-boxed-primitive/-/which-boxed-primitive-1.0.2.tgz", - "integrity": "sha512-bwZdv0AKLpplFY2KZRX6TvyuN7ojjr7lwkg6ml0roIy9YeuSr7JS372qlNW18UQYzgYK9ziGcerWqZOmEn9VNg==", "dev": true, - "requires": { + "license": "MIT", + "dependencies": { "is-bigint": "^1.0.1", "is-boolean-object": "^1.1.0", "is-number-object": "^1.0.4", "is-string": "^1.0.5", "is-symbol": "^1.0.3" + }, + "funding": { + "url": "https://github.com/sponsors/ljharb" } }, - "which-typed-array": { + "node_modules/which-typed-array": { "version": "1.1.10", - "resolved": "https://registry.npmjs.org/which-typed-array/-/which-typed-array-1.1.10.tgz", - "integrity": "sha512-uxoA5vLUfRPdjCuJ1h5LlYdmTLbYfums398v3WLkM+i/Wltl2/XyZpQWKbN++ck5L64SR/grOHqtXCUKmlZPNA==", "dev": true, - "requires": { + "license": "MIT", + "dependencies": { "available-typed-arrays": "^1.0.5", "call-bind": "^1.0.2", "for-each": "^0.3.3", "gopd": "^1.0.1", "has-tostringtag": "^1.0.0", "is-typed-array": "^1.1.10" + }, + "engines": { + "node": ">= 0.4" + }, + "funding": { + "url": "https://github.com/sponsors/ljharb" } }, - "wrappy": { + "node_modules/wrappy": { "version": "1.0.2", - "resolved": "https://registry.npmjs.org/wrappy/-/wrappy-1.0.2.tgz", - "integrity": "sha512-l4Sp/DRseor9wL6EvV2+TuQn63dMkPjZ/sp9XkghTEbV9KlPS1xUsZ3u7/IQO4wxtcFB4bgpQPRcR3QCvezPcQ==", - "dev": true + "dev": true, + "license": "ISC" }, - "ws": { - "version": "8.11.0", - "resolved": "https://registry.npmjs.org/ws/-/ws-8.11.0.tgz", - "integrity": "sha512-HPG3wQd9sNQoT9xHyNCXoDUa+Xw/VevmY9FoHyQ+g+rrMn4j6FB4np7Z0OhdTgjx6MgQLK7jwSy1YecU1+4Asg==", - "requires": {} + "node_modules/ws": { + "version": "8.17.1", + "license": "MIT", + "engines": { + "node": ">=10.0.0" + }, + "peerDependencies": { + "bufferutil": "^4.0.1", + "utf-8-validate": ">=5.0.2" + }, + "peerDependenciesMeta": { + "bufferutil": { + "optional": true + }, + "utf-8-validate": { + "optional": true + } + } }, - "xmlhttprequest-ssl": { + "node_modules/xmlhttprequest-ssl": { "version": "2.0.0", - "resolved": "https://registry.npmjs.org/xmlhttprequest-ssl/-/xmlhttprequest-ssl-2.0.0.tgz", - "integrity": "sha512-QKxVRxiRACQcVuQEYFsI1hhkrMlrXHPegbbd1yn9UHOmRxY+si12nQYzri3vbzt8VdTTRviqcKxcyllFas5z2A==" + "engines": { + "node": ">=0.4.0" + } }, - "yallist": { + "node_modules/yallist": { "version": "3.1.1", - "resolved": "https://registry.npmjs.org/yallist/-/yallist-3.1.1.tgz", - "integrity": "sha512-a4UGQaWPH59mOXUYnAG2ewncQS4i4F43Tv3JoAM+s2VDAmS9NsK8GpDMLrCHPksFT7h3K6TOoUNn2pb7RoXx4g==", - "dev": true + "dev": true, + "license": "ISC" }, - "yaml": { + "node_modules/yaml": { "version": "1.10.2", - "resolved": "https://registry.npmjs.org/yaml/-/yaml-1.10.2.tgz", - "integrity": "sha512-r3vXyErRCYJ7wg28yvBY5VSoAF8ZvlcW9/BwUzEtUsjvX/DKs24dIkuwjtuprwJJHsbyUbLApepYTR1BN4uHrg==" + "license": "ISC", + "engines": { + "node": ">= 6" + } }, - "yocto-queue": { + "node_modules/yocto-queue": { "version": "0.1.0", - "resolved": "https://registry.npmjs.org/yocto-queue/-/yocto-queue-0.1.0.tgz", - "integrity": "sha512-rVksvsnNCdJ/ohGc6xgPwyN8eheCxsiLM8mxuE/t/mOVqJewPuO1miLpTHQiRgTKCLexL4MeAFVagts7HmNZ2Q==", - "dev": true + "dev": true, + "license": "MIT", + "engines": { + "node": ">=10" + }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" + } } } } diff --git a/frontend/package.json b/frontend/package.json index fabafff..68ae817 100644 --- a/frontend/package.json +++ b/frontend/package.json @@ -11,12 +11,12 @@ }, "dependencies": { "@chakra-ui/icons": "^2.1.0", - "@chakra-ui/react": "^2.7.1", - "@emotion/react": "^11.11.1", - "@emotion/styled": "^11.11.0", + "@chakra-ui/react": "^2.8.2", + "@emotion/react": "^11.13.0", + "@emotion/styled": "^11.13.0", "backend": "file:..", "date-fns": "^2.30.0", - "framer-motion": "^10.12.21", + "framer-motion": "^10.18.0", "react": "^18.2.0", "react-dom": "^18.2.0", "react-icons": "^4.10.1", diff --git a/frontend/public/dark-logo.svg b/frontend/public/dark-logo.svg index 31f0a1c..30c1d8f 100644 --- a/frontend/public/dark-logo.svg +++ b/frontend/public/dark-logo.svg @@ -1 +1,2 @@ - \ No newline at end of file + + \ No newline at end of file diff --git a/frontend/public/light-logo.svg b/frontend/public/light-logo.svg index ef1f465..3ef63e0 100644 --- a/frontend/public/light-logo.svg +++ b/frontend/public/light-logo.svg @@ -1 +1,2 @@ - \ No newline at end of file + + \ No newline at end of file diff --git a/frontend/public/pear-svgrepo-com.svg b/frontend/public/pear-svgrepo-com.svg new file mode 100644 index 0000000..f804746 --- /dev/null +++ b/frontend/public/pear-svgrepo-com.svg @@ -0,0 +1,3 @@ + + + \ No newline at end of file diff --git a/frontend/public/pear.png b/frontend/public/pear.png new file mode 100644 index 0000000..eae327c Binary files /dev/null and b/frontend/public/pear.png differ diff --git a/frontend/src/App.jsx b/frontend/src/App.jsx index 6785836..eec75c0 100644 --- a/frontend/src/App.jsx +++ b/frontend/src/App.jsx @@ -1,4 +1,177 @@ -import { Box, Container } from "@chakra-ui/react"; +// // version 1 +// import { Box, Container } from "@chakra-ui/react"; +// import { Navigate, Route, Routes, useLocation } from "react-router-dom"; +// import UserPage from "./pages/UserPage"; +// import PostPage from "./pages/PostPage"; +// import Header from "./components/Header"; +// import HomePage from "./pages/HomePage"; +// import AuthPage from "./pages/AuthPage"; +// import { useRecoilValue } from "recoil"; +// import userAtom from "./atoms/userAtom"; +// import UpdateProfilePage from "./pages/UpdateProfilePage"; +// import CreatePost from "./components/CreatePost"; +// import ChatPage from "./pages/ChatPage"; +// import { SettingsPage } from "./pages/SettingsPage"; +// function App() { +// const user = useRecoilValue(userAtom); +// const { pathname } = useLocation(); +// return ( +// +// +//
+// +// : } /> +// : } /> +// : } /> + +// +// +// +// +// ) : ( +// +// ) +// } +// /> +// } /> +// : } /> +// : } /> +// +// +// +// ); +// } + +// export default App; + + + + +// // version 2 working +// import { Box, Container } from "@chakra-ui/react"; +// import { Navigate, Route, Routes, useLocation } from "react-router-dom"; +// import UserPage from "./pages/UserPage"; +// import PostPage from "./pages/PostPage"; +// import Header from "./components/Header"; +// import HomePage from "./pages/HomePage"; +// import AuthPage from "./pages/AuthPage"; +// import { useRecoilValue } from "recoil"; +// import userAtom from "./atoms/userAtom"; +// import UpdateProfilePage from "./pages/UpdateProfilePage"; +// import CreatePost from "./components/CreatePost"; +// import ChatPage from "./pages/ChatPage"; +// import { SettingsPage } from "./pages/SettingsPage"; +// import { I18nextProvider } from 'react-i18next'; +// import i18n from './i18n'; // Correct path to your i18n.js file + +// function App() { +// const user = useRecoilValue(userAtom); +// const { pathname } = useLocation(); + +// // Retrieve language from localStorage or default to English +// const savedLanguage = localStorage.getItem('language') || 'en'; +// i18n.changeLanguage(savedLanguage); + +// return ( +// +// +// +//
+// +// : } /> +// : } /> +// : } /> +// +// +// +// +// ) : ( +// +// )} /> +// } /> +// : } /> +// : } /> +// +// +// +// +// ); +// } + +// export default App; + + +// this is the app.jsx trying out the ne background component +// import { Box, Container } from "@chakra-ui/react"; +// import { Navigate, Route, Routes, useLocation } from "react-router-dom"; +// import UserPage from "./pages/UserPage"; +// import PostPage from "./pages/PostPage"; +// import Header from "./components/Header"; +// import HomePage from "./pages/HomePage"; +// import AuthPage from "./pages/AuthPage"; +// import { useRecoilValue } from "recoil"; +// import userAtom from "./atoms/userAtom"; +// import UpdateProfilePage from "./pages/UpdateProfilePage"; +// import CreatePost from "./components/CreatePost"; +// import ChatPage from "./pages/ChatPage"; +// import { SettingsPage } from "./pages/SettingsPage"; +// import VerifyEmail from "./pages/VerifyEmail"; +// import { I18nextProvider } from 'react-i18next'; +// import i18n from './i18n'; +// import InactivityBackground from './components/InactivityBackground'; +// import ReviewModal from './components/ReviewModal'; + +// function App() { +// const user = useRecoilValue(userAtom); +// const { pathname } = useLocation(); + +// // Retrieve language from localStorage or default to English +// const savedLanguage = localStorage.getItem('language') || 'en'; +// i18n.changeLanguage(savedLanguage); + +// return ( +// +// +// +//
+// +// : } /> +// : } /> +// : } /> +// +// +// +// +// ) : ( +// +// )} +// /> +// } /> +// : } /> +// : } /> +// {/* New route for email verification - doesn't require auth */} +// } /> +// +// +// {/* Add ReviewModal outside the Container to ensure it can appear over any content */} +// {user && user.role === "admin" && } +// +// +// ); +// } + +// export default App; + +// post review +import { Box } from "@chakra-ui/react"; import { Navigate, Route, Routes, useLocation } from "react-router-dom"; import UserPage from "./pages/UserPage"; import PostPage from "./pages/PostPage"; @@ -11,38 +184,42 @@ import UpdateProfilePage from "./pages/UpdateProfilePage"; import CreatePost from "./components/CreatePost"; import ChatPage from "./pages/ChatPage"; import { SettingsPage } from "./pages/SettingsPage"; +import VerifyEmail from "./pages/VerifyEmail"; +import TVPage from "./pages/TVPage"; +import { I18nextProvider } from 'react-i18next'; +import i18n from './i18n'; +import ReviewModal from './components/ReviewModal'; + function App() { - const user = useRecoilValue(userAtom); - const { pathname } = useLocation(); - return ( - - -
- - : } /> - : } /> - : } /> - - - - - - ) : ( - - ) - } - /> - } /> - : } /> - : } /> - - - - ); + const user = useRecoilValue(userAtom); + const { pathname } = useLocation(); + const savedLanguage = localStorage.getItem('language') || 'en'; + i18n.changeLanguage(savedLanguage); + + const isPotentialReviewer = user && (user.role === "admin" || user.role === "teacher" || user.role === "student"); + const isTVPage = pathname === '/tv'; + + return ( + + + {!isTVPage &&
} + + + : } /> + : } /> + : } /> + } /> + } /> + : } /> + : } /> + } /> + } /> + + + {!isTVPage && isPotentialReviewer && } + + + ); } -export default App; +export default App; \ No newline at end of file diff --git a/frontend/src/components/Actions.jsx b/frontend/src/components/Actions.jsx index afcf240..a6f3a4e 100644 --- a/frontend/src/components/Actions.jsx +++ b/frontend/src/components/Actions.jsx @@ -1,241 +1,223 @@ + +// this is the version with transaltions (working) import { - Box, - Button, - Flex, - FormControl, - Input, - Modal, - ModalBody, - ModalCloseButton, - ModalContent, - ModalFooter, - ModalHeader, - ModalOverlay, - Text, - useDisclosure, + Box, + Button, + Flex, + FormControl, + Input, + Modal, + ModalBody, + ModalCloseButton, + ModalContent, + ModalFooter, + ModalHeader, + ModalOverlay, + Text, + useDisclosure, } from "@chakra-ui/react"; -import { useState } from "react"; +import { useState, useCallback, useEffect } from "react"; import { useRecoilState, useRecoilValue } from "recoil"; import userAtom from "../atoms/userAtom"; import useShowToast from "../hooks/useShowToast"; import postsAtom from "../atoms/postsAtom"; +import { debounce } from "lodash"; +import { useTranslation } from 'react-i18next'; // Import useTranslation const Actions = ({ post }) => { - const user = useRecoilValue(userAtom); - const [liked, setLiked] = useState(post.likes.includes(user?._id)); - const [posts, setPosts] = useRecoilState(postsAtom); - const [isLiking, setIsLiking] = useState(false); - const [isReplying, setIsReplying] = useState(false); - const [reply, setReply] = useState(""); - - const showToast = useShowToast(); - const { isOpen, onOpen, onClose } = useDisclosure(); - - const handleLikeAndUnlike = async () => { - if (!user) return showToast("Error", "You must be logged in to like a post", "error"); - if (isLiking) return; - setIsLiking(true); - try { - const res = await fetch("/api/posts/like/" + post._id, { - method: "PUT", - headers: { - "Content-Type": "application/json", - }, - }); - const data = await res.json(); - if (data.error) return showToast("Error", data.error, "error"); - - if (!liked) { - // add the id of the current user to post.likes array - const updatedPosts = posts.map((p) => { - if (p._id === post._id) { - return { ...p, likes: [...p.likes, user._id] }; - } - return p; - }); - setPosts(updatedPosts); - } else { - // remove the id of the current user from post.likes array - const updatedPosts = posts.map((p) => { - if (p._id === post._id) { - return { ...p, likes: p.likes.filter((id) => id !== user._id) }; - } - return p; - }); - setPosts(updatedPosts); - } - - setLiked(!liked); - } catch (error) { - showToast("Error", error.message, "error"); - } finally { - setIsLiking(false); - } - }; - - const handleReply = async () => { - if (!user) return showToast("Error", "You must be logged in to reply to a post", "error"); - if (isReplying) return; - setIsReplying(true); - try { - const res = await fetch("/api/posts/reply/" + post._id, { - method: "PUT", - headers: { - "Content-Type": "application/json", - }, - body: JSON.stringify({ text: reply }), - }); - const data = await res.json(); - if (data.error) return showToast("Error", data.error, "error"); - - const updatedPosts = posts.map((p) => { - if (p._id === post._id) { - return { ...p, replies: [...p.replies, data] }; - } - return p; - }); - setPosts(updatedPosts); - showToast("Success", "Reply posted successfully", "success"); - onClose(); - setReply(""); - } catch (error) { - showToast("Error", error.message, "error"); - } finally { - setIsReplying(false); - } - }; - - return ( - - e.preventDefault()}> - - - - - - Comment - - - - - - - - - - {post.replies.length} replies - - - - {post.likes.length} likes - - - - - - - - - - - setReply(e.target.value)} - /> - - - - - - - - - - ); + const user = useRecoilValue(userAtom); + const [liked, setLiked] = useState(post.likes.includes(user?._id)); + const [posts, setPosts] = useRecoilState(postsAtom); + const [isLiking, setIsLiking] = useState(false); + const [isReplying, setIsReplying] = useState(false); + const [reply, setReply] = useState(""); + const showToast = useShowToast(); + const { isOpen, onOpen, onClose } = useDisclosure(); + + const { t, i18n } = useTranslation(); // Initialize the translation hook + const [language, setLanguage] = useState(i18n.language); // Add a state for language + + useEffect(() => { + const handleLanguageChange = (lng) => { + setLanguage(lng); + }; + + i18n.on('languageChanged', handleLanguageChange); // Listen for language change + + return () => { + i18n.off('languageChanged', handleLanguageChange); // Cleanup on component unmount + }; + }, [i18n]); + + const handleLikeAndUnlike = useCallback( + debounce(async () => { + if (!user) return showToast(t("Error"), t("You must be logged in to like a post"), "error"); + if (isLiking) return; + + const originalLiked = liked; + const originalPosts = [...posts]; + + // Optimistically update the UI + setLiked(!liked); + setPosts(posts.map(p => p._id === post._id ? { + ...p, + likes: !liked ? [...p.likes, user._id] : p.likes.filter(id => id !== user._id), + } : p)); + + setIsLiking(true); + try { + const res = await fetch(`/api/posts/like/${post._id}`, { + method: "PUT", + headers: { "Content-Type": "application/json" }, + }); + const data = await res.json(); + + if (data.error) { + throw new Error(data.error); + } + } catch (error) { + // Revert the state if API call fails + setLiked(originalLiked); + setPosts(originalPosts); + showToast(t("Error"), error.message, "error"); + } finally { + setIsLiking(false); + } + }, 300), + [liked, isLiking, post._id, posts, setPosts, showToast, user?._id, t] + ); + + const handleReply = async () => { + if (!user) return showToast(t("Error"), t("You must be logged in to reply to a post"), "error"); + if (isReplying) return; + + setIsReplying(true); + try { + const res = await fetch(`/api/posts/reply/${post._id}`, { + method: "PUT", + headers: { "Content-Type": "application/json" }, + body: JSON.stringify({ text: reply }), + }); + const data = await res.json(); + + if (data.error) { + showToast(t("Error"), data.error, "error"); + return; + } + + setPosts(posts.map(p => p._id === post._id ? { ...p, replies: [...p.replies, data] } : p)); + showToast(t("Success"), t("Reply posted successfully"), "success"); + onClose(); + setReply(""); + } catch (error) { + showToast(t("Error"), error.message, "error"); + } finally { + setIsReplying(false); + } + }; + + return ( + + e.preventDefault()}> + + + + + + {t("Comment")} + + + + + {/* Removed ShareSVG */} + + + + + {post.replies.length} {t("replies")} + + + + {post.likes.length} {t("likes")} + + + + + + + {t("Add Reply")} + + + + setReply(e.target.value)} + /> + + + + + + + + + + ); }; export default Actions; const RepostSVG = () => { - return ( - - Repost - - - ); + const { t } = useTranslation(); // Initialize the translation hook + + return ( + + {t("Repost")} {/* Add translation for the title */} + + + ); }; -const ShareSVG = () => { - return ( - - Share - - - - ); -}; + +// this is repost function diff --git a/frontend/src/components/AdminDropdownModal.jsx b/frontend/src/components/AdminDropdownModal.jsx new file mode 100644 index 0000000..e69de29 diff --git a/frontend/src/components/Comment.jsx b/frontend/src/components/Comment.jsx index 3673d57..bc4bfec 100644 --- a/frontend/src/components/Comment.jsx +++ b/frontend/src/components/Comment.jsx @@ -1,22 +1,91 @@ -import { Avatar, Divider, Flex, Text } from "@chakra-ui/react"; - -const Comment = ({ reply, lastReply }) => { - return ( - <> - - - - - - {reply.username} - - - {reply.text} - - - {!lastReply ? : null} - - ); +// import { Avatar, Divider, Flex, Text } from "@chakra-ui/react"; + +// const Comment = ({ reply, lastReply }) => { +// return ( +// <> +// +// +// +// +// +// {reply.username} +// +// +// {reply.text} +// +// +// {!lastReply ? : null} +// +// ); +// }; + +// export default Comment; +import { Avatar, Divider, Flex, Text, IconButton, Tooltip } from "@chakra-ui/react"; +import { DeleteIcon } from "@chakra-ui/icons"; +import { useRecoilValue } from "recoil"; +import userAtom from "../atoms/userAtom"; +import useShowToast from "../hooks/useShowToast"; + +const Comment = ({ reply, lastReply, onDelete }) => { + const currentUser = useRecoilValue(userAtom); + const showToast = useShowToast(); + + // If the current user is frozen, do not display the comment + if (currentUser?.isFrozen) return null; + + const handleDelete = async () => { + try { + const res = await fetch(`/api/posts/comment/${reply._id}`, { + method: "DELETE", + headers: { + Authorization: `Bearer ${currentUser.token}`, + }, + }); + + const data = await res.json(); + + if (data.error) { + showToast("Error", data.error, "error"); + return; + } + + onDelete(reply._id); + showToast("Success", "Comment deleted successfully", "success"); + } catch (error) { + showToast("Error", error.message, "error"); + } + }; + + const showDeleteButton = currentUser?.role === "admin" || currentUser?._id === reply.userId; + + return ( + <> + + + + + + {reply.username} + + {showDeleteButton && ( + + } + size="xs" + colorScheme="red" + variant="ghost" + onClick={handleDelete} + /> + + )} + + {reply.text} + + + {!lastReply && } + + ); }; export default Comment; diff --git a/frontend/src/components/CreatePost.jsx b/frontend/src/components/CreatePost.jsx index b0a62f3..bae41c6 100644 --- a/frontend/src/components/CreatePost.jsx +++ b/frontend/src/components/CreatePost.jsx @@ -1,153 +1,884 @@ -import { AddIcon } from "@chakra-ui/icons"; +// // original +// import { AddIcon } from "@chakra-ui/icons"; +// import { +// Button, +// CloseButton, +// Flex, +// FormControl, +// Image, +// Input, +// Modal, +// ModalBody, +// ModalCloseButton, +// ModalContent, +// ModalFooter, +// ModalHeader, +// ModalOverlay, +// Text, +// Textarea, +// Select, +// useColorModeValue, +// useDisclosure, +// } from "@chakra-ui/react"; +// import { useRef, useState } from "react"; +// import usePreviewImg from "../hooks/usePreviewImg"; +// import { BsFillImageFill } from "react-icons/bs"; +// import { useRecoilState, useRecoilValue } from "recoil"; +// import userAtom from "../atoms/userAtom"; +// import useShowToast from "../hooks/useShowToast"; +// import postsAtom from "../atoms/postsAtom"; +// import { useParams } from "react-router-dom"; +// import { useTranslation } from 'react-i18next'; + +// const MAX_CHAR = 500; + +// const CreatePost = () => { +// const { isOpen, onOpen, onClose } = useDisclosure(); +// const [postText, setPostText] = useState(""); +// const [targetAudience, setTargetAudience] = useState("all"); // Default to 'all' +// const { handleImageChange, imgUrl, setImgUrl } = usePreviewImg(); +// const imageRef = useRef(null); +// const [remainingChar, setRemainingChar] = useState(MAX_CHAR); +// const user = useRecoilValue(userAtom); +// const showToast = useShowToast(); +// const [loading, setLoading] = useState(false); +// const [posts, setPosts] = useRecoilState(postsAtom); +// const { username } = useParams(); +// const { t } = useTranslation(); + +// const handleTextChange = (e) => { +// const inputText = e.target.value; +// if (inputText.length > MAX_CHAR) { +// const truncatedText = inputText.slice(0, MAX_CHAR); +// setPostText(truncatedText); +// setRemainingChar(0); +// } else { +// setPostText(inputText); +// setRemainingChar(MAX_CHAR - inputText.length); +// } +// }; + +// const handleCreatePost = async () => { +// setLoading(true); +// try { +// // Create the payload for the post +// const payload = { +// postedBy: user._id, +// text: postText, +// img: imgUrl, +// }; + +// // Only include targetAudience for teachers, set it to null for students +// if (user.role === "teacher") { +// payload.targetAudience = targetAudience; +// } else { +// payload.targetAudience = null; // Set to null for students +// } + +// // Send the post request to the server +// const res = await fetch("/api/posts/create", { +// method: "POST", +// headers: { +// "Content-Type": "application/json", +// }, +// body: JSON.stringify(payload), +// }); + +// const data = await res.json(); +// if (data.error) { +// showToast(t("Error"), data.error, "error"); +// return; +// } +// showToast(t("Success"), t("Post created successfully"), "success"); + +// // Add the new post to the state if it should be visible to the user +// if ( +// data.targetAudience === "all" || +// data.targetAudience === user.yearGroup || +// user.role === "student" +// ) { +// if (username === user.username) { +// setPosts([data, ...posts]); +// } +// } + +// // Reset form states after posting +// onClose(); +// setPostText(""); +// setImgUrl(""); +// setTargetAudience(user.role === "teacher" ? "all" : ""); // Reset based on role + +// } catch (error) { +// showToast(t("Error"), error.message, "error"); +// } finally { +// setLoading(false); +// } +// }; + +// return ( +// <> +// + +// +// +// +// {t("Create Post")} +// +// +// +//