feat: 支持围度数据图表
This commit is contained in:
700
app/circumference-detail.tsx
Normal file
700
app/circumference-detail.tsx
Normal file
@@ -0,0 +1,700 @@
|
|||||||
|
import { DateSelector } from '@/components/DateSelector';
|
||||||
|
import { FloatingSelectionModal, SelectionItem } from '@/components/ui/FloatingSelectionModal';
|
||||||
|
import { HeaderBar } from '@/components/ui/HeaderBar';
|
||||||
|
import { useAppDispatch, useAppSelector } from '@/hooks/redux';
|
||||||
|
import { useAuthGuard } from '@/hooks/useAuthGuard';
|
||||||
|
import { fetchCircumferenceAnalysis, selectCircumferenceData, selectCircumferenceError, selectCircumferenceLoading } from '@/store/circumferenceSlice';
|
||||||
|
import { selectUserProfile, updateUserBodyMeasurements, UserProfile } from '@/store/userSlice';
|
||||||
|
import { getMonthDaysZh, getTodayIndexInMonth } from '@/utils/date';
|
||||||
|
import dayjs from 'dayjs';
|
||||||
|
import weekOfYear from 'dayjs/plugin/weekOfYear';
|
||||||
|
import { LinearGradient } from 'expo-linear-gradient';
|
||||||
|
import React, { useCallback, useEffect, useMemo, useState } from 'react';
|
||||||
|
import { ActivityIndicator, Dimensions, ScrollView, StyleSheet, Text, TouchableOpacity, View } from 'react-native';
|
||||||
|
import { LineChart } from 'react-native-chart-kit';
|
||||||
|
|
||||||
|
dayjs.extend(weekOfYear);
|
||||||
|
|
||||||
|
// 围度类型数据
|
||||||
|
const CIRCUMFERENCE_TYPES = [
|
||||||
|
{ key: 'chestCircumference', label: '胸围', color: '#FF6B6B' },
|
||||||
|
{ key: 'waistCircumference', label: '腰围', color: '#4ECDC4' },
|
||||||
|
{ key: 'upperHipCircumference', label: '上臀围', color: '#45B7D1' },
|
||||||
|
{ key: 'armCircumference', label: '臂围', color: '#96CEB4' },
|
||||||
|
{ key: 'thighCircumference', label: '大腿围', color: '#FFEAA7' },
|
||||||
|
{ key: 'calfCircumference', label: '小腿围', color: '#DDA0DD' },
|
||||||
|
];
|
||||||
|
|
||||||
|
import { CircumferencePeriod } from '@/services/circumferenceAnalysis';
|
||||||
|
|
||||||
|
type TabType = CircumferencePeriod;
|
||||||
|
|
||||||
|
export default function CircumferenceDetailScreen() {
|
||||||
|
const dispatch = useAppDispatch();
|
||||||
|
const userProfile = useAppSelector(selectUserProfile);
|
||||||
|
const { ensureLoggedIn } = useAuthGuard();
|
||||||
|
|
||||||
|
// 日期相关状态
|
||||||
|
const [selectedIndex, setSelectedIndex] = useState(getTodayIndexInMonth());
|
||||||
|
const [activeTab, setActiveTab] = useState<TabType>('week');
|
||||||
|
|
||||||
|
// 弹窗状态
|
||||||
|
const [modalVisible, setModalVisible] = useState(false);
|
||||||
|
const [selectedMeasurement, setSelectedMeasurement] = useState<{
|
||||||
|
key: string;
|
||||||
|
label: string;
|
||||||
|
currentValue?: number;
|
||||||
|
} | null>(null);
|
||||||
|
|
||||||
|
// Redux状态
|
||||||
|
const chartData = useAppSelector(state => selectCircumferenceData(state, activeTab));
|
||||||
|
const isLoading = useAppSelector(state => selectCircumferenceLoading(state, activeTab));
|
||||||
|
const error = useAppSelector(selectCircumferenceError);
|
||||||
|
|
||||||
|
console.log('chartData', chartData);
|
||||||
|
|
||||||
|
|
||||||
|
// 图例显示状态 - 控制哪些维度显示在图表中
|
||||||
|
const [visibleTypes, setVisibleTypes] = useState<Set<string>>(
|
||||||
|
new Set(CIRCUMFERENCE_TYPES.map(type => type.key))
|
||||||
|
);
|
||||||
|
|
||||||
|
// 获取当前选中日期
|
||||||
|
const currentSelectedDate = useMemo(() => {
|
||||||
|
const days = getMonthDaysZh();
|
||||||
|
return days[selectedIndex]?.date?.toDate() ?? new Date();
|
||||||
|
}, [selectedIndex]);
|
||||||
|
|
||||||
|
// 判断选中日期是否是今天
|
||||||
|
const isSelectedDateToday = useMemo(() => {
|
||||||
|
const today = new Date();
|
||||||
|
const selectedDate = currentSelectedDate;
|
||||||
|
return dayjs(selectedDate).isSame(today, 'day');
|
||||||
|
}, [currentSelectedDate]);
|
||||||
|
|
||||||
|
// 当前围度数据
|
||||||
|
const measurements = [
|
||||||
|
{
|
||||||
|
key: 'chestCircumference',
|
||||||
|
label: '胸围',
|
||||||
|
value: userProfile?.chestCircumference,
|
||||||
|
color: '#FF6B6B',
|
||||||
|
},
|
||||||
|
{
|
||||||
|
key: 'waistCircumference',
|
||||||
|
label: '腰围',
|
||||||
|
value: userProfile?.waistCircumference,
|
||||||
|
color: '#4ECDC4',
|
||||||
|
},
|
||||||
|
{
|
||||||
|
key: 'upperHipCircumference',
|
||||||
|
label: '上臀围',
|
||||||
|
value: userProfile?.upperHipCircumference,
|
||||||
|
color: '#45B7D1',
|
||||||
|
},
|
||||||
|
{
|
||||||
|
key: 'armCircumference',
|
||||||
|
label: '臂围',
|
||||||
|
value: userProfile?.armCircumference,
|
||||||
|
color: '#96CEB4',
|
||||||
|
},
|
||||||
|
{
|
||||||
|
key: 'thighCircumference',
|
||||||
|
label: '大腿围',
|
||||||
|
value: userProfile?.thighCircumference,
|
||||||
|
color: '#FFEAA7',
|
||||||
|
},
|
||||||
|
{
|
||||||
|
key: 'calfCircumference',
|
||||||
|
label: '小腿围',
|
||||||
|
value: userProfile?.calfCircumference,
|
||||||
|
color: '#DDA0DD',
|
||||||
|
},
|
||||||
|
];
|
||||||
|
|
||||||
|
// 日期选择回调
|
||||||
|
const onSelectDate = (index: number) => {
|
||||||
|
setSelectedIndex(index);
|
||||||
|
};
|
||||||
|
|
||||||
|
// Tab切换
|
||||||
|
const handleTabPress = useCallback((tab: TabType) => {
|
||||||
|
setActiveTab(tab);
|
||||||
|
// 切换tab时重新获取数据
|
||||||
|
dispatch(fetchCircumferenceAnalysis(tab));
|
||||||
|
}, [dispatch]);
|
||||||
|
|
||||||
|
// 初始化加载数据
|
||||||
|
useEffect(() => {
|
||||||
|
dispatch(fetchCircumferenceAnalysis(activeTab));
|
||||||
|
}, [dispatch, activeTab]);
|
||||||
|
|
||||||
|
// 处理图例点击,切换显示/隐藏
|
||||||
|
const handleLegendPress = (typeKey: string) => {
|
||||||
|
const newVisibleTypes = new Set(visibleTypes);
|
||||||
|
if (newVisibleTypes.has(typeKey)) {
|
||||||
|
// 至少保留一个维度显示
|
||||||
|
if (newVisibleTypes.size > 1) {
|
||||||
|
newVisibleTypes.delete(typeKey);
|
||||||
|
}
|
||||||
|
} else {
|
||||||
|
newVisibleTypes.add(typeKey);
|
||||||
|
}
|
||||||
|
setVisibleTypes(newVisibleTypes);
|
||||||
|
};
|
||||||
|
|
||||||
|
// 根据不同围度类型获取合理的默认值
|
||||||
|
const getDefaultCircumferenceValue = (measurementKey: string, userProfile?: UserProfile): number => {
|
||||||
|
// 如果用户已有该围度数据,直接使用
|
||||||
|
const existingValue = userProfile?.[measurementKey as keyof UserProfile] as number;
|
||||||
|
if (existingValue) {
|
||||||
|
return existingValue;
|
||||||
|
}
|
||||||
|
|
||||||
|
// 根据性别设置合理的默认值
|
||||||
|
const isMale = userProfile?.gender === 'male';
|
||||||
|
|
||||||
|
switch (measurementKey) {
|
||||||
|
case 'chestCircumference':
|
||||||
|
// 胸围:男性 85-110cm,女性 75-95cm
|
||||||
|
return isMale ? 95 : 80;
|
||||||
|
case 'waistCircumference':
|
||||||
|
// 腰围:男性 70-90cm,女性 60-80cm
|
||||||
|
return isMale ? 80 : 70;
|
||||||
|
case 'upperHipCircumference':
|
||||||
|
// 上臀围:
|
||||||
|
return 30;
|
||||||
|
case 'armCircumference':
|
||||||
|
// 臂围:男性 25-35cm,女性 20-30cm
|
||||||
|
return isMale ? 30 : 25;
|
||||||
|
case 'thighCircumference':
|
||||||
|
// 大腿围:男性 45-60cm,女性 40-55cm
|
||||||
|
return isMale ? 50 : 45;
|
||||||
|
case 'calfCircumference':
|
||||||
|
// 小腿围:男性 30-40cm,女性 25-35cm
|
||||||
|
return isMale ? 35 : 30;
|
||||||
|
default:
|
||||||
|
return 70; // 默认70cm
|
||||||
|
}
|
||||||
|
};
|
||||||
|
|
||||||
|
// Generate circumference options (30-150 cm)
|
||||||
|
const circumferenceOptions: SelectionItem[] = Array.from({ length: 121 }, (_, i) => {
|
||||||
|
const value = i + 30;
|
||||||
|
return {
|
||||||
|
label: `${value} cm`,
|
||||||
|
value: value,
|
||||||
|
};
|
||||||
|
});
|
||||||
|
|
||||||
|
// 处理围度数据点击
|
||||||
|
const handleMeasurementPress = async (measurement: typeof measurements[0]) => {
|
||||||
|
// 只有选中今天日期才能编辑
|
||||||
|
if (!isSelectedDateToday) {
|
||||||
|
return;
|
||||||
|
}
|
||||||
|
|
||||||
|
const isLoggedIn = await ensureLoggedIn();
|
||||||
|
if (!isLoggedIn) {
|
||||||
|
// 如果未登录,用户会被重定向到登录页面
|
||||||
|
return;
|
||||||
|
}
|
||||||
|
|
||||||
|
// 使用智能默认值,如果用户已有数据则使用现有数据,否则使用基于性别的合理默认值
|
||||||
|
const defaultValue = getDefaultCircumferenceValue(measurement.key, userProfile);
|
||||||
|
|
||||||
|
setSelectedMeasurement({
|
||||||
|
key: measurement.key,
|
||||||
|
label: measurement.label,
|
||||||
|
currentValue: measurement.value || defaultValue,
|
||||||
|
});
|
||||||
|
setModalVisible(true);
|
||||||
|
};
|
||||||
|
|
||||||
|
// 处理围度数据更新
|
||||||
|
const handleUpdateMeasurement = (value: string | number) => {
|
||||||
|
if (!selectedMeasurement) return;
|
||||||
|
|
||||||
|
const updateData = {
|
||||||
|
[selectedMeasurement.key]: Number(value),
|
||||||
|
};
|
||||||
|
|
||||||
|
dispatch(updateUserBodyMeasurements(updateData));
|
||||||
|
setModalVisible(false);
|
||||||
|
setSelectedMeasurement(null);
|
||||||
|
};
|
||||||
|
|
||||||
|
// 处理图表数据
|
||||||
|
const processedChartData = useMemo(() => {
|
||||||
|
if (!chartData || chartData.length === 0) {
|
||||||
|
return { labels: [], datasets: [] };
|
||||||
|
}
|
||||||
|
|
||||||
|
// 根据activeTab生成标签
|
||||||
|
const labels = chartData.map(item => {
|
||||||
|
switch (activeTab) {
|
||||||
|
case 'week':
|
||||||
|
// 将YYYY-MM-DD格式转换为星期几
|
||||||
|
const weekDay = dayjs(item.label).format('dd');
|
||||||
|
return weekDay;
|
||||||
|
case 'month':
|
||||||
|
// 将YYYY-MM-DD格式转换为第几周
|
||||||
|
const weekOfYear = dayjs(item.label).week();
|
||||||
|
const firstWeekOfMonth = dayjs(item.label).startOf('month').week();
|
||||||
|
return `第${weekOfYear - firstWeekOfMonth + 1}周`;
|
||||||
|
case 'year':
|
||||||
|
// 将YYYY-MM格式转换为月份
|
||||||
|
return dayjs(item.label).format('M月');
|
||||||
|
default:
|
||||||
|
return item.label;
|
||||||
|
}
|
||||||
|
});
|
||||||
|
|
||||||
|
// 为每个可见的围度类型生成数据集
|
||||||
|
const datasets: any[] = [];
|
||||||
|
CIRCUMFERENCE_TYPES.forEach((type) => {
|
||||||
|
if (visibleTypes.has(type.key)) {
|
||||||
|
const data = chartData.map(item => {
|
||||||
|
const value = item[type.key as keyof typeof item] as number | null;
|
||||||
|
return value || 0; // null值转换为0,图表会自动处理
|
||||||
|
});
|
||||||
|
|
||||||
|
// 只有数据中至少有一个非零值才添加到数据集
|
||||||
|
if (data.some(value => value > 0)) {
|
||||||
|
datasets.push({
|
||||||
|
data,
|
||||||
|
color: () => type.color,
|
||||||
|
strokeWidth: 2,
|
||||||
|
});
|
||||||
|
}
|
||||||
|
}
|
||||||
|
});
|
||||||
|
|
||||||
|
return { labels, datasets };
|
||||||
|
}, [chartData, activeTab, visibleTypes]);
|
||||||
|
|
||||||
|
return (
|
||||||
|
<View style={styles.container}>
|
||||||
|
{/* 背景渐变 */}
|
||||||
|
<LinearGradient
|
||||||
|
colors={['#f5e5fbff', '#e5fcfeff', '#eefdffff', '#e6f6fcff']}
|
||||||
|
style={styles.gradientBackground}
|
||||||
|
start={{ x: 0, y: 0 }}
|
||||||
|
end={{ x: 0, y: 1 }}
|
||||||
|
/>
|
||||||
|
|
||||||
|
{/* 头部导航 */}
|
||||||
|
<HeaderBar
|
||||||
|
title="围度统计"
|
||||||
|
transparent
|
||||||
|
/>
|
||||||
|
|
||||||
|
<ScrollView
|
||||||
|
style={styles.scrollView}
|
||||||
|
contentContainerStyle={{
|
||||||
|
paddingBottom: 60,
|
||||||
|
paddingHorizontal: 20
|
||||||
|
}}
|
||||||
|
showsVerticalScrollIndicator={false}
|
||||||
|
>
|
||||||
|
{/* 日期选择器 */}
|
||||||
|
<View style={styles.dateContainer}>
|
||||||
|
<DateSelector
|
||||||
|
selectedIndex={selectedIndex}
|
||||||
|
onDateSelect={onSelectDate}
|
||||||
|
showMonthTitle={false}
|
||||||
|
disableFutureDates={true}
|
||||||
|
/>
|
||||||
|
</View>
|
||||||
|
|
||||||
|
{/* 当前日期围度数据 */}
|
||||||
|
<View style={styles.currentDataCard}>
|
||||||
|
<View style={styles.measurementsContainer}>
|
||||||
|
{measurements.map((measurement, index) => (
|
||||||
|
<TouchableOpacity
|
||||||
|
key={index}
|
||||||
|
style={[
|
||||||
|
styles.measurementItem,
|
||||||
|
!isSelectedDateToday && styles.measurementItemDisabled
|
||||||
|
]}
|
||||||
|
onPress={() => handleMeasurementPress(measurement)}
|
||||||
|
activeOpacity={isSelectedDateToday ? 0.7 : 1}
|
||||||
|
disabled={!isSelectedDateToday}
|
||||||
|
>
|
||||||
|
<View style={[styles.colorIndicator, { backgroundColor: measurement.color }]} />
|
||||||
|
<Text style={styles.label}>{measurement.label}</Text>
|
||||||
|
<View style={styles.valueContainer}>
|
||||||
|
<Text style={styles.value}>
|
||||||
|
{measurement.value ? measurement.value.toString() : '--'}
|
||||||
|
</Text>
|
||||||
|
</View>
|
||||||
|
</TouchableOpacity>
|
||||||
|
))}
|
||||||
|
</View>
|
||||||
|
</View>
|
||||||
|
|
||||||
|
{/* 围度统计 */}
|
||||||
|
<View style={styles.statsCard}>
|
||||||
|
<Text style={styles.statsTitle}>围度统计</Text>
|
||||||
|
|
||||||
|
{/* Tab 切换 */}
|
||||||
|
<View style={styles.tabContainer}>
|
||||||
|
<TouchableOpacity
|
||||||
|
style={[styles.tab, activeTab === 'week' && styles.activeTab]}
|
||||||
|
onPress={() => handleTabPress('week')}
|
||||||
|
activeOpacity={0.7}
|
||||||
|
>
|
||||||
|
<Text style={[styles.tabText, activeTab === 'week' && styles.activeTabText]}>
|
||||||
|
按周
|
||||||
|
</Text>
|
||||||
|
</TouchableOpacity>
|
||||||
|
<TouchableOpacity
|
||||||
|
style={[styles.tab, activeTab === 'month' && styles.activeTab]}
|
||||||
|
onPress={() => handleTabPress('month')}
|
||||||
|
activeOpacity={0.7}
|
||||||
|
>
|
||||||
|
<Text style={[styles.tabText, activeTab === 'month' && styles.activeTabText]}>
|
||||||
|
按月
|
||||||
|
</Text>
|
||||||
|
</TouchableOpacity>
|
||||||
|
<TouchableOpacity
|
||||||
|
style={[styles.tab, activeTab === 'year' && styles.activeTab]}
|
||||||
|
onPress={() => handleTabPress('year')}
|
||||||
|
activeOpacity={0.7}
|
||||||
|
>
|
||||||
|
<Text style={[styles.tabText, activeTab === 'year' && styles.activeTabText]}>
|
||||||
|
按年
|
||||||
|
</Text>
|
||||||
|
</TouchableOpacity>
|
||||||
|
</View>
|
||||||
|
|
||||||
|
{/* 图例 - 支持点击切换显示/隐藏 */}
|
||||||
|
<View style={styles.legendContainer}>
|
||||||
|
{CIRCUMFERENCE_TYPES.map((type, index) => {
|
||||||
|
const isVisible = visibleTypes.has(type.key);
|
||||||
|
return (
|
||||||
|
<TouchableOpacity
|
||||||
|
key={index}
|
||||||
|
style={[styles.legendItem, !isVisible && styles.legendItemHidden]}
|
||||||
|
onPress={() => handleLegendPress(type.key)}
|
||||||
|
activeOpacity={0.7}
|
||||||
|
>
|
||||||
|
<View style={[
|
||||||
|
styles.legendColor,
|
||||||
|
{ backgroundColor: isVisible ? type.color : '#E0E0E0' }
|
||||||
|
]} />
|
||||||
|
<Text style={[
|
||||||
|
styles.legendText,
|
||||||
|
!isVisible && styles.legendTextHidden
|
||||||
|
]}>
|
||||||
|
{type.label}
|
||||||
|
</Text>
|
||||||
|
</TouchableOpacity>
|
||||||
|
);
|
||||||
|
})}
|
||||||
|
</View>
|
||||||
|
|
||||||
|
{/* 折线图 */}
|
||||||
|
{isLoading ? (
|
||||||
|
<View style={styles.loadingChart}>
|
||||||
|
<ActivityIndicator size="large" color="#4ECDC4" />
|
||||||
|
<Text style={styles.loadingText}>加载中...</Text>
|
||||||
|
</View>
|
||||||
|
) : error ? (
|
||||||
|
<View style={styles.errorChart}>
|
||||||
|
<Text style={styles.errorText}>加载失败: {error}</Text>
|
||||||
|
<TouchableOpacity
|
||||||
|
style={styles.retryButton}
|
||||||
|
onPress={() => dispatch(fetchCircumferenceAnalysis(activeTab))}
|
||||||
|
activeOpacity={0.7}
|
||||||
|
>
|
||||||
|
<Text style={styles.retryText}>重试</Text>
|
||||||
|
</TouchableOpacity>
|
||||||
|
</View>
|
||||||
|
) : processedChartData.datasets.length > 0 ? (
|
||||||
|
<LineChart
|
||||||
|
data={{
|
||||||
|
labels: processedChartData.labels,
|
||||||
|
datasets: processedChartData.datasets,
|
||||||
|
}}
|
||||||
|
width={Dimensions.get('window').width - 80}
|
||||||
|
height={220}
|
||||||
|
yAxisSuffix="cm"
|
||||||
|
chartConfig={{
|
||||||
|
backgroundColor: '#ffffff',
|
||||||
|
backgroundGradientFrom: '#ffffff',
|
||||||
|
backgroundGradientTo: '#ffffff',
|
||||||
|
fillShadowGradientFromOpacity: 0,
|
||||||
|
fillShadowGradientToOpacity: 0,
|
||||||
|
decimalPlaces: 0,
|
||||||
|
color: (opacity = 1) => `rgba(100, 100, 100, ${opacity * 0.8})`,
|
||||||
|
labelColor: (opacity = 1) => `rgba(60, 60, 60, ${opacity})`,
|
||||||
|
style: {
|
||||||
|
borderRadius: 16,
|
||||||
|
},
|
||||||
|
propsForDots: {
|
||||||
|
r: "3",
|
||||||
|
strokeWidth: "2",
|
||||||
|
stroke: "#ffffff"
|
||||||
|
},
|
||||||
|
propsForBackgroundLines: {
|
||||||
|
strokeDasharray: "2,2",
|
||||||
|
stroke: "#E0E0E0",
|
||||||
|
strokeWidth: 1
|
||||||
|
},
|
||||||
|
}}
|
||||||
|
bezier
|
||||||
|
style={styles.chart}
|
||||||
|
/>
|
||||||
|
) : (
|
||||||
|
<View style={styles.emptyChart}>
|
||||||
|
<Text style={styles.emptyChartText}>
|
||||||
|
{processedChartData.datasets.length === 0 && !isLoading && !error
|
||||||
|
? '暂无数据'
|
||||||
|
: '请选择要显示的围度数据'
|
||||||
|
}
|
||||||
|
</Text>
|
||||||
|
</View>
|
||||||
|
)}
|
||||||
|
</View>
|
||||||
|
</ScrollView>
|
||||||
|
|
||||||
|
{/* 围度编辑弹窗 */}
|
||||||
|
<FloatingSelectionModal
|
||||||
|
visible={modalVisible}
|
||||||
|
onClose={() => {
|
||||||
|
setModalVisible(false);
|
||||||
|
setSelectedMeasurement(null);
|
||||||
|
}}
|
||||||
|
title={selectedMeasurement ? `设置${selectedMeasurement.label}` : '设置围度'}
|
||||||
|
items={circumferenceOptions}
|
||||||
|
selectedValue={selectedMeasurement?.currentValue}
|
||||||
|
onValueChange={() => { }} // Real-time update not needed
|
||||||
|
onConfirm={handleUpdateMeasurement}
|
||||||
|
confirmButtonText="确认"
|
||||||
|
pickerHeight={180}
|
||||||
|
/>
|
||||||
|
</View>
|
||||||
|
);
|
||||||
|
}
|
||||||
|
|
||||||
|
const styles = StyleSheet.create({
|
||||||
|
container: {
|
||||||
|
flex: 1,
|
||||||
|
backgroundColor: '#FFFFFF',
|
||||||
|
},
|
||||||
|
gradientBackground: {
|
||||||
|
position: 'absolute',
|
||||||
|
left: 0,
|
||||||
|
right: 0,
|
||||||
|
top: 0,
|
||||||
|
bottom: 0,
|
||||||
|
},
|
||||||
|
scrollView: {
|
||||||
|
flex: 1,
|
||||||
|
},
|
||||||
|
dateContainer: {
|
||||||
|
marginTop: 16,
|
||||||
|
marginBottom: 20,
|
||||||
|
},
|
||||||
|
currentDataCard: {
|
||||||
|
backgroundColor: '#FFFFFF',
|
||||||
|
borderRadius: 16,
|
||||||
|
padding: 20,
|
||||||
|
marginBottom: 20,
|
||||||
|
shadowColor: '#000',
|
||||||
|
shadowOffset: {
|
||||||
|
width: 0,
|
||||||
|
height: 4,
|
||||||
|
},
|
||||||
|
shadowOpacity: 0.12,
|
||||||
|
shadowRadius: 12,
|
||||||
|
elevation: 6,
|
||||||
|
},
|
||||||
|
currentDataTitle: {
|
||||||
|
fontSize: 16,
|
||||||
|
fontWeight: '700',
|
||||||
|
color: '#192126',
|
||||||
|
marginBottom: 16,
|
||||||
|
textAlign: 'center',
|
||||||
|
},
|
||||||
|
measurementsContainer: {
|
||||||
|
flexDirection: 'row',
|
||||||
|
justifyContent: 'space-between',
|
||||||
|
flexWrap: 'wrap',
|
||||||
|
},
|
||||||
|
measurementItem: {
|
||||||
|
alignItems: 'center',
|
||||||
|
width: '16%',
|
||||||
|
marginBottom: 12,
|
||||||
|
},
|
||||||
|
measurementItemDisabled: {
|
||||||
|
opacity: 0.6,
|
||||||
|
},
|
||||||
|
colorIndicator: {
|
||||||
|
width: 12,
|
||||||
|
height: 12,
|
||||||
|
borderRadius: 6,
|
||||||
|
marginBottom: 4,
|
||||||
|
},
|
||||||
|
label: {
|
||||||
|
fontSize: 12,
|
||||||
|
color: '#888',
|
||||||
|
marginBottom: 8,
|
||||||
|
textAlign: 'center',
|
||||||
|
},
|
||||||
|
valueContainer: {
|
||||||
|
backgroundColor: '#F5F5F7',
|
||||||
|
borderRadius: 10,
|
||||||
|
paddingHorizontal: 8,
|
||||||
|
paddingVertical: 6,
|
||||||
|
minWidth: 32,
|
||||||
|
alignItems: 'center',
|
||||||
|
justifyContent: 'center',
|
||||||
|
},
|
||||||
|
value: {
|
||||||
|
fontSize: 14,
|
||||||
|
fontWeight: '600',
|
||||||
|
color: '#192126',
|
||||||
|
textAlign: 'center',
|
||||||
|
},
|
||||||
|
statsCard: {
|
||||||
|
backgroundColor: '#FFFFFF',
|
||||||
|
borderRadius: 16,
|
||||||
|
padding: 20,
|
||||||
|
shadowColor: '#000',
|
||||||
|
shadowOffset: {
|
||||||
|
width: 0,
|
||||||
|
height: 4,
|
||||||
|
},
|
||||||
|
shadowOpacity: 0.12,
|
||||||
|
shadowRadius: 12,
|
||||||
|
elevation: 6,
|
||||||
|
},
|
||||||
|
statsTitle: {
|
||||||
|
fontSize: 16,
|
||||||
|
fontWeight: '700',
|
||||||
|
color: '#192126',
|
||||||
|
marginBottom: 16,
|
||||||
|
},
|
||||||
|
tabContainer: {
|
||||||
|
flexDirection: 'row',
|
||||||
|
backgroundColor: '#F5F5F7',
|
||||||
|
borderRadius: 12,
|
||||||
|
padding: 4,
|
||||||
|
marginBottom: 20,
|
||||||
|
},
|
||||||
|
tab: {
|
||||||
|
flex: 1,
|
||||||
|
paddingVertical: 8,
|
||||||
|
paddingHorizontal: 16,
|
||||||
|
borderRadius: 8,
|
||||||
|
alignItems: 'center',
|
||||||
|
},
|
||||||
|
activeTab: {
|
||||||
|
backgroundColor: '#FFFFFF',
|
||||||
|
shadowColor: '#000',
|
||||||
|
shadowOffset: {
|
||||||
|
width: 0,
|
||||||
|
height: 1,
|
||||||
|
},
|
||||||
|
shadowOpacity: 0.1,
|
||||||
|
shadowRadius: 2,
|
||||||
|
elevation: 2,
|
||||||
|
},
|
||||||
|
tabText: {
|
||||||
|
fontSize: 14,
|
||||||
|
fontWeight: '600',
|
||||||
|
color: '#888',
|
||||||
|
},
|
||||||
|
activeTabText: {
|
||||||
|
color: '#192126',
|
||||||
|
},
|
||||||
|
legendContainer: {
|
||||||
|
flexDirection: 'row',
|
||||||
|
flexWrap: 'wrap',
|
||||||
|
marginBottom: 16,
|
||||||
|
gap: 6,
|
||||||
|
},
|
||||||
|
legendItem: {
|
||||||
|
flexDirection: 'row',
|
||||||
|
alignItems: 'center',
|
||||||
|
paddingVertical: 4,
|
||||||
|
paddingHorizontal: 8,
|
||||||
|
borderRadius: 8,
|
||||||
|
},
|
||||||
|
legendItemHidden: {
|
||||||
|
opacity: 0.5,
|
||||||
|
},
|
||||||
|
legendColor: {
|
||||||
|
width: 4,
|
||||||
|
height: 4,
|
||||||
|
borderRadius: 4,
|
||||||
|
marginRight: 4,
|
||||||
|
},
|
||||||
|
legendText: {
|
||||||
|
fontSize: 10,
|
||||||
|
color: '#666',
|
||||||
|
fontWeight: '500',
|
||||||
|
},
|
||||||
|
legendTextHidden: {
|
||||||
|
color: '#999',
|
||||||
|
},
|
||||||
|
chart: {
|
||||||
|
marginVertical: 8,
|
||||||
|
borderRadius: 16,
|
||||||
|
},
|
||||||
|
emptyChart: {
|
||||||
|
height: 220,
|
||||||
|
alignItems: 'center',
|
||||||
|
justifyContent: 'center',
|
||||||
|
backgroundColor: '#F8F9FA',
|
||||||
|
borderRadius: 16,
|
||||||
|
marginVertical: 8,
|
||||||
|
},
|
||||||
|
emptyChartText: {
|
||||||
|
fontSize: 14,
|
||||||
|
color: '#999',
|
||||||
|
fontWeight: '500',
|
||||||
|
},
|
||||||
|
loadingChart: {
|
||||||
|
height: 220,
|
||||||
|
alignItems: 'center',
|
||||||
|
justifyContent: 'center',
|
||||||
|
backgroundColor: '#F8F9FA',
|
||||||
|
borderRadius: 16,
|
||||||
|
marginVertical: 8,
|
||||||
|
},
|
||||||
|
loadingText: {
|
||||||
|
fontSize: 14,
|
||||||
|
color: '#666',
|
||||||
|
marginTop: 8,
|
||||||
|
fontWeight: '500',
|
||||||
|
},
|
||||||
|
errorChart: {
|
||||||
|
height: 220,
|
||||||
|
alignItems: 'center',
|
||||||
|
justifyContent: 'center',
|
||||||
|
backgroundColor: '#FFF5F5',
|
||||||
|
borderRadius: 16,
|
||||||
|
marginVertical: 8,
|
||||||
|
padding: 20,
|
||||||
|
},
|
||||||
|
errorText: {
|
||||||
|
fontSize: 14,
|
||||||
|
color: '#E53E3E',
|
||||||
|
textAlign: 'center',
|
||||||
|
marginBottom: 12,
|
||||||
|
},
|
||||||
|
retryButton: {
|
||||||
|
backgroundColor: '#4ECDC4',
|
||||||
|
paddingHorizontal: 16,
|
||||||
|
paddingVertical: 8,
|
||||||
|
borderRadius: 8,
|
||||||
|
},
|
||||||
|
retryText: {
|
||||||
|
color: '#FFFFFF',
|
||||||
|
fontSize: 14,
|
||||||
|
fontWeight: '600',
|
||||||
|
},
|
||||||
|
});
|
||||||
@@ -1,7 +1,8 @@
|
|||||||
import { FloatingSelectionModal, SelectionItem } from '@/components/ui/FloatingSelectionModal';
|
import { FloatingSelectionModal, SelectionItem } from '@/components/ui/FloatingSelectionModal';
|
||||||
import { useAppDispatch, useAppSelector } from '@/hooks/redux';
|
import { useAppDispatch, useAppSelector } from '@/hooks/redux';
|
||||||
import { useAuthGuard } from '@/hooks/useAuthGuard';
|
import { useAuthGuard } from '@/hooks/useAuthGuard';
|
||||||
import { selectUserProfile, updateUserBodyMeasurements } from '@/store/userSlice';
|
import { selectUserProfile, updateUserBodyMeasurements, UserProfile } from '@/store/userSlice';
|
||||||
|
import { router } from 'expo-router';
|
||||||
import React, { useState } from 'react';
|
import React, { useState } from 'react';
|
||||||
import { StyleSheet, Text, TouchableOpacity, View } from 'react-native';
|
import { StyleSheet, Text, TouchableOpacity, View } from 'react-native';
|
||||||
|
|
||||||
@@ -59,6 +60,41 @@ const CircumferenceCard: React.FC<CircumferenceCardProps> = ({ style }) => {
|
|||||||
},
|
},
|
||||||
];
|
];
|
||||||
|
|
||||||
|
// 根据不同围度类型获取合理的默认值
|
||||||
|
const getDefaultCircumferenceValue = (measurementKey: string, userProfile?: UserProfile): number => {
|
||||||
|
// 如果用户已有该围度数据,直接使用
|
||||||
|
const existingValue = userProfile?.[measurementKey as keyof UserProfile] as number;
|
||||||
|
if (existingValue) {
|
||||||
|
return existingValue;
|
||||||
|
}
|
||||||
|
|
||||||
|
// 根据性别设置合理的默认值
|
||||||
|
const isMale = userProfile?.gender === 'male';
|
||||||
|
|
||||||
|
switch (measurementKey) {
|
||||||
|
case 'chestCircumference':
|
||||||
|
// 胸围:男性 85-110cm,女性 75-95cm
|
||||||
|
return isMale ? 95 : 80;
|
||||||
|
case 'waistCircumference':
|
||||||
|
// 腰围:男性 70-90cm,女性 60-80cm
|
||||||
|
return isMale ? 80 : 70;
|
||||||
|
case 'upperHipCircumference':
|
||||||
|
// 上臀围:
|
||||||
|
return 30;
|
||||||
|
case 'armCircumference':
|
||||||
|
// 臂围:男性 25-35cm,女性 20-30cm
|
||||||
|
return isMale ? 30 : 25;
|
||||||
|
case 'thighCircumference':
|
||||||
|
// 大腿围:男性 45-60cm,女性 40-55cm
|
||||||
|
return isMale ? 50 : 45;
|
||||||
|
case 'calfCircumference':
|
||||||
|
// 小腿围:男性 30-40cm,女性 25-35cm
|
||||||
|
return isMale ? 35 : 30;
|
||||||
|
default:
|
||||||
|
return 70; // 默认70cm
|
||||||
|
}
|
||||||
|
};
|
||||||
|
|
||||||
// Generate circumference options (30-150 cm)
|
// Generate circumference options (30-150 cm)
|
||||||
const circumferenceOptions: SelectionItem[] = Array.from({ length: 121 }, (_, i) => {
|
const circumferenceOptions: SelectionItem[] = Array.from({ length: 121 }, (_, i) => {
|
||||||
const value = i + 30;
|
const value = i + 30;
|
||||||
@@ -75,10 +111,13 @@ const CircumferenceCard: React.FC<CircumferenceCardProps> = ({ style }) => {
|
|||||||
return;
|
return;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
// 使用智能默认值,如果用户已有数据则使用现有数据,否则使用基于性别的合理默认值
|
||||||
|
const defaultValue = getDefaultCircumferenceValue(measurement.key, userProfile);
|
||||||
|
|
||||||
setSelectedMeasurement({
|
setSelectedMeasurement({
|
||||||
key: measurement.key,
|
key: measurement.key,
|
||||||
label: measurement.label,
|
label: measurement.label,
|
||||||
currentValue: measurement.value,
|
currentValue: measurement.value || defaultValue,
|
||||||
});
|
});
|
||||||
setModalVisible(true);
|
setModalVisible(true);
|
||||||
};
|
};
|
||||||
@@ -95,8 +134,17 @@ const CircumferenceCard: React.FC<CircumferenceCardProps> = ({ style }) => {
|
|||||||
setSelectedMeasurement(null);
|
setSelectedMeasurement(null);
|
||||||
};
|
};
|
||||||
|
|
||||||
|
// 处理整个卡片点击,跳转到详情页
|
||||||
|
const handleCardPress = () => {
|
||||||
|
router.push('/circumference-detail');
|
||||||
|
};
|
||||||
|
|
||||||
return (
|
return (
|
||||||
<View style={[styles.container, style]}>
|
<TouchableOpacity
|
||||||
|
style={[styles.container, style]}
|
||||||
|
onPress={handleCardPress}
|
||||||
|
activeOpacity={0.8}
|
||||||
|
>
|
||||||
<Text style={styles.title}>围度 (cm)</Text>
|
<Text style={styles.title}>围度 (cm)</Text>
|
||||||
|
|
||||||
<View style={styles.measurementsContainer}>
|
<View style={styles.measurementsContainer}>
|
||||||
@@ -104,7 +152,10 @@ const CircumferenceCard: React.FC<CircumferenceCardProps> = ({ style }) => {
|
|||||||
<TouchableOpacity
|
<TouchableOpacity
|
||||||
key={index}
|
key={index}
|
||||||
style={styles.measurementItem}
|
style={styles.measurementItem}
|
||||||
onPress={() => handleMeasurementPress(measurement)}
|
onPress={(e) => {
|
||||||
|
e.stopPropagation(); // 阻止事件冒泡
|
||||||
|
handleMeasurementPress(measurement);
|
||||||
|
}}
|
||||||
activeOpacity={0.7}
|
activeOpacity={0.7}
|
||||||
>
|
>
|
||||||
<Text style={styles.label}>{measurement.label}</Text>
|
<Text style={styles.label}>{measurement.label}</Text>
|
||||||
@@ -131,7 +182,7 @@ const CircumferenceCard: React.FC<CircumferenceCardProps> = ({ style }) => {
|
|||||||
confirmButtonText="确认"
|
confirmButtonText="确认"
|
||||||
pickerHeight={180}
|
pickerHeight={180}
|
||||||
/>
|
/>
|
||||||
</View>
|
</TouchableOpacity>
|
||||||
);
|
);
|
||||||
};
|
};
|
||||||
|
|
||||||
|
|||||||
@@ -10,31 +10,31 @@
|
|||||||
13B07FBF1A68108700A75B9A /* Images.xcassets in Resources */ = {isa = PBXBuildFile; fileRef = 13B07FB51A68108700A75B9A /* Images.xcassets */; };
|
13B07FBF1A68108700A75B9A /* Images.xcassets in Resources */ = {isa = PBXBuildFile; fileRef = 13B07FB51A68108700A75B9A /* Images.xcassets */; };
|
||||||
32476CAEFFCE691C1634B0A4 /* ExpoModulesProvider.swift in Sources */ = {isa = PBXBuildFile; fileRef = 1EA3641BAC6078512F41509D /* ExpoModulesProvider.swift */; };
|
32476CAEFFCE691C1634B0A4 /* ExpoModulesProvider.swift in Sources */ = {isa = PBXBuildFile; fileRef = 1EA3641BAC6078512F41509D /* ExpoModulesProvider.swift */; };
|
||||||
3E461D99554A48A4959DE609 /* SplashScreen.storyboard in Resources */ = {isa = PBXBuildFile; fileRef = AA286B85B6C04FC6940260E9 /* SplashScreen.storyboard */; };
|
3E461D99554A48A4959DE609 /* SplashScreen.storyboard in Resources */ = {isa = PBXBuildFile; fileRef = AA286B85B6C04FC6940260E9 /* SplashScreen.storyboard */; };
|
||||||
|
646189797DBE7937221347A9 /* libPods-OutLive.a in Frameworks */ = {isa = PBXBuildFile; fileRef = C411D1CEBC225A6F92F136BA /* libPods-OutLive.a */; };
|
||||||
79B2CB702E7B954600B51753 /* OutLive-Bridging-Header.h in Sources */ = {isa = PBXBuildFile; fileRef = F11748442D0722820044C1D9 /* OutLive-Bridging-Header.h */; };
|
79B2CB702E7B954600B51753 /* OutLive-Bridging-Header.h in Sources */ = {isa = PBXBuildFile; fileRef = F11748442D0722820044C1D9 /* OutLive-Bridging-Header.h */; };
|
||||||
79B2CB732E7B954F00B51753 /* HealthKitManager.m in Sources */ = {isa = PBXBuildFile; fileRef = 79B2CB712E7B954F00B51753 /* HealthKitManager.m */; };
|
79B2CB732E7B954F00B51753 /* HealthKitManager.m in Sources */ = {isa = PBXBuildFile; fileRef = 79B2CB712E7B954F00B51753 /* HealthKitManager.m */; };
|
||||||
79B2CB742E7B954F00B51753 /* HealthKitManager.swift in Sources */ = {isa = PBXBuildFile; fileRef = 79B2CB722E7B954F00B51753 /* HealthKitManager.swift */; };
|
79B2CB742E7B954F00B51753 /* HealthKitManager.swift in Sources */ = {isa = PBXBuildFile; fileRef = 79B2CB722E7B954F00B51753 /* HealthKitManager.swift */; };
|
||||||
91B7BA17B50D328546B5B4B8 /* PrivacyInfo.xcprivacy in Resources */ = {isa = PBXBuildFile; fileRef = B7F23062EE59F61E6260DBA8 /* PrivacyInfo.xcprivacy */; };
|
91B7BA17B50D328546B5B4B8 /* PrivacyInfo.xcprivacy in Resources */ = {isa = PBXBuildFile; fileRef = B7F23062EE59F61E6260DBA8 /* PrivacyInfo.xcprivacy */; };
|
||||||
BB2F792D24A3F905000567C9 /* Expo.plist in Resources */ = {isa = PBXBuildFile; fileRef = BB2F792C24A3F905000567C9 /* Expo.plist */; };
|
BB2F792D24A3F905000567C9 /* Expo.plist in Resources */ = {isa = PBXBuildFile; fileRef = BB2F792C24A3F905000567C9 /* Expo.plist */; };
|
||||||
EB8685B6DDDFD4D181274014 /* libPods-OutLive.a in Frameworks */ = {isa = PBXBuildFile; fileRef = F55788C6990114D378E7CC53 /* libPods-OutLive.a */; };
|
|
||||||
F11748422D0307B40044C1D9 /* AppDelegate.swift in Sources */ = {isa = PBXBuildFile; fileRef = F11748412D0307B40044C1D9 /* AppDelegate.swift */; };
|
F11748422D0307B40044C1D9 /* AppDelegate.swift in Sources */ = {isa = PBXBuildFile; fileRef = F11748412D0307B40044C1D9 /* AppDelegate.swift */; };
|
||||||
/* End PBXBuildFile section */
|
/* End PBXBuildFile section */
|
||||||
|
|
||||||
/* Begin PBXFileReference section */
|
/* Begin PBXFileReference section */
|
||||||
|
0FF78E2879F14B0D75DF41B4 /* Pods-OutLive.release.xcconfig */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = text.xcconfig; name = "Pods-OutLive.release.xcconfig"; path = "Target Support Files/Pods-OutLive/Pods-OutLive.release.xcconfig"; sourceTree = "<group>"; };
|
||||||
13B07F961A680F5B00A75B9A /* OutLive.app */ = {isa = PBXFileReference; explicitFileType = wrapper.application; includeInIndex = 0; path = OutLive.app; sourceTree = BUILT_PRODUCTS_DIR; };
|
13B07F961A680F5B00A75B9A /* OutLive.app */ = {isa = PBXFileReference; explicitFileType = wrapper.application; includeInIndex = 0; path = OutLive.app; sourceTree = BUILT_PRODUCTS_DIR; };
|
||||||
13B07FB51A68108700A75B9A /* Images.xcassets */ = {isa = PBXFileReference; lastKnownFileType = folder.assetcatalog; name = Images.xcassets; path = OutLive/Images.xcassets; sourceTree = "<group>"; };
|
13B07FB51A68108700A75B9A /* Images.xcassets */ = {isa = PBXFileReference; lastKnownFileType = folder.assetcatalog; name = Images.xcassets; path = OutLive/Images.xcassets; sourceTree = "<group>"; };
|
||||||
13B07FB61A68108700A75B9A /* Info.plist */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = text.plist.xml; name = Info.plist; path = OutLive/Info.plist; sourceTree = "<group>"; };
|
13B07FB61A68108700A75B9A /* Info.plist */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = text.plist.xml; name = Info.plist; path = OutLive/Info.plist; sourceTree = "<group>"; };
|
||||||
1EA3641BAC6078512F41509D /* ExpoModulesProvider.swift */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.swift; name = ExpoModulesProvider.swift; path = "Pods/Target Support Files/Pods-OutLive/ExpoModulesProvider.swift"; sourceTree = "<group>"; };
|
1EA3641BAC6078512F41509D /* ExpoModulesProvider.swift */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.swift; name = ExpoModulesProvider.swift; path = "Pods/Target Support Files/Pods-OutLive/ExpoModulesProvider.swift"; sourceTree = "<group>"; };
|
||||||
|
4FAA45EB21D2C45B94943F48 /* Pods-OutLive.debug.xcconfig */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = text.xcconfig; name = "Pods-OutLive.debug.xcconfig"; path = "Target Support Files/Pods-OutLive/Pods-OutLive.debug.xcconfig"; sourceTree = "<group>"; };
|
||||||
79B2CB712E7B954F00B51753 /* HealthKitManager.m */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.objc; name = HealthKitManager.m; path = OutLive/HealthKitManager.m; sourceTree = "<group>"; };
|
79B2CB712E7B954F00B51753 /* HealthKitManager.m */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.objc; name = HealthKitManager.m; path = OutLive/HealthKitManager.m; sourceTree = "<group>"; };
|
||||||
79B2CB722E7B954F00B51753 /* HealthKitManager.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; name = HealthKitManager.swift; path = OutLive/HealthKitManager.swift; sourceTree = "<group>"; };
|
79B2CB722E7B954F00B51753 /* HealthKitManager.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; name = HealthKitManager.swift; path = OutLive/HealthKitManager.swift; sourceTree = "<group>"; };
|
||||||
8040E4CFF70F1C94062730AC /* Pods-OutLive.debug.xcconfig */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = text.xcconfig; name = "Pods-OutLive.debug.xcconfig"; path = "Target Support Files/Pods-OutLive/Pods-OutLive.debug.xcconfig"; sourceTree = "<group>"; };
|
|
||||||
AA286B85B6C04FC6940260E9 /* SplashScreen.storyboard */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = file.storyboard; name = SplashScreen.storyboard; path = OutLive/SplashScreen.storyboard; sourceTree = "<group>"; };
|
AA286B85B6C04FC6940260E9 /* SplashScreen.storyboard */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = file.storyboard; name = SplashScreen.storyboard; path = OutLive/SplashScreen.storyboard; sourceTree = "<group>"; };
|
||||||
B7F23062EE59F61E6260DBA8 /* PrivacyInfo.xcprivacy */ = {isa = PBXFileReference; includeInIndex = 1; name = PrivacyInfo.xcprivacy; path = OutLive/PrivacyInfo.xcprivacy; sourceTree = "<group>"; };
|
B7F23062EE59F61E6260DBA8 /* PrivacyInfo.xcprivacy */ = {isa = PBXFileReference; includeInIndex = 1; name = PrivacyInfo.xcprivacy; path = OutLive/PrivacyInfo.xcprivacy; sourceTree = "<group>"; };
|
||||||
BB2F792C24A3F905000567C9 /* Expo.plist */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = text.plist.xml; path = Expo.plist; sourceTree = "<group>"; };
|
BB2F792C24A3F905000567C9 /* Expo.plist */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = text.plist.xml; path = Expo.plist; sourceTree = "<group>"; };
|
||||||
EC19B3AF8877D65827EF5567 /* Pods-OutLive.release.xcconfig */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = text.xcconfig; name = "Pods-OutLive.release.xcconfig"; path = "Target Support Files/Pods-OutLive/Pods-OutLive.release.xcconfig"; sourceTree = "<group>"; };
|
C411D1CEBC225A6F92F136BA /* libPods-OutLive.a */ = {isa = PBXFileReference; explicitFileType = archive.ar; includeInIndex = 0; path = "libPods-OutLive.a"; sourceTree = BUILT_PRODUCTS_DIR; };
|
||||||
ED297162215061F000B7C4FE /* JavaScriptCore.framework */ = {isa = PBXFileReference; lastKnownFileType = wrapper.framework; name = JavaScriptCore.framework; path = System/Library/Frameworks/JavaScriptCore.framework; sourceTree = SDKROOT; };
|
ED297162215061F000B7C4FE /* JavaScriptCore.framework */ = {isa = PBXFileReference; lastKnownFileType = wrapper.framework; name = JavaScriptCore.framework; path = System/Library/Frameworks/JavaScriptCore.framework; sourceTree = SDKROOT; };
|
||||||
F11748412D0307B40044C1D9 /* AppDelegate.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; name = AppDelegate.swift; path = OutLive/AppDelegate.swift; sourceTree = "<group>"; };
|
F11748412D0307B40044C1D9 /* AppDelegate.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; name = AppDelegate.swift; path = OutLive/AppDelegate.swift; sourceTree = "<group>"; };
|
||||||
F11748442D0722820044C1D9 /* OutLive-Bridging-Header.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; name = "OutLive-Bridging-Header.h"; path = "OutLive/OutLive-Bridging-Header.h"; sourceTree = "<group>"; };
|
F11748442D0722820044C1D9 /* OutLive-Bridging-Header.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; name = "OutLive-Bridging-Header.h"; path = "OutLive/OutLive-Bridging-Header.h"; sourceTree = "<group>"; };
|
||||||
F55788C6990114D378E7CC53 /* libPods-OutLive.a */ = {isa = PBXFileReference; explicitFileType = archive.ar; includeInIndex = 0; path = "libPods-OutLive.a"; sourceTree = BUILT_PRODUCTS_DIR; };
|
|
||||||
/* End PBXFileReference section */
|
/* End PBXFileReference section */
|
||||||
|
|
||||||
/* Begin PBXFrameworksBuildPhase section */
|
/* Begin PBXFrameworksBuildPhase section */
|
||||||
@@ -42,7 +42,7 @@
|
|||||||
isa = PBXFrameworksBuildPhase;
|
isa = PBXFrameworksBuildPhase;
|
||||||
buildActionMask = 2147483647;
|
buildActionMask = 2147483647;
|
||||||
files = (
|
files = (
|
||||||
EB8685B6DDDFD4D181274014 /* libPods-OutLive.a in Frameworks */,
|
646189797DBE7937221347A9 /* libPods-OutLive.a in Frameworks */,
|
||||||
);
|
);
|
||||||
runOnlyForDeploymentPostprocessing = 0;
|
runOnlyForDeploymentPostprocessing = 0;
|
||||||
};
|
};
|
||||||
@@ -67,11 +67,21 @@
|
|||||||
isa = PBXGroup;
|
isa = PBXGroup;
|
||||||
children = (
|
children = (
|
||||||
ED297162215061F000B7C4FE /* JavaScriptCore.framework */,
|
ED297162215061F000B7C4FE /* JavaScriptCore.framework */,
|
||||||
F55788C6990114D378E7CC53 /* libPods-OutLive.a */,
|
C411D1CEBC225A6F92F136BA /* libPods-OutLive.a */,
|
||||||
);
|
);
|
||||||
name = Frameworks;
|
name = Frameworks;
|
||||||
sourceTree = "<group>";
|
sourceTree = "<group>";
|
||||||
};
|
};
|
||||||
|
7B63456AB81271603E0039A3 /* Pods */ = {
|
||||||
|
isa = PBXGroup;
|
||||||
|
children = (
|
||||||
|
4FAA45EB21D2C45B94943F48 /* Pods-OutLive.debug.xcconfig */,
|
||||||
|
0FF78E2879F14B0D75DF41B4 /* Pods-OutLive.release.xcconfig */,
|
||||||
|
);
|
||||||
|
name = Pods;
|
||||||
|
path = Pods;
|
||||||
|
sourceTree = "<group>";
|
||||||
|
};
|
||||||
80E2A1E8ECA8777F7264D855 /* ExpoModulesProviders */ = {
|
80E2A1E8ECA8777F7264D855 /* ExpoModulesProviders */ = {
|
||||||
isa = PBXGroup;
|
isa = PBXGroup;
|
||||||
children = (
|
children = (
|
||||||
@@ -96,8 +106,8 @@
|
|||||||
832341AE1AAA6A7D00B99B32 /* Libraries */,
|
832341AE1AAA6A7D00B99B32 /* Libraries */,
|
||||||
83CBBA001A601CBA00E9B192 /* Products */,
|
83CBBA001A601CBA00E9B192 /* Products */,
|
||||||
2D16E6871FA4F8E400B85C8A /* Frameworks */,
|
2D16E6871FA4F8E400B85C8A /* Frameworks */,
|
||||||
CCDACA5E9524EEDD222FCFC4 /* Pods */,
|
|
||||||
80E2A1E8ECA8777F7264D855 /* ExpoModulesProviders */,
|
80E2A1E8ECA8777F7264D855 /* ExpoModulesProviders */,
|
||||||
|
7B63456AB81271603E0039A3 /* Pods */,
|
||||||
);
|
);
|
||||||
indentWidth = 2;
|
indentWidth = 2;
|
||||||
sourceTree = "<group>";
|
sourceTree = "<group>";
|
||||||
@@ -129,16 +139,6 @@
|
|||||||
name = OutLive;
|
name = OutLive;
|
||||||
sourceTree = "<group>";
|
sourceTree = "<group>";
|
||||||
};
|
};
|
||||||
CCDACA5E9524EEDD222FCFC4 /* Pods */ = {
|
|
||||||
isa = PBXGroup;
|
|
||||||
children = (
|
|
||||||
8040E4CFF70F1C94062730AC /* Pods-OutLive.debug.xcconfig */,
|
|
||||||
EC19B3AF8877D65827EF5567 /* Pods-OutLive.release.xcconfig */,
|
|
||||||
);
|
|
||||||
name = Pods;
|
|
||||||
path = Pods;
|
|
||||||
sourceTree = "<group>";
|
|
||||||
};
|
|
||||||
/* End PBXGroup section */
|
/* End PBXGroup section */
|
||||||
|
|
||||||
/* Begin PBXNativeTarget section */
|
/* Begin PBXNativeTarget section */
|
||||||
@@ -146,14 +146,14 @@
|
|||||||
isa = PBXNativeTarget;
|
isa = PBXNativeTarget;
|
||||||
buildConfigurationList = 13B07F931A680F5B00A75B9A /* Build configuration list for PBXNativeTarget "OutLive" */;
|
buildConfigurationList = 13B07F931A680F5B00A75B9A /* Build configuration list for PBXNativeTarget "OutLive" */;
|
||||||
buildPhases = (
|
buildPhases = (
|
||||||
08A4A3CD28434E44B6B9DE2E /* [CP] Check Pods Manifest.lock */,
|
0B29745394A2F51EC4C9CBC7 /* [CP] Check Pods Manifest.lock */,
|
||||||
FED23F24D8115FB0D63DF986 /* [Expo] Configure project */,
|
FED23F24D8115FB0D63DF986 /* [Expo] Configure project */,
|
||||||
13B07F871A680F5B00A75B9A /* Sources */,
|
13B07F871A680F5B00A75B9A /* Sources */,
|
||||||
13B07F8C1A680F5B00A75B9A /* Frameworks */,
|
13B07F8C1A680F5B00A75B9A /* Frameworks */,
|
||||||
13B07F8E1A680F5B00A75B9A /* Resources */,
|
13B07F8E1A680F5B00A75B9A /* Resources */,
|
||||||
00DD1BFF1BD5951E006B06BC /* Bundle React Native code and images */,
|
00DD1BFF1BD5951E006B06BC /* Bundle React Native code and images */,
|
||||||
800E24972A6A228C8D4807E9 /* [CP] Copy Pods Resources */,
|
EF8950FE7A620E6B790F3042 /* [CP] Embed Pods Frameworks */,
|
||||||
018494B0E6694F9F0626A4B2 /* [CP] Embed Pods Frameworks */,
|
2266B6A6AD27779BC2D49E87 /* [CP] Copy Pods Resources */,
|
||||||
);
|
);
|
||||||
buildRules = (
|
buildRules = (
|
||||||
);
|
);
|
||||||
@@ -227,29 +227,7 @@
|
|||||||
shellPath = /bin/sh;
|
shellPath = /bin/sh;
|
||||||
shellScript = "if [[ -f \"$PODS_ROOT/../.xcode.env\" ]]; then\n source \"$PODS_ROOT/../.xcode.env\"\nfi\nif [[ -f \"$PODS_ROOT/../.xcode.env.local\" ]]; then\n source \"$PODS_ROOT/../.xcode.env.local\"\nfi\n\n# The project root by default is one level up from the ios directory\nexport PROJECT_ROOT=\"$PROJECT_DIR\"/..\n\nif [[ \"$CONFIGURATION\" = *Debug* ]]; then\n export SKIP_BUNDLING=1\nfi\nif [[ -z \"$ENTRY_FILE\" ]]; then\n # Set the entry JS file using the bundler's entry resolution.\n export ENTRY_FILE=\"$(\"$NODE_BINARY\" -e \"require('expo/scripts/resolveAppEntry')\" \"$PROJECT_ROOT\" ios absolute | tail -n 1)\"\nfi\n\nif [[ -z \"$CLI_PATH\" ]]; then\n # Use Expo CLI\n export CLI_PATH=\"$(\"$NODE_BINARY\" --print \"require.resolve('@expo/cli', { paths: [require.resolve('expo/package.json')] })\")\"\nfi\nif [[ -z \"$BUNDLE_COMMAND\" ]]; then\n # Default Expo CLI command for bundling\n export BUNDLE_COMMAND=\"export:embed\"\nfi\n\n# Source .xcode.env.updates if it exists to allow\n# SKIP_BUNDLING to be unset if needed\nif [[ -f \"$PODS_ROOT/../.xcode.env.updates\" ]]; then\n source \"$PODS_ROOT/../.xcode.env.updates\"\nfi\n# Source local changes to allow overrides\n# if needed\nif [[ -f \"$PODS_ROOT/../.xcode.env.local\" ]]; then\n source \"$PODS_ROOT/../.xcode.env.local\"\nfi\n\n`\"$NODE_BINARY\" --print \"require('path').dirname(require.resolve('react-native/package.json')) + '/scripts/react-native-xcode.sh'\"`\n\n";
|
shellScript = "if [[ -f \"$PODS_ROOT/../.xcode.env\" ]]; then\n source \"$PODS_ROOT/../.xcode.env\"\nfi\nif [[ -f \"$PODS_ROOT/../.xcode.env.local\" ]]; then\n source \"$PODS_ROOT/../.xcode.env.local\"\nfi\n\n# The project root by default is one level up from the ios directory\nexport PROJECT_ROOT=\"$PROJECT_DIR\"/..\n\nif [[ \"$CONFIGURATION\" = *Debug* ]]; then\n export SKIP_BUNDLING=1\nfi\nif [[ -z \"$ENTRY_FILE\" ]]; then\n # Set the entry JS file using the bundler's entry resolution.\n export ENTRY_FILE=\"$(\"$NODE_BINARY\" -e \"require('expo/scripts/resolveAppEntry')\" \"$PROJECT_ROOT\" ios absolute | tail -n 1)\"\nfi\n\nif [[ -z \"$CLI_PATH\" ]]; then\n # Use Expo CLI\n export CLI_PATH=\"$(\"$NODE_BINARY\" --print \"require.resolve('@expo/cli', { paths: [require.resolve('expo/package.json')] })\")\"\nfi\nif [[ -z \"$BUNDLE_COMMAND\" ]]; then\n # Default Expo CLI command for bundling\n export BUNDLE_COMMAND=\"export:embed\"\nfi\n\n# Source .xcode.env.updates if it exists to allow\n# SKIP_BUNDLING to be unset if needed\nif [[ -f \"$PODS_ROOT/../.xcode.env.updates\" ]]; then\n source \"$PODS_ROOT/../.xcode.env.updates\"\nfi\n# Source local changes to allow overrides\n# if needed\nif [[ -f \"$PODS_ROOT/../.xcode.env.local\" ]]; then\n source \"$PODS_ROOT/../.xcode.env.local\"\nfi\n\n`\"$NODE_BINARY\" --print \"require('path').dirname(require.resolve('react-native/package.json')) + '/scripts/react-native-xcode.sh'\"`\n\n";
|
||||||
};
|
};
|
||||||
018494B0E6694F9F0626A4B2 /* [CP] Embed Pods Frameworks */ = {
|
0B29745394A2F51EC4C9CBC7 /* [CP] Check Pods Manifest.lock */ = {
|
||||||
isa = PBXShellScriptBuildPhase;
|
|
||||||
buildActionMask = 2147483647;
|
|
||||||
files = (
|
|
||||||
);
|
|
||||||
inputPaths = (
|
|
||||||
"${PODS_ROOT}/Target Support Files/Pods-OutLive/Pods-OutLive-frameworks.sh",
|
|
||||||
"${PODS_XCFRAMEWORKS_BUILD_DIR}/React-Core-prebuilt/React.framework/React",
|
|
||||||
"${PODS_XCFRAMEWORKS_BUILD_DIR}/ReactNativeDependencies/ReactNativeDependencies.framework/ReactNativeDependencies",
|
|
||||||
"${PODS_XCFRAMEWORKS_BUILD_DIR}/hermes-engine/Pre-built/hermes.framework/hermes",
|
|
||||||
);
|
|
||||||
name = "[CP] Embed Pods Frameworks";
|
|
||||||
outputPaths = (
|
|
||||||
"${TARGET_BUILD_DIR}/${FRAMEWORKS_FOLDER_PATH}/React.framework",
|
|
||||||
"${TARGET_BUILD_DIR}/${FRAMEWORKS_FOLDER_PATH}/ReactNativeDependencies.framework",
|
|
||||||
"${TARGET_BUILD_DIR}/${FRAMEWORKS_FOLDER_PATH}/hermes.framework",
|
|
||||||
);
|
|
||||||
runOnlyForDeploymentPostprocessing = 0;
|
|
||||||
shellPath = /bin/sh;
|
|
||||||
shellScript = "\"${PODS_ROOT}/Target Support Files/Pods-OutLive/Pods-OutLive-frameworks.sh\"\n";
|
|
||||||
showEnvVarsInLog = 0;
|
|
||||||
};
|
|
||||||
08A4A3CD28434E44B6B9DE2E /* [CP] Check Pods Manifest.lock */ = {
|
|
||||||
isa = PBXShellScriptBuildPhase;
|
isa = PBXShellScriptBuildPhase;
|
||||||
buildActionMask = 2147483647;
|
buildActionMask = 2147483647;
|
||||||
files = (
|
files = (
|
||||||
@@ -271,7 +249,7 @@
|
|||||||
shellScript = "diff \"${PODS_PODFILE_DIR_PATH}/Podfile.lock\" \"${PODS_ROOT}/Manifest.lock\" > /dev/null\nif [ $? != 0 ] ; then\n # print error to STDERR\n echo \"error: The sandbox is not in sync with the Podfile.lock. Run 'pod install' or update your CocoaPods installation.\" >&2\n exit 1\nfi\n# This output is used by Xcode 'outputs' to avoid re-running this script phase.\necho \"SUCCESS\" > \"${SCRIPT_OUTPUT_FILE_0}\"\n";
|
shellScript = "diff \"${PODS_PODFILE_DIR_PATH}/Podfile.lock\" \"${PODS_ROOT}/Manifest.lock\" > /dev/null\nif [ $? != 0 ] ; then\n # print error to STDERR\n echo \"error: The sandbox is not in sync with the Podfile.lock. Run 'pod install' or update your CocoaPods installation.\" >&2\n exit 1\nfi\n# This output is used by Xcode 'outputs' to avoid re-running this script phase.\necho \"SUCCESS\" > \"${SCRIPT_OUTPUT_FILE_0}\"\n";
|
||||||
showEnvVarsInLog = 0;
|
showEnvVarsInLog = 0;
|
||||||
};
|
};
|
||||||
800E24972A6A228C8D4807E9 /* [CP] Copy Pods Resources */ = {
|
2266B6A6AD27779BC2D49E87 /* [CP] Copy Pods Resources */ = {
|
||||||
isa = PBXShellScriptBuildPhase;
|
isa = PBXShellScriptBuildPhase;
|
||||||
buildActionMask = 2147483647;
|
buildActionMask = 2147483647;
|
||||||
files = (
|
files = (
|
||||||
@@ -323,6 +301,28 @@
|
|||||||
shellScript = "\"${PODS_ROOT}/Target Support Files/Pods-OutLive/Pods-OutLive-resources.sh\"\n";
|
shellScript = "\"${PODS_ROOT}/Target Support Files/Pods-OutLive/Pods-OutLive-resources.sh\"\n";
|
||||||
showEnvVarsInLog = 0;
|
showEnvVarsInLog = 0;
|
||||||
};
|
};
|
||||||
|
EF8950FE7A620E6B790F3042 /* [CP] Embed Pods Frameworks */ = {
|
||||||
|
isa = PBXShellScriptBuildPhase;
|
||||||
|
buildActionMask = 2147483647;
|
||||||
|
files = (
|
||||||
|
);
|
||||||
|
inputPaths = (
|
||||||
|
"${PODS_ROOT}/Target Support Files/Pods-OutLive/Pods-OutLive-frameworks.sh",
|
||||||
|
"${PODS_XCFRAMEWORKS_BUILD_DIR}/React-Core-prebuilt/React.framework/React",
|
||||||
|
"${PODS_XCFRAMEWORKS_BUILD_DIR}/ReactNativeDependencies/ReactNativeDependencies.framework/ReactNativeDependencies",
|
||||||
|
"${PODS_XCFRAMEWORKS_BUILD_DIR}/hermes-engine/Pre-built/hermes.framework/hermes",
|
||||||
|
);
|
||||||
|
name = "[CP] Embed Pods Frameworks";
|
||||||
|
outputPaths = (
|
||||||
|
"${TARGET_BUILD_DIR}/${FRAMEWORKS_FOLDER_PATH}/React.framework",
|
||||||
|
"${TARGET_BUILD_DIR}/${FRAMEWORKS_FOLDER_PATH}/ReactNativeDependencies.framework",
|
||||||
|
"${TARGET_BUILD_DIR}/${FRAMEWORKS_FOLDER_PATH}/hermes.framework",
|
||||||
|
);
|
||||||
|
runOnlyForDeploymentPostprocessing = 0;
|
||||||
|
shellPath = /bin/sh;
|
||||||
|
shellScript = "\"${PODS_ROOT}/Target Support Files/Pods-OutLive/Pods-OutLive-frameworks.sh\"\n";
|
||||||
|
showEnvVarsInLog = 0;
|
||||||
|
};
|
||||||
FED23F24D8115FB0D63DF986 /* [Expo] Configure project */ = {
|
FED23F24D8115FB0D63DF986 /* [Expo] Configure project */ = {
|
||||||
isa = PBXShellScriptBuildPhase;
|
isa = PBXShellScriptBuildPhase;
|
||||||
alwaysOutOfDate = 1;
|
alwaysOutOfDate = 1;
|
||||||
@@ -367,7 +367,7 @@
|
|||||||
/* Begin XCBuildConfiguration section */
|
/* Begin XCBuildConfiguration section */
|
||||||
13B07F941A680F5B00A75B9A /* Debug */ = {
|
13B07F941A680F5B00A75B9A /* Debug */ = {
|
||||||
isa = XCBuildConfiguration;
|
isa = XCBuildConfiguration;
|
||||||
baseConfigurationReference = 8040E4CFF70F1C94062730AC /* Pods-OutLive.debug.xcconfig */;
|
baseConfigurationReference = 4FAA45EB21D2C45B94943F48 /* Pods-OutLive.debug.xcconfig */;
|
||||||
buildSettings = {
|
buildSettings = {
|
||||||
ASSETCATALOG_COMPILER_APPICON_NAME = AppIcon;
|
ASSETCATALOG_COMPILER_APPICON_NAME = AppIcon;
|
||||||
CLANG_ENABLE_MODULES = YES;
|
CLANG_ENABLE_MODULES = YES;
|
||||||
@@ -404,7 +404,7 @@
|
|||||||
};
|
};
|
||||||
13B07F951A680F5B00A75B9A /* Release */ = {
|
13B07F951A680F5B00A75B9A /* Release */ = {
|
||||||
isa = XCBuildConfiguration;
|
isa = XCBuildConfiguration;
|
||||||
baseConfigurationReference = EC19B3AF8877D65827EF5567 /* Pods-OutLive.release.xcconfig */;
|
baseConfigurationReference = 0FF78E2879F14B0D75DF41B4 /* Pods-OutLive.release.xcconfig */;
|
||||||
buildSettings = {
|
buildSettings = {
|
||||||
ASSETCATALOG_COMPILER_APPICON_NAME = AppIcon;
|
ASSETCATALOG_COMPILER_APPICON_NAME = AppIcon;
|
||||||
CLANG_ENABLE_MODULES = YES;
|
CLANG_ENABLE_MODULES = YES;
|
||||||
|
|||||||
@@ -8,7 +8,7 @@ PODS:
|
|||||||
- React-Core
|
- React-Core
|
||||||
- EXNotifications (0.32.11):
|
- EXNotifications (0.32.11):
|
||||||
- ExpoModulesCore
|
- ExpoModulesCore
|
||||||
- Expo (54.0.8):
|
- Expo (54.0.10):
|
||||||
- ExpoModulesCore
|
- ExpoModulesCore
|
||||||
- hermes-engine
|
- hermes-engine
|
||||||
- RCTRequired
|
- RCTRequired
|
||||||
@@ -35,9 +35,9 @@ PODS:
|
|||||||
- Yoga
|
- Yoga
|
||||||
- ExpoAppleAuthentication (8.0.7):
|
- ExpoAppleAuthentication (8.0.7):
|
||||||
- ExpoModulesCore
|
- ExpoModulesCore
|
||||||
- ExpoAsset (12.0.8):
|
- ExpoAsset (12.0.9):
|
||||||
- ExpoModulesCore
|
- ExpoModulesCore
|
||||||
- ExpoBackgroundTask (1.0.7):
|
- ExpoBackgroundTask (1.0.8):
|
||||||
- ExpoModulesCore
|
- ExpoModulesCore
|
||||||
- ExpoBlur (15.0.7):
|
- ExpoBlur (15.0.7):
|
||||||
- ExpoModulesCore
|
- ExpoModulesCore
|
||||||
@@ -45,7 +45,7 @@ PODS:
|
|||||||
- ExpoModulesCore
|
- ExpoModulesCore
|
||||||
- ZXingObjC/OneD
|
- ZXingObjC/OneD
|
||||||
- ZXingObjC/PDF417
|
- ZXingObjC/PDF417
|
||||||
- ExpoFileSystem (19.0.14):
|
- ExpoFileSystem (19.0.15):
|
||||||
- ExpoModulesCore
|
- ExpoModulesCore
|
||||||
- ExpoFont (14.0.8):
|
- ExpoFont (14.0.8):
|
||||||
- ExpoModulesCore
|
- ExpoModulesCore
|
||||||
@@ -71,7 +71,7 @@ PODS:
|
|||||||
- ExpoModulesCore
|
- ExpoModulesCore
|
||||||
- ExpoLinking (8.0.8):
|
- ExpoLinking (8.0.8):
|
||||||
- ExpoModulesCore
|
- ExpoModulesCore
|
||||||
- ExpoModulesCore (3.0.16):
|
- ExpoModulesCore (3.0.18):
|
||||||
- hermes-engine
|
- hermes-engine
|
||||||
- RCTRequired
|
- RCTRequired
|
||||||
- RCTTypeSafety
|
- RCTTypeSafety
|
||||||
@@ -104,7 +104,7 @@ PODS:
|
|||||||
- ExpoModulesCore
|
- ExpoModulesCore
|
||||||
- ExpoSystemUI (6.0.7):
|
- ExpoSystemUI (6.0.7):
|
||||||
- ExpoModulesCore
|
- ExpoModulesCore
|
||||||
- ExpoUI (0.2.0-beta.3):
|
- ExpoUI (0.2.0-beta.4):
|
||||||
- ExpoModulesCore
|
- ExpoModulesCore
|
||||||
- ExpoWebBrowser (15.0.7):
|
- ExpoWebBrowser (15.0.7):
|
||||||
- ExpoModulesCore
|
- ExpoModulesCore
|
||||||
@@ -1510,7 +1510,7 @@ PODS:
|
|||||||
- Yoga
|
- Yoga
|
||||||
- react-native-voice (3.2.4):
|
- react-native-voice (3.2.4):
|
||||||
- React-Core
|
- React-Core
|
||||||
- react-native-webview (13.15.0):
|
- react-native-webview (13.16.0):
|
||||||
- hermes-engine
|
- hermes-engine
|
||||||
- RCTRequired
|
- RCTRequired
|
||||||
- RCTTypeSafety
|
- RCTTypeSafety
|
||||||
@@ -1927,7 +1927,7 @@ PODS:
|
|||||||
- ReactCommon/turbomodule/core
|
- ReactCommon/turbomodule/core
|
||||||
- ReactNativeDependencies
|
- ReactNativeDependencies
|
||||||
- Yoga
|
- Yoga
|
||||||
- RNCPicker (2.11.1):
|
- RNCPicker (2.11.2):
|
||||||
- hermes-engine
|
- hermes-engine
|
||||||
- RCTRequired
|
- RCTRequired
|
||||||
- RCTTypeSafety
|
- RCTTypeSafety
|
||||||
@@ -1949,7 +1949,7 @@ PODS:
|
|||||||
- ReactCommon/turbomodule/core
|
- ReactCommon/turbomodule/core
|
||||||
- ReactNativeDependencies
|
- ReactNativeDependencies
|
||||||
- Yoga
|
- Yoga
|
||||||
- RNDateTimePicker (8.4.4):
|
- RNDateTimePicker (8.4.5):
|
||||||
- hermes-engine
|
- hermes-engine
|
||||||
- RCTRequired
|
- RCTRequired
|
||||||
- RCTTypeSafety
|
- RCTTypeSafety
|
||||||
@@ -2119,7 +2119,7 @@ PODS:
|
|||||||
- ReactCommon/turbomodule/core
|
- ReactCommon/turbomodule/core
|
||||||
- ReactNativeDependencies
|
- ReactNativeDependencies
|
||||||
- Yoga
|
- Yoga
|
||||||
- RNSentry (6.20.0):
|
- RNSentry (7.1.0):
|
||||||
- hermes-engine
|
- hermes-engine
|
||||||
- RCTRequired
|
- RCTRequired
|
||||||
- RCTTypeSafety
|
- RCTTypeSafety
|
||||||
@@ -2141,9 +2141,9 @@ PODS:
|
|||||||
- ReactCommon/turbomodule/bridging
|
- ReactCommon/turbomodule/bridging
|
||||||
- ReactCommon/turbomodule/core
|
- ReactCommon/turbomodule/core
|
||||||
- ReactNativeDependencies
|
- ReactNativeDependencies
|
||||||
- Sentry/HybridSDK (= 8.53.2)
|
- Sentry/HybridSDK (= 8.56.0)
|
||||||
- Yoga
|
- Yoga
|
||||||
- RNSVG (15.12.1):
|
- RNSVG (15.13.0):
|
||||||
- hermes-engine
|
- hermes-engine
|
||||||
- RCTRequired
|
- RCTRequired
|
||||||
- RCTTypeSafety
|
- RCTTypeSafety
|
||||||
@@ -2164,9 +2164,9 @@ PODS:
|
|||||||
- ReactCommon/turbomodule/bridging
|
- ReactCommon/turbomodule/bridging
|
||||||
- ReactCommon/turbomodule/core
|
- ReactCommon/turbomodule/core
|
||||||
- ReactNativeDependencies
|
- ReactNativeDependencies
|
||||||
- RNSVG/common (= 15.12.1)
|
- RNSVG/common (= 15.13.0)
|
||||||
- Yoga
|
- Yoga
|
||||||
- RNSVG/common (15.12.1):
|
- RNSVG/common (15.13.0):
|
||||||
- hermes-engine
|
- hermes-engine
|
||||||
- RCTRequired
|
- RCTRequired
|
||||||
- RCTTypeSafety
|
- RCTTypeSafety
|
||||||
@@ -2270,7 +2270,7 @@ PODS:
|
|||||||
- SDWebImageWebPCoder (0.14.6):
|
- SDWebImageWebPCoder (0.14.6):
|
||||||
- libwebp (~> 1.0)
|
- libwebp (~> 1.0)
|
||||||
- SDWebImage/Core (~> 5.17)
|
- SDWebImage/Core (~> 5.17)
|
||||||
- Sentry/HybridSDK (8.53.2)
|
- Sentry/HybridSDK (8.56.0)
|
||||||
- UMAppLoader (6.0.7)
|
- UMAppLoader (6.0.7)
|
||||||
- Yoga (0.0.0)
|
- Yoga (0.0.0)
|
||||||
- ZXingObjC/Core (3.6.9)
|
- ZXingObjC/Core (3.6.9)
|
||||||
@@ -2647,13 +2647,13 @@ SPEC CHECKSUMS:
|
|||||||
EXConstants: a95804601ee4a6aa7800645f9b070d753b1142b3
|
EXConstants: a95804601ee4a6aa7800645f9b070d753b1142b3
|
||||||
EXImageLoader: 189e3476581efe3ad4d1d3fb4735b7179eb26f05
|
EXImageLoader: 189e3476581efe3ad4d1d3fb4735b7179eb26f05
|
||||||
EXNotifications: 7a2975f4e282b827a0bc78bb1d232650cb569bbd
|
EXNotifications: 7a2975f4e282b827a0bc78bb1d232650cb569bbd
|
||||||
Expo: 4875e1cc72ae1398e33bcd6632943a4e93926ecd
|
Expo: c839a13691635386c0134f204dbbaed3cebff0a8
|
||||||
ExpoAppleAuthentication: bc9de6e9ff3340604213ab9031d4c4f7f802623e
|
ExpoAppleAuthentication: bc9de6e9ff3340604213ab9031d4c4f7f802623e
|
||||||
ExpoAsset: 84810d6fed8179f04d4a7a4a6b37028bbd726e26
|
ExpoAsset: 9ba6fbd677fb8e241a3899ac00fa735bc911eadf
|
||||||
ExpoBackgroundTask: 22ed53b129d4d5e15c39be9fa68e45d25f6781a1
|
ExpoBackgroundTask: e0d201d38539c571efc5f9cb661fae8ab36ed61b
|
||||||
ExpoBlur: 2dd8f64aa31f5d405652c21d3deb2d2588b1852f
|
ExpoBlur: 2dd8f64aa31f5d405652c21d3deb2d2588b1852f
|
||||||
ExpoCamera: e75f6807a2c047f3338bbadd101af4c71a1d13a5
|
ExpoCamera: e75f6807a2c047f3338bbadd101af4c71a1d13a5
|
||||||
ExpoFileSystem: 4fb06865906e781329eb67166bd64fc4749c3019
|
ExpoFileSystem: 5fb091ea11198e109ceef2bdef2e6e66523e62c4
|
||||||
ExpoFont: 86ceec09ffed1c99cfee36ceb79ba149074901b5
|
ExpoFont: 86ceec09ffed1c99cfee36ceb79ba149074901b5
|
||||||
ExpoGlassEffect: 744bf0c58c26a1b0212dff92856be07b98d01d8c
|
ExpoGlassEffect: 744bf0c58c26a1b0212dff92856be07b98d01d8c
|
||||||
ExpoHaptics: 807476b0c39e9d82b7270349d6487928ce32df84
|
ExpoHaptics: 807476b0c39e9d82b7270349d6487928ce32df84
|
||||||
@@ -2663,13 +2663,13 @@ SPEC CHECKSUMS:
|
|||||||
ExpoKeepAwake: 1a2e820692e933c94a565ec3fbbe38ac31658ffe
|
ExpoKeepAwake: 1a2e820692e933c94a565ec3fbbe38ac31658ffe
|
||||||
ExpoLinearGradient: a464898cb95153125e3b81894fd479bcb1c7dd27
|
ExpoLinearGradient: a464898cb95153125e3b81894fd479bcb1c7dd27
|
||||||
ExpoLinking: f051f28e50ea9269ff539317c166adec81d9342d
|
ExpoLinking: f051f28e50ea9269ff539317c166adec81d9342d
|
||||||
ExpoModulesCore: a28d1b4a5a9fbdacc41ca8d0c777a2d73496b022
|
ExpoModulesCore: c03ac4bc5a83469ca1222c3954a0499cd059addf
|
||||||
ExpoQuickActions: 31a70aa6a606128de4416a4830e09cfabfe6667f
|
ExpoQuickActions: 31a70aa6a606128de4416a4830e09cfabfe6667f
|
||||||
ExpoSplashScreen: cbb839de72110dea1851dd3e85080b7923af2540
|
ExpoSplashScreen: cbb839de72110dea1851dd3e85080b7923af2540
|
||||||
ExpoSQLite: 7fa091ba5562474093fef09be644161a65e11b3f
|
ExpoSQLite: 7fa091ba5562474093fef09be644161a65e11b3f
|
||||||
ExpoSymbols: 1ae04ce686de719b9720453b988d8bc5bf776c68
|
ExpoSymbols: 1ae04ce686de719b9720453b988d8bc5bf776c68
|
||||||
ExpoSystemUI: 6cd74248a2282adf6dec488a75fa532d69dee314
|
ExpoSystemUI: 6cd74248a2282adf6dec488a75fa532d69dee314
|
||||||
ExpoUI: 68238da1f16a814f77bc64712a269440174ee898
|
ExpoUI: 5e44b62e2589b7bc8a6123943105a230c693d000
|
||||||
ExpoWebBrowser: 533bc2a1b188eec1c10e4926decf658f1687b5e5
|
ExpoWebBrowser: 533bc2a1b188eec1c10e4926decf658f1687b5e5
|
||||||
EXTaskManager: cf225704fab8de8794a6f57f7fa41a90c0e2cd47
|
EXTaskManager: cf225704fab8de8794a6f57f7fa41a90c0e2cd47
|
||||||
FBLazyVector: 9e0cd874afd81d9a4d36679daca991b58b260d42
|
FBLazyVector: 9e0cd874afd81d9a4d36679daca991b58b260d42
|
||||||
@@ -2716,7 +2716,7 @@ SPEC CHECKSUMS:
|
|||||||
react-native-render-html: 5afc4751f1a98621b3009432ef84c47019dcb2bd
|
react-native-render-html: 5afc4751f1a98621b3009432ef84c47019dcb2bd
|
||||||
react-native-safe-area-context: 42a1b4f8774b577d03b53de7326e3d5757fe9513
|
react-native-safe-area-context: 42a1b4f8774b577d03b53de7326e3d5757fe9513
|
||||||
react-native-voice: 908a0eba96c8c3d643e4f98b7232c6557d0a6f9c
|
react-native-voice: 908a0eba96c8c3d643e4f98b7232c6557d0a6f9c
|
||||||
react-native-webview: b29007f4723bca10872028067b07abacfa1cb35a
|
react-native-webview: 3e303e80cadb5f17118c8c1502aa398e9287e415
|
||||||
React-NativeModulesApple: a9464983ccc0f66f45e93558671f60fc7536e438
|
React-NativeModulesApple: a9464983ccc0f66f45e93558671f60fc7536e438
|
||||||
React-oscompat: 73db7dbc80edef36a9d6ed3c6c4e1724ead4236d
|
React-oscompat: 73db7dbc80edef36a9d6ed3c6c4e1724ead4236d
|
||||||
React-perflogger: 123272debf907cc423962adafcf4513320e43757
|
React-perflogger: 123272debf907cc423962adafcf4513320e43757
|
||||||
@@ -2751,21 +2751,21 @@ SPEC CHECKSUMS:
|
|||||||
RevenueCat: 4743a5eee0004e1c03eabeb3498818f902a5d622
|
RevenueCat: 4743a5eee0004e1c03eabeb3498818f902a5d622
|
||||||
RNCAsyncStorage: 3a4f5e2777dae1688b781a487923a08569e27fe4
|
RNCAsyncStorage: 3a4f5e2777dae1688b781a487923a08569e27fe4
|
||||||
RNCMaskedView: d2578d41c59b936db122b2798ba37e4722d21035
|
RNCMaskedView: d2578d41c59b936db122b2798ba37e4722d21035
|
||||||
RNCPicker: a7170edbcbf8288de8edb2502e08e7fc757fa755
|
RNCPicker: ddce382c4b42ea2ee36dd588066f0c6d5a240707
|
||||||
RNDateTimePicker: be0e44bcb9ed0607c7c5f47dbedd88cf091f6791
|
RNDateTimePicker: 7dda2673bd2a6022ea8888fe669d735b2eac0b2d
|
||||||
RNDeviceInfo: d863506092aef7e7af3a1c350c913d867d795047
|
RNDeviceInfo: d863506092aef7e7af3a1c350c913d867d795047
|
||||||
RNGestureHandler: 2914750df066d89bf9d8f48a10ad5f0051108ac3
|
RNGestureHandler: 2914750df066d89bf9d8f48a10ad5f0051108ac3
|
||||||
RNPurchases: 1bc60e3a69af65d9cfe23967328421dd1df1763c
|
RNPurchases: 1bc60e3a69af65d9cfe23967328421dd1df1763c
|
||||||
RNReanimated: 8d3a14606ad49f022c17d9e12a2d339e9e5ad9b0
|
RNReanimated: 8d3a14606ad49f022c17d9e12a2d339e9e5ad9b0
|
||||||
RNScreens: d8d6f1792f6e7ac12b0190d33d8d390efc0c1845
|
RNScreens: d8d6f1792f6e7ac12b0190d33d8d390efc0c1845
|
||||||
RNSentry: 4ed853c2ae6b4a235afa67145e0c30ae5adcf0b2
|
RNSentry: dbee413744aec703b8763b620b14ed7a1e2db095
|
||||||
RNSVG: 31d6639663c249b7d5abc9728dde2041eb2a3c34
|
RNSVG: efc8a09e4ef50e7df0dbc9327752be127a2f610c
|
||||||
RNWorklets: 76fce72926e28e304afb44f0da23b2d24f2c1fa0
|
RNWorklets: 76fce72926e28e304afb44f0da23b2d24f2c1fa0
|
||||||
SDWebImage: 9f177d83116802728e122410fb25ad88f5c7608a
|
SDWebImage: 9f177d83116802728e122410fb25ad88f5c7608a
|
||||||
SDWebImageAVIFCoder: afe194a084e851f70228e4be35ef651df0fc5c57
|
SDWebImageAVIFCoder: afe194a084e851f70228e4be35ef651df0fc5c57
|
||||||
SDWebImageSVGCoder: 15a300a97ec1c8ac958f009c02220ac0402e936c
|
SDWebImageSVGCoder: 15a300a97ec1c8ac958f009c02220ac0402e936c
|
||||||
SDWebImageWebPCoder: e38c0a70396191361d60c092933e22c20d5b1380
|
SDWebImageWebPCoder: e38c0a70396191361d60c092933e22c20d5b1380
|
||||||
Sentry: 59993bffde4a1ac297ba6d268dc4bbce068d7c1b
|
Sentry: 3d82977434c80381cae856c40b99c39e4be6bc11
|
||||||
UMAppLoader: e1234c45d2b7da239e9e90fc4bbeacee12afd5b6
|
UMAppLoader: e1234c45d2b7da239e9e90fc4bbeacee12afd5b6
|
||||||
Yoga: 051f086b5ccf465ff2ed38a2cf5a558ae01aaaa1
|
Yoga: 051f086b5ccf465ff2ed38a2cf5a558ae01aaaa1
|
||||||
ZXingObjC: 8898711ab495761b2dbbdec76d90164a6d7e14c5
|
ZXingObjC: 8898711ab495761b2dbbdec76d90164a6d7e14c5
|
||||||
|
|||||||
481
package-lock.json
generated
481
package-lock.json
generated
@@ -9,24 +9,23 @@
|
|||||||
"version": "1.0.2",
|
"version": "1.0.2",
|
||||||
"dependencies": {
|
"dependencies": {
|
||||||
"@expo/metro-runtime": "~6.1.2",
|
"@expo/metro-runtime": "~6.1.2",
|
||||||
"@expo/ui": "~0.2.0-beta.3",
|
"@expo/ui": "~0.2.0-beta.4",
|
||||||
"@expo/vector-icons": "^15.0.2",
|
"@expo/vector-icons": "^15.0.2",
|
||||||
"@react-native-async-storage/async-storage": "^2.2.0",
|
"@react-native-async-storage/async-storage": "^2.2.0",
|
||||||
"@react-native-community/datetimepicker": "8.4.4",
|
"@react-native-community/datetimepicker": "8.4.5",
|
||||||
"@react-native-masked-view/masked-view": "^0.3.2",
|
"@react-native-masked-view/masked-view": "^0.3.2",
|
||||||
"@react-native-picker/picker": "2.11.1",
|
"@react-native-picker/picker": "2.11.2",
|
||||||
"@react-native-voice/voice": "^3.2.4",
|
"@react-native-voice/voice": "^3.2.4",
|
||||||
"@react-navigation/bottom-tabs": "^7.4.0",
|
"@react-navigation/bottom-tabs": "^7.4.0",
|
||||||
"@react-navigation/elements": "^2.6.4",
|
"@react-navigation/elements": "^2.6.4",
|
||||||
"@react-navigation/native": "^7.1.8",
|
"@react-navigation/native": "^7.1.8",
|
||||||
"@reduxjs/toolkit": "^2.9.0",
|
"@reduxjs/toolkit": "^2.9.0",
|
||||||
"@sentry/react-native": "~6.20.0",
|
"@sentry/react-native": "~7.1.0",
|
||||||
"@types/lodash": "^4.17.20",
|
"@types/lodash": "^4.17.20",
|
||||||
"cos-js-sdk-v5": "^1.6.0",
|
|
||||||
"dayjs": "^1.11.18",
|
"dayjs": "^1.11.18",
|
||||||
"expo": "^54.0.8",
|
"expo": "^54.0.10",
|
||||||
"expo-apple-authentication": "~8.0.7",
|
"expo-apple-authentication": "~8.0.7",
|
||||||
"expo-background-task": "~1.0.7",
|
"expo-background-task": "~1.0.8",
|
||||||
"expo-blur": "~15.0.7",
|
"expo-blur": "~15.0.7",
|
||||||
"expo-camera": "~17.0.8",
|
"expo-camera": "~17.0.8",
|
||||||
"expo-constants": "~18.0.9",
|
"expo-constants": "~18.0.9",
|
||||||
@@ -52,6 +51,7 @@
|
|||||||
"react": "19.1.0",
|
"react": "19.1.0",
|
||||||
"react-dom": "19.1.0",
|
"react-dom": "19.1.0",
|
||||||
"react-native": "0.81.4",
|
"react-native": "0.81.4",
|
||||||
|
"react-native-chart-kit": "^6.12.0",
|
||||||
"react-native-device-info": "^14.0.4",
|
"react-native-device-info": "^14.0.4",
|
||||||
"react-native-gesture-handler": "~2.28.0",
|
"react-native-gesture-handler": "~2.28.0",
|
||||||
"react-native-image-viewing": "^0.2.2",
|
"react-native-image-viewing": "^0.2.2",
|
||||||
@@ -63,10 +63,10 @@
|
|||||||
"react-native-render-html": "^6.3.4",
|
"react-native-render-html": "^6.3.4",
|
||||||
"react-native-safe-area-context": "~5.6.1",
|
"react-native-safe-area-context": "~5.6.1",
|
||||||
"react-native-screens": "~4.16.0",
|
"react-native-screens": "~4.16.0",
|
||||||
"react-native-svg": "15.12.1",
|
"react-native-svg": "^15.13.0",
|
||||||
"react-native-toast-message": "^2.3.3",
|
"react-native-toast-message": "^2.3.3",
|
||||||
"react-native-web": "^0.21.1",
|
"react-native-web": "^0.21.1",
|
||||||
"react-native-webview": "13.15.0",
|
"react-native-webview": "13.16.0",
|
||||||
"react-native-wheel-picker-expo": "^0.5.4",
|
"react-native-wheel-picker-expo": "^0.5.4",
|
||||||
"react-native-worklets": "0.5.1",
|
"react-native-worklets": "0.5.1",
|
||||||
"react-redux": "^9.2.0"
|
"react-redux": "^9.2.0"
|
||||||
@@ -395,7 +395,6 @@
|
|||||||
"version": "7.28.3",
|
"version": "7.28.3",
|
||||||
"resolved": "https://mirrors.tencent.com/npm/@babel/helper-wrap-function/-/helper-wrap-function-7.28.3.tgz",
|
"resolved": "https://mirrors.tencent.com/npm/@babel/helper-wrap-function/-/helper-wrap-function-7.28.3.tgz",
|
||||||
"integrity": "sha512-zdf983tNfLZFletc0RRXYrHrucBEg95NIFMkn6K9dbeMYnsgHaSBGcQqdsCSStG2PYwRre0Qc2NNSCXbG+xc6g==",
|
"integrity": "sha512-zdf983tNfLZFletc0RRXYrHrucBEg95NIFMkn6K9dbeMYnsgHaSBGcQqdsCSStG2PYwRre0Qc2NNSCXbG+xc6g==",
|
||||||
"license": "MIT",
|
|
||||||
"dependencies": {
|
"dependencies": {
|
||||||
"@babel/template": "^7.27.2",
|
"@babel/template": "^7.27.2",
|
||||||
"@babel/traverse": "^7.28.3",
|
"@babel/traverse": "^7.28.3",
|
||||||
@@ -621,7 +620,6 @@
|
|||||||
"version": "7.8.3",
|
"version": "7.8.3",
|
||||||
"resolved": "https://mirrors.tencent.com/npm/@babel/plugin-syntax-dynamic-import/-/plugin-syntax-dynamic-import-7.8.3.tgz",
|
"resolved": "https://mirrors.tencent.com/npm/@babel/plugin-syntax-dynamic-import/-/plugin-syntax-dynamic-import-7.8.3.tgz",
|
||||||
"integrity": "sha512-5gdGbFon+PszYzqs83S3E5mpi7/y/8M9eC90MRTZfduQOYW76ig6SOSPNe41IG5LoP3FGBn2N0RjVDSQiS94kQ==",
|
"integrity": "sha512-5gdGbFon+PszYzqs83S3E5mpi7/y/8M9eC90MRTZfduQOYW76ig6SOSPNe41IG5LoP3FGBn2N0RjVDSQiS94kQ==",
|
||||||
"license": "MIT",
|
|
||||||
"dependencies": {
|
"dependencies": {
|
||||||
"@babel/helper-plugin-utils": "^7.8.0"
|
"@babel/helper-plugin-utils": "^7.8.0"
|
||||||
},
|
},
|
||||||
@@ -1029,7 +1027,6 @@
|
|||||||
"version": "7.27.1",
|
"version": "7.27.1",
|
||||||
"resolved": "https://mirrors.tencent.com/npm/@babel/plugin-transform-function-name/-/plugin-transform-function-name-7.27.1.tgz",
|
"resolved": "https://mirrors.tencent.com/npm/@babel/plugin-transform-function-name/-/plugin-transform-function-name-7.27.1.tgz",
|
||||||
"integrity": "sha512-1bQeydJF9Nr1eBCMMbC+hdwmRlsv5XYOMu03YSWFwNs0HsAmtSxxF1fyuYPqemVldVyFmlCU7w8UE14LupUSZQ==",
|
"integrity": "sha512-1bQeydJF9Nr1eBCMMbC+hdwmRlsv5XYOMu03YSWFwNs0HsAmtSxxF1fyuYPqemVldVyFmlCU7w8UE14LupUSZQ==",
|
||||||
"license": "MIT",
|
|
||||||
"dependencies": {
|
"dependencies": {
|
||||||
"@babel/helper-compilation-targets": "^7.27.1",
|
"@babel/helper-compilation-targets": "^7.27.1",
|
||||||
"@babel/helper-plugin-utils": "^7.27.1",
|
"@babel/helper-plugin-utils": "^7.27.1",
|
||||||
@@ -1397,7 +1394,6 @@
|
|||||||
"version": "7.27.1",
|
"version": "7.27.1",
|
||||||
"resolved": "https://mirrors.tencent.com/npm/@babel/plugin-transform-sticky-regex/-/plugin-transform-sticky-regex-7.27.1.tgz",
|
"resolved": "https://mirrors.tencent.com/npm/@babel/plugin-transform-sticky-regex/-/plugin-transform-sticky-regex-7.27.1.tgz",
|
||||||
"integrity": "sha512-lhInBO5bi/Kowe2/aLdBAawijx+q1pQzicSgnkB6dUPc1+RC8QmJHKf2OjvU+NZWitguJHEaEmbV6VWEouT58g==",
|
"integrity": "sha512-lhInBO5bi/Kowe2/aLdBAawijx+q1pQzicSgnkB6dUPc1+RC8QmJHKf2OjvU+NZWitguJHEaEmbV6VWEouT58g==",
|
||||||
"license": "MIT",
|
|
||||||
"dependencies": {
|
"dependencies": {
|
||||||
"@babel/helper-plugin-utils": "^7.27.1"
|
"@babel/helper-plugin-utils": "^7.27.1"
|
||||||
},
|
},
|
||||||
@@ -2011,9 +2007,9 @@
|
|||||||
}
|
}
|
||||||
},
|
},
|
||||||
"node_modules/@expo/mcp-tunnel": {
|
"node_modules/@expo/mcp-tunnel": {
|
||||||
"version": "0.0.7",
|
"version": "0.0.8",
|
||||||
"resolved": "https://mirrors.tencent.com/npm/@expo/mcp-tunnel/-/mcp-tunnel-0.0.7.tgz",
|
"resolved": "https://mirrors.tencent.com/npm/@expo/mcp-tunnel/-/mcp-tunnel-0.0.8.tgz",
|
||||||
"integrity": "sha512-ht8Q1nKtiHobZqkUqt/7awwjW2D59ardP6XDVmGceGjQtoZELVaJDHyMIX+aVG9SZ9aj8+uGlhQYeBi57SZPMA==",
|
"integrity": "sha512-6261obzt6h9TQb6clET7Fw4Ig4AY2hfTNKI3gBt0gcTNxZipwMg8wER7ssDYieA9feD/FfPTuCPYFcR280aaWA==",
|
||||||
"license": "MIT",
|
"license": "MIT",
|
||||||
"dependencies": {
|
"dependencies": {
|
||||||
"ws": "^8.18.3",
|
"ws": "^8.18.3",
|
||||||
@@ -2051,9 +2047,9 @@
|
|||||||
}
|
}
|
||||||
},
|
},
|
||||||
"node_modules/@expo/metro": {
|
"node_modules/@expo/metro": {
|
||||||
"version": "0.1.1",
|
"version": "54.0.0",
|
||||||
"resolved": "https://mirrors.tencent.com/npm/@expo/metro/-/metro-0.1.1.tgz",
|
"resolved": "https://mirrors.tencent.com/npm/@expo/metro/-/metro-54.0.0.tgz",
|
||||||
"integrity": "sha512-zvA9BE6myFoCxeiw/q3uE/kVkIwLTy27a+fDoEl7WQ7EvKfFeiXnRVhUplDMLGZIHH8VC38Gay6RBtVhnmOm5w==",
|
"integrity": "sha512-x2HlliepLJVLSe0Fl/LuPT83Mn2EXpPlb1ngVtcawlz4IfbkYJo16/Zfsfrn1t9d8LpN5dD44Dc55Q1/fO05Nw==",
|
||||||
"license": "MIT",
|
"license": "MIT",
|
||||||
"dependencies": {
|
"dependencies": {
|
||||||
"metro": "0.83.1",
|
"metro": "0.83.1",
|
||||||
@@ -2071,9 +2067,9 @@
|
|||||||
}
|
}
|
||||||
},
|
},
|
||||||
"node_modules/@expo/metro-config": {
|
"node_modules/@expo/metro-config": {
|
||||||
"version": "54.0.3",
|
"version": "54.0.5",
|
||||||
"resolved": "https://mirrors.tencent.com/npm/@expo/metro-config/-/metro-config-54.0.3.tgz",
|
"resolved": "https://mirrors.tencent.com/npm/@expo/metro-config/-/metro-config-54.0.5.tgz",
|
||||||
"integrity": "sha512-TQ5MKSGFB6zJxi+Yr8VYXQFHzRXgvSJzNsHX1otTqnxjXbptwYiXhljAqGSjr3pByq4+sHX/GifMk6fGgAANmA==",
|
"integrity": "sha512-Y+oYtLg8b3L4dHFImfu8+yqO+KOcBpLLjxN7wGbs7miP/BjntBQ6tKbPxyKxHz5UUa1s+buBzZlZhsFo9uqKMg==",
|
||||||
"license": "MIT",
|
"license": "MIT",
|
||||||
"dependencies": {
|
"dependencies": {
|
||||||
"@babel/code-frame": "^7.20.0",
|
"@babel/code-frame": "^7.20.0",
|
||||||
@@ -2082,7 +2078,7 @@
|
|||||||
"@expo/config": "~12.0.9",
|
"@expo/config": "~12.0.9",
|
||||||
"@expo/env": "~2.0.7",
|
"@expo/env": "~2.0.7",
|
||||||
"@expo/json-file": "~10.0.7",
|
"@expo/json-file": "~10.0.7",
|
||||||
"@expo/metro": "~0.1.1",
|
"@expo/metro": "~54.0.0",
|
||||||
"@expo/spawn-async": "^1.7.2",
|
"@expo/spawn-async": "^1.7.2",
|
||||||
"browserslist": "^4.25.0",
|
"browserslist": "^4.25.0",
|
||||||
"chalk": "^4.1.0",
|
"chalk": "^4.1.0",
|
||||||
@@ -2238,9 +2234,9 @@
|
|||||||
"license": "MIT"
|
"license": "MIT"
|
||||||
},
|
},
|
||||||
"node_modules/@expo/server": {
|
"node_modules/@expo/server": {
|
||||||
"version": "0.7.4",
|
"version": "0.7.5",
|
||||||
"resolved": "https://mirrors.tencent.com/npm/@expo/server/-/server-0.7.4.tgz",
|
"resolved": "https://mirrors.tencent.com/npm/@expo/server/-/server-0.7.5.tgz",
|
||||||
"integrity": "sha512-8bfRzL7h1Qgrmf3auR71sPAcAuxnmNkRJs+8enL8vZi2+hihevLhrayDu7P0A/XGEq7wySAGvBBFfIB00Et/AA==",
|
"integrity": "sha512-aNVcerBSJEcUspvXRWChEgFhix1gTNIcgFDevaU/A1+TkfbejNIjGX4rfLEpfyRzzdLIRuOkBNjD+uTYMzohyg==",
|
||||||
"license": "MIT",
|
"license": "MIT",
|
||||||
"dependencies": {
|
"dependencies": {
|
||||||
"abort-controller": "^3.0.0",
|
"abort-controller": "^3.0.0",
|
||||||
@@ -2269,10 +2265,13 @@
|
|||||||
"license": "MIT"
|
"license": "MIT"
|
||||||
},
|
},
|
||||||
"node_modules/@expo/ui": {
|
"node_modules/@expo/ui": {
|
||||||
"version": "0.2.0-beta.3",
|
"version": "0.2.0-beta.4",
|
||||||
"resolved": "https://mirrors.tencent.com/npm/@expo/ui/-/ui-0.2.0-beta.3.tgz",
|
"resolved": "https://mirrors.tencent.com/npm/@expo/ui/-/ui-0.2.0-beta.4.tgz",
|
||||||
"integrity": "sha512-o2gtJm8Y1LZjRzapE1q26C6B6RBhyj4jEeBlfOCIWi5R72W+tOX1N5QAxpV9AwZlWi39Y7BSS2vtocQhFEJWHQ==",
|
"integrity": "sha512-49DoNCQ5jyLFvnTZpVU1aMSbfgRtX4QQtnX7WM97A7dJhocvaF7g7MA3LBeoZ07MMVKuuwfcIBM2F/f52S+6zw==",
|
||||||
"license": "MIT",
|
"license": "MIT",
|
||||||
|
"dependencies": {
|
||||||
|
"sf-symbols-typescript": "^2.1.0"
|
||||||
|
},
|
||||||
"peerDependencies": {
|
"peerDependencies": {
|
||||||
"expo": "*",
|
"expo": "*",
|
||||||
"react": "*",
|
"react": "*",
|
||||||
@@ -3382,9 +3381,9 @@
|
|||||||
}
|
}
|
||||||
},
|
},
|
||||||
"node_modules/@react-native-community/datetimepicker": {
|
"node_modules/@react-native-community/datetimepicker": {
|
||||||
"version": "8.4.4",
|
"version": "8.4.5",
|
||||||
"resolved": "https://mirrors.tencent.com/npm/@react-native-community/datetimepicker/-/datetimepicker-8.4.4.tgz",
|
"resolved": "https://mirrors.tencent.com/npm/@react-native-community/datetimepicker/-/datetimepicker-8.4.5.tgz",
|
||||||
"integrity": "sha512-bc4ZixEHxZC9/qf5gbdYvIJiLZ5CLmEsC3j+Yhe1D1KC/3QhaIfGDVdUcid0PdlSoGOSEq4VlB93AWyetEyBSQ==",
|
"integrity": "sha512-vvVOJAHjU8TFBzTUjQzANCL6C3pZSE2zjfutCATk790uz7ASEc2tOBD+EIG4BTelWtP2G9jqvXp2L7XGdhEBRg==",
|
||||||
"license": "MIT",
|
"license": "MIT",
|
||||||
"dependencies": {
|
"dependencies": {
|
||||||
"invariant": "^2.2.4"
|
"invariant": "^2.2.4"
|
||||||
@@ -3415,9 +3414,9 @@
|
|||||||
}
|
}
|
||||||
},
|
},
|
||||||
"node_modules/@react-native-picker/picker": {
|
"node_modules/@react-native-picker/picker": {
|
||||||
"version": "2.11.1",
|
"version": "2.11.2",
|
||||||
"resolved": "https://mirrors.tencent.com/npm/@react-native-picker/picker/-/picker-2.11.1.tgz",
|
"resolved": "https://mirrors.tencent.com/npm/@react-native-picker/picker/-/picker-2.11.2.tgz",
|
||||||
"integrity": "sha512-ThklnkK4fV3yynnIIRBkxxjxR4IFbdMNJVF6tlLdOJ/zEFUEFUEdXY0KmH0iYzMwY8W4/InWsLiA7AkpAbnexA==",
|
"integrity": "sha512-2zyFdW4jgHjF+NeuDZ4nl3hJ+8suey69bI3yljqhNyowfklW2NwNrdDUaJ2iwtPCpk2pt7834aPF8TI6iyZRhA==",
|
||||||
"license": "MIT",
|
"license": "MIT",
|
||||||
"workspaces": [
|
"workspaces": [
|
||||||
"example"
|
"example"
|
||||||
@@ -3993,84 +3992,84 @@
|
|||||||
"license": "MIT"
|
"license": "MIT"
|
||||||
},
|
},
|
||||||
"node_modules/@sentry-internal/browser-utils": {
|
"node_modules/@sentry-internal/browser-utils": {
|
||||||
"version": "8.55.0",
|
"version": "10.12.0",
|
||||||
"resolved": "https://mirrors.tencent.com/npm/@sentry-internal/browser-utils/-/browser-utils-8.55.0.tgz",
|
"resolved": "https://mirrors.tencent.com/npm/@sentry-internal/browser-utils/-/browser-utils-10.12.0.tgz",
|
||||||
"integrity": "sha512-ROgqtQfpH/82AQIpESPqPQe0UyWywKJsmVIqi3c5Fh+zkds5LUxnssTj3yNd1x+kxaPDVB023jAP+3ibNgeNDw==",
|
"integrity": "sha512-dozbx389jhKynj0d657FsgbBVOar7pX3mb6GjqCxslXF0VKpZH2Xks0U32RgDY/nK27O+o095IWz7YvjVmPkDw==",
|
||||||
"license": "MIT",
|
"license": "MIT",
|
||||||
"dependencies": {
|
"dependencies": {
|
||||||
"@sentry/core": "8.55.0"
|
"@sentry/core": "10.12.0"
|
||||||
},
|
},
|
||||||
"engines": {
|
"engines": {
|
||||||
"node": ">=14.18"
|
"node": ">=18"
|
||||||
}
|
}
|
||||||
},
|
},
|
||||||
"node_modules/@sentry-internal/feedback": {
|
"node_modules/@sentry-internal/feedback": {
|
||||||
"version": "8.55.0",
|
"version": "10.12.0",
|
||||||
"resolved": "https://mirrors.tencent.com/npm/@sentry-internal/feedback/-/feedback-8.55.0.tgz",
|
"resolved": "https://mirrors.tencent.com/npm/@sentry-internal/feedback/-/feedback-10.12.0.tgz",
|
||||||
"integrity": "sha512-cP3BD/Q6pquVQ+YL+rwCnorKuTXiS9KXW8HNKu4nmmBAyf7urjs+F6Hr1k9MXP5yQ8W3yK7jRWd09Yu6DHWOiw==",
|
"integrity": "sha512-0+7ceO6yQPPqfxRc9ue/xoPHKcnB917ezPaehGQNfAFNQB9PNTG1y55+8mRu0Fw+ANbZeCt/HyoCmXuRdxmkpg==",
|
||||||
"license": "MIT",
|
"license": "MIT",
|
||||||
"dependencies": {
|
"dependencies": {
|
||||||
"@sentry/core": "8.55.0"
|
"@sentry/core": "10.12.0"
|
||||||
},
|
},
|
||||||
"engines": {
|
"engines": {
|
||||||
"node": ">=14.18"
|
"node": ">=18"
|
||||||
}
|
}
|
||||||
},
|
},
|
||||||
"node_modules/@sentry-internal/replay": {
|
"node_modules/@sentry-internal/replay": {
|
||||||
"version": "8.55.0",
|
"version": "10.12.0",
|
||||||
"resolved": "https://mirrors.tencent.com/npm/@sentry-internal/replay/-/replay-8.55.0.tgz",
|
"resolved": "https://mirrors.tencent.com/npm/@sentry-internal/replay/-/replay-10.12.0.tgz",
|
||||||
"integrity": "sha512-roCDEGkORwolxBn8xAKedybY+Jlefq3xYmgN2fr3BTnsXjSYOPC7D1/mYqINBat99nDtvgFvNfRcZPiwwZ1hSw==",
|
"integrity": "sha512-/1093gSNGN5KlOBsuyAl33JkzGiG38kCnxswQLZWpPpR6LBbR1Ddb18HjhDpoQNNEZybJBgJC3a5NKl43C2TSQ==",
|
||||||
"license": "MIT",
|
"license": "MIT",
|
||||||
"dependencies": {
|
"dependencies": {
|
||||||
"@sentry-internal/browser-utils": "8.55.0",
|
"@sentry-internal/browser-utils": "10.12.0",
|
||||||
"@sentry/core": "8.55.0"
|
"@sentry/core": "10.12.0"
|
||||||
},
|
},
|
||||||
"engines": {
|
"engines": {
|
||||||
"node": ">=14.18"
|
"node": ">=18"
|
||||||
}
|
}
|
||||||
},
|
},
|
||||||
"node_modules/@sentry-internal/replay-canvas": {
|
"node_modules/@sentry-internal/replay-canvas": {
|
||||||
"version": "8.55.0",
|
"version": "10.12.0",
|
||||||
"resolved": "https://mirrors.tencent.com/npm/@sentry-internal/replay-canvas/-/replay-canvas-8.55.0.tgz",
|
"resolved": "https://mirrors.tencent.com/npm/@sentry-internal/replay-canvas/-/replay-canvas-10.12.0.tgz",
|
||||||
"integrity": "sha512-nIkfgRWk1091zHdu4NbocQsxZF1rv1f7bbp3tTIlZYbrH62XVZosx5iHAuZG0Zc48AETLE7K4AX9VGjvQj8i9w==",
|
"integrity": "sha512-W/z1/+69i3INNfPjD1KuinSNaRQaApjzwb37IFmiyF440F93hxmEYgXHk3poOlYYaigl2JMYbysGPWOiXnqUXA==",
|
||||||
"license": "MIT",
|
"license": "MIT",
|
||||||
"dependencies": {
|
"dependencies": {
|
||||||
"@sentry-internal/replay": "8.55.0",
|
"@sentry-internal/replay": "10.12.0",
|
||||||
"@sentry/core": "8.55.0"
|
"@sentry/core": "10.12.0"
|
||||||
},
|
},
|
||||||
"engines": {
|
"engines": {
|
||||||
"node": ">=14.18"
|
"node": ">=18"
|
||||||
}
|
}
|
||||||
},
|
},
|
||||||
"node_modules/@sentry/babel-plugin-component-annotate": {
|
"node_modules/@sentry/babel-plugin-component-annotate": {
|
||||||
"version": "4.1.1",
|
"version": "4.3.0",
|
||||||
"resolved": "https://mirrors.tencent.com/npm/@sentry/babel-plugin-component-annotate/-/babel-plugin-component-annotate-4.1.1.tgz",
|
"resolved": "https://mirrors.tencent.com/npm/@sentry/babel-plugin-component-annotate/-/babel-plugin-component-annotate-4.3.0.tgz",
|
||||||
"integrity": "sha512-HUpqrCK7zDVojTV6KL6BO9ZZiYrEYQqvYQrscyMsq04z+WCupXaH6YEliiNRvreR8DBJgdsG3lBRpebhUGmvfA==",
|
"integrity": "sha512-OuxqBprXRyhe8Pkfyz/4yHQJc5c3lm+TmYWSSx8u48g5yKewSQDOxkiLU5pAk3WnbLPy8XwU/PN+2BG0YFU9Nw==",
|
||||||
"license": "MIT",
|
"license": "MIT",
|
||||||
"engines": {
|
"engines": {
|
||||||
"node": ">= 14"
|
"node": ">= 14"
|
||||||
}
|
}
|
||||||
},
|
},
|
||||||
"node_modules/@sentry/browser": {
|
"node_modules/@sentry/browser": {
|
||||||
"version": "8.55.0",
|
"version": "10.12.0",
|
||||||
"resolved": "https://mirrors.tencent.com/npm/@sentry/browser/-/browser-8.55.0.tgz",
|
"resolved": "https://mirrors.tencent.com/npm/@sentry/browser/-/browser-10.12.0.tgz",
|
||||||
"integrity": "sha512-1A31mCEWCjaMxJt6qGUK+aDnLDcK6AwLAZnqpSchNysGni1pSn1RWSmk9TBF8qyTds5FH8B31H480uxMPUJ7Cw==",
|
"integrity": "sha512-lKyaB2NFmr7SxPjmMTLLhQ7xfxaY3kdkMhpzuRI5qwOngtKt4+FtvNYHRuz+PTtEFv4OaHhNNbRn6r91gWguQg==",
|
||||||
"license": "MIT",
|
"license": "MIT",
|
||||||
"dependencies": {
|
"dependencies": {
|
||||||
"@sentry-internal/browser-utils": "8.55.0",
|
"@sentry-internal/browser-utils": "10.12.0",
|
||||||
"@sentry-internal/feedback": "8.55.0",
|
"@sentry-internal/feedback": "10.12.0",
|
||||||
"@sentry-internal/replay": "8.55.0",
|
"@sentry-internal/replay": "10.12.0",
|
||||||
"@sentry-internal/replay-canvas": "8.55.0",
|
"@sentry-internal/replay-canvas": "10.12.0",
|
||||||
"@sentry/core": "8.55.0"
|
"@sentry/core": "10.12.0"
|
||||||
},
|
},
|
||||||
"engines": {
|
"engines": {
|
||||||
"node": ">=14.18"
|
"node": ">=18"
|
||||||
}
|
}
|
||||||
},
|
},
|
||||||
"node_modules/@sentry/cli": {
|
"node_modules/@sentry/cli": {
|
||||||
"version": "2.51.1",
|
"version": "2.53.0",
|
||||||
"resolved": "https://mirrors.tencent.com/npm/@sentry/cli/-/cli-2.51.1.tgz",
|
"resolved": "https://mirrors.tencent.com/npm/@sentry/cli/-/cli-2.53.0.tgz",
|
||||||
"integrity": "sha512-FU+54kNcKJABU0+ekvtnoXHM9zVrDe1zXVFbQT7mS0On0m1P0zFRGdzbnWe2XzpzuEAJXtK6aog/W+esRU9AIA==",
|
"integrity": "sha512-n2ZNb+5Z6AZKQSI0SusQ7ZzFL637mfw3Xh4C3PEyVSn9LiF683fX0TTq8OeGmNZQS4maYfS95IFD+XpydU0dEA==",
|
||||||
"hasInstallScript": true,
|
"hasInstallScript": true,
|
||||||
"license": "BSD-3-Clause",
|
"license": "BSD-3-Clause",
|
||||||
"dependencies": {
|
"dependencies": {
|
||||||
@@ -4087,20 +4086,20 @@
|
|||||||
"node": ">= 10"
|
"node": ">= 10"
|
||||||
},
|
},
|
||||||
"optionalDependencies": {
|
"optionalDependencies": {
|
||||||
"@sentry/cli-darwin": "2.51.1",
|
"@sentry/cli-darwin": "2.53.0",
|
||||||
"@sentry/cli-linux-arm": "2.51.1",
|
"@sentry/cli-linux-arm": "2.53.0",
|
||||||
"@sentry/cli-linux-arm64": "2.51.1",
|
"@sentry/cli-linux-arm64": "2.53.0",
|
||||||
"@sentry/cli-linux-i686": "2.51.1",
|
"@sentry/cli-linux-i686": "2.53.0",
|
||||||
"@sentry/cli-linux-x64": "2.51.1",
|
"@sentry/cli-linux-x64": "2.53.0",
|
||||||
"@sentry/cli-win32-arm64": "2.51.1",
|
"@sentry/cli-win32-arm64": "2.53.0",
|
||||||
"@sentry/cli-win32-i686": "2.51.1",
|
"@sentry/cli-win32-i686": "2.53.0",
|
||||||
"@sentry/cli-win32-x64": "2.51.1"
|
"@sentry/cli-win32-x64": "2.53.0"
|
||||||
}
|
}
|
||||||
},
|
},
|
||||||
"node_modules/@sentry/cli-darwin": {
|
"node_modules/@sentry/cli-darwin": {
|
||||||
"version": "2.51.1",
|
"version": "2.53.0",
|
||||||
"resolved": "https://mirrors.tencent.com/npm/@sentry/cli-darwin/-/cli-darwin-2.51.1.tgz",
|
"resolved": "https://mirrors.tencent.com/npm/@sentry/cli-darwin/-/cli-darwin-2.53.0.tgz",
|
||||||
"integrity": "sha512-R1u8IQdn/7Rr8sf6bVVr0vJT4OqwCFdYsS44Y3OoWGVJW2aAQTWRJOTlV4ueclVLAyUQzmgBjfR8AtiUhd/M5w==",
|
"integrity": "sha512-NNPfpILMwKgpHiyJubHHuauMKltkrgLQ5tvMdxNpxY60jBNdo5VJtpESp4XmXlnidzV4j1z61V4ozU6ttDgt5Q==",
|
||||||
"license": "BSD-3-Clause",
|
"license": "BSD-3-Clause",
|
||||||
"optional": true,
|
"optional": true,
|
||||||
"os": [
|
"os": [
|
||||||
@@ -4111,9 +4110,9 @@
|
|||||||
}
|
}
|
||||||
},
|
},
|
||||||
"node_modules/@sentry/cli-linux-arm": {
|
"node_modules/@sentry/cli-linux-arm": {
|
||||||
"version": "2.51.1",
|
"version": "2.53.0",
|
||||||
"resolved": "https://mirrors.tencent.com/npm/@sentry/cli-linux-arm/-/cli-linux-arm-2.51.1.tgz",
|
"resolved": "https://mirrors.tencent.com/npm/@sentry/cli-linux-arm/-/cli-linux-arm-2.53.0.tgz",
|
||||||
"integrity": "sha512-Klro17OmSSKOOSaxVKBBNPXet2+HrIDZUTSp8NRl4LQsIubdc1S/aQ79cH/g52Muwzpl3aFwPxyXw+46isfEgA==",
|
"integrity": "sha512-NdRzQ15Ht83qG0/Lyu11ciy/Hu/oXbbtJUgwzACc7bWvHQA8xEwTsehWexqn1529Kfc5EjuZ0Wmj3MHmp+jOWw==",
|
||||||
"cpu": [
|
"cpu": [
|
||||||
"arm"
|
"arm"
|
||||||
],
|
],
|
||||||
@@ -4129,9 +4128,9 @@
|
|||||||
}
|
}
|
||||||
},
|
},
|
||||||
"node_modules/@sentry/cli-linux-arm64": {
|
"node_modules/@sentry/cli-linux-arm64": {
|
||||||
"version": "2.51.1",
|
"version": "2.53.0",
|
||||||
"resolved": "https://mirrors.tencent.com/npm/@sentry/cli-linux-arm64/-/cli-linux-arm64-2.51.1.tgz",
|
"resolved": "https://mirrors.tencent.com/npm/@sentry/cli-linux-arm64/-/cli-linux-arm64-2.53.0.tgz",
|
||||||
"integrity": "sha512-nvA/hdhsw4bKLhslgbBqqvETjXwN1FVmwHLOrRvRcejDO6zeIKUElDiL5UOjGG0NC+62AxyNw5ri8Wzp/7rg9Q==",
|
"integrity": "sha512-xY/CZ1dVazsSCvTXzKpAgXaRqfljVfdrFaYZRUaRPf1ZJRGa3dcrivoOhSIeG/p5NdYtMvslMPY9Gm2MT0M83A==",
|
||||||
"cpu": [
|
"cpu": [
|
||||||
"arm64"
|
"arm64"
|
||||||
],
|
],
|
||||||
@@ -4147,9 +4146,9 @@
|
|||||||
}
|
}
|
||||||
},
|
},
|
||||||
"node_modules/@sentry/cli-linux-i686": {
|
"node_modules/@sentry/cli-linux-i686": {
|
||||||
"version": "2.51.1",
|
"version": "2.53.0",
|
||||||
"resolved": "https://mirrors.tencent.com/npm/@sentry/cli-linux-i686/-/cli-linux-i686-2.51.1.tgz",
|
"resolved": "https://mirrors.tencent.com/npm/@sentry/cli-linux-i686/-/cli-linux-i686-2.53.0.tgz",
|
||||||
"integrity": "sha512-jp4TmR8VXBdT9dLo6mHniQHN0xKnmJoPGVz9h9VDvO2Vp/8o96rBc555D4Am5wJOXmfuPlyjGcmwHlB3+kQRWw==",
|
"integrity": "sha512-0REmBibGAB4jtqt9S6JEsFF4QybzcXHPcHtJjgMi5T0ueh952uG9wLzjSxQErCsxTKF+fL8oG0Oz5yKBuCwCCQ==",
|
||||||
"cpu": [
|
"cpu": [
|
||||||
"x86",
|
"x86",
|
||||||
"ia32"
|
"ia32"
|
||||||
@@ -4166,9 +4165,9 @@
|
|||||||
}
|
}
|
||||||
},
|
},
|
||||||
"node_modules/@sentry/cli-linux-x64": {
|
"node_modules/@sentry/cli-linux-x64": {
|
||||||
"version": "2.51.1",
|
"version": "2.53.0",
|
||||||
"resolved": "https://mirrors.tencent.com/npm/@sentry/cli-linux-x64/-/cli-linux-x64-2.51.1.tgz",
|
"resolved": "https://mirrors.tencent.com/npm/@sentry/cli-linux-x64/-/cli-linux-x64-2.53.0.tgz",
|
||||||
"integrity": "sha512-JuLt0MXM2KHNFmjqXjv23sly56mJmUQzGBWktkpY3r+jE08f5NLKPd5wQ6W/SoLXGIOKnwLz0WoUg7aBVyQdeQ==",
|
"integrity": "sha512-9UGJL+Vy5N/YL1EWPZ/dyXLkShlNaDNrzxx4G7mTS9ywjg+BIuemo6rnN7w43K1NOjObTVO6zY0FwumJ1pCyLg==",
|
||||||
"cpu": [
|
"cpu": [
|
||||||
"x64"
|
"x64"
|
||||||
],
|
],
|
||||||
@@ -4184,9 +4183,9 @@
|
|||||||
}
|
}
|
||||||
},
|
},
|
||||||
"node_modules/@sentry/cli-win32-arm64": {
|
"node_modules/@sentry/cli-win32-arm64": {
|
||||||
"version": "2.51.1",
|
"version": "2.53.0",
|
||||||
"resolved": "https://mirrors.tencent.com/npm/@sentry/cli-win32-arm64/-/cli-win32-arm64-2.51.1.tgz",
|
"resolved": "https://mirrors.tencent.com/npm/@sentry/cli-win32-arm64/-/cli-win32-arm64-2.53.0.tgz",
|
||||||
"integrity": "sha512-PiwjTdIFDazTQCTyDCutiSkt4omggYSKnO3HE1+LDjElsFrWY9pJs4fU3D40WAyE2oKu0MarjNH/WxYGdqEAlg==",
|
"integrity": "sha512-G1kjOjrjMBY20rQcJV2GA8KQE74ufmROCDb2GXYRfjvb1fKAsm4Oh8N5+Tqi7xEHdjQoLPkE4CNW0aH68JSUDQ==",
|
||||||
"cpu": [
|
"cpu": [
|
||||||
"arm64"
|
"arm64"
|
||||||
],
|
],
|
||||||
@@ -4200,9 +4199,9 @@
|
|||||||
}
|
}
|
||||||
},
|
},
|
||||||
"node_modules/@sentry/cli-win32-i686": {
|
"node_modules/@sentry/cli-win32-i686": {
|
||||||
"version": "2.51.1",
|
"version": "2.53.0",
|
||||||
"resolved": "https://mirrors.tencent.com/npm/@sentry/cli-win32-i686/-/cli-win32-i686-2.51.1.tgz",
|
"resolved": "https://mirrors.tencent.com/npm/@sentry/cli-win32-i686/-/cli-win32-i686-2.53.0.tgz",
|
||||||
"integrity": "sha512-TMvZZpeiI2HmrDFNVQ0uOiTuYKvjEGOZdmUxe3WlhZW82A/2Oka7sQ24ljcOovbmBOj5+fjCHRUMYvLMCWiysA==",
|
"integrity": "sha512-qbGTZUzesuUaPtY9rPXdNfwLqOZKXrJRC1zUFn52hdo6B+Dmv0m/AHwRVFHZP53Tg1NCa8bDei2K/uzRN0dUZw==",
|
||||||
"cpu": [
|
"cpu": [
|
||||||
"x86",
|
"x86",
|
||||||
"ia32"
|
"ia32"
|
||||||
@@ -4217,9 +4216,9 @@
|
|||||||
}
|
}
|
||||||
},
|
},
|
||||||
"node_modules/@sentry/cli-win32-x64": {
|
"node_modules/@sentry/cli-win32-x64": {
|
||||||
"version": "2.51.1",
|
"version": "2.53.0",
|
||||||
"resolved": "https://mirrors.tencent.com/npm/@sentry/cli-win32-x64/-/cli-win32-x64-2.51.1.tgz",
|
"resolved": "https://mirrors.tencent.com/npm/@sentry/cli-win32-x64/-/cli-win32-x64-2.53.0.tgz",
|
||||||
"integrity": "sha512-v2hreYUPPTNK1/N7+DeX7XBN/zb7p539k+2Osf0HFyVBaoUC3Y3+KBwSf4ASsnmgTAK7HCGR+X0NH1vP+icw4w==",
|
"integrity": "sha512-1TXYxYHtwgUq5KAJt3erRzzUtPqg7BlH9T7MdSPHjJatkrr/kwZqnVe2H6Arr/5NH891vOlIeSPHBdgJUAD69g==",
|
||||||
"cpu": [
|
"cpu": [
|
||||||
"x64"
|
"x64"
|
||||||
],
|
],
|
||||||
@@ -4258,44 +4257,43 @@
|
|||||||
}
|
}
|
||||||
},
|
},
|
||||||
"node_modules/@sentry/core": {
|
"node_modules/@sentry/core": {
|
||||||
"version": "8.55.0",
|
"version": "10.12.0",
|
||||||
"resolved": "https://mirrors.tencent.com/npm/@sentry/core/-/core-8.55.0.tgz",
|
"resolved": "https://mirrors.tencent.com/npm/@sentry/core/-/core-10.12.0.tgz",
|
||||||
"integrity": "sha512-6g7jpbefjHYs821Z+EBJ8r4Z7LT5h80YSWRJaylGS4nW5W5Z2KXzpdnyFarv37O7QjauzVC2E+PABmpkw5/JGA==",
|
"integrity": "sha512-Jrf0Yo7DvmI/ZQcvBnA0xKNAFkJlVC/fMlvcin+5IrFNRcqOToZ2vtF+XqTgjRZymXQNE8s1QTD7IomPHk0TAw==",
|
||||||
"license": "MIT",
|
"license": "MIT",
|
||||||
"engines": {
|
"engines": {
|
||||||
"node": ">=14.18"
|
"node": ">=18"
|
||||||
}
|
}
|
||||||
},
|
},
|
||||||
"node_modules/@sentry/react": {
|
"node_modules/@sentry/react": {
|
||||||
"version": "8.55.0",
|
"version": "10.12.0",
|
||||||
"resolved": "https://mirrors.tencent.com/npm/@sentry/react/-/react-8.55.0.tgz",
|
"resolved": "https://mirrors.tencent.com/npm/@sentry/react/-/react-10.12.0.tgz",
|
||||||
"integrity": "sha512-/qNBvFLpvSa/Rmia0jpKfJdy16d4YZaAnH/TuKLAtm0BWlsPQzbXCU4h8C5Hsst0Do0zG613MEtEmWpWrVOqWA==",
|
"integrity": "sha512-TpqgdoYbkf5JynmmW2oQhHQ/h5w+XPYk0cEb/UrsGlvJvnBSR+5tgh0AqxCSi3gvtp82rAXI5w1TyRPBbhLDBw==",
|
||||||
"license": "MIT",
|
"license": "MIT",
|
||||||
"dependencies": {
|
"dependencies": {
|
||||||
"@sentry/browser": "8.55.0",
|
"@sentry/browser": "10.12.0",
|
||||||
"@sentry/core": "8.55.0",
|
"@sentry/core": "10.12.0",
|
||||||
"hoist-non-react-statics": "^3.3.2"
|
"hoist-non-react-statics": "^3.3.2"
|
||||||
},
|
},
|
||||||
"engines": {
|
"engines": {
|
||||||
"node": ">=14.18"
|
"node": ">=18"
|
||||||
},
|
},
|
||||||
"peerDependencies": {
|
"peerDependencies": {
|
||||||
"react": "^16.14.0 || 17.x || 18.x || 19.x"
|
"react": "^16.14.0 || 17.x || 18.x || 19.x"
|
||||||
}
|
}
|
||||||
},
|
},
|
||||||
"node_modules/@sentry/react-native": {
|
"node_modules/@sentry/react-native": {
|
||||||
"version": "6.20.0",
|
"version": "7.1.0",
|
||||||
"resolved": "https://mirrors.tencent.com/npm/@sentry/react-native/-/react-native-6.20.0.tgz",
|
"resolved": "https://mirrors.tencent.com/npm/@sentry/react-native/-/react-native-7.1.0.tgz",
|
||||||
"integrity": "sha512-YngSba14Hsb5t/ZNMOyxb/HInmYRL5pQ74BkoMBQ/UBBM5kWHgSILxoO2XkKYtaaJXrkSJj+kBalELHblz9h5g==",
|
"integrity": "sha512-Nhs/1j+w7cl9Q+FmaBl0+nByeAKpZttWFz1R0YkZJsg01b+4g63pepI3WMwUSq2QrvYIAu/5PiUoTa2dx9HK6g==",
|
||||||
"license": "MIT",
|
"license": "MIT",
|
||||||
"dependencies": {
|
"dependencies": {
|
||||||
"@sentry/babel-plugin-component-annotate": "4.1.1",
|
"@sentry/babel-plugin-component-annotate": "4.3.0",
|
||||||
"@sentry/browser": "8.55.0",
|
"@sentry/browser": "10.12.0",
|
||||||
"@sentry/cli": "2.51.1",
|
"@sentry/cli": "2.53.0",
|
||||||
"@sentry/core": "8.55.0",
|
"@sentry/core": "10.12.0",
|
||||||
"@sentry/react": "8.55.0",
|
"@sentry/react": "10.12.0",
|
||||||
"@sentry/types": "8.55.0",
|
"@sentry/types": "10.12.0"
|
||||||
"@sentry/utils": "8.55.0"
|
|
||||||
},
|
},
|
||||||
"bin": {
|
"bin": {
|
||||||
"sentry-expo-upload-sourcemaps": "scripts/expo-upload-sourcemaps.js"
|
"sentry-expo-upload-sourcemaps": "scripts/expo-upload-sourcemaps.js"
|
||||||
@@ -4312,27 +4310,15 @@
|
|||||||
}
|
}
|
||||||
},
|
},
|
||||||
"node_modules/@sentry/types": {
|
"node_modules/@sentry/types": {
|
||||||
"version": "8.55.0",
|
"version": "10.12.0",
|
||||||
"resolved": "https://mirrors.tencent.com/npm/@sentry/types/-/types-8.55.0.tgz",
|
"resolved": "https://mirrors.tencent.com/npm/@sentry/types/-/types-10.12.0.tgz",
|
||||||
"integrity": "sha512-6LRT0+r6NWQ+RtllrUW2yQfodST0cJnkOmdpHA75vONgBUhpKwiJ4H7AmgfoTET8w29pU6AnntaGOe0LJbOmog==",
|
"integrity": "sha512-sKGj3l3V8ZKISh2Tu88bHfnm5ztkRtSLdmpZ6TmCeJdSM9pV+RRd6CMJ0RnSEXmYHselPNUod521t2NQFd4W1w==",
|
||||||
"license": "MIT",
|
"license": "MIT",
|
||||||
"dependencies": {
|
"dependencies": {
|
||||||
"@sentry/core": "8.55.0"
|
"@sentry/core": "10.12.0"
|
||||||
},
|
},
|
||||||
"engines": {
|
"engines": {
|
||||||
"node": ">=14.18"
|
"node": ">=18"
|
||||||
}
|
|
||||||
},
|
|
||||||
"node_modules/@sentry/utils": {
|
|
||||||
"version": "8.55.0",
|
|
||||||
"resolved": "https://mirrors.tencent.com/npm/@sentry/utils/-/utils-8.55.0.tgz",
|
|
||||||
"integrity": "sha512-cYcl39+xcOivBpN9d8ZKbALl+DxZKo/8H0nueJZ0PO4JA+MJGhSm6oHakXxLPaiMoNLTX7yor8ndnQIuFg+vmQ==",
|
|
||||||
"license": "MIT",
|
|
||||||
"dependencies": {
|
|
||||||
"@sentry/core": "8.55.0"
|
|
||||||
},
|
|
||||||
"engines": {
|
|
||||||
"node": ">=14.18"
|
|
||||||
}
|
}
|
||||||
},
|
},
|
||||||
"node_modules/@sinclair/typebox": {
|
"node_modules/@sinclair/typebox": {
|
||||||
@@ -5734,9 +5720,9 @@
|
|||||||
}
|
}
|
||||||
},
|
},
|
||||||
"node_modules/babel-preset-expo": {
|
"node_modules/babel-preset-expo": {
|
||||||
"version": "54.0.1",
|
"version": "54.0.3",
|
||||||
"resolved": "https://mirrors.tencent.com/npm/babel-preset-expo/-/babel-preset-expo-54.0.1.tgz",
|
"resolved": "https://mirrors.tencent.com/npm/babel-preset-expo/-/babel-preset-expo-54.0.3.tgz",
|
||||||
"integrity": "sha512-ziLpj+I/IxQdblHCpuzcyukTpzunq6h/QFsbWhk5DTd4suqB+Vl0Neacd+e38YeKXBabmxCOv8VJN3qk39Md4w==",
|
"integrity": "sha512-zC6g96Mbf1bofnCI8yI0VKAp8/ER/gpfTsWOpQvStbHU+E4jFZ294n3unW8Hf6nNP4NoeNq9Zc6Prp0vwhxbow==",
|
||||||
"license": "MIT",
|
"license": "MIT",
|
||||||
"dependencies": {
|
"dependencies": {
|
||||||
"@babel/helper-module-imports": "^7.25.9",
|
"@babel/helper-module-imports": "^7.25.9",
|
||||||
@@ -5840,7 +5826,6 @@
|
|||||||
"version": "8.4.2",
|
"version": "8.4.2",
|
||||||
"resolved": "https://mirrors.tencent.com/npm/open/-/open-8.4.2.tgz",
|
"resolved": "https://mirrors.tencent.com/npm/open/-/open-8.4.2.tgz",
|
||||||
"integrity": "sha512-7x81NCL719oNbsq/3mh+hVrAWmFuEYUqrq/Iw3kUzH8ReypT9QQ0BLoJS7/G9k6N81XjW4qHWtjWwe/9eLy1EQ==",
|
"integrity": "sha512-7x81NCL719oNbsq/3mh+hVrAWmFuEYUqrq/Iw3kUzH8ReypT9QQ0BLoJS7/G9k6N81XjW4qHWtjWwe/9eLy1EQ==",
|
||||||
"license": "MIT",
|
|
||||||
"dependencies": {
|
"dependencies": {
|
||||||
"define-lazy-prop": "^2.0.0",
|
"define-lazy-prop": "^2.0.0",
|
||||||
"is-docker": "^2.1.1",
|
"is-docker": "^2.1.1",
|
||||||
@@ -6213,7 +6198,6 @@
|
|||||||
"version": "2.1.0",
|
"version": "2.1.0",
|
||||||
"resolved": "https://mirrors.tencent.com/npm/cli-cursor/-/cli-cursor-2.1.0.tgz",
|
"resolved": "https://mirrors.tencent.com/npm/cli-cursor/-/cli-cursor-2.1.0.tgz",
|
||||||
"integrity": "sha512-8lgKz8LmCRYZZQDpRyT2m5rKJ08TnU4tR9FFFW2rxpxR1FzWi4PQ/NfyODchAatHaUgnSPVcx/R5w6NuTBzFiw==",
|
"integrity": "sha512-8lgKz8LmCRYZZQDpRyT2m5rKJ08TnU4tR9FFFW2rxpxR1FzWi4PQ/NfyODchAatHaUgnSPVcx/R5w6NuTBzFiw==",
|
||||||
"license": "MIT",
|
|
||||||
"dependencies": {
|
"dependencies": {
|
||||||
"restore-cursor": "^2.0.0"
|
"restore-cursor": "^2.0.0"
|
||||||
},
|
},
|
||||||
@@ -6348,7 +6332,6 @@
|
|||||||
"version": "2.0.18",
|
"version": "2.0.18",
|
||||||
"resolved": "https://mirrors.tencent.com/npm/compressible/-/compressible-2.0.18.tgz",
|
"resolved": "https://mirrors.tencent.com/npm/compressible/-/compressible-2.0.18.tgz",
|
||||||
"integrity": "sha512-AF3r7P5dWxL8MxyITRMlORQNaOA2IkAFaTr4k7BUumjPtRpGDTZpl0Pb1XCO6JeDCBdp126Cgs9sMxqSjgYyRg==",
|
"integrity": "sha512-AF3r7P5dWxL8MxyITRMlORQNaOA2IkAFaTr4k7BUumjPtRpGDTZpl0Pb1XCO6JeDCBdp126Cgs9sMxqSjgYyRg==",
|
||||||
"license": "MIT",
|
|
||||||
"dependencies": {
|
"dependencies": {
|
||||||
"mime-db": ">= 1.43.0 < 2"
|
"mime-db": ">= 1.43.0 < 2"
|
||||||
},
|
},
|
||||||
@@ -6378,7 +6361,6 @@
|
|||||||
"version": "2.6.9",
|
"version": "2.6.9",
|
||||||
"resolved": "https://mirrors.tencent.com/npm/debug/-/debug-2.6.9.tgz",
|
"resolved": "https://mirrors.tencent.com/npm/debug/-/debug-2.6.9.tgz",
|
||||||
"integrity": "sha512-bC7ElrdJaJnPbAP+1EotYvqZsb3ecl5wi6Bfi6BJTUcNowp6cvspg0jXznRTKDjm/E7AdgFBVeAPVMNcKGsHMA==",
|
"integrity": "sha512-bC7ElrdJaJnPbAP+1EotYvqZsb3ecl5wi6Bfi6BJTUcNowp6cvspg0jXznRTKDjm/E7AdgFBVeAPVMNcKGsHMA==",
|
||||||
"license": "MIT",
|
|
||||||
"dependencies": {
|
"dependencies": {
|
||||||
"ms": "2.0.0"
|
"ms": "2.0.0"
|
||||||
}
|
}
|
||||||
@@ -6453,15 +6435,6 @@
|
|||||||
"url": "https://opencollective.com/core-js"
|
"url": "https://opencollective.com/core-js"
|
||||||
}
|
}
|
||||||
},
|
},
|
||||||
"node_modules/cos-js-sdk-v5": {
|
|
||||||
"version": "1.10.1",
|
|
||||||
"resolved": "https://mirrors.tencent.com/npm/cos-js-sdk-v5/-/cos-js-sdk-v5-1.10.1.tgz",
|
|
||||||
"integrity": "sha512-a4SRfCY5g6Z35C7OWe9te/S1zk77rVQzfpvZ33gmTdJQzKxbNbEG7Aw/v453XwVMsQB352FIf7KRMm5Ya/wlZQ==",
|
|
||||||
"hasInstallScript": true,
|
|
||||||
"dependencies": {
|
|
||||||
"fast-xml-parser": "4.5.0"
|
|
||||||
}
|
|
||||||
},
|
|
||||||
"node_modules/cosmiconfig": {
|
"node_modules/cosmiconfig": {
|
||||||
"version": "5.2.1",
|
"version": "5.2.1",
|
||||||
"resolved": "https://registry.npmjs.org/cosmiconfig/-/cosmiconfig-5.2.1.tgz",
|
"resolved": "https://registry.npmjs.org/cosmiconfig/-/cosmiconfig-5.2.1.tgz",
|
||||||
@@ -7666,29 +7639,29 @@
|
|||||||
"license": "MIT"
|
"license": "MIT"
|
||||||
},
|
},
|
||||||
"node_modules/expo": {
|
"node_modules/expo": {
|
||||||
"version": "54.0.8",
|
"version": "54.0.10",
|
||||||
"resolved": "https://mirrors.tencent.com/npm/expo/-/expo-54.0.8.tgz",
|
"resolved": "https://mirrors.tencent.com/npm/expo/-/expo-54.0.10.tgz",
|
||||||
"integrity": "sha512-H4nUVvAczd9ZPWrAR3oXxEr/EkLfPxXg5gBvFgZI4WnGNthehqEYB37urXgj9fvgSBxNaRUkySL4uwr9VB2J8Q==",
|
"integrity": "sha512-49+IginEoKC+g125ZlRvUYNl9jKjjHcDiDnQvejNWlMQ0LtcFIWiFad/PLjmi7YqF/0rj9u3FNxqM6jNP16O0w==",
|
||||||
"license": "MIT",
|
"license": "MIT",
|
||||||
"dependencies": {
|
"dependencies": {
|
||||||
"@babel/runtime": "^7.20.0",
|
"@babel/runtime": "^7.20.0",
|
||||||
"@expo/cli": "54.0.6",
|
"@expo/cli": "54.0.8",
|
||||||
"@expo/config": "~12.0.9",
|
"@expo/config": "~12.0.9",
|
||||||
"@expo/config-plugins": "~54.0.1",
|
"@expo/config-plugins": "~54.0.1",
|
||||||
"@expo/devtools": "0.1.7",
|
"@expo/devtools": "0.1.7",
|
||||||
"@expo/fingerprint": "0.15.1",
|
"@expo/fingerprint": "0.15.1",
|
||||||
"@expo/metro": "~0.1.1",
|
"@expo/metro": "~54.0.0",
|
||||||
"@expo/metro-config": "54.0.3",
|
"@expo/metro-config": "54.0.5",
|
||||||
"@expo/vector-icons": "^15.0.2",
|
"@expo/vector-icons": "^15.0.2",
|
||||||
"@ungap/structured-clone": "^1.3.0",
|
"@ungap/structured-clone": "^1.3.0",
|
||||||
"babel-preset-expo": "~54.0.1",
|
"babel-preset-expo": "~54.0.3",
|
||||||
"expo-asset": "~12.0.8",
|
"expo-asset": "~12.0.9",
|
||||||
"expo-constants": "~18.0.9",
|
"expo-constants": "~18.0.9",
|
||||||
"expo-file-system": "~19.0.14",
|
"expo-file-system": "~19.0.15",
|
||||||
"expo-font": "~14.0.8",
|
"expo-font": "~14.0.8",
|
||||||
"expo-keep-awake": "~15.0.7",
|
"expo-keep-awake": "~15.0.7",
|
||||||
"expo-modules-autolinking": "3.0.11",
|
"expo-modules-autolinking": "3.0.13",
|
||||||
"expo-modules-core": "3.0.16",
|
"expo-modules-core": "3.0.18",
|
||||||
"pretty-format": "^29.7.0",
|
"pretty-format": "^29.7.0",
|
||||||
"react-refresh": "^0.14.2",
|
"react-refresh": "^0.14.2",
|
||||||
"whatwg-url-without-unicode": "8.0.0-3"
|
"whatwg-url-without-unicode": "8.0.0-3"
|
||||||
@@ -7737,13 +7710,13 @@
|
|||||||
}
|
}
|
||||||
},
|
},
|
||||||
"node_modules/expo-asset": {
|
"node_modules/expo-asset": {
|
||||||
"version": "12.0.8",
|
"version": "12.0.9",
|
||||||
"resolved": "https://registry.npmjs.org/expo-asset/-/expo-asset-12.0.8.tgz",
|
"resolved": "https://mirrors.tencent.com/npm/expo-asset/-/expo-asset-12.0.9.tgz",
|
||||||
"integrity": "sha512-jj2U8zw9+7orST2rlQGULYiqPoECOuUyffs2NguGrq84bYbkM041T7TOMXH2raPVJnM9lEAP54ezI6XL+GVYqw==",
|
"integrity": "sha512-vrdRoyhGhBmd0nJcssTSk1Ypx3Mbn/eXaaBCQVkL0MJ8IOZpAObAjfD5CTy8+8RofcHEQdh3wwZVCs7crvfOeg==",
|
||||||
"license": "MIT",
|
"license": "MIT",
|
||||||
"dependencies": {
|
"dependencies": {
|
||||||
"@expo/image-utils": "^0.8.7",
|
"@expo/image-utils": "^0.8.7",
|
||||||
"expo-constants": "~18.0.8"
|
"expo-constants": "~18.0.9"
|
||||||
},
|
},
|
||||||
"peerDependencies": {
|
"peerDependencies": {
|
||||||
"expo": "*",
|
"expo": "*",
|
||||||
@@ -7752,9 +7725,9 @@
|
|||||||
}
|
}
|
||||||
},
|
},
|
||||||
"node_modules/expo-background-task": {
|
"node_modules/expo-background-task": {
|
||||||
"version": "1.0.7",
|
"version": "1.0.8",
|
||||||
"resolved": "https://mirrors.tencent.com/npm/expo-background-task/-/expo-background-task-1.0.7.tgz",
|
"resolved": "https://mirrors.tencent.com/npm/expo-background-task/-/expo-background-task-1.0.8.tgz",
|
||||||
"integrity": "sha512-SIAxjBt5ZM2HzABVLsMEy24DrqeJqE1e8iqvErNqqujH8nwk0CUi7C+2Ck92HfTMEkThmAUKHl32emVzStAesA==",
|
"integrity": "sha512-G6WnljBhO0K9j0ntmytF5rZLtYUpwh8n2+hcgmxM1ISPAVVZSPHZhkF9YjBOKpdPWZxmukBgEwejfcGckb8TQQ==",
|
||||||
"license": "MIT",
|
"license": "MIT",
|
||||||
"dependencies": {
|
"dependencies": {
|
||||||
"expo-task-manager": "~14.0.7"
|
"expo-task-manager": "~14.0.7"
|
||||||
@@ -7809,9 +7782,9 @@
|
|||||||
}
|
}
|
||||||
},
|
},
|
||||||
"node_modules/expo-file-system": {
|
"node_modules/expo-file-system": {
|
||||||
"version": "19.0.14",
|
"version": "19.0.15",
|
||||||
"resolved": "https://mirrors.tencent.com/npm/expo-file-system/-/expo-file-system-19.0.14.tgz",
|
"resolved": "https://mirrors.tencent.com/npm/expo-file-system/-/expo-file-system-19.0.15.tgz",
|
||||||
"integrity": "sha512-0CA7O5IYhab11TlxQlJAx0Xm9pdkk/zEHNiW+Hh/T4atWi9U/J38CIp7iNYSrBvy9dC3rJbze5D1ANcKKr4mSQ==",
|
"integrity": "sha512-sRLW+3PVJDiuoCE2LuteHhC7OxPjh1cfqLylf1YG1TDEbbQXnzwjfsKeRm6dslEPZLkMWfSLYIrVbnuq5mF7kQ==",
|
||||||
"license": "MIT",
|
"license": "MIT",
|
||||||
"peerDependencies": {
|
"peerDependencies": {
|
||||||
"expo": "*",
|
"expo": "*",
|
||||||
@@ -7926,9 +7899,9 @@
|
|||||||
}
|
}
|
||||||
},
|
},
|
||||||
"node_modules/expo-modules-autolinking": {
|
"node_modules/expo-modules-autolinking": {
|
||||||
"version": "3.0.11",
|
"version": "3.0.13",
|
||||||
"resolved": "https://mirrors.tencent.com/npm/expo-modules-autolinking/-/expo-modules-autolinking-3.0.11.tgz",
|
"resolved": "https://mirrors.tencent.com/npm/expo-modules-autolinking/-/expo-modules-autolinking-3.0.13.tgz",
|
||||||
"integrity": "sha512-Sz1ptcSZ4mvWJ7Rf1aB6Pe1fuEeIkACPILg2tmXDo3wwLTxPqugitMOePjbBZyvacBDirtDZlMb2A6LQDPVFOg==",
|
"integrity": "sha512-58WnM15ESTyT2v93Rba7jplXtGvh5cFbxqUCi2uTSpBf3nndDRItLzBQaoWBzAvNUhpC2j1bye7Dn/E+GJFXmw==",
|
||||||
"license": "MIT",
|
"license": "MIT",
|
||||||
"dependencies": {
|
"dependencies": {
|
||||||
"@expo/spawn-async": "^1.7.2",
|
"@expo/spawn-async": "^1.7.2",
|
||||||
@@ -7943,9 +7916,9 @@
|
|||||||
}
|
}
|
||||||
},
|
},
|
||||||
"node_modules/expo-modules-core": {
|
"node_modules/expo-modules-core": {
|
||||||
"version": "3.0.16",
|
"version": "3.0.18",
|
||||||
"resolved": "https://mirrors.tencent.com/npm/expo-modules-core/-/expo-modules-core-3.0.16.tgz",
|
"resolved": "https://mirrors.tencent.com/npm/expo-modules-core/-/expo-modules-core-3.0.18.tgz",
|
||||||
"integrity": "sha512-rCxzJiTdeSdqLVmDYYnogxqHS3NB65YTd76tAtSACujN2TQco08/toxCCov+9uULq1NGPxDJnfTkrtGaGWfatQ==",
|
"integrity": "sha512-9JPnjlXEFaq/uACZ7I4wb/RkgPYCEsfG75UKMvfl7P7rkymtpRGYj8/gTL2KId8Xt1fpmIPOF57U8tKamjtjXg==",
|
||||||
"license": "MIT",
|
"license": "MIT",
|
||||||
"dependencies": {
|
"dependencies": {
|
||||||
"invariant": "^2.2.4"
|
"invariant": "^2.2.4"
|
||||||
@@ -8168,9 +8141,9 @@
|
|||||||
}
|
}
|
||||||
},
|
},
|
||||||
"node_modules/expo/node_modules/@expo/cli": {
|
"node_modules/expo/node_modules/@expo/cli": {
|
||||||
"version": "54.0.6",
|
"version": "54.0.8",
|
||||||
"resolved": "https://mirrors.tencent.com/npm/@expo/cli/-/cli-54.0.6.tgz",
|
"resolved": "https://mirrors.tencent.com/npm/@expo/cli/-/cli-54.0.8.tgz",
|
||||||
"integrity": "sha512-BgxJshNqSODb4Rq4q4lHLBVWVL4683Q+PSJ2fd+m3D5Jqd8nu9zGvcq6I/H8AXV/Ux31eIuUgAojPCjW8LRyZA==",
|
"integrity": "sha512-bRJXvtjgxpyElmJuKLotWyIW5j9a2K3rGUjd2A8LRcFimrZp0wwuKPQjlUK0sFNbU7zHWfxubNq/B+UkUNkCxw==",
|
||||||
"license": "MIT",
|
"license": "MIT",
|
||||||
"dependencies": {
|
"dependencies": {
|
||||||
"@0no-co/graphql.web": "^1.0.8",
|
"@0no-co/graphql.web": "^1.0.8",
|
||||||
@@ -8182,14 +8155,14 @@
|
|||||||
"@expo/image-utils": "^0.8.7",
|
"@expo/image-utils": "^0.8.7",
|
||||||
"@expo/json-file": "^10.0.7",
|
"@expo/json-file": "^10.0.7",
|
||||||
"@expo/mcp-tunnel": "~0.0.7",
|
"@expo/mcp-tunnel": "~0.0.7",
|
||||||
"@expo/metro": "~0.1.1",
|
"@expo/metro": "~54.0.0",
|
||||||
"@expo/metro-config": "~54.0.3",
|
"@expo/metro-config": "~54.0.5",
|
||||||
"@expo/osascript": "^2.3.7",
|
"@expo/osascript": "^2.3.7",
|
||||||
"@expo/package-manager": "^1.9.8",
|
"@expo/package-manager": "^1.9.8",
|
||||||
"@expo/plist": "^0.4.7",
|
"@expo/plist": "^0.4.7",
|
||||||
"@expo/prebuild-config": "^54.0.3",
|
"@expo/prebuild-config": "^54.0.3",
|
||||||
"@expo/schema-utils": "^0.1.7",
|
"@expo/schema-utils": "^0.1.7",
|
||||||
"@expo/server": "^0.7.4",
|
"@expo/server": "^0.7.5",
|
||||||
"@expo/spawn-async": "^1.7.2",
|
"@expo/spawn-async": "^1.7.2",
|
||||||
"@expo/ws-tunnel": "^1.0.1",
|
"@expo/ws-tunnel": "^1.0.1",
|
||||||
"@expo/xcpretty": "^4.3.0",
|
"@expo/xcpretty": "^4.3.0",
|
||||||
@@ -8283,7 +8256,6 @@
|
|||||||
"version": "7.7.2",
|
"version": "7.7.2",
|
||||||
"resolved": "https://mirrors.tencent.com/npm/semver/-/semver-7.7.2.tgz",
|
"resolved": "https://mirrors.tencent.com/npm/semver/-/semver-7.7.2.tgz",
|
||||||
"integrity": "sha512-RF0Fw+rO5AMf9MAyaRXI4AV0Ulj5lMHqVxxdSgiVbixSCXoEmmX/jk0CuJw4+3SqroYO9VoUh+HcuJivvtJemA==",
|
"integrity": "sha512-RF0Fw+rO5AMf9MAyaRXI4AV0Ulj5lMHqVxxdSgiVbixSCXoEmmX/jk0CuJw4+3SqroYO9VoUh+HcuJivvtJemA==",
|
||||||
"license": "ISC",
|
|
||||||
"bin": {
|
"bin": {
|
||||||
"semver": "bin/semver.js"
|
"semver": "bin/semver.js"
|
||||||
},
|
},
|
||||||
@@ -8382,28 +8354,6 @@
|
|||||||
}
|
}
|
||||||
]
|
]
|
||||||
},
|
},
|
||||||
"node_modules/fast-xml-parser": {
|
|
||||||
"version": "4.5.0",
|
|
||||||
"resolved": "https://mirrors.tencent.com/npm/fast-xml-parser/-/fast-xml-parser-4.5.0.tgz",
|
|
||||||
"integrity": "sha512-/PlTQCI96+fZMAOLMZK4CWG1ItCbfZ/0jx7UIJFChPNrx7tcEgerUgWbeieCM9MfHInUDyK8DWYZ+YrywDJuTg==",
|
|
||||||
"funding": [
|
|
||||||
{
|
|
||||||
"type": "github",
|
|
||||||
"url": "https://github.com/sponsors/NaturalIntelligence"
|
|
||||||
},
|
|
||||||
{
|
|
||||||
"type": "paypal",
|
|
||||||
"url": "https://paypal.me/naturalintelligence"
|
|
||||||
}
|
|
||||||
],
|
|
||||||
"license": "MIT",
|
|
||||||
"dependencies": {
|
|
||||||
"strnum": "^1.0.5"
|
|
||||||
},
|
|
||||||
"bin": {
|
|
||||||
"fxparser": "src/cli/cli.js"
|
|
||||||
}
|
|
||||||
},
|
|
||||||
"node_modules/fastq": {
|
"node_modules/fastq": {
|
||||||
"version": "1.19.1",
|
"version": "1.19.1",
|
||||||
"resolved": "https://registry.npmjs.org/fastq/-/fastq-1.19.1.tgz",
|
"resolved": "https://registry.npmjs.org/fastq/-/fastq-1.19.1.tgz",
|
||||||
@@ -9079,8 +9029,7 @@
|
|||||||
"node_modules/hosted-git-info/node_modules/lru-cache": {
|
"node_modules/hosted-git-info/node_modules/lru-cache": {
|
||||||
"version": "10.4.3",
|
"version": "10.4.3",
|
||||||
"resolved": "https://mirrors.tencent.com/npm/lru-cache/-/lru-cache-10.4.3.tgz",
|
"resolved": "https://mirrors.tencent.com/npm/lru-cache/-/lru-cache-10.4.3.tgz",
|
||||||
"integrity": "sha512-JNAzZcXrCt42VGLuYz0zfAzDfAvJWW6AfYlDBQyDV5DClI2m5sAmK+OIO7s59XfsRsWHp02jAJrRadPRGTt6SQ==",
|
"integrity": "sha512-JNAzZcXrCt42VGLuYz0zfAzDfAvJWW6AfYlDBQyDV5DClI2m5sAmK+OIO7s59XfsRsWHp02jAJrRadPRGTt6SQ=="
|
||||||
"license": "ISC"
|
|
||||||
},
|
},
|
||||||
"node_modules/htmlparser2": {
|
"node_modules/htmlparser2": {
|
||||||
"version": "7.2.0",
|
"version": "7.2.0",
|
||||||
@@ -10620,7 +10569,6 @@
|
|||||||
"version": "1.9.3",
|
"version": "1.9.3",
|
||||||
"resolved": "https://mirrors.tencent.com/npm/color-convert/-/color-convert-1.9.3.tgz",
|
"resolved": "https://mirrors.tencent.com/npm/color-convert/-/color-convert-1.9.3.tgz",
|
||||||
"integrity": "sha512-QfAUtd+vFdAtFQcC8CCyYt1fYWxSqAiK2cSD6zDB8N3cpsEBAvRxp9zOGg6G/SHHJYAT88/az/IuDGALsNVbGg==",
|
"integrity": "sha512-QfAUtd+vFdAtFQcC8CCyYt1fYWxSqAiK2cSD6zDB8N3cpsEBAvRxp9zOGg6G/SHHJYAT88/az/IuDGALsNVbGg==",
|
||||||
"license": "MIT",
|
|
||||||
"dependencies": {
|
"dependencies": {
|
||||||
"color-name": "1.1.3"
|
"color-name": "1.1.3"
|
||||||
}
|
}
|
||||||
@@ -10628,8 +10576,7 @@
|
|||||||
"node_modules/log-symbols/node_modules/color-name": {
|
"node_modules/log-symbols/node_modules/color-name": {
|
||||||
"version": "1.1.3",
|
"version": "1.1.3",
|
||||||
"resolved": "https://mirrors.tencent.com/npm/color-name/-/color-name-1.1.3.tgz",
|
"resolved": "https://mirrors.tencent.com/npm/color-name/-/color-name-1.1.3.tgz",
|
||||||
"integrity": "sha512-72fSenhMw2HZMTVHeCA9KCmpEIbzWiQsjN+BHcBbS9vr1mtt+vJjPdksIBNUmKAW8TFUDPJK5SUU3QhE9NEXDw==",
|
"integrity": "sha512-72fSenhMw2HZMTVHeCA9KCmpEIbzWiQsjN+BHcBbS9vr1mtt+vJjPdksIBNUmKAW8TFUDPJK5SUU3QhE9NEXDw=="
|
||||||
"license": "MIT"
|
|
||||||
},
|
},
|
||||||
"node_modules/log-symbols/node_modules/escape-string-regexp": {
|
"node_modules/log-symbols/node_modules/escape-string-regexp": {
|
||||||
"version": "1.0.5",
|
"version": "1.0.5",
|
||||||
@@ -11117,7 +11064,6 @@
|
|||||||
"version": "1.54.0",
|
"version": "1.54.0",
|
||||||
"resolved": "https://mirrors.tencent.com/npm/mime-db/-/mime-db-1.54.0.tgz",
|
"resolved": "https://mirrors.tencent.com/npm/mime-db/-/mime-db-1.54.0.tgz",
|
||||||
"integrity": "sha512-aU5EJuIN2WDemCcAp2vFBfp/m4EAhWJnUNSSw0ixs7/kXbd6Pg64EmwJkNdFhB8aWt1sH2CTXrLxo/iAGV3oPQ==",
|
"integrity": "sha512-aU5EJuIN2WDemCcAp2vFBfp/m4EAhWJnUNSSw0ixs7/kXbd6Pg64EmwJkNdFhB8aWt1sH2CTXrLxo/iAGV3oPQ==",
|
||||||
"license": "MIT",
|
|
||||||
"engines": {
|
"engines": {
|
||||||
"node": ">= 0.6"
|
"node": ">= 0.6"
|
||||||
}
|
}
|
||||||
@@ -11183,9 +11129,9 @@
|
|||||||
}
|
}
|
||||||
},
|
},
|
||||||
"node_modules/minizlib": {
|
"node_modules/minizlib": {
|
||||||
"version": "3.0.2",
|
"version": "3.1.0",
|
||||||
"resolved": "https://mirrors.tencent.com/npm/minizlib/-/minizlib-3.0.2.tgz",
|
"resolved": "https://mirrors.tencent.com/npm/minizlib/-/minizlib-3.1.0.tgz",
|
||||||
"integrity": "sha512-oG62iEk+CYt5Xj2YqI5Xi9xWUeZhDI8jjQmC5oThVH5JGCTgIjr7ciJDzC7MBzYd//WvR1OTmP5Q38Q8ShQtVA==",
|
"integrity": "sha512-KZxYo1BUkWD2TVFLr0MQoM8vUUigWD3LlD83a/75BqC+4qE0Hb1Vo5v1FgcfaNXvfXzr+5EhQ6ing/CaBijTlw==",
|
||||||
"license": "MIT",
|
"license": "MIT",
|
||||||
"dependencies": {
|
"dependencies": {
|
||||||
"minipass": "^7.1.2"
|
"minipass": "^7.1.2"
|
||||||
@@ -11348,7 +11294,6 @@
|
|||||||
"version": "7.7.2",
|
"version": "7.7.2",
|
||||||
"resolved": "https://mirrors.tencent.com/npm/semver/-/semver-7.7.2.tgz",
|
"resolved": "https://mirrors.tencent.com/npm/semver/-/semver-7.7.2.tgz",
|
||||||
"integrity": "sha512-RF0Fw+rO5AMf9MAyaRXI4AV0Ulj5lMHqVxxdSgiVbixSCXoEmmX/jk0CuJw4+3SqroYO9VoUh+HcuJivvtJemA==",
|
"integrity": "sha512-RF0Fw+rO5AMf9MAyaRXI4AV0Ulj5lMHqVxxdSgiVbixSCXoEmmX/jk0CuJw4+3SqroYO9VoUh+HcuJivvtJemA==",
|
||||||
"license": "ISC",
|
|
||||||
"bin": {
|
"bin": {
|
||||||
"semver": "bin/semver.js"
|
"semver": "bin/semver.js"
|
||||||
},
|
},
|
||||||
@@ -11556,7 +11501,6 @@
|
|||||||
"version": "2.0.1",
|
"version": "2.0.1",
|
||||||
"resolved": "https://mirrors.tencent.com/npm/onetime/-/onetime-2.0.1.tgz",
|
"resolved": "https://mirrors.tencent.com/npm/onetime/-/onetime-2.0.1.tgz",
|
||||||
"integrity": "sha512-oyyPpiMaKARvvcgip+JV+7zci5L8D1W9RZIz2l1o08AM3pfspitVWnPt3mzHcBPp12oYMTy0pqrFs/C+m3EwsQ==",
|
"integrity": "sha512-oyyPpiMaKARvvcgip+JV+7zci5L8D1W9RZIz2l1o08AM3pfspitVWnPt3mzHcBPp12oYMTy0pqrFs/C+m3EwsQ==",
|
||||||
"license": "MIT",
|
|
||||||
"dependencies": {
|
"dependencies": {
|
||||||
"mimic-fn": "^1.0.0"
|
"mimic-fn": "^1.0.0"
|
||||||
},
|
},
|
||||||
@@ -11654,7 +11598,6 @@
|
|||||||
"version": "1.9.3",
|
"version": "1.9.3",
|
||||||
"resolved": "https://mirrors.tencent.com/npm/color-convert/-/color-convert-1.9.3.tgz",
|
"resolved": "https://mirrors.tencent.com/npm/color-convert/-/color-convert-1.9.3.tgz",
|
||||||
"integrity": "sha512-QfAUtd+vFdAtFQcC8CCyYt1fYWxSqAiK2cSD6zDB8N3cpsEBAvRxp9zOGg6G/SHHJYAT88/az/IuDGALsNVbGg==",
|
"integrity": "sha512-QfAUtd+vFdAtFQcC8CCyYt1fYWxSqAiK2cSD6zDB8N3cpsEBAvRxp9zOGg6G/SHHJYAT88/az/IuDGALsNVbGg==",
|
||||||
"license": "MIT",
|
|
||||||
"dependencies": {
|
"dependencies": {
|
||||||
"color-name": "1.1.3"
|
"color-name": "1.1.3"
|
||||||
}
|
}
|
||||||
@@ -11662,8 +11605,7 @@
|
|||||||
"node_modules/ora/node_modules/color-name": {
|
"node_modules/ora/node_modules/color-name": {
|
||||||
"version": "1.1.3",
|
"version": "1.1.3",
|
||||||
"resolved": "https://mirrors.tencent.com/npm/color-name/-/color-name-1.1.3.tgz",
|
"resolved": "https://mirrors.tencent.com/npm/color-name/-/color-name-1.1.3.tgz",
|
||||||
"integrity": "sha512-72fSenhMw2HZMTVHeCA9KCmpEIbzWiQsjN+BHcBbS9vr1mtt+vJjPdksIBNUmKAW8TFUDPJK5SUU3QhE9NEXDw==",
|
"integrity": "sha512-72fSenhMw2HZMTVHeCA9KCmpEIbzWiQsjN+BHcBbS9vr1mtt+vJjPdksIBNUmKAW8TFUDPJK5SUU3QhE9NEXDw=="
|
||||||
"license": "MIT"
|
|
||||||
},
|
},
|
||||||
"node_modules/ora/node_modules/escape-string-regexp": {
|
"node_modules/ora/node_modules/escape-string-regexp": {
|
||||||
"version": "1.0.5",
|
"version": "1.0.5",
|
||||||
@@ -11872,6 +11814,15 @@
|
|||||||
"integrity": "sha512-JNAzZcXrCt42VGLuYz0zfAzDfAvJWW6AfYlDBQyDV5DClI2m5sAmK+OIO7s59XfsRsWHp02jAJrRadPRGTt6SQ==",
|
"integrity": "sha512-JNAzZcXrCt42VGLuYz0zfAzDfAvJWW6AfYlDBQyDV5DClI2m5sAmK+OIO7s59XfsRsWHp02jAJrRadPRGTt6SQ==",
|
||||||
"license": "ISC"
|
"license": "ISC"
|
||||||
},
|
},
|
||||||
|
"node_modules/paths-js": {
|
||||||
|
"version": "0.4.11",
|
||||||
|
"resolved": "http://mirrors.tencent.com/npm/paths-js/-/paths-js-0.4.11.tgz",
|
||||||
|
"integrity": "sha512-3mqcLomDBXOo7Fo+UlaenG6f71bk1ZezPQy2JCmYHy2W2k5VKpP+Jbin9H0bjXynelTbglCqdFhSEkeIkKTYUA==",
|
||||||
|
"license": "Apache-2.0",
|
||||||
|
"engines": {
|
||||||
|
"node": ">=0.11.0"
|
||||||
|
}
|
||||||
|
},
|
||||||
"node_modules/picocolors": {
|
"node_modules/picocolors": {
|
||||||
"version": "1.1.1",
|
"version": "1.1.1",
|
||||||
"resolved": "https://registry.npmjs.org/picocolors/-/picocolors-1.1.1.tgz",
|
"resolved": "https://registry.npmjs.org/picocolors/-/picocolors-1.1.1.tgz",
|
||||||
@@ -11922,6 +11873,12 @@
|
|||||||
"node": ">=4.0.0"
|
"node": ">=4.0.0"
|
||||||
}
|
}
|
||||||
},
|
},
|
||||||
|
"node_modules/point-in-polygon": {
|
||||||
|
"version": "1.1.0",
|
||||||
|
"resolved": "https://mirrors.tencent.com/npm/point-in-polygon/-/point-in-polygon-1.1.0.tgz",
|
||||||
|
"integrity": "sha512-3ojrFwjnnw8Q9242TzgXuTD+eKiutbzyslcq1ydfu82Db2y+Ogbmyrkpv0Hgj31qwT3lbS9+QAAO/pIQM35XRw==",
|
||||||
|
"license": "MIT"
|
||||||
|
},
|
||||||
"node_modules/possible-typed-array-names": {
|
"node_modules/possible-typed-array-names": {
|
||||||
"version": "1.1.0",
|
"version": "1.1.0",
|
||||||
"resolved": "https://registry.npmjs.org/possible-typed-array-names/-/possible-typed-array-names-1.1.0.tgz",
|
"resolved": "https://registry.npmjs.org/possible-typed-array-names/-/possible-typed-array-names-1.1.0.tgz",
|
||||||
@@ -11949,7 +11906,6 @@
|
|||||||
"url": "https://github.com/sponsors/ai"
|
"url": "https://github.com/sponsors/ai"
|
||||||
}
|
}
|
||||||
],
|
],
|
||||||
"license": "MIT",
|
|
||||||
"dependencies": {
|
"dependencies": {
|
||||||
"nanoid": "^3.3.7",
|
"nanoid": "^3.3.7",
|
||||||
"picocolors": "^1.1.1",
|
"picocolors": "^1.1.1",
|
||||||
@@ -12181,7 +12137,6 @@
|
|||||||
"version": "2.0.1",
|
"version": "2.0.1",
|
||||||
"resolved": "https://mirrors.tencent.com/npm/strip-json-comments/-/strip-json-comments-2.0.1.tgz",
|
"resolved": "https://mirrors.tencent.com/npm/strip-json-comments/-/strip-json-comments-2.0.1.tgz",
|
||||||
"integrity": "sha512-4gB8na07fecVVkOI6Rs4e7T6NOTki5EmL7TUduTs6bu3EdnSycntVJ4re8kgZA+wx9IueI2Y11bfbgwtzuE0KQ==",
|
"integrity": "sha512-4gB8na07fecVVkOI6Rs4e7T6NOTki5EmL7TUduTs6bu3EdnSycntVJ4re8kgZA+wx9IueI2Y11bfbgwtzuE0KQ==",
|
||||||
"license": "MIT",
|
|
||||||
"engines": {
|
"engines": {
|
||||||
"node": ">=0.10.0"
|
"node": ">=0.10.0"
|
||||||
}
|
}
|
||||||
@@ -12298,6 +12253,22 @@
|
|||||||
}
|
}
|
||||||
}
|
}
|
||||||
},
|
},
|
||||||
|
"node_modules/react-native-chart-kit": {
|
||||||
|
"version": "6.12.0",
|
||||||
|
"resolved": "https://mirrors.tencent.com/npm/react-native-chart-kit/-/react-native-chart-kit-6.12.0.tgz",
|
||||||
|
"integrity": "sha512-nZLGyCFzZ7zmX0KjYeeSV1HKuPhl1wOMlTAqa0JhlyW62qV/1ZPXHgT8o9s8mkFaGxdqbspOeuaa6I9jUQDgnA==",
|
||||||
|
"license": "MIT",
|
||||||
|
"dependencies": {
|
||||||
|
"lodash": "^4.17.13",
|
||||||
|
"paths-js": "^0.4.10",
|
||||||
|
"point-in-polygon": "^1.0.1"
|
||||||
|
},
|
||||||
|
"peerDependencies": {
|
||||||
|
"react": "> 16.7.0",
|
||||||
|
"react-native": ">= 0.50.0",
|
||||||
|
"react-native-svg": "> 6.4.1"
|
||||||
|
}
|
||||||
|
},
|
||||||
"node_modules/react-native-device-info": {
|
"node_modules/react-native-device-info": {
|
||||||
"version": "14.0.4",
|
"version": "14.0.4",
|
||||||
"resolved": "https://mirrors.tencent.com/npm/react-native-device-info/-/react-native-device-info-14.0.4.tgz",
|
"resolved": "https://mirrors.tencent.com/npm/react-native-device-info/-/react-native-device-info-14.0.4.tgz",
|
||||||
@@ -12489,9 +12460,9 @@
|
|||||||
}
|
}
|
||||||
},
|
},
|
||||||
"node_modules/react-native-svg": {
|
"node_modules/react-native-svg": {
|
||||||
"version": "15.12.1",
|
"version": "15.13.0",
|
||||||
"resolved": "https://mirrors.tencent.com/npm/react-native-svg/-/react-native-svg-15.12.1.tgz",
|
"resolved": "https://mirrors.tencent.com/npm/react-native-svg/-/react-native-svg-15.13.0.tgz",
|
||||||
"integrity": "sha512-vCuZJDf8a5aNC2dlMovEv4Z0jjEUET53lm/iILFnFewa15b4atjVxU6Wirm6O9y6dEsdjDZVD7Q3QM4T1wlI8g==",
|
"integrity": "sha512-/YPK+PAAXg4T0x2d2vYPvqqAhOYid2bRKxUVT7STIyd1p2JxWmsGQkfZxXCkEFN7TwLfIyVlT5RimT91Pj/qXw==",
|
||||||
"license": "MIT",
|
"license": "MIT",
|
||||||
"dependencies": {
|
"dependencies": {
|
||||||
"css-select": "^5.1.0",
|
"css-select": "^5.1.0",
|
||||||
@@ -12546,9 +12517,9 @@
|
|||||||
"license": "MIT"
|
"license": "MIT"
|
||||||
},
|
},
|
||||||
"node_modules/react-native-webview": {
|
"node_modules/react-native-webview": {
|
||||||
"version": "13.15.0",
|
"version": "13.16.0",
|
||||||
"resolved": "https://mirrors.tencent.com/npm/react-native-webview/-/react-native-webview-13.15.0.tgz",
|
"resolved": "https://mirrors.tencent.com/npm/react-native-webview/-/react-native-webview-13.16.0.tgz",
|
||||||
"integrity": "sha512-Vzjgy8mmxa/JO6l5KZrsTC7YemSdq+qB01diA0FqjUTaWGAGwuykpJ73MDj3+mzBSlaDxAEugHzTtkUQkQEQeQ==",
|
"integrity": "sha512-Nh13xKZWW35C0dbOskD7OX01nQQavOzHbCw9XoZmar4eXCo7AvrYJ0jlUfRVVIJzqINxHlpECYLdmAdFsl9xDA==",
|
||||||
"license": "MIT",
|
"license": "MIT",
|
||||||
"dependencies": {
|
"dependencies": {
|
||||||
"escape-string-regexp": "^4.0.0",
|
"escape-string-regexp": "^4.0.0",
|
||||||
@@ -12947,7 +12918,6 @@
|
|||||||
"version": "1.7.1",
|
"version": "1.7.1",
|
||||||
"resolved": "https://mirrors.tencent.com/npm/resolve/-/resolve-1.7.1.tgz",
|
"resolved": "https://mirrors.tencent.com/npm/resolve/-/resolve-1.7.1.tgz",
|
||||||
"integrity": "sha512-c7rwLofp8g1U+h1KNyHL/jicrKg1Ek4q+Lr33AL65uZTinUZHe30D5HlyN5V9NW0JX1D5dXQ4jqW5l7Sy/kGfw==",
|
"integrity": "sha512-c7rwLofp8g1U+h1KNyHL/jicrKg1Ek4q+Lr33AL65uZTinUZHe30D5HlyN5V9NW0JX1D5dXQ4jqW5l7Sy/kGfw==",
|
||||||
"license": "MIT",
|
|
||||||
"dependencies": {
|
"dependencies": {
|
||||||
"path-parse": "^1.0.5"
|
"path-parse": "^1.0.5"
|
||||||
}
|
}
|
||||||
@@ -13028,7 +12998,6 @@
|
|||||||
"version": "2.0.0",
|
"version": "2.0.0",
|
||||||
"resolved": "https://mirrors.tencent.com/npm/restore-cursor/-/restore-cursor-2.0.0.tgz",
|
"resolved": "https://mirrors.tencent.com/npm/restore-cursor/-/restore-cursor-2.0.0.tgz",
|
||||||
"integrity": "sha512-6IzJLuGi4+R14vwagDHX+JrXmPVtPpn4mffDJ1UdR7/Edm87fl6yi8mMBIVvFtJaNTUvjughmW4hwLhRG7gC1Q==",
|
"integrity": "sha512-6IzJLuGi4+R14vwagDHX+JrXmPVtPpn4mffDJ1UdR7/Edm87fl6yi8mMBIVvFtJaNTUvjughmW4hwLhRG7gC1Q==",
|
||||||
"license": "MIT",
|
|
||||||
"dependencies": {
|
"dependencies": {
|
||||||
"onetime": "^2.0.0",
|
"onetime": "^2.0.0",
|
||||||
"signal-exit": "^3.0.2"
|
"signal-exit": "^3.0.2"
|
||||||
@@ -13287,7 +13256,6 @@
|
|||||||
"version": "2.6.9",
|
"version": "2.6.9",
|
||||||
"resolved": "https://mirrors.tencent.com/npm/debug/-/debug-2.6.9.tgz",
|
"resolved": "https://mirrors.tencent.com/npm/debug/-/debug-2.6.9.tgz",
|
||||||
"integrity": "sha512-bC7ElrdJaJnPbAP+1EotYvqZsb3ecl5wi6Bfi6BJTUcNowp6cvspg0jXznRTKDjm/E7AdgFBVeAPVMNcKGsHMA==",
|
"integrity": "sha512-bC7ElrdJaJnPbAP+1EotYvqZsb3ecl5wi6Bfi6BJTUcNowp6cvspg0jXznRTKDjm/E7AdgFBVeAPVMNcKGsHMA==",
|
||||||
"license": "MIT",
|
|
||||||
"dependencies": {
|
"dependencies": {
|
||||||
"ms": "2.0.0"
|
"ms": "2.0.0"
|
||||||
}
|
}
|
||||||
@@ -14058,17 +14026,6 @@
|
|||||||
"url": "https://github.com/sponsors/sindresorhus"
|
"url": "https://github.com/sponsors/sindresorhus"
|
||||||
}
|
}
|
||||||
},
|
},
|
||||||
"node_modules/strnum": {
|
|
||||||
"version": "1.1.2",
|
|
||||||
"resolved": "https://mirrors.tencent.com/npm/strnum/-/strnum-1.1.2.tgz",
|
|
||||||
"integrity": "sha512-vrN+B7DBIoTTZjnPNewwhx6cBA/H+IS7rfW68n7XxC1y7uoiGQBxaKzqucGUgavX15dJgiGztLJ8vxuEzwqBdA==",
|
|
||||||
"funding": [
|
|
||||||
{
|
|
||||||
"type": "github",
|
|
||||||
"url": "https://github.com/sponsors/NaturalIntelligence"
|
|
||||||
}
|
|
||||||
]
|
|
||||||
},
|
|
||||||
"node_modules/structured-headers": {
|
"node_modules/structured-headers": {
|
||||||
"version": "0.4.1",
|
"version": "0.4.1",
|
||||||
"resolved": "https://mirrors.tencent.com/npm/structured-headers/-/structured-headers-0.4.1.tgz",
|
"resolved": "https://mirrors.tencent.com/npm/structured-headers/-/structured-headers-0.4.1.tgz",
|
||||||
@@ -14150,42 +14107,25 @@
|
|||||||
}
|
}
|
||||||
},
|
},
|
||||||
"node_modules/tar": {
|
"node_modules/tar": {
|
||||||
"version": "7.4.3",
|
"version": "7.5.1",
|
||||||
"resolved": "https://mirrors.tencent.com/npm/tar/-/tar-7.4.3.tgz",
|
"resolved": "https://mirrors.tencent.com/npm/tar/-/tar-7.5.1.tgz",
|
||||||
"integrity": "sha512-5S7Va8hKfV7W5U6g3aYxXmlPoZVAwUMy9AOKyF2fVuZa2UD3qZjg578OrLRt8PcNN1PleVaL/5/yYATNL0ICUw==",
|
"integrity": "sha512-nlGpxf+hv0v7GkWBK2V9spgactGOp0qvfWRxUMjqHyzrt3SgwE48DIv/FhqPHJYLHpgW1opq3nERbz5Anq7n1g==",
|
||||||
"license": "ISC",
|
"license": "ISC",
|
||||||
"dependencies": {
|
"dependencies": {
|
||||||
"@isaacs/fs-minipass": "^4.0.0",
|
"@isaacs/fs-minipass": "^4.0.0",
|
||||||
"chownr": "^3.0.0",
|
"chownr": "^3.0.0",
|
||||||
"minipass": "^7.1.2",
|
"minipass": "^7.1.2",
|
||||||
"minizlib": "^3.0.1",
|
"minizlib": "^3.1.0",
|
||||||
"mkdirp": "^3.0.1",
|
|
||||||
"yallist": "^5.0.0"
|
"yallist": "^5.0.0"
|
||||||
},
|
},
|
||||||
"engines": {
|
"engines": {
|
||||||
"node": ">=18"
|
"node": ">=18"
|
||||||
}
|
}
|
||||||
},
|
},
|
||||||
"node_modules/tar/node_modules/mkdirp": {
|
|
||||||
"version": "3.0.1",
|
|
||||||
"resolved": "https://mirrors.tencent.com/npm/mkdirp/-/mkdirp-3.0.1.tgz",
|
|
||||||
"integrity": "sha512-+NsyUUAZDmo6YVHzL/stxSu3t9YS1iljliy3BSDrXJ/dkn1KYdmtZODGGjLcc9XLgVVpH4KshHB8XmZgMhaBXg==",
|
|
||||||
"license": "MIT",
|
|
||||||
"bin": {
|
|
||||||
"mkdirp": "dist/cjs/src/bin.js"
|
|
||||||
},
|
|
||||||
"engines": {
|
|
||||||
"node": ">=10"
|
|
||||||
},
|
|
||||||
"funding": {
|
|
||||||
"url": "https://github.com/sponsors/isaacs"
|
|
||||||
}
|
|
||||||
},
|
|
||||||
"node_modules/tar/node_modules/yallist": {
|
"node_modules/tar/node_modules/yallist": {
|
||||||
"version": "5.0.0",
|
"version": "5.0.0",
|
||||||
"resolved": "https://mirrors.tencent.com/npm/yallist/-/yallist-5.0.0.tgz",
|
"resolved": "https://mirrors.tencent.com/npm/yallist/-/yallist-5.0.0.tgz",
|
||||||
"integrity": "sha512-YgvUTfwqyc7UXVMrB+SImsVYSmTS8X/tSrtdNZMImM+n7+QTriRXyXim0mBrTXNeqzVF0KWGgHPeiyViFFrNDw==",
|
"integrity": "sha512-YgvUTfwqyc7UXVMrB+SImsVYSmTS8X/tSrtdNZMImM+n7+QTriRXyXim0mBrTXNeqzVF0KWGgHPeiyViFFrNDw==",
|
||||||
"license": "BlueOak-1.0.0",
|
|
||||||
"engines": {
|
"engines": {
|
||||||
"node": ">=18"
|
"node": ">=18"
|
||||||
}
|
}
|
||||||
@@ -14915,7 +14855,6 @@
|
|||||||
"version": "1.0.1",
|
"version": "1.0.1",
|
||||||
"resolved": "https://mirrors.tencent.com/npm/wcwidth/-/wcwidth-1.0.1.tgz",
|
"resolved": "https://mirrors.tencent.com/npm/wcwidth/-/wcwidth-1.0.1.tgz",
|
||||||
"integrity": "sha512-XHPEwS0q6TaxcvG85+8EYkbiCux2XtWG2mkc47Ng2A77BQu9+DqIOJldST4HgPkuea7dvKSj5VgX3P1d4rW8Tg==",
|
"integrity": "sha512-XHPEwS0q6TaxcvG85+8EYkbiCux2XtWG2mkc47Ng2A77BQu9+DqIOJldST4HgPkuea7dvKSj5VgX3P1d4rW8Tg==",
|
||||||
"license": "MIT",
|
|
||||||
"dependencies": {
|
"dependencies": {
|
||||||
"defaults": "^1.0.3"
|
"defaults": "^1.0.3"
|
||||||
}
|
}
|
||||||
|
|||||||
18
package.json
18
package.json
@@ -13,24 +13,23 @@
|
|||||||
},
|
},
|
||||||
"dependencies": {
|
"dependencies": {
|
||||||
"@expo/metro-runtime": "~6.1.2",
|
"@expo/metro-runtime": "~6.1.2",
|
||||||
"@expo/ui": "~0.2.0-beta.3",
|
"@expo/ui": "~0.2.0-beta.4",
|
||||||
"@expo/vector-icons": "^15.0.2",
|
"@expo/vector-icons": "^15.0.2",
|
||||||
"@react-native-async-storage/async-storage": "^2.2.0",
|
"@react-native-async-storage/async-storage": "^2.2.0",
|
||||||
"@react-native-community/datetimepicker": "8.4.4",
|
"@react-native-community/datetimepicker": "8.4.5",
|
||||||
"@react-native-masked-view/masked-view": "^0.3.2",
|
"@react-native-masked-view/masked-view": "^0.3.2",
|
||||||
"@react-native-picker/picker": "2.11.1",
|
"@react-native-picker/picker": "2.11.2",
|
||||||
"@react-native-voice/voice": "^3.2.4",
|
"@react-native-voice/voice": "^3.2.4",
|
||||||
"@react-navigation/bottom-tabs": "^7.4.0",
|
"@react-navigation/bottom-tabs": "^7.4.0",
|
||||||
"@react-navigation/elements": "^2.6.4",
|
"@react-navigation/elements": "^2.6.4",
|
||||||
"@react-navigation/native": "^7.1.8",
|
"@react-navigation/native": "^7.1.8",
|
||||||
"@reduxjs/toolkit": "^2.9.0",
|
"@reduxjs/toolkit": "^2.9.0",
|
||||||
"@sentry/react-native": "~6.20.0",
|
"@sentry/react-native": "~7.1.0",
|
||||||
"@types/lodash": "^4.17.20",
|
"@types/lodash": "^4.17.20",
|
||||||
"cos-js-sdk-v5": "^1.6.0",
|
|
||||||
"dayjs": "^1.11.18",
|
"dayjs": "^1.11.18",
|
||||||
"expo": "^54.0.8",
|
"expo": "^54.0.10",
|
||||||
"expo-apple-authentication": "~8.0.7",
|
"expo-apple-authentication": "~8.0.7",
|
||||||
"expo-background-task": "~1.0.7",
|
"expo-background-task": "~1.0.8",
|
||||||
"expo-blur": "~15.0.7",
|
"expo-blur": "~15.0.7",
|
||||||
"expo-camera": "~17.0.8",
|
"expo-camera": "~17.0.8",
|
||||||
"expo-constants": "~18.0.9",
|
"expo-constants": "~18.0.9",
|
||||||
@@ -56,6 +55,7 @@
|
|||||||
"react": "19.1.0",
|
"react": "19.1.0",
|
||||||
"react-dom": "19.1.0",
|
"react-dom": "19.1.0",
|
||||||
"react-native": "0.81.4",
|
"react-native": "0.81.4",
|
||||||
|
"react-native-chart-kit": "^6.12.0",
|
||||||
"react-native-device-info": "^14.0.4",
|
"react-native-device-info": "^14.0.4",
|
||||||
"react-native-gesture-handler": "~2.28.0",
|
"react-native-gesture-handler": "~2.28.0",
|
||||||
"react-native-image-viewing": "^0.2.2",
|
"react-native-image-viewing": "^0.2.2",
|
||||||
@@ -67,10 +67,10 @@
|
|||||||
"react-native-render-html": "^6.3.4",
|
"react-native-render-html": "^6.3.4",
|
||||||
"react-native-safe-area-context": "~5.6.1",
|
"react-native-safe-area-context": "~5.6.1",
|
||||||
"react-native-screens": "~4.16.0",
|
"react-native-screens": "~4.16.0",
|
||||||
"react-native-svg": "15.12.1",
|
"react-native-svg": "^15.13.0",
|
||||||
"react-native-toast-message": "^2.3.3",
|
"react-native-toast-message": "^2.3.3",
|
||||||
"react-native-web": "^0.21.1",
|
"react-native-web": "^0.21.1",
|
||||||
"react-native-webview": "13.15.0",
|
"react-native-webview": "13.16.0",
|
||||||
"react-native-wheel-picker-expo": "^0.5.4",
|
"react-native-wheel-picker-expo": "^0.5.4",
|
||||||
"react-native-worklets": "0.5.1",
|
"react-native-worklets": "0.5.1",
|
||||||
"react-redux": "^9.2.0"
|
"react-redux": "^9.2.0"
|
||||||
|
|||||||
42
services/circumferenceAnalysis.ts
Normal file
42
services/circumferenceAnalysis.ts
Normal file
@@ -0,0 +1,42 @@
|
|||||||
|
import { api } from './api';
|
||||||
|
|
||||||
|
export type CircumferencePeriod = 'week' | 'month' | 'year';
|
||||||
|
|
||||||
|
export type CircumferenceAnalysisData = {
|
||||||
|
label: string;
|
||||||
|
chestCircumference: number | null;
|
||||||
|
waistCircumference: number | null;
|
||||||
|
upperHipCircumference: number | null;
|
||||||
|
armCircumference: number | null;
|
||||||
|
thighCircumference: number | null;
|
||||||
|
calfCircumference: number | null;
|
||||||
|
};
|
||||||
|
|
||||||
|
export type CircumferenceAnalysisResponse = {
|
||||||
|
code: number;
|
||||||
|
message: string;
|
||||||
|
data: CircumferenceAnalysisData[];
|
||||||
|
};
|
||||||
|
|
||||||
|
/**
|
||||||
|
* 获取围度分析报表数据
|
||||||
|
* @param period 时间范围:week(按周)、month(按月)、year(按年)
|
||||||
|
* @returns 围度分析数据
|
||||||
|
*/
|
||||||
|
export async function getCircumferenceAnalysis(period: CircumferencePeriod): Promise<CircumferenceAnalysisData[]> {
|
||||||
|
try {
|
||||||
|
const response = await api.get<CircumferenceAnalysisResponse>(
|
||||||
|
`/users/body-measurements/analysis?period=${period}`
|
||||||
|
);
|
||||||
|
|
||||||
|
// 根据API文档,支持返回 { data: ... } 或直接返回数组
|
||||||
|
if (Array.isArray(response)) {
|
||||||
|
return response;
|
||||||
|
}
|
||||||
|
|
||||||
|
return response.data || [];
|
||||||
|
} catch (error) {
|
||||||
|
console.error('获取围度分析数据失败:', error);
|
||||||
|
throw error;
|
||||||
|
}
|
||||||
|
}
|
||||||
87
store/circumferenceSlice.ts
Normal file
87
store/circumferenceSlice.ts
Normal file
@@ -0,0 +1,87 @@
|
|||||||
|
import { createAsyncThunk, createSlice, PayloadAction } from '@reduxjs/toolkit';
|
||||||
|
import { CircumferenceAnalysisData, CircumferencePeriod, getCircumferenceAnalysis } from '@/services/circumferenceAnalysis';
|
||||||
|
|
||||||
|
export type CircumferenceState = {
|
||||||
|
data: Record<CircumferencePeriod, CircumferenceAnalysisData[]>;
|
||||||
|
loading: Record<CircumferencePeriod, boolean>;
|
||||||
|
error: string | null;
|
||||||
|
lastFetch: Record<CircumferencePeriod, number>;
|
||||||
|
};
|
||||||
|
|
||||||
|
const initialState: CircumferenceState = {
|
||||||
|
data: {
|
||||||
|
week: [],
|
||||||
|
month: [],
|
||||||
|
year: [],
|
||||||
|
},
|
||||||
|
loading: {
|
||||||
|
week: false,
|
||||||
|
month: false,
|
||||||
|
year: false,
|
||||||
|
},
|
||||||
|
error: null,
|
||||||
|
lastFetch: {
|
||||||
|
week: 0,
|
||||||
|
month: 0,
|
||||||
|
year: 0,
|
||||||
|
},
|
||||||
|
};
|
||||||
|
|
||||||
|
// 获取围度分析数据
|
||||||
|
export const fetchCircumferenceAnalysis = createAsyncThunk(
|
||||||
|
'circumference/fetchAnalysis',
|
||||||
|
async (period: CircumferencePeriod, { rejectWithValue }) => {
|
||||||
|
try {
|
||||||
|
const data = await getCircumferenceAnalysis(period);
|
||||||
|
return { period, data };
|
||||||
|
} catch (error: any) {
|
||||||
|
return rejectWithValue(error?.message || '获取围度分析数据失败');
|
||||||
|
}
|
||||||
|
}
|
||||||
|
);
|
||||||
|
|
||||||
|
const circumferenceSlice = createSlice({
|
||||||
|
name: 'circumference',
|
||||||
|
initialState,
|
||||||
|
reducers: {
|
||||||
|
clearError: (state) => {
|
||||||
|
state.error = null;
|
||||||
|
},
|
||||||
|
},
|
||||||
|
extraReducers: (builder) => {
|
||||||
|
builder
|
||||||
|
.addCase(fetchCircumferenceAnalysis.pending, (state, action) => {
|
||||||
|
const period = action.meta.arg;
|
||||||
|
state.loading[period] = true;
|
||||||
|
state.error = null;
|
||||||
|
})
|
||||||
|
.addCase(fetchCircumferenceAnalysis.fulfilled, (state, action) => {
|
||||||
|
const { period, data } = action.payload;
|
||||||
|
state.loading[period] = false;
|
||||||
|
state.data[period] = data;
|
||||||
|
state.lastFetch[period] = Date.now();
|
||||||
|
})
|
||||||
|
.addCase(fetchCircumferenceAnalysis.rejected, (state, action) => {
|
||||||
|
const period = action.meta.arg;
|
||||||
|
state.loading[period] = false;
|
||||||
|
state.error = action.payload as string;
|
||||||
|
});
|
||||||
|
},
|
||||||
|
});
|
||||||
|
|
||||||
|
export const { clearError } = circumferenceSlice.actions;
|
||||||
|
|
||||||
|
// Selectors
|
||||||
|
export const selectCircumferenceData = (state: { circumference: CircumferenceState }, period: CircumferencePeriod) =>
|
||||||
|
state.circumference.data[period];
|
||||||
|
|
||||||
|
export const selectCircumferenceLoading = (state: { circumference: CircumferenceState }, period: CircumferencePeriod) =>
|
||||||
|
state.circumference.loading[period];
|
||||||
|
|
||||||
|
export const selectCircumferenceError = (state: { circumference: CircumferenceState }) =>
|
||||||
|
state.circumference.error;
|
||||||
|
|
||||||
|
export const selectLastFetch = (state: { circumference: CircumferenceState }, period: CircumferencePeriod) =>
|
||||||
|
state.circumference.lastFetch[period];
|
||||||
|
|
||||||
|
export default circumferenceSlice.reducer;
|
||||||
@@ -1,6 +1,7 @@
|
|||||||
import { configureStore, createListenerMiddleware } from '@reduxjs/toolkit';
|
import { configureStore, createListenerMiddleware } from '@reduxjs/toolkit';
|
||||||
import challengeReducer from './challengeSlice';
|
import challengeReducer from './challengeSlice';
|
||||||
import checkinReducer, { addExercise, autoSyncCheckin, removeExercise, replaceExercises, setNote, toggleExerciseCompleted } from './checkinSlice';
|
import checkinReducer, { addExercise, autoSyncCheckin, removeExercise, replaceExercises, setNote, toggleExerciseCompleted } from './checkinSlice';
|
||||||
|
import circumferenceReducer from './circumferenceSlice';
|
||||||
import exerciseLibraryReducer from './exerciseLibrarySlice';
|
import exerciseLibraryReducer from './exerciseLibrarySlice';
|
||||||
import foodLibraryReducer from './foodLibrarySlice';
|
import foodLibraryReducer from './foodLibrarySlice';
|
||||||
import foodRecognitionReducer from './foodRecognitionSlice';
|
import foodRecognitionReducer from './foodRecognitionSlice';
|
||||||
@@ -48,6 +49,7 @@ export const store = configureStore({
|
|||||||
user: userReducer,
|
user: userReducer,
|
||||||
challenge: challengeReducer,
|
challenge: challengeReducer,
|
||||||
checkin: checkinReducer,
|
checkin: checkinReducer,
|
||||||
|
circumference: circumferenceReducer,
|
||||||
goals: goalsReducer,
|
goals: goalsReducer,
|
||||||
health: healthReducer,
|
health: healthReducer,
|
||||||
mood: moodReducer,
|
mood: moodReducer,
|
||||||
|
|||||||
Reference in New Issue
Block a user