commit 0854d6baea75caf4ed411b6b94f1aeda6165434e Author: dina Date: Mon Jul 14 12:23:13 2025 +0700 Initial commit diff --git a/.gitignore b/.gitignore new file mode 100644 index 0000000..c9d575d --- /dev/null +++ b/.gitignore @@ -0,0 +1,38 @@ +# Learn more https://docs.github.com/en/get-started/getting-started-with-git/ignoring-files + +# dependencies +node_modules/ + +# Expo +.expo/ +dist/ +web-build/ +expo-env.d.ts + +# Native +*.orig.* +*.jks +*.p8 +*.p12 +*.key +*.mobileprovision + +# Metro +.metro-health-check* + +# debug +npm-debug.* +yarn-debug.* +yarn-error.* + +# macOS +.DS_Store +*.pem + +# local env files +.env*.local + +# typescript +*.tsbuildinfo + +app-example diff --git a/App.js b/App.js new file mode 100644 index 0000000..46f6a2f --- /dev/null +++ b/App.js @@ -0,0 +1,127 @@ +import "react-native-gesture-handler"; +import React, { useState } from "react"; +import { NavigationContainer } from "@react-navigation/native"; +import { createStackNavigator } from "@react-navigation/stack"; +import { GestureHandlerRootView } from "react-native-gesture-handler"; +import { createBottomTabNavigator } from "@react-navigation/bottom-tabs"; + +// Screens +import SplashScreen from "./screens/SplashScreen"; +import Onboarding from "./screens/Onboarding"; +import AksesAkun from "./screens/AksesAkun"; // Pastikan ini sudah diimport dengan benar +// import masuk from "./screens/masuk"; +// import Home from "./screens/AksesWarga/Home"; +import Home from "./screens/AksesWarga/Home"; +import EcoMapCoinExchangeScreen from "./screens/AksesWarga/EcoMapCoinExchangeScreen"; +import NotifikasiScreen from "./screens/AksesWarga/NotifikasiScreen"; +import ProfilScreen from "./screens/AksesWarga/ProfilScreen"; +import AksesWargaNavigator from "./Navigation/AksesWargaNavigator"; +import AksesAdminNavigator from "./Navigation/AksesAdminNavigator"; +import BottomTab from "./Navigation/BottomTab"; +import AdminScreen from "./screens/AksesAdmin/AdminScreen"; +import masuk from "./screens/masuk"; +import BottomNav from "./Navigation/BottomNav"; + +const Stack = createStackNavigator(); +const Tab = createBottomTabNavigator(); + +// --- Bottom Tab Navigator --- +function MyTabs() { + return ( + ({ + headerShown: false, + tabBarActiveTintColor: "#1B5E20", + tabBarInactiveTintColor: "#A5D6A7", + tabBarStyle: { + backgroundColor: "#2E7D32", + borderTopLeftRadius: 20, + borderTopRightRadius: 20, + height: 60, + paddingBottom: 5, + }, + tabBarLabelStyle: { + fontSize: 12, + fontWeight: "600", + marginBottom: 5, + }, + tabBarIcon: ({ focused, color, size }) => { + size = 24; + if (route.name === "Home") { + return ( + + ); + } else if (route.name === "EcoMapCoinExchangeScreen") { + return ; + } else if (route.name === "NotifikasiScreen") { + return ( + + ); + } else if (route.name === "ProfilScreen") { + return ( + + ); + } + }, + })} + > + + + + + + ); +} + +export default function App() { + // // State untuk menyimpan role yang dipilih + // const [selectedRole, setSelectedRole] = useState(null); + // // State login user + // const [isLoggedIn, setIsLoggedIn] = useState(false); + + return ( + + + + {/* Splash Screen */} + + + {/* Onboarding Screen */} + + + {/* */} + {/* */} + {/* */} + + + + + + ); +} diff --git a/HomeNavigator.js b/HomeNavigator.js new file mode 100644 index 0000000..35345fe --- /dev/null +++ b/HomeNavigator.js @@ -0,0 +1,47 @@ +import React from "react"; +import { createBottomTabNavigator } from "@react-navigation/bottom-tabs"; +import { NavigationContainer } from "@react-navigation/native"; +import HomeNavigator from "./HomeNavigator"; // Import HomeNavigator +import ProfilScreenNavigator from "./ProfilScreenNavigator"; // Import ProfileNavigator +import NotifikasiScreen from "./screens/AksesWarga/NotifikasiScreen"; +import EcoMapCoinExchangeScreen from "./screens/AksesWarga/EcoMapCoinExchangeScreen"; + +const Tab = createBottomTabNavigator(); + +function App() { + return ( + + + {/* Tab Home yang akan menggunakan HomeNavigator */} + + + {/* Tab Profile yang menggunakan ProfileNavigator */} + + + {/* Tab Notifikasi */} + + + {/* Tab EcoMap Coin Exchange */} + + + + ); +} + +export default App; diff --git a/Navigation/AksesAdminNavigator.js b/Navigation/AksesAdminNavigator.js new file mode 100644 index 0000000..e08ebbd --- /dev/null +++ b/Navigation/AksesAdminNavigator.js @@ -0,0 +1,145 @@ +import { createStackNavigator } from "@react-navigation/stack"; +import AdminScreen from "../screens/AksesAdmin/AdminScreen"; +import MasukAdmin from "../screens/MasukAdmin"; +import BottomTabAdmin from "../Navigation/BottomTabAdmin"; +import PosterEdukasiScreen from "../screens/AksesAdmin/PosterEdukasiScreen"; +import PengaduanSampahScreenAdmin from "../screens/AksesAdmin/PengaduanSampahScreenAdmin"; +import BerandaPengaduanAdmin from "../screens/AksesAdmin/BerandaPengaduanAdmin"; +import DaftarTPSAdmin from "../screens/AksesAdmin/DaftarTPSAdmin"; +import TambahTPS from "../screens/AksesAdmin/TambahTPS"; +import EditTPS from "../screens/AksesAdmin/EditTPS"; +import KontribusiAdmin from "../screens/AksesAdmin/KontribusiAdmin"; +import KontribusiBerhasilAdmin from "../screens/AksesAdmin/KontribusiBerhasilAdmin"; +import RiwayatDonasiAdmin from "../screens/AksesAdmin/RiwayatDonasiAdmin"; +import DetailDalamProses from "../screens/AksesAdmin/DetailDalamProses"; +import DetailVerifikasi from "../screens/AksesAdmin/DetailVerifikasi"; +import DetailDitolak from "../screens/AksesAdmin/DetailDitolak"; +import Laporan from "../screens/AksesAdmin/Laporan"; +import TukarKoin from "../screens/AksesAdmin/TukarKoin"; +import NotifikasiAdminScreen from "../screens/AksesAdmin/NotifikasiAdminScreen"; +import ProfilAdminScreen from "../screens/AksesAdmin/ProfilAdminScreen"; +import EditProfilScreen from "../screens/AksesAdmin/EditProfilScreen"; +import DetailPengirimanAdmin from "../screens/AksesAdmin/DetailPengirimanAdmin"; +import AksesAkun from "../screens/AksesAkun"; +import DaftarBarang from "../screens/AksesAdmin/DaftarBarang"; + +const Stack = createStackNavigator(); + +export default function AksesAdminNavigator() { + return ( + + + + + + + + + + + + + + + + + + + + + + + + + + + ); +} diff --git a/Navigation/AksesWargaNavigator.js b/Navigation/AksesWargaNavigator.js new file mode 100644 index 0000000..401b184 --- /dev/null +++ b/Navigation/AksesWargaNavigator.js @@ -0,0 +1,222 @@ +import { createStackNavigator } from "@react-navigation/stack"; +import Home from "../screens/AksesWarga/Home"; +// import AksesAkun from "../screens/AksesAkun"; +import masuk from "../screens/masuk"; +import BottomNav from "./BottomNav"; +import LokasiTerdekat from "../screens/AksesWarga/LokasiTerdekat"; +import daftarTPS from "../screens/daftarTPS"; +import RiwayatCoinScreen from "../screens/AksesWarga/RiwayatCoinScreen"; +import pengaduansampah from "../screens/PengaduanWarga/pengaduansampah"; +// import PengaduanSampahScreenAdmin from "../screens/AksesAdmin/PengaduanSampahScreenAdmin"; +import misimingguan from "../screens/AksesWarga/misimingguan"; +import BerandaPengaduan from "../screens/AksesWarga/BerandaPengaduan"; +import KontribusiScreen from "../screens/PengaduanWarga/KontribusiScreen"; +import EcoMapCoinExchangeScreen from "../screens/AksesWarga/EcoMapCoinExchangeScreen"; +// import NotifikasiScreen from "../screens/AksesAdmin/NotifikasiAdminScreen"; +import ProfilScreen from "../screens/AksesWarga/ProfilScreen"; +import ProfilNavigation from "../Navigation/ProfilNavigation"; +import NotifikasiScreen from "../screens/AksesWarga/NotifikasiScreen"; +// import DonasiNavigator from "./DonasiNavigator"; +import Donasiberhasil from "../screens/ProfilWarga/DonasiWarga/Donasiberhasil"; +import Donasi from "../screens/ProfilWarga/DonasiWarga/Donasi"; +import MetodeDonasi from "../screens/ProfilWarga/DonasiWarga/MetodeDonasi"; +import KonfirmasiPembayaran from "../screens/ProfilWarga/DonasiWarga/KonfirmasiPembayaran"; +import DonasiVerifikasi from "../screens/ProfilWarga/DonasiWarga/DonasiVerifikasi"; +// import LoadingScreen from "../screens/PengaduanWarga/LoadingScreen"; +import PengaduanBerhasil from "../screens/PengaduanWarga/PengaduanBerhasil"; +import KontribusiBerhasil from "../screens/PengaduanWarga/KontribusiBerhasil"; +// import BerandaPengaduan from "../screens/AksesWarga/BerandaPengaduan"; +// import PengaduanWargaNavigator from "../Navigation/AksesWargaNavigator"; +import AksesAkun from "../screens/AksesAkun"; +import DaftarNavigation from "../Navigation/DaftarNavigation"; +import DaftarBerhasil from "../screens/DaftarBerhasil"; +import daftar from "../screens/daftar"; +import lupasandi from "../screens/password/lupasandi"; // Halaman lupa sandi +import resetsandi from "../screens/password/InputContact"; // Halaman reset sandi +import notifikasisukses from "../screens/password/notifikasisukses"; // Halaman notifikasi sukses +import InputContact from "../screens/password/InputContact"; +import VerifyCode from "../screens/password/VerifyCode"; +// import LokasiTerdekat from "../screens/AksesWarga/LokasiTerdekat"; +// import daftarTPS from "../screens/daftarTPS"; +// import RiwayatCoinScreen from "../screens/AksesWarga/RiwayatCoinScreen"; +const Stack = createStackNavigator(); +const AkeswargaNavigator = createStackNavigator(); + +function AkeswargaStack() { + return ( + + + + ); +} +export default function AksesWargaNavigator() { + return ( + + {/* */} + + + + + + + + + + + + + + + {/* */} + {/* */} + {/* */} + + + + + + + + + + + + + + + + {/* */} + + ); +} diff --git a/Navigation/BerandaPengaduanNav.js b/Navigation/BerandaPengaduanNav.js new file mode 100644 index 0000000..0e08306 --- /dev/null +++ b/Navigation/BerandaPengaduanNav.js @@ -0,0 +1,30 @@ +// import { createStackNavigator } from "@react-navigation/stack"; +// import Home from "../screens/AksesWarga/Home"; +// import pengaduansampah from "../screens/PengaduanWarga/pengaduansampah"; +// import masuk from "../screens/masuk"; +// import BerandaPengaduan from "../screens/AksesWarga/BerandaPengaduan"; +// import KontribusiScreen from "../screens/PengaduanWarga/KontribusiScreen"; + +// const Stack = createStackNavigator(); + +// export default function BerandaPengaduanNav() { +// return ( +// +// +// +// +// +// ); +// } diff --git a/Navigation/BottomNav.js b/Navigation/BottomNav.js new file mode 100644 index 0000000..208569a --- /dev/null +++ b/Navigation/BottomNav.js @@ -0,0 +1,94 @@ +import React from "react"; +import { View, TouchableOpacity, Text, StyleSheet } from "react-native"; +import { Ionicons, FontAwesome5 } from "@expo/vector-icons"; +import { useNavigation } from "@react-navigation/native"; + +const BottomNav = () => { + const navigation = useNavigation(); + + return ( + + navigation.navigate("Home")} + > + + UTAMA + + + navigation.navigate("EcoMapCoinExchangeScreen")} + > + + TUKAR KOIN + + + navigation.navigate("NotifikasiScreen")} + > + + + {/* Ensure the badge text is wrapped in Text component */} + + 1 + + + NOTIFIKASI + + + navigation.navigate("ProfilNavigation")} + > + + PROFIL + + + ); +}; + +const styles = StyleSheet.create({ + bottomNav: { + position: "absolute", + bottom: 0, + left: 0, + right: 0, + width: "100%", + flexDirection: "row", + justifyContent: "space-around", + backgroundColor: "#fff", + paddingVertical: 8, + borderTopLeftRadius: 20, + borderTopRightRadius: 20, + shadowColor: "#000", + shadowOffset: { width: 0, height: -2 }, + shadowOpacity: 0.1, + shadowRadius: 6, + elevation: 5, + }, + navItem: { + flex: 1, // Membuat tiap tombol punya lebar yang sama + alignItems: "center", + padding: 6, + borderRadius: 10, + paddingHorizontal: 12, + paddingVertical: 5, + marginHorizontal: 5, + }, + navText: { color: "#2C6B2F", fontSize: 12, marginTop: 5 }, + notifIconContainer: { position: "relative" }, + badge: { + position: "absolute", + right: -5, + top: -5, + backgroundColor: "#E74C3C", + borderRadius: 10, + paddingHorizontal: 6, + paddingVertical: 2, + }, + badgeText: { color: "#fff", fontSize: 10, fontWeight: "bold" }, +}); + +export default BottomNav; diff --git a/Navigation/BottomTab.js b/Navigation/BottomTab.js new file mode 100644 index 0000000..0e6223d --- /dev/null +++ b/Navigation/BottomTab.js @@ -0,0 +1,114 @@ +import React from "react"; +import { createBottomTabNavigator } from "@react-navigation/bottom-tabs"; +import { Ionicons } from "@expo/vector-icons"; +import { Text, StyleSheet } from "react-native"; + +// Import screens +import Home from "../screens/AksesWarga/Home"; +import EcoMapCoinExchangeScreen from "../screens/AksesWarga/EcoMapCoinExchangeScreen"; +import NotifikasiScreen from "../screens/AksesWarga/NotifikasiScreen"; +import ProfilScreen from "../screens/AksesWarga/ProfilScreen"; + +const Tab = createBottomTabNavigator(); + +export default function bottomtab() { + return ( + ({ + headerShown: false, + tabBarStyle: { + backgroundColor: "#fff", // White background for the tab bar + borderTopWidth: 1, + borderTopColor: "#2C6B2F", + marginBottom: 20, + }, + tabBarIcon: ({ focused, color, size }) => { + // Set color to green explicitly + const iconColor = "#2C6B2F"; // Green color for icons + let iconName; + + if (route.name === "Home") { + iconName = "home"; + } else if (route.name === "EcoMapCoin") { + iconName = "swap-horizontal"; + } else if (route.name === "Notifikasi") { + iconName = "notifications-outline"; + } else if (route.name === "Profil") { + iconName = "person-circle-outline"; + } + + // Return an icon component with the green color + return ; + }, + tabBarLabel: ({ focused, color }) => { + let label; + if (route.name === "Home") { + label = "UTAMA"; + } else if (route.name === "EcoMapCoin") { + label = "TUKAR KOIN"; + } else if (route.name === "Notifikasi") { + label = "NOTIFIKASI"; + } else if (route.name === "Profil") { + label = "PROFIL"; + } + return ( + {label} + ); // Green text color + }, + })} + > + + + + + + ); +} + +const styles = StyleSheet.create({ + bottomNav: { + flexDirection: "row", + justifyContent: "space-around", + paddingVertical: 10, + backgroundColor: "#fff", + borderTopWidth: 1, + borderTopColor: "#2C6B2F", + marginBottom: 0, // Green border + }, + navItem: { + alignItems: "center", + }, + navText: { + fontSize: 12, + color: "#2C6B2F", // Green text color + }, + notifIconContainer: { + position: "relative", + }, + badge: { + position: "absolute", + top: -5, + right: -5, + backgroundColor: "red", + borderRadius: 8, + paddingHorizontal: 5, + paddingVertical: 2, + }, + badgeText: { + color: "#fff", + fontSize: 10, + }, +}); diff --git a/Navigation/BottomTabAdmin.js b/Navigation/BottomTabAdmin.js new file mode 100644 index 0000000..646051a --- /dev/null +++ b/Navigation/BottomTabAdmin.js @@ -0,0 +1,92 @@ +import React from "react"; +import { View, TouchableOpacity, Text, StyleSheet } from "react-native"; +import { Ionicons, FontAwesome5 } from "@expo/vector-icons"; +import { useNavigation } from "@react-navigation/native"; + +const BottomTabAdmin = () => { + const navigation = useNavigation(); + + return ( + + navigation.navigate("AdminScreen")} + > + + UTAMA + + navigation.navigate("TukarKoin")} + > + + TUKAR KOIN + + navigation.navigate("NotifikasiAdminScreen")} + > + + + {/* Ensure the badge text is wrapped in Text component */} + + 1 + + + NOTIFIKASI + + + navigation.navigate("ProfilAdminScreen")} + > + + PROFIL + + + ); +}; + +const styles = StyleSheet.create({ + bottomNav: { + position: "absolute", + bottom: 0, + left: 0, + right: 0, + width: "100%", + flexDirection: "row", + justifyContent: "space-around", + backgroundColor: "#fff", + paddingVertical: 8, + borderTopLeftRadius: 20, + borderTopRightRadius: 20, + shadowColor: "#000", + shadowOffset: { width: 0, height: -2 }, + shadowOpacity: 0.1, + shadowRadius: 6, + elevation: 5, + }, + navItem: { + flex: 1, // Membuat tiap tombol punya lebar yang sama + alignItems: "center", + padding: 6, + borderRadius: 10, + paddingHorizontal: 12, + paddingVertical: 5, + marginHorizontal: 5, + }, + navText: { color: "#2C6B2F", fontSize: 12, marginTop: 5 }, + notifIconContainer: { position: "relative" }, + badge: { + position: "absolute", + right: -5, + top: -5, + backgroundColor: "#E74C3C", + borderRadius: 10, + paddingHorizontal: 6, + paddingVertical: 2, + }, + badgeText: { color: "#fff", fontSize: 10, fontWeight: "bold" }, +}); + +export default BottomTabAdmin; diff --git a/Navigation/DaftarNavigation.js b/Navigation/DaftarNavigation.js new file mode 100644 index 0000000..695c7e9 --- /dev/null +++ b/Navigation/DaftarNavigation.js @@ -0,0 +1,83 @@ +import React from "react"; +import { createStackNavigator } from "@react-navigation/stack"; +import { NavigationContainer } from "@react-navigation/native"; +import Masuk from "../screens/masuk"; // Halaman login +import Daftar from "../screens/daftar"; // Halaman daftar +import DaftarBerhasil from "../screens/DaftarBerhasil"; // Halaman pendaftaran berhasil +import LupaSandi from "../screens/password/lupasandi"; // Halaman lupa sandi +import ResetSandi from "../screens/password/InputContact"; // Halaman reset sandi +import NotifikasiSukses from "../screens/password/notifikasisukses"; // Halaman notifikasi sukses + +// Membuat Stack Navigators +const Stack = createStackNavigator(); +const DaftarStack = createStackNavigator(); // Untuk halaman Daftar +const LupaSandiStack = createStackNavigator(); // Untuk halaman Lupa Sandi + +// DaftarSekarangStackScreen: Mengatur navigasi untuk pendaftaran +function DaftarSekarangStackScreen() { + return ( + + + + + ); +} + +// LupaKataSandiStackScreen: Mengatur navigasi untuk lupa kata sandi +function LupaKataSandiStackScreen() { + return ( + + + + + + ); +} + +// Navigasi utama untuk Akses Warga +export default function DaftarNavigation() { + return ( + + + {/* Halaman Masuk */} + + + {/* Nested Navigators */} + + + + + ); +} diff --git a/Navigation/EditProfilAdminScreen.js b/Navigation/EditProfilAdminScreen.js new file mode 100644 index 0000000..c2b2589 --- /dev/null +++ b/Navigation/EditProfilAdminScreen.js @@ -0,0 +1,187 @@ +import React, { useState } from "react"; +import { + View, + Text, + TextInput, + Image, + TouchableOpacity, + StyleSheet, + ScrollView, + Alert, +} from "react-native"; +import { Ionicons } from "@expo/vector-icons"; + +const EditProfileScreen = () => { + // State for profile fields + const [profile, setProfile] = useState({ + name: "Okta", + email: "okta@example.com", + phone: "08123456789", + address: "Jl. Raya No. 123, Jakarta", + }); + + // Function to handle input changes + const handleInputChange = (field, value) => { + setProfile({ + ...profile, + [field]: value, + }); + }; + + // Function to handle save button click with confirmation + const handleSave = () => { + Alert.alert( + "Konfirmasi Edit Data", + "Apakah Anda yakin ingin mengedit data pribadi?", + [ + { + text: "Tidak", + onPress: () => console.log("Edit cancelled"), + style: "cancel", + }, + { + text: "Yakin", + onPress: () => { + console.log("Data pribadi berhasil disimpan!"); + // Implement save logic here (e.g., save to API or local storage) + }, + }, + ], + { cancelable: false } + ); + }; + + return ( + + {/* Header with Back Button */} + + console.log("Go back")} + > + + + Informasi Pribadi + + + {/* Profile Picture Section */} + + + + Ubah Foto Profil + + + + {/* Input Fields for Profile Information */} + + handleInputChange("name", text)} + /> + handleInputChange("email", text)} + /> + handleInputChange("phone", text)} + /> + handleInputChange("address", text)} + /> + + + {/* Save Button */} + + Simpan + + + ); +}; + +const styles = StyleSheet.create({ + container: { + flex: 1, + backgroundColor: "#f9f9f9", + paddingHorizontal: 20, + paddingTop: 30, + }, + header: { + flexDirection: "row", // Align back button and title in one row + alignItems: "center", + marginBottom: 20, + }, + backButton: { + marginRight: 10, + }, + title: { + fontSize: 22, + fontWeight: "bold", + color: "#333", + }, + profileImageContainer: { + alignItems: "center", + marginBottom: 30, + }, + profileImage: { + width: 100, + height: 100, + borderRadius: 50, + marginBottom: 10, + }, + changeImageButton: { + backgroundColor: "#dcdcdc", + paddingVertical: 5, + paddingHorizontal: 20, + borderRadius: 5, + }, + changeImageText: { + color: "#333", + fontSize: 14, + }, + formSection: { + marginBottom: 30, + }, + inputField: { + backgroundColor: "#fff", + padding: 15, + borderRadius: 8, + marginBottom: 15, + fontSize: 16, + borderColor: "#ddd", + borderWidth: 1, + }, + saveButton: { + backgroundColor: "#2D572C", // Green color + paddingVertical: 12, + borderRadius: 8, + alignItems: "center", + }, + saveButtonText: { + fontSize: 16, + color: "#fff", + fontWeight: "bold", + }, + + logoutButtonText: { + fontSize: 16, + color: "#fff", + fontWeight: "bold", + }, +}); + +export default EditProfileScreen; diff --git a/Navigation/ErrorBoundary.js b/Navigation/ErrorBoundary.js new file mode 100644 index 0000000..0f016d3 --- /dev/null +++ b/Navigation/ErrorBoundary.js @@ -0,0 +1,23 @@ +import React, { Component } from "react"; +import { Text } from "react-native"; + +class ErrorBoundary extends Component { + state = { hasError: false }; + + static getDerivedStateFromError() { + return { hasError: true }; + } + + componentDidCatch(error, info) { + console.error("Error caught by Error Boundary:", error); + } + + render() { + if (this.state.hasError) { + return Error Occurred!; + } + return this.props.children; + } +} + +export default ErrorBoundary; diff --git a/Navigation/PengaduanWargaNavigator.js b/Navigation/PengaduanWargaNavigator.js new file mode 100644 index 0000000..3e9aa70 --- /dev/null +++ b/Navigation/PengaduanWargaNavigator.js @@ -0,0 +1,56 @@ +import { createStackNavigator } from "@react-navigation/stack"; +import Home from "../screens/AksesWarga/Home"; +import pengaduansampah from "../screens/PengaduanWarga/pengaduansampah"; +import masuk from "../screens/masuk"; +import LoadingScreen from "../screens/PengaduanWarga/LoadingScreen"; +import PengaduanBerhasil from "../screens/PengaduanWarga/PengaduanBerhasil"; +import BerandaPengaduan from "../screens/AksesWarga/BerandaPengaduan"; + +const Stack = createStackNavigator(); + +// Navigator untuk Pengaduan Warga +function PengaduanWargaStackScreen() { + return ( + + + {/* */} + + + + ); +} + +// Navigator utama untuk Akses Warga +export default function AksesWargaNavigator() { + return ( + + + {/* Di sini kita bisa menambahkan PengaduanWargaStack sebagai nested navigator */} + + + ); +} diff --git a/Navigation/ProfilNavigation.js b/Navigation/ProfilNavigation.js new file mode 100644 index 0000000..261d6bf --- /dev/null +++ b/Navigation/ProfilNavigation.js @@ -0,0 +1,133 @@ +import { createStackNavigator } from "@react-navigation/stack"; +import { NavigationContainer } from "@react-navigation/native"; +import Home from "../screens/AksesWarga/Home"; +// import AksesAkun from "../screens/AksesAkun"; +import masuk from "../screens/masuk"; +// import bottomtab from "./BottomTab"; +import LokasiTerdekat from "../screens/AksesWarga/LokasiTerdekat"; +import daftarTPS from "../screens/daftarTPS"; +import RiwayatCoinScreen from "../screens/AksesWarga/RiwayatCoinScreen"; +import pengaduansampah from "../screens/PengaduanWarga/pengaduansampah"; +import PengaduanSampahScreenAdmin from "../screens/AksesAdmin/PengaduanSampahScreenAdmin"; +import misimingguan from "../screens/AksesWarga/misimingguan"; +import BerandaPengaduan from "../screens/AksesWarga/BerandaPengaduan"; +import KontribusiScreen from "../screens/PengaduanWarga/KontribusiScreen"; +import EcoMapCoinExchangeScreen from "../screens/AksesWarga/EcoMapCoinExchangeScreen"; +import NotifikasiScreen from "../screens/AksesAdmin/NotifikasiAdminScreen"; +import ProfilScreen from "../screens/AksesWarga/ProfilScreen"; +import DetailPengaduan from "../screens/PengaduanWarga/DetailPengaduan"; +import StatusPengirimanScreen from "../screens/ProfilWarga/StatusPengiriman/StatusPengirimanScreen"; +import Donasi from "../screens/ProfilWarga/DonasiWarga/Donasi"; +import InformasiPribadi from "../screens/ProfilWarga/InformasiPribadi/InformasiPribadi"; +import EditInformasiPribadi from "../screens/ProfilWarga/InformasiPribadi/EditInformasiPribadi"; +import DetailPengiriman from "../screens/ProfilWarga/StatusPengiriman/DetailPengiriman"; +import Donasiberhasil from "../screens/ProfilWarga/DonasiWarga/Donasiberhasil"; +import StatusPengaduan from "../screens/ProfilWarga/StatusPengaduan/StatusPengaduan"; +// import Donasi from "../screens/ProfilWarga/DonasiWarga/Donasi"; +import MetodeDonasi from "../screens/ProfilWarga/DonasiWarga/MetodeDonasi"; +import KonfirmasiPembayaran from "../screens/ProfilWarga/DonasiWarga/KonfirmasiPembayaran"; +import DonasiVerifikasi from "../screens/ProfilWarga/DonasiWarga/DonasiVerifikasi"; + +// import LokasiTerdekat from "../screens/AksesWarga/LokasiTerdekat"; +// import daftarTPS from "../screens/daftarTPS"; +// import RiwayatCoinScreen from "../screens/AksesWarga/RiwayatCoinScreen"; +const Stack = createStackNavigator(); +const ProfilNavigator = createStackNavigator(); + +function StatusPengaduanStack() { + return ( + + + + ); +} +function InformasiPribadiStackScreen() { + return ( + + + + + ); +} +function StatusPenukaranKoinStackScreen() { + return ( + + + + + ); +} +function DonasiStackScreen() { + return ( + + + + + + + + + ); +} + +// Navigator utama untuk Akses Warga +export default function ProfilNavigation() { + return ( + + {/* */} + + {/* Di sini kita bisa menambahkan PengaduanWargaStack sebagai nested navigator */} + + + + + + ); +} diff --git a/ProfilScreenNavigator.js b/ProfilScreenNavigator.js new file mode 100644 index 0000000..13477fb --- /dev/null +++ b/ProfilScreenNavigator.js @@ -0,0 +1,35 @@ +import React from "react"; +import { createStackNavigator } from "@react-navigation/stack"; +import ProfilScreen from "./screens/AksesWarga/ProfilScreen"; +// Pastikan StatusPengirimanScreen sudah diimpor jika kamu ingin menggunakannya +import StatusPengirimanScreen from "./screens/ProfilWarga/StatusPengiriman/StatusPengirimanScreen"; +import Donasi from "./screens/ProfilWarga/DonasiWarga/Donasi"; + +const Stack = createStackNavigator(); + +function ProfilScreenNavigator() { + return ( + + {/* Layar Utama Profile */} + + + {/* Layar-Layar Detail di dalam Profile */} + + + + ); +} + +export default ProfilScreenNavigator; diff --git a/README.md b/README.md new file mode 100644 index 0000000..cd4feb8 --- /dev/null +++ b/README.md @@ -0,0 +1,50 @@ +# Welcome to your Expo app 👋 + +This is an [Expo](https://expo.dev) project created with [`create-expo-app`](https://www.npmjs.com/package/create-expo-app). + +## Get started + +1. Install dependencies + + ```bash + npm install + ``` + +2. Start the app + + ```bash + npx expo start + ``` + +In the output, you'll find options to open the app in a + +- [development build](https://docs.expo.dev/develop/development-builds/introduction/) +- [Android emulator](https://docs.expo.dev/workflow/android-studio-emulator/) +- [iOS simulator](https://docs.expo.dev/workflow/ios-simulator/) +- [Expo Go](https://expo.dev/go), a limited sandbox for trying out app development with Expo + +You can start developing by editing the files inside the **app** directory. This project uses [file-based routing](https://docs.expo.dev/router/introduction). + +## Get a fresh project + +When you're ready, run: + +```bash +npm run reset-project +``` + +This command will move the starter code to the **app-example** directory and create a blank **app** directory where you can start developing. + +## Learn more + +To learn more about developing your project with Expo, look at the following resources: + +- [Expo documentation](https://docs.expo.dev/): Learn fundamentals, or go into advanced topics with our [guides](https://docs.expo.dev/guides). +- [Learn Expo tutorial](https://docs.expo.dev/tutorial/introduction/): Follow a step-by-step tutorial where you'll create a project that runs on Android, iOS, and the web. + +## Join the community + +Join our community of developers creating universal apps. + +- [Expo on GitHub](https://github.com/expo/expo): View our open source platform and contribute. +- [Discord community](https://chat.expo.dev): Chat with Expo users and ask questions. diff --git a/app.json b/app.json new file mode 100644 index 0000000..aef3054 --- /dev/null +++ b/app.json @@ -0,0 +1,52 @@ +{ + "expo": { + "doctor": { + "reactNativeDirectoryCheck": { + "listUnknownPackages": false, + "name": "yakinbisa", + "slug": "yakinbisa", + "version": "1.0.0", + "orientation": "portrait", + "icon": "./assets/images/icon.png", + "scheme": "myapp", + "platforms": [ + "ios", + "android" + ], + "android": { + "jsEngine": "hermes", + "adaptiveIcon": { + "foregroundImage": "./assets/images/adaptive-icon.png", + "backgroundColor": "#ffffff" + } + } + } + }, + "userInterfaceStyle": "automatic", + "newArchEnabled": true, + "ios": { + "supportsTablet": true + }, + "web": { + "bundler": "metro", + "output": "static", + "favicon": "./assets/images/favicon.png" + }, + "plugins": [ + [ + "expo-splash-screen", + { + "image": "./assets/images/splash-icon.png", + "imageWidth": 200, + "resizeMode": "contain", + "backgroundColor": "#ffffff" + } + ], + "expo-font", + "expo-router" + ], + "experiments": { + "typedRoutes": true + } + } +} diff --git a/assets/fonts/Roboto-Italic-VariableFont_wdth,wght.ttf b/assets/fonts/Roboto-Italic-VariableFont_wdth,wght.ttf new file mode 100644 index 0000000..978e53a Binary files /dev/null and b/assets/fonts/Roboto-Italic-VariableFont_wdth,wght.ttf differ diff --git a/assets/fonts/Roboto-Regular.ttf b/assets/fonts/Roboto-Regular.ttf new file mode 100644 index 0000000..bba55f6 Binary files /dev/null and b/assets/fonts/Roboto-Regular.ttf differ diff --git a/assets/fonts/SpaceMono-Regular.ttf b/assets/fonts/SpaceMono-Regular.ttf new file mode 100644 index 0000000..28d7ff7 Binary files /dev/null and b/assets/fonts/SpaceMono-Regular.ttf differ diff --git a/assets/images/IMG_20230408_074055_722.jpg b/assets/images/IMG_20230408_074055_722.jpg new file mode 100644 index 0000000..e10fcf0 Binary files /dev/null and b/assets/images/IMG_20230408_074055_722.jpg differ diff --git a/assets/images/adaptive-icon.png b/assets/images/adaptive-icon.png new file mode 100644 index 0000000..03d6f6b Binary files /dev/null and b/assets/images/adaptive-icon.png differ diff --git a/assets/images/admin.png b/assets/images/admin.png new file mode 100644 index 0000000..0ba630b Binary files /dev/null and b/assets/images/admin.png differ diff --git a/assets/images/alatmakan.png b/assets/images/alatmakan.png new file mode 100644 index 0000000..fda63a6 Binary files /dev/null and b/assets/images/alatmakan.png differ diff --git a/assets/images/bg.png b/assets/images/bg.png new file mode 100644 index 0000000..544e90e Binary files /dev/null and b/assets/images/bg.png differ diff --git a/assets/images/botol1.png b/assets/images/botol1.png new file mode 100644 index 0000000..d02f2d3 Binary files /dev/null and b/assets/images/botol1.png differ diff --git a/assets/images/botol2.png b/assets/images/botol2.png new file mode 100644 index 0000000..23463d6 Binary files /dev/null and b/assets/images/botol2.png differ diff --git a/assets/images/daftar.png b/assets/images/daftar.png new file mode 100644 index 0000000..426672c Binary files /dev/null and b/assets/images/daftar.png differ diff --git a/assets/images/favicon.png b/assets/images/favicon.png new file mode 100644 index 0000000..e75f697 Binary files /dev/null and b/assets/images/favicon.png differ diff --git a/assets/images/foto2.jpg b/assets/images/foto2.jpg new file mode 100644 index 0000000..affd5d6 Binary files /dev/null and b/assets/images/foto2.jpg differ diff --git a/assets/images/foto3.jpg b/assets/images/foto3.jpg new file mode 100644 index 0000000..93b4987 Binary files /dev/null and b/assets/images/foto3.jpg differ diff --git a/assets/images/fotoprofil.jpeg b/assets/images/fotoprofil.jpeg new file mode 100644 index 0000000..657492e Binary files /dev/null and b/assets/images/fotoprofil.jpeg differ diff --git a/assets/images/headerbg.png b/assets/images/headerbg.png new file mode 100644 index 0000000..6fc19a3 Binary files /dev/null and b/assets/images/headerbg.png differ diff --git a/assets/images/icon.png b/assets/images/icon.png new file mode 100644 index 0000000..a0b1526 Binary files /dev/null and b/assets/images/icon.png differ diff --git a/assets/images/koin.png b/assets/images/koin.png new file mode 100644 index 0000000..80f48b7 Binary files /dev/null and b/assets/images/koin.png differ diff --git a/assets/images/logoecomap.png b/assets/images/logoecomap.png new file mode 100644 index 0000000..c62c968 Binary files /dev/null and b/assets/images/logoecomap.png differ diff --git a/assets/images/onboarding1.png b/assets/images/onboarding1.png new file mode 100644 index 0000000..2a72384 Binary files /dev/null and b/assets/images/onboarding1.png differ diff --git a/assets/images/onboarding2.png b/assets/images/onboarding2.png new file mode 100644 index 0000000..e608749 Binary files /dev/null and b/assets/images/onboarding2.png differ diff --git a/assets/images/onboarding3.png b/assets/images/onboarding3.png new file mode 100644 index 0000000..ed99936 Binary files /dev/null and b/assets/images/onboarding3.png differ diff --git a/assets/images/partial-react-logo.png b/assets/images/partial-react-logo.png new file mode 100644 index 0000000..66fd957 Binary files /dev/null and b/assets/images/partial-react-logo.png differ diff --git a/assets/images/poster1.png b/assets/images/poster1.png new file mode 100644 index 0000000..0b3d523 Binary files /dev/null and b/assets/images/poster1.png differ diff --git a/assets/images/poster2.png b/assets/images/poster2.png new file mode 100644 index 0000000..bb7d1da Binary files /dev/null and b/assets/images/poster2.png differ diff --git a/assets/images/poster3.png b/assets/images/poster3.png new file mode 100644 index 0000000..83ffa43 Binary files /dev/null and b/assets/images/poster3.png differ diff --git a/assets/images/react-logo.png b/assets/images/react-logo.png new file mode 100644 index 0000000..9d72a9f Binary files /dev/null and b/assets/images/react-logo.png differ diff --git a/assets/images/react-logo@2x.png b/assets/images/react-logo@2x.png new file mode 100644 index 0000000..2229b13 Binary files /dev/null and b/assets/images/react-logo@2x.png differ diff --git a/assets/images/react-logo@3x.png b/assets/images/react-logo@3x.png new file mode 100644 index 0000000..a99b203 Binary files /dev/null and b/assets/images/react-logo@3x.png differ diff --git a/assets/images/sampah.png b/assets/images/sampah.png new file mode 100644 index 0000000..b10681e Binary files /dev/null and b/assets/images/sampah.png differ diff --git a/assets/images/splash-icon.png b/assets/images/splash-icon.png new file mode 100644 index 0000000..03d6f6b Binary files /dev/null and b/assets/images/splash-icon.png differ diff --git a/assets/images/tas2.png b/assets/images/tas2.png new file mode 100644 index 0000000..ea7ad57 Binary files /dev/null and b/assets/images/tas2.png differ diff --git a/assets/images/tempatsampah.png b/assets/images/tempatsampah.png new file mode 100644 index 0000000..d8b6976 Binary files /dev/null and b/assets/images/tempatsampah.png differ diff --git a/assets/images/warga.png b/assets/images/warga.png new file mode 100644 index 0000000..80cf25d Binary files /dev/null and b/assets/images/warga.png differ diff --git a/npm b/npm new file mode 100644 index 0000000..e69de29 diff --git a/package-lock.json b/package-lock.json new file mode 100644 index 0000000..411554f --- /dev/null +++ b/package-lock.json @@ -0,0 +1,12591 @@ +{ + "name": "yakinbisa", + "version": "1.0.0", + "lockfileVersion": 3, + "requires": true, + "packages": { + "": { + "name": "yakinbisa", + "version": "1.0.0", + "dependencies": { + "@expo/vector-icons": "^14.1.0", + "@react-native-picker/picker": "2.11.0", + "@react-navigation/bottom-tabs": "^7.3.13", + "@react-navigation/native": "^7.1.9", + "@react-navigation/stack": "^7.3.2", + "expo": "^53.0.11", + "expo-av": "~15.1.6", + "expo-blur": "~14.1.5", + "expo-camera": "~16.1.7", + "expo-checkbox": "~4.1.4", + "expo-constants": "~17.1.6", + "expo-font": "~13.3.1", + "expo-haptics": "~14.1.4", + "expo-image-picker": "~16.1.4", + "expo-linear-gradient": "~14.1.5", + "expo-linking": "~7.1.5", + "expo-location": "~18.1.5", + "expo-media-library": "~17.1.7", + "expo-print": "~14.1.4", + "expo-router": "~5.0.7", + "expo-splash-screen": "^0.30.9", + "expo-status-bar": "~2.2.3", + "expo-symbols": "^0.4.5", + "expo-system-ui": "~5.0.8", + "expo-web-browser": "~14.1.6", + "react": "19.0.0", + "react-dom": "19.0.0", + "react-native": "^0.79.3", + "react-native-calendars": "^1.1312.0", + "react-native-chart-kit": "^6.12.0", + "react-native-gesture-handler": "~2.24.0", + "react-native-google-places-autocomplete": "^2.5.7", + "react-native-maps": "1.20.1", + "react-native-reanimated": "~3.17.4", + "react-native-reanimated-carousel": "^4.0.2", + "react-native-safe-area-context": "5.4.0", + "react-native-screens": "~4.11.1", + "react-native-svg": "15.11.2", + "react-native-vector-icons": "^10.2.0", + "react-native-web": "^0.20.0" + }, + "devDependencies": { + "@babel/core": "^7.26.0", + "jest": "~29.7.0", + "jest-expo": "~53.0.7", + "react-test-renderer": "18.3.1" + } + }, + "node_modules/@0no-co/graphql.web": { + "version": "1.1.2", + "resolved": "https://registry.npmjs.org/@0no-co/graphql.web/-/graphql.web-1.1.2.tgz", + "integrity": "sha512-N2NGsU5FLBhT8NZ+3l2YrzZSHITjNXNuDhC4iDiikv0IujaJ0Xc6xIxQZ/Ek3Cb+rgPjnLHYyJm11tInuJn+cw==", + "license": "MIT", + "peerDependencies": { + "graphql": "^14.0.0 || ^15.0.0 || ^16.0.0" + }, + "peerDependenciesMeta": { + "graphql": { + "optional": true + } + } + }, + "node_modules/@ampproject/remapping": { + "version": "2.3.0", + "resolved": "https://registry.npmjs.org/@ampproject/remapping/-/remapping-2.3.0.tgz", + "integrity": "sha512-30iZtAPgz+LTIYoeivqYo853f02jBYSd5uGnGpkFV0M3xOt9aN73erkgYAmZU43x4VfqcnLxW9Kpg3R5LC4YYw==", + "license": "Apache-2.0", + "dependencies": { + "@jridgewell/gen-mapping": "^0.3.5", + "@jridgewell/trace-mapping": "^0.3.24" + }, + "engines": { + "node": ">=6.0.0" + } + }, + "node_modules/@babel/code-frame": { + "version": "7.27.1", + "resolved": "https://registry.npmjs.org/@babel/code-frame/-/code-frame-7.27.1.tgz", + "integrity": "sha512-cjQ7ZlQ0Mv3b47hABuTevyTuYN4i+loJKGeV9flcCgIK37cCXRh+L1bd3iBHlynerhQ7BhCkn2BPbQUL+rGqFg==", + "license": "MIT", + "dependencies": { + "@babel/helper-validator-identifier": "^7.27.1", + "js-tokens": "^4.0.0", + "picocolors": "^1.1.1" + }, + "engines": { + "node": ">=6.9.0" + } + }, + "node_modules/@babel/compat-data": { + "version": "7.27.2", + "resolved": "https://registry.npmjs.org/@babel/compat-data/-/compat-data-7.27.2.tgz", + "integrity": "sha512-TUtMJYRPyUb/9aU8f3K0mjmjf6M9N5Woshn2CS6nqJSeJtTtQcpLUXjGt9vbF8ZGff0El99sWkLgzwW3VXnxZQ==", + "license": "MIT", + "engines": { + "node": ">=6.9.0" + } + }, + "node_modules/@babel/core": { + "version": "7.27.1", + "resolved": "https://registry.npmjs.org/@babel/core/-/core-7.27.1.tgz", + "integrity": "sha512-IaaGWsQqfsQWVLqMn9OB92MNN7zukfVA4s7KKAI0KfrrDsZ0yhi5uV4baBuLuN7n3vsZpwP8asPPcVwApxvjBQ==", + "license": "MIT", + "dependencies": { + "@ampproject/remapping": "^2.2.0", + "@babel/code-frame": "^7.27.1", + "@babel/generator": "^7.27.1", + "@babel/helper-compilation-targets": "^7.27.1", + "@babel/helper-module-transforms": "^7.27.1", + "@babel/helpers": "^7.27.1", + "@babel/parser": "^7.27.1", + "@babel/template": "^7.27.1", + "@babel/traverse": "^7.27.1", + "@babel/types": "^7.27.1", + "convert-source-map": "^2.0.0", + "debug": "^4.1.0", + "gensync": "^1.0.0-beta.2", + "json5": "^2.2.3", + "semver": "^6.3.1" + }, + "engines": { + "node": ">=6.9.0" + }, + "funding": { + "type": "opencollective", + "url": "https://opencollective.com/babel" + } + }, + "node_modules/@babel/generator": { + "version": "7.27.5", + "resolved": "https://registry.npmjs.org/@babel/generator/-/generator-7.27.5.tgz", + "integrity": "sha512-ZGhA37l0e/g2s1Cnzdix0O3aLYm66eF8aufiVteOgnwxgnRP8GoyMj7VWsgWnQbVKXyge7hqrFh2K2TQM6t1Hw==", + "license": "MIT", + "dependencies": { + "@babel/parser": "^7.27.5", + "@babel/types": "^7.27.3", + "@jridgewell/gen-mapping": "^0.3.5", + "@jridgewell/trace-mapping": "^0.3.25", + "jsesc": "^3.0.2" + }, + "engines": { + "node": ">=6.9.0" + } + }, + "node_modules/@babel/helper-annotate-as-pure": { + "version": "7.27.1", + "resolved": "https://registry.npmjs.org/@babel/helper-annotate-as-pure/-/helper-annotate-as-pure-7.27.1.tgz", + "integrity": "sha512-WnuuDILl9oOBbKnb4L+DyODx7iC47XfzmNCpTttFsSp6hTG7XZxu60+4IO+2/hPfcGOoKbFiwoI/+zwARbNQow==", + "license": "MIT", + "dependencies": { + "@babel/types": "^7.27.1" + }, + "engines": { + "node": ">=6.9.0" + } + }, + "node_modules/@babel/helper-compilation-targets": { + "version": "7.27.2", + "resolved": "https://registry.npmjs.org/@babel/helper-compilation-targets/-/helper-compilation-targets-7.27.2.tgz", + "integrity": "sha512-2+1thGUUWWjLTYTHZWK1n8Yga0ijBz1XAhUXcKy81rd5g6yh7hGqMp45v7cadSbEHc9G3OTv45SyneRN3ps4DQ==", + "license": "MIT", + "dependencies": { + "@babel/compat-data": "^7.27.2", + "@babel/helper-validator-option": "^7.27.1", + "browserslist": "^4.24.0", + "lru-cache": "^5.1.1", + "semver": "^6.3.1" + }, + "engines": { + "node": ">=6.9.0" + } + }, + "node_modules/@babel/helper-create-class-features-plugin": { + "version": "7.27.1", + "resolved": "https://registry.npmjs.org/@babel/helper-create-class-features-plugin/-/helper-create-class-features-plugin-7.27.1.tgz", + "integrity": "sha512-QwGAmuvM17btKU5VqXfb+Giw4JcN0hjuufz3DYnpeVDvZLAObloM77bhMXiqry3Iio+Ai4phVRDwl6WU10+r5A==", + "license": "MIT", + "dependencies": { + "@babel/helper-annotate-as-pure": "^7.27.1", + "@babel/helper-member-expression-to-functions": "^7.27.1", + "@babel/helper-optimise-call-expression": "^7.27.1", + "@babel/helper-replace-supers": "^7.27.1", + "@babel/helper-skip-transparent-expression-wrappers": "^7.27.1", + "@babel/traverse": "^7.27.1", + "semver": "^6.3.1" + }, + "engines": { + "node": ">=6.9.0" + }, + "peerDependencies": { + "@babel/core": "^7.0.0" + } + }, + "node_modules/@babel/helper-create-regexp-features-plugin": { + "version": "7.27.1", + "resolved": "https://registry.npmjs.org/@babel/helper-create-regexp-features-plugin/-/helper-create-regexp-features-plugin-7.27.1.tgz", + "integrity": "sha512-uVDC72XVf8UbrH5qQTc18Agb8emwjTiZrQE11Nv3CuBEZmVvTwwE9CBUEvHku06gQCAyYf8Nv6ja1IN+6LMbxQ==", + "license": "MIT", + "dependencies": { + "@babel/helper-annotate-as-pure": "^7.27.1", + "regexpu-core": "^6.2.0", + "semver": "^6.3.1" + }, + "engines": { + "node": ">=6.9.0" + }, + "peerDependencies": { + "@babel/core": "^7.0.0" + } + }, + "node_modules/@babel/helper-define-polyfill-provider": { + "version": "0.6.4", + "resolved": "https://registry.npmjs.org/@babel/helper-define-polyfill-provider/-/helper-define-polyfill-provider-0.6.4.tgz", + "integrity": "sha512-jljfR1rGnXXNWnmQg2K3+bvhkxB51Rl32QRaOTuwwjviGrHzIbSc8+x9CpraDtbT7mfyjXObULP4w/adunNwAw==", + "license": "MIT", + "dependencies": { + "@babel/helper-compilation-targets": "^7.22.6", + "@babel/helper-plugin-utils": "^7.22.5", + "debug": "^4.1.1", + "lodash.debounce": "^4.0.8", + "resolve": "^1.14.2" + }, + "peerDependencies": { + "@babel/core": "^7.4.0 || ^8.0.0-0 <8.0.0" + } + }, + "node_modules/@babel/helper-member-expression-to-functions": { + "version": "7.27.1", + "resolved": "https://registry.npmjs.org/@babel/helper-member-expression-to-functions/-/helper-member-expression-to-functions-7.27.1.tgz", + "integrity": "sha512-E5chM8eWjTp/aNoVpcbfM7mLxu9XGLWYise2eBKGQomAk/Mb4XoxyqXTZbuTohbsl8EKqdlMhnDI2CCLfcs9wA==", + "license": "MIT", + "dependencies": { + "@babel/traverse": "^7.27.1", + "@babel/types": "^7.27.1" + }, + "engines": { + "node": ">=6.9.0" + } + }, + "node_modules/@babel/helper-module-imports": { + "version": "7.27.1", + "resolved": "https://registry.npmjs.org/@babel/helper-module-imports/-/helper-module-imports-7.27.1.tgz", + "integrity": "sha512-0gSFWUPNXNopqtIPQvlD5WgXYI5GY2kP2cCvoT8kczjbfcfuIljTbcWrulD1CIPIX2gt1wghbDy08yE1p+/r3w==", + "license": "MIT", + "dependencies": { + "@babel/traverse": "^7.27.1", + "@babel/types": "^7.27.1" + }, + "engines": { + "node": ">=6.9.0" + } + }, + "node_modules/@babel/helper-module-transforms": { + "version": "7.27.1", + "resolved": "https://registry.npmjs.org/@babel/helper-module-transforms/-/helper-module-transforms-7.27.1.tgz", + "integrity": "sha512-9yHn519/8KvTU5BjTVEEeIM3w9/2yXNKoD82JifINImhpKkARMJKPP59kLo+BafpdN5zgNeIcS4jsGDmd3l58g==", + "license": "MIT", + "dependencies": { + "@babel/helper-module-imports": "^7.27.1", + "@babel/helper-validator-identifier": "^7.27.1", + "@babel/traverse": "^7.27.1" + }, + "engines": { + "node": ">=6.9.0" + }, + "peerDependencies": { + "@babel/core": "^7.0.0" + } + }, + "node_modules/@babel/helper-optimise-call-expression": { + "version": "7.27.1", + "resolved": "https://registry.npmjs.org/@babel/helper-optimise-call-expression/-/helper-optimise-call-expression-7.27.1.tgz", + "integrity": "sha512-URMGH08NzYFhubNSGJrpUEphGKQwMQYBySzat5cAByY1/YgIRkULnIy3tAMeszlL/so2HbeilYloUmSpd7GdVw==", + "license": "MIT", + "dependencies": { + "@babel/types": "^7.27.1" + }, + "engines": { + "node": ">=6.9.0" + } + }, + "node_modules/@babel/helper-plugin-utils": { + "version": "7.27.1", + "resolved": "https://registry.npmjs.org/@babel/helper-plugin-utils/-/helper-plugin-utils-7.27.1.tgz", + "integrity": "sha512-1gn1Up5YXka3YYAHGKpbideQ5Yjf1tDa9qYcgysz+cNCXukyLl6DjPXhD3VRwSb8c0J9tA4b2+rHEZtc6R0tlw==", + "license": "MIT", + "engines": { + "node": ">=6.9.0" + } + }, + "node_modules/@babel/helper-remap-async-to-generator": { + "version": "7.27.1", + "resolved": "https://registry.npmjs.org/@babel/helper-remap-async-to-generator/-/helper-remap-async-to-generator-7.27.1.tgz", + "integrity": "sha512-7fiA521aVw8lSPeI4ZOD3vRFkoqkJcS+z4hFo82bFSH/2tNd6eJ5qCVMS5OzDmZh/kaHQeBaeyxK6wljcPtveA==", + "license": "MIT", + "dependencies": { + "@babel/helper-annotate-as-pure": "^7.27.1", + "@babel/helper-wrap-function": "^7.27.1", + "@babel/traverse": "^7.27.1" + }, + "engines": { + "node": ">=6.9.0" + }, + "peerDependencies": { + "@babel/core": "^7.0.0" + } + }, + "node_modules/@babel/helper-replace-supers": { + "version": "7.27.1", + "resolved": "https://registry.npmjs.org/@babel/helper-replace-supers/-/helper-replace-supers-7.27.1.tgz", + "integrity": "sha512-7EHz6qDZc8RYS5ElPoShMheWvEgERonFCs7IAonWLLUTXW59DP14bCZt89/GKyreYn8g3S83m21FelHKbeDCKA==", + "license": "MIT", + "dependencies": { + "@babel/helper-member-expression-to-functions": "^7.27.1", + "@babel/helper-optimise-call-expression": "^7.27.1", + "@babel/traverse": "^7.27.1" + }, + "engines": { + "node": ">=6.9.0" + }, + "peerDependencies": { + "@babel/core": "^7.0.0" + } + }, + "node_modules/@babel/helper-skip-transparent-expression-wrappers": { + "version": "7.27.1", + "resolved": "https://registry.npmjs.org/@babel/helper-skip-transparent-expression-wrappers/-/helper-skip-transparent-expression-wrappers-7.27.1.tgz", + "integrity": "sha512-Tub4ZKEXqbPjXgWLl2+3JpQAYBJ8+ikpQ2Ocj/q/r0LwE3UhENh7EUabyHjz2kCEsrRY83ew2DQdHluuiDQFzg==", + "license": "MIT", + "dependencies": { + "@babel/traverse": "^7.27.1", + "@babel/types": "^7.27.1" + }, + "engines": { + "node": ">=6.9.0" + } + }, + "node_modules/@babel/helper-string-parser": { + "version": "7.27.1", + "resolved": "https://registry.npmjs.org/@babel/helper-string-parser/-/helper-string-parser-7.27.1.tgz", + "integrity": "sha512-qMlSxKbpRlAridDExk92nSobyDdpPijUq2DW6oDnUqd0iOGxmQjyqhMIihI9+zv4LPyZdRje2cavWPbCbWm3eA==", + "license": "MIT", + "engines": { + "node": ">=6.9.0" + } + }, + "node_modules/@babel/helper-validator-identifier": { + "version": "7.27.1", + "resolved": "https://registry.npmjs.org/@babel/helper-validator-identifier/-/helper-validator-identifier-7.27.1.tgz", + "integrity": "sha512-D2hP9eA+Sqx1kBZgzxZh0y1trbuU+JoDkiEwqhQ36nodYqJwyEIhPSdMNd7lOm/4io72luTPWH20Yda0xOuUow==", + "license": "MIT", + "engines": { + "node": ">=6.9.0" + } + }, + "node_modules/@babel/helper-validator-option": { + "version": "7.27.1", + "resolved": "https://registry.npmjs.org/@babel/helper-validator-option/-/helper-validator-option-7.27.1.tgz", + "integrity": "sha512-YvjJow9FxbhFFKDSuFnVCe2WxXk1zWc22fFePVNEaWJEu8IrZVlda6N0uHwzZrUM1il7NC9Mlp4MaJYbYd9JSg==", + "license": "MIT", + "engines": { + "node": ">=6.9.0" + } + }, + "node_modules/@babel/helper-wrap-function": { + "version": "7.27.1", + "resolved": "https://registry.npmjs.org/@babel/helper-wrap-function/-/helper-wrap-function-7.27.1.tgz", + "integrity": "sha512-NFJK2sHUvrjo8wAU/nQTWU890/zB2jj0qBcCbZbbf+005cAsv6tMjXz31fBign6M5ov1o0Bllu+9nbqkfsjjJQ==", + "license": "MIT", + "dependencies": { + "@babel/template": "^7.27.1", + "@babel/traverse": "^7.27.1", + "@babel/types": "^7.27.1" + }, + "engines": { + "node": ">=6.9.0" + } + }, + "node_modules/@babel/helpers": { + "version": "7.27.1", + "resolved": "https://registry.npmjs.org/@babel/helpers/-/helpers-7.27.1.tgz", + "integrity": "sha512-FCvFTm0sWV8Fxhpp2McP5/W53GPllQ9QeQ7SiqGWjMf/LVG07lFa5+pgK05IRhVwtvafT22KF+ZSnM9I545CvQ==", + "license": "MIT", + "dependencies": { + "@babel/template": "^7.27.1", + "@babel/types": "^7.27.1" + }, + "engines": { + "node": ">=6.9.0" + } + }, + "node_modules/@babel/highlight": { + "version": "7.25.9", + "resolved": "https://registry.npmjs.org/@babel/highlight/-/highlight-7.25.9.tgz", + "integrity": "sha512-llL88JShoCsth8fF8R4SJnIn+WLvR6ccFxu1H3FlMhDontdcmZWf2HgIZ7AIqV3Xcck1idlohrN4EUBQz6klbw==", + "license": "MIT", + "dependencies": { + "@babel/helper-validator-identifier": "^7.25.9", + "chalk": "^2.4.2", + "js-tokens": "^4.0.0", + "picocolors": "^1.0.0" + }, + "engines": { + "node": ">=6.9.0" + } + }, + "node_modules/@babel/highlight/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==", + "license": "MIT", + "dependencies": { + "color-convert": "^1.9.0" + }, + "engines": { + "node": ">=4" + } + }, + "node_modules/@babel/highlight/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==", + "license": "MIT", + "dependencies": { + "ansi-styles": "^3.2.1", + "escape-string-regexp": "^1.0.5", + "supports-color": "^5.3.0" + }, + "engines": { + "node": ">=4" + } + }, + "node_modules/@babel/highlight/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==", + "license": "MIT", + "dependencies": { + "color-name": "1.1.3" + } + }, + "node_modules/@babel/highlight/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" + }, + "node_modules/@babel/highlight/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" + } + }, + "node_modules/@babel/highlight/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" + } + }, + "node_modules/@babel/highlight/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==", + "license": "MIT", + "dependencies": { + "has-flag": "^3.0.0" + }, + "engines": { + "node": ">=4" + } + }, + "node_modules/@babel/parser": { + "version": "7.27.5", + "resolved": "https://registry.npmjs.org/@babel/parser/-/parser-7.27.5.tgz", + "integrity": "sha512-OsQd175SxWkGlzbny8J3K8TnnDD0N3lrIUtB92xwyRpzaenGZhxDvxN/JgU00U3CDZNj9tPuDJ5H0WS4Nt3vKg==", + "license": "MIT", + "dependencies": { + "@babel/types": "^7.27.3" + }, + "bin": { + "parser": "bin/babel-parser.js" + }, + "engines": { + "node": ">=6.0.0" + } + }, + "node_modules/@babel/plugin-proposal-decorators": { + "version": "7.27.1", + "resolved": "https://registry.npmjs.org/@babel/plugin-proposal-decorators/-/plugin-proposal-decorators-7.27.1.tgz", + "integrity": "sha512-DTxe4LBPrtFdsWzgpmbBKevg3e9PBy+dXRt19kSbucbZvL2uqtdqwwpluL1jfxYE0wIDTFp1nTy/q6gNLsxXrg==", + "license": "MIT", + "dependencies": { + "@babel/helper-create-class-features-plugin": "^7.27.1", + "@babel/helper-plugin-utils": "^7.27.1", + "@babel/plugin-syntax-decorators": "^7.27.1" + }, + "engines": { + "node": ">=6.9.0" + }, + "peerDependencies": { + "@babel/core": "^7.0.0-0" + } + }, + "node_modules/@babel/plugin-proposal-export-default-from": { + "version": "7.27.1", + "resolved": "https://registry.npmjs.org/@babel/plugin-proposal-export-default-from/-/plugin-proposal-export-default-from-7.27.1.tgz", + "integrity": "sha512-hjlsMBl1aJc5lp8MoCDEZCiYzlgdRAShOjAfRw6X+GlpLpUPU7c3XNLsKFZbQk/1cRzBlJ7CXg3xJAJMrFa1Uw==", + "license": "MIT", + "dependencies": { + "@babel/helper-plugin-utils": "^7.27.1" + }, + "engines": { + "node": ">=6.9.0" + }, + "peerDependencies": { + "@babel/core": "^7.0.0-0" + } + }, + "node_modules/@babel/plugin-syntax-async-generators": { + "version": "7.8.4", + "resolved": "https://registry.npmjs.org/@babel/plugin-syntax-async-generators/-/plugin-syntax-async-generators-7.8.4.tgz", + "integrity": "sha512-tycmZxkGfZaxhMRbXlPXuVFpdWlXpir2W4AMhSJgRKzk/eDlIXOhb2LHWoLpDF7TEHylV5zNhykX6KAgHJmTNw==", + "license": "MIT", + "dependencies": { + "@babel/helper-plugin-utils": "^7.8.0" + }, + "peerDependencies": { + "@babel/core": "^7.0.0-0" + } + }, + "node_modules/@babel/plugin-syntax-bigint": { + "version": "7.8.3", + "resolved": "https://registry.npmjs.org/@babel/plugin-syntax-bigint/-/plugin-syntax-bigint-7.8.3.tgz", + "integrity": "sha512-wnTnFlG+YxQm3vDxpGE57Pj0srRU4sHE/mDkt1qv2YJJSeUAec2ma4WLUnUPeKjyrfntVwe/N6dCXpU+zL3Npg==", + "license": "MIT", + "dependencies": { + "@babel/helper-plugin-utils": "^7.8.0" + }, + "peerDependencies": { + "@babel/core": "^7.0.0-0" + } + }, + "node_modules/@babel/plugin-syntax-class-properties": { + "version": "7.12.13", + "resolved": "https://registry.npmjs.org/@babel/plugin-syntax-class-properties/-/plugin-syntax-class-properties-7.12.13.tgz", + "integrity": "sha512-fm4idjKla0YahUNgFNLCB0qySdsoPiZP3iQE3rky0mBUtMZ23yDJ9SJdg6dXTSDnulOVqiF3Hgr9nbXvXTQZYA==", + "license": "MIT", + "dependencies": { + "@babel/helper-plugin-utils": "^7.12.13" + }, + "peerDependencies": { + "@babel/core": "^7.0.0-0" + } + }, + "node_modules/@babel/plugin-syntax-class-static-block": { + "version": "7.14.5", + "resolved": "https://registry.npmjs.org/@babel/plugin-syntax-class-static-block/-/plugin-syntax-class-static-block-7.14.5.tgz", + "integrity": "sha512-b+YyPmr6ldyNnM6sqYeMWE+bgJcJpO6yS4QD7ymxgH34GBPNDM/THBh8iunyvKIZztiwLH4CJZ0RxTk9emgpjw==", + "license": "MIT", + "dependencies": { + "@babel/helper-plugin-utils": "^7.14.5" + }, + "engines": { + "node": ">=6.9.0" + }, + "peerDependencies": { + "@babel/core": "^7.0.0-0" + } + }, + "node_modules/@babel/plugin-syntax-decorators": { + "version": "7.27.1", + "resolved": "https://registry.npmjs.org/@babel/plugin-syntax-decorators/-/plugin-syntax-decorators-7.27.1.tgz", + "integrity": "sha512-YMq8Z87Lhl8EGkmb0MwYkt36QnxC+fzCgrl66ereamPlYToRpIk5nUjKUY3QKLWq8mwUB1BgbeXcTJhZOCDg5A==", + "license": "MIT", + "dependencies": { + "@babel/helper-plugin-utils": "^7.27.1" + }, + "engines": { + "node": ">=6.9.0" + }, + "peerDependencies": { + "@babel/core": "^7.0.0-0" + } + }, + "node_modules/@babel/plugin-syntax-dynamic-import": { + "version": "7.8.3", + "resolved": "https://registry.npmjs.org/@babel/plugin-syntax-dynamic-import/-/plugin-syntax-dynamic-import-7.8.3.tgz", + "integrity": "sha512-5gdGbFon+PszYzqs83S3E5mpi7/y/8M9eC90MRTZfduQOYW76ig6SOSPNe41IG5LoP3FGBn2N0RjVDSQiS94kQ==", + "license": "MIT", + "dependencies": { + "@babel/helper-plugin-utils": "^7.8.0" + }, + "peerDependencies": { + "@babel/core": "^7.0.0-0" + } + }, + "node_modules/@babel/plugin-syntax-export-default-from": { + "version": "7.27.1", + "resolved": "https://registry.npmjs.org/@babel/plugin-syntax-export-default-from/-/plugin-syntax-export-default-from-7.27.1.tgz", + "integrity": "sha512-eBC/3KSekshx19+N40MzjWqJd7KTEdOoLesAfa4IDFI8eRz5a47i5Oszus6zG/cwIXN63YhgLOMSSNJx49sENg==", + "license": "MIT", + "dependencies": { + "@babel/helper-plugin-utils": "^7.27.1" + }, + "engines": { + "node": ">=6.9.0" + }, + "peerDependencies": { + "@babel/core": "^7.0.0-0" + } + }, + "node_modules/@babel/plugin-syntax-flow": { + "version": "7.27.1", + "resolved": "https://registry.npmjs.org/@babel/plugin-syntax-flow/-/plugin-syntax-flow-7.27.1.tgz", + "integrity": "sha512-p9OkPbZ5G7UT1MofwYFigGebnrzGJacoBSQM0/6bi/PUMVE+qlWDD/OalvQKbwgQzU6dl0xAv6r4X7Jme0RYxA==", + "license": "MIT", + "dependencies": { + "@babel/helper-plugin-utils": "^7.27.1" + }, + "engines": { + "node": ">=6.9.0" + }, + "peerDependencies": { + "@babel/core": "^7.0.0-0" + } + }, + "node_modules/@babel/plugin-syntax-import-attributes": { + "version": "7.27.1", + "resolved": "https://registry.npmjs.org/@babel/plugin-syntax-import-attributes/-/plugin-syntax-import-attributes-7.27.1.tgz", + "integrity": "sha512-oFT0FrKHgF53f4vOsZGi2Hh3I35PfSmVs4IBFLFj4dnafP+hIWDLg3VyKmUHfLoLHlyxY4C7DGtmHuJgn+IGww==", + "license": "MIT", + "dependencies": { + "@babel/helper-plugin-utils": "^7.27.1" + }, + "engines": { + "node": ">=6.9.0" + }, + "peerDependencies": { + "@babel/core": "^7.0.0-0" + } + }, + "node_modules/@babel/plugin-syntax-import-meta": { + "version": "7.10.4", + "resolved": "https://registry.npmjs.org/@babel/plugin-syntax-import-meta/-/plugin-syntax-import-meta-7.10.4.tgz", + "integrity": "sha512-Yqfm+XDx0+Prh3VSeEQCPU81yC+JWZ2pDPFSS4ZdpfZhp4MkFMaDC1UqseovEKwSUpnIL7+vK+Clp7bfh0iD7g==", + "license": "MIT", + "dependencies": { + "@babel/helper-plugin-utils": "^7.10.4" + }, + "peerDependencies": { + "@babel/core": "^7.0.0-0" + } + }, + "node_modules/@babel/plugin-syntax-json-strings": { + "version": "7.8.3", + "resolved": "https://registry.npmjs.org/@babel/plugin-syntax-json-strings/-/plugin-syntax-json-strings-7.8.3.tgz", + "integrity": "sha512-lY6kdGpWHvjoe2vk4WrAapEuBR69EMxZl+RoGRhrFGNYVK8mOPAW8VfbT/ZgrFbXlDNiiaxQnAtgVCZ6jv30EA==", + "license": "MIT", + "dependencies": { + "@babel/helper-plugin-utils": "^7.8.0" + }, + "peerDependencies": { + "@babel/core": "^7.0.0-0" + } + }, + "node_modules/@babel/plugin-syntax-jsx": { + "version": "7.27.1", + "resolved": "https://registry.npmjs.org/@babel/plugin-syntax-jsx/-/plugin-syntax-jsx-7.27.1.tgz", + "integrity": "sha512-y8YTNIeKoyhGd9O0Jiyzyyqk8gdjnumGTQPsz0xOZOQ2RmkVJeZ1vmmfIvFEKqucBG6axJGBZDE/7iI5suUI/w==", + "license": "MIT", + "dependencies": { + "@babel/helper-plugin-utils": "^7.27.1" + }, + "engines": { + "node": ">=6.9.0" + }, + "peerDependencies": { + "@babel/core": "^7.0.0-0" + } + }, + "node_modules/@babel/plugin-syntax-logical-assignment-operators": { + "version": "7.10.4", + "resolved": "https://registry.npmjs.org/@babel/plugin-syntax-logical-assignment-operators/-/plugin-syntax-logical-assignment-operators-7.10.4.tgz", + "integrity": "sha512-d8waShlpFDinQ5MtvGU9xDAOzKH47+FFoney2baFIoMr952hKOLp1HR7VszoZvOsV/4+RRszNY7D17ba0te0ig==", + "license": "MIT", + "dependencies": { + "@babel/helper-plugin-utils": "^7.10.4" + }, + "peerDependencies": { + "@babel/core": "^7.0.0-0" + } + }, + "node_modules/@babel/plugin-syntax-nullish-coalescing-operator": { + "version": "7.8.3", + "resolved": "https://registry.npmjs.org/@babel/plugin-syntax-nullish-coalescing-operator/-/plugin-syntax-nullish-coalescing-operator-7.8.3.tgz", + "integrity": "sha512-aSff4zPII1u2QD7y+F8oDsz19ew4IGEJg9SVW+bqwpwtfFleiQDMdzA/R+UlWDzfnHFCxxleFT0PMIrR36XLNQ==", + "license": "MIT", + "dependencies": { + "@babel/helper-plugin-utils": "^7.8.0" + }, + "peerDependencies": { + "@babel/core": "^7.0.0-0" + } + }, + "node_modules/@babel/plugin-syntax-numeric-separator": { + "version": "7.10.4", + "resolved": "https://registry.npmjs.org/@babel/plugin-syntax-numeric-separator/-/plugin-syntax-numeric-separator-7.10.4.tgz", + "integrity": "sha512-9H6YdfkcK/uOnY/K7/aA2xpzaAgkQn37yzWUMRK7OaPOqOpGS1+n0H5hxT9AUw9EsSjPW8SVyMJwYRtWs3X3ug==", + "license": "MIT", + "dependencies": { + "@babel/helper-plugin-utils": "^7.10.4" + }, + "peerDependencies": { + "@babel/core": "^7.0.0-0" + } + }, + "node_modules/@babel/plugin-syntax-object-rest-spread": { + "version": "7.8.3", + "resolved": "https://registry.npmjs.org/@babel/plugin-syntax-object-rest-spread/-/plugin-syntax-object-rest-spread-7.8.3.tgz", + "integrity": "sha512-XoqMijGZb9y3y2XskN+P1wUGiVwWZ5JmoDRwx5+3GmEplNyVM2s2Dg8ILFQm8rWM48orGy5YpI5Bl8U1y7ydlA==", + "license": "MIT", + "dependencies": { + "@babel/helper-plugin-utils": "^7.8.0" + }, + "peerDependencies": { + "@babel/core": "^7.0.0-0" + } + }, + "node_modules/@babel/plugin-syntax-optional-catch-binding": { + "version": "7.8.3", + "resolved": "https://registry.npmjs.org/@babel/plugin-syntax-optional-catch-binding/-/plugin-syntax-optional-catch-binding-7.8.3.tgz", + "integrity": "sha512-6VPD0Pc1lpTqw0aKoeRTMiB+kWhAoT24PA+ksWSBrFtl5SIRVpZlwN3NNPQjehA2E/91FV3RjLWoVTglWcSV3Q==", + "license": "MIT", + "dependencies": { + "@babel/helper-plugin-utils": "^7.8.0" + }, + "peerDependencies": { + "@babel/core": "^7.0.0-0" + } + }, + "node_modules/@babel/plugin-syntax-optional-chaining": { + "version": "7.8.3", + "resolved": "https://registry.npmjs.org/@babel/plugin-syntax-optional-chaining/-/plugin-syntax-optional-chaining-7.8.3.tgz", + "integrity": "sha512-KoK9ErH1MBlCPxV0VANkXW2/dw4vlbGDrFgz8bmUsBGYkFRcbRwMh6cIJubdPrkxRwuGdtCk0v/wPTKbQgBjkg==", + "license": "MIT", + "dependencies": { + "@babel/helper-plugin-utils": "^7.8.0" + }, + "peerDependencies": { + "@babel/core": "^7.0.0-0" + } + }, + "node_modules/@babel/plugin-syntax-private-property-in-object": { + "version": "7.14.5", + "resolved": "https://registry.npmjs.org/@babel/plugin-syntax-private-property-in-object/-/plugin-syntax-private-property-in-object-7.14.5.tgz", + "integrity": "sha512-0wVnp9dxJ72ZUJDV27ZfbSj6iHLoytYZmh3rFcxNnvsJF3ktkzLDZPy/mA17HGsaQT3/DQsWYX1f1QGWkCoVUg==", + "license": "MIT", + "dependencies": { + "@babel/helper-plugin-utils": "^7.14.5" + }, + "engines": { + "node": ">=6.9.0" + }, + "peerDependencies": { + "@babel/core": "^7.0.0-0" + } + }, + "node_modules/@babel/plugin-syntax-top-level-await": { + "version": "7.14.5", + "resolved": "https://registry.npmjs.org/@babel/plugin-syntax-top-level-await/-/plugin-syntax-top-level-await-7.14.5.tgz", + "integrity": "sha512-hx++upLv5U1rgYfwe1xBQUhRmU41NEvpUvrp8jkrSCdvGSnM5/qdRMtylJ6PG5OFkBaHkbTAKTnd3/YyESRHFw==", + "license": "MIT", + "dependencies": { + "@babel/helper-plugin-utils": "^7.14.5" + }, + "engines": { + "node": ">=6.9.0" + }, + "peerDependencies": { + "@babel/core": "^7.0.0-0" + } + }, + "node_modules/@babel/plugin-syntax-typescript": { + "version": "7.27.1", + "resolved": "https://registry.npmjs.org/@babel/plugin-syntax-typescript/-/plugin-syntax-typescript-7.27.1.tgz", + "integrity": "sha512-xfYCBMxveHrRMnAWl1ZlPXOZjzkN82THFvLhQhFXFt81Z5HnN+EtUkZhv/zcKpmT3fzmWZB0ywiBrbC3vogbwQ==", + "license": "MIT", + "dependencies": { + "@babel/helper-plugin-utils": "^7.27.1" + }, + "engines": { + "node": ">=6.9.0" + }, + "peerDependencies": { + "@babel/core": "^7.0.0-0" + } + }, + "node_modules/@babel/plugin-transform-arrow-functions": { + "version": "7.27.1", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-arrow-functions/-/plugin-transform-arrow-functions-7.27.1.tgz", + "integrity": "sha512-8Z4TGic6xW70FKThA5HYEKKyBpOOsucTOD1DjU3fZxDg+K3zBJcXMFnt/4yQiZnf5+MiOMSXQ9PaEK/Ilh1DeA==", + "license": "MIT", + "dependencies": { + "@babel/helper-plugin-utils": "^7.27.1" + }, + "engines": { + "node": ">=6.9.0" + }, + "peerDependencies": { + "@babel/core": "^7.0.0-0" + } + }, + "node_modules/@babel/plugin-transform-async-generator-functions": { + "version": "7.27.1", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-async-generator-functions/-/plugin-transform-async-generator-functions-7.27.1.tgz", + "integrity": "sha512-eST9RrwlpaoJBDHShc+DS2SG4ATTi2MYNb4OxYkf3n+7eb49LWpnS+HSpVfW4x927qQwgk8A2hGNVaajAEw0EA==", + "license": "MIT", + "dependencies": { + "@babel/helper-plugin-utils": "^7.27.1", + "@babel/helper-remap-async-to-generator": "^7.27.1", + "@babel/traverse": "^7.27.1" + }, + "engines": { + "node": ">=6.9.0" + }, + "peerDependencies": { + "@babel/core": "^7.0.0-0" + } + }, + "node_modules/@babel/plugin-transform-async-to-generator": { + "version": "7.27.1", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-async-to-generator/-/plugin-transform-async-to-generator-7.27.1.tgz", + "integrity": "sha512-NREkZsZVJS4xmTr8qzE5y8AfIPqsdQfRuUiLRTEzb7Qii8iFWCyDKaUV2c0rCuh4ljDZ98ALHP/PetiBV2nddA==", + "license": "MIT", + "dependencies": { + "@babel/helper-module-imports": "^7.27.1", + "@babel/helper-plugin-utils": "^7.27.1", + "@babel/helper-remap-async-to-generator": "^7.27.1" + }, + "engines": { + "node": ">=6.9.0" + }, + "peerDependencies": { + "@babel/core": "^7.0.0-0" + } + }, + "node_modules/@babel/plugin-transform-block-scoping": { + "version": "7.27.5", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-block-scoping/-/plugin-transform-block-scoping-7.27.5.tgz", + "integrity": "sha512-JF6uE2s67f0y2RZcm2kpAUEbD50vH62TyWVebxwHAlbSdM49VqPz8t4a1uIjp4NIOIZ4xzLfjY5emt/RCyC7TQ==", + "license": "MIT", + "dependencies": { + "@babel/helper-plugin-utils": "^7.27.1" + }, + "engines": { + "node": ">=6.9.0" + }, + "peerDependencies": { + "@babel/core": "^7.0.0-0" + } + }, + "node_modules/@babel/plugin-transform-class-properties": { + "version": "7.27.1", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-class-properties/-/plugin-transform-class-properties-7.27.1.tgz", + "integrity": "sha512-D0VcalChDMtuRvJIu3U/fwWjf8ZMykz5iZsg77Nuj821vCKI3zCyRLwRdWbsuJ/uRwZhZ002QtCqIkwC/ZkvbA==", + "license": "MIT", + "dependencies": { + "@babel/helper-create-class-features-plugin": "^7.27.1", + "@babel/helper-plugin-utils": "^7.27.1" + }, + "engines": { + "node": ">=6.9.0" + }, + "peerDependencies": { + "@babel/core": "^7.0.0-0" + } + }, + "node_modules/@babel/plugin-transform-classes": { + "version": "7.27.1", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-classes/-/plugin-transform-classes-7.27.1.tgz", + "integrity": "sha512-7iLhfFAubmpeJe/Wo2TVuDrykh/zlWXLzPNdL0Jqn/Xu8R3QQ8h9ff8FQoISZOsw74/HFqFI7NX63HN7QFIHKA==", + "license": "MIT", + "dependencies": { + "@babel/helper-annotate-as-pure": "^7.27.1", + "@babel/helper-compilation-targets": "^7.27.1", + "@babel/helper-plugin-utils": "^7.27.1", + "@babel/helper-replace-supers": "^7.27.1", + "@babel/traverse": "^7.27.1", + "globals": "^11.1.0" + }, + "engines": { + "node": ">=6.9.0" + }, + "peerDependencies": { + "@babel/core": "^7.0.0-0" + } + }, + "node_modules/@babel/plugin-transform-computed-properties": { + "version": "7.27.1", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-computed-properties/-/plugin-transform-computed-properties-7.27.1.tgz", + "integrity": "sha512-lj9PGWvMTVksbWiDT2tW68zGS/cyo4AkZ/QTp0sQT0mjPopCmrSkzxeXkznjqBxzDI6TclZhOJbBmbBLjuOZUw==", + "license": "MIT", + "dependencies": { + "@babel/helper-plugin-utils": "^7.27.1", + "@babel/template": "^7.27.1" + }, + "engines": { + "node": ">=6.9.0" + }, + "peerDependencies": { + "@babel/core": "^7.0.0-0" + } + }, + "node_modules/@babel/plugin-transform-destructuring": { + "version": "7.27.3", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-destructuring/-/plugin-transform-destructuring-7.27.3.tgz", + "integrity": "sha512-s4Jrok82JpiaIprtY2nHsYmrThKvvwgHwjgd7UMiYhZaN0asdXNLr0y+NjTfkA7SyQE5i2Fb7eawUOZmLvyqOA==", + "license": "MIT", + "dependencies": { + "@babel/helper-plugin-utils": "^7.27.1" + }, + "engines": { + "node": ">=6.9.0" + }, + "peerDependencies": { + "@babel/core": "^7.0.0-0" + } + }, + "node_modules/@babel/plugin-transform-export-namespace-from": { + "version": "7.27.1", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-export-namespace-from/-/plugin-transform-export-namespace-from-7.27.1.tgz", + "integrity": "sha512-tQvHWSZ3/jH2xuq/vZDy0jNn+ZdXJeM8gHvX4lnJmsc3+50yPlWdZXIc5ay+umX+2/tJIqHqiEqcJvxlmIvRvQ==", + "license": "MIT", + "dependencies": { + "@babel/helper-plugin-utils": "^7.27.1" + }, + "engines": { + "node": ">=6.9.0" + }, + "peerDependencies": { + "@babel/core": "^7.0.0-0" + } + }, + "node_modules/@babel/plugin-transform-flow-strip-types": { + "version": "7.27.1", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-flow-strip-types/-/plugin-transform-flow-strip-types-7.27.1.tgz", + "integrity": "sha512-G5eDKsu50udECw7DL2AcsysXiQyB7Nfg521t2OAJ4tbfTJ27doHLeF/vlI1NZGlLdbb/v+ibvtL1YBQqYOwJGg==", + "license": "MIT", + "dependencies": { + "@babel/helper-plugin-utils": "^7.27.1", + "@babel/plugin-syntax-flow": "^7.27.1" + }, + "engines": { + "node": ">=6.9.0" + }, + "peerDependencies": { + "@babel/core": "^7.0.0-0" + } + }, + "node_modules/@babel/plugin-transform-for-of": { + "version": "7.27.1", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-for-of/-/plugin-transform-for-of-7.27.1.tgz", + "integrity": "sha512-BfbWFFEJFQzLCQ5N8VocnCtA8J1CLkNTe2Ms2wocj75dd6VpiqS5Z5quTYcUoo4Yq+DN0rtikODccuv7RU81sw==", + "license": "MIT", + "dependencies": { + "@babel/helper-plugin-utils": "^7.27.1", + "@babel/helper-skip-transparent-expression-wrappers": "^7.27.1" + }, + "engines": { + "node": ">=6.9.0" + }, + "peerDependencies": { + "@babel/core": "^7.0.0-0" + } + }, + "node_modules/@babel/plugin-transform-function-name": { + "version": "7.27.1", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-function-name/-/plugin-transform-function-name-7.27.1.tgz", + "integrity": "sha512-1bQeydJF9Nr1eBCMMbC+hdwmRlsv5XYOMu03YSWFwNs0HsAmtSxxF1fyuYPqemVldVyFmlCU7w8UE14LupUSZQ==", + "license": "MIT", + "dependencies": { + "@babel/helper-compilation-targets": "^7.27.1", + "@babel/helper-plugin-utils": "^7.27.1", + "@babel/traverse": "^7.27.1" + }, + "engines": { + "node": ">=6.9.0" + }, + "peerDependencies": { + "@babel/core": "^7.0.0-0" + } + }, + "node_modules/@babel/plugin-transform-literals": { + "version": "7.27.1", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-literals/-/plugin-transform-literals-7.27.1.tgz", + "integrity": "sha512-0HCFSepIpLTkLcsi86GG3mTUzxV5jpmbv97hTETW3yzrAij8aqlD36toB1D0daVFJM8NK6GvKO0gslVQmm+zZA==", + "license": "MIT", + "dependencies": { + "@babel/helper-plugin-utils": "^7.27.1" + }, + "engines": { + "node": ">=6.9.0" + }, + "peerDependencies": { + "@babel/core": "^7.0.0-0" + } + }, + "node_modules/@babel/plugin-transform-logical-assignment-operators": { + "version": "7.27.1", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-logical-assignment-operators/-/plugin-transform-logical-assignment-operators-7.27.1.tgz", + "integrity": "sha512-SJvDs5dXxiae4FbSL1aBJlG4wvl594N6YEVVn9e3JGulwioy6z3oPjx/sQBO3Y4NwUu5HNix6KJ3wBZoewcdbw==", + "license": "MIT", + "dependencies": { + "@babel/helper-plugin-utils": "^7.27.1" + }, + "engines": { + "node": ">=6.9.0" + }, + "peerDependencies": { + "@babel/core": "^7.0.0-0" + } + }, + "node_modules/@babel/plugin-transform-modules-commonjs": { + "version": "7.27.1", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-modules-commonjs/-/plugin-transform-modules-commonjs-7.27.1.tgz", + "integrity": "sha512-OJguuwlTYlN0gBZFRPqwOGNWssZjfIUdS7HMYtN8c1KmwpwHFBwTeFZrg9XZa+DFTitWOW5iTAG7tyCUPsCCyw==", + "license": "MIT", + "dependencies": { + "@babel/helper-module-transforms": "^7.27.1", + "@babel/helper-plugin-utils": "^7.27.1" + }, + "engines": { + "node": ">=6.9.0" + }, + "peerDependencies": { + "@babel/core": "^7.0.0-0" + } + }, + "node_modules/@babel/plugin-transform-named-capturing-groups-regex": { + "version": "7.27.1", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-named-capturing-groups-regex/-/plugin-transform-named-capturing-groups-regex-7.27.1.tgz", + "integrity": "sha512-SstR5JYy8ddZvD6MhV0tM/j16Qds4mIpJTOd1Yu9J9pJjH93bxHECF7pgtc28XvkzTD6Pxcm/0Z73Hvk7kb3Ng==", + "license": "MIT", + "dependencies": { + "@babel/helper-create-regexp-features-plugin": "^7.27.1", + "@babel/helper-plugin-utils": "^7.27.1" + }, + "engines": { + "node": ">=6.9.0" + }, + "peerDependencies": { + "@babel/core": "^7.0.0" + } + }, + "node_modules/@babel/plugin-transform-nullish-coalescing-operator": { + "version": "7.27.1", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-nullish-coalescing-operator/-/plugin-transform-nullish-coalescing-operator-7.27.1.tgz", + "integrity": "sha512-aGZh6xMo6q9vq1JGcw58lZ1Z0+i0xB2x0XaauNIUXd6O1xXc3RwoWEBlsTQrY4KQ9Jf0s5rgD6SiNkaUdJegTA==", + "license": "MIT", + "dependencies": { + "@babel/helper-plugin-utils": "^7.27.1" + }, + "engines": { + "node": ">=6.9.0" + }, + "peerDependencies": { + "@babel/core": "^7.0.0-0" + } + }, + "node_modules/@babel/plugin-transform-numeric-separator": { + "version": "7.27.1", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-numeric-separator/-/plugin-transform-numeric-separator-7.27.1.tgz", + "integrity": "sha512-fdPKAcujuvEChxDBJ5c+0BTaS6revLV7CJL08e4m3de8qJfNIuCc2nc7XJYOjBoTMJeqSmwXJ0ypE14RCjLwaw==", + "license": "MIT", + "dependencies": { + "@babel/helper-plugin-utils": "^7.27.1" + }, + "engines": { + "node": ">=6.9.0" + }, + "peerDependencies": { + "@babel/core": "^7.0.0-0" + } + }, + "node_modules/@babel/plugin-transform-object-rest-spread": { + "version": "7.27.3", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-object-rest-spread/-/plugin-transform-object-rest-spread-7.27.3.tgz", + "integrity": "sha512-7ZZtznF9g4l2JCImCo5LNKFHB5eXnN39lLtLY5Tg+VkR0jwOt7TBciMckuiQIOIW7L5tkQOCh3bVGYeXgMx52Q==", + "license": "MIT", + "dependencies": { + "@babel/helper-compilation-targets": "^7.27.2", + "@babel/helper-plugin-utils": "^7.27.1", + "@babel/plugin-transform-destructuring": "^7.27.3", + "@babel/plugin-transform-parameters": "^7.27.1" + }, + "engines": { + "node": ">=6.9.0" + }, + "peerDependencies": { + "@babel/core": "^7.0.0-0" + } + }, + "node_modules/@babel/plugin-transform-optional-catch-binding": { + "version": "7.27.1", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-optional-catch-binding/-/plugin-transform-optional-catch-binding-7.27.1.tgz", + "integrity": "sha512-txEAEKzYrHEX4xSZN4kJ+OfKXFVSWKB2ZxM9dpcE3wT7smwkNmXo5ORRlVzMVdJbD+Q8ILTgSD7959uj+3Dm3Q==", + "license": "MIT", + "dependencies": { + "@babel/helper-plugin-utils": "^7.27.1" + }, + "engines": { + "node": ">=6.9.0" + }, + "peerDependencies": { + "@babel/core": "^7.0.0-0" + } + }, + "node_modules/@babel/plugin-transform-optional-chaining": { + "version": "7.27.1", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-optional-chaining/-/plugin-transform-optional-chaining-7.27.1.tgz", + "integrity": "sha512-BQmKPPIuc8EkZgNKsv0X4bPmOoayeu4F1YCwx2/CfmDSXDbp7GnzlUH+/ul5VGfRg1AoFPsrIThlEBj2xb4CAg==", + "license": "MIT", + "dependencies": { + "@babel/helper-plugin-utils": "^7.27.1", + "@babel/helper-skip-transparent-expression-wrappers": "^7.27.1" + }, + "engines": { + "node": ">=6.9.0" + }, + "peerDependencies": { + "@babel/core": "^7.0.0-0" + } + }, + "node_modules/@babel/plugin-transform-parameters": { + "version": "7.27.1", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-parameters/-/plugin-transform-parameters-7.27.1.tgz", + "integrity": "sha512-018KRk76HWKeZ5l4oTj2zPpSh+NbGdt0st5S6x0pga6HgrjBOJb24mMDHorFopOOd6YHkLgOZ+zaCjZGPO4aKg==", + "license": "MIT", + "dependencies": { + "@babel/helper-plugin-utils": "^7.27.1" + }, + "engines": { + "node": ">=6.9.0" + }, + "peerDependencies": { + "@babel/core": "^7.0.0-0" + } + }, + "node_modules/@babel/plugin-transform-private-methods": { + "version": "7.27.1", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-private-methods/-/plugin-transform-private-methods-7.27.1.tgz", + "integrity": "sha512-10FVt+X55AjRAYI9BrdISN9/AQWHqldOeZDUoLyif1Kn05a56xVBXb8ZouL8pZ9jem8QpXaOt8TS7RHUIS+GPA==", + "license": "MIT", + "dependencies": { + "@babel/helper-create-class-features-plugin": "^7.27.1", + "@babel/helper-plugin-utils": "^7.27.1" + }, + "engines": { + "node": ">=6.9.0" + }, + "peerDependencies": { + "@babel/core": "^7.0.0-0" + } + }, + "node_modules/@babel/plugin-transform-private-property-in-object": { + "version": "7.27.1", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-private-property-in-object/-/plugin-transform-private-property-in-object-7.27.1.tgz", + "integrity": "sha512-5J+IhqTi1XPa0DXF83jYOaARrX+41gOewWbkPyjMNRDqgOCqdffGh8L3f/Ek5utaEBZExjSAzcyjmV9SSAWObQ==", + "license": "MIT", + "dependencies": { + "@babel/helper-annotate-as-pure": "^7.27.1", + "@babel/helper-create-class-features-plugin": "^7.27.1", + "@babel/helper-plugin-utils": "^7.27.1" + }, + "engines": { + "node": ">=6.9.0" + }, + "peerDependencies": { + "@babel/core": "^7.0.0-0" + } + }, + "node_modules/@babel/plugin-transform-react-display-name": { + "version": "7.27.1", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-react-display-name/-/plugin-transform-react-display-name-7.27.1.tgz", + "integrity": "sha512-p9+Vl3yuHPmkirRrg021XiP+EETmPMQTLr6Ayjj85RLNEbb3Eya/4VI0vAdzQG9SEAl2Lnt7fy5lZyMzjYoZQQ==", + "license": "MIT", + "dependencies": { + "@babel/helper-plugin-utils": "^7.27.1" + }, + "engines": { + "node": ">=6.9.0" + }, + "peerDependencies": { + "@babel/core": "^7.0.0-0" + } + }, + "node_modules/@babel/plugin-transform-react-jsx": { + "version": "7.27.1", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-react-jsx/-/plugin-transform-react-jsx-7.27.1.tgz", + "integrity": "sha512-2KH4LWGSrJIkVf5tSiBFYuXDAoWRq2MMwgivCf+93dd0GQi8RXLjKA/0EvRnVV5G0hrHczsquXuD01L8s6dmBw==", + "license": "MIT", + "dependencies": { + "@babel/helper-annotate-as-pure": "^7.27.1", + "@babel/helper-module-imports": "^7.27.1", + "@babel/helper-plugin-utils": "^7.27.1", + "@babel/plugin-syntax-jsx": "^7.27.1", + "@babel/types": "^7.27.1" + }, + "engines": { + "node": ">=6.9.0" + }, + "peerDependencies": { + "@babel/core": "^7.0.0-0" + } + }, + "node_modules/@babel/plugin-transform-react-jsx-development": { + "version": "7.27.1", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-react-jsx-development/-/plugin-transform-react-jsx-development-7.27.1.tgz", + "integrity": "sha512-ykDdF5yI4f1WrAolLqeF3hmYU12j9ntLQl/AOG1HAS21jxyg1Q0/J/tpREuYLfatGdGmXp/3yS0ZA76kOlVq9Q==", + "license": "MIT", + "dependencies": { + "@babel/plugin-transform-react-jsx": "^7.27.1" + }, + "engines": { + "node": ">=6.9.0" + }, + "peerDependencies": { + "@babel/core": "^7.0.0-0" + } + }, + "node_modules/@babel/plugin-transform-react-jsx-self": { + "version": "7.27.1", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-react-jsx-self/-/plugin-transform-react-jsx-self-7.27.1.tgz", + "integrity": "sha512-6UzkCs+ejGdZ5mFFC/OCUrv028ab2fp1znZmCZjAOBKiBK2jXD1O+BPSfX8X2qjJ75fZBMSnQn3Rq2mrBJK2mw==", + "license": "MIT", + "dependencies": { + "@babel/helper-plugin-utils": "^7.27.1" + }, + "engines": { + "node": ">=6.9.0" + }, + "peerDependencies": { + "@babel/core": "^7.0.0-0" + } + }, + "node_modules/@babel/plugin-transform-react-jsx-source": { + "version": "7.27.1", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-react-jsx-source/-/plugin-transform-react-jsx-source-7.27.1.tgz", + "integrity": "sha512-zbwoTsBruTeKB9hSq73ha66iFeJHuaFkUbwvqElnygoNbj/jHRsSeokowZFN3CZ64IvEqcmmkVe89OPXc7ldAw==", + "license": "MIT", + "dependencies": { + "@babel/helper-plugin-utils": "^7.27.1" + }, + "engines": { + "node": ">=6.9.0" + }, + "peerDependencies": { + "@babel/core": "^7.0.0-0" + } + }, + "node_modules/@babel/plugin-transform-react-pure-annotations": { + "version": "7.27.1", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-react-pure-annotations/-/plugin-transform-react-pure-annotations-7.27.1.tgz", + "integrity": "sha512-JfuinvDOsD9FVMTHpzA/pBLisxpv1aSf+OIV8lgH3MuWrks19R27e6a6DipIg4aX1Zm9Wpb04p8wljfKrVSnPA==", + "license": "MIT", + "dependencies": { + "@babel/helper-annotate-as-pure": "^7.27.1", + "@babel/helper-plugin-utils": "^7.27.1" + }, + "engines": { + "node": ">=6.9.0" + }, + "peerDependencies": { + "@babel/core": "^7.0.0-0" + } + }, + "node_modules/@babel/plugin-transform-regenerator": { + "version": "7.27.5", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-regenerator/-/plugin-transform-regenerator-7.27.5.tgz", + "integrity": "sha512-uhB8yHerfe3MWnuLAhEbeQ4afVoqv8BQsPqrTv7e/jZ9y00kJL6l9a/f4OWaKxotmjzewfEyXE1vgDJenkQ2/Q==", + "license": "MIT", + "dependencies": { + "@babel/helper-plugin-utils": "^7.27.1" + }, + "engines": { + "node": ">=6.9.0" + }, + "peerDependencies": { + "@babel/core": "^7.0.0-0" + } + }, + "node_modules/@babel/plugin-transform-runtime": { + "version": "7.27.4", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-runtime/-/plugin-transform-runtime-7.27.4.tgz", + "integrity": "sha512-D68nR5zxU64EUzV8i7T3R5XP0Xhrou/amNnddsRQssx6GrTLdZl1rLxyjtVZBd+v/NVX4AbTPOB5aU8thAZV1A==", + "license": "MIT", + "dependencies": { + "@babel/helper-module-imports": "^7.27.1", + "@babel/helper-plugin-utils": "^7.27.1", + "babel-plugin-polyfill-corejs2": "^0.4.10", + "babel-plugin-polyfill-corejs3": "^0.11.0", + "babel-plugin-polyfill-regenerator": "^0.6.1", + "semver": "^6.3.1" + }, + "engines": { + "node": ">=6.9.0" + }, + "peerDependencies": { + "@babel/core": "^7.0.0-0" + } + }, + "node_modules/@babel/plugin-transform-shorthand-properties": { + "version": "7.27.1", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-shorthand-properties/-/plugin-transform-shorthand-properties-7.27.1.tgz", + "integrity": "sha512-N/wH1vcn4oYawbJ13Y/FxcQrWk63jhfNa7jef0ih7PHSIHX2LB7GWE1rkPrOnka9kwMxb6hMl19p7lidA+EHmQ==", + "license": "MIT", + "dependencies": { + "@babel/helper-plugin-utils": "^7.27.1" + }, + "engines": { + "node": ">=6.9.0" + }, + "peerDependencies": { + "@babel/core": "^7.0.0-0" + } + }, + "node_modules/@babel/plugin-transform-spread": { + "version": "7.27.1", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-spread/-/plugin-transform-spread-7.27.1.tgz", + "integrity": "sha512-kpb3HUqaILBJcRFVhFUs6Trdd4mkrzcGXss+6/mxUd273PfbWqSDHRzMT2234gIg2QYfAjvXLSquP1xECSg09Q==", + "license": "MIT", + "dependencies": { + "@babel/helper-plugin-utils": "^7.27.1", + "@babel/helper-skip-transparent-expression-wrappers": "^7.27.1" + }, + "engines": { + "node": ">=6.9.0" + }, + "peerDependencies": { + "@babel/core": "^7.0.0-0" + } + }, + "node_modules/@babel/plugin-transform-sticky-regex": { + "version": "7.27.1", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-sticky-regex/-/plugin-transform-sticky-regex-7.27.1.tgz", + "integrity": "sha512-lhInBO5bi/Kowe2/aLdBAawijx+q1pQzicSgnkB6dUPc1+RC8QmJHKf2OjvU+NZWitguJHEaEmbV6VWEouT58g==", + "license": "MIT", + "dependencies": { + "@babel/helper-plugin-utils": "^7.27.1" + }, + "engines": { + "node": ">=6.9.0" + }, + "peerDependencies": { + "@babel/core": "^7.0.0-0" + } + }, + "node_modules/@babel/plugin-transform-template-literals": { + "version": "7.27.1", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-template-literals/-/plugin-transform-template-literals-7.27.1.tgz", + "integrity": "sha512-fBJKiV7F2DxZUkg5EtHKXQdbsbURW3DZKQUWphDum0uRP6eHGGa/He9mc0mypL680pb+e/lDIthRohlv8NCHkg==", + "license": "MIT", + "dependencies": { + "@babel/helper-plugin-utils": "^7.27.1" + }, + "engines": { + "node": ">=6.9.0" + }, + "peerDependencies": { + "@babel/core": "^7.0.0-0" + } + }, + "node_modules/@babel/plugin-transform-typescript": { + "version": "7.27.1", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-typescript/-/plugin-transform-typescript-7.27.1.tgz", + "integrity": "sha512-Q5sT5+O4QUebHdbwKedFBEwRLb02zJ7r4A5Gg2hUoLuU3FjdMcyqcywqUrLCaDsFCxzokf7u9kuy7qz51YUuAg==", + "license": "MIT", + "dependencies": { + "@babel/helper-annotate-as-pure": "^7.27.1", + "@babel/helper-create-class-features-plugin": "^7.27.1", + "@babel/helper-plugin-utils": "^7.27.1", + "@babel/helper-skip-transparent-expression-wrappers": "^7.27.1", + "@babel/plugin-syntax-typescript": "^7.27.1" + }, + "engines": { + "node": ">=6.9.0" + }, + "peerDependencies": { + "@babel/core": "^7.0.0-0" + } + }, + "node_modules/@babel/plugin-transform-unicode-regex": { + "version": "7.27.1", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-unicode-regex/-/plugin-transform-unicode-regex-7.27.1.tgz", + "integrity": "sha512-xvINq24TRojDuyt6JGtHmkVkrfVV3FPT16uytxImLeBZqW3/H52yN+kM1MGuyPkIQxrzKwPHs5U/MP3qKyzkGw==", + "license": "MIT", + "dependencies": { + "@babel/helper-create-regexp-features-plugin": "^7.27.1", + "@babel/helper-plugin-utils": "^7.27.1" + }, + "engines": { + "node": ">=6.9.0" + }, + "peerDependencies": { + "@babel/core": "^7.0.0-0" + } + }, + "node_modules/@babel/preset-react": { + "version": "7.27.1", + "resolved": "https://registry.npmjs.org/@babel/preset-react/-/preset-react-7.27.1.tgz", + "integrity": "sha512-oJHWh2gLhU9dW9HHr42q0cI0/iHHXTLGe39qvpAZZzagHy0MzYLCnCVV0symeRvzmjHyVU7mw2K06E6u/JwbhA==", + "license": "MIT", + "dependencies": { + "@babel/helper-plugin-utils": "^7.27.1", + "@babel/helper-validator-option": "^7.27.1", + "@babel/plugin-transform-react-display-name": "^7.27.1", + "@babel/plugin-transform-react-jsx": "^7.27.1", + "@babel/plugin-transform-react-jsx-development": "^7.27.1", + "@babel/plugin-transform-react-pure-annotations": "^7.27.1" + }, + "engines": { + "node": ">=6.9.0" + }, + "peerDependencies": { + "@babel/core": "^7.0.0-0" + } + }, + "node_modules/@babel/preset-typescript": { + "version": "7.27.1", + "resolved": "https://registry.npmjs.org/@babel/preset-typescript/-/preset-typescript-7.27.1.tgz", + "integrity": "sha512-l7WfQfX0WK4M0v2RudjuQK4u99BS6yLHYEmdtVPP7lKV013zr9DygFuWNlnbvQ9LR+LS0Egz/XAvGx5U9MX0fQ==", + "license": "MIT", + "dependencies": { + "@babel/helper-plugin-utils": "^7.27.1", + "@babel/helper-validator-option": "^7.27.1", + "@babel/plugin-syntax-jsx": "^7.27.1", + "@babel/plugin-transform-modules-commonjs": "^7.27.1", + "@babel/plugin-transform-typescript": "^7.27.1" + }, + "engines": { + "node": ">=6.9.0" + }, + "peerDependencies": { + "@babel/core": "^7.0.0-0" + } + }, + "node_modules/@babel/runtime": { + "version": "7.27.1", + "resolved": "https://registry.npmjs.org/@babel/runtime/-/runtime-7.27.1.tgz", + "integrity": "sha512-1x3D2xEk2fRo3PAhwQwu5UubzgiVWSXTBfWpVd2Mx2AzRqJuDJCsgaDVZ7HB5iGzDW1Hl1sWN2mFyKjmR9uAog==", + "license": "MIT", + "engines": { + "node": ">=6.9.0" + } + }, + "node_modules/@babel/template": { + "version": "7.27.2", + "resolved": "https://registry.npmjs.org/@babel/template/-/template-7.27.2.tgz", + "integrity": "sha512-LPDZ85aEJyYSd18/DkjNh4/y1ntkE5KwUHWTiqgRxruuZL2F1yuHligVHLvcHY2vMHXttKFpJn6LwfI7cw7ODw==", + "license": "MIT", + "dependencies": { + "@babel/code-frame": "^7.27.1", + "@babel/parser": "^7.27.2", + "@babel/types": "^7.27.1" + }, + "engines": { + "node": ">=6.9.0" + } + }, + "node_modules/@babel/traverse": { + "version": "7.27.1", + "resolved": "https://registry.npmjs.org/@babel/traverse/-/traverse-7.27.1.tgz", + "integrity": "sha512-ZCYtZciz1IWJB4U61UPu4KEaqyfj+r5T1Q5mqPo+IBpcG9kHv30Z0aD8LXPgC1trYa6rK0orRyAhqUgk4MjmEg==", + "license": "MIT", + "dependencies": { + "@babel/code-frame": "^7.27.1", + "@babel/generator": "^7.27.1", + "@babel/parser": "^7.27.1", + "@babel/template": "^7.27.1", + "@babel/types": "^7.27.1", + "debug": "^4.3.1", + "globals": "^11.1.0" + }, + "engines": { + "node": ">=6.9.0" + } + }, + "node_modules/@babel/traverse--for-generate-function-map": { + "name": "@babel/traverse", + "version": "7.27.4", + "resolved": "https://registry.npmjs.org/@babel/traverse/-/traverse-7.27.4.tgz", + "integrity": "sha512-oNcu2QbHqts9BtOWJosOVJapWjBDSxGCpFvikNR5TGDYDQf3JwpIoMzIKrvfoti93cLfPJEG4tH9SPVeyCGgdA==", + "license": "MIT", + "dependencies": { + "@babel/code-frame": "^7.27.1", + "@babel/generator": "^7.27.3", + "@babel/parser": "^7.27.4", + "@babel/template": "^7.27.2", + "@babel/types": "^7.27.3", + "debug": "^4.3.1", + "globals": "^11.1.0" + }, + "engines": { + "node": ">=6.9.0" + } + }, + "node_modules/@babel/types": { + "version": "7.27.6", + "resolved": "https://registry.npmjs.org/@babel/types/-/types-7.27.6.tgz", + "integrity": "sha512-ETyHEk2VHHvl9b9jZP5IHPavHYk57EhanlRRuae9XCpb/j5bDCbPPMOBfCWhnl/7EDJz0jEMCi/RhccCE8r1+Q==", + "license": "MIT", + "dependencies": { + "@babel/helper-string-parser": "^7.27.1", + "@babel/helper-validator-identifier": "^7.27.1" + }, + "engines": { + "node": ">=6.9.0" + } + }, + "node_modules/@bcoe/v8-coverage": { + "version": "0.2.3", + "resolved": "https://registry.npmjs.org/@bcoe/v8-coverage/-/v8-coverage-0.2.3.tgz", + "integrity": "sha512-0hYQ8SB4Db5zvZB4axdMHGwEaQjkZzFjQiN9LVYvIFB2nSUHW9tYpxWriPrWDASIxiaXax83REcLxuSdnGPZtw==", + "dev": true, + "license": "MIT" + }, + "node_modules/@egjs/hammerjs": { + "version": "2.0.17", + "resolved": "https://registry.npmjs.org/@egjs/hammerjs/-/hammerjs-2.0.17.tgz", + "integrity": "sha512-XQsZgjm2EcVUiZQf11UBJQfmZeEmOW8DpI1gsFeln6w0ae0ii4dMQEQ0kjl6DspdWX1aGY1/loyXnP0JS06e/A==", + "license": "MIT", + "dependencies": { + "@types/hammerjs": "^2.0.36" + }, + "engines": { + "node": ">=0.8.0" + } + }, + "node_modules/@expo/cli": { + "version": "0.24.14", + "resolved": "https://registry.npmjs.org/@expo/cli/-/cli-0.24.14.tgz", + "integrity": "sha512-o+QYyfIBhSRTgaywKTLJhm2Fg5PrSeUVCXS+uQySamgoMjLNhHa8QwE64mW/FmJr5hZLiqUEQxb60FK4JcyqXg==", + "license": "MIT", + "dependencies": { + "@0no-co/graphql.web": "^1.0.8", + "@babel/runtime": "^7.20.0", + "@expo/code-signing-certificates": "^0.0.5", + "@expo/config": "~11.0.10", + "@expo/config-plugins": "~10.0.2", + "@expo/devcert": "^1.1.2", + "@expo/env": "~1.0.5", + "@expo/image-utils": "^0.7.4", + "@expo/json-file": "^9.1.4", + "@expo/metro-config": "~0.20.14", + "@expo/osascript": "^2.2.4", + "@expo/package-manager": "^1.8.4", + "@expo/plist": "^0.3.4", + "@expo/prebuild-config": "^9.0.6", + "@expo/spawn-async": "^1.7.2", + "@expo/ws-tunnel": "^1.0.1", + "@expo/xcpretty": "^4.3.0", + "@react-native/dev-middleware": "0.79.3", + "@urql/core": "^5.0.6", + "@urql/exchange-retry": "^1.3.0", + "accepts": "^1.3.8", + "arg": "^5.0.2", + "better-opn": "~3.0.2", + "bplist-creator": "0.1.0", + "bplist-parser": "^0.3.1", + "chalk": "^4.0.0", + "ci-info": "^3.3.0", + "compression": "^1.7.4", + "connect": "^3.7.0", + "debug": "^4.3.4", + "env-editor": "^0.4.1", + "freeport-async": "^2.0.0", + "getenv": "^2.0.0", + "glob": "^10.4.2", + "lan-network": "^0.1.6", + "minimatch": "^9.0.0", + "node-forge": "^1.3.1", + "npm-package-arg": "^11.0.0", + "ora": "^3.4.0", + "picomatch": "^3.0.1", + "pretty-bytes": "^5.6.0", + "pretty-format": "^29.7.0", + "progress": "^2.0.3", + "prompts": "^2.3.2", + "qrcode-terminal": "0.11.0", + "require-from-string": "^2.0.2", + "requireg": "^0.2.2", + "resolve": "^1.22.2", + "resolve-from": "^5.0.0", + "resolve.exports": "^2.0.3", + "semver": "^7.6.0", + "send": "^0.19.0", + "slugify": "^1.3.4", + "source-map-support": "~0.5.21", + "stacktrace-parser": "^0.1.10", + "structured-headers": "^0.4.1", + "tar": "^7.4.3", + "terminal-link": "^2.1.1", + "undici": "^6.18.2", + "wrap-ansi": "^7.0.0", + "ws": "^8.12.1" + }, + "bin": { + "expo-internal": "build/bin/cli" + } + }, + "node_modules/@expo/cli/node_modules/getenv": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/getenv/-/getenv-2.0.0.tgz", + "integrity": "sha512-VilgtJj/ALgGY77fiLam5iD336eSWi96Q15JSAG1zi8NRBysm3LXKdGnHb4m5cuyxvOLQQKWpBZAT6ni4FI2iQ==", + "license": "MIT", + "engines": { + "node": ">=6" + } + }, + "node_modules/@expo/cli/node_modules/semver": { + "version": "7.7.2", + "resolved": "https://registry.npmjs.org/semver/-/semver-7.7.2.tgz", + "integrity": "sha512-RF0Fw+rO5AMf9MAyaRXI4AV0Ulj5lMHqVxxdSgiVbixSCXoEmmX/jk0CuJw4+3SqroYO9VoUh+HcuJivvtJemA==", + "license": "ISC", + "bin": { + "semver": "bin/semver.js" + }, + "engines": { + "node": ">=10" + } + }, + "node_modules/@expo/code-signing-certificates": { + "version": "0.0.5", + "resolved": "https://registry.npmjs.org/@expo/code-signing-certificates/-/code-signing-certificates-0.0.5.tgz", + "integrity": "sha512-BNhXkY1bblxKZpltzAx98G2Egj9g1Q+JRcvR7E99DOj862FTCX+ZPsAUtPTr7aHxwtrL7+fL3r0JSmM9kBm+Bw==", + "license": "MIT", + "dependencies": { + "node-forge": "^1.2.1", + "nullthrows": "^1.1.1" + } + }, + "node_modules/@expo/config": { + "version": "11.0.10", + "resolved": "https://registry.npmjs.org/@expo/config/-/config-11.0.10.tgz", + "integrity": "sha512-8S8Krr/c5lnl0eF03tA2UGY9rGBhZcbWKz2UWw5dpL/+zstwUmog8oyuuC8aRcn7GiTQLlbBkxcMeT8sOGlhbA==", + "license": "MIT", + "dependencies": { + "@babel/code-frame": "~7.10.4", + "@expo/config-plugins": "~10.0.2", + "@expo/config-types": "^53.0.4", + "@expo/json-file": "^9.1.4", + "deepmerge": "^4.3.1", + "getenv": "^1.0.0", + "glob": "^10.4.2", + "require-from-string": "^2.0.2", + "resolve-from": "^5.0.0", + "resolve-workspace-root": "^2.0.0", + "semver": "^7.6.0", + "slugify": "^1.3.4", + "sucrase": "3.35.0" + } + }, + "node_modules/@expo/config-plugins": { + "version": "10.0.2", + "resolved": "https://registry.npmjs.org/@expo/config-plugins/-/config-plugins-10.0.2.tgz", + "integrity": "sha512-TzUn3pPdpwCS0yYaSlZOClgDmCX8N4I2lfgitX5oStqmvpPtB+vqtdyqsVM02fQ2tlJIAqwBW+NHaHqqy8Jv7g==", + "license": "MIT", + "dependencies": { + "@expo/config-types": "^53.0.3", + "@expo/json-file": "~9.1.4", + "@expo/plist": "^0.3.4", + "@expo/sdk-runtime-versions": "^1.0.0", + "chalk": "^4.1.2", + "debug": "^4.3.5", + "getenv": "^1.0.0", + "glob": "^10.4.2", + "resolve-from": "^5.0.0", + "semver": "^7.5.4", + "slash": "^3.0.0", + "slugify": "^1.6.6", + "xcode": "^3.0.1", + "xml2js": "0.6.0" + } + }, + "node_modules/@expo/config-plugins/node_modules/semver": { + "version": "7.7.2", + "resolved": "https://registry.npmjs.org/semver/-/semver-7.7.2.tgz", + "integrity": "sha512-RF0Fw+rO5AMf9MAyaRXI4AV0Ulj5lMHqVxxdSgiVbixSCXoEmmX/jk0CuJw4+3SqroYO9VoUh+HcuJivvtJemA==", + "license": "ISC", + "bin": { + "semver": "bin/semver.js" + }, + "engines": { + "node": ">=10" + } + }, + "node_modules/@expo/config-types": { + "version": "53.0.4", + "resolved": "https://registry.npmjs.org/@expo/config-types/-/config-types-53.0.4.tgz", + "integrity": "sha512-0s+9vFx83WIToEr0Iwy4CcmiUXa5BgwBmEjylBB2eojX5XAMm9mJvw9KpjAb8m7zq2G0Q6bRbeufkzgbipuNQg==", + "license": "MIT" + }, + "node_modules/@expo/config/node_modules/@babel/code-frame": { + "version": "7.10.4", + "resolved": "https://registry.npmjs.org/@babel/code-frame/-/code-frame-7.10.4.tgz", + "integrity": "sha512-vG6SvB6oYEhvgisZNFRmRCUkLz11c7rp+tbNTynGqc6mS1d5ATd/sGyV6W0KZZnXRKMTzZDRgQT3Ou9jhpAfUg==", + "license": "MIT", + "dependencies": { + "@babel/highlight": "^7.10.4" + } + }, + "node_modules/@expo/config/node_modules/semver": { + "version": "7.7.2", + "resolved": "https://registry.npmjs.org/semver/-/semver-7.7.2.tgz", + "integrity": "sha512-RF0Fw+rO5AMf9MAyaRXI4AV0Ulj5lMHqVxxdSgiVbixSCXoEmmX/jk0CuJw4+3SqroYO9VoUh+HcuJivvtJemA==", + "license": "ISC", + "bin": { + "semver": "bin/semver.js" + }, + "engines": { + "node": ">=10" + } + }, + "node_modules/@expo/devcert": { + "version": "1.2.0", + "resolved": "https://registry.npmjs.org/@expo/devcert/-/devcert-1.2.0.tgz", + "integrity": "sha512-Uilcv3xGELD5t/b0eM4cxBFEKQRIivB3v7i+VhWLV/gL98aw810unLKKJbGAxAIhY6Ipyz8ChWibFsKFXYwstA==", + "license": "MIT", + "dependencies": { + "@expo/sudo-prompt": "^9.3.1", + "debug": "^3.1.0", + "glob": "^10.4.2" + } + }, + "node_modules/@expo/devcert/node_modules/debug": { + "version": "3.2.7", + "resolved": "https://registry.npmjs.org/debug/-/debug-3.2.7.tgz", + "integrity": "sha512-CFjzYYAi4ThfiQvizrFQevTTXHtnCqWfe7x1AhgEscTz6ZbLbfoLRLPugTQyBth6f8ZERVUSyWHFD/7Wu4t1XQ==", + "license": "MIT", + "dependencies": { + "ms": "^2.1.1" + } + }, + "node_modules/@expo/env": { + "version": "1.0.5", + "resolved": "https://registry.npmjs.org/@expo/env/-/env-1.0.5.tgz", + "integrity": "sha512-dtEZ4CAMaVrFu2+tezhU3FoGWtbzQl50xV+rNJE5lYVRjUflWiZkVHlHkWUlPAwDPifLy4TuissVfScGGPWR5g==", + "license": "MIT", + "dependencies": { + "chalk": "^4.0.0", + "debug": "^4.3.4", + "dotenv": "~16.4.5", + "dotenv-expand": "~11.0.6", + "getenv": "^1.0.0" + } + }, + "node_modules/@expo/fingerprint": { + "version": "0.13.0", + "resolved": "https://registry.npmjs.org/@expo/fingerprint/-/fingerprint-0.13.0.tgz", + "integrity": "sha512-3IwpH0p3uO8jrJSLOUNDzJVh7VEBod0emnCBq0hD72sy6ICmzauM6Xf4he+2Tip7fzImCJRd63GaehV+CCtpvA==", + "license": "MIT", + "dependencies": { + "@expo/spawn-async": "^1.7.2", + "arg": "^5.0.2", + "chalk": "^4.1.2", + "debug": "^4.3.4", + "find-up": "^5.0.0", + "getenv": "^2.0.0", + "ignore": "^5.3.1", + "minimatch": "^9.0.0", + "p-limit": "^3.1.0", + "resolve-from": "^5.0.0", + "semver": "^7.6.0" + }, + "bin": { + "fingerprint": "bin/cli.js" + } + }, + "node_modules/@expo/fingerprint/node_modules/getenv": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/getenv/-/getenv-2.0.0.tgz", + "integrity": "sha512-VilgtJj/ALgGY77fiLam5iD336eSWi96Q15JSAG1zi8NRBysm3LXKdGnHb4m5cuyxvOLQQKWpBZAT6ni4FI2iQ==", + "license": "MIT", + "engines": { + "node": ">=6" + } + }, + "node_modules/@expo/fingerprint/node_modules/semver": { + "version": "7.7.2", + "resolved": "https://registry.npmjs.org/semver/-/semver-7.7.2.tgz", + "integrity": "sha512-RF0Fw+rO5AMf9MAyaRXI4AV0Ulj5lMHqVxxdSgiVbixSCXoEmmX/jk0CuJw4+3SqroYO9VoUh+HcuJivvtJemA==", + "license": "ISC", + "bin": { + "semver": "bin/semver.js" + }, + "engines": { + "node": ">=10" + } + }, + "node_modules/@expo/image-utils": { + "version": "0.7.4", + "resolved": "https://registry.npmjs.org/@expo/image-utils/-/image-utils-0.7.4.tgz", + "integrity": "sha512-LcZ82EJy/t/a1avwIboeZbO6hlw8CvsIRh2k6SWPcAOvW0RqynyKFzUJsvnjWlhUzfBEn4oI7y/Pu5Xkw3KkkA==", + "license": "MIT", + "dependencies": { + "@expo/spawn-async": "^1.7.2", + "chalk": "^4.0.0", + "getenv": "^1.0.0", + "jimp-compact": "0.16.1", + "parse-png": "^2.1.0", + "resolve-from": "^5.0.0", + "semver": "^7.6.0", + "temp-dir": "~2.0.0", + "unique-string": "~2.0.0" + } + }, + "node_modules/@expo/image-utils/node_modules/semver": { + "version": "7.7.2", + "resolved": "https://registry.npmjs.org/semver/-/semver-7.7.2.tgz", + "integrity": "sha512-RF0Fw+rO5AMf9MAyaRXI4AV0Ulj5lMHqVxxdSgiVbixSCXoEmmX/jk0CuJw4+3SqroYO9VoUh+HcuJivvtJemA==", + "license": "ISC", + "bin": { + "semver": "bin/semver.js" + }, + "engines": { + "node": ">=10" + } + }, + "node_modules/@expo/json-file": { + "version": "9.1.4", + "resolved": "https://registry.npmjs.org/@expo/json-file/-/json-file-9.1.4.tgz", + "integrity": "sha512-7Bv86X27fPERGhw8aJEZvRcH9sk+9BenDnEmrI3ZpywKodYSBgc8lX9Y32faNVQ/p0YbDK9zdJ0BfAKNAOyi0A==", + "license": "MIT", + "dependencies": { + "@babel/code-frame": "~7.10.4", + "json5": "^2.2.3" + } + }, + "node_modules/@expo/json-file/node_modules/@babel/code-frame": { + "version": "7.10.4", + "resolved": "https://registry.npmjs.org/@babel/code-frame/-/code-frame-7.10.4.tgz", + "integrity": "sha512-vG6SvB6oYEhvgisZNFRmRCUkLz11c7rp+tbNTynGqc6mS1d5ATd/sGyV6W0KZZnXRKMTzZDRgQT3Ou9jhpAfUg==", + "license": "MIT", + "dependencies": { + "@babel/highlight": "^7.10.4" + } + }, + "node_modules/@expo/metro-config": { + "version": "0.20.14", + "resolved": "https://registry.npmjs.org/@expo/metro-config/-/metro-config-0.20.14.tgz", + "integrity": "sha512-tYDDubuZycK+NX00XN7BMu73kBur/evOPcKfxc+UBeFfgN2EifOITtdwSUDdRsbtJ2OnXwMY1HfRUG3Lq3l4cw==", + "license": "MIT", + "dependencies": { + "@babel/core": "^7.20.0", + "@babel/generator": "^7.20.5", + "@babel/parser": "^7.20.0", + "@babel/types": "^7.20.0", + "@expo/config": "~11.0.9", + "@expo/env": "~1.0.5", + "@expo/json-file": "~9.1.4", + "@expo/spawn-async": "^1.7.2", + "chalk": "^4.1.0", + "debug": "^4.3.2", + "dotenv": "~16.4.5", + "dotenv-expand": "~11.0.6", + "getenv": "^1.0.0", + "glob": "^10.4.2", + "jsc-safe-url": "^0.2.4", + "lightningcss": "~1.27.0", + "minimatch": "^9.0.0", + "postcss": "~8.4.32", + "resolve-from": "^5.0.0" + } + }, + "node_modules/@expo/metro-runtime": { + "version": "5.0.4", + "resolved": "https://registry.npmjs.org/@expo/metro-runtime/-/metro-runtime-5.0.4.tgz", + "integrity": "sha512-r694MeO+7Vi8IwOsDIDzH/Q5RPMt1kUDYbiTJwnO15nIqiDwlE8HU55UlRhffKZy6s5FmxQsZ8HA+T8DqUW8cQ==", + "license": "MIT", + "peerDependencies": { + "react-native": "*" + } + }, + "node_modules/@expo/osascript": { + "version": "2.2.4", + "resolved": "https://registry.npmjs.org/@expo/osascript/-/osascript-2.2.4.tgz", + "integrity": "sha512-Q+Oyj+1pdRiHHpev9YjqfMZzByFH8UhKvSszxa0acTveijjDhQgWrq4e9T/cchBHi0GWZpGczWyiyJkk1wM1dg==", + "license": "MIT", + "dependencies": { + "@expo/spawn-async": "^1.7.2", + "exec-async": "^2.2.0" + }, + "engines": { + "node": ">=12" + } + }, + "node_modules/@expo/package-manager": { + "version": "1.8.4", + "resolved": "https://registry.npmjs.org/@expo/package-manager/-/package-manager-1.8.4.tgz", + "integrity": "sha512-8H8tLga/NS3iS7QaX/NneRPqbObnHvVCfMCo0ShudreOFmvmgqhYjRlkZTRstSyFqefai8ONaT4VmnLHneRYYg==", + "license": "MIT", + "dependencies": { + "@expo/json-file": "^9.1.4", + "@expo/spawn-async": "^1.7.2", + "chalk": "^4.0.0", + "npm-package-arg": "^11.0.0", + "ora": "^3.4.0", + "resolve-workspace-root": "^2.0.0" + } + }, + "node_modules/@expo/plist": { + "version": "0.3.4", + "resolved": "https://registry.npmjs.org/@expo/plist/-/plist-0.3.4.tgz", + "integrity": "sha512-MhBLaUJNe9FQDDU2xhSNS4SAolr6K2wuyi4+A79vYuXLkAoICsbTwcGEQJN5jPY6D9izO/jsXh5k0h+mIWQMdw==", + "license": "MIT", + "dependencies": { + "@xmldom/xmldom": "^0.8.8", + "base64-js": "^1.2.3", + "xmlbuilder": "^15.1.1" + } + }, + "node_modules/@expo/prebuild-config": { + "version": "9.0.6", + "resolved": "https://registry.npmjs.org/@expo/prebuild-config/-/prebuild-config-9.0.6.tgz", + "integrity": "sha512-HDTdlMkTQZ95rd6EpvuLM+xkZV03yGLc38FqI37qKFLJtUN1WnYVaWsuXKoljd1OrVEVsHe6CfqKwaPZ52D56Q==", + "license": "MIT", + "dependencies": { + "@expo/config": "~11.0.9", + "@expo/config-plugins": "~10.0.2", + "@expo/config-types": "^53.0.4", + "@expo/image-utils": "^0.7.4", + "@expo/json-file": "^9.1.4", + "@react-native/normalize-colors": "0.79.2", + "debug": "^4.3.1", + "resolve-from": "^5.0.0", + "semver": "^7.6.0", + "xml2js": "0.6.0" + } + }, + "node_modules/@expo/prebuild-config/node_modules/semver": { + "version": "7.7.2", + "resolved": "https://registry.npmjs.org/semver/-/semver-7.7.2.tgz", + "integrity": "sha512-RF0Fw+rO5AMf9MAyaRXI4AV0Ulj5lMHqVxxdSgiVbixSCXoEmmX/jk0CuJw4+3SqroYO9VoUh+HcuJivvtJemA==", + "license": "ISC", + "bin": { + "semver": "bin/semver.js" + }, + "engines": { + "node": ">=10" + } + }, + "node_modules/@expo/sdk-runtime-versions": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/@expo/sdk-runtime-versions/-/sdk-runtime-versions-1.0.0.tgz", + "integrity": "sha512-Doz2bfiPndXYFPMRwPyGa1k5QaKDVpY806UJj570epIiMzWaYyCtobasyfC++qfIXVb5Ocy7r3tP9d62hAQ7IQ==", + "license": "MIT" + }, + "node_modules/@expo/server": { + "version": "0.6.2", + "resolved": "https://registry.npmjs.org/@expo/server/-/server-0.6.2.tgz", + "integrity": "sha512-ko+dq+1WEC126/iGVv3g+ChFCs9wGyKtGlnYphwrOQbFBBqX19sn6UV0oUks6UdhD+MyzUv+w/TOdktdcI0Cgg==", + "license": "MIT", + "dependencies": { + "abort-controller": "^3.0.0", + "debug": "^4.3.4", + "source-map-support": "~0.5.21", + "undici": "^6.18.2 || ^7.0.0" + } + }, + "node_modules/@expo/spawn-async": { + "version": "1.7.2", + "resolved": "https://registry.npmjs.org/@expo/spawn-async/-/spawn-async-1.7.2.tgz", + "integrity": "sha512-QdWi16+CHB9JYP7gma19OVVg0BFkvU8zNj9GjWorYI8Iv8FUxjOCcYRuAmX4s/h91e4e7BPsskc8cSrZYho9Ew==", + "license": "MIT", + "dependencies": { + "cross-spawn": "^7.0.3" + }, + "engines": { + "node": ">=12" + } + }, + "node_modules/@expo/sudo-prompt": { + "version": "9.3.2", + "resolved": "https://registry.npmjs.org/@expo/sudo-prompt/-/sudo-prompt-9.3.2.tgz", + "integrity": "sha512-HHQigo3rQWKMDzYDLkubN5WQOYXJJE2eNqIQC2axC2iO3mHdwnIR7FgZVvHWtBwAdzBgAP0ECp8KqS8TiMKvgw==", + "license": "MIT" + }, + "node_modules/@expo/vector-icons": { + "version": "14.1.0", + "resolved": "https://registry.npmjs.org/@expo/vector-icons/-/vector-icons-14.1.0.tgz", + "integrity": "sha512-7T09UE9h8QDTsUeMGymB4i+iqvtEeaO5VvUjryFB4tugDTG/bkzViWA74hm5pfjjDEhYMXWaX112mcvhccmIwQ==", + "license": "MIT", + "peerDependencies": { + "expo-font": "*", + "react": "*", + "react-native": "*" + } + }, + "node_modules/@expo/ws-tunnel": { + "version": "1.0.6", + "resolved": "https://registry.npmjs.org/@expo/ws-tunnel/-/ws-tunnel-1.0.6.tgz", + "integrity": "sha512-nDRbLmSrJar7abvUjp3smDwH8HcbZcoOEa5jVPUv9/9CajgmWw20JNRwTuBRzWIWIkEJDkz20GoNA+tSwUqk0Q==", + "license": "MIT" + }, + "node_modules/@expo/xcpretty": { + "version": "4.3.2", + "resolved": "https://registry.npmjs.org/@expo/xcpretty/-/xcpretty-4.3.2.tgz", + "integrity": "sha512-ReZxZ8pdnoI3tP/dNnJdnmAk7uLT4FjsKDGW7YeDdvdOMz2XCQSmSCM9IWlrXuWtMF9zeSB6WJtEhCQ41gQOfw==", + "license": "BSD-3-Clause", + "dependencies": { + "@babel/code-frame": "7.10.4", + "chalk": "^4.1.0", + "find-up": "^5.0.0", + "js-yaml": "^4.1.0" + }, + "bin": { + "excpretty": "build/cli.js" + } + }, + "node_modules/@expo/xcpretty/node_modules/@babel/code-frame": { + "version": "7.10.4", + "resolved": "https://registry.npmjs.org/@babel/code-frame/-/code-frame-7.10.4.tgz", + "integrity": "sha512-vG6SvB6oYEhvgisZNFRmRCUkLz11c7rp+tbNTynGqc6mS1d5ATd/sGyV6W0KZZnXRKMTzZDRgQT3Ou9jhpAfUg==", + "license": "MIT", + "dependencies": { + "@babel/highlight": "^7.10.4" + } + }, + "node_modules/@isaacs/cliui": { + "version": "8.0.2", + "resolved": "https://registry.npmjs.org/@isaacs/cliui/-/cliui-8.0.2.tgz", + "integrity": "sha512-O8jcjabXaleOG9DQ0+ARXWZBTfnP4WNAqzuiJK7ll44AmxGKv/J2M4TPjxjY3znBCfvBXFzucm1twdyFybFqEA==", + "license": "ISC", + "dependencies": { + "string-width": "^5.1.2", + "string-width-cjs": "npm:string-width@^4.2.0", + "strip-ansi": "^7.0.1", + "strip-ansi-cjs": "npm:strip-ansi@^6.0.1", + "wrap-ansi": "^8.1.0", + "wrap-ansi-cjs": "npm:wrap-ansi@^7.0.0" + }, + "engines": { + "node": ">=12" + } + }, + "node_modules/@isaacs/cliui/node_modules/ansi-styles": { + "version": "6.2.1", + "resolved": "https://registry.npmjs.org/ansi-styles/-/ansi-styles-6.2.1.tgz", + "integrity": "sha512-bN798gFfQX+viw3R7yrGWRqnrN2oRkEkUjjl4JNn4E8GxxbjtG3FbrEIIY3l8/hrwUwIeCZvi4QuOTP4MErVug==", + "license": "MIT", + "engines": { + "node": ">=12" + }, + "funding": { + "url": "https://github.com/chalk/ansi-styles?sponsor=1" + } + }, + "node_modules/@isaacs/cliui/node_modules/wrap-ansi": { + "version": "8.1.0", + "resolved": "https://registry.npmjs.org/wrap-ansi/-/wrap-ansi-8.1.0.tgz", + "integrity": "sha512-si7QWI6zUMq56bESFvagtmzMdGOtoxfR+Sez11Mobfc7tm+VkUckk9bW2UeffTGVUbOksxmSw0AA2gs8g71NCQ==", + "license": "MIT", + "dependencies": { + "ansi-styles": "^6.1.0", + "string-width": "^5.0.1", + "strip-ansi": "^7.0.1" + }, + "engines": { + "node": ">=12" + }, + "funding": { + "url": "https://github.com/chalk/wrap-ansi?sponsor=1" + } + }, + "node_modules/@isaacs/fs-minipass": { + "version": "4.0.1", + "resolved": "https://registry.npmjs.org/@isaacs/fs-minipass/-/fs-minipass-4.0.1.tgz", + "integrity": "sha512-wgm9Ehl2jpeqP3zw/7mo3kRHFp5MEDhqAdwy1fTGkHAwnkGOVsgpvQhL8B5n1qlb01jV3n/bI0ZfZp5lWA1k4w==", + "license": "ISC", + "dependencies": { + "minipass": "^7.0.4" + }, + "engines": { + "node": ">=18.0.0" + } + }, + "node_modules/@isaacs/ttlcache": { + "version": "1.4.1", + "resolved": "https://registry.npmjs.org/@isaacs/ttlcache/-/ttlcache-1.4.1.tgz", + "integrity": "sha512-RQgQ4uQ+pLbqXfOmieB91ejmLwvSgv9nLx6sT6sD83s7umBypgg+OIBOBbEUiJXrfpnp9j0mRhYYdzp9uqq3lA==", + "license": "ISC", + "engines": { + "node": ">=12" + } + }, + "node_modules/@istanbuljs/load-nyc-config": { + "version": "1.1.0", + "resolved": "https://registry.npmjs.org/@istanbuljs/load-nyc-config/-/load-nyc-config-1.1.0.tgz", + "integrity": "sha512-VjeHSlIzpv/NyD3N0YuHfXOPDIixcA1q2ZV98wsMqcYlPmv2n3Yb2lYP9XMElnaFVXg5A7YLTeLu6V84uQDjmQ==", + "license": "ISC", + "dependencies": { + "camelcase": "^5.3.1", + "find-up": "^4.1.0", + "get-package-type": "^0.1.0", + "js-yaml": "^3.13.1", + "resolve-from": "^5.0.0" + }, + "engines": { + "node": ">=8" + } + }, + "node_modules/@istanbuljs/load-nyc-config/node_modules/argparse": { + "version": "1.0.10", + "resolved": "https://registry.npmjs.org/argparse/-/argparse-1.0.10.tgz", + "integrity": "sha512-o5Roy6tNG4SL/FOkCAN6RzjiakZS25RLYFrcMttJqbdd8BWrnA+fGz57iN5Pb06pvBGvl5gQ0B48dJlslXvoTg==", + "license": "MIT", + "dependencies": { + "sprintf-js": "~1.0.2" + } + }, + "node_modules/@istanbuljs/load-nyc-config/node_modules/find-up": { + "version": "4.1.0", + "resolved": "https://registry.npmjs.org/find-up/-/find-up-4.1.0.tgz", + "integrity": "sha512-PpOwAdQ/YlXQ2vj8a3h8IipDuYRi3wceVQQGYWxNINccq40Anw7BlsEXCMbt1Zt+OLA6Fq9suIpIWD0OsnISlw==", + "license": "MIT", + "dependencies": { + "locate-path": "^5.0.0", + "path-exists": "^4.0.0" + }, + "engines": { + "node": ">=8" + } + }, + "node_modules/@istanbuljs/load-nyc-config/node_modules/js-yaml": { + "version": "3.14.1", + "resolved": "https://registry.npmjs.org/js-yaml/-/js-yaml-3.14.1.tgz", + "integrity": "sha512-okMH7OXXJ7YrN9Ok3/SXrnu4iX9yOk+25nqX4imS2npuvTYDmo/QEZoqwZkYaIDk3jVvBOTOIEgEhaLOynBS9g==", + "license": "MIT", + "dependencies": { + "argparse": "^1.0.7", + "esprima": "^4.0.0" + }, + "bin": { + "js-yaml": "bin/js-yaml.js" + } + }, + "node_modules/@istanbuljs/load-nyc-config/node_modules/locate-path": { + "version": "5.0.0", + "resolved": "https://registry.npmjs.org/locate-path/-/locate-path-5.0.0.tgz", + "integrity": "sha512-t7hw9pI+WvuwNJXwk5zVHpyhIqzg2qTlklJOf0mVxGSbe3Fp2VieZcduNYjaLDoy6p9uGpQEGWG87WpMKlNq8g==", + "license": "MIT", + "dependencies": { + "p-locate": "^4.1.0" + }, + "engines": { + "node": ">=8" + } + }, + "node_modules/@istanbuljs/load-nyc-config/node_modules/p-limit": { + "version": "2.3.0", + "resolved": "https://registry.npmjs.org/p-limit/-/p-limit-2.3.0.tgz", + "integrity": "sha512-//88mFWSJx8lxCzwdAABTJL2MyWB12+eIY7MDL2SqLmAkeKU9qxRvWuSyTjm3FUmpBEMuFfckAIqEaVGUDxb6w==", + "license": "MIT", + "dependencies": { + "p-try": "^2.0.0" + }, + "engines": { + "node": ">=6" + }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" + } + }, + "node_modules/@istanbuljs/load-nyc-config/node_modules/p-locate": { + "version": "4.1.0", + "resolved": "https://registry.npmjs.org/p-locate/-/p-locate-4.1.0.tgz", + "integrity": "sha512-R79ZZ/0wAxKGu3oYMlz8jy/kbhsNrS7SKZ7PxEHBgJ5+F2mtFW2fK2cOtBh1cHYkQsbzFV7I+EoRKe6Yt0oK7A==", + "license": "MIT", + "dependencies": { + "p-limit": "^2.2.0" + }, + "engines": { + "node": ">=8" + } + }, + "node_modules/@istanbuljs/schema": { + "version": "0.1.3", + "resolved": "https://registry.npmjs.org/@istanbuljs/schema/-/schema-0.1.3.tgz", + "integrity": "sha512-ZXRY4jNvVgSVQ8DL3LTcakaAtXwTVUxE81hslsyD2AtoXW/wVob10HkOJ1X/pAlcI7D+2YoZKg5do8G/w6RYgA==", + "license": "MIT", + "engines": { + "node": ">=8" + } + }, + "node_modules/@jest/console": { + "version": "29.7.0", + "resolved": "https://registry.npmjs.org/@jest/console/-/console-29.7.0.tgz", + "integrity": "sha512-5Ni4CU7XHQi32IJ398EEP4RrB8eV09sXP2ROqD4bksHrnTree52PsxvX8tpL8LvTZ3pFzXyPbNQReSN41CAhOg==", + "dev": true, + "license": "MIT", + "dependencies": { + "@jest/types": "^29.6.3", + "@types/node": "*", + "chalk": "^4.0.0", + "jest-message-util": "^29.7.0", + "jest-util": "^29.7.0", + "slash": "^3.0.0" + }, + "engines": { + "node": "^14.15.0 || ^16.10.0 || >=18.0.0" + } + }, + "node_modules/@jest/core": { + "version": "29.7.0", + "resolved": "https://registry.npmjs.org/@jest/core/-/core-29.7.0.tgz", + "integrity": "sha512-n7aeXWKMnGtDA48y8TLWJPJmLmmZ642Ceo78cYWEpiD7FzDgmNDV/GCVRorPABdXLJZ/9wzzgZAlHjXjxDHGsg==", + "dev": true, + "license": "MIT", + "dependencies": { + "@jest/console": "^29.7.0", + "@jest/reporters": "^29.7.0", + "@jest/test-result": "^29.7.0", + "@jest/transform": "^29.7.0", + "@jest/types": "^29.6.3", + "@types/node": "*", + "ansi-escapes": "^4.2.1", + "chalk": "^4.0.0", + "ci-info": "^3.2.0", + "exit": "^0.1.2", + "graceful-fs": "^4.2.9", + "jest-changed-files": "^29.7.0", + "jest-config": "^29.7.0", + "jest-haste-map": "^29.7.0", + "jest-message-util": "^29.7.0", + "jest-regex-util": "^29.6.3", + "jest-resolve": "^29.7.0", + "jest-resolve-dependencies": "^29.7.0", + "jest-runner": "^29.7.0", + "jest-runtime": "^29.7.0", + "jest-snapshot": "^29.7.0", + "jest-util": "^29.7.0", + "jest-validate": "^29.7.0", + "jest-watcher": "^29.7.0", + "micromatch": "^4.0.4", + "pretty-format": "^29.7.0", + "slash": "^3.0.0", + "strip-ansi": "^6.0.0" + }, + "engines": { + "node": "^14.15.0 || ^16.10.0 || >=18.0.0" + }, + "peerDependencies": { + "node-notifier": "^8.0.1 || ^9.0.0 || ^10.0.0" + }, + "peerDependenciesMeta": { + "node-notifier": { + "optional": true + } + } + }, + "node_modules/@jest/core/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, + "license": "MIT", + "dependencies": { + "ansi-regex": "^5.0.1" + }, + "engines": { + "node": ">=8" + } + }, + "node_modules/@jest/create-cache-key-function": { + "version": "29.7.0", + "resolved": "https://registry.npmjs.org/@jest/create-cache-key-function/-/create-cache-key-function-29.7.0.tgz", + "integrity": "sha512-4QqS3LY5PBmTRHj9sAg1HLoPzqAI0uOX6wI/TRqHIcOxlFidy6YEmCQJk6FSZjNLGCeubDMfmkWL+qaLKhSGQA==", + "license": "MIT", + "dependencies": { + "@jest/types": "^29.6.3" + }, + "engines": { + "node": "^14.15.0 || ^16.10.0 || >=18.0.0" + } + }, + "node_modules/@jest/environment": { + "version": "29.7.0", + "resolved": "https://registry.npmjs.org/@jest/environment/-/environment-29.7.0.tgz", + "integrity": "sha512-aQIfHDq33ExsN4jP1NWGXhxgQ/wixs60gDiKO+XVMd8Mn0NWPWgc34ZQDTb2jKaUWQ7MuwoitXAsN2XVXNMpAw==", + "license": "MIT", + "dependencies": { + "@jest/fake-timers": "^29.7.0", + "@jest/types": "^29.6.3", + "@types/node": "*", + "jest-mock": "^29.7.0" + }, + "engines": { + "node": "^14.15.0 || ^16.10.0 || >=18.0.0" + } + }, + "node_modules/@jest/expect": { + "version": "29.7.0", + "resolved": "https://registry.npmjs.org/@jest/expect/-/expect-29.7.0.tgz", + "integrity": "sha512-8uMeAMycttpva3P1lBHB8VciS9V0XAr3GymPpipdyQXbBcuhkLQOSe8E/p92RyAdToS6ZD1tFkX+CkhoECE0dQ==", + "dev": true, + "license": "MIT", + "dependencies": { + "expect": "^29.7.0", + "jest-snapshot": "^29.7.0" + }, + "engines": { + "node": "^14.15.0 || ^16.10.0 || >=18.0.0" + } + }, + "node_modules/@jest/expect-utils": { + "version": "29.7.0", + "resolved": "https://registry.npmjs.org/@jest/expect-utils/-/expect-utils-29.7.0.tgz", + "integrity": "sha512-GlsNBWiFQFCVi9QVSx7f5AgMeLxe9YCCs5PuP2O2LdjDAA8Jh9eX7lA1Jq/xdXw3Wb3hyvlFNfZIfcRetSzYcA==", + "dev": true, + "license": "MIT", + "dependencies": { + "jest-get-type": "^29.6.3" + }, + "engines": { + "node": "^14.15.0 || ^16.10.0 || >=18.0.0" + } + }, + "node_modules/@jest/fake-timers": { + "version": "29.7.0", + "resolved": "https://registry.npmjs.org/@jest/fake-timers/-/fake-timers-29.7.0.tgz", + "integrity": "sha512-q4DH1Ha4TTFPdxLsqDXK1d3+ioSL7yL5oCMJZgDYm6i+6CygW5E5xVr/D1HdsGxjt1ZWSfUAs9OxSB/BNelWrQ==", + "license": "MIT", + "dependencies": { + "@jest/types": "^29.6.3", + "@sinonjs/fake-timers": "^10.0.2", + "@types/node": "*", + "jest-message-util": "^29.7.0", + "jest-mock": "^29.7.0", + "jest-util": "^29.7.0" + }, + "engines": { + "node": "^14.15.0 || ^16.10.0 || >=18.0.0" + } + }, + "node_modules/@jest/globals": { + "version": "29.7.0", + "resolved": "https://registry.npmjs.org/@jest/globals/-/globals-29.7.0.tgz", + "integrity": "sha512-mpiz3dutLbkW2MNFubUGUEVLkTGiqW6yLVTA+JbP6fI6J5iL9Y0Nlg8k95pcF8ctKwCS7WVxteBs29hhfAotzQ==", + "dev": true, + "license": "MIT", + "dependencies": { + "@jest/environment": "^29.7.0", + "@jest/expect": "^29.7.0", + "@jest/types": "^29.6.3", + "jest-mock": "^29.7.0" + }, + "engines": { + "node": "^14.15.0 || ^16.10.0 || >=18.0.0" + } + }, + "node_modules/@jest/reporters": { + "version": "29.7.0", + "resolved": "https://registry.npmjs.org/@jest/reporters/-/reporters-29.7.0.tgz", + "integrity": "sha512-DApq0KJbJOEzAFYjHADNNxAE3KbhxQB1y5Kplb5Waqw6zVbuWatSnMjE5gs8FUgEPmNsnZA3NCWl9NG0ia04Pg==", + "dev": true, + "license": "MIT", + "dependencies": { + "@bcoe/v8-coverage": "^0.2.3", + "@jest/console": "^29.7.0", + "@jest/test-result": "^29.7.0", + "@jest/transform": "^29.7.0", + "@jest/types": "^29.6.3", + "@jridgewell/trace-mapping": "^0.3.18", + "@types/node": "*", + "chalk": "^4.0.0", + "collect-v8-coverage": "^1.0.0", + "exit": "^0.1.2", + "glob": "^7.1.3", + "graceful-fs": "^4.2.9", + "istanbul-lib-coverage": "^3.0.0", + "istanbul-lib-instrument": "^6.0.0", + "istanbul-lib-report": "^3.0.0", + "istanbul-lib-source-maps": "^4.0.0", + "istanbul-reports": "^3.1.3", + "jest-message-util": "^29.7.0", + "jest-util": "^29.7.0", + "jest-worker": "^29.7.0", + "slash": "^3.0.0", + "string-length": "^4.0.1", + "strip-ansi": "^6.0.0", + "v8-to-istanbul": "^9.0.1" + }, + "engines": { + "node": "^14.15.0 || ^16.10.0 || >=18.0.0" + }, + "peerDependencies": { + "node-notifier": "^8.0.1 || ^9.0.0 || ^10.0.0" + }, + "peerDependenciesMeta": { + "node-notifier": { + "optional": true + } + } + }, + "node_modules/@jest/reporters/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, + "license": "MIT", + "dependencies": { + "balanced-match": "^1.0.0", + "concat-map": "0.0.1" + } + }, + "node_modules/@jest/reporters/node_modules/glob": { + "version": "7.2.3", + "resolved": "https://registry.npmjs.org/glob/-/glob-7.2.3.tgz", + "integrity": "sha512-nFR0zLpU2YCaRxwoCJvL6UvCH2JFyFVIvwTLsIf21AuHlMskA1hhTdk+LlYJtOlYt9v6dvszD2BGRqBL+iQK9Q==", + "deprecated": "Glob versions prior to v9 are no longer supported", + "dev": true, + "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" + } + }, + "node_modules/@jest/reporters/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, + "license": "ISC", + "dependencies": { + "brace-expansion": "^1.1.7" + }, + "engines": { + "node": "*" + } + }, + "node_modules/@jest/reporters/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, + "license": "MIT", + "dependencies": { + "ansi-regex": "^5.0.1" + }, + "engines": { + "node": ">=8" + } + }, + "node_modules/@jest/schemas": { + "version": "29.6.3", + "resolved": "https://registry.npmjs.org/@jest/schemas/-/schemas-29.6.3.tgz", + "integrity": "sha512-mo5j5X+jIZmJQveBKeS/clAueipV7KgiX1vMgCxam1RNYiqE1w62n0/tJJnHtjW8ZHcQco5gY85jA3mi0L+nSA==", + "license": "MIT", + "dependencies": { + "@sinclair/typebox": "^0.27.8" + }, + "engines": { + "node": "^14.15.0 || ^16.10.0 || >=18.0.0" + } + }, + "node_modules/@jest/source-map": { + "version": "29.6.3", + "resolved": "https://registry.npmjs.org/@jest/source-map/-/source-map-29.6.3.tgz", + "integrity": "sha512-MHjT95QuipcPrpLM+8JMSzFx6eHp5Bm+4XeFDJlwsvVBjmKNiIAvasGK2fxz2WbGRlnvqehFbh07MMa7n3YJnw==", + "dev": true, + "license": "MIT", + "dependencies": { + "@jridgewell/trace-mapping": "^0.3.18", + "callsites": "^3.0.0", + "graceful-fs": "^4.2.9" + }, + "engines": { + "node": "^14.15.0 || ^16.10.0 || >=18.0.0" + } + }, + "node_modules/@jest/test-result": { + "version": "29.7.0", + "resolved": "https://registry.npmjs.org/@jest/test-result/-/test-result-29.7.0.tgz", + "integrity": "sha512-Fdx+tv6x1zlkJPcWXmMDAG2HBnaR9XPSd5aDWQVsfrZmLVT3lU1cwyxLgRmXR9yrq4NBoEm9BMsfgFzTQAbJYA==", + "dev": true, + "license": "MIT", + "dependencies": { + "@jest/console": "^29.7.0", + "@jest/types": "^29.6.3", + "@types/istanbul-lib-coverage": "^2.0.0", + "collect-v8-coverage": "^1.0.0" + }, + "engines": { + "node": "^14.15.0 || ^16.10.0 || >=18.0.0" + } + }, + "node_modules/@jest/test-sequencer": { + "version": "29.7.0", + "resolved": "https://registry.npmjs.org/@jest/test-sequencer/-/test-sequencer-29.7.0.tgz", + "integrity": "sha512-GQwJ5WZVrKnOJuiYiAF52UNUJXgTZx1NHjFSEB0qEMmSZKAkdMoIzw/Cj6x6NF4AvV23AUqDpFzQkN/eYCYTxw==", + "dev": true, + "license": "MIT", + "dependencies": { + "@jest/test-result": "^29.7.0", + "graceful-fs": "^4.2.9", + "jest-haste-map": "^29.7.0", + "slash": "^3.0.0" + }, + "engines": { + "node": "^14.15.0 || ^16.10.0 || >=18.0.0" + } + }, + "node_modules/@jest/transform": { + "version": "29.7.0", + "resolved": "https://registry.npmjs.org/@jest/transform/-/transform-29.7.0.tgz", + "integrity": "sha512-ok/BTPFzFKVMwO5eOHRrvnBVHdRy9IrsrW1GpMaQ9MCnilNLXQKmAX8s1YXDFaai9xJpac2ySzV0YeRRECr2Vw==", + "license": "MIT", + "dependencies": { + "@babel/core": "^7.11.6", + "@jest/types": "^29.6.3", + "@jridgewell/trace-mapping": "^0.3.18", + "babel-plugin-istanbul": "^6.1.1", + "chalk": "^4.0.0", + "convert-source-map": "^2.0.0", + "fast-json-stable-stringify": "^2.1.0", + "graceful-fs": "^4.2.9", + "jest-haste-map": "^29.7.0", + "jest-regex-util": "^29.6.3", + "jest-util": "^29.7.0", + "micromatch": "^4.0.4", + "pirates": "^4.0.4", + "slash": "^3.0.0", + "write-file-atomic": "^4.0.2" + }, + "engines": { + "node": "^14.15.0 || ^16.10.0 || >=18.0.0" + } + }, + "node_modules/@jest/types": { + "version": "29.6.3", + "resolved": "https://registry.npmjs.org/@jest/types/-/types-29.6.3.tgz", + "integrity": "sha512-u3UPsIilWKOM3F9CXtrG8LEJmNxwoCQC/XVj4IKYXvvpx7QIi/Kg1LI5uDmDpKlac62NUtX7eLjRh+jVZcLOzw==", + "license": "MIT", + "dependencies": { + "@jest/schemas": "^29.6.3", + "@types/istanbul-lib-coverage": "^2.0.0", + "@types/istanbul-reports": "^3.0.0", + "@types/node": "*", + "@types/yargs": "^17.0.8", + "chalk": "^4.0.0" + }, + "engines": { + "node": "^14.15.0 || ^16.10.0 || >=18.0.0" + } + }, + "node_modules/@jridgewell/gen-mapping": { + "version": "0.3.8", + "resolved": "https://registry.npmjs.org/@jridgewell/gen-mapping/-/gen-mapping-0.3.8.tgz", + "integrity": "sha512-imAbBGkb+ebQyxKgzv5Hu2nmROxoDOXHh80evxdoXNOrvAnVx7zimzc1Oo5h9RlfV4vPXaE2iM5pOFbvOCClWA==", + "license": "MIT", + "dependencies": { + "@jridgewell/set-array": "^1.2.1", + "@jridgewell/sourcemap-codec": "^1.4.10", + "@jridgewell/trace-mapping": "^0.3.24" + }, + "engines": { + "node": ">=6.0.0" + } + }, + "node_modules/@jridgewell/resolve-uri": { + "version": "3.1.2", + "resolved": "https://registry.npmjs.org/@jridgewell/resolve-uri/-/resolve-uri-3.1.2.tgz", + "integrity": "sha512-bRISgCIjP20/tbWSPWMEi54QVPRZExkuD9lJL+UIxUKtwVJA8wW1Trb1jMs1RFXo1CBTNZ/5hpC9QvmKWdopKw==", + "license": "MIT", + "engines": { + "node": ">=6.0.0" + } + }, + "node_modules/@jridgewell/set-array": { + "version": "1.2.1", + "resolved": "https://registry.npmjs.org/@jridgewell/set-array/-/set-array-1.2.1.tgz", + "integrity": "sha512-R8gLRTZeyp03ymzP/6Lil/28tGeGEzhx1q2k703KGWRAI1VdvPIXdG70VJc2pAMw3NA6JKL5hhFu1sJX0Mnn/A==", + "license": "MIT", + "engines": { + "node": ">=6.0.0" + } + }, + "node_modules/@jridgewell/source-map": { + "version": "0.3.6", + "resolved": "https://registry.npmjs.org/@jridgewell/source-map/-/source-map-0.3.6.tgz", + "integrity": "sha512-1ZJTZebgqllO79ue2bm3rIGud/bOe0pP5BjSRCRxxYkEZS8STV7zN84UBbiYu7jy+eCKSnVIUgoWWE/tt+shMQ==", + "license": "MIT", + "dependencies": { + "@jridgewell/gen-mapping": "^0.3.5", + "@jridgewell/trace-mapping": "^0.3.25" + } + }, + "node_modules/@jridgewell/sourcemap-codec": { + "version": "1.5.0", + "resolved": "https://registry.npmjs.org/@jridgewell/sourcemap-codec/-/sourcemap-codec-1.5.0.tgz", + "integrity": "sha512-gv3ZRaISU3fjPAgNsriBRqGWQL6quFx04YMPW/zD8XMLsU32mhCCbfbO6KZFLjvYpCZ8zyDEgqsgf+PwPaM7GQ==", + "license": "MIT" + }, + "node_modules/@jridgewell/trace-mapping": { + "version": "0.3.25", + "resolved": "https://registry.npmjs.org/@jridgewell/trace-mapping/-/trace-mapping-0.3.25.tgz", + "integrity": "sha512-vNk6aEwybGtawWmy/PzwnGDOjCkLWSD2wqvjGGAgOAwCGWySYXfYoxt00IJkTF+8Lb57DwOb3Aa0o9CApepiYQ==", + "license": "MIT", + "dependencies": { + "@jridgewell/resolve-uri": "^3.1.0", + "@jridgewell/sourcemap-codec": "^1.4.14" + } + }, + "node_modules/@pkgjs/parseargs": { + "version": "0.11.0", + "resolved": "https://registry.npmjs.org/@pkgjs/parseargs/-/parseargs-0.11.0.tgz", + "integrity": "sha512-+1VkjdD0QBLPodGrJUeqarH8VAIvQODIbwh9XpP5Syisf7YoQgsJKPNFoqqLQlu+VQ/tVSshMR6loPMn8U+dPg==", + "license": "MIT", + "optional": true, + "engines": { + "node": ">=14" + } + }, + "node_modules/@radix-ui/react-compose-refs": { + "version": "1.1.2", + "resolved": "https://registry.npmjs.org/@radix-ui/react-compose-refs/-/react-compose-refs-1.1.2.tgz", + "integrity": "sha512-z4eqJvfiNnFMHIIvXP3CY57y2WJs5g2v3X0zm9mEJkrkNv4rDxu+sg9Jh8EkXyeqBkB7SOcboo9dMVqhyrACIg==", + "license": "MIT", + "peerDependencies": { + "@types/react": "*", + "react": "^16.8 || ^17.0 || ^18.0 || ^19.0 || ^19.0.0-rc" + }, + "peerDependenciesMeta": { + "@types/react": { + "optional": true + } + } + }, + "node_modules/@radix-ui/react-slot": { + "version": "1.2.0", + "resolved": "https://registry.npmjs.org/@radix-ui/react-slot/-/react-slot-1.2.0.tgz", + "integrity": "sha512-ujc+V6r0HNDviYqIK3rW4ffgYiZ8g5DEHrGJVk4x7kTlLXRDILnKX9vAUYeIsLOoDpDJ0ujpqMkjH4w2ofuo6w==", + "license": "MIT", + "dependencies": { + "@radix-ui/react-compose-refs": "1.1.2" + }, + "peerDependencies": { + "@types/react": "*", + "react": "^16.8 || ^17.0 || ^18.0 || ^19.0 || ^19.0.0-rc" + }, + "peerDependenciesMeta": { + "@types/react": { + "optional": true + } + } + }, + "node_modules/@react-native-picker/picker": { + "version": "2.11.0", + "resolved": "https://registry.npmjs.org/@react-native-picker/picker/-/picker-2.11.0.tgz", + "integrity": "sha512-QuZU6gbxmOID5zZgd/H90NgBnbJ3VV6qVzp6c7/dDrmWdX8S0X5YFYgDcQFjE3dRen9wB9FWnj2VVdPU64adSg==", + "license": "MIT", + "workspaces": [ + "example" + ], + "peerDependencies": { + "react": "*", + "react-native": "*" + } + }, + "node_modules/@react-native/assets-registry": { + "version": "0.79.3", + "resolved": "https://registry.npmjs.org/@react-native/assets-registry/-/assets-registry-0.79.3.tgz", + "integrity": "sha512-Vy8DQXCJ21YSAiHxrNBz35VqVlZPpRYm50xRTWRf660JwHuJkFQG8cUkrLzm7AUriqUXxwpkQHcY+b0ibw9ejQ==", + "license": "MIT", + "engines": { + "node": ">=18" + } + }, + "node_modules/@react-native/babel-plugin-codegen": { + "version": "0.79.3", + "resolved": "https://registry.npmjs.org/@react-native/babel-plugin-codegen/-/babel-plugin-codegen-0.79.3.tgz", + "integrity": "sha512-Zb8F4bSEKKZfms5n1MQ0o5mudDcpAINkKiFuFTU0PErYGjY3kZ+JeIP+gS6KCXsckxCfMEKQwqKicP/4DWgsZQ==", + "license": "MIT", + "dependencies": { + "@babel/traverse": "^7.25.3", + "@react-native/codegen": "0.79.3" + }, + "engines": { + "node": ">=18" + } + }, + "node_modules/@react-native/babel-preset": { + "version": "0.79.3", + "resolved": "https://registry.npmjs.org/@react-native/babel-preset/-/babel-preset-0.79.3.tgz", + "integrity": "sha512-VHGNP02bDD2Ul1my0pLVwe/0dsEBHxR343ySpgnkCNEEm9C1ANQIL2wvnJrHZPcqfAkWfFQ8Ln3t+6fdm4A/Dg==", + "license": "MIT", + "dependencies": { + "@babel/core": "^7.25.2", + "@babel/plugin-proposal-export-default-from": "^7.24.7", + "@babel/plugin-syntax-dynamic-import": "^7.8.3", + "@babel/plugin-syntax-export-default-from": "^7.24.7", + "@babel/plugin-syntax-nullish-coalescing-operator": "^7.8.3", + "@babel/plugin-syntax-optional-chaining": "^7.8.3", + "@babel/plugin-transform-arrow-functions": "^7.24.7", + "@babel/plugin-transform-async-generator-functions": "^7.25.4", + "@babel/plugin-transform-async-to-generator": "^7.24.7", + "@babel/plugin-transform-block-scoping": "^7.25.0", + "@babel/plugin-transform-class-properties": "^7.25.4", + "@babel/plugin-transform-classes": "^7.25.4", + "@babel/plugin-transform-computed-properties": "^7.24.7", + "@babel/plugin-transform-destructuring": "^7.24.8", + "@babel/plugin-transform-flow-strip-types": "^7.25.2", + "@babel/plugin-transform-for-of": "^7.24.7", + "@babel/plugin-transform-function-name": "^7.25.1", + "@babel/plugin-transform-literals": "^7.25.2", + "@babel/plugin-transform-logical-assignment-operators": "^7.24.7", + "@babel/plugin-transform-modules-commonjs": "^7.24.8", + "@babel/plugin-transform-named-capturing-groups-regex": "^7.24.7", + "@babel/plugin-transform-nullish-coalescing-operator": "^7.24.7", + "@babel/plugin-transform-numeric-separator": "^7.24.7", + "@babel/plugin-transform-object-rest-spread": "^7.24.7", + "@babel/plugin-transform-optional-catch-binding": "^7.24.7", + "@babel/plugin-transform-optional-chaining": "^7.24.8", + "@babel/plugin-transform-parameters": "^7.24.7", + "@babel/plugin-transform-private-methods": "^7.24.7", + "@babel/plugin-transform-private-property-in-object": "^7.24.7", + "@babel/plugin-transform-react-display-name": "^7.24.7", + "@babel/plugin-transform-react-jsx": "^7.25.2", + "@babel/plugin-transform-react-jsx-self": "^7.24.7", + "@babel/plugin-transform-react-jsx-source": "^7.24.7", + "@babel/plugin-transform-regenerator": "^7.24.7", + "@babel/plugin-transform-runtime": "^7.24.7", + "@babel/plugin-transform-shorthand-properties": "^7.24.7", + "@babel/plugin-transform-spread": "^7.24.7", + "@babel/plugin-transform-sticky-regex": "^7.24.7", + "@babel/plugin-transform-typescript": "^7.25.2", + "@babel/plugin-transform-unicode-regex": "^7.24.7", + "@babel/template": "^7.25.0", + "@react-native/babel-plugin-codegen": "0.79.3", + "babel-plugin-syntax-hermes-parser": "0.25.1", + "babel-plugin-transform-flow-enums": "^0.0.2", + "react-refresh": "^0.14.0" + }, + "engines": { + "node": ">=18" + }, + "peerDependencies": { + "@babel/core": "*" + } + }, + "node_modules/@react-native/codegen": { + "version": "0.79.3", + "resolved": "https://registry.npmjs.org/@react-native/codegen/-/codegen-0.79.3.tgz", + "integrity": "sha512-CZejXqKch/a5/s/MO5T8mkAgvzCXgsTkQtpCF15kWR9HN8T+16k0CsN7TXAxXycltoxiE3XRglOrZNEa/TiZUQ==", + "license": "MIT", + "dependencies": { + "glob": "^7.1.1", + "hermes-parser": "0.25.1", + "invariant": "^2.2.4", + "nullthrows": "^1.1.1", + "yargs": "^17.6.2" + }, + "engines": { + "node": ">=18" + }, + "peerDependencies": { + "@babel/core": "*" + } + }, + "node_modules/@react-native/codegen/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==", + "license": "MIT", + "dependencies": { + "balanced-match": "^1.0.0", + "concat-map": "0.0.1" + } + }, + "node_modules/@react-native/codegen/node_modules/glob": { + "version": "7.2.3", + "resolved": "https://registry.npmjs.org/glob/-/glob-7.2.3.tgz", + "integrity": "sha512-nFR0zLpU2YCaRxwoCJvL6UvCH2JFyFVIvwTLsIf21AuHlMskA1hhTdk+LlYJtOlYt9v6dvszD2BGRqBL+iQK9Q==", + "deprecated": "Glob versions prior to v9 are no longer supported", + "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" + } + }, + "node_modules/@react-native/codegen/node_modules/minimatch": { + "version": "3.1.2", + "resolved": "https://registry.npmjs.org/minimatch/-/minimatch-3.1.2.tgz", + "integrity": "sha512-J7p63hRiAjw1NDEww1W7i37+ByIrOWO5XQQAzZ3VOcL0PNybwpfmV/N05zFAzwQ9USyEcX6t3UO+K5aqBQOIHw==", + "license": "ISC", + "dependencies": { + "brace-expansion": "^1.1.7" + }, + "engines": { + "node": "*" + } + }, + "node_modules/@react-native/community-cli-plugin": { + "version": "0.79.3", + "resolved": "https://registry.npmjs.org/@react-native/community-cli-plugin/-/community-cli-plugin-0.79.3.tgz", + "integrity": "sha512-N/+p4HQqN4yK6IRzn7OgMvUIcrmEWkecglk1q5nj+AzNpfIOzB+mqR20SYmnPfeXF+mZzYCzRANb3KiM+WsSDA==", + "license": "MIT", + "dependencies": { + "@react-native/dev-middleware": "0.79.3", + "chalk": "^4.0.0", + "debug": "^2.2.0", + "invariant": "^2.2.4", + "metro": "^0.82.0", + "metro-config": "^0.82.0", + "metro-core": "^0.82.0", + "semver": "^7.1.3" + }, + "engines": { + "node": ">=18" + }, + "peerDependencies": { + "@react-native-community/cli": "*" + }, + "peerDependenciesMeta": { + "@react-native-community/cli": { + "optional": true + } + } + }, + "node_modules/@react-native/community-cli-plugin/node_modules/debug": { + "version": "2.6.9", + "resolved": "https://registry.npmjs.org/debug/-/debug-2.6.9.tgz", + "integrity": "sha512-bC7ElrdJaJnPbAP+1EotYvqZsb3ecl5wi6Bfi6BJTUcNowp6cvspg0jXznRTKDjm/E7AdgFBVeAPVMNcKGsHMA==", + "license": "MIT", + "dependencies": { + "ms": "2.0.0" + } + }, + "node_modules/@react-native/community-cli-plugin/node_modules/ms": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/ms/-/ms-2.0.0.tgz", + "integrity": "sha512-Tpp60P6IUJDTuOq/5Z8cdskzJujfwqfOTkrwIwj7IRISpnkJnT6SyJ4PCPnGMoFjC9ddhal5KVIYtAt97ix05A==", + "license": "MIT" + }, + "node_modules/@react-native/community-cli-plugin/node_modules/semver": { + "version": "7.7.2", + "resolved": "https://registry.npmjs.org/semver/-/semver-7.7.2.tgz", + "integrity": "sha512-RF0Fw+rO5AMf9MAyaRXI4AV0Ulj5lMHqVxxdSgiVbixSCXoEmmX/jk0CuJw4+3SqroYO9VoUh+HcuJivvtJemA==", + "license": "ISC", + "bin": { + "semver": "bin/semver.js" + }, + "engines": { + "node": ">=10" + } + }, + "node_modules/@react-native/debugger-frontend": { + "version": "0.79.3", + "resolved": "https://registry.npmjs.org/@react-native/debugger-frontend/-/debugger-frontend-0.79.3.tgz", + "integrity": "sha512-ImNDuEeKH6lEsLXms3ZsgIrNF94jymfuhPcVY5L0trzaYNo9ZFE9Ni2/18E1IbfXxdeIHrCSBJlWD6CTm7wu5A==", + "license": "BSD-3-Clause", + "engines": { + "node": ">=18" + } + }, + "node_modules/@react-native/dev-middleware": { + "version": "0.79.3", + "resolved": "https://registry.npmjs.org/@react-native/dev-middleware/-/dev-middleware-0.79.3.tgz", + "integrity": "sha512-x88+RGOyG71+idQefnQg7wLhzjn/Scs+re1O5vqCkTVzRAc/f7SdHMlbmECUxJPd08FqMcOJr7/X3nsJBrNuuw==", + "license": "MIT", + "dependencies": { + "@isaacs/ttlcache": "^1.4.1", + "@react-native/debugger-frontend": "0.79.3", + "chrome-launcher": "^0.15.2", + "chromium-edge-launcher": "^0.2.0", + "connect": "^3.6.5", + "debug": "^2.2.0", + "invariant": "^2.2.4", + "nullthrows": "^1.1.1", + "open": "^7.0.3", + "serve-static": "^1.16.2", + "ws": "^6.2.3" + }, + "engines": { + "node": ">=18" + } + }, + "node_modules/@react-native/dev-middleware/node_modules/debug": { + "version": "2.6.9", + "resolved": "https://registry.npmjs.org/debug/-/debug-2.6.9.tgz", + "integrity": "sha512-bC7ElrdJaJnPbAP+1EotYvqZsb3ecl5wi6Bfi6BJTUcNowp6cvspg0jXznRTKDjm/E7AdgFBVeAPVMNcKGsHMA==", + "license": "MIT", + "dependencies": { + "ms": "2.0.0" + } + }, + "node_modules/@react-native/dev-middleware/node_modules/ms": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/ms/-/ms-2.0.0.tgz", + "integrity": "sha512-Tpp60P6IUJDTuOq/5Z8cdskzJujfwqfOTkrwIwj7IRISpnkJnT6SyJ4PCPnGMoFjC9ddhal5KVIYtAt97ix05A==", + "license": "MIT" + }, + "node_modules/@react-native/dev-middleware/node_modules/ws": { + "version": "6.2.3", + "resolved": "https://registry.npmjs.org/ws/-/ws-6.2.3.tgz", + "integrity": "sha512-jmTjYU0j60B+vHey6TfR3Z7RD61z/hmxBS3VMSGIrroOWXQEneK1zNuotOUrGyBHQj0yrpsLHPWtigEFd13ndA==", + "license": "MIT", + "dependencies": { + "async-limiter": "~1.0.0" + } + }, + "node_modules/@react-native/gradle-plugin": { + "version": "0.79.3", + "resolved": "https://registry.npmjs.org/@react-native/gradle-plugin/-/gradle-plugin-0.79.3.tgz", + "integrity": "sha512-imfpZLhNBc9UFSzb/MOy2tNcIBHqVmexh/qdzw83F75BmUtLb/Gs1L2V5gw+WI1r7RqDILbWk7gXB8zUllwd+g==", + "license": "MIT", + "engines": { + "node": ">=18" + } + }, + "node_modules/@react-native/js-polyfills": { + "version": "0.79.3", + "resolved": "https://registry.npmjs.org/@react-native/js-polyfills/-/js-polyfills-0.79.3.tgz", + "integrity": "sha512-PEBtg6Kox6KahjCAch0UrqCAmHiNLEbp2SblUEoFAQnov4DSxBN9safh+QSVaCiMAwLjvNfXrJyygZz60Dqz3Q==", + "license": "MIT", + "engines": { + "node": ">=18" + } + }, + "node_modules/@react-native/normalize-colors": { + "version": "0.79.2", + "resolved": "https://registry.npmjs.org/@react-native/normalize-colors/-/normalize-colors-0.79.2.tgz", + "integrity": "sha512-+b+GNrupWrWw1okHnEENz63j7NSMqhKeFMOyzYLBwKcprG8fqJQhDIGXfizKdxeIa5NnGSAevKL1Ev1zJ56X8w==", + "license": "MIT" + }, + "node_modules/@react-native/virtualized-lists": { + "version": "0.79.3", + "resolved": "https://registry.npmjs.org/@react-native/virtualized-lists/-/virtualized-lists-0.79.3.tgz", + "integrity": "sha512-/0rRozkn+iIHya2vnnvprDgT7QkfI54FLrACAN3BLP7MRlfOIGOrZsXpRLndnLBVnjNzkcre84i1RecjoXnwIA==", + "license": "MIT", + "dependencies": { + "invariant": "^2.2.4", + "nullthrows": "^1.1.1" + }, + "engines": { + "node": ">=18" + }, + "peerDependencies": { + "@types/react": "^19.0.0", + "react": "*", + "react-native": "*" + }, + "peerDependenciesMeta": { + "@types/react": { + "optional": true + } + } + }, + "node_modules/@react-navigation/bottom-tabs": { + "version": "7.3.13", + "resolved": "https://registry.npmjs.org/@react-navigation/bottom-tabs/-/bottom-tabs-7.3.13.tgz", + "integrity": "sha512-J3MWXBJc3y6hefZNRqdj/JD4nzIDLzZL5GIYj89pR6oRf2Iibz9t1qV7yzxEc1KOaNDkXVZ/5U16PArEJFfykQ==", + "license": "MIT", + "dependencies": { + "@react-navigation/elements": "^2.4.2", + "color": "^4.2.3" + }, + "peerDependencies": { + "@react-navigation/native": "^7.1.9", + "react": ">= 18.2.0", + "react-native": "*", + "react-native-safe-area-context": ">= 4.0.0", + "react-native-screens": ">= 4.0.0" + } + }, + "node_modules/@react-navigation/core": { + "version": "7.9.2", + "resolved": "https://registry.npmjs.org/@react-navigation/core/-/core-7.9.2.tgz", + "integrity": "sha512-lqCyKMWWaSwGK4VV3wRXXEKvl5IKrVH207Kp77TLCnITnd4KQIdgjzzJ/Pr62ugki3VTAErq1vg0yRlcXciCbg==", + "license": "MIT", + "dependencies": { + "@react-navigation/routers": "^7.3.7", + "escape-string-regexp": "^4.0.0", + "nanoid": "^3.3.11", + "query-string": "^7.1.3", + "react-is": "^19.1.0", + "use-latest-callback": "^0.2.3", + "use-sync-external-store": "^1.5.0" + }, + "peerDependencies": { + "react": ">= 18.2.0" + } + }, + "node_modules/@react-navigation/elements": { + "version": "2.4.2", + "resolved": "https://registry.npmjs.org/@react-navigation/elements/-/elements-2.4.2.tgz", + "integrity": "sha512-cudKLsRtOB+i8iDzfBKypdqiHsDy1ruqCfYAtwKEclDmLsxu3/90YXoBtoPyFNyIpsn3GtsJzZsrYWQh78xSWg==", + "license": "MIT", + "dependencies": { + "color": "^4.2.3" + }, + "peerDependencies": { + "@react-native-masked-view/masked-view": ">= 0.2.0", + "@react-navigation/native": "^7.1.9", + "react": ">= 18.2.0", + "react-native": "*", + "react-native-safe-area-context": ">= 4.0.0" + }, + "peerDependenciesMeta": { + "@react-native-masked-view/masked-view": { + "optional": true + } + } + }, + "node_modules/@react-navigation/native": { + "version": "7.1.9", + "resolved": "https://registry.npmjs.org/@react-navigation/native/-/native-7.1.9.tgz", + "integrity": "sha512-/A0oBwZIeD23o4jsnB0fEyKmKS+l4LAbJP/ioVvsGEubGp+sc5ouQNranOh7JwR0R1eX0MjcsLKprEwB+nztdw==", + "license": "MIT", + "dependencies": { + "@react-navigation/core": "^7.9.2", + "escape-string-regexp": "^4.0.0", + "fast-deep-equal": "^3.1.3", + "nanoid": "^3.3.11", + "use-latest-callback": "^0.2.3" + }, + "peerDependencies": { + "react": ">= 18.2.0", + "react-native": "*" + } + }, + "node_modules/@react-navigation/native-stack": { + "version": "7.3.13", + "resolved": "https://registry.npmjs.org/@react-navigation/native-stack/-/native-stack-7.3.13.tgz", + "integrity": "sha512-udH+HumX0PmaT6QQTqjU3ciiCwifBGtnw1+6B1bVEDw83q80WHotlMitaf8Enbuf7oWrxwB+Eow4tV5MJXgQtQ==", + "license": "MIT", + "dependencies": { + "@react-navigation/elements": "^2.4.2", + "warn-once": "^0.1.1" + }, + "peerDependencies": { + "@react-navigation/native": "^7.1.9", + "react": ">= 18.2.0", + "react-native": "*", + "react-native-safe-area-context": ">= 4.0.0", + "react-native-screens": ">= 4.0.0" + } + }, + "node_modules/@react-navigation/routers": { + "version": "7.3.7", + "resolved": "https://registry.npmjs.org/@react-navigation/routers/-/routers-7.3.7.tgz", + "integrity": "sha512-5ffgrefOs2zWqcCVX+OKn+RDx0puopQtxqetegFrTfWQ6pGXdY/5v4kBpPwaOFrNEeE/LPbHt9IJaJuvyhB7RA==", + "license": "MIT", + "dependencies": { + "nanoid": "^3.3.11" + } + }, + "node_modules/@react-navigation/stack": { + "version": "7.3.2", + "resolved": "https://registry.npmjs.org/@react-navigation/stack/-/stack-7.3.2.tgz", + "integrity": "sha512-DAkuLCguUFjeOTmNtklMZSQJPcG3sl5h5M7VVms4xdGHO6RtNJ3ntJGTXYK/yFcDedLURKqBlJl5+4yTLORitQ==", + "license": "MIT", + "dependencies": { + "@react-navigation/elements": "^2.4.2", + "color": "^4.2.3" + }, + "peerDependencies": { + "@react-navigation/native": "^7.1.9", + "react": ">= 18.2.0", + "react-native": "*", + "react-native-gesture-handler": ">= 2.0.0", + "react-native-safe-area-context": ">= 4.0.0", + "react-native-screens": ">= 4.0.0" + } + }, + "node_modules/@sinclair/typebox": { + "version": "0.27.8", + "resolved": "https://registry.npmjs.org/@sinclair/typebox/-/typebox-0.27.8.tgz", + "integrity": "sha512-+Fj43pSMwJs4KRrH/938Uf+uAELIgVBmQzg/q1YG10djyfA3TnrU8N8XzqCh/okZdszqBQTZf96idMfE5lnwTA==", + "license": "MIT" + }, + "node_modules/@sinonjs/commons": { + "version": "3.0.1", + "resolved": "https://registry.npmjs.org/@sinonjs/commons/-/commons-3.0.1.tgz", + "integrity": "sha512-K3mCHKQ9sVh8o1C9cxkwxaOmXoAMlDxC1mYyHrjqOWEcBjYr76t96zL2zlj5dUGZ3HSw240X1qgH3Mjf1yJWpQ==", + "license": "BSD-3-Clause", + "dependencies": { + "type-detect": "4.0.8" + } + }, + "node_modules/@sinonjs/fake-timers": { + "version": "10.3.0", + "resolved": "https://registry.npmjs.org/@sinonjs/fake-timers/-/fake-timers-10.3.0.tgz", + "integrity": "sha512-V4BG07kuYSUkTCSBHG8G8TNhM+F19jXFWnQtzj+we8DrkpSBCee9Z3Ms8yiGer/dlmhe35/Xdgyo3/0rQKg7YA==", + "license": "BSD-3-Clause", + "dependencies": { + "@sinonjs/commons": "^3.0.0" + } + }, + "node_modules/@tootallnate/once": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/@tootallnate/once/-/once-2.0.0.tgz", + "integrity": "sha512-XCuKFP5PS55gnMVu3dty8KPatLqUoy/ZYzDzAGCQ8JNFCkLXzmI7vNHCR+XpbZaMWQK/vQubr7PkYq8g470J/A==", + "dev": true, + "license": "MIT", + "engines": { + "node": ">= 10" + } + }, + "node_modules/@types/babel__core": { + "version": "7.20.5", + "resolved": "https://registry.npmjs.org/@types/babel__core/-/babel__core-7.20.5.tgz", + "integrity": "sha512-qoQprZvz5wQFJwMDqeseRXWv3rqMvhgpbXFfVyWhbx9X47POIA6i/+dXefEmZKoAgOaTdaIgNSMqMIU61yRyzA==", + "license": "MIT", + "dependencies": { + "@babel/parser": "^7.20.7", + "@babel/types": "^7.20.7", + "@types/babel__generator": "*", + "@types/babel__template": "*", + "@types/babel__traverse": "*" + } + }, + "node_modules/@types/babel__generator": { + "version": "7.27.0", + "resolved": "https://registry.npmjs.org/@types/babel__generator/-/babel__generator-7.27.0.tgz", + "integrity": "sha512-ufFd2Xi92OAVPYsy+P4n7/U7e68fex0+Ee8gSG9KX7eo084CWiQ4sdxktvdl0bOPupXtVJPY19zk6EwWqUQ8lg==", + "license": "MIT", + "dependencies": { + "@babel/types": "^7.0.0" + } + }, + "node_modules/@types/babel__template": { + "version": "7.4.4", + "resolved": "https://registry.npmjs.org/@types/babel__template/-/babel__template-7.4.4.tgz", + "integrity": "sha512-h/NUaSyG5EyxBIp8YRxo4RMe2/qQgvyowRwVMzhYhBCONbW8PUsg4lkFMrhgZhUe5z3L3MiLDuvyJ/CaPa2A8A==", + "license": "MIT", + "dependencies": { + "@babel/parser": "^7.1.0", + "@babel/types": "^7.0.0" + } + }, + "node_modules/@types/babel__traverse": { + "version": "7.20.7", + "resolved": "https://registry.npmjs.org/@types/babel__traverse/-/babel__traverse-7.20.7.tgz", + "integrity": "sha512-dkO5fhS7+/oos4ciWxyEyjWe48zmG6wbCheo/G2ZnHx4fs3EU6YC6UM8rk56gAjNJ9P3MTH2jo5jb92/K6wbng==", + "license": "MIT", + "dependencies": { + "@babel/types": "^7.20.7" + } + }, + "node_modules/@types/eslint": { + "version": "9.6.1", + "resolved": "https://registry.npmjs.org/@types/eslint/-/eslint-9.6.1.tgz", + "integrity": "sha512-FXx2pKgId/WyYo2jXw63kk7/+TY7u7AziEJxJAnSFzHlqTAS3Ync6SvgYAN/k4/PQpnnVuzoMuVnByKK2qp0ag==", + "dev": true, + "license": "MIT", + "peer": true, + "dependencies": { + "@types/estree": "*", + "@types/json-schema": "*" + } + }, + "node_modules/@types/eslint-scope": { + "version": "3.7.7", + "resolved": "https://registry.npmjs.org/@types/eslint-scope/-/eslint-scope-3.7.7.tgz", + "integrity": "sha512-MzMFlSLBqNF2gcHWO0G1vP/YQyfvrxZ0bF+u7mzUdZ1/xK4A4sru+nraZz5i3iEIk1l1uyicaDVTB4QbbEkAYg==", + "dev": true, + "license": "MIT", + "peer": true, + "dependencies": { + "@types/eslint": "*", + "@types/estree": "*" + } + }, + "node_modules/@types/estree": { + "version": "1.0.7", + "resolved": "https://registry.npmjs.org/@types/estree/-/estree-1.0.7.tgz", + "integrity": "sha512-w28IoSUCJpidD/TGviZwwMJckNESJZXFu7NBZ5YJ4mEUnNraUn9Pm8HSZm/jDF1pDWYKspWE7oVphigUPRakIQ==", + "dev": true, + "license": "MIT", + "peer": true + }, + "node_modules/@types/geojson": { + "version": "7946.0.16", + "resolved": "https://registry.npmjs.org/@types/geojson/-/geojson-7946.0.16.tgz", + "integrity": "sha512-6C8nqWur3j98U6+lXDfTUWIfgvZU+EumvpHKcYjujKH7woYyLj2sUmff0tRhrqM7BohUw7Pz3ZB1jj2gW9Fvmg==", + "license": "MIT" + }, + "node_modules/@types/graceful-fs": { + "version": "4.1.9", + "resolved": "https://registry.npmjs.org/@types/graceful-fs/-/graceful-fs-4.1.9.tgz", + "integrity": "sha512-olP3sd1qOEe5dXTSaFvQG+02VdRXcdytWLAZsAq1PecU8uqQAhkrnbli7DagjtXKW/Bl7YJbUsa8MPcuc8LHEQ==", + "license": "MIT", + "dependencies": { + "@types/node": "*" + } + }, + "node_modules/@types/hammerjs": { + "version": "2.0.46", + "resolved": "https://registry.npmjs.org/@types/hammerjs/-/hammerjs-2.0.46.tgz", + "integrity": "sha512-ynRvcq6wvqexJ9brDMS4BnBLzmr0e14d6ZJTEShTBWKymQiHwlAyGu0ZPEFI2Fh1U53F7tN9ufClWM5KvqkKOw==", + "license": "MIT" + }, + "node_modules/@types/istanbul-lib-coverage": { + "version": "2.0.6", + "resolved": "https://registry.npmjs.org/@types/istanbul-lib-coverage/-/istanbul-lib-coverage-2.0.6.tgz", + "integrity": "sha512-2QF/t/auWm0lsy8XtKVPG19v3sSOQlJe/YHZgfjb/KBBHOGSV+J2q/S671rcq9uTBrLAXmZpqJiaQbMT+zNU1w==", + "license": "MIT" + }, + "node_modules/@types/istanbul-lib-report": { + "version": "3.0.3", + "resolved": "https://registry.npmjs.org/@types/istanbul-lib-report/-/istanbul-lib-report-3.0.3.tgz", + "integrity": "sha512-NQn7AHQnk/RSLOxrBbGyJM/aVQ+pjj5HCgasFxc0K/KhoATfQ/47AyUl15I2yBUpihjmas+a+VJBOqecrFH+uA==", + "license": "MIT", + "dependencies": { + "@types/istanbul-lib-coverage": "*" + } + }, + "node_modules/@types/istanbul-reports": { + "version": "3.0.4", + "resolved": "https://registry.npmjs.org/@types/istanbul-reports/-/istanbul-reports-3.0.4.tgz", + "integrity": "sha512-pk2B1NWalF9toCRu6gjBzR69syFjP4Od8WRAX+0mmf9lAjCRicLOWc+ZrxZHx/0XRjotgkF9t6iaMJ+aXcOdZQ==", + "license": "MIT", + "dependencies": { + "@types/istanbul-lib-report": "*" + } + }, + "node_modules/@types/jsdom": { + "version": "20.0.1", + "resolved": "https://registry.npmjs.org/@types/jsdom/-/jsdom-20.0.1.tgz", + "integrity": "sha512-d0r18sZPmMQr1eG35u12FZfhIXNrnsPU/g5wvRKCUf/tOGilKKwYMYGqh33BNR6ba+2gkHw1EUiHoN3mn7E5IQ==", + "dev": true, + "license": "MIT", + "dependencies": { + "@types/node": "*", + "@types/tough-cookie": "*", + "parse5": "^7.0.0" + } + }, + "node_modules/@types/json-schema": { + "version": "7.0.15", + "resolved": "https://registry.npmjs.org/@types/json-schema/-/json-schema-7.0.15.tgz", + "integrity": "sha512-5+fP8P8MFNC+AyZCDxrB2pkZFPGzqQWUzpSeuuVLvm8VMcorNYavBqoFcxK8bQz4Qsbn4oUEEem4wDLfcysGHA==", + "license": "MIT" + }, + "node_modules/@types/node": { + "version": "22.15.18", + "resolved": "https://registry.npmjs.org/@types/node/-/node-22.15.18.tgz", + "integrity": "sha512-v1DKRfUdyW+jJhZNEI1PYy29S2YRxMV5AOO/x/SjKmW0acCIOqmbj6Haf9eHAhsPmrhlHSxEhv/1WszcLWV4cg==", + "license": "MIT", + "dependencies": { + "undici-types": "~6.21.0" + } + }, + "node_modules/@types/stack-utils": { + "version": "2.0.3", + "resolved": "https://registry.npmjs.org/@types/stack-utils/-/stack-utils-2.0.3.tgz", + "integrity": "sha512-9aEbYZ3TbYMznPdcdr3SmIrLXwC/AKZXQeCf9Pgao5CKb8CyHuEX5jzWPTkvregvhRJHcpRO6BFoGW9ycaOkYw==", + "license": "MIT" + }, + "node_modules/@types/tough-cookie": { + "version": "4.0.5", + "resolved": "https://registry.npmjs.org/@types/tough-cookie/-/tough-cookie-4.0.5.tgz", + "integrity": "sha512-/Ad8+nIOV7Rl++6f1BdKxFSMgmoqEoYbHRpPcx3JEfv8VRsQe9Z4mCXeJBzxs7mbHY/XOZZuXlRNfhpVPbs6ZA==", + "dev": true, + "license": "MIT" + }, + "node_modules/@types/yargs": { + "version": "17.0.33", + "resolved": "https://registry.npmjs.org/@types/yargs/-/yargs-17.0.33.tgz", + "integrity": "sha512-WpxBCKWPLr4xSsHgz511rFJAM+wS28w2zEO1QDNY5zM/S8ok70NNfztH0xwhqKyaK0OHCbN98LDAZuy1ctxDkA==", + "license": "MIT", + "dependencies": { + "@types/yargs-parser": "*" + } + }, + "node_modules/@types/yargs-parser": { + "version": "21.0.3", + "resolved": "https://registry.npmjs.org/@types/yargs-parser/-/yargs-parser-21.0.3.tgz", + "integrity": "sha512-I4q9QU9MQv4oEOz4tAHJtNz1cwuLxn2F3xcc2iV5WdqLPpUnj30aUuxt1mAxYTG+oe8CZMV/+6rU4S4gRDzqtQ==", + "license": "MIT" + }, + "node_modules/@urql/core": { + "version": "5.1.1", + "resolved": "https://registry.npmjs.org/@urql/core/-/core-5.1.1.tgz", + "integrity": "sha512-aGh024z5v2oINGD/In6rAtVKTm4VmQ2TxKQBAtk2ZSME5dunZFcjltw4p5ENQg+5CBhZ3FHMzl0Oa+rwqiWqlg==", + "license": "MIT", + "dependencies": { + "@0no-co/graphql.web": "^1.0.5", + "wonka": "^6.3.2" + } + }, + "node_modules/@urql/exchange-retry": { + "version": "1.3.1", + "resolved": "https://registry.npmjs.org/@urql/exchange-retry/-/exchange-retry-1.3.1.tgz", + "integrity": "sha512-EEmtFu8JTuwsInqMakhLq+U3qN8ZMd5V3pX44q0EqD2imqTDsa8ikZqJ1schVrN8HljOdN+C08cwZ1/r5uIgLw==", + "license": "MIT", + "dependencies": { + "@urql/core": "^5.1.1", + "wonka": "^6.3.2" + }, + "peerDependencies": { + "@urql/core": "^5.0.0" + } + }, + "node_modules/@webassemblyjs/ast": { + "version": "1.14.1", + "resolved": "https://registry.npmjs.org/@webassemblyjs/ast/-/ast-1.14.1.tgz", + "integrity": "sha512-nuBEDgQfm1ccRp/8bCQrx1frohyufl4JlbMMZ4P1wpeOfDhF6FQkxZJ1b/e+PLwr6X1Nhw6OLme5usuBWYBvuQ==", + "dev": true, + "license": "MIT", + "peer": true, + "dependencies": { + "@webassemblyjs/helper-numbers": "1.13.2", + "@webassemblyjs/helper-wasm-bytecode": "1.13.2" + } + }, + "node_modules/@webassemblyjs/floating-point-hex-parser": { + "version": "1.13.2", + "resolved": "https://registry.npmjs.org/@webassemblyjs/floating-point-hex-parser/-/floating-point-hex-parser-1.13.2.tgz", + "integrity": "sha512-6oXyTOzbKxGH4steLbLNOu71Oj+C8Lg34n6CqRvqfS2O71BxY6ByfMDRhBytzknj9yGUPVJ1qIKhRlAwO1AovA==", + "dev": true, + "license": "MIT", + "peer": true + }, + "node_modules/@webassemblyjs/helper-api-error": { + "version": "1.13.2", + "resolved": "https://registry.npmjs.org/@webassemblyjs/helper-api-error/-/helper-api-error-1.13.2.tgz", + "integrity": "sha512-U56GMYxy4ZQCbDZd6JuvvNV/WFildOjsaWD3Tzzvmw/mas3cXzRJPMjP83JqEsgSbyrmaGjBfDtV7KDXV9UzFQ==", + "dev": true, + "license": "MIT", + "peer": true + }, + "node_modules/@webassemblyjs/helper-buffer": { + "version": "1.14.1", + "resolved": "https://registry.npmjs.org/@webassemblyjs/helper-buffer/-/helper-buffer-1.14.1.tgz", + "integrity": "sha512-jyH7wtcHiKssDtFPRB+iQdxlDf96m0E39yb0k5uJVhFGleZFoNw1c4aeIcVUPPbXUVJ94wwnMOAqUHyzoEPVMA==", + "dev": true, + "license": "MIT", + "peer": true + }, + "node_modules/@webassemblyjs/helper-numbers": { + "version": "1.13.2", + "resolved": "https://registry.npmjs.org/@webassemblyjs/helper-numbers/-/helper-numbers-1.13.2.tgz", + "integrity": "sha512-FE8aCmS5Q6eQYcV3gI35O4J789wlQA+7JrqTTpJqn5emA4U2hvwJmvFRC0HODS+3Ye6WioDklgd6scJ3+PLnEA==", + "dev": true, + "license": "MIT", + "peer": true, + "dependencies": { + "@webassemblyjs/floating-point-hex-parser": "1.13.2", + "@webassemblyjs/helper-api-error": "1.13.2", + "@xtuc/long": "4.2.2" + } + }, + "node_modules/@webassemblyjs/helper-wasm-bytecode": { + "version": "1.13.2", + "resolved": "https://registry.npmjs.org/@webassemblyjs/helper-wasm-bytecode/-/helper-wasm-bytecode-1.13.2.tgz", + "integrity": "sha512-3QbLKy93F0EAIXLh0ogEVR6rOubA9AoZ+WRYhNbFyuB70j3dRdwH9g+qXhLAO0kiYGlg3TxDV+I4rQTr/YNXkA==", + "dev": true, + "license": "MIT", + "peer": true + }, + "node_modules/@webassemblyjs/helper-wasm-section": { + "version": "1.14.1", + "resolved": "https://registry.npmjs.org/@webassemblyjs/helper-wasm-section/-/helper-wasm-section-1.14.1.tgz", + "integrity": "sha512-ds5mXEqTJ6oxRoqjhWDU83OgzAYjwsCV8Lo/N+oRsNDmx/ZDpqalmrtgOMkHwxsG0iI//3BwWAErYRHtgn0dZw==", + "dev": true, + "license": "MIT", + "peer": true, + "dependencies": { + "@webassemblyjs/ast": "1.14.1", + "@webassemblyjs/helper-buffer": "1.14.1", + "@webassemblyjs/helper-wasm-bytecode": "1.13.2", + "@webassemblyjs/wasm-gen": "1.14.1" + } + }, + "node_modules/@webassemblyjs/ieee754": { + "version": "1.13.2", + "resolved": "https://registry.npmjs.org/@webassemblyjs/ieee754/-/ieee754-1.13.2.tgz", + "integrity": "sha512-4LtOzh58S/5lX4ITKxnAK2USuNEvpdVV9AlgGQb8rJDHaLeHciwG4zlGr0j/SNWlr7x3vO1lDEsuePvtcDNCkw==", + "dev": true, + "license": "MIT", + "peer": true, + "dependencies": { + "@xtuc/ieee754": "^1.2.0" + } + }, + "node_modules/@webassemblyjs/leb128": { + "version": "1.13.2", + "resolved": "https://registry.npmjs.org/@webassemblyjs/leb128/-/leb128-1.13.2.tgz", + "integrity": "sha512-Lde1oNoIdzVzdkNEAWZ1dZ5orIbff80YPdHx20mrHwHrVNNTjNr8E3xz9BdpcGqRQbAEa+fkrCb+fRFTl/6sQw==", + "dev": true, + "license": "Apache-2.0", + "peer": true, + "dependencies": { + "@xtuc/long": "4.2.2" + } + }, + "node_modules/@webassemblyjs/utf8": { + "version": "1.13.2", + "resolved": "https://registry.npmjs.org/@webassemblyjs/utf8/-/utf8-1.13.2.tgz", + "integrity": "sha512-3NQWGjKTASY1xV5m7Hr0iPeXD9+RDobLll3T9d2AO+g3my8xy5peVyjSag4I50mR1bBSN/Ct12lo+R9tJk0NZQ==", + "dev": true, + "license": "MIT", + "peer": true + }, + "node_modules/@webassemblyjs/wasm-edit": { + "version": "1.14.1", + "resolved": "https://registry.npmjs.org/@webassemblyjs/wasm-edit/-/wasm-edit-1.14.1.tgz", + "integrity": "sha512-RNJUIQH/J8iA/1NzlE4N7KtyZNHi3w7at7hDjvRNm5rcUXa00z1vRz3glZoULfJ5mpvYhLybmVcwcjGrC1pRrQ==", + "dev": true, + "license": "MIT", + "peer": true, + "dependencies": { + "@webassemblyjs/ast": "1.14.1", + "@webassemblyjs/helper-buffer": "1.14.1", + "@webassemblyjs/helper-wasm-bytecode": "1.13.2", + "@webassemblyjs/helper-wasm-section": "1.14.1", + "@webassemblyjs/wasm-gen": "1.14.1", + "@webassemblyjs/wasm-opt": "1.14.1", + "@webassemblyjs/wasm-parser": "1.14.1", + "@webassemblyjs/wast-printer": "1.14.1" + } + }, + "node_modules/@webassemblyjs/wasm-gen": { + "version": "1.14.1", + "resolved": "https://registry.npmjs.org/@webassemblyjs/wasm-gen/-/wasm-gen-1.14.1.tgz", + "integrity": "sha512-AmomSIjP8ZbfGQhumkNvgC33AY7qtMCXnN6bL2u2Js4gVCg8fp735aEiMSBbDR7UQIj90n4wKAFUSEd0QN2Ukg==", + "dev": true, + "license": "MIT", + "peer": true, + "dependencies": { + "@webassemblyjs/ast": "1.14.1", + "@webassemblyjs/helper-wasm-bytecode": "1.13.2", + "@webassemblyjs/ieee754": "1.13.2", + "@webassemblyjs/leb128": "1.13.2", + "@webassemblyjs/utf8": "1.13.2" + } + }, + "node_modules/@webassemblyjs/wasm-opt": { + "version": "1.14.1", + "resolved": "https://registry.npmjs.org/@webassemblyjs/wasm-opt/-/wasm-opt-1.14.1.tgz", + "integrity": "sha512-PTcKLUNvBqnY2U6E5bdOQcSM+oVP/PmrDY9NzowJjislEjwP/C4an2303MCVS2Mg9d3AJpIGdUFIQQWbPds0Sw==", + "dev": true, + "license": "MIT", + "peer": true, + "dependencies": { + "@webassemblyjs/ast": "1.14.1", + "@webassemblyjs/helper-buffer": "1.14.1", + "@webassemblyjs/wasm-gen": "1.14.1", + "@webassemblyjs/wasm-parser": "1.14.1" + } + }, + "node_modules/@webassemblyjs/wasm-parser": { + "version": "1.14.1", + "resolved": "https://registry.npmjs.org/@webassemblyjs/wasm-parser/-/wasm-parser-1.14.1.tgz", + "integrity": "sha512-JLBl+KZ0R5qB7mCnud/yyX08jWFw5MsoalJ1pQ4EdFlgj9VdXKGuENGsiCIjegI1W7p91rUlcB/LB5yRJKNTcQ==", + "dev": true, + "license": "MIT", + "peer": true, + "dependencies": { + "@webassemblyjs/ast": "1.14.1", + "@webassemblyjs/helper-api-error": "1.13.2", + "@webassemblyjs/helper-wasm-bytecode": "1.13.2", + "@webassemblyjs/ieee754": "1.13.2", + "@webassemblyjs/leb128": "1.13.2", + "@webassemblyjs/utf8": "1.13.2" + } + }, + "node_modules/@webassemblyjs/wast-printer": { + "version": "1.14.1", + "resolved": "https://registry.npmjs.org/@webassemblyjs/wast-printer/-/wast-printer-1.14.1.tgz", + "integrity": "sha512-kPSSXE6De1XOR820C90RIo2ogvZG+c3KiHzqUoO/F34Y2shGzesfqv7o57xrxovZJH/MetF5UjroJ/R/3isoiw==", + "dev": true, + "license": "MIT", + "peer": true, + "dependencies": { + "@webassemblyjs/ast": "1.14.1", + "@xtuc/long": "4.2.2" + } + }, + "node_modules/@xmldom/xmldom": { + "version": "0.8.10", + "resolved": "https://registry.npmjs.org/@xmldom/xmldom/-/xmldom-0.8.10.tgz", + "integrity": "sha512-2WALfTl4xo2SkGCYRt6rDTFfk9R1czmBvUQy12gK2KuRKIpWEhcbbzy8EZXtz/jkRqHX8bFEc6FC1HjX4TUWYw==", + "license": "MIT", + "engines": { + "node": ">=10.0.0" + } + }, + "node_modules/@xtuc/ieee754": { + "version": "1.2.0", + "resolved": "https://registry.npmjs.org/@xtuc/ieee754/-/ieee754-1.2.0.tgz", + "integrity": "sha512-DX8nKgqcGwsc0eJSqYt5lwP4DH5FlHnmuWWBRy7X0NcaGR0ZtuyeESgMwTYVEtxmsNGY+qit4QYT/MIYTOTPeA==", + "dev": true, + "license": "BSD-3-Clause", + "peer": true + }, + "node_modules/@xtuc/long": { + "version": "4.2.2", + "resolved": "https://registry.npmjs.org/@xtuc/long/-/long-4.2.2.tgz", + "integrity": "sha512-NuHqBY1PB/D8xU6s/thBgOAiAP7HOYDQ32+BFZILJ8ivkUkAHQnWfn6WhL79Owj1qmUnoN/YPhktdIoucipkAQ==", + "dev": true, + "license": "Apache-2.0", + "peer": true + }, + "node_modules/abab": { + "version": "2.0.6", + "resolved": "https://registry.npmjs.org/abab/-/abab-2.0.6.tgz", + "integrity": "sha512-j2afSsaIENvHZN2B8GOpF566vZ5WVk5opAiMTvWgaQT8DkbOqsTfvNAvHoRGU2zzP8cPoqys+xHTRDWW8L+/BA==", + "deprecated": "Use your platform's native atob() and btoa() methods instead", + "dev": true, + "license": "BSD-3-Clause" + }, + "node_modules/abort-controller": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/abort-controller/-/abort-controller-3.0.0.tgz", + "integrity": "sha512-h8lQ8tacZYnR3vNQTgibj+tODHI5/+l06Au2Pcriv/Gmet0eaj4TwWH41sO9wnHDiQsEj19q0drzdWdeAHtweg==", + "license": "MIT", + "dependencies": { + "event-target-shim": "^5.0.0" + }, + "engines": { + "node": ">=6.5" + } + }, + "node_modules/accepts": { + "version": "1.3.8", + "resolved": "https://registry.npmjs.org/accepts/-/accepts-1.3.8.tgz", + "integrity": "sha512-PYAthTa2m2VKxuvSD3DPC/Gy+U+sOA1LAuT8mkmRuvw+NACSaeXEQ+NHcVF7rONl6qcaxV3Uuemwawk+7+SJLw==", + "license": "MIT", + "dependencies": { + "mime-types": "~2.1.34", + "negotiator": "0.6.3" + }, + "engines": { + "node": ">= 0.6" + } + }, + "node_modules/acorn": { + "version": "8.14.1", + "resolved": "https://registry.npmjs.org/acorn/-/acorn-8.14.1.tgz", + "integrity": "sha512-OvQ/2pUDKmgfCg++xsTX1wGxfTaszcHVcTctW4UJB4hibJx2HXxxO5UmVgyjMa+ZDsiaf5wWLXYpRWMmBI0QHg==", + "license": "MIT", + "bin": { + "acorn": "bin/acorn" + }, + "engines": { + "node": ">=0.4.0" + } + }, + "node_modules/acorn-globals": { + "version": "7.0.1", + "resolved": "https://registry.npmjs.org/acorn-globals/-/acorn-globals-7.0.1.tgz", + "integrity": "sha512-umOSDSDrfHbTNPuNpC2NSnnA3LUrqpevPb4T9jRx4MagXNS0rs+gwiTcAvqCRmsD6utzsrzNt+ebm00SNWiC3Q==", + "dev": true, + "license": "MIT", + "dependencies": { + "acorn": "^8.1.0", + "acorn-walk": "^8.0.2" + } + }, + "node_modules/acorn-loose": { + "version": "8.5.0", + "resolved": "https://registry.npmjs.org/acorn-loose/-/acorn-loose-8.5.0.tgz", + "integrity": "sha512-ppga7pybjwX2HSJv5ayHe6QG4wmNS1RQ2wjBMFTVnOj0h8Rxsmtc6fnVzINqHSSRz23sTe9IL3UAt/PU9gc4FA==", + "dev": true, + "license": "MIT", + "dependencies": { + "acorn": "^8.14.0" + }, + "engines": { + "node": ">=0.4.0" + } + }, + "node_modules/acorn-walk": { + "version": "8.3.4", + "resolved": "https://registry.npmjs.org/acorn-walk/-/acorn-walk-8.3.4.tgz", + "integrity": "sha512-ueEepnujpqee2o5aIYnvHU6C0A42MNdsIDeqy5BydrkuC5R1ZuUFnm27EeFJGoEHJQgn3uleRvmTXaJgfXbt4g==", + "dev": true, + "license": "MIT", + "dependencies": { + "acorn": "^8.11.0" + }, + "engines": { + "node": ">=0.4.0" + } + }, + "node_modules/agent-base": { + "version": "6.0.2", + "resolved": "https://registry.npmjs.org/agent-base/-/agent-base-6.0.2.tgz", + "integrity": "sha512-RZNwNclF7+MS/8bDg70amg32dyeZGZxiDuQmZxKLAlQjr3jGyLx+4Kkk58UO7D2QdgFIQCovuSuZESne6RG6XQ==", + "dev": true, + "license": "MIT", + "dependencies": { + "debug": "4" + }, + "engines": { + "node": ">= 6.0.0" + } + }, + "node_modules/ajv": { + "version": "8.17.1", + "resolved": "https://registry.npmjs.org/ajv/-/ajv-8.17.1.tgz", + "integrity": "sha512-B/gBuNg5SiMTrPkC+A2+cW0RszwxYmn6VYxB/inlBStS5nx6xHIt/ehKRhIMhqusl7a8LjQoZnjCs5vhwxOQ1g==", + "license": "MIT", + "dependencies": { + "fast-deep-equal": "^3.1.3", + "fast-uri": "^3.0.1", + "json-schema-traverse": "^1.0.0", + "require-from-string": "^2.0.2" + }, + "funding": { + "type": "github", + "url": "https://github.com/sponsors/epoberezkin" + } + }, + "node_modules/ajv-formats": { + "version": "2.1.1", + "resolved": "https://registry.npmjs.org/ajv-formats/-/ajv-formats-2.1.1.tgz", + "integrity": "sha512-Wx0Kx52hxE7C18hkMEggYlEifqWZtYaRgouJor+WMdPnQyEK13vgEWyVNup7SoeeoLMsr4kf5h6dOW11I15MUA==", + "license": "MIT", + "dependencies": { + "ajv": "^8.0.0" + }, + "peerDependencies": { + "ajv": "^8.0.0" + }, + "peerDependenciesMeta": { + "ajv": { + "optional": true + } + } + }, + "node_modules/ajv-keywords": { + "version": "5.1.0", + "resolved": "https://registry.npmjs.org/ajv-keywords/-/ajv-keywords-5.1.0.tgz", + "integrity": "sha512-YCS/JNFAUyr5vAuhk1DWm1CBxRHW9LbJ2ozWeemrIqpbsqKjHVxYPyi5GC0rjZIT5JxJ3virVTS8wk4i/Z+krw==", + "license": "MIT", + "dependencies": { + "fast-deep-equal": "^3.1.3" + }, + "peerDependencies": { + "ajv": "^8.8.2" + } + }, + "node_modules/anser": { + "version": "1.4.10", + "resolved": "https://registry.npmjs.org/anser/-/anser-1.4.10.tgz", + "integrity": "sha512-hCv9AqTQ8ycjpSd3upOJd7vFwW1JaoYQ7tpham03GJ1ca8/65rqn0RpaWpItOAd6ylW9wAw6luXYPJIyPFVOww==", + "license": "MIT" + }, + "node_modules/ansi-escapes": { + "version": "4.3.2", + "resolved": "https://registry.npmjs.org/ansi-escapes/-/ansi-escapes-4.3.2.tgz", + "integrity": "sha512-gKXj5ALrKWQLsYG9jlTRmR/xKluxHV+Z9QEwNIgCfM1/uwPMCuzVVnh5mwTd+OuBZcwSIMbqssNWRm1lE51QaQ==", + "license": "MIT", + "dependencies": { + "type-fest": "^0.21.3" + }, + "engines": { + "node": ">=8" + }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" + } + }, + "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==", + "license": "MIT", + "engines": { + "node": ">=8" + } + }, + "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==", + "license": "MIT", + "dependencies": { + "color-convert": "^2.0.1" + }, + "engines": { + "node": ">=8" + }, + "funding": { + "url": "https://github.com/chalk/ansi-styles?sponsor=1" + } + }, + "node_modules/any-promise": { + "version": "1.3.0", + "resolved": "https://registry.npmjs.org/any-promise/-/any-promise-1.3.0.tgz", + "integrity": "sha512-7UvmKalWRt1wgjL1RrGxoSJW/0QZFIegpeGvZG9kjp8vrRu55XTHbwnqq2GpXm9uLbcuhxm3IqX9OB4MZR1b2A==", + "license": "MIT" + }, + "node_modules/anymatch": { + "version": "3.1.3", + "resolved": "https://registry.npmjs.org/anymatch/-/anymatch-3.1.3.tgz", + "integrity": "sha512-KMReFUr0B4t+D+OBkjR3KYqvocp2XaSzO55UcB6mgQMd3KbcE+mWTyvVV7D/zsdEbNnV6acZUutkiHQXvTr1Rw==", + "license": "ISC", + "dependencies": { + "normalize-path": "^3.0.0", + "picomatch": "^2.0.4" + }, + "engines": { + "node": ">= 8" + } + }, + "node_modules/anymatch/node_modules/picomatch": { + "version": "2.3.1", + "resolved": "https://registry.npmjs.org/picomatch/-/picomatch-2.3.1.tgz", + "integrity": "sha512-JU3teHTNjmE2VCGFzuY8EXzCDVwEqB2a8fsIvwaStHhAWJEeVd1o1QD80CU6+ZdEXXSLbSsuLwJjkCBWqRQUVA==", + "license": "MIT", + "engines": { + "node": ">=8.6" + }, + "funding": { + "url": "https://github.com/sponsors/jonschlinkert" + } + }, + "node_modules/arg": { + "version": "5.0.2", + "resolved": "https://registry.npmjs.org/arg/-/arg-5.0.2.tgz", + "integrity": "sha512-PYjyFOLKQ9y57JvQ6QLo8dAgNqswh8M1RMJYdQduT6xbWSgK36P/Z/v+p888pM69jMMfS8Xd8F6I1kQ/I9HUGg==", + "license": "MIT" + }, + "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==", + "license": "Python-2.0" + }, + "node_modules/asap": { + "version": "2.0.6", + "resolved": "https://registry.npmjs.org/asap/-/asap-2.0.6.tgz", + "integrity": "sha512-BSHWgDSAiKs50o2Re8ppvp3seVHXSRM44cdSsT9FfNEUUZLOGWVCsiWaRPWM1Znn+mqZ1OfVZ3z3DWEzSp7hRA==", + "license": "MIT" + }, + "node_modules/async-limiter": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/async-limiter/-/async-limiter-1.0.1.tgz", + "integrity": "sha512-csOlWGAcRFJaI6m+F2WKdnMKr4HhdhFVBk0H/QbJFMCr+uO2kwohwXQPxw/9OCxp05r5ghVBFSyioixx3gfkNQ==", + "license": "MIT" + }, + "node_modules/asynckit": { + "version": "0.4.0", + "resolved": "https://registry.npmjs.org/asynckit/-/asynckit-0.4.0.tgz", + "integrity": "sha512-Oei9OH4tRh0YqU3GxhX79dM/mwVgvbZJaSNaRk+bshkj0S5cfHcgYakreBjrHwatXKbz+IoIdYLxrKim2MjW0Q==", + "dev": true, + "license": "MIT" + }, + "node_modules/babel-jest": { + "version": "29.7.0", + "resolved": "https://registry.npmjs.org/babel-jest/-/babel-jest-29.7.0.tgz", + "integrity": "sha512-BrvGY3xZSwEcCzKvKsCi2GgHqDqsYkOP4/by5xCgIwGXQxIEh+8ew3gmrE1y7XRR6LHZIj6yLYnUi/mm2KXKBg==", + "license": "MIT", + "dependencies": { + "@jest/transform": "^29.7.0", + "@types/babel__core": "^7.1.14", + "babel-plugin-istanbul": "^6.1.1", + "babel-preset-jest": "^29.6.3", + "chalk": "^4.0.0", + "graceful-fs": "^4.2.9", + "slash": "^3.0.0" + }, + "engines": { + "node": "^14.15.0 || ^16.10.0 || >=18.0.0" + }, + "peerDependencies": { + "@babel/core": "^7.8.0" + } + }, + "node_modules/babel-plugin-istanbul": { + "version": "6.1.1", + "resolved": "https://registry.npmjs.org/babel-plugin-istanbul/-/babel-plugin-istanbul-6.1.1.tgz", + "integrity": "sha512-Y1IQok9821cC9onCx5otgFfRm7Lm+I+wwxOx738M/WLPZ9Q42m4IG5W0FNX8WLL2gYMZo3JkuXIH2DOpWM+qwA==", + "license": "BSD-3-Clause", + "dependencies": { + "@babel/helper-plugin-utils": "^7.0.0", + "@istanbuljs/load-nyc-config": "^1.0.0", + "@istanbuljs/schema": "^0.1.2", + "istanbul-lib-instrument": "^5.0.4", + "test-exclude": "^6.0.0" + }, + "engines": { + "node": ">=8" + } + }, + "node_modules/babel-plugin-istanbul/node_modules/istanbul-lib-instrument": { + "version": "5.2.1", + "resolved": "https://registry.npmjs.org/istanbul-lib-instrument/-/istanbul-lib-instrument-5.2.1.tgz", + "integrity": "sha512-pzqtp31nLv/XFOzXGuvhCb8qhjmTVo5vjVk19XE4CRlSWz0KoeJ3bw9XsA7nOp9YBf4qHjwBxkDzKcME/J29Yg==", + "license": "BSD-3-Clause", + "dependencies": { + "@babel/core": "^7.12.3", + "@babel/parser": "^7.14.7", + "@istanbuljs/schema": "^0.1.2", + "istanbul-lib-coverage": "^3.2.0", + "semver": "^6.3.0" + }, + "engines": { + "node": ">=8" + } + }, + "node_modules/babel-plugin-jest-hoist": { + "version": "29.6.3", + "resolved": "https://registry.npmjs.org/babel-plugin-jest-hoist/-/babel-plugin-jest-hoist-29.6.3.tgz", + "integrity": "sha512-ESAc/RJvGTFEzRwOTT4+lNDk/GNHMkKbNzsvT0qKRfDyyYTskxB5rnU2njIDYVxXCBHHEI1c0YwHob3WaYujOg==", + "license": "MIT", + "dependencies": { + "@babel/template": "^7.3.3", + "@babel/types": "^7.3.3", + "@types/babel__core": "^7.1.14", + "@types/babel__traverse": "^7.0.6" + }, + "engines": { + "node": "^14.15.0 || ^16.10.0 || >=18.0.0" + } + }, + "node_modules/babel-plugin-polyfill-corejs2": { + "version": "0.4.13", + "resolved": "https://registry.npmjs.org/babel-plugin-polyfill-corejs2/-/babel-plugin-polyfill-corejs2-0.4.13.tgz", + "integrity": "sha512-3sX/eOms8kd3q2KZ6DAhKPc0dgm525Gqq5NtWKZ7QYYZEv57OQ54KtblzJzH1lQF/eQxO8KjWGIK9IPUJNus5g==", + "license": "MIT", + "dependencies": { + "@babel/compat-data": "^7.22.6", + "@babel/helper-define-polyfill-provider": "^0.6.4", + "semver": "^6.3.1" + }, + "peerDependencies": { + "@babel/core": "^7.4.0 || ^8.0.0-0 <8.0.0" + } + }, + "node_modules/babel-plugin-polyfill-corejs3": { + "version": "0.11.1", + "resolved": "https://registry.npmjs.org/babel-plugin-polyfill-corejs3/-/babel-plugin-polyfill-corejs3-0.11.1.tgz", + "integrity": "sha512-yGCqvBT4rwMczo28xkH/noxJ6MZ4nJfkVYdoDaC/utLtWrXxv27HVrzAeSbqR8SxDsp46n0YF47EbHoixy6rXQ==", + "license": "MIT", + "dependencies": { + "@babel/helper-define-polyfill-provider": "^0.6.3", + "core-js-compat": "^3.40.0" + }, + "peerDependencies": { + "@babel/core": "^7.4.0 || ^8.0.0-0 <8.0.0" + } + }, + "node_modules/babel-plugin-polyfill-regenerator": { + "version": "0.6.4", + "resolved": "https://registry.npmjs.org/babel-plugin-polyfill-regenerator/-/babel-plugin-polyfill-regenerator-0.6.4.tgz", + "integrity": "sha512-7gD3pRadPrbjhjLyxebmx/WrFYcuSjZ0XbdUujQMZ/fcE9oeewk2U/7PCvez84UeuK3oSjmPZ0Ch0dlupQvGzw==", + "license": "MIT", + "dependencies": { + "@babel/helper-define-polyfill-provider": "^0.6.4" + }, + "peerDependencies": { + "@babel/core": "^7.4.0 || ^8.0.0-0 <8.0.0" + } + }, + "node_modules/babel-plugin-react-native-web": { + "version": "0.19.13", + "resolved": "https://registry.npmjs.org/babel-plugin-react-native-web/-/babel-plugin-react-native-web-0.19.13.tgz", + "integrity": "sha512-4hHoto6xaN23LCyZgL9LJZc3olmAxd7b6jDzlZnKXAh4rRAbZRKNBJoOOdp46OBqgy+K0t0guTj5/mhA8inymQ==", + "license": "MIT" + }, + "node_modules/babel-plugin-syntax-hermes-parser": { + "version": "0.25.1", + "resolved": "https://registry.npmjs.org/babel-plugin-syntax-hermes-parser/-/babel-plugin-syntax-hermes-parser-0.25.1.tgz", + "integrity": "sha512-IVNpGzboFLfXZUAwkLFcI/bnqVbwky0jP3eBno4HKtqvQJAHBLdgxiG6lQ4to0+Q/YCN3PO0od5NZwIKyY4REQ==", + "license": "MIT", + "dependencies": { + "hermes-parser": "0.25.1" + } + }, + "node_modules/babel-plugin-transform-flow-enums": { + "version": "0.0.2", + "resolved": "https://registry.npmjs.org/babel-plugin-transform-flow-enums/-/babel-plugin-transform-flow-enums-0.0.2.tgz", + "integrity": "sha512-g4aaCrDDOsWjbm0PUUeVnkcVd6AKJsVc/MbnPhEotEpkeJQP6b8nzewohQi7+QS8UyPehOhGWn0nOwjvWpmMvQ==", + "license": "MIT", + "dependencies": { + "@babel/plugin-syntax-flow": "^7.12.1" + } + }, + "node_modules/babel-preset-current-node-syntax": { + "version": "1.1.0", + "resolved": "https://registry.npmjs.org/babel-preset-current-node-syntax/-/babel-preset-current-node-syntax-1.1.0.tgz", + "integrity": "sha512-ldYss8SbBlWva1bs28q78Ju5Zq1F+8BrqBZZ0VFhLBvhh6lCpC2o3gDJi/5DRLs9FgYZCnmPYIVFU4lRXCkyUw==", + "license": "MIT", + "dependencies": { + "@babel/plugin-syntax-async-generators": "^7.8.4", + "@babel/plugin-syntax-bigint": "^7.8.3", + "@babel/plugin-syntax-class-properties": "^7.12.13", + "@babel/plugin-syntax-class-static-block": "^7.14.5", + "@babel/plugin-syntax-import-attributes": "^7.24.7", + "@babel/plugin-syntax-import-meta": "^7.10.4", + "@babel/plugin-syntax-json-strings": "^7.8.3", + "@babel/plugin-syntax-logical-assignment-operators": "^7.10.4", + "@babel/plugin-syntax-nullish-coalescing-operator": "^7.8.3", + "@babel/plugin-syntax-numeric-separator": "^7.10.4", + "@babel/plugin-syntax-object-rest-spread": "^7.8.3", + "@babel/plugin-syntax-optional-catch-binding": "^7.8.3", + "@babel/plugin-syntax-optional-chaining": "^7.8.3", + "@babel/plugin-syntax-private-property-in-object": "^7.14.5", + "@babel/plugin-syntax-top-level-await": "^7.14.5" + }, + "peerDependencies": { + "@babel/core": "^7.0.0" + } + }, + "node_modules/babel-preset-expo": { + "version": "13.2.0", + "resolved": "https://registry.npmjs.org/babel-preset-expo/-/babel-preset-expo-13.2.0.tgz", + "integrity": "sha512-oNUeUZPMNRPmx/2jaKJLSQFP/MFI1M91vP+Gp+j8/FPl9p/ps603DNwCaRdcT/Vj3FfREdlIwRio1qDCjY0oAA==", + "license": "MIT", + "dependencies": { + "@babel/helper-module-imports": "^7.25.9", + "@babel/plugin-proposal-decorators": "^7.12.9", + "@babel/plugin-proposal-export-default-from": "^7.24.7", + "@babel/plugin-syntax-export-default-from": "^7.24.7", + "@babel/plugin-transform-export-namespace-from": "^7.25.9", + "@babel/plugin-transform-flow-strip-types": "^7.25.2", + "@babel/plugin-transform-modules-commonjs": "^7.24.8", + "@babel/plugin-transform-object-rest-spread": "^7.24.7", + "@babel/plugin-transform-parameters": "^7.24.7", + "@babel/plugin-transform-private-methods": "^7.24.7", + "@babel/plugin-transform-private-property-in-object": "^7.24.7", + "@babel/plugin-transform-runtime": "^7.24.7", + "@babel/preset-react": "^7.22.15", + "@babel/preset-typescript": "^7.23.0", + "@react-native/babel-preset": "0.79.3", + "babel-plugin-react-native-web": "~0.19.13", + "babel-plugin-syntax-hermes-parser": "^0.25.1", + "babel-plugin-transform-flow-enums": "^0.0.2", + "debug": "^4.3.4", + "react-refresh": "^0.14.2", + "resolve-from": "^5.0.0" + }, + "peerDependencies": { + "babel-plugin-react-compiler": "^19.0.0-beta-e993439-20250405" + }, + "peerDependenciesMeta": { + "babel-plugin-react-compiler": { + "optional": true + } + } + }, + "node_modules/babel-preset-jest": { + "version": "29.6.3", + "resolved": "https://registry.npmjs.org/babel-preset-jest/-/babel-preset-jest-29.6.3.tgz", + "integrity": "sha512-0B3bhxR6snWXJZtR/RliHTDPRgn1sNHOR0yVtq/IiQFyuOVjFS+wuio/R4gSNkyYmKmJB4wGZv2NZanmKmTnNA==", + "license": "MIT", + "dependencies": { + "babel-plugin-jest-hoist": "^29.6.3", + "babel-preset-current-node-syntax": "^1.0.0" + }, + "engines": { + "node": "^14.15.0 || ^16.10.0 || >=18.0.0" + }, + "peerDependencies": { + "@babel/core": "^7.0.0" + } + }, + "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==", + "license": "MIT" + }, + "node_modules/base64-js": { + "version": "1.5.1", + "resolved": "https://registry.npmjs.org/base64-js/-/base64-js-1.5.1.tgz", + "integrity": "sha512-AKpaYlHn8t4SVbOHCy+b5+KKgvR4vrsD8vbvrbiQJps7fKDTkjkDry6ji0rUJjC0kzbNePLwzxq8iypo41qeWA==", + "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/better-opn": { + "version": "3.0.2", + "resolved": "https://registry.npmjs.org/better-opn/-/better-opn-3.0.2.tgz", + "integrity": "sha512-aVNobHnJqLiUelTaHat9DZ1qM2w0C0Eym4LPI/3JxOnSokGVdsl1T1kN7TFvsEAD8G47A6VKQ0TVHqbBnYMJlQ==", + "license": "MIT", + "dependencies": { + "open": "^8.0.4" + }, + "engines": { + "node": ">=12.0.0" + } + }, + "node_modules/better-opn/node_modules/open": { + "version": "8.4.2", + "resolved": "https://registry.npmjs.org/open/-/open-8.4.2.tgz", + "integrity": "sha512-7x81NCL719oNbsq/3mh+hVrAWmFuEYUqrq/Iw3kUzH8ReypT9QQ0BLoJS7/G9k6N81XjW4qHWtjWwe/9eLy1EQ==", + "license": "MIT", + "dependencies": { + "define-lazy-prop": "^2.0.0", + "is-docker": "^2.1.1", + "is-wsl": "^2.2.0" + }, + "engines": { + "node": ">=12" + }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" + } + }, + "node_modules/big-integer": { + "version": "1.6.52", + "resolved": "https://registry.npmjs.org/big-integer/-/big-integer-1.6.52.tgz", + "integrity": "sha512-QxD8cf2eVqJOOz63z6JIN9BzvVs/dlySa5HGSBH5xtR8dPteIRQnBxxKqkNTiT6jbDTF6jAfrd4oMcND9RGbQg==", + "license": "Unlicense", + "engines": { + "node": ">=0.6" + } + }, + "node_modules/boolbase": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/boolbase/-/boolbase-1.0.0.tgz", + "integrity": "sha512-JZOSA7Mo9sNGB8+UjSgzdLtokWAky1zbztM3WRLCbZ70/3cTANmQmOdR7y2g+J0e2WXywy1yS468tY+IruqEww==", + "license": "ISC" + }, + "node_modules/bplist-creator": { + "version": "0.1.0", + "resolved": "https://registry.npmjs.org/bplist-creator/-/bplist-creator-0.1.0.tgz", + "integrity": "sha512-sXaHZicyEEmY86WyueLTQesbeoH/mquvarJaQNbjuOQO+7gbFcDEWqKmcWA4cOTLzFlfgvkiVxolk1k5bBIpmg==", + "license": "MIT", + "dependencies": { + "stream-buffers": "2.2.x" + } + }, + "node_modules/bplist-parser": { + "version": "0.3.2", + "resolved": "https://registry.npmjs.org/bplist-parser/-/bplist-parser-0.3.2.tgz", + "integrity": "sha512-apC2+fspHGI3mMKj+dGevkGo/tCqVB8jMb6i+OX+E29p0Iposz07fABkRIfVUPNd5A5VbuOz1bZbnmkKLYF+wQ==", + "license": "MIT", + "dependencies": { + "big-integer": "1.6.x" + }, + "engines": { + "node": ">= 5.10.0" + } + }, + "node_modules/brace-expansion": { + "version": "2.0.1", + "resolved": "https://registry.npmjs.org/brace-expansion/-/brace-expansion-2.0.1.tgz", + "integrity": "sha512-XnAIvQ8eM+kC6aULx6wuQiwVsnzsi9d3WxzV3FpWTGA19F621kwdbsAcFKXgKUHZWsy+mY6iL1sHTxWEFCytDA==", + "license": "MIT", + "dependencies": { + "balanced-match": "^1.0.0" + } + }, + "node_modules/braces": { + "version": "3.0.3", + "resolved": "https://registry.npmjs.org/braces/-/braces-3.0.3.tgz", + "integrity": "sha512-yQbXgO/OSZVD2IsiLlro+7Hf6Q18EJrKSEsdoMzKePKXct3gvD8oLcOQdIzGupr5Fj+EDe8gO/lxc1BzfMpxvA==", + "license": "MIT", + "dependencies": { + "fill-range": "^7.1.1" + }, + "engines": { + "node": ">=8" + } + }, + "node_modules/browserslist": { + "version": "4.24.5", + "resolved": "https://registry.npmjs.org/browserslist/-/browserslist-4.24.5.tgz", + "integrity": "sha512-FDToo4Wo82hIdgc1CQ+NQD0hEhmpPjrZ3hiUgwgOG6IuTdlpr8jdjyG24P6cNP1yJpTLzS5OcGgSw0xmDU1/Tw==", + "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.30001716", + "electron-to-chromium": "^1.5.149", + "node-releases": "^2.0.19", + "update-browserslist-db": "^1.1.3" + }, + "bin": { + "browserslist": "cli.js" + }, + "engines": { + "node": "^6 || ^7 || ^8 || ^9 || ^10 || ^11 || ^12 || >=13.7" + } + }, + "node_modules/bser": { + "version": "2.1.1", + "resolved": "https://registry.npmjs.org/bser/-/bser-2.1.1.tgz", + "integrity": "sha512-gQxTNE/GAfIIrmHLUE3oJyp5FO6HRBfhjnw4/wMmA63ZGDJnWBmgY/lyQBpnDUkGmAhbSe39tx2d/iTOAfglwQ==", + "license": "Apache-2.0", + "dependencies": { + "node-int64": "^0.4.0" + } + }, + "node_modules/buffer": { + "version": "5.7.1", + "resolved": "https://registry.npmjs.org/buffer/-/buffer-5.7.1.tgz", + "integrity": "sha512-EHcyIPBQ4BSGlvjB16k5KgAJ27CIsHY/2JBmCRReo48y9rQ3MaUzWX3KVlBa4U7MyX02HdVj0K7C3WaB3ju7FQ==", + "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": { + "base64-js": "^1.3.1", + "ieee754": "^1.1.13" + } + }, + "node_modules/buffer-from": { + "version": "1.1.2", + "resolved": "https://registry.npmjs.org/buffer-from/-/buffer-from-1.1.2.tgz", + "integrity": "sha512-E+XQCRwSbaaiChtv6k6Dwgc+bx+Bs6vuKJHHl5kox/BaKbhiXzqQOwK4cO22yElGp2OCmjwVhT3HmxgyPGnJfQ==", + "license": "MIT" + }, + "node_modules/bytes": { + "version": "3.1.2", + "resolved": "https://registry.npmjs.org/bytes/-/bytes-3.1.2.tgz", + "integrity": "sha512-/Nf7TyzTx6S3yRJObOAV7956r8cr2+Oj8AC5dt8wSP3BQAoeX58NoHyCU8P8zGkNXStjTSi6fzO6F0pBdcYbEg==", + "license": "MIT", + "engines": { + "node": ">= 0.8" + } + }, + "node_modules/call-bind-apply-helpers": { + "version": "1.0.2", + "resolved": "https://registry.npmjs.org/call-bind-apply-helpers/-/call-bind-apply-helpers-1.0.2.tgz", + "integrity": "sha512-Sp1ablJ0ivDkSzjcaJdxEunN5/XvksFJ2sMBFfq6x0ryhQV/2b/KwFe21cMpmHtPOSij8K99/wSfoEuTObmuMQ==", + "dev": true, + "license": "MIT", + "dependencies": { + "es-errors": "^1.3.0", + "function-bind": "^1.1.2" + }, + "engines": { + "node": ">= 0.4" + } + }, + "node_modules/caller-callsite": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/caller-callsite/-/caller-callsite-2.0.0.tgz", + "integrity": "sha512-JuG3qI4QOftFsZyOn1qq87fq5grLIyk1JYd5lJmdA+fG7aQ9pA/i3JIJGcO3q0MrRcHlOt1U+ZeHW8Dq9axALQ==", + "license": "MIT", + "dependencies": { + "callsites": "^2.0.0" + }, + "engines": { + "node": ">=4" + } + }, + "node_modules/caller-callsite/node_modules/callsites": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/callsites/-/callsites-2.0.0.tgz", + "integrity": "sha512-ksWePWBloaWPxJYQ8TL0JHvtci6G5QTKwQ95RcWAa/lzoAKuAOflGdAK92hpHXjkwb8zLxoLNUoNYZgVsaJzvQ==", + "license": "MIT", + "engines": { + "node": ">=4" + } + }, + "node_modules/caller-path": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/caller-path/-/caller-path-2.0.0.tgz", + "integrity": "sha512-MCL3sf6nCSXOwCTzvPKhN18TU7AHTvdtam8DAogxcrJ8Rjfbbg7Lgng64H9Iy+vUV6VGFClN/TyxBkAebLRR4A==", + "license": "MIT", + "dependencies": { + "caller-callsite": "^2.0.0" + }, + "engines": { + "node": ">=4" + } + }, + "node_modules/callsites": { + "version": "3.1.0", + "resolved": "https://registry.npmjs.org/callsites/-/callsites-3.1.0.tgz", + "integrity": "sha512-P8BjAsXvZS+VIDUI11hHCQEv74YT67YUi5JJFNWIqL235sBmjX4+qx9Muvls5ivyNENctx46xQLQ3aTuE7ssaQ==", + "dev": true, + "license": "MIT", + "engines": { + "node": ">=6" + } + }, + "node_modules/camelcase": { + "version": "5.3.1", + "resolved": "https://registry.npmjs.org/camelcase/-/camelcase-5.3.1.tgz", + "integrity": "sha512-L28STB170nwWS63UjtlEOE3dldQApaJXZkOI1uMFfzf3rRuPegHaHesyee+YxQ+W6SvRDQV6UrdOdRiR153wJg==", + "license": "MIT", + "engines": { + "node": ">=6" + } + }, + "node_modules/caniuse-lite": { + "version": "1.0.30001718", + "resolved": "https://registry.npmjs.org/caniuse-lite/-/caniuse-lite-1.0.30001718.tgz", + "integrity": "sha512-AflseV1ahcSunK53NfEs9gFWgOEmzr0f+kaMFA4xiLZlr9Hzt7HxcSpIFcnNCUkz6R6dWKa54rUz3HUmI3nVcw==", + "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" + }, + "node_modules/chalk": { + "version": "4.1.2", + "resolved": "https://registry.npmjs.org/chalk/-/chalk-4.1.2.tgz", + "integrity": "sha512-oKnbhFyRIXpUuez8iBMmyEa4nbj4IOQyuhc/wy9kY7/WVPcwIO9VA668Pu8RkO7+0G76SLROeyw9CpQ061i4mA==", + "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/char-regex": { + "version": "1.0.2", + "resolved": "https://registry.npmjs.org/char-regex/-/char-regex-1.0.2.tgz", + "integrity": "sha512-kWWXztvZ5SBQV+eRgKFeh8q5sLuZY2+8WUIzlxWVTg+oGwY14qylx1KbKzHd8P6ZYkAg0xyIDU9JMHhyJMZ1jw==", + "dev": true, + "license": "MIT", + "engines": { + "node": ">=10" + } + }, + "node_modules/chownr": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/chownr/-/chownr-3.0.0.tgz", + "integrity": "sha512-+IxzY9BZOQd/XuYPRmrvEVjF/nqj5kgT4kEq7VofrDoM1MxoRjEWkrCC3EtLi59TVawxTAn+orJwFQcrqEN1+g==", + "license": "BlueOak-1.0.0", + "engines": { + "node": ">=18" + } + }, + "node_modules/chrome-launcher": { + "version": "0.15.2", + "resolved": "https://registry.npmjs.org/chrome-launcher/-/chrome-launcher-0.15.2.tgz", + "integrity": "sha512-zdLEwNo3aUVzIhKhTtXfxhdvZhUghrnmkvcAq2NoDd+LeOHKf03H5jwZ8T/STsAlzyALkBVK552iaG1fGf1xVQ==", + "license": "Apache-2.0", + "dependencies": { + "@types/node": "*", + "escape-string-regexp": "^4.0.0", + "is-wsl": "^2.2.0", + "lighthouse-logger": "^1.0.0" + }, + "bin": { + "print-chrome-path": "bin/print-chrome-path.js" + }, + "engines": { + "node": ">=12.13.0" + } + }, + "node_modules/chrome-trace-event": { + "version": "1.0.4", + "resolved": "https://registry.npmjs.org/chrome-trace-event/-/chrome-trace-event-1.0.4.tgz", + "integrity": "sha512-rNjApaLzuwaOTjCiT8lSDdGN1APCiqkChLMJxJPWLunPAt5fy8xgU9/jNOchV84wfIxrA0lRQB7oCT8jrn/wrQ==", + "dev": true, + "license": "MIT", + "peer": true, + "engines": { + "node": ">=6.0" + } + }, + "node_modules/chromium-edge-launcher": { + "version": "0.2.0", + "resolved": "https://registry.npmjs.org/chromium-edge-launcher/-/chromium-edge-launcher-0.2.0.tgz", + "integrity": "sha512-JfJjUnq25y9yg4FABRRVPmBGWPZZi+AQXT4mxupb67766/0UlhG8PAZCz6xzEMXTbW3CsSoE8PcCWA49n35mKg==", + "license": "Apache-2.0", + "dependencies": { + "@types/node": "*", + "escape-string-regexp": "^4.0.0", + "is-wsl": "^2.2.0", + "lighthouse-logger": "^1.0.0", + "mkdirp": "^1.0.4", + "rimraf": "^3.0.2" + } + }, + "node_modules/ci-info": { + "version": "3.9.0", + "resolved": "https://registry.npmjs.org/ci-info/-/ci-info-3.9.0.tgz", + "integrity": "sha512-NIxF55hv4nSqQswkAeiOi1r83xy8JldOFDTWiug55KBu9Jnblncd2U6ViHmYgHf01TPZS77NJBhBMKdWj9HQMQ==", + "funding": [ + { + "type": "github", + "url": "https://github.com/sponsors/sibiraj-s" + } + ], + "license": "MIT", + "engines": { + "node": ">=8" + } + }, + "node_modules/cjs-module-lexer": { + "version": "1.4.3", + "resolved": "https://registry.npmjs.org/cjs-module-lexer/-/cjs-module-lexer-1.4.3.tgz", + "integrity": "sha512-9z8TZaGM1pfswYeXrUpzPrkx8UnWYdhJclsiYMm6x/w5+nN+8Tf/LnAgfLGQCm59qAOxU8WwHEq2vNwF6i4j+Q==", + "dev": true, + "license": "MIT" + }, + "node_modules/cli-cursor": { + "version": "2.1.0", + "resolved": "https://registry.npmjs.org/cli-cursor/-/cli-cursor-2.1.0.tgz", + "integrity": "sha512-8lgKz8LmCRYZZQDpRyT2m5rKJ08TnU4tR9FFFW2rxpxR1FzWi4PQ/NfyODchAatHaUgnSPVcx/R5w6NuTBzFiw==", + "license": "MIT", + "dependencies": { + "restore-cursor": "^2.0.0" + }, + "engines": { + "node": ">=4" + } + }, + "node_modules/cli-spinners": { + "version": "2.9.2", + "resolved": "https://registry.npmjs.org/cli-spinners/-/cli-spinners-2.9.2.tgz", + "integrity": "sha512-ywqV+5MmyL4E7ybXgKys4DugZbX0FC6LnwrhjuykIjnK9k8OQacQ7axGKnjDXWNhns0xot3bZI5h55H8yo9cJg==", + "license": "MIT", + "engines": { + "node": ">=6" + }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" + } + }, + "node_modules/client-only": { + "version": "0.0.1", + "resolved": "https://registry.npmjs.org/client-only/-/client-only-0.0.1.tgz", + "integrity": "sha512-IV3Ou0jSMzZrd3pZ48nLkT9DA7Ag1pnPzaiQhpW7c3RbcqqzvzzVu+L8gfqMp/8IM2MQtSiqaCxrrcfu8I8rMA==", + "license": "MIT" + }, + "node_modules/cliui": { + "version": "8.0.1", + "resolved": "https://registry.npmjs.org/cliui/-/cliui-8.0.1.tgz", + "integrity": "sha512-BSeNnyus75C4//NQ9gQt1/csTXyo/8Sb+afLAkzAptFuMsod9HFokGNudZpi/oQV73hnVK+sR+5PVRMd+Dr7YQ==", + "license": "ISC", + "dependencies": { + "string-width": "^4.2.0", + "strip-ansi": "^6.0.1", + "wrap-ansi": "^7.0.0" + }, + "engines": { + "node": ">=12" + } + }, + "node_modules/cliui/node_modules/emoji-regex": { + "version": "8.0.0", + "resolved": "https://registry.npmjs.org/emoji-regex/-/emoji-regex-8.0.0.tgz", + "integrity": "sha512-MSjYzcWNOA0ewAHpz0MxpYFvwg6yjy1NG3xteoqz644VCo/RPgnr1/GGt+ic3iJTzQ8Eu3TdM14SawnVUmGE6A==", + "license": "MIT" + }, + "node_modules/cliui/node_modules/string-width": { + "version": "4.2.3", + "resolved": "https://registry.npmjs.org/string-width/-/string-width-4.2.3.tgz", + "integrity": "sha512-wKyQRQpjJ0sIp62ErSZdGsjMJWsap5oRNihHhu6G7JVO/9jIB6UyevL+tXuOqrng8j/cxKTWyWUwvSTriiZz/g==", + "license": "MIT", + "dependencies": { + "emoji-regex": "^8.0.0", + "is-fullwidth-code-point": "^3.0.0", + "strip-ansi": "^6.0.1" + }, + "engines": { + "node": ">=8" + } + }, + "node_modules/cliui/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==", + "license": "MIT", + "dependencies": { + "ansi-regex": "^5.0.1" + }, + "engines": { + "node": ">=8" + } + }, + "node_modules/clone": { + "version": "1.0.4", + "resolved": "https://registry.npmjs.org/clone/-/clone-1.0.4.tgz", + "integrity": "sha512-JQHZ2QMW6l3aH/j6xCqQThY/9OH4D/9ls34cgkUBiEeocRTU04tHfKPBsUK1PqZCUQM7GiA0IIXJSuXHI64Kbg==", + "license": "MIT", + "engines": { + "node": ">=0.8" + } + }, + "node_modules/co": { + "version": "4.6.0", + "resolved": "https://registry.npmjs.org/co/-/co-4.6.0.tgz", + "integrity": "sha512-QVb0dM5HvG+uaxitm8wONl7jltx8dqhfU33DcqtOZcLSVIKSDDLDi7+0LbAKiyI8hD9u42m2YxXSkMGWThaecQ==", + "dev": true, + "license": "MIT", + "engines": { + "iojs": ">= 1.0.0", + "node": ">= 0.12.0" + } + }, + "node_modules/collect-v8-coverage": { + "version": "1.0.2", + "resolved": "https://registry.npmjs.org/collect-v8-coverage/-/collect-v8-coverage-1.0.2.tgz", + "integrity": "sha512-lHl4d5/ONEbLlJvaJNtsF/Lz+WvB07u2ycqTYbdrq7UypDXailES4valYb2eWiJFxZlVmpGekfqoxQhzyFdT4Q==", + "dev": true, + "license": "MIT" + }, + "node_modules/color": { + "version": "4.2.3", + "resolved": "https://registry.npmjs.org/color/-/color-4.2.3.tgz", + "integrity": "sha512-1rXeuUUiGGrykh+CeBdu5Ie7OJwinCgQY0bc7GCRxy5xVHy+moaqkpL/jqQq0MtQOeYcrqEz4abc5f0KtU7W4A==", + "license": "MIT", + "dependencies": { + "color-convert": "^2.0.1", + "color-string": "^1.9.0" + }, + "engines": { + "node": ">=12.5.0" + } + }, + "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==", + "license": "MIT", + "dependencies": { + "color-name": "~1.1.4" + }, + "engines": { + "node": ">=7.0.0" + } + }, + "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==", + "license": "MIT" + }, + "node_modules/color-string": { + "version": "1.9.1", + "resolved": "https://registry.npmjs.org/color-string/-/color-string-1.9.1.tgz", + "integrity": "sha512-shrVawQFojnZv6xM40anx4CkoDP+fZsw/ZerEMsW/pyzsRbElpsL/DBVW7q3ExxwusdNXI3lXpuhEZkzs8p5Eg==", + "license": "MIT", + "dependencies": { + "color-name": "^1.0.0", + "simple-swizzle": "^0.2.2" + } + }, + "node_modules/combined-stream": { + "version": "1.0.8", + "resolved": "https://registry.npmjs.org/combined-stream/-/combined-stream-1.0.8.tgz", + "integrity": "sha512-FQN4MRfuJeHf7cBbBMJFXhKSDq+2kAArBlmRBvcvFE5BB1HZKXtSFASDhdlz9zOYwxh8lDdnvmMOe/+5cdoEdg==", + "dev": true, + "license": "MIT", + "dependencies": { + "delayed-stream": "~1.0.0" + }, + "engines": { + "node": ">= 0.8" + } + }, + "node_modules/commander": { + "version": "7.2.0", + "resolved": "https://registry.npmjs.org/commander/-/commander-7.2.0.tgz", + "integrity": "sha512-QrWXB+ZQSVPmIWIhtEO9H+gwHaMGYiF5ChvoJ+K9ZGHG/sVsa6yiesAD1GC/x46sET00Xlwo1u49RVVVzvcSkw==", + "license": "MIT", + "engines": { + "node": ">= 10" + } + }, + "node_modules/compressible": { + "version": "2.0.18", + "resolved": "https://registry.npmjs.org/compressible/-/compressible-2.0.18.tgz", + "integrity": "sha512-AF3r7P5dWxL8MxyITRMlORQNaOA2IkAFaTr4k7BUumjPtRpGDTZpl0Pb1XCO6JeDCBdp126Cgs9sMxqSjgYyRg==", + "license": "MIT", + "dependencies": { + "mime-db": ">= 1.43.0 < 2" + }, + "engines": { + "node": ">= 0.6" + } + }, + "node_modules/compression": { + "version": "1.8.0", + "resolved": "https://registry.npmjs.org/compression/-/compression-1.8.0.tgz", + "integrity": "sha512-k6WLKfunuqCYD3t6AsuPGvQWaKwuLLh2/xHNcX4qE+vIfDNXpSqnrhwA7O53R7WVQUnt8dVAIW+YHr7xTgOgGA==", + "license": "MIT", + "dependencies": { + "bytes": "3.1.2", + "compressible": "~2.0.18", + "debug": "2.6.9", + "negotiator": "~0.6.4", + "on-headers": "~1.0.2", + "safe-buffer": "5.2.1", + "vary": "~1.1.2" + }, + "engines": { + "node": ">= 0.8.0" + } + }, + "node_modules/compression/node_modules/debug": { + "version": "2.6.9", + "resolved": "https://registry.npmjs.org/debug/-/debug-2.6.9.tgz", + "integrity": "sha512-bC7ElrdJaJnPbAP+1EotYvqZsb3ecl5wi6Bfi6BJTUcNowp6cvspg0jXznRTKDjm/E7AdgFBVeAPVMNcKGsHMA==", + "license": "MIT", + "dependencies": { + "ms": "2.0.0" + } + }, + "node_modules/compression/node_modules/ms": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/ms/-/ms-2.0.0.tgz", + "integrity": "sha512-Tpp60P6IUJDTuOq/5Z8cdskzJujfwqfOTkrwIwj7IRISpnkJnT6SyJ4PCPnGMoFjC9ddhal5KVIYtAt97ix05A==", + "license": "MIT" + }, + "node_modules/compression/node_modules/negotiator": { + "version": "0.6.4", + "resolved": "https://registry.npmjs.org/negotiator/-/negotiator-0.6.4.tgz", + "integrity": "sha512-myRT3DiWPHqho5PrJaIRyaMv2kgYf0mUVgBNOYMuCH5Ki1yEiQaf/ZJuQ62nvpc44wL5WDbTX7yGJi1Neevw8w==", + "license": "MIT", + "engines": { + "node": ">= 0.6" + } + }, + "node_modules/concat-map": { + "version": "0.0.1", + "resolved": "https://registry.npmjs.org/concat-map/-/concat-map-0.0.1.tgz", + "integrity": "sha512-/Srv4dswyQNBfohGpz9o6Yb3Gz3SrUDqBH5rTuhGR7ahtlbYKnVxw2bCFMRljaA7EXHaXZ8wsHdodFvbkhKmqg==", + "license": "MIT" + }, + "node_modules/connect": { + "version": "3.7.0", + "resolved": "https://registry.npmjs.org/connect/-/connect-3.7.0.tgz", + "integrity": "sha512-ZqRXc+tZukToSNmh5C2iWMSoV3X1YUcPbqEM4DkEG5tNQXrQUZCNVGGv3IuicnkMtPfGf3Xtp8WCXs295iQ1pQ==", + "license": "MIT", + "dependencies": { + "debug": "2.6.9", + "finalhandler": "1.1.2", + "parseurl": "~1.3.3", + "utils-merge": "1.0.1" + }, + "engines": { + "node": ">= 0.10.0" + } + }, + "node_modules/connect/node_modules/debug": { + "version": "2.6.9", + "resolved": "https://registry.npmjs.org/debug/-/debug-2.6.9.tgz", + "integrity": "sha512-bC7ElrdJaJnPbAP+1EotYvqZsb3ecl5wi6Bfi6BJTUcNowp6cvspg0jXznRTKDjm/E7AdgFBVeAPVMNcKGsHMA==", + "license": "MIT", + "dependencies": { + "ms": "2.0.0" + } + }, + "node_modules/connect/node_modules/ms": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/ms/-/ms-2.0.0.tgz", + "integrity": "sha512-Tpp60P6IUJDTuOq/5Z8cdskzJujfwqfOTkrwIwj7IRISpnkJnT6SyJ4PCPnGMoFjC9ddhal5KVIYtAt97ix05A==", + "license": "MIT" + }, + "node_modules/convert-source-map": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/convert-source-map/-/convert-source-map-2.0.0.tgz", + "integrity": "sha512-Kvp459HrV2FEJ1CAsi1Ku+MY3kasH19TFykTz2xWmMeq6bk2NU3XXvfJ+Q61m0xktWwt+1HSYf3JZsTms3aRJg==", + "license": "MIT" + }, + "node_modules/core-js-compat": { + "version": "3.42.0", + "resolved": "https://registry.npmjs.org/core-js-compat/-/core-js-compat-3.42.0.tgz", + "integrity": "sha512-bQasjMfyDGyaeWKBIu33lHh9qlSR0MFE/Nmc6nMjf/iU9b3rSMdAYz1Baxrv4lPdGUsTqZudHA4jIGSJy0SWZQ==", + "license": "MIT", + "dependencies": { + "browserslist": "^4.24.4" + }, + "funding": { + "type": "opencollective", + "url": "https://opencollective.com/core-js" + } + }, + "node_modules/cosmiconfig": { + "version": "5.2.1", + "resolved": "https://registry.npmjs.org/cosmiconfig/-/cosmiconfig-5.2.1.tgz", + "integrity": "sha512-H65gsXo1SKjf8zmrJ67eJk8aIRKV5ff2D4uKZIBZShbhGSpEmsQOPW/SKMKYhSTrqR7ufy6RP69rPogdaPh/kA==", + "license": "MIT", + "dependencies": { + "import-fresh": "^2.0.0", + "is-directory": "^0.3.1", + "js-yaml": "^3.13.1", + "parse-json": "^4.0.0" + }, + "engines": { + "node": ">=4" + } + }, + "node_modules/cosmiconfig/node_modules/argparse": { + "version": "1.0.10", + "resolved": "https://registry.npmjs.org/argparse/-/argparse-1.0.10.tgz", + "integrity": "sha512-o5Roy6tNG4SL/FOkCAN6RzjiakZS25RLYFrcMttJqbdd8BWrnA+fGz57iN5Pb06pvBGvl5gQ0B48dJlslXvoTg==", + "license": "MIT", + "dependencies": { + "sprintf-js": "~1.0.2" + } + }, + "node_modules/cosmiconfig/node_modules/js-yaml": { + "version": "3.14.1", + "resolved": "https://registry.npmjs.org/js-yaml/-/js-yaml-3.14.1.tgz", + "integrity": "sha512-okMH7OXXJ7YrN9Ok3/SXrnu4iX9yOk+25nqX4imS2npuvTYDmo/QEZoqwZkYaIDk3jVvBOTOIEgEhaLOynBS9g==", + "license": "MIT", + "dependencies": { + "argparse": "^1.0.7", + "esprima": "^4.0.0" + }, + "bin": { + "js-yaml": "bin/js-yaml.js" + } + }, + "node_modules/cosmiconfig/node_modules/parse-json": { + "version": "4.0.0", + "resolved": "https://registry.npmjs.org/parse-json/-/parse-json-4.0.0.tgz", + "integrity": "sha512-aOIos8bujGN93/8Ox/jPLh7RwVnPEysynVFE+fQZyg6jKELEHwzgKdLRFHUgXJL6kylijVSBC4BvN9OmsB48Rw==", + "license": "MIT", + "dependencies": { + "error-ex": "^1.3.1", + "json-parse-better-errors": "^1.0.1" + }, + "engines": { + "node": ">=4" + } + }, + "node_modules/create-jest": { + "version": "29.7.0", + "resolved": "https://registry.npmjs.org/create-jest/-/create-jest-29.7.0.tgz", + "integrity": "sha512-Adz2bdH0Vq3F53KEMJOoftQFutWCukm6J24wbPWRO4k1kMY7gS7ds/uoJkNuV8wDCtWWnuwGcJwpWcih+zEW1Q==", + "dev": true, + "license": "MIT", + "dependencies": { + "@jest/types": "^29.6.3", + "chalk": "^4.0.0", + "exit": "^0.1.2", + "graceful-fs": "^4.2.9", + "jest-config": "^29.7.0", + "jest-util": "^29.7.0", + "prompts": "^2.0.1" + }, + "bin": { + "create-jest": "bin/create-jest.js" + }, + "engines": { + "node": "^14.15.0 || ^16.10.0 || >=18.0.0" + } + }, + "node_modules/cross-fetch": { + "version": "3.2.0", + "resolved": "https://registry.npmjs.org/cross-fetch/-/cross-fetch-3.2.0.tgz", + "integrity": "sha512-Q+xVJLoGOeIMXZmbUK4HYk+69cQH6LudR0Vu/pRm2YlU/hDV9CiS0gKUMaWY5f2NeUH9C1nV3bsTlCo0FsTV1Q==", + "license": "MIT", + "dependencies": { + "node-fetch": "^2.7.0" + } + }, + "node_modules/cross-spawn": { + "version": "7.0.6", + "resolved": "https://registry.npmjs.org/cross-spawn/-/cross-spawn-7.0.6.tgz", + "integrity": "sha512-uV2QOWP2nWzsy2aMp8aRibhi9dlzF5Hgh5SHaB9OiTGEyDTiJJyx0uy51QXdyWbtAHNua4XJzUKca3OzKUd3vA==", + "license": "MIT", + "dependencies": { + "path-key": "^3.1.0", + "shebang-command": "^2.0.0", + "which": "^2.0.1" + }, + "engines": { + "node": ">= 8" + } + }, + "node_modules/crypto-random-string": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/crypto-random-string/-/crypto-random-string-2.0.0.tgz", + "integrity": "sha512-v1plID3y9r/lPhviJ1wrXpLeyUIGAZ2SHNYTEapm7/8A9nLPoyvVp3RK/EPFqn5kEznyWgYZNsRtYYIWbuG8KA==", + "license": "MIT", + "engines": { + "node": ">=8" + } + }, + "node_modules/css-in-js-utils": { + "version": "3.1.0", + "resolved": "https://registry.npmjs.org/css-in-js-utils/-/css-in-js-utils-3.1.0.tgz", + "integrity": "sha512-fJAcud6B3rRu+KHYk+Bwf+WFL2MDCJJ1XG9x137tJQ0xYxor7XziQtuGFbWNdqrvF4Tk26O3H73nfVqXt/fW1A==", + "license": "MIT", + "dependencies": { + "hyphenate-style-name": "^1.0.3" + } + }, + "node_modules/css-select": { + "version": "5.1.0", + "resolved": "https://registry.npmjs.org/css-select/-/css-select-5.1.0.tgz", + "integrity": "sha512-nwoRF1rvRRnnCqqY7updORDsuqKzqYJ28+oSMaJMMgOauh3fvwHqMS7EZpIPqK8GL+g9mKxF1vP/ZjSeNjEVHg==", + "license": "BSD-2-Clause", + "dependencies": { + "boolbase": "^1.0.0", + "css-what": "^6.1.0", + "domhandler": "^5.0.2", + "domutils": "^3.0.1", + "nth-check": "^2.0.1" + }, + "funding": { + "url": "https://github.com/sponsors/fb55" + } + }, + "node_modules/css-tree": { + "version": "1.1.3", + "resolved": "https://registry.npmjs.org/css-tree/-/css-tree-1.1.3.tgz", + "integrity": "sha512-tRpdppF7TRazZrjJ6v3stzv93qxRcSsFmW6cX0Zm2NVKpxE1WV1HblnghVv9TreireHkqI/VDEsfolRF1p6y7Q==", + "license": "MIT", + "dependencies": { + "mdn-data": "2.0.14", + "source-map": "^0.6.1" + }, + "engines": { + "node": ">=8.0.0" + } + }, + "node_modules/css-what": { + "version": "6.1.0", + "resolved": "https://registry.npmjs.org/css-what/-/css-what-6.1.0.tgz", + "integrity": "sha512-HTUrgRJ7r4dsZKU6GjmpfRK1O76h97Z8MfS1G0FozR+oF2kG6Vfe8JE6zwrkbxigziPHinCJ+gCPjA9EaBDtRw==", + "license": "BSD-2-Clause", + "engines": { + "node": ">= 6" + }, + "funding": { + "url": "https://github.com/sponsors/fb55" + } + }, + "node_modules/cssom": { + "version": "0.5.0", + "resolved": "https://registry.npmjs.org/cssom/-/cssom-0.5.0.tgz", + "integrity": "sha512-iKuQcq+NdHqlAcwUY0o/HL69XQrUaQdMjmStJ8JFmUaiiQErlhrmuigkg/CU4E2J0IyUKUrMAgl36TvN67MqTw==", + "dev": true, + "license": "MIT" + }, + "node_modules/cssstyle": { + "version": "2.3.0", + "resolved": "https://registry.npmjs.org/cssstyle/-/cssstyle-2.3.0.tgz", + "integrity": "sha512-AZL67abkUzIuvcHqk7c09cezpGNcxUxU4Ioi/05xHk4DQeTkWmGYftIE6ctU6AEt+Gn4n1lDStOtj7FKycP71A==", + "dev": true, + "license": "MIT", + "dependencies": { + "cssom": "~0.3.6" + }, + "engines": { + "node": ">=8" + } + }, + "node_modules/cssstyle/node_modules/cssom": { + "version": "0.3.8", + "resolved": "https://registry.npmjs.org/cssom/-/cssom-0.3.8.tgz", + "integrity": "sha512-b0tGHbfegbhPJpxpiBPU2sCkigAqtM9O121le6bbOlgyV+NyGyCmVfJ6QW9eRjz8CpNfWEOYBIMIGRYkLwsIYg==", + "dev": true, + "license": "MIT" + }, + "node_modules/data-urls": { + "version": "3.0.2", + "resolved": "https://registry.npmjs.org/data-urls/-/data-urls-3.0.2.tgz", + "integrity": "sha512-Jy/tj3ldjZJo63sVAvg6LHt2mHvl4V6AgRAmNDtLdm7faqtsx+aJG42rsyCo9JCoRVKwPFzKlIPx3DIibwSIaQ==", + "dev": true, + "license": "MIT", + "dependencies": { + "abab": "^2.0.6", + "whatwg-mimetype": "^3.0.0", + "whatwg-url": "^11.0.0" + }, + "engines": { + "node": ">=12" + } + }, + "node_modules/debug": { + "version": "4.4.1", + "resolved": "https://registry.npmjs.org/debug/-/debug-4.4.1.tgz", + "integrity": "sha512-KcKCqiftBJcZr++7ykoDIEwSa3XWowTfNPo92BYxjXiyYEVrUQh2aLyhxBCwww+heortUFxEJYcRzosstTEBYQ==", + "license": "MIT", + "dependencies": { + "ms": "^2.1.3" + }, + "engines": { + "node": ">=6.0" + }, + "peerDependenciesMeta": { + "supports-color": { + "optional": true + } + } + }, + "node_modules/decimal.js": { + "version": "10.5.0", + "resolved": "https://registry.npmjs.org/decimal.js/-/decimal.js-10.5.0.tgz", + "integrity": "sha512-8vDa8Qxvr/+d94hSh5P3IJwI5t8/c0KsMp+g8bNw9cY2icONa5aPfvKeieW1WlG0WQYwwhJ7mjui2xtiePQSXw==", + "dev": true, + "license": "MIT" + }, + "node_modules/decode-uri-component": { + "version": "0.2.2", + "resolved": "https://registry.npmjs.org/decode-uri-component/-/decode-uri-component-0.2.2.tgz", + "integrity": "sha512-FqUYQ+8o158GyGTrMFJms9qh3CqTKvAqgqsTnkLI8sKu0028orqBhxNMFkFen0zGyg6epACD32pjVk58ngIErQ==", + "license": "MIT", + "engines": { + "node": ">=0.10" + } + }, + "node_modules/dedent": { + "version": "1.6.0", + "resolved": "https://registry.npmjs.org/dedent/-/dedent-1.6.0.tgz", + "integrity": "sha512-F1Z+5UCFpmQUzJa11agbyPVMbpgT/qA3/SKyJ1jyBgm7dUcUEa8v9JwDkerSQXfakBwFljIxhOJqGkjUwZ9FSA==", + "dev": true, + "license": "MIT", + "peerDependencies": { + "babel-plugin-macros": "^3.1.0" + }, + "peerDependenciesMeta": { + "babel-plugin-macros": { + "optional": true + } + } + }, + "node_modules/deep-extend": { + "version": "0.6.0", + "resolved": "https://registry.npmjs.org/deep-extend/-/deep-extend-0.6.0.tgz", + "integrity": "sha512-LOHxIOaPYdHlJRtCQfDIVZtfw/ufM8+rVj649RIHzcm/vGwQRXFt6OPqIFWsm2XEMrNIEtWR64sY1LEKD2vAOA==", + "license": "MIT", + "engines": { + "node": ">=4.0.0" + } + }, + "node_modules/deepmerge": { + "version": "4.3.1", + "resolved": "https://registry.npmjs.org/deepmerge/-/deepmerge-4.3.1.tgz", + "integrity": "sha512-3sUqbMEc77XqpdNO7FRyRog+eW3ph+GYCbj+rK+uYyRMuwsVy0rMiVtPn+QJlKFvWP/1PYpapqYn0Me2knFn+A==", + "license": "MIT", + "engines": { + "node": ">=0.10.0" + } + }, + "node_modules/defaults": { + "version": "1.0.4", + "resolved": "https://registry.npmjs.org/defaults/-/defaults-1.0.4.tgz", + "integrity": "sha512-eFuaLoy/Rxalv2kr+lqMlUnrDWV+3j4pljOIJgLIhI058IQfWJ7vXhyEIHu+HtC738klGALYxOKDO0bQP3tg8A==", + "license": "MIT", + "dependencies": { + "clone": "^1.0.2" + }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" + } + }, + "node_modules/define-lazy-prop": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/define-lazy-prop/-/define-lazy-prop-2.0.0.tgz", + "integrity": "sha512-Ds09qNh8yw3khSjiJjiUInaGX9xlqZDY7JVryGxdxV7NPeuqQfplOpQ66yJFZut3jLa5zOwkXw1g9EI2uKh4Og==", + "license": "MIT", + "engines": { + "node": ">=8" + } + }, + "node_modules/delayed-stream": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/delayed-stream/-/delayed-stream-1.0.0.tgz", + "integrity": "sha512-ZySD7Nf91aLB0RxL4KGrKHBXl7Eds1DAmEdcoVawXnLD7SDhpNgtuII2aAkg7a7QS41jxPSZ17p4VdGnMHk3MQ==", + "dev": true, + "license": "MIT", + "engines": { + "node": ">=0.4.0" + } + }, + "node_modules/depd": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/depd/-/depd-2.0.0.tgz", + "integrity": "sha512-g7nH6P6dyDioJogAAGprGpCtVImJhpPk/roCzdb3fIh61/s/nPsfR6onyMwkCAR/OlC3yBC0lESvUoQEAssIrw==", + "license": "MIT", + "engines": { + "node": ">= 0.8" + } + }, + "node_modules/destroy": { + "version": "1.2.0", + "resolved": "https://registry.npmjs.org/destroy/-/destroy-1.2.0.tgz", + "integrity": "sha512-2sJGJTaXIIaR1w4iJSNoN0hnMY7Gpc/n8D4qSCJw8QqFWXf7cuAgnEHxBpweaVcPevC2l3KpjYCx3NypQQgaJg==", + "license": "MIT", + "engines": { + "node": ">= 0.8", + "npm": "1.2.8000 || >= 1.4.16" + } + }, + "node_modules/detect-libc": { + "version": "1.0.3", + "resolved": "https://registry.npmjs.org/detect-libc/-/detect-libc-1.0.3.tgz", + "integrity": "sha512-pGjwhsmsp4kL2RTz08wcOlGN83otlqHeD/Z5T8GXZB+/YcpQ/dgo+lbU8ZsGxV0HIvqqxo9l7mqYwyYMD9bKDg==", + "license": "Apache-2.0", + "bin": { + "detect-libc": "bin/detect-libc.js" + }, + "engines": { + "node": ">=0.10" + } + }, + "node_modules/detect-newline": { + "version": "3.1.0", + "resolved": "https://registry.npmjs.org/detect-newline/-/detect-newline-3.1.0.tgz", + "integrity": "sha512-TLz+x/vEXm/Y7P7wn1EJFNLxYpUD4TgMosxY6fAVJUnJMbupHBOncxyWUG9OpTaH9EBD7uFI5LfEgmMOc54DsA==", + "dev": true, + "license": "MIT", + "engines": { + "node": ">=8" + } + }, + "node_modules/diff-sequences": { + "version": "29.6.3", + "resolved": "https://registry.npmjs.org/diff-sequences/-/diff-sequences-29.6.3.tgz", + "integrity": "sha512-EjePK1srD3P08o2j4f0ExnylqRs5B9tJjcp9t1krH2qRi8CCdsYfwe9JgSLurFBWwq4uOlipzfk5fHNvwFKr8Q==", + "dev": true, + "license": "MIT", + "engines": { + "node": "^14.15.0 || ^16.10.0 || >=18.0.0" + } + }, + "node_modules/dom-serializer": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/dom-serializer/-/dom-serializer-2.0.0.tgz", + "integrity": "sha512-wIkAryiqt/nV5EQKqQpo3SToSOV9J0DnbJqwK7Wv/Trc92zIAYZ4FlMu+JPFW1DfGFt81ZTCGgDEabffXeLyJg==", + "license": "MIT", + "dependencies": { + "domelementtype": "^2.3.0", + "domhandler": "^5.0.2", + "entities": "^4.2.0" + }, + "funding": { + "url": "https://github.com/cheeriojs/dom-serializer?sponsor=1" + } + }, + "node_modules/dom-serializer/node_modules/entities": { + "version": "4.5.0", + "resolved": "https://registry.npmjs.org/entities/-/entities-4.5.0.tgz", + "integrity": "sha512-V0hjH4dGPh9Ao5p0MoRY6BVqtwCjhz6vI5LT8AJ55H+4g9/4vbHx1I54fS0XuclLhDHArPQCiMjDxjaL8fPxhw==", + "license": "BSD-2-Clause", + "engines": { + "node": ">=0.12" + }, + "funding": { + "url": "https://github.com/fb55/entities?sponsor=1" + } + }, + "node_modules/domelementtype": { + "version": "2.3.0", + "resolved": "https://registry.npmjs.org/domelementtype/-/domelementtype-2.3.0.tgz", + "integrity": "sha512-OLETBj6w0OsagBwdXnPdN0cnMfF9opN69co+7ZrbfPGrdpPVNBUj02spi6B1N7wChLQiPn4CSH/zJvXw56gmHw==", + "funding": [ + { + "type": "github", + "url": "https://github.com/sponsors/fb55" + } + ], + "license": "BSD-2-Clause" + }, + "node_modules/domexception": { + "version": "4.0.0", + "resolved": "https://registry.npmjs.org/domexception/-/domexception-4.0.0.tgz", + "integrity": "sha512-A2is4PLG+eeSfoTMA95/s4pvAoSo2mKtiM5jlHkAVewmiO8ISFTFKZjH7UAM1Atli/OT/7JHOrJRJiMKUZKYBw==", + "deprecated": "Use your platform's native DOMException instead", + "dev": true, + "license": "MIT", + "dependencies": { + "webidl-conversions": "^7.0.0" + }, + "engines": { + "node": ">=12" + } + }, + "node_modules/domhandler": { + "version": "5.0.3", + "resolved": "https://registry.npmjs.org/domhandler/-/domhandler-5.0.3.tgz", + "integrity": "sha512-cgwlv/1iFQiFnU96XXgROh8xTeetsnJiDsTc7TYCLFd9+/WNkIqPTxiM/8pSd8VIrhXGTf1Ny1q1hquVqDJB5w==", + "license": "BSD-2-Clause", + "dependencies": { + "domelementtype": "^2.3.0" + }, + "engines": { + "node": ">= 4" + }, + "funding": { + "url": "https://github.com/fb55/domhandler?sponsor=1" + } + }, + "node_modules/domutils": { + "version": "3.2.2", + "resolved": "https://registry.npmjs.org/domutils/-/domutils-3.2.2.tgz", + "integrity": "sha512-6kZKyUajlDuqlHKVX1w7gyslj9MPIXzIFiz/rGu35uC1wMi+kMhQwGhl4lt9unC9Vb9INnY9Z3/ZA3+FhASLaw==", + "license": "BSD-2-Clause", + "dependencies": { + "dom-serializer": "^2.0.0", + "domelementtype": "^2.3.0", + "domhandler": "^5.0.3" + }, + "funding": { + "url": "https://github.com/fb55/domutils?sponsor=1" + } + }, + "node_modules/dotenv": { + "version": "16.4.7", + "resolved": "https://registry.npmjs.org/dotenv/-/dotenv-16.4.7.tgz", + "integrity": "sha512-47qPchRCykZC03FhkYAhrvwU4xDBFIj1QPqaarj6mdM/hgUzfPHcpkHJOn3mJAufFeeAxAzeGsr5X0M4k6fLZQ==", + "license": "BSD-2-Clause", + "engines": { + "node": ">=12" + }, + "funding": { + "url": "https://dotenvx.com" + } + }, + "node_modules/dotenv-expand": { + "version": "11.0.7", + "resolved": "https://registry.npmjs.org/dotenv-expand/-/dotenv-expand-11.0.7.tgz", + "integrity": "sha512-zIHwmZPRshsCdpMDyVsqGmgyP0yT8GAgXUnkdAoJisxvf33k7yO6OuoKmcTGuXPWSsm8Oh88nZicRLA9Y0rUeA==", + "license": "BSD-2-Clause", + "dependencies": { + "dotenv": "^16.4.5" + }, + "engines": { + "node": ">=12" + }, + "funding": { + "url": "https://dotenvx.com" + } + }, + "node_modules/dunder-proto": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/dunder-proto/-/dunder-proto-1.0.1.tgz", + "integrity": "sha512-KIN/nDJBQRcXw0MLVhZE9iQHmG68qAVIBg9CqmUYjmQIhgij9U5MFvrqkUL5FbtyyzZuOeOt0zdeRe4UY7ct+A==", + "dev": true, + "license": "MIT", + "dependencies": { + "call-bind-apply-helpers": "^1.0.1", + "es-errors": "^1.3.0", + "gopd": "^1.2.0" + }, + "engines": { + "node": ">= 0.4" + } + }, + "node_modules/eastasianwidth": { + "version": "0.2.0", + "resolved": "https://registry.npmjs.org/eastasianwidth/-/eastasianwidth-0.2.0.tgz", + "integrity": "sha512-I88TYZWc9XiYHRQ4/3c5rjjfgkjhLyW2luGIheGERbNQ6OY7yTybanSpDXZa8y7VUP9YmDcYa+eyq4ca7iLqWA==", + "license": "MIT" + }, + "node_modules/ee-first": { + "version": "1.1.1", + "resolved": "https://registry.npmjs.org/ee-first/-/ee-first-1.1.1.tgz", + "integrity": "sha512-WMwm9LhRUo+WUaRN+vRuETqG89IgZphVSNkdFgeb6sS/E4OrDIN7t48CAewSHXc6C8lefD8KKfr5vY61brQlow==", + "license": "MIT" + }, + "node_modules/electron-to-chromium": { + "version": "1.5.155", + "resolved": "https://registry.npmjs.org/electron-to-chromium/-/electron-to-chromium-1.5.155.tgz", + "integrity": "sha512-ps5KcGGmwL8VaeJlvlDlu4fORQpv3+GIcF5I3f9tUKUlJ/wsysh6HU8P5L1XWRYeXfA0oJd4PyM8ds8zTFf6Ng==", + "license": "ISC" + }, + "node_modules/emittery": { + "version": "0.13.1", + "resolved": "https://registry.npmjs.org/emittery/-/emittery-0.13.1.tgz", + "integrity": "sha512-DeWwawk6r5yR9jFgnDKYt4sLS0LmHJJi3ZOnb5/JdbYwj3nW+FxQnHIjhBKz8YLC7oRNPVM9NQ47I3CVx34eqQ==", + "dev": true, + "license": "MIT", + "engines": { + "node": ">=12" + }, + "funding": { + "url": "https://github.com/sindresorhus/emittery?sponsor=1" + } + }, + "node_modules/emoji-regex": { + "version": "9.2.2", + "resolved": "https://registry.npmjs.org/emoji-regex/-/emoji-regex-9.2.2.tgz", + "integrity": "sha512-L18DaJsXSUk2+42pv8mLs5jJT2hqFkFE4j21wOmgbUqsZ2hL72NsUU785g9RXgo3s0ZNgVl42TiHp3ZtOv/Vyg==", + "license": "MIT" + }, + "node_modules/encodeurl": { + "version": "1.0.2", + "resolved": "https://registry.npmjs.org/encodeurl/-/encodeurl-1.0.2.tgz", + "integrity": "sha512-TPJXq8JqFaVYm2CWmPvnP2Iyo4ZSM7/QKcSmuMLDObfpH5fi7RUGmd/rTDf+rut/saiDiQEeVTNgAmJEdAOx0w==", + "license": "MIT", + "engines": { + "node": ">= 0.8" + } + }, + "node_modules/enhanced-resolve": { + "version": "5.18.1", + "resolved": "https://registry.npmjs.org/enhanced-resolve/-/enhanced-resolve-5.18.1.tgz", + "integrity": "sha512-ZSW3ma5GkcQBIpwZTSRAI8N71Uuwgs93IezB7mf7R60tC8ZbJideoDNKjHn2O9KIlx6rkGTTEk1xUCK2E1Y2Yg==", + "dev": true, + "license": "MIT", + "peer": true, + "dependencies": { + "graceful-fs": "^4.2.4", + "tapable": "^2.2.0" + }, + "engines": { + "node": ">=10.13.0" + } + }, + "node_modules/entities": { + "version": "6.0.0", + "resolved": "https://registry.npmjs.org/entities/-/entities-6.0.0.tgz", + "integrity": "sha512-aKstq2TDOndCn4diEyp9Uq/Flu2i1GlLkc6XIDQSDMuaFE3OPW5OphLCyQ5SpSJZTb4reN+kTcYru5yIfXoRPw==", + "dev": true, + "license": "BSD-2-Clause", + "engines": { + "node": ">=0.12" + }, + "funding": { + "url": "https://github.com/fb55/entities?sponsor=1" + } + }, + "node_modules/env-editor": { + "version": "0.4.2", + "resolved": "https://registry.npmjs.org/env-editor/-/env-editor-0.4.2.tgz", + "integrity": "sha512-ObFo8v4rQJAE59M69QzwloxPZtd33TpYEIjtKD1rrFDcM1Gd7IkDxEBU+HriziN6HSHQnBJi8Dmy+JWkav5HKA==", + "license": "MIT", + "engines": { + "node": ">=8" + } + }, + "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==", + "license": "MIT", + "dependencies": { + "is-arrayish": "^0.2.1" + } + }, + "node_modules/error-stack-parser": { + "version": "2.1.4", + "resolved": "https://registry.npmjs.org/error-stack-parser/-/error-stack-parser-2.1.4.tgz", + "integrity": "sha512-Sk5V6wVazPhq5MhpO+AUxJn5x7XSXGl1R93Vn7i+zS15KDVxQijejNCrz8340/2bgLBjR9GtEG8ZVKONDjcqGQ==", + "license": "MIT", + "dependencies": { + "stackframe": "^1.3.4" + } + }, + "node_modules/es-define-property": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/es-define-property/-/es-define-property-1.0.1.tgz", + "integrity": "sha512-e3nRfgfUZ4rNGL232gUgX06QNyyez04KdjFrF+LTRoOXmrOgFKDg4BCdsjW8EnT69eqdYGmRpJwiPVYNrCaW3g==", + "dev": true, + "license": "MIT", + "engines": { + "node": ">= 0.4" + } + }, + "node_modules/es-errors": { + "version": "1.3.0", + "resolved": "https://registry.npmjs.org/es-errors/-/es-errors-1.3.0.tgz", + "integrity": "sha512-Zf5H2Kxt2xjTvbJvP2ZWLEICxA6j+hAmMzIlypy4xcBg1vKVnx89Wy0GbS+kf5cwCVFFzdCFh2XSCFNULS6csw==", + "dev": true, + "license": "MIT", + "engines": { + "node": ">= 0.4" + } + }, + "node_modules/es-module-lexer": { + "version": "1.7.0", + "resolved": "https://registry.npmjs.org/es-module-lexer/-/es-module-lexer-1.7.0.tgz", + "integrity": "sha512-jEQoCwk8hyb2AZziIOLhDqpm5+2ww5uIE6lkO/6jcOCusfk6LhMHpXXfBLXTZ7Ydyt0j4VoUQv6uGNYbdW+kBA==", + "dev": true, + "license": "MIT", + "peer": true + }, + "node_modules/es-object-atoms": { + "version": "1.1.1", + "resolved": "https://registry.npmjs.org/es-object-atoms/-/es-object-atoms-1.1.1.tgz", + "integrity": "sha512-FGgH2h8zKNim9ljj7dankFPcICIK9Cp5bm+c2gQSYePhpaG5+esrLODihIorn+Pe6FGJzWhXQotPv73jTaldXA==", + "dev": true, + "license": "MIT", + "dependencies": { + "es-errors": "^1.3.0" + }, + "engines": { + "node": ">= 0.4" + } + }, + "node_modules/es-set-tostringtag": { + "version": "2.1.0", + "resolved": "https://registry.npmjs.org/es-set-tostringtag/-/es-set-tostringtag-2.1.0.tgz", + "integrity": "sha512-j6vWzfrGVfyXxge+O0x5sh6cvxAog0a/4Rdd2K36zCMV5eJ+/+tOAngRO8cODMNWbVRdVlmGZQL2YS3yR8bIUA==", + "dev": true, + "license": "MIT", + "dependencies": { + "es-errors": "^1.3.0", + "get-intrinsic": "^1.2.6", + "has-tostringtag": "^1.0.2", + "hasown": "^2.0.2" + }, + "engines": { + "node": ">= 0.4" + } + }, + "node_modules/escalade": { + "version": "3.2.0", + "resolved": "https://registry.npmjs.org/escalade/-/escalade-3.2.0.tgz", + "integrity": "sha512-WUj2qlxaQtO4g6Pq5c29GTcWGDyd8itL8zTlipgECz3JesAiiOKotd8JU6otB3PACgG6xkJUyVhboMS+bje/jA==", + "license": "MIT", + "engines": { + "node": ">=6" + } + }, + "node_modules/escape-html": { + "version": "1.0.3", + "resolved": "https://registry.npmjs.org/escape-html/-/escape-html-1.0.3.tgz", + "integrity": "sha512-NiSupZ4OeuGwr68lGIeym/ksIZMJodUGOSCZ/FSnTxcrekbvqrgdUxlJOMpijaKZVjAJrWrGs/6Jy8OMuyj9ow==", + "license": "MIT" + }, + "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==", + "license": "MIT", + "engines": { + "node": ">=10" + }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" + } + }, + "node_modules/escodegen": { + "version": "2.1.0", + "resolved": "https://registry.npmjs.org/escodegen/-/escodegen-2.1.0.tgz", + "integrity": "sha512-2NlIDTwUWJN0mRPQOdtQBzbUHvdGY2P1VXSyU83Q3xKxM7WHX2Ql8dKq782Q9TgQUNOLEzEYu9bzLNj1q88I5w==", + "dev": true, + "license": "BSD-2-Clause", + "dependencies": { + "esprima": "^4.0.1", + "estraverse": "^5.2.0", + "esutils": "^2.0.2" + }, + "bin": { + "escodegen": "bin/escodegen.js", + "esgenerate": "bin/esgenerate.js" + }, + "engines": { + "node": ">=6.0" + }, + "optionalDependencies": { + "source-map": "~0.6.1" + } + }, + "node_modules/eslint-scope": { + "version": "5.1.1", + "resolved": "https://registry.npmjs.org/eslint-scope/-/eslint-scope-5.1.1.tgz", + "integrity": "sha512-2NxwbF/hZ0KpepYN0cNbo+FN6XoK7GaHlQhgx/hIZl6Va0bF45RQOOwhLIy8lQDbuCiadSLCBnH2CFYquit5bw==", + "dev": true, + "license": "BSD-2-Clause", + "peer": true, + "dependencies": { + "esrecurse": "^4.3.0", + "estraverse": "^4.1.1" + }, + "engines": { + "node": ">=8.0.0" + } + }, + "node_modules/eslint-scope/node_modules/estraverse": { + "version": "4.3.0", + "resolved": "https://registry.npmjs.org/estraverse/-/estraverse-4.3.0.tgz", + "integrity": "sha512-39nnKffWz8xN1BU/2c79n9nB9HDzo0niYUqx6xyqUnyoAnQyyWpOTdZEeiCch8BBu515t4wp9ZmgVfVhn9EBpw==", + "dev": true, + "license": "BSD-2-Clause", + "peer": true, + "engines": { + "node": ">=4.0" + } + }, + "node_modules/esprima": { + "version": "4.0.1", + "resolved": "https://registry.npmjs.org/esprima/-/esprima-4.0.1.tgz", + "integrity": "sha512-eGuFFw7Upda+g4p+QHvnW0RyTX/SVeJBDM/gCtMARO0cLuT2HcEKnTPvhjV6aGeqrCB/sbNop0Kszm0jsaWU4A==", + "license": "BSD-2-Clause", + "bin": { + "esparse": "bin/esparse.js", + "esvalidate": "bin/esvalidate.js" + }, + "engines": { + "node": ">=4" + } + }, + "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, + "license": "BSD-2-Clause", + "peer": 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, + "license": "BSD-2-Clause", + "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, + "license": "BSD-2-Clause", + "engines": { + "node": ">=0.10.0" + } + }, + "node_modules/etag": { + "version": "1.8.1", + "resolved": "https://registry.npmjs.org/etag/-/etag-1.8.1.tgz", + "integrity": "sha512-aIL5Fx7mawVa300al2BnEE4iNvo1qETxLrPI/o05L7z6go7fCw1J6EQmbK4FmJ2AS7kgVF/KEZWufBfdClMcPg==", + "license": "MIT", + "engines": { + "node": ">= 0.6" + } + }, + "node_modules/event-target-shim": { + "version": "5.0.1", + "resolved": "https://registry.npmjs.org/event-target-shim/-/event-target-shim-5.0.1.tgz", + "integrity": "sha512-i/2XbnSz/uxRCU6+NdVJgKWDTM427+MqYbkQzD321DuCQJUqOuJKIA0IM2+W2xtYHdKOmZ4dR6fExsd4SXL+WQ==", + "license": "MIT", + "engines": { + "node": ">=6" + } + }, + "node_modules/events": { + "version": "3.3.0", + "resolved": "https://registry.npmjs.org/events/-/events-3.3.0.tgz", + "integrity": "sha512-mQw+2fkQbALzQ7V0MY0IqdnXNOeTtP4r0lN9z7AAawCXgqea7bDii20AYrIBrFd/Hx0M2Ocz6S111CaFkUcb0Q==", + "dev": true, + "license": "MIT", + "peer": true, + "engines": { + "node": ">=0.8.x" + } + }, + "node_modules/exec-async": { + "version": "2.2.0", + "resolved": "https://registry.npmjs.org/exec-async/-/exec-async-2.2.0.tgz", + "integrity": "sha512-87OpwcEiMia/DeiKFzaQNBNFeN3XkkpYIh9FyOqq5mS2oKv3CBE67PXoEKcr6nodWdXNogTiQ0jE2NGuoffXPw==", + "license": "MIT" + }, + "node_modules/execa": { + "version": "5.1.1", + "resolved": "https://registry.npmjs.org/execa/-/execa-5.1.1.tgz", + "integrity": "sha512-8uSpZZocAZRBAPIEINJj3Lo9HyGitllczc27Eh5YYojjMFMn8yHMDMaUHE2Jqfq05D/wucwI4JGURyXt1vchyg==", + "dev": true, + "license": "MIT", + "dependencies": { + "cross-spawn": "^7.0.3", + "get-stream": "^6.0.0", + "human-signals": "^2.1.0", + "is-stream": "^2.0.0", + "merge-stream": "^2.0.0", + "npm-run-path": "^4.0.1", + "onetime": "^5.1.2", + "signal-exit": "^3.0.3", + "strip-final-newline": "^2.0.0" + }, + "engines": { + "node": ">=10" + }, + "funding": { + "url": "https://github.com/sindresorhus/execa?sponsor=1" + } + }, + "node_modules/execa/node_modules/signal-exit": { + "version": "3.0.7", + "resolved": "https://registry.npmjs.org/signal-exit/-/signal-exit-3.0.7.tgz", + "integrity": "sha512-wnD2ZE+l+SPC/uoS0vXeE9L1+0wuaMqKlfz9AMUo38JsyLSBWSFcHR1Rri62LZc12vLr1gb3jl7iwQhgwpAbGQ==", + "dev": true, + "license": "ISC" + }, + "node_modules/exit": { + "version": "0.1.2", + "resolved": "https://registry.npmjs.org/exit/-/exit-0.1.2.tgz", + "integrity": "sha512-Zk/eNKV2zbjpKzrsQ+n1G6poVbErQxJ0LBOJXaKZ1EViLzH+hrLu9cdXI4zw9dBQJslwBEpbQ2P1oS7nDxs6jQ==", + "dev": true, + "engines": { + "node": ">= 0.8.0" + } + }, + "node_modules/expect": { + "version": "29.7.0", + "resolved": "https://registry.npmjs.org/expect/-/expect-29.7.0.tgz", + "integrity": "sha512-2Zks0hf1VLFYI1kbh0I5jP3KHHyCHpkfyHBzsSXRFgl/Bg9mWYfMW8oD+PdMPlEwy5HNsR9JutYy6pMeOh61nw==", + "dev": true, + "license": "MIT", + "dependencies": { + "@jest/expect-utils": "^29.7.0", + "jest-get-type": "^29.6.3", + "jest-matcher-utils": "^29.7.0", + "jest-message-util": "^29.7.0", + "jest-util": "^29.7.0" + }, + "engines": { + "node": "^14.15.0 || ^16.10.0 || >=18.0.0" + } + }, + "node_modules/expo": { + "version": "53.0.11", + "resolved": "https://registry.npmjs.org/expo/-/expo-53.0.11.tgz", + "integrity": "sha512-+QtvU+6VPd7/o4vmtwuRE/Li2rAiJtD25I6BOnoQSxphaWWaD0PdRQnIV3VQ0HESuJYRuKJ3DkAHNJ3jI6xwzA==", + "license": "MIT", + "dependencies": { + "@babel/runtime": "^7.20.0", + "@expo/cli": "0.24.14", + "@expo/config": "~11.0.10", + "@expo/config-plugins": "~10.0.2", + "@expo/fingerprint": "0.13.0", + "@expo/metro-config": "0.20.14", + "@expo/vector-icons": "^14.0.0", + "babel-preset-expo": "~13.2.0", + "expo-asset": "~11.1.5", + "expo-constants": "~17.1.6", + "expo-file-system": "~18.1.10", + "expo-font": "~13.3.1", + "expo-keep-awake": "~14.1.4", + "expo-modules-autolinking": "2.1.11", + "expo-modules-core": "2.4.0", + "react-native-edge-to-edge": "1.6.0", + "whatwg-url-without-unicode": "8.0.0-3" + }, + "bin": { + "expo": "bin/cli", + "expo-modules-autolinking": "bin/autolinking", + "fingerprint": "bin/fingerprint" + }, + "peerDependencies": { + "@expo/dom-webview": "*", + "@expo/metro-runtime": "*", + "react": "*", + "react-native": "*", + "react-native-webview": "*" + }, + "peerDependenciesMeta": { + "@expo/dom-webview": { + "optional": true + }, + "@expo/metro-runtime": { + "optional": true + }, + "react-native-webview": { + "optional": true + } + } + }, + "node_modules/expo-asset": { + "version": "11.1.5", + "resolved": "https://registry.npmjs.org/expo-asset/-/expo-asset-11.1.5.tgz", + "integrity": "sha512-GEQDCqC25uDBoXHEnXeBuwpeXvI+3fRGvtzwwt0ZKKzWaN+TgeF8H7c76p3Zi4DfBMFDcduM0CmOvJX+yCCLUQ==", + "license": "MIT", + "dependencies": { + "@expo/image-utils": "^0.7.4", + "expo-constants": "~17.1.5" + }, + "peerDependencies": { + "expo": "*", + "react": "*", + "react-native": "*" + } + }, + "node_modules/expo-av": { + "version": "15.1.6", + "resolved": "https://registry.npmjs.org/expo-av/-/expo-av-15.1.6.tgz", + "integrity": "sha512-5ZbeXdCmdckZHwtEV+8tRZqLlUWR96gkkUIxpyZAEvK0L+aI/BnyhDCpjnSKWwZo4ZA6lx8/su9kyFNV/mQ/sQ==", + "license": "MIT", + "peerDependencies": { + "expo": "*", + "react": "*", + "react-native": "*", + "react-native-web": "*" + }, + "peerDependenciesMeta": { + "react-native-web": { + "optional": true + } + } + }, + "node_modules/expo-blur": { + "version": "14.1.5", + "resolved": "https://registry.npmjs.org/expo-blur/-/expo-blur-14.1.5.tgz", + "integrity": "sha512-CCLJHxN4eoAl06ESKT3CbMasJ98WsjF9ZQEJnuxtDb9ffrYbZ+g9ru84fukjNUOTtc8A8yXE5z8NgY1l0OMrmQ==", + "license": "MIT", + "peerDependencies": { + "expo": "*", + "react": "*", + "react-native": "*" + } + }, + "node_modules/expo-camera": { + "version": "16.1.7", + "resolved": "https://registry.npmjs.org/expo-camera/-/expo-camera-16.1.7.tgz", + "integrity": "sha512-MhM9Owl5gz/w43ovH/mvk7I7fV+B1EsMJRXX7lGu71lfgySoDfD96U5zykt8HsngyvPpf0kqDsHjnBBfEoBO4Q==", + "license": "MIT", + "dependencies": { + "invariant": "^2.2.4" + }, + "peerDependencies": { + "expo": "*", + "react": "*", + "react-native": "*", + "react-native-web": "*" + }, + "peerDependenciesMeta": { + "react-native-web": { + "optional": true + } + } + }, + "node_modules/expo-checkbox": { + "version": "4.1.4", + "resolved": "https://registry.npmjs.org/expo-checkbox/-/expo-checkbox-4.1.4.tgz", + "integrity": "sha512-sahBTVble5/6EnHgLyGvX6fAytkZ7vmllHUbX5ko1kTQ59qTdiVmCznxqaT5DNWfxRZ0gdQVlao46dGQ3hbmeQ==", + "license": "MIT", + "peerDependencies": { + "react": "*", + "react-native": "*", + "react-native-web": "*" + }, + "peerDependenciesMeta": { + "react-native-web": { + "optional": true + } + } + }, + "node_modules/expo-constants": { + "version": "17.1.6", + "resolved": "https://registry.npmjs.org/expo-constants/-/expo-constants-17.1.6.tgz", + "integrity": "sha512-q5mLvJiLtPcaZ7t2diSOlQ2AyxIO8YMVEJsEfI/ExkGj15JrflNQ7CALEW6IF/uNae/76qI/XcjEuuAyjdaCNw==", + "license": "MIT", + "dependencies": { + "@expo/config": "~11.0.9", + "@expo/env": "~1.0.5" + }, + "peerDependencies": { + "expo": "*", + "react-native": "*" + } + }, + "node_modules/expo-file-system": { + "version": "18.1.10", + "resolved": "https://registry.npmjs.org/expo-file-system/-/expo-file-system-18.1.10.tgz", + "integrity": "sha512-SyaWg+HitScLuyEeSG9gMSDT0hIxbM9jiZjSBP9l9zMnwZjmQwsusE6+7qGiddxJzdOhTP4YGUfvEzeeS0YL3Q==", + "license": "MIT", + "peerDependencies": { + "expo": "*", + "react-native": "*" + } + }, + "node_modules/expo-font": { + "version": "13.3.1", + "resolved": "https://registry.npmjs.org/expo-font/-/expo-font-13.3.1.tgz", + "integrity": "sha512-d+xrHYvSM9WB42wj8vP9OOFWyxed5R1evphfDb6zYBmC1dA9Hf89FpT7TNFtj2Bk3clTnpmVqQTCYbbA2P3CLg==", + "license": "MIT", + "dependencies": { + "fontfaceobserver": "^2.1.0" + }, + "peerDependencies": { + "expo": "*", + "react": "*" + } + }, + "node_modules/expo-haptics": { + "version": "14.1.4", + "resolved": "https://registry.npmjs.org/expo-haptics/-/expo-haptics-14.1.4.tgz", + "integrity": "sha512-QZdE3NMX74rTuIl82I+n12XGwpDWKb8zfs5EpwsnGi/D/n7O2Jd4tO5ivH+muEG/OCJOMq5aeaVDqqaQOhTkcA==", + "license": "MIT", + "peerDependencies": { + "expo": "*" + } + }, + "node_modules/expo-image-loader": { + "version": "5.1.0", + "resolved": "https://registry.npmjs.org/expo-image-loader/-/expo-image-loader-5.1.0.tgz", + "integrity": "sha512-sEBx3zDQIODWbB5JwzE7ZL5FJD+DK3LVLWBVJy6VzsqIA6nDEnSFnsnWyCfCTSvbGigMATs1lgkC2nz3Jpve1Q==", + "license": "MIT", + "peerDependencies": { + "expo": "*" + } + }, + "node_modules/expo-image-picker": { + "version": "16.1.4", + "resolved": "https://registry.npmjs.org/expo-image-picker/-/expo-image-picker-16.1.4.tgz", + "integrity": "sha512-bTmmxtw1AohUT+HxEBn2vYwdeOrj1CLpMXKjvi9FKSoSbpcarT4xxI0z7YyGwDGHbrJqyyic3I9TTdP2J2b4YA==", + "license": "MIT", + "dependencies": { + "expo-image-loader": "~5.1.0" + }, + "peerDependencies": { + "expo": "*" + } + }, + "node_modules/expo-keep-awake": { + "version": "14.1.4", + "resolved": "https://registry.npmjs.org/expo-keep-awake/-/expo-keep-awake-14.1.4.tgz", + "integrity": "sha512-wU9qOnosy4+U4z/o4h8W9PjPvcFMfZXrlUoKTMBW7F4pLqhkkP/5G4EviPZixv4XWFMjn1ExQ5rV6BX8GwJsWA==", + "license": "MIT", + "peerDependencies": { + "expo": "*", + "react": "*" + } + }, + "node_modules/expo-linear-gradient": { + "version": "14.1.5", + "resolved": "https://registry.npmjs.org/expo-linear-gradient/-/expo-linear-gradient-14.1.5.tgz", + "integrity": "sha512-BSN3MkSGLZoHMduEnAgfhoj3xqcDWaoICgIr4cIYEx1GcHfKMhzA/O4mpZJ/WC27BP1rnAqoKfbclk1eA70ndQ==", + "license": "MIT", + "peerDependencies": { + "expo": "*", + "react": "*", + "react-native": "*" + } + }, + "node_modules/expo-linking": { + "version": "7.1.5", + "resolved": "https://registry.npmjs.org/expo-linking/-/expo-linking-7.1.5.tgz", + "integrity": "sha512-8g20zOpROW78bF+bLI4a3ZWj4ntLgM0rCewKycPL0jk9WGvBrBtFtwwADJgOiV1EurNp3lcquerXGlWS+SOQyA==", + "license": "MIT", + "dependencies": { + "expo-constants": "~17.1.6", + "invariant": "^2.2.4" + }, + "peerDependencies": { + "react": "*", + "react-native": "*" + } + }, + "node_modules/expo-location": { + "version": "18.1.5", + "resolved": "https://registry.npmjs.org/expo-location/-/expo-location-18.1.5.tgz", + "integrity": "sha512-/ugxS4Ort9DbKD0Do6xn4TjeHaA/by5vv0p0PrY5Zbcez1S0AfrQn/4JG/8PLT2imngMwZU9TDKrgxqJQ4RuPQ==", + "license": "MIT", + "peerDependencies": { + "expo": "*" + } + }, + "node_modules/expo-media-library": { + "version": "17.1.7", + "resolved": "https://registry.npmjs.org/expo-media-library/-/expo-media-library-17.1.7.tgz", + "integrity": "sha512-hLCoMvlhjtt+iYxPe71P1F6t06mYGysuNOfjQzDbbf64PCkglCZJYmywPyUSV1V5Hu9DhRj//gEg+Ki+7VWXog==", + "license": "MIT", + "peerDependencies": { + "expo": "*", + "react-native": "*" + } + }, + "node_modules/expo-modules-autolinking": { + "version": "2.1.11", + "resolved": "https://registry.npmjs.org/expo-modules-autolinking/-/expo-modules-autolinking-2.1.11.tgz", + "integrity": "sha512-KrWQo+cE4gWYNePBBhmHGVzf63gYV19ZLXe9EIH3GHTkViVzIX+Lp618H/7GxfawpN5kbhvilATH1QEKKnUUww==", + "license": "MIT", + "dependencies": { + "@expo/spawn-async": "^1.7.2", + "chalk": "^4.1.0", + "commander": "^7.2.0", + "find-up": "^5.0.0", + "glob": "^10.4.2", + "require-from-string": "^2.0.2", + "resolve-from": "^5.0.0" + }, + "bin": { + "expo-modules-autolinking": "bin/expo-modules-autolinking.js" + } + }, + "node_modules/expo-modules-core": { + "version": "2.4.0", + "resolved": "https://registry.npmjs.org/expo-modules-core/-/expo-modules-core-2.4.0.tgz", + "integrity": "sha512-Ko5eHBdvuMykjw9P9C9PF54/wBSsGOxaOjx92I5BwgKvEmUwN3UrXFV4CXzlLVbLfSYUQaLcB220xmPfgvT7Fg==", + "license": "MIT", + "dependencies": { + "invariant": "^2.2.4" + } + }, + "node_modules/expo-print": { + "version": "14.1.4", + "resolved": "https://registry.npmjs.org/expo-print/-/expo-print-14.1.4.tgz", + "integrity": "sha512-qcXdvgwtjgFxX92pd3vdZXZRiFAMysVrCJWrPQvZOSw9OjxeczTOUjcAXRdAC2qFki8Gq/eCnKozSxYN5QCFxw==", + "license": "MIT", + "peerDependencies": { + "expo": "*", + "react-native": "*" + } + }, + "node_modules/expo-router": { + "version": "5.0.7", + "resolved": "https://registry.npmjs.org/expo-router/-/expo-router-5.0.7.tgz", + "integrity": "sha512-NlEgRXCKtseDuIHBp87UfkvqsuVrc0MYG+zg33dopaN6wik4RkrWWxUYdNPHub0s/7qMye6zZBY4ZCrXwd/xpA==", + "license": "MIT", + "dependencies": { + "@expo/metro-runtime": "5.0.4", + "@expo/server": "^0.6.2", + "@radix-ui/react-slot": "1.2.0", + "@react-navigation/bottom-tabs": "^7.3.10", + "@react-navigation/native": "^7.1.6", + "@react-navigation/native-stack": "^7.3.10", + "client-only": "^0.0.1", + "invariant": "^2.2.4", + "react-fast-compare": "^3.2.2", + "react-native-is-edge-to-edge": "^1.1.6", + "schema-utils": "^4.0.1", + "semver": "~7.6.3", + "server-only": "^0.0.1", + "shallowequal": "^1.1.0" + }, + "peerDependencies": { + "@react-navigation/drawer": "^7.3.9", + "expo": "*", + "expo-constants": "*", + "expo-linking": "*", + "react-native-reanimated": "*", + "react-native-safe-area-context": "*", + "react-native-screens": "*" + }, + "peerDependenciesMeta": { + "@react-navigation/drawer": { + "optional": true + }, + "@testing-library/jest-native": { + "optional": true + }, + "react-native-reanimated": { + "optional": true + } + } + }, + "node_modules/expo-router/node_modules/semver": { + "version": "7.6.3", + "resolved": "https://registry.npmjs.org/semver/-/semver-7.6.3.tgz", + "integrity": "sha512-oVekP1cKtI+CTDvHWYFUcMtsK/00wmAEfyqKfNdARm8u1wNVhSgaX7A8d4UuIlUI5e84iEwOhs7ZPYRmzU9U6A==", + "license": "ISC", + "bin": { + "semver": "bin/semver.js" + }, + "engines": { + "node": ">=10" + } + }, + "node_modules/expo-splash-screen": { + "version": "0.30.9", + "resolved": "https://registry.npmjs.org/expo-splash-screen/-/expo-splash-screen-0.30.9.tgz", + "integrity": "sha512-curHUaZxUTZ2dWvz32ao3xPv5mJr1LBqn5V8xm/IULAehB9RGCn8iKiROMN1PYebSG+56vPMuJmBm9P+ayvJpA==", + "license": "MIT", + "dependencies": { + "@expo/prebuild-config": "^9.0.6" + }, + "peerDependencies": { + "expo": "*" + } + }, + "node_modules/expo-status-bar": { + "version": "2.2.3", + "resolved": "https://registry.npmjs.org/expo-status-bar/-/expo-status-bar-2.2.3.tgz", + "integrity": "sha512-+c8R3AESBoduunxTJ8353SqKAKpxL6DvcD8VKBuh81zzJyUUbfB4CVjr1GufSJEKsMzNPXZU+HJwXx7Xh7lx8Q==", + "license": "MIT", + "dependencies": { + "react-native-edge-to-edge": "1.6.0", + "react-native-is-edge-to-edge": "^1.1.6" + }, + "peerDependencies": { + "react": "*", + "react-native": "*" + } + }, + "node_modules/expo-symbols": { + "version": "0.4.5", + "resolved": "https://registry.npmjs.org/expo-symbols/-/expo-symbols-0.4.5.tgz", + "integrity": "sha512-ZbgvJfACPfWaJxJrUd0YzDmH9X0Ci7vb5m0/ZpDz/tnF1vQJlkovvpFEHLUmCDSLIN7/fNK8t696KSpzfm8/kg==", + "license": "MIT", + "dependencies": { + "sf-symbols-typescript": "^2.0.0" + }, + "peerDependencies": { + "expo": "*", + "react-native": "*" + } + }, + "node_modules/expo-system-ui": { + "version": "5.0.8", + "resolved": "https://registry.npmjs.org/expo-system-ui/-/expo-system-ui-5.0.8.tgz", + "integrity": "sha512-2sI7ALq3W8sKKa3FRW7PmuNznk+48cb1VzFy96vYZLZgTDZViz+fEJNdp1RHgLui/mAl3f8md1LneygSJvZ1EQ==", + "license": "MIT", + "dependencies": { + "@react-native/normalize-colors": "0.79.3", + "debug": "^4.3.2" + }, + "peerDependencies": { + "expo": "*", + "react-native": "*", + "react-native-web": "*" + }, + "peerDependenciesMeta": { + "react-native-web": { + "optional": true + } + } + }, + "node_modules/expo-system-ui/node_modules/@react-native/normalize-colors": { + "version": "0.79.3", + "resolved": "https://registry.npmjs.org/@react-native/normalize-colors/-/normalize-colors-0.79.3.tgz", + "integrity": "sha512-T75NIQPRFCj6DFMxtcVMJTZR+3vHXaUMSd15t+CkJpc5LnyX91GVaPxpRSAdjFh7m3Yppl5MpdjV/fntImheYQ==", + "license": "MIT" + }, + "node_modules/expo-web-browser": { + "version": "14.1.6", + "resolved": "https://registry.npmjs.org/expo-web-browser/-/expo-web-browser-14.1.6.tgz", + "integrity": "sha512-/4P8eWqRyfXIMZna3acg320LXNA+P2cwyEVbjDX8vHnWU+UnOtyRKWy3XaAIyMPQ9hVjBNUQTh4MPvtnPRzakw==", + "license": "MIT", + "peerDependencies": { + "expo": "*", + "react-native": "*" + } + }, + "node_modules/exponential-backoff": { + "version": "3.1.2", + "resolved": "https://registry.npmjs.org/exponential-backoff/-/exponential-backoff-3.1.2.tgz", + "integrity": "sha512-8QxYTVXUkuy7fIIoitQkPwGonB8F3Zj8eEO8Sqg9Zv/bkI7RJAzowee4gr81Hak/dUTpA2Z7VfQgoijjPNlUZA==", + "license": "Apache-2.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==", + "license": "MIT" + }, + "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==", + "license": "MIT" + }, + "node_modules/fast-uri": { + "version": "3.0.6", + "resolved": "https://registry.npmjs.org/fast-uri/-/fast-uri-3.0.6.tgz", + "integrity": "sha512-Atfo14OibSv5wAp4VWNsFYE1AchQRTv9cBGWET4pZWHzYshFSS9NQI6I57rdKn9croWVMbYFbLhJ+yJvmZIIHw==", + "funding": [ + { + "type": "github", + "url": "https://github.com/sponsors/fastify" + }, + { + "type": "opencollective", + "url": "https://opencollective.com/fastify" + } + ], + "license": "BSD-3-Clause" + }, + "node_modules/fb-watchman": { + "version": "2.0.2", + "resolved": "https://registry.npmjs.org/fb-watchman/-/fb-watchman-2.0.2.tgz", + "integrity": "sha512-p5161BqbuCaSnB8jIbzQHOlpgsPmK5rJVDfDKO91Axs5NC1uu3HRQm6wt9cd9/+GtQQIO53JdGXXoyDpTAsgYA==", + "license": "Apache-2.0", + "dependencies": { + "bser": "2.1.1" + } + }, + "node_modules/fbjs": { + "version": "3.0.5", + "resolved": "https://registry.npmjs.org/fbjs/-/fbjs-3.0.5.tgz", + "integrity": "sha512-ztsSx77JBtkuMrEypfhgc3cI0+0h+svqeie7xHbh1k/IKdcydnvadp/mUaGgjAOXQmQSxsqgaRhS3q9fy+1kxg==", + "license": "MIT", + "dependencies": { + "cross-fetch": "^3.1.5", + "fbjs-css-vars": "^1.0.0", + "loose-envify": "^1.0.0", + "object-assign": "^4.1.0", + "promise": "^7.1.1", + "setimmediate": "^1.0.5", + "ua-parser-js": "^1.0.35" + } + }, + "node_modules/fbjs-css-vars": { + "version": "1.0.2", + "resolved": "https://registry.npmjs.org/fbjs-css-vars/-/fbjs-css-vars-1.0.2.tgz", + "integrity": "sha512-b2XGFAFdWZWg0phtAWLHCk836A1Xann+I+Dgd3Gk64MHKZO44FfoD1KxyvbSh0qZsIoXQGGlVztIY+oitJPpRQ==", + "license": "MIT" + }, + "node_modules/fbjs/node_modules/promise": { + "version": "7.3.1", + "resolved": "https://registry.npmjs.org/promise/-/promise-7.3.1.tgz", + "integrity": "sha512-nolQXZ/4L+bP/UGlkfaIujX9BKxGwmQ9OT4mOt5yvy8iK1h3wqTEJCijzGANTCCl9nWjY41juyAn2K3Q1hLLTg==", + "license": "MIT", + "dependencies": { + "asap": "~2.0.3" + } + }, + "node_modules/fill-range": { + "version": "7.1.1", + "resolved": "https://registry.npmjs.org/fill-range/-/fill-range-7.1.1.tgz", + "integrity": "sha512-YsGpe3WHLK8ZYi4tWDg2Jy3ebRz2rXowDxnld4bkQB00cc/1Zw9AWnC0i9ztDJitivtQvaI9KaLyKrc+hBW0yg==", + "license": "MIT", + "dependencies": { + "to-regex-range": "^5.0.1" + }, + "engines": { + "node": ">=8" + } + }, + "node_modules/filter-obj": { + "version": "1.1.0", + "resolved": "https://registry.npmjs.org/filter-obj/-/filter-obj-1.1.0.tgz", + "integrity": "sha512-8rXg1ZnX7xzy2NGDVkBVaAy+lSlPNwad13BtgSlLuxfIslyt5Vg64U7tFcCt4WS1R0hvtnQybT/IyCkGZ3DpXQ==", + "license": "MIT", + "engines": { + "node": ">=0.10.0" + } + }, + "node_modules/finalhandler": { + "version": "1.1.2", + "resolved": "https://registry.npmjs.org/finalhandler/-/finalhandler-1.1.2.tgz", + "integrity": "sha512-aAWcW57uxVNrQZqFXjITpW3sIUQmHGG3qSb9mUah9MgMC4NeWhNOlNjXEYq3HjRAvL6arUviZGGJsBg6z0zsWA==", + "license": "MIT", + "dependencies": { + "debug": "2.6.9", + "encodeurl": "~1.0.2", + "escape-html": "~1.0.3", + "on-finished": "~2.3.0", + "parseurl": "~1.3.3", + "statuses": "~1.5.0", + "unpipe": "~1.0.0" + }, + "engines": { + "node": ">= 0.8" + } + }, + "node_modules/finalhandler/node_modules/debug": { + "version": "2.6.9", + "resolved": "https://registry.npmjs.org/debug/-/debug-2.6.9.tgz", + "integrity": "sha512-bC7ElrdJaJnPbAP+1EotYvqZsb3ecl5wi6Bfi6BJTUcNowp6cvspg0jXznRTKDjm/E7AdgFBVeAPVMNcKGsHMA==", + "license": "MIT", + "dependencies": { + "ms": "2.0.0" + } + }, + "node_modules/finalhandler/node_modules/ms": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/ms/-/ms-2.0.0.tgz", + "integrity": "sha512-Tpp60P6IUJDTuOq/5Z8cdskzJujfwqfOTkrwIwj7IRISpnkJnT6SyJ4PCPnGMoFjC9ddhal5KVIYtAt97ix05A==", + "license": "MIT" + }, + "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==", + "license": "MIT", + "dependencies": { + "locate-path": "^6.0.0", + "path-exists": "^4.0.0" + }, + "engines": { + "node": ">=10" + }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" + } + }, + "node_modules/flow-enums-runtime": { + "version": "0.0.6", + "resolved": "https://registry.npmjs.org/flow-enums-runtime/-/flow-enums-runtime-0.0.6.tgz", + "integrity": "sha512-3PYnM29RFXwvAN6Pc/scUfkI7RwhQ/xqyLUyPNlXUp9S40zI8nup9tUSrTLSVnWGBN38FNiGWbwZOB6uR4OGdw==", + "license": "MIT" + }, + "node_modules/fontfaceobserver": { + "version": "2.3.0", + "resolved": "https://registry.npmjs.org/fontfaceobserver/-/fontfaceobserver-2.3.0.tgz", + "integrity": "sha512-6FPvD/IVyT4ZlNe7Wcn5Fb/4ChigpucKYSvD6a+0iMoLn2inpo711eyIcKjmDtE5XNcgAkSH9uN/nfAeZzHEfg==", + "license": "BSD-2-Clause" + }, + "node_modules/foreground-child": { + "version": "3.3.1", + "resolved": "https://registry.npmjs.org/foreground-child/-/foreground-child-3.3.1.tgz", + "integrity": "sha512-gIXjKqtFuWEgzFRJA9WCQeSJLZDjgJUOMCMzxtvFq/37KojM1BFGufqsCy0r4qSQmYLsZYMeyRqzIWOMup03sw==", + "license": "ISC", + "dependencies": { + "cross-spawn": "^7.0.6", + "signal-exit": "^4.0.1" + }, + "engines": { + "node": ">=14" + }, + "funding": { + "url": "https://github.com/sponsors/isaacs" + } + }, + "node_modules/form-data": { + "version": "4.0.2", + "resolved": "https://registry.npmjs.org/form-data/-/form-data-4.0.2.tgz", + "integrity": "sha512-hGfm/slu0ZabnNt4oaRZ6uREyfCj6P4fT/n6A1rGV+Z0VdGXjfOhVUpkn6qVQONHGIFwmveGXyDs75+nr6FM8w==", + "dev": true, + "license": "MIT", + "dependencies": { + "asynckit": "^0.4.0", + "combined-stream": "^1.0.8", + "es-set-tostringtag": "^2.1.0", + "mime-types": "^2.1.12" + }, + "engines": { + "node": ">= 6" + } + }, + "node_modules/freeport-async": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/freeport-async/-/freeport-async-2.0.0.tgz", + "integrity": "sha512-K7od3Uw45AJg00XUmy15+Hae2hOcgKcmN3/EF6Y7i01O0gaqiRx8sUSpsb9+BRNL8RPBrhzPsVfy8q9ADlJuWQ==", + "license": "MIT", + "engines": { + "node": ">=8" + } + }, + "node_modules/fresh": { + "version": "0.5.2", + "resolved": "https://registry.npmjs.org/fresh/-/fresh-0.5.2.tgz", + "integrity": "sha512-zJ2mQYM18rEFOudeV4GShTGIQ7RbzA7ozbU9I/XBpm7kqgMywgmylMwXHxZJmkVoYkna9d2pVXVXPdYTP9ej8Q==", + "license": "MIT", + "engines": { + "node": ">= 0.6" + } + }, + "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==", + "license": "ISC" + }, + "node_modules/fsevents": { + "version": "2.3.3", + "resolved": "https://registry.npmjs.org/fsevents/-/fsevents-2.3.3.tgz", + "integrity": "sha512-5xoDfX+fL7faATnagmWPpbFtwh/R77WmMMqqHGS65C3vvB0YHrgF+B1YmZ3441tMj5n63k0212XNoJwzlhffQw==", + "hasInstallScript": true, + "license": "MIT", + "optional": true, + "os": [ + "darwin" + ], + "engines": { + "node": "^8.16.0 || ^10.6.0 || >=11.0.0" + } + }, + "node_modules/function-bind": { + "version": "1.1.2", + "resolved": "https://registry.npmjs.org/function-bind/-/function-bind-1.1.2.tgz", + "integrity": "sha512-7XHNxH7qX9xG5mIwxkhumTox/MIRNcOgDrxWsMt2pAr23WHp6MrRlN7FBSFpCpr+oVO0F744iUgR82nJMfG2SA==", + "license": "MIT", + "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==", + "license": "MIT", + "engines": { + "node": ">=6.9.0" + } + }, + "node_modules/get-caller-file": { + "version": "2.0.5", + "resolved": "https://registry.npmjs.org/get-caller-file/-/get-caller-file-2.0.5.tgz", + "integrity": "sha512-DyFP3BM/3YHTQOCUL/w0OZHR0lpKeGrxotcHWcqNEdnltqFwXVfhEBQ94eIo34AfQpo0rGki4cyIiftY06h2Fg==", + "license": "ISC", + "engines": { + "node": "6.* || 8.* || >= 10.*" + } + }, + "node_modules/get-intrinsic": { + "version": "1.3.0", + "resolved": "https://registry.npmjs.org/get-intrinsic/-/get-intrinsic-1.3.0.tgz", + "integrity": "sha512-9fSjSaos/fRIVIp+xSJlE6lfwhES7LNtKaCBIamHsjr2na1BiABJPo0mOjjz8GJDURarmCPGqaiVg5mfjb98CQ==", + "dev": true, + "license": "MIT", + "dependencies": { + "call-bind-apply-helpers": "^1.0.2", + "es-define-property": "^1.0.1", + "es-errors": "^1.3.0", + "es-object-atoms": "^1.1.1", + "function-bind": "^1.1.2", + "get-proto": "^1.0.1", + "gopd": "^1.2.0", + "has-symbols": "^1.1.0", + "hasown": "^2.0.2", + "math-intrinsics": "^1.1.0" + }, + "engines": { + "node": ">= 0.4" + }, + "funding": { + "url": "https://github.com/sponsors/ljharb" + } + }, + "node_modules/get-package-type": { + "version": "0.1.0", + "resolved": "https://registry.npmjs.org/get-package-type/-/get-package-type-0.1.0.tgz", + "integrity": "sha512-pjzuKtY64GYfWizNAJ0fr9VqttZkNiK2iS430LtIHzjBEr6bX8Am2zm4sW4Ro5wjWW5cAlRL1qAMTcXbjNAO2Q==", + "license": "MIT", + "engines": { + "node": ">=8.0.0" + } + }, + "node_modules/get-proto": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/get-proto/-/get-proto-1.0.1.tgz", + "integrity": "sha512-sTSfBjoXBp89JvIKIefqw7U2CCebsc74kiY6awiGogKtoSGbgjYE/G/+l9sF3MWFPNc9IcoOC4ODfKHfxFmp0g==", + "dev": true, + "license": "MIT", + "dependencies": { + "dunder-proto": "^1.0.1", + "es-object-atoms": "^1.0.0" + }, + "engines": { + "node": ">= 0.4" + } + }, + "node_modules/get-stream": { + "version": "6.0.1", + "resolved": "https://registry.npmjs.org/get-stream/-/get-stream-6.0.1.tgz", + "integrity": "sha512-ts6Wi+2j3jQjqi70w5AlN8DFnkSwC+MqmxEzdEALB2qXZYV3X/b1CTfgPLGJNMeAWxdPfU8FO1ms3NUfaHCPYg==", + "dev": true, + "license": "MIT", + "engines": { + "node": ">=10" + }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" + } + }, + "node_modules/getenv": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/getenv/-/getenv-1.0.0.tgz", + "integrity": "sha512-7yetJWqbS9sbn0vIfliPsFgoXMKn/YMF+Wuiog97x+urnSRRRZ7xB+uVkwGKzRgq9CDFfMQnE9ruL5DHv9c6Xg==", + "license": "MIT", + "engines": { + "node": ">=6" + } + }, + "node_modules/glob": { + "version": "10.4.5", + "resolved": "https://registry.npmjs.org/glob/-/glob-10.4.5.tgz", + "integrity": "sha512-7Bv8RF0k6xjo7d4A/PxYLbUCfb6c+Vpd2/mB2yRDlew7Jb5hEXiCD9ibfO7wpk8i4sevK6DFny9h7EYbM3/sHg==", + "license": "ISC", + "dependencies": { + "foreground-child": "^3.1.0", + "jackspeak": "^3.1.2", + "minimatch": "^9.0.4", + "minipass": "^7.1.2", + "package-json-from-dist": "^1.0.0", + "path-scurry": "^1.11.1" + }, + "bin": { + "glob": "dist/esm/bin.mjs" + }, + "funding": { + "url": "https://github.com/sponsors/isaacs" + } + }, + "node_modules/glob-to-regexp": { + "version": "0.4.1", + "resolved": "https://registry.npmjs.org/glob-to-regexp/-/glob-to-regexp-0.4.1.tgz", + "integrity": "sha512-lkX1HJXwyMcprw/5YUZc2s7DrpAiHB21/V+E1rHUrVNokkvB6bqMzT0VfV6/86ZNabt1k14YOIaT7nDvOX3Iiw==", + "dev": true, + "license": "BSD-2-Clause", + "peer": true + }, + "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==", + "license": "MIT", + "engines": { + "node": ">=4" + } + }, + "node_modules/gopd": { + "version": "1.2.0", + "resolved": "https://registry.npmjs.org/gopd/-/gopd-1.2.0.tgz", + "integrity": "sha512-ZUKRh6/kUFoAiTAtTYPZJ3hw9wNxx+BIBOijnlG9PnrJsCcSjs1wyyD6vJpaYtgnzDrKYRSqf3OO6Rfa93xsRg==", + "dev": true, + "license": "MIT", + "engines": { + "node": ">= 0.4" + }, + "funding": { + "url": "https://github.com/sponsors/ljharb" + } + }, + "node_modules/graceful-fs": { + "version": "4.2.11", + "resolved": "https://registry.npmjs.org/graceful-fs/-/graceful-fs-4.2.11.tgz", + "integrity": "sha512-RbJ5/jmFcNNCcDV5o9eTnBLJ/HszWV0P73bc+Ff4nS/rJj+YaS6IGyiOL0VoBYX+l1Wrl3k63h/KrH+nhJ0XvQ==", + "license": "ISC" + }, + "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==", + "license": "MIT", + "engines": { + "node": ">=8" + } + }, + "node_modules/has-symbols": { + "version": "1.1.0", + "resolved": "https://registry.npmjs.org/has-symbols/-/has-symbols-1.1.0.tgz", + "integrity": "sha512-1cDNdwJ2Jaohmb3sg4OmKaMBwuC48sYni5HUw2DvsC8LjGTLK9h+eb1X6RyuOHe4hT0ULCW68iomhjUoKUqlPQ==", + "dev": true, + "license": "MIT", + "engines": { + "node": ">= 0.4" + }, + "funding": { + "url": "https://github.com/sponsors/ljharb" + } + }, + "node_modules/has-tostringtag": { + "version": "1.0.2", + "resolved": "https://registry.npmjs.org/has-tostringtag/-/has-tostringtag-1.0.2.tgz", + "integrity": "sha512-NqADB8VjPFLM2V0VvHUewwwsw0ZWBaIdgo+ieHtK3hasLz4qeCRjYcqfB6AQrBggRKppKF8L52/VqdVsO47Dlw==", + "dev": true, + "license": "MIT", + "dependencies": { + "has-symbols": "^1.0.3" + }, + "engines": { + "node": ">= 0.4" + }, + "funding": { + "url": "https://github.com/sponsors/ljharb" + } + }, + "node_modules/hasown": { + "version": "2.0.2", + "resolved": "https://registry.npmjs.org/hasown/-/hasown-2.0.2.tgz", + "integrity": "sha512-0hJU9SCPvmMzIBdZFqNPXWa6dqh7WdH0cII9y+CyS8rG3nL48Bclra9HmKhVVUHyPWNH5Y7xDwAB7bfgSjkUMQ==", + "license": "MIT", + "dependencies": { + "function-bind": "^1.1.2" + }, + "engines": { + "node": ">= 0.4" + } + }, + "node_modules/hermes-estree": { + "version": "0.25.1", + "resolved": "https://registry.npmjs.org/hermes-estree/-/hermes-estree-0.25.1.tgz", + "integrity": "sha512-0wUoCcLp+5Ev5pDW2OriHC2MJCbwLwuRx+gAqMTOkGKJJiBCLjtrvy4PWUGn6MIVefecRpzoOZ/UV6iGdOr+Cw==", + "license": "MIT" + }, + "node_modules/hermes-parser": { + "version": "0.25.1", + "resolved": "https://registry.npmjs.org/hermes-parser/-/hermes-parser-0.25.1.tgz", + "integrity": "sha512-6pEjquH3rqaI6cYAXYPcz9MS4rY6R4ngRgrgfDshRptUZIc3lw0MCIJIGDj9++mfySOuPTHB4nrSW99BCvOPIA==", + "license": "MIT", + "dependencies": { + "hermes-estree": "0.25.1" + } + }, + "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==", + "license": "BSD-3-Clause", + "dependencies": { + "react-is": "^16.7.0" + } + }, + "node_modules/hoist-non-react-statics/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" + }, + "node_modules/hosted-git-info": { + "version": "7.0.2", + "resolved": "https://registry.npmjs.org/hosted-git-info/-/hosted-git-info-7.0.2.tgz", + "integrity": "sha512-puUZAUKT5m8Zzvs72XWy3HtvVbTWljRE66cP60bxJzAqf2DgICo7lYTY2IHUmLnNpjYvw5bvmoHvPc0QO2a62w==", + "license": "ISC", + "dependencies": { + "lru-cache": "^10.0.1" + }, + "engines": { + "node": "^16.14.0 || >=18.0.0" + } + }, + "node_modules/hosted-git-info/node_modules/lru-cache": { + "version": "10.4.3", + "resolved": "https://registry.npmjs.org/lru-cache/-/lru-cache-10.4.3.tgz", + "integrity": "sha512-JNAzZcXrCt42VGLuYz0zfAzDfAvJWW6AfYlDBQyDV5DClI2m5sAmK+OIO7s59XfsRsWHp02jAJrRadPRGTt6SQ==", + "license": "ISC" + }, + "node_modules/html-encoding-sniffer": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/html-encoding-sniffer/-/html-encoding-sniffer-3.0.0.tgz", + "integrity": "sha512-oWv4T4yJ52iKrufjnyZPkrN0CH3QnrUqdB6In1g5Fe1mia8GmF36gnfNySxoZtxD5+NmYw1EElVXiBk93UeskA==", + "dev": true, + "license": "MIT", + "dependencies": { + "whatwg-encoding": "^2.0.0" + }, + "engines": { + "node": ">=12" + } + }, + "node_modules/html-escaper": { + "version": "2.0.2", + "resolved": "https://registry.npmjs.org/html-escaper/-/html-escaper-2.0.2.tgz", + "integrity": "sha512-H2iMtd0I4Mt5eYiapRdIDjp+XzelXQ0tFE4JS7YFwFevXXMmOp9myNrUvCg0D6ws8iqkRPBfKHgbwig1SmlLfg==", + "dev": true, + "license": "MIT" + }, + "node_modules/http-errors": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/http-errors/-/http-errors-2.0.0.tgz", + "integrity": "sha512-FtwrG/euBzaEjYeRqOgly7G0qviiXoJWnvEH2Z1plBdXgbyjv34pHTSb9zoeHMyDy33+DWy5Wt9Wo+TURtOYSQ==", + "license": "MIT", + "dependencies": { + "depd": "2.0.0", + "inherits": "2.0.4", + "setprototypeof": "1.2.0", + "statuses": "2.0.1", + "toidentifier": "1.0.1" + }, + "engines": { + "node": ">= 0.8" + } + }, + "node_modules/http-errors/node_modules/statuses": { + "version": "2.0.1", + "resolved": "https://registry.npmjs.org/statuses/-/statuses-2.0.1.tgz", + "integrity": "sha512-RwNA9Z/7PrK06rYLIzFMlaF+l73iwpzsqRIFgbMLbTcLD6cOao82TaWefPXQvB2fOC4AjuYSEndS7N/mTCbkdQ==", + "license": "MIT", + "engines": { + "node": ">= 0.8" + } + }, + "node_modules/http-proxy-agent": { + "version": "5.0.0", + "resolved": "https://registry.npmjs.org/http-proxy-agent/-/http-proxy-agent-5.0.0.tgz", + "integrity": "sha512-n2hY8YdoRE1i7r6M0w9DIw5GgZN0G25P8zLCRQ8rjXtTU3vsNFBI/vWK/UIeE6g5MUUz6avwAPXmL6Fy9D/90w==", + "dev": true, + "license": "MIT", + "dependencies": { + "@tootallnate/once": "2", + "agent-base": "6", + "debug": "4" + }, + "engines": { + "node": ">= 6" + } + }, + "node_modules/https-proxy-agent": { + "version": "5.0.1", + "resolved": "https://registry.npmjs.org/https-proxy-agent/-/https-proxy-agent-5.0.1.tgz", + "integrity": "sha512-dFcAjpTQFgoLMzC2VwU+C/CbS7uRL0lWmxDITmqm7C+7F0Odmj6s9l6alZc6AELXhrnggM2CeWSXHGOdX2YtwA==", + "dev": true, + "license": "MIT", + "dependencies": { + "agent-base": "6", + "debug": "4" + }, + "engines": { + "node": ">= 6" + } + }, + "node_modules/human-signals": { + "version": "2.1.0", + "resolved": "https://registry.npmjs.org/human-signals/-/human-signals-2.1.0.tgz", + "integrity": "sha512-B4FFZ6q/T2jhhksgkbEW3HBvWIfDW85snkQgawt07S7J5QXTk6BkNV+0yAeZrM5QpMAdYlocGoljn0sJ/WQkFw==", + "dev": true, + "license": "Apache-2.0", + "engines": { + "node": ">=10.17.0" + } + }, + "node_modules/hyphenate-style-name": { + "version": "1.1.0", + "resolved": "https://registry.npmjs.org/hyphenate-style-name/-/hyphenate-style-name-1.1.0.tgz", + "integrity": "sha512-WDC/ui2VVRrz3jOVi+XtjqkDjiVjTtFaAGiW37k6b+ohyQ5wYDOGkvCZa8+H0nx3gyvv0+BST9xuOgIyGQ00gw==", + "license": "BSD-3-Clause" + }, + "node_modules/iconv-lite": { + "version": "0.6.3", + "resolved": "https://registry.npmjs.org/iconv-lite/-/iconv-lite-0.6.3.tgz", + "integrity": "sha512-4fCk79wshMdzMp2rH06qWrJE4iolqLhCUH+OiuIgU++RB0+94NlDL81atO7GX55uUKueo0txHNtvEyI6D7WdMw==", + "dev": true, + "license": "MIT", + "dependencies": { + "safer-buffer": ">= 2.1.2 < 3.0.0" + }, + "engines": { + "node": ">=0.10.0" + } + }, + "node_modules/ieee754": { + "version": "1.2.1", + "resolved": "https://registry.npmjs.org/ieee754/-/ieee754-1.2.1.tgz", + "integrity": "sha512-dcyqhDvX1C46lXZcVqCpK+FtMRQVdIMN6/Df5js2zouUsqG7I6sFxitIC+7KYK29KdXOLHdu9zL4sFnoVQnqaA==", + "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": "BSD-3-Clause" + }, + "node_modules/ignore": { + "version": "5.3.2", + "resolved": "https://registry.npmjs.org/ignore/-/ignore-5.3.2.tgz", + "integrity": "sha512-hsBTNUqQTDwkWtcdYI2i06Y/nUBEsNEDJKjWdigLvegy8kDuJAS8uRlpkkcQpyEXL0Z/pjDy5HBmMjRCJ2gq+g==", + "license": "MIT", + "engines": { + "node": ">= 4" + } + }, + "node_modules/image-size": { + "version": "1.2.1", + "resolved": "https://registry.npmjs.org/image-size/-/image-size-1.2.1.tgz", + "integrity": "sha512-rH+46sQJ2dlwfjfhCyNx5thzrv+dtmBIhPHk0zgRUukHzZ/kRueTJXoYYsclBaKcSMBWuGbOFXtioLpzTb5euw==", + "license": "MIT", + "dependencies": { + "queue": "6.0.2" + }, + "bin": { + "image-size": "bin/image-size.js" + }, + "engines": { + "node": ">=16.x" + } + }, + "node_modules/import-fresh": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/import-fresh/-/import-fresh-2.0.0.tgz", + "integrity": "sha512-eZ5H8rcgYazHbKC3PG4ClHNykCSxtAhxSSEM+2mb+7evD2CKF5V7c0dNum7AdpDh0ZdICwZY9sRSn8f+KH96sg==", + "license": "MIT", + "dependencies": { + "caller-path": "^2.0.0", + "resolve-from": "^3.0.0" + }, + "engines": { + "node": ">=4" + } + }, + "node_modules/import-fresh/node_modules/resolve-from": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/resolve-from/-/resolve-from-3.0.0.tgz", + "integrity": "sha512-GnlH6vxLymXJNMBo7XP1fJIzBFbdYt49CuTwmB/6N53t+kMPRMFKz783LlQ4tv28XoQfMWinAJX6WCGf2IlaIw==", + "license": "MIT", + "engines": { + "node": ">=4" + } + }, + "node_modules/import-local": { + "version": "3.2.0", + "resolved": "https://registry.npmjs.org/import-local/-/import-local-3.2.0.tgz", + "integrity": "sha512-2SPlun1JUPWoM6t3F0dw0FkCF/jWY8kttcY4f599GLTSjh2OCuuhdTkJQsEcZzBqbXZGKMK2OqW1oZsjtf/gQA==", + "dev": true, + "license": "MIT", + "dependencies": { + "pkg-dir": "^4.2.0", + "resolve-cwd": "^3.0.0" + }, + "bin": { + "import-local-fixture": "fixtures/cli.js" + }, + "engines": { + "node": ">=8" + }, + "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==", + "license": "MIT", + "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==", + "deprecated": "This module is not supported, and leaks memory. Do not use it. Check out lru-cache if you want a good and tested way to coalesce async requests by a key value, which is much more comprehensive and powerful.", + "license": "ISC", + "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==", + "license": "ISC" + }, + "node_modules/ini": { + "version": "1.3.8", + "resolved": "https://registry.npmjs.org/ini/-/ini-1.3.8.tgz", + "integrity": "sha512-JV/yugV2uzW5iMRSiZAyDtQd+nxtUnjeLt0acNdw98kKLrvuRVyB80tsREOE7yvGVgalhZ6RNXCmEHkUKBKxew==", + "license": "ISC" + }, + "node_modules/inline-style-prefixer": { + "version": "7.0.1", + "resolved": "https://registry.npmjs.org/inline-style-prefixer/-/inline-style-prefixer-7.0.1.tgz", + "integrity": "sha512-lhYo5qNTQp3EvSSp3sRvXMbVQTLrvGV6DycRMJ5dm2BLMiJ30wpXKdDdgX+GmJZ5uQMucwRKHamXSst3Sj/Giw==", + "license": "MIT", + "dependencies": { + "css-in-js-utils": "^3.1.0" + } + }, + "node_modules/invariant": { + "version": "2.2.4", + "resolved": "https://registry.npmjs.org/invariant/-/invariant-2.2.4.tgz", + "integrity": "sha512-phJfQVBuaJM5raOpJjSfkiD6BpbCE4Ns//LaXl6wGYtUBY83nWS6Rf9tXm2e8VaK60JEjYldbPif/A2B1C2gNA==", + "license": "MIT", + "dependencies": { + "loose-envify": "^1.0.0" + } + }, + "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" + }, + "node_modules/is-core-module": { + "version": "2.16.1", + "resolved": "https://registry.npmjs.org/is-core-module/-/is-core-module-2.16.1.tgz", + "integrity": "sha512-UfoeMA6fIJ8wTYFEUjelnaGI67v6+N7qXJEvQuIGa99l4xsCruSYOVSQ0uPANn4dAzm8lkYPaKLrrijLq7x23w==", + "license": "MIT", + "dependencies": { + "hasown": "^2.0.2" + }, + "engines": { + "node": ">= 0.4" + }, + "funding": { + "url": "https://github.com/sponsors/ljharb" + } + }, + "node_modules/is-directory": { + "version": "0.3.1", + "resolved": "https://registry.npmjs.org/is-directory/-/is-directory-0.3.1.tgz", + "integrity": "sha512-yVChGzahRFvbkscn2MlwGismPO12i9+znNruC5gVEntG3qu0xQMzsGg/JFbrsqDOHtHFPci+V5aP5T9I+yeKqw==", + "license": "MIT", + "engines": { + "node": ">=0.10.0" + } + }, + "node_modules/is-docker": { + "version": "2.2.1", + "resolved": "https://registry.npmjs.org/is-docker/-/is-docker-2.2.1.tgz", + "integrity": "sha512-F+i2BKsFrH66iaUFc0woD8sLy8getkwTwtOBjvs56Cx4CgJDeKQeqfz8wAYiSb8JOprWhHH5p77PbmYCvvUuXQ==", + "license": "MIT", + "bin": { + "is-docker": "cli.js" + }, + "engines": { + "node": ">=8" + }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" + } + }, + "node_modules/is-fullwidth-code-point": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/is-fullwidth-code-point/-/is-fullwidth-code-point-3.0.0.tgz", + "integrity": "sha512-zymm5+u+sCsSWyD9qNaejV3DFvhCKclKdizYaJUuHA83RLjb7nSuGnddCHGv0hk+KY7BMAlsWeK4Ueg6EV6XQg==", + "license": "MIT", + "engines": { + "node": ">=8" + } + }, + "node_modules/is-generator-fn": { + "version": "2.1.0", + "resolved": "https://registry.npmjs.org/is-generator-fn/-/is-generator-fn-2.1.0.tgz", + "integrity": "sha512-cTIB4yPYL/Grw0EaSzASzg6bBy9gqCofvWN8okThAYIxKJZC+udlRAmGbM0XLeniEJSs8uEgHPGuHSe1XsOLSQ==", + "dev": true, + "license": "MIT", + "engines": { + "node": ">=6" + } + }, + "node_modules/is-number": { + "version": "7.0.0", + "resolved": "https://registry.npmjs.org/is-number/-/is-number-7.0.0.tgz", + "integrity": "sha512-41Cifkg6e8TylSpdtTpeLVMqvSBEVzTttHvERD741+pnZ8ANv0004MRL43QKPDlK9cGvNp6NZWZUBlbGXYxxng==", + "license": "MIT", + "engines": { + "node": ">=0.12.0" + } + }, + "node_modules/is-potential-custom-element-name": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/is-potential-custom-element-name/-/is-potential-custom-element-name-1.0.1.tgz", + "integrity": "sha512-bCYeRA2rVibKZd+s2625gGnGF/t7DSqDs4dP7CrLA1m7jKWz6pps0LpYLJN8Q64HtmPKJ1hrN3nzPNKFEKOUiQ==", + "dev": true, + "license": "MIT" + }, + "node_modules/is-stream": { + "version": "2.0.1", + "resolved": "https://registry.npmjs.org/is-stream/-/is-stream-2.0.1.tgz", + "integrity": "sha512-hFoiJiTl63nn+kstHGBtewWSKnQLpyb155KHheA1l39uvtO9nWIop1p3udqPcUd/xbF1VLMO4n7OI6p7RbngDg==", + "dev": true, + "license": "MIT", + "engines": { + "node": ">=8" + }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" + } + }, + "node_modules/is-wsl": { + "version": "2.2.0", + "resolved": "https://registry.npmjs.org/is-wsl/-/is-wsl-2.2.0.tgz", + "integrity": "sha512-fKzAra0rGJUUBwGBgNkHZuToZcn+TtXHpeCgmkMJMMYx1sQDYaCSyjJBSCa2nH1DGm7s3n1oBnohoVTBaN7Lww==", + "license": "MIT", + "dependencies": { + "is-docker": "^2.0.0" + }, + "engines": { + "node": ">=8" + } + }, + "node_modules/isexe": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/isexe/-/isexe-2.0.0.tgz", + "integrity": "sha512-RHxMLp9lnKHGHRng9QFhRCMbYAcVpn69smSGcq3f36xjgVVWThj4qqLbTLlq7Ssj8B+fIQ1EuCEGI2lKsyQeIw==", + "license": "ISC" + }, + "node_modules/istanbul-lib-coverage": { + "version": "3.2.2", + "resolved": "https://registry.npmjs.org/istanbul-lib-coverage/-/istanbul-lib-coverage-3.2.2.tgz", + "integrity": "sha512-O8dpsF+r0WV/8MNRKfnmrtCWhuKjxrq2w+jpzBL5UZKTi2LeVWnWOmWRxFlesJONmc+wLAGvKQZEOanko0LFTg==", + "license": "BSD-3-Clause", + "engines": { + "node": ">=8" + } + }, + "node_modules/istanbul-lib-instrument": { + "version": "6.0.3", + "resolved": "https://registry.npmjs.org/istanbul-lib-instrument/-/istanbul-lib-instrument-6.0.3.tgz", + "integrity": "sha512-Vtgk7L/R2JHyyGW07spoFlB8/lpjiOLTjMdms6AFMraYt3BaJauod/NGrfnVG/y4Ix1JEuMRPDPEj2ua+zz1/Q==", + "dev": true, + "license": "BSD-3-Clause", + "dependencies": { + "@babel/core": "^7.23.9", + "@babel/parser": "^7.23.9", + "@istanbuljs/schema": "^0.1.3", + "istanbul-lib-coverage": "^3.2.0", + "semver": "^7.5.4" + }, + "engines": { + "node": ">=10" + } + }, + "node_modules/istanbul-lib-instrument/node_modules/semver": { + "version": "7.7.2", + "resolved": "https://registry.npmjs.org/semver/-/semver-7.7.2.tgz", + "integrity": "sha512-RF0Fw+rO5AMf9MAyaRXI4AV0Ulj5lMHqVxxdSgiVbixSCXoEmmX/jk0CuJw4+3SqroYO9VoUh+HcuJivvtJemA==", + "dev": true, + "license": "ISC", + "bin": { + "semver": "bin/semver.js" + }, + "engines": { + "node": ">=10" + } + }, + "node_modules/istanbul-lib-report": { + "version": "3.0.1", + "resolved": "https://registry.npmjs.org/istanbul-lib-report/-/istanbul-lib-report-3.0.1.tgz", + "integrity": "sha512-GCfE1mtsHGOELCU8e/Z7YWzpmybrx/+dSTfLrvY8qRmaY6zXTKWn6WQIjaAFw069icm6GVMNkgu0NzI4iPZUNw==", + "dev": true, + "license": "BSD-3-Clause", + "dependencies": { + "istanbul-lib-coverage": "^3.0.0", + "make-dir": "^4.0.0", + "supports-color": "^7.1.0" + }, + "engines": { + "node": ">=10" + } + }, + "node_modules/istanbul-lib-source-maps": { + "version": "4.0.1", + "resolved": "https://registry.npmjs.org/istanbul-lib-source-maps/-/istanbul-lib-source-maps-4.0.1.tgz", + "integrity": "sha512-n3s8EwkdFIJCG3BPKBYvskgXGoy88ARzvegkitk60NxRdwltLOTaH7CUiMRXvwYorl0Q712iEjcWB+fK/MrWVw==", + "dev": true, + "license": "BSD-3-Clause", + "dependencies": { + "debug": "^4.1.1", + "istanbul-lib-coverage": "^3.0.0", + "source-map": "^0.6.1" + }, + "engines": { + "node": ">=10" + } + }, + "node_modules/istanbul-reports": { + "version": "3.1.7", + "resolved": "https://registry.npmjs.org/istanbul-reports/-/istanbul-reports-3.1.7.tgz", + "integrity": "sha512-BewmUXImeuRk2YY0PVbxgKAysvhRPUQE0h5QRM++nVWyubKGV0l8qQ5op8+B2DOmwSe63Jivj0BjkPQVf8fP5g==", + "dev": true, + "license": "BSD-3-Clause", + "dependencies": { + "html-escaper": "^2.0.0", + "istanbul-lib-report": "^3.0.0" + }, + "engines": { + "node": ">=8" + } + }, + "node_modules/jackspeak": { + "version": "3.4.3", + "resolved": "https://registry.npmjs.org/jackspeak/-/jackspeak-3.4.3.tgz", + "integrity": "sha512-OGlZQpz2yfahA/Rd1Y8Cd9SIEsqvXkLVoSw/cgwhnhFMDbsQFeZYoJJ7bIZBS9BcamUW96asq/npPWugM+RQBw==", + "license": "BlueOak-1.0.0", + "dependencies": { + "@isaacs/cliui": "^8.0.2" + }, + "funding": { + "url": "https://github.com/sponsors/isaacs" + }, + "optionalDependencies": { + "@pkgjs/parseargs": "^0.11.0" + } + }, + "node_modules/jest": { + "version": "29.7.0", + "resolved": "https://registry.npmjs.org/jest/-/jest-29.7.0.tgz", + "integrity": "sha512-NIy3oAFp9shda19hy4HK0HRTWKtPJmGdnvywu01nOqNC2vZg+Z+fvJDxpMQA88eb2I9EcafcdjYgsDthnYTvGw==", + "dev": true, + "license": "MIT", + "dependencies": { + "@jest/core": "^29.7.0", + "@jest/types": "^29.6.3", + "import-local": "^3.0.2", + "jest-cli": "^29.7.0" + }, + "bin": { + "jest": "bin/jest.js" + }, + "engines": { + "node": "^14.15.0 || ^16.10.0 || >=18.0.0" + }, + "peerDependencies": { + "node-notifier": "^8.0.1 || ^9.0.0 || ^10.0.0" + }, + "peerDependenciesMeta": { + "node-notifier": { + "optional": true + } + } + }, + "node_modules/jest-changed-files": { + "version": "29.7.0", + "resolved": "https://registry.npmjs.org/jest-changed-files/-/jest-changed-files-29.7.0.tgz", + "integrity": "sha512-fEArFiwf1BpQ+4bXSprcDc3/x4HSzL4al2tozwVpDFpsxALjLYdyiIK4e5Vz66GQJIbXJ82+35PtysofptNX2w==", + "dev": true, + "license": "MIT", + "dependencies": { + "execa": "^5.0.0", + "jest-util": "^29.7.0", + "p-limit": "^3.1.0" + }, + "engines": { + "node": "^14.15.0 || ^16.10.0 || >=18.0.0" + } + }, + "node_modules/jest-circus": { + "version": "29.7.0", + "resolved": "https://registry.npmjs.org/jest-circus/-/jest-circus-29.7.0.tgz", + "integrity": "sha512-3E1nCMgipcTkCocFwM90XXQab9bS+GMsjdpmPrlelaxwD93Ad8iVEjX/vvHPdLPnFf+L40u+5+iutRdA1N9myw==", + "dev": true, + "license": "MIT", + "dependencies": { + "@jest/environment": "^29.7.0", + "@jest/expect": "^29.7.0", + "@jest/test-result": "^29.7.0", + "@jest/types": "^29.6.3", + "@types/node": "*", + "chalk": "^4.0.0", + "co": "^4.6.0", + "dedent": "^1.0.0", + "is-generator-fn": "^2.0.0", + "jest-each": "^29.7.0", + "jest-matcher-utils": "^29.7.0", + "jest-message-util": "^29.7.0", + "jest-runtime": "^29.7.0", + "jest-snapshot": "^29.7.0", + "jest-util": "^29.7.0", + "p-limit": "^3.1.0", + "pretty-format": "^29.7.0", + "pure-rand": "^6.0.0", + "slash": "^3.0.0", + "stack-utils": "^2.0.3" + }, + "engines": { + "node": "^14.15.0 || ^16.10.0 || >=18.0.0" + } + }, + "node_modules/jest-cli": { + "version": "29.7.0", + "resolved": "https://registry.npmjs.org/jest-cli/-/jest-cli-29.7.0.tgz", + "integrity": "sha512-OVVobw2IubN/GSYsxETi+gOe7Ka59EFMR/twOU3Jb2GnKKeMGJB5SGUUrEz3SFVmJASUdZUzy83sLNNQ2gZslg==", + "dev": true, + "license": "MIT", + "dependencies": { + "@jest/core": "^29.7.0", + "@jest/test-result": "^29.7.0", + "@jest/types": "^29.6.3", + "chalk": "^4.0.0", + "create-jest": "^29.7.0", + "exit": "^0.1.2", + "import-local": "^3.0.2", + "jest-config": "^29.7.0", + "jest-util": "^29.7.0", + "jest-validate": "^29.7.0", + "yargs": "^17.3.1" + }, + "bin": { + "jest": "bin/jest.js" + }, + "engines": { + "node": "^14.15.0 || ^16.10.0 || >=18.0.0" + }, + "peerDependencies": { + "node-notifier": "^8.0.1 || ^9.0.0 || ^10.0.0" + }, + "peerDependenciesMeta": { + "node-notifier": { + "optional": true + } + } + }, + "node_modules/jest-config": { + "version": "29.7.0", + "resolved": "https://registry.npmjs.org/jest-config/-/jest-config-29.7.0.tgz", + "integrity": "sha512-uXbpfeQ7R6TZBqI3/TxCU4q4ttk3u0PJeC+E0zbfSoSjq6bJ7buBPxzQPL0ifrkY4DNu4JUdk0ImlBUYi840eQ==", + "dev": true, + "license": "MIT", + "dependencies": { + "@babel/core": "^7.11.6", + "@jest/test-sequencer": "^29.7.0", + "@jest/types": "^29.6.3", + "babel-jest": "^29.7.0", + "chalk": "^4.0.0", + "ci-info": "^3.2.0", + "deepmerge": "^4.2.2", + "glob": "^7.1.3", + "graceful-fs": "^4.2.9", + "jest-circus": "^29.7.0", + "jest-environment-node": "^29.7.0", + "jest-get-type": "^29.6.3", + "jest-regex-util": "^29.6.3", + "jest-resolve": "^29.7.0", + "jest-runner": "^29.7.0", + "jest-util": "^29.7.0", + "jest-validate": "^29.7.0", + "micromatch": "^4.0.4", + "parse-json": "^5.2.0", + "pretty-format": "^29.7.0", + "slash": "^3.0.0", + "strip-json-comments": "^3.1.1" + }, + "engines": { + "node": "^14.15.0 || ^16.10.0 || >=18.0.0" + }, + "peerDependencies": { + "@types/node": "*", + "ts-node": ">=9.0.0" + }, + "peerDependenciesMeta": { + "@types/node": { + "optional": true + }, + "ts-node": { + "optional": true + } + } + }, + "node_modules/jest-config/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, + "license": "MIT", + "dependencies": { + "balanced-match": "^1.0.0", + "concat-map": "0.0.1" + } + }, + "node_modules/jest-config/node_modules/glob": { + "version": "7.2.3", + "resolved": "https://registry.npmjs.org/glob/-/glob-7.2.3.tgz", + "integrity": "sha512-nFR0zLpU2YCaRxwoCJvL6UvCH2JFyFVIvwTLsIf21AuHlMskA1hhTdk+LlYJtOlYt9v6dvszD2BGRqBL+iQK9Q==", + "deprecated": "Glob versions prior to v9 are no longer supported", + "dev": true, + "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" + } + }, + "node_modules/jest-config/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, + "license": "ISC", + "dependencies": { + "brace-expansion": "^1.1.7" + }, + "engines": { + "node": "*" + } + }, + "node_modules/jest-diff": { + "version": "29.7.0", + "resolved": "https://registry.npmjs.org/jest-diff/-/jest-diff-29.7.0.tgz", + "integrity": "sha512-LMIgiIrhigmPrs03JHpxUh2yISK3vLFPkAodPeo0+BuF7wA2FoQbkEg1u8gBYBThncu7e1oEDUfIXVuTqLRUjw==", + "dev": true, + "license": "MIT", + "dependencies": { + "chalk": "^4.0.0", + "diff-sequences": "^29.6.3", + "jest-get-type": "^29.6.3", + "pretty-format": "^29.7.0" + }, + "engines": { + "node": "^14.15.0 || ^16.10.0 || >=18.0.0" + } + }, + "node_modules/jest-docblock": { + "version": "29.7.0", + "resolved": "https://registry.npmjs.org/jest-docblock/-/jest-docblock-29.7.0.tgz", + "integrity": "sha512-q617Auw3A612guyaFgsbFeYpNP5t2aoUNLwBUbc/0kD1R4t9ixDbyFTHd1nok4epoVFpr7PmeWHrhvuV3XaJ4g==", + "dev": true, + "license": "MIT", + "dependencies": { + "detect-newline": "^3.0.0" + }, + "engines": { + "node": "^14.15.0 || ^16.10.0 || >=18.0.0" + } + }, + "node_modules/jest-each": { + "version": "29.7.0", + "resolved": "https://registry.npmjs.org/jest-each/-/jest-each-29.7.0.tgz", + "integrity": "sha512-gns+Er14+ZrEoC5fhOfYCY1LOHHr0TI+rQUHZS8Ttw2l7gl+80eHc/gFf2Ktkw0+SIACDTeWvpFcv3B04VembQ==", + "dev": true, + "license": "MIT", + "dependencies": { + "@jest/types": "^29.6.3", + "chalk": "^4.0.0", + "jest-get-type": "^29.6.3", + "jest-util": "^29.7.0", + "pretty-format": "^29.7.0" + }, + "engines": { + "node": "^14.15.0 || ^16.10.0 || >=18.0.0" + } + }, + "node_modules/jest-environment-jsdom": { + "version": "29.7.0", + "resolved": "https://registry.npmjs.org/jest-environment-jsdom/-/jest-environment-jsdom-29.7.0.tgz", + "integrity": "sha512-k9iQbsf9OyOfdzWH8HDmrRT0gSIcX+FLNW7IQq94tFX0gynPwqDTW0Ho6iMVNjGz/nb+l/vW3dWM2bbLLpkbXA==", + "dev": true, + "license": "MIT", + "dependencies": { + "@jest/environment": "^29.7.0", + "@jest/fake-timers": "^29.7.0", + "@jest/types": "^29.6.3", + "@types/jsdom": "^20.0.0", + "@types/node": "*", + "jest-mock": "^29.7.0", + "jest-util": "^29.7.0", + "jsdom": "^20.0.0" + }, + "engines": { + "node": "^14.15.0 || ^16.10.0 || >=18.0.0" + }, + "peerDependencies": { + "canvas": "^2.5.0" + }, + "peerDependenciesMeta": { + "canvas": { + "optional": true + } + } + }, + "node_modules/jest-environment-node": { + "version": "29.7.0", + "resolved": "https://registry.npmjs.org/jest-environment-node/-/jest-environment-node-29.7.0.tgz", + "integrity": "sha512-DOSwCRqXirTOyheM+4d5YZOrWcdu0LNZ87ewUoywbcb2XR4wKgqiG8vNeYwhjFMbEkfju7wx2GYH0P2gevGvFw==", + "license": "MIT", + "dependencies": { + "@jest/environment": "^29.7.0", + "@jest/fake-timers": "^29.7.0", + "@jest/types": "^29.6.3", + "@types/node": "*", + "jest-mock": "^29.7.0", + "jest-util": "^29.7.0" + }, + "engines": { + "node": "^14.15.0 || ^16.10.0 || >=18.0.0" + } + }, + "node_modules/jest-expo": { + "version": "53.0.7", + "resolved": "https://registry.npmjs.org/jest-expo/-/jest-expo-53.0.7.tgz", + "integrity": "sha512-Uiu3ES0sWbsxpifQuBzXMI1/N9JygfJfwEby/Qw/OPndIQ1YeeIQqkbP52xn6UhdSM4qYQiteX3EjY8TfrZIoA==", + "dev": true, + "license": "MIT", + "dependencies": { + "@expo/config": "~11.0.10", + "@expo/json-file": "^9.1.4", + "@jest/create-cache-key-function": "^29.2.1", + "@jest/globals": "^29.2.1", + "babel-jest": "^29.2.1", + "find-up": "^5.0.0", + "jest-environment-jsdom": "^29.2.1", + "jest-snapshot": "^29.2.1", + "jest-watch-select-projects": "^2.0.0", + "jest-watch-typeahead": "2.2.1", + "json5": "^2.2.3", + "lodash": "^4.17.19", + "react-server-dom-webpack": "~19.0.0", + "react-test-renderer": "19.0.0", + "server-only": "^0.0.1", + "stacktrace-js": "^2.0.2" + }, + "bin": { + "jest": "bin/jest.js" + }, + "peerDependencies": { + "expo": "*", + "react-native": "*" + } + }, + "node_modules/jest-expo/node_modules/react-test-renderer": { + "version": "19.0.0", + "resolved": "https://registry.npmjs.org/react-test-renderer/-/react-test-renderer-19.0.0.tgz", + "integrity": "sha512-oX5u9rOQlHzqrE/64CNr0HB0uWxkCQmZNSfozlYvwE71TLVgeZxVf0IjouGEr1v7r1kcDifdAJBeOhdhxsG/DA==", + "dev": true, + "license": "MIT", + "dependencies": { + "react-is": "^19.0.0", + "scheduler": "^0.25.0" + }, + "peerDependencies": { + "react": "^19.0.0" + } + }, + "node_modules/jest-get-type": { + "version": "29.6.3", + "resolved": "https://registry.npmjs.org/jest-get-type/-/jest-get-type-29.6.3.tgz", + "integrity": "sha512-zrteXnqYxfQh7l5FHyL38jL39di8H8rHoecLH3JNxH3BwOrBsNeabdap5e0I23lD4HHI8W5VFBZqG4Eaq5LNcw==", + "license": "MIT", + "engines": { + "node": "^14.15.0 || ^16.10.0 || >=18.0.0" + } + }, + "node_modules/jest-haste-map": { + "version": "29.7.0", + "resolved": "https://registry.npmjs.org/jest-haste-map/-/jest-haste-map-29.7.0.tgz", + "integrity": "sha512-fP8u2pyfqx0K1rGn1R9pyE0/KTn+G7PxktWidOBTqFPLYX0b9ksaMFkhK5vrS3DVun09pckLdlx90QthlW7AmA==", + "license": "MIT", + "dependencies": { + "@jest/types": "^29.6.3", + "@types/graceful-fs": "^4.1.3", + "@types/node": "*", + "anymatch": "^3.0.3", + "fb-watchman": "^2.0.0", + "graceful-fs": "^4.2.9", + "jest-regex-util": "^29.6.3", + "jest-util": "^29.7.0", + "jest-worker": "^29.7.0", + "micromatch": "^4.0.4", + "walker": "^1.0.8" + }, + "engines": { + "node": "^14.15.0 || ^16.10.0 || >=18.0.0" + }, + "optionalDependencies": { + "fsevents": "^2.3.2" + } + }, + "node_modules/jest-leak-detector": { + "version": "29.7.0", + "resolved": "https://registry.npmjs.org/jest-leak-detector/-/jest-leak-detector-29.7.0.tgz", + "integrity": "sha512-kYA8IJcSYtST2BY9I+SMC32nDpBT3J2NvWJx8+JCuCdl/CR1I4EKUJROiP8XtCcxqgTTBGJNdbB1A8XRKbTetw==", + "dev": true, + "license": "MIT", + "dependencies": { + "jest-get-type": "^29.6.3", + "pretty-format": "^29.7.0" + }, + "engines": { + "node": "^14.15.0 || ^16.10.0 || >=18.0.0" + } + }, + "node_modules/jest-matcher-utils": { + "version": "29.7.0", + "resolved": "https://registry.npmjs.org/jest-matcher-utils/-/jest-matcher-utils-29.7.0.tgz", + "integrity": "sha512-sBkD+Xi9DtcChsI3L3u0+N0opgPYnCRPtGcQYrgXmR+hmt/fYfWAL0xRXYU8eWOdfuLgBe0YCW3AFtnRLagq/g==", + "dev": true, + "license": "MIT", + "dependencies": { + "chalk": "^4.0.0", + "jest-diff": "^29.7.0", + "jest-get-type": "^29.6.3", + "pretty-format": "^29.7.0" + }, + "engines": { + "node": "^14.15.0 || ^16.10.0 || >=18.0.0" + } + }, + "node_modules/jest-message-util": { + "version": "29.7.0", + "resolved": "https://registry.npmjs.org/jest-message-util/-/jest-message-util-29.7.0.tgz", + "integrity": "sha512-GBEV4GRADeP+qtB2+6u61stea8mGcOT4mCtrYISZwfu9/ISHFJ/5zOMXYbpBE9RsS5+Gb63DW4FgmnKJ79Kf6w==", + "license": "MIT", + "dependencies": { + "@babel/code-frame": "^7.12.13", + "@jest/types": "^29.6.3", + "@types/stack-utils": "^2.0.0", + "chalk": "^4.0.0", + "graceful-fs": "^4.2.9", + "micromatch": "^4.0.4", + "pretty-format": "^29.7.0", + "slash": "^3.0.0", + "stack-utils": "^2.0.3" + }, + "engines": { + "node": "^14.15.0 || ^16.10.0 || >=18.0.0" + } + }, + "node_modules/jest-mock": { + "version": "29.7.0", + "resolved": "https://registry.npmjs.org/jest-mock/-/jest-mock-29.7.0.tgz", + "integrity": "sha512-ITOMZn+UkYS4ZFh83xYAOzWStloNzJFO2s8DWrE4lhtGD+AorgnbkiKERe4wQVBydIGPx059g6riW5Btp6Llnw==", + "license": "MIT", + "dependencies": { + "@jest/types": "^29.6.3", + "@types/node": "*", + "jest-util": "^29.7.0" + }, + "engines": { + "node": "^14.15.0 || ^16.10.0 || >=18.0.0" + } + }, + "node_modules/jest-pnp-resolver": { + "version": "1.2.3", + "resolved": "https://registry.npmjs.org/jest-pnp-resolver/-/jest-pnp-resolver-1.2.3.tgz", + "integrity": "sha512-+3NpwQEnRoIBtx4fyhblQDPgJI0H1IEIkX7ShLUjPGA7TtUTvI1oiKi3SR4oBR0hQhQR80l4WAe5RrXBwWMA8w==", + "dev": true, + "license": "MIT", + "engines": { + "node": ">=6" + }, + "peerDependencies": { + "jest-resolve": "*" + }, + "peerDependenciesMeta": { + "jest-resolve": { + "optional": true + } + } + }, + "node_modules/jest-regex-util": { + "version": "29.6.3", + "resolved": "https://registry.npmjs.org/jest-regex-util/-/jest-regex-util-29.6.3.tgz", + "integrity": "sha512-KJJBsRCyyLNWCNBOvZyRDnAIfUiRJ8v+hOBQYGn8gDyF3UegwiP4gwRR3/SDa42g1YbVycTidUF3rKjyLFDWbg==", + "license": "MIT", + "engines": { + "node": "^14.15.0 || ^16.10.0 || >=18.0.0" + } + }, + "node_modules/jest-resolve": { + "version": "29.7.0", + "resolved": "https://registry.npmjs.org/jest-resolve/-/jest-resolve-29.7.0.tgz", + "integrity": "sha512-IOVhZSrg+UvVAshDSDtHyFCCBUl/Q3AAJv8iZ6ZjnZ74xzvwuzLXid9IIIPgTnY62SJjfuupMKZsZQRsCvxEgA==", + "dev": true, + "license": "MIT", + "dependencies": { + "chalk": "^4.0.0", + "graceful-fs": "^4.2.9", + "jest-haste-map": "^29.7.0", + "jest-pnp-resolver": "^1.2.2", + "jest-util": "^29.7.0", + "jest-validate": "^29.7.0", + "resolve": "^1.20.0", + "resolve.exports": "^2.0.0", + "slash": "^3.0.0" + }, + "engines": { + "node": "^14.15.0 || ^16.10.0 || >=18.0.0" + } + }, + "node_modules/jest-resolve-dependencies": { + "version": "29.7.0", + "resolved": "https://registry.npmjs.org/jest-resolve-dependencies/-/jest-resolve-dependencies-29.7.0.tgz", + "integrity": "sha512-un0zD/6qxJ+S0et7WxeI3H5XSe9lTBBR7bOHCHXkKR6luG5mwDDlIzVQ0V5cZCuoTgEdcdwzTghYkTWfubi+nA==", + "dev": true, + "license": "MIT", + "dependencies": { + "jest-regex-util": "^29.6.3", + "jest-snapshot": "^29.7.0" + }, + "engines": { + "node": "^14.15.0 || ^16.10.0 || >=18.0.0" + } + }, + "node_modules/jest-runner": { + "version": "29.7.0", + "resolved": "https://registry.npmjs.org/jest-runner/-/jest-runner-29.7.0.tgz", + "integrity": "sha512-fsc4N6cPCAahybGBfTRcq5wFR6fpLznMg47sY5aDpsoejOcVYFb07AHuSnR0liMcPTgBsA3ZJL6kFOjPdoNipQ==", + "dev": true, + "license": "MIT", + "dependencies": { + "@jest/console": "^29.7.0", + "@jest/environment": "^29.7.0", + "@jest/test-result": "^29.7.0", + "@jest/transform": "^29.7.0", + "@jest/types": "^29.6.3", + "@types/node": "*", + "chalk": "^4.0.0", + "emittery": "^0.13.1", + "graceful-fs": "^4.2.9", + "jest-docblock": "^29.7.0", + "jest-environment-node": "^29.7.0", + "jest-haste-map": "^29.7.0", + "jest-leak-detector": "^29.7.0", + "jest-message-util": "^29.7.0", + "jest-resolve": "^29.7.0", + "jest-runtime": "^29.7.0", + "jest-util": "^29.7.0", + "jest-watcher": "^29.7.0", + "jest-worker": "^29.7.0", + "p-limit": "^3.1.0", + "source-map-support": "0.5.13" + }, + "engines": { + "node": "^14.15.0 || ^16.10.0 || >=18.0.0" + } + }, + "node_modules/jest-runner/node_modules/source-map-support": { + "version": "0.5.13", + "resolved": "https://registry.npmjs.org/source-map-support/-/source-map-support-0.5.13.tgz", + "integrity": "sha512-SHSKFHadjVA5oR4PPqhtAVdcBWwRYVd6g6cAXnIbRiIwc2EhPrTuKUBdSLvlEKyIP3GCf89fltvcZiP9MMFA1w==", + "dev": true, + "license": "MIT", + "dependencies": { + "buffer-from": "^1.0.0", + "source-map": "^0.6.0" + } + }, + "node_modules/jest-runtime": { + "version": "29.7.0", + "resolved": "https://registry.npmjs.org/jest-runtime/-/jest-runtime-29.7.0.tgz", + "integrity": "sha512-gUnLjgwdGqW7B4LvOIkbKs9WGbn+QLqRQQ9juC6HndeDiezIwhDP+mhMwHWCEcfQ5RUXa6OPnFF8BJh5xegwwQ==", + "dev": true, + "license": "MIT", + "dependencies": { + "@jest/environment": "^29.7.0", + "@jest/fake-timers": "^29.7.0", + "@jest/globals": "^29.7.0", + "@jest/source-map": "^29.6.3", + "@jest/test-result": "^29.7.0", + "@jest/transform": "^29.7.0", + "@jest/types": "^29.6.3", + "@types/node": "*", + "chalk": "^4.0.0", + "cjs-module-lexer": "^1.0.0", + "collect-v8-coverage": "^1.0.0", + "glob": "^7.1.3", + "graceful-fs": "^4.2.9", + "jest-haste-map": "^29.7.0", + "jest-message-util": "^29.7.0", + "jest-mock": "^29.7.0", + "jest-regex-util": "^29.6.3", + "jest-resolve": "^29.7.0", + "jest-snapshot": "^29.7.0", + "jest-util": "^29.7.0", + "slash": "^3.0.0", + "strip-bom": "^4.0.0" + }, + "engines": { + "node": "^14.15.0 || ^16.10.0 || >=18.0.0" + } + }, + "node_modules/jest-runtime/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, + "license": "MIT", + "dependencies": { + "balanced-match": "^1.0.0", + "concat-map": "0.0.1" + } + }, + "node_modules/jest-runtime/node_modules/glob": { + "version": "7.2.3", + "resolved": "https://registry.npmjs.org/glob/-/glob-7.2.3.tgz", + "integrity": "sha512-nFR0zLpU2YCaRxwoCJvL6UvCH2JFyFVIvwTLsIf21AuHlMskA1hhTdk+LlYJtOlYt9v6dvszD2BGRqBL+iQK9Q==", + "deprecated": "Glob versions prior to v9 are no longer supported", + "dev": true, + "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" + } + }, + "node_modules/jest-runtime/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, + "license": "ISC", + "dependencies": { + "brace-expansion": "^1.1.7" + }, + "engines": { + "node": "*" + } + }, + "node_modules/jest-snapshot": { + "version": "29.7.0", + "resolved": "https://registry.npmjs.org/jest-snapshot/-/jest-snapshot-29.7.0.tgz", + "integrity": "sha512-Rm0BMWtxBcioHr1/OX5YCP8Uov4riHvKPknOGs804Zg9JGZgmIBkbtlxJC/7Z4msKYVbIJtfU+tKb8xlYNfdkw==", + "dev": true, + "license": "MIT", + "dependencies": { + "@babel/core": "^7.11.6", + "@babel/generator": "^7.7.2", + "@babel/plugin-syntax-jsx": "^7.7.2", + "@babel/plugin-syntax-typescript": "^7.7.2", + "@babel/types": "^7.3.3", + "@jest/expect-utils": "^29.7.0", + "@jest/transform": "^29.7.0", + "@jest/types": "^29.6.3", + "babel-preset-current-node-syntax": "^1.0.0", + "chalk": "^4.0.0", + "expect": "^29.7.0", + "graceful-fs": "^4.2.9", + "jest-diff": "^29.7.0", + "jest-get-type": "^29.6.3", + "jest-matcher-utils": "^29.7.0", + "jest-message-util": "^29.7.0", + "jest-util": "^29.7.0", + "natural-compare": "^1.4.0", + "pretty-format": "^29.7.0", + "semver": "^7.5.3" + }, + "engines": { + "node": "^14.15.0 || ^16.10.0 || >=18.0.0" + } + }, + "node_modules/jest-snapshot/node_modules/semver": { + "version": "7.7.2", + "resolved": "https://registry.npmjs.org/semver/-/semver-7.7.2.tgz", + "integrity": "sha512-RF0Fw+rO5AMf9MAyaRXI4AV0Ulj5lMHqVxxdSgiVbixSCXoEmmX/jk0CuJw4+3SqroYO9VoUh+HcuJivvtJemA==", + "dev": true, + "license": "ISC", + "bin": { + "semver": "bin/semver.js" + }, + "engines": { + "node": ">=10" + } + }, + "node_modules/jest-util": { + "version": "29.7.0", + "resolved": "https://registry.npmjs.org/jest-util/-/jest-util-29.7.0.tgz", + "integrity": "sha512-z6EbKajIpqGKU56y5KBUgy1dt1ihhQJgWzUlZHArA/+X2ad7Cb5iF+AK1EWVL/Bo7Rz9uurpqw6SiBCefUbCGA==", + "license": "MIT", + "dependencies": { + "@jest/types": "^29.6.3", + "@types/node": "*", + "chalk": "^4.0.0", + "ci-info": "^3.2.0", + "graceful-fs": "^4.2.9", + "picomatch": "^2.2.3" + }, + "engines": { + "node": "^14.15.0 || ^16.10.0 || >=18.0.0" + } + }, + "node_modules/jest-util/node_modules/picomatch": { + "version": "2.3.1", + "resolved": "https://registry.npmjs.org/picomatch/-/picomatch-2.3.1.tgz", + "integrity": "sha512-JU3teHTNjmE2VCGFzuY8EXzCDVwEqB2a8fsIvwaStHhAWJEeVd1o1QD80CU6+ZdEXXSLbSsuLwJjkCBWqRQUVA==", + "license": "MIT", + "engines": { + "node": ">=8.6" + }, + "funding": { + "url": "https://github.com/sponsors/jonschlinkert" + } + }, + "node_modules/jest-validate": { + "version": "29.7.0", + "resolved": "https://registry.npmjs.org/jest-validate/-/jest-validate-29.7.0.tgz", + "integrity": "sha512-ZB7wHqaRGVw/9hST/OuFUReG7M8vKeq0/J2egIGLdvjHCmYqGARhzXmtgi+gVeZ5uXFF219aOc3Ls2yLg27tkw==", + "license": "MIT", + "dependencies": { + "@jest/types": "^29.6.3", + "camelcase": "^6.2.0", + "chalk": "^4.0.0", + "jest-get-type": "^29.6.3", + "leven": "^3.1.0", + "pretty-format": "^29.7.0" + }, + "engines": { + "node": "^14.15.0 || ^16.10.0 || >=18.0.0" + } + }, + "node_modules/jest-validate/node_modules/camelcase": { + "version": "6.3.0", + "resolved": "https://registry.npmjs.org/camelcase/-/camelcase-6.3.0.tgz", + "integrity": "sha512-Gmy6FhYlCY7uOElZUSbxo2UCDH8owEk996gkbrpsgGtrJLM3J7jGxl9Ic7Qwwj4ivOE5AWZWRMecDdF7hqGjFA==", + "license": "MIT", + "engines": { + "node": ">=10" + }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" + } + }, + "node_modules/jest-watch-select-projects": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/jest-watch-select-projects/-/jest-watch-select-projects-2.0.0.tgz", + "integrity": "sha512-j00nW4dXc2NiCW6znXgFLF9g8PJ0zP25cpQ1xRro/HU2GBfZQFZD0SoXnAlaoKkIY4MlfTMkKGbNXFpvCdjl1w==", + "dev": true, + "license": "MIT", + "dependencies": { + "ansi-escapes": "^4.3.0", + "chalk": "^3.0.0", + "prompts": "^2.2.1" + } + }, + "node_modules/jest-watch-select-projects/node_modules/chalk": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/chalk/-/chalk-3.0.0.tgz", + "integrity": "sha512-4D3B6Wf41KOYRFdszmDqMCGq5VV/uMAB273JILmO+3jAlh8X4qDtdtgCR3fxtbLEMzSx22QdhnDcJvu2u1fVwg==", + "dev": true, + "license": "MIT", + "dependencies": { + "ansi-styles": "^4.1.0", + "supports-color": "^7.1.0" + }, + "engines": { + "node": ">=8" + } + }, + "node_modules/jest-watch-typeahead": { + "version": "2.2.1", + "resolved": "https://registry.npmjs.org/jest-watch-typeahead/-/jest-watch-typeahead-2.2.1.tgz", + "integrity": "sha512-jYpYmUnTzysmVnwq49TAxlmtOAwp8QIqvZyoofQFn8fiWhEDZj33ZXzg3JA4nGnzWFm1hbWf3ADpteUokvXgFA==", + "dev": true, + "license": "MIT", + "dependencies": { + "ansi-escapes": "^6.0.0", + "chalk": "^4.0.0", + "jest-regex-util": "^29.0.0", + "jest-watcher": "^29.0.0", + "slash": "^5.0.0", + "string-length": "^5.0.1", + "strip-ansi": "^7.0.1" + }, + "engines": { + "node": "^14.17.0 || ^16.10.0 || >=18.0.0" + }, + "peerDependencies": { + "jest": "^27.0.0 || ^28.0.0 || ^29.0.0" + } + }, + "node_modules/jest-watch-typeahead/node_modules/ansi-escapes": { + "version": "6.2.1", + "resolved": "https://registry.npmjs.org/ansi-escapes/-/ansi-escapes-6.2.1.tgz", + "integrity": "sha512-4nJ3yixlEthEJ9Rk4vPcdBRkZvQZlYyu8j4/Mqz5sgIkddmEnH2Yj2ZrnP9S3tQOvSNRUIgVNF/1yPpRAGNRig==", + "dev": true, + "license": "MIT", + "engines": { + "node": ">=14.16" + }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" + } + }, + "node_modules/jest-watch-typeahead/node_modules/char-regex": { + "version": "2.0.2", + "resolved": "https://registry.npmjs.org/char-regex/-/char-regex-2.0.2.tgz", + "integrity": "sha512-cbGOjAptfM2LVmWhwRFHEKTPkLwNddVmuqYZQt895yXwAsWsXObCG+YN4DGQ/JBtT4GP1a1lPPdio2z413LmTg==", + "dev": true, + "license": "MIT", + "engines": { + "node": ">=12.20" + } + }, + "node_modules/jest-watch-typeahead/node_modules/slash": { + "version": "5.1.0", + "resolved": "https://registry.npmjs.org/slash/-/slash-5.1.0.tgz", + "integrity": "sha512-ZA6oR3T/pEyuqwMgAKT0/hAv8oAXckzbkmR0UkUosQ+Mc4RxGoJkRmwHgHufaenlyAgE1Mxgpdcrf75y6XcnDg==", + "dev": true, + "license": "MIT", + "engines": { + "node": ">=14.16" + }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" + } + }, + "node_modules/jest-watch-typeahead/node_modules/string-length": { + "version": "5.0.1", + "resolved": "https://registry.npmjs.org/string-length/-/string-length-5.0.1.tgz", + "integrity": "sha512-9Ep08KAMUn0OadnVaBuRdE2l615CQ508kr0XMadjClfYpdCyvrbFp6Taebo8yyxokQ4viUd/xPPUA4FGgUa0ow==", + "dev": true, + "license": "MIT", + "dependencies": { + "char-regex": "^2.0.0", + "strip-ansi": "^7.0.1" + }, + "engines": { + "node": ">=12.20" + }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" + } + }, + "node_modules/jest-watcher": { + "version": "29.7.0", + "resolved": "https://registry.npmjs.org/jest-watcher/-/jest-watcher-29.7.0.tgz", + "integrity": "sha512-49Fg7WXkU3Vl2h6LbLtMQ/HyB6rXSIX7SqvBLQmssRBGN9I0PNvPmAmCWSOY6SOvrjhI/F7/bGAv9RtnsPA03g==", + "dev": true, + "license": "MIT", + "dependencies": { + "@jest/test-result": "^29.7.0", + "@jest/types": "^29.6.3", + "@types/node": "*", + "ansi-escapes": "^4.2.1", + "chalk": "^4.0.0", + "emittery": "^0.13.1", + "jest-util": "^29.7.0", + "string-length": "^4.0.1" + }, + "engines": { + "node": "^14.15.0 || ^16.10.0 || >=18.0.0" + } + }, + "node_modules/jest-worker": { + "version": "29.7.0", + "resolved": "https://registry.npmjs.org/jest-worker/-/jest-worker-29.7.0.tgz", + "integrity": "sha512-eIz2msL/EzL9UFTFFx7jBTkeZfku0yUAyZZZmJ93H2TYEiroIx2PQjEXcwYtYl8zXCxb+PAmA2hLIt/6ZEkPHw==", + "license": "MIT", + "dependencies": { + "@types/node": "*", + "jest-util": "^29.7.0", + "merge-stream": "^2.0.0", + "supports-color": "^8.0.0" + }, + "engines": { + "node": "^14.15.0 || ^16.10.0 || >=18.0.0" + } + }, + "node_modules/jest-worker/node_modules/supports-color": { + "version": "8.1.1", + "resolved": "https://registry.npmjs.org/supports-color/-/supports-color-8.1.1.tgz", + "integrity": "sha512-MpUEN2OodtUzxvKQl72cUF7RQ5EiHsGvSsVG0ia9c5RbWGL2CI4C7EpPS8UTBIplnlzZiNuV56w+FuNxy3ty2Q==", + "license": "MIT", + "dependencies": { + "has-flag": "^4.0.0" + }, + "engines": { + "node": ">=10" + }, + "funding": { + "url": "https://github.com/chalk/supports-color?sponsor=1" + } + }, + "node_modules/jimp-compact": { + "version": "0.16.1", + "resolved": "https://registry.npmjs.org/jimp-compact/-/jimp-compact-0.16.1.tgz", + "integrity": "sha512-dZ6Ra7u1G8c4Letq/B5EzAxj4tLFHL+cGtdpR+PVm4yzPDj+lCk+AbivWt1eOM+ikzkowtyV7qSqX6qr3t71Ww==", + "license": "MIT" + }, + "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" + }, + "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==", + "license": "MIT", + "dependencies": { + "argparse": "^2.0.1" + }, + "bin": { + "js-yaml": "bin/js-yaml.js" + } + }, + "node_modules/jsc-safe-url": { + "version": "0.2.4", + "resolved": "https://registry.npmjs.org/jsc-safe-url/-/jsc-safe-url-0.2.4.tgz", + "integrity": "sha512-0wM3YBWtYePOjfyXQH5MWQ8H7sdk5EXSwZvmSLKk2RboVQ2Bu239jycHDz5J/8Blf3K0Qnoy2b6xD+z10MFB+Q==", + "license": "0BSD" + }, + "node_modules/jsdom": { + "version": "20.0.3", + "resolved": "https://registry.npmjs.org/jsdom/-/jsdom-20.0.3.tgz", + "integrity": "sha512-SYhBvTh89tTfCD/CRdSOm13mOBa42iTaTyfyEWBdKcGdPxPtLFBXuHR8XHb33YNYaP+lLbmSvBTsnoesCNJEsQ==", + "dev": true, + "license": "MIT", + "dependencies": { + "abab": "^2.0.6", + "acorn": "^8.8.1", + "acorn-globals": "^7.0.0", + "cssom": "^0.5.0", + "cssstyle": "^2.3.0", + "data-urls": "^3.0.2", + "decimal.js": "^10.4.2", + "domexception": "^4.0.0", + "escodegen": "^2.0.0", + "form-data": "^4.0.0", + "html-encoding-sniffer": "^3.0.0", + "http-proxy-agent": "^5.0.0", + "https-proxy-agent": "^5.0.1", + "is-potential-custom-element-name": "^1.0.1", + "nwsapi": "^2.2.2", + "parse5": "^7.1.1", + "saxes": "^6.0.0", + "symbol-tree": "^3.2.4", + "tough-cookie": "^4.1.2", + "w3c-xmlserializer": "^4.0.0", + "webidl-conversions": "^7.0.0", + "whatwg-encoding": "^2.0.0", + "whatwg-mimetype": "^3.0.0", + "whatwg-url": "^11.0.0", + "ws": "^8.11.0", + "xml-name-validator": "^4.0.0" + }, + "engines": { + "node": ">=14" + }, + "peerDependencies": { + "canvas": "^2.5.0" + }, + "peerDependenciesMeta": { + "canvas": { + "optional": true + } + } + }, + "node_modules/jsesc": { + "version": "3.1.0", + "resolved": "https://registry.npmjs.org/jsesc/-/jsesc-3.1.0.tgz", + "integrity": "sha512-/sM3dO2FOzXjKQhJuo0Q173wf2KOo8t4I8vHy6lF9poUp7bKT0/NHE8fPX23PwfhnykfqnC2xRxOnVw5XuGIaA==", + "license": "MIT", + "bin": { + "jsesc": "bin/jsesc" + }, + "engines": { + "node": ">=6" + } + }, + "node_modules/json-parse-better-errors": { + "version": "1.0.2", + "resolved": "https://registry.npmjs.org/json-parse-better-errors/-/json-parse-better-errors-1.0.2.tgz", + "integrity": "sha512-mrqyZKfX5EhL7hvqcV6WG1yYjnjeuYDzDhhcAAUrq8Po85NBQBJP+ZDUT75qZQ98IkUoBqdkExkukOU7Ts2wrw==", + "license": "MIT" + }, + "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==", + "dev": true, + "license": "MIT" + }, + "node_modules/json-schema-traverse": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/json-schema-traverse/-/json-schema-traverse-1.0.0.tgz", + "integrity": "sha512-NM8/P9n3XjXhIZn1lLhkFaACTOURQXjWhV4BA/RnOv8xvgqtqpAX9IO4mRQxSx1Rlo4tqzeqb0sOlruaOy3dug==", + "license": "MIT" + }, + "node_modules/json5": { + "version": "2.2.3", + "resolved": "https://registry.npmjs.org/json5/-/json5-2.2.3.tgz", + "integrity": "sha512-XmOWe7eyHYH14cLdVPoyg+GOH3rYX++KpzrylJwSW98t3Nk+U8XOl8FWKOgwtzdb8lXGf6zYwDUzeHMWfxasyg==", + "license": "MIT", + "bin": { + "json5": "lib/cli.js" + }, + "engines": { + "node": ">=6" + } + }, + "node_modules/kleur": { + "version": "3.0.3", + "resolved": "https://registry.npmjs.org/kleur/-/kleur-3.0.3.tgz", + "integrity": "sha512-eTIzlVOSUR+JxdDFepEYcBMtZ9Qqdef+rnzWdRZuMbOywu5tO2w2N7rqjoANZ5k9vywhL6Br1VRjUIgTQx4E8w==", + "license": "MIT", + "engines": { + "node": ">=6" + } + }, + "node_modules/lan-network": { + "version": "0.1.7", + "resolved": "https://registry.npmjs.org/lan-network/-/lan-network-0.1.7.tgz", + "integrity": "sha512-mnIlAEMu4OyEvUNdzco9xpuB9YVcPkQec+QsgycBCtPZvEqWPCDPfbAE4OJMdBBWpZWtpCn1xw9jJYlwjWI5zQ==", + "license": "MIT", + "bin": { + "lan-network": "dist/lan-network-cli.js" + } + }, + "node_modules/leven": { + "version": "3.1.0", + "resolved": "https://registry.npmjs.org/leven/-/leven-3.1.0.tgz", + "integrity": "sha512-qsda+H8jTaUaN/x5vzW2rzc+8Rw4TAQ/4KjB46IwK5VH+IlVeeeje/EoZRpiXvIqjFgK84QffqPztGI3VBLG1A==", + "license": "MIT", + "engines": { + "node": ">=6" + } + }, + "node_modules/lighthouse-logger": { + "version": "1.4.2", + "resolved": "https://registry.npmjs.org/lighthouse-logger/-/lighthouse-logger-1.4.2.tgz", + "integrity": "sha512-gPWxznF6TKmUHrOQjlVo2UbaL2EJ71mb2CCeRs/2qBpi4L/g4LUVc9+3lKQ6DTUZwJswfM7ainGrLO1+fOqa2g==", + "license": "Apache-2.0", + "dependencies": { + "debug": "^2.6.9", + "marky": "^1.2.2" + } + }, + "node_modules/lighthouse-logger/node_modules/debug": { + "version": "2.6.9", + "resolved": "https://registry.npmjs.org/debug/-/debug-2.6.9.tgz", + "integrity": "sha512-bC7ElrdJaJnPbAP+1EotYvqZsb3ecl5wi6Bfi6BJTUcNowp6cvspg0jXznRTKDjm/E7AdgFBVeAPVMNcKGsHMA==", + "license": "MIT", + "dependencies": { + "ms": "2.0.0" + } + }, + "node_modules/lighthouse-logger/node_modules/ms": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/ms/-/ms-2.0.0.tgz", + "integrity": "sha512-Tpp60P6IUJDTuOq/5Z8cdskzJujfwqfOTkrwIwj7IRISpnkJnT6SyJ4PCPnGMoFjC9ddhal5KVIYtAt97ix05A==", + "license": "MIT" + }, + "node_modules/lightningcss": { + "version": "1.27.0", + "resolved": "https://registry.npmjs.org/lightningcss/-/lightningcss-1.27.0.tgz", + "integrity": "sha512-8f7aNmS1+etYSLHht0fQApPc2kNO8qGRutifN5rVIc6Xo6ABsEbqOr758UwI7ALVbTt4x1fllKt0PYgzD9S3yQ==", + "license": "MPL-2.0", + "dependencies": { + "detect-libc": "^1.0.3" + }, + "engines": { + "node": ">= 12.0.0" + }, + "funding": { + "type": "opencollective", + "url": "https://opencollective.com/parcel" + }, + "optionalDependencies": { + "lightningcss-darwin-arm64": "1.27.0", + "lightningcss-darwin-x64": "1.27.0", + "lightningcss-freebsd-x64": "1.27.0", + "lightningcss-linux-arm-gnueabihf": "1.27.0", + "lightningcss-linux-arm64-gnu": "1.27.0", + "lightningcss-linux-arm64-musl": "1.27.0", + "lightningcss-linux-x64-gnu": "1.27.0", + "lightningcss-linux-x64-musl": "1.27.0", + "lightningcss-win32-arm64-msvc": "1.27.0", + "lightningcss-win32-x64-msvc": "1.27.0" + } + }, + "node_modules/lightningcss-darwin-arm64": { + "version": "1.27.0", + "resolved": "https://registry.npmjs.org/lightningcss-darwin-arm64/-/lightningcss-darwin-arm64-1.27.0.tgz", + "integrity": "sha512-Gl/lqIXY+d+ySmMbgDf0pgaWSqrWYxVHoc88q+Vhf2YNzZ8DwoRzGt5NZDVqqIW5ScpSnmmjcgXP87Dn2ylSSQ==", + "cpu": [ + "arm64" + ], + "license": "MPL-2.0", + "optional": true, + "os": [ + "darwin" + ], + "engines": { + "node": ">= 12.0.0" + }, + "funding": { + "type": "opencollective", + "url": "https://opencollective.com/parcel" + } + }, + "node_modules/lightningcss-darwin-x64": { + "version": "1.27.0", + "resolved": "https://registry.npmjs.org/lightningcss-darwin-x64/-/lightningcss-darwin-x64-1.27.0.tgz", + "integrity": "sha512-0+mZa54IlcNAoQS9E0+niovhyjjQWEMrwW0p2sSdLRhLDc8LMQ/b67z7+B5q4VmjYCMSfnFi3djAAQFIDuj/Tg==", + "cpu": [ + "x64" + ], + "license": "MPL-2.0", + "optional": true, + "os": [ + "darwin" + ], + "engines": { + "node": ">= 12.0.0" + }, + "funding": { + "type": "opencollective", + "url": "https://opencollective.com/parcel" + } + }, + "node_modules/lightningcss-freebsd-x64": { + "version": "1.27.0", + "resolved": "https://registry.npmjs.org/lightningcss-freebsd-x64/-/lightningcss-freebsd-x64-1.27.0.tgz", + "integrity": "sha512-n1sEf85fePoU2aDN2PzYjoI8gbBqnmLGEhKq7q0DKLj0UTVmOTwDC7PtLcy/zFxzASTSBlVQYJUhwIStQMIpRA==", + "cpu": [ + "x64" + ], + "license": "MPL-2.0", + "optional": true, + "os": [ + "freebsd" + ], + "engines": { + "node": ">= 12.0.0" + }, + "funding": { + "type": "opencollective", + "url": "https://opencollective.com/parcel" + } + }, + "node_modules/lightningcss-linux-arm-gnueabihf": { + "version": "1.27.0", + "resolved": "https://registry.npmjs.org/lightningcss-linux-arm-gnueabihf/-/lightningcss-linux-arm-gnueabihf-1.27.0.tgz", + "integrity": "sha512-MUMRmtdRkOkd5z3h986HOuNBD1c2lq2BSQA1Jg88d9I7bmPGx08bwGcnB75dvr17CwxjxD6XPi3Qh8ArmKFqCA==", + "cpu": [ + "arm" + ], + "license": "MPL-2.0", + "optional": true, + "os": [ + "linux" + ], + "engines": { + "node": ">= 12.0.0" + }, + "funding": { + "type": "opencollective", + "url": "https://opencollective.com/parcel" + } + }, + "node_modules/lightningcss-linux-arm64-gnu": { + "version": "1.27.0", + "resolved": "https://registry.npmjs.org/lightningcss-linux-arm64-gnu/-/lightningcss-linux-arm64-gnu-1.27.0.tgz", + "integrity": "sha512-cPsxo1QEWq2sfKkSq2Bq5feQDHdUEwgtA9KaB27J5AX22+l4l0ptgjMZZtYtUnteBofjee+0oW1wQ1guv04a7A==", + "cpu": [ + "arm64" + ], + "license": "MPL-2.0", + "optional": true, + "os": [ + "linux" + ], + "engines": { + "node": ">= 12.0.0" + }, + "funding": { + "type": "opencollective", + "url": "https://opencollective.com/parcel" + } + }, + "node_modules/lightningcss-linux-arm64-musl": { + "version": "1.27.0", + "resolved": "https://registry.npmjs.org/lightningcss-linux-arm64-musl/-/lightningcss-linux-arm64-musl-1.27.0.tgz", + "integrity": "sha512-rCGBm2ax7kQ9pBSeITfCW9XSVF69VX+fm5DIpvDZQl4NnQoMQyRwhZQm9pd59m8leZ1IesRqWk2v/DntMo26lg==", + "cpu": [ + "arm64" + ], + "license": "MPL-2.0", + "optional": true, + "os": [ + "linux" + ], + "engines": { + "node": ">= 12.0.0" + }, + "funding": { + "type": "opencollective", + "url": "https://opencollective.com/parcel" + } + }, + "node_modules/lightningcss-linux-x64-gnu": { + "version": "1.27.0", + "resolved": "https://registry.npmjs.org/lightningcss-linux-x64-gnu/-/lightningcss-linux-x64-gnu-1.27.0.tgz", + "integrity": "sha512-Dk/jovSI7qqhJDiUibvaikNKI2x6kWPN79AQiD/E/KeQWMjdGe9kw51RAgoWFDi0coP4jinaH14Nrt/J8z3U4A==", + "cpu": [ + "x64" + ], + "license": "MPL-2.0", + "optional": true, + "os": [ + "linux" + ], + "engines": { + "node": ">= 12.0.0" + }, + "funding": { + "type": "opencollective", + "url": "https://opencollective.com/parcel" + } + }, + "node_modules/lightningcss-linux-x64-musl": { + "version": "1.27.0", + "resolved": "https://registry.npmjs.org/lightningcss-linux-x64-musl/-/lightningcss-linux-x64-musl-1.27.0.tgz", + "integrity": "sha512-QKjTxXm8A9s6v9Tg3Fk0gscCQA1t/HMoF7Woy1u68wCk5kS4fR+q3vXa1p3++REW784cRAtkYKrPy6JKibrEZA==", + "cpu": [ + "x64" + ], + "license": "MPL-2.0", + "optional": true, + "os": [ + "linux" + ], + "engines": { + "node": ">= 12.0.0" + }, + "funding": { + "type": "opencollective", + "url": "https://opencollective.com/parcel" + } + }, + "node_modules/lightningcss-win32-arm64-msvc": { + "version": "1.27.0", + "resolved": "https://registry.npmjs.org/lightningcss-win32-arm64-msvc/-/lightningcss-win32-arm64-msvc-1.27.0.tgz", + "integrity": "sha512-/wXegPS1hnhkeG4OXQKEMQeJd48RDC3qdh+OA8pCuOPCyvnm/yEayrJdJVqzBsqpy1aJklRCVxscpFur80o6iQ==", + "cpu": [ + "arm64" + ], + "license": "MPL-2.0", + "optional": true, + "os": [ + "win32" + ], + "engines": { + "node": ">= 12.0.0" + }, + "funding": { + "type": "opencollective", + "url": "https://opencollective.com/parcel" + } + }, + "node_modules/lightningcss-win32-x64-msvc": { + "version": "1.27.0", + "resolved": "https://registry.npmjs.org/lightningcss-win32-x64-msvc/-/lightningcss-win32-x64-msvc-1.27.0.tgz", + "integrity": "sha512-/OJLj94Zm/waZShL8nB5jsNj3CfNATLCTyFxZyouilfTmSoLDX7VlVAmhPHoZWVFp4vdmoiEbPEYC8HID3m6yw==", + "cpu": [ + "x64" + ], + "license": "MPL-2.0", + "optional": true, + "os": [ + "win32" + ], + "engines": { + "node": ">= 12.0.0" + }, + "funding": { + "type": "opencollective", + "url": "https://opencollective.com/parcel" + } + }, + "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" + }, + "node_modules/loader-runner": { + "version": "4.3.0", + "resolved": "https://registry.npmjs.org/loader-runner/-/loader-runner-4.3.0.tgz", + "integrity": "sha512-3R/1M+yS3j5ou80Me59j7F9IMs4PXs3VqRrm0TU3AbKPxlmpoY1TNscJV/oGJXo8qCatFGTfDbY6W6ipGOYXfg==", + "dev": true, + "license": "MIT", + "peer": true, + "engines": { + "node": ">=6.11.5" + } + }, + "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==", + "license": "MIT", + "dependencies": { + "p-locate": "^5.0.0" + }, + "engines": { + "node": ">=10" + }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" + } + }, + "node_modules/lodash": { + "version": "4.17.21", + "resolved": "https://registry.npmjs.org/lodash/-/lodash-4.17.21.tgz", + "integrity": "sha512-v2kDEe57lecTulaDIuNTPy3Ry4gLGJ6Z1O3vE1krgXZNrsQ+LFTGHVxVjcXPs17LhbZVGedAJv8XZ1tvj5FvSg==", + "license": "MIT" + }, + "node_modules/lodash.debounce": { + "version": "4.0.8", + "resolved": "https://registry.npmjs.org/lodash.debounce/-/lodash.debounce-4.0.8.tgz", + "integrity": "sha512-FT1yDzDYEoYWhnSGnpE/4Kj1fLZkDFyqRb7fNt6FdYOSxlUWAtp42Eh6Wb0rGIv/m9Bgo7x4GhQbm5Ys4SG5ow==", + "license": "MIT" + }, + "node_modules/lodash.throttle": { + "version": "4.1.1", + "resolved": "https://registry.npmjs.org/lodash.throttle/-/lodash.throttle-4.1.1.tgz", + "integrity": "sha512-wIkUCfVKpVsWo3JSZlc+8MB5it+2AN5W8J7YVMST30UrvcQNZ1Okbj+rbVniijTWE6FGYy4XJq/rHkas8qJMLQ==", + "license": "MIT" + }, + "node_modules/log-symbols": { + "version": "2.2.0", + "resolved": "https://registry.npmjs.org/log-symbols/-/log-symbols-2.2.0.tgz", + "integrity": "sha512-VeIAFslyIerEJLXHziedo2basKbMKtTw3vfn5IzG0XTjhAVEJyNHnL2p7vc+wBDSdQuUpNw3M2u6xb9QsAY5Eg==", + "license": "MIT", + "dependencies": { + "chalk": "^2.0.1" + }, + "engines": { + "node": ">=4" + } + }, + "node_modules/log-symbols/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==", + "license": "MIT", + "dependencies": { + "color-convert": "^1.9.0" + }, + "engines": { + "node": ">=4" + } + }, + "node_modules/log-symbols/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==", + "license": "MIT", + "dependencies": { + "ansi-styles": "^3.2.1", + "escape-string-regexp": "^1.0.5", + "supports-color": "^5.3.0" + }, + "engines": { + "node": ">=4" + } + }, + "node_modules/log-symbols/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==", + "license": "MIT", + "dependencies": { + "color-name": "1.1.3" + } + }, + "node_modules/log-symbols/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" + }, + "node_modules/log-symbols/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" + } + }, + "node_modules/log-symbols/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" + } + }, + "node_modules/log-symbols/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==", + "license": "MIT", + "dependencies": { + "has-flag": "^3.0.0" + }, + "engines": { + "node": ">=4" + } + }, + "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==", + "license": "MIT", + "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==", + "license": "ISC", + "dependencies": { + "yallist": "^3.0.2" + } + }, + "node_modules/make-dir": { + "version": "4.0.0", + "resolved": "https://registry.npmjs.org/make-dir/-/make-dir-4.0.0.tgz", + "integrity": "sha512-hXdUTZYIVOt1Ex//jAQi+wTZZpUpwBj/0QsOzqegb3rGMMeJiSEu5xLHnYfBrRV4RH2+OCSOO95Is/7x1WJ4bw==", + "dev": true, + "license": "MIT", + "dependencies": { + "semver": "^7.5.3" + }, + "engines": { + "node": ">=10" + }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" + } + }, + "node_modules/make-dir/node_modules/semver": { + "version": "7.7.2", + "resolved": "https://registry.npmjs.org/semver/-/semver-7.7.2.tgz", + "integrity": "sha512-RF0Fw+rO5AMf9MAyaRXI4AV0Ulj5lMHqVxxdSgiVbixSCXoEmmX/jk0CuJw4+3SqroYO9VoUh+HcuJivvtJemA==", + "dev": true, + "license": "ISC", + "bin": { + "semver": "bin/semver.js" + }, + "engines": { + "node": ">=10" + } + }, + "node_modules/makeerror": { + "version": "1.0.12", + "resolved": "https://registry.npmjs.org/makeerror/-/makeerror-1.0.12.tgz", + "integrity": "sha512-JmqCvUhmt43madlpFzG4BQzG2Z3m6tvQDNKdClZnO3VbIudJYmxsT0FNJMeiB2+JTSlTQTSbU8QdesVmwJcmLg==", + "license": "BSD-3-Clause", + "dependencies": { + "tmpl": "1.0.5" + } + }, + "node_modules/marky": { + "version": "1.3.0", + "resolved": "https://registry.npmjs.org/marky/-/marky-1.3.0.tgz", + "integrity": "sha512-ocnPZQLNpvbedwTy9kNrQEsknEfgvcLMvOtz3sFeWApDq1MXH1TqkCIx58xlpESsfwQOnuBO9beyQuNGzVvuhQ==", + "license": "Apache-2.0" + }, + "node_modules/math-intrinsics": { + "version": "1.1.0", + "resolved": "https://registry.npmjs.org/math-intrinsics/-/math-intrinsics-1.1.0.tgz", + "integrity": "sha512-/IXtbwEk5HTPyEwyKX6hGkYXxM9nbj64B+ilVJnC/R6B0pH5G4V3b0pVbL7DBj4tkhBAppbQUlf6F6Xl9LHu1g==", + "dev": true, + "license": "MIT", + "engines": { + "node": ">= 0.4" + } + }, + "node_modules/mdn-data": { + "version": "2.0.14", + "resolved": "https://registry.npmjs.org/mdn-data/-/mdn-data-2.0.14.tgz", + "integrity": "sha512-dn6wd0uw5GsdswPFfsgMp5NSB0/aDe6fK94YJV/AJDYXL6HVLWBsxeq7js7Ad+mU2K9LAlwpk6kN2D5mwCPVow==", + "license": "CC0-1.0" + }, + "node_modules/memoize-one": { + "version": "5.2.1", + "resolved": "https://registry.npmjs.org/memoize-one/-/memoize-one-5.2.1.tgz", + "integrity": "sha512-zYiwtZUcYyXKo/np96AGZAckk+FWWsUdJ3cHGGmld7+AhvcWmQyGCYUh1hc4Q/pkOhb65dQR/pqCyK0cOaHz4Q==", + "license": "MIT" + }, + "node_modules/merge-stream": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/merge-stream/-/merge-stream-2.0.0.tgz", + "integrity": "sha512-abv/qOcuPfk3URPfDzmZU1LKmuw8kT+0nIHvKrKgFrwifol/doWcdA4ZqsWQ8ENrFKkd67Mfpo/LovbIUsbt3w==", + "license": "MIT" + }, + "node_modules/metro": { + "version": "0.82.4", + "resolved": "https://registry.npmjs.org/metro/-/metro-0.82.4.tgz", + "integrity": "sha512-/gFmw3ux9CPG5WUmygY35hpyno28zi/7OUn6+OFfbweA8l0B+PPqXXLr0/T6cf5nclCcH0d22o+02fICaShVxw==", + "license": "MIT", + "dependencies": { + "@babel/code-frame": "^7.24.7", + "@babel/core": "^7.25.2", + "@babel/generator": "^7.25.0", + "@babel/parser": "^7.25.3", + "@babel/template": "^7.25.0", + "@babel/traverse": "^7.25.3", + "@babel/types": "^7.25.2", + "accepts": "^1.3.7", + "chalk": "^4.0.0", + "ci-info": "^2.0.0", + "connect": "^3.6.5", + "debug": "^4.4.0", + "error-stack-parser": "^2.0.6", + "flow-enums-runtime": "^0.0.6", + "graceful-fs": "^4.2.4", + "hermes-parser": "0.28.1", + "image-size": "^1.0.2", + "invariant": "^2.2.4", + "jest-worker": "^29.7.0", + "jsc-safe-url": "^0.2.2", + "lodash.throttle": "^4.1.1", + "metro-babel-transformer": "0.82.4", + "metro-cache": "0.82.4", + "metro-cache-key": "0.82.4", + "metro-config": "0.82.4", + "metro-core": "0.82.4", + "metro-file-map": "0.82.4", + "metro-resolver": "0.82.4", + "metro-runtime": "0.82.4", + "metro-source-map": "0.82.4", + "metro-symbolicate": "0.82.4", + "metro-transform-plugins": "0.82.4", + "metro-transform-worker": "0.82.4", + "mime-types": "^2.1.27", + "nullthrows": "^1.1.1", + "serialize-error": "^2.1.0", + "source-map": "^0.5.6", + "throat": "^5.0.0", + "ws": "^7.5.10", + "yargs": "^17.6.2" + }, + "bin": { + "metro": "src/cli.js" + }, + "engines": { + "node": ">=18.18" + } + }, + "node_modules/metro-babel-transformer": { + "version": "0.82.4", + "resolved": "https://registry.npmjs.org/metro-babel-transformer/-/metro-babel-transformer-0.82.4.tgz", + "integrity": "sha512-4juJahGRb1gmNbQq48lNinB6WFNfb6m0BQqi/RQibEltNiqTCxew/dBspI2EWA4xVCd3mQWGfw0TML4KurQZnQ==", + "license": "MIT", + "dependencies": { + "@babel/core": "^7.25.2", + "flow-enums-runtime": "^0.0.6", + "hermes-parser": "0.28.1", + "nullthrows": "^1.1.1" + }, + "engines": { + "node": ">=18.18" + } + }, + "node_modules/metro-babel-transformer/node_modules/hermes-estree": { + "version": "0.28.1", + "resolved": "https://registry.npmjs.org/hermes-estree/-/hermes-estree-0.28.1.tgz", + "integrity": "sha512-w3nxl/RGM7LBae0v8LH2o36+8VqwOZGv9rX1wyoWT6YaKZLqpJZ0YQ5P0LVr3tuRpf7vCx0iIG4i/VmBJejxTQ==", + "license": "MIT" + }, + "node_modules/metro-babel-transformer/node_modules/hermes-parser": { + "version": "0.28.1", + "resolved": "https://registry.npmjs.org/hermes-parser/-/hermes-parser-0.28.1.tgz", + "integrity": "sha512-nf8o+hE8g7UJWParnccljHumE9Vlq8F7MqIdeahl+4x0tvCUJYRrT0L7h0MMg/X9YJmkNwsfbaNNrzPtFXOscg==", + "license": "MIT", + "dependencies": { + "hermes-estree": "0.28.1" + } + }, + "node_modules/metro-cache": { + "version": "0.82.4", + "resolved": "https://registry.npmjs.org/metro-cache/-/metro-cache-0.82.4.tgz", + "integrity": "sha512-vX0ylSMGtORKiZ4G8uP6fgfPdDiCWvLZUGZ5zIblSGylOX6JYhvExl0Zg4UA9pix/SSQu5Pnp9vdODMFsNIxhw==", + "license": "MIT", + "dependencies": { + "exponential-backoff": "^3.1.1", + "flow-enums-runtime": "^0.0.6", + "https-proxy-agent": "^7.0.5", + "metro-core": "0.82.4" + }, + "engines": { + "node": ">=18.18" + } + }, + "node_modules/metro-cache-key": { + "version": "0.82.4", + "resolved": "https://registry.npmjs.org/metro-cache-key/-/metro-cache-key-0.82.4.tgz", + "integrity": "sha512-2JCTqcpF+f2OghOpe/+x+JywfzDkrHdAqinPFWmK2ezNAU/qX0jBFaTETogPibFivxZJil37w9Yp6syX8rFUng==", + "license": "MIT", + "dependencies": { + "flow-enums-runtime": "^0.0.6" + }, + "engines": { + "node": ">=18.18" + } + }, + "node_modules/metro-cache/node_modules/agent-base": { + "version": "7.1.3", + "resolved": "https://registry.npmjs.org/agent-base/-/agent-base-7.1.3.tgz", + "integrity": "sha512-jRR5wdylq8CkOe6hei19GGZnxM6rBGwFl3Bg0YItGDimvjGtAvdZk4Pu6Cl4u4Igsws4a1fd1Vq3ezrhn4KmFw==", + "license": "MIT", + "engines": { + "node": ">= 14" + } + }, + "node_modules/metro-cache/node_modules/https-proxy-agent": { + "version": "7.0.6", + "resolved": "https://registry.npmjs.org/https-proxy-agent/-/https-proxy-agent-7.0.6.tgz", + "integrity": "sha512-vK9P5/iUfdl95AI+JVyUuIcVtd4ofvtrOr3HNtM2yxC9bnMbEdp3x01OhQNnjb8IJYi38VlTE3mBXwcfvywuSw==", + "license": "MIT", + "dependencies": { + "agent-base": "^7.1.2", + "debug": "4" + }, + "engines": { + "node": ">= 14" + } + }, + "node_modules/metro-config": { + "version": "0.82.4", + "resolved": "https://registry.npmjs.org/metro-config/-/metro-config-0.82.4.tgz", + "integrity": "sha512-Ki3Wumr3hKHGDS7RrHsygmmRNc/PCJrvkLn0+BWWxmbOmOcMMJDSmSI+WRlT8jd5VPZFxIi4wg+sAt5yBXAK0g==", + "license": "MIT", + "dependencies": { + "connect": "^3.6.5", + "cosmiconfig": "^5.0.5", + "flow-enums-runtime": "^0.0.6", + "jest-validate": "^29.7.0", + "metro": "0.82.4", + "metro-cache": "0.82.4", + "metro-core": "0.82.4", + "metro-runtime": "0.82.4" + }, + "engines": { + "node": ">=18.18" + } + }, + "node_modules/metro-core": { + "version": "0.82.4", + "resolved": "https://registry.npmjs.org/metro-core/-/metro-core-0.82.4.tgz", + "integrity": "sha512-Xo4ozbxPg2vfgJGCgXZ8sVhC2M0lhTqD+tsKO2q9aelq/dCjnnSb26xZKcQO80CQOQUL7e3QWB7pLFGPjZm31A==", + "license": "MIT", + "dependencies": { + "flow-enums-runtime": "^0.0.6", + "lodash.throttle": "^4.1.1", + "metro-resolver": "0.82.4" + }, + "engines": { + "node": ">=18.18" + } + }, + "node_modules/metro-file-map": { + "version": "0.82.4", + "resolved": "https://registry.npmjs.org/metro-file-map/-/metro-file-map-0.82.4.tgz", + "integrity": "sha512-eO7HD1O3aeNsbEe6NBZvx1lLJUrxgyATjnDmb7bm4eyF6yWOQot9XVtxTDLNifECuvsZ4jzRiTInrbmIHkTdGA==", + "license": "MIT", + "dependencies": { + "debug": "^4.4.0", + "fb-watchman": "^2.0.0", + "flow-enums-runtime": "^0.0.6", + "graceful-fs": "^4.2.4", + "invariant": "^2.2.4", + "jest-worker": "^29.7.0", + "micromatch": "^4.0.4", + "nullthrows": "^1.1.1", + "walker": "^1.0.7" + }, + "engines": { + "node": ">=18.18" + } + }, + "node_modules/metro-minify-terser": { + "version": "0.82.4", + "resolved": "https://registry.npmjs.org/metro-minify-terser/-/metro-minify-terser-0.82.4.tgz", + "integrity": "sha512-W79Mi6BUwWVaM8Mc5XepcqkG+TSsCyyo//dmTsgYfJcsmReQorRFodil3bbJInETvjzdnS1mCsUo9pllNjT1Hg==", + "license": "MIT", + "dependencies": { + "flow-enums-runtime": "^0.0.6", + "terser": "^5.15.0" + }, + "engines": { + "node": ">=18.18" + } + }, + "node_modules/metro-resolver": { + "version": "0.82.4", + "resolved": "https://registry.npmjs.org/metro-resolver/-/metro-resolver-0.82.4.tgz", + "integrity": "sha512-uWoHzOBGQTPT5PjippB8rRT3iI9CTgFA9tRiLMzrseA5o7YAlgvfTdY9vFk2qyk3lW3aQfFKWkmqENryPRpu+Q==", + "license": "MIT", + "dependencies": { + "flow-enums-runtime": "^0.0.6" + }, + "engines": { + "node": ">=18.18" + } + }, + "node_modules/metro-runtime": { + "version": "0.82.4", + "resolved": "https://registry.npmjs.org/metro-runtime/-/metro-runtime-0.82.4.tgz", + "integrity": "sha512-vVyFO7H+eLXRV2E7YAUYA7aMGBECGagqxmFvC2hmErS7oq90BbPVENfAHbUWq1vWH+MRiivoRxdxlN8gBoF/dw==", + "license": "MIT", + "dependencies": { + "@babel/runtime": "^7.25.0", + "flow-enums-runtime": "^0.0.6" + }, + "engines": { + "node": ">=18.18" + } + }, + "node_modules/metro-source-map": { + "version": "0.82.4", + "resolved": "https://registry.npmjs.org/metro-source-map/-/metro-source-map-0.82.4.tgz", + "integrity": "sha512-9jzDQJ0FPas1FuQFtwmBHsez2BfhFNufMowbOMeG3ZaFvzeziE8A0aJwILDS3U+V5039ssCQFiQeqDgENWvquA==", + "license": "MIT", + "dependencies": { + "@babel/traverse": "^7.25.3", + "@babel/traverse--for-generate-function-map": "npm:@babel/traverse@^7.25.3", + "@babel/types": "^7.25.2", + "flow-enums-runtime": "^0.0.6", + "invariant": "^2.2.4", + "metro-symbolicate": "0.82.4", + "nullthrows": "^1.1.1", + "ob1": "0.82.4", + "source-map": "^0.5.6", + "vlq": "^1.0.0" + }, + "engines": { + "node": ">=18.18" + } + }, + "node_modules/metro-source-map/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==", + "license": "BSD-3-Clause", + "engines": { + "node": ">=0.10.0" + } + }, + "node_modules/metro-symbolicate": { + "version": "0.82.4", + "resolved": "https://registry.npmjs.org/metro-symbolicate/-/metro-symbolicate-0.82.4.tgz", + "integrity": "sha512-LwEwAtdsx7z8rYjxjpLWxuFa2U0J6TS6ljlQM4WAATKa4uzV8unmnRuN2iNBWTmRqgNR77mzmI2vhwD4QSCo+w==", + "license": "MIT", + "dependencies": { + "flow-enums-runtime": "^0.0.6", + "invariant": "^2.2.4", + "metro-source-map": "0.82.4", + "nullthrows": "^1.1.1", + "source-map": "^0.5.6", + "vlq": "^1.0.0" + }, + "bin": { + "metro-symbolicate": "src/index.js" + }, + "engines": { + "node": ">=18.18" + } + }, + "node_modules/metro-symbolicate/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==", + "license": "BSD-3-Clause", + "engines": { + "node": ">=0.10.0" + } + }, + "node_modules/metro-transform-plugins": { + "version": "0.82.4", + "resolved": "https://registry.npmjs.org/metro-transform-plugins/-/metro-transform-plugins-0.82.4.tgz", + "integrity": "sha512-NoWQRPHupVpnDgYguiEcm7YwDhnqW02iWWQjO2O8NsNP09rEMSq99nPjARWfukN7+KDh6YjLvTIN20mj3dk9kw==", + "license": "MIT", + "dependencies": { + "@babel/core": "^7.25.2", + "@babel/generator": "^7.25.0", + "@babel/template": "^7.25.0", + "@babel/traverse": "^7.25.3", + "flow-enums-runtime": "^0.0.6", + "nullthrows": "^1.1.1" + }, + "engines": { + "node": ">=18.18" + } + }, + "node_modules/metro-transform-worker": { + "version": "0.82.4", + "resolved": "https://registry.npmjs.org/metro-transform-worker/-/metro-transform-worker-0.82.4.tgz", + "integrity": "sha512-kPI7Ad/tdAnI9PY4T+2H0cdgGeSWWdiPRKuytI806UcN4VhFL6OmYa19/4abYVYF+Cd2jo57CDuwbaxRfmXDhw==", + "license": "MIT", + "dependencies": { + "@babel/core": "^7.25.2", + "@babel/generator": "^7.25.0", + "@babel/parser": "^7.25.3", + "@babel/types": "^7.25.2", + "flow-enums-runtime": "^0.0.6", + "metro": "0.82.4", + "metro-babel-transformer": "0.82.4", + "metro-cache": "0.82.4", + "metro-cache-key": "0.82.4", + "metro-minify-terser": "0.82.4", + "metro-source-map": "0.82.4", + "metro-transform-plugins": "0.82.4", + "nullthrows": "^1.1.1" + }, + "engines": { + "node": ">=18.18" + } + }, + "node_modules/metro/node_modules/ci-info": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/ci-info/-/ci-info-2.0.0.tgz", + "integrity": "sha512-5tK7EtrZ0N+OLFMthtqOj4fI2Jeb88C4CAZPu25LDVUgXJ0A3Js4PMGqrn0JU1W0Mh1/Z8wZzYPxqUrXeBboCQ==", + "license": "MIT" + }, + "node_modules/metro/node_modules/hermes-estree": { + "version": "0.28.1", + "resolved": "https://registry.npmjs.org/hermes-estree/-/hermes-estree-0.28.1.tgz", + "integrity": "sha512-w3nxl/RGM7LBae0v8LH2o36+8VqwOZGv9rX1wyoWT6YaKZLqpJZ0YQ5P0LVr3tuRpf7vCx0iIG4i/VmBJejxTQ==", + "license": "MIT" + }, + "node_modules/metro/node_modules/hermes-parser": { + "version": "0.28.1", + "resolved": "https://registry.npmjs.org/hermes-parser/-/hermes-parser-0.28.1.tgz", + "integrity": "sha512-nf8o+hE8g7UJWParnccljHumE9Vlq8F7MqIdeahl+4x0tvCUJYRrT0L7h0MMg/X9YJmkNwsfbaNNrzPtFXOscg==", + "license": "MIT", + "dependencies": { + "hermes-estree": "0.28.1" + } + }, + "node_modules/metro/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==", + "license": "BSD-3-Clause", + "engines": { + "node": ">=0.10.0" + } + }, + "node_modules/metro/node_modules/ws": { + "version": "7.5.10", + "resolved": "https://registry.npmjs.org/ws/-/ws-7.5.10.tgz", + "integrity": "sha512-+dbF1tHwZpXcbOJdVOkzLDxZP1ailvSxM6ZweXTegylPny803bFhA+vqBYw4s31NSAk4S2Qz+AKXK9a4wkdjcQ==", + "license": "MIT", + "engines": { + "node": ">=8.3.0" + }, + "peerDependencies": { + "bufferutil": "^4.0.1", + "utf-8-validate": "^5.0.2" + }, + "peerDependenciesMeta": { + "bufferutil": { + "optional": true + }, + "utf-8-validate": { + "optional": true + } + } + }, + "node_modules/micromatch": { + "version": "4.0.8", + "resolved": "https://registry.npmjs.org/micromatch/-/micromatch-4.0.8.tgz", + "integrity": "sha512-PXwfBhYu0hBCPw8Dn0E+WDYb7af3dSLVWKi3HGv84IdF4TyFoC0ysxFd0Goxw7nSv4T/PzEJQxsYsEiFCKo2BA==", + "license": "MIT", + "dependencies": { + "braces": "^3.0.3", + "picomatch": "^2.3.1" + }, + "engines": { + "node": ">=8.6" + } + }, + "node_modules/micromatch/node_modules/picomatch": { + "version": "2.3.1", + "resolved": "https://registry.npmjs.org/picomatch/-/picomatch-2.3.1.tgz", + "integrity": "sha512-JU3teHTNjmE2VCGFzuY8EXzCDVwEqB2a8fsIvwaStHhAWJEeVd1o1QD80CU6+ZdEXXSLbSsuLwJjkCBWqRQUVA==", + "license": "MIT", + "engines": { + "node": ">=8.6" + }, + "funding": { + "url": "https://github.com/sponsors/jonschlinkert" + } + }, + "node_modules/mime": { + "version": "1.6.0", + "resolved": "https://registry.npmjs.org/mime/-/mime-1.6.0.tgz", + "integrity": "sha512-x0Vn8spI+wuJ1O6S7gnbaQg8Pxh4NNHb7KSINmEWKiPE4RKOplvijn+NkmYmmRgP68mc70j2EbeTFRsrswaQeg==", + "license": "MIT", + "bin": { + "mime": "cli.js" + }, + "engines": { + "node": ">=4" + } + }, + "node_modules/mime-db": { + "version": "1.54.0", + "resolved": "https://registry.npmjs.org/mime-db/-/mime-db-1.54.0.tgz", + "integrity": "sha512-aU5EJuIN2WDemCcAp2vFBfp/m4EAhWJnUNSSw0ixs7/kXbd6Pg64EmwJkNdFhB8aWt1sH2CTXrLxo/iAGV3oPQ==", + "license": "MIT", + "engines": { + "node": ">= 0.6" + } + }, + "node_modules/mime-types": { + "version": "2.1.35", + "resolved": "https://registry.npmjs.org/mime-types/-/mime-types-2.1.35.tgz", + "integrity": "sha512-ZDY+bPm5zTTF+YpCrAU9nK0UgICYPT0QtT1NZWFv4s++TNkcgVaT0g6+4R2uI4MjQjzysHB1zxuWL50hzaeXiw==", + "license": "MIT", + "dependencies": { + "mime-db": "1.52.0" + }, + "engines": { + "node": ">= 0.6" + } + }, + "node_modules/mime-types/node_modules/mime-db": { + "version": "1.52.0", + "resolved": "https://registry.npmjs.org/mime-db/-/mime-db-1.52.0.tgz", + "integrity": "sha512-sPU4uV7dYlvtWJxwwxHD0PuihVNiE7TyAbQ5SWxDCB9mUYvOgroQOwYQQOKPJ8CIbE+1ETVlOoK1UC2nU3gYvg==", + "license": "MIT", + "engines": { + "node": ">= 0.6" + } + }, + "node_modules/mimic-fn": { + "version": "2.1.0", + "resolved": "https://registry.npmjs.org/mimic-fn/-/mimic-fn-2.1.0.tgz", + "integrity": "sha512-OqbOk5oEQeAZ8WXWydlu9HJjz9WVdEIvamMCcXmuqUYjTknH/sqsWvhQ3vgwKFRR1HpjvNBKQ37nbJgYzGqGcg==", + "dev": true, + "license": "MIT", + "engines": { + "node": ">=6" + } + }, + "node_modules/minimatch": { + "version": "9.0.5", + "resolved": "https://registry.npmjs.org/minimatch/-/minimatch-9.0.5.tgz", + "integrity": "sha512-G6T0ZX48xgozx7587koeX9Ys2NYy6Gmv//P89sEte9V9whIapMNF4idKxnW2QtCcLiTWlb/wfCabAtAFWhhBow==", + "license": "ISC", + "dependencies": { + "brace-expansion": "^2.0.1" + }, + "engines": { + "node": ">=16 || 14 >=14.17" + }, + "funding": { + "url": "https://github.com/sponsors/isaacs" + } + }, + "node_modules/minimist": { + "version": "1.2.8", + "resolved": "https://registry.npmjs.org/minimist/-/minimist-1.2.8.tgz", + "integrity": "sha512-2yyAR8qBkN3YuheJanUpWC5U3bb5osDywNB8RzDVlDwDHbocAJveqqj1u8+SVD7jkWT4yvsHCpWqqWqAxb0zCA==", + "license": "MIT", + "funding": { + "url": "https://github.com/sponsors/ljharb" + } + }, + "node_modules/minipass": { + "version": "7.1.2", + "resolved": "https://registry.npmjs.org/minipass/-/minipass-7.1.2.tgz", + "integrity": "sha512-qOOzS1cBTWYF4BH8fVePDBOO9iptMnGUEZwNc/cMWnTV2nVLZ7VoNWEPHkYczZA0pdoA7dl6e7FL659nX9S2aw==", + "license": "ISC", + "engines": { + "node": ">=16 || 14 >=14.17" + } + }, + "node_modules/minizlib": { + "version": "3.0.2", + "resolved": "https://registry.npmjs.org/minizlib/-/minizlib-3.0.2.tgz", + "integrity": "sha512-oG62iEk+CYt5Xj2YqI5Xi9xWUeZhDI8jjQmC5oThVH5JGCTgIjr7ciJDzC7MBzYd//WvR1OTmP5Q38Q8ShQtVA==", + "license": "MIT", + "dependencies": { + "minipass": "^7.1.2" + }, + "engines": { + "node": ">= 18" + } + }, + "node_modules/mkdirp": { + "version": "1.0.4", + "resolved": "https://registry.npmjs.org/mkdirp/-/mkdirp-1.0.4.tgz", + "integrity": "sha512-vVqVZQyf3WLx2Shd0qJ9xuvqgAyKPLAiqITEtqW0oIUjzo3PePDd6fW9iFz30ef7Ysp/oiWqbhszeGWW2T6Gzw==", + "license": "MIT", + "bin": { + "mkdirp": "bin/cmd.js" + }, + "engines": { + "node": ">=10" + } + }, + "node_modules/moment": { + "version": "2.30.1", + "resolved": "https://registry.npmjs.org/moment/-/moment-2.30.1.tgz", + "integrity": "sha512-uEmtNhbDOrWPFS+hdjFCBfy9f2YoyzRpwcl+DqpC6taX21FzsTLQVbMV/W7PzNSX6x/bhC1zA3c2UQ5NzH6how==", + "license": "MIT", + "optional": true, + "engines": { + "node": "*" + } + }, + "node_modules/ms": { + "version": "2.1.3", + "resolved": "https://registry.npmjs.org/ms/-/ms-2.1.3.tgz", + "integrity": "sha512-6FlzubTLZG3J2a/NVCAleEhjzq5oxgHyaCU9yYXvcLsvoVaHJq/s5xXI6/XXP6tz7R9xAOtHnSO/tXtF3WRTlA==", + "license": "MIT" + }, + "node_modules/mz": { + "version": "2.7.0", + "resolved": "https://registry.npmjs.org/mz/-/mz-2.7.0.tgz", + "integrity": "sha512-z81GNO7nnYMEhrGh9LeymoE4+Yr0Wn5McHIZMK5cfQCl+NDX08sCZgUc9/6MHni9IWuFLm1Z3HTCXu2z9fN62Q==", + "license": "MIT", + "dependencies": { + "any-promise": "^1.0.0", + "object-assign": "^4.0.1", + "thenify-all": "^1.0.0" + } + }, + "node_modules/nanoid": { + "version": "3.3.11", + "resolved": "https://registry.npmjs.org/nanoid/-/nanoid-3.3.11.tgz", + "integrity": "sha512-N8SpfPUnUp1bK+PMYW8qSWdl9U+wwNWI4QKxOYDy9JAro3WMX7p2OeVRF9v+347pnakNevPmiHhNmZ2HbFA76w==", + "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" + } + }, + "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, + "license": "MIT" + }, + "node_modules/negotiator": { + "version": "0.6.3", + "resolved": "https://registry.npmjs.org/negotiator/-/negotiator-0.6.3.tgz", + "integrity": "sha512-+EUsqGPLsM+j/zdChZjsnX51g4XrHFOIXwfnCVPGlQk/k5giakcKsuxCObBRu6DSm9opw/O6slWbJdghQM4bBg==", + "license": "MIT", + "engines": { + "node": ">= 0.6" + } + }, + "node_modules/neo-async": { + "version": "2.6.2", + "resolved": "https://registry.npmjs.org/neo-async/-/neo-async-2.6.2.tgz", + "integrity": "sha512-Yd3UES5mWCSqR+qNT93S3UoYUkqAZ9lLg8a7g9rimsWmYGK8cVToA4/sF3RrshdyV3sAGMXVUmpMYOw+dLpOuw==", + "dev": true, + "license": "MIT" + }, + "node_modules/nested-error-stacks": { + "version": "2.0.1", + "resolved": "https://registry.npmjs.org/nested-error-stacks/-/nested-error-stacks-2.0.1.tgz", + "integrity": "sha512-SrQrok4CATudVzBS7coSz26QRSmlK9TzzoFbeKfcPBUFPjcQM9Rqvr/DlJkOrwI/0KcgvMub1n1g5Jt9EgRn4A==", + "license": "MIT" + }, + "node_modules/node-fetch": { + "version": "2.7.0", + "resolved": "https://registry.npmjs.org/node-fetch/-/node-fetch-2.7.0.tgz", + "integrity": "sha512-c4FRfUm/dbcWZ7U+1Wq0AwCyFL+3nt2bEw05wfxSz+DWpWsitgmSgYmy2dQdWyKC1694ELPqMs/YzUSNozLt8A==", + "license": "MIT", + "dependencies": { + "whatwg-url": "^5.0.0" + }, + "engines": { + "node": "4.x || >=6.0.0" + }, + "peerDependencies": { + "encoding": "^0.1.0" + }, + "peerDependenciesMeta": { + "encoding": { + "optional": true + } + } + }, + "node_modules/node-fetch/node_modules/tr46": { + "version": "0.0.3", + "resolved": "https://registry.npmjs.org/tr46/-/tr46-0.0.3.tgz", + "integrity": "sha512-N3WMsuqV66lT30CrXNbEjx4GEwlow3v6rr4mCcv6prnfwhS01rkgyFdjPNBYd9br7LpXV1+Emh01fHnq2Gdgrw==", + "license": "MIT" + }, + "node_modules/node-fetch/node_modules/webidl-conversions": { + "version": "3.0.1", + "resolved": "https://registry.npmjs.org/webidl-conversions/-/webidl-conversions-3.0.1.tgz", + "integrity": "sha512-2JAn3z8AR6rjK8Sm8orRC0h/bcl/DqL7tRPdGZ4I1CjdF+EaMLmYxBHyXuKL849eucPFhvBoxMsflfOb8kxaeQ==", + "license": "BSD-2-Clause" + }, + "node_modules/node-fetch/node_modules/whatwg-url": { + "version": "5.0.0", + "resolved": "https://registry.npmjs.org/whatwg-url/-/whatwg-url-5.0.0.tgz", + "integrity": "sha512-saE57nupxk6v3HY35+jzBwYa0rKSy0XR8JSxZPwgLr7ys0IBzhGviA1/TUGJLmSVqs8pb9AnvICXEuOHLprYTw==", + "license": "MIT", + "dependencies": { + "tr46": "~0.0.3", + "webidl-conversions": "^3.0.0" + } + }, + "node_modules/node-forge": { + "version": "1.3.1", + "resolved": "https://registry.npmjs.org/node-forge/-/node-forge-1.3.1.tgz", + "integrity": "sha512-dPEtOeMvF9VMcYV/1Wb8CPoVAXtp6MKMlcbAt4ddqmGqUJ6fQZFXkNZNkNlfevtNkGtaSoXf/vNNNSvgrdXwtA==", + "license": "(BSD-3-Clause OR GPL-2.0)", + "engines": { + "node": ">= 6.13.0" + } + }, + "node_modules/node-int64": { + "version": "0.4.0", + "resolved": "https://registry.npmjs.org/node-int64/-/node-int64-0.4.0.tgz", + "integrity": "sha512-O5lz91xSOeoXP6DulyHfllpq+Eg00MWitZIbtPfoSEvqIHdl5gfcY6hYzDWnj0qD5tz52PI08u9qUvSVeUBeHw==", + "license": "MIT" + }, + "node_modules/node-releases": { + "version": "2.0.19", + "resolved": "https://registry.npmjs.org/node-releases/-/node-releases-2.0.19.tgz", + "integrity": "sha512-xxOWJsBKtzAq7DY0J+DTzuz58K8e7sJbdgwkbMWQe8UYB6ekmsQ45q0M/tJDsGaZmbC+l7n57UV8Hl5tHxO9uw==", + "license": "MIT" + }, + "node_modules/normalize-path": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/normalize-path/-/normalize-path-3.0.0.tgz", + "integrity": "sha512-6eZs5Ls3WtCisHWp9S2GUy8dqkpGi4BVSz3GaqiE6ezub0512ESztXUwUB6C6IKbQkY2Pnb/mD4WYojCRwcwLA==", + "license": "MIT", + "engines": { + "node": ">=0.10.0" + } + }, + "node_modules/npm-package-arg": { + "version": "11.0.3", + "resolved": "https://registry.npmjs.org/npm-package-arg/-/npm-package-arg-11.0.3.tgz", + "integrity": "sha512-sHGJy8sOC1YraBywpzQlIKBE4pBbGbiF95U6Auspzyem956E0+FtDtsx1ZxlOJkQCZ1AFXAY/yuvtFYrOxF+Bw==", + "license": "ISC", + "dependencies": { + "hosted-git-info": "^7.0.0", + "proc-log": "^4.0.0", + "semver": "^7.3.5", + "validate-npm-package-name": "^5.0.0" + }, + "engines": { + "node": "^16.14.0 || >=18.0.0" + } + }, + "node_modules/npm-package-arg/node_modules/semver": { + "version": "7.7.2", + "resolved": "https://registry.npmjs.org/semver/-/semver-7.7.2.tgz", + "integrity": "sha512-RF0Fw+rO5AMf9MAyaRXI4AV0Ulj5lMHqVxxdSgiVbixSCXoEmmX/jk0CuJw4+3SqroYO9VoUh+HcuJivvtJemA==", + "license": "ISC", + "bin": { + "semver": "bin/semver.js" + }, + "engines": { + "node": ">=10" + } + }, + "node_modules/npm-run-path": { + "version": "4.0.1", + "resolved": "https://registry.npmjs.org/npm-run-path/-/npm-run-path-4.0.1.tgz", + "integrity": "sha512-S48WzZW777zhNIrn7gxOlISNAqi9ZC/uQFnRdbeIHhZhCA6UqpkOT8T1G7BvfdgP4Er8gF4sUbaS0i7QvIfCWw==", + "dev": true, + "license": "MIT", + "dependencies": { + "path-key": "^3.0.0" + }, + "engines": { + "node": ">=8" + } + }, + "node_modules/nth-check": { + "version": "2.1.1", + "resolved": "https://registry.npmjs.org/nth-check/-/nth-check-2.1.1.tgz", + "integrity": "sha512-lqjrjmaOoAnWfMmBPL+XNnynZh2+swxiX3WUE0s4yEHI6m+AwrK2UZOimIRl3X/4QctVqS8AiZjFqyOGrMXb/w==", + "license": "BSD-2-Clause", + "dependencies": { + "boolbase": "^1.0.0" + }, + "funding": { + "url": "https://github.com/fb55/nth-check?sponsor=1" + } + }, + "node_modules/nullthrows": { + "version": "1.1.1", + "resolved": "https://registry.npmjs.org/nullthrows/-/nullthrows-1.1.1.tgz", + "integrity": "sha512-2vPPEi+Z7WqML2jZYddDIfy5Dqb0r2fze2zTxNNknZaFpVHU3mFB3R+DWeJWGVx0ecvttSGlJTI+WG+8Z4cDWw==", + "license": "MIT" + }, + "node_modules/nwsapi": { + "version": "2.2.20", + "resolved": "https://registry.npmjs.org/nwsapi/-/nwsapi-2.2.20.tgz", + "integrity": "sha512-/ieB+mDe4MrrKMT8z+mQL8klXydZWGR5Dowt4RAGKbJ3kIGEx3X4ljUo+6V73IXtUPWgfOlU5B9MlGxFO5T+cA==", + "dev": true, + "license": "MIT" + }, + "node_modules/ob1": { + "version": "0.82.4", + "resolved": "https://registry.npmjs.org/ob1/-/ob1-0.82.4.tgz", + "integrity": "sha512-n9S8e4l5TvkrequEAMDidl4yXesruWTNTzVkeaHSGywoTOIwTzZzKw7Z670H3eaXDZui5MJXjWGNzYowVZIxCA==", + "license": "MIT", + "dependencies": { + "flow-enums-runtime": "^0.0.6" + }, + "engines": { + "node": ">=18.18" + } + }, + "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" + } + }, + "node_modules/on-finished": { + "version": "2.3.0", + "resolved": "https://registry.npmjs.org/on-finished/-/on-finished-2.3.0.tgz", + "integrity": "sha512-ikqdkGAAyf/X/gPhXGvfgAytDZtDbr+bkNUJ0N9h5MI/dmdgCs3l6hoHrcUv41sRKew3jIwrp4qQDXiK99Utww==", + "license": "MIT", + "dependencies": { + "ee-first": "1.1.1" + }, + "engines": { + "node": ">= 0.8" + } + }, + "node_modules/on-headers": { + "version": "1.0.2", + "resolved": "https://registry.npmjs.org/on-headers/-/on-headers-1.0.2.tgz", + "integrity": "sha512-pZAE+FJLoyITytdqK0U5s+FIpjN0JP3OzFi/u8Rx+EV5/W+JTWGXG8xFzevE7AjBfDqHv/8vL8qQsIhHnqRkrA==", + "license": "MIT", + "engines": { + "node": ">= 0.8" + } + }, + "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==", + "license": "ISC", + "dependencies": { + "wrappy": "1" + } + }, + "node_modules/onetime": { + "version": "5.1.2", + "resolved": "https://registry.npmjs.org/onetime/-/onetime-5.1.2.tgz", + "integrity": "sha512-kbpaSSGJTWdAY5KPVeMOKXSrPtr8C8C7wodJbcsd51jRnmD+GZu8Y0VoU6Dm5Z4vWr0Ig/1NKuWRKf7j5aaYSg==", + "dev": true, + "license": "MIT", + "dependencies": { + "mimic-fn": "^2.1.0" + }, + "engines": { + "node": ">=6" + }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" + } + }, + "node_modules/open": { + "version": "7.4.2", + "resolved": "https://registry.npmjs.org/open/-/open-7.4.2.tgz", + "integrity": "sha512-MVHddDVweXZF3awtlAS+6pgKLlm/JgxZ90+/NBurBoQctVOOB/zDdVjcyPzQ+0laDGbsWgrRkflI65sQeOgT9Q==", + "license": "MIT", + "dependencies": { + "is-docker": "^2.0.0", + "is-wsl": "^2.1.1" + }, + "engines": { + "node": ">=8" + }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" + } + }, + "node_modules/ora": { + "version": "3.4.0", + "resolved": "https://registry.npmjs.org/ora/-/ora-3.4.0.tgz", + "integrity": "sha512-eNwHudNbO1folBP3JsZ19v9azXWtQZjICdr3Q0TDPIaeBQ3mXLrh54wM+er0+hSp+dWKf+Z8KM58CYzEyIYxYg==", + "license": "MIT", + "dependencies": { + "chalk": "^2.4.2", + "cli-cursor": "^2.1.0", + "cli-spinners": "^2.0.0", + "log-symbols": "^2.2.0", + "strip-ansi": "^5.2.0", + "wcwidth": "^1.0.1" + }, + "engines": { + "node": ">=6" + } + }, + "node_modules/ora/node_modules/ansi-regex": { + "version": "4.1.1", + "resolved": "https://registry.npmjs.org/ansi-regex/-/ansi-regex-4.1.1.tgz", + "integrity": "sha512-ILlv4k/3f6vfQ4OoP2AGvirOktlQ98ZEL1k9FaQjxa3L1abBgbuTDAdPOpvbGncC0BTVQrl+OM8xZGK6tWXt7g==", + "license": "MIT", + "engines": { + "node": ">=6" + } + }, + "node_modules/ora/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==", + "license": "MIT", + "dependencies": { + "color-convert": "^1.9.0" + }, + "engines": { + "node": ">=4" + } + }, + "node_modules/ora/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==", + "license": "MIT", + "dependencies": { + "ansi-styles": "^3.2.1", + "escape-string-regexp": "^1.0.5", + "supports-color": "^5.3.0" + }, + "engines": { + "node": ">=4" + } + }, + "node_modules/ora/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==", + "license": "MIT", + "dependencies": { + "color-name": "1.1.3" + } + }, + "node_modules/ora/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" + }, + "node_modules/ora/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" + } + }, + "node_modules/ora/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" + } + }, + "node_modules/ora/node_modules/strip-ansi": { + "version": "5.2.0", + "resolved": "https://registry.npmjs.org/strip-ansi/-/strip-ansi-5.2.0.tgz", + "integrity": "sha512-DuRs1gKbBqsMKIZlrffwlug8MHkcnpjs5VPmL1PAh+mA30U0DTotfDZ0d2UUsXpPmPmMMJ6W773MaA3J+lbiWA==", + "license": "MIT", + "dependencies": { + "ansi-regex": "^4.1.0" + }, + "engines": { + "node": ">=6" + } + }, + "node_modules/ora/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==", + "license": "MIT", + "dependencies": { + "has-flag": "^3.0.0" + }, + "engines": { + "node": ">=4" + } + }, + "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==", + "license": "MIT", + "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==", + "license": "MIT", + "dependencies": { + "p-limit": "^3.0.2" + }, + "engines": { + "node": ">=10" + }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" + } + }, + "node_modules/p-try": { + "version": "2.2.0", + "resolved": "https://registry.npmjs.org/p-try/-/p-try-2.2.0.tgz", + "integrity": "sha512-R4nPAVTAU0B9D35/Gk3uJf/7XYbQcyohSKdvAxIRSNghFl4e71hVoGnBNQz9cWaXxO2I10KTC+3jMdvvoKw6dQ==", + "license": "MIT", + "engines": { + "node": ">=6" + } + }, + "node_modules/package-json-from-dist": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/package-json-from-dist/-/package-json-from-dist-1.0.1.tgz", + "integrity": "sha512-UEZIS3/by4OC8vL3P2dTXRETpebLI2NiI5vIrjaD/5UtrkFX/tNbwjTSRAGC/+7CAo2pIcBaRgWmcBBHcsaCIw==", + "license": "BlueOak-1.0.0" + }, + "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==", + "dev": true, + "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" + } + }, + "node_modules/parse-png": { + "version": "2.1.0", + "resolved": "https://registry.npmjs.org/parse-png/-/parse-png-2.1.0.tgz", + "integrity": "sha512-Nt/a5SfCLiTnQAjx3fHlqp8hRgTL3z7kTQZzvIMS9uCAepnCyjpdEc6M/sz69WqMBdaDBw9sF1F1UaHROYzGkQ==", + "license": "MIT", + "dependencies": { + "pngjs": "^3.3.0" + }, + "engines": { + "node": ">=10" + } + }, + "node_modules/parse5": { + "version": "7.3.0", + "resolved": "https://registry.npmjs.org/parse5/-/parse5-7.3.0.tgz", + "integrity": "sha512-IInvU7fabl34qmi9gY8XOVxhYyMyuH2xUNpb2q8/Y+7552KlejkRvqvD19nMoUW/uQGGbqNpA6Tufu5FL5BZgw==", + "dev": true, + "license": "MIT", + "dependencies": { + "entities": "^6.0.0" + }, + "funding": { + "url": "https://github.com/inikulin/parse5?sponsor=1" + } + }, + "node_modules/parseurl": { + "version": "1.3.3", + "resolved": "https://registry.npmjs.org/parseurl/-/parseurl-1.3.3.tgz", + "integrity": "sha512-CiyeOxFT/JZyN5m0z9PfXw4SCBJ6Sygz1Dpl0wqjlhDEGGBP1GnsUVEL0p63hoG1fcj3fHynXi9NYO4nWOL+qQ==", + "license": "MIT", + "engines": { + "node": ">= 0.8" + } + }, + "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==", + "license": "MIT", + "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==", + "license": "MIT", + "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==", + "license": "MIT", + "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==", + "license": "MIT" + }, + "node_modules/path-scurry": { + "version": "1.11.1", + "resolved": "https://registry.npmjs.org/path-scurry/-/path-scurry-1.11.1.tgz", + "integrity": "sha512-Xa4Nw17FS9ApQFJ9umLiJS4orGjm7ZzwUrwamcGQuHSzDyth9boKDaycYdDcZDuqYATXw4HFXgaqWTctW/v1HA==", + "license": "BlueOak-1.0.0", + "dependencies": { + "lru-cache": "^10.2.0", + "minipass": "^5.0.0 || ^6.0.2 || ^7.0.0" + }, + "engines": { + "node": ">=16 || 14 >=14.18" + }, + "funding": { + "url": "https://github.com/sponsors/isaacs" + } + }, + "node_modules/path-scurry/node_modules/lru-cache": { + "version": "10.4.3", + "resolved": "https://registry.npmjs.org/lru-cache/-/lru-cache-10.4.3.tgz", + "integrity": "sha512-JNAzZcXrCt42VGLuYz0zfAzDfAvJWW6AfYlDBQyDV5DClI2m5sAmK+OIO7s59XfsRsWHp02jAJrRadPRGTt6SQ==", + "license": "ISC" + }, + "node_modules/paths-js": { + "version": "0.4.11", + "resolved": "https://registry.npmjs.org/paths-js/-/paths-js-0.4.11.tgz", + "integrity": "sha512-3mqcLomDBXOo7Fo+UlaenG6f71bk1ZezPQy2JCmYHy2W2k5VKpP+Jbin9H0bjXynelTbglCqdFhSEkeIkKTYUA==", + "license": "Apache-2.0", + "engines": { + "node": ">=0.11.0" + } + }, + "node_modules/picocolors": { + "version": "1.1.1", + "resolved": "https://registry.npmjs.org/picocolors/-/picocolors-1.1.1.tgz", + "integrity": "sha512-xceH2snhtb5M9liqDsmEw56le376mTZkEX/jEb/RxNFyegNul7eNslCXP9FDj/Lcu0X8KEyMceP2ntpaHrDEVA==", + "license": "ISC" + }, + "node_modules/picomatch": { + "version": "3.0.1", + "resolved": "https://registry.npmjs.org/picomatch/-/picomatch-3.0.1.tgz", + "integrity": "sha512-I3EurrIQMlRc9IaAZnqRR044Phh2DXY+55o7uJ0V+hYZAcQYSuFWsc9q5PvyDHUSCe1Qxn/iBz+78s86zWnGag==", + "license": "MIT", + "engines": { + "node": ">=10" + }, + "funding": { + "url": "https://github.com/sponsors/jonschlinkert" + } + }, + "node_modules/pirates": { + "version": "4.0.7", + "resolved": "https://registry.npmjs.org/pirates/-/pirates-4.0.7.tgz", + "integrity": "sha512-TfySrs/5nm8fQJDcBDuUng3VOUKsd7S+zqvbOTiGXHfxX4wK31ard+hoNuvkicM/2YFzlpDgABOevKSsB4G/FA==", + "license": "MIT", + "engines": { + "node": ">= 6" + } + }, + "node_modules/pkg-dir": { + "version": "4.2.0", + "resolved": "https://registry.npmjs.org/pkg-dir/-/pkg-dir-4.2.0.tgz", + "integrity": "sha512-HRDzbaKjC+AOWVXxAU/x54COGeIv9eb+6CkDSQoNTt4XyWoIJvuPsXizxu/Fr23EiekbtZwmh1IcIG/l/a10GQ==", + "dev": true, + "license": "MIT", + "dependencies": { + "find-up": "^4.0.0" + }, + "engines": { + "node": ">=8" + } + }, + "node_modules/pkg-dir/node_modules/find-up": { + "version": "4.1.0", + "resolved": "https://registry.npmjs.org/find-up/-/find-up-4.1.0.tgz", + "integrity": "sha512-PpOwAdQ/YlXQ2vj8a3h8IipDuYRi3wceVQQGYWxNINccq40Anw7BlsEXCMbt1Zt+OLA6Fq9suIpIWD0OsnISlw==", + "dev": true, + "license": "MIT", + "dependencies": { + "locate-path": "^5.0.0", + "path-exists": "^4.0.0" + }, + "engines": { + "node": ">=8" + } + }, + "node_modules/pkg-dir/node_modules/locate-path": { + "version": "5.0.0", + "resolved": "https://registry.npmjs.org/locate-path/-/locate-path-5.0.0.tgz", + "integrity": "sha512-t7hw9pI+WvuwNJXwk5zVHpyhIqzg2qTlklJOf0mVxGSbe3Fp2VieZcduNYjaLDoy6p9uGpQEGWG87WpMKlNq8g==", + "dev": true, + "license": "MIT", + "dependencies": { + "p-locate": "^4.1.0" + }, + "engines": { + "node": ">=8" + } + }, + "node_modules/pkg-dir/node_modules/p-limit": { + "version": "2.3.0", + "resolved": "https://registry.npmjs.org/p-limit/-/p-limit-2.3.0.tgz", + "integrity": "sha512-//88mFWSJx8lxCzwdAABTJL2MyWB12+eIY7MDL2SqLmAkeKU9qxRvWuSyTjm3FUmpBEMuFfckAIqEaVGUDxb6w==", + "dev": true, + "license": "MIT", + "dependencies": { + "p-try": "^2.0.0" + }, + "engines": { + "node": ">=6" + }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" + } + }, + "node_modules/pkg-dir/node_modules/p-locate": { + "version": "4.1.0", + "resolved": "https://registry.npmjs.org/p-locate/-/p-locate-4.1.0.tgz", + "integrity": "sha512-R79ZZ/0wAxKGu3oYMlz8jy/kbhsNrS7SKZ7PxEHBgJ5+F2mtFW2fK2cOtBh1cHYkQsbzFV7I+EoRKe6Yt0oK7A==", + "dev": true, + "license": "MIT", + "dependencies": { + "p-limit": "^2.2.0" + }, + "engines": { + "node": ">=8" + } + }, + "node_modules/plist": { + "version": "3.1.0", + "resolved": "https://registry.npmjs.org/plist/-/plist-3.1.0.tgz", + "integrity": "sha512-uysumyrvkUX0rX/dEVqt8gC3sTBzd4zoWfLeS29nb53imdaXVvLINYXTI2GNqzaMuvacNx4uJQ8+b3zXR0pkgQ==", + "license": "MIT", + "dependencies": { + "@xmldom/xmldom": "^0.8.8", + "base64-js": "^1.5.1", + "xmlbuilder": "^15.1.1" + }, + "engines": { + "node": ">=10.4.0" + } + }, + "node_modules/pngjs": { + "version": "3.4.0", + "resolved": "https://registry.npmjs.org/pngjs/-/pngjs-3.4.0.tgz", + "integrity": "sha512-NCrCHhWmnQklfH4MtJMRjZ2a8c80qXeMlQMv2uVp9ISJMTt562SbGd6n2oq0PaPgKm7Z6pL9E2UlLIhC+SHL3w==", + "license": "MIT", + "engines": { + "node": ">=4.0.0" + } + }, + "node_modules/point-in-polygon": { + "version": "1.1.0", + "resolved": "https://registry.npmjs.org/point-in-polygon/-/point-in-polygon-1.1.0.tgz", + "integrity": "sha512-3ojrFwjnnw8Q9242TzgXuTD+eKiutbzyslcq1ydfu82Db2y+Ogbmyrkpv0Hgj31qwT3lbS9+QAAO/pIQM35XRw==", + "license": "MIT" + }, + "node_modules/postcss": { + "version": "8.4.49", + "resolved": "https://registry.npmjs.org/postcss/-/postcss-8.4.49.tgz", + "integrity": "sha512-OCVPnIObs4N29kxTjzLfUryOkvZEq+pf8jTF0lg8E7uETuWHA+v7j3c/xJmiqpX450191LlmZfUKkXxkTry7nA==", + "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.1.1", + "source-map-js": "^1.2.1" + }, + "engines": { + "node": "^10 || ^12 || >=14" + } + }, + "node_modules/postcss-value-parser": { + "version": "4.2.0", + "resolved": "https://registry.npmjs.org/postcss-value-parser/-/postcss-value-parser-4.2.0.tgz", + "integrity": "sha512-1NNCs6uurfkVbeXG4S8JFT9t19m45ICnif8zWLd5oPSZ50QnwMfK+H3jv408d4jw/7Bttv5axS5IiHoLaVNHeQ==", + "license": "MIT" + }, + "node_modules/pretty-bytes": { + "version": "5.6.0", + "resolved": "https://registry.npmjs.org/pretty-bytes/-/pretty-bytes-5.6.0.tgz", + "integrity": "sha512-FFw039TmrBqFK8ma/7OL3sDz/VytdtJr044/QUJtH0wK9lb9jLq9tJyIxUwtQJHwar2BqtiA4iCWSwo9JLkzFg==", + "license": "MIT", + "engines": { + "node": ">=6" + }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" + } + }, + "node_modules/pretty-format": { + "version": "29.7.0", + "resolved": "https://registry.npmjs.org/pretty-format/-/pretty-format-29.7.0.tgz", + "integrity": "sha512-Pdlw/oPxN+aXdmM9R00JVC9WVFoCLTKJvDVLgmJ+qAffBMxsV85l/Lu7sNx4zSzPyoL2euImuEwHhOXdEgNFZQ==", + "license": "MIT", + "dependencies": { + "@jest/schemas": "^29.6.3", + "ansi-styles": "^5.0.0", + "react-is": "^18.0.0" + }, + "engines": { + "node": "^14.15.0 || ^16.10.0 || >=18.0.0" + } + }, + "node_modules/pretty-format/node_modules/ansi-styles": { + "version": "5.2.0", + "resolved": "https://registry.npmjs.org/ansi-styles/-/ansi-styles-5.2.0.tgz", + "integrity": "sha512-Cxwpt2SfTzTtXcfOlzGEee8O+c+MmUgGrNiBcXnuWxuFJHe6a5Hz7qwhwe5OgaSYI0IJvkLqWX1ASG+cJOkEiA==", + "license": "MIT", + "engines": { + "node": ">=10" + }, + "funding": { + "url": "https://github.com/chalk/ansi-styles?sponsor=1" + } + }, + "node_modules/pretty-format/node_modules/react-is": { + "version": "18.3.1", + "resolved": "https://registry.npmjs.org/react-is/-/react-is-18.3.1.tgz", + "integrity": "sha512-/LLMVyas0ljjAtoYiPqYiL8VWXzUUdThrmU5+n20DZv+a+ClRoevUzw5JxU+Ieh5/c87ytoTBV9G1FiKfNJdmg==", + "license": "MIT" + }, + "node_modules/proc-log": { + "version": "4.2.0", + "resolved": "https://registry.npmjs.org/proc-log/-/proc-log-4.2.0.tgz", + "integrity": "sha512-g8+OnU/L2v+wyiVK+D5fA34J7EH8jZ8DDlvwhRCMxmMj7UCBvxiO1mGeN+36JXIKF4zevU4kRBd8lVgG9vLelA==", + "license": "ISC", + "engines": { + "node": "^14.17.0 || ^16.13.0 || >=18.0.0" + } + }, + "node_modules/progress": { + "version": "2.0.3", + "resolved": "https://registry.npmjs.org/progress/-/progress-2.0.3.tgz", + "integrity": "sha512-7PiHtLll5LdnKIMw100I+8xJXR5gW2QwWYkT6iJva0bXitZKa/XMrSbdmg3r2Xnaidz9Qumd0VPaMrZlF9V9sA==", + "license": "MIT", + "engines": { + "node": ">=0.4.0" + } + }, + "node_modules/promise": { + "version": "8.3.0", + "resolved": "https://registry.npmjs.org/promise/-/promise-8.3.0.tgz", + "integrity": "sha512-rZPNPKTOYVNEEKFaq1HqTgOwZD+4/YHS5ukLzQCypkj+OkYx7iv0mA91lJlpPPZ8vMau3IIGj5Qlwrx+8iiSmg==", + "license": "MIT", + "dependencies": { + "asap": "~2.0.6" + } + }, + "node_modules/prompts": { + "version": "2.4.2", + "resolved": "https://registry.npmjs.org/prompts/-/prompts-2.4.2.tgz", + "integrity": "sha512-NxNv/kLguCA7p3jE8oL2aEBsrJWgAakBpgmgK6lpPWV+WuOmY6r2/zbAVnP+T8bQlA0nzHXSJSJW0Hq7ylaD2Q==", + "license": "MIT", + "dependencies": { + "kleur": "^3.0.3", + "sisteransi": "^1.0.5" + }, + "engines": { + "node": ">= 6" + } + }, + "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==", + "license": "MIT", + "dependencies": { + "loose-envify": "^1.4.0", + "object-assign": "^4.1.1", + "react-is": "^16.13.1" + } + }, + "node_modules/prop-types/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" + }, + "node_modules/psl": { + "version": "1.15.0", + "resolved": "https://registry.npmjs.org/psl/-/psl-1.15.0.tgz", + "integrity": "sha512-JZd3gMVBAVQkSs6HdNZo9Sdo0LNcQeMNP3CozBJb3JYC/QUYZTnKxP+f8oWRX4rHP5EurWxqAHTSwUCjlNKa1w==", + "dev": true, + "license": "MIT", + "dependencies": { + "punycode": "^2.3.1" + }, + "funding": { + "url": "https://github.com/sponsors/lupomontero" + } + }, + "node_modules/punycode": { + "version": "2.3.1", + "resolved": "https://registry.npmjs.org/punycode/-/punycode-2.3.1.tgz", + "integrity": "sha512-vYt7UD1U9Wg6138shLtLOvdAu+8DsC/ilFtEVHcH+wydcSpNE20AfSOduf6MkRFahL5FY7X1oU7nKVZFtfq8Fg==", + "license": "MIT", + "engines": { + "node": ">=6" + } + }, + "node_modules/pure-rand": { + "version": "6.1.0", + "resolved": "https://registry.npmjs.org/pure-rand/-/pure-rand-6.1.0.tgz", + "integrity": "sha512-bVWawvoZoBYpp6yIoQtQXHZjmz35RSVHnUOTefl8Vcjr8snTPY1wnpSPMWekcFwbxI6gtmT7rSYPFvz71ldiOA==", + "dev": true, + "funding": [ + { + "type": "individual", + "url": "https://github.com/sponsors/dubzzz" + }, + { + "type": "opencollective", + "url": "https://opencollective.com/fast-check" + } + ], + "license": "MIT" + }, + "node_modules/qrcode-terminal": { + "version": "0.11.0", + "resolved": "https://registry.npmjs.org/qrcode-terminal/-/qrcode-terminal-0.11.0.tgz", + "integrity": "sha512-Uu7ii+FQy4Qf82G4xu7ShHhjhGahEpCWc3x8UavY3CTcWV+ufmmCtwkr7ZKsX42jdL0kr1B5FKUeqJvAn51jzQ==", + "bin": { + "qrcode-terminal": "bin/qrcode-terminal.js" + } + }, + "node_modules/qs": { + "version": "6.9.7", + "resolved": "https://registry.npmjs.org/qs/-/qs-6.9.7.tgz", + "integrity": "sha512-IhMFgUmuNpyRfxA90umL7ByLlgRXu6tIfKPpF5TmcfRLlLCckfP/g3IQmju6jjpu+Hh8rA+2p6A27ZSPOOHdKw==", + "license": "BSD-3-Clause", + "engines": { + "node": ">=0.6" + }, + "funding": { + "url": "https://github.com/sponsors/ljharb" + } + }, + "node_modules/query-string": { + "version": "7.1.3", + "resolved": "https://registry.npmjs.org/query-string/-/query-string-7.1.3.tgz", + "integrity": "sha512-hh2WYhq4fi8+b+/2Kg9CEge4fDPvHS534aOOvOZeQ3+Vf2mCFsaFBYj0i+iXcAq6I9Vzp5fjMFBlONvayDC1qg==", + "license": "MIT", + "dependencies": { + "decode-uri-component": "^0.2.2", + "filter-obj": "^1.1.0", + "split-on-first": "^1.0.0", + "strict-uri-encode": "^2.0.0" + }, + "engines": { + "node": ">=6" + }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" + } + }, + "node_modules/querystringify": { + "version": "2.2.0", + "resolved": "https://registry.npmjs.org/querystringify/-/querystringify-2.2.0.tgz", + "integrity": "sha512-FIqgj2EUvTa7R50u0rGsyTftzjYmv/a3hO345bZNrqabNqjtgiDMgmo4mkUjd+nzU5oF3dClKqFIPUKybUyqoQ==", + "dev": true, + "license": "MIT" + }, + "node_modules/queue": { + "version": "6.0.2", + "resolved": "https://registry.npmjs.org/queue/-/queue-6.0.2.tgz", + "integrity": "sha512-iHZWu+q3IdFZFX36ro/lKBkSvfkztY5Y7HMiPlOUjhupPcG2JMfst2KKEpu5XndviX/3UhFbRngUPNKtgvtZiA==", + "license": "MIT", + "dependencies": { + "inherits": "~2.0.3" + } + }, + "node_modules/randombytes": { + "version": "2.1.0", + "resolved": "https://registry.npmjs.org/randombytes/-/randombytes-2.1.0.tgz", + "integrity": "sha512-vYl3iOX+4CKUWuxGi9Ukhie6fsqXqS9FE2Zaic4tNFD2N2QQaXOMFbuKK4QmDHC0JO6B1Zp41J0LpT0oR68amQ==", + "dev": true, + "license": "MIT", + "peer": true, + "dependencies": { + "safe-buffer": "^5.1.0" + } + }, + "node_modules/range-parser": { + "version": "1.2.1", + "resolved": "https://registry.npmjs.org/range-parser/-/range-parser-1.2.1.tgz", + "integrity": "sha512-Hrgsx+orqoygnmhFbKaHE6c296J+HTAQXoxEF6gNupROmmGJRoyzfG3ccAveqCBrwr/2yxQ5BVd/GTl5agOwSg==", + "license": "MIT", + "engines": { + "node": ">= 0.6" + } + }, + "node_modules/rc": { + "version": "1.2.8", + "resolved": "https://registry.npmjs.org/rc/-/rc-1.2.8.tgz", + "integrity": "sha512-y3bGgqKj3QBdxLbLkomlohkvsA8gdAiUQlSBJnBhfn+BPxg4bc62d8TcBW15wavDfgexCgccckhcZvywyQYPOw==", + "license": "(BSD-2-Clause OR MIT OR Apache-2.0)", + "dependencies": { + "deep-extend": "^0.6.0", + "ini": "~1.3.0", + "minimist": "^1.2.0", + "strip-json-comments": "~2.0.1" + }, + "bin": { + "rc": "cli.js" + } + }, + "node_modules/rc/node_modules/strip-json-comments": { + "version": "2.0.1", + "resolved": "https://registry.npmjs.org/strip-json-comments/-/strip-json-comments-2.0.1.tgz", + "integrity": "sha512-4gB8na07fecVVkOI6Rs4e7T6NOTki5EmL7TUduTs6bu3EdnSycntVJ4re8kgZA+wx9IueI2Y11bfbgwtzuE0KQ==", + "license": "MIT", + "engines": { + "node": ">=0.10.0" + } + }, + "node_modules/react": { + "version": "19.0.0", + "resolved": "https://registry.npmjs.org/react/-/react-19.0.0.tgz", + "integrity": "sha512-V8AVnmPIICiWpGfm6GLzCR/W5FXLchHop40W4nXBmdlEceh16rCN8O8LNWm5bh5XUX91fh7KpA+W0TgMKmgTpQ==", + "license": "MIT", + "engines": { + "node": ">=0.10.0" + } + }, + "node_modules/react-devtools-core": { + "version": "6.1.2", + "resolved": "https://registry.npmjs.org/react-devtools-core/-/react-devtools-core-6.1.2.tgz", + "integrity": "sha512-ldFwzufLletzCikNJVYaxlxMLu7swJ3T2VrGfzXlMsVhZhPDKXA38DEROidaYZVgMAmQnIjymrmqto5pyfrwPA==", + "license": "MIT", + "dependencies": { + "shell-quote": "^1.6.1", + "ws": "^7" + } + }, + "node_modules/react-devtools-core/node_modules/ws": { + "version": "7.5.10", + "resolved": "https://registry.npmjs.org/ws/-/ws-7.5.10.tgz", + "integrity": "sha512-+dbF1tHwZpXcbOJdVOkzLDxZP1ailvSxM6ZweXTegylPny803bFhA+vqBYw4s31NSAk4S2Qz+AKXK9a4wkdjcQ==", + "license": "MIT", + "engines": { + "node": ">=8.3.0" + }, + "peerDependencies": { + "bufferutil": "^4.0.1", + "utf-8-validate": "^5.0.2" + }, + "peerDependenciesMeta": { + "bufferutil": { + "optional": true + }, + "utf-8-validate": { + "optional": true + } + } + }, + "node_modules/react-dom": { + "version": "19.0.0", + "resolved": "https://registry.npmjs.org/react-dom/-/react-dom-19.0.0.tgz", + "integrity": "sha512-4GV5sHFG0e/0AD4X+ySy6UJd3jVl1iNsNHdpad0qhABJ11twS3TTBnseqsKurKcsNqCEFeGL3uLpVChpIO3QfQ==", + "license": "MIT", + "dependencies": { + "scheduler": "^0.25.0" + }, + "peerDependencies": { + "react": "^19.0.0" + } + }, + "node_modules/react-fast-compare": { + "version": "3.2.2", + "resolved": "https://registry.npmjs.org/react-fast-compare/-/react-fast-compare-3.2.2.tgz", + "integrity": "sha512-nsO+KSNgo1SbJqJEYRE9ERzo7YtYbou/OqjSQKxV7jcKox7+usiUVZOAC+XnDOABXggQTno0Y1CpVnuWEc1boQ==", + "license": "MIT" + }, + "node_modules/react-freeze": { + "version": "1.0.4", + "resolved": "https://registry.npmjs.org/react-freeze/-/react-freeze-1.0.4.tgz", + "integrity": "sha512-r4F0Sec0BLxWicc7HEyo2x3/2icUTrRmDjaaRyzzn+7aDyFZliszMDOgLVwSnQnYENOlL1o569Ze2HZefk8clA==", + "license": "MIT", + "engines": { + "node": ">=10" + }, + "peerDependencies": { + "react": ">=17.0.0" + } + }, + "node_modules/react-is": { + "version": "19.1.0", + "resolved": "https://registry.npmjs.org/react-is/-/react-is-19.1.0.tgz", + "integrity": "sha512-Oe56aUPnkHyyDxxkvqtd7KkdQP5uIUfHxd5XTb3wE9d/kRnZLmKbDB0GWk919tdQ+mxxPtG6EAs6RMT6i1qtHg==", + "license": "MIT" + }, + "node_modules/react-native": { + "version": "0.79.3", + "resolved": "https://registry.npmjs.org/react-native/-/react-native-0.79.3.tgz", + "integrity": "sha512-EzH1+9gzdyEo9zdP6u7Sh3Jtf5EOMwzy+TK65JysdlgAzfEVfq4mNeXcAZ6SmD+CW6M7ARJbvXLyTD0l2S5rpg==", + "license": "MIT", + "dependencies": { + "@jest/create-cache-key-function": "^29.7.0", + "@react-native/assets-registry": "0.79.3", + "@react-native/codegen": "0.79.3", + "@react-native/community-cli-plugin": "0.79.3", + "@react-native/gradle-plugin": "0.79.3", + "@react-native/js-polyfills": "0.79.3", + "@react-native/normalize-colors": "0.79.3", + "@react-native/virtualized-lists": "0.79.3", + "abort-controller": "^3.0.0", + "anser": "^1.4.9", + "ansi-regex": "^5.0.0", + "babel-jest": "^29.7.0", + "babel-plugin-syntax-hermes-parser": "0.25.1", + "base64-js": "^1.5.1", + "chalk": "^4.0.0", + "commander": "^12.0.0", + "event-target-shim": "^5.0.1", + "flow-enums-runtime": "^0.0.6", + "glob": "^7.1.1", + "invariant": "^2.2.4", + "jest-environment-node": "^29.7.0", + "memoize-one": "^5.0.0", + "metro-runtime": "^0.82.0", + "metro-source-map": "^0.82.0", + "nullthrows": "^1.1.1", + "pretty-format": "^29.7.0", + "promise": "^8.3.0", + "react-devtools-core": "^6.1.1", + "react-refresh": "^0.14.0", + "regenerator-runtime": "^0.13.2", + "scheduler": "0.25.0", + "semver": "^7.1.3", + "stacktrace-parser": "^0.1.10", + "whatwg-fetch": "^3.0.0", + "ws": "^6.2.3", + "yargs": "^17.6.2" + }, + "bin": { + "react-native": "cli.js" + }, + "engines": { + "node": ">=18" + }, + "peerDependencies": { + "@types/react": "^19.0.0", + "react": "^19.0.0" + }, + "peerDependenciesMeta": { + "@types/react": { + "optional": true + } + } + }, + "node_modules/react-native-calendars": { + "version": "1.1312.0", + "resolved": "https://registry.npmjs.org/react-native-calendars/-/react-native-calendars-1.1312.0.tgz", + "integrity": "sha512-Hx0AZ/MXlwiKu47DPnGop9Zqf2poRR4OEk/EhcpgRr41iBL6yM+puhCciJGAghVaHHxZ4lny2ZvM7b+NOeE5WQ==", + "license": "MIT", + "dependencies": { + "hoist-non-react-statics": "^3.3.1", + "lodash": "^4.17.15", + "memoize-one": "^5.2.1", + "prop-types": "^15.5.10", + "react-native-safe-area-context": "4.5.0", + "react-native-swipe-gestures": "^1.0.5", + "recyclerlistview": "^4.0.0", + "xdate": "^0.8.0" + }, + "engines": { + "node": ">=18" + }, + "optionalDependencies": { + "moment": "^2.29.4" + } + }, + "node_modules/react-native-calendars/node_modules/react-native-safe-area-context": { + "version": "4.5.0", + "resolved": "https://registry.npmjs.org/react-native-safe-area-context/-/react-native-safe-area-context-4.5.0.tgz", + "integrity": "sha512-0WORnk9SkREGUg2V7jHZbuN5x4vcxj/1B0QOcXJjdYWrzZHgLcUzYWWIUecUPJh747Mwjt/42RZDOaFn3L8kPQ==", + "license": "MIT", + "peerDependencies": { + "react": "*", + "react-native": "*" + } + }, + "node_modules/react-native-chart-kit": { + "version": "6.12.0", + "resolved": "https://registry.npmjs.org/react-native-chart-kit/-/react-native-chart-kit-6.12.0.tgz", + "integrity": "sha512-nZLGyCFzZ7zmX0KjYeeSV1HKuPhl1wOMlTAqa0JhlyW62qV/1ZPXHgT8o9s8mkFaGxdqbspOeuaa6I9jUQDgnA==", + "license": "MIT", + "dependencies": { + "lodash": "^4.17.13", + "paths-js": "^0.4.10", + "point-in-polygon": "^1.0.1" + }, + "peerDependencies": { + "react": "> 16.7.0", + "react-native": ">= 0.50.0", + "react-native-svg": "> 6.4.1" + } + }, + "node_modules/react-native-edge-to-edge": { + "version": "1.6.0", + "resolved": "https://registry.npmjs.org/react-native-edge-to-edge/-/react-native-edge-to-edge-1.6.0.tgz", + "integrity": "sha512-2WCNdE3Qd6Fwg9+4BpbATUxCLcouF6YRY7K+J36KJ4l3y+tWN6XCqAC4DuoGblAAbb2sLkhEDp4FOlbOIot2Og==", + "license": "MIT", + "peerDependencies": { + "react": "*", + "react-native": "*" + } + }, + "node_modules/react-native-gesture-handler": { + "version": "2.24.0", + "resolved": "https://registry.npmjs.org/react-native-gesture-handler/-/react-native-gesture-handler-2.24.0.tgz", + "integrity": "sha512-ZdWyOd1C8axKJHIfYxjJKCcxjWEpUtUWgTOVY2wynbiveSQDm8X/PDyAKXSer/GOtIpjudUbACOndZXCN3vHsw==", + "license": "MIT", + "dependencies": { + "@egjs/hammerjs": "^2.0.17", + "hoist-non-react-statics": "^3.3.0", + "invariant": "^2.2.4" + }, + "peerDependencies": { + "react": "*", + "react-native": "*" + } + }, + "node_modules/react-native-google-places-autocomplete": { + "version": "2.5.7", + "resolved": "https://registry.npmjs.org/react-native-google-places-autocomplete/-/react-native-google-places-autocomplete-2.5.7.tgz", + "integrity": "sha512-yWEJ31gsRptStEZDele9no0J6Z+MxtNpQKKwjvGmFrWmpYDEAzpRtxy1Xq0u+ckMepJfrg/EU+OL5LgtMbnCDA==", + "license": "MIT", + "dependencies": { + "lodash.debounce": "^4.0.8", + "prop-types": "^15.7.2", + "qs": "~6.9.1", + "uuid": "^10.0.0" + }, + "peerDependencies": { + "react-native": ">= 0.59" + } + }, + "node_modules/react-native-google-places-autocomplete/node_modules/uuid": { + "version": "10.0.0", + "resolved": "https://registry.npmjs.org/uuid/-/uuid-10.0.0.tgz", + "integrity": "sha512-8XkAphELsDnEGrDxUOHB3RGvXz6TeuYSGEZBOjtTtPm2lwhGBjLgOzLHB63IUWfBpNucQjND6d3AOudO+H3RWQ==", + "funding": [ + "https://github.com/sponsors/broofa", + "https://github.com/sponsors/ctavan" + ], + "license": "MIT", + "bin": { + "uuid": "dist/bin/uuid" + } + }, + "node_modules/react-native-is-edge-to-edge": { + "version": "1.1.7", + "resolved": "https://registry.npmjs.org/react-native-is-edge-to-edge/-/react-native-is-edge-to-edge-1.1.7.tgz", + "integrity": "sha512-EH6i7E8epJGIcu7KpfXYXiV2JFIYITtq+rVS8uEb+92naMRBdxhTuS8Wn2Q7j9sqyO0B+Xbaaf9VdipIAmGW4w==", + "license": "MIT", + "peerDependencies": { + "react": "*", + "react-native": "*" + } + }, + "node_modules/react-native-maps": { + "version": "1.20.1", + "resolved": "https://registry.npmjs.org/react-native-maps/-/react-native-maps-1.20.1.tgz", + "integrity": "sha512-NZI3B5Z6kxAb8gzb2Wxzu/+P2SlFIg1waHGIpQmazDSCRkNoHNY4g96g+xS0QPSaG/9xRBbDNnd2f2/OW6t6LQ==", + "license": "MIT", + "dependencies": { + "@types/geojson": "^7946.0.13" + }, + "engines": { + "node": ">=18" + }, + "peerDependencies": { + "react": ">= 17.0.1", + "react-native": ">= 0.64.3", + "react-native-web": ">= 0.11" + }, + "peerDependenciesMeta": { + "react-native-web": { + "optional": true + } + } + }, + "node_modules/react-native-reanimated": { + "version": "3.17.5", + "resolved": "https://registry.npmjs.org/react-native-reanimated/-/react-native-reanimated-3.17.5.tgz", + "integrity": "sha512-SxBK7wQfJ4UoWoJqQnmIC7ZjuNgVb9rcY5Xc67upXAFKftWg0rnkknTw6vgwnjRcvYThrjzUVti66XoZdDJGtw==", + "license": "MIT", + "dependencies": { + "@babel/plugin-transform-arrow-functions": "^7.0.0-0", + "@babel/plugin-transform-class-properties": "^7.0.0-0", + "@babel/plugin-transform-classes": "^7.0.0-0", + "@babel/plugin-transform-nullish-coalescing-operator": "^7.0.0-0", + "@babel/plugin-transform-optional-chaining": "^7.0.0-0", + "@babel/plugin-transform-shorthand-properties": "^7.0.0-0", + "@babel/plugin-transform-template-literals": "^7.0.0-0", + "@babel/plugin-transform-unicode-regex": "^7.0.0-0", + "@babel/preset-typescript": "^7.16.7", + "convert-source-map": "^2.0.0", + "invariant": "^2.2.4", + "react-native-is-edge-to-edge": "1.1.7" + }, + "peerDependencies": { + "@babel/core": "^7.0.0-0", + "react": "*", + "react-native": "*" + } + }, + "node_modules/react-native-reanimated-carousel": { + "version": "4.0.2", + "resolved": "https://registry.npmjs.org/react-native-reanimated-carousel/-/react-native-reanimated-carousel-4.0.2.tgz", + "integrity": "sha512-vNpCfPlFoOVKHd+oB7B0luoJswp+nyz0NdJD8+LCrf25JiNQXfM22RSJhLaksBHqk3fm8R4fKWPNcfy5w7wL1Q==", + "license": "MIT", + "peerDependencies": { + "react": ">=18.0.0", + "react-native": ">=0.70.3", + "react-native-gesture-handler": ">=2.9.0", + "react-native-reanimated": ">=3.0.0" + } + }, + "node_modules/react-native-safe-area-context": { + "version": "5.4.0", + "resolved": "https://registry.npmjs.org/react-native-safe-area-context/-/react-native-safe-area-context-5.4.0.tgz", + "integrity": "sha512-JaEThVyJcLhA+vU0NU8bZ0a1ih6GiF4faZ+ArZLqpYbL6j7R3caRqj+mE3lEtKCuHgwjLg3bCxLL1GPUJZVqUA==", + "license": "MIT", + "peerDependencies": { + "react": "*", + "react-native": "*" + } + }, + "node_modules/react-native-screens": { + "version": "4.11.1", + "resolved": "https://registry.npmjs.org/react-native-screens/-/react-native-screens-4.11.1.tgz", + "integrity": "sha512-F0zOzRVa3ptZfLpD0J8ROdo+y1fEPw+VBFq1MTY/iyDu08al7qFUO5hLMd+EYMda5VXGaTFCa8q7bOppUszhJw==", + "license": "MIT", + "dependencies": { + "react-freeze": "^1.0.0", + "react-native-is-edge-to-edge": "^1.1.7", + "warn-once": "^0.1.0" + }, + "peerDependencies": { + "react": "*", + "react-native": "*" + } + }, + "node_modules/react-native-svg": { + "version": "15.11.2", + "resolved": "https://registry.npmjs.org/react-native-svg/-/react-native-svg-15.11.2.tgz", + "integrity": "sha512-+YfF72IbWQUKzCIydlijV1fLuBsQNGMT6Da2kFlo1sh+LE3BIm/2Q7AR1zAAR6L0BFLi1WaQPLfFUC9bNZpOmw==", + "license": "MIT", + "dependencies": { + "css-select": "^5.1.0", + "css-tree": "^1.1.3", + "warn-once": "0.1.1" + }, + "peerDependencies": { + "react": "*", + "react-native": "*" + } + }, + "node_modules/react-native-swipe-gestures": { + "version": "1.0.5", + "resolved": "https://registry.npmjs.org/react-native-swipe-gestures/-/react-native-swipe-gestures-1.0.5.tgz", + "integrity": "sha512-Ns7Bn9H/Tyw278+5SQx9oAblDZ7JixyzeOczcBK8dipQk2pD7Djkcfnf1nB/8RErAmMLL9iXgW0QHqiII8AhKw==", + "license": "MIT" + }, + "node_modules/react-native-vector-icons": { + "version": "10.2.0", + "resolved": "https://registry.npmjs.org/react-native-vector-icons/-/react-native-vector-icons-10.2.0.tgz", + "integrity": "sha512-n5HGcxUuVaTf9QJPs/W22xQpC2Z9u0nb0KgLPnVltP8vdUvOp6+R26gF55kilP/fV4eL4vsAHUqUjewppJMBOQ==", + "license": "MIT", + "dependencies": { + "prop-types": "^15.7.2", + "yargs": "^16.1.1" + }, + "bin": { + "fa-upgrade.sh": "bin/fa-upgrade.sh", + "fa5-upgrade": "bin/fa5-upgrade.sh", + "fa6-upgrade": "bin/fa6-upgrade.sh", + "generate-icon": "bin/generate-icon.js" + } + }, + "node_modules/react-native-vector-icons/node_modules/cliui": { + "version": "7.0.4", + "resolved": "https://registry.npmjs.org/cliui/-/cliui-7.0.4.tgz", + "integrity": "sha512-OcRE68cOsVMXp1Yvonl/fzkQOyjLSu/8bhPDfQt0e0/Eb283TKP20Fs2MqoPsr9SwA595rRCA+QMzYc9nBP+JQ==", + "license": "ISC", + "dependencies": { + "string-width": "^4.2.0", + "strip-ansi": "^6.0.0", + "wrap-ansi": "^7.0.0" + } + }, + "node_modules/react-native-vector-icons/node_modules/emoji-regex": { + "version": "8.0.0", + "resolved": "https://registry.npmjs.org/emoji-regex/-/emoji-regex-8.0.0.tgz", + "integrity": "sha512-MSjYzcWNOA0ewAHpz0MxpYFvwg6yjy1NG3xteoqz644VCo/RPgnr1/GGt+ic3iJTzQ8Eu3TdM14SawnVUmGE6A==", + "license": "MIT" + }, + "node_modules/react-native-vector-icons/node_modules/string-width": { + "version": "4.2.3", + "resolved": "https://registry.npmjs.org/string-width/-/string-width-4.2.3.tgz", + "integrity": "sha512-wKyQRQpjJ0sIp62ErSZdGsjMJWsap5oRNihHhu6G7JVO/9jIB6UyevL+tXuOqrng8j/cxKTWyWUwvSTriiZz/g==", + "license": "MIT", + "dependencies": { + "emoji-regex": "^8.0.0", + "is-fullwidth-code-point": "^3.0.0", + "strip-ansi": "^6.0.1" + }, + "engines": { + "node": ">=8" + } + }, + "node_modules/react-native-vector-icons/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==", + "license": "MIT", + "dependencies": { + "ansi-regex": "^5.0.1" + }, + "engines": { + "node": ">=8" + } + }, + "node_modules/react-native-vector-icons/node_modules/yargs": { + "version": "16.2.0", + "resolved": "https://registry.npmjs.org/yargs/-/yargs-16.2.0.tgz", + "integrity": "sha512-D1mvvtDG0L5ft/jGWkLpG1+m0eQxOfaBvTNELraWj22wSVUMWxZUvYgJYcKh6jGGIkJFhH4IZPQhR4TKpc8mBw==", + "license": "MIT", + "dependencies": { + "cliui": "^7.0.2", + "escalade": "^3.1.1", + "get-caller-file": "^2.0.5", + "require-directory": "^2.1.1", + "string-width": "^4.2.0", + "y18n": "^5.0.5", + "yargs-parser": "^20.2.2" + }, + "engines": { + "node": ">=10" + } + }, + "node_modules/react-native-vector-icons/node_modules/yargs-parser": { + "version": "20.2.9", + "resolved": "https://registry.npmjs.org/yargs-parser/-/yargs-parser-20.2.9.tgz", + "integrity": "sha512-y11nGElTIV+CT3Zv9t7VKl+Q3hTQoT9a1Qzezhhl6Rp21gJ/IVTW7Z3y9EWXhuUBC2Shnf+DX0antecpAwSP8w==", + "license": "ISC", + "engines": { + "node": ">=10" + } + }, + "node_modules/react-native-web": { + "version": "0.20.0", + "resolved": "https://registry.npmjs.org/react-native-web/-/react-native-web-0.20.0.tgz", + "integrity": "sha512-OOSgrw+aON6R3hRosCau/xVxdLzbjEcsLysYedka0ZON4ZZe6n9xgeN9ZkoejhARM36oTlUgHIQqxGutEJ9Wxg==", + "license": "MIT", + "dependencies": { + "@babel/runtime": "^7.18.6", + "@react-native/normalize-colors": "^0.74.1", + "fbjs": "^3.0.4", + "inline-style-prefixer": "^7.0.1", + "memoize-one": "^6.0.0", + "nullthrows": "^1.1.1", + "postcss-value-parser": "^4.2.0", + "styleq": "^0.1.3" + }, + "peerDependencies": { + "react": "^18.0.0 || ^19.0.0", + "react-dom": "^18.0.0 || ^19.0.0" + } + }, + "node_modules/react-native-web/node_modules/@react-native/normalize-colors": { + "version": "0.74.89", + "resolved": "https://registry.npmjs.org/@react-native/normalize-colors/-/normalize-colors-0.74.89.tgz", + "integrity": "sha512-qoMMXddVKVhZ8PA1AbUCk83trpd6N+1nF2A6k1i6LsQObyS92fELuk8kU/lQs6M7BsMHwqyLCpQJ1uFgNvIQXg==", + "license": "MIT" + }, + "node_modules/react-native-web/node_modules/memoize-one": { + "version": "6.0.0", + "resolved": "https://registry.npmjs.org/memoize-one/-/memoize-one-6.0.0.tgz", + "integrity": "sha512-rkpe71W0N0c0Xz6QD0eJETuWAJGnJ9afsl1srmwPrI+yBCkge5EycXXbYRyvL29zZVUWQCY7InPRCv3GDXuZNw==", + "license": "MIT" + }, + "node_modules/react-native/node_modules/@react-native/normalize-colors": { + "version": "0.79.3", + "resolved": "https://registry.npmjs.org/@react-native/normalize-colors/-/normalize-colors-0.79.3.tgz", + "integrity": "sha512-T75NIQPRFCj6DFMxtcVMJTZR+3vHXaUMSd15t+CkJpc5LnyX91GVaPxpRSAdjFh7m3Yppl5MpdjV/fntImheYQ==", + "license": "MIT" + }, + "node_modules/react-native/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==", + "license": "MIT", + "dependencies": { + "balanced-match": "^1.0.0", + "concat-map": "0.0.1" + } + }, + "node_modules/react-native/node_modules/commander": { + "version": "12.1.0", + "resolved": "https://registry.npmjs.org/commander/-/commander-12.1.0.tgz", + "integrity": "sha512-Vw8qHK3bZM9y/P10u3Vib8o/DdkvA2OtPtZvD871QKjy74Wj1WSKFILMPRPSdUSx5RFK1arlJzEtA4PkFgnbuA==", + "license": "MIT", + "engines": { + "node": ">=18" + } + }, + "node_modules/react-native/node_modules/glob": { + "version": "7.2.3", + "resolved": "https://registry.npmjs.org/glob/-/glob-7.2.3.tgz", + "integrity": "sha512-nFR0zLpU2YCaRxwoCJvL6UvCH2JFyFVIvwTLsIf21AuHlMskA1hhTdk+LlYJtOlYt9v6dvszD2BGRqBL+iQK9Q==", + "deprecated": "Glob versions prior to v9 are no longer supported", + "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" + } + }, + "node_modules/react-native/node_modules/minimatch": { + "version": "3.1.2", + "resolved": "https://registry.npmjs.org/minimatch/-/minimatch-3.1.2.tgz", + "integrity": "sha512-J7p63hRiAjw1NDEww1W7i37+ByIrOWO5XQQAzZ3VOcL0PNybwpfmV/N05zFAzwQ9USyEcX6t3UO+K5aqBQOIHw==", + "license": "ISC", + "dependencies": { + "brace-expansion": "^1.1.7" + }, + "engines": { + "node": "*" + } + }, + "node_modules/react-native/node_modules/semver": { + "version": "7.7.2", + "resolved": "https://registry.npmjs.org/semver/-/semver-7.7.2.tgz", + "integrity": "sha512-RF0Fw+rO5AMf9MAyaRXI4AV0Ulj5lMHqVxxdSgiVbixSCXoEmmX/jk0CuJw4+3SqroYO9VoUh+HcuJivvtJemA==", + "license": "ISC", + "bin": { + "semver": "bin/semver.js" + }, + "engines": { + "node": ">=10" + } + }, + "node_modules/react-native/node_modules/ws": { + "version": "6.2.3", + "resolved": "https://registry.npmjs.org/ws/-/ws-6.2.3.tgz", + "integrity": "sha512-jmTjYU0j60B+vHey6TfR3Z7RD61z/hmxBS3VMSGIrroOWXQEneK1zNuotOUrGyBHQj0yrpsLHPWtigEFd13ndA==", + "license": "MIT", + "dependencies": { + "async-limiter": "~1.0.0" + } + }, + "node_modules/react-refresh": { + "version": "0.14.2", + "resolved": "https://registry.npmjs.org/react-refresh/-/react-refresh-0.14.2.tgz", + "integrity": "sha512-jCvmsr+1IUSMUyzOkRcvnVbX3ZYC6g9TDrDbFuFmRDq7PD4yaGbLKNQL6k2jnArV8hjYxh7hVhAZB6s9HDGpZA==", + "license": "MIT", + "engines": { + "node": ">=0.10.0" + } + }, + "node_modules/react-server-dom-webpack": { + "version": "19.0.0", + "resolved": "https://registry.npmjs.org/react-server-dom-webpack/-/react-server-dom-webpack-19.0.0.tgz", + "integrity": "sha512-hLug9KEXLc8vnU9lDNe2b2rKKDaqrp5gNiES4uyu2Up3FZfZJZmdwLFXlWzdA9gTB/6/cWduSB2K1Lfag2pSvw==", + "dev": true, + "license": "MIT", + "dependencies": { + "acorn-loose": "^8.3.0", + "neo-async": "^2.6.1", + "webpack-sources": "^3.2.0" + }, + "engines": { + "node": ">=0.10.0" + }, + "peerDependencies": { + "react": "^19.0.0", + "react-dom": "^19.0.0", + "webpack": "^5.59.0" + } + }, + "node_modules/react-test-renderer": { + "version": "18.3.1", + "resolved": "https://registry.npmjs.org/react-test-renderer/-/react-test-renderer-18.3.1.tgz", + "integrity": "sha512-KkAgygexHUkQqtvvx/otwxtuFu5cVjfzTCtjXLH9boS19/Nbtg84zS7wIQn39G8IlrhThBpQsMKkq5ZHZIYFXA==", + "dev": true, + "license": "MIT", + "dependencies": { + "react-is": "^18.3.1", + "react-shallow-renderer": "^16.15.0", + "scheduler": "^0.23.2" + }, + "peerDependencies": { + "react": "^18.3.1" + } + }, + "node_modules/react-test-renderer/node_modules/react-is": { + "version": "18.3.1", + "resolved": "https://registry.npmjs.org/react-is/-/react-is-18.3.1.tgz", + "integrity": "sha512-/LLMVyas0ljjAtoYiPqYiL8VWXzUUdThrmU5+n20DZv+a+ClRoevUzw5JxU+Ieh5/c87ytoTBV9G1FiKfNJdmg==", + "dev": true, + "license": "MIT" + }, + "node_modules/react-test-renderer/node_modules/react-shallow-renderer": { + "version": "16.15.0", + "resolved": "https://registry.npmjs.org/react-shallow-renderer/-/react-shallow-renderer-16.15.0.tgz", + "integrity": "sha512-oScf2FqQ9LFVQgA73vr86xl2NaOIX73rh+YFqcOp68CWj56tSfgtGKrEbyhCj0rSijyG9M1CYprTh39fBi5hzA==", + "dev": true, + "license": "MIT", + "dependencies": { + "object-assign": "^4.1.1", + "react-is": "^16.12.0 || ^17.0.0 || ^18.0.0" + }, + "peerDependencies": { + "react": "^16.0.0 || ^17.0.0 || ^18.0.0" + } + }, + "node_modules/react-test-renderer/node_modules/scheduler": { + "version": "0.23.2", + "resolved": "https://registry.npmjs.org/scheduler/-/scheduler-0.23.2.tgz", + "integrity": "sha512-UOShsPwz7NrMUqhR6t0hWjFduvOzbtv7toDH1/hIrfRNIDBnnBWd0CwJTGvTpngVlmwGCdP9/Zl/tVrDqcuYzQ==", + "dev": true, + "license": "MIT", + "dependencies": { + "loose-envify": "^1.1.0" + } + }, + "node_modules/recyclerlistview": { + "version": "4.2.3", + "resolved": "https://registry.npmjs.org/recyclerlistview/-/recyclerlistview-4.2.3.tgz", + "integrity": "sha512-STR/wj/FyT8EMsBzzhZ1l2goYirMkIgfV3gYEPxI3Kf3lOnu6f7Dryhyw7/IkQrgX5xtTcDrZMqytvteH9rL3g==", + "license": "Apache-2.0", + "dependencies": { + "lodash.debounce": "4.0.8", + "prop-types": "15.8.1", + "ts-object-utils": "0.0.5" + }, + "peerDependencies": { + "react": ">= 15.2.1", + "react-native": ">= 0.30.0" + } + }, + "node_modules/regenerate": { + "version": "1.4.2", + "resolved": "https://registry.npmjs.org/regenerate/-/regenerate-1.4.2.tgz", + "integrity": "sha512-zrceR/XhGYU/d/opr2EKO7aRHUeiBI8qjtfHqADTwZd6Szfy16la6kqD0MIUs5z5hx6AaKa+PixpPrR289+I0A==", + "license": "MIT" + }, + "node_modules/regenerate-unicode-properties": { + "version": "10.2.0", + "resolved": "https://registry.npmjs.org/regenerate-unicode-properties/-/regenerate-unicode-properties-10.2.0.tgz", + "integrity": "sha512-DqHn3DwbmmPVzeKj9woBadqmXxLvQoQIwu7nopMc72ztvxVmVk2SBhSnx67zuye5TP+lJsb/TBQsjLKhnDf3MA==", + "license": "MIT", + "dependencies": { + "regenerate": "^1.4.2" + }, + "engines": { + "node": ">=4" + } + }, + "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" + }, + "node_modules/regexpu-core": { + "version": "6.2.0", + "resolved": "https://registry.npmjs.org/regexpu-core/-/regexpu-core-6.2.0.tgz", + "integrity": "sha512-H66BPQMrv+V16t8xtmq+UC0CBpiTBA60V8ibS1QVReIp8T1z8hwFxqcGzm9K6lgsN7sB5edVH8a+ze6Fqm4weA==", + "license": "MIT", + "dependencies": { + "regenerate": "^1.4.2", + "regenerate-unicode-properties": "^10.2.0", + "regjsgen": "^0.8.0", + "regjsparser": "^0.12.0", + "unicode-match-property-ecmascript": "^2.0.0", + "unicode-match-property-value-ecmascript": "^2.1.0" + }, + "engines": { + "node": ">=4" + } + }, + "node_modules/regjsgen": { + "version": "0.8.0", + "resolved": "https://registry.npmjs.org/regjsgen/-/regjsgen-0.8.0.tgz", + "integrity": "sha512-RvwtGe3d7LvWiDQXeQw8p5asZUmfU1G/l6WbUXeHta7Y2PEIvBTwH6E2EfmYUK8pxcxEdEmaomqyp0vZZ7C+3Q==", + "license": "MIT" + }, + "node_modules/regjsparser": { + "version": "0.12.0", + "resolved": "https://registry.npmjs.org/regjsparser/-/regjsparser-0.12.0.tgz", + "integrity": "sha512-cnE+y8bz4NhMjISKbgeVJtqNbtf5QpjZP+Bslo+UqkIt9QPnX9q095eiRRASJG1/tz6dlNr6Z5NsBiWYokp6EQ==", + "license": "BSD-2-Clause", + "dependencies": { + "jsesc": "~3.0.2" + }, + "bin": { + "regjsparser": "bin/parser" + } + }, + "node_modules/regjsparser/node_modules/jsesc": { + "version": "3.0.2", + "resolved": "https://registry.npmjs.org/jsesc/-/jsesc-3.0.2.tgz", + "integrity": "sha512-xKqzzWXDttJuOcawBt4KnKHHIf5oQ/Cxax+0PWFG+DFDgHNAdi+TXECADI+RYiFUMmx8792xsMbbgXj4CwnP4g==", + "license": "MIT", + "bin": { + "jsesc": "bin/jsesc" + }, + "engines": { + "node": ">=6" + } + }, + "node_modules/require-directory": { + "version": "2.1.1", + "resolved": "https://registry.npmjs.org/require-directory/-/require-directory-2.1.1.tgz", + "integrity": "sha512-fGxEI7+wsG9xrvdjsrlmL22OMTTiHRwAMroiEeMgq8gzoLC/PQr7RsRDSTLUg/bZAZtF+TVIkHc6/4RIKrui+Q==", + "license": "MIT", + "engines": { + "node": ">=0.10.0" + } + }, + "node_modules/require-from-string": { + "version": "2.0.2", + "resolved": "https://registry.npmjs.org/require-from-string/-/require-from-string-2.0.2.tgz", + "integrity": "sha512-Xf0nWe6RseziFMu+Ap9biiUbmplq6S9/p+7w7YXP/JBHhrUDDUhwa+vANyubuqfZWTveU//DYVGsDG7RKL/vEw==", + "license": "MIT", + "engines": { + "node": ">=0.10.0" + } + }, + "node_modules/requireg": { + "version": "0.2.2", + "resolved": "https://registry.npmjs.org/requireg/-/requireg-0.2.2.tgz", + "integrity": "sha512-nYzyjnFcPNGR3lx9lwPPPnuQxv6JWEZd2Ci0u9opN7N5zUEPIhY/GbL3vMGOr2UXwEg9WwSyV9X9Y/kLFgPsOg==", + "dependencies": { + "nested-error-stacks": "~2.0.1", + "rc": "~1.2.7", + "resolve": "~1.7.1" + }, + "engines": { + "node": ">= 4.0.0" + } + }, + "node_modules/requireg/node_modules/resolve": { + "version": "1.7.1", + "resolved": "https://registry.npmjs.org/resolve/-/resolve-1.7.1.tgz", + "integrity": "sha512-c7rwLofp8g1U+h1KNyHL/jicrKg1Ek4q+Lr33AL65uZTinUZHe30D5HlyN5V9NW0JX1D5dXQ4jqW5l7Sy/kGfw==", + "license": "MIT", + "dependencies": { + "path-parse": "^1.0.5" + } + }, + "node_modules/requires-port": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/requires-port/-/requires-port-1.0.0.tgz", + "integrity": "sha512-KigOCHcocU3XODJxsu8i/j8T9tzT4adHiecwORRQ0ZZFcp7ahwXuRU1m+yuO90C5ZUyGeGfocHDI14M3L3yDAQ==", + "dev": true, + "license": "MIT" + }, + "node_modules/resolve": { + "version": "1.22.10", + "resolved": "https://registry.npmjs.org/resolve/-/resolve-1.22.10.tgz", + "integrity": "sha512-NPRy+/ncIMeDlTAsuqwKIiferiawhefFJtkNSW0qZJEqMEb+qBt/77B/jGeeek+F0uOeN05CDa6HXbbIgtVX4w==", + "license": "MIT", + "dependencies": { + "is-core-module": "^2.16.0", + "path-parse": "^1.0.7", + "supports-preserve-symlinks-flag": "^1.0.0" + }, + "bin": { + "resolve": "bin/resolve" + }, + "engines": { + "node": ">= 0.4" + }, + "funding": { + "url": "https://github.com/sponsors/ljharb" + } + }, + "node_modules/resolve-cwd": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/resolve-cwd/-/resolve-cwd-3.0.0.tgz", + "integrity": "sha512-OrZaX2Mb+rJCpH/6CpSqt9xFVpN++x01XnN2ie9g6P5/3xelLAkXWVADpdz1IHD/KFfEXyE6V0U01OQ3UO2rEg==", + "dev": true, + "license": "MIT", + "dependencies": { + "resolve-from": "^5.0.0" + }, + "engines": { + "node": ">=8" + } + }, + "node_modules/resolve-from": { + "version": "5.0.0", + "resolved": "https://registry.npmjs.org/resolve-from/-/resolve-from-5.0.0.tgz", + "integrity": "sha512-qYg9KP24dD5qka9J47d0aVky0N+b4fTU89LN9iDnjB5waksiC49rvMB0PrUJQGoTmH50XPiqOvAjDfaijGxYZw==", + "license": "MIT", + "engines": { + "node": ">=8" + } + }, + "node_modules/resolve-workspace-root": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/resolve-workspace-root/-/resolve-workspace-root-2.0.0.tgz", + "integrity": "sha512-IsaBUZETJD5WsI11Wt8PKHwaIe45or6pwNc8yflvLJ4DWtImK9kuLoH5kUva/2Mmx/RdIyr4aONNSa2v9LTJsw==", + "license": "MIT" + }, + "node_modules/resolve.exports": { + "version": "2.0.3", + "resolved": "https://registry.npmjs.org/resolve.exports/-/resolve.exports-2.0.3.tgz", + "integrity": "sha512-OcXjMsGdhL4XnbShKpAcSqPMzQoYkYyhbEaeSko47MjRP9NfEQMhZkXL1DoFlt9LWQn4YttrdnV6X2OiyzBi+A==", + "license": "MIT", + "engines": { + "node": ">=10" + } + }, + "node_modules/restore-cursor": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/restore-cursor/-/restore-cursor-2.0.0.tgz", + "integrity": "sha512-6IzJLuGi4+R14vwagDHX+JrXmPVtPpn4mffDJ1UdR7/Edm87fl6yi8mMBIVvFtJaNTUvjughmW4hwLhRG7gC1Q==", + "license": "MIT", + "dependencies": { + "onetime": "^2.0.0", + "signal-exit": "^3.0.2" + }, + "engines": { + "node": ">=4" + } + }, + "node_modules/restore-cursor/node_modules/mimic-fn": { + "version": "1.2.0", + "resolved": "https://registry.npmjs.org/mimic-fn/-/mimic-fn-1.2.0.tgz", + "integrity": "sha512-jf84uxzwiuiIVKiOLpfYk7N46TSy8ubTonmneY9vrpHNAnp0QBt2BxWV9dO3/j+BoVAb+a5G6YDPW3M5HOdMWQ==", + "license": "MIT", + "engines": { + "node": ">=4" + } + }, + "node_modules/restore-cursor/node_modules/onetime": { + "version": "2.0.1", + "resolved": "https://registry.npmjs.org/onetime/-/onetime-2.0.1.tgz", + "integrity": "sha512-oyyPpiMaKARvvcgip+JV+7zci5L8D1W9RZIz2l1o08AM3pfspitVWnPt3mzHcBPp12oYMTy0pqrFs/C+m3EwsQ==", + "license": "MIT", + "dependencies": { + "mimic-fn": "^1.0.0" + }, + "engines": { + "node": ">=4" + } + }, + "node_modules/restore-cursor/node_modules/signal-exit": { + "version": "3.0.7", + "resolved": "https://registry.npmjs.org/signal-exit/-/signal-exit-3.0.7.tgz", + "integrity": "sha512-wnD2ZE+l+SPC/uoS0vXeE9L1+0wuaMqKlfz9AMUo38JsyLSBWSFcHR1Rri62LZc12vLr1gb3jl7iwQhgwpAbGQ==", + "license": "ISC" + }, + "node_modules/rimraf": { + "version": "3.0.2", + "resolved": "https://registry.npmjs.org/rimraf/-/rimraf-3.0.2.tgz", + "integrity": "sha512-JZkJMZkAGFFPP2YqXZXPbMlMBgsxzE8ILs4lMIX/2o0L9UBw9O/Y3o6wFw/i9YLapcUJWwqbi3kdxIPdC62TIA==", + "deprecated": "Rimraf versions prior to v4 are no longer supported", + "license": "ISC", + "dependencies": { + "glob": "^7.1.3" + }, + "bin": { + "rimraf": "bin.js" + }, + "funding": { + "url": "https://github.com/sponsors/isaacs" + } + }, + "node_modules/rimraf/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==", + "license": "MIT", + "dependencies": { + "balanced-match": "^1.0.0", + "concat-map": "0.0.1" + } + }, + "node_modules/rimraf/node_modules/glob": { + "version": "7.2.3", + "resolved": "https://registry.npmjs.org/glob/-/glob-7.2.3.tgz", + "integrity": "sha512-nFR0zLpU2YCaRxwoCJvL6UvCH2JFyFVIvwTLsIf21AuHlMskA1hhTdk+LlYJtOlYt9v6dvszD2BGRqBL+iQK9Q==", + "deprecated": "Glob versions prior to v9 are no longer supported", + "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" + } + }, + "node_modules/rimraf/node_modules/minimatch": { + "version": "3.1.2", + "resolved": "https://registry.npmjs.org/minimatch/-/minimatch-3.1.2.tgz", + "integrity": "sha512-J7p63hRiAjw1NDEww1W7i37+ByIrOWO5XQQAzZ3VOcL0PNybwpfmV/N05zFAzwQ9USyEcX6t3UO+K5aqBQOIHw==", + "license": "ISC", + "dependencies": { + "brace-expansion": "^1.1.7" + }, + "engines": { + "node": "*" + } + }, + "node_modules/safe-buffer": { + "version": "5.2.1", + "resolved": "https://registry.npmjs.org/safe-buffer/-/safe-buffer-5.2.1.tgz", + "integrity": "sha512-rp3So07KcdmmKbGvgaNxQSJr7bGVSVk5S9Eq1F+ppbRo70+YeaDxkw5Dd8NPN+GD6bjnYm2VuPuCXmpuYvmCXQ==", + "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/safer-buffer": { + "version": "2.1.2", + "resolved": "https://registry.npmjs.org/safer-buffer/-/safer-buffer-2.1.2.tgz", + "integrity": "sha512-YZo3K82SD7Riyi0E1EQPojLz7kpepnSQI9IyPbHHg1XXXevb5dJI7tpyN2ADxGcQbHG7vcyRHk0cbwqcQriUtg==", + "dev": true, + "license": "MIT" + }, + "node_modules/sax": { + "version": "1.4.1", + "resolved": "https://registry.npmjs.org/sax/-/sax-1.4.1.tgz", + "integrity": "sha512-+aWOz7yVScEGoKNd4PA10LZ8sk0A/z5+nXQG5giUO5rprX9jgYsTdov9qCchZiPIZezbZH+jRut8nPodFAX4Jg==", + "license": "ISC" + }, + "node_modules/saxes": { + "version": "6.0.0", + "resolved": "https://registry.npmjs.org/saxes/-/saxes-6.0.0.tgz", + "integrity": "sha512-xAg7SOnEhrm5zI3puOOKyy1OMcMlIJZYNJY7xLBwSze0UjhPLnWfj2GF2EpT0jmzaJKIWKHLsaSSajf35bcYnA==", + "dev": true, + "license": "ISC", + "dependencies": { + "xmlchars": "^2.2.0" + }, + "engines": { + "node": ">=v12.22.7" + } + }, + "node_modules/scheduler": { + "version": "0.25.0", + "resolved": "https://registry.npmjs.org/scheduler/-/scheduler-0.25.0.tgz", + "integrity": "sha512-xFVuu11jh+xcO7JOAGJNOXld8/TcEHK/4CituBUeUb5hqxJLj9YuemAEuvm9gQ/+pgXYfbQuqAkiYu+u7YEsNA==", + "license": "MIT" + }, + "node_modules/schema-utils": { + "version": "4.3.2", + "resolved": "https://registry.npmjs.org/schema-utils/-/schema-utils-4.3.2.tgz", + "integrity": "sha512-Gn/JaSk/Mt9gYubxTtSn/QCV4em9mpAPiR1rqy/Ocu19u/G9J5WWdNoUT4SiV6mFC3y6cxyFcFwdzPM3FgxGAQ==", + "license": "MIT", + "dependencies": { + "@types/json-schema": "^7.0.9", + "ajv": "^8.9.0", + "ajv-formats": "^2.1.1", + "ajv-keywords": "^5.1.0" + }, + "engines": { + "node": ">= 10.13.0" + }, + "funding": { + "type": "opencollective", + "url": "https://opencollective.com/webpack" + } + }, + "node_modules/semver": { + "version": "6.3.1", + "resolved": "https://registry.npmjs.org/semver/-/semver-6.3.1.tgz", + "integrity": "sha512-BR7VvDCVHO+q2xBEWskxS6DJE1qRnb7DxzUrogb71CWoSficBxYsiAGd+Kl0mmq/MprG9yArRkyrQxTO6XjMzA==", + "license": "ISC", + "bin": { + "semver": "bin/semver.js" + } + }, + "node_modules/send": { + "version": "0.19.1", + "resolved": "https://registry.npmjs.org/send/-/send-0.19.1.tgz", + "integrity": "sha512-p4rRk4f23ynFEfcD9LA0xRYngj+IyGiEYyqqOak8kaN0TvNmuxC2dcVeBn62GpCeR2CpWqyHCNScTP91QbAVFg==", + "license": "MIT", + "dependencies": { + "debug": "2.6.9", + "depd": "2.0.0", + "destroy": "1.2.0", + "encodeurl": "~2.0.0", + "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/send/node_modules/debug": { + "version": "2.6.9", + "resolved": "https://registry.npmjs.org/debug/-/debug-2.6.9.tgz", + "integrity": "sha512-bC7ElrdJaJnPbAP+1EotYvqZsb3ecl5wi6Bfi6BJTUcNowp6cvspg0jXznRTKDjm/E7AdgFBVeAPVMNcKGsHMA==", + "license": "MIT", + "dependencies": { + "ms": "2.0.0" + } + }, + "node_modules/send/node_modules/debug/node_modules/ms": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/ms/-/ms-2.0.0.tgz", + "integrity": "sha512-Tpp60P6IUJDTuOq/5Z8cdskzJujfwqfOTkrwIwj7IRISpnkJnT6SyJ4PCPnGMoFjC9ddhal5KVIYtAt97ix05A==", + "license": "MIT" + }, + "node_modules/send/node_modules/encodeurl": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/encodeurl/-/encodeurl-2.0.0.tgz", + "integrity": "sha512-Q0n9HRi4m6JuGIV1eFlmvJB7ZEVxu93IrMyiMsGC0lrMJMWzRgx6WGquyfQgZVb31vhGgXnfmPNNXmxnOkRBrg==", + "license": "MIT", + "engines": { + "node": ">= 0.8" + } + }, + "node_modules/send/node_modules/on-finished": { + "version": "2.4.1", + "resolved": "https://registry.npmjs.org/on-finished/-/on-finished-2.4.1.tgz", + "integrity": "sha512-oVlzkg3ENAhCk2zdv7IJwd/QUD4z2RxRwpkcGY8psCVcCYZNq4wYnVWALHM+brtuJjePWiYF/ClmuDr8Ch5+kg==", + "license": "MIT", + "dependencies": { + "ee-first": "1.1.1" + }, + "engines": { + "node": ">= 0.8" + } + }, + "node_modules/send/node_modules/statuses": { + "version": "2.0.1", + "resolved": "https://registry.npmjs.org/statuses/-/statuses-2.0.1.tgz", + "integrity": "sha512-RwNA9Z/7PrK06rYLIzFMlaF+l73iwpzsqRIFgbMLbTcLD6cOao82TaWefPXQvB2fOC4AjuYSEndS7N/mTCbkdQ==", + "license": "MIT", + "engines": { + "node": ">= 0.8" + } + }, + "node_modules/serialize-error": { + "version": "2.1.0", + "resolved": "https://registry.npmjs.org/serialize-error/-/serialize-error-2.1.0.tgz", + "integrity": "sha512-ghgmKt5o4Tly5yEG/UJp8qTd0AN7Xalw4XBtDEKP655B699qMEtra1WlXeE6WIvdEG481JvRxULKsInq/iNysw==", + "license": "MIT", + "engines": { + "node": ">=0.10.0" + } + }, + "node_modules/serialize-javascript": { + "version": "6.0.2", + "resolved": "https://registry.npmjs.org/serialize-javascript/-/serialize-javascript-6.0.2.tgz", + "integrity": "sha512-Saa1xPByTTq2gdeFZYLLo+RFE35NHZkAbqZeWNd3BpzppeVisAqpDjcp8dyf6uIvEqJRd46jemmyA4iFIeVk8g==", + "dev": true, + "license": "BSD-3-Clause", + "peer": true, + "dependencies": { + "randombytes": "^2.1.0" + } + }, + "node_modules/serve-static": { + "version": "1.16.2", + "resolved": "https://registry.npmjs.org/serve-static/-/serve-static-1.16.2.tgz", + "integrity": "sha512-VqpjJZKadQB/PEbEwvFdO43Ax5dFBZ2UECszz8bQ7pi7wt//PWe1P6MN7eCnjsatYtBT6EuiClbjSWP2WrIoTw==", + "license": "MIT", + "dependencies": { + "encodeurl": "~2.0.0", + "escape-html": "~1.0.3", + "parseurl": "~1.3.3", + "send": "0.19.0" + }, + "engines": { + "node": ">= 0.8.0" + } + }, + "node_modules/serve-static/node_modules/debug": { + "version": "2.6.9", + "resolved": "https://registry.npmjs.org/debug/-/debug-2.6.9.tgz", + "integrity": "sha512-bC7ElrdJaJnPbAP+1EotYvqZsb3ecl5wi6Bfi6BJTUcNowp6cvspg0jXznRTKDjm/E7AdgFBVeAPVMNcKGsHMA==", + "license": "MIT", + "dependencies": { + "ms": "2.0.0" + } + }, + "node_modules/serve-static/node_modules/debug/node_modules/ms": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/ms/-/ms-2.0.0.tgz", + "integrity": "sha512-Tpp60P6IUJDTuOq/5Z8cdskzJujfwqfOTkrwIwj7IRISpnkJnT6SyJ4PCPnGMoFjC9ddhal5KVIYtAt97ix05A==", + "license": "MIT" + }, + "node_modules/serve-static/node_modules/encodeurl": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/encodeurl/-/encodeurl-2.0.0.tgz", + "integrity": "sha512-Q0n9HRi4m6JuGIV1eFlmvJB7ZEVxu93IrMyiMsGC0lrMJMWzRgx6WGquyfQgZVb31vhGgXnfmPNNXmxnOkRBrg==", + "license": "MIT", + "engines": { + "node": ">= 0.8" + } + }, + "node_modules/serve-static/node_modules/on-finished": { + "version": "2.4.1", + "resolved": "https://registry.npmjs.org/on-finished/-/on-finished-2.4.1.tgz", + "integrity": "sha512-oVlzkg3ENAhCk2zdv7IJwd/QUD4z2RxRwpkcGY8psCVcCYZNq4wYnVWALHM+brtuJjePWiYF/ClmuDr8Ch5+kg==", + "license": "MIT", + "dependencies": { + "ee-first": "1.1.1" + }, + "engines": { + "node": ">= 0.8" + } + }, + "node_modules/serve-static/node_modules/send": { + "version": "0.19.0", + "resolved": "https://registry.npmjs.org/send/-/send-0.19.0.tgz", + "integrity": "sha512-dW41u5VfLXu8SJh5bwRmyYUbAoSB3c9uQh6L8h/KtsFREPWpbX1lrljJo186Jc4nmci/sGUZ9a0a0J2zgfq2hw==", + "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/serve-static/node_modules/send/node_modules/encodeurl": { + "version": "1.0.2", + "resolved": "https://registry.npmjs.org/encodeurl/-/encodeurl-1.0.2.tgz", + "integrity": "sha512-TPJXq8JqFaVYm2CWmPvnP2Iyo4ZSM7/QKcSmuMLDObfpH5fi7RUGmd/rTDf+rut/saiDiQEeVTNgAmJEdAOx0w==", + "license": "MIT", + "engines": { + "node": ">= 0.8" + } + }, + "node_modules/serve-static/node_modules/statuses": { + "version": "2.0.1", + "resolved": "https://registry.npmjs.org/statuses/-/statuses-2.0.1.tgz", + "integrity": "sha512-RwNA9Z/7PrK06rYLIzFMlaF+l73iwpzsqRIFgbMLbTcLD6cOao82TaWefPXQvB2fOC4AjuYSEndS7N/mTCbkdQ==", + "license": "MIT", + "engines": { + "node": ">= 0.8" + } + }, + "node_modules/server-only": { + "version": "0.0.1", + "resolved": "https://registry.npmjs.org/server-only/-/server-only-0.0.1.tgz", + "integrity": "sha512-qepMx2JxAa5jjfzxG79yPPq+8BuFToHd1hm7kI+Z4zAq1ftQiP7HcxMhDDItrbtwVeLg/cY2JnKnrcFkmiswNA==", + "license": "MIT" + }, + "node_modules/setimmediate": { + "version": "1.0.5", + "resolved": "https://registry.npmjs.org/setimmediate/-/setimmediate-1.0.5.tgz", + "integrity": "sha512-MATJdZp8sLqDl/68LfQmbP8zKPLQNV6BIZoIgrscFDQ+RsvK/BxeDQOgyxKKoh0y/8h3BqVFnCqQ/gd+reiIXA==", + "license": "MIT" + }, + "node_modules/setprototypeof": { + "version": "1.2.0", + "resolved": "https://registry.npmjs.org/setprototypeof/-/setprototypeof-1.2.0.tgz", + "integrity": "sha512-E5LDX7Wrp85Kil5bhZv46j8jOeboKq5JMmYM3gVGdGH8xFpPWXUMsNrlODCrkoxMEeNi/XZIwuRvY4XNwYMJpw==", + "license": "ISC" + }, + "node_modules/sf-symbols-typescript": { + "version": "2.1.0", + "resolved": "https://registry.npmjs.org/sf-symbols-typescript/-/sf-symbols-typescript-2.1.0.tgz", + "integrity": "sha512-ezT7gu/SHTPIOEEoG6TF+O0m5eewl0ZDAO4AtdBi5HjsrUI6JdCG17+Q8+aKp0heM06wZKApRCn5olNbs0Wb/A==", + "license": "MIT", + "engines": { + "node": ">=10" + } + }, + "node_modules/shallowequal": { + "version": "1.1.0", + "resolved": "https://registry.npmjs.org/shallowequal/-/shallowequal-1.1.0.tgz", + "integrity": "sha512-y0m1JoUZSlPAjXVtPPW70aZWfIL/dSP7AFkRnniLCrK/8MDKog3TySTBmckD+RObVxH0v4Tox67+F14PdED2oQ==", + "license": "MIT" + }, + "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==", + "license": "MIT", + "dependencies": { + "shebang-regex": "^3.0.0" + }, + "engines": { + "node": ">=8" + } + }, + "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==", + "license": "MIT", + "engines": { + "node": ">=8" + } + }, + "node_modules/shell-quote": { + "version": "1.8.2", + "resolved": "https://registry.npmjs.org/shell-quote/-/shell-quote-1.8.2.tgz", + "integrity": "sha512-AzqKpGKjrj7EM6rKVQEPpB288oCfnrEIuyoT9cyF4nmGa7V8Zk6f7RRqYisX8X9m+Q7bd632aZW4ky7EhbQztA==", + "license": "MIT", + "engines": { + "node": ">= 0.4" + }, + "funding": { + "url": "https://github.com/sponsors/ljharb" + } + }, + "node_modules/signal-exit": { + "version": "4.1.0", + "resolved": "https://registry.npmjs.org/signal-exit/-/signal-exit-4.1.0.tgz", + "integrity": "sha512-bzyZ1e88w9O1iNJbKnOlvYTrWPDl46O1bG0D3XInv+9tkPrxrN8jUUTiFlDkkmKWgn1M6CfIA13SuGqOa9Korw==", + "license": "ISC", + "engines": { + "node": ">=14" + }, + "funding": { + "url": "https://github.com/sponsors/isaacs" + } + }, + "node_modules/simple-plist": { + "version": "1.3.1", + "resolved": "https://registry.npmjs.org/simple-plist/-/simple-plist-1.3.1.tgz", + "integrity": "sha512-iMSw5i0XseMnrhtIzRb7XpQEXepa9xhWxGUojHBL43SIpQuDQkh3Wpy67ZbDzZVr6EKxvwVChnVpdl8hEVLDiw==", + "license": "MIT", + "dependencies": { + "bplist-creator": "0.1.0", + "bplist-parser": "0.3.1", + "plist": "^3.0.5" + } + }, + "node_modules/simple-plist/node_modules/bplist-parser": { + "version": "0.3.1", + "resolved": "https://registry.npmjs.org/bplist-parser/-/bplist-parser-0.3.1.tgz", + "integrity": "sha512-PyJxiNtA5T2PlLIeBot4lbp7rj4OadzjnMZD/G5zuBNt8ei/yCU7+wW0h2bag9vr8c+/WuRWmSxbqAl9hL1rBA==", + "license": "MIT", + "dependencies": { + "big-integer": "1.6.x" + }, + "engines": { + "node": ">= 5.10.0" + } + }, + "node_modules/simple-swizzle": { + "version": "0.2.2", + "resolved": "https://registry.npmjs.org/simple-swizzle/-/simple-swizzle-0.2.2.tgz", + "integrity": "sha512-JA//kQgZtbuY83m+xT+tXJkmJncGMTFT+C+g2h2R9uxkYIrE2yy9sgmcLhCnw57/WSD+Eh3J97FPEDFnbXnDUg==", + "license": "MIT", + "dependencies": { + "is-arrayish": "^0.3.1" + } + }, + "node_modules/simple-swizzle/node_modules/is-arrayish": { + "version": "0.3.2", + "resolved": "https://registry.npmjs.org/is-arrayish/-/is-arrayish-0.3.2.tgz", + "integrity": "sha512-eVRqCvVlZbuw3GrM63ovNSNAeA1K16kaR/LRY/92w0zxQ5/1YzwblUX652i4Xs9RwAGjW9d9y6X88t8OaAJfWQ==", + "license": "MIT" + }, + "node_modules/sisteransi": { + "version": "1.0.5", + "resolved": "https://registry.npmjs.org/sisteransi/-/sisteransi-1.0.5.tgz", + "integrity": "sha512-bLGGlR1QxBcynn2d5YmDX4MGjlZvy2MRBDRNHLJ8VI6l6+9FUiyTFNJ0IveOSP0bcXgVDPRcfGqA0pjaqUpfVg==", + "license": "MIT" + }, + "node_modules/slash": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/slash/-/slash-3.0.0.tgz", + "integrity": "sha512-g9Q1haeby36OSStwb4ntCGGGaKsaVSjQ68fBxoQcutl5fS1vuY18H3wSt3jFyFtrkx+Kz0V1G85A4MyAdDMi2Q==", + "license": "MIT", + "engines": { + "node": ">=8" + } + }, + "node_modules/slugify": { + "version": "1.6.6", + "resolved": "https://registry.npmjs.org/slugify/-/slugify-1.6.6.tgz", + "integrity": "sha512-h+z7HKHYXj6wJU+AnS/+IH8Uh9fdcX1Lrhg1/VMdf9PwoBQXFcXiAdsy2tSK0P6gKwJLXp02r90ahUCqHk9rrw==", + "license": "MIT", + "engines": { + "node": ">=8.0.0" + } + }, + "node_modules/source-map": { + "version": "0.6.1", + "resolved": "https://registry.npmjs.org/source-map/-/source-map-0.6.1.tgz", + "integrity": "sha512-UjgapumWlbMhkBgzT7Ykc5YXUT46F0iKu8SGXq0bcwP5dz/h0Plj6enJqjz1Zbq2l5WaqYnrVbwWOWMyF3F47g==", + "license": "BSD-3-Clause", + "engines": { + "node": ">=0.10.0" + } + }, + "node_modules/source-map-js": { + "version": "1.2.1", + "resolved": "https://registry.npmjs.org/source-map-js/-/source-map-js-1.2.1.tgz", + "integrity": "sha512-UXWMKhLOwVKb728IUtQPXxfYU+usdybtUrK/8uGE8CQMvrhOpwvzDBwj0QhSL7MQc7vIsISBG8VQ8+IDQxpfQA==", + "license": "BSD-3-Clause", + "engines": { + "node": ">=0.10.0" + } + }, + "node_modules/source-map-support": { + "version": "0.5.21", + "resolved": "https://registry.npmjs.org/source-map-support/-/source-map-support-0.5.21.tgz", + "integrity": "sha512-uBHU3L3czsIyYXKX88fdrGovxdSCoTGDRZ6SYXtSRxLZUzHg5P/66Ht6uoUlHu9EZod+inXhKo3qQgwXUT/y1w==", + "license": "MIT", + "dependencies": { + "buffer-from": "^1.0.0", + "source-map": "^0.6.0" + } + }, + "node_modules/split-on-first": { + "version": "1.1.0", + "resolved": "https://registry.npmjs.org/split-on-first/-/split-on-first-1.1.0.tgz", + "integrity": "sha512-43ZssAJaMusuKWL8sKUBQXHWOpq8d6CfN/u1p4gUzfJkM05C8rxTmYrkIPTXapZpORA6LkkzcUulJ8FqA7Uudw==", + "license": "MIT", + "engines": { + "node": ">=6" + } + }, + "node_modules/sprintf-js": { + "version": "1.0.3", + "resolved": "https://registry.npmjs.org/sprintf-js/-/sprintf-js-1.0.3.tgz", + "integrity": "sha512-D9cPgkvLlV3t3IzL0D0YLvGA9Ahk4PcvVwUbN0dSGr1aP0Nrt4AEnTUbuGvquEC0mA64Gqt1fzirlRs5ibXx8g==", + "license": "BSD-3-Clause" + }, + "node_modules/stack-generator": { + "version": "2.0.10", + "resolved": "https://registry.npmjs.org/stack-generator/-/stack-generator-2.0.10.tgz", + "integrity": "sha512-mwnua/hkqM6pF4k8SnmZ2zfETsRUpWXREfA/goT8SLCV4iOFa4bzOX2nDipWAZFPTjLvQB82f5yaodMVhK0yJQ==", + "dev": true, + "license": "MIT", + "dependencies": { + "stackframe": "^1.3.4" + } + }, + "node_modules/stack-utils": { + "version": "2.0.6", + "resolved": "https://registry.npmjs.org/stack-utils/-/stack-utils-2.0.6.tgz", + "integrity": "sha512-XlkWvfIm6RmsWtNJx+uqtKLS8eqFbxUg0ZzLXqY0caEy9l7hruX8IpiDnjsLavoBgqCCR71TqWO8MaXYheJ3RQ==", + "license": "MIT", + "dependencies": { + "escape-string-regexp": "^2.0.0" + }, + "engines": { + "node": ">=10" + } + }, + "node_modules/stack-utils/node_modules/escape-string-regexp": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/escape-string-regexp/-/escape-string-regexp-2.0.0.tgz", + "integrity": "sha512-UpzcLCXolUWcNu5HtVMHYdXJjArjsF9C0aNnquZYY4uW/Vu0miy5YoWvbV345HauVvcAUnpRuhMMcqTcGOY2+w==", + "license": "MIT", + "engines": { + "node": ">=8" + } + }, + "node_modules/stackframe": { + "version": "1.3.4", + "resolved": "https://registry.npmjs.org/stackframe/-/stackframe-1.3.4.tgz", + "integrity": "sha512-oeVtt7eWQS+Na6F//S4kJ2K2VbRlS9D43mAlMyVpVWovy9o+jfgH8O9agzANzaiLjclA0oYzUXEM4PurhSUChw==", + "license": "MIT" + }, + "node_modules/stacktrace-gps": { + "version": "3.1.2", + "resolved": "https://registry.npmjs.org/stacktrace-gps/-/stacktrace-gps-3.1.2.tgz", + "integrity": "sha512-GcUgbO4Jsqqg6RxfyTHFiPxdPqF+3LFmQhm7MgCuYQOYuWyqxo5pwRPz5d/u6/WYJdEnWfK4r+jGbyD8TSggXQ==", + "dev": true, + "license": "MIT", + "dependencies": { + "source-map": "0.5.6", + "stackframe": "^1.3.4" + } + }, + "node_modules/stacktrace-gps/node_modules/source-map": { + "version": "0.5.6", + "resolved": "https://registry.npmjs.org/source-map/-/source-map-0.5.6.tgz", + "integrity": "sha512-MjZkVp0NHr5+TPihLcadqnlVoGIoWo4IBHptutGh9wI3ttUYvCG26HkSuDi+K6lsZ25syXJXcctwgyVCt//xqA==", + "dev": true, + "license": "BSD-3-Clause", + "engines": { + "node": ">=0.10.0" + } + }, + "node_modules/stacktrace-js": { + "version": "2.0.2", + "resolved": "https://registry.npmjs.org/stacktrace-js/-/stacktrace-js-2.0.2.tgz", + "integrity": "sha512-Je5vBeY4S1r/RnLydLl0TBTi3F2qdfWmYsGvtfZgEI+SCprPppaIhQf5nGcal4gI4cGpCV/duLcAzT1np6sQqg==", + "dev": true, + "license": "MIT", + "dependencies": { + "error-stack-parser": "^2.0.6", + "stack-generator": "^2.0.5", + "stacktrace-gps": "^3.0.4" + } + }, + "node_modules/stacktrace-parser": { + "version": "0.1.11", + "resolved": "https://registry.npmjs.org/stacktrace-parser/-/stacktrace-parser-0.1.11.tgz", + "integrity": "sha512-WjlahMgHmCJpqzU8bIBy4qtsZdU9lRlcZE3Lvyej6t4tuOuv1vk57OW3MBrj6hXBFx/nNoC9MPMTcr5YA7NQbg==", + "license": "MIT", + "dependencies": { + "type-fest": "^0.7.1" + }, + "engines": { + "node": ">=6" + } + }, + "node_modules/stacktrace-parser/node_modules/type-fest": { + "version": "0.7.1", + "resolved": "https://registry.npmjs.org/type-fest/-/type-fest-0.7.1.tgz", + "integrity": "sha512-Ne2YiiGN8bmrmJJEuTWTLJR32nh/JdL1+PSicowtNb0WFpn59GK8/lfD61bVtzguz7b3PBt74nxpv/Pw5po5Rg==", + "license": "(MIT OR CC0-1.0)", + "engines": { + "node": ">=8" + } + }, + "node_modules/statuses": { + "version": "1.5.0", + "resolved": "https://registry.npmjs.org/statuses/-/statuses-1.5.0.tgz", + "integrity": "sha512-OpZ3zP+jT1PI7I8nemJX4AKmAX070ZkYPVWV/AaKTJl+tXCTGyVdC1a4SL8RUQYEwk/f34ZX8UTykN68FwrqAA==", + "license": "MIT", + "engines": { + "node": ">= 0.6" + } + }, + "node_modules/stream-buffers": { + "version": "2.2.0", + "resolved": "https://registry.npmjs.org/stream-buffers/-/stream-buffers-2.2.0.tgz", + "integrity": "sha512-uyQK/mx5QjHun80FLJTfaWE7JtwfRMKBLkMne6udYOmvH0CawotVa7TfgYHzAnpphn4+TweIx1QKMnRIbipmUg==", + "license": "Unlicense", + "engines": { + "node": ">= 0.10.0" + } + }, + "node_modules/strict-uri-encode": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/strict-uri-encode/-/strict-uri-encode-2.0.0.tgz", + "integrity": "sha512-QwiXZgpRcKkhTj2Scnn++4PKtWsH0kpzZ62L2R6c/LUVYv7hVnZqcg2+sMuT6R7Jusu1vviK/MFsu6kNJfWlEQ==", + "license": "MIT", + "engines": { + "node": ">=4" + } + }, + "node_modules/string-length": { + "version": "4.0.2", + "resolved": "https://registry.npmjs.org/string-length/-/string-length-4.0.2.tgz", + "integrity": "sha512-+l6rNN5fYHNhZZy41RXsYptCjA2Igmq4EG7kZAYFQI1E1VTXarr6ZPXBg6eq7Y6eK4FEhY6AJlyuFIb/v/S0VQ==", + "dev": true, + "license": "MIT", + "dependencies": { + "char-regex": "^1.0.2", + "strip-ansi": "^6.0.0" + }, + "engines": { + "node": ">=10" + } + }, + "node_modules/string-length/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, + "license": "MIT", + "dependencies": { + "ansi-regex": "^5.0.1" + }, + "engines": { + "node": ">=8" + } + }, + "node_modules/string-width": { + "version": "5.1.2", + "resolved": "https://registry.npmjs.org/string-width/-/string-width-5.1.2.tgz", + "integrity": "sha512-HnLOCR3vjcY8beoNLtcjZ5/nxn2afmME6lhrDrebokqMap+XbeW8n9TXpPDOqdGK5qcI3oT0GKTW6wC7EMiVqA==", + "license": "MIT", + "dependencies": { + "eastasianwidth": "^0.2.0", + "emoji-regex": "^9.2.2", + "strip-ansi": "^7.0.1" + }, + "engines": { + "node": ">=12" + }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" + } + }, + "node_modules/string-width-cjs": { + "name": "string-width", + "version": "4.2.3", + "resolved": "https://registry.npmjs.org/string-width/-/string-width-4.2.3.tgz", + "integrity": "sha512-wKyQRQpjJ0sIp62ErSZdGsjMJWsap5oRNihHhu6G7JVO/9jIB6UyevL+tXuOqrng8j/cxKTWyWUwvSTriiZz/g==", + "license": "MIT", + "dependencies": { + "emoji-regex": "^8.0.0", + "is-fullwidth-code-point": "^3.0.0", + "strip-ansi": "^6.0.1" + }, + "engines": { + "node": ">=8" + } + }, + "node_modules/string-width-cjs/node_modules/emoji-regex": { + "version": "8.0.0", + "resolved": "https://registry.npmjs.org/emoji-regex/-/emoji-regex-8.0.0.tgz", + "integrity": "sha512-MSjYzcWNOA0ewAHpz0MxpYFvwg6yjy1NG3xteoqz644VCo/RPgnr1/GGt+ic3iJTzQ8Eu3TdM14SawnVUmGE6A==", + "license": "MIT" + }, + "node_modules/string-width-cjs/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==", + "license": "MIT", + "dependencies": { + "ansi-regex": "^5.0.1" + }, + "engines": { + "node": ">=8" + } + }, + "node_modules/strip-ansi": { + "version": "7.1.0", + "resolved": "https://registry.npmjs.org/strip-ansi/-/strip-ansi-7.1.0.tgz", + "integrity": "sha512-iq6eVVI64nQQTRYq2KtEg2d2uU7LElhTJwsH4YzIHZshxlgZms/wIc4VoDQTlG/IvVIrBKG06CrZnp0qv7hkcQ==", + "license": "MIT", + "dependencies": { + "ansi-regex": "^6.0.1" + }, + "engines": { + "node": ">=12" + }, + "funding": { + "url": "https://github.com/chalk/strip-ansi?sponsor=1" + } + }, + "node_modules/strip-ansi-cjs": { + "name": "strip-ansi", + "version": "6.0.1", + "resolved": "https://registry.npmjs.org/strip-ansi/-/strip-ansi-6.0.1.tgz", + "integrity": "sha512-Y38VPSHcqkFrCpFnQ9vuSXmquuv5oXOKpGeT6aGrr3o3Gc9AlVa6JBfUSOCnbxGGZF+/0ooI7KrPuUSztUdU5A==", + "license": "MIT", + "dependencies": { + "ansi-regex": "^5.0.1" + }, + "engines": { + "node": ">=8" + } + }, + "node_modules/strip-ansi/node_modules/ansi-regex": { + "version": "6.1.0", + "resolved": "https://registry.npmjs.org/ansi-regex/-/ansi-regex-6.1.0.tgz", + "integrity": "sha512-7HSX4QQb4CspciLpVFwyRe79O3xsIZDDLER21kERQ71oaPodF8jL725AgJMFAYbooIqolJoRLuM81SpeUkpkvA==", + "license": "MIT", + "engines": { + "node": ">=12" + }, + "funding": { + "url": "https://github.com/chalk/ansi-regex?sponsor=1" + } + }, + "node_modules/strip-bom": { + "version": "4.0.0", + "resolved": "https://registry.npmjs.org/strip-bom/-/strip-bom-4.0.0.tgz", + "integrity": "sha512-3xurFv5tEgii33Zi8Jtp55wEIILR9eh34FAW00PZf+JnSsTmV/ioewSgQl97JHvgjoRGwPShsWm+IdrxB35d0w==", + "dev": true, + "license": "MIT", + "engines": { + "node": ">=8" + } + }, + "node_modules/strip-final-newline": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/strip-final-newline/-/strip-final-newline-2.0.0.tgz", + "integrity": "sha512-BrpvfNAE3dcvq7ll3xVumzjKjZQ5tI1sEUIKr3Uoks0XUl45St3FlatVqef9prk4jRDzhW6WZg+3bk93y6pLjA==", + "dev": true, + "license": "MIT", + "engines": { + "node": ">=6" + } + }, + "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, + "license": "MIT", + "engines": { + "node": ">=8" + }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" + } + }, + "node_modules/structured-headers": { + "version": "0.4.1", + "resolved": "https://registry.npmjs.org/structured-headers/-/structured-headers-0.4.1.tgz", + "integrity": "sha512-0MP/Cxx5SzeeZ10p/bZI0S6MpgD+yxAhi1BOQ34jgnMXsCq3j1t6tQnZu+KdlL7dvJTLT3g9xN8tl10TqgFMcg==", + "license": "MIT" + }, + "node_modules/styleq": { + "version": "0.1.3", + "resolved": "https://registry.npmjs.org/styleq/-/styleq-0.1.3.tgz", + "integrity": "sha512-3ZUifmCDCQanjeej1f6kyl/BeP/Vae5EYkQ9iJfUm/QwZvlgnZzyflqAsAWYURdtea8Vkvswu2GrC57h3qffcA==", + "license": "MIT" + }, + "node_modules/sucrase": { + "version": "3.35.0", + "resolved": "https://registry.npmjs.org/sucrase/-/sucrase-3.35.0.tgz", + "integrity": "sha512-8EbVDiu9iN/nESwxeSxDKe0dunta1GOlHufmSSXxMD2z2/tMZpDMpvXQGsc+ajGo8y2uYUmixaSRUc/QPoQ0GA==", + "license": "MIT", + "dependencies": { + "@jridgewell/gen-mapping": "^0.3.2", + "commander": "^4.0.0", + "glob": "^10.3.10", + "lines-and-columns": "^1.1.6", + "mz": "^2.7.0", + "pirates": "^4.0.1", + "ts-interface-checker": "^0.1.9" + }, + "bin": { + "sucrase": "bin/sucrase", + "sucrase-node": "bin/sucrase-node" + }, + "engines": { + "node": ">=16 || 14 >=14.17" + } + }, + "node_modules/sucrase/node_modules/commander": { + "version": "4.1.1", + "resolved": "https://registry.npmjs.org/commander/-/commander-4.1.1.tgz", + "integrity": "sha512-NOKm8xhkzAjzFx8B2v5OAHT+u5pRQc2UCa2Vq9jYL/31o2wi9mxBA7LIFs3sV5VSC49z6pEhfbMULvShKj26WA==", + "license": "MIT", + "engines": { + "node": ">= 6" + } + }, + "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==", + "license": "MIT", + "dependencies": { + "has-flag": "^4.0.0" + }, + "engines": { + "node": ">=8" + } + }, + "node_modules/supports-hyperlinks": { + "version": "2.3.0", + "resolved": "https://registry.npmjs.org/supports-hyperlinks/-/supports-hyperlinks-2.3.0.tgz", + "integrity": "sha512-RpsAZlpWcDwOPQA22aCH4J0t7L8JmAvsCxfOSEwm7cQs3LshN36QaTkwd70DnBOXDWGssw2eUoc8CaRWT0XunA==", + "license": "MIT", + "dependencies": { + "has-flag": "^4.0.0", + "supports-color": "^7.0.0" + }, + "engines": { + "node": ">=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==", + "license": "MIT", + "engines": { + "node": ">= 0.4" + }, + "funding": { + "url": "https://github.com/sponsors/ljharb" + } + }, + "node_modules/symbol-tree": { + "version": "3.2.4", + "resolved": "https://registry.npmjs.org/symbol-tree/-/symbol-tree-3.2.4.tgz", + "integrity": "sha512-9QNk5KwDF+Bvz+PyObkmSYjI5ksVUYtjW7AU22r2NKcfLJcXp96hkDWU3+XndOsUb+AQ9QhfzfCT2O+CNWT5Tw==", + "dev": true, + "license": "MIT" + }, + "node_modules/tapable": { + "version": "2.2.1", + "resolved": "https://registry.npmjs.org/tapable/-/tapable-2.2.1.tgz", + "integrity": "sha512-GNzQvQTOIP6RyTfE2Qxb8ZVlNmw0n88vp1szwWRimP02mnTsx3Wtn5qRdqY9w2XduFNUgvOwhNnQsjwCp+kqaQ==", + "dev": true, + "license": "MIT", + "peer": true, + "engines": { + "node": ">=6" + } + }, + "node_modules/tar": { + "version": "7.4.3", + "resolved": "https://registry.npmjs.org/tar/-/tar-7.4.3.tgz", + "integrity": "sha512-5S7Va8hKfV7W5U6g3aYxXmlPoZVAwUMy9AOKyF2fVuZa2UD3qZjg578OrLRt8PcNN1PleVaL/5/yYATNL0ICUw==", + "license": "ISC", + "dependencies": { + "@isaacs/fs-minipass": "^4.0.0", + "chownr": "^3.0.0", + "minipass": "^7.1.2", + "minizlib": "^3.0.1", + "mkdirp": "^3.0.1", + "yallist": "^5.0.0" + }, + "engines": { + "node": ">=18" + } + }, + "node_modules/tar/node_modules/mkdirp": { + "version": "3.0.1", + "resolved": "https://registry.npmjs.org/mkdirp/-/mkdirp-3.0.1.tgz", + "integrity": "sha512-+NsyUUAZDmo6YVHzL/stxSu3t9YS1iljliy3BSDrXJ/dkn1KYdmtZODGGjLcc9XLgVVpH4KshHB8XmZgMhaBXg==", + "license": "MIT", + "bin": { + "mkdirp": "dist/cjs/src/bin.js" + }, + "engines": { + "node": ">=10" + }, + "funding": { + "url": "https://github.com/sponsors/isaacs" + } + }, + "node_modules/tar/node_modules/yallist": { + "version": "5.0.0", + "resolved": "https://registry.npmjs.org/yallist/-/yallist-5.0.0.tgz", + "integrity": "sha512-YgvUTfwqyc7UXVMrB+SImsVYSmTS8X/tSrtdNZMImM+n7+QTriRXyXim0mBrTXNeqzVF0KWGgHPeiyViFFrNDw==", + "license": "BlueOak-1.0.0", + "engines": { + "node": ">=18" + } + }, + "node_modules/temp-dir": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/temp-dir/-/temp-dir-2.0.0.tgz", + "integrity": "sha512-aoBAniQmmwtcKp/7BzsH8Cxzv8OL736p7v1ihGb5e9DJ9kTwGWHrQrVB5+lfVDzfGrdRzXch+ig7LHaY1JTOrg==", + "license": "MIT", + "engines": { + "node": ">=8" + } + }, + "node_modules/terminal-link": { + "version": "2.1.1", + "resolved": "https://registry.npmjs.org/terminal-link/-/terminal-link-2.1.1.tgz", + "integrity": "sha512-un0FmiRUQNr5PJqy9kP7c40F5BOfpGlYTrxonDChEZB7pzZxRNp/bt+ymiy9/npwXya9KH99nJ/GXFIiUkYGFQ==", + "license": "MIT", + "dependencies": { + "ansi-escapes": "^4.2.1", + "supports-hyperlinks": "^2.0.0" + }, + "engines": { + "node": ">=8" + }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" + } + }, + "node_modules/terser": { + "version": "5.39.2", + "resolved": "https://registry.npmjs.org/terser/-/terser-5.39.2.tgz", + "integrity": "sha512-yEPUmWve+VA78bI71BW70Dh0TuV4HHd+I5SHOAfS1+QBOmvmCiiffgjR8ryyEd3KIfvPGFqoADt8LdQ6XpXIvg==", + "license": "BSD-2-Clause", + "dependencies": { + "@jridgewell/source-map": "^0.3.3", + "acorn": "^8.14.0", + "commander": "^2.20.0", + "source-map-support": "~0.5.20" + }, + "bin": { + "terser": "bin/terser" + }, + "engines": { + "node": ">=10" + } + }, + "node_modules/terser-webpack-plugin": { + "version": "5.3.14", + "resolved": "https://registry.npmjs.org/terser-webpack-plugin/-/terser-webpack-plugin-5.3.14.tgz", + "integrity": "sha512-vkZjpUjb6OMS7dhV+tILUW6BhpDR7P2L/aQSAv+Uwk+m8KATX9EccViHTJR2qDtACKPIYndLGCyl3FMo+r2LMw==", + "dev": true, + "license": "MIT", + "peer": true, + "dependencies": { + "@jridgewell/trace-mapping": "^0.3.25", + "jest-worker": "^27.4.5", + "schema-utils": "^4.3.0", + "serialize-javascript": "^6.0.2", + "terser": "^5.31.1" + }, + "engines": { + "node": ">= 10.13.0" + }, + "funding": { + "type": "opencollective", + "url": "https://opencollective.com/webpack" + }, + "peerDependencies": { + "webpack": "^5.1.0" + }, + "peerDependenciesMeta": { + "@swc/core": { + "optional": true + }, + "esbuild": { + "optional": true + }, + "uglify-js": { + "optional": true + } + } + }, + "node_modules/terser-webpack-plugin/node_modules/jest-worker": { + "version": "27.5.1", + "resolved": "https://registry.npmjs.org/jest-worker/-/jest-worker-27.5.1.tgz", + "integrity": "sha512-7vuh85V5cdDofPyxn58nrPjBktZo0u9x1g8WtjQol+jZDaE+fhN+cIvTj11GndBnMnyfrUOG1sZQxCdjKh+DKg==", + "dev": true, + "license": "MIT", + "peer": true, + "dependencies": { + "@types/node": "*", + "merge-stream": "^2.0.0", + "supports-color": "^8.0.0" + }, + "engines": { + "node": ">= 10.13.0" + } + }, + "node_modules/terser-webpack-plugin/node_modules/supports-color": { + "version": "8.1.1", + "resolved": "https://registry.npmjs.org/supports-color/-/supports-color-8.1.1.tgz", + "integrity": "sha512-MpUEN2OodtUzxvKQl72cUF7RQ5EiHsGvSsVG0ia9c5RbWGL2CI4C7EpPS8UTBIplnlzZiNuV56w+FuNxy3ty2Q==", + "dev": true, + "license": "MIT", + "peer": true, + "dependencies": { + "has-flag": "^4.0.0" + }, + "engines": { + "node": ">=10" + }, + "funding": { + "url": "https://github.com/chalk/supports-color?sponsor=1" + } + }, + "node_modules/terser/node_modules/commander": { + "version": "2.20.3", + "resolved": "https://registry.npmjs.org/commander/-/commander-2.20.3.tgz", + "integrity": "sha512-GpVkmM8vF2vQUkj2LvZmD35JxeJOLCwJ9cUkugyk2nuhbv3+mJvpLYYt+0+USMxE+oj+ey/lJEnhZw75x/OMcQ==", + "license": "MIT" + }, + "node_modules/test-exclude": { + "version": "6.0.0", + "resolved": "https://registry.npmjs.org/test-exclude/-/test-exclude-6.0.0.tgz", + "integrity": "sha512-cAGWPIyOHU6zlmg88jwm7VRyXnMN7iV68OGAbYDk/Mh/xC/pzVPlQtY6ngoIH/5/tciuhGfvESU8GrHrcxD56w==", + "license": "ISC", + "dependencies": { + "@istanbuljs/schema": "^0.1.2", + "glob": "^7.1.4", + "minimatch": "^3.0.4" + }, + "engines": { + "node": ">=8" + } + }, + "node_modules/test-exclude/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==", + "license": "MIT", + "dependencies": { + "balanced-match": "^1.0.0", + "concat-map": "0.0.1" + } + }, + "node_modules/test-exclude/node_modules/glob": { + "version": "7.2.3", + "resolved": "https://registry.npmjs.org/glob/-/glob-7.2.3.tgz", + "integrity": "sha512-nFR0zLpU2YCaRxwoCJvL6UvCH2JFyFVIvwTLsIf21AuHlMskA1hhTdk+LlYJtOlYt9v6dvszD2BGRqBL+iQK9Q==", + "deprecated": "Glob versions prior to v9 are no longer supported", + "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" + } + }, + "node_modules/test-exclude/node_modules/minimatch": { + "version": "3.1.2", + "resolved": "https://registry.npmjs.org/minimatch/-/minimatch-3.1.2.tgz", + "integrity": "sha512-J7p63hRiAjw1NDEww1W7i37+ByIrOWO5XQQAzZ3VOcL0PNybwpfmV/N05zFAzwQ9USyEcX6t3UO+K5aqBQOIHw==", + "license": "ISC", + "dependencies": { + "brace-expansion": "^1.1.7" + }, + "engines": { + "node": "*" + } + }, + "node_modules/thenify": { + "version": "3.3.1", + "resolved": "https://registry.npmjs.org/thenify/-/thenify-3.3.1.tgz", + "integrity": "sha512-RVZSIV5IG10Hk3enotrhvz0T9em6cyHBLkH/YAZuKqd8hRkKhSfCGIcP2KUY0EPxndzANBmNllzWPwak+bheSw==", + "license": "MIT", + "dependencies": { + "any-promise": "^1.0.0" + } + }, + "node_modules/thenify-all": { + "version": "1.6.0", + "resolved": "https://registry.npmjs.org/thenify-all/-/thenify-all-1.6.0.tgz", + "integrity": "sha512-RNxQH/qI8/t3thXJDwcstUO4zeqo64+Uy/+sNVRBx4Xn2OX+OZ9oP+iJnNFqplFra2ZUVeKCSa2oVWi3T4uVmA==", + "license": "MIT", + "dependencies": { + "thenify": ">= 3.1.0 < 4" + }, + "engines": { + "node": ">=0.8" + } + }, + "node_modules/throat": { + "version": "5.0.0", + "resolved": "https://registry.npmjs.org/throat/-/throat-5.0.0.tgz", + "integrity": "sha512-fcwX4mndzpLQKBS1DVYhGAcYaYt7vsHNIvQV+WXMvnow5cgjPphq5CaayLaGsjRdSCKZFNGt7/GYAuXaNOiYCA==", + "license": "MIT" + }, + "node_modules/tmpl": { + "version": "1.0.5", + "resolved": "https://registry.npmjs.org/tmpl/-/tmpl-1.0.5.tgz", + "integrity": "sha512-3f0uOEAQwIqGuWW2MVzYg8fV/QNnc/IpuJNG837rLuczAaLVHslWHZQj4IGiEl5Hs3kkbhwL9Ab7Hrsmuj+Smw==", + "license": "BSD-3-Clause" + }, + "node_modules/to-regex-range": { + "version": "5.0.1", + "resolved": "https://registry.npmjs.org/to-regex-range/-/to-regex-range-5.0.1.tgz", + "integrity": "sha512-65P7iz6X5yEr1cwcgvQxbbIw7Uk3gOy5dIdtZ4rDveLqhrdJP+Li/Hx6tyK0NEb+2GCyneCMJiGqrADCSNk8sQ==", + "license": "MIT", + "dependencies": { + "is-number": "^7.0.0" + }, + "engines": { + "node": ">=8.0" + } + }, + "node_modules/toidentifier": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/toidentifier/-/toidentifier-1.0.1.tgz", + "integrity": "sha512-o5sSPKEkg/DIQNmH43V0/uerLrpzVedkUh8tGNvaeXpfpuwjKenlSox/2O/BTlZUtEe+JG7s5YhEz608PlAHRA==", + "license": "MIT", + "engines": { + "node": ">=0.6" + } + }, + "node_modules/tough-cookie": { + "version": "4.1.4", + "resolved": "https://registry.npmjs.org/tough-cookie/-/tough-cookie-4.1.4.tgz", + "integrity": "sha512-Loo5UUvLD9ScZ6jh8beX1T6sO1w2/MpCRpEP7V280GKMVUQ0Jzar2U3UJPsrdbziLEMMhu3Ujnq//rhiFuIeag==", + "dev": true, + "license": "BSD-3-Clause", + "dependencies": { + "psl": "^1.1.33", + "punycode": "^2.1.1", + "universalify": "^0.2.0", + "url-parse": "^1.5.3" + }, + "engines": { + "node": ">=6" + } + }, + "node_modules/tr46": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/tr46/-/tr46-3.0.0.tgz", + "integrity": "sha512-l7FvfAHlcmulp8kr+flpQZmVwtu7nfRV7NZujtN0OqES8EL4O4e0qqzL0DC5gAvx/ZC/9lk6rhcUwYvkBnBnYA==", + "dev": true, + "license": "MIT", + "dependencies": { + "punycode": "^2.1.1" + }, + "engines": { + "node": ">=12" + } + }, + "node_modules/ts-interface-checker": { + "version": "0.1.13", + "resolved": "https://registry.npmjs.org/ts-interface-checker/-/ts-interface-checker-0.1.13.tgz", + "integrity": "sha512-Y/arvbn+rrz3JCKl9C4kVNfTfSm2/mEp5FSz5EsZSANGPSlQrpRI5M4PKF+mJnE52jOO90PnPSc3Ur3bTQw0gA==", + "license": "Apache-2.0" + }, + "node_modules/ts-object-utils": { + "version": "0.0.5", + "resolved": "https://registry.npmjs.org/ts-object-utils/-/ts-object-utils-0.0.5.tgz", + "integrity": "sha512-iV0GvHqOmilbIKJsfyfJY9/dNHCs969z3so90dQWsO1eMMozvTpnB1MEaUbb3FYtZTGjv5sIy/xmslEz0Rg2TA==", + "license": "ISC" + }, + "node_modules/type-detect": { + "version": "4.0.8", + "resolved": "https://registry.npmjs.org/type-detect/-/type-detect-4.0.8.tgz", + "integrity": "sha512-0fr/mIH1dlO+x7TlcMy+bIDqKPsw/70tVyeHW787goQjhmqaZe10uwLujubK9q9Lg6Fiho1KUKDYz0Z7k7g5/g==", + "license": "MIT", + "engines": { + "node": ">=4" + } + }, + "node_modules/type-fest": { + "version": "0.21.3", + "resolved": "https://registry.npmjs.org/type-fest/-/type-fest-0.21.3.tgz", + "integrity": "sha512-t0rzBq87m3fVcduHDUFhKmyyX+9eo6WQjZvf51Ea/M0Q7+T374Jp1aUiyUl0GKxp8M/OETVHSDvmkyPgvX+X2w==", + "license": "(MIT OR CC0-1.0)", + "engines": { + "node": ">=10" + }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" + } + }, + "node_modules/ua-parser-js": { + "version": "1.0.40", + "resolved": "https://registry.npmjs.org/ua-parser-js/-/ua-parser-js-1.0.40.tgz", + "integrity": "sha512-z6PJ8Lml+v3ichVojCiB8toQJBuwR42ySM4ezjXIqXK3M0HczmKQ3LF4rhU55PfD99KEEXQG6yb7iOMyvYuHew==", + "funding": [ + { + "type": "opencollective", + "url": "https://opencollective.com/ua-parser-js" + }, + { + "type": "paypal", + "url": "https://paypal.me/faisalman" + }, + { + "type": "github", + "url": "https://github.com/sponsors/faisalman" + } + ], + "license": "MIT", + "bin": { + "ua-parser-js": "script/cli.js" + }, + "engines": { + "node": "*" + } + }, + "node_modules/undici": { + "version": "6.21.3", + "resolved": "https://registry.npmjs.org/undici/-/undici-6.21.3.tgz", + "integrity": "sha512-gBLkYIlEnSp8pFbT64yFgGE6UIB9tAkhukC23PmMDCe5Nd+cRqKxSjw5y54MK2AZMgZfJWMaNE4nYUHgi1XEOw==", + "license": "MIT", + "engines": { + "node": ">=18.17" + } + }, + "node_modules/undici-types": { + "version": "6.21.0", + "resolved": "https://registry.npmjs.org/undici-types/-/undici-types-6.21.0.tgz", + "integrity": "sha512-iwDZqg0QAGrg9Rav5H4n0M64c3mkR59cJ6wQp+7C4nI0gsmExaedaYLNO44eT4AtBBwjbTiGPMlt2Md0T9H9JQ==", + "license": "MIT" + }, + "node_modules/unicode-canonical-property-names-ecmascript": { + "version": "2.0.1", + "resolved": "https://registry.npmjs.org/unicode-canonical-property-names-ecmascript/-/unicode-canonical-property-names-ecmascript-2.0.1.tgz", + "integrity": "sha512-dA8WbNeb2a6oQzAQ55YlT5vQAWGV9WXOsi3SskE3bcCdM0P4SDd+24zS/OCacdRq5BkdsRj9q3Pg6YyQoxIGqg==", + "license": "MIT", + "engines": { + "node": ">=4" + } + }, + "node_modules/unicode-match-property-ecmascript": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/unicode-match-property-ecmascript/-/unicode-match-property-ecmascript-2.0.0.tgz", + "integrity": "sha512-5kaZCrbp5mmbz5ulBkDkbY0SsPOjKqVS35VpL9ulMPfSl0J0Xsm+9Evphv9CoIZFwre7aJoa94AY6seMKGVN5Q==", + "license": "MIT", + "dependencies": { + "unicode-canonical-property-names-ecmascript": "^2.0.0", + "unicode-property-aliases-ecmascript": "^2.0.0" + }, + "engines": { + "node": ">=4" + } + }, + "node_modules/unicode-match-property-value-ecmascript": { + "version": "2.2.0", + "resolved": "https://registry.npmjs.org/unicode-match-property-value-ecmascript/-/unicode-match-property-value-ecmascript-2.2.0.tgz", + "integrity": "sha512-4IehN3V/+kkr5YeSSDDQG8QLqO26XpL2XP3GQtqwlT/QYSECAwFztxVHjlbh0+gjJ3XmNLS0zDsbgs9jWKExLg==", + "license": "MIT", + "engines": { + "node": ">=4" + } + }, + "node_modules/unicode-property-aliases-ecmascript": { + "version": "2.1.0", + "resolved": "https://registry.npmjs.org/unicode-property-aliases-ecmascript/-/unicode-property-aliases-ecmascript-2.1.0.tgz", + "integrity": "sha512-6t3foTQI9qne+OZoVQB/8x8rk2k1eVy1gRXhV3oFQ5T6R1dqQ1xtin3XqSlx3+ATBkliTaR/hHyJBm+LVPNM8w==", + "license": "MIT", + "engines": { + "node": ">=4" + } + }, + "node_modules/unique-string": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/unique-string/-/unique-string-2.0.0.tgz", + "integrity": "sha512-uNaeirEPvpZWSgzwsPGtU2zVSTrn/8L5q/IexZmH0eH6SA73CmAA5U4GwORTxQAZs95TAXLNqeLoPPNO5gZfWg==", + "license": "MIT", + "dependencies": { + "crypto-random-string": "^2.0.0" + }, + "engines": { + "node": ">=8" + } + }, + "node_modules/universalify": { + "version": "0.2.0", + "resolved": "https://registry.npmjs.org/universalify/-/universalify-0.2.0.tgz", + "integrity": "sha512-CJ1QgKmNg3CwvAv/kOFmtnEN05f0D/cn9QntgNOQlQF9dgvVTHj3t+8JPdjqawCHk7V/KA+fbUqzZ9XWhcqPUg==", + "dev": true, + "license": "MIT", + "engines": { + "node": ">= 4.0.0" + } + }, + "node_modules/unpipe": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/unpipe/-/unpipe-1.0.0.tgz", + "integrity": "sha512-pjy2bYhSsufwWlKwPc+l3cN7+wuJlK6uz0YdJEOlQDbl6jo/YlPi4mb8agUkVC8BF7V8NuzeyPNqRksA3hztKQ==", + "license": "MIT", + "engines": { + "node": ">= 0.8" + } + }, + "node_modules/update-browserslist-db": { + "version": "1.1.3", + "resolved": "https://registry.npmjs.org/update-browserslist-db/-/update-browserslist-db-1.1.3.tgz", + "integrity": "sha512-UxhIZQ+QInVdunkDAaiazvvT/+fXL5Osr0JZlJulepYu6Jd7qJtDZjlur0emRlT71EN3ScPoE7gvsuIKKNavKw==", + "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.2.0", + "picocolors": "^1.1.1" + }, + "bin": { + "update-browserslist-db": "cli.js" + }, + "peerDependencies": { + "browserslist": ">= 4.21.0" + } + }, + "node_modules/url-parse": { + "version": "1.5.10", + "resolved": "https://registry.npmjs.org/url-parse/-/url-parse-1.5.10.tgz", + "integrity": "sha512-WypcfiRhfeUP9vvF0j6rw0J3hrWrw6iZv3+22h6iRMJ/8z1Tj6XfLP4DsUix5MhMPnXpiHDoKyoZ/bdCkwBCiQ==", + "dev": true, + "license": "MIT", + "dependencies": { + "querystringify": "^2.1.1", + "requires-port": "^1.0.0" + } + }, + "node_modules/use-latest-callback": { + "version": "0.2.3", + "resolved": "https://registry.npmjs.org/use-latest-callback/-/use-latest-callback-0.2.3.tgz", + "integrity": "sha512-7vI3fBuyRcP91pazVboc4qu+6ZqM8izPWX9k7cRnT8hbD5svslcknsh3S9BUhaK11OmgTV4oWZZVSeQAiV53SQ==", + "license": "MIT", + "peerDependencies": { + "react": ">=16.8" + } + }, + "node_modules/use-sync-external-store": { + "version": "1.5.0", + "resolved": "https://registry.npmjs.org/use-sync-external-store/-/use-sync-external-store-1.5.0.tgz", + "integrity": "sha512-Rb46I4cGGVBmjamjphe8L/UnvJD+uPPtTkNvX5mZgqdbavhI4EbgIWJiIHXJ8bc/i9EQGPRh4DwEURJ552Do0A==", + "license": "MIT", + "peerDependencies": { + "react": "^16.8.0 || ^17.0.0 || ^18.0.0 || ^19.0.0" + } + }, + "node_modules/utils-merge": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/utils-merge/-/utils-merge-1.0.1.tgz", + "integrity": "sha512-pMZTvIkT1d+TFGvDOqodOclx0QWkkgi6Tdoa8gC8ffGAAqz9pzPTZWAybbsHHoED/ztMtkv/VoYTYyShUn81hA==", + "license": "MIT", + "engines": { + "node": ">= 0.4.0" + } + }, + "node_modules/uuid": { + "version": "7.0.3", + "resolved": "https://registry.npmjs.org/uuid/-/uuid-7.0.3.tgz", + "integrity": "sha512-DPSke0pXhTZgoF/d+WSt2QaKMCFSfx7QegxEWT+JOuHF5aWrKEn0G+ztjuJg/gG8/ItK+rbPCD/yNv8yyih6Cg==", + "license": "MIT", + "bin": { + "uuid": "dist/bin/uuid" + } + }, + "node_modules/v8-to-istanbul": { + "version": "9.3.0", + "resolved": "https://registry.npmjs.org/v8-to-istanbul/-/v8-to-istanbul-9.3.0.tgz", + "integrity": "sha512-kiGUalWN+rgBJ/1OHZsBtU4rXZOfj/7rKQxULKlIzwzQSvMJUUNgPwJEEh7gU6xEVxC0ahoOBvN2YI8GH6FNgA==", + "dev": true, + "license": "ISC", + "dependencies": { + "@jridgewell/trace-mapping": "^0.3.12", + "@types/istanbul-lib-coverage": "^2.0.1", + "convert-source-map": "^2.0.0" + }, + "engines": { + "node": ">=10.12.0" + } + }, + "node_modules/validate-npm-package-name": { + "version": "5.0.1", + "resolved": "https://registry.npmjs.org/validate-npm-package-name/-/validate-npm-package-name-5.0.1.tgz", + "integrity": "sha512-OljLrQ9SQdOUqTaQxqL5dEfZWrXExyyWsozYlAWFawPVNuD83igl7uJD2RTkNMbniIYgt8l81eCJGIdQF7avLQ==", + "license": "ISC", + "engines": { + "node": "^14.17.0 || ^16.13.0 || >=18.0.0" + } + }, + "node_modules/vary": { + "version": "1.1.2", + "resolved": "https://registry.npmjs.org/vary/-/vary-1.1.2.tgz", + "integrity": "sha512-BNGbWLfd0eUPabhkXUVm0j8uuvREyTh5ovRa/dyow/BqAbZJyC+5fU+IzQOzmAKzYqYRAISoRhdQr3eIZ/PXqg==", + "license": "MIT", + "engines": { + "node": ">= 0.8" + } + }, + "node_modules/vlq": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/vlq/-/vlq-1.0.1.tgz", + "integrity": "sha512-gQpnTgkubC6hQgdIcRdYGDSDc+SaujOdyesZQMv6JlfQee/9Mp0Qhnys6WxDWvQnL5WZdT7o2Ul187aSt0Rq+w==", + "license": "MIT" + }, + "node_modules/w3c-xmlserializer": { + "version": "4.0.0", + "resolved": "https://registry.npmjs.org/w3c-xmlserializer/-/w3c-xmlserializer-4.0.0.tgz", + "integrity": "sha512-d+BFHzbiCx6zGfz0HyQ6Rg69w9k19nviJspaj4yNscGjrHu94sVP+aRm75yEbCh+r2/yR+7q6hux9LVtbuTGBw==", + "dev": true, + "license": "MIT", + "dependencies": { + "xml-name-validator": "^4.0.0" + }, + "engines": { + "node": ">=14" + } + }, + "node_modules/walker": { + "version": "1.0.8", + "resolved": "https://registry.npmjs.org/walker/-/walker-1.0.8.tgz", + "integrity": "sha512-ts/8E8l5b7kY0vlWLewOkDXMmPdLcVV4GmOQLyxuSswIJsweeFZtAsMF7k1Nszz+TYBQrlYRmzOnr398y1JemQ==", + "license": "Apache-2.0", + "dependencies": { + "makeerror": "1.0.12" + } + }, + "node_modules/warn-once": { + "version": "0.1.1", + "resolved": "https://registry.npmjs.org/warn-once/-/warn-once-0.1.1.tgz", + "integrity": "sha512-VkQZJbO8zVImzYFteBXvBOZEl1qL175WH8VmZcxF2fZAoudNhNDvHi+doCaAEdU2l2vtcIwa2zn0QK5+I1HQ3Q==", + "license": "MIT" + }, + "node_modules/watchpack": { + "version": "2.4.2", + "resolved": "https://registry.npmjs.org/watchpack/-/watchpack-2.4.2.tgz", + "integrity": "sha512-TnbFSbcOCcDgjZ4piURLCbJ3nJhznVh9kw6F6iokjiFPl8ONxe9A6nMDVXDiNbrSfLILs6vB07F7wLBrwPYzJw==", + "dev": true, + "license": "MIT", + "peer": true, + "dependencies": { + "glob-to-regexp": "^0.4.1", + "graceful-fs": "^4.1.2" + }, + "engines": { + "node": ">=10.13.0" + } + }, + "node_modules/wcwidth": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/wcwidth/-/wcwidth-1.0.1.tgz", + "integrity": "sha512-XHPEwS0q6TaxcvG85+8EYkbiCux2XtWG2mkc47Ng2A77BQu9+DqIOJldST4HgPkuea7dvKSj5VgX3P1d4rW8Tg==", + "license": "MIT", + "dependencies": { + "defaults": "^1.0.3" + } + }, + "node_modules/webidl-conversions": { + "version": "7.0.0", + "resolved": "https://registry.npmjs.org/webidl-conversions/-/webidl-conversions-7.0.0.tgz", + "integrity": "sha512-VwddBukDzu71offAQR975unBIGqfKZpM+8ZX6ySk8nYhVoo5CYaZyzt3YBvYtRtO+aoGlqxPg/B87NGVZ/fu6g==", + "dev": true, + "license": "BSD-2-Clause", + "engines": { + "node": ">=12" + } + }, + "node_modules/webpack": { + "version": "5.99.8", + "resolved": "https://registry.npmjs.org/webpack/-/webpack-5.99.8.tgz", + "integrity": "sha512-lQ3CPiSTpfOnrEGeXDwoq5hIGzSjmwD72GdfVzF7CQAI7t47rJG9eDWvcEkEn3CUQymAElVvDg3YNTlCYj+qUQ==", + "dev": true, + "license": "MIT", + "peer": true, + "dependencies": { + "@types/eslint-scope": "^3.7.7", + "@types/estree": "^1.0.6", + "@types/json-schema": "^7.0.15", + "@webassemblyjs/ast": "^1.14.1", + "@webassemblyjs/wasm-edit": "^1.14.1", + "@webassemblyjs/wasm-parser": "^1.14.1", + "acorn": "^8.14.0", + "browserslist": "^4.24.0", + "chrome-trace-event": "^1.0.2", + "enhanced-resolve": "^5.17.1", + "es-module-lexer": "^1.2.1", + "eslint-scope": "5.1.1", + "events": "^3.2.0", + "glob-to-regexp": "^0.4.1", + "graceful-fs": "^4.2.11", + "json-parse-even-better-errors": "^2.3.1", + "loader-runner": "^4.2.0", + "mime-types": "^2.1.27", + "neo-async": "^2.6.2", + "schema-utils": "^4.3.2", + "tapable": "^2.1.1", + "terser-webpack-plugin": "^5.3.11", + "watchpack": "^2.4.1", + "webpack-sources": "^3.2.3" + }, + "bin": { + "webpack": "bin/webpack.js" + }, + "engines": { + "node": ">=10.13.0" + }, + "funding": { + "type": "opencollective", + "url": "https://opencollective.com/webpack" + }, + "peerDependenciesMeta": { + "webpack-cli": { + "optional": true + } + } + }, + "node_modules/webpack-sources": { + "version": "3.2.3", + "resolved": "https://registry.npmjs.org/webpack-sources/-/webpack-sources-3.2.3.tgz", + "integrity": "sha512-/DyMEOrDgLKKIG0fmvtz+4dUX/3Ghozwgm6iPp8KRhvn+eQf9+Q7GWxVNMk3+uCPWfdXYC4ExGBckIXdFEfH1w==", + "dev": true, + "license": "MIT", + "engines": { + "node": ">=10.13.0" + } + }, + "node_modules/whatwg-encoding": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/whatwg-encoding/-/whatwg-encoding-2.0.0.tgz", + "integrity": "sha512-p41ogyeMUrw3jWclHWTQg1k05DSVXPLcVxRTYsXUk+ZooOCZLcoYgPZ/HL/D/N+uQPOtcp1me1WhBEaX02mhWg==", + "dev": true, + "license": "MIT", + "dependencies": { + "iconv-lite": "0.6.3" + }, + "engines": { + "node": ">=12" + } + }, + "node_modules/whatwg-fetch": { + "version": "3.6.20", + "resolved": "https://registry.npmjs.org/whatwg-fetch/-/whatwg-fetch-3.6.20.tgz", + "integrity": "sha512-EqhiFU6daOA8kpjOWTL0olhVOF3i7OrFzSYiGsEMB8GcXS+RrzauAERX65xMeNWVqxA6HXH2m69Z9LaKKdisfg==", + "license": "MIT" + }, + "node_modules/whatwg-mimetype": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/whatwg-mimetype/-/whatwg-mimetype-3.0.0.tgz", + "integrity": "sha512-nt+N2dzIutVRxARx1nghPKGv1xHikU7HKdfafKkLNLindmPU/ch3U31NOCGGA/dmPcmb1VlofO0vnKAcsm0o/Q==", + "dev": true, + "license": "MIT", + "engines": { + "node": ">=12" + } + }, + "node_modules/whatwg-url": { + "version": "11.0.0", + "resolved": "https://registry.npmjs.org/whatwg-url/-/whatwg-url-11.0.0.tgz", + "integrity": "sha512-RKT8HExMpoYx4igMiVMY83lN6UeITKJlBQ+vR/8ZJ8OCdSiN3RwCq+9gH0+Xzj0+5IrM6i4j/6LuvzbZIQgEcQ==", + "dev": true, + "license": "MIT", + "dependencies": { + "tr46": "^3.0.0", + "webidl-conversions": "^7.0.0" + }, + "engines": { + "node": ">=12" + } + }, + "node_modules/whatwg-url-without-unicode": { + "version": "8.0.0-3", + "resolved": "https://registry.npmjs.org/whatwg-url-without-unicode/-/whatwg-url-without-unicode-8.0.0-3.tgz", + "integrity": "sha512-HoKuzZrUlgpz35YO27XgD28uh/WJH4B0+3ttFqRo//lmq+9T/mIOJ6kqmINI9HpUpz1imRC/nR/lxKpJiv0uig==", + "license": "MIT", + "dependencies": { + "buffer": "^5.4.3", + "punycode": "^2.1.1", + "webidl-conversions": "^5.0.0" + }, + "engines": { + "node": ">=10" + } + }, + "node_modules/whatwg-url-without-unicode/node_modules/webidl-conversions": { + "version": "5.0.0", + "resolved": "https://registry.npmjs.org/webidl-conversions/-/webidl-conversions-5.0.0.tgz", + "integrity": "sha512-VlZwKPCkYKxQgeSbH5EyngOmRp7Ww7I9rQLERETtf5ofd9pGeswWiOtogpEO850jziPRarreGxn5QIiTqpb2wA==", + "license": "BSD-2-Clause", + "engines": { + "node": ">=8" + } + }, + "node_modules/which": { + "version": "2.0.2", + "resolved": "https://registry.npmjs.org/which/-/which-2.0.2.tgz", + "integrity": "sha512-BLI3Tl1TW3Pvl70l3yq3Y64i+awpwXqsGBYWkkqMtnbXgrMD+yj7rhW0kuEDxzJaYXGjEW5ogapKNMEKNMjibA==", + "license": "ISC", + "dependencies": { + "isexe": "^2.0.0" + }, + "bin": { + "node-which": "bin/node-which" + }, + "engines": { + "node": ">= 8" + } + }, + "node_modules/wonka": { + "version": "6.3.5", + "resolved": "https://registry.npmjs.org/wonka/-/wonka-6.3.5.tgz", + "integrity": "sha512-SSil+ecw6B4/Dm7Pf2sAshKQ5hWFvfyGlfPbEd6A14dOH6VDjrmbY86u6nZvy9omGwwIPFR8V41+of1EezgoUw==", + "license": "MIT" + }, + "node_modules/wrap-ansi": { + "version": "7.0.0", + "resolved": "https://registry.npmjs.org/wrap-ansi/-/wrap-ansi-7.0.0.tgz", + "integrity": "sha512-YVGIj2kamLSTxw6NsZjoBxfSwsn0ycdesmc4p+Q21c5zPuZ1pl+NfxVdxPtdHvmNVOQ6XSYG4AUtyt/Fi7D16Q==", + "license": "MIT", + "dependencies": { + "ansi-styles": "^4.0.0", + "string-width": "^4.1.0", + "strip-ansi": "^6.0.0" + }, + "engines": { + "node": ">=10" + }, + "funding": { + "url": "https://github.com/chalk/wrap-ansi?sponsor=1" + } + }, + "node_modules/wrap-ansi-cjs": { + "name": "wrap-ansi", + "version": "7.0.0", + "resolved": "https://registry.npmjs.org/wrap-ansi/-/wrap-ansi-7.0.0.tgz", + "integrity": "sha512-YVGIj2kamLSTxw6NsZjoBxfSwsn0ycdesmc4p+Q21c5zPuZ1pl+NfxVdxPtdHvmNVOQ6XSYG4AUtyt/Fi7D16Q==", + "license": "MIT", + "dependencies": { + "ansi-styles": "^4.0.0", + "string-width": "^4.1.0", + "strip-ansi": "^6.0.0" + }, + "engines": { + "node": ">=10" + }, + "funding": { + "url": "https://github.com/chalk/wrap-ansi?sponsor=1" + } + }, + "node_modules/wrap-ansi-cjs/node_modules/emoji-regex": { + "version": "8.0.0", + "resolved": "https://registry.npmjs.org/emoji-regex/-/emoji-regex-8.0.0.tgz", + "integrity": "sha512-MSjYzcWNOA0ewAHpz0MxpYFvwg6yjy1NG3xteoqz644VCo/RPgnr1/GGt+ic3iJTzQ8Eu3TdM14SawnVUmGE6A==", + "license": "MIT" + }, + "node_modules/wrap-ansi-cjs/node_modules/string-width": { + "version": "4.2.3", + "resolved": "https://registry.npmjs.org/string-width/-/string-width-4.2.3.tgz", + "integrity": "sha512-wKyQRQpjJ0sIp62ErSZdGsjMJWsap5oRNihHhu6G7JVO/9jIB6UyevL+tXuOqrng8j/cxKTWyWUwvSTriiZz/g==", + "license": "MIT", + "dependencies": { + "emoji-regex": "^8.0.0", + "is-fullwidth-code-point": "^3.0.0", + "strip-ansi": "^6.0.1" + }, + "engines": { + "node": ">=8" + } + }, + "node_modules/wrap-ansi-cjs/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==", + "license": "MIT", + "dependencies": { + "ansi-regex": "^5.0.1" + }, + "engines": { + "node": ">=8" + } + }, + "node_modules/wrap-ansi/node_modules/emoji-regex": { + "version": "8.0.0", + "resolved": "https://registry.npmjs.org/emoji-regex/-/emoji-regex-8.0.0.tgz", + "integrity": "sha512-MSjYzcWNOA0ewAHpz0MxpYFvwg6yjy1NG3xteoqz644VCo/RPgnr1/GGt+ic3iJTzQ8Eu3TdM14SawnVUmGE6A==", + "license": "MIT" + }, + "node_modules/wrap-ansi/node_modules/string-width": { + "version": "4.2.3", + "resolved": "https://registry.npmjs.org/string-width/-/string-width-4.2.3.tgz", + "integrity": "sha512-wKyQRQpjJ0sIp62ErSZdGsjMJWsap5oRNihHhu6G7JVO/9jIB6UyevL+tXuOqrng8j/cxKTWyWUwvSTriiZz/g==", + "license": "MIT", + "dependencies": { + "emoji-regex": "^8.0.0", + "is-fullwidth-code-point": "^3.0.0", + "strip-ansi": "^6.0.1" + }, + "engines": { + "node": ">=8" + } + }, + "node_modules/wrap-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==", + "license": "MIT", + "dependencies": { + "ansi-regex": "^5.0.1" + }, + "engines": { + "node": ">=8" + } + }, + "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==", + "license": "ISC" + }, + "node_modules/write-file-atomic": { + "version": "4.0.2", + "resolved": "https://registry.npmjs.org/write-file-atomic/-/write-file-atomic-4.0.2.tgz", + "integrity": "sha512-7KxauUdBmSdWnmpaGFg+ppNjKF8uNLry8LyzjauQDOVONfFLNKrKvQOxZ/VuTIcS/gge/YNahf5RIIQWTSarlg==", + "license": "ISC", + "dependencies": { + "imurmurhash": "^0.1.4", + "signal-exit": "^3.0.7" + }, + "engines": { + "node": "^12.13.0 || ^14.15.0 || >=16.0.0" + } + }, + "node_modules/write-file-atomic/node_modules/signal-exit": { + "version": "3.0.7", + "resolved": "https://registry.npmjs.org/signal-exit/-/signal-exit-3.0.7.tgz", + "integrity": "sha512-wnD2ZE+l+SPC/uoS0vXeE9L1+0wuaMqKlfz9AMUo38JsyLSBWSFcHR1Rri62LZc12vLr1gb3jl7iwQhgwpAbGQ==", + "license": "ISC" + }, + "node_modules/ws": { + "version": "8.18.2", + "resolved": "https://registry.npmjs.org/ws/-/ws-8.18.2.tgz", + "integrity": "sha512-DMricUmwGZUVr++AEAe2uiVM7UoO9MAVZMDu05UQOaUII0lp+zOzLLU4Xqh/JvTqklB1T4uELaaPBKyjE1r4fQ==", + "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 + } + } + }, + "node_modules/xcode": { + "version": "3.0.1", + "resolved": "https://registry.npmjs.org/xcode/-/xcode-3.0.1.tgz", + "integrity": "sha512-kCz5k7J7XbJtjABOvkc5lJmkiDh8VhjVCGNiqdKCscmVpdVUpEAyXv1xmCLkQJ5dsHqx3IPO4XW+NTDhU/fatA==", + "license": "Apache-2.0", + "dependencies": { + "simple-plist": "^1.1.0", + "uuid": "^7.0.3" + }, + "engines": { + "node": ">=10.0.0" + } + }, + "node_modules/xdate": { + "version": "0.8.3", + "resolved": "https://registry.npmjs.org/xdate/-/xdate-0.8.3.tgz", + "integrity": "sha512-1NhJWPJwN+VjbkACT9XHbQK4o6exeSVtS2CxhMPwUE7xQakoEFTlwra9YcqV/uHQVyeEUYoYC46VGDJ+etnIiw==", + "license": "(MIT OR GPL-2.0)" + }, + "node_modules/xml-name-validator": { + "version": "4.0.0", + "resolved": "https://registry.npmjs.org/xml-name-validator/-/xml-name-validator-4.0.0.tgz", + "integrity": "sha512-ICP2e+jsHvAj2E2lIHxa5tjXRlKDJo4IdvPvCXbXQGdzSfmSpNVyIKMvoZHjDY9DP0zV17iI85o90vRFXNccRw==", + "dev": true, + "license": "Apache-2.0", + "engines": { + "node": ">=12" + } + }, + "node_modules/xml2js": { + "version": "0.6.0", + "resolved": "https://registry.npmjs.org/xml2js/-/xml2js-0.6.0.tgz", + "integrity": "sha512-eLTh0kA8uHceqesPqSE+VvO1CDDJWMwlQfB6LuN6T8w6MaDJ8Txm8P7s5cHD0miF0V+GGTZrDQfxPZQVsur33w==", + "license": "MIT", + "dependencies": { + "sax": ">=0.6.0", + "xmlbuilder": "~11.0.0" + }, + "engines": { + "node": ">=4.0.0" + } + }, + "node_modules/xml2js/node_modules/xmlbuilder": { + "version": "11.0.1", + "resolved": "https://registry.npmjs.org/xmlbuilder/-/xmlbuilder-11.0.1.tgz", + "integrity": "sha512-fDlsI/kFEx7gLvbecc0/ohLG50fugQp8ryHzMTuW9vSa1GJ0XYWKnhsUx7oie3G98+r56aTQIUB4kht42R3JvA==", + "license": "MIT", + "engines": { + "node": ">=4.0" + } + }, + "node_modules/xmlbuilder": { + "version": "15.1.1", + "resolved": "https://registry.npmjs.org/xmlbuilder/-/xmlbuilder-15.1.1.tgz", + "integrity": "sha512-yMqGBqtXyeN1e3TGYvgNgDVZ3j84W4cwkOXQswghol6APgZWaff9lnbvN7MHYJOiXsvGPXtjTYJEiC9J2wv9Eg==", + "license": "MIT", + "engines": { + "node": ">=8.0" + } + }, + "node_modules/xmlchars": { + "version": "2.2.0", + "resolved": "https://registry.npmjs.org/xmlchars/-/xmlchars-2.2.0.tgz", + "integrity": "sha512-JZnDKK8B0RCDw84FNdDAIpZK+JuJw+s7Lz8nksI7SIuU3UXJJslUthsi+uWBUYOwPFwW7W7PRLRfUKpxjtjFCw==", + "dev": true, + "license": "MIT" + }, + "node_modules/y18n": { + "version": "5.0.8", + "resolved": "https://registry.npmjs.org/y18n/-/y18n-5.0.8.tgz", + "integrity": "sha512-0pfFzegeDWJHJIAmTLRP2DwHjdF5s7jo9tuztdQxAhINCdvS+3nGINqPd00AphqJR/0LhANUS6/+7SCb98YOfA==", + "license": "ISC", + "engines": { + "node": ">=10" + } + }, + "node_modules/yallist": { + "version": "3.1.1", + "resolved": "https://registry.npmjs.org/yallist/-/yallist-3.1.1.tgz", + "integrity": "sha512-a4UGQaWPH59mOXUYnAG2ewncQS4i4F43Tv3JoAM+s2VDAmS9NsK8GpDMLrCHPksFT7h3K6TOoUNn2pb7RoXx4g==", + "license": "ISC" + }, + "node_modules/yargs": { + "version": "17.7.2", + "resolved": "https://registry.npmjs.org/yargs/-/yargs-17.7.2.tgz", + "integrity": "sha512-7dSzzRQ++CKnNI/krKnYRV7JKKPUXMEh61soaHKg9mrWEhzFWhFnxPxGl+69cD1Ou63C13NUPCnmIcrvqCuM6w==", + "license": "MIT", + "dependencies": { + "cliui": "^8.0.1", + "escalade": "^3.1.1", + "get-caller-file": "^2.0.5", + "require-directory": "^2.1.1", + "string-width": "^4.2.3", + "y18n": "^5.0.5", + "yargs-parser": "^21.1.1" + }, + "engines": { + "node": ">=12" + } + }, + "node_modules/yargs-parser": { + "version": "21.1.1", + "resolved": "https://registry.npmjs.org/yargs-parser/-/yargs-parser-21.1.1.tgz", + "integrity": "sha512-tVpsJW7DdjecAiFpbIB1e3qxIQsE6NoPc5/eTdrbbIC4h0LVsWhnoa3g+m2HclBIujHzsxZ4VJVA+GUuc2/LBw==", + "license": "ISC", + "engines": { + "node": ">=12" + } + }, + "node_modules/yargs/node_modules/emoji-regex": { + "version": "8.0.0", + "resolved": "https://registry.npmjs.org/emoji-regex/-/emoji-regex-8.0.0.tgz", + "integrity": "sha512-MSjYzcWNOA0ewAHpz0MxpYFvwg6yjy1NG3xteoqz644VCo/RPgnr1/GGt+ic3iJTzQ8Eu3TdM14SawnVUmGE6A==", + "license": "MIT" + }, + "node_modules/yargs/node_modules/string-width": { + "version": "4.2.3", + "resolved": "https://registry.npmjs.org/string-width/-/string-width-4.2.3.tgz", + "integrity": "sha512-wKyQRQpjJ0sIp62ErSZdGsjMJWsap5oRNihHhu6G7JVO/9jIB6UyevL+tXuOqrng8j/cxKTWyWUwvSTriiZz/g==", + "license": "MIT", + "dependencies": { + "emoji-regex": "^8.0.0", + "is-fullwidth-code-point": "^3.0.0", + "strip-ansi": "^6.0.1" + }, + "engines": { + "node": ">=8" + } + }, + "node_modules/yargs/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==", + "license": "MIT", + "dependencies": { + "ansi-regex": "^5.0.1" + }, + "engines": { + "node": ">=8" + } + }, + "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==", + "license": "MIT", + "engines": { + "node": ">=10" + }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" + } + } + } +} diff --git a/package.json b/package.json new file mode 100644 index 0000000..72620ac --- /dev/null +++ b/package.json @@ -0,0 +1,65 @@ +{ + "name": "yakinbisa", + "version": "1.0.0", + "scripts": { + "start": "expo start", + "reset-project": "node ./scripts/reset-project.js", + "android": "expo start --android", + "ios": "expo start --ios", + "web": "expo start --web", + "test": "jest --watchAll", + "lint": "expo lint" + }, + "jest": { + "preset": "jest-expo" + }, + "dependencies": { + "@expo/vector-icons": "^14.1.0", + "@react-native-picker/picker": "2.11.0", + "@react-navigation/bottom-tabs": "^7.3.13", + "@react-navigation/native": "^7.1.9", + "@react-navigation/stack": "^7.3.2", + "expo": "^53.0.11", + "expo-blur": "~14.1.5", + "expo-camera": "~16.1.7", + "expo-checkbox": "~4.1.4", + "expo-constants": "~17.1.6", + "expo-font": "~13.3.1", + "expo-haptics": "~14.1.4", + "expo-image-picker": "~16.1.4", + "expo-linear-gradient": "~14.1.5", + "expo-linking": "~7.1.5", + "expo-location": "~18.1.5", + "expo-media-library": "~17.1.7", + "expo-print": "~14.1.4", + "expo-router": "~5.0.7", + "expo-splash-screen": "^0.30.9", + "expo-status-bar": "~2.2.3", + "expo-symbols": "^0.4.5", + "expo-system-ui": "~5.0.8", + "expo-web-browser": "~14.1.6", + "react": "19.0.0", + "react-dom": "19.0.0", + "react-native": "^0.79.3", + "react-native-calendars": "^1.1312.0", + "react-native-chart-kit": "^6.12.0", + "react-native-gesture-handler": "~2.24.0", + "react-native-google-places-autocomplete": "^2.5.7", + "react-native-maps": "1.20.1", + "react-native-reanimated": "~3.17.4", + "react-native-reanimated-carousel": "^4.0.2", + "react-native-safe-area-context": "5.4.0", + "react-native-screens": "~4.11.1", + "react-native-svg": "15.11.2", + "react-native-vector-icons": "^10.2.0", + "react-native-web": "^0.20.0", + "expo-av": "~15.1.6" + }, + "devDependencies": { + "@babel/core": "^7.26.0", + "jest": "~29.7.0", + "jest-expo": "~53.0.7", + "react-test-renderer": "18.3.1" + }, + "private": true +} diff --git a/screens/AksesAdmin/AdminScreen.js b/screens/AksesAdmin/AdminScreen.js new file mode 100644 index 0000000..c39ec14 --- /dev/null +++ b/screens/AksesAdmin/AdminScreen.js @@ -0,0 +1,473 @@ +import React, { useState } from "react"; +import { + View, + Text, + StyleSheet, + TouchableOpacity, + ImageBackground, + Dimensions, + Image, + ScrollView, +} from "react-native"; +import { + Ionicons, + FontAwesome5, + MaterialCommunityIcons, +} from "@expo/vector-icons"; +import { useNavigation } from "@react-navigation/native"; +import BottomTabAdmin from "../../Navigation/BottomTabAdmin"; +import { LineChart } from "react-native-chart-kit"; + +const { width, height } = Dimensions.get("window"); + +const AdminScreen = () => { + const navigation = useNavigation(); + const [activeSlide, setActiveSlide] = useState(0); + + const data = { + labels: ["Jan", "Feb", "Mar", "Apr", "May"], // Label untuk bulan + datasets: [ + { + data: [5000000, 7000000, 4000000, 8000000, 6000000], // Data donasi per bulan + strokeWidth: 1, // Lebar garis + }, + ], + }; + + const handleNext = () => { + navigation.navigate(""); // Add the name of the screen to navigate + }; + + return ( + + + {/* 05 Mei 2025 */} + {/* Profile Section */} + + + + + + + Halooo Dina {"\n"} + + Kebersihan Lingkungan Wajib Terjaga! + + + + {/* + Dinas Lingkungan Hidup{" "} + + */} + + {/* */} + + + + + + JUMLAH DONASI + + Rp. 5.870.000 + + Donasi dalam satu tahun + navigation.navigate("RiwayatDonasiAdmin")} + > + RIWAYAT DONASI + + + + + + PENGELUARAN + + Rp. 3.270.000 + + + Pengeluaran dalam satu bulan + + navigation.navigate("RiwayatDonasiAdmin")} + > + + RIWAYAT PENGELUARAN + + + + + + + + Pengaduan + 102 + + + + TPS di Nganjuk + 52 + + + + navigation.navigate("BerandaPengaduanAdmin")} + > + BERANDA PENGADUAN + + + navigation.navigate("DaftarTPSAdmin")} + > + + TPS di Nganjuk + + + navigation.navigate("Laporan")} + > + + Laporan + + + navigation.navigate("PosterEdukasiScreen")} + > + + Poster Edukasi + + + navigation.navigate("PengaduanSampahScreenAdmin")} + > + + Pengaduan Sampah + + + + + Grafik Donasi Bulanan + `rgba(255, 255, 255, ${opacity})`, + labelColor: (opacity = 1) => `rgba(255, 255, 255, ${opacity})`, + style: { + borderRadius: 16, + marginBottom: 40, + }, + }} + style={styles.chartStyle} + /> + Grafik Donasi Bulanan + + + + + + ); +}; + +const styles = StyleSheet.create({ + container: { flex: 1, backgroundColor: "#2C6B2F", paddingTop: 20 }, + scrollContainer: { + flexGrow: 1, // This ensures the ScrollView can expand to take up the remaining space + paddingHorizontal: 10, + backgroundColor: "#fff", + justifyContent: "flex-start", + // alignItems: "center", + borderBottomLeftRadius: 30, + borderTopStartRadius: 50, + borderBottomRightRadius: 30, + borderTopRightRadius: 50, + paddingBottom: 10, + marginTop: 170, + marginBottom: 150, + borderWidth: 1, + borderColor: "#cdcdcd", // Reduce this padding for better scrolling + }, + chartContainer: { + paddingHorizontal: 20, + marginVertical: 20, + marginBottom: 20, // Reduced to avoid pushing the content down + }, + profileContainer: { + flexDirection: "row", + alignItems: "flex-start", + marginBottom: 20, + paddingHorizontal: 20, + }, + profileImage: { + width: 50, + height: 50, + borderRadius: 50, + marginRight: 10, + marginTop: 30, + }, + chartTitle: { + fontSize: 18, + fontWeight: "bold", + marginBottom: 10, + }, + chartTitlebawah: { + fontSize: 18, + fontWeight: "bold", + marginBottom: 10, + }, + chartStyle: { + borderRadius: 16, + marginBottom: 200, + }, + header: { + flex: 1, + justifyContent: "flex-start", + alignItems: "center", + paddingHorizontal: 20, + backgroundColor: "#fff", + borderBottomLeftRadius: 30, + borderTopStartRadius: 50, + borderBottomRightRadius: 30, + borderTopRightRadius: 50, + paddingBottom: 50, + marginBottom: 50, + marginTop: 10, + }, + date: { + fontSize: 18, + color: "#fff", + paddingHorizontal: 20, + marginBottom: 5, + alignItems: "center", + }, + greeting: { + fontSize: 22, + fontWeight: "bold", + marginTop: 20, + color: "#000", + paddingHorizontal: 90, + // alignItems: "center", + // justifyContent: "center", + }, + greetingnama: { + fontSize: 22, + fontWeight: "bold", + marginTop: 30, + marginLeft: -10, + color: "#000", + paddingHorizontal: 20, + flexDirection: "column", + }, + subtitle: { + fontSize: 15, + color: "#000", + fontWeight: "500", + paddingHorizontal: 70, + marginBottom: -30, + marginTop: 5, + marginLeft: 20, + // justifyContent: "center", + }, + coinRow: { + flexDirection: "column", + justifyContent: "flex-start", + alignItems: "center", + paddingHorizontal: 20, + marginTop: 0, + }, + + coinInfo: { alignItems: "flex-start" }, + coinLabel: { + fontSize: 18, + fontWeight: "700", + color: "#333", + marginBottom: 0, + marginLeft: -100, + }, + coinBox: { + marginVertical: 10, + backgroundColor: "#fff", + paddingHorizontal: 130, + paddingVertical: 15, + borderRadius: 20, + flexDirection: "column", + alignItems: "flex-start", + elevation: 1, + borderWidth: 1, + borderColor: "#aaa", + position: "relative", + marginLeft: -5, + }, + coinValueRow: { flexDirection: "row", alignItems: "center", marginTop: 0 }, + coinText: { + fontSize: 30, + fontWeight: "bold", + color: "#333", + textAlign: "left", + marginLeft: -100, + marginBottom: 10, + }, + noCoinText: { + fontSize: 12, + color: "#aaa", + marginTop: 0, + marginBottom: -5, + textAlign: "left", + marginLeft: -100, + }, + statsContainer: { + flexDirection: "row", + justifyContent: "space-between", + marginVertical: 0, + alignContent: "space-between", + padding: 0, + }, + statBox: { + backgroundColor: "#fff", + padding: 15, + borderRadius: 15, + width: "30%", + alignItems: "center", + shadowColor: "#000", + shadowOpacity: 0.1, + shadowRadius: 8, + borderWidth: 0.5, + justifyContent: "space-between", + marginRight: 12, + marginTop: 10, + }, + statLabel: { + fontSize: 12, + justifyContent: "center", + color: "black", + alignItems: "center", + fontWeight: "600", + }, + statValue: { + fontSize: 25, + fontWeight: "bold", + color: "#000", + }, + historyButton: { + position: "absolute", + backgroundColor: "#2C6B2F", + borderColor: "#000", + paddingVertical: 12, + paddingHorizontal: 10, + borderRadius: 20, + top: -6, + right: 10, + marginTop: 20, + alignItems: "center", + justifyContent: "center", + width: "110%", + elevation: 1, + }, + historyButtonText: { + fontSize: 12, + fontWeight: "bold", + color: "#fff", + textAlign: "center", + }, + + reportButton: { + backgroundColor: "#fff", + paddingVertical: 10, + paddingHorizontal: 10, + borderRadius: 20, + // alignItems: "center", + justifyContent: "center", + borderWidth: 0.5, + borderColor: "#000", + width: "80%", + marginTop: 15, + paddingLeft: 5, + padding: 15, + elevation: 2, + marginLeft: 40, + }, + reportButtonText: { + fontSize: 16, + color: "#000", + fontWeight: "bold", + textAlign: "center", + padding: 5, + }, + menuImage: { + width: 50, + height: 50, + marginLeft: 3, + marginBottom: 5, + marginTop: 10, + justifyContent: "center", + }, + menuContainer: { + marginTop: 5, + marginRight: 5, + marginLeft: 12, + flexDirection: "row", + flexWrap: "wrap", + justifyContent: "space-evenly", + paddingRight: 15, + }, + menuItem: { + width: "20%", + + alignItems: "center", + marginVertical: 5, + padding: 10, + borderWidth: 0, + borderColor: "#fff", + borderRadius: 25, + backgroundColor: "#fff", + elevation: 2, + }, + menuText: { + fontSize: 12, + fontWeight: "500", + color: "#333", + marginTop: 0, + textAlign: "center", + }, +}); + +export default AdminScreen; diff --git a/screens/AksesAdmin/BerandaPengaduanAdmin.js b/screens/AksesAdmin/BerandaPengaduanAdmin.js new file mode 100644 index 0000000..0b7f19c --- /dev/null +++ b/screens/AksesAdmin/BerandaPengaduanAdmin.js @@ -0,0 +1,217 @@ +import React from "react"; +import { View, Text, StyleSheet, TouchableOpacity, Image } from "react-native"; +import { Ionicons } from "@expo/vector-icons"; +import { useNavigation } from "@react-navigation/native"; + +const BerandaPengaduanAdmin = () => { + const navigation = useNavigation(); + + return ( + + {/* Header */} + + navigation.navigate("AdminScreen")} + > + + + BERANDA PENGADUAN + + + {/* First Report */} + + + + + Johan Okta Pangestu + + 03/01/2025 10.12 WIB + + + Sedang diverifikasi + + + Sampah numpuk di depan masjid - JI Letjen Sparman + + + Catatan: Mohon segera ditindaklanjuti karena sangat mengganggu + masyarakat sekitar. + + + {/* Images */} + + + + + + + {/* Second Report */} + + + + + Jihan Pangesti + + 03/01/2025 10.12 WIB + + + Dalam Proses + + + Sampah berserakan di Pasar Lama - JI. Sukarno, Nganjuk + + + Catatan: Mohon segera ditindaklanjuti karena sangat mengganggu + masyarakat sekitar. + + + {/* Images */} + + + + + + + ); +}; + +const styles = StyleSheet.create({ + container: { + flex: 1, + backgroundColor: "#fff", + padding: 16, + marginTop: 40, + }, + header: { + flexDirection: "row", + alignItems: "center", + marginBottom: 20, + }, + backButton: { + marginRight: 10, + }, + headerTitle: { + fontSize: 20, + fontWeight: "bold", + color: "#000", + }, + reportContainer: { + marginBottom: 20, + padding: 12, + borderRadius: 15, + backgroundColor: "#fff", + borderWidth: 0.5, + borderColor: "#000", + }, + reportHeader: { + flexDirection: "row", + justifyContent: "space-between", + paddingBottom: 10, + }, + profileContainer: { + flexDirection: "row", + alignItems: "center", + }, + profileImage: { + width: 40, + height: 40, + borderRadius: 20, + marginRight: 10, + }, + reporterName: { + fontSize: 16, + fontWeight: "bold", + }, + time: { + fontSize: 14, + color: "#555", + }, + statusButton: { + backgroundColor: "#DDD", + borderRadius: 8, + paddingVertical: 5, + paddingHorizontal: 5, + marginVertical: 8, + alignItems: "center", + width: "32%", + borderWidth: 0.5, + }, + reportStatus: { + color: "#000", + fontSize: 14, + }, + reportDescription: { + fontSize: 16, + color: "#333", + marginBottom: 8, + }, + reportNote: { + fontSize: 14, + color: "#000", + marginBottom: 12, + }, + imageContainer: { + flexDirection: "row", + justifyContent: "flex-start", + marginBottom: 12, + }, + reportImage: { + width: 100, + height: 100, + borderRadius: 8, + marginRight: 5, + marginLeft: 5, + }, + contributeButton: { + backgroundColor: "#2D572C", + padding: 10, + borderRadius: 8, + alignItems: "center", + width: "50%", + alignContent: "center", + justifyContent: "center", + marginLeft: 90, + marginTop: 20, + }, + contributeText: { + color: "#fff", + fontSize: 16, + }, + coinText: { + color: "#fff", + fontSize: 14, + }, +}); + +export default BerandaPengaduanAdmin; diff --git a/screens/AksesAdmin/DaftarBarang.js b/screens/AksesAdmin/DaftarBarang.js new file mode 100644 index 0000000..cd9b821 --- /dev/null +++ b/screens/AksesAdmin/DaftarBarang.js @@ -0,0 +1,352 @@ +import React, { useState } from "react"; +import { + View, + Text, + TextInput, + TouchableOpacity, + Image, + ScrollView, + StyleSheet, + Alert, +} from "react-native"; +import * as ImagePicker from "expo-image-picker"; // import image picker +import { Ionicons } from "@expo/vector-icons"; +import { useNavigation } from "@react-navigation/native"; +const DaftarBarang = () => { + const navigation = useNavigation(); + const [items, setItems] = useState([ + { + id: 1, + name: "Botol Minum", + coin: 300, + image: require("../../assets/images/botol1.png"), + }, + { + id: 2, + name: "Botol Minum Anak", + coin: 350, + image: require("../../assets/images/botol2.png"), + }, + ]); + + const [isEditing, setIsEditing] = useState(false); + const [formItem, setFormItem] = useState({ + id: null, + name: "", + coin: "", + image: null, + }); + + const pickImage = async () => { + // Minta izin akses galeri + const { status } = await ImagePicker.requestMediaLibraryPermissionsAsync(); + if (status !== "granted") { + Alert.alert( + "Izin Ditolak", + "Izin akses galeri dibutuhkan untuk memilih foto" + ); + return; + } + + const result = await ImagePicker.launchImageLibraryAsync({ + mediaTypes: ImagePicker.MediaTypeOptions.Images, + quality: 1, + }); + + if (!result.canceled) { + setFormItem({ ...formItem, image: { uri: result.assets[0].uri } }); + } + }; + + const handleEdit = (item) => { + setFormItem(item); + setIsEditing(true); + }; + + const handleAddItem = () => { + setFormItem({ id: null, name: "", coin: "", image: null }); + setIsEditing(true); + }; + + const handleSubmit = () => { + if (formItem.name === "" || formItem.coin === "") { + Alert.alert("Error", "Nama dan koin wajib diisi"); + return; + } + + if (formItem.id) { + // Edit + setItems(items.map((i) => (i.id === formItem.id ? { ...formItem } : i))); + } else { + // Tambah + setItems([ + ...items, + { + ...formItem, + id: Date.now(), + image: formItem.image + ? formItem.image + : require("../../assets/images/botol1.png"), + }, + ]); + } + setIsEditing(false); + }; + + const handleDelete = (id) => { + Alert.alert("Konfirmasi", "Apakah Anda yakin ingin menghapus item ini?", [ + { + text: "Batal", + style: "cancel", + }, + { + text: "Hapus", + style: "destructive", + onPress: () => { + setItems(items.filter((item) => item.id !== id)); + }, + }, + ]); + }; + + return ( + + + navigation.navigate("TukarKoin")} + > + + + DAFTAR BARANG + + + + Tambah Item + + + {isEditing && ( + + setFormItem({ ...formItem, name: text })} + style={styles.input} + /> + setFormItem({ ...formItem, coin: text })} + style={styles.input} + /> + + {/* Tombol pilih foto */} + + + {formItem.image ? "Ganti Foto" : "Pilih Foto"} + + + + {/* Preview foto yang dipilih */} + {formItem.image && ( + + )} + + + + {formItem.id ? "Simpan Perubahan" : "Tambah"} + + + + )} + + + + {items.map((item) => ( + + + {item.name} + + {item.coin} Koin + + + handleEdit(item)} + > + Edit + + handleDelete(item.id)} + > + Hapus + + + + ))} + + + + ); +}; + +const styles = StyleSheet.create({ + container: { flex: 1, padding: 20, backgroundColor: "#fff" }, + backButton: { marginBottom: 10 }, + title: { + fontSize: 22, + fontWeight: "bold", + color: "#000", + textAlign: "left", + marginBottom: 12, + marginLeft: 20, + marginRight: 50, + }, + headerRow: { + flexDirection: "row", + alignItems: "center", + marginBottom: 16, + marginTop: 30, + }, + + backButton: { + marginRight: 10, + }, + + title: { + fontSize: 22, + fontWeight: "bold", + color: "#000", + }, + + // title: { + // fontSize: 26, + // fontWeight: "bold", + // color: "#000", + // marginBottom: 20, + // textAlign: "center", + // marginTop: 30, + // }, + addButton: { + backgroundColor: "#2D572C", + paddingVertical: 12, + paddingHorizontal: 20, + borderRadius: 10, + alignSelf: "center", + marginBottom: 20, + }, + addButtonText: { color: "white", fontWeight: "bold", fontSize: 16 }, + form: { + backgroundColor: "#f9f9f9", + padding: 20, + borderRadius: 12, + marginBottom: 25, + borderWidth: 1, + borderColor: "#d1d1d1", + }, + input: { + backgroundColor: "#fff", + padding: 14, + borderRadius: 8, + borderWidth: 1, + borderColor: "#ccc", + marginBottom: 15, + fontSize: 16, + }, + imagePickerBtn: { + backgroundColor: "#DDD", + paddingVertical: 12, + borderRadius: 8, + alignItems: "center", + marginBottom: 10, + padding: 10, + width: "40%", + }, + imagePickerText: { + color: "BLACK", + fontWeight: "bold", + fontSize: 16, + }, + previewImage: { + width: 100, + height: 140, + alignSelf: "center", + marginBottom: 15, + resizeMode: "contain", + borderRadius: 10, + }, + submitBtn: { + backgroundColor: "#2D572C", + paddingVertical: 14, + borderRadius: 8, + alignItems: "center", + }, + submitText: { color: "white", fontWeight: "bold", fontSize: 16 }, + itemGrid: { + flexDirection: "row", + flexWrap: "wrap", + justifyContent: "space-between", + }, + itemCard: { + width: "48%", + backgroundColor: "#fff", + borderRadius: 12, + padding: 15, + marginBottom: 20, + elevation: 4, + shadowColor: "#000", + shadowOpacity: 0.1, + shadowRadius: 6, + shadowOffset: { width: 0, height: 3 }, + alignItems: "center", + }, + itemImage: { + width: 80, + height: 110, + resizeMode: "contain", + marginBottom: 12, + }, + itemName: { + fontSize: 18, + fontWeight: "bold", + color: "#2D572C", + marginBottom: 8, + textAlign: "center", + }, + coinBoxItem: { + backgroundColor: "#2D572C", + paddingVertical: 6, + paddingHorizontal: 16, + borderRadius: 8, + marginBottom: 10, + }, + itemCoin: { + color: "white", + fontWeight: "bold", + fontSize: 16, + }, + actionRow: { + flexDirection: "row", + justifyContent: "space-between", + width: "100%", + }, + editBtn: { + flex: 1, + backgroundColor: "#4CAF50", + paddingVertical: 10, + borderRadius: 8, + alignItems: "center", + marginRight: 8, + }, + deleteBtn: { + flex: 1, + backgroundColor: "#E53935", + paddingVertical: 10, + borderRadius: 8, + alignItems: "center", + }, + actionText: { color: "white", fontWeight: "bold", fontSize: 14 }, +}); + +export default DaftarBarang; diff --git a/screens/AksesAdmin/DaftarTPSAdmin.js b/screens/AksesAdmin/DaftarTPSAdmin.js new file mode 100644 index 0000000..b05278d --- /dev/null +++ b/screens/AksesAdmin/DaftarTPSAdmin.js @@ -0,0 +1,413 @@ +import React, { useState } from "react"; +import { + View, + Text, + StyleSheet, + TextInput, + TouchableOpacity, + ScrollView, + Linking, +} from "react-native"; +import { Ionicons } from "@expo/vector-icons"; +import { useNavigation } from "@react-navigation/native"; + +const tpsData = [ + { + nama: "TPS SENGKUT", + kecamatan: "BERBEK", + alamat: "Desa Werungotok, Kec. Nganjuk", + jenis: "Depo Kecil", + luas: "1,5 x 1,5", + volume: "3.375 m3", + latitude: -7.6141, + longitude: 111.5177, + }, + { + nama: "TPS NGRONGGOT", + kecamatan: "BERBEK", + alamat: "Desa Werungotok, Kec. Nganjuk", + jenis: "Depo Kecil", + luas: "1,5 x 1,5", + volume: "3.375 m3", + }, + + { + nama: "TPS 3R MASTRIP", + kecamatan: "NGANJUK", + alamat: "Desa Mangundikaran, Kec. Nganjuk", + jenis: "TPS 3R", + luas: "2 x 2", + volume: "5 m3", + latitude: -6.6, + longitude: 106.8, + }, + { + nama: "TPS 3R KARTOHARJO", + kecamatan: "NGANJUK", + alamat: "Desa Kartoharjo, Kec. Nganjuk", + jenis: "TPS 3R", + luas: "2 x 2", + volume: "5 m3", + latitude: -7.25, + longitude: 112.75, + }, + { + nama: "TPS 3R KSM GANUNGKIDUL", + kecamatan: "NGANJUK", + alamat: "Desa Ganungkidul, Kec. Nganjuk", + jenis: "TPS 3R KSM", + luas: "3 x 3", + volume: "7.5 m3", + latitude: -6.175, + longitude: 106.8272, + }, + { + nama: "TPS 3R KSM PAYAMAN", + kecamatan: "NGANJUK", + alamat: "Desa Payaman, Kec. Nganjuk", + jenis: "TPS 3R KSM", + luas: "3 x 3", + volume: "7.5 m3", + latitude: -6.175, + longitude: 106.8272, + }, + { + nama: "TPS 3R KSM JATIREJO", + kecamatan: "NGANJUK", + alamat: "Desa Jatirejo, Kec. Nganjuk", + jenis: "TPS 3R KSM", + luas: "3 x 3", + volume: "7.5 m3", + latitude: -6.175, + longitude: 106.8272, + }, +]; + +const DaftarTPS = () => { + const navigation = useNavigation(); + const [search, setSearch] = useState(""); + const [activeCategory, setActiveCategory] = useState("TPS"); + + const filteredTPS = tpsData.filter( + (tps) => + tps.nama.toLowerCase().includes(search.toLowerCase()) && + (activeCategory === "TPS" || tps.jenis === activeCategory) + ); + + const openInMaps = (latitude, longitude) => { + const url = `https://www.google.com/maps/search/?api=1&query=${latitude},${longitude}`; + Linking.openURL(url); + }; + + const handleEdit = (tps) => { + console.log("Edit TPS: ", tps); // Implement the edit functionality here + // You can navigate to another screen for editing if needed + }; + + const handleDelete = (id) => { + console.log("Delete TPS with ID: ", id); // Implement the delete functionality here + // Handle the deletion logic, e.g., updating state or making an API call + }; + + return ( + + + navigation.navigate("Home")} + > + + + DAFTAR TPS DI NGANJUK + + + {/* Button for categories */} + + setActiveCategory("TPS")} + > + + TPS + + + setActiveCategory("TPS 3R")} + > + + TPS 3R + + + setActiveCategory("TPS 3R KSM")} + > + + TPS 3R KSM + + + + + + + + + + + + + {filteredTPS.map((tps, index) => ( + + + + LUAS TPS + {tps.luas} + + + {tps.nama} + KECAMATAN {tps.kecamatan} + + + VOLUME MAKSIMAL + {tps.volume} + + + + + + + Alamat + openInMaps(tps.latitude, tps.longitude)} + > + LOKASI + + + {tps.alamat} + + + + Jenis + + {tps.jenis} + + + {/* Edit and Delete Buttons */} + + handleEdit(tps)} // Pass the tps object here + > + Edit + + handleDelete(tps.id)} // You can pass the id if available + > + Hapus + + + + ))} + + + {/* Tambah TPS Button */} + navigation.navigate("TambahTPS")} + > + TAMBAH TPS + + + ); +}; + +const styles = StyleSheet.create({ + container: { + flex: 1, + backgroundColor: "#fff", + padding: 16, + marginBottom: 0, + marginTop: -40, + }, + header: { + flexDirection: "row", + alignItems: "center", + justifyContent: "space-between", + marginBottom: 10, + marginTop: 70, + }, + backButton: { marginBottom: 10 }, + title: { + fontSize: 22, + fontWeight: "bold", + color: "#000", + textAlign: "left", + marginBottom: 12, + marginLeft: 20, + marginRight: 230, + }, + categoryButtonsContainer: { + flexDirection: "row", + marginBottom: 15, + }, + categoryButton: { + flex: 1, + paddingVertical: 10, + marginRight: 8, + borderRadius: 15, + backgroundColor: "white", + borderWidth: 1, + borderColor: "#2D572C", + alignItems: "center", + justifyContent: "center", + }, + activeButton: { + backgroundColor: "#2D572C", + }, + buttonText: { + color: "#2D572C", + fontWeight: "bold", + }, + actionButtons: { + flexDirection: "row", + justifyContent: "space-between", + padding: 10, + marginTop: 12, + }, + editButton: { + backgroundColor: "#4CAF50", + paddingVertical: 8, + paddingHorizontal: 20, + borderRadius: 8, + }, + deleteButton: { + backgroundColor: "#F44336", + paddingVertical: 8, + paddingHorizontal: 20, + borderRadius: 8, + }, + buttonText: { + color: "#fff", + fontWeight: "bold", + }, + buttonTexts: { + color: "#000", + fontWeight: "bold", + }, + tambahButton: { + backgroundColor: "#f0F0F0", + paddingVertical: 12, + borderRadius: 25, + alignItems: "center", + justifyContent: "center", + marginTop: 20, + marginHorizontal: 50, + borderWidth: 0.5, + }, + tambahButtonText: { + color: "#000", + fontSize: 18, + fontWeight: "bold", + }, + activeButtonText: { + color: "white", // Change text color to white when the button is active + }, + searchContainer: { + flexDirection: "row", + alignItems: "center", + marginBottom: 10, + }, + input: { + flex: 1, + borderWidth: 1, + borderColor: "#999", + borderRadius: 10, + padding: 10, + marginBottom: 10, + }, + searchButton: { + backgroundColor: "#E0E0E0", + padding: 10, + marginLeft: 8, + borderRadius: 8, + }, + card: { + borderRadius: 12, + marginBottom: 20, + borderColor: "#000", + borderWidth: 1, + overflow: "hidden", + shadowColor: "#000", + shadowOpacity: 0.1, + shadowRadius: 5, + backgroundColor: "#fff", + elevation: 3, + }, + cardHeader: { + backgroundColor: "#2D572C", + padding: 10, + flexDirection: "row", + alignItems: "center", + }, + label: { color: "white", fontSize: 11 }, + value: { color: "white", fontWeight: "bold" }, + tpsName: { + color: "white", + fontSize: 16, + fontWeight: "bold", + justifyContent: "center", + marginLeft: 40, + }, + kecamatan: { color: "white", fontSize: 12, marginLeft: 40 }, + labelSmall: { fontSize: 10, color: "white", textAlign: "right" }, + volume: { fontSize: 14, color: "white", fontWeight: "bold" }, + cardContent: { padding: 12 }, + infoRow: { flexDirection: "row", alignItems: "center", gap: 4 }, + infoText: { fontWeight: "bold", marginLeft: 8 }, + subInfo: { marginLeft: 30, fontSize: 13 }, + lokasiButton: { + backgroundColor: "#F0F0F0", + paddingVertical: 8, + paddingHorizontal: 14, + borderRadius: 8, + shadowColor: "#000", + shadowOpacity: 0.1, + elevation: 2, + marginLeft: 220, + borderWidth: 1, + }, +}); + +export default DaftarTPS; diff --git a/screens/AksesAdmin/DetailDalamProses.js b/screens/AksesAdmin/DetailDalamProses.js new file mode 100644 index 0000000..bd52602 --- /dev/null +++ b/screens/AksesAdmin/DetailDalamProses.js @@ -0,0 +1,186 @@ +import React from "react"; +import { View, Text, StyleSheet, TouchableOpacity, Image } from "react-native"; +import { Ionicons } from "@expo/vector-icons"; +import { useNavigation } from "@react-navigation/native"; + +const DetailDalamProses = () => { + const navigation = useNavigation(); + + return ( + + {/* Header */} + + navigation.navigate("PengaduanSampahScreenAdmin")} + > + + + DALAM PROSES + + + {/* First Report */} + + {/* Second Report */} + + + + + Jihan Pangesti + + 10/04/2025 13.00 WIB + + + Dalam Proses + + + Sampah berserakan di Pasar Lama - JI. Sukarno, Nganjuk + + + Catatan: Mohon segera ditindaklanjuti karena sangat mengganggu + masyarakat sekitar. + + + {/* Images */} + + + + + + {/* Button to contribute */} + navigation.navigate("KontribusiAdmin")} + > + Kontribusi Sekarang + + + + ); +}; + +const styles = StyleSheet.create({ + container: { + flex: 1, + backgroundColor: "#fff", + padding: 16, + marginTop: 0, + }, + header: { + flexDirection: "row", + alignItems: "center", + marginBottom: 20, + marginTop: 40, + }, + backButton: { + marginRight: 10, + }, + headerTitle: { + fontSize: 20, + fontWeight: "bold", + color: "#000", + }, + reportContainer: { + marginBottom: 20, + padding: 12, + borderRadius: 15, + backgroundColor: "#fff", + borderWidth: 0.5, + borderColor: "#000", + }, + reportHeader: { + flexDirection: "row", + justifyContent: "space-between", + paddingBottom: 10, + }, + profileContainer: { + flexDirection: "row", + alignItems: "center", + }, + profileImage: { + width: 40, + height: 40, + borderRadius: 20, + marginRight: 10, + }, + reporterName: { + fontSize: 16, + fontWeight: "bold", + }, + time: { + fontSize: 14, + color: "#555", + }, + statusButton: { + backgroundColor: "#DDD", + borderRadius: 8, + paddingVertical: 5, + paddingHorizontal: 5, + marginVertical: 8, + alignItems: "center", + width: "32%", + borderWidth: 0.5, + }, + reportStatus: { + color: "#000", + fontSize: 14, + }, + reportDescription: { + fontSize: 16, + color: "#333", + marginBottom: 8, + }, + reportNote: { + fontSize: 14, + color: "#000", + marginBottom: 12, + }, + imageContainer: { + flexDirection: "row", + justifyContent: "flex-start", + marginBottom: 12, + }, + reportImage: { + width: 100, + height: 100, + borderRadius: 8, + marginRight: 5, + marginLeft: 5, + }, + contributeButton: { + backgroundColor: "#2D572C", + padding: 10, + borderRadius: 8, + alignItems: "center", + width: "50%", + alignContent: "center", + justifyContent: "center", + marginLeft: 90, + marginTop: 20, + }, + contributeText: { + color: "#fff", + fontSize: 16, + }, + coinText: { + color: "#fff", + fontSize: 14, + }, +}); + +export default DetailDalamProses; diff --git a/screens/AksesAdmin/DetailDitolak.js b/screens/AksesAdmin/DetailDitolak.js new file mode 100644 index 0000000..5c8a6b0 --- /dev/null +++ b/screens/AksesAdmin/DetailDitolak.js @@ -0,0 +1,188 @@ +import React from "react"; +import { View, Text, StyleSheet, TouchableOpacity, Image } from "react-native"; +import { Ionicons } from "@expo/vector-icons"; +import { useNavigation } from "@react-navigation/native"; + +const DetailDitolak = () => { + const navigation = useNavigation(); + + return ( + + {/* Header */} + + navigation.navigate("PengaduanSampahScreenAdmin")} + > + + + DETAIL DITOLAK + + + {/* Report Section */} + + + + + Jihan Pangesti + + 10/04/2025 13:00 WIB + + + + Ditolak + + + + Sampah berserakan di Pasar Lama - JI. Sukarno, Nganjuk + + + + Catatan: Mohon segera ditindaklanjuti karena sangat mengganggu + masyarakat sekitar. + + + {/* Alasan Ditolak */} + + Alasan Ditolak: + + Pengaduan ini ditolak karena lokasi yang dilaporkan tidak sesuai + pada foto backButtonContainer yang dikirim. + + + + {/* Images */} + + + + + + + ); +}; + +const styles = StyleSheet.create({ + container: { + flex: 1, + backgroundColor: "#fff", + padding: 16, + marginTop: 0, + }, + header: { + marginTop: 40, + flexDirection: "row", + alignItems: "center", + marginBottom: 20, + }, + backButton: { + marginRight: 10, + }, + headerTitle: { + fontSize: 20, + fontWeight: "bold", + color: "#000", + }, + reportContainer: { + marginBottom: 20, + padding: 12, + borderRadius: 15, + backgroundColor: "#fff", + borderWidth: 0.5, + borderColor: "#000", + }, + reportHeader: { + flexDirection: "row", + justifyContent: "space-between", + paddingBottom: 10, + }, + profileContainer: { + flexDirection: "row", + alignItems: "center", + }, + profileImage: { + width: 40, + height: 40, + borderRadius: 20, + marginRight: 10, + }, + reporterName: { + fontSize: 16, + fontWeight: "bold", + }, + time: { + fontSize: 14, + color: "#555", + }, + statusButton: { + backgroundColor: "#ddd", + borderRadius: 8, + paddingVertical: 5, + paddingHorizontal: 5, + marginVertical: 8, + alignItems: "center", + width: "32%", + borderWidth: 0.5, + }, + reportStatus: { + color: "#000", + fontSize: 14, + }, + reportDescription: { + fontSize: 16, + color: "#333", + marginBottom: 8, + }, + reportNote: { + fontSize: 14, + color: "#000", + marginBottom: 12, + }, + alasanContainer: { + marginTop: 20, + padding: 12, + borderRadius: 8, + backgroundColor: "#FFF3F3", + borderWidth: 1, + borderColor: "#F5B7B1", + }, + alasanTitle: { + fontSize: 16, + fontWeight: "bold", + color: "#D9534F", + }, + alasanText: { + fontSize: 14, + color: "#721c24", + marginTop: 8, + }, + imageContainer: { + flexDirection: "row", + justifyContent: "flex-start", + marginBottom: 12, + marginTop: 12, + }, + reportImage: { + width: 100, + height: 100, + borderRadius: 8, + marginRight: 5, + marginLeft: 5, + }, +}); + +export default DetailDitolak; diff --git a/screens/AksesAdmin/DetailPengirimanAdmin.js b/screens/AksesAdmin/DetailPengirimanAdmin.js new file mode 100644 index 0000000..6ce7f41 --- /dev/null +++ b/screens/AksesAdmin/DetailPengirimanAdmin.js @@ -0,0 +1,319 @@ +import React, { useState } from "react"; +import { + View, + Text, + Image, + StyleSheet, + TouchableOpacity, + Linking, +} from "react-native"; +import { Ionicons } from "@expo/vector-icons"; // Import Ionicons untuk ikon panah + +export default function DetailPengirimanAdmin({ route, navigation }) { + const { item } = route.params; // Mendapatkan data item dari navigation params + const [status, setStatus] = useState(item.status); // Menentukan status awal sesuai item + + // Fungsi untuk menangani perubahan status + const handleUpdateStatus = (newStatus) => { + setStatus(newStatus); // Mengubah status pengiriman + }; + + // Timeline status pengiriman + const statusTimeline = { + diproses: { + title: "Diproses", + time: "23 Januari 2025, 15:12 WIB", + }, + dikirim: { + title: "Dikirim", + time: "24 Januari 2025, 10:00 WIB", + }, + diterima: { + title: "Diterima", + time: "25 Januari 2025, 13:00 WIB", + }, + selesai: { + title: "Selesai", + time: "26 Januari 2025, 17:00 WIB", + }, + }; + + // Fungsi untuk menghubungi penerima via WhatsApp + const handleContactRecipient = () => { + const phoneNumber = "628123456789"; // Ganti dengan nomor penerima yang terdaftar + const message = "Halo, ada update tentang pengiriman barang Anda."; // Pesan default yang ingin dikirim + + const url = `whatsapp://send?phone=${phoneNumber}&text=${encodeURIComponent( + message + )}`; + + // Mengecek apakah WhatsApp dapat dibuka + Linking.openURL(url).catch((err) => { + console.error("Error opening WhatsApp:", err); + }); + }; + + const currentItem = { + ...item, + statusDetails: + status === "diproses" + ? "Barang sedang diproses oleh tim Dinas Lingkungan Hidup." + : status === "dikirim" + ? "Barang telah dikirimkan kepada penerima." + : status === "diterima" + ? "Barang telah diterima oleh penerima." + : "Pengiriman selesai.", + estimatedDate: + status === "diterima" + ? "Pengiriman selesai, tidak ada tanggal estimasi lebih lanjut." + : "Diperkirakan tiba pada 30 Januari 2025.", + }; + + return ( + + + navigation.goBack()} + > + + + DETAIL PENGIRIMAN BARANG + + + {/* Hubungi Penerima Button */} + + Hubungi Penerima + + + {/* Image */} + + + {/* Product Details */} + + {currentItem.name} + {currentItem.points} + + + {/* Foto Profil Penerima */} + + + {/* Informasi Profil Penerima */} + + + Alamat: Jl. Sudirman No.5, Bandung + + Email: siti@example.com + No. Telepon: 082123456789 + + + {/* Status Progress */} + + Proses Pengiriman + + {Object.keys(statusTimeline).map((step, index) => ( + + {statusTimeline[step].title} + {statusTimeline[step].time} + + ))} + + + + {/* Status Detail */} + + {currentItem.statusDetails} + + + {/* Estimated Delivery */} + + {currentItem.estimatedDate} + + + {/* Shipping Information */} + + + {currentItem.shippingAddress} + + Jasa Pengiriman + JNE + No Resi + 5679032190775 + + + {/* Buttons to update the status */} + {status === "diproses" && ( + handleUpdateStatus("dikirim")} + > + UPDATE STATUS: DIKIRIM + + )} + + {status === "diterima" && ( + handleUpdateStatus("selesai")} + > + UPDATE STATUS: SELESAI + + )} + + ); +} + +const styles = StyleSheet.create({ + container: { + flex: 1, + padding: 16, + backgroundColor: "#fff", + }, + header: { + marginTop: 40, + flexDirection: "row", + alignItems: "center", + marginBottom: 30, + }, + backButton: { + marginRight: 10, + }, + title: { + fontSize: 22, + fontWeight: "bold", + color: "#333", + }, + contactButton: { + backgroundColor: "#4CAF50", + padding: 10, + borderRadius: 5, + marginBottom: 20, + alignItems: "center", + borderRadius: 20, + marginLeft: 120, + marginRight: 120, + }, + contactText: { + color: "#fff", + fontSize: 14, + }, + image: { + width: 100, + height: 100, + alignSelf: "center", + marginBottom: 16, + }, + productInfo: { + alignItems: "center", + marginBottom: 16, + }, + productName: { + fontSize: 18, + fontWeight: "bold", + alignItems: "flex-start", + }, + productPoints: { + fontSize: 14, + color: "#777", + }, + recipientInfo: { + flexDirection: "row", + alignItems: "center", + marginBottom: 16, + justifyContent: "center", + }, + recipientImage: { + width: 50, + height: 50, + borderRadius: 25, + marginRight: 10, + }, + recipientName: { + fontSize: 16, + fontWeight: "bold", + }, + profileInfo: { + marginBottom: 10, + justifyContent: "flex-start", + }, + profileText: { + fontSize: 14, + color: "#777", + alignItems: "center", + alignContent: "center", + justifyContent: "center", + }, + statusContainer: { + marginBottom: 16, + }, + statusTitle: { + fontSize: 16, + fontWeight: "bold", + marginBottom: 8, + }, + statusTimeline: { + flexDirection: "column", + alignItems: "flex-start", + }, + step: { + marginBottom: 12, + }, + activeStep: { + marginBottom: 12, + borderLeftWidth: 4, + borderColor: "#4CAF50", + paddingLeft: 12, + }, + stepText: { + fontSize: 14, + fontWeight: "bold", + }, + time: { + fontSize: 12, + color: "#777", + }, + statusDetail: { + marginBottom: 16, + }, + statusDetails: { + fontSize: 14, + color: "#777", + }, + estimatedDelivery: { + marginBottom: 16, + alignItems: "center", + }, + estimatedText: { + fontSize: 14, + fontStyle: "italic", + }, + shippingInfo: { + marginBottom: 10, + }, + shippingTitle: { + fontSize: 14, + fontWeight: "bold", + }, + shippingDetails: { + fontSize: 14, + marginBottom: 8, + }, + button: { + marginTop: 20, + backgroundColor: "#2f4f2f", + padding: 15, + borderRadius: 10, + alignItems: "center", + }, + buttonText: { + color: "#fff", + fontSize: 16, + fontWeight: "bold", + }, +}); diff --git a/screens/AksesAdmin/DetailVerifikasi.js b/screens/AksesAdmin/DetailVerifikasi.js new file mode 100644 index 0000000..699f899 --- /dev/null +++ b/screens/AksesAdmin/DetailVerifikasi.js @@ -0,0 +1,317 @@ +import React, { useState } from "react"; +import { + View, + Text, + StyleSheet, + TouchableOpacity, + Image, + TextInput, +} from "react-native"; +import { Ionicons } from "@expo/vector-icons"; +import { useNavigation } from "@react-navigation/native"; // Import useNavigation untuk navigasi + +const DetailVerifikasi = () => { + const navigation = useNavigation(); + + // State untuk mengatur status tombol + const [isVerified, setIsVerified] = useState(false); // Menyimpan status verifikasi + const [showTolakForm, setShowTolakForm] = useState(false); // Menyimpan status tampilkan form alasan tolak + const [alasanTolak, setAlasanTolak] = useState(""); // Menyimpan alasan tolak pengaduan + const [isTolakClicked, setIsTolakClicked] = useState(false); // Status tombol tolak pengaduan sudah diklik + + // Fungsi untuk menangani klik tombol verifikasi + const handleVerifikasi = () => { + setIsVerified(true); // Mengubah status menjadi diverifikasi + }; + + // Fungsi untuk mengirim alasan tolak pengaduan + const handleKirimTolak = () => { + setIsTolakClicked(true); // Mengubah status tombol tolak menjadi sudah diklik + setShowTolakForm(false); // Menutup form setelah alasan dikirim + + // Navigasi ke halaman DitolakScreen dan mengirim alasan penolakan + navigation.navigate("DitolakScreen"); + }; + + return ( + + {/* Header */} + + navigation.navigate("PengaduanSampahScreenAdmin")} + > + + + VERIFIKASI + + + {/* First Report */} + + {/* Second Report */} + + + + + Jihan Pangesti + + 10/04/2025 13.00 WIB + + {/* Status */} + + Dalam Proses + + + Sampah berserakan di Pasar Lama - JI. Sukarno, Nganjuk + + + Catatan: Mohon segera ditindaklanjuti karena sangat mengganggu + masyarakat sekitar. + + + {/* Images */} + + + + + + {/* Button to contribute (Verifikasi) */} + + + {isVerified ? "Sudah Diverifikasi" : "Verifikasi"} + + + + {/* Button to reject the report, will hide if verified */} + {!isVerified && ( + setShowTolakForm(true)} + disabled={isTolakClicked} // Menonaktifkan tombol jika sudah diklik + > + + {isTolakClicked ? "Tolak Pengaduan" : "Tolak Pengaduan"} + + + )} + + {/* Form Alasan Tolak Pengaduan */} + {showTolakForm && ( + + Alasan Tolak Pengaduan + + + Kirim + + + )} + + + ); +}; + +const styles = StyleSheet.create({ + container: { + flex: 1, + backgroundColor: "#fff", + padding: 16, + marginTop: 0, + }, + header: { + marginTop: 40, + flexDirection: "row", + alignItems: "center", + marginBottom: 20, + }, + backButton: { + marginRight: 10, + }, + headerTitle: { + fontSize: 20, + fontWeight: "bold", + color: "#000", + }, + reportContainer: { + marginBottom: 20, + padding: 12, + borderRadius: 15, + backgroundColor: "#fff", + borderWidth: 0.5, + borderColor: "#000", + }, + reportHeader: { + flexDirection: "row", + justifyContent: "space-between", + paddingBottom: 10, + }, + profileContainer: { + flexDirection: "row", + alignItems: "center", + }, + profileImage: { + width: 40, + height: 40, + borderRadius: 20, + marginRight: 10, + }, + reporterName: { + fontSize: 16, + fontWeight: "bold", + }, + time: { + fontSize: 14, + color: "#555", + }, + statusButton: { + backgroundColor: "#DDD", + borderRadius: 8, + paddingVertical: 5, + paddingHorizontal: 5, + marginVertical: 8, + alignItems: "center", + width: "32%", + borderWidth: 0.5, + }, + reportStatus: { + color: "#000", + fontSize: 14, + }, + reportDescription: { + fontSize: 16, + color: "#333", + marginBottom: 8, + }, + reportNote: { + fontSize: 14, + color: "#000", + marginBottom: 12, + }, + imageContainer: { + flexDirection: "row", + justifyContent: "flex-start", + marginBottom: 12, + }, + reportImage: { + width: 100, + height: 100, + borderRadius: 8, + marginRight: 5, + marginLeft: 5, + }, + contributeButton: { + backgroundColor: "#2D572C", + padding: 10, + borderRadius: 8, + alignItems: "center", + width: "50%", + alignContent: "center", + justifyContent: "center", + marginLeft: 90, + marginTop: 20, + }, + contributeButtonTolak: { + backgroundColor: "#8b0000", + padding: 10, + borderRadius: 8, + alignItems: "center", + width: "50%", + alignContent: "center", + justifyContent: "center", + marginLeft: 90, + marginTop: 20, + }, + tolakButtonDisabled: { + backgroundColor: "#A9A9A9", // Disabled gray + padding: 10, + borderRadius: 8, + alignItems: "center", + width: "50%", + alignContent: "center", + justifyContent: "center", + marginLeft: 90, + marginTop: 20, + }, + verifiedButton: { + backgroundColor: "#777b7e", + padding: 10, + borderRadius: 8, + alignItems: "center", + width: "50%", + alignContent: "center", + justifyContent: "center", + marginLeft: 90, + marginTop: 20, + borderWidth: 0.5, + }, + contributeTextSudah: { + color: "#fff", + fontSize: 16, + }, + contributeText: { + color: "#fff", + fontSize: 16, + }, + formContainer: { + marginTop: 20, + }, + formTitle: { + fontSize: 18, + fontWeight: "bold", + marginBottom: 10, + }, + textInput: { + height: 100, + borderColor: "#ddd", + borderWidth: 1, + borderRadius: 8, + padding: 10, + fontSize: 16, + textAlignVertical: "top", + }, + submitButton: { + backgroundColor: "#2D572C", + padding: 10, + borderRadius: 8, + marginTop: 10, + alignItems: "center", + }, + submitText: { + color: "#fff", + fontSize: 16, + }, +}); + +export default DetailVerifikasi; diff --git a/screens/AksesAdmin/EditProfilScreen.js b/screens/AksesAdmin/EditProfilScreen.js new file mode 100644 index 0000000..a719c27 --- /dev/null +++ b/screens/AksesAdmin/EditProfilScreen.js @@ -0,0 +1,256 @@ +import React, { useState } from "react"; +import { + View, + Text, + TextInput, + TouchableOpacity, + Image, + StyleSheet, + Alert, +} from "react-native"; +import { Ionicons } from "@expo/vector-icons"; +import { useNavigation } from "@react-navigation/native"; +import * as ImagePicker from "expo-image-picker"; // Mengimpor expo-image-picker + +const EditProfilScreen = () => { + const navigation = useNavigation(); + + // State untuk data profil + const [userProfile, setUserProfile] = useState({ + name: "Johan Okta Pangestu", + email: "okta@gmail.com", + phone: "08123456789", + address: "Jl. Raya No. 123, Nganjuk", + photo: + "https://i.ytimg.com/vi/b1XXKeq5ccQ/oar2.jpg?sqp=-oaymwEkCJUDENAFSFqQAgHyq4qpAxMIARUAAAAAJQAAyEI9AICiQ3gB&rs=AOn4CLBxYjkvH5GuWS8_SYMNsg5aIGYIRA", // Default photo + }); + + // Fungsi untuk memilih foto + const handleChoosePhoto = async () => { + // Meminta izin untuk mengakses galeri + const permissionResult = + await ImagePicker.requestMediaLibraryPermissionsAsync(); + + if (permissionResult.granted === false) { + alert("Izin akses galeri ditolak!"); + return; + } + + // Meluncurkan galeri untuk memilih gambar + const result = await ImagePicker.launchImageLibraryAsync({ + mediaTypes: ImagePicker.MediaTypeOptions.Images, // Hanya gambar + quality: 0.5, // Kualitas gambar + }); + + if (!result.canceled) { + // Update foto profil dengan gambar yang dipilih + setUserProfile({ ...userProfile, photo: result.uri }); + } + }; + + // Fungsi untuk menghapus foto + const handleRemovePhoto = () => { + Alert.alert( + "Konfirmasi", + "Apakah Anda yakin ingin menghapus foto profil?", + [ + { text: "Batal", style: "cancel" }, + { + text: "Hapus", + onPress: () => setUserProfile({ ...userProfile, photo: "" }), // Hapus foto profil + }, + ] + ); + }; + + // Fungsi untuk menyimpan perubahan profil + const handleSaveChanges = () => { + // Tampilkan alert sebagai konfirmasi + Alert.alert("Profil Diperbarui", "Perubahan profil berhasil disimpan."); + // Logika untuk menyimpan perubahan, misalnya API request, bisa ditambahkan di sini. + console.log(userProfile); + }; + + return ( + + {/* Header */} + + navigation.goBack()}> + + + EDIT PROFIL + + + {/* Foto Profil */} + + {userProfile.photo ? ( + + ) : ( + + + + )} + + + Ubah Foto Profil + + + {userProfile.photo && ( + + Hapus Foto Profil + + )} + + + {/* Form Edit Profil */} + + Nama: + + setUserProfile({ ...userProfile, name: text }) + } + /> + + Email: + + setUserProfile({ ...userProfile, email: text }) + } + /> + + No. HP: + + setUserProfile({ ...userProfile, phone: text }) + } + /> + + Alamat: + + setUserProfile({ ...userProfile, address: text }) + } + /> + + + {/* Tombol Simpan */} + navigation.navigate("ProfilAdminScreen")} + > + Simpan + + + ); +}; + +const styles = StyleSheet.create({ + container: { + flex: 1, + backgroundColor: "#fff", + padding: 20, + }, + header: { + marginTop: 40, + flexDirection: "row", + alignItems: "center", + marginBottom: 20, + }, + headerText: { + fontSize: 20, + fontWeight: "bold", + color: "#000", + marginLeft: 10, + }, + profileImageContainer: { + alignItems: "center", + marginBottom: 20, + }, + profileImage: { + width: 150, + height: 150, + borderRadius: 75, + marginBottom: 10, + }, + defaultImage: { + width: 150, + height: 150, + borderRadius: 75, + backgroundColor: "#ddd", + justifyContent: "center", + alignItems: "center", + }, + changePhotoButton: { + backgroundColor: "#ddd", + paddingVertical: 8, + borderRadius: 8, + marginBottom: 10, + width: "30%", + alignItems: "center", + borderWidth: 0.5, + }, + changePhotoButtonText: { + color: "#000", + fontWeight: "bold", + }, + removePhotoButton: { + backgroundColor: "#E74C3C", + paddingVertical: 8, + borderRadius: 8, + width: "30%", + alignItems: "center", + borderWidth: 0.5, + }, + removePhotoButtonText: { + color: "#fff", + fontWeight: "bold", + }, + form: { + marginBottom: 20, + }, + label: { + fontSize: 14, + fontWeight: "bold", + color: "#555", + marginBottom: 5, + }, + input: { + borderWidth: 1, + borderColor: "#ccc", + borderRadius: 5, + padding: 10, + marginBottom: 20, + fontSize: 16, + color: "#333", + }, + saveButton: { + backgroundColor: "#2D572C", + paddingVertical: 12, + borderRadius: 8, + alignItems: "center", + }, + saveButtonText: { + fontSize: 16, + color: "#fff", + fontWeight: "bold", + }, +}); + +export default EditProfilScreen; diff --git a/screens/AksesAdmin/EditTPS.js b/screens/AksesAdmin/EditTPS.js new file mode 100644 index 0000000..0d903fb --- /dev/null +++ b/screens/AksesAdmin/EditTPS.js @@ -0,0 +1,238 @@ +import React, { useState, useEffect } from "react"; +import { + View, + Text, + StyleSheet, + TextInput, + TouchableOpacity, + Alert, + ScrollView, +} from "react-native"; +import { Ionicons } from "@expo/vector-icons"; +import { useNavigation, useRoute } from "@react-navigation/native"; +import MapView, { Marker } from "react-native-maps"; +import { Picker } from "@react-native-picker/picker"; + +const EditTPS = () => { + const navigation = useNavigation(); + const route = useRoute(); + const { tps } = route.params || {}; // Handle missing tps object gracefully + + useEffect(() => { + if (tps) { + console.log("Received tps data:", tps); + } else { + console.log("No tps data received"); + } + }, [tps]); + + const [nama, setNama] = useState(tps?.nama || ""); + const [kecamatan, setKecamatan] = useState(tps?.kecamatan || ""); + const [alamat, setAlamat] = useState(tps?.alamat || ""); + const [jenis, setJenis] = useState(tps?.jenis || ""); + const [luas, setLuas] = useState(tps?.luas || ""); + const [volume, setVolume] = useState(tps?.volume || ""); + const [latitude, setLatitude] = useState(tps?.latitude?.toString() || ""); + const [longitude, setLongitude] = useState(tps?.longitude?.toString() || ""); + + const handleSave = () => { + if ( + !nama || + !kecamatan || + !alamat || + !jenis || + !luas || + !volume || + !latitude || + !longitude + ) { + Alert.alert("Error", "Semua field harus diisi!"); + return; + } + + const updatedTPS = { + ...tps, + nama, + kecamatan, + alamat, + jenis, + luas, + volume, + latitude: parseFloat(latitude), + longitude: parseFloat(longitude), + }; + + // Here you can update your database or state with the updated data. + navigation.goBack(); + Alert.alert("Sukses", "TPS berhasil diperbarui!"); + }; + + return ( + + + navigation.goBack()} + > + + + EDIT LOKASI TPS + + + + + + + + Pilih Jenis TPS + setJenis(itemValue)} + > + + + + + + + Pilih Kecamatan + setKecamatan(itemValue)} + > + + + + + + + + + + {/* MapView to show location */} + {latitude && longitude ? ( + + + + ) : null} + + + SIMPAN + + + + ); +}; + +const styles = StyleSheet.create({ + container: { + flex: 1, + backgroundColor: "#fff", + padding: 16, + marginTop: 30, + }, + header: { + flexDirection: "row", + alignItems: "center", + marginBottom: 20, + }, + backButton: { + marginRight: 20, + }, + title: { + fontSize: 20, + fontWeight: "bold", + color: "#000", + }, + formContainer: { + marginTop: -15, + padding: 15, + }, + input: { + borderWidth: 1, + borderColor: "#ccc", + borderRadius: 8, + padding: 15, + marginBottom: 12, + fontSize: 14, + }, + label: { + fontSize: 14, + fontWeight: "bold", + marginBottom: 5, + }, + picker: { + height: 50, + borderWidth: 1, + borderColor: "#ccc", + borderRadius: 8, + marginBottom: 12, + }, + map: { + height: 200, + marginBottom: 20, + }, + saveButton: { + width: "100%", + padding: 15, + backgroundColor: "#2D572C", + alignItems: "center", + borderRadius: 15, + }, + saveButtonText: { + color: "#fff", + fontSize: 16, + fontWeight: "bold", + }, +}); + +export default EditTPS; diff --git a/screens/AksesAdmin/ExpensePage.JS b/screens/AksesAdmin/ExpensePage.JS new file mode 100644 index 0000000..ff8ba0f --- /dev/null +++ b/screens/AksesAdmin/ExpensePage.JS @@ -0,0 +1,88 @@ +// ExpensePage.js +import React from 'react'; +import { View, Text, StyleSheet, ScrollView } from 'react-native'; + +const ExpensePage = () => { + // Data pengeluaran untuk pengelolaan sampah, bisa diganti dengan data dari API atau state global + const expenses = [ + { id: 1, description: 'Biaya Transportasi Pengangkutan Sampah', amount: 3000000 }, + { id: 2, description: 'Biaya Pemeliharaan TPS', amount: 1200000 }, + { id: 3, description: 'Gaji Petugas Pengelola Sampah', amount: 1500000 }, + { id: 4, description: 'Biaya Pengadaan Alat Pengelolaan Sampah', amount: 800000 }, + { id: 5, description: 'Biaya Sosialisasi Pengelolaan Sampah', amount: 500000 }, + ]; + + const totalExpense = expenses.reduce((total, expense) => total + expense.amount, 0); + + return ( + + Halaman Pengeluaran Pengelolaan Sampah + + {expenses.map((expense) => ( + + {expense.description} + Rp {expense.amount.toLocaleString()} + + ))} + + + Total Pengeluaran Pengelolaan Sampah: + Rp {totalExpense.toLocaleString()} + + + ); +}; + +const styles = StyleSheet.create({ + container: { + padding: 20, + backgroundColor: '#f8f8f8', + }, + header: { + fontSize: 24, + fontWeight: 'bold', + textAlign: 'center', + marginBottom: 20, + }, + expensesList: { + marginBottom: 20, + }, + expenseItem: { + backgroundColor: '#fff', + padding: 15, + marginBottom: 10, + borderRadius: 5, + shadowColor: '#000', + shadowOffset: { width: 0, height: 2 }, + shadowOpacity: 0.1, + shadowRadius: 5, + }, + description: { + fontSize: 16, + fontWeight: '600', + }, + amount: { + fontSize: 16, + color: '#888', + }, + totalContainer: { + backgroundColor: '#fff', + padding: 15, + borderRadius: 5, + shadowColor: '#000', + shadowOffset: { width: 0, height: 2 }, + shadowOpacity: 0.1, + shadowRadius: 5, + }, + totalText: { + fontSize: 18, + fontWeight: 'bold', + }, + totalAmount: { + fontSize: 18, + color: '#f00', + marginTop: 10, + }, +}); + +export default ExpensePage; diff --git a/screens/AksesAdmin/KontribusiAdmin.js b/screens/AksesAdmin/KontribusiAdmin.js new file mode 100644 index 0000000..fa720e3 --- /dev/null +++ b/screens/AksesAdmin/KontribusiAdmin.js @@ -0,0 +1,195 @@ +import React, { useState } from "react"; +import { + ScrollView, + View, + Text, + TextInput, + TouchableOpacity, + StyleSheet, +} from "react-native"; +import { Ionicons } from "@expo/vector-icons"; // Icon library for the media buttons + +const KontribusiAdmin = ({ navigation, route }) => { + // Destructuring safely with fallback values if route.params is undefined + const { + judulPengaduan = "Sampah berantakan", + tempatPengaduan = "Jl Raya Madiun Nganjuk", + } = route?.params || {}; + + const [catatan, setCatatan] = useState(""); + + return ( + + {/* Title and Back Button */} + + navigation.goBack()} + > + + + KONTRIBUSI SEKARANG + + + {/* Contribution Info Container */} + + + {judulPengaduan} + {tempatPengaduan} + + + {/* Add Media Row (Foto & Video) */} + + + + Tambah Foto + + + + Tambah Video + + + + {/* Catatan (Note Input) */} + + + + {/* Koin Message */} + Dapatkan +520 Koin + + {/* Post Button at Bottom */} + navigation.navigate("KontribusiBerhasilAdmin")} + > + Posting + + + ); +}; + +const styles = StyleSheet.create({ + container: { + flex: 1, + // marginTop: 30, + backgroundColor: "#f9f9f9", + }, + header: { + marginTop: 40, + flexDirection: "row", // Aligns items horizontally + alignItems: "center", // Vertically centers items + padding: 15, + backgroundColor: "#fff", // Dark green background + borderBottomLeftRadius: 20, + borderBottomRightRadius: 20, + }, + backButton: { + marginRight: 15, // Adds spacing between the back button and the title + }, + title: { + fontSize: 22, + color: "#000", + fontWeight: "bold", + flex: 1, // Ensures title takes up remaining space + textAlign: "left", + }, + contributionContainer: { + padding: 20, + backgroundColor: "#fff", + marginBottom: 20, + borderRadius: 12, + shadowColor: "#000", + shadowOpacity: 0.1, + shadowOffset: { width: 0, height: 4 }, + shadowRadius: 4, + // elevation: 5, // For Android shadow + }, + infoBox: { + marginBottom: 20, + }, + infoText1: { + fontSize: 22, + color: "#333", + fontWeight: "700", + marginBottom: 5, + }, + infoText2: { + fontSize: 18, + color: "#777", + fontWeight: "400", + }, + mediaRow: { + flexDirection: "row", + justifyContent: "space-between", + marginBottom: 25, + }, + mediaButton: { + alignItems: "center", + flex: 1, + padding: 15, + backgroundColor: "#E8F5E9", // Light green background + borderRadius: 10, + marginHorizontal: 10, + borderWidth: 1, + borderColor: "#2D572C", + shadowColor: "#000", + shadowOpacity: 0.1, + shadowOffset: { width: 0, height: 3 }, + shadowRadius: 5, + elevation: 3, + }, + mediaButtonText: { + fontSize: 14, + color: "#2D572C", + marginTop: 5, + }, + input: { + height: 100, + borderColor: "#2D572C", + borderWidth: 1, + borderRadius: 8, + padding: 12, + fontSize: 16, + marginBottom: 15, + backgroundColor: "#fff", + shadowColor: "#000", + shadowOpacity: 0.1, + shadowOffset: { width: 0, height: 2 }, + shadowRadius: 5, + elevation: 2, + }, + koinText: { + fontSize: 18, + fontWeight: "bold", + textAlign: "center", + color: "#2D572C", + marginBottom: 20, + }, + postButton: { + backgroundColor: "#2D572C", // Dark Green + paddingVertical: 15, + borderRadius: 10, + marginBottom: 20, + alignItems: "center", + width: "90%", + alignSelf: "center", + shadowColor: "#000", + shadowOpacity: 0.1, + shadowOffset: { width: 0, height: 5 }, + shadowRadius: 8, + elevation: 5, + }, + postButtonText: { + fontSize: 18, + color: "#fff", + fontWeight: "bold", + }, +}); + +export default KontribusiAdmin; diff --git a/screens/AksesAdmin/KontribusiBerhasilAdmin.js b/screens/AksesAdmin/KontribusiBerhasilAdmin.js new file mode 100644 index 0000000..da5dcad --- /dev/null +++ b/screens/AksesAdmin/KontribusiBerhasilAdmin.js @@ -0,0 +1,80 @@ +import React from "react"; +import { View, Text, Button, StyleSheet, TouchableOpacity } from "react-native"; +import { MaterialCommunityIcons } from "@expo/vector-icons"; // Menggunakan ikon ceklis + +const KontribusiBerhasilAdmin = ({ navigation }) => { + return ( + + + + Kontribusi Berhasil ! + {/* + Mohon pastikan informasi yang diberikan sudah sesuai, agar kami dapat + segera menindaklanjuti. + */} + + Terima kasih telah berkontribusi untuk lingkungan! + + console.log("Daftar Submit")} + onPress={() => navigation.navigate("BerandaPengaduanAdmin")} + > + LIHAT KONTRIBUSI + + + + ); +}; + +const styles = StyleSheet.create({ + container: { + flex: 1, + justifyContent: "center", + alignItems: "center", + backgroundColor: "#435739", // Warna hijau gelap + }, + content: { + justifyContent: "center", + alignItems: "center", + backgroundColor: "#435739", // Transparansi gelap untuk efek overlay + padding: 30, + borderRadius: 15, + width: "80%", + alignItems: "center", + }, + title: { + fontSize: 24, + fontWeight: "bold", + color: "#ffea00", + marginTop: 0, + }, + message: { + fontSize: 16, + color: "#fff", + textAlign: "center", + marginTop: 10, + }, + subMessage: { + fontSize: 15, + color: "#ffea00", + textAlign: "center", + marginTop: 10, + padding: 3, + }, + button: { + backgroundColor: "#fff", + paddingVertical: 10, + paddingHorizontal: 40, + borderRadius: 5, + marginTop: 20, + borderRadius: 25, + fontWeight: "bold", + }, + buttonText: { + fontWeight: "bold", + fontSize: 15, + }, +}); + +export default KontribusiBerhasilAdmin; diff --git a/screens/AksesAdmin/Laporan.js b/screens/AksesAdmin/Laporan.js new file mode 100644 index 0000000..2133e67 --- /dev/null +++ b/screens/AksesAdmin/Laporan.js @@ -0,0 +1,347 @@ +import React, { useState } from "react"; +import { Ionicons, MaterialIcons } from "@expo/vector-icons"; // I +import { + View, + Text, + StyleSheet, + Button, + Modal, + TouchableOpacity, + FlatList, +} from "react-native"; +import * as Print from "expo-print"; +import * as FileSystem from "expo-file-system"; +import { useNavigation } from "@react-navigation/native"; // Import useNavigation untuk navigasi + +const Laporan = () => { + const navigation = useNavigation(); + const [bulan, setBulan] = useState("Januari"); + const [modalVisible, setModalVisible] = useState(false); + const [selectedReport, setSelectedReport] = useState(null); + + const data = { + tpsData: [ + { tps: "TPS 1", jumlah: 150 }, + { tps: "TPS 2", jumlah: 200 }, + { tps: "TPS 3", jumlah: 180 }, + ], + pengaduanData: [ + { bulan: "Januari", jumlah: 25 }, + { bulan: "Februari", jumlah: 30 }, + { bulan: "Maret", jumlah: 18 }, + ], + penukaranKoinData: [ + { bulan: "Januari", jumlah: 1500 }, + { bulan: "Februari", jumlah: 2000 }, + { bulan: "Maret", jumlah: 1200 }, + ], + donasiData: [ + { bulan: "Januari", jumlah: 100000 }, + { bulan: "Februari", jumlah: 120000 }, + { bulan: "Maret", jumlah: 80000 }, + ], + }; + + const filterDataByMonth = (month) => { + const filteredData = { + tpsData: data.tpsData, + pengaduanData: data.pengaduanData.filter((item) => item.bulan === month), + penukaranKoinData: data.penukaranKoinData.filter( + (item) => item.bulan === month + ), + donasiData: data.donasiData.filter((item) => item.bulan === month), + }; + return filteredData; + }; + + const generatePDF = async (reportType) => { + const filteredData = filterDataByMonth(bulan); + + let htmlContent = ""; + + if (reportType === "tps") { + htmlContent = ` +

Laporan TPS di Nganjuk

+ + + + + + ${filteredData.tpsData + .map( + (item) => ` + + + + ` + ) + .join("")} +
TPSJumlah
${item.tps}${item.jumlah}
+ `; + } else if (reportType === "pengaduan") { + htmlContent = ` +

Laporan Pengaduan Sampah - ${bulan}

+ + + + + + ${filteredData.pengaduanData + .map( + (item) => ` + + + + ` + ) + .join("")} +
BulanJumlah Pengaduan
${item.bulan}${item.jumlah}
+ `; + } else if (reportType === "penukaran") { + htmlContent = ` +

Laporan Penukaran Koin - ${bulan}

+ + + + + + ${filteredData.penukaranKoinData + .map( + (item) => ` + + + + ` + ) + .join("")} +
BulanJumlah Koin
${item.bulan}${item.jumlah}
+ `; + } else if (reportType === "donasi") { + htmlContent = ` +

Laporan Donasi - ${bulan}

+ + + + + + ${filteredData.donasiData + .map( + (item) => ` + + + + ` + ) + .join("")} +
BulanJumlah Donasi
${item.bulan}Rp ${item.jumlah.toLocaleString()}
+ `; + } + + try { + const { uri } = await Print.printToFileAsync({ html: htmlContent }); + console.log("PDF berhasil dibuat di:", uri); + alert(`PDF berhasil dibuat! File disimpan di: ${uri}`); + } catch (error) { + console.error("Error saat membuat PDF:", error); + alert("Gagal membuat PDF."); + } + }; + + const months = [ + "Januari", + "Februari", + "Maret", + "April", + "Mei", + "Juni", + "Juli", + "Agustus", + "September", + "Oktober", + "November", + "Desember", + ]; + + return ( + + {/* Laporan Data */} + + navigation.navigate("AdminScreen")} + > + + + LAPORAN + + {/* Tombol untuk Memilih Laporan */} + + { + setSelectedReport("tps"); + setModalVisible(true); + }} + > + TPS di Nganjuk + + { + setSelectedReport("pengaduan"); + setModalVisible(true); + }} + > + Pengaduan Sampah + + { + setSelectedReport("penukaran"); + setModalVisible(true); + }} + > + Penukaran Koin + + { + setSelectedReport("donasi"); + setModalVisible(true); + }} + > + Donasi + + + + {/* Modal untuk memilih bulan */} + setModalVisible(false)} + > + + + Pilih Bulan + item} + renderItem={({ item }) => ( + { + setBulan(item); + generatePDF(selectedReport); + setModalVisible(false); + }} + > + {item} + + )} + /> + setModalVisible(false)} + > + Tutup + + + + + + ); +}; + +const styles = StyleSheet.create({ + container: { + flex: 1, + backgroundColor: "#fff", + padding: 16, + }, + header: { + marginTop: 40, + flexDirection: "row", + alignItems: "center", + marginBottom: 20, + }, + backButton: { + marginRight: 12, + }, + title: { + fontSize: 22, + fontWeight: "bold", + color: "#000", + }, + headerTitle: { + fontSize: 22, + fontWeight: "bold", + marginBottom: 20, + textAlign: "center", + }, + buttonContainer: { + marginBottom: 20, + flexDirection: "row", + flexWrap: "wrap", + justifyContent: "space-around", + }, + reportButton: { + backgroundColor: "#2D572C", + padding: 20, + borderRadius: 8, + marginBottom: 10, + width: "100%", + alignItems: "center", + }, + buttonText: { + color: "#fff", + fontSize: 20, + textAlign: "center", + }, + modalContainer: { + flex: 1, + justifyContent: "center", + alignItems: "center", + backgroundColor: "rgba(0, 0, 0, 0.5)", + }, + modalContent: { + backgroundColor: "#fff", + padding: 20, + borderRadius: 10, + width: 300, + }, + modalTitle: { + fontSize: 18, + fontWeight: "bold", + marginBottom: 10, + textAlign: "center", + }, + monthButton: { + backgroundColor: "#4CAF50", + margin: 5, + padding: 10, + borderRadius: 5, + flex: 1, + justifyContent: "center", + alignItems: "center", + }, + monthButtonText: { + color: "#fff", + fontSize: 14, + }, + closeButton: { + backgroundColor: "#ddd", + padding: 10, + borderRadius: 5, + marginTop: 20, + alignItems: "center", + borderWidth: 1, + }, + closeButtonText: { + color: "#000", + fontSize: 16, + }, +}); + +export default Laporan; diff --git a/screens/AksesAdmin/NotifikasiAdminScreen.js b/screens/AksesAdmin/NotifikasiAdminScreen.js new file mode 100644 index 0000000..525d408 --- /dev/null +++ b/screens/AksesAdmin/NotifikasiAdminScreen.js @@ -0,0 +1,155 @@ +import React from "react"; +import { View, Text, StyleSheet, ScrollView } from "react-native"; +import { Ionicons, MaterialIcons } from "@expo/vector-icons"; // Importing icons +import { useNavigation } from "@react-navigation/native"; +import BottomTabAdmin from "../../Navigation/BottomTabAdmin"; + +const NotifikasiAdminScreen = () => { + const navigation = useNavigation(); + // Get current date and time + const currentDate = new Date(); + const formattedDate = `${currentDate.toLocaleDateString()} ${currentDate.toLocaleTimeString()}`; + + return ( + + + {/* Header */} + + NOTIFIKASI ADMIN + + + {/* Notification 1: New User Report */} + + + + Laporan pengguna baru! + + Pengguna baru melaporkan masalah terkait sistem. Harap tinjau + segera. + + {formattedDate} + + + + {/* Notification 2: Task Assigned to You */} + + + + + Tugas baru telah ditugaskan! + + + Anda telah ditugaskan untuk meninjau laporan terbaru yang masuk. + Silakan cek sekarang. + + {formattedDate} + + + + {/* Notification 3: System Maintenance Update */} + + + + + Pembaruan sistem sedang berjalan. + + + Pembaruan sistem akan memengaruhi akses beberapa fitur. Harap + bersabar. + + {formattedDate} + + + + {/* Notification 4: New Trash Pickup Location */} + + + + + TPS baru telah ditambahkan! + + + Lokasi pembuangan sampah terbaru sudah tersedia di sistem. Cek + peta untuk detailnya. + + {formattedDate} + + + + + {/* Bottom Navigation */} + + + + + ); +}; + +const styles = StyleSheet.create({ + container: { + flex: 1, // Flex untuk menutupi seluruh layar + backgroundColor: "#f9f9f9", + paddingHorizontal: 20, + paddingTop: 10, + }, + scrollContainer: { + flex: 1, // Agar ScrollView mengisi ruang yang tersisa + paddingBottom: 80, // Menambahkan ruang untuk bottom navigation + }, + title: { + fontSize: 22, + fontWeight: "bold", + color: "#333", + marginLeft: 10, + marginBottom: 20, + marginTop: 40, + }, + notification: { + flexDirection: "row", + alignItems: "center", + backgroundColor: "#fff", + padding: 15, + marginBottom: 15, + borderRadius: 8, + borderWidth: 1, + borderColor: "#ddd", + }, + notificationText: { + marginLeft: 15, + flex: 1, + }, + notificationTitle: { + fontSize: 16, + fontWeight: "bold", + color: "#333", + }, + notificationDescription: { + fontSize: 14, + color: "#555", + }, + notificationDate: { + fontSize: 12, + color: "#888", // Lighter color for date + marginTop: 5, + }, + bottomNavigationContainer: { + position: "absolute", + bottom: 0, + left: 0, // Memberikan ruang kiri sedikit + right: 0, // Memberikan ruang kanan sedikit + height: 60, + flexDirection: "row", + justifyContent: "space-around", + backgroundColor: "#fff", + paddingVertical: 8, + borderTopLeftRadius: 20, + borderTopRightRadius: 20, + shadowColor: "#000", + shadowOffset: { width: 0, height: -2 }, + shadowOpacity: 0.1, + shadowRadius: 6, + elevation: 5, + }, +}); + +export default NotifikasiAdminScreen; diff --git a/screens/AksesAdmin/PengaduanSampahScreenAdmin.js b/screens/AksesAdmin/PengaduanSampahScreenAdmin.js new file mode 100644 index 0000000..33d1101 --- /dev/null +++ b/screens/AksesAdmin/PengaduanSampahScreenAdmin.js @@ -0,0 +1,231 @@ +import React, { useState } from "react"; +import { + View, + Text, + TouchableOpacity, + StyleSheet, + ScrollView, +} from "react-native"; +import { Ionicons, MaterialIcons } from "@expo/vector-icons"; // Importing icons +import { useNavigation } from "@react-navigation/native"; + +const PengaduanSampahScreenAdmin = () => { + const [filter, setFilter] = useState("all"); // State to manage the active filter + const navigation = useNavigation(); + + // Function to navigate to the details page + const goToDetailPage = (status) => { + navigation.navigate(`Detail${status}`); + }; + + // Sample data for reports + const reports = [ + { + title: "Sampah Berantakan", + location: "Pasar Nganjuk - Jl. Sukomoro Nganjuk", + status: "Selesai", + date: "10 April 2025 - 14:30", + }, + { + title: "Sampah Pinggir Jalan", + location: "Pasar Madiun - Jl. Raya Madiun", + status: "Dalam Proses", + date: "10 April 2025 - 13:00", + }, + { + title: "TPS Liar", + location: "Pasar Kediri - Jl. Raya Kediri", + status: "Verifikasi", + date: "9 April 2025 - 15:20", + }, + { + title: "Sampah Depan SMA 1", + location: "Pasar Surabaya - Jl. Raya Surabaya", + status: "Ditolak", + date: "8 April 2025 - 10:45", + }, + ]; + + // Filter reports based on the active filter + const filteredReports = reports.filter( + (report) => filter === "all" || report.status === filter + ); + + return ( + + {/* Header with Title and Back Button */} + + navigation.navigate("AdminScreen")} + > + + + PENGADUAN SAMPAH + + + {/* Filter Buttons */} + + setFilter("all")} + > + Semua + + setFilter("Verifikasi")} + > + Verifikasi + + setFilter("Dalam Proses")} + > + Dalam Proses + + setFilter("Selesai")} + > + Selesai + + setFilter("Ditolak")} + > + Ditolak + + + + {/* Report Content */} + {filteredReports.map((report, index) => ( + + {report.title} + {report.location} + + + goToDetailPage(report.status)} + > + {report.status} + + {report.date} + + + ))} + + ); +}; + +const styles = StyleSheet.create({ + container: { + flex: 1, + backgroundColor: "#f9f9f9", + padding: 20, + }, + header: { + marginTop: 40, + flexDirection: "row", + alignItems: "center", + marginBottom: 20, + }, + backButton: { + marginRight: 10, + }, + title: { + fontSize: 20, + fontWeight: "bold", + color: "#333", + }, + filterContainer: { + flexDirection: "row", + justifyContent: "space-between", + marginBottom: 20, + }, + filterButton: { + paddingVertical: 8, + paddingHorizontal: 12, + borderRadius: 15, + backgroundColor: "#fff", + borderWidth: 0.5, + }, + filterButtonText: { + fontSize: 14, + color: "#333", + }, + activeFilter: { + backgroundColor: "#dcdcdc", // Green color for active filter + }, + reportContainer: { + backgroundColor: "#fff", + padding: 15, + marginBottom: 15, + borderRadius: 8, + borderWidth: 1, + borderColor: "#ddd", + }, + reportTitle: { + fontSize: 18, + fontWeight: "bold", + color: "#333", + }, + reportLocation: { + fontSize: 14, + color: "#555", + marginBottom: 10, + }, + statusContainer: { + flexDirection: "row", + justifyContent: "space-between", + alignItems: "center", + }, + statusBox: { + paddingVertical: 8, + paddingHorizontal: 12, + borderRadius: 8, + justifyContent: "center", + alignItems: "center", + }, + statusDone: { + backgroundColor: "#d1f0d1", // Light Green + }, + statusInProgress: { + backgroundColor: "#d1e3f0", // Light Blue + }, + statusOnProcess: { + backgroundColor: "#f0e0a1", // Light Yellow + }, + statusRejected: { + backgroundColor: "#f0c1c1", // Light Red + }, + statusText: { + fontSize: 14, + color: "#333", + }, + dateTimeText: { + fontSize: 12, + color: "#555", + }, +}); + +export default PengaduanSampahScreenAdmin; diff --git a/screens/AksesAdmin/PosterEdukasiScreen.js b/screens/AksesAdmin/PosterEdukasiScreen.js new file mode 100644 index 0000000..be14177 --- /dev/null +++ b/screens/AksesAdmin/PosterEdukasiScreen.js @@ -0,0 +1,159 @@ +import React, { useState } from "react"; +import { + View, + Text, + StyleSheet, + TouchableOpacity, + Image, + ScrollView, + Alert, + ToastAndroid, +} from "react-native"; +import { Ionicons } from "@expo/vector-icons"; +import { useNavigation } from "@react-navigation/native"; + +const PosterEdukasiScreen = () => { + const navigation = useNavigation(); + // State untuk menyimpan daftar poster + const [posters, setPosters] = useState([ + { id: 1, image: require("../../assets/images/poster1.png") }, + { id: 2, image: require("../../assets/images/poster2.png") }, // Tambah poster kedua + { id: 2, image: require("../../assets/images/poster3.png") }, // Tambah poster kedua + // Tambahkan poster lainnya sesuai kebutuhan + ]); + + // Handle add poster action + const handleAddPoster = () => { + navigation.navigate("AddPosterScreen"); + }; + + // Fungsi untuk menghapus poster + const handleDeletePoster = (posterId) => { + Alert.alert( + "Hapus Poster", + "Apakah Anda yakin ingin menghapus poster ini?", + [ + { + text: "Batal", + style: "cancel", + }, + { + text: "Hapus", + onPress: () => { + // Hapus poster berdasarkan ID + const updatedPosters = posters.filter( + (poster) => poster.id !== posterId + ); + setPosters(updatedPosters); + ToastAndroid.show("Poster telah dihapus", ToastAndroid.SHORT); + }, + }, + ] + ); + }; + + return ( + + {/* Header */} + + navigation.goBack()} + > + + + POSTER EDUKASI + + + {/* Daftar Poster */} + + {posters.map((poster) => ( + + handleDeletePoster(poster.id)}> + + {/* Tombol Hapus Poster */} + handleDeletePoster(poster.id)} + > + + + + + ))} + + + {/* Add Poster Button */} + + + + Tambah Poster + + + + ); +}; + +const styles = StyleSheet.create({ + container: { + flex: 1, + backgroundColor: "#FFF", + padding: 16, + }, + header: { + marginTop: 40, + flexDirection: "row", + alignItems: "center", + marginBottom: 20, + }, + backButton: { + marginRight: 12, + }, + title: { + fontSize: 22, + fontWeight: "bold", + color: "#000", + }, + posterList: { + marginBottom: 20, + }, + posterItem: { + position: "relative", + marginBottom: 15, + }, + posterImage: { + width: "100%", + height: 250, + resizeMode: "contain", + borderRadius: 8, + }, + deleteIcon: { + position: "absolute", + top: 10, + right: 10, + backgroundColor: "red", + padding: 6, + borderRadius: 16, + }, + addPosterContainer: { + marginTop: 20, + alignItems: "center", + marginBottom: 50, + }, + addButton: { + backgroundColor: "#2D572C", + paddingVertical: 12, + paddingHorizontal: 32, + borderRadius: 8, + flexDirection: "row", + justifyContent: "center", + alignItems: "center", + }, + addButtonText: { + color: "#FFF", + fontWeight: "bold", + marginLeft: 8, + }, +}); + +export default PosterEdukasiScreen; diff --git a/screens/AksesAdmin/ProfilAdminScreen.js b/screens/AksesAdmin/ProfilAdminScreen.js new file mode 100644 index 0000000..b2285f0 --- /dev/null +++ b/screens/AksesAdmin/ProfilAdminScreen.js @@ -0,0 +1,265 @@ +import React from "react"; +import { + View, + Text, + Image, + TouchableOpacity, + StyleSheet, + Alert, +} from "react-native"; +import { Ionicons } from "@expo/vector-icons"; +import { useNavigation } from "@react-navigation/native"; +import BottomTabAdmin from "../../Navigation/BottomTabAdmin"; + +const ProfilAdminScreen = () => { + const navigation = useNavigation(); + + const userProfile = { + name: "Johan Okta Pangestu", + email: "okta@gmail.com", + phone: "08123456789", + address: "Jl. Raya No. 123, Nganjuk", + joinDate: "January 15, 2023", + }; + + const handleLogout = () => { + Alert.alert( + "Konfirmasi Keluar", + "Apakah Anda yakin ingin keluar dari aplikasi?", + [ + { + text: "Tidak", + onPress: () => console.log("Logout cancelled"), + style: "cancel", + }, + { + text: "Yakin", + onPress: () => { + console.log("User logged out"); + navigation.navigate("AksesAkun"); // Navigasi ke halaman masuk admin + }, + }, + ], + { cancelable: false } + ); + }; + + return ( + + {/* Profile Section */} + + + + navigation.navigate("EditProfilScreen")} + > + Edit Profil + + Hi, {userProfile.name} + + Keberihan lingkungan sekitar anda wajib terjaga + + + DINAS LINGKUNGAN HIDUP + + + + + {/* Profile Information Section */} + + Nama: + {userProfile.name} + + Email: + {userProfile.email} + + No. HP: + {userProfile.phone} + + Alamat: + {userProfile.address} + + Tanggal Bergabung: + {userProfile.joinDate} + + + {/* Logout Button */} + + KELUAR AKUN + + + {/* Bottom Navigation */} + + navigation.navigate("AksesAkun")} + > + + UTAMA + + + navigation.navigate("NotifikasiAdminScreen")} + > + + + + 1 + + + NOTIFIKASI + + + navigation.navigate("ProfilAdminScreen")} + > + + PROFIL + + + + + ); +}; + +const styles = StyleSheet.create({ + container: { + flex: 1, + backgroundColor: "#fff", + }, + profileSection: { + alignItems: "center", + padding: 20, + backgroundColor: "#fff", + borderBottomWidth: 1, + borderBottomColor: "#ddd", + marginTop: 30, + }, + profileImage: { + width: 150, + height: 150, + borderRadius: 75, + marginBottom: 20, + }, + profileTextContainer: { + alignItems: "center", + justifyContent: "center", + }, + greetingText: { + fontSize: 30, + fontWeight: "bold", + color: "#333", + }, + envMessageText: { + fontSize: 14, + color: "#555", + marginVertical: 5, + }, + dinasBox: { + backgroundColor: "#ddd", + paddingVertical: 3, + paddingHorizontal: 12, + marginTop: 1, + borderRadius: 8, + borderColor: "#000", + alignItems: "center", + borderWidth: 0.5, + }, + dinasText: { + fontSize: 12, + fontWeight: "bold", + color: "#333", + }, + editButton: { + backgroundColor: "#fff", + paddingVertical: 5, + borderRadius: 8, + alignItems: "center", + marginTop: 10, + paddingHorizontal: 30, + marginBottom: 5, + borderWidth: 1, + borderColor: "#000", + }, + editButtonText: { + fontSize: 16, + color: "#000", + fontWeight: "bold", + }, + infoSection: { + paddingHorizontal: 20, + marginBottom: 20, + }, + infoLabel: { + fontSize: 14, + fontWeight: "bold", + color: "#555", + marginTop: 10, + }, + infoText: { + fontSize: 16, + color: "#777", + marginBottom: 15, + }, + logoutButton: { + backgroundColor: "#fff", + paddingVertical: 12, + borderRadius: 8, + alignItems: "center", + marginHorizontal: 20, + marginBottom: 20, + borderWidth: 0.5, + elevation: 1, + }, + logoutButtonText: { + fontSize: 16, + color: "#000", + fontWeight: "bold", + }, + bottomNav: { + position: "absolute", + bottom: 0, + width: "100%", + flexDirection: "row", + justifyContent: "space-evenly", + backgroundColor: "#fff", + paddingVertical: 8, + borderTopLeftRadius: 20, + borderTopRightRadius: 20, + shadowColor: "#000", + shadowOffset: { width: 0, height: -2 }, + shadowOpacity: 0.1, + shadowRadius: 6, + elevation: 5, + }, + navItem: { + alignItems: "center", + padding: 6, + borderRadius: 10, + paddingHorizontal: 12, + paddingVertical: 5, + marginHorizontal: 5, + }, + navText: { color: "#2C6B2F", fontSize: 12, marginTop: 5 }, + notifIconContainer: { position: "relative" }, + badge: { + position: "absolute", + right: -5, + top: -5, + backgroundColor: "#E74C3C", + borderRadius: 10, + paddingHorizontal: 6, + paddingVertical: 2, + }, + badgeText: { color: "#fff", fontSize: 10, fontWeight: "bold" }, +}); + +export default ProfilAdminScreen; diff --git a/screens/AksesAdmin/RiwayatDonasiAdmin.js b/screens/AksesAdmin/RiwayatDonasiAdmin.js new file mode 100644 index 0000000..331b2db --- /dev/null +++ b/screens/AksesAdmin/RiwayatDonasiAdmin.js @@ -0,0 +1,158 @@ +import React from "react"; +import { + View, + Text, + TouchableOpacity, + ScrollView, + StyleSheet, +} from "react-native"; +import { Ionicons } from "@expo/vector-icons"; // Import Ionicons for back icon +import { useNavigation } from "@react-navigation/native"; + +// Sample data for donation history +const donations = [ + { + id: 1, + name: "John Doe", + tujuan: "Edukasi Lingkungan", + catatan: "-", + tanggal: "2025-05-19", + waktu: "14:30", + nominal: "Rp 500.000", + }, + { + id: 2, + name: "Jane Smith", + tujuan: "Pengelolaan Sampah", + catatan: "Donasi untuk pengadaan tempat sampah", + tanggal: "2025-06-01", + waktu: "10:00", + nominal: "Rp 150.000", + }, + { + id: 3, + name: "Mark Wilson", + tujuan: "Program Pelatihan", + catatan: "Untuk program pelatihan masyarakat", + tanggal: "2025-04-15", + waktu: "16:45", + nominal: "Rp 300.000", + }, +]; + +export default function RiwayatDonasiAdmin() { + const navigation = useNavigation(); + + return ( + + {/* Back Button */} + navigation.goBack()} // Go back to previous screen + > + + + + {/* Title */} + RIWAYAT DONASI + + {/* Donation History List */} + + {donations.map((donation) => ( + + + {/* Donation Info */} + + {donation.name} + + Tujuan: {donation.tujuan} + + + Catatan: {donation.catatan} + + + Tanggal: {donation.tanggal} + + + Waktu: {donation.waktu} + + + + {/* Donation Amount */} + + {donation.nominal} + + + + ))} + + + ); +} + +const styles = StyleSheet.create({ + container: { + marginTop: 20, + padding: 20, + flex: 1, + backgroundColor: "#fff", + }, + backButton: { + position: "absolute", + top: 20, + left: 10, + zIndex: 1, + marginTop: 10, + }, + title: { + fontSize: 22, + fontWeight: "bold", + color: "#000", + marginBottom: 5, + marginLeft: 30, + marginTop: 15, + }, + historyBox: { + marginTop: 10, + paddingBottom: 5, + }, + donationView: { + backgroundColor: "#fff", // Background color for each donation box + borderRadius: 20, + marginVertical: 10, + padding: 15, + flexDirection: "row", // Layout of elements horizontally + justifyContent: "space-between", // Space out left and right columns + alignItems: "center", + borderWidth: 1, + borderColor: "#000", + }, + donationContent: { + flexDirection: "row", + justifyContent: "space-between", + width: "100%", + }, + leftColumn: { + flex: 1, + }, + rightColumn: { + alignItems: "flex-end", // Align right side for donation amount + flexDirection: "column", + justifyContent: "center", + }, + donationName: { + fontSize: 16, + fontWeight: "bold", + color: "#333", + }, + donationDetail: { + fontSize: 14, + color: "#555", + marginBottom: 5, + }, + donationAmount: { + fontSize: 18, + fontWeight: "bold", + color: "#4F772D", // Green color for donation amount + }, +}); diff --git a/screens/AksesAdmin/StatusPengirimanAdmin.js b/screens/AksesAdmin/StatusPengirimanAdmin.js new file mode 100644 index 0000000..dba3775 --- /dev/null +++ b/screens/AksesAdmin/StatusPengirimanAdmin.js @@ -0,0 +1,284 @@ +import React, { useState, useEffect } from "react"; // Tambahkan useEffect +import { + View, + Text, + TouchableOpacity, + StyleSheet, + Image, + ScrollView, +} from "react-native"; +import { Ionicons } from "@expo/vector-icons"; +import { useNavigation } from "@react-navigation/native"; + +const StatusPengirimanAdmin = () => { + const navigation = useNavigation(); + const [selectedButton, setSelectedButton] = useState("diproses"); // Default to 'diproses' + const [selectedStatus, setSelectedStatus] = useState("diproses"); // Default to 'diproses' + + // Data barang + const items = [ + { + id: 1, + name: "Tas Kertas", + time: "10 April 2025 - 14:30", + status: "diproses", + imageUri: require("../../../assets/images/tas2.png"), + }, + { + id: 2, + name: "Botol", + time: "11 April 2025 - 15:00", + status: "dikirim", + imageUri: require("../../../assets/images/botol1.png"), + }, + { + id: 3, + name: "Botol Anak", + time: "12 April 2025 - 16:30", + status: "diterima", + imageUri: require("../../../assets/images/botol2.png"), + }, + ]; + + // Effect untuk men-set status saat pertama kali halaman dibuka + useEffect(() => { + setSelectedButton("diproses"); + setSelectedStatus("diproses"); + }, []); + + const handleButtonClick = (status) => { + setSelectedStatus(status); + setSelectedButton(status); + }; + + // Filter items berdasarkan selected status + const filteredItems = items.filter((item) => item.status === selectedStatus); + + return ( + + {/* Header */} + + navigation.goBack()} + > + + + STATUS PENGIRIMAN + + + {/* Status Buttons */} + + handleButtonClick("diproses")} + > + + + Diproses + + + + handleButtonClick("dikirim")} + > + + + Dikirim + + + + handleButtonClick("diterima")} + > + + + Diterima + + + + + {/* Filtered List of Items Based on Selected Status */} + + {filteredItems.length > 0 ? ( + filteredItems.map((item) => ( + + + + {item.name} + {item.time} + + + + 500 Koin + + + navigation.navigate("DetailPengiriman", { item: item }) + } + > + Lihat Detail + + + + )) + ) : ( + + Tidak ada barang dalam status ini. + + )} + + + ); +}; + +const styles = StyleSheet.create({ + container: { + flex: 1, + backgroundColor: "#f9f9f9", + padding: 20, + }, + header: { + flexDirection: "row", + alignItems: "center", + marginBottom: 30, + }, + backButton: { + marginRight: 10, + }, + title: { + fontSize: 22, + fontWeight: "bold", + color: "#333", + }, + buttonRow: { + flexDirection: "row", + justifyContent: "space-between", + marginBottom: 5, + }, + statusButton: { + flexDirection: "row", + alignItems: "center", + backgroundColor: "#fff", + borderWidth: 1, + borderColor: "#333", + paddingVertical: 10, + paddingHorizontal: 15, + borderRadius: 20, + width: "30%", + justifyContent: "center", + }, + selectedButton: { + backgroundColor: "#2D572C", // Green color for selected button + }, + buttonText: { + marginLeft: 5, + fontSize: 14, + color: "#000", + }, + itemList: { + marginTop: 20, + }, + itemRow: { + flexDirection: "row", + alignItems: "center", + backgroundColor: "#fff", + padding: 15, + marginBottom: 15, + borderRadius: 8, + borderWidth: 1, + borderColor: "#ddd", + }, + itemImage: { + width: 60, + height: 60, + backgroundColor: "#fff", + borderRadius: 5, + }, + itemDetails: { + flex: 1, + marginLeft: 10, + }, + itemName: { + fontSize: 16, + fontWeight: "bold", + color: "#333", + }, + itemTime: { + fontSize: 12, + color: "#555", + marginTop: 5, + }, + itemActions: { + alignItems: "flex-end", + justifyContent: "center", + }, + coinButton: { + backgroundColor: "#2D572C", + paddingVertical: 8, + paddingHorizontal: 15, + borderRadius: 5, + marginBottom: 5, + }, + coinButtonText: { + fontSize: 12, + color: "#fff", + }, + detailButton: { + backgroundColor: "#ddd", + paddingVertical: 8, + paddingHorizontal: 15, + borderRadius: 25, + }, + detailButtonText: { + fontSize: 12, + color: "#333", + }, + noItemsText: { + fontSize: 14, + color: "#888", + textAlign: "center", + marginTop: 20, + }, +}); + +export default StatusPengirimanAdmin; diff --git a/screens/AksesAdmin/TambahTPS.js b/screens/AksesAdmin/TambahTPS.js new file mode 100644 index 0000000..e442b82 --- /dev/null +++ b/screens/AksesAdmin/TambahTPS.js @@ -0,0 +1,221 @@ +import React, { useState } from "react"; +import { + View, + Text, + StyleSheet, + TextInput, + TouchableOpacity, + Alert, +} from "react-native"; +import { Ionicons } from "@expo/vector-icons"; // Pastikan menggunakan Ionicons yang benar +import { useNavigation } from "@react-navigation/native"; +import MapView, { Marker } from "react-native-maps"; // Import MapView +import { Picker } from "@react-native-picker/picker"; // Hanya gunakan ini saja + +const TambahTPS = () => { + const navigation = useNavigation(); + + // State untuk form input + const [namaTPS, setNamaTPS] = useState(""); + const [luasTPS, setLuasTPS] = useState(""); + const [dayaTampung, setDayaTampung] = useState(""); + const [jenisTPS, setJenisTPS] = useState("Container"); + const [alamat, setAlamat] = useState(""); + const [kecamatan, setKecamatan] = useState("Nganjuk"); + const [latitude, setLatitude] = useState(null); + const [longitude, setLongitude] = useState(null); + + // Fungsi untuk menangani penyimpanan TPS baru + const handleTambahTPS = () => { + if ( + !namaTPS || + !luasTPS || + !dayaTampung || + !alamat || + !latitude || + !longitude + ) { + Alert.alert("Form belum lengkap", "Mohon lengkapi semua data TPS."); + return; + } + + // Aksi penyimpanan TPS baru (misalnya kirim ke backend atau state global) + Alert.alert("Berhasil", "TPS baru berhasil ditambahkan!"); + + // Kembali ke halaman daftar TPS + navigation.goBack(); + }; + + return ( + + + navigation.goBack()} + > + + + TAMBAH LOKASI TPS + + + {/* Form Input TPS */} + + + + + + Pilih Jenis TPS + setJenisTPS(itemValue)} + > + + + + + {/* Form Detail Lokasi */} + + + Pilih Kecamatan + setKecamatan(itemValue)} + > + + + + + + + + + + {/* Peta */} + {latitude && longitude ? ( + + + + ) : null} + + {/* Tombol Simpan */} + + SIMPAN + + + + ); +}; + +const styles = StyleSheet.create({ + container: { + flex: 1, + backgroundColor: "#fff", + padding: 16, + marginTop: 0, + }, + header: { + marginTop: 40, + flexDirection: "row", + alignItems: "center", + marginBottom: 20, + }, + backButton: { + marginRight: 20, + }, + title: { + fontSize: 20, + fontWeight: "bold", + color: "#000", + }, + formContainer: { + marginTop: -15, + padding: 15, + }, + input: { + borderWidth: 1, + borderColor: "#ccc", + borderRadius: 8, + padding: 15, + marginBottom: 12, + fontSize: 14, + }, + label: { + fontSize: 14, + fontWeight: "bold", + marginBottom: 5, + }, + picker: { + height: 50, + borderWidth: 1, + borderColor: "#ccc", + borderRadius: 8, + marginBottom: 12, + }, + map: { + height: 200, + marginBottom: 20, + }, + saveButton: { + width: "100%", + padding: 15, + backgroundColor: "#2D572C", // Warna hijau untuk tombol kirim + alignItems: "center", + borderRadius: 15, + }, + saveButtonText: { + color: "#fff", + fontSize: 16, + fontWeight: "bold", + }, +}); + +export default TambahTPS; diff --git a/screens/AksesAdmin/TukarKoin.js b/screens/AksesAdmin/TukarKoin.js new file mode 100644 index 0000000..96c41ef --- /dev/null +++ b/screens/AksesAdmin/TukarKoin.js @@ -0,0 +1,348 @@ +import React, { useState, useEffect } from "react"; +import { + View, + Text, + TouchableOpacity, + StyleSheet, + Image, + ScrollView, +} from "react-native"; +import { Ionicons } from "@expo/vector-icons"; +import { useNavigation } from "@react-navigation/native"; +import BottomTabAdmin from "../../Navigation/BottomTabAdmin"; + +const TukarKoin = () => { + const navigation = useNavigation(); + const [selectedButton, setSelectedButton] = useState("diproses"); + const [selectedStatus, setSelectedStatus] = useState("diproses"); + + const items = [ + { + id: 1, + name: "Tas Kertas", + time: "10 April 2025 - 14:30", + status: "diproses", + imageUri: require("../../assets/images/tas2.png"), + user: { + profileImage: require("../../assets/images/fotoprofil.jpeg"), + fullName: "Budi Santoso", + address: "Jl. Merdeka No.10, Jakarta", + email: "budi@example.com", + }, + }, + { + id: 2, + name: "Botol", + time: "11 April 2025 - 15:00", + status: "dikirim", + imageUri: require("../../assets/images/botol1.png"), + user: { + profileImage: require("../../assets/images/fotoprofil.jpeg"), + fullName: "Siti Rahma", + address: "Jl. Sudirman No.5, Bandung", + email: "siti@example.com", + }, + }, + { + id: 3, + name: "Botol Anak", + time: "12 April 2025 - 16:30", + status: "diterima", + imageUri: require("../../assets/images/botol2.png"), + user: { + profileImage: require("../../assets/images/fotoprofil.jpeg"), + fullName: "Ahmad Rizki", + address: "Jl. Raya No.7, Surabaya", + email: "ahmad@example.com", + }, + }, + ]; + + useEffect(() => { + setSelectedButton("diproses"); + setSelectedStatus("diproses"); + }, []); + + const handleButtonClick = (status) => { + setSelectedStatus(status); + setSelectedButton(status); + }; + + const filteredItems = items.filter((item) => item.status === selectedStatus); + + return ( + + {/* Header */} + + PENUKARAN KOIN + + + {/* Status Buttons */} + + {["diproses", "dikirim", "diterima"].map((status) => ( + handleButtonClick(status)} + > + + + {status.charAt(0).toUpperCase() + status.slice(1)} + + + ))} + + + {/* Filtered List of Items */} + + {filteredItems.length > 0 ? ( + filteredItems.map((item) => ( + + + + + {item.name} + {item.time} + + + + + + 500 Koin + + + navigation.navigate("DetailPengirimanAdmin", { item }) + } + > + Lihat Detail + + + + + + + {item.user.fullName} + {item.user.address} + {item.user.email} + + + + )) + ) : ( + + Tidak ada barang dalam status ini. + + )} + + + {/* Floating Daftar Barang Button */} + navigation.navigate("DaftarBarang")} + > + + Daftar Barang + + + {/* Bottom Navigation */} + + + + + ); +}; + +const styles = StyleSheet.create({ + container: { + flex: 1, + backgroundColor: "#f9f9f9", + paddingHorizontal: 20, + paddingTop: 20, + }, + header: { + marginTop: 30, + flexDirection: "row", + alignItems: "center", + marginBottom: 20, + }, + title: { + fontSize: 24, + fontWeight: "bold", + color: "#333", + }, + buttonRow: { + flexDirection: "row", + justifyContent: "space-around", + marginBottom: 25, + }, + statusButton: { + flexDirection: "row", + alignItems: "center", + backgroundColor: "#fff", + borderWidth: 1, + borderColor: "#2D572C", + paddingVertical: 12, + paddingHorizontal: 20, + borderRadius: 25, + justifyContent: "center", + width: "30%", + }, + selectedButton: { + backgroundColor: "#2D572C", + }, + buttonText: { + marginLeft: 10, + fontSize: 14, + color: "#333", + }, + itemList: { + paddingBottom: 120, + }, + itemRow: { + backgroundColor: "#fff", + padding: 20, + marginBottom: 20, + borderRadius: 15, + shadowColor: "#000", + shadowOffset: { width: 0, height: 2 }, + shadowOpacity: 0.1, + shadowRadius: 5, + elevation: 3, + }, + itemInfo: { + flexDirection: "row", + alignItems: "center", + marginBottom: 15, + }, + itemImage: { + width: 80, + height: 80, + backgroundColor: "#fff", + borderRadius: 10, + }, + itemDetails: { + flex: 1, + marginLeft: 15, + }, + itemName: { + fontSize: 18, + fontWeight: "bold", + color: "#333", + }, + itemTime: { + fontSize: 12, + color: "#777", + marginTop: 5, + }, + itemActions: { + flexDirection: "row", + justifyContent: "space-between", + marginBottom: 15, + }, + coinButton: { + backgroundColor: "#2D572C", + paddingVertical: 10, + paddingHorizontal: 20, + borderRadius: 5, + }, + coinButtonText: { + fontSize: 14, + color: "#fff", + }, + detailButton: { + backgroundColor: "#ddd", + paddingVertical: 10, + paddingHorizontal: 20, + borderRadius: 25, + }, + detailButtonText: { + fontSize: 14, + color: "#333", + }, + userInfo: { + flexDirection: "row", + alignItems: "center", + marginTop: 10, + borderTopWidth: 1, + borderTopColor: "#ddd", + paddingTop: 10, + }, + profileImage: { + width: 45, + height: 45, + borderRadius: 25, + }, + userDetails: { + marginLeft: 12, + }, + userName: { + fontSize: 14, + fontWeight: "bold", + color: "#333", + }, + userAddress: { + fontSize: 12, + color: "#555", + }, + userEmail: { + fontSize: 12, + color: "#555", + }, + noItemsText: { + fontSize: 14, + color: "#888", + textAlign: "center", + marginTop: 30, + }, + floatingButton: { + position: "absolute", + bottom: 100, + right: 20, + backgroundColor: "#2D572C", + flexDirection: "row", + alignItems: "center", + paddingVertical: 12, + paddingHorizontal: 20, + borderRadius: 30, + elevation: 5, + }, + floatingButtonText: { + color: "#fff", + fontWeight: "bold", + marginLeft: 6, + }, + bottomNavigation: { + position: "absolute", + bottom: 0, + left: 0, + right: 0, + backgroundColor: "#fff", + borderTopWidth: 1, + borderTopColor: "#ddd", + }, +}); + +export default TukarKoin; diff --git a/screens/AksesAkun.js b/screens/AksesAkun.js new file mode 100644 index 0000000..3adf39e --- /dev/null +++ b/screens/AksesAkun.js @@ -0,0 +1,334 @@ +import React, { useState } from "react"; +import { + View, + Text, + TouchableOpacity, + TextInput, + StyleSheet, + Image, +} from "react-native"; +import { Ionicons, FontAwesome } from "@expo/vector-icons"; + +const AksesAkun = ({ navigation }) => { + const [role, setRole] = useState(null); + const [email, setEmail] = useState(""); + const [password, setPassword] = useState(""); + const [showPassword, setShowPassword] = useState(false); + const [errorMessage, setErrorMessage] = useState(""); + + const handleLogin = () => { + if (!role) { + setErrorMessage("Pilih dulu role Anda (Admin atau Warga)"); + return; + } + if (!email || !password) { + setErrorMessage("Masukkan email dan kata sandi dengan benar"); + return; + } + + if ( + role === "admin" && + email === "admin@gmail.com" && + password === "1234" + ) { + setErrorMessage(""); + navigation.navigate("AksesAdminNavigator", { screen: "AdminScreen" }); + } else if ( + role === "warga" && + email === "warga@gmail.com" && + password === "1234" + ) { + setErrorMessage(""); + navigation.navigate("AksesWargaNavigator", { screen: "Home" }); + } else { + setErrorMessage("Email atau kata sandi salah"); + } + }; + + return ( + + navigation.navigate("Onboarding")} + > + + + + + Selamat Datang kembali, + EcoMapper ! + + Pilih Akses + + setRole("admin")} + > + + + ADMIN + + + + setRole("warga")} + > + + + WARGA + + + + + Email + + + + + + Kata Sandi + + + + setShowPassword(!showPassword)} + > + + + + + {errorMessage ? ( + {errorMessage} + ) : null} + + + Masuk + + + {/* "Daftar Sekarang" Text */} + + + Belum punya akun?{" "} + + navigation.navigate("AksesWargaNavigator", { screen: "daftar" }) + } + > + Daftar Sekarang + + + + + {/* "Lupa Kata Sandi?" Text */} + + + navigation.navigate("AksesWargaNavigator", { screen: "lupasandi" }) + } + > + Lupa Kata Sandi? + + + + ); +}; + +export default AksesAkun; + +const styles = StyleSheet.create({ + container: { + flex: 1, + backgroundColor: "#fff", + padding: 20, + alignItems: "center", + justifyContent: "center", + }, + backButton: { + position: "absolute", + top: 60, // sesuaikan dengan tinggi status bar dan padding + left: 20, + zIndex: 10, + padding: 6, + borderRadius: 6, + backgroundColor: "#fff", // warna soft supaya tombol terlihat + shadowColor: "#000", + shadowOffset: { width: 0, height: 2 }, + shadowOpacity: 0.2, + }, + image: { + width: 300, + height: 200, + marginBottom: 20, + }, + welcomeText: { + fontSize: 28, + fontWeight: "bold", + textAlign: "center", + }, + ecoMapperText: { + fontSize: 34, + fontWeight: "bold", + color: "#000", + marginBottom: 30, + textAlign: "center", + }, + label: { + fontSize: 18, + alignSelf: "flex-start", + marginLeft: 10, + marginBottom: 10, + fontWeight: "600", + }, + buttonContainer: { + flexDirection: "row", + marginBottom: 30, + justifyContent: "center", + gap: 15, + }, + roleButton: { + flexDirection: "row", + alignItems: "center", + borderWidth: 1, + borderColor: "#000", + borderRadius: 12, + paddingVertical: 15, + paddingHorizontal: 25, + marginHorizontal: 5, + backgroundColor: "#fff", + }, + roleButtonSelected: { + backgroundColor: "#2D572C", + borderColor: "#2D572C", + }, + roleButtonText: { + fontSize: 20, + fontWeight: "bold", + marginLeft: 8, + color: "#000", + }, + roleButtonTextSelected: { + color: "#fff", + }, + inputContainer: { + flexDirection: "row", + alignItems: "center", + borderColor: "#ddd", + borderWidth: 1, + borderRadius: 8, + marginBottom: 20, + paddingLeft: 10, + height: 50, + width: "100%", + }, + input: { + flex: 1, + fontSize: 16, + }, + passwordContainer: { + flexDirection: "row", + alignItems: "center", + borderColor: "#ddd", + borderWidth: 1, + borderRadius: 8, + marginBottom: 40, + paddingLeft: 10, + height: 50, + width: "100%", + }, + passwordInput: { + flex: 1, + fontSize: 16, + }, + icon: { + marginRight: 10, + }, + eyeIcon: { + paddingHorizontal: 10, + }, + loginButton: { + backgroundColor: "#2D572C", + paddingVertical: 15, + paddingHorizontal: 160, + borderRadius: 8, + marginBottom: 15, + }, + loginButtonText: { + color: "#fff", + textAlign: "center", + fontWeight: "bold", + fontSize: 20, + }, + registerContainer: { + marginTop: 10, + }, + registerText: { + fontSize: 16, + color: "#333", + }, + registerLink: { + color: "#2D572C", + fontWeight: "bold", + }, + forgotPasswordContainer: { + marginTop: 10, + }, + forgotPasswordText: { + color: "#2D572C", + fontWeight: "bold", + textAlign: "center", + fontSize: 16, + }, + errorText: { + color: "red", + fontSize: 15, + marginBottom: 10, + }, +}); diff --git a/screens/AksesWarga/BerandaPengaduan.js b/screens/AksesWarga/BerandaPengaduan.js new file mode 100644 index 0000000..c3d2b5c --- /dev/null +++ b/screens/AksesWarga/BerandaPengaduan.js @@ -0,0 +1,225 @@ +import React from "react"; +import { View, Text, StyleSheet, TouchableOpacity, Image } from "react-native"; +import { Ionicons } from "@expo/vector-icons"; +import { useNavigation } from "@react-navigation/native"; + +const BerandaPengaduan = () => { + const navigation = useNavigation(); + + return ( + + {/* Header */} + + navigation.navigate("Home")} + > + + + BERANDA PENGADUAN + + + {/* First Report */} + + + + + Johan Okta Pangestu + + 03/01/2025 10.12 WIB + + + Sedang diverifikasi + + + Sampah numpuk di depan masjid - JI Letjen Sparman + + + Catatan: Mohon segera ditindaklanjuti karena sangat mengganggu + masyarakat sekitar. + + + {/* Images */} + + + + + + + {/* Second Report */} + + + + + Jihan Pangesti + + 03/01/2025 10.12 WIB + + + Dalam Proses + + + Sampah berserakan di Pasar Lama - JI. Sukarno, Nganjuk + + + Catatan: Mohon segera ditindaklanjuti karena sangat mengganggu + masyarakat sekitar. + + + {/* Images */} + + + + + + {/* Button to contribute */} + navigation.navigate("KontribusiScreen")} + > + Kontribusi Sekarang + + + + ); +}; + +const styles = StyleSheet.create({ + container: { + flex: 1, + backgroundColor: "#fff", + padding: 16, + marginTop: 40, + }, + header: { + flexDirection: "row", + alignItems: "center", + marginBottom: 20, + }, + backButton: { + marginRight: 10, + }, + headerTitle: { + fontSize: 22, + fontWeight: "bold", + color: "#000", + }, + reportContainer: { + marginBottom: 20, + padding: 12, + borderRadius: 15, + backgroundColor: "#fff", + borderWidth: 0.5, + borderColor: "#000", + }, + reportHeader: { + flexDirection: "row", + justifyContent: "space-between", + paddingBottom: 10, + }, + profileContainer: { + flexDirection: "row", + alignItems: "center", + }, + profileImage: { + width: 40, + height: 40, + borderRadius: 20, + marginRight: 10, + }, + reporterName: { + fontSize: 16, + fontWeight: "bold", + }, + time: { + fontSize: 14, + color: "#555", + }, + statusButton: { + backgroundColor: "#DDD", + borderRadius: 8, + paddingVertical: 5, + paddingHorizontal: 5, + marginVertical: 8, + alignItems: "center", + width: "32%", + borderWidth: 0.5, + }, + reportStatus: { + color: "#000", + fontSize: 14, + }, + reportDescription: { + fontSize: 16, + color: "#333", + marginBottom: 8, + }, + reportNote: { + fontSize: 14, + color: "#000", + marginBottom: 12, + }, + imageContainer: { + flexDirection: "row", + justifyContent: "flex-start", + marginBottom: 12, + }, + reportImage: { + width: 100, + height: 100, + borderRadius: 8, + marginRight: 5, + marginLeft: 5, + }, + contributeButton: { + backgroundColor: "#2D572C", + padding: 10, + borderRadius: 8, + alignItems: "center", + width: "50%", + alignContent: "center", + justifyContent: "center", + marginLeft: 90, + marginTop: 20, + }, + contributeText: { + color: "#fff", + fontSize: 16, + }, + coinText: { + color: "#fff", + fontSize: 14, + }, +}); + +export default BerandaPengaduan; diff --git a/screens/AksesWarga/EcoMapCoinExchangeScreen.js b/screens/AksesWarga/EcoMapCoinExchangeScreen.js new file mode 100644 index 0000000..45b50da --- /dev/null +++ b/screens/AksesWarga/EcoMapCoinExchangeScreen.js @@ -0,0 +1,236 @@ +import React from "react"; +import { + View, + Text, + TouchableOpacity, + Image, + ScrollView, + StyleSheet, + Alert, +} from "react-native"; +import { useNavigation } from "@react-navigation/native"; +import BottomNav from "../../Navigation/BottomNav"; + +const EcoMapCoinExchangeScreen = () => { + const navigation = useNavigation(); + const userCoin = 1350; + const expiredDate = "30 Mei 2025"; + + const items = [ + { + id: 1, + name: "Botol Minum", + coin: 300, + image: require("../../assets/images/botol1.png"), + }, + { + id: 2, + name: "Botol Minum Anak", + coin: 350, + image: require("../../assets/images/botol2.png"), + }, + { + id: 3, + name: "Tas Belanja", + coin: 250, + image: require("../../assets/images/tas2.png"), + }, + { + id: 4, + name: "Peralatan Makan", + coin: 400, + image: require("../../assets/images/alatmakan.png"), + }, + ]; + + const handleExchange = (item) => { + if (userCoin >= item.coin) { + Alert.alert( + "Konfirmasi Penukaran", + `Anda yakin ingin menukar ${item.coin} koin untuk mendapatkan ${item.name}?`, + [ + { text: "Batal", style: "cancel" }, + { + text: "Ya", + onPress: () => { + Alert.alert( + "Berhasil", + `Kamu telah menukar ${item.name} dengan ${item.coin} Koin.` + ); + }, + }, + ] + ); + } else { + Alert.alert( + "Koin Tidak Cukup", + "Silakan kumpulkan koin terlebih dahulu." + ); + } + }; + + return ( + + + TUKAR KOIN + + + + + {userCoin}{" "} + Koin EcoMap + + + {userCoin} Koin EcoMap kadaluwarsa pada {expiredDate} + + + + + navigation.navigate("misimingguan")} + > + Dapatkan Koin + + + + + + {items.map((item) => ( + + + {item.name} + + {item.coin} Koin + + handleExchange(item)} + > + Tukar Koin + + + ))} + + + + {/* BottomNav harus di luar ScrollView supaya fixed */} + + + ); +}; + +const styles = StyleSheet.create({ + container: { + padding: 20, + backgroundColor: "#fff", + width: "100%", + }, + title: { + fontSize: 22, + fontWeight: "bold", + color: "#000", + marginBottom: 20, + textAlign: "left", + marginLeft: 10, + marginTop: 40, + }, + coinBox: { + borderWidth: 1, + borderColor: "#ccc", + padding: 15, + borderRadius: 10, + marginBottom: 20, + alignItems: "center", + flexDirection: "row", + justifyContent: "space-between", + }, + coinInfoColumn: { + flexDirection: "column", + justifyContent: "center", + alignItems: "flex-start", + }, + coinAmount: { + fontSize: 24, + fontWeight: "bold", + color: "#d4af37", + }, + coinIcon: { + fontSize: 22, + }, + coinText: { + color: "#2f4f2f", + fontSize: 16, + }, + expiryText: { + fontSize: 12, + color: "#888", + marginTop: 5, + }, + coinInfoRow: { + justifyContent: "center", + alignItems: "center", + }, + getCoinBtn: { + backgroundColor: "#d4af37", + paddingVertical: 6, + paddingHorizontal: 20, + borderRadius: 8, + borderWidth: 1, + borderColor: "#000", + }, + getCoinText: { + color: "#fff", + fontWeight: "bold", + }, + itemGrid: { + flexDirection: "row", + flexWrap: "wrap", + justifyContent: "space-between", + }, + itemCard: { + width: "48%", + borderWidth: 1, + borderColor: "#ccc", + borderRadius: 12, + padding: 8, + marginBottom: 15, + alignItems: "center", + }, + itemImage: { + width: 70, + height: 100, + resizeMode: "contain", + }, + itemName: { + marginTop: 10, + fontSize: 20, + fontWeight: "bold", + textAlign: "center", + }, + coinBoxItem: { + backgroundColor: "#2D572C", + paddingVertical: 6, + paddingHorizontal: 20, + borderRadius: 8, + marginVertical: 6, + }, + itemCoin: { + color: "#fff", + fontWeight: "bold", + fontSize: 18, + textAlign: "center", + }, + exchangeBtn: { + backgroundColor: "#e2e2e2", + paddingHorizontal: 10, + paddingVertical: 6, + borderRadius: 6, + borderWidth: 1, + }, + exchangeText: { + fontWeight: "bold", + }, +}); + +export default EcoMapCoinExchangeScreen; diff --git a/screens/AksesWarga/Home.js b/screens/AksesWarga/Home.js new file mode 100644 index 0000000..0857b9e --- /dev/null +++ b/screens/AksesWarga/Home.js @@ -0,0 +1,415 @@ +import React, { useState } from "react"; +import { + View, + Text, + StyleSheet, + Image, + TouchableOpacity, + ImageBackground, + Dimensions, +} from "react-native"; +import { + Ionicons, + FontAwesome5, + MaterialCommunityIcons, +} from "@expo/vector-icons"; + +import Carousel from "react-native-reanimated-carousel"; +import { useNavigation } from "@react-navigation/native"; +import BottomNav from "../../Navigation/BottomNav"; + +const { width } = Dimensions.get("window"); // Get the screen width + +const Home = () => { + // const navigate = (route) => navigation.navigate(route); + const navigation = useNavigation(); + const [activeSlide, setActiveSlide] = useState(0); + + const sliderData = [ + { id: "1", image: require("../../assets/images/poster1.png") }, + { id: "2", image: require("../../assets/images/poster2.png") }, + ]; + + const handleNext = () => { + navigation.navigate(""); // Add the name of the screen to navigate + }; + + return ( + + + + 05 Mei 2024 + + HI, PENGGUNA ECOMAP{" "} + + + + KEBERSIHAN LINGKUNGAN SEKITAR ANDA WAJIB TERJAGA! + + + + + + + KOIN SAYA + + 0 + + + + Belum ada koin yang terkumpul + + navigation.navigate("RiwayatCoinScreen")} // Ganti dengan nama layar yang sesuai + > + RIWAYAT KOIN + + + + + navigation.navigate("BerandaPengaduan")} + > + BERANDA PENGADUAN + + + + + navigation.navigate("LokasiTerdekat")} + // onPress={() => + // navigation.navigate("MainTabs", { screen: "LokasiTerdekat" }) + // } // Buka MainTabs, lalu LokasiTerdekat + > + + LOKASI TERDEKAT + + + navigation.navigate("daftarTPS")} + > + + + DAFTAR TPS DI NGANJUK + + + navigation.navigate("pengaduansampah")} + > + + {/* + + */} + PENGADUAN SAMPAH + + + navigation.navigate("misimingguan")} + > + + {/* + + */} + DAPATKAN KOIN + + + + + setActiveSlide(index)} + renderItem={({ item }) => ( + + )} + /> + + + + {/* + + + UTAMA + + + navigation.navigate("EcoMapCoinExchangeScreen")} + > + + TUKAR KOIN + + + + + + + 1 + + + NOTIFIKASI + + + + + PROFIL + + */} + + // + ); +}; + +const styles = StyleSheet.create({ + container: { flex: 1, backgroundColor: "#f9f9f9" }, + backgroundImage: { + flex: 1, + justifyContent: "center", + paddingLeft: 10, + paddingRight: 10, + paddingTop: 0, + }, + header: { marginTop: 10, alignItems: "flex-start", paddingBottom: 5 }, + date: { fontSize: 20, color: "#000", paddingLeft: 20, marginTop: 20 }, + greeting: { + fontSize: 20, + fontWeight: "bold", + marginTop: 0, + color: "#333", + paddingLeft: 20, + }, + subtitle: { + fontSize: 15, + color: "#27AE60", + fontWeight: "600", + paddingLeft: 20, + }, + coinRow: { + flexDirection: "column", + justifyContent: "flex-start", + alignItems: "center", + paddingHorizontal: 20, + marginTop: 20, + }, + + coinInfo: { alignItems: "flex-start" }, + coinLabel: { + fontSize: 18, + fontWeight: "700", + color: "#333", + marginBottom: 0, + marginLeft: -100, + }, + coinBox: { + marginVertical: 10, + backgroundColor: "#fff", + paddingHorizontal: 130, + paddingVertical: 15, + borderRadius: 20, + flexDirection: "column", + alignItems: "flex-start", + elevation: 1, + borderWidth: 1, + borderColor: "#aaa", + position: "relative", + }, + coinValueRow: { flexDirection: "row", alignItems: "center", marginTop: 10 }, + coinText: { + fontSize: 30, + fontWeight: "bold", + color: "#333", + textAlign: "left", + marginLeft: -100, + }, + coinImage: { width: 24, height: 24, marginLeft: 6 }, + + noCoinText: { + fontSize: 12, + color: "#aaa", + marginTop: 5, + textAlign: "left", + marginLeft: -100, + }, + historyButton: { + position: "absolute", + backgroundColor: "#27AE60", // Sesuaikan dengan warna yang diinginkan + paddingVertical: 10, + paddingHorizontal: 10, + borderRadius: 20, + top: -6, + right: 10, + marginTop: 15, // Spasi antara tombol dan teks + alignItems: "center", + justifyContent: "center", + width: "100%", // Lebar penuh box + elevation: 1, // Tambahkan sedikit bayangan + }, + historyButtonText: { + fontSize: 14, + fontWeight: "bold", + color: "#fff", + textAlign: "center", + }, + + reportButton: { + backgroundColor: "#DCDCDC", + paddingVertical: 15, // Adjust padding for a more rectangular shape + paddingHorizontal: 10, // Increase horizontal padding to make it look like a rectangle + borderRadius: 20, // Keep the border radius low for a rectangular shape + alignItems: "center", + justifyContent: "center", + borderWidth: 1, + borderColor: "#999", + width: "80%", // Take up full width inside the box + marginTop: 10, + paddingLeft: 5, // Add some spacing between the content + }, + reportButtonText: { + fontSize: 14, + color: "#000", + fontWeight: "bold", + textAlign: "center", + }, + menuImage: { + width: 50, + height: 50, + marginLeft: 3, + marginBottom: 5, + marginTop: 7, + justifyContent: "center", + }, + menuContainer: { + marginTop: 5, + marginRight: 5, + marginLeft: 12, + flexDirection: "row", + flexWrap: "wrap", + justifyContent: "space-around", + paddingRight: 15, + }, + menuItem: { + width: "23%", + alignItems: "center", + marginVertical: 10, + padding: 10, + borderWidth: 1, + borderColor: "#ddd", + borderRadius: 25, + backgroundColor: "#fff", + elevation: 2, + }, + menuText: { + fontSize: 12, + fontWeight: "500", + color: "#333", + marginTop: 8, + textAlign: "center", + }, + sliderImage: { + height: 160, + borderRadius: 19, + width: "80%", + alignSelf: "center", + marginRight: 25, + }, + bottomNav: { + position: "absolute", + bottom: -10, + + width: "100%", + flexDirection: "row", + justifyContent: "space-around", + backgroundColor: "#fff", + paddingVertical: 8, + borderTopLeftRadius: 20, + borderTopRightRadius: 20, + shadowColor: "#000", + shadowOffset: { width: 0, height: -2 }, + shadowOpacity: 0.1, + shadowRadius: 6, + elevation: 5, + }, + navItem: { + alignItems: "center", + padding: 6, + borderRadius: 10, + paddingHorizontal: 12, + paddingVertical: 5, + marginHorizontal: 5, + }, + navText: { color: "#2C6B2F", fontSize: 12, marginTop: 5 }, + notifIconContainer: { position: "relative" }, + badge: { + position: "absolute", + right: -5, + top: -5, + backgroundColor: "#E74C3C", + borderRadius: 10, + paddingHorizontal: 6, + paddingVertical: 2, + }, + lock: { + position: "absolute", + right: -5, + top: -5, + backgroundColor: "#2C6B2F", + borderRadius: 40, + paddingHorizontal: 8, + paddingVertical: 5, + borderWidth: 1, + }, + badgeText: { color: "#fff", fontSize: 10, fontWeight: "bold" }, +}); + +export default Home; diff --git a/screens/AksesWarga/LokasiTerdekat.js b/screens/AksesWarga/LokasiTerdekat.js new file mode 100644 index 0000000..6d75b04 --- /dev/null +++ b/screens/AksesWarga/LokasiTerdekat.js @@ -0,0 +1,114 @@ +import React, { useState } from "react"; +import { + View, + Text, + StyleSheet, + Dimensions, + TouchableOpacity, +} from "react-native"; +import MapView, { Marker } from "react-native-maps"; +import { Ionicons } from "@expo/vector-icons"; +import { useNavigation } from "@react-navigation/native"; + +// Koordinat awal Nganjuk (misal: Alun-Alun Nganjuk) +const initialRegion = { + latitude: -7.6079, + longitude: 111.903, + latitudeDelta: 0.05, + longitudeDelta: 0.05, +}; + +// Contoh lokasi TPS di Nganjuk +const locations = [ + { id: 1, name: "TPS Alun-Alun", latitude: -7.6085, longitude: 111.9012 }, + { + id: 2, + name: "TPS Jl. Gatot Subroto", + latitude: -7.6102, + longitude: 111.9051, + }, + { id: 3, name: "TPS Pasar Wage", latitude: -7.6055, longitude: 111.9083 }, +]; + +const LokasiTerdekat = () => { + const navigation = useNavigation(); + const [region, setRegion] = useState(initialRegion); + + return ( + + {/* Header */} + + navigation.navigate("Home")} + > + + + LOKASI TERDEKAT + {/* Spacer untuk keseimbangan header */} + + + {/* MapView */} + setRegion(newRegion)} + > + {locations.map((location) => ( + + ))} + + + {/* Deskripsi */} + + Menampilkan lokasi TPS terdekat di wilayah Nganjuk. + + + ); +}; + +const styles = StyleSheet.create({ + container: { + flex: 1, + backgroundColor: "#fff", + paddingTop: 40, + }, + header: { + flexDirection: "row", + alignItems: "center", + justifyContent: "space-between", + paddingHorizontal: 16, + marginBottom: 10, + }, + backButton: { + padding: 8, + }, + title: { + fontSize: 22, + fontWeight: "bold", + textAlign: "left", + marginRight: 160, + }, + map: { + width: Dimensions.get("window").width, + height: 800, + // width: 500, + }, + description: { + fontSize: 16, + color: "#555", + marginTop: 16, + textAlign: "center", + paddingHorizontal: 16, + }, +}); + +export default LokasiTerdekat; diff --git a/screens/AksesWarga/NotifikasiScreen.js b/screens/AksesWarga/NotifikasiScreen.js new file mode 100644 index 0000000..418d13c --- /dev/null +++ b/screens/AksesWarga/NotifikasiScreen.js @@ -0,0 +1,164 @@ +import React from "react"; +import { View, Text, StyleSheet, ScrollView } from "react-native"; +import { Ionicons, MaterialIcons } from "@expo/vector-icons"; // Importing icons +import { useNavigation } from "@react-navigation/native"; +import BottomNav from "../../Navigation/BottomNav"; + +const NotifikasiScreen = () => { + const navigation = useNavigation(); + + const currentDate = new Date(); + const formattedDate = `${currentDate.toLocaleDateString()} ${currentDate.toLocaleTimeString()}`; + + return ( + + + {/* Back Button */} + + NOTIFIKASI + + + {/* Notification 1: New Report */} + + + + Ada laporan baru! + + Tim kami sedang meninjau pengaduan sampah terbaru. Terima kasih + atas partisipasi Anda! + + {formattedDate} + + + + {/* Notification 2: New Trash Pickup Location */} + + + + + TPS baru telah ditambahkan! + + + Sekarang Anda bisa menemukan lebih banyak lokasi pembuangan sampah + terdekat di EcoMap. + + {formattedDate} + + + + {/* Notification 3: Duplicate Example */} + + + + + TPS baru telah ditambahkan! + + + Sekarang Anda bisa menemukan lebih banyak lokasi pembuangan sampah + terdekat di EcoMap. + + {formattedDate} + + + + {/* Notification 4: Another Example */} + + + + + TPS baru telah ditambahkan! + + + Sekarang Anda bisa menemukan lebih banyak lokasi pembuangan sampah + terdekat di EcoMap. + + {formattedDate} + + + + {/* Bottom Navigation */} + + + {" "} + {/* Pastikan tag View ditutup dengan benar */} + + ); +}; + +const styles = StyleSheet.create({ + container: { + flex: 1, // Flex untuk menutupi seluruh layar + backgroundColor: "#f9f9f9", + paddingHorizontal: 20, + paddingTop: 20, + }, + scrollContainer: { + flex: 1, // Agar ScrollView mengisi ruang yang tersisa + }, + backButtonContainer: { + flexDirection: "row", + alignItems: "center", + marginBottom: 20, + }, + backButton: { + flexDirection: "row", + alignItems: "center", + }, + title: { + fontSize: 22, + fontWeight: "bold", + color: "#333", + marginLeft: 10, + marginBottom: 20, + marginTop: 40, + }, + notification: { + flexDirection: "row", + alignItems: "center", + backgroundColor: "#fff", + padding: 15, + marginBottom: 15, + borderRadius: 8, + borderWidth: 1, + borderColor: "#ddd", + }, + notificationText: { + marginLeft: 15, + flex: 1, + }, + notificationTitle: { + fontSize: 16, + fontWeight: "bold", + color: "#333", + }, + notificationDescription: { + fontSize: 14, + color: "#555", + }, + notificationDate: { + fontSize: 12, + color: "#888", // Lighter color for date + marginTop: 5, + }, +}); + +export default NotifikasiScreen; diff --git a/screens/AksesWarga/ProfilScreen.js b/screens/AksesWarga/ProfilScreen.js new file mode 100644 index 0000000..c7232ab --- /dev/null +++ b/screens/AksesWarga/ProfilScreen.js @@ -0,0 +1,206 @@ +import React from "react"; +import { + View, + Text, + StyleSheet, + TouchableOpacity, + Image, + Alert, + Share, +} from "react-native"; +import { Ionicons } from "@expo/vector-icons"; +import { useNavigation } from "@react-navigation/native"; +import BottomNav from "../../Navigation/BottomNav"; + +const ProfilScreen = () => { + const navigation = useNavigation(); + + const handleLogout = () => { + Alert.alert("Konfirmasi", "Anda yakin ingin keluar?", [ + { text: "Batal" }, + { text: "Keluar", onPress: () => navigation.replace("AksesAkun") }, + ]); + }; + + const handleShare = async () => { + try { + await Share.share({ + message: "Lihat aplikasi lingkungan ini!", + }); + } catch (error) { + console.error("Error sharing: ", error); + } + }; + + return ( + + {/* Header dengan Foto Profil */} + + + + Hi Dina 👋 + + Terus jaga lingkungan sekitar agar tetap hijau dan asri! 🌱 + + + + + {/* Info dan Motivasi */} + + PAHLAWAN LINGKUNGAN + + + {/* Tombol dan Informasi */} + + { + navigation.navigate("InformasiPribadiStackScreen", { + screen: "InformasiPribadi", + }); + }} + > + + Informasi Pribadi + + + { + navigation.navigate("StatusPenukaranKoinStackScreen", { + screen: "StatusPengirimanScreen", + }); + }} + > + + Status Penukaran Koin + + + { + navigation.navigate("StatusPengaduanStack", { + screen: "StatusPengaduanStack", + }); + }} + > + + Status Pengaduan + + + { + navigation.replace("DonasiStackScreen"); + }} + > + + Donasi + + + + + Bagikan ke Media Sosial + + + + + Keluar Akun + + + + {/* Bottom Navigation */} + + + + + ); +}; + +const styles = StyleSheet.create({ + container: { + flex: 1, + backgroundColor: "#fff", + padding: 20, + }, + profileImage: { + width: 150, + height: 150, + borderRadius: 100, + borderWidth: 5, + borderColor: "#388e3c", + marginBottom: 10, + marginTop: 50, + }, + profileInfo: { + flexDirection: "column", + alignItems: "center", + justifyContent: "center", + }, + profileName: { + fontSize: 24, + fontWeight: "bold", + color: "#000", + }, + environmentStatus: { + fontSize: 16, + color: "#2e7d32", + marginTop: 5, + fontStyle: "italic", + }, + motivationSection: { + marginTop: 10, + backgroundColor: "#f0f0f0", + padding: 10, + borderRadius: 12, + marginBottom: 10, + marginRight: 100, + marginLeft: 100, + borderWidth: 0.5, + }, + motivationText: { + fontSize: 15, + color: "#000", + textAlign: "center", + fontWeight: "600", + }, + buttonContainer: { + marginTop: 20, + marginLeft: 10, + }, + button: { + flexDirection: "row", + alignItems: "center", + paddingVertical: 12, + borderBottomWidth: 1, + borderBottomColor: "#ddd", + }, + buttonText: { + marginLeft: 10, + fontSize: 16, + color: "#333", + }, + bottomNavContainer: { + position: "absolute", + bottom: 0, + left: 0, + right: 0, + height: 60, + flexDirection: "row", + justifyContent: "space-around", + backgroundColor: "#fff", + paddingVertical: 8, + borderTopLeftRadius: 20, + borderTopRightRadius: 20, + shadowColor: "#000", + shadowOffset: { width: 0, height: -2 }, + shadowOpacity: 0.1, + shadowRadius: 6, + elevation: 5, + }, +}); + +export default ProfilScreen; diff --git a/screens/AksesWarga/RiwayatCoinScreen.js b/screens/AksesWarga/RiwayatCoinScreen.js new file mode 100644 index 0000000..d5662be --- /dev/null +++ b/screens/AksesWarga/RiwayatCoinScreen.js @@ -0,0 +1,148 @@ +import React from "react"; +import { + View, + Text, + TouchableOpacity, + ScrollView, + StyleSheet, +} from "react-native"; +import { Ionicons } from "@expo/vector-icons"; // Import Ionicons untuk icon kembali +import { useNavigation } from "@react-navigation/native"; +const transactions = [ + { + id: 1, + type: "Penukaran Koin", + amount: -250, + date: "2025-04-25 10:30", + description: "Tukar dengan Tas Belanja", + }, + { + id: 2, + type: "Penukaran Koin", + amount: -150, + date: "2025-04-26 14:00", + description: "Tukar dengan Botol Minum", + }, + { + id: 3, + type: "Penukaran Koin", + amount: -350, + date: "2025-04-27 08:15", + description: "Tukar dengan Peralatan Makan", + }, +]; + +export default function RiwayatCoinScreen() { + const navigation = useNavigation(); + return ( + + {/* Tombol Kembali */} + navigation.goBack()} // Kembali ke halaman sebelumnya + > + + + + {/* Judul */} + RIWAYAT KOIN + + {/* Kolom Riwayat Transaksi */} + + {transactions.map((transaction) => ( + + + {/* Deskripsi Transaksi */} + + {transaction.type} + + {transaction.description} + + {transaction.date} + + + {/* Jumlah Koin */} + + + {transaction.amount} Koin + + + + + ))} + + + ); +} + +const styles = StyleSheet.create({ + container: { + padding: 20, + flex: 1, + backgroundColor: "#fff", + }, + backButton: { + position: "absolute", + top: 20, + left: 10, + zIndex: 1, + marginTop: 30, + // Menempatkan tombol di atas komponen lainnya + }, + title: { + fontSize: 22, + fontWeight: "bold", + color: "#000", + marginBottom: 5, + textAlign: "center", + marginRight: 200, + marginTop: 30, + }, + historyBox: { + marginTop: 10, + paddingBottom: 5, + }, + transactionView: { + backgroundColor: "#fff", // Warna latar belakang kotak + borderRadius: 20, + marginVertical: 10, + padding: 15, + flexDirection: "row", // Menyusun elemen secara horizontal + justifyContent: "space-between", // Membuat kedua kolom terpisah + alignItems: "center", + borderWidth: 1, + borderColor: "#000", + }, + transactionContent: { + flexDirection: "row", + justifyContent: "space-between", + width: "100%", + }, + leftColumn: { + flex: 1, + }, + rightColumn: { + alignItems: "flex-end", // Memposisikan kanan + flexDirection: "column", + justifyContent: "center", + }, + transactionType: { + fontSize: 16, + fontWeight: "bold", + color: "#333", + }, + transactionDescription: { + fontSize: 14, + color: "#555", + marginBottom: 5, + }, + transactionDate: { + fontSize: 12, + color: "#888", + }, + transactionAmount: { + fontSize: 24, + fontWeight: "bold", + color: "#4F772D", // Warna merah untuk pengurangan koin + }, +}); diff --git a/screens/AksesWarga/misimingguan.js b/screens/AksesWarga/misimingguan.js new file mode 100644 index 0000000..a0537b4 --- /dev/null +++ b/screens/AksesWarga/misimingguan.js @@ -0,0 +1,305 @@ +import React, { useState } from "react"; +import { + View, + Text, + StyleSheet, + TouchableOpacity, + ScrollView, + Image, +} from "react-native"; +import Icon from "react-native-vector-icons/Ionicons"; +import { useNavigation } from "@react-navigation/native"; + +const users = [ + { name: "Diana Fitri Nur Aini", coins: 5000, rank: 1, color: "#A30000" }, + { name: "Revan Ilyas Fatoni", coins: 4800, rank: 2, color: "#FFD700" }, + { name: "Alena Syahwa", coins: 4350, rank: 3, color: "#228B22" }, + { name: "Dina Dwi Anisa", coins: 0, rank: "-", color: "#aaa" }, +]; + +const misimingguan = () => { + const navigation = useNavigation(); + const [completedDays, setCompletedDays] = useState([]); + const [totalCoins, setTotalCoins] = useState(0); + + // Function to mark a day as completed + const handleDayClick = (day, points) => { + if (!completedDays.includes(day)) { + setCompletedDays([...completedDays, day]); + setTotalCoins(totalCoins + points); + } + }; + + // Check if the day is completed once + const isCompleted = (day) => completedDays.includes(day); + + return ( + + {/* Header */} + + navigation.navigate("Home")} + style={styles.backButton} + > + + + + DAPATKAN KOIN + + + + {/* Subtitle */} + + Dapatkan Koin LEBIH BANYAK + + + Koin Terkumpul{" "} + {totalCoins} / 2600 + + + {/* Daily Check-in */} + KUNJUNGI TIAP HARI + + {[ + { day: "Hari-1", point: 10 }, + { day: "Hari-2", point: 15 }, + { day: "Hari-3", point: 20 }, + { day: "Hari-4", point: 25 }, + { day: "Hari-5", point: 30 }, + { day: "Hari-6", point: 35 }, + { day: "Hari-7", point: 50 }, + ].map((item, index) => ( + handleDayClick(item.day, item.point)} + disabled={isCompleted(item.day)} + > + + + {item.point} + + + + {item.day} + + ))} + + + {/* Missions as buttons */} + + + + + + + {/* Top 3 Users */} + + TOP 3 KOIN TERBANYAK + {users.map((user, index) => ( + + + + {user.name} + + + {user.coins} + + + + {user.rank} + + + + ))} + + "Ayo kumpulkan lebih banyak koin dengan berkontribusi aktif!{"\n"} + Semakin banyak kamu membantu, semakin besar dampaknya{"\n"} + untuk lingkungan kita!" + + + + ); +}; + +const MissionButton = ({ point, label, icon }) => ( + + {point} + + {label} + +); + +const styles = StyleSheet.create({ + container: { + padding: 16, + backgroundColor: "#fff", + marginTop: 40, + flex: 1, + }, + header: { + flexDirection: "row", + alignItems: "center", + marginBottom: 12, + }, + headerTitle: { + flexDirection: "row", + alignItems: "center", + marginLeft: 12, + }, + titleText: { + fontSize: 22, + fontWeight: "bold", + marginLeft: 6, + }, + subTitle: { + fontSize: 16, + marginVertical: 6, + }, + koinText: { + textAlign: "right", + fontSize: 16, + color: "#555", + }, + dailyCheckinLabel: { + textAlign: "center", + marginVertical: 15, + fontWeight: "bold", + color: "#000", + }, + checkinRow: { + flexDirection: "row", + justifyContent: "space-evenly", + marginBottom: 28, + }, + checkinItem: { + alignItems: "center", + width: 50, + }, + flameIcon: { + alignItems: "center", + backgroundColor: "#fff0f0", + borderRadius: 10, + padding: 9, + borderWidth: 1, + }, + completedItem: { + opacity: 0.5, // Lower opacity for completed item + }, + pointText: { + fontWeight: "bold", + color: "#2D572C", + fontSize: 12, + }, + completedPointText: { + color: "gray", // Change point color to gray when completed + }, + dayText: { + fontSize: 10, + color: "#444", + marginTop: 4, + }, + missionContainer: { + flexDirection: "row", + justifyContent: "space-evenly", + marginBottom: 10, + flexWrap: "wrap", + }, + missionButton: { + width: "30%", + backgroundColor: "#fFF", + borderRadius: 12, + padding: 12, + alignItems: "center", + marginBottom: 12, + justifyContent: "center", + borderWidth: 1, + }, + koinBox: { + backgroundColor: "#ffeb3b", + justifyContent: "space-evenly", + paddingHorizontal: 6, + paddingVertical: 2, + borderRadius: 10, + fontWeight: "bold", + marginBottom: 6, + borderWidth: 0.5, + }, + missionText: { + textAlign: "center", + fontSize: 11, + marginTop: 6, + }, + title: { + textAlign: "center", + fontWeight: "bold", + fontSize: 18, + color: "#2D572C", + marginBottom: 10, + borderBottomWidth: 1, + borderTopWidth: 1, + paddingVertical: 8, + borderColor: "#ccc", + }, + userCard: { + flexDirection: "row", + alignItems: "center", + borderWidth: 1, + borderColor: "#ddd", + borderRadius: 12, + padding: 10, + marginBottom: 12, + }, + userInfo: { + flex: 1, + marginLeft: 12, + }, + name: { + fontWeight: "bold", + fontSize: 14, + }, + coinRow: { + flexDirection: "row", + alignItems: "center", + marginTop: 4, + }, + coinText: { + marginLeft: 4, + fontSize: 13, + color: "#555", + }, + rankBox: { + alignItems: "center", + }, + rankNumber: { + fontWeight: "bold", + fontSize: 14, + marginBottom: 2, + }, + footerText: { + marginTop: 10, + textAlign: "center", + fontSize: 13, + color: "#444", + }, +}); + +export default misimingguan; diff --git a/screens/DaftarBerhasil.js b/screens/DaftarBerhasil.js new file mode 100644 index 0000000..9683708 --- /dev/null +++ b/screens/DaftarBerhasil.js @@ -0,0 +1,77 @@ +import React from "react"; +import { View, Text, Button, StyleSheet, TouchableOpacity } from "react-native"; +import { MaterialCommunityIcons } from "@expo/vector-icons"; + +const KontribusiBerhasil = ({ navigation }) => { + return ( + + + + Daftar Berhasil ! + + + Silahkan masuk untuk mencoba fitur yang ada di EcoMap! + + console.log("Daftar Submit")} + onPress={() => navigation.navigate("AksesAkun")} + > + MASUK + + + + ); +}; + +const styles = StyleSheet.create({ + container: { + flex: 1, + justifyContent: "center", + alignItems: "center", + backgroundColor: "#435739", // Warna hijau gelap + }, + content: { + justifyContent: "center", + alignItems: "center", + backgroundColor: "#435739", // Transparansi gelap untuk efek overlay + padding: 30, + borderRadius: 15, + width: "100%", + alignItems: "center", + }, + title: { + fontSize: 24, + fontWeight: "bold", + color: "#fff", + marginTop: 0, + }, + message: { + fontSize: 16, + color: "#fff", + textAlign: "center", + marginTop: 10, + }, + subMessage: { + fontSize: 15, + color: "#fff", + textAlign: "center", + marginTop: 10, + padding: 3, + }, + button: { + backgroundColor: "#fff", + paddingVertical: 10, + paddingHorizontal: 40, + borderRadius: 5, + marginTop: 20, + borderRadius: 25, + fontWeight: "bold", + }, + buttonText: { + fontWeight: "bold", + fontSize: 15, + }, +}); + +export default KontribusiBerhasil; diff --git a/screens/HomeStackNavigator.js b/screens/HomeStackNavigator.js new file mode 100644 index 0000000..a648017 --- /dev/null +++ b/screens/HomeStackNavigator.js @@ -0,0 +1,30 @@ +// import React from "react"; +// import { createStackNavigator } from "@react-navigation/stack"; + +// import Home from "./screens/AksesWarga/Home"; +// import pengaduansampah from "./screens/PengaduanWarga/pengaduansampah"; +// import DetailPengaduan from "./screens/PengaduanWarga/DetailPengaduan"; + +// const Stack = createStackNavigator(); + +// export default function HomeStackNavigator() { +// return ( +// +// +// +// +// +// ); +// } diff --git a/screens/MasukAdmin.js b/screens/MasukAdmin.js new file mode 100644 index 0000000..78b17ed --- /dev/null +++ b/screens/MasukAdmin.js @@ -0,0 +1,227 @@ +import React, { useState } from "react"; +import { + View, + Text, + TextInput, + TouchableOpacity, + StyleSheet, + ScrollView, + StatusBar, + Image, +} from "react-native"; +import { Ionicons, FontAwesome } from "@expo/vector-icons"; // Import FontAwesome untuk ikon surat +import { useNavigation } from "@react-navigation/native"; +// import AksesWargaNavigator from "../Navigation/AksesWargaNavigator"; + +const MasukAdmin = () => { + const navigation = useNavigation(); + const [email, setEmail] = useState(""); + const [password, setPassword] = useState(""); + const [showPassword, setShowPassword] = useState(false); + + return ( + + + + + + {/* Tombol Kembali */} + navigation.navigate("AksesAkun")} + style={{ width: 45, height: 45, marginRight: 13 }} + > + + + + + + + + Selamat Datang + + + Ecomapper! + + + + + + Email + + + + + + Kata Sandi + + + + setShowPassword(!showPassword)} + style={styles.eyeIcon} + > + + + + + navigation.navigate("AksesAdminNavigator", { + screen: "AdminScreen", + }) + } + > + Masuk + + + {/* "Daftar Sekarang" Text */} + + + Belum punya akun?{" "} + navigation.navigate("daftar")}> + Daftar Sekarang + + + + + {/* "Lupa Kata Sandi?" Text */} + + navigation.navigate("lupakatasandi")} + > + Lupa Kata Sandi? + + + + + ); +}; + +const styles = StyleSheet.create({ + formContainer: { + paddingHorizontal: 30, + marginTop: 20, + marginBottom: 30, + }, + label: { + fontSize: 16, + marginBottom: 10, + color: "#333", + }, + inputContainer: { + flexDirection: "row", + alignItems: "center", + borderColor: "#ddd", + borderWidth: 1, + borderRadius: 5, + marginBottom: 20, + }, + input: { + flex: 1, + height: 45, + paddingLeft: 10, + }, + icon: { + paddingLeft: 10, + }, + passwordContainer: { + flexDirection: "row", + alignItems: "center", + borderColor: "#ddd", + height: 45, + borderWidth: 1, + borderRadius: 5, + marginBottom: 20, + }, + passwordInput: { + flex: 1, + height: 45, + paddingLeft: 10, + }, + eyeIcon: { + paddingRight: 10, + }, + button: { + backgroundColor: "#2D572C", + paddingVertical: 15, + borderRadius: 5, + marginTop: 20, + }, + buttonText: { + textAlign: "center", + color: "#fff", + fontSize: 16, + fontWeight: "bold", + }, + registerContainer: { + marginTop: 15, + alignItems: "center", + }, + registerText: { + fontSize: 16, + color: "#333", + }, + registerLink: { + color: "#2D572C", + fontWeight: "bold", + }, + forgotPasswordContainer: { + marginTop: 15, + alignItems: "center", + }, + forgotPasswordText: { + fontSize: 16, + color: "#2D572C", + fontWeight: "bold", + }, +}); + +export default MasukAdmin; diff --git a/screens/Onboarding.js b/screens/Onboarding.js new file mode 100644 index 0000000..85219c6 --- /dev/null +++ b/screens/Onboarding.js @@ -0,0 +1,139 @@ +import React, { useRef, useEffect, useState } from "react"; +import { + View, + Text, + Image, + FlatList, + Dimensions, + StyleSheet, + TouchableOpacity, +} from "react-native"; +import { useNavigation } from "@react-navigation/native"; // Mengimpor useNavigation + +const { width } = Dimensions.get("window"); + +const slides = [ + { + id: "1", + image: require("../assets/images/onboarding1.png"), + text: "Temukan lokasi tempat pembuangan sampah terdekat.", + }, + { + id: "2", + image: require("../assets/images/onboarding2.png"), + text: "Laporkan sampah dan bantu lingkungan jadi lebih bersih.", + }, + { + id: "3", + image: require("../assets/images/onboarding3.png"), + text: "Tukar poinmu dengan barang bermanfaat untuk sehari-hari.", + }, +]; + +const Onboarding = () => { + const flatListRef = useRef(null); + const [currentIndex, setCurrentIndex] = useState(0); + const navigation = useNavigation(); // Mendapatkan objek navigasi + + useEffect(() => { + const interval = setInterval(() => { + if (currentIndex < slides.length - 1) { + flatListRef.current?.scrollToIndex({ + index: currentIndex + 1, + animated: true, + }); + } + }, 1000); + + return () => clearInterval(interval); + }, [currentIndex]); + + const handleNext = () => { + navigation.navigate("AksesAkun"); // Mengarahkan ke layar "AksesAkun" + }; + + const renderItem = ({ item }) => ( + + + {item.text} + + ); + + const onViewableItemsChanged = useRef(({ viewableItems }) => { + if (viewableItems.length > 0) { + setCurrentIndex(viewableItems[0].index); + } + }).current; + + const viewConfigRef = useRef({ viewAreaCoveragePercentThreshold: 50 }); + + return ( + + item.id} + onViewableItemsChanged={onViewableItemsChanged} + viewabilityConfig={viewConfigRef.current} + /> + + + {slides.map((_, index) => ( + + ))} + + + {currentIndex === slides.length - 1 && ( + + LANJUT + + )} + + ); +}; + +const styles = StyleSheet.create({ + container: { flex: 1, backgroundColor: "#fff", marginBottom: 0 }, + slide: { width, alignItems: "center", justifyContent: "center", padding: 20 }, + image: { width: 250, height: 250, marginBottom: 30 }, + text: { + fontSize: 18, + color: "#000", + textAlign: "center", + paddingHorizontal: 20, + }, + dotsContainer: { + flexDirection: "row", + justifyContent: "center", + marginBottom: 40, + }, + dot: { + width: 10, + height: 10, + borderRadius: 5, + backgroundColor: "#aaa", + marginHorizontal: 5, + }, + activeDot: { backgroundColor: "#435739" }, + nextButton: { + position: "absolute", + bottom: 50, + alignSelf: "flex-end", + backgroundColor: "#435739", + paddingHorizontal: 26, + paddingVertical: 16, + elevation: 3, + borderRadius: 10, + marginHorizontal: 20, + }, + nextText: { color: "#fff", fontSize: 18, fontWeight: "bold" }, +}); + +export default Onboarding; diff --git a/screens/PengaduanWarga/DetailPengaduan.js b/screens/PengaduanWarga/DetailPengaduan.js new file mode 100644 index 0000000..1ce97db --- /dev/null +++ b/screens/PengaduanWarga/DetailPengaduan.js @@ -0,0 +1,184 @@ +import React from "react"; +import { + View, + Text, + StyleSheet, + TouchableOpacity, + Image, + ScrollView, +} from "react-native"; +import { Ionicons } from "@expo/vector-icons"; + +const pengaduanData = { + id: 1, + judul: "Sampah Menumpuk di Jalan Raya", + alamat: "Jl. Raya No. 25, Desa Suka Maju, Nganjuk", + catatan: "Mohon segera dibersihkan, sudah terlalu lama menumpuk.", + tanggal: "2025-04-28", + gambar: "https://via.placeholder.com/150", // Ganti dengan gambar yang sesuai + status: "Sedang Diproses", // Bisa diganti dengan 'Sedang Diverifikasi', 'Ditolak', dll. + pelapor: { + nama: "Dina", + profilGambar: "https://via.placeholder.com/50", // Gambar profil pelapor + }, +}; + +const PengaduanScreen = ({ navigation }) => { + return ( + + {/* Tombol Kembali */} + navigation.goBack()} + > + + + + {/* Judul */} + PENGADUAN + + {/* Container Pengaduan */} + + + {pengaduanData.judul} + {pengaduanData.alamat} + {pengaduanData.catatan} + + Tanggal: {pengaduanData.tanggal} + + + + + {/* Profil Pelapor */} + + + {pengaduanData.pelapor.nama} + + + {/* Status Pengaduan */} + + {pengaduanData.status} + + {/* Jika Status Sedang Diproses */} + {pengaduanData.status === "Sedang Diproses" && ( + + Kontribusi + + )} + + {/* Jika Status Sedang Diproses */} + {pengaduanData.status === "Sedang Diproses" && ( + Dapatkan Koin 300 + )} + + + + + ); +}; + +const styles = StyleSheet.create({ + container: { + flex: 1, + padding: 16, + backgroundColor: "#fff", + }, + backButton: { + marginBottom: 16, + }, + title: { + fontSize: 22, + fontWeight: "bold", + color: "#2D572C", + marginBottom: 20, + textAlign: "center", + }, + pengaduanContainer: { + flex: 1, + }, + pengaduanBox: { + padding: 16, + backgroundColor: "#F8F8F8", + borderRadius: 8, + marginBottom: 20, + shadowColor: "#000", + shadowOpacity: 0.1, + shadowRadius: 5, + elevation: 3, + }, + pengaduanJudul: { + fontSize: 18, + fontWeight: "bold", + color: "#333", + }, + pengaduanAlamat: { + marginTop: 8, + fontSize: 14, + color: "#555", + }, + pengaduanCatatan: { + marginTop: 8, + fontSize: 14, + color: "#555", + }, + pengaduanTanggal: { + marginTop: 8, + fontSize: 14, + color: "#777", + }, + buktiImage: { + marginTop: 16, + width: "100%", + height: 150, + borderRadius: 8, + }, + pelaporContainer: { + flexDirection: "row", + alignItems: "center", + marginTop: 16, + }, + pelaporImage: { + width: 40, + height: 40, + borderRadius: 20, + }, + pelaporNama: { + marginLeft: 12, + fontSize: 14, + fontWeight: "bold", + color: "#333", + }, + statusContainer: { + marginTop: 16, + alignItems: "center", + }, + statusText: { + fontSize: 16, + fontWeight: "bold", + color: "#FF6F61", // Bisa diganti dengan warna yang sesuai status + }, + kontribusiButton: { + marginTop: 12, + backgroundColor: "#2D572C", + paddingVertical: 10, + paddingHorizontal: 20, + borderRadius: 8, + }, + kontribusiText: { + color: "#fff", + fontWeight: "bold", + }, + koinText: { + marginTop: 8, + fontSize: 12, + color: "#555", + }, +}); + +export default PengaduanScreen; diff --git a/screens/PengaduanWarga/DetailPengaduanProses.js b/screens/PengaduanWarga/DetailPengaduanProses.js new file mode 100644 index 0000000..d474018 --- /dev/null +++ b/screens/PengaduanWarga/DetailPengaduanProses.js @@ -0,0 +1,215 @@ +import React from "react"; +import { + View, + Text, + StyleSheet, + TouchableOpacity, + Image, + ScrollView, +} from "react-native"; +import { Ionicons } from "@expo/vector-icons"; + +const pengaduanData = { + id: 1, + judul: "Sampah Menumpuk di Jalan Raya", + alamat: "Jl. Raya No. 25, Desa Suka Maju, Nganjuk", + catatan: "Mohon segera dibersihkan, sudah terlalu lama menumpuk.", + tanggal: "2025-04-28", + status: "Sedang Diproses", // Bisa diganti dengan 'Sedang Diverifikasi', 'Ditolak', dll. + pelapor: { + nama: "Dina", + profilGambar: + "https://imgv3.fotor.com/images/gallery/a-woman-linkedin-picture-with-grey-background-made-by-LinkedIn-Profile-Picture-Maker.jpg", // Gambar profil pelapor + }, + gambarSampah: [ + "https://majanews.com/wp-content/uploads/2022/07/0_20220718_193954.jpg", // Image 1 + "https://newvision-media.s3.amazonaws.com/cms/d2d008c8-1703-4c3e-8b34-3181fc5eda5d.jpg", // Image 2// Image 3 + // "https://newvision-media.s3.amazonaws.com/cms/d2d008c8-1703-4c3e-8b34-3181fc5eda5d.jpg", // Image 2// Image 3 + // "https://newvision-media.s3.amazonaws.com/cms/d2d008c8-1703-4c3e-8b34-3181fc5eda5d.jpg", // Image 2// Image 3 + "https://newvision-media.s3.amazonaws.com/cms/d2d008c8-1703-4c3e-8b34-3181fc5eda5d.jpg", // Image 2// Image 3 + ], +}; + +const PengaduanScreen = ({ navigation }) => { + return ( + + {/* Judul Pengaduan */} + PENGADUAN + + {/* Tombol Kembali */} + navigation.goBack()} + > + + + + {/* Container Pengaduan */} + + + + {pengaduanData.pelapor.nama} + + + + {pengaduanData.judul} + {pengaduanData.alamat} + {pengaduanData.catatan} + + Tanggal: {pengaduanData.tanggal} + + + {/* Gambar Sampah - Row Layout */} + + {pengaduanData.gambarSampah.map((image, index) => ( + + ))} + + + {/* Profil Pelapor */} + + {/* Status Pengaduan */} + + + Kontribusi + + {/* Jika Status Sedang Diproses */} + {pengaduanData.status === "Sedang Diproses" && ( + Dapatkan Koin 300 + )} + + + + + ); +}; + +const styles = StyleSheet.create({ + container: { + flex: 1, + padding: 16, + backgroundColor: "#fff", + }, + title: { + fontSize: 22, + fontWeight: "bold", + color: "#000", + marginBottom: 16, + marginTop: 16, // Reduced margin to bring title closer + textAlign: "left", + marginLeft: 35, + }, + backButton: { + marginBottom: 20, + marginTop: 10, // Space between back button and title + position: "absolute", // Positioning it at the top-left + top: 20, + left: 10, + zIndex: 1, + }, + pengaduanContainer: { + flex: 1, + }, + pengaduanBox: { + padding: 16, + backgroundColor: "#fff", + borderRadius: 8, + marginBottom: 20, + shadowColor: "#000", + shadowOpacity: 0.1, + shadowRadius: 5, + elevation: 3, + marginTop: 20, + }, + pengaduanJudul: { + fontSize: 18, + fontWeight: "bold", + color: "#333", + }, + pengaduanAlamat: { + marginTop: 8, + fontSize: 14, + color: "#555", + }, + pengaduanCatatan: { + marginTop: 8, + fontSize: 14, + color: "#555", + }, + pengaduanTanggal: { + marginTop: 8, + fontSize: 14, + color: "#777", + }, + buktiImage: { + marginTop: 16, + width: "100%", + height: 150, + borderRadius: 8, + }, + rowContainer: { + flexDirection: "row", + justifyContent: "space-between", + marginTop: 26, + marginTop: 16, + width: "70%", + height: 80, + borderRadius: 8, + }, + sampahImage: { + width: 80, + height: 80, + borderRadius: 8, + }, + pelaporContainer: { + flexDirection: "row", + alignItems: "center", + marginTop: 16, + marginLeft: 20, + }, + pelaporImage: { + width: 50, + height: 50, + borderRadius: 20, + }, + pelaporNama: { + marginLeft: 12, + fontSize: 14, + fontWeight: "bold", + color: "#333", + }, + statusContainer: { + marginTop: 16, + alignItems: "center", + }, + statusText: { + fontSize: 16, + fontWeight: "bold", + color: "#FF6F61", // Bisa diganti dengan warna yang sesuai status + }, + kontribusiButton: { + marginTop: 12, + backgroundColor: "#2D572C", + paddingVertical: 10, + paddingHorizontal: 20, + borderRadius: 8, + }, + kontribusiText: { + color: "#fff", + fontWeight: "bold", + }, + koinText: { + marginTop: 8, + fontSize: 12, + color: "#555", + }, +}); + +export default PengaduanScreen; diff --git a/screens/PengaduanWarga/KontribusiBerhasil.js b/screens/PengaduanWarga/KontribusiBerhasil.js new file mode 100644 index 0000000..09dea7c --- /dev/null +++ b/screens/PengaduanWarga/KontribusiBerhasil.js @@ -0,0 +1,80 @@ +import React from "react"; +import { View, Text, Button, StyleSheet, TouchableOpacity } from "react-native"; +import { MaterialCommunityIcons } from "@expo/vector-icons"; // Menggunakan ikon ceklis + +const KontribusiBerhasil = ({ navigation }) => { + return ( + + + + Kontribusi Berhasil ! + {/* + Mohon pastikan informasi yang diberikan sudah sesuai, agar kami dapat + segera menindaklanjuti. + */} + + Terima kasih telah berkontribusi untuk lingkungan! + + console.log("Daftar Submit")} + onPress={() => navigation.navigate("BerandaPengaduan")} + > + LIHAT KONTRIBUSI + + + + ); +}; + +const styles = StyleSheet.create({ + container: { + flex: 1, + justifyContent: "center", + alignItems: "center", + backgroundColor: "#435739", // Warna hijau gelap + }, + content: { + justifyContent: "center", + alignItems: "center", + backgroundColor: "#435739", // Transparansi gelap untuk efek overlay + padding: 30, + borderRadius: 15, + width: "80%", + alignItems: "center", + }, + title: { + fontSize: 24, + fontWeight: "bold", + color: "#ffea00", + marginTop: 0, + }, + message: { + fontSize: 16, + color: "#fff", + textAlign: "center", + marginTop: 10, + }, + subMessage: { + fontSize: 15, + color: "#ffea00", + textAlign: "center", + marginTop: 10, + padding: 3, + }, + button: { + backgroundColor: "#fff", + paddingVertical: 10, + paddingHorizontal: 40, + borderRadius: 5, + marginTop: 20, + borderRadius: 25, + fontWeight: "bold", + }, + buttonText: { + fontWeight: "bold", + fontSize: 15, + }, +}); + +export default KontribusiBerhasil; diff --git a/screens/PengaduanWarga/KontribusiScreen.js b/screens/PengaduanWarga/KontribusiScreen.js new file mode 100644 index 0000000..148d7cb --- /dev/null +++ b/screens/PengaduanWarga/KontribusiScreen.js @@ -0,0 +1,280 @@ +import React, { useState, useEffect } from "react"; +import { + ScrollView, + View, + Text, + TextInput, + TouchableOpacity, + StyleSheet, + Alert, + Image, +} from "react-native"; +import { Ionicons } from "@expo/vector-icons"; // Icon library for the media buttons +import * as ImagePicker from "expo-image-picker"; // For picking images +import * as MediaLibrary from "expo-media-library"; // For accessing media library +import { Video } from "expo-av"; // For displaying videos + +const KontribusiScreen = ({ navigation, route }) => { + const { + judulPengaduan = "Sampah berantakan", + tempatPengaduan = "Jl Raya Madiun Nganjuk", + } = route?.params || {}; + + const [catatan, setCatatan] = useState(""); + const [photo, setPhoto] = useState(null); + const [video, setVideo] = useState(null); + + // Request permissions for camera and media library + useEffect(() => { + const requestPermissions = async () => { + // Request permission for media library (Images and Videos) + const { status: mediaStatus } = + await ImagePicker.requestMediaLibraryPermissionsAsync(); + if (mediaStatus !== "granted") { + Alert.alert( + "Permission required", + "You need to grant permission to access your media library." + ); + } + + // Optionally, you can also request permission for camera + const { status: cameraStatus } = + await ImagePicker.requestCameraPermissionsAsync(); + if (cameraStatus !== "granted") { + Alert.alert( + "Permission required", + "You need to grant permission to use the camera." + ); + } + }; + requestPermissions(); + }, []); + + // Function to pick image + const pickImage = async () => { + let result = await ImagePicker.launchImageLibraryAsync({ + mediaTypes: ImagePicker.MediaTypeOptions.Images, + allowsEditing: true, + aspect: [4, 3], + quality: 1, + }); + + if (!result.canceled) { + setPhoto(result.assets[0].uri); // Set the selected photo URI + } else { + Alert.alert("Tambah foto dibatalkan."); + } + }; + + // Function to pick video + const pickVideo = async () => { + let result = await ImagePicker.launchImageLibraryAsync({ + mediaTypes: ImagePicker.MediaTypeOptions.Videos, + allowsEditing: true, + quality: 1, + }); + + if (!result.canceled) { + setVideo(result.assets[0].uri); // Set the selected video URI + } else { + Alert.alert("Pemilihan video dibatalkan."); + } + }; + + return ( + + {/* Title and Back Button */} + + navigation.goBack()} + > + + + KONTRIBUSI SEKARANG + + + {/* Contribution Info Container */} + + + {judulPengaduan} + {tempatPengaduan} + + + {/* Add Media Row (Foto & Video) */} + + + + Tambah Foto + + + + Tambah Video + + + + {/* Display selected photo */} + {photo && ( + + )} + + {/* Display selected video */} + {video && ( + + + {/* Koin Message */} + Dapatkan +520 Koin + + {/* Post Button at Bottom */} + navigation.navigate("KontribusiBerhasil")} + > + Posting + + + ); +}; + +const styles = StyleSheet.create({ + container: { + flex: 1, + backgroundColor: "#f9f9f9", + }, + header: { + flexDirection: "row", + alignItems: "center", + padding: 15, + backgroundColor: "#fff", + borderBottomLeftRadius: 20, + borderBottomRightRadius: 20, + }, + backButton: { + marginRight: 15, + marginTop: 40, + }, + title: { + fontSize: 22, + color: "#000", + fontWeight: "bold", + flex: 1, + textAlign: "left", + marginTop: 40, + }, + contributionContainer: { + padding: 20, + backgroundColor: "#fff", + marginBottom: 20, + borderRadius: 12, + shadowColor: "#000", + shadowOpacity: 0.1, + shadowOffset: { width: 0, height: 4 }, + shadowRadius: 4, + }, + infoBox: { + marginBottom: 20, + }, + infoText1: { + fontSize: 22, + color: "#333", + fontWeight: "700", + marginBottom: 5, + }, + infoText2: { + fontSize: 18, + color: "#777", + fontWeight: "400", + }, + mediaRow: { + flexDirection: "row", + justifyContent: "space-between", + marginBottom: 25, + }, + mediaButton: { + alignItems: "center", + flex: 1, + padding: 15, + backgroundColor: "#E8F5E9", + borderRadius: 10, + marginHorizontal: 10, + borderWidth: 1, + borderColor: "#2D572C", + shadowColor: "#000", + shadowOpacity: 0.1, + shadowOffset: { width: 0, height: 3 }, + shadowRadius: 5, + elevation: 3, + }, + mediaButtonText: { + fontSize: 14, + color: "#2D572C", + marginTop: 5, + }, + input: { + height: 100, + borderColor: "#2D572C", + borderWidth: 1, + borderRadius: 8, + padding: 12, + fontSize: 16, + marginBottom: 15, + backgroundColor: "#fff", + shadowColor: "#000", + shadowOpacity: 0.1, + shadowOffset: { width: 0, height: 2 }, + shadowRadius: 5, + elevation: 2, + }, + koinText: { + fontSize: 18, + fontWeight: "bold", + textAlign: "center", + color: "#2D572C", + marginBottom: 20, + }, + postButton: { + backgroundColor: "#2D572C", + paddingVertical: 15, + borderRadius: 10, + marginBottom: 20, + alignItems: "center", + width: "90%", + alignSelf: "center", + shadowColor: "#000", + shadowOpacity: 0.1, + shadowOffset: { width: 0, height: 5 }, + shadowRadius: 8, + elevation: 5, + }, + postButtonText: { + fontSize: 18, + color: "#fff", + fontWeight: "bold", + }, + mediaThumbnail: { + width: 300, // Adjust size for visibility + height: 200, // Adjust size for visibility + marginVertical: 10, + borderRadius: 8, + backgroundColor: "#f0f0f0", + }, +}); + +export default KontribusiScreen; diff --git a/screens/PengaduanWarga/LoadingKontribusi.js b/screens/PengaduanWarga/LoadingKontribusi.js new file mode 100644 index 0000000..7397d2d --- /dev/null +++ b/screens/PengaduanWarga/LoadingKontribusi.js @@ -0,0 +1,48 @@ +import React, { useEffect } from "react"; +import { View, Text, StyleSheet, ActivityIndicator } from "react-native"; +import { useNavigation } from "@react-navigation/native"; + +const LoadingKontribusi = () => { + const navigation = useNavigation(); + + // Menunggu selama 2 detik dan kemudian pindah ke halaman Home + useEffect(() => { + const timer = setTimeout(() => { + navigation.replace("KontribusiBerhasil"); // Ganti 'Home' dengan nama screen tujuan + }, 2000); + + return () => clearTimeout(timer); // Membersihkan timer saat komponen dihapus + }, [navigation]); + + return ( + + + + Tunggu sebentar... + + + ); +}; + +const styles = StyleSheet.create({ + container: { + flex: 1, + justifyContent: "center", + alignItems: "center", + backgroundColor: "#435739", // Warna hijau gelap sebagai latar belakang + }, + overlay: { + justifyContent: "center", + alignItems: "center", + backgroundColor: "#435739", // Transparansi gelap untuk overlay + padding: 20, + borderRadius: 10, + }, + loadingText: { + marginTop: 10, + fontSize: 16, + color: "#fff", + }, +}); + +export default LoadingKontribusi; diff --git a/screens/PengaduanWarga/LoadingScreen.js b/screens/PengaduanWarga/LoadingScreen.js new file mode 100644 index 0000000..6adb05d --- /dev/null +++ b/screens/PengaduanWarga/LoadingScreen.js @@ -0,0 +1,50 @@ +import React, { useEffect } from "react"; +import { View, Text, StyleSheet, ActivityIndicator } from "react-native"; +import { useNavigation } from "@react-navigation/native"; + +const LoadingScreen = () => { + const navigation = useNavigation(); + + // Menunggu selama 2 detik dan kemudian pindah ke halaman Home + useEffect(() => { + const timer = setTimeout(() => { + navigation.replace("PengaduanWargaNavigator", { + screen: "PengaduanBerhasil", + }); // Ganti 'Home' dengan nama screen tujuan + }, 2000); + + return () => clearTimeout(timer); // Membersihkan timer saat komponen dihapus + }, [navigation]); + + return ( + + + + Tunggu sebentar... + + + ); +}; + +const styles = StyleSheet.create({ + container: { + flex: 1, + justifyContent: "center", + alignItems: "center", + backgroundColor: "#435739", // Warna hijau gelap sebagai latar belakang + }, + overlay: { + justifyContent: "center", + alignItems: "center", + backgroundColor: "#435739", // Transparansi gelap untuk overlay + padding: 20, + borderRadius: 10, + }, + loadingText: { + marginTop: 10, + fontSize: 16, + color: "#fff", + }, +}); + +export default LoadingScreen; diff --git a/screens/PengaduanWarga/PengaduanBerhasil.js b/screens/PengaduanWarga/PengaduanBerhasil.js new file mode 100644 index 0000000..f435904 --- /dev/null +++ b/screens/PengaduanWarga/PengaduanBerhasil.js @@ -0,0 +1,80 @@ +import React from "react"; +import { View, Text, Button, StyleSheet, TouchableOpacity } from "react-native"; +import { MaterialCommunityIcons } from "@expo/vector-icons"; // Menggunakan ikon ceklis + +const PengaduanBerhasil = ({ navigation }) => { + return ( + + + + PENGADUAN BERHASIL ! + + Mohon pastikan informasi yang diberikan sudah sesuai, agar kami dapat + segera menindaklanjuti. + + + Laporan anda telah diterima dan sedang menunggu verifikasi + + console.log("Daftar Submit")} + onPress={() => navigation.navigate("BerandaPengaduan")} + > + LIHAT PENGADUAN + + + + ); +}; + +const styles = StyleSheet.create({ + container: { + flex: 1, + justifyContent: "center", + alignItems: "center", + backgroundColor: "#435739", // Warna hijau gelap + }, + content: { + justifyContent: "center", + alignItems: "center", + backgroundColor: "#435739", // Transparansi gelap untuk efek overlay + padding: 30, + borderRadius: 15, + width: "80%", + alignItems: "center", + }, + title: { + fontSize: 24, + fontWeight: "bold", + color: "#ffea00", + marginTop: 0, + }, + message: { + fontSize: 16, + color: "#fff", + textAlign: "center", + marginTop: 10, + }, + subMessage: { + fontSize: 14, + color: "#ffea00", + textAlign: "center", + marginTop: 10, + padding: 3, + }, + button: { + backgroundColor: "#fff", + paddingVertical: 10, + paddingHorizontal: 50, + borderRadius: 5, + marginTop: 20, + borderRadius: 25, + fontWeight: "bold", + }, + buttonText: { + fontWeight: "bold", + fontSize: 15, + }, +}); + +export default PengaduanBerhasil; diff --git a/screens/PengaduanWarga/pengaduansampah.js b/screens/PengaduanWarga/pengaduansampah.js new file mode 100644 index 0000000..7951f40 --- /dev/null +++ b/screens/PengaduanWarga/pengaduansampah.js @@ -0,0 +1,284 @@ +import React, { useState } from "react"; +import { + View, + Text, + TextInput, + TouchableOpacity, + ScrollView, + StyleSheet, + Image, + FlatList, +} from "react-native"; +import { Ionicons } from "@expo/vector-icons"; +import { useNavigation } from "@react-navigation/native"; +import * as Location from "expo-location"; +import * as ImagePicker from "expo-image-picker"; +import { Picker } from "@react-native-picker/picker"; // Import Picker + +const desaOptions = ["Cangkringan", "Bogo", "Pesukidul", "Grojogan"]; +const kecamatanOptions = ["Nganjuk", "Bagor", "Berbek", "Pace", "Wilangan"]; + +export default function PengaduanSampah() { + const navigation = useNavigation(); + + const [form, setForm] = useState({ + nama: "", + noHp: "", + tanggal: "", + kategori: "", + namaJalan: "", + desa: "", + kecamatan: "", + tempat: "", + catatan: "", + }); + + const [imageUris, setImageUris] = useState([]); // Using array for multiple images + const [location, setLocation] = useState(null); + const [filteredDesa, setFilteredDesa] = useState(desaOptions); + + const handleInputChange = (key, value) => { + setForm({ ...form, [key]: value }); + }; + + // Filter desa based on input + const handleDesaSearch = (text) => { + setForm({ ...form, desa: text }); + setFilteredDesa( + desaOptions.filter((desa) => + desa.toLowerCase().includes(text.toLowerCase()) + ) + ); + }; + + const getCurrentLocation = async () => { + const { status } = await Location.requestForegroundPermissionsAsync(); + if (status !== "granted") { + alert("Izin lokasi ditolak"); + return; + } + + try { + // Get user location + const loc = await Location.getCurrentPositionAsync({ + accuracy: Location.Accuracy.High, + }); + setLocation(loc.coords); + + // Geocoding API + const geocodeUrl = `https://maps.googleapis.com/maps/api/geocode/json?latlng=${loc.coords.latitude},${loc.coords.longitude}&key=YOUR_GOOGLE_MAPS_API_KEY`; + + const response = await fetch(geocodeUrl); + const data = await response.json(); + + if (data.status === "OK" && data.results.length > 0) { + const address = data.results[0].address_components; + + const street = + address.find((component) => component.types.includes("route")) + ?.long_name || ""; + const village = + address.find((component) => component.types.includes("locality")) + ?.long_name || ""; + const place = + address.find((component) => component.types.includes("neighborhood")) + ?.long_name || ""; + + setForm((prevForm) => ({ + ...prevForm, + namaJalan: street, + desa: village, + tempat: place, + })); + } else { + alert("Tidak dapat menemukan alamat untuk lokasi ini."); + } + } catch (error) { + console.error("Error getting address or location:", error); + alert("Terjadi kesalahan saat mengambil alamat atau lokasi."); + } + }; + + const pickImage = async () => { + const { status } = await ImagePicker.requestMediaLibraryPermissionsAsync(); + if (status !== "granted") { + alert("Sorry, we need camera roll permissions to make this work!"); + return; + } + + const result = await ImagePicker.launchImageLibraryAsync({ + allowsEditing: true, + quality: 1, + }); + + if (!result.canceled && result.assets.length > 0) { + // Add new image URI to the imageUris array + setImageUris((prevImages) => [...prevImages, result.assets[0].uri]); + } + }; + + const handleSubmit = () => { + // Cek semua field + if (!form.nama || !form.noHp || !form.tempat) { + alert("Harap lengkapi semua informasi yang diperlukan!"); + return; + } + + // validasi + console.log("Data Laporan:", { ...form, imageUris, location }); + // alert("Laporan berhasil dikirim!"); + navigation.navigate("PengaduanBerhasil"); + }; + + return ( + + {/* Back Button */} + navigation.goBack()} + style={styles.backButton} + > + + + PENGADUAN SAMPAH + handleInputChange("nama", text)} + /> + handleInputChange("noHp", text)} + /> + LOKASI KEJADIAN + + {/* Kecamatan Dropdown */} + Kecamatan + handleInputChange("kecamatan", itemValue)} + style={styles.input} + > + {kecamatanOptions.map((kecamatan, index) => ( + + ))} + + + handleInputChange("tempat", text)} + /> + handleInputChange("catatan", text)} + /> + BUKTI PENDUKUNG + + + Unggah + + + Lokasi Saat Ini + + + {/* Display uploaded images */} + + {imageUris.map((uri, index) => ( + + ))} + + + LAPORKAN + + + ); +} + +const styles = StyleSheet.create({ + container: { + flexGrow: 1, + padding: 30, + backgroundColor: "#fff", + paddingTop: 20, + marginTop: 40, + }, + backButton: { + position: "absolute", + top: 20, + left: 20, + zIndex: 10, + }, + title: { + fontWeight: "bold", + fontSize: 22, + marginBottom: 20, + color: "#000", + textAlign: "left", + marginLeft: 25, + }, + section: { + marginTop: 20, + fontWeight: "600", + marginBottom: 10, + color: "#444", + }, + input: { + borderWidth: 1, + borderColor: "#aaa", + padding: 10, + borderRadius: 8, + marginBottom: 15, + }, + inputLabel: { + fontWeight: "600", + marginBottom: 5, + }, + row: { + flexDirection: "row", + justifyContent: "space-between", + }, + buttonUpload: { + backgroundColor: "#ccc", + padding: 10, + borderRadius: 8, + flex: 1, + marginRight: 10, + }, + buttonText: { + textAlign: "center", + }, + imagePreview: { + marginTop: 10, + width: 100, + height: 100, + borderRadius: 10, + marginRight: 10, + }, + imageGallery: { + flexDirection: "row", + marginTop: 10, + marginBottom: 20, + }, + submitButton: { + marginTop: 30, + backgroundColor: "#2f4f2f", + padding: 15, + borderRadius: 10, + }, + submitText: { + color: "#fff", + textAlign: "center", + fontWeight: "bold", + }, +}); diff --git a/screens/ProfilWarga/DonasiWarga/Donasi.js b/screens/ProfilWarga/DonasiWarga/Donasi.js new file mode 100644 index 0000000..7c40ac2 --- /dev/null +++ b/screens/ProfilWarga/DonasiWarga/Donasi.js @@ -0,0 +1,230 @@ +import React, { useState } from "react"; +import { + View, + Text, + TextInput, + TouchableOpacity, + StyleSheet, + ScrollView, +} from "react-native"; +import { Ionicons } from "@expo/vector-icons"; // Importing icons + +const Donasi = ({ navigation }) => { + const [donationAmount, setDonationAmount] = useState(""); + const [selectedGoal, setSelectedGoal] = useState(null); + const [description, setDescription] = useState(""); + + // Format donation input with thousands separator + const formatAmount = (amount) => { + return amount + .replace(/[^\d]/g, "") // Remove non-numeric characters + .replace(/\B(?=(\d{3})+(?!\d))/g, "."); // Add period as thousand separator + }; + + const handleDonationAmountChange = (value) => { + const formattedValue = formatAmount(value); + setDonationAmount(formattedValue); + }; + + // Handle Goal Selection + const handleGoalSelection = (goal) => { + setSelectedGoal(goal); + }; + + // Check if all fields are filled + const isFormValid = () => { + return donationAmount && selectedGoal && description.trim() !== ""; + }; + + return ( + + {/* Header with Back Button */} + + navigation.goBack()} + > + + + DONASI + + + {/* Donation Amount Input */} + + Jumlah Donasi + + Rp. + + + + + {/* Donation Goal Selection */} + + Tujuan Donasi + + {[ + "Pengelolaan Sampah", + "Program Penghijauan", + "Edukasi Lingkungan", + "Fasilitas Ramah Lingkungan", + "Kegiatan Pembersihan Lingkungan", + ].map((goal) => ( + handleGoalSelection(goal)} + > + + {goal} + + + ))} + + + + {/* Description Input */} + + Deskripsi + + + + {/* Next Button */} + isFormValid() && navigation.navigate("MetodeDonasi")} + disabled={!isFormValid()} // Disable if form is not valid + > + Selanjutnya + + + ); +}; + +const styles = StyleSheet.create({ + container: { + flex: 1, + padding: 20, + backgroundColor: "#f9f9f9", + }, + header: { + flexDirection: "row", + alignItems: "center", + marginBottom: 20, + marginTop: 30, + }, + backButton: { + marginRight: 10, + }, + title: { + fontSize: 22, + fontWeight: "bold", + color: "#333", + }, + inputSection: { + marginBottom: 20, + }, + inputLabel: { + fontSize: 16, + color: "#333", + marginBottom: 8, + }, + donationInputContainer: { + flexDirection: "row", + alignItems: "center", + borderColor: "#ddd", + borderWidth: 1, + borderRadius: 8, + paddingLeft: 15, + backgroundColor: "#fff", + }, + rpLabel: { + fontSize: 18, + fontWeight: "bold", + color: "#333", + marginRight: 10, + }, + donationInput: { + height: 50, + flex: 1, + fontSize: 18, + fontWeight: "bold", + backgroundColor: "#fff", + }, + goalsSection: { + marginBottom: 20, + }, + goalsContainer: { + flexDirection: "row", + flexWrap: "wrap", + gap: 10, + }, + goalButton: { + borderWidth: 1, + borderColor: "#ddd", + paddingVertical: 8, + paddingHorizontal: 12, + borderRadius: 5, + backgroundColor: "#f0f0f0", + }, + selectedGoalButton: { + borderColor: "#2D572C", + backgroundColor: "#e0f7e0", + }, + goalText: { + fontSize: 14, + color: "#333", + }, + selectedGoalText: { + fontSize: 14, + color: "#2D572C", + }, + descriptionInput: { + height: 100, + borderColor: "#ddd", + borderWidth: 1, + borderRadius: 8, + paddingLeft: 15, + paddingTop: 10, + fontSize: 14, + backgroundColor: "#fff", + }, + nextButton: { + backgroundColor: "#2D572C", + paddingVertical: 15, + borderRadius: 8, + alignItems: "center", + }, + disabledButton: { + backgroundColor: "#b0b0b0", // Disabled button color + }, + nextButtonText: { + color: "#fff", + fontSize: 16, + fontWeight: "bold", + }, +}); + +export default Donasi; diff --git a/screens/ProfilWarga/DonasiWarga/DonasiVerifikasi.js b/screens/ProfilWarga/DonasiWarga/DonasiVerifikasi.js new file mode 100644 index 0000000..4c33093 --- /dev/null +++ b/screens/ProfilWarga/DonasiWarga/DonasiVerifikasi.js @@ -0,0 +1,107 @@ +import React, { useState } from "react"; +import { + View, + Text, + TextInput, + TouchableOpacity, + StyleSheet, +} from "react-native"; +import { Ionicons } from "@expo/vector-icons"; +import { useNavigation } from "@react-navigation/native"; + +const DonasiVerifikasi = () => { + const navigation = useNavigation(); + const [pin, setPin] = useState(""); + + const handlePinSubmit = () => { + if (pin.length === 6) { + alert("Pembayaran Tervalidasi"); + } else { + alert("PIN harus 6 digit"); + } + }; + + return ( + + + navigation.goBack()} + > + + + VERIFIKASI PIN + + + + Masukkan PIN Anda untuk melanjutkan pembayaran + + + + + navigation.navigate("Donasiberhasil")} + > + Konfirmasi PIN + + + ); +}; + +const styles = StyleSheet.create({ + container: { + flex: 1, + padding: 20, + backgroundColor: "#f9f9f9", + }, + header: { + flexDirection: "row", + alignItems: "center", + marginBottom: 30, + marginTop: 30, + }, + backButton: { + marginRight: 10, + }, + title: { + fontSize: 22, + fontWeight: "bold", + color: "#333", + }, + instructionText: { + fontSize: 16, + color: "#666", + marginVertical: 15, + }, + pinInput: { + borderBottomWidth: 2, + borderColor: "#333", + fontSize: 20, + paddingVertical: 10, + textAlign: "center", + marginVertical: 20, + }, + submitButton: { + backgroundColor: "#2D572C", + paddingVertical: 15, + borderRadius: 8, + alignItems: "center", + }, + submitButtonText: { + color: "#fff", + fontSize: 16, + fontWeight: "bold", + }, +}); + +export default DonasiVerifikasi; diff --git a/screens/ProfilWarga/DonasiWarga/Donasiberhasil.js b/screens/ProfilWarga/DonasiWarga/Donasiberhasil.js new file mode 100644 index 0000000..0d21971 --- /dev/null +++ b/screens/ProfilWarga/DonasiWarga/Donasiberhasil.js @@ -0,0 +1,162 @@ +import React from "react"; +import { View, Text, StyleSheet, TouchableOpacity } from "react-native"; +import { MaterialIcons } from "@expo/vector-icons"; + +const Donasiberhasil = ({ navigation }) => { + const currentDate = new Date().toLocaleDateString("id-ID", { + weekday: "long", + year: "numeric", + month: "long", + day: "numeric", + }); + + const donationAmount = 100000; + const paymentMethod = "Transfer DANA"; + const description = "Pengelolaan Sampah"; + const senderName = "Dina Dwi Anisa"; + const accountName = "Dinas Lingkungan Hidup"; + const transactionId = "DN230512XYZ"; + + return ( + + + + Terima Kasih! + Donasi Anda Telah Berhasil + + + + {/* Struk Donasi */} + + Tanggal + {currentDate} + + + ID Transaksi + {transactionId} + + + Nama Pengirim + {senderName} + + + Akun Tujuan + {accountName} + + + Jumlah Donasi + + Rp {donationAmount.toLocaleString("id-ID")} + + + + Tujuan Donasi + {description} + + + Metode Pembayaran + {paymentMethod} + + + + + Semoga kebaikan Anda membawa berkah bagi banyak orang. 💚 + + + + navigation.navigate("Home")} + > + Kembali ke Beranda + + + + ); +}; + +export default Donasiberhasil; + +const styles = StyleSheet.create({ + container: { + flex: 1, + backgroundColor: "#F2F2F2", + justifyContent: "center", + alignItems: "center", + padding: 20, + }, + card: { + backgroundColor: "#fff", + width: "100%", + borderRadius: 16, + padding: 25, + alignItems: "center", + shadowColor: "#000", + shadowOpacity: 0.1, + shadowRadius: 8, + elevation: 5, + }, + successText: { + fontSize: 24, + fontWeight: "bold", + color: "#2D572C", + marginTop: 10, + }, + subText: { + fontSize: 16, + color: "#444", + marginTop: 5, + marginBottom: 15, + }, + separator: { + height: 1, + width: "100%", + backgroundColor: "#ccc", + marginVertical: 20, + }, + row: { + width: "100%", + flexDirection: "row", + justifyContent: "space-between", + marginBottom: 12, + }, + label: { + fontSize: 16, + color: "#333", + fontWeight: "500", + }, + value: { + fontSize: 16, + color: "#666", + textAlign: "right", + flexShrink: 1, + marginLeft: 20, + }, + amount: { + fontSize: 18, + fontWeight: "bold", + color: "#2D572C", + }, + thankYou: { + marginTop: 25, + marginBottom: 20, + paddingHorizontal: 10, + }, + thankText: { + textAlign: "center", + color: "#555", + fontSize: 14, + fontStyle: "italic", + }, + button: { + backgroundColor: "#2D572C", + paddingVertical: 14, + paddingHorizontal: 30, + borderRadius: 10, + }, + buttonText: { + color: "#fff", + fontSize: 16, + fontWeight: "600", + }, +}); diff --git a/screens/ProfilWarga/DonasiWarga/KonfirmasiPembayaran.js b/screens/ProfilWarga/DonasiWarga/KonfirmasiPembayaran.js new file mode 100644 index 0000000..12c260b --- /dev/null +++ b/screens/ProfilWarga/DonasiWarga/KonfirmasiPembayaran.js @@ -0,0 +1,159 @@ +import React, { useState } from "react"; +import { + View, + Text, + TouchableOpacity, + StyleSheet, + ScrollView, +} from "react-native"; +import { Ionicons } from "@expo/vector-icons"; + +const KonfirmasiPembayaran = ({ navigation }) => { + const [paymentMethod, setPaymentMethod] = useState("Transfer DANA"); + const [donationAmount, setDonationAmount] = useState(100000); + const [description, setDescription] = useState("Pengelolaan Sampah"); + const [senderName, setSenderName] = useState("Dina Dwi Anisa"); + const [accountName, setAccountName] = useState("Akun Donor XYZ"); + + const currentDate = new Date(); + const formattedDate = currentDate.toLocaleDateString("id-ID", { + day: "2-digit", + month: "long", + year: "numeric", + }); + const formattedTime = currentDate.toLocaleTimeString("id-ID", { + hour: "2-digit", + minute: "2-digit", + }); + + return ( + + {/* Header */} + + navigation.goBack()}> + + + KONFIRMASI PEMBAYARAN + + + {/* Receipt */} + + + + + + + + + {/* Confirm Button */} + navigation.navigate("DonasiVerifikasi")} + > + Konfirmasi Pembayaran + + + {/* Note */} + + + Pastikan Anda telah melakukan pembayaran sesuai dengan detail di atas. + Setelah melakukan pembayaran, kami akan segera memverifikasi dan + memproses donasi Anda. + + + + ); +}; + +// Custom row component +const ReceiptRow = ({ label, value, isHighlight }) => ( + + + {label} + + + {value} + + +); + +const styles = StyleSheet.create({ + container: { + flex: 1, + backgroundColor: "#FAFAFA", + padding: 20, + }, + header: { + flexDirection: "row", + alignItems: "center", + gap: 10, + marginBottom: 20, + marginTop: 30, + }, + title: { + fontSize: 20, + fontWeight: "bold", + color: "#333", + }, + receiptCard: { + backgroundColor: "#fff", + padding: 20, + borderRadius: 10, + elevation: 2, + marginBottom: 25, + }, + receiptItem: { + flexDirection: "row", + justifyContent: "space-between", + paddingVertical: 8, + borderBottomWidth: 0.5, + borderBottomColor: "#E0E0E0", + }, + receiptLabel: { + fontSize: 15, + color: "#444", + }, + receiptValue: { + fontSize: 15, + fontWeight: "600", + color: "#222", + textAlign: "right", + maxWidth: "60%", + }, + highlightLabel: { + fontWeight: "bold", + }, + highlightValue: { + color: "#2D572C", + fontSize: 16, + }, + confirmButton: { + backgroundColor: "#2D572C", + paddingVertical: 15, + borderRadius: 10, + alignItems: "center", + marginBottom: 15, + }, + confirmButtonText: { + color: "#fff", + fontSize: 16, + fontWeight: "bold", + }, + termsSection: { + paddingHorizontal: 10, + }, + termsText: { + fontSize: 14, + color: "#666", + textAlign: "center", + }, +}); + +export default KonfirmasiPembayaran; diff --git a/screens/ProfilWarga/DonasiWarga/MetodeDonasi.js b/screens/ProfilWarga/DonasiWarga/MetodeDonasi.js new file mode 100644 index 0000000..752f34d --- /dev/null +++ b/screens/ProfilWarga/DonasiWarga/MetodeDonasi.js @@ -0,0 +1,175 @@ +import React, { useState } from "react"; +import { + View, + Text, + TouchableOpacity, + StyleSheet, + ScrollView, +} from "react-native"; +import { Ionicons, MaterialIcons } from "@expo/vector-icons"; // Importing icons + +const MetodeDonasi = ({ navigation }) => { + const [selectedPayment, setSelectedPayment] = useState(null); + + // Handle Payment Method Selection + const handlePaymentSelection = (method) => { + setSelectedPayment(method); + }; + + return ( + + {/* Header with Back Button */} + + navigation.goBack()} + > + + + DONASI + + + {/* Metode Pembayaran */} + + Metode Pembayaran + + handlePaymentSelection("Dana")} + > + + + + Transfer DANA + + + + + handlePaymentSelection("Transfer")} + > + + + + Transfer Bank + + + + + + + {/* Button Selanjutnya */} + alert("Pilih metode pembayaran")} + onPress={() => navigation.navigate("KonfirmasiPembayaran")} + > + Selanjutnya + + + ); +}; + +const styles = StyleSheet.create({ + container: { + flex: 1, + padding: 20, + backgroundColor: "#f9f9f9", + }, + header: { + flexDirection: "row", + alignItems: "center", + marginBottom: 20, + marginTop: 30, + }, + backButton: { + marginRight: 10, + }, + title: { + fontSize: 22, + fontWeight: "bold", + color: "#333", + }, + paymentMethodSection: { + marginBottom: 30, + }, + sectionTitle: { + fontSize: 18, + fontWeight: "bold", + color: "#333", + marginBottom: 15, + }, + paymentButtonContainer: { + flexDirection: "row", + gap: 15, + marginBottom: 30, + }, + paymentButton: { + flex: 1, + borderWidth: 1, + borderColor: "#ddd", + paddingVertical: 15, + borderRadius: 8, + backgroundColor: "#fff", + alignItems: "center", + justifyContent: "center", + }, + selectedPaymentButton: { + borderColor: "#2D572C", + backgroundColor: "#e0f7e0", + }, + paymentButtonContent: { + flexDirection: "row", + alignItems: "center", + justifyContent: "center", + gap: 10, + }, + paymentText: { + fontSize: 16, + color: "#333", + }, + selectedPaymentText: { + fontSize: 16, + color: "#2D572C", + }, + nextButton: { + backgroundColor: "#2D572C", + paddingVertical: 15, + borderRadius: 8, + alignItems: "center", + }, + nextButtonText: { + color: "#fff", + fontSize: 16, + fontWeight: "bold", + }, +}); + +export default MetodeDonasi; diff --git a/screens/ProfilWarga/InformasiPribadi/EditInformasiPribadi.js b/screens/ProfilWarga/InformasiPribadi/EditInformasiPribadi.js new file mode 100644 index 0000000..1ce6582 --- /dev/null +++ b/screens/ProfilWarga/InformasiPribadi/EditInformasiPribadi.js @@ -0,0 +1,246 @@ +import React, { useState } from "react"; +import { + View, + Text, + TextInput, + StyleSheet, + TouchableOpacity, + ScrollView, + Image, + Alert, +} from "react-native"; +import { useNavigation } from "@react-navigation/native"; +import { Ionicons } from "@expo/vector-icons"; +import * as ImagePicker from "expo-image-picker"; + +export default function EditInformasiPribadi() { + const [noHp, setNoHp] = useState("087786770760"); + const [alamat, setAlamat] = useState( + "Jl Letjen. S.Parman IV Cangkringan Nganjuk" + ); + const [profileImage, setProfileImage] = useState(null); // Gambar profil diubah ke null pertama kali + + // Fungsi untuk memilih gambar baru + const pickImage = async () => { + const result = await ImagePicker.launchImageLibraryAsync({ + mediaTypes: ImagePicker.MediaTypeOptions.Images, + allowsEditing: true, + aspect: [1, 1], + quality: 1, + }); + + if (!result.cancelled) { + setProfileImage(result.uri); // Menyimpan URI gambar yang dipilih + } + }; + + // Fungsi untuk menghapus foto profil + const deleteProfileImage = () => { + Alert.alert( + "Hapus Foto Profil", + "Apakah Anda yakin ingin menghapus foto profil?", + [ + { text: "Batal", style: "cancel" }, + { text: "Hapus", onPress: () => setProfileImage(null) }, // Menghapus gambar + ] + ); + }; + + // Fungsi untuk menyimpan perubahan + const saveChanges = () => { + Alert.alert( + "Konfirmasi Perubahan", + "Apakah yakin ingin merubah data pribadi anda?", + [ + { text: "Batal", style: "cancel" }, + { + text: "Simpan", + onPress: () => { + // Implementasikan logika penyimpanan di sini + console.log("Perubahan disimpan"); + navigation.goBack(); + }, + }, + ] + ); + }; + const navigation = useNavigation(); + + // State untuk menyimpan nilai input dan foto profil + const [email, setEmail] = useState("dinadwi03@gmail.com"); + + return ( + + {/* Header */} + + navigation.goBack()} + style={styles.backIcon} + > + + + EDIT INFORMASI PRIBADI + + + + {/* Profile Section */} + + {profileImage ? ( + + ) : ( + + )} + + Ganti Foto Profil + + + Hapus Foto Profil + + + + {/* Input Form */} + + Email + + + No. HP + + + Alamat + + + + {/* Save Button */} + + SIMPAN + + + + ); +} + +const styles = StyleSheet.create({ + container: { + flex: 1, + backgroundColor: "#fff", + }, + header: { + backgroundColor: "#fff", + paddingVertical: 20, + paddingHorizontal: 16, + flexDirection: "row", + alignItems: "center", + marginTop: 40, + }, + backIcon: { + marginRight: 16, + }, + headerText: { + fontSize: 20, + fontWeight: "bold", + color: "#000", + }, + content: { + padding: 20, + }, + profileContainer: { + alignItems: "center", + marginBottom: 20, + }, + profileImage: { + width: 100, + height: 100, + borderRadius: 50, + borderWidth: 2, + borderColor: "#2D572C", + }, + profileImagePlaceholder: { + width: 100, + height: 100, + borderRadius: 50, + backgroundColor: "#ddd", + justifyContent: "center", + alignItems: "center", + }, + profileImageText: { + color: "#fff", + fontWeight: "bold", + fontSize: 16, + }, + changeImageButton: { + marginTop: 10, + backgroundColor: "#4CAF50", + paddingVertical: 8, + paddingHorizontal: 20, + borderRadius: 20, + marginBottom: 10, + }, + changeImageButtonText: { + color: "#fff", + fontWeight: "bold", + }, + deleteImageButton: { + backgroundColor: "#d32f2f", + paddingVertical: 8, + paddingHorizontal: 20, + borderRadius: 20, + }, + deleteImageButtonText: { + color: "#fff", + fontWeight: "bold", + }, + inputContainer: { + marginBottom: 30, + }, + label: { + fontSize: 14, + fontWeight: "600", + color: "#333", + marginBottom: 5, + }, + input: { + backgroundColor: "#fff", + borderRadius: 10, + paddingVertical: 12, + paddingHorizontal: 16, + marginBottom: 20, + fontSize: 16, + borderWidth: 1, + borderColor: "#ddd", + }, + saveButton: { + marginTop: -20, + backgroundColor: "#2f4f2f", + padding: 15, + borderRadius: 10, + alignItems: "center", + }, + saveButtonText: { + color: "#fff", + fontSize: 16, + fontWeight: "bold", + }, +}); diff --git a/screens/ProfilWarga/InformasiPribadi/InformasiPribadi.js b/screens/ProfilWarga/InformasiPribadi/InformasiPribadi.js new file mode 100644 index 0000000..1d98b4e --- /dev/null +++ b/screens/ProfilWarga/InformasiPribadi/InformasiPribadi.js @@ -0,0 +1,158 @@ +import React from "react"; +import { + View, + Text, + Image, + StyleSheet, + TouchableOpacity, + ScrollView, +} from "react-native"; +import { useNavigation } from "@react-navigation/native"; +import { Ionicons } from "@expo/vector-icons"; + +export default function InformasiPribadi() { + const navigation = useNavigation(); + + return ( + + {/* Header */} + + navigation.goBack()} + style={styles.backIcon} + > + + + INFORMASI PRIBADI + + + + {/* Profile */} + + + Dina Dwi Anisa + Pahlawan Lingkungan + + + {/* Info Card */} + + + + + + + + + + {/* Edit Button */} + navigation.navigate("EditInformasiPribadi")} + > + EDIT + + + + ); +} + +const InfoRow = ({ label, value }) => ( + + {label} + {value} + +); + +const styles = StyleSheet.create({ + container: { + flex: 1, + backgroundColor: "#fff", + }, + header: { + backgroundColor: "#fff", + paddingVertical: 20, + paddingHorizontal: 16, + flexDirection: "row", + alignItems: "center", + marginTop: 40, + }, + backIcon: { + marginRight: 16, + }, + headerText: { + fontSize: 20, + fontWeight: "bold", + color: "#000", + marginTop: 0, + }, + content: { + padding: 20, + }, + profileContainer: { + alignItems: "center", + marginBottom: 20, + }, + profileImage: { + width: 100, + height: 100, + borderRadius: 60, + borderWidth: 2, + borderColor: "#2e7d32", + }, + profileName: { + fontSize: 18, + fontWeight: "bold", + marginTop: 10, + }, + profileRole: { + fontSize: 14, + color: "#2e7d32", + marginTop: 2, + }, + card: { + backgroundColor: "#fff", + borderRadius: 12, + padding: 16, + elevation: 3, + shadowColor: "#000", + shadowOpacity: 0.1, + shadowOffset: { width: 0, height: 2 }, + shadowRadius: 5, + marginBottom: 20, + }, + infoRow: { + marginBottom: 15, + }, + infoLabel: { + fontSize: 13, + color: "#888", + marginBottom: 4, + }, + infoValue: { + fontSize: 15, + fontWeight: "600", + color: "#333", + }, + link: { + color: "#1976d2", + fontWeight: "500", + }, + editButton: { + marginTop: 20, + backgroundColor: "#2f4f2f", + padding: 15, + borderRadius: 10, + alignItems: "center", + }, + editButtonText: { + color: "#fff", + fontSize: 16, + fontWeight: "bold", + }, +}); diff --git a/screens/ProfilWarga/StatusPengaduan/StatusPengaduan.js b/screens/ProfilWarga/StatusPengaduan/StatusPengaduan.js new file mode 100644 index 0000000..5a28083 --- /dev/null +++ b/screens/ProfilWarga/StatusPengaduan/StatusPengaduan.js @@ -0,0 +1,334 @@ +import React, { useState } from "react"; +import { + View, + Text, + FlatList, + StyleSheet, + TouchableOpacity, + Image, +} from "react-native"; +import { Ionicons } from "@expo/vector-icons"; +import { useNavigation } from "@react-navigation/native"; + +const dataPengaduan = [ + { + id: "1", + judul: "TPS Liar", + lokasi: "Jl. Sukarno - Jl. Sukarno, Nganjuk", + tanggal: "05 Januari 2025", + waktu: "14.32 WIB", + status: "selesai", + color: "#D2F3D1", + adminResponse: + "Terimakasih telah melaporkan sampah. Berikut bukti foto yang sudah ditindaklanjuti.", + image: + "https://5.imimg.com/data5/SELLER/Default/2022/4/LC/DM/QX/8088277/rakshak-self-watering-tree-guard-1000x1000.jpg", // Replace with actual image URL + }, + { + id: "2", + judul: "Sampah berserakan", + lokasi: "Pasar Lama - Jl. Sukarno, Nganjuk", + tanggal: "03 Januari 2025", + waktu: "10.12 WIB", + status: "dalam proses", + color: "#E4D9FB", + adminResponse: "", + image: "", + }, + { + id: "3", + judul: "Banyak Sampah ini", + lokasi: "Depan Rumah Ijo - Jl Letjen S Parman", + tanggal: "03 Januari 2025", + waktu: "10.12 WIB", + status: "sedang diverifikasi", + color: "#FFF8C5", + adminResponse: "", + image: "", + }, + { + id: "4", + judul: "Sampah numpuk", + lokasi: "Depan masjid - Jl Letjen S Parman", + tanggal: "03 Januari 2025", + waktu: "10.12 WIB", + status: "ditolak", + color: "#FBE2DE", + reason: "Lokasi tidak sesuai dengan TPS yang valid", // Added reason for rejection + adminResponse: "", + image: "", + }, +]; + +const StatusPengaduan = () => { + const navigation = useNavigation(); + const [filterStatus, setFilterStatus] = useState("all"); + + const handlePress = (item) => { + navigation.navigate("DetailPengaduan", { item }); + }; + + const handleFilterChange = (status) => { + setFilterStatus(status); + }; + + const filteredData = + filterStatus === "all" + ? dataPengaduan + : dataPengaduan.filter((item) => item.status === filterStatus); + + const renderItem = ({ item }) => ( + handlePress(item)} + activeOpacity={0.8} + > + + {item.judul} + {item.tanggal} + + {item.lokasi} + + + {item.status === "ditolak" && item.reason && ( + {item.reason} + )} + {item.waktu} + + + {/* Admin Response Section */} + {item.adminResponse && ( + + {item.adminResponse} + {item.image ? ( + + Bukti Foto: + + + ) : null} + + )} + + ); + + return ( + + {/* Header */} + + navigation.goBack()}> + + + STATUS PENGADUAN + + + {/* Filter Buttons */} + + handleFilterChange("sedang diverifikasi")} + > + Sedang Verifikasi + + handleFilterChange("dalam proses")} + > + Dalam Proses + + + handleFilterChange("selesai")} + > + Selesai + + handleFilterChange("ditolak")} + > + Ditolak + + handleFilterChange("all")} + > + All + + + + {/* List */} + item.id} + renderItem={renderItem} + contentContainerStyle={{ padding: 16 }} + /> + + ); +}; + +const StatusBadge = ({ status }) => { + let bgColor = "#ccc"; + let textColor = "#000"; + + switch (status) { + case "selesai": + bgColor = "#FFF"; + textColor = "#000"; + break; + case "dalam proses": + bgColor = "#FFF"; + textColor = "#000"; + break; + case "sedang diverifikasi": + bgColor = "#FFF"; + textColor = "#000"; + break; + case "ditolak": + bgColor = "#FFF"; + textColor = "#000"; + break; + } + + return ( + + {status} + + ); +}; + +const styles = StyleSheet.create({ + container: { + flex: 1, + backgroundColor: "#fff", + }, + header: { + flexDirection: "row", + alignItems: "center", + padding: 20, + backgroundColor: "#fff", + borderBottomWidth: 1, + borderColor: "#fff", + marginTop: 40, + }, + headerText: { + fontSize: 22, + fontWeight: "bold", + color: "#000", + marginLeft: 10, + }, + filterContainer: { + flexDirection: "row", + justifyContent: "space-between", + padding: 16, + borderColor: "#000", + }, + filterButton: { + paddingVertical: 8, + paddingHorizontal: 12, + backgroundColor: "#fff", + borderRadius: 20, + borderColor: "#000", + borderWidth: 0.5, + }, + selectedFilter: { + backgroundColor: "#ddd", + }, + filterText: { + fontSize: 14, + color: "#000", + }, + card: { + padding: 14, + borderRadius: 12, + marginBottom: 16, + borderWidth: 1, + borderColor: "#000", + }, + cardHeader: { + flexDirection: "row", + justifyContent: "space-between", + }, + judul: { + fontSize: 16, + fontWeight: "bold", + }, + tanggal: { + fontSize: 12, + color: "#555", + }, + lokasi: { + fontSize: 13, + color: "#444", + marginVertical: 4, + }, + cardFooter: { + flexDirection: "row", + justifyContent: "space-between", + alignItems: "center", + marginTop: 8, + }, + waktu: { + fontSize: 12, + color: "#666", + }, + statusBadge: { + paddingHorizontal: 10, + paddingVertical: 4, + borderRadius: 20, + borderWidth: 0.5, + }, + statusText: { + fontSize: 12, + fontWeight: "600", + }, + rejectionReason: { + fontSize: 12, + color: "#000", + marginTop: 4, + fontStyle: "italic", + }, + adminResponseContainer: { + marginTop: 12, + padding: 10, + backgroundColor: "#f4f4f4", + borderRadius: 8, + borderWidth: 1, + borderColor: "#ddd", + }, + adminResponse: { + fontSize: 14, + fontStyle: "italic", + color: "#555", + }, + imageContainer: { + marginTop: 8, + }, + imageText: { + fontSize: 14, + fontWeight: "bold", + }, + image: { + width: 200, + height: 150, + marginTop: 8, + borderRadius: 8, + }, +}); + +export default StatusPengaduan; diff --git a/screens/ProfilWarga/StatusPengiriman/DetailPengiriman.js b/screens/ProfilWarga/StatusPengiriman/DetailPengiriman.js new file mode 100644 index 0000000..e1eddcd --- /dev/null +++ b/screens/ProfilWarga/StatusPengiriman/DetailPengiriman.js @@ -0,0 +1,265 @@ +import React, { useState } from "react"; +import { + View, + Text, + Image, + StyleSheet, + TouchableOpacity, + Linking, +} from "react-native"; +import { Ionicons } from "@expo/vector-icons"; // Import Ionicons untuk ikon panah + +export default function DetailPengiriman({ route, navigation }) { + const { item } = route.params; // Mendapatkan data item dari navigation params + const [status, setStatus] = useState(item.status); // Menentukan status awal sesuai item + + // Fungsi untuk menangani perubahan status + const handleItemReceived = () => { + setStatus("selesai"); // Mengubah status menjadi selesai + }; + + // Timeline status pengiriman + const statusTimeline = { + diproses: { + title: "Diproses", + time: "23 Januari 2025, 15:12 WIB", + }, + dikirim: { + title: "Dikirim", + time: "24 Januari 2025, 10:00 WIB", + }, + diterima: { + title: "Diterima", + time: "25 Januari 2025, 13:00 WIB", + }, + selesai: { + title: "Selesai", + time: "26 Januari 2025, 17:00 WIB", + }, + }; + const handleContactAdmin = () => { + const phoneNumber = "6287786770760"; // Ganti dengan nomor WhatsApp admin + const message = "Halo Admin, saya ingin menanyakan tentang pengiriman."; // Pesan default yang ingin dikirim + + const url = `whatsapp://send?phone=${phoneNumber}&text=${encodeURIComponent( + message + )}`; + + // Mengecek apakah WhatsApp dapat dibuka + Linking.openURL(url).catch((err) => { + console.error("Error opening WhatsApp:", err); + }); + }; + const currentItem = { + ...item, + statusDetails: + status === "diproses" + ? "Barang sedang diproses oleh kami." + : status === "dikirim" + ? "Barang telah dikirim melalui JNE." + : status === "diterima" + ? "Barang telah diterima, terima kasih telah berbelanja!" + : "Pengiriman selesai. Terima kasih!", + estimatedDate: + status === "diterima" + ? "Tidak ada tanggal estimasi lebih lanjut." + : "Diperkirakan tiba pada 30 Januari 2025.", + }; + + return ( + + + navigation.goBack()} + > + + + DETAIL STATUS PENGIRIMAN + + + {/* Hubungi Admin Button */} + + Hubungi Admin + + + {/* Image */} + + + {/* Product Details */} + + {currentItem.name} + {currentItem.points} + + + {/* Status Progress */} + + Proses Pengiriman + + {Object.keys(statusTimeline).map((step, index) => ( + + {statusTimeline[step].title} + {statusTimeline[step].time} + + ))} + + + + {/* Status Detail */} + + {currentItem.statusDetails} + + + {/* Estimated Delivery */} + + {currentItem.estimatedDate} + + + {/* Shipping Information */} + + Alamat Pengiriman + + Jl. Letjen S. Parman IV Ds. Cangkringan Kab. Nganjuk + + Jasa Pengiriman + JNE + No Resi + 5679032190775 + + + {/* Button to mark the item as received (only for 'Diterima' status) */} + {status === "diterima" && ( + + BARANG DITERIMA + + )} + + ); +} + +const styles = StyleSheet.create({ + container: { + flex: 1, + padding: 16, + backgroundColor: "#fff", + }, + header: { + flexDirection: "row", + alignItems: "center", + marginBottom: 30, + marginTop: 40, + }, + backButton: { + marginRight: 10, + }, + title: { + fontSize: 22, + fontWeight: "bold", + color: "#333", + }, + contactButton: { + backgroundColor: "#4CAF50", + padding: 10, + borderRadius: 5, + marginBottom: 20, + alignItems: "center", + borderRadius: 20, + marginLeft: 120, + marginRight: 120, + }, + contactText: { + color: "#fff", + fontSize: 14, + }, + image: { + width: 100, + height: 100, + alignSelf: "center", + marginBottom: 16, + }, + productInfo: { + alignItems: "center", + marginBottom: 16, + }, + productName: { + fontSize: 18, + fontWeight: "bold", + }, + productPoints: { + fontSize: 14, + color: "#777", + }, + statusContainer: { + marginBottom: 16, + }, + statusTitle: { + fontSize: 16, + fontWeight: "bold", + marginBottom: 8, + }, + statusTimeline: { + flexDirection: "column", + alignItems: "flex-start", + }, + step: { + marginBottom: 12, + }, + activeStep: { + marginBottom: 12, + borderLeftWidth: 4, + borderColor: "#4CAF50", + paddingLeft: 12, + }, + stepText: { + fontSize: 14, + fontWeight: "bold", + }, + time: { + fontSize: 12, + color: "#777", + }, + statusDetail: { + marginBottom: 16, + }, + statusDetails: { + fontSize: 14, + color: "#777", + }, + estimatedDelivery: { + marginBottom: 16, + alignItems: "center", + }, + estimatedText: { + fontSize: 14, + fontStyle: "italic", + }, + shippingInfo: { + marginBottom: 16, + }, + shippingTitle: { + fontSize: 14, + fontWeight: "bold", + }, + shippingDetails: { + fontSize: 14, + marginBottom: 8, + }, + button: { + marginTop: 20, + backgroundColor: "#2f4f2f", + padding: 15, + borderRadius: 10, + alignItems: "center", + }, + buttonText: { + color: "#fff", + fontSize: 16, + fontWeight: "bold", + }, +}); diff --git a/screens/ProfilWarga/StatusPengiriman/StatusPengirimanScreen.js b/screens/ProfilWarga/StatusPengiriman/StatusPengirimanScreen.js new file mode 100644 index 0000000..03566b2 --- /dev/null +++ b/screens/ProfilWarga/StatusPengiriman/StatusPengirimanScreen.js @@ -0,0 +1,285 @@ +import React, { useState, useEffect } from "react"; // Tambahkan useEffect +import { + View, + Text, + TouchableOpacity, + StyleSheet, + Image, + ScrollView, +} from "react-native"; +import { Ionicons } from "@expo/vector-icons"; +import { useNavigation } from "@react-navigation/native"; + +const StatusPengirimanScreen = () => { + const navigation = useNavigation(); + const [selectedButton, setSelectedButton] = useState("diproses"); // Default to 'diproses' + const [selectedStatus, setSelectedStatus] = useState("diproses"); // Default to 'diproses' + + // Data barang + const items = [ + { + id: 1, + name: "Tas Kertas", + time: "10 April 2025 - 14:30", + status: "diproses", + imageUri: require("../../../assets/images/tas2.png"), + }, + { + id: 2, + name: "Botol", + time: "11 April 2025 - 15:00", + status: "dikirim", + imageUri: require("../../../assets/images/botol1.png"), + }, + { + id: 3, + name: "Botol Anak", + time: "12 April 2025 - 16:30", + status: "diterima", + imageUri: require("../../../assets/images/botol2.png"), + }, + ]; + + // Effect untuk men-set status saat pertama kali halaman dibuka + useEffect(() => { + setSelectedButton("diproses"); + setSelectedStatus("diproses"); + }, []); + + const handleButtonClick = (status) => { + setSelectedStatus(status); + setSelectedButton(status); + }; + + // Filter items berdasarkan selected status + const filteredItems = items.filter((item) => item.status === selectedStatus); + + return ( + + {/* Header */} + + navigation.goBack()} + > + + + STATUS PENGIRIMAN + + + {/* Status Buttons */} + + handleButtonClick("diproses")} + > + + + Diproses + + + + handleButtonClick("dikirim")} + > + + + Dikirim + + + + handleButtonClick("diterima")} + > + + + Diterima + + + + + {/* Filtered List of Items Based on Selected Status */} + + {filteredItems.length > 0 ? ( + filteredItems.map((item) => ( + + + + {item.name} + {item.time} + + + + 500 Koin + + + navigation.navigate("DetailPengiriman", { item: item }) + } + > + Lihat Detail + + + + )) + ) : ( + + Tidak ada barang dalam status ini. + + )} + + + ); +}; + +const styles = StyleSheet.create({ + container: { + flex: 1, + backgroundColor: "#f9f9f9", + padding: 20, + }, + header: { + flexDirection: "row", + alignItems: "center", + marginBottom: 30, + marginTop: 30, + }, + backButton: { + marginRight: 10, + }, + title: { + fontSize: 22, + fontWeight: "bold", + color: "#333", + }, + buttonRow: { + flexDirection: "row", + justifyContent: "space-between", + marginBottom: 5, + }, + statusButton: { + flexDirection: "row", + alignItems: "center", + backgroundColor: "#fff", + borderWidth: 1, + borderColor: "#333", + paddingVertical: 10, + paddingHorizontal: 15, + borderRadius: 20, + width: "30%", + justifyContent: "center", + }, + selectedButton: { + backgroundColor: "#2D572C", // Green color for selected button + }, + buttonText: { + marginLeft: 5, + fontSize: 14, + color: "#000", + }, + itemList: { + marginTop: 20, + }, + itemRow: { + flexDirection: "row", + alignItems: "center", + backgroundColor: "#fff", + padding: 15, + marginBottom: 15, + borderRadius: 8, + borderWidth: 1, + borderColor: "#ddd", + }, + itemImage: { + width: 60, + height: 60, + backgroundColor: "#fff", + borderRadius: 5, + }, + itemDetails: { + flex: 1, + marginLeft: 10, + }, + itemName: { + fontSize: 16, + fontWeight: "bold", + color: "#333", + }, + itemTime: { + fontSize: 12, + color: "#555", + marginTop: 5, + }, + itemActions: { + alignItems: "flex-end", + justifyContent: "center", + }, + coinButton: { + backgroundColor: "#2D572C", + paddingVertical: 8, + paddingHorizontal: 15, + borderRadius: 5, + marginBottom: 5, + }, + coinButtonText: { + fontSize: 12, + color: "#fff", + }, + detailButton: { + backgroundColor: "#ddd", + paddingVertical: 8, + paddingHorizontal: 15, + borderRadius: 25, + }, + detailButtonText: { + fontSize: 12, + color: "#333", + }, + noItemsText: { + fontSize: 14, + color: "#888", + textAlign: "center", + marginTop: 20, + }, +}); + +export default StatusPengirimanScreen; diff --git a/screens/SplashScreen.js b/screens/SplashScreen.js new file mode 100644 index 0000000..8052f98 --- /dev/null +++ b/screens/SplashScreen.js @@ -0,0 +1,32 @@ +import React, { useEffect } from "react"; +import { View, Image } from "react-native"; + +const SplashScreen = ({ navigation }) => { + useEffect(() => { + const interval = setTimeout(() => { + // Navigasi ke Onboarding setelah 3 detik + navigation.navigate("Onboarding"); // Nama yang disesuaikan dengan navigator di App.js + }, 1000); + + return () => clearTimeout(interval); // Clear timeout saat komponen unmount + }, [navigation]); + + return ( + + + + ); +}; + +export default SplashScreen; diff --git a/screens/daftar.js b/screens/daftar.js new file mode 100644 index 0000000..937f6a7 --- /dev/null +++ b/screens/daftar.js @@ -0,0 +1,257 @@ +import React, { useState } from "react"; +import { + View, + Text, + TextInput, + TouchableOpacity, + StyleSheet, + ScrollView, + StatusBar, + Image, +} from "react-native"; +import { Ionicons, FontAwesome } from "@expo/vector-icons"; // Import FontAwesome untuk ikon surat +import { useNavigation } from "@react-navigation/native"; + +const Daftar = () => { + const navigation = useNavigation(); + const [email, setEmail] = useState(""); + const [name, setName] = useState(""); + const [phone, setPhone] = useState(""); + const [password, setPassword] = useState(""); + const [confirmPassword, setConfirmPassword] = useState(""); + const [showPassword, setShowPassword] = useState(false); + const [showConfirmPassword, setShowConfirmPassword] = useState(false); + + return ( + + + + + + {/* Tombol Kembali */} + navigation.navigate("AksesAkun")} + style={{ width: 45, height: 45, marginRight: 13 }} + > + + + + + + + + Haloo, Ecomapper, + + + Daftar Sekarang! + + + + + + Email + + + + + + Nama + + + + + + No HP + + + + + + Kata Sandi + + + + setShowPassword(!showPassword)} + style={styles.eyeIcon} + > + + + + + Konfirmasi Kata Sandi + + + + setShowConfirmPassword(!showConfirmPassword)} + style={styles.eyeIcon} + > + + + + + console.log("Daftar Submit")} + onPress={() => navigation.navigate("DaftarBerhasil")} + > + Daftar + + + {/* "Masuk" Text */} + + + Sudah punya akun?{" "} + navigation.navigate("AksesAkun")}> + Masuk + + + + + + ); +}; + +const styles = StyleSheet.create({ + formContainer: { + paddingHorizontal: 30, + marginTop: 30, + marginBottom: 30, + }, + label: { + fontSize: 16, + marginBottom: 10, + color: "#333", + }, + inputContainer: { + flexDirection: "row", + alignItems: "center", + borderColor: "#ddd", + borderWidth: 1, + borderRadius: 5, + marginBottom: 20, + }, + input: { + flex: 1, + height: 45, + paddingLeft: 10, + }, + icon: { + paddingLeft: 10, + }, + passwordContainer: { + flexDirection: "row", + alignItems: "center", + borderColor: "#ddd", + height: 45, + borderWidth: 1, + borderRadius: 5, + marginBottom: 20, + }, + passwordInput: { + flex: 1, + height: 45, + paddingLeft: 10, + }, + eyeIcon: { + paddingRight: 10, + }, + button: { + backgroundColor: "#2D572C", + paddingVertical: 15, + borderRadius: 5, + marginTop: 20, + }, + buttonText: { + textAlign: "center", + color: "#fff", + fontSize: 16, + fontWeight: "bold", + }, + loginContainer: { + marginTop: 15, + alignItems: "center", + }, + loginText: { + fontSize: 16, + color: "#333", + marginBottom: 10, + }, + loginLink: { + color: "#2D572C", + fontWeight: "bold", + // marginBottom: 20, + }, +}); + +export default Daftar; diff --git a/screens/daftarTPS.js b/screens/daftarTPS.js new file mode 100644 index 0000000..4c1d315 --- /dev/null +++ b/screens/daftarTPS.js @@ -0,0 +1,338 @@ +import React, { useState } from "react"; +import { + View, + Text, + StyleSheet, + TextInput, + TouchableOpacity, + ScrollView, + Linking, +} from "react-native"; +import { Ionicons } from "@expo/vector-icons"; // Import Expo icons +import { useNavigation } from "@react-navigation/native"; + +const tpsData = [ + { + nama: "TPS SENGKUT", + kecamatan: "BERBEK", + alamat: "Desa Werungotok, Kec. Nganjuk", + jenis: "Depo Kecil", + luas: "1,5 x 1,5", + volume: "3.375 m3", + latitude: -7.6141, + longitude: 111.5177, + }, + { + nama: "TPS NGRONGGOT", + kecamatan: "BERBEK", + alamat: "Desa Werungotok, Kec. Nganjuk", + jenis: "Depo Kecil", + luas: "1,5 x 1,5", + volume: "3.375 m3", + }, + + { + nama: "TPS 3R MASTRIP", + kecamatan: "NGANJUK", + alamat: "Desa Mangundikaran, Kec. Nganjuk", + jenis: "TPS 3R", + luas: "2 x 2", + volume: "5 m3", + latitude: -6.6, + longitude: 106.8, + }, + { + nama: "TPS 3R KARTOHARJO", + kecamatan: "NGANJUK", + alamat: "Desa Kartoharjo, Kec. Nganjuk", + jenis: "TPS 3R", + luas: "2 x 2", + volume: "5 m3", + latitude: -7.25, + longitude: 112.75, + }, + { + nama: "TPS 3R KSM GANUNGKIDUL", + kecamatan: "NGANJUK", + alamat: "Desa Ganungkidul, Kec. Nganjuk", + jenis: "TPS 3R KSM", + luas: "3 x 3", + volume: "7.5 m3", + latitude: -6.175, + longitude: 106.8272, + }, + { + nama: "TPS 3R KSM PAYAMAN", + kecamatan: "NGANJUK", + alamat: "Desa Payaman, Kec. Nganjuk", + jenis: "TPS 3R KSM", + luas: "3 x 3", + volume: "7.5 m3", + latitude: -6.175, + longitude: 106.8272, + }, + { + nama: "TPS 3R KSM JATIREJO", + kecamatan: "NGANJUK", + alamat: "Desa Jatirejo, Kec. Nganjuk", + jenis: "TPS 3R KSM", + luas: "3 x 3", + volume: "7.5 m3", + latitude: -6.175, + longitude: 106.8272, + }, +]; + +const DaftarTPS = () => { + const navigation = useNavigation(); + const [search, setSearch] = useState(""); + const [activeCategory, setActiveCategory] = useState("TPS"); + + const filteredTPS = tpsData.filter( + (tps) => + tps.nama.toLowerCase().includes(search.toLowerCase()) && + (activeCategory === "TPS" || tps.jenis === activeCategory) + ); + + const openInMaps = (latitude, longitude) => { + const url = `https://www.google.com/maps/search/?api=1&query=${latitude},${longitude}`; + Linking.openURL(url); + }; + + return ( + + + navigation.navigate("Home")} + > + + + DAFTAR TPS DI NGANJUK + + + {/* Button for categories */} + + setActiveCategory("TPS")} + > + + TPS + + + setActiveCategory("TPS 3R")} + > + + TPS 3R + + + setActiveCategory("TPS 3R KSM")} + > + + TPS 3R KSM + + + + + + + + + + + + + {filteredTPS.map((tps, index) => ( + + + + LUAS TPS + {tps.luas} + + + {tps.nama} + KECAMATAN {tps.kecamatan} + + + VOLUME MAKSIMAL + {tps.volume} + + + + + + + Alamat + openInMaps(tps.latitude, tps.longitude)} + > + LOKASI + + + {tps.alamat} + + + + Jenis + + {tps.jenis} + + + ))} + + + ); +}; + +const styles = StyleSheet.create({ + container: { + flex: 1, + backgroundColor: "#fff", + padding: 16, + marginBottom: 0, + marginTop: -40, + }, + header: { + flexDirection: "row", + alignItems: "center", + justifyContent: "space-between", + marginBottom: 10, + marginTop: 70, + }, + backButton: { marginBottom: 10 }, + title: { + fontSize: 22, + fontWeight: "bold", + color: "#000", + textAlign: "left", + marginBottom: 12, + marginLeft: 20, + marginRight: 230, + }, + categoryButtonsContainer: { + flexDirection: "row", + marginBottom: 15, + }, + categoryButton: { + flex: 1, + paddingVertical: 10, + marginRight: 8, + borderRadius: 15, + backgroundColor: "white", + borderWidth: 1, + borderColor: "#2D572C", + alignItems: "center", + justifyContent: "center", + }, + activeButton: { + backgroundColor: "#2D572C", + }, + buttonText: { + color: "#2D572C", + fontWeight: "bold", + }, + activeButtonText: { + color: "white", // Change text color to white when the button is active + }, + searchContainer: { + flexDirection: "row", + alignItems: "center", + marginBottom: 10, + }, + input: { + flex: 1, + borderWidth: 1, + borderColor: "#999", + borderRadius: 10, + padding: 10, + marginBottom: 10, + }, + searchButton: { + backgroundColor: "#E0E0E0", + padding: 10, + marginLeft: 8, + borderRadius: 8, + }, + card: { + borderRadius: 12, + marginBottom: 20, + borderColor: "#000", + borderWidth: 1, + overflow: "hidden", + shadowColor: "#000", + shadowOpacity: 0.1, + shadowRadius: 5, + backgroundColor: "#fff", + elevation: 3, + }, + cardHeader: { + backgroundColor: "#2D572C", + padding: 10, + flexDirection: "row", + alignItems: "center", + }, + label: { color: "white", fontSize: 11 }, + value: { color: "white", fontWeight: "bold" }, + tpsName: { + color: "white", + fontSize: 16, + fontWeight: "bold", + justifyContent: "center", + marginLeft: 40, + }, + kecamatan: { color: "white", fontSize: 12, marginLeft: 40 }, + labelSmall: { fontSize: 10, color: "white", textAlign: "right" }, + volume: { fontSize: 14, color: "white", fontWeight: "bold" }, + cardContent: { padding: 12 }, + infoRow: { flexDirection: "row", alignItems: "center", gap: 4 }, + infoText: { fontWeight: "bold", marginLeft: 8 }, + subInfo: { marginLeft: 30, fontSize: 13 }, + lokasiButton: { + backgroundColor: "#F0F0F0", + paddingVertical: 8, + paddingHorizontal: 14, + borderRadius: 8, + shadowColor: "#000", + shadowOpacity: 0.1, + elevation: 2, + marginLeft: 220, + borderWidth: 1, + }, +}); + +export default DaftarTPS; diff --git a/screens/masuk.js b/screens/masuk.js new file mode 100644 index 0000000..8ddb90b --- /dev/null +++ b/screens/masuk.js @@ -0,0 +1,189 @@ +// import React, { useState } from "react"; +// import { +// View, +// Text, +// TextInput, +// TouchableOpacity, +// StyleSheet, +// ScrollView, +// StatusBar, +// Image, +// } from "react-native"; +// import { Ionicons, FontAwesome } from "@expo/vector-icons"; +// import { useNavigation } from "@react-navigation/native"; + +// const Masuk = () => { +// const navigation = useNavigation(); +// const [role, setRole] = useState(null); // null, "warga", atau "admin" +// const [email, setEmail] = useState(""); +// const [password, setPassword] = useState(""); +// const [showPassword, setShowPassword] = useState(false); + +// // Fungsi handle login sesuai role +// const handleLogin = () => { +// if (role === "warga") { +// navigation.navigate("AksesWargaNavigator", { screen: "Home" }); +// } else if (role === "admin") { +// navigation.navigate("AdminHome"); +// } +// }; + +// return ( +// +// + +// +// navigation.navigate("AksesAkun")} +// style={{ width: 45, height: 45, marginBottom: 10 }} +// > +// +// + +// +// +// +// Selamat Datang Ecomapper! +// +// + +// {/* Form login muncul kalau role sudah dipilih */} +// {role && ( +// +// +// Masuk sebagai {role} +// + +// Email +// +// +// +// + +// Kata Sandi +// +// +// +// setShowPassword(!showPassword)} +// style={styles.eyeIcon} +// > +// +// +// + +// +// Masuk +// + +// {/* Tombol kembali untuk pilih ulang role */} +// setRole(null)} +// style={{ marginTop: 15, alignItems: "center" }} +// > +// +// Pilih ulang peran +// +// +// +// )} +// +// +// ); +// }; + +// const styles = StyleSheet.create({ +// formContainer: { +// marginTop: 20, +// }, +// label: { +// fontSize: 18, +// marginBottom: 10, +// color: "#333", +// }, +// inputContainer: { +// flexDirection: "row", +// alignItems: "center", +// borderColor: "#ddd", +// borderWidth: 1, +// borderRadius: 5, +// marginBottom: 20, +// }, +// input: { +// flex: 1, +// height: 45, +// paddingLeft: 10, +// }, +// icon: { +// paddingLeft: 10, +// }, +// passwordContainer: { +// flexDirection: "row", +// alignItems: "center", +// borderColor: "#ddd", +// height: 45, +// borderWidth: 1, +// borderRadius: 5, +// marginBottom: 20, +// }, +// passwordInput: { +// flex: 1, +// height: 45, +// paddingLeft: 10, +// }, +// eyeIcon: { +// paddingRight: 10, +// }, +// button: { +// backgroundColor: "#2D572C", +// paddingVertical: 15, +// borderRadius: 5, +// marginTop: 10, +// }, +// buttonText: { +// textAlign: "center", +// color: "#fff", +// fontSize: 16, +// fontWeight: "bold", +// }, +// }); + +// export default Masuk; diff --git a/screens/password/InputContact.js b/screens/password/InputContact.js new file mode 100644 index 0000000..78c9a6b --- /dev/null +++ b/screens/password/InputContact.js @@ -0,0 +1,141 @@ +import React, { useState } from "react"; +import { + View, + Text, + TextInput, + TouchableOpacity, + StyleSheet, + Alert, +} from "react-native"; +import { Ionicons } from "@expo/vector-icons"; // Import Ionicons untuk ikon + +export default function InputContact({ route, navigation }) { + const { method } = route.params; // Mendapatkan 'method' yang diteruskan dari halaman sebelumnya + const [contactInfo, setContactInfo] = useState(""); // Input untuk nomor WhatsApp atau email + + const handleSubmit = async () => { + // Validasi input berdasarkan metode + if (!contactInfo) { + Alert.alert( + "Peringatan", + "Nomor WhatsApp atau Email tidak boleh kosong!" + ); + return; + } + + if (method === "whatsapp" && !/^\d+$/.test(contactInfo)) { + Alert.alert("Peringatan", "Masukkan nomor WhatsApp yang valid!"); + return; + } + + if (method === "email" && !/\S+@\S+\.\S+/.test(contactInfo)) { + Alert.alert("Peringatan", "Masukkan email yang valid!"); + return; + } + + try { + // Kirim nomor WhatsApp atau email ke API untuk verifikasi (sesuaikan dengan backend) + // await sendContactInfo(contactInfo, method); + + // Navigasi ke halaman verifikasi kode + navigation.navigate("VerifyCode"); // Pastikan halaman "VerifyCode" sudah terdaftar dalam navigator + } catch (error) { + Alert.alert("Error", "Terjadi kesalahan saat mengirim data."); + } + }; + + return ( + + {/* Header dengan tombol kembali */} + + navigation.goBack()} + style={styles.backButton} + > + + + + LUPA KATA SANDI + + + + + Masukkan {method === "whatsapp" ? "Nomor WhatsApp" : "Email"} + + + + + navigation.navigate("VerifyCode")} + > + KIRIM KODE + + + ); +} + +const styles = StyleSheet.create({ + container: { + flex: 1, + justifyContent: "flex-start", + alignItems: "center", + backgroundColor: "#FFF", + }, + header: { + flexDirection: "row", + alignItems: "center", + justifyContent: "flex-start", + width: "100%", + padding: 10, + backgroundColor: "#FFF", + borderBottomWidth: 0, + borderBottomColor: "#e0e0e0", + marginTop: 30, + }, + backButton: { + padding: 10, + }, + headerTextContainer: { + flex: 1, + alignItems: "flex-start", + justifyContent: "center", + }, + title: { + fontSize: 20, + fontWeight: "bold", + color: "#000", + }, + subtitle: { + fontSize: 16, + marginVertical: 20, + color: "#8e8e8e", + }, + input: { + width: "90%", + padding: 15, + marginBottom: 20, + borderWidth: 1, + borderRadius: 15, + borderColor: "#8e8e8e", + fontSize: 16, + }, + button: { + width: "90%", + padding: 15, + backgroundColor: "#2D572C", // Warna hijau untuk tombol kirim + alignItems: "center", + borderRadius: 15, + }, + buttonText: { + color: "#fff", + fontSize: 16, + fontWeight: "bold", + }, +}); diff --git a/screens/password/VerifyCode.js b/screens/password/VerifyCode.js new file mode 100644 index 0000000..16188c6 --- /dev/null +++ b/screens/password/VerifyCode.js @@ -0,0 +1,140 @@ +import React, { useState } from "react"; +import { + View, + Text, + TextInput, + TouchableOpacity, + StyleSheet, + Alert, +} from "react-native"; +import { Ionicons } from "@expo/vector-icons"; // Import Ionicons untuk ikon + +export default function VerifyCode({ navigation }) { + const [verificationCode, setVerificationCode] = useState(""); // Input untuk kode verifikasi + + const handleSubmit = async () => { + if (!verificationCode) { + Alert.alert("Peringatan", "Kode verifikasi tidak boleh kosong!"); + return; + } + + // Validasi kode verifikasi (ini hanya contoh, sesuaikan dengan backend) + if (verificationCode !== "123456") { + // Asumsikan kode valid adalah "123456" + Alert.alert("Peringatan", "Kode verifikasi salah!"); + return; + } + + try { + // Lanjutkan proses setelah verifikasi kode (misalnya, reset password) + navigation.navigate("ResetPassword"); // Ganti dengan halaman yang sesuai, seperti halaman reset password + } catch (error) { + Alert.alert("Error", "Terjadi kesalahan saat memverifikasi kode."); + } + }; + + return ( + + {/* Header dengan tombol kembali */} + + navigation.goBack()} + style={styles.backButton} + > + + + + KODE VERIFIKASI + + + + {/* Subtitle */} + + Masukkan kode verifikasi yang telah dikirim + + + {/* Input untuk kode verifikasi */} + + + {/* Tombol Verifikasi */} + navigation.navigate("notifikasisukses")} + > + KIRIM + + + ); +} + +const styles = StyleSheet.create({ + container: { + flex: 1, + justifyContent: "flex-start", + alignItems: "center", + backgroundColor: "#FFF", + padding: 0, + }, + header: { + flexDirection: "row", + alignItems: "center", + justifyContent: "flex-start", + width: "100%", + padding: 10, + backgroundColor: "#FFF", + borderBottomWidth: 0, + borderBottomColor: "#FFFS", + marginTop: 30, + }, + backButton: { + padding: 10, + }, + headerTextContainer: { + flex: 1, + alignItems: "flex-start", + justifyContent: "center", + }, + title: { + fontSize: 20, + fontWeight: "bold", + color: "#000", + }, + subtitle: { + fontSize: 16, + marginVertical: 20, + color: "#8e8e8e", + textAlign: "center", + paddingHorizontal: 10, + }, + input: { + width: "90%", + padding: 15, + marginBottom: 20, + borderWidth: 1, + borderRadius: 15, + borderColor: "#BBBBBB", + fontSize: 16, + textAlign: "center", + backgroundColor: "#f9f9f9", // Light background for the input + }, + button: { + width: "90%", + padding: 15, + backgroundColor: "#2D572C", // Green color for submit button + alignItems: "center", + borderRadius: 15, + }, + buttonText: { + color: "#fff", + fontSize: 16, + fontWeight: "bold", + }, +}); diff --git a/screens/password/lupasandi.js b/screens/password/lupasandi.js new file mode 100644 index 0000000..56c4533 --- /dev/null +++ b/screens/password/lupasandi.js @@ -0,0 +1,98 @@ +// ResetSandi.js (Halaman Pemilihan Metode) + +import React, { useState } from "react"; +import { View, Text, TouchableOpacity, StyleSheet } from "react-native"; +import { Ionicons } from "@expo/vector-icons"; // Import Ionicons untuk ikon + +export default function lupasandi({ navigation }) { + const [method, setMethod] = useState(null); // Untuk menyimpan metode yang dipilih (email atau wa) + + // Fungsi untuk menavigasi ke halaman berikutnya dengan parameter 'method' + const handleNavigate = (method) => { + setMethod(method); + navigation.navigate("InputContact", { method }); // Mengirim 'method' ke halaman berikutnya + }; + + return ( + + {/* Header dengan tombol kembali */} + + navigation.goBack()} + style={styles.backButton} + > + + + + LUPA KATA SANDI + + + + {/* Pilih Metode Pengiriman */} + handleNavigate("whatsapp")} + > + NO WHATSAPP + + + handleNavigate("email")} + > + EMAIL + + + ); +} + +const styles = StyleSheet.create({ + container: { + flex: 1, + justifyContent: "flex-start", + alignItems: "center", + backgroundColor: "#FFF", + }, + header: { + flexDirection: "row", + alignItems: "center", + justifyContent: "flex-start", + width: "100%", + padding: 10, + backgroundColor: "#FFF", + borderBottomWidth: 1, + borderBottomColor: "#e0e0e0", + }, + backButton: { + padding: 10, + }, + headerTextContainer: { + flex: 1, + alignItems: "flex-start", + justifyContent: "center", + }, + title: { + fontSize: 20, + fontWeight: "bold", + color: "#000", + }, + button: { + width: "90%", + padding: 15, + marginBottom: 15, + borderWidth: 1, + borderRadius: 15, + alignItems: "center", + justifyContent: "center", + borderColor: "#8e8e8e", + }, + buttonText: { + fontSize: 16, + fontWeight: "600", + color: "#000", + }, + selectedButton: { + backgroundColor: "#e0e0e0", // Warna latar belakang ketika dipilih + borderColor: "#b0b0b0", + }, +}); diff --git a/screens/password/notifikasisukses.js b/screens/password/notifikasisukses.js new file mode 100644 index 0000000..97275de --- /dev/null +++ b/screens/password/notifikasisukses.js @@ -0,0 +1,78 @@ +import React from "react"; +import { View, Text, Button, StyleSheet, TouchableOpacity } from "react-native"; +import { MaterialCommunityIcons } from "@expo/vector-icons"; + +const notifikasisukses = ({ navigation }) => { + return ( + + + + Reset Kata Sandi Berhasil ! + + + Terima kasih telah Reset Kata Sandi EcoMap! + + {/* Silahkan Masuk */} + console.log("Daftar Submit")} + onPress={() => navigation.navigate("AksesAkun")} + > + MASUK + + + + ); +}; + +const styles = StyleSheet.create({ + container: { + flex: 1, + justifyContent: "center", + alignItems: "center", + backgroundColor: "#435739", + }, + content: { + justifyContent: "center", + alignItems: "center", + backgroundColor: "#435739", // Transparansi gelap untuk efek overlay + padding: 30, + borderRadius: 15, + width: "80%", + alignItems: "center", + }, + title: { + fontSize: 24, + fontWeight: "bold", + color: "#fff", + marginTop: 0, + }, + message: { + fontSize: 16, + color: "#fff", + textAlign: "center", + marginTop: 10, + }, + subMessage: { + fontSize: 15, + color: "#fff", + textAlign: "center", + marginTop: 10, + padding: 3, + }, + button: { + backgroundColor: "#fff", + paddingVertical: 10, + paddingHorizontal: 40, + borderRadius: 5, + marginTop: 20, + borderRadius: 25, + fontWeight: "bold", + }, + buttonText: { + fontWeight: "bold", + fontSize: 15, + }, +}); + +export default notifikasisukses;