From 46aede5804c1aa501baa9415f89c1189896bee88 Mon Sep 17 00:00:00 2001 From: Mac Date: Fri, 23 May 2025 17:43:06 +0800 Subject: [PATCH] wave --- FINAL_REDIRECT_FIX.md | 1 + app.json | 6 +- .../BalanceScreen/PhoneNumberInputModal.tsx | 4 +- app/screens/ProfileScreen.tsx | 4 + app/screens/banner/ShippingDetailsSection.tsx | 1248 +++++++++-------- app/screens/loginList/index.tsx | 76 +- app/screens/pay/Pay.tsx | 135 +- app/screens/previewOrder/perviewOrder.tsx | 80 +- app/screens/productStatus/OrderDatails.tsx | 4 + app/services/api/apiClient.ts | 12 + app/services/api/payApi.ts | 57 +- package-lock.json | 96 +- package.json | 2 + yarn.lock | 552 +++++--- 14 files changed, 1335 insertions(+), 942 deletions(-) create mode 100644 FINAL_REDIRECT_FIX.md diff --git a/FINAL_REDIRECT_FIX.md b/FINAL_REDIRECT_FIX.md new file mode 100644 index 0000000..0519ecb --- /dev/null +++ b/FINAL_REDIRECT_FIX.md @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/app.json b/app.json index bf3a7eb..fe98d61 100644 --- a/app.json +++ b/app.json @@ -7,7 +7,7 @@ "icon": "./assets/icon.png", "userInterfaceStyle": "light", "newArchEnabled": true, - "scheme": "myapp", + "scheme": "brainnelapp", "owner":"brainnel", "deepLinking": true, "splash": { @@ -22,7 +22,7 @@ "CFBundleURLTypes": [ { "CFBundleURLSchemes": [ - "myapp" + "brainnelapp" ] } ] @@ -43,7 +43,7 @@ "action": "VIEW", "data": [ { - "scheme": "myapp" + "scheme": "brainnelapp" } ], "category": [ diff --git a/app/screens/BalanceScreen/PhoneNumberInputModal.tsx b/app/screens/BalanceScreen/PhoneNumberInputModal.tsx index 80c305e..512a812 100644 --- a/app/screens/BalanceScreen/PhoneNumberInputModal.tsx +++ b/app/screens/BalanceScreen/PhoneNumberInputModal.tsx @@ -35,7 +35,7 @@ interface PhoneNumberInputModalProps { } type RootStackParamList = { - Pay: { payUrl: string }; + Pay: { payUrl: string, method: string, order_id: string }; } const PhoneNumberInputModal = ({ @@ -87,6 +87,8 @@ const PhoneNumberInputModal = ({ navigation.navigate("Pay", { payUrl: res.payment.payment_url, + method: paymentParams.payment_method, + order_id: res.payment.order_id.toString(), }); setIsSubmitting(false) diff --git a/app/screens/ProfileScreen.tsx b/app/screens/ProfileScreen.tsx index 61a9516..790627d 100644 --- a/app/screens/ProfileScreen.tsx +++ b/app/screens/ProfileScreen.tsx @@ -41,9 +41,13 @@ type RootStackParamList = { }; export const ProfileScreen = () => { + + const handleLogin = async () => { navigation.navigate("Login"); }; + + const { user } = useUserStore(); const { t } = useTranslation(); diff --git a/app/screens/banner/ShippingDetailsSection.tsx b/app/screens/banner/ShippingDetailsSection.tsx index d872d00..8100ea3 100644 --- a/app/screens/banner/ShippingDetailsSection.tsx +++ b/app/screens/banner/ShippingDetailsSection.tsx @@ -1,644 +1,654 @@ -import React, { useState, useEffect } from 'react'; -import { View, Text, Image, TouchableOpacity, StyleSheet, ImageBackground, ActivityIndicator, SafeAreaView, StatusBar, Platform, Modal, TextInput, FlatList } from 'react-native'; -import BackIcon from '../../components/BackIcon'; -import fontSize from '../../utils/fontsizeUtils'; -import widthUtils from '../../utils/widthUtils'; -import { useNavigation } from '@react-navigation/native'; -import { NativeStackNavigationProp } from '@react-navigation/native-stack'; -import { settingApi } from '../../services/api/setting'; -import { CountryList } from '../../constants/countries'; -import { useTranslation } from 'react-i18next'; +// import React, { useState, useEffect } from 'react'; +// import { View, Text, Image, TouchableOpacity, StyleSheet, ImageBackground, ActivityIndicator, SafeAreaView, StatusBar, Platform, Modal, TextInput, FlatList } from 'react-native'; +// import BackIcon from '../../components/BackIcon'; +// import fontSize from '../../utils/fontsizeUtils'; +// import widthUtils from '../../utils/widthUtils'; +// import { useNavigation } from '@react-navigation/native'; +// import { NativeStackNavigationProp } from '@react-navigation/native-stack'; +// import { settingApi } from '../../services/api/setting'; +// import { CountryList } from '../../constants/countries'; +// import { useTranslation } from 'react-i18next'; -// Pre-require images to avoid dynamic require issues -const MARITIME_BACKGROUND = require('../../../assets/img/image_f67fe9bc.png'); -const AIRWAY_BACKGROUND = require('../../../assets/img/feijiback.png'); +// // Pre-require images to avoid dynamic require issues +// const MARITIME_BACKGROUND = require('../../../assets/img/image_f67fe9bc.png'); +// const AIRWAY_BACKGROUND = require('../../../assets/img/feijiback.png'); -type RootStackParamList = { - Home: undefined; - ShippingDetails: undefined; - Main: undefined; - // Add other screens as needed -}; +// type RootStackParamList = { +// Home: undefined; +// ShippingDetails: undefined; +// Main: undefined; +// // Add other screens as needed +// }; -type NavigationProp = NativeStackNavigationProp; +// type NavigationProp = NativeStackNavigationProp; -export const ShippingDetailsSection = () => { - const { t } = useTranslation(); - const [shippingMethod, setShippingMethod] = useState('maritime'); // 'maritime' or 'airway' - const [isLoading, setIsLoading] = useState(true); - const [showCountryModal, setShowCountryModal] = useState(false); - const [countries, setCountries] = useState([]); - const [selectedCountry, setSelectedCountry] = useState(null); - const [parcelVolume, setParcelVolume] = useState(''); - const [isCalculating, setIsCalculating] = useState(false); - const [showResultModal, setShowResultModal] = useState(false); - const [shippingFee, setShippingFee] = useState(null); - const [shippingCurrency, setShippingCurrency] = useState(''); - const navigation = useNavigation(); +// export const ShippingDetailsSection = () => { +// const { t } = useTranslation(); +// const [shippingMethod, setShippingMethod] = useState('maritime'); // 'maritime' or 'airway' +// const [isLoading, setIsLoading] = useState(true); +// const [showCountryModal, setShowCountryModal] = useState(false); +// const [countries, setCountries] = useState([]); +// const [selectedCountry, setSelectedCountry] = useState(null); +// const [parcelVolume, setParcelVolume] = useState(''); +// const [isCalculating, setIsCalculating] = useState(false); +// const [showResultModal, setShowResultModal] = useState(false); +// const [shippingFee, setShippingFee] = useState(null); +// const [shippingCurrency, setShippingCurrency] = useState(''); +// const navigation = useNavigation(); - useEffect(() => { - const preloadImages = async () => { - try { - await Promise.all([ - Image.prefetch(Image.resolveAssetSource(MARITIME_BACKGROUND).uri), - Image.prefetch(Image.resolveAssetSource(AIRWAY_BACKGROUND).uri) - ]); - setIsLoading(false); - } catch (error) { - console.error('Error preloading images:', error); - setIsLoading(false); - } - }; +// useEffect(() => { +// const preloadImages = async () => { +// try { +// await Promise.all([ +// Image.prefetch(Image.resolveAssetSource(MARITIME_BACKGROUND).uri), +// Image.prefetch(Image.resolveAssetSource(AIRWAY_BACKGROUND).uri) +// ]); +// setIsLoading(false); +// } catch (error) { +// console.error('Error preloading images:', error); +// setIsLoading(false); +// } +// }; - const fetchCountries = async () => { - try { - const response = await settingApi.getCountryList(); - setCountries(response); - } catch (error) { - console.error('Error fetching countries:', error); - } - }; +// const fetchCountries = async () => { +// try { +// const response = await settingApi.getCountryList(); +// setCountries(response); +// } catch (error) { +// console.error('Error fetching countries:', error); +// } +// }; - preloadImages(); - fetchCountries(); - }, []); +// preloadImages(); +// fetchCountries(); +// }, []); - const handleShippingMethodChange = (method: 'maritime' | 'airway') => { - setShippingMethod(method); - }; +// const handleShippingMethodChange = (method: 'maritime' | 'airway') => { +// setShippingMethod(method); +// }; - const handleCountrySelect = (country: CountryList) => { - setSelectedCountry(country); - setShowCountryModal(false); - }; +// const handleCountrySelect = (country: CountryList) => { +// setSelectedCountry(country); +// setShowCountryModal(false); +// }; - // Get background image based on shipping method - const getBackgroundImage = () => { - return shippingMethod === 'maritime' - ? MARITIME_BACKGROUND - : AIRWAY_BACKGROUND; - }; +// // Get background image based on shipping method +// const getBackgroundImage = () => { +// return shippingMethod === 'maritime' +// ? MARITIME_BACKGROUND +// : AIRWAY_BACKGROUND; +// }; - const handleCalculateShipping = async () => { - if (!selectedCountry || !parcelVolume) { - // TODO: Show error message - return; - } +// const handleCalculateShipping = async () => { +// if (!selectedCountry || !parcelVolume) { +// // TODO: Show error message +// return; +// } - setIsCalculating(true); - try { - const volume = parseFloat(parcelVolume); - if (isNaN(volume)) { - // TODO: Show error message for invalid input - return; - } +// setIsCalculating(true); +// try { +// const volume = parseFloat(parcelVolume); +// if (isNaN(volume)) { +// // TODO: Show error message for invalid input +// return; +// } - const shippingData = { - weight_kg: shippingMethod === 'airway' ? volume : 0, - volume_m3: shippingMethod === 'maritime' ? volume : 0, - country_code: selectedCountry.country - }; +// const shippingData = { +// weight_kg: shippingMethod === 'airway' ? volume : 0, +// volume_m3: shippingMethod === 'maritime' ? volume : 0, +// country_code: selectedCountry.country +// }; - const response = await settingApi.getShippingFee(shippingData); - const fee = shippingMethod === 'maritime' - ? response.estimated_shipping_fee_sea - : response.estimated_shipping_fee_air; - setShippingFee(fee); - setShippingCurrency(response.currency); - setShowResultModal(true); - } catch (error) { - console.error('Error calculating shipping fee:', error); - // TODO: Show error message - } finally { - setIsCalculating(false); - } - }; +// const response = await settingApi.getShippingFee(shippingData); +// const fee = shippingMethod === 'maritime' +// ? response.estimated_shipping_fee_sea +// : response.estimated_shipping_fee_air; +// setShippingFee(fee); +// setShippingCurrency(response.currency); +// setShowResultModal(true); +// } catch (error) { +// console.error('Error calculating shipping fee:', error); +// // TODO: Show error message +// } finally { +// setIsCalculating(false); +// } +// }; - const renderCountryItem = ({ item }: { item: CountryList }) => ( - handleCountrySelect(item)} - > - {item.name} - {selectedCountry?.country === item.country && ( - - )} - - ); +// const renderCountryItem = ({ item }: { item: CountryList }) => ( +// handleCountrySelect(item)} +// > +// {item.name} +// {selectedCountry?.country === item.country && ( +// +// )} +// +// ); - const renderResultModal = () => ( - setShowResultModal(false)} - > - - - {t('banner.shipping.calculation_result')} - - {t('banner.shipping.estimated_fee')}: {shippingFee?.toFixed(2)} {shippingCurrency} - - setShowResultModal(false)} - > - {t('banner.shipping.confirm')} - - - - - ); +// const renderResultModal = () => ( +// setShowResultModal(false)} +// > +// +// +// {t('banner.shipping.calculation_result')} +// +// {t('banner.shipping.estimated_fee')}: {shippingFee?.toFixed(2)} {shippingCurrency} +// +// setShowResultModal(false)} +// > +// {t('banner.shipping.confirm')} +// +// +// +// +// ); - return ( - - - - {isLoading ? ( - - - - ) : ( - - - - - - { - navigation.goBack(); - }} - > - - - - {t('banner.shipping.fee')} - - +// return ( +// +// +// +// {isLoading ? ( +// +// +// +// ) : ( +// +// +// +// +// +// { +// navigation.goBack(); +// }} +// > +// +// +// +// {t('banner.shipping.fee')} +// +// + +// {/* Calculator Form */} +// +// +// {/* Shipping Method Selection */} +// +// {/* Maritime Option */} +// handleShippingMethodChange('maritime')} +// > +// +// +// +// {t('banner.shipping.maritime')} +// - {/* Calculator Form */} - - - {/* Shipping Method Selection */} - - {/* Maritime Option */} - handleShippingMethodChange('maritime')} - > - - - - {t('banner.shipping.maritime')} - +// {/* Airway Option */} +// handleShippingMethodChange('airway')} +// > +// +// +// +// {t('banner.shipping.airway')} +// +// - {/* Airway Option */} - handleShippingMethodChange('airway')} - > - - - - {t('banner.shipping.airway')} - - +// {/* Parcel Volume Form */} +// +// {/* Country Selection */} +// +// {t('banner.shipping.select_country')} +// setShowCountryModal(true)} +// > +// +// {selectedCountry ? selectedCountry.name : t('banner.shipping.select_country')} +// +// +// - {/* Parcel Volume Form */} - - {/* Country Selection */} - - {t('banner.shipping.select_country')} - setShowCountryModal(true)} - > - - {selectedCountry ? selectedCountry.name : t('banner.shipping.select_country')} - - - +// {/* Parcel Volume Input */} +// +// {t('banner.shipping.parcel_volume')} +// +// { +// // 只允许输入数字和小数点 +// const numericValue = text.replace(/[^0-9.]/g, ''); +// // 确保只有一个小数点 +// const parts = numericValue.split('.'); +// if (parts.length > 2) { +// setParcelVolume(parts[0] + '.' + parts.slice(1).join('')); +// } else { +// setParcelVolume(numericValue); +// } +// }} +// placeholder={t('banner.shipping.enter_parcel_volume')} +// keyboardType="decimal-pad" +// placeholderTextColor="#807e7e" +// /> +// +// {shippingMethod === 'maritime' ? 'm³' : 'kg'} +// +// +// +// - {/* Parcel Volume Input */} - - {t('banner.shipping.parcel_volume')} - - { - // 只允许输入数字和小数点 - const numericValue = text.replace(/[^0-9.]/g, ''); - // 确保只有一个小数点 - const parts = numericValue.split('.'); - if (parts.length > 2) { - setParcelVolume(parts[0] + '.' + parts.slice(1).join('')); - } else { - setParcelVolume(numericValue); - } - }} - placeholder={t('banner.shipping.enter_parcel_volume')} - keyboardType="decimal-pad" - placeholderTextColor="#807e7e" - /> - - {shippingMethod === 'maritime' ? 'm³' : 'kg'} - - - - +// {/* Submit Button */} +// +// {isCalculating ? ( +// +// ) : ( +// +// {t('banner.shipping.calculate_shipping')} +// +// )} +// +// +// +// +// +// )} - {/* Submit Button */} - - {isCalculating ? ( - - ) : ( - - {t('banner.shipping.calculate_shipping')} - - )} - - - - - - )} +// {/* Country Selection Modal */} +// setShowCountryModal(false)} +// > +// +// +// +// {t('banner.shipping.select_country_modal_title')} +// setShowCountryModal(false)}> +// {t('banner.shipping.close')} +// +// +// item.country.toString()} +// style={styles.countryList} +// /> +// +// +// - {/* Country Selection Modal */} - setShowCountryModal(false)} - > - - - - {t('banner.shipping.select_country_modal_title')} - setShowCountryModal(false)}> - {t('banner.shipping.close')} - - - item.country.toString()} - style={styles.countryList} - /> - - - +// {renderResultModal()} +// +// +// ); +// }; - {renderResultModal()} - - - ); -}; +// const styles = StyleSheet.create({ +// safeArea: { +// flex: 1, +// backgroundColor: '#005EE4', +// }, +// safeAreaContent: { +// flex: 1, +// paddingTop: 0, +// }, +// container: { +// width: '100%', +// flex: 1, +// }, +// backgroundImage: { +// width: '100%', +// height: '100%', +// resizeMode: 'cover', +// }, +// contentContainer: { +// flex: 1, +// padding: 15, +// }, +// timeShippingSection: { +// flexDirection: 'column', +// }, +// timeAndImageContainer: { +// flexDirection: 'row', +// gap: 8, +// alignItems: 'center', +// justifyContent: 'space-between', +// paddingLeft: 36, +// }, +// timeDisplay: { +// width: widthUtils(42, 42).width, +// fontSize: fontSize(17), +// fontFamily: 'SF Pro', +// fontWeight: '600', +// color: 'white', +// textAlign: 'center', +// }, +// timeImageContainer: { +// width: widthUtils(54, 154).width, +// height: widthUtils(54, 154).height, +// }, +// shippingCostContainer: { +// flexDirection: 'row', +// alignItems: 'center', +// marginTop: 20, +// justifyContent: 'center', +// }, +// svgContainer: { +// width: widthUtils(18, 18).width, +// height: widthUtils(18, 18).height, +// position: 'absolute', +// left: 0, +// }, +// shippingCostLabelTextStyle: { +// fontSize: fontSize(20), +// lineHeight: 22, +// fontFamily: 'Microsoft YaHei UI', +// fontWeight: '700', +// color: 'white', +// textAlign: 'center', +// textTransform: 'capitalize', +// width: '100%', +// }, +// shippingCalculatorContainer: { +// marginTop: widthUtils(100,100).height, +// paddingTop: 18, +// paddingRight: 20, +// paddingBottom: 28, +// paddingLeft: 20, +// backgroundColor: 'white', +// borderRadius: 5, +// justifyContent: 'center', +// }, +// flexColumnCenteredWithSelect: { +// flexDirection: 'column', +// justifyContent: 'center', +// }, +// shippingMethodContainer: { +// flexDirection: 'row', +// alignItems: 'center', +// justifyContent: 'center', +// height: widthUtils(80, 80).height, +// paddingRight: 10, +// paddingLeft: 10, +// backgroundColor: '#f2f6ff', +// borderRadius: 5, +// }, +// maritimeInfoBox: { +// height: widthUtils(60, 60).height, +// paddingRight: 19, +// paddingLeft: 20, +// backgroundColor: '#f2f6ff', +// borderRadius: 5, +// justifyContent: 'center', +// alignItems: 'center', +// }, +// airwayInfoContainer: { +// height: widthUtils(60, 60).height, +// paddingRight: 24, +// paddingLeft: 25, +// marginLeft: 10, +// backgroundColor: '#f2f6ff', +// borderRadius: 5, +// justifyContent: 'center', +// alignItems: 'center', +// }, +// activeShippingMethod: { +// backgroundColor: '#005EE4', +// }, +// svgContainer1: { +// width: widthUtils(32, 32).width, +// height: widthUtils(32, 32).height, +// }, +// maritimeHeadingStyle: { +// marginTop: -5, +// fontSize: fontSize(14), +// fontFamily: 'Segoe UI', +// fontWeight: '700', +// color: 'white', +// textTransform: 'capitalize', +// }, +// svgContainer2: { +// width: widthUtils(24, 24).width, +// height: widthUtils(24, 24).height, +// }, +// flightModeLabel: { +// marginTop: -2, +// fontSize: fontSize(14), +// fontFamily: 'Segoe UI', +// fontWeight: '400', +// color: '#747474', +// textTransform: 'capitalize', +// }, +// parcelVolumeFormContainer: { +// marginTop: 16, +// backgroundColor: 'white', +// borderWidth: 1, +// borderColor: '#dbdce0', +// }, +// optionContainer: { +// flexDirection: 'row', +// alignItems: 'center', +// justifyContent: 'center', +// height: widthUtils(60, 60).height, +// paddingRight: 6, +// paddingLeft: 8, +// backgroundColor: 'white', +// borderWidth: 1, +// borderColor: '#dbdce0', +// borderTopLeftRadius: 5, +// borderTopRightRadius: 5, +// }, +// pingfangTextSelect: { +// fontSize: fontSize(12), +// fontFamily: 'PingFang SC', +// fontWeight: '500', +// color: '#646472', +// }, +// iconSelectDropdown: { +// width: widthUtils(24, 24).width, +// height: widthUtils(24, 24).height, +// marginLeft: 10, +// }, +// parcelVolumeContainer: { +// width: '100%', +// paddingTop: 6, +// paddingRight: 8, +// paddingBottom: 10, +// paddingLeft: 8, +// marginTop: -1, +// backgroundColor: 'white', +// borderWidth: 1, +// borderColor: '#dbdce0', +// borderBottomLeftRadius: 5, +// borderBottomRightRadius: 5, +// }, +// parcelVolumeLabel: { +// fontSize: fontSize(12), +// fontFamily: 'PingFang SC', +// fontWeight: '600', +// color: '#646472', +// }, +// volumeInputContainer: { +// flexDirection: 'row', +// gap: 8, +// alignItems: 'center', +// justifyContent: 'space-between', +// width: '100%', +// }, +// volumePromptTextStyle: { +// fontSize: fontSize(16), +// lineHeight: 22, +// fontFamily: 'PingFang SC', +// fontWeight: '400', +// color: '#807e7e', +// }, +// unitText: { +// fontSize: fontSize(16), +// lineHeight: 22, +// fontFamily: 'PingFang SC', +// fontWeight: '600', +// color: '#1c284e', +// }, +// primaryButton: { +// width:'100%', +// height: widthUtils(50, 50).height, +// marginTop: 34, +// backgroundColor: '#002fa7', +// borderRadius: 25, +// justifyContent: 'center', +// alignItems: 'center', +// }, +// backButton: { +// padding: 10, +// borderRadius: 20, +// zIndex: 10, +// }, +// loadingContainer: { +// flex: 1, +// justifyContent: 'center', +// alignItems: 'center', +// backgroundColor: '#f2f6ff', +// }, +// modalContainer: { +// flex: 1, +// backgroundColor: 'rgba(0, 0, 0, 0.5)', +// justifyContent: 'flex-end', +// }, +// modalContent: { +// backgroundColor: 'white', +// borderTopLeftRadius: 20, +// borderTopRightRadius: 20, +// paddingBottom: Platform.OS === 'ios' ? 34 : 20, +// maxHeight: '80%', +// }, +// modalHeader: { +// flexDirection: 'row', +// justifyContent: 'space-between', +// alignItems: 'center', +// padding: 16, +// borderBottomWidth: 1, +// borderBottomColor: '#dbdce0', +// }, +// modalTitle: { +// fontSize: fontSize(18), +// fontWeight: '600', +// color: '#1c284e', +// }, +// modalCloseButton: { +// fontSize: fontSize(16), +// color: '#005EE4', +// }, +// countryList: { +// paddingHorizontal: 16, +// }, +// countryItem: { +// paddingVertical: 16, +// borderBottomWidth: 1, +// borderBottomColor: '#dbdce0', +// flexDirection: 'row', +// justifyContent: 'space-between', +// alignItems: 'center', +// }, +// countryItemText: { +// fontSize: fontSize(16), +// color: '#1c284e', +// }, +// checkIcon: { +// fontSize: fontSize(20), +// color: '#005EE4', +// fontWeight: 'bold', +// }, +// volumeInput: { +// flex: 1, +// fontSize: fontSize(16), +// color: '#1c284e', +// padding: 0, +// }, +// disabledButton: { +// opacity: 0.6, +// }, +// resultModalContainer: { +// flex: 1, +// backgroundColor: 'rgba(0, 0, 0, 0.5)', +// justifyContent: 'center', +// alignItems: 'center', +// }, +// resultModalContent: { +// backgroundColor: 'white', +// borderRadius: 10, +// padding: 20, +// width: '80%', +// alignItems: 'center', +// }, +// resultTitle: { +// fontSize: fontSize(18), +// fontWeight: '600', +// color: '#1c284e', +// marginBottom: 15, +// }, +// resultText: { +// fontSize: fontSize(16), +// color: '#1c284e', +// marginBottom: 20, +// }, +// resultCloseButton: { +// backgroundColor: '#005EE4', +// paddingVertical: 10, +// paddingHorizontal: 30, +// borderRadius: 5, +// }, +// resultCloseButtonText: { +// color: 'white', +// fontSize: fontSize(16), +// fontWeight: '600', +// }, +// }); -const styles = StyleSheet.create({ - safeArea: { - flex: 1, - backgroundColor: '#005EE4', - }, - safeAreaContent: { - flex: 1, - paddingTop: 0, - }, - container: { - width: '100%', - flex: 1, - }, - backgroundImage: { - width: '100%', - height: '100%', - resizeMode: 'cover', - }, - contentContainer: { - flex: 1, - padding: 15, - }, - timeShippingSection: { - flexDirection: 'column', - }, - timeAndImageContainer: { - flexDirection: 'row', - gap: 8, - alignItems: 'center', - justifyContent: 'space-between', - paddingLeft: 36, - }, - timeDisplay: { - width: widthUtils(42, 42).width, - fontSize: fontSize(17), - fontFamily: 'SF Pro', - fontWeight: '600', - color: 'white', - textAlign: 'center', - }, - timeImageContainer: { - width: widthUtils(54, 154).width, - height: widthUtils(54, 154).height, - }, - shippingCostContainer: { - flexDirection: 'row', - alignItems: 'center', - marginTop: 20, - justifyContent: 'center', - }, - svgContainer: { - width: widthUtils(18, 18).width, - height: widthUtils(18, 18).height, - position: 'absolute', - left: 0, - }, - shippingCostLabelTextStyle: { - fontSize: fontSize(20), - lineHeight: 22, - fontFamily: 'Microsoft YaHei UI', - fontWeight: '700', - color: 'white', - textAlign: 'center', - textTransform: 'capitalize', - width: '100%', - }, - shippingCalculatorContainer: { - marginTop: widthUtils(100,100).height, - paddingTop: 18, - paddingRight: 20, - paddingBottom: 28, - paddingLeft: 20, - backgroundColor: 'white', - borderRadius: 5, - justifyContent: 'center', - }, - flexColumnCenteredWithSelect: { - flexDirection: 'column', - justifyContent: 'center', - }, - shippingMethodContainer: { - flexDirection: 'row', - alignItems: 'center', - justifyContent: 'center', - height: widthUtils(80, 80).height, - paddingRight: 10, - paddingLeft: 10, - backgroundColor: '#f2f6ff', - borderRadius: 5, - }, - maritimeInfoBox: { - height: widthUtils(60, 60).height, - paddingRight: 19, - paddingLeft: 20, - backgroundColor: '#f2f6ff', - borderRadius: 5, - justifyContent: 'center', - alignItems: 'center', - }, - airwayInfoContainer: { - height: widthUtils(60, 60).height, - paddingRight: 24, - paddingLeft: 25, - marginLeft: 10, - backgroundColor: '#f2f6ff', - borderRadius: 5, - justifyContent: 'center', - alignItems: 'center', - }, - activeShippingMethod: { - backgroundColor: '#005EE4', - }, - svgContainer1: { - width: widthUtils(32, 32).width, - height: widthUtils(32, 32).height, - }, - maritimeHeadingStyle: { - marginTop: -5, - fontSize: fontSize(14), - fontFamily: 'Segoe UI', - fontWeight: '700', - color: 'white', - textTransform: 'capitalize', - }, - svgContainer2: { - width: widthUtils(24, 24).width, - height: widthUtils(24, 24).height, - }, - flightModeLabel: { - marginTop: -2, - fontSize: fontSize(14), - fontFamily: 'Segoe UI', - fontWeight: '400', - color: '#747474', - textTransform: 'capitalize', - }, - parcelVolumeFormContainer: { - marginTop: 16, - backgroundColor: 'white', - borderWidth: 1, - borderColor: '#dbdce0', - }, - optionContainer: { - flexDirection: 'row', - alignItems: 'center', - justifyContent: 'center', - height: widthUtils(60, 60).height, - paddingRight: 6, - paddingLeft: 8, - backgroundColor: 'white', - borderWidth: 1, - borderColor: '#dbdce0', - borderTopLeftRadius: 5, - borderTopRightRadius: 5, - }, - pingfangTextSelect: { - fontSize: fontSize(12), - fontFamily: 'PingFang SC', - fontWeight: '500', - color: '#646472', - }, - iconSelectDropdown: { - width: widthUtils(24, 24).width, - height: widthUtils(24, 24).height, - marginLeft: 10, - }, - parcelVolumeContainer: { - width: '100%', - paddingTop: 6, - paddingRight: 8, - paddingBottom: 10, - paddingLeft: 8, - marginTop: -1, - backgroundColor: 'white', - borderWidth: 1, - borderColor: '#dbdce0', - borderBottomLeftRadius: 5, - borderBottomRightRadius: 5, - }, - parcelVolumeLabel: { - fontSize: fontSize(12), - fontFamily: 'PingFang SC', - fontWeight: '600', - color: '#646472', - }, - volumeInputContainer: { - flexDirection: 'row', - gap: 8, - alignItems: 'center', - justifyContent: 'space-between', - width: '100%', - }, - volumePromptTextStyle: { - fontSize: fontSize(16), - lineHeight: 22, - fontFamily: 'PingFang SC', - fontWeight: '400', - color: '#807e7e', - }, - unitText: { - fontSize: fontSize(16), - lineHeight: 22, - fontFamily: 'PingFang SC', - fontWeight: '600', - color: '#1c284e', - }, - primaryButton: { - width:'100%', - height: widthUtils(50, 50).height, - marginTop: 34, - backgroundColor: '#002fa7', - borderRadius: 25, - justifyContent: 'center', - alignItems: 'center', - }, - backButton: { - padding: 10, - borderRadius: 20, - zIndex: 10, - }, - loadingContainer: { - flex: 1, - justifyContent: 'center', - alignItems: 'center', - backgroundColor: '#f2f6ff', - }, - modalContainer: { - flex: 1, - backgroundColor: 'rgba(0, 0, 0, 0.5)', - justifyContent: 'flex-end', - }, - modalContent: { - backgroundColor: 'white', - borderTopLeftRadius: 20, - borderTopRightRadius: 20, - paddingBottom: Platform.OS === 'ios' ? 34 : 20, - maxHeight: '80%', - }, - modalHeader: { - flexDirection: 'row', - justifyContent: 'space-between', - alignItems: 'center', - padding: 16, - borderBottomWidth: 1, - borderBottomColor: '#dbdce0', - }, - modalTitle: { - fontSize: fontSize(18), - fontWeight: '600', - color: '#1c284e', - }, - modalCloseButton: { - fontSize: fontSize(16), - color: '#005EE4', - }, - countryList: { - paddingHorizontal: 16, - }, - countryItem: { - paddingVertical: 16, - borderBottomWidth: 1, - borderBottomColor: '#dbdce0', - flexDirection: 'row', - justifyContent: 'space-between', - alignItems: 'center', - }, - countryItemText: { - fontSize: fontSize(16), - color: '#1c284e', - }, - checkIcon: { - fontSize: fontSize(20), - color: '#005EE4', - fontWeight: 'bold', - }, - volumeInput: { - flex: 1, - fontSize: fontSize(16), - color: '#1c284e', - padding: 0, - }, - disabledButton: { - opacity: 0.6, - }, - resultModalContainer: { - flex: 1, - backgroundColor: 'rgba(0, 0, 0, 0.5)', - justifyContent: 'center', - alignItems: 'center', - }, - resultModalContent: { - backgroundColor: 'white', - borderRadius: 10, - padding: 20, - width: '80%', - alignItems: 'center', - }, - resultTitle: { - fontSize: fontSize(18), - fontWeight: '600', - color: '#1c284e', - marginBottom: 15, - }, - resultText: { - fontSize: fontSize(16), - color: '#1c284e', - marginBottom: 20, - }, - resultCloseButton: { - backgroundColor: '#005EE4', - paddingVertical: 10, - paddingHorizontal: 30, - borderRadius: 5, - }, - resultCloseButtonText: { - color: 'white', - fontSize: fontSize(16), - fontWeight: '600', - }, -}); +import { View, Text } from 'react-native'; + +export const ShippingDetailsSection = () => { + return ( + + ShippingDetailsSection + + ) +} diff --git a/app/screens/loginList/index.tsx b/app/screens/loginList/index.tsx index eef30c7..457f172 100644 --- a/app/screens/loginList/index.tsx +++ b/app/screens/loginList/index.tsx @@ -9,7 +9,7 @@ import { BackHandler, Image, Modal, - SafeAreaView + SafeAreaView, } from "react-native"; import { useTranslation } from "react-i18next"; import { useNavigation } from "@react-navigation/native"; @@ -18,6 +18,12 @@ import fontSize from "../../utils/fontsizeUtils"; import EmailLoginModal from "./EmailLoginModal"; import PhoneLoginModal from "./PhoneLoginModal"; +import * as WebBrowser from "expo-web-browser"; +import * as AuthSession from "expo-auth-session"; +import * as Linking from "expo-linking"; +import * as Google from "expo-auth-session/providers/google"; + +WebBrowser.maybeCompleteAuthSession(); type RootStackParamList = { Login: undefined; @@ -32,6 +38,12 @@ type LoginScreenProps = { isModal?: boolean; }; +const CLIENT_ID = + "529750832779-osemooqkar78m8lhrn9dvbvi98fr4g08.apps.googleusercontent.com"; // from Google Cloud +const REDIRECT_URI = AuthSession.makeRedirectUri({ + native: "brainnelapp://redirect", +}); + export const LoginScreen = ({ onClose, isModal }: LoginScreenProps) => { const { t } = useTranslation(); const navigation = @@ -40,7 +52,7 @@ export const LoginScreen = ({ onClose, isModal }: LoginScreenProps) => { // 全新的状态管理方式 const [emailModalVisible, setEmailModalVisible] = useState(false); const [phoneModalVisible, setPhoneModalVisible] = useState(false); - + // 防止多次触发 const isProcessingEmail = useRef(false); const isProcessingPhone = useRef(false); @@ -77,10 +89,31 @@ export const LoginScreen = ({ onClose, isModal }: LoginScreenProps) => { } }; - // 处理谷歌登录 - const handleGoogleLogin = async () => { - navigation.navigate("Google"); + const discovery = { + authorizationEndpoint: "https://accounts.google.com/o/oauth2/v2/auth", + tokenEndpoint: "https://oauth2.googleapis.com/token", + revocationEndpoint: "https://oauth2.googleapis.com/revoke", }; + const [request, response, handleGoogleLogin] = AuthSession.useAuthRequest( + { + clientId: CLIENT_ID, + scopes: ["openid", "profile", "email"], + redirectUri: REDIRECT_URI, + responseType: AuthSession.ResponseType.Code, + }, + discovery + ); + + React.useEffect(() => { + if (response?.type === "success") { + const { code } = response.params; + console.log("授权码:", code); + } + }, [response]); + // 处理谷歌登录 + // const handleGoogleLogin = async () => { + // // navigation.navigate("Google"); + // }; // 处理Facebook登录 const handleFacebookLogin = () => { @@ -100,11 +133,11 @@ export const LoginScreen = ({ onClose, isModal }: LoginScreenProps) => { // 显示邮箱登录 const showEmailModal = () => { if (isProcessingEmail.current) return; - + isProcessingEmail.current = true; // 确保手机模态框已关闭 setPhoneModalVisible(false); - + // 延迟打开邮箱模态框,避免冲突 setTimeout(() => { setEmailModalVisible(true); @@ -115,11 +148,11 @@ export const LoginScreen = ({ onClose, isModal }: LoginScreenProps) => { // 显示手机登录 const showPhoneModal = () => { if (isProcessingPhone.current) return; - + isProcessingPhone.current = true; // 确保邮箱模态框已关闭 setEmailModalVisible(false); - + // 延迟打开手机模态框,避免冲突 setTimeout(() => { setPhoneModalVisible(true); @@ -180,7 +213,7 @@ export const LoginScreen = ({ onClose, isModal }: LoginScreenProps) => { {/* 登录按钮 */} handleGoogleLogin()} > { style={{ width: 20, height: 20 }} /> - {t("continueWithGoogle")} + + {t("continueWithGoogle")} + { 🍎 - {t("continueWithApple")} + + {t("continueWithApple")} + )} @@ -252,7 +289,8 @@ export const LoginScreen = ({ onClose, isModal }: LoginScreenProps) => { {/* 服务条款 */} - {t("termsText")} {t("termsOfUse")} + {t("termsText")}{" "} + {t("termsOfUse")} {t("and")} {t("privacyPolicy")} @@ -262,16 +300,10 @@ export const LoginScreen = ({ onClose, isModal }: LoginScreenProps) => { {/* 邮箱登录模态框 - 直接渲染 */} - + {/* 手机登录模态框 - 直接渲染 */} - + ); }; @@ -415,4 +447,4 @@ const styles = StyleSheet.create({ }, }); -export default LoginScreen; \ No newline at end of file +export default LoginScreen; diff --git a/app/screens/pay/Pay.tsx b/app/screens/pay/Pay.tsx index 231c8b2..f9e4031 100644 --- a/app/screens/pay/Pay.tsx +++ b/app/screens/pay/Pay.tsx @@ -1,6 +1,6 @@ import { View, StyleSheet, Alert } from "react-native"; import { useRoute, RouteProp, useNavigation } from "@react-navigation/native"; -import { useEffect, useState } from "react"; +import { useEffect, useState, useRef } from "react"; import { payApi, PaymentInfoResponse } from "../../services/api/payApi"; import { WebView } from "react-native-webview"; import * as Linking from "expo-linking"; @@ -8,7 +8,7 @@ import { navigate, navigationRef } from "../../navigation/RootNavigation"; type PayScreenRouteProp = RouteProp< { - Pay: { payUrl: string }; + Pay: { payUrl: string; method: string; order_id: string }; }, "Pay" >; @@ -19,6 +19,63 @@ export const Pay = () => { const navigation = useNavigation(); const { payUrl } = route.params; const [payInfo, setPayInfo] = useState(); + const pollIntervalRef = useRef(null); + const timeoutRef = useRef(null); + + // 轮询 wavePay 状态 + const pollWavePayStatus = () => { + payApi + .wavePay(route.params.order_id) + .then((res) => { + console.log(res); + if (res.pay_status === 1) { + safeNavigate("PaymentSuccessScreen", res); + // 支付状态为1,停止轮询和超时定时器 + if (pollIntervalRef.current) { + clearInterval(pollIntervalRef.current); + pollIntervalRef.current = null; + } + if (timeoutRef.current) { + clearTimeout(timeoutRef.current); + timeoutRef.current = null; + } + } + }) + .catch((error) => { + console.error("WavePay 轮询错误:", error); + }); + }; + + // 开始轮询 + const startPolling = () => { + // 立即执行一次 + pollWavePayStatus(); + // 设置轮询,每2秒执行一次 + if (!pollIntervalRef.current) { + pollIntervalRef.current = setInterval(pollWavePayStatus, 2000); + } + + // 设置50秒超时 + if (!timeoutRef.current) { + timeoutRef.current = setTimeout(() => { + // 超时处理:停止轮询并导航到错误页面 + stopPolling(); + safeNavigate("PayError", {}); + }, 50000); // 50秒 + } + }; + + // 停止轮询 + const stopPolling = () => { + if (pollIntervalRef.current) { + clearInterval(pollIntervalRef.current); + pollIntervalRef.current = null; + } + if (timeoutRef.current) { + clearTimeout(timeoutRef.current); + timeoutRef.current = null; + } + }; useEffect(() => { // 设置处理深度链接的监听器 @@ -39,6 +96,8 @@ export const Pay = () => { return () => { // 清理订阅 subscription.remove(); + // 清理轮询 + stopPolling(); }; }, []); @@ -48,13 +107,11 @@ export const Pay = () => { if (url && url.includes("payment_success=true")) { // 如果网页URL中包含成功参数,可以在这里处理 Alert.alert("检测到支付成功!"); - // navigation.navigate('PaymentConfirmation'); } }; // 导航辅助函数,尝试使用多种方式导航 const safeNavigate = (routeName: string, params: any) => { - try { // 尝试使用组件内的navigation // @ts-ignore 忽略可能的类型错误 @@ -93,38 +150,46 @@ export const Pay = () => { originWhitelist={["*"]} userAgent="Mozilla/5.0 (Linux; Android 10; Pixel 3) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/84.0.4147.125 Mobile Safari/537.36" onShouldStartLoadWithRequest={(request) => { - // 检查URL是否包含支付成功的参数 - const { url } = request; - if (url) { - // 解析参数 - const parsed = Linking.parse(url); - const params = parsed.queryParams || {}; - - // 检查是否存在paymentId参数并且不为null - if (params.paymentId && params.paymentId !== "null") { - if (params.PayerID && params.PayerID !== "null") { - payApi - .paySuccessCallback( - params.paymentId as string, - params.PayerID as string - ) - .then((res) => { - if (res.status === 1) { - // 尝试跳转到支付成功页面 - safeNavigate("PaymentSuccessScreen", params); - } else { - safeNavigate("PayError", params); - } - }); - } + // wave 轮询处理 + if (route.params.method === "wave") { + // 开始轮询 wavePay 状态 + startPolling(); + } + + // 检查URL是否包含支付成功的参数 paypal + if (route.params.method === "paypal") { + const { url } = request; + if (url) { + // 解析参数 + const parsed = Linking.parse(url); + const params = parsed.queryParams || {}; - return false; // 不在WebView中加载 - } else { - // console.log("未检测到有效的paymentId,导航到支付失败页面"); - // Alert.alert("支付失败"); - // // 尝试跳转到支付失败页面 - // safeNavigate('PayError', params); - // return false; // 不在WebView中加载 + // 检查是否存在paymentId参数并且不为null + if (params.paymentId && params.paymentId !== "null") { + if (params.PayerID && params.PayerID !== "null") { + payApi + .paySuccessCallback( + params.paymentId as string, + params.PayerID as string + ) + .then((res) => { + if (res.status === 1) { + // 尝试跳转到支付成功页面 + safeNavigate("PaymentSuccessScreen", params); + } else { + safeNavigate("PayError", params); + } + }); + } + + return false; // 不在WebView中加载 + } else { + // console.log("未检测到有效的paymentId,导航到支付失败页面"); + // Alert.alert("支付失败"); + // // 尝试跳转到支付失败页面 + // safeNavigate('PayError', params); + // return false; // 不在WebView中加载 + } } } diff --git a/app/screens/previewOrder/perviewOrder.tsx b/app/screens/previewOrder/perviewOrder.tsx index 39e1865..3e94317 100644 --- a/app/screens/previewOrder/perviewOrder.tsx +++ b/app/screens/previewOrder/perviewOrder.tsx @@ -1,4 +1,4 @@ -import React from 'react'; +import React from "react"; import { View, Text, @@ -11,11 +11,16 @@ import { Platform, StatusBar, SafeAreaView, - BackHandler + BackHandler, } from "react-native"; import useCreateOrderStore from "../../store/createOrder"; import BackIcon from "../../components/BackIcon"; -import { useNavigation, useRoute, RouteProp, useFocusEffect } from "@react-navigation/native"; +import { + useNavigation, + useRoute, + RouteProp, + useFocusEffect, +} from "@react-navigation/native"; import { NativeStackNavigationProp } from "@react-navigation/native-stack"; import { useState, useEffect } from "react"; import useUserStore from "../../store/user"; @@ -34,7 +39,7 @@ type RootStackParamList = { currency: string; amount: number; }; - Pay: { payUrl: string }; + Pay: { payUrl: string; method: string; order_id: string }; OrderDetails: { orderId?: number }; }; @@ -70,9 +75,10 @@ export const PreviewOrder = () => { }; // 添加返回键监听(Android) - BackHandler.addEventListener('hardwareBackPress', onBackPress); + BackHandler.addEventListener("hardwareBackPress", onBackPress); - return () => BackHandler.removeEventListener('hardwareBackPress', onBackPress); + return () => + BackHandler.removeEventListener("hardwareBackPress", onBackPress); }, [navigation]) ); @@ -99,11 +105,16 @@ export const PreviewOrder = () => { .getPayInfo(data) .then((res) => { if (res.success) { - logPreviewOrder(navigation.getState().routes[navigation.getState().index - 1]?.name as string); + logPreviewOrder( + navigation.getState().routes[navigation.getState().index - 1] + ?.name as string + ); console.log(getBurialPointData()); - + navigation.replace("Pay", { payUrl: res.payment_url, + method: route.params.payMethod, + order_id: route.params.data.order_id.toString(), }); } }) @@ -134,14 +145,18 @@ export const PreviewOrder = () => { - {t("order.preview.pay_now")} + + {t("order.preview.pay_now")} + {/* Payment Method Section */} - {t("order.preview.payment_method")} + + {t("order.preview.payment_method")} + {route.params.payMethod} @@ -150,7 +165,9 @@ export const PreviewOrder = () => { {showPhoneInput && ( - {t("order.preview.enter_phone")} + + {t("order.preview.enter_phone")} + { {/* Order Info Section */} - {t("order.preview.payment_info")} + + {t("order.preview.payment_info")} + - {t("order.preview.name")} + + {t("order.preview.name")} + {route.params?.data.receiver_name || "N/A"} - {t("order.preview.phone")} + + {t("order.preview.phone")} + {route.params?.data.receiver_phone || "N/A"} @@ -190,14 +213,18 @@ export const PreviewOrder = () => { )} - {t("order.preview.country")} + + {t("order.preview.country")} + {route.params?.data.receiver_country || "N/A"} - {t("order.preview.shipping_address")} + + {t("order.preview.shipping_address")} + {route.params?.data.receiver_address || "N/A"} @@ -224,11 +251,16 @@ export const PreviewOrder = () => { {/* Order Summary Section */} - {t("order.preview.order_total")} + + {t("order.preview.order_total")} + - {t("order.preview.total_amount")} + + {t("order.preview.total_amount")} + - {route.params.data.actual_amount} {route.params.data.currency} + {route.params.data.actual_amount}{" "} + {route.params.data.currency} @@ -249,7 +281,9 @@ export const PreviewOrder = () => { {loading ? ( ) : ( - {t("order.preview.confirm_payment")} + + {t("order.preview.confirm_payment")} + )} @@ -262,15 +296,15 @@ export const PreviewOrder = () => { const styles = StyleSheet.create({ safeArea: { flex: 1, - backgroundColor: '#fff', + backgroundColor: "#fff", }, safeAreaContent: { flex: 1, - paddingTop: Platform.OS === 'android' ? 0 : 0, + paddingTop: Platform.OS === "android" ? 0 : 0, }, container: { flex: 1, - backgroundColor: '#fff', + backgroundColor: "#fff", }, scrollContainer: { flex: 1, diff --git a/app/screens/productStatus/OrderDatails.tsx b/app/screens/productStatus/OrderDatails.tsx index e6ad941..504648a 100644 --- a/app/screens/productStatus/OrderDatails.tsx +++ b/app/screens/productStatus/OrderDatails.tsx @@ -284,6 +284,8 @@ export const OrderDetails = () => { setShowPaymentModal(false); navigation.navigate("Pay", { payUrl: res.payment_url, + method: selectedPayment, + order_id: orderDetails.order_id, }); }else{ Alert.alert(t("error"), t("pay.payment_failed")); @@ -352,6 +354,8 @@ export const OrderDetails = () => { // 打开支付页面 navigation.navigate("Pay", { payUrl: response.payment_url, + method: paymentParams.payment_method, + order_id: orderDetails?.order_id || "", }); } else { Alert.alert(t("error"), t("order.error.payment_update")); diff --git a/app/services/api/apiClient.ts b/app/services/api/apiClient.ts index e30e346..bde543a 100644 --- a/app/services/api/apiClient.ts +++ b/app/services/api/apiClient.ts @@ -54,6 +54,7 @@ const apiClient: AxiosInstance = axios.create({ // 请求拦截器 apiClient.interceptors.request.use( async (config: InternalAxiosRequestConfig) => { + const baseUrl = config.baseURL || ''; let fullUrl = baseUrl + config.url; if (config.params) { @@ -61,6 +62,17 @@ apiClient.interceptors.request.use( fullUrl += (fullUrl.includes('?') ? '&' : '?') + params.toString(); } + // 根据平台设置请求方法大小写 + if (config.method) { + if (Platform.OS === 'ios') { + // iOS使用小写方法 + config.method = config.method.toLowerCase(); + } else if (Platform.OS === 'android') { + // Android使用大写方法 + config.method = config.method.toUpperCase(); + } + } + // console.log("环境:", __DEV__ ? "开发环境" : "生产环境"); // console.log("请求方法:", config.method); // console.log("完整URL:", fullUrl); diff --git a/app/services/api/payApi.ts b/app/services/api/payApi.ts index 8550bf7..a566348 100644 --- a/app/services/api/payApi.ts +++ b/app/services/api/payApi.ts @@ -1,4 +1,4 @@ -import apiService from './apiClient'; +import apiService from "./apiClient"; // 支付方式类型定义 export interface PaymentMethod { @@ -65,11 +65,11 @@ export interface ConvertCurrencyBody { } export interface PaySuccessCallbackBody { - success: boolean; - msg: string; - order_id: number; - transaction_id: string; - status: number; + success: boolean; + msg: string; + order_id: number; + transaction_id: string; + status: number; } export interface rechargeHistory { @@ -89,8 +89,7 @@ export interface RechargeRecommendAmountResponse { currency: string; } - - export interface Transaction { +export interface Transaction { transaction_id: string; type: "order_payment"; // Assuming 'order_payment' is the only possible type for this dataset amount: number; @@ -107,10 +106,17 @@ export interface TransactionsResponse { page_size: number; } +export interface WavePayResponse { + order_id: string; + pay_status: number; +} + export const payApi = { // 获取当前国家支付方式 getCountryPaymentMethods: () => { - return apiService.get('/api/payment/country_payment_methods/'); + return apiService.get( + "/api/payment/country_payment_methods/" + ); }, // 获取支付信息 @@ -124,27 +130,44 @@ export const payApi = { }, // 支付成功的回调 - paySuccessCallback: (paymentId:string,PayerID:string) => { - return apiService.post(`/api/payment/paypal/execute/`,{paymentId,PayerID}); + paySuccessCallback: (paymentId: string, PayerID: string) => { + return apiService.post( + `/api/payment/paypal/execute/`, + { paymentId, PayerID } + ); }, - + // 新增充值接口 initiateRecharge: (data: RechargeInitiateBody) => { - return apiService.post('/api/recharge/initiate/', data); + return apiService.post( + "/api/recharge/initiate/", + data + ); }, // 获取充值历史 getRechargeHistory: () => { - return apiService.get('/api/recharge/records/'); + return apiService.get("/api/recharge/records/"); }, //获取充值推荐金额 getRechargeRecommendAmount: () => { - return apiService.get('/api/recharge/recommended-amounts/'); + return apiService.get( + "/api/recharge/recommended-amounts/" + ); }, // 获取流水 - getTransactionHistory: (page:number,page_size:number) => { - return apiService.get(`/api/users/me/transactions/?page=${page}&page_size=${page_size}`); + getTransactionHistory: (page: number, page_size: number) => { + return apiService.get( + `/api/users/me/transactions/?page=${page}&page_size=${page_size}` + ); + }, + + // wave 支付 + wavePay: (order_id: string) => { + return apiService.get( + `/api/orders/${order_id}/payment-status/` + ); }, }; diff --git a/package-lock.json b/package-lock.json index 5cdc519..f392b73 100644 --- a/package-lock.json +++ b/package-lock.json @@ -10,6 +10,7 @@ "license": "0BSD", "dependencies": { "@expo/metro-runtime": "~4.0.1", + "@expo/vector-icons": "^14.1.0", "@react-native-async-storage/async-storage": "1.23.1", "@react-native-community/checkbox": "^0.5.17", "@react-native-community/datetimepicker": "8.2.0", @@ -22,6 +23,7 @@ "expo": "~52.0.41", "expo-auth-session": "~6.0.3", "expo-build-properties": "~0.13.3", + "expo-crypto": "~14.0.2", "expo-image": "~2.0.7", "expo-image-picker": "~16.0.6", "expo-linear-gradient": "~14.0.2", @@ -54,6 +56,7 @@ "react-native-swiper": "^1.6.0", "react-native-toast-message": "^2.3.0", "react-native-vector-icons": "^10.2.0", + "react-native-web": "~0.19.13", "react-native-webview": "13.12.5", "zustand": "^5.0.4" }, @@ -7519,6 +7522,15 @@ "node": ">=4" } }, + "node_modules/css-in-js-utils": { + "version": "3.1.0", + "resolved": "https://registry.npmmirror.com/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-to-react-native": { "version": "3.2.0", "resolved": "https://registry.npmmirror.com/css-to-react-native/-/css-to-react-native-3.2.0.tgz", @@ -9502,6 +9514,12 @@ "integrity": "sha512-lhd/wF+Lk98HZoTCtlVraHtfh5XYijIjalXck7saUtuanSDyLMxnHhSXEDJqHxD7msR8D0uCmqlkwjCV8xvwHw==", "license": "MIT" }, + "node_modules/fast-loops": { + "version": "1.1.4", + "resolved": "https://registry.npmmirror.com/fast-loops/-/fast-loops-1.1.4.tgz", + "integrity": "sha512-8dbd3XWoKCTms18ize6JmQF1SFnnfj5s0B7rRry22EofgMu7B6LKHVh+XfFqFGsqnbH54xgeO83PzpKI+ODhlg==", + "license": "MIT" + }, "node_modules/fast-uri": { "version": "3.0.6", "resolved": "https://registry.npmmirror.com/fast-uri/-/fast-uri-3.0.6.tgz", @@ -10326,6 +10344,12 @@ "node": ">=10.17.0" } }, + "node_modules/hyphenate-style-name": { + "version": "1.1.0", + "resolved": "https://registry.npmmirror.com/hyphenate-style-name/-/hyphenate-style-name-1.1.0.tgz", + "integrity": "sha512-WDC/ui2VVRrz3jOVi+XtjqkDjiVjTtFaAGiW37k6b+ohyQ5wYDOGkvCZa8+H0nx3gyvv0+BST9xuOgIyGQ00gw==", + "license": "BSD-3-Clause" + }, "node_modules/i18next": { "version": "24.2.3", "resolved": "https://registry.npmmirror.com/i18next/-/i18next-24.2.3.tgz", @@ -10475,6 +10499,16 @@ "integrity": "sha512-k/vGaX4/Yla3WzyMCvTQOXYeIHvqOKtnqBduzTHpzpQZzAskKMhZ2K+EnBiSM9zGSoIFeMpXKxa4dYeZIQqewQ==", "license": "ISC" }, + "node_modules/inline-style-prefixer": { + "version": "6.0.4", + "resolved": "https://registry.npmmirror.com/inline-style-prefixer/-/inline-style-prefixer-6.0.4.tgz", + "integrity": "sha512-FwXmZC2zbeeS7NzGjJ6pAiqRhXR0ugUShSNb6GApMl6da0/XGc4MOJsoWAywia52EEWbXNSy0pzkwz/+Y+swSg==", + "license": "MIT", + "dependencies": { + "css-in-js-utils": "^3.1.0", + "fast-loops": "^1.1.3" + } + }, "node_modules/internal-ip": { "version": "4.3.0", "resolved": "https://registry.npmmirror.com/internal-ip/-/internal-ip-4.3.0.tgz", @@ -10607,18 +10641,6 @@ "node": ">=0.10.0" } }, - "node_modules/internal-ip/node_modules/which": { - "version": "1.3.1", - "resolved": "https://registry.npmmirror.com/which/-/which-1.3.1.tgz", - "integrity": "sha512-HxJdYWq1MTIQbJ3nw0cqssHoTNU267KlrDuGZ1WYlxDStUtKUhOaJmh112/TZmHxxUfuJqPXSOm7tDyas0OSIQ==", - "license": "ISC", - "dependencies": { - "isexe": "^2.0.0" - }, - "bin": { - "which": "bin/which" - } - }, "node_modules/internal-slot": { "version": "1.1.0", "resolved": "https://registry.npmmirror.com/internal-slot/-/internal-slot-1.1.0.tgz", @@ -14876,6 +14898,38 @@ "node": ">=10" } }, + "node_modules/react-native-web": { + "version": "0.19.13", + "resolved": "https://registry.npmmirror.com/react-native-web/-/react-native-web-0.19.13.tgz", + "integrity": "sha512-etv3bN8rJglrRCp/uL4p7l8QvUNUC++QwDbdZ8CB7BvZiMvsxfFIRM1j04vxNldG3uo2puRd6OSWR3ibtmc29A==", + "license": "MIT", + "dependencies": { + "@babel/runtime": "^7.18.6", + "@react-native/normalize-colors": "^0.74.1", + "fbjs": "^3.0.4", + "inline-style-prefixer": "^6.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", + "react-dom": "^18.0.0" + } + }, + "node_modules/react-native-web/node_modules/@react-native/normalize-colors": { + "version": "0.74.89", + "resolved": "https://registry.npmmirror.com/@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.npmmirror.com/memoize-one/-/memoize-one-6.0.0.tgz", + "integrity": "sha512-rkpe71W0N0c0Xz6QD0eJETuWAJGnJ9afsl1srmwPrI+yBCkge5EycXXbYRyvL29zZVUWQCY7InPRCv3GDXuZNw==", + "license": "MIT" + }, "node_modules/react-native-webview": { "version": "13.12.5", "resolved": "https://registry.npmmirror.com/react-native-webview/-/react-native-webview-13.12.5.tgz", @@ -16404,6 +16458,12 @@ "integrity": "sha512-0MP/Cxx5SzeeZ10p/bZI0S6MpgD+yxAhi1BOQ34jgnMXsCq3j1t6tQnZu+KdlL7dvJTLT3g9xN8tl10TqgFMcg==", "license": "MIT" }, + "node_modules/styleq": { + "version": "0.1.3", + "resolved": "https://registry.npmmirror.com/styleq/-/styleq-0.1.3.tgz", + "integrity": "sha512-3ZUifmCDCQanjeej1f6kyl/BeP/Vae5EYkQ9iJfUm/QwZvlgnZzyflqAsAWYURdtea8Vkvswu2GrC57h3qffcA==", + "license": "MIT" + }, "node_modules/sucrase": { "version": "3.35.0", "resolved": "https://registry.npmmirror.com/sucrase/-/sucrase-3.35.0.tgz", @@ -17639,6 +17699,18 @@ "node": ">=8" } }, + "node_modules/which": { + "version": "1.3.1", + "resolved": "https://registry.npmmirror.com/which/-/which-1.3.1.tgz", + "integrity": "sha512-HxJdYWq1MTIQbJ3nw0cqssHoTNU267KlrDuGZ1WYlxDStUtKUhOaJmh112/TZmHxxUfuJqPXSOm7tDyas0OSIQ==", + "license": "ISC", + "dependencies": { + "isexe": "^2.0.0" + }, + "bin": { + "which": "bin/which" + } + }, "node_modules/which-boxed-primitive": { "version": "1.1.1", "resolved": "https://registry.npmmirror.com/which-boxed-primitive/-/which-boxed-primitive-1.1.1.tgz", diff --git a/package.json b/package.json index aed2302..425ab9f 100644 --- a/package.json +++ b/package.json @@ -10,6 +10,7 @@ }, "dependencies": { "@expo/metro-runtime": "~4.0.1", + "@expo/vector-icons": "^14.1.0", "@react-native-async-storage/async-storage": "1.23.1", "@react-native-community/checkbox": "^0.5.17", "@react-native-community/datetimepicker": "8.2.0", @@ -22,6 +23,7 @@ "expo": "~52.0.41", "expo-auth-session": "~6.0.3", "expo-build-properties": "~0.13.3", + "expo-crypto": "~14.0.2", "expo-image": "~2.0.7", "expo-image-picker": "~16.0.6", "expo-linear-gradient": "~14.0.2", diff --git a/yarn.lock b/yarn.lock index da81436..9ffbabc 100644 --- a/yarn.lock +++ b/yarn.lock @@ -31,13 +31,6 @@ "@nicolo-ribaudo/chokidar-2" "2.1.8-no-fsevents.3" chokidar "^3.6.0" -"@babel/code-frame@7.10.4", "@babel/code-frame@~7.10.4": - version "7.10.4" - resolved "https://registry.npmmirror.com/@babel/code-frame/-/code-frame-7.10.4.tgz" - integrity sha512-vG6SvB6oYEhvgisZNFRmRCUkLz11c7rp+tbNTynGqc6mS1d5ATd/sGyV6W0KZZnXRKMTzZDRgQT3Ou9jhpAfUg== - dependencies: - "@babel/highlight" "^7.10.4" - "@babel/code-frame@^7.0.0", "@babel/code-frame@^7.12.13", "@babel/code-frame@^7.24.7", "@babel/code-frame@^7.27.1": version "7.27.1" resolved "https://registry.npmmirror.com/@babel/code-frame/-/code-frame-7.27.1.tgz" @@ -47,6 +40,20 @@ js-tokens "^4.0.0" picocolors "^1.1.1" +"@babel/code-frame@~7.10.4": + version "7.10.4" + resolved "https://registry.npmmirror.com/@babel/code-frame/-/code-frame-7.10.4.tgz" + integrity sha512-vG6SvB6oYEhvgisZNFRmRCUkLz11c7rp+tbNTynGqc6mS1d5ATd/sGyV6W0KZZnXRKMTzZDRgQT3Ou9jhpAfUg== + dependencies: + "@babel/highlight" "^7.10.4" + +"@babel/code-frame@7.10.4": + version "7.10.4" + resolved "https://registry.npmmirror.com/@babel/code-frame/-/code-frame-7.10.4.tgz" + integrity sha512-vG6SvB6oYEhvgisZNFRmRCUkLz11c7rp+tbNTynGqc6mS1d5ATd/sGyV6W0KZZnXRKMTzZDRgQT3Ou9jhpAfUg== + dependencies: + "@babel/highlight" "^7.10.4" + "@babel/compat-data@^7.22.6", "@babel/compat-data@^7.27.2": version "7.27.2" resolved "https://registry.npmmirror.com/@babel/compat-data/-/compat-data-7.27.2.tgz" @@ -1411,7 +1418,7 @@ json5 "^2.2.3" write-file-atomic "^2.3.0" -"@expo/metro-config@0.19.12", "@expo/metro-config@~0.19.12": +"@expo/metro-config@~0.19.12", "@expo/metro-config@0.19.12": version "0.19.12" resolved "https://registry.npmmirror.com/@expo/metro-config/-/metro-config-0.19.12.tgz" integrity sha512-fhT3x1ikQWHpZgw7VrEghBdscFPz1laRYa8WcVRB18nTTqorF6S8qPYslkJu1faEziHZS7c2uyDzTYnrg/CKbg== @@ -1532,7 +1539,7 @@ resolved "https://registry.npmmirror.com/@expo/sudo-prompt/-/sudo-prompt-9.3.2.tgz" integrity sha512-HHQigo3rQWKMDzYDLkubN5WQOYXJJE2eNqIQC2axC2iO3mHdwnIR7FgZVvHWtBwAdzBgAP0ECp8KqS8TiMKvgw== -"@expo/vector-icons@^14.0.0": +"@expo/vector-icons@^14.0.0", "@expo/vector-icons@^14.1.0": version "14.1.0" resolved "https://registry.npmmirror.com/@expo/vector-icons/-/vector-icons-14.1.0.tgz" integrity sha512-7T09UE9h8QDTsUeMGymB4i+iqvtEeaO5VvUjryFB4tugDTG/bkzViWA74hm5pfjjDEhYMXWaX112mcvhccmIwQ== @@ -1818,7 +1825,7 @@ "@nodelib/fs.stat" "2.0.5" run-parallel "^1.1.9" -"@nodelib/fs.stat@2.0.5", "@nodelib/fs.stat@^2.0.2": +"@nodelib/fs.stat@^2.0.2", "@nodelib/fs.stat@2.0.5": version "2.0.5" resolved "https://registry.npmmirror.com/@nodelib/fs.stat/-/fs.stat-2.0.5.tgz" integrity sha512-RkhPPp2zrqDAQA/2jNhnztcPAlv64XdhIp7a7454A5ovI7Bukxgt7MX7udwAu3zg1DcpPU0rz3VV1SeaqvY4+A== @@ -2231,23 +2238,15 @@ hermes-parser "0.23.1" nullthrows "^1.1.1" -"@react-native/normalize-colors@0.76.9": - version "0.76.9" - resolved "https://registry.npmmirror.com/@react-native/normalize-colors/-/normalize-colors-0.76.9.tgz" - integrity sha512-TUdMG2JGk72M9d8DYbubdOlrzTYjw+YMe/xOnLU4viDgWRHsCbtRS9x0IAxRjs3amj/7zmK3Atm8jUPvdAc8qw== - "@react-native/normalize-colors@^0.74.1": version "0.74.89" - resolved "https://registry.npmmirror.com/@react-native/normalize-colors/-/normalize-colors-0.74.89.tgz#b8ac17d1bbccd3ef9a1f921665d04d42cff85976" + resolved "https://registry.npmmirror.com/@react-native/normalize-colors/-/normalize-colors-0.74.89.tgz" integrity sha512-qoMMXddVKVhZ8PA1AbUCk83trpd6N+1nF2A6k1i6LsQObyS92fELuk8kU/lQs6M7BsMHwqyLCpQJ1uFgNvIQXg== -"@react-native/virtualized-lists@0.76.9": +"@react-native/normalize-colors@0.76.9": version "0.76.9" - resolved "https://registry.npmmirror.com/@react-native/virtualized-lists/-/virtualized-lists-0.76.9.tgz" - integrity sha512-2neUfZKuqMK2LzfS8NyOWOyWUJOWgDym5fUph6fN9qF+LNPjAvnc4Zr9+o+59qjNu/yXwQgVMWNU4+8WJuPVWw== - dependencies: - invariant "^2.2.4" - nullthrows "^1.1.1" + resolved "https://registry.npmmirror.com/@react-native/normalize-colors/-/normalize-colors-0.76.9.tgz" + integrity sha512-TUdMG2JGk72M9d8DYbubdOlrzTYjw+YMe/xOnLU4viDgWRHsCbtRS9x0IAxRjs3amj/7zmK3Atm8jUPvdAc8qw== "@react-native/virtualized-lists@^0.72.4": version "0.72.8" @@ -2257,6 +2256,14 @@ invariant "^2.2.4" nullthrows "^1.1.1" +"@react-native/virtualized-lists@0.76.9": + version "0.76.9" + resolved "https://registry.npmmirror.com/@react-native/virtualized-lists/-/virtualized-lists-0.76.9.tgz" + integrity sha512-2neUfZKuqMK2LzfS8NyOWOyWUJOWgDym5fUph6fN9qF+LNPjAvnc4Zr9+o+59qjNu/yXwQgVMWNU4+8WJuPVWw== + dependencies: + invariant "^2.2.4" + nullthrows "^1.1.1" + "@react-navigation/bottom-tabs@^6.5.11": version "6.6.1" resolved "https://registry.npmmirror.com/@react-navigation/bottom-tabs/-/bottom-tabs-6.6.1.tgz" @@ -2579,7 +2586,14 @@ resolved "https://registry.npmmirror.com/@types/prop-types/-/prop-types-15.7.14.tgz" integrity sha512-gNMvNH49DJ7OJYv+KAKn0Xp45p8PLl6zo2YnvDIbTd4J6MER2BmWN49TG7n9LvkyihINxeKW8+3bfS2yDC9dzQ== -"@types/ramda@^0.27.40", "@types/ramda@^0.27.44": +"@types/ramda@^0.27.40": + version "0.27.66" + resolved "https://registry.npmmirror.com/@types/ramda/-/ramda-0.27.66.tgz" + integrity sha512-i2YW+E2U6NfMt3dp0RxNcejox+bxJUNDjB7BpYuRuoHIzv5juPHkJkNgcUOu+YSQEmaWu8cnAo/8r63C0NnuVA== + dependencies: + ts-toolbelt "^6.15.1" + +"@types/ramda@^0.27.44": version "0.27.66" resolved "https://registry.npmmirror.com/@types/ramda/-/ramda-0.27.66.tgz" integrity sha512-i2YW+E2U6NfMt3dp0RxNcejox+bxJUNDjB7BpYuRuoHIzv5juPHkJkNgcUOu+YSQEmaWu8cnAo/8r63C0NnuVA== @@ -2890,7 +2904,14 @@ ansi-regex@^6.0.1: resolved "https://registry.npmmirror.com/ansi-regex/-/ansi-regex-6.1.0.tgz" integrity sha512-7HSX4QQb4CspciLpVFwyRe79O3xsIZDDLER21kERQ71oaPodF8jL725AgJMFAYbooIqolJoRLuM81SpeUkpkvA== -ansi-styles@^3.2.0, ansi-styles@^3.2.1: +ansi-styles@^3.2.0: + version "3.2.1" + resolved "https://registry.npmmirror.com/ansi-styles/-/ansi-styles-3.2.1.tgz" + integrity sha512-VT0ZI6kZRdTh8YyJw3SMbYm/u+NqfsAxEpWO0Pf9sq8/e94WxxOpPKx9FR1FlyCtOVDNOQ+8ntlqFxiRc+r5qA== + dependencies: + color-convert "^1.9.0" + +ansi-styles@^3.2.1: version "3.2.1" resolved "https://registry.npmmirror.com/ansi-styles/-/ansi-styles-3.2.1.tgz" integrity sha512-VT0ZI6kZRdTh8YyJw3SMbYm/u+NqfsAxEpWO0Pf9sq8/e94WxxOpPKx9FR1FlyCtOVDNOQ+8ntlqFxiRc+r5qA== @@ -3171,13 +3192,6 @@ babel-plugin-react-native-web@~0.19.13: resolved "https://registry.npmmirror.com/babel-plugin-react-native-web/-/babel-plugin-react-native-web-0.19.13.tgz" integrity sha512-4hHoto6xaN23LCyZgL9LJZc3olmAxd7b6jDzlZnKXAh4rRAbZRKNBJoOOdp46OBqgy+K0t0guTj5/mhA8inymQ== -babel-plugin-syntax-hermes-parser@0.25.1, babel-plugin-syntax-hermes-parser@^0.25.1: - version "0.25.1" - resolved "https://registry.npmmirror.com/babel-plugin-syntax-hermes-parser/-/babel-plugin-syntax-hermes-parser-0.25.1.tgz" - integrity sha512-IVNpGzboFLfXZUAwkLFcI/bnqVbwky0jP3eBno4HKtqvQJAHBLdgxiG6lQ4to0+Q/YCN3PO0od5NZwIKyY4REQ== - dependencies: - hermes-parser "0.25.1" - babel-plugin-syntax-hermes-parser@^0.23.1: version "0.23.1" resolved "https://registry.npmmirror.com/babel-plugin-syntax-hermes-parser/-/babel-plugin-syntax-hermes-parser-0.23.1.tgz" @@ -3185,6 +3199,13 @@ babel-plugin-syntax-hermes-parser@^0.23.1: dependencies: hermes-parser "0.23.1" +babel-plugin-syntax-hermes-parser@^0.25.1, babel-plugin-syntax-hermes-parser@0.25.1: + version "0.25.1" + resolved "https://registry.npmmirror.com/babel-plugin-syntax-hermes-parser/-/babel-plugin-syntax-hermes-parser-0.25.1.tgz" + integrity sha512-IVNpGzboFLfXZUAwkLFcI/bnqVbwky0jP3eBno4HKtqvQJAHBLdgxiG6lQ4to0+Q/YCN3PO0od5NZwIKyY4REQ== + dependencies: + hermes-parser "0.25.1" + babel-plugin-transform-flow-enums@^0.0.2: version "0.0.2" resolved "https://registry.npmmirror.com/babel-plugin-transform-flow-enums/-/babel-plugin-transform-flow-enums-0.0.2.tgz" @@ -3336,13 +3357,6 @@ bplist-creator@0.1.0: dependencies: stream-buffers "2.2.x" -bplist-parser@0.3.1: - version "0.3.1" - resolved "https://registry.npmmirror.com/bplist-parser/-/bplist-parser-0.3.1.tgz" - integrity sha512-PyJxiNtA5T2PlLIeBot4lbp7rj4OadzjnMZD/G5zuBNt8ei/yCU7+wW0h2bag9vr8c+/WuRWmSxbqAl9hL1rBA== - dependencies: - big-integer "1.6.x" - bplist-parser@^0.3.1: version "0.3.2" resolved "https://registry.npmmirror.com/bplist-parser/-/bplist-parser-0.3.2.tgz" @@ -3350,6 +3364,13 @@ bplist-parser@^0.3.1: dependencies: big-integer "1.6.x" +bplist-parser@0.3.1: + version "0.3.1" + resolved "https://registry.npmmirror.com/bplist-parser/-/bplist-parser-0.3.1.tgz" + integrity sha512-PyJxiNtA5T2PlLIeBot4lbp7rj4OadzjnMZD/G5zuBNt8ei/yCU7+wW0h2bag9vr8c+/WuRWmSxbqAl9hL1rBA== + dependencies: + big-integer "1.6.x" + brace-expansion@^1.1.7: version "1.1.11" resolved "https://registry.npmmirror.com/brace-expansion/-/brace-expansion-1.1.11.tgz" @@ -3500,7 +3521,12 @@ callsites@^3.0.0: resolved "https://registry.npmmirror.com/callsites/-/callsites-3.1.0.tgz" integrity sha512-P8BjAsXvZS+VIDUI11hHCQEv74YT67YUi5JJFNWIqL235sBmjX4+qx9Muvls5ivyNENctx46xQLQ3aTuE7ssaQ== -camelcase@^5.0.0, camelcase@^5.3.1: +camelcase@^5.0.0: + version "5.3.1" + resolved "https://registry.npmmirror.com/camelcase/-/camelcase-5.3.1.tgz" + integrity sha512-L28STB170nwWS63UjtlEOE3dldQApaJXZkOI1uMFfzf3rRuPegHaHesyee+YxQ+W6SvRDQV6UrdOdRiR153wJg== + +camelcase@^5.3.1: version "5.3.1" resolved "https://registry.npmmirror.com/camelcase/-/camelcase-5.3.1.tgz" integrity sha512-L28STB170nwWS63UjtlEOE3dldQApaJXZkOI1uMFfzf3rRuPegHaHesyee+YxQ+W6SvRDQV6UrdOdRiR153wJg== @@ -3520,7 +3546,16 @@ caniuse-lite@^1.0.30001716: resolved "https://registry.npmmirror.com/caniuse-lite/-/caniuse-lite-1.0.30001718.tgz" integrity sha512-AflseV1ahcSunK53NfEs9gFWgOEmzr0f+kaMFA4xiLZlr9Hzt7HxcSpIFcnNCUkz6R6dWKa54rUz3HUmI3nVcw== -chalk@^2.0.1, chalk@^2.4.2: +chalk@^2.0.1: + version "2.4.2" + resolved "https://registry.npmmirror.com/chalk/-/chalk-2.4.2.tgz" + integrity sha512-Mti+f9lpJNcwF4tWV8/OrTTtF1gZi+f8FqlyAdouralcFWFQWF2+NgCHShjkCb+IFBLq9buZwE1xckQU4peSuQ== + dependencies: + ansi-styles "^3.2.1" + escape-string-regexp "^1.0.5" + supports-color "^5.3.0" + +chalk@^2.4.2: version "2.4.2" resolved "https://registry.npmmirror.com/chalk/-/chalk-2.4.2.tgz" integrity sha512-Mti+f9lpJNcwF4tWV8/OrTTtF1gZi+f8FqlyAdouralcFWFQWF2+NgCHShjkCb+IFBLq9buZwE1xckQU4peSuQ== @@ -3617,7 +3652,12 @@ ci-info@^2.0.0: resolved "https://registry.npmmirror.com/ci-info/-/ci-info-2.0.0.tgz" integrity sha512-5tK7EtrZ0N+OLFMthtqOj4fI2Jeb88C4CAZPu25LDVUgXJ0A3Js4PMGqrn0JU1W0Mh1/Z8wZzYPxqUrXeBboCQ== -ci-info@^3.2.0, ci-info@^3.3.0: +ci-info@^3.2.0: + version "3.9.0" + resolved "https://registry.npmmirror.com/ci-info/-/ci-info-3.9.0.tgz" + integrity sha512-NIxF55hv4nSqQswkAeiOi1r83xy8JldOFDTWiug55KBu9Jnblncd2U6ViHmYgHf01TPZS77NJBhBMKdWj9HQMQ== + +ci-info@^3.3.0: version "3.9.0" resolved "https://registry.npmmirror.com/ci-info/-/ci-info-3.9.0.tgz" integrity sha512-NIxF55hv4nSqQswkAeiOi1r83xy8JldOFDTWiug55KBu9Jnblncd2U6ViHmYgHf01TPZS77NJBhBMKdWj9HQMQ== @@ -3706,16 +3746,16 @@ color-convert@^2.0.1: dependencies: color-name "~1.1.4" -color-name@1.1.3: - version "1.1.3" - resolved "https://registry.npmmirror.com/color-name/-/color-name-1.1.3.tgz" - integrity sha512-72fSenhMw2HZMTVHeCA9KCmpEIbzWiQsjN+BHcBbS9vr1mtt+vJjPdksIBNUmKAW8TFUDPJK5SUU3QhE9NEXDw== - color-name@^1.0.0, color-name@~1.1.4: version "1.1.4" resolved "https://registry.npmmirror.com/color-name/-/color-name-1.1.4.tgz" integrity sha512-dOy+3AuW3a2wNbZHIuMZpTcgjGuLU/uBL/ubcZF9OXbDo8ff4O8yVp5Bf0efS8uEoYo5q4Fx7dY9OgQGXgAsQA== +color-name@1.1.3: + version "1.1.3" + resolved "https://registry.npmmirror.com/color-name/-/color-name-1.1.3.tgz" + integrity sha512-72fSenhMw2HZMTVHeCA9KCmpEIbzWiQsjN+BHcBbS9vr1mtt+vJjPdksIBNUmKAW8TFUDPJK5SUU3QhE9NEXDw== + color-string@^1.6.0, color-string@^1.9.0: version "1.9.1" resolved "https://registry.npmmirror.com/color-string/-/color-string-1.9.1.tgz" @@ -3757,7 +3797,12 @@ command-exists@^1.2.8: resolved "https://registry.npmmirror.com/command-exists/-/command-exists-1.2.9.tgz" integrity sha512-LTQ/SGc+s0Xc0Fu5WaKnR0YiygZkm9eKFvyS+fRsU7/ZWFF8ykFM6Pc9aCVf1+xasOOZpO3BAVgVrKvsqKHV7w== -commander@^12.0.0, commander@^12.1.0: +commander@^12.0.0: + version "12.1.0" + resolved "https://registry.npmmirror.com/commander/-/commander-12.1.0.tgz" + integrity sha512-Vw8qHK3bZM9y/P10u3Vib8o/DdkvA2OtPtZvD871QKjy74Wj1WSKFILMPRPSdUSx5RFK1arlJzEtA4PkFgnbuA== + +commander@^12.1.0: version "12.1.0" resolved "https://registry.npmmirror.com/commander/-/commander-12.1.0.tgz" integrity sha512-Vw8qHK3bZM9y/P10u3Vib8o/DdkvA2OtPtZvD871QKjy74Wj1WSKFILMPRPSdUSx5RFK1arlJzEtA4PkFgnbuA== @@ -3923,7 +3968,7 @@ css-color-keywords@^1.0.0: css-in-js-utils@^3.1.0: version "3.1.0" - resolved "https://registry.npmmirror.com/css-in-js-utils/-/css-in-js-utils-3.1.0.tgz#640ae6a33646d401fc720c54fc61c42cd76ae2bb" + resolved "https://registry.npmmirror.com/css-in-js-utils/-/css-in-js-utils-3.1.0.tgz" integrity sha512-fJAcud6B3rRu+KHYk+Bwf+WFL2MDCJJ1XG9x137tJQ0xYxor7XziQtuGFbWNdqrvF4Tk26O3H73nfVqXt/fW1A== dependencies: hyphenate-style-name "^1.0.3" @@ -4047,27 +4092,48 @@ dayjs@^1.8.15: resolved "https://registry.npmmirror.com/dayjs/-/dayjs-1.11.13.tgz" integrity sha512-oaMBel6gjolK862uaPQOVTA7q3TZhuSvuMQAAglQDOWYO9A91IrAOUJEyKVlqJlHE0vq5p5UXxzdPfMH/x6xNg== -debug@2.6.9, debug@^2.2.0, debug@^2.6.9: +debug@^2.2.0: version "2.6.9" resolved "https://registry.npmmirror.com/debug/-/debug-2.6.9.tgz" integrity sha512-bC7ElrdJaJnPbAP+1EotYvqZsb3ecl5wi6Bfi6BJTUcNowp6cvspg0jXznRTKDjm/E7AdgFBVeAPVMNcKGsHMA== dependencies: ms "2.0.0" -debug@4, debug@^4.1.0, debug@^4.1.1, debug@^4.3.1, debug@^4.3.2, debug@^4.3.4, debug@^4.3.5: - version "4.4.1" - resolved "https://registry.npmmirror.com/debug/-/debug-4.4.1.tgz" - integrity sha512-KcKCqiftBJcZr++7ykoDIEwSa3XWowTfNPo92BYxjXiyYEVrUQh2aLyhxBCwww+heortUFxEJYcRzosstTEBYQ== +debug@^2.6.9: + version "2.6.9" + resolved "https://registry.npmmirror.com/debug/-/debug-2.6.9.tgz" + integrity sha512-bC7ElrdJaJnPbAP+1EotYvqZsb3ecl5wi6Bfi6BJTUcNowp6cvspg0jXznRTKDjm/E7AdgFBVeAPVMNcKGsHMA== dependencies: - ms "^2.1.3" + ms "2.0.0" -debug@^3.1.0, debug@^3.2.7: +debug@^3.1.0: version "3.2.7" resolved "https://registry.npmmirror.com/debug/-/debug-3.2.7.tgz" integrity sha512-CFjzYYAi4ThfiQvizrFQevTTXHtnCqWfe7x1AhgEscTz6ZbLbfoLRLPugTQyBth6f8ZERVUSyWHFD/7Wu4t1XQ== dependencies: ms "^2.1.1" +debug@^3.2.7: + version "3.2.7" + resolved "https://registry.npmmirror.com/debug/-/debug-3.2.7.tgz" + integrity sha512-CFjzYYAi4ThfiQvizrFQevTTXHtnCqWfe7x1AhgEscTz6ZbLbfoLRLPugTQyBth6f8ZERVUSyWHFD/7Wu4t1XQ== + dependencies: + ms "^2.1.1" + +debug@^4.1.0, debug@^4.1.1, debug@^4.3.1, debug@^4.3.2, debug@^4.3.4, debug@^4.3.5, debug@4: + version "4.4.1" + resolved "https://registry.npmmirror.com/debug/-/debug-4.4.1.tgz" + integrity sha512-KcKCqiftBJcZr++7ykoDIEwSa3XWowTfNPo92BYxjXiyYEVrUQh2aLyhxBCwww+heortUFxEJYcRzosstTEBYQ== + dependencies: + ms "^2.1.3" + +debug@2.6.9: + version "2.6.9" + resolved "https://registry.npmmirror.com/debug/-/debug-2.6.9.tgz" + integrity sha512-bC7ElrdJaJnPbAP+1EotYvqZsb3ecl5wi6Bfi6BJTUcNowp6cvspg0jXznRTKDjm/E7AdgFBVeAPVMNcKGsHMA== + dependencies: + ms "2.0.0" + decamelize@^1.2.0: version "1.2.0" resolved "https://registry.npmmirror.com/decamelize/-/decamelize-1.2.0.tgz" @@ -4350,7 +4416,12 @@ entities@^3.0.1: resolved "https://registry.npmmirror.com/entities/-/entities-3.0.1.tgz" integrity sha512-WiyBqoomrwMdFG1e0kqvASYfnlb0lp8M5o5Fw2OFq1hNZxxcNk8Ik0Xm7LxzBhuidnZB/UtBqVCgUz3kBOP51Q== -entities@^4.2.0, entities@^4.4.0: +entities@^4.2.0: + version "4.5.0" + resolved "https://registry.npmmirror.com/entities/-/entities-4.5.0.tgz" + integrity sha512-V0hjH4dGPh9Ao5p0MoRY6BVqtwCjhz6vI5LT8AJ55H+4g9/4vbHx1I54fS0XuclLhDHArPQCiMjDxjaL8fPxhw== + +entities@^4.4.0: version "4.5.0" resolved "https://registry.npmmirror.com/entities/-/entities-4.5.0.tgz" integrity sha512-V0hjH4dGPh9Ao5p0MoRY6BVqtwCjhz6vI5LT8AJ55H+4g9/4vbHx1I54fS0XuclLhDHArPQCiMjDxjaL8fPxhw== @@ -5024,14 +5095,14 @@ fast-glob@^3.2.5, fast-glob@^3.2.9, fast-glob@^3.3.2: merge2 "^1.3.0" micromatch "^4.0.8" -fast-json-stable-stringify@2.x, fast-json-stable-stringify@^2.1.0: +fast-json-stable-stringify@^2.1.0, fast-json-stable-stringify@2.x: version "2.1.0" resolved "https://registry.npmmirror.com/fast-json-stable-stringify/-/fast-json-stable-stringify-2.1.0.tgz" integrity sha512-lhd/wF+Lk98HZoTCtlVraHtfh5XYijIjalXck7saUtuanSDyLMxnHhSXEDJqHxD7msR8D0uCmqlkwjCV8xvwHw== fast-loops@^1.1.3: version "1.1.4" - resolved "https://registry.npmmirror.com/fast-loops/-/fast-loops-1.1.4.tgz#61bc77d518c0af5073a638c6d9d5c7683f069ce2" + resolved "https://registry.npmmirror.com/fast-loops/-/fast-loops-1.1.4.tgz" integrity sha512-8dbd3XWoKCTms18ize6JmQF1SFnnfj5s0B7rRry22EofgMu7B6LKHVh+XfFqFGsqnbH54xgeO83PzpKI+ODhlg== fast-uri@^3.0.1: @@ -5212,17 +5283,7 @@ fresh@0.5.2: resolved "https://registry.npmmirror.com/fresh/-/fresh-0.5.2.tgz" integrity sha512-zJ2mQYM18rEFOudeV4GShTGIQ7RbzA7ozbU9I/XBpm7kqgMywgmylMwXHxZJmkVoYkna9d2pVXVXPdYTP9ej8Q== -fs-extra@9.0.0: - version "9.0.0" - resolved "https://registry.npmmirror.com/fs-extra/-/fs-extra-9.0.0.tgz" - integrity sha512-pmEYSk3vYsG/bF651KPUXZ+hvjpgWYw/Gc7W9NFUe3ZVLczKKWIij3IKpOrQcdw4TILtibFslZ0UmR8Vvzig4g== - dependencies: - at-least-node "^1.0.0" - graceful-fs "^4.2.0" - jsonfile "^6.0.1" - universalify "^1.0.0" - -fs-extra@^8.1.0, fs-extra@~8.1.0: +fs-extra@^8.1.0: version "8.1.0" resolved "https://registry.npmmirror.com/fs-extra/-/fs-extra-8.1.0.tgz" integrity sha512-yhlQgA6mnOJUKOsRUFsgJdQCvkKhcz8tlZG5HBQfReYZy46OwLcY+Zia0mtdHsOo9y/hP+CxMN0TU9QxoOtG4g== @@ -5241,6 +5302,25 @@ fs-extra@^9.0.0, fs-extra@^9.1.0: jsonfile "^6.0.1" universalify "^2.0.0" +fs-extra@~8.1.0: + version "8.1.0" + resolved "https://registry.npmmirror.com/fs-extra/-/fs-extra-8.1.0.tgz" + integrity sha512-yhlQgA6mnOJUKOsRUFsgJdQCvkKhcz8tlZG5HBQfReYZy46OwLcY+Zia0mtdHsOo9y/hP+CxMN0TU9QxoOtG4g== + dependencies: + graceful-fs "^4.2.0" + jsonfile "^4.0.0" + universalify "^0.1.0" + +fs-extra@9.0.0: + version "9.0.0" + resolved "https://registry.npmmirror.com/fs-extra/-/fs-extra-9.0.0.tgz" + integrity sha512-pmEYSk3vYsG/bF651KPUXZ+hvjpgWYw/Gc7W9NFUe3ZVLczKKWIij3IKpOrQcdw4TILtibFslZ0UmR8Vvzig4g== + dependencies: + at-least-node "^1.0.0" + graceful-fs "^4.2.0" + jsonfile "^6.0.1" + universalify "^1.0.0" + fs-minipass@^2.0.0: version "2.1.0" resolved "https://registry.npmmirror.com/fs-minipass/-/fs-minipass-2.1.0.tgz" @@ -5383,7 +5463,43 @@ glob@^10.2.2, glob@^10.3.10, glob@^10.4.2: package-json-from-dist "^1.0.0" path-scurry "^1.11.1" -glob@^7.1.1, glob@^7.1.3, glob@^7.1.4, glob@^7.2.0: +glob@^7.1.1: + version "7.2.3" + resolved "https://registry.npmmirror.com/glob/-/glob-7.2.3.tgz" + integrity sha512-nFR0zLpU2YCaRxwoCJvL6UvCH2JFyFVIvwTLsIf21AuHlMskA1hhTdk+LlYJtOlYt9v6dvszD2BGRqBL+iQK9Q== + 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" + +glob@^7.1.3: + version "7.2.3" + resolved "https://registry.npmmirror.com/glob/-/glob-7.2.3.tgz" + integrity sha512-nFR0zLpU2YCaRxwoCJvL6UvCH2JFyFVIvwTLsIf21AuHlMskA1hhTdk+LlYJtOlYt9v6dvszD2BGRqBL+iQK9Q== + 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" + +glob@^7.1.4: + version "7.2.3" + resolved "https://registry.npmmirror.com/glob/-/glob-7.2.3.tgz" + integrity sha512-nFR0zLpU2YCaRxwoCJvL6UvCH2JFyFVIvwTLsIf21AuHlMskA1hhTdk+LlYJtOlYt9v6dvszD2BGRqBL+iQK9Q== + 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" + +glob@^7.2.0: version "7.2.3" resolved "https://registry.npmmirror.com/glob/-/glob-7.2.3.tgz" integrity sha512-nFR0zLpU2YCaRxwoCJvL6UvCH2JFyFVIvwTLsIf21AuHlMskA1hhTdk+LlYJtOlYt9v6dvszD2BGRqBL+iQK9Q== @@ -5590,7 +5706,7 @@ human-signals@^2.1.0: hyphenate-style-name@^1.0.3: version "1.1.0" - resolved "https://registry.npmmirror.com/hyphenate-style-name/-/hyphenate-style-name-1.1.0.tgz#1797bf50369588b47b72ca6d5e65374607cf4436" + resolved "https://registry.npmmirror.com/hyphenate-style-name/-/hyphenate-style-name-1.1.0.tgz" integrity sha512-WDC/ui2VVRrz3jOVi+XtjqkDjiVjTtFaAGiW37k6b+ohyQ5wYDOGkvCZa8+H0nx3gyvv0+BST9xuOgIyGQ00gw== i18next@^24.2.3: @@ -5670,7 +5786,7 @@ inflight@^1.0.4: once "^1.3.0" wrappy "1" -inherits@2, inherits@2.0.4, inherits@^2.0.3, inherits@^2.0.4, inherits@~2.0.3: +inherits@^2.0.3, inherits@^2.0.4, inherits@~2.0.3, inherits@2, inherits@2.0.4: version "2.0.4" resolved "https://registry.npmmirror.com/inherits/-/inherits-2.0.4.tgz" integrity sha512-k/vGaX4/Yla3WzyMCvTQOXYeIHvqOKtnqBduzTHpzpQZzAskKMhZ2K+EnBiSM9zGSoIFeMpXKxa4dYeZIQqewQ== @@ -5682,7 +5798,7 @@ ini@~1.3.0: inline-style-prefixer@^6.0.1: version "6.0.4" - resolved "https://registry.npmmirror.com/inline-style-prefixer/-/inline-style-prefixer-6.0.4.tgz#4290ed453ab0e4441583284ad86e41ad88384f44" + resolved "https://registry.npmmirror.com/inline-style-prefixer/-/inline-style-prefixer-6.0.4.tgz" integrity sha512-FwXmZC2zbeeS7NzGjJ6pAiqRhXR0ugUShSNb6GApMl6da0/XGc4MOJsoWAywia52EEWbXNSy0pzkwz/+Y+swSg== dependencies: css-in-js-utils "^3.1.0" @@ -5705,7 +5821,7 @@ internal-slot@^1.1.0: hasown "^2.0.2" side-channel "^1.1.0" -invariant@2.2.4, invariant@^2.2.4: +invariant@^2.2.4, invariant@2.2.4: version "2.2.4" resolved "https://registry.npmmirror.com/invariant/-/invariant-2.2.4.tgz" integrity sha512-phJfQVBuaJM5raOpJjSfkiD6BpbCE4Ns//LaXl6wGYtUBY83nWS6Rf9tXm2e8VaK60JEjYldbPif/A2B1C2gNA== @@ -6476,56 +6592,11 @@ lighthouse-logger@^1.0.0: debug "^2.6.9" marky "^1.2.2" -lightningcss-darwin-arm64@1.27.0: - version "1.27.0" - resolved "https://registry.npmmirror.com/lightningcss-darwin-arm64/-/lightningcss-darwin-arm64-1.27.0.tgz#565bd610533941cba648a70e105987578d82f996" - integrity sha512-Gl/lqIXY+d+ySmMbgDf0pgaWSqrWYxVHoc88q+Vhf2YNzZ8DwoRzGt5NZDVqqIW5ScpSnmmjcgXP87Dn2ylSSQ== - lightningcss-darwin-x64@1.27.0: version "1.27.0" resolved "https://registry.npmmirror.com/lightningcss-darwin-x64/-/lightningcss-darwin-x64-1.27.0.tgz" integrity sha512-0+mZa54IlcNAoQS9E0+niovhyjjQWEMrwW0p2sSdLRhLDc8LMQ/b67z7+B5q4VmjYCMSfnFi3djAAQFIDuj/Tg== -lightningcss-freebsd-x64@1.27.0: - version "1.27.0" - resolved "https://registry.npmmirror.com/lightningcss-freebsd-x64/-/lightningcss-freebsd-x64-1.27.0.tgz#a7c3c4d6ee18dffeb8fa69f14f8f9267f7dc0c34" - integrity sha512-n1sEf85fePoU2aDN2PzYjoI8gbBqnmLGEhKq7q0DKLj0UTVmOTwDC7PtLcy/zFxzASTSBlVQYJUhwIStQMIpRA== - -lightningcss-linux-arm-gnueabihf@1.27.0: - version "1.27.0" - resolved "https://registry.npmmirror.com/lightningcss-linux-arm-gnueabihf/-/lightningcss-linux-arm-gnueabihf-1.27.0.tgz#c7c16432a571ec877bf734fe500e4a43d48c2814" - integrity sha512-MUMRmtdRkOkd5z3h986HOuNBD1c2lq2BSQA1Jg88d9I7bmPGx08bwGcnB75dvr17CwxjxD6XPi3Qh8ArmKFqCA== - -lightningcss-linux-arm64-gnu@1.27.0: - version "1.27.0" - resolved "https://registry.npmmirror.com/lightningcss-linux-arm64-gnu/-/lightningcss-linux-arm64-gnu-1.27.0.tgz#cfd9e18df1cd65131da286ddacfa3aee6862a752" - integrity sha512-cPsxo1QEWq2sfKkSq2Bq5feQDHdUEwgtA9KaB27J5AX22+l4l0ptgjMZZtYtUnteBofjee+0oW1wQ1guv04a7A== - -lightningcss-linux-arm64-musl@1.27.0: - version "1.27.0" - resolved "https://registry.npmmirror.com/lightningcss-linux-arm64-musl/-/lightningcss-linux-arm64-musl-1.27.0.tgz#6682ff6b9165acef9a6796bd9127a8e1247bb0ed" - integrity sha512-rCGBm2ax7kQ9pBSeITfCW9XSVF69VX+fm5DIpvDZQl4NnQoMQyRwhZQm9pd59m8leZ1IesRqWk2v/DntMo26lg== - -lightningcss-linux-x64-gnu@1.27.0: - version "1.27.0" - resolved "https://registry.npmmirror.com/lightningcss-linux-x64-gnu/-/lightningcss-linux-x64-gnu-1.27.0.tgz#714221212ad184ddfe974bbb7dbe9300dfde4bc0" - integrity sha512-Dk/jovSI7qqhJDiUibvaikNKI2x6kWPN79AQiD/E/KeQWMjdGe9kw51RAgoWFDi0coP4jinaH14Nrt/J8z3U4A== - -lightningcss-linux-x64-musl@1.27.0: - version "1.27.0" - resolved "https://registry.npmmirror.com/lightningcss-linux-x64-musl/-/lightningcss-linux-x64-musl-1.27.0.tgz#247958daf622a030a6dc2285afa16b7184bdf21e" - integrity sha512-QKjTxXm8A9s6v9Tg3Fk0gscCQA1t/HMoF7Woy1u68wCk5kS4fR+q3vXa1p3++REW784cRAtkYKrPy6JKibrEZA== - -lightningcss-win32-arm64-msvc@1.27.0: - version "1.27.0" - resolved "https://registry.npmmirror.com/lightningcss-win32-arm64-msvc/-/lightningcss-win32-arm64-msvc-1.27.0.tgz#64cfe473c264ef5dc275a4d57a516d77fcac6bc9" - integrity sha512-/wXegPS1hnhkeG4OXQKEMQeJd48RDC3qdh+OA8pCuOPCyvnm/yEayrJdJVqzBsqpy1aJklRCVxscpFur80o6iQ== - -lightningcss-win32-x64-msvc@1.27.0: - version "1.27.0" - resolved "https://registry.npmmirror.com/lightningcss-win32-x64-msvc/-/lightningcss-win32-x64-msvc-1.27.0.tgz#237d0dc87d9cdc9cf82536bcbc07426fa9f3f422" - integrity sha512-/OJLj94Zm/waZShL8nB5jsNj3CfNATLCTyFxZyouilfTmSoLDX7VlVAmhPHoZWVFp4vdmoiEbPEYC8HID3m6yw== - lightningcss@~1.27.0: version "1.27.0" resolved "https://registry.npmmirror.com/lightningcss/-/lightningcss-1.27.0.tgz" @@ -6714,7 +6785,7 @@ memoize-one@^5.0.0: memoize-one@^6.0.0: version "6.0.0" - resolved "https://registry.npmmirror.com/memoize-one/-/memoize-one-6.0.0.tgz#b2591b871ed82948aee4727dc6abceeeac8c1045" + resolved "https://registry.npmmirror.com/memoize-one/-/memoize-one-6.0.0.tgz" integrity sha512-rkpe71W0N0c0Xz6QD0eJETuWAJGnJ9afsl1srmwPrI+yBCkge5EycXXbYRyvL29zZVUWQCY7InPRCv3GDXuZNw== merge-options@^3.0.4: @@ -6760,7 +6831,7 @@ metro-cache@0.81.5: flow-enums-runtime "^0.0.6" metro-core "0.81.5" -metro-config@0.81.5, metro-config@^0.81.0: +metro-config@^0.81.0, metro-config@0.81.5: version "0.81.5" resolved "https://registry.npmmirror.com/metro-config/-/metro-config-0.81.5.tgz" integrity sha512-oDRAzUvj6RNRxratFdcVAqtAsg+T3qcKrGdqGZFUdwzlFJdHGR9Z413sW583uD2ynsuOjA2QB6US8FdwiBdNKg== @@ -6774,7 +6845,7 @@ metro-config@0.81.5, metro-config@^0.81.0: metro-core "0.81.5" metro-runtime "0.81.5" -metro-core@0.81.5, metro-core@^0.81.0: +metro-core@^0.81.0, metro-core@0.81.5: version "0.81.5" resolved "https://registry.npmmirror.com/metro-core/-/metro-core-0.81.5.tgz" integrity sha512-+2R0c8ByfV2N7CH5wpdIajCWa8escUFd8TukfoXyBq/vb6yTCsznoA25FhNXJ+MC/cz1L447Zj3vdUfCXIZBwg== @@ -6813,7 +6884,7 @@ metro-resolver@0.81.5: dependencies: flow-enums-runtime "^0.0.6" -metro-runtime@0.81.5, metro-runtime@^0.81.0: +metro-runtime@^0.81.0, metro-runtime@0.81.5: version "0.81.5" resolved "https://registry.npmmirror.com/metro-runtime/-/metro-runtime-0.81.5.tgz" integrity sha512-M/Gf71ictUKP9+77dV/y8XlAWg7xl76uhU7ggYFUwEdOHHWPG6gLBr1iiK0BmTjPFH8yRo/xyqMli4s3oGorPQ== @@ -6821,7 +6892,7 @@ metro-runtime@0.81.5, metro-runtime@^0.81.0: "@babel/runtime" "^7.25.0" flow-enums-runtime "^0.0.6" -metro-source-map@0.81.5, metro-source-map@^0.81.0: +metro-source-map@^0.81.0, metro-source-map@0.81.5: version "0.81.5" resolved "https://registry.npmmirror.com/metro-source-map/-/metro-source-map-0.81.5.tgz" integrity sha512-Jz+CjvCKLNbJZYJTBeN3Kq9kIJf6b61MoLBdaOQZJ5Ajhw6Pf95Nn21XwA8BwfUYgajsi6IXsp/dTZsYJbN00Q== @@ -6880,7 +6951,7 @@ metro-transform-worker@0.81.5: metro-transform-plugins "0.81.5" nullthrows "^1.1.1" -metro@0.81.5, metro@^0.81.0: +metro@^0.81.0, metro@0.81.5: version "0.81.5" resolved "https://registry.npmmirror.com/metro/-/metro-0.81.5.tgz" integrity sha512-YpFF0DDDpDVygeca2mAn7K0+us+XKmiGk4rIYMz/CRdjFoCGqAei/IQSpV0UrGfQbToSugpMQeQJveaWSH88Hg== @@ -6934,16 +7005,16 @@ micromatch@^4.0.4, micromatch@^4.0.8: braces "^3.0.3" picomatch "^2.3.1" -mime-db@1.52.0: - version "1.52.0" - resolved "https://registry.npmmirror.com/mime-db/-/mime-db-1.52.0.tgz" - integrity sha512-sPU4uV7dYlvtWJxwwxHD0PuihVNiE7TyAbQ5SWxDCB9mUYvOgroQOwYQQOKPJ8CIbE+1ETVlOoK1UC2nU3gYvg== - "mime-db@>= 1.43.0 < 2": version "1.54.0" resolved "https://registry.npmmirror.com/mime-db/-/mime-db-1.54.0.tgz" integrity sha512-aU5EJuIN2WDemCcAp2vFBfp/m4EAhWJnUNSSw0ixs7/kXbd6Pg64EmwJkNdFhB8aWt1sH2CTXrLxo/iAGV3oPQ== +mime-db@1.52.0: + version "1.52.0" + resolved "https://registry.npmmirror.com/mime-db/-/mime-db-1.52.0.tgz" + integrity sha512-sPU4uV7dYlvtWJxwwxHD0PuihVNiE7TyAbQ5SWxDCB9mUYvOgroQOwYQQOKPJ8CIbE+1ETVlOoK1UC2nU3gYvg== + mime-types@^2.1.12, mime-types@^2.1.27, mime-types@^2.1.35, mime-types@~2.1.24, mime-types@~2.1.34: version "2.1.35" resolved "https://registry.npmmirror.com/mime-types/-/mime-types-2.1.35.tgz" @@ -6951,16 +7022,16 @@ mime-types@^2.1.12, mime-types@^2.1.27, mime-types@^2.1.35, mime-types@~2.1.24, dependencies: mime-db "1.52.0" -mime@1.6.0: - version "1.6.0" - resolved "https://registry.npmmirror.com/mime/-/mime-1.6.0.tgz" - integrity sha512-x0Vn8spI+wuJ1O6S7gnbaQg8Pxh4NNHb7KSINmEWKiPE4RKOplvijn+NkmYmmRgP68mc70j2EbeTFRsrswaQeg== - mime@^2.4.1: version "2.6.0" resolved "https://registry.npmmirror.com/mime/-/mime-2.6.0.tgz" integrity sha512-USPkMeET31rOMiarsBNIHZKLGgvKc/LrjofAnBlOttf5ajRvqiRA8QsenbcooctK6d6Ts6aqZXBA+XbkKthiQg== +mime@1.6.0: + version "1.6.0" + resolved "https://registry.npmmirror.com/mime/-/mime-1.6.0.tgz" + integrity sha512-x0Vn8spI+wuJ1O6S7gnbaQg8Pxh4NNHb7KSINmEWKiPE4RKOplvijn+NkmYmmRgP68mc70j2EbeTFRsrswaQeg== + mimic-fn@^1.0.0: version "1.2.0" resolved "https://registry.npmmirror.com/mimic-fn/-/mimic-fn-1.2.0.tgz" @@ -6983,7 +7054,14 @@ minimatch@^3.0.2, minimatch@^3.0.4, minimatch@^3.1.1, minimatch@^3.1.2: dependencies: brace-expansion "^1.1.7" -minimatch@^9.0.4, minimatch@^9.0.5: +minimatch@^9.0.4: + version "9.0.5" + resolved "https://registry.npmmirror.com/minimatch/-/minimatch-9.0.5.tgz" + integrity sha512-G6T0ZX48xgozx7587koeX9Ys2NYy6Gmv//P89sEte9V9whIapMNF4idKxnW2QtCcLiTWlb/wfCabAtAFWhhBow== + dependencies: + brace-expansion "^2.0.1" + +minimatch@^9.0.5: version "9.0.5" resolved "https://registry.npmmirror.com/minimatch/-/minimatch-9.0.5.tgz" integrity sha512-G6T0ZX48xgozx7587koeX9Ys2NYy6Gmv//P89sEte9V9whIapMNF4idKxnW2QtCcLiTWlb/wfCabAtAFWhhBow== @@ -7023,16 +7101,16 @@ minipass@^3.0.0: dependencies: yallist "^4.0.0" -minipass@^5.0.0: - version "5.0.0" - resolved "https://registry.npmmirror.com/minipass/-/minipass-5.0.0.tgz" - integrity sha512-3FnjYuehv9k6ovOEbyOswadCDPX1piCfhV8ncmYtHOjuPwylVWsghTLo7rabjC3Rx5xD4HDx8Wm1xnMF7S5qFQ== - "minipass@^5.0.0 || ^6.0.2 || ^7.0.0", minipass@^7.0.3, minipass@^7.1.2: version "7.1.2" resolved "https://registry.npmmirror.com/minipass/-/minipass-7.1.2.tgz" integrity sha512-qOOzS1cBTWYF4BH8fVePDBOO9iptMnGUEZwNc/cMWnTV2nVLZ7VoNWEPHkYczZA0pdoA7dl6e7FL659nX9S2aw== +minipass@^5.0.0: + version "5.0.0" + resolved "https://registry.npmmirror.com/minipass/-/minipass-5.0.0.tgz" + integrity sha512-3FnjYuehv9k6ovOEbyOswadCDPX1piCfhV8ncmYtHOjuPwylVWsghTLo7rabjC3Rx5xD4HDx8Wm1xnMF7S5qFQ== + minizlib@^2.1.1: version "2.1.2" resolved "https://registry.npmmirror.com/minizlib/-/minizlib-2.1.2.tgz" @@ -7048,21 +7126,26 @@ mkdirp@^0.5.1: dependencies: minimist "^1.2.6" -mkdirp@^1.0.3, mkdirp@^1.0.4: +mkdirp@^1.0.3: version "1.0.4" resolved "https://registry.npmmirror.com/mkdirp/-/mkdirp-1.0.4.tgz" integrity sha512-vVqVZQyf3WLx2Shd0qJ9xuvqgAyKPLAiqITEtqW0oIUjzo3PePDd6fW9iFz30ef7Ysp/oiWqbhszeGWW2T6Gzw== -ms@2.0.0: - version "2.0.0" - resolved "https://registry.npmmirror.com/ms/-/ms-2.0.0.tgz" - integrity sha512-Tpp60P6IUJDTuOq/5Z8cdskzJujfwqfOTkrwIwj7IRISpnkJnT6SyJ4PCPnGMoFjC9ddhal5KVIYtAt97ix05A== +mkdirp@^1.0.4: + version "1.0.4" + resolved "https://registry.npmmirror.com/mkdirp/-/mkdirp-1.0.4.tgz" + integrity sha512-vVqVZQyf3WLx2Shd0qJ9xuvqgAyKPLAiqITEtqW0oIUjzo3PePDd6fW9iFz30ef7Ysp/oiWqbhszeGWW2T6Gzw== -ms@2.1.3, ms@^2.1.1, ms@^2.1.3: +ms@^2.1.1, ms@^2.1.3, ms@2.1.3: version "2.1.3" resolved "https://registry.npmmirror.com/ms/-/ms-2.1.3.tgz" integrity sha512-6FlzubTLZG3J2a/NVCAleEhjzq5oxgHyaCU9yYXvcLsvoVaHJq/s5xXI6/XXP6tz7R9xAOtHnSO/tXtF3WRTlA== +ms@2.0.0: + version "2.0.0" + resolved "https://registry.npmmirror.com/ms/-/ms-2.0.0.tgz" + integrity sha512-Tpp60P6IUJDTuOq/5Z8cdskzJujfwqfOTkrwIwj7IRISpnkJnT6SyJ4PCPnGMoFjC9ddhal5KVIYtAt97ix05A== + mz@^2.7.0: version "2.7.0" resolved "https://registry.npmmirror.com/mz/-/mz-2.7.0.tgz" @@ -7082,16 +7165,16 @@ natural-compare@^1.4.0: resolved "https://registry.npmmirror.com/natural-compare/-/natural-compare-1.4.0.tgz" integrity sha512-OWND8ei3VtNC9h7V60qff3SVobHr996CTwgxubgyQYEpg290h9J0buyECNNJexkFm5sOajh5G116RYA1c8ZMSw== -negotiator@0.6.3: - version "0.6.3" - resolved "https://registry.npmmirror.com/negotiator/-/negotiator-0.6.3.tgz" - integrity sha512-+EUsqGPLsM+j/zdChZjsnX51g4XrHFOIXwfnCVPGlQk/k5giakcKsuxCObBRu6DSm9opw/O6slWbJdghQM4bBg== - negotiator@~0.6.4: version "0.6.4" resolved "https://registry.npmmirror.com/negotiator/-/negotiator-0.6.4.tgz" integrity sha512-myRT3DiWPHqho5PrJaIRyaMv2kgYf0mUVgBNOYMuCH5Ki1yEiQaf/ZJuQ62nvpc44wL5WDbTX7yGJi1Neevw8w== +negotiator@0.6.3: + version "0.6.3" + resolved "https://registry.npmmirror.com/negotiator/-/negotiator-0.6.3.tgz" + integrity sha512-+EUsqGPLsM+j/zdChZjsnX51g4XrHFOIXwfnCVPGlQk/k5giakcKsuxCObBRu6DSm9opw/O6slWbJdghQM4bBg== + neo-async@^2.5.0, neo-async@^2.6.1: version "2.6.2" resolved "https://registry.npmmirror.com/neo-async/-/neo-async-2.6.2.tgz" @@ -7273,13 +7356,6 @@ object.values@^1.1.6, object.values@^1.2.0, object.values@^1.2.1: define-properties "^1.2.1" es-object-atoms "^1.0.0" -on-finished@2.4.1: - version "2.4.1" - resolved "https://registry.npmmirror.com/on-finished/-/on-finished-2.4.1.tgz" - integrity sha512-oVlzkg3ENAhCk2zdv7IJwd/QUD4z2RxRwpkcGY8psCVcCYZNq4wYnVWALHM+brtuJjePWiYF/ClmuDr8Ch5+kg== - dependencies: - ee-first "1.1.1" - on-finished@~2.3.0: version "2.3.0" resolved "https://registry.npmmirror.com/on-finished/-/on-finished-2.3.0.tgz" @@ -7287,6 +7363,13 @@ on-finished@~2.3.0: dependencies: ee-first "1.1.1" +on-finished@2.4.1: + version "2.4.1" + resolved "https://registry.npmmirror.com/on-finished/-/on-finished-2.4.1.tgz" + integrity sha512-oVlzkg3ENAhCk2zdv7IJwd/QUD4z2RxRwpkcGY8psCVcCYZNq4wYnVWALHM+brtuJjePWiYF/ClmuDr8Ch5+kg== + dependencies: + ee-first "1.1.1" + on-headers@~1.0.2: version "1.0.2" resolved "https://registry.npmmirror.com/on-headers/-/on-headers-1.0.2.tgz" @@ -7385,7 +7468,14 @@ p-limit@^2.0.0, p-limit@^2.2.0: dependencies: p-try "^2.0.0" -p-limit@^3.0.2, p-limit@^3.1.0: +p-limit@^3.0.2: + version "3.1.0" + resolved "https://registry.npmmirror.com/p-limit/-/p-limit-3.1.0.tgz" + integrity sha512-TYOanM3wGwNGsZN2cVTYPArw454xnXj5qmWF1bEoAc4+cU/ol7GVh7odevjp1FNHduHc3KZMcFduxU5Xc6uJRQ== + dependencies: + yocto-queue "^0.1.0" + +p-limit@^3.1.0: version "3.1.0" resolved "https://registry.npmmirror.com/p-limit/-/p-limit-3.1.0.tgz" integrity sha512-TYOanM3wGwNGsZN2cVTYPArw454xnXj5qmWF1bEoAc4+cU/ol7GVh7odevjp1FNHduHc3KZMcFduxU5Xc6uJRQ== @@ -7499,7 +7589,12 @@ path-key@^2.0.0, path-key@^2.0.1: resolved "https://registry.npmmirror.com/path-key/-/path-key-2.0.1.tgz" integrity sha512-fEHGKCSmUSDPv4uoj8AlD+joPlq3peND+HRYyxFz4KPw4z926S/b8rIuFs2FYJg3BwsxJf6A9/3eIdLaYC+9Dw== -path-key@^3.0.0, path-key@^3.1.0: +path-key@^3.0.0: + version "3.1.1" + resolved "https://registry.npmmirror.com/path-key/-/path-key-3.1.1.tgz" + integrity sha512-ojmeN0qd+y0jszEtoY48r0Peq5dwMEkIlCOu6Q5f41lfkswXuKtYrhgoTpLnyIcHm24Uhqx+5Tqm2InSwLhE6Q== + +path-key@^3.1.0: version "3.1.1" resolved "https://registry.npmmirror.com/path-key/-/path-key-3.1.1.tgz" integrity sha512-ojmeN0qd+y0jszEtoY48r0Peq5dwMEkIlCOu6Q5f41lfkswXuKtYrhgoTpLnyIcHm24Uhqx+5Tqm2InSwLhE6Q== @@ -7966,7 +8061,7 @@ react-native-vector-icons@^10.2.0: react-native-web@~0.19.13: version "0.19.13" - resolved "https://registry.npmmirror.com/react-native-web/-/react-native-web-0.19.13.tgz#2d84849bf0251ec0e3a8072fda7f9a7c29375331" + resolved "https://registry.npmmirror.com/react-native-web/-/react-native-web-0.19.13.tgz" integrity sha512-etv3bN8rJglrRCp/uL4p7l8QvUNUC++QwDbdZ8CB7BvZiMvsxfFIRM1j04vxNldG3uo2puRd6OSWR3ibtmc29A== dependencies: "@babel/runtime" "^7.18.6" @@ -8317,7 +8412,7 @@ safe-array-concat@^1.1.3: has-symbols "^1.1.0" isarray "^2.0.5" -safe-buffer@5.2.1, safe-buffer@~5.2.0: +safe-buffer@~5.2.0, safe-buffer@5.2.1: version "5.2.1" resolved "https://registry.npmmirror.com/safe-buffer/-/safe-buffer-5.2.1.tgz" integrity sha512-rp3So07KcdmmKbGvgaNxQSJr7bGVSVk5S9Eq1F+ppbRo70+YeaDxkw5Dd8NPN+GD6bjnYm2VuPuCXmpuYvmCXQ== @@ -8356,13 +8451,6 @@ saxes@^6.0.0: dependencies: xmlchars "^2.2.0" -scheduler@0.24.0-canary-efb381bbf-20230505: - version "0.24.0-canary-efb381bbf-20230505" - resolved "https://registry.npmmirror.com/scheduler/-/scheduler-0.24.0-canary-efb381bbf-20230505.tgz" - integrity sha512-ABvovCDe/k9IluqSh4/ISoq8tIJnW8euVAWYt5j/bg6dRnqwQwiGO1F/V4AyK96NGF/FB04FhOUDuWj8IKfABA== - dependencies: - loose-envify "^1.1.0" - scheduler@^0.23.2: version "0.23.2" resolved "https://registry.npmmirror.com/scheduler/-/scheduler-0.23.2.tgz" @@ -8375,6 +8463,13 @@ scheduler@^0.25.0: resolved "https://registry.npmmirror.com/scheduler/-/scheduler-0.25.0.tgz" integrity sha512-xFVuu11jh+xcO7JOAGJNOXld8/TcEHK/4CituBUeUb5hqxJLj9YuemAEuvm9gQ/+pgXYfbQuqAkiYu+u7YEsNA== +scheduler@0.24.0-canary-efb381bbf-20230505: + version "0.24.0-canary-efb381bbf-20230505" + resolved "https://registry.npmmirror.com/scheduler/-/scheduler-0.24.0-canary-efb381bbf-20230505.tgz" + integrity sha512-ABvovCDe/k9IluqSh4/ISoq8tIJnW8euVAWYt5j/bg6dRnqwQwiGO1F/V4AyK96NGF/FB04FhOUDuWj8IKfABA== + dependencies: + loose-envify "^1.1.0" + selfsigned@^2.4.1: version "2.4.1" resolved "https://registry.npmmirror.com/selfsigned/-/selfsigned-2.4.1.tgz" @@ -8383,30 +8478,50 @@ selfsigned@^2.4.1: "@types/node-forge" "^1.3.0" node-forge "^1" -semver@7.x, semver@^7.1.3, semver@^7.3.5, semver@^7.5.2, semver@^7.5.3, semver@^7.5.4, semver@^7.6.0, semver@^7.6.3: - version "7.7.2" - resolved "https://registry.npmmirror.com/semver/-/semver-7.7.2.tgz" - integrity sha512-RF0Fw+rO5AMf9MAyaRXI4AV0Ulj5lMHqVxxdSgiVbixSCXoEmmX/jk0CuJw4+3SqroYO9VoUh+HcuJivvtJemA== +semver@^5.3.0: + version "5.7.2" + resolved "https://registry.npmmirror.com/semver/-/semver-5.7.2.tgz" + integrity sha512-cBznnQ9KjJqU67B52RMC65CMarK2600WFnbkcaiwWq3xy/5haFJlshgnpjovMVJ+Hff49d8GEn0b87C5pDQ10g== + +semver@^5.5.0: + version "5.7.2" + resolved "https://registry.npmmirror.com/semver/-/semver-5.7.2.tgz" + integrity sha512-cBznnQ9KjJqU67B52RMC65CMarK2600WFnbkcaiwWq3xy/5haFJlshgnpjovMVJ+Hff49d8GEn0b87C5pDQ10g== -semver@^5.3.0, semver@^5.5.0, semver@^5.6.0: +semver@^5.6.0: version "5.7.2" resolved "https://registry.npmmirror.com/semver/-/semver-5.7.2.tgz" integrity sha512-cBznnQ9KjJqU67B52RMC65CMarK2600WFnbkcaiwWq3xy/5haFJlshgnpjovMVJ+Hff49d8GEn0b87C5pDQ10g== -semver@^6.1.0, semver@^6.3.0, semver@^6.3.1: +semver@^6.1.0: version "6.3.1" resolved "https://registry.npmmirror.com/semver/-/semver-6.3.1.tgz" integrity sha512-BR7VvDCVHO+q2xBEWskxS6DJE1qRnb7DxzUrogb71CWoSficBxYsiAGd+Kl0mmq/MprG9yArRkyrQxTO6XjMzA== -send@0.19.0: - version "0.19.0" - resolved "https://registry.npmmirror.com/send/-/send-0.19.0.tgz" - integrity sha512-dW41u5VfLXu8SJh5bwRmyYUbAoSB3c9uQh6L8h/KtsFREPWpbX1lrljJo186Jc4nmci/sGUZ9a0a0J2zgfq2hw== +semver@^6.3.0: + version "6.3.1" + resolved "https://registry.npmmirror.com/semver/-/semver-6.3.1.tgz" + integrity sha512-BR7VvDCVHO+q2xBEWskxS6DJE1qRnb7DxzUrogb71CWoSficBxYsiAGd+Kl0mmq/MprG9yArRkyrQxTO6XjMzA== + +semver@^6.3.1: + version "6.3.1" + resolved "https://registry.npmmirror.com/semver/-/semver-6.3.1.tgz" + integrity sha512-BR7VvDCVHO+q2xBEWskxS6DJE1qRnb7DxzUrogb71CWoSficBxYsiAGd+Kl0mmq/MprG9yArRkyrQxTO6XjMzA== + +semver@^7.1.3, semver@^7.3.5, semver@^7.5.2, semver@^7.5.3, semver@^7.5.4, semver@^7.6.0, semver@^7.6.3, semver@7.x: + version "7.7.2" + resolved "https://registry.npmmirror.com/semver/-/semver-7.7.2.tgz" + integrity sha512-RF0Fw+rO5AMf9MAyaRXI4AV0Ulj5lMHqVxxdSgiVbixSCXoEmmX/jk0CuJw4+3SqroYO9VoUh+HcuJivvtJemA== + +send@^0.19.0: + version "0.19.1" + resolved "https://registry.npmmirror.com/send/-/send-0.19.1.tgz" + integrity sha512-p4rRk4f23ynFEfcD9LA0xRYngj+IyGiEYyqqOak8kaN0TvNmuxC2dcVeBn62GpCeR2CpWqyHCNScTP91QbAVFg== dependencies: debug "2.6.9" depd "2.0.0" destroy "1.2.0" - encodeurl "~1.0.2" + encodeurl "~2.0.0" escape-html "~1.0.3" etag "~1.8.1" fresh "0.5.2" @@ -8417,15 +8532,15 @@ send@0.19.0: range-parser "~1.2.1" statuses "2.0.1" -send@^0.19.0: - version "0.19.1" - resolved "https://registry.npmmirror.com/send/-/send-0.19.1.tgz" - integrity sha512-p4rRk4f23ynFEfcD9LA0xRYngj+IyGiEYyqqOak8kaN0TvNmuxC2dcVeBn62GpCeR2CpWqyHCNScTP91QbAVFg== +send@0.19.0: + version "0.19.0" + resolved "https://registry.npmmirror.com/send/-/send-0.19.0.tgz" + integrity sha512-dW41u5VfLXu8SJh5bwRmyYUbAoSB3c9uQh6L8h/KtsFREPWpbX1lrljJo186Jc4nmci/sGUZ9a0a0J2zgfq2hw== dependencies: debug "2.6.9" depd "2.0.0" destroy "1.2.0" - encodeurl "~2.0.0" + encodeurl "~1.0.2" escape-html "~1.0.3" etag "~1.8.1" fresh "0.5.2" @@ -8659,11 +8774,6 @@ source-map-support@^0.5.16, source-map-support@~0.5.20, source-map-support@~0.5. buffer-from "^1.0.0" source-map "^0.6.0" -source-map@0.5.6: - version "0.5.6" - resolved "https://registry.npmmirror.com/source-map/-/source-map-0.5.6.tgz" - integrity sha512-MjZkVp0NHr5+TPihLcadqnlVoGIoWo4IBHptutGh9wI3ttUYvCG26HkSuDi+K6lsZ25syXJXcctwgyVCt//xqA== - source-map@^0.5.6: version "0.5.7" resolved "https://registry.npmmirror.com/source-map/-/source-map-0.5.7.tgz" @@ -8674,6 +8784,11 @@ source-map@^0.6.0, source-map@^0.6.1, source-map@~0.6.1: resolved "https://registry.npmmirror.com/source-map/-/source-map-0.6.1.tgz" integrity sha512-UjgapumWlbMhkBgzT7Ykc5YXUT46F0iKu8SGXq0bcwP5dz/h0Plj6enJqjz1Zbq2l5WaqYnrVbwWOWMyF3F47g== +source-map@0.5.6: + version "0.5.6" + resolved "https://registry.npmmirror.com/source-map/-/source-map-0.5.6.tgz" + integrity sha512-MjZkVp0NHr5+TPihLcadqnlVoGIoWo4IBHptutGh9wI3ttUYvCG26HkSuDi+K6lsZ25syXJXcctwgyVCt//xqA== + split-on-first@^1.0.0: version "1.1.0" resolved "https://registry.npmmirror.com/split-on-first/-/split-on-first-1.1.0.tgz" @@ -8734,17 +8849,17 @@ stacktrace-parser@^0.1.10: dependencies: type-fest "^0.7.1" -statuses@2.0.1: - version "2.0.1" - resolved "https://registry.npmmirror.com/statuses/-/statuses-2.0.1.tgz" - integrity sha512-RwNA9Z/7PrK06rYLIzFMlaF+l73iwpzsqRIFgbMLbTcLD6cOao82TaWefPXQvB2fOC4AjuYSEndS7N/mTCbkdQ== - statuses@~1.5.0: version "1.5.0" resolved "https://registry.npmmirror.com/statuses/-/statuses-1.5.0.tgz" integrity sha512-OpZ3zP+jT1PI7I8nemJX4AKmAX070ZkYPVWV/AaKTJl+tXCTGyVdC1a4SL8RUQYEwk/f34ZX8UTykN68FwrqAA== -stream-buffers@2.2.x, stream-buffers@~2.2.0: +statuses@2.0.1: + version "2.0.1" + resolved "https://registry.npmmirror.com/statuses/-/statuses-2.0.1.tgz" + integrity sha512-RwNA9Z/7PrK06rYLIzFMlaF+l73iwpzsqRIFgbMLbTcLD6cOao82TaWefPXQvB2fOC4AjuYSEndS7N/mTCbkdQ== + +stream-buffers@~2.2.0, stream-buffers@2.2.x: version "2.2.0" resolved "https://registry.npmmirror.com/stream-buffers/-/stream-buffers-2.2.0.tgz" integrity sha512-uyQK/mx5QjHun80FLJTfaWE7JtwfRMKBLkMne6udYOmvH0CawotVa7TfgYHzAnpphn4+TweIx1QKMnRIbipmUg== @@ -8754,6 +8869,13 @@ strict-uri-encode@^2.0.0: resolved "https://registry.npmmirror.com/strict-uri-encode/-/strict-uri-encode-2.0.0.tgz" integrity sha512-QwiXZgpRcKkhTj2Scnn++4PKtWsH0kpzZ62L2R6c/LUVYv7hVnZqcg2+sMuT6R7Jusu1vviK/MFsu6kNJfWlEQ== +string_decoder@^1.1.1: + version "1.3.0" + resolved "https://registry.npmmirror.com/string_decoder/-/string_decoder-1.3.0.tgz" + integrity sha512-hkRX8U1WjJFd8LsDJ2yQ/wWWxaopEsABU1XfkM8A+j0+85JAGppt16cr1Whg6KIbb4okU6Mql6BOj+uup/wKeA== + dependencies: + safe-buffer "~5.2.0" + string-length@^4.0.1: version "4.0.2" resolved "https://registry.npmmirror.com/string-length/-/string-length-4.0.2.tgz" @@ -8856,13 +8978,6 @@ string.prototype.trimstart@^1.0.8: define-properties "^1.2.1" es-object-atoms "^1.0.0" -string_decoder@^1.1.1: - version "1.3.0" - resolved "https://registry.npmmirror.com/string_decoder/-/string_decoder-1.3.0.tgz" - integrity sha512-hkRX8U1WjJFd8LsDJ2yQ/wWWxaopEsABU1XfkM8A+j0+85JAGppt16cr1Whg6KIbb4okU6Mql6BOj+uup/wKeA== - dependencies: - safe-buffer "~5.2.0" - stringify-entities@^3.1.0: version "3.1.0" resolved "https://registry.npmmirror.com/stringify-entities/-/stringify-entities-3.1.0.tgz" @@ -8879,7 +8994,14 @@ stringify-entities@^3.1.0: dependencies: ansi-regex "^5.0.1" -strip-ansi@^5.0.0, strip-ansi@^5.2.0: +strip-ansi@^5.0.0: + version "5.2.0" + resolved "https://registry.npmmirror.com/strip-ansi/-/strip-ansi-5.2.0.tgz" + integrity sha512-DuRs1gKbBqsMKIZlrffwlug8MHkcnpjs5VPmL1PAh+mA30U0DTotfDZ0d2UUsXpPmPmMMJ6W773MaA3J+lbiWA== + dependencies: + ansi-regex "^4.1.0" + +strip-ansi@^5.2.0: version "5.2.0" resolved "https://registry.npmmirror.com/strip-ansi/-/strip-ansi-5.2.0.tgz" integrity sha512-DuRs1gKbBqsMKIZlrffwlug8MHkcnpjs5VPmL1PAh+mA30U0DTotfDZ0d2UUsXpPmPmMMJ6W773MaA3J+lbiWA== @@ -8939,7 +9061,7 @@ structured-headers@^0.4.1: styleq@^0.1.3: version "0.1.3" - resolved "https://registry.npmmirror.com/styleq/-/styleq-0.1.3.tgz#8efb2892debd51ce7b31dc09c227ad920decab71" + resolved "https://registry.npmmirror.com/styleq/-/styleq-0.1.3.tgz" integrity sha512-3ZUifmCDCQanjeej1f6kyl/BeP/Vae5EYkQ9iJfUm/QwZvlgnZzyflqAsAWYURdtea8Vkvswu2GrC57h3qffcA== sucrase@3.35.0: @@ -9367,7 +9489,7 @@ universalify@^2.0.0: resolved "https://registry.npmmirror.com/universalify/-/universalify-2.0.1.tgz" integrity sha512-gptHNQghINnc/vTGIk0SOFGFNXw7JVrlRUtConJRlvaw6DuX0wO5Jeko9sWrMBhh+PsYAZ7oXAiOnf/UKogyiw== -unpipe@1.0.0, unpipe@~1.0.0: +unpipe@~1.0.0, unpipe@1.0.0: version "1.0.0" resolved "https://registry.npmmirror.com/unpipe/-/unpipe-1.0.0.tgz" integrity sha512-pjy2bYhSsufwWlKwPc+l3cN7+wuJlK6uz0YdJEOlQDbl6jo/YlPi4mb8agUkVC8BF7V8NuzeyPNqRksA3hztKQ== @@ -9452,7 +9574,7 @@ walker@^1.0.7, walker@^1.0.8: dependencies: makeerror "1.0.12" -warn-once@0.1.1, warn-once@^0.1.0: +warn-once@^0.1.0, warn-once@0.1.1: version "0.1.1" resolved "https://registry.npmmirror.com/warn-once/-/warn-once-0.1.1.tgz" integrity sha512-VkQZJbO8zVImzYFteBXvBOZEl1qL175WH8VmZcxF2fZAoudNhNDvHi+doCaAEdU2l2vtcIwa2zn0QK5+I1HQ3Q== @@ -9673,12 +9795,22 @@ ws@^6.2.3: dependencies: async-limiter "~1.0.0" -ws@^7, ws@^7.5.10: +ws@^7: + version "7.5.10" + resolved "https://registry.npmmirror.com/ws/-/ws-7.5.10.tgz" + integrity sha512-+dbF1tHwZpXcbOJdVOkzLDxZP1ailvSxM6ZweXTegylPny803bFhA+vqBYw4s31NSAk4S2Qz+AKXK9a4wkdjcQ== + +ws@^7.5.10: version "7.5.10" resolved "https://registry.npmmirror.com/ws/-/ws-7.5.10.tgz" integrity sha512-+dbF1tHwZpXcbOJdVOkzLDxZP1ailvSxM6ZweXTegylPny803bFhA+vqBYw4s31NSAk4S2Qz+AKXK9a4wkdjcQ== -ws@^8.11.0, ws@^8.12.1: +ws@^8.11.0: + version "8.18.2" + resolved "https://registry.npmmirror.com/ws/-/ws-8.18.2.tgz" + integrity sha512-DMricUmwGZUVr++AEAe2uiVM7UoO9MAVZMDu05UQOaUII0lp+zOzLLU4Xqh/JvTqklB1T4uELaaPBKyjE1r4fQ== + +ws@^8.12.1: version "8.18.2" resolved "https://registry.npmmirror.com/ws/-/ws-8.18.2.tgz" integrity sha512-DMricUmwGZUVr++AEAe2uiVM7UoO9MAVZMDu05UQOaUII0lp+zOzLLU4Xqh/JvTqklB1T4uELaaPBKyjE1r4fQ==