From d920e972f95db0ead031fbfe99b811bb8b28d412 Mon Sep 17 00:00:00 2001 From: unknown <2871013501@qq.com> Date: Fri, 23 May 2025 19:43:37 +0800 Subject: [PATCH] =?UTF-8?q?=E9=9A=8F=E6=9C=BA=E5=85=B3=E9=94=AE=E8=AF=8D?= =?UTF-8?q?=E3=80=81=E6=90=9C=E7=B4=A2=E9=A1=B5=E4=BF=AE=E6=94=B9?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- app/navigation/AppNavigator.tsx | 81 ++- app/screens/HomeScreen.tsx | 463 +++++++------- app/screens/SearchResultScreen.tsx | 398 ++++++++++-- app/services/api/productApi.ts | 8 + yarn.lock | 955 +++++++++++++---------------- 5 files changed, 1066 insertions(+), 839 deletions(-) diff --git a/app/navigation/AppNavigator.tsx b/app/navigation/AppNavigator.tsx index f16ae40..444cec1 100644 --- a/app/navigation/AppNavigator.tsx +++ b/app/navigation/AppNavigator.tsx @@ -1,5 +1,5 @@ -import React from 'react'; -import { NavigationContainer } from "@react-navigation/native"; +import React, { useRef } from 'react'; +import { NavigationContainer, NavigationState, PartialState } from "@react-navigation/native"; import { createNativeStackNavigator } from "@react-navigation/native-stack"; import { RootStackParamList } from './types'; import * as Screens from './screens'; @@ -7,9 +7,84 @@ import Toast from "react-native-toast-message"; const Stack = createNativeStackNavigator(); +// 获取当前路由信息的工具函数 +// [DEBUG-ROUTER-LOGGER] 路由跟踪函数 - 生产环境可删除 +const getActiveRouteName = (state: NavigationState | PartialState | undefined): string => { + if (!state || !state.routes) return ''; + + const route = state.routes[state.index || 0]; + + // 检查是否存在嵌套导航 + if (route.state && route.state.routes) { + return getActiveRouteName(route.state); + } + + return route.name; +}; + +// 获取路由的完整路径 +// [DEBUG-ROUTER-LOGGER] 路由跟踪函数 - 生产环境可删除 +const getRoutePath = (state: NavigationState | PartialState | undefined): string[] => { + if (!state || !state.routes) return []; + + const route = state.routes[state.index || 0]; + const currentPath = [route.name]; + + // 检查是否存在嵌套导航 + if (route.state && route.state.routes) { + return [...currentPath, ...getRoutePath(route.state)]; + } + + return currentPath; +}; + export const AppNavigator = () => { + // [DEBUG-ROUTER-LOGGER] 路由跟踪引用 - 生产环境可删除 + const navigationRef = useRef(null); + const routeNameRef = useRef(); + return ( - + { + // [DEBUG-ROUTER-LOGGER] 初始路由日志 - 生产环境可删除 - 开始 + routeNameRef.current = getActiveRouteName(navigationRef.current?.getRootState()); + console.log('[DEBUG-ROUTER] 初始路由:', routeNameRef.current); + + // 打印组件信息 + const componentInfo = Screens[routeNameRef.current as keyof typeof Screens]; + console.log('[DEBUG-ROUTER] 组件信息:', componentInfo ? componentInfo.name || '未命名组件' : '未找到组件'); + // [DEBUG-ROUTER-LOGGER] 初始路由日志 - 生产环境可删除 - 结束 + }} + onStateChange={(state) => { + // [DEBUG-ROUTER-LOGGER] 路由变化日志 - 生产环境可删除 - 开始 + const previousRouteName = routeNameRef.current; + const currentRouteName = getActiveRouteName(state); + + if (previousRouteName !== currentRouteName) { + // 记录路由变化 + console.log(`[DEBUG-ROUTER] 路由变化: ${previousRouteName} -> ${currentRouteName}`); + + // 打印完整路径 + const fullPath = getRoutePath(state); + console.log('[DEBUG-ROUTER] 路由完整路径:', fullPath.join(' -> ')); + + // 打印组件信息 + const componentInfo = Screens[currentRouteName as keyof typeof Screens]; + console.log('[DEBUG-ROUTER] 组件信息:', componentInfo ? componentInfo.name || '未命名组件' : '未找到组件'); + + // 打印路由参数信息 + const currentRoute = state?.routes?.[state.index || 0]; + if (currentRoute && currentRoute.params) { + console.log('[DEBUG-ROUTER] 路由参数:', JSON.stringify(currentRoute.params, null, 2)); + } + + // 更新当前路由名称引用 + routeNameRef.current = currentRouteName; + } + // [DEBUG-ROUTER-LOGGER] 路由变化日志 - 生产环境可删除 - 结束 + }} + > { const [showCategoryModal, setShowCategoryModal] = useState(false); const [showImagePickerModal, setShowImagePickerModal] = useState(false); const [selectedCategory, setSelectedCategory] = useState("Bijoux"); - const [selectedHorizontalCategory, setSelectedHorizontalCategory] = - useState("Tous"); - const [refreshing, setRefreshing] = useState(false); - const [loading, setLoading] = useState(true); // 添加加载状态 - const horizontalScrollRef = useRef(null); + const [selectedHorizontalCategory, setSelectedHorizontalCategory] = useState("Tous"); const userStore = useUserStore(); - const [searchParams, setSearchParams] = useState({ - keyword: "pen", - page: 1, - page_size: 10, - sort_order: "desc", - sort_by: "default", - language: "en", - }); - const [products, setProducts] = useState([]); - const [hasMore, setHasMore] = useState(true); - const [isLoadingMore, setIsLoadingMore] = useState(false); - const [totalProducts, setTotalProducts] = useState(0); - const [initialLoadComplete, setInitialLoadComplete] = useState(false); - const [currentPage, setCurrentPage] = useState(1); // 添加当前页码状态 + const { country, currency } = useGlobalStore(); const flatListRef = useRef(null); + const horizontalScrollRef = useRef(null); const data = [ { imgUrl: require("../../assets/img/banner en (5)_compressed.png"), @@ -351,95 +336,221 @@ export const HomeScreen = () => { add: "CompanyScreen", }, ]; - const [galleryUsed, setGalleryUsed] = useState(false); // 标记是否使用过相册 - const [loadingPlaceholders, setLoadingPlaceholders] = useState(0); // 添加占位符数量状态 - const getProductData = async (isLoadMore = false) => { - if (isLoadMore) { - setIsLoadingMore(true); - } else { - setLoading(true); - } + const [galleryUsed, setGalleryUsed] = useState(false); + const [hotTerms, setHotTerms] = useState([]); + const [isLoadingHotTerms, setIsLoadingHotTerms] = useState(false); + + // 直接在组件中实现分页加载逻辑 + const [products, setProducts] = useState([]); + const [loading, setLoading] = useState(true); + const [loadingMore, setLoadingMore] = useState(false); + const [hasMore, setHasMore] = useState(true); + const [refreshing, setRefreshing] = useState(false); + const [currentPage, setCurrentPage] = useState(1); + const [loadingPlaceholders, setLoadingPlaceholders] = useState(0); + const [totalItems, setTotalItems] = useState(0); + const [params, setParams] = useState({ + keyword: "pen", // 初始关键词,将在获取热门关键词后更新 + sort_order: "desc", + sort_by: "default", + language: getCurrentLanguage(), + page: 1, + page_size: 10, + ...(userStore.user?.user_id ? { user_id: userStore.user.user_id } : {}), + }); + + // 获取热门关键词并初始化产品列表 + useEffect(() => { + const initApp = async () => { + try { + // 获取热门关键词 + const response = await productApi.getHotTerms(); + const terms = response.terms || []; + setHotTerms(terms); + + // 如果获取到了热门关键词,使用随机关键词 + if (terms.length > 0) { + const randomIndex = Math.floor(Math.random() * terms.length); + const randomKeyword = terms[randomIndex]; + + // 更新参数 + setParams(prev => ({ + ...prev, + keyword: randomKeyword + })); + + // 获取第一页数据 + await fetchInitialProducts(randomKeyword); + } else { + // 如果没有热门关键词,使用默认关键词"pen" + await fetchInitialProducts("pen"); + } + } catch (error) { + console.error("初始化失败:", error); + // 出错时使用默认关键词 + await fetchInitialProducts("pen"); + } + }; + + initApp(); + }, []); + + // 获取随机关键词 + const getRandomKeyword = useCallback(() => { + if (hotTerms.length === 0) return "pen"; + const randomIndex = Math.floor(Math.random() * hotTerms.length); + const keyword = hotTerms[randomIndex]; + console.log("获取随机关键词:", keyword); + return keyword; + }, [hotTerms]); + + // 获取初始产品数据(第一页及额外的三页) + const fetchInitialProducts = useCallback(async (keyword: string) => { + setLoading(true); try { - const currentParams = { - ...searchParams, - page: isLoadMore ? currentPage + 1 : 1, - ...(userStore.user?.user_id ? { user_id: userStore.user.user_id } : {}), + // 第一页请求参数 + const initialParams = { + ...params, + keyword, + page: 1, + page_size: 10 }; - const res = await productApi.getSearchProducts(currentParams); - setTotalProducts(res.total || 0); + // 获取第一页数据 + const firstPageRes = await productApi.getSearchProducts(initialParams); + setProducts(firstPageRes.products); + setTotalItems(firstPageRes.total || 0); - if (isLoadMore) { - setProducts(prev => [...prev, ...res.products]); - setCurrentPage(prev => prev + 1); - } else { - setProducts(res.products); - setCurrentPage(1); - } - - const currentTotal = isLoadMore ? products.length + res.products.length : res.products.length; - setHasMore(currentTotal < (res.total || 0)); - - if (!isLoadMore && !initialLoadComplete) { - setInitialLoadComplete(true); - const remainingParams = { - ...currentParams, - page: 2, - page_size: 30 + if (hotTerms.length > 0) { + // 存储已使用的关键词,避免重复 + const usedKeywords = new Set([keyword]); + + // 创建获取唯一关键词的函数 + const getUniqueKeyword = () => { + // 如果热门关键词数量不足,或者已经用完所有关键词,返回随机关键词 + if (hotTerms.length <= usedKeywords.size || hotTerms.length <= 1) { + return hotTerms[Math.floor(Math.random() * hotTerms.length)]; + } + + // 尝试获取未使用过的关键词 + let attempts = 0; + while (attempts < 10) { // 最多尝试10次 + const randomIndex = Math.floor(Math.random() * hotTerms.length); + const candidateKeyword = hotTerms[randomIndex]; + + if (!usedKeywords.has(candidateKeyword)) { + usedKeywords.add(candidateKeyword); + return candidateKeyword; + } + + attempts++; + } + + // 如果无法找到唯一关键词,返回随机关键词 + return hotTerms[Math.floor(Math.random() * hotTerms.length)]; }; - const remainingRes = await productApi.getSearchProducts(remainingParams); - setProducts(prev => { - const newProducts = [...prev, ...remainingRes.products]; - setHasMore(newProducts.length < (res.total || 0)); - return newProducts; + + // 使用不同关键词加载额外的3页数据 + const remainingRequests = Array.from({ length: 3 }, async (_, index) => { + // 获取唯一的随机关键词 + const pageKeyword = getUniqueKeyword(); + const pageParams = { + ...params, + keyword: pageKeyword, + page: index + 2, + page_size: 10 + }; + return productApi.getSearchProducts(pageParams); }); - setCurrentPage(2); + + // 并行获取额外数据 + const additionalResults = await Promise.all(remainingRequests); + const additionalProducts = additionalResults.flatMap(result => result.products); + + // 合并所有产品 + setProducts(prev => [...prev, ...additionalProducts]); + setCurrentPage(4); + setHasMore(firstPageRes.products.length + additionalProducts.length < (firstPageRes.total || 0)); + } else { + // 如果没有热门关键词,只使用第一页数据 + setCurrentPage(1); + setHasMore(firstPageRes.products.length < (firstPageRes.total || 0)); } + } catch (error) { + console.error("获取产品数据失败:", error); + } finally { + setLoading(false); + } + }, [params, hotTerms]); + + // 加载更多产品 + const handleLoadMore = useCallback(() => { + if (!hasMore || loadingMore || hotTerms.length === 0) return; + + setLoadingMore(true); + setLoadingPlaceholders(10); + + // 使用新的随机关键词 + const newKeyword = getRandomKeyword(); + + // 准备请求参数 + const loadMoreParams = { + ...params, + keyword: newKeyword, + page: currentPage + 1, + page_size: 10 + }; + + // 获取下一页数据 + productApi.getSearchProducts(loadMoreParams) + .then(res => { + setProducts(prev => [...prev, ...res.products]); + setCurrentPage(prev => prev + 1); + setHasMore((products.length + res.products.length) < (res.total || 0)); + }) + .catch(error => { + console.error("加载更多失败:", error); + }) + .finally(() => { + setLoadingMore(false); + setLoadingPlaceholders(0); + }); + }, [hasMore, loadingMore, hotTerms, getRandomKeyword, params, currentPage, products.length]); + + // 刷新产品列表 + const handleRefresh = useCallback(async () => { + if (hotTerms.length === 0) return; + + setRefreshing(true); + + try { + // 使用新的随机关键词 + const refreshKeyword = getRandomKeyword(); + console.log("刷新,使用关键词:", refreshKeyword); + // 重新获取初始数据 + await fetchInitialProducts(refreshKeyword); } catch (error) { - console.error("Error fetching products:", error); + console.error("刷新失败:", error); } finally { - if (isLoadMore) { - setIsLoadingMore(false); - setLoadingPlaceholders(0); // 清除占位符 - } else { - setTimeout(() => { - setLoading(false); - }, 300); - } + setRefreshing(false); } - }; + }, [hotTerms, getRandomKeyword, fetchInitialProducts]); + const handleProductPress = useCallback( (item: Product) => { InteractionManager.runAfterInteractions(() => { navigation.navigate("ProductDetail", { offer_id: item.offer_id, - searchKeyword: searchParams.keyword, + searchKeyword: params.keyword, price: item.min_price, }); }); }, [navigation] ); - const onRefresh = useCallback(async () => { - setRefreshing(true); - setInitialLoadComplete(false); // 重置初始加载标记 - setCurrentPage(1); // 重置页码 - setSearchParams(prev => ({ ...prev, page_size: 10 })); // 只重置每页数量 - try { - await getProductData(); - } catch (error) { - console.error("Error fetching products:", error); - } finally { - setRefreshing(false); - } - }, [searchParams]); - const { country, currency, language } = useGlobalStore(); - useEffect(() => { - console.log("userStore.user", userStore.user); - getProductData(); - }, [userStore.user, country, currency, language]); + const categories = [ "Tous", "Bijoux", @@ -453,6 +564,7 @@ export const HomeScreen = () => { "Hygiène et Soins pour le corps", "Maquillage", ]; + const defaultSubcategories: SubcategoryItem[] = [ { id: 1, title: "Jewelry", icon: "diamond-outline" }, { id: 2, title: "Earrings", icon: "ear-outline" }, @@ -461,6 +573,7 @@ export const HomeScreen = () => { { id: 5, title: "Earrings", icon: "ear-outline" }, { id: 6, title: "Bracelet", icon: "watch-outline" }, ]; + const categoryContent: CategoryContentType = { Tous: [], Bijoux: defaultSubcategories, @@ -474,38 +587,37 @@ export const HomeScreen = () => { "Hygiène et Soins pour le corps": defaultSubcategories, Maquillage: defaultSubcategories, }; + useEffect(() => { - // Ensure the content is available when category changes if (!categoryContent[selectedHorizontalCategory]) { setSelectedHorizontalCategory("Tous"); } }, [selectedHorizontalCategory]); - // 导航到搜索页面 - 使用useCallback优化函数引用 + const navigateToSearch = useCallback(() => { - // 使用InteractionManager延迟执行导航操作,确保当前交互和动画已完成 InteractionManager.runAfterInteractions(() => { navigation.navigate("Search"); }); }, [navigation]); + const navigateToShippingDetails = useCallback(() => { InteractionManager.runAfterInteractions(() => { navigation.navigate("ShippingDetailsSection"); }); }, [navigation]); + const navigateToInquiry = useCallback(() => { InteractionManager.runAfterInteractions(() => { navigation.navigate("InquiryScreen"); }); }, [navigation]); + const scrollToCategory = (category: string) => { const categoryIndex = categories.findIndex((c) => c === category); if (categoryIndex !== -1 && horizontalScrollRef.current) { - const firstFourKeys = Object.keys(categoryContent).slice( - 0, - categoryIndex - 1 - ); + const firstFourKeys = Object.keys(categoryContent).slice(0, categoryIndex - 1); let str = ""; - firstFourKeys.forEach((key, index) => { + firstFourKeys.forEach((key) => { str += key; }); horizontalScrollRef.current.scrollTo({ @@ -514,7 +626,7 @@ export const HomeScreen = () => { }); } }; - // 渲染产品列表项 + const renderProductItem = ({ item }: { item: Product }) => ( handleProductPress(item)} @@ -538,19 +650,13 @@ export const HomeScreen = () => { VIP - - {userStore.user?.vip_level} - + {userStore.user?.vip_level} )} - + {getSubjectTransLanguage(item)} @@ -562,27 +668,18 @@ export const HomeScreen = () => { )} - - {item.min_price || "0"} - - - {item.currency || "FCFA"} - + {item.min_price || "0"} + {item.currency || "FCFA"} - - {item.sold_out || "0"}+ ventes - + {item.sold_out || "0"}+ ventes ); - // 渲染骨架屏网格 const renderSkeletonGrid = useCallback(() => { - // 创建骨架屏数组 const skeletonArray = Array(8).fill(null); - return ( { ); }, []); - // 清理expo-image-picker临时文件 const cleanupImagePickerCache = async () => { try { - // Skip cache cleanup on web platform if (Platform.OS === 'web') { console.log('Cache cleanup skipped on web platform'); setGalleryUsed(false); return; } - // 相册选择后清理临时缓存 const cacheDir = `${FileSystem.cacheDirectory}ImagePicker`; await FileSystem.deleteAsync(cacheDir, { idempotent: true }); console.log("已清理ImagePicker缓存"); - - // 立即重置状态,无需用户干预 setGalleryUsed(false); } catch (error) { console.log("清理缓存错误", error); - // Even if cleanup fails, reset the state setGalleryUsed(false); } }; - // 将图片URI转换为FormData - const uriToFormData = async (uri: string) => { - try { - // 创建FormData对象 - const formData = new FormData(); - - // 获取文件名 - const filename = uri.split("/").pop() || "image.jpg"; - - // 判断文件类型(mime type) - const match = /\.(\w+)$/.exec(filename); - const type = match ? `image/${match[1]}` : "image/jpeg"; - - // 处理iOS路径前缀 - const imageUri = Platform.OS === "ios" ? uri.replace("file://", "") : uri; - - // 将图片转换为Blob - const imageFetchResponse = await fetch(imageUri); - const imageBlob = await imageFetchResponse.blob(); - - // 添加图片到FormData - formData.append("image", imageBlob, filename); - - console.log("FormData 详情:"); - console.log("- 图片URI:", uri); - console.log("- 文件名:", filename); - console.log("- 文件类型:", type); - - return formData; - } catch (error) { - console.error("创建FormData错误:", error); - throw error; - } - }; - - // 处理从相册选择 const handleChooseFromGallery = useCallback(async () => { - console.log("handleChooseFromGallery"); setShowImagePickerModal(false); - - // 等待模态窗关闭后再执行 setTimeout(async () => { try { - // 请求相册权限 - const permissionResult = - await ImagePicker.requestMediaLibraryPermissionsAsync(); + const permissionResult = await ImagePicker.requestMediaLibraryPermissionsAsync(); if (permissionResult.status !== "granted") { console.log("相册权限被拒绝"); return; } - // 打开相册 const result = await ImagePicker.launchImageLibraryAsync({ mediaTypes: ImagePicker.MediaTypeOptions.Images, allowsEditing: true, @@ -682,32 +731,24 @@ export const HomeScreen = () => { }); if (!result.canceled && result.assets && result.assets.length > 0) { - console.log("相册选择成功:", result.assets[0].uri); - await cleanupImagePickerCache(); navigation.navigate("ImageSearchResultScreen", { image: result.assets[0].uri, type: 1, }); } - } catch (error: any) { + } catch (error) { console.error("相册错误:", error); - // 出错时也清理缓存 await cleanupImagePickerCache(); } }, 500); - }, [userStore.user]); + }, []); - // 处理相机拍照 - 简化版本,不再需要处理galleryUsed const handleTakePhoto = useCallback(async () => { - console.log("handleTakePhoto"); setShowImagePickerModal(false); - - // 等待模态窗关闭后再执行 setTimeout(async () => { try { - const permissionResult = - await ImagePicker.requestCameraPermissionsAsync(); + const permissionResult = await ImagePicker.requestCameraPermissionsAsync(); if (permissionResult.status !== "granted") { console.log("相机权限被拒绝"); return; @@ -721,68 +762,34 @@ export const HomeScreen = () => { }); if (!result.canceled && result.assets && result.assets.length > 0) { - console.log("拍照成功:", result.assets[0].uri); - - // 使用后清理缓存 await cleanupImagePickerCache(); - // 将图片URI转换为FormData navigation.navigate("ImageSearchResultScreen", { image: result.assets[0].uri, type: 1, }); } - } catch (error: any) { + } catch (error) { console.error("相机错误:", error); - // 出错时也清理缓存 await cleanupImagePickerCache(); } }, 500); - }, [userStore.user]); + }, []); - // 重置应用状态函数 const resetAppState = useCallback(() => { - // 重置标记 setGalleryUsed(false); - - // 清理缓存 cleanupImagePickerCache(); - - // 提示用户 Alert.alert("已重置", "现在您可以使用相机功能了"); }, []); - // 修改加载更多函数 - const loadMore = () => { - if (!hasMore || isLoadingMore) { - console.log('不加载更多:', { hasMore, isLoadingMore }); - return; - } - - console.log('开始加载更多, 当前页码:', currentPage); - setLoadingPlaceholders(10); // 设置10个占位符 - getProductData(true); - }; - - // 修改滚动到底部处理函数 - const handleEndReached = () => { - console.log('触发加载更多'); - loadMore(); - }; - - // 修改渲染函数 const renderItem = ({ item, index }: { item: Product; index: number }) => { - // 如果是占位符 if (index >= products.length && index < products.length + loadingPlaceholders) { return ; } - return renderProductItem({ item }); }; - // 渲染列表头部内容 const renderHeader = () => ( <> - {/* 轮播图 */} { )} /> - {/* 自定义指示器 */} - {/* - {data.map((_, index) => ( - - ))} - */} - {/* 搜索栏 - 定位在轮播图上方 */} { - {/* 内容区域 */} - {/* 左侧区域 - 上下两个 */} { /> - {/* 右侧区域 - 一个 */} { key={index} style={[ styles.categoryItem, - selectedHorizontalCategory === category && - styles.categoryItemActive, + selectedHorizontalCategory === category && styles.categoryItemActive, ]} onPress={() => setSelectedHorizontalCategory(category)} > {category} @@ -924,7 +913,6 @@ export const HomeScreen = () => { - {/* Subcategory Content */} {selectedHorizontalCategory && categoryContent[selectedHorizontalCategory] && categoryContent[selectedHorizontalCategory].length > 0 ? ( @@ -983,7 +971,7 @@ export const HomeScreen = () => { backgroundColor: "transparent", }} ListHeaderComponent={renderHeader} - onEndReached={handleEndReached} + onEndReached={handleLoadMore} onEndReachedThreshold={3} ListFooterComponent={() => ( !hasMore && !loadingPlaceholders ? ( @@ -995,7 +983,7 @@ export const HomeScreen = () => { refreshControl={ { /> )} - {/* Categories Modal */} { {category} @@ -1062,7 +1048,6 @@ export const HomeScreen = () => { - {/* Image Picker Modal */} { > {!galleryUsed ? ( - // 正常状态,显示相机选项 { 拍照 ) : ( - // 已使用相册状态,显示重置选项 ( - - - - - - - +const ProductSkeleton = React.memo(() => { + // 创建动画值 + const shimmerAnim = useRef(new Animated.Value(0)).current; + + // 设置动画效果 + useEffect(() => { + const shimmerAnimation = Animated.loop( + Animated.timing(shimmerAnim, { + toValue: 1, + duration: 1500, + useNativeDriver: true, + }) + ); + + shimmerAnimation.start(); + + return () => { + shimmerAnimation.stop(); + }; + }, []); + + // 定义动画插值 + const shimmerTranslate = shimmerAnim.interpolate({ + inputRange: [0, 1], + outputRange: [-200, 200], + }); + + return ( + + + + + + + + + + + + + + + + + + - -)); + ); +}); // 产品项组件 - 使用React.memo优化渲染 const ProductItem = React.memo( ({ @@ -127,10 +202,9 @@ const ProductItem = React.memo( style={styles.productCard} onPress={() => onPress(product)} activeOpacity={0.7} - key={product.offer_id} > - {product.product_image_urls[0] ? ( + {product.product_image_urls && product.product_image_urls[0] ? ( { if (route.params?.keyword) { @@ -217,7 +294,28 @@ export const SearchResultScreen = ({ route, navigation }: SearchResultScreenProp keyword: route.params.keyword, }; setSearchParams(newParams); - searchProducts(newParams); + // 直接调用API,避免依赖循环 + const fetchData = async () => { + try { + setLoading(true); + const res = await productApi.getSearchProducts(newParams); + setProducts(res.products); + setOriginalProducts(res.products); + setCurrentPage(1); + setHasMore(res.products.length === newParams.page_size); + } catch (error) { + console.error("Error fetching products:", error); + setProducts([]); + setOriginalProducts([]); + setHasMore(false); + } finally { + setLoading(false); + setTimeout(() => { + setShowSkeleton(false); + }, 300); + } + }; + fetchData(); } if (route.params?.category_id) { setShowSkeleton(true); @@ -226,29 +324,79 @@ export const SearchResultScreen = ({ route, navigation }: SearchResultScreenProp category_id: route.params.category_id, }; setSearchParams(newParams); - searchProducts(newParams) + // 直接调用API,避免依赖循环 + const fetchData = async () => { + try { + setLoading(true); + const res = await productApi.getSearchProducts(newParams); + setProducts(res.products); + setOriginalProducts(res.products); + setCurrentPage(1); + setHasMore(res.products.length === newParams.page_size); + } catch (error) { + console.error("Error fetching products:", error); + setProducts([]); + setOriginalProducts([]); + setHasMore(false); + } finally { + setLoading(false); + setTimeout(() => { + setShowSkeleton(false); + }, 300); + } + }; + fetchData(); } - }, [route.params?.keyword,route.params?.category_id]); + }, [route.params?.keyword, route.params?.category_id]); // 搜索产品的API调用 const searchProducts = useCallback( async (params: ProductParams, isLoadMore = false) => { + // 防止重复请求 - 只在内部状态已经是加载中时阻止请求 + if (isLoadMore && loadingMore) { + console.log('阻止重复加载更多请求'); + return; + } + if (!isLoadMore && loading) { + console.log('阻止重复初始加载请求'); + return; + } + + console.log('发起请求:', isLoadMore ? '加载更多' : '初始加载', params); + if (!isLoadMore) { setLoading(true); setShowSkeleton(true); } else { setLoadingMore(true); } + try { const res = await productApi.getSearchProducts(params); + console.log('请求成功, 获取商品数:', res.products.length); + if (isLoadMore) { - setProducts((prev) => [...prev, ...res.products]); + // 使用回调方式更新,确保获取最新状态 + setProducts(prev => { + // 过滤掉重复商品,避免闪烁 + const newProducts = res.products.filter( + newProduct => !prev.some( + existingProduct => existingProduct.offer_id === newProduct.offer_id + ) + ); + return [...prev, ...newProducts]; + }); + + setCurrentPage(prev => prev + 1); } else { setProducts(res.products); // 保存原始排序的数据,以便默认排序时恢复 setOriginalProducts(res.products); + setCurrentPage(1); } + // 如果返回的数据少于页面大小,说明没有更多数据了 setHasMore(res.products.length === params.page_size); + return res; } catch (error) { console.error("Error searching products:", error); // 发生错误时,设置hasMore为false,防止继续加载 @@ -258,19 +406,23 @@ export const SearchResultScreen = ({ route, navigation }: SearchResultScreenProp setProducts([]); setOriginalProducts([]); } + throw error; } finally { - setLoading(false); - setLoadingMore(false); - - // Add a short delay before hiding skeletons for smoother transition - if (!isLoadMore) { + if (isLoadMore) { + // 延迟清除加载状态,让视觉过渡更平滑 + setTimeout(() => { + setLoadingMore(false); + }, 300); + } else { + setLoading(false); + // 添加延迟以使骨架屏过渡更平滑 setTimeout(() => { setShowSkeleton(false); }, 300); } } }, - [] + [loading, loadingMore] ); // 处理搜索提交 const handleSearch = useCallback(() => { @@ -324,23 +476,34 @@ export const SearchResultScreen = ({ route, navigation }: SearchResultScreenProp ), [searchText, t] ); - // 渲染产品项 - const renderProductItem = useCallback( - ({ item }: { item: Product }) => ( + // 渲染商品项 + const renderItem = useCallback(({ item, index }: { item: any; index: number }) => { + // 处理骨架屏项 + if (item && item.isLoadingSkeleton) { + return ; + } + + // 处理空白占位项 + if (!item) { + // 显示透明的占位视图 + return ; + } + + // 渲染正常商品项 + return ( - ), - [handleProductPress, t, userStore] - ); + ); + }, [handleProductPress, t, userStore]); // 创建产品列表项的key提取器 - const keyExtractor = useCallback( - (item: Product, index: number) => `${item.offer_id}-${index}`, - [] - ); + const keyExtractor = useCallback((item: any, index: number) => { + if (!item) return `empty-${index}`; + return `${item.offer_id || 'item'}-${index}`; + }, []); // 处理排序 const handleSort = useCallback( (field: "price" | "time", order: "asc" | "desc") => { @@ -370,35 +533,121 @@ export const SearchResultScreen = ({ route, navigation }: SearchResultScreenProp ); // 处理加载更多 const handleLoadMore = useCallback(() => { - if (loading || !hasMore || loadingMore) return; + // 简化条件判断,直接仿照HomeScreen的处理方式 + if (!hasMore || loadingMore) { + return; + } + + // 添加时间防抖,避免频繁触发 + const now = Date.now(); + if (now - lastLoadTime.current < 500) { // 500ms内不重复触发 + return; + } + lastLoadTime.current = now; + + // 标记为加载中 setLoadingMore(true); - const newParams = { + + // 请求参数 + const loadMoreParams = { + ...searchParams, + page: currentPage + 1, + }; + + // 获取下一页数据 + productApi.getSearchProducts(loadMoreParams) + .then(res => { + // 使用回调更新,确保获取最新状态 + setProducts(prev => { + // 过滤掉重复商品 + const newProducts = res.products.filter( + newProduct => !prev.some( + existingProduct => existingProduct.offer_id === newProduct.offer_id + ) + ); + return [...prev, ...newProducts]; + }); + + setCurrentPage(prev => prev + 1); + setHasMore(res.products.length === loadMoreParams.page_size); + }) + .catch(error => { + console.error("加载更多失败:", error); + }) + .finally(() => { + // 延迟结束加载状态,给用户更好的体验 + setTimeout(() => { + setLoadingMore(false); + }, 300); + }); + }, [hasMore, loadingMore, searchParams, currentPage]); + // 处理下拉刷新 + const handleRefresh = useCallback(() => { + if (refreshing) return; + + setRefreshing(true); + + const refreshParams = { ...searchParams, - page: searchParams.page + 1, + page: 1, }; - setSearchParams(newParams); - searchProducts(newParams, true); - }, [loading, hasMore, loadingMore, searchParams, searchProducts]); + + // 直接调用API避免状态冲突 + productApi.getSearchProducts(refreshParams) + .then(res => { + // 保留原有商品列表,先显示再更新 + setProducts(res.products); + setOriginalProducts(res.products); + setCurrentPage(1); + setHasMore(res.products.length === refreshParams.page_size); + }) + .catch(error => { + console.error("刷新失败:", error); + // 不清空产品列表,保持用户体验 + }) + .finally(() => { + // 延迟结束刷新状态,让过渡更平滑 + setTimeout(() => { + setRefreshing(false); + }, 300); + }); + }, [refreshing, searchParams]); // 渲染底部加载指示器 const renderFooter = useCallback(() => { - if (!hasMore) + // 加载中状态显示骨架屏 + if (loadingMore) { return ( - - {t("noMoreData")} + + + + + + + ); - if (loadingMore) + } + + // 没有更多数据时显示提示 + if (!hasMore) { return ( - - {t("loadingMore")} + {t("noMoreData")} ); + } + return ; - }, [loadingMore, hasMore, t]); + }, [hasMore, loadingMore, t]); // 处理滚动事件 const handleScroll = useCallback((event: any) => { const offsetY = event.nativeEvent.contentOffset.y; + // 当滚动超过屏幕高度的一半时显示回到顶部按钮 setShowBackToTop(offsetY > 300); }, []); @@ -443,7 +692,7 @@ export const SearchResultScreen = ({ route, navigation }: SearchResultScreenProp ); // 渲染骨架屏网格 const renderSkeletonGrid = useCallback(() => { - // Create an array of items for the skeleton grid + // 创建一个骨架屏数组 const skeletonArray = Array(8).fill(null); return ( @@ -459,6 +708,20 @@ export const SearchResultScreen = ({ route, navigation }: SearchResultScreenProp ); }, []); + // 确保产品列表包含偶数条目,防止最后一个产品占满整行 + const ensureEvenItems = useCallback((): (Product | any)[] => { + // 如果商品数量为奇数 + if (products.length % 2 !== 0) { + // 加载更多时使用骨架屏替代空白占位符 + if (loadingMore) { + return [...products, { isLoadingSkeleton: true, tempId: 'loadingPlaceholder' }]; + } + // 非加载状态时使用空白占位符 + return [...products, null]; + } + + return products; + }, [products, loadingMore]); return ( @@ -699,23 +962,36 @@ export const SearchResultScreen = ({ route, navigation }: SearchResultScreenProp <> + } /> {showBackToTop && ( { return apiService.get('/api/search/', params); }, + // 获取热门搜索词 + getHotTerms: () => { + return apiService.get('/api/search/hot-terms/'); + }, // 获取商品详情 getProductDetail: (offer_id: string, user_id?: number) => { const url = user_id ? `/api/products/${offer_id}/?user_id=${user_id}` : `/api/products/${offer_id}/`; diff --git a/yarn.lock b/yarn.lock index 6c8135b..e2b93ca 100644 --- a/yarn.lock +++ b/yarn.lock @@ -31,6 +31,13 @@ "@nicolo-ribaudo/chokidar-2" "2.1.8-no-fsevents.3" chokidar "^3.6.0" +"@babel/code-frame@7.10.4", "@babel/code-frame@~7.10.4": + version "7.10.4" + resolved "https://registry.npmmirror.com/@babel/code-frame/-/code-frame-7.10.4.tgz" + integrity sha512-vG6SvB6oYEhvgisZNFRmRCUkLz11c7rp+tbNTynGqc6mS1d5ATd/sGyV6W0KZZnXRKMTzZDRgQT3Ou9jhpAfUg== + dependencies: + "@babel/highlight" "^7.10.4" + "@babel/code-frame@^7.0.0", "@babel/code-frame@^7.12.13", "@babel/code-frame@^7.24.7", "@babel/code-frame@^7.27.1": version "7.27.1" resolved "https://registry.npmmirror.com/@babel/code-frame/-/code-frame-7.27.1.tgz" @@ -40,20 +47,6 @@ js-tokens "^4.0.0" picocolors "^1.1.1" -"@babel/code-frame@~7.10.4": - version "7.10.4" - resolved "https://registry.npmmirror.com/@babel/code-frame/-/code-frame-7.10.4.tgz" - integrity sha512-vG6SvB6oYEhvgisZNFRmRCUkLz11c7rp+tbNTynGqc6mS1d5ATd/sGyV6W0KZZnXRKMTzZDRgQT3Ou9jhpAfUg== - dependencies: - "@babel/highlight" "^7.10.4" - -"@babel/code-frame@7.10.4": - version "7.10.4" - resolved "https://registry.npmmirror.com/@babel/code-frame/-/code-frame-7.10.4.tgz" - integrity sha512-vG6SvB6oYEhvgisZNFRmRCUkLz11c7rp+tbNTynGqc6mS1d5ATd/sGyV6W0KZZnXRKMTzZDRgQT3Ou9jhpAfUg== - dependencies: - "@babel/highlight" "^7.10.4" - "@babel/compat-data@^7.22.6", "@babel/compat-data@^7.27.2": version "7.27.2" resolved "https://registry.npmmirror.com/@babel/compat-data/-/compat-data-7.27.2.tgz" @@ -1385,22 +1378,6 @@ resolve-from "^5.0.0" semver "^7.6.0" -"@expo/image-utils@^0.6.5": - version "0.6.5" - resolved "https://registry.npmmirror.com/@expo/image-utils/-/image-utils-0.6.5.tgz" - integrity sha512-RsS/1CwJYzccvlprYktD42KjyfWZECH6PPIEowvoSmXfGLfdViwcUEI4RvBfKX5Jli6P67H+6YmHvPTbGOboew== - dependencies: - "@expo/spawn-async" "^1.7.2" - chalk "^4.0.0" - fs-extra "9.0.0" - getenv "^1.0.0" - jimp-compact "0.16.1" - parse-png "^2.1.0" - resolve-from "^5.0.0" - semver "^7.6.0" - temp-dir "~2.0.0" - unique-string "~2.0.0" - "@expo/image-utils@0.3.23": version "0.3.23" resolved "https://registry.npmmirror.com/@expo/image-utils/-/image-utils-0.3.23.tgz" @@ -1418,6 +1395,22 @@ semver "7.3.2" tempy "0.3.0" +"@expo/image-utils@^0.6.5": + version "0.6.5" + resolved "https://registry.npmmirror.com/@expo/image-utils/-/image-utils-0.6.5.tgz" + integrity sha512-RsS/1CwJYzccvlprYktD42KjyfWZECH6PPIEowvoSmXfGLfdViwcUEI4RvBfKX5Jli6P67H+6YmHvPTbGOboew== + dependencies: + "@expo/spawn-async" "^1.7.2" + chalk "^4.0.0" + fs-extra "9.0.0" + getenv "^1.0.0" + jimp-compact "0.16.1" + parse-png "^2.1.0" + resolve-from "^5.0.0" + semver "^7.6.0" + temp-dir "~2.0.0" + unique-string "~2.0.0" + "@expo/json-file@^9.0.2", "@expo/json-file@^9.1.4", "@expo/json-file@~9.1.4": version "9.1.4" resolved "https://registry.npmmirror.com/@expo/json-file/-/json-file-9.1.4.tgz" @@ -1435,7 +1428,7 @@ json5 "^2.2.3" write-file-atomic "^2.3.0" -"@expo/metro-config@~0.19.12", "@expo/metro-config@0.19.12": +"@expo/metro-config@0.19.12", "@expo/metro-config@~0.19.12": version "0.19.12" resolved "https://registry.npmmirror.com/@expo/metro-config/-/metro-config-0.19.12.tgz" integrity sha512-fhT3x1ikQWHpZgw7VrEghBdscFPz1laRYa8WcVRB18nTTqorF6S8qPYslkJu1faEziHZS7c2uyDzTYnrg/CKbg== @@ -1544,13 +1537,6 @@ resolved "https://registry.npmmirror.com/@expo/sdk-runtime-versions/-/sdk-runtime-versions-1.0.0.tgz" integrity sha512-Doz2bfiPndXYFPMRwPyGa1k5QaKDVpY806UJj570epIiMzWaYyCtobasyfC++qfIXVb5Ocy7r3tP9d62hAQ7IQ== -"@expo/spawn-async@^1.7.2": - version "1.7.2" - resolved "https://registry.npmmirror.com/@expo/spawn-async/-/spawn-async-1.7.2.tgz" - integrity sha512-QdWi16+CHB9JYP7gma19OVVg0BFkvU8zNj9GjWorYI8Iv8FUxjOCcYRuAmX4s/h91e4e7BPsskc8cSrZYho9Ew== - dependencies: - cross-spawn "^7.0.3" - "@expo/spawn-async@1.5.0": version "1.5.0" resolved "https://registry.npmmirror.com/@expo/spawn-async/-/spawn-async-1.5.0.tgz" @@ -1558,6 +1544,13 @@ dependencies: cross-spawn "^6.0.5" +"@expo/spawn-async@^1.7.2": + version "1.7.2" + resolved "https://registry.npmmirror.com/@expo/spawn-async/-/spawn-async-1.7.2.tgz" + integrity sha512-QdWi16+CHB9JYP7gma19OVVg0BFkvU8zNj9GjWorYI8Iv8FUxjOCcYRuAmX4s/h91e4e7BPsskc8cSrZYho9Ew== + dependencies: + cross-spawn "^7.0.3" + "@expo/sudo-prompt@^9.3.1": version "9.3.2" resolved "https://registry.npmmirror.com/@expo/sudo-prompt/-/sudo-prompt-9.3.2.tgz" @@ -1872,7 +1865,7 @@ "@nodelib/fs.stat" "2.0.5" run-parallel "^1.1.9" -"@nodelib/fs.stat@^2.0.2", "@nodelib/fs.stat@2.0.5": +"@nodelib/fs.stat@2.0.5", "@nodelib/fs.stat@^2.0.2": version "2.0.5" resolved "https://registry.npmmirror.com/@nodelib/fs.stat/-/fs.stat-2.0.5.tgz" integrity sha512-RkhPPp2zrqDAQA/2jNhnztcPAlv64XdhIp7a7454A5ovI7Bukxgt7MX7udwAu3zg1DcpPU0rz3VV1SeaqvY4+A== @@ -1966,14 +1959,15 @@ semver "^7.3.5" "@npmcli/git@^6.0.0", "@npmcli/git@^6.0.1": - version "6.0.1" + version "6.0.3" + resolved "https://registry.npmmirror.com/@npmcli/git/-/git-6.0.3.tgz#966cbb228514372877de5244db285b199836f3aa" + integrity sha512-GUYESQlxZRAdhs3UhbB6pVRNUELQOHXwK9ruDkwmCv2aZ5y0SApQzUJCg02p3A7Ue2J5hxvlk1YI53c00NmRyQ== dependencies: "@npmcli/promise-spawn" "^8.0.0" ini "^5.0.0" lru-cache "^10.0.1" npm-pick-manifest "^10.0.0" proc-log "^5.0.0" - promise-inflight "^1.0.1" promise-retry "^2.0.1" semver "^7.3.5" which "^5.0.0" @@ -2018,15 +2012,17 @@ integrity sha512-+t5DZ6mO/QFh78PByMq1fGSAub/agLJZDRfJRMeOSNCt8s9YVlTjmGpIPwPhvXTGUIJk+WszlT0rQa1W33yzNA== "@npmcli/package-json@^6.0.0", "@npmcli/package-json@^6.0.1", "@npmcli/package-json@^6.1.0": - version "6.1.0" + version "6.2.0" + resolved "https://registry.npmmirror.com/@npmcli/package-json/-/package-json-6.2.0.tgz#7c7e61e466eefdf729cb87a34c3adc15d76e2f97" + integrity sha512-rCNLSB/JzNvot0SEyXqWZ7tX2B5dD2a1br2Dp0vSYVo5jh8Z0EZ7lS9TsZ1UtziddB1UfNUaMCc538/HztnJGA== dependencies: "@npmcli/git" "^6.0.0" glob "^10.2.2" hosted-git-info "^8.0.0" json-parse-even-better-errors "^4.0.0" - normalize-package-data "^7.0.0" proc-log "^5.0.0" semver "^7.5.3" + validate-npm-package-license "^3.0.4" "@npmcli/promise-spawn@^8.0.0", "@npmcli/promise-spawn@^8.0.2": version "8.0.2" @@ -2036,15 +2032,21 @@ which "^5.0.0" "@npmcli/query@^4.0.0": - version "4.0.0" + version "4.0.1" + resolved "https://registry.npmmirror.com/@npmcli/query/-/query-4.0.1.tgz#f8a538807f2d0059c0bee7f4a1f712b73ae47603" + integrity sha512-4OIPFb4weUUwkDXJf4Hh1inAn8neBGq3xsH4ZsAaN6FK3ldrFkH7jSpCc7N9xesi0Sp+EBXJ9eGMDrEww2Ztqw== dependencies: - postcss-selector-parser "^6.1.2" + postcss-selector-parser "^7.0.0" "@npmcli/redact@^3.0.0": - version "3.0.0" + version "3.2.2" + resolved "https://registry.npmmirror.com/@npmcli/redact/-/redact-3.2.2.tgz#4a6745e0ae269120ad223780ce374d6c59ae34cd" + integrity sha512-7VmYAmk4csGv08QzrDKScdzn11jHPFGyqJW39FyPgPuAp3zIaUmuCo1yxw9aGs+NEJuTGQ9Gwqpt93vtJubucg== "@npmcli/run-script@^9.0.0", "@npmcli/run-script@^9.0.1": - version "9.0.2" + version "9.1.0" + resolved "https://registry.npmmirror.com/@npmcli/run-script/-/run-script-9.1.0.tgz#6168c2be4703fe5ed31acb08a2151cb620ed30a4" + integrity sha512-aoNSbxtkePXUlbZB+anS1LqsJdctG5n3UVhfU47+CDdwMi6uNTBMF9gPcQRnqghQd2FGzcwwIFBruFMxjhBewg== dependencies: "@npmcli/node-gyp" "^4.0.0" "@npmcli/package-json" "^6.0.0" @@ -2389,11 +2391,6 @@ hermes-parser "0.23.1" nullthrows "^1.1.1" -"@react-native/normalize-colors@^0.74.1": - version "0.74.89" - resolved "https://registry.npmmirror.com/@react-native/normalize-colors/-/normalize-colors-0.74.89.tgz" - integrity sha512-qoMMXddVKVhZ8PA1AbUCk83trpd6N+1nF2A6k1i6LsQObyS92fELuk8kU/lQs6M7BsMHwqyLCpQJ1uFgNvIQXg== - "@react-native/normalize-colors@0.76.7": version "0.76.7" resolved "https://registry.npmmirror.com/@react-native/normalize-colors/-/normalize-colors-0.76.7.tgz" @@ -2404,6 +2401,11 @@ resolved "https://registry.npmmirror.com/@react-native/normalize-colors/-/normalize-colors-0.76.9.tgz" integrity sha512-TUdMG2JGk72M9d8DYbubdOlrzTYjw+YMe/xOnLU4viDgWRHsCbtRS9x0IAxRjs3amj/7zmK3Atm8jUPvdAc8qw== +"@react-native/normalize-colors@^0.74.1": + version "0.74.89" + resolved "https://registry.npmmirror.com/@react-native/normalize-colors/-/normalize-colors-0.74.89.tgz" + integrity sha512-qoMMXddVKVhZ8PA1AbUCk83trpd6N+1nF2A6k1i6LsQObyS92fELuk8kU/lQs6M7BsMHwqyLCpQJ1uFgNvIQXg== + "@react-native/virtualized-lists@0.76.7": version "0.76.7" resolved "https://registry.npmmirror.com/@react-native/virtualized-lists/-/virtualized-lists-0.76.7.tgz" @@ -2479,41 +2481,51 @@ component-type "^1.2.1" join-component "^1.1.0" -"@sigstore/bundle@^3.0.0": - version "3.0.0" +"@sigstore/bundle@^3.1.0": + version "3.1.0" + resolved "https://registry.npmmirror.com/@sigstore/bundle/-/bundle-3.1.0.tgz#74f8f3787148400ddd364be8a9a9212174c66646" + integrity sha512-Mm1E3/CmDDCz3nDhFKTuYdB47EdRFRQMOE/EAbiG1MJW77/w1b3P7Qx7JSrVJs8PfwOLOVcKQCHErIwCTyPbag== dependencies: - "@sigstore/protobuf-specs" "^0.3.2" + "@sigstore/protobuf-specs" "^0.4.0" "@sigstore/core@^2.0.0": version "2.0.0" resolved "https://registry.npmmirror.com/@sigstore/core/-/core-2.0.0.tgz" integrity sha512-nYxaSb/MtlSI+JWcwTHQxyNmWeWrUXJJ/G4liLrGG7+tS4vAz6LF3xRXqLH6wPIVUoZQel2Fs4ddLx4NCpiIYg== -"@sigstore/protobuf-specs@^0.3.2": - version "0.3.2" +"@sigstore/protobuf-specs@^0.4.0", "@sigstore/protobuf-specs@^0.4.1": + version "0.4.2" + resolved "https://registry.npmmirror.com/@sigstore/protobuf-specs/-/protobuf-specs-0.4.2.tgz#3bf49423ad50c681c5df8a3d6a47f441f8af512b" + integrity sha512-F2ye+n1INNhqT0MW+LfUEvTUPc/nS70vICJcxorKl7/gV9CO39+EDCw+qHNKEqvsDWk++yGVKCbzK1qLPvmC8g== -"@sigstore/sign@^3.0.0": - version "3.0.0" +"@sigstore/sign@^3.1.0": + version "3.1.0" + resolved "https://registry.npmmirror.com/@sigstore/sign/-/sign-3.1.0.tgz#5d098d4d2b59a279e9ac9b51c794104cda0c649e" + integrity sha512-knzjmaOHOov1Ur7N/z4B1oPqZ0QX5geUfhrVaqVlu+hl0EAoL4o+l0MSULINcD5GCWe3Z0+YJO8ues6vFlW0Yw== dependencies: - "@sigstore/bundle" "^3.0.0" + "@sigstore/bundle" "^3.1.0" "@sigstore/core" "^2.0.0" - "@sigstore/protobuf-specs" "^0.3.2" - make-fetch-happen "^14.0.1" + "@sigstore/protobuf-specs" "^0.4.0" + make-fetch-happen "^14.0.2" proc-log "^5.0.0" promise-retry "^2.0.1" -"@sigstore/tuf@^3.0.0": - version "3.0.0" +"@sigstore/tuf@^3.0.0", "@sigstore/tuf@^3.1.0": + version "3.1.1" + resolved "https://registry.npmmirror.com/@sigstore/tuf/-/tuf-3.1.1.tgz#b01b261288f646e0da57737782893e7d2695c52e" + integrity sha512-eFFvlcBIoGwVkkwmTi/vEQFSva3xs5Ot3WmBcjgjVdiaoelBLQaQ/ZBfhlG0MnG0cmTYScPpk7eDdGDWUcFUmg== dependencies: - "@sigstore/protobuf-specs" "^0.3.2" + "@sigstore/protobuf-specs" "^0.4.1" tuf-js "^3.0.1" -"@sigstore/verify@^2.0.0": - version "2.0.0" +"@sigstore/verify@^2.1.0": + version "2.1.1" + resolved "https://registry.npmmirror.com/@sigstore/verify/-/verify-2.1.1.tgz#f67730012cd474f595044c3717f32ac2a1e9d2bc" + integrity sha512-hVJD77oT67aowHxwT4+M6PGOp+E2LtLdTK3+FC0lBO9T7sYwItDMXZ7Z07IDCvR1M717a4axbIWckrW67KMP/w== dependencies: - "@sigstore/bundle" "^3.0.0" + "@sigstore/bundle" "^3.1.0" "@sigstore/core" "^2.0.0" - "@sigstore/protobuf-specs" "^0.3.2" + "@sigstore/protobuf-specs" "^0.4.1" "@sinclair/typebox@^0.27.8": version "0.27.8" @@ -3113,7 +3125,7 @@ "@urql/core" "^5.1.1" wonka "^6.3.2" -"@webassemblyjs/ast@^1.14.1", "@webassemblyjs/ast@1.14.1": +"@webassemblyjs/ast@1.14.1", "@webassemblyjs/ast@^1.14.1": version "1.14.1" resolved "https://registry.npmmirror.com/@webassemblyjs/ast/-/ast-1.14.1.tgz" integrity sha512-nuBEDgQfm1ccRp/8bCQrx1frohyufl4JlbMMZ4P1wpeOfDhF6FQkxZJ1b/e+PLwr6X1Nhw6OLme5usuBWYBvuQ== @@ -3214,7 +3226,7 @@ "@webassemblyjs/wasm-gen" "1.14.1" "@webassemblyjs/wasm-parser" "1.14.1" -"@webassemblyjs/wasm-parser@^1.14.1", "@webassemblyjs/wasm-parser@1.14.1": +"@webassemblyjs/wasm-parser@1.14.1", "@webassemblyjs/wasm-parser@^1.14.1": version "1.14.1" resolved "https://registry.npmmirror.com/@webassemblyjs/wasm-parser/-/wasm-parser-1.14.1.tgz" integrity sha512-JLBl+KZ0R5qB7mCnud/yyX08jWFw5MsoalJ1pQ4EdFlgj9VdXKGuENGsiCIjegI1W7p91rUlcB/LB5yRJKNTcQ== @@ -3259,11 +3271,10 @@ abab@^2.0.5, abab@^2.0.6: resolved "https://registry.npmmirror.com/abab/-/abab-2.0.6.tgz" integrity sha512-j2afSsaIENvHZN2B8GOpF566vZ5WVk5opAiMTvWgaQT8DkbOqsTfvNAvHoRGU2zzP8cPoqys+xHTRDWW8L+/BA== -abbrev@^2.0.0: - version "2.0.0" - abbrev@^3.0.0: - version "3.0.0" + version "3.0.1" + resolved "https://registry.npmmirror.com/abbrev/-/abbrev-3.0.1.tgz#8ac8b3b5024d31464fe2a5feeea9f4536bf44025" + integrity sha512-AO2ac6pjRB3SJmGJo+v5/aK6Omggp6fsLrs6wN9bd35ulu4cCwaAU9+7ZhXjeqHVkaHThLuzH0nZr0YpCDhygg== abort-controller@^3.0.0: version "3.0.0" @@ -3307,11 +3318,6 @@ acorn@^8.1.0, acorn@^8.11.0, acorn@^8.14.0, acorn@^8.8.1: resolved "https://registry.npmmirror.com/acorn/-/acorn-8.14.1.tgz" integrity sha512-OvQ/2pUDKmgfCg++xsTX1wGxfTaszcHVcTctW4UJB4hibJx2HXxxO5UmVgyjMa+ZDsiaf5wWLXYpRWMmBI0QHg== -agent-base@^7.0.2, agent-base@^7.1.0, agent-base@^7.1.1: - version "7.1.1" - dependencies: - debug "^4.3.4" - agent-base@6: version "6.0.2" resolved "https://registry.npmmirror.com/agent-base/-/agent-base-6.0.2.tgz" @@ -3319,6 +3325,11 @@ agent-base@6: dependencies: debug "4" +agent-base@^7.1.0, agent-base@^7.1.2: + version "7.1.3" + resolved "https://registry.npmmirror.com/agent-base/-/agent-base-7.1.3.tgz#29435eb821bc4194633a5b89e5bc4703bafc25a1" + integrity sha512-jRR5wdylq8CkOe6hei19GGZnxM6rBGwFl3Bg0YItGDimvjGtAvdZk4Pu6Cl4u4Igsws4a1fd1Vq3ezrhn4KmFw== + aggregate-error@^3.0.0: version "3.1.0" resolved "https://registry.npmmirror.com/aggregate-error/-/aggregate-error-3.1.0.tgz" @@ -3716,6 +3727,13 @@ babel-plugin-react-native-web@~0.19.13: resolved "https://registry.npmmirror.com/babel-plugin-react-native-web/-/babel-plugin-react-native-web-0.19.13.tgz" integrity sha512-4hHoto6xaN23LCyZgL9LJZc3olmAxd7b6jDzlZnKXAh4rRAbZRKNBJoOOdp46OBqgy+K0t0guTj5/mhA8inymQ== +babel-plugin-syntax-hermes-parser@0.25.1, babel-plugin-syntax-hermes-parser@^0.25.1: + version "0.25.1" + resolved "https://registry.npmmirror.com/babel-plugin-syntax-hermes-parser/-/babel-plugin-syntax-hermes-parser-0.25.1.tgz" + integrity sha512-IVNpGzboFLfXZUAwkLFcI/bnqVbwky0jP3eBno4HKtqvQJAHBLdgxiG6lQ4to0+Q/YCN3PO0od5NZwIKyY4REQ== + dependencies: + hermes-parser "0.25.1" + babel-plugin-syntax-hermes-parser@^0.23.1: version "0.23.1" resolved "https://registry.npmmirror.com/babel-plugin-syntax-hermes-parser/-/babel-plugin-syntax-hermes-parser-0.23.1.tgz" @@ -3723,13 +3741,6 @@ babel-plugin-syntax-hermes-parser@^0.23.1: dependencies: hermes-parser "0.23.1" -babel-plugin-syntax-hermes-parser@^0.25.1, babel-plugin-syntax-hermes-parser@0.25.1: - version "0.25.1" - resolved "https://registry.npmmirror.com/babel-plugin-syntax-hermes-parser/-/babel-plugin-syntax-hermes-parser-0.25.1.tgz" - integrity sha512-IVNpGzboFLfXZUAwkLFcI/bnqVbwky0jP3eBno4HKtqvQJAHBLdgxiG6lQ4to0+Q/YCN3PO0od5NZwIKyY4REQ== - dependencies: - hermes-parser "0.25.1" - babel-plugin-transform-flow-enums@^0.0.2: version "0.0.2" resolved "https://registry.npmmirror.com/babel-plugin-transform-flow-enums/-/babel-plugin-transform-flow-enums-0.0.2.tgz" @@ -3851,12 +3862,7 @@ bin-links@^5.0.0: read-cmd-shim "^5.0.0" write-file-atomic "^6.0.0" -binary-extensions@^2.0.0: - version "2.3.0" - resolved "https://registry.npmmirror.com/binary-extensions/-/binary-extensions-2.3.0.tgz" - integrity sha512-Ceh+7ox5qe7LJuLHoY0feh3pHuUDHAcRUeyL2VYghZwfpkNIy/+8Ocg0a3UuSoYzavmylwuLWQOf3hl0jjMMIw== - -binary-extensions@^2.3.0: +binary-extensions@^2.0.0, binary-extensions@^2.3.0: version "2.3.0" resolved "https://registry.npmmirror.com/binary-extensions/-/binary-extensions-2.3.0.tgz" integrity sha512-Ceh+7ox5qe7LJuLHoY0feh3pHuUDHAcRUeyL2VYghZwfpkNIy/+8Ocg0a3UuSoYzavmylwuLWQOf3hl0jjMMIw== @@ -3906,13 +3912,6 @@ bplist-creator@0.1.0: dependencies: stream-buffers "2.2.x" -bplist-parser@^0.3.1: - version "0.3.2" - resolved "https://registry.npmmirror.com/bplist-parser/-/bplist-parser-0.3.2.tgz" - integrity sha512-apC2+fspHGI3mMKj+dGevkGo/tCqVB8jMb6i+OX+E29p0Iposz07fABkRIfVUPNd5A5VbuOz1bZbnmkKLYF+wQ== - dependencies: - big-integer "1.6.x" - bplist-parser@0.3.1: version "0.3.1" resolved "https://registry.npmmirror.com/bplist-parser/-/bplist-parser-0.3.1.tgz" @@ -3920,6 +3919,13 @@ bplist-parser@0.3.1: dependencies: big-integer "1.6.x" +bplist-parser@^0.3.1: + version "0.3.2" + resolved "https://registry.npmmirror.com/bplist-parser/-/bplist-parser-0.3.2.tgz" + integrity sha512-apC2+fspHGI3mMKj+dGevkGo/tCqVB8jMb6i+OX+E29p0Iposz07fABkRIfVUPNd5A5VbuOz1bZbnmkKLYF+wQ== + dependencies: + big-integer "1.6.x" + brace-expansion@^1.1.7: version "1.1.11" resolved "https://registry.npmmirror.com/brace-expansion/-/brace-expansion-1.1.11.tgz" @@ -4126,16 +4132,7 @@ caniuse-lite@^1.0.0, caniuse-lite@^1.0.30001716: resolved "https://registry.npmmirror.com/caniuse-lite/-/caniuse-lite-1.0.30001718.tgz" integrity sha512-AflseV1ahcSunK53NfEs9gFWgOEmzr0f+kaMFA4xiLZlr9Hzt7HxcSpIFcnNCUkz6R6dWKa54rUz3HUmI3nVcw== -chalk@^2.0.1: - version "2.4.2" - resolved "https://registry.npmmirror.com/chalk/-/chalk-2.4.2.tgz" - integrity sha512-Mti+f9lpJNcwF4tWV8/OrTTtF1gZi+f8FqlyAdouralcFWFQWF2+NgCHShjkCb+IFBLq9buZwE1xckQU4peSuQ== - dependencies: - ansi-styles "^3.2.1" - escape-string-regexp "^1.0.5" - supports-color "^5.3.0" - -chalk@^2.4.2: +chalk@^2.0.1, chalk@^2.4.2: version "2.4.2" resolved "https://registry.npmmirror.com/chalk/-/chalk-2.4.2.tgz" integrity sha512-Mti+f9lpJNcwF4tWV8/OrTTtF1gZi+f8FqlyAdouralcFWFQWF2+NgCHShjkCb+IFBLq9buZwE1xckQU4peSuQ== @@ -4161,7 +4158,9 @@ chalk@^4.0.0, chalk@^4.1.0, chalk@^4.1.2: supports-color "^7.1.0" chalk@^5.3.0: - version "5.3.0" + version "5.4.1" + resolved "https://registry.npmmirror.com/chalk/-/chalk-5.4.1.tgz#1b48bf0963ec158dce2aacf69c093ae2dd2092d8" + integrity sha512-zgVZuo2WcZgfUEmsn6eO3kINexW8RAE4maiQ8QNs8CtpPCSyMiYsULR3HQYkm3w8FIA3SberyMJMSldGsW+U3w== char-regex@^1.0.2: version "1.0.2" @@ -4245,21 +4244,20 @@ ci-info@^2.0.0: resolved "https://registry.npmmirror.com/ci-info/-/ci-info-2.0.0.tgz" integrity sha512-5tK7EtrZ0N+OLFMthtqOj4fI2Jeb88C4CAZPu25LDVUgXJ0A3Js4PMGqrn0JU1W0Mh1/Z8wZzYPxqUrXeBboCQ== -ci-info@^3.2.0: - version "3.9.0" - resolved "https://registry.npmmirror.com/ci-info/-/ci-info-3.9.0.tgz" - integrity sha512-NIxF55hv4nSqQswkAeiOi1r83xy8JldOFDTWiug55KBu9Jnblncd2U6ViHmYgHf01TPZS77NJBhBMKdWj9HQMQ== - -ci-info@^3.3.0: +ci-info@^3.2.0, ci-info@^3.3.0: version "3.9.0" resolved "https://registry.npmmirror.com/ci-info/-/ci-info-3.9.0.tgz" integrity sha512-NIxF55hv4nSqQswkAeiOi1r83xy8JldOFDTWiug55KBu9Jnblncd2U6ViHmYgHf01TPZS77NJBhBMKdWj9HQMQ== ci-info@^4.0.0, ci-info@^4.1.0: - version "4.1.0" + version "4.2.0" + resolved "https://registry.npmmirror.com/ci-info/-/ci-info-4.2.0.tgz#cbd21386152ebfe1d56f280a3b5feccbd96764c7" + integrity sha512-cYY9mypksY8NRqgDB1XD1RiJL338v/551niynFTGkZOO2LHuB2OmOYxDIe/ttN9AHwrqdum1360G3ald0W9kCg== cidr-regex@^4.1.1: - version "4.1.1" + version "4.1.3" + resolved "https://registry.npmmirror.com/cidr-regex/-/cidr-regex-4.1.3.tgz#df94af8ac16fc2e0791e2824693b957ff1ac4d3e" + integrity sha512-86M1y3ZeQvpZkZejQCcS+IaSWjlDUC+ORP0peScQ4uEUFCZ8bEQVz7NlJHqysoUb6w3zCjx4Mq/8/2RHhMwHYw== dependencies: ip-regex "^5.0.0" @@ -4358,16 +4356,16 @@ color-convert@^2.0.1: dependencies: color-name "~1.1.4" -color-name@^1.0.0, color-name@~1.1.4: - version "1.1.4" - resolved "https://registry.npmmirror.com/color-name/-/color-name-1.1.4.tgz" - integrity sha512-dOy+3AuW3a2wNbZHIuMZpTcgjGuLU/uBL/ubcZF9OXbDo8ff4O8yVp5Bf0efS8uEoYo5q4Fx7dY9OgQGXgAsQA== - color-name@1.1.3: version "1.1.3" resolved "https://registry.npmmirror.com/color-name/-/color-name-1.1.3.tgz" integrity sha512-72fSenhMw2HZMTVHeCA9KCmpEIbzWiQsjN+BHcBbS9vr1mtt+vJjPdksIBNUmKAW8TFUDPJK5SUU3QhE9NEXDw== +color-name@^1.0.0, color-name@~1.1.4: + version "1.1.4" + resolved "https://registry.npmmirror.com/color-name/-/color-name-1.1.4.tgz" + integrity sha512-dOy+3AuW3a2wNbZHIuMZpTcgjGuLU/uBL/ubcZF9OXbDo8ff4O8yVp5Bf0efS8uEoYo5q4Fx7dY9OgQGXgAsQA== + color-string@^1.6.0, color-string@^1.9.0: version "1.9.1" resolved "https://registry.npmmirror.com/color-string/-/color-string-1.9.1.tgz" @@ -4409,12 +4407,12 @@ combined-stream@^1.0.8: dependencies: delayed-stream "~1.0.0" -commander@^12.0.0: - version "12.1.0" - resolved "https://registry.npmmirror.com/commander/-/commander-12.1.0.tgz" - integrity sha512-Vw8qHK3bZM9y/P10u3Vib8o/DdkvA2OtPtZvD871QKjy74Wj1WSKFILMPRPSdUSx5RFK1arlJzEtA4PkFgnbuA== +commander@2.20.0: + version "2.20.0" + resolved "https://registry.npmmirror.com/commander/-/commander-2.20.0.tgz" + integrity sha512-7j2y+40w61zy6YC2iRNpUe/NwhNyoXrYpHMrSunaMG64nRnaf96zO/KMQR4OyN/UnE5KLyEBnKHd4aG3rskjpQ== -commander@^12.1.0: +commander@^12.0.0, commander@^12.1.0: version "12.1.0" resolved "https://registry.npmmirror.com/commander/-/commander-12.1.0.tgz" integrity sha512-Vw8qHK3bZM9y/P10u3Vib8o/DdkvA2OtPtZvD871QKjy74Wj1WSKFILMPRPSdUSx5RFK1arlJzEtA4PkFgnbuA== @@ -4444,11 +4442,6 @@ commander@^8.3.0: resolved "https://registry.npmmirror.com/commander/-/commander-8.3.0.tgz" integrity sha512-OkTL9umf+He2DZkUq8f8J9of7yL6RJKI24dVITBmNfZBmri9zYZQrKkuXiKhyfPSu8tUhnVBB1iKXevvnlR4Ww== -commander@2.20.0: - version "2.20.0" - resolved "https://registry.npmmirror.com/commander/-/commander-2.20.0.tgz" - integrity sha512-7j2y+40w61zy6YC2iRNpUe/NwhNyoXrYpHMrSunaMG64nRnaf96zO/KMQR4OyN/UnE5KLyEBnKHd4aG3rskjpQ== - common-ancestor-path@^1.0.1: version "1.0.1" resolved "https://registry.npmmirror.com/common-ancestor-path/-/common-ancestor-path-1.0.1.tgz" @@ -4582,7 +4575,7 @@ cross-fetch@^3.1.5: dependencies: node-fetch "^2.7.0" -cross-spawn@^6.0.0: +cross-spawn@^6.0.0, cross-spawn@^6.0.5: version "6.0.6" resolved "https://registry.npmmirror.com/cross-spawn/-/cross-spawn-6.0.6.tgz" integrity sha512-VqCUuhcd1iB+dsv8gxPttb5iZh/D0iubSP21g36KXdEuf6I5JiioesUVjpCdHV9MZRUfVFlvwtIUyPfxo5trtw== @@ -4593,24 +4586,6 @@ cross-spawn@^6.0.0: shebang-command "^1.2.0" which "^1.2.9" -cross-spawn@^6.0.5: - version "6.0.6" - resolved "https://registry.npmmirror.com/cross-spawn/-/cross-spawn-6.0.6.tgz" - integrity sha512-VqCUuhcd1iB+dsv8gxPttb5iZh/D0iubSP21g36KXdEuf6I5JiioesUVjpCdHV9MZRUfVFlvwtIUyPfxo5trtw== - dependencies: - nice-try "^1.0.4" - path-key "^2.0.1" - semver "^5.5.0" - shebang-command "^1.2.0" - which "^1.2.9" - -cross-spawn@^7.0.0: - version "7.0.6" - dependencies: - path-key "^3.1.0" - shebang-command "^2.0.0" - which "^2.0.1" - cross-spawn@^7.0.3, cross-spawn@^7.0.6: version "7.0.6" resolved "https://registry.npmmirror.com/cross-spawn/-/cross-spawn-7.0.6.tgz" @@ -4864,52 +4839,26 @@ data-view-byte-offset@^1.0.1: es-errors "^1.3.0" is-data-view "^1.0.1" -debug@^2.2.0: +debug@2.6.9, debug@^2.2.0, debug@^2.6.9: version "2.6.9" resolved "https://registry.npmmirror.com/debug/-/debug-2.6.9.tgz" integrity sha512-bC7ElrdJaJnPbAP+1EotYvqZsb3ecl5wi6Bfi6BJTUcNowp6cvspg0jXznRTKDjm/E7AdgFBVeAPVMNcKGsHMA== dependencies: ms "2.0.0" -debug@^2.6.9: - version "2.6.9" - resolved "https://registry.npmmirror.com/debug/-/debug-2.6.9.tgz" - integrity sha512-bC7ElrdJaJnPbAP+1EotYvqZsb3ecl5wi6Bfi6BJTUcNowp6cvspg0jXznRTKDjm/E7AdgFBVeAPVMNcKGsHMA== - dependencies: - ms "2.0.0" - -debug@^3.1.0: - version "3.2.7" - resolved "https://registry.npmmirror.com/debug/-/debug-3.2.7.tgz" - integrity sha512-CFjzYYAi4ThfiQvizrFQevTTXHtnCqWfe7x1AhgEscTz6ZbLbfoLRLPugTQyBth6f8ZERVUSyWHFD/7Wu4t1XQ== - dependencies: - ms "^2.1.1" - -debug@^3.2.7: - version "3.2.7" - resolved "https://registry.npmmirror.com/debug/-/debug-3.2.7.tgz" - integrity sha512-CFjzYYAi4ThfiQvizrFQevTTXHtnCqWfe7x1AhgEscTz6ZbLbfoLRLPugTQyBth6f8ZERVUSyWHFD/7Wu4t1XQ== - dependencies: - ms "^2.1.1" - -debug@^4.1.0, debug@^4.1.1, debug@^4.3.1, debug@^4.3.2, debug@^4.3.4, debug@^4.3.5, debug@4: +debug@4, debug@^4.1.0, debug@^4.1.1, debug@^4.3.1, debug@^4.3.2, debug@^4.3.4, debug@^4.3.5, debug@^4.3.6: version "4.4.1" resolved "https://registry.npmmirror.com/debug/-/debug-4.4.1.tgz" integrity sha512-KcKCqiftBJcZr++7ykoDIEwSa3XWowTfNPo92BYxjXiyYEVrUQh2aLyhxBCwww+heortUFxEJYcRzosstTEBYQ== dependencies: ms "^2.1.3" -debug@^4.3.6: - version "4.3.7" - dependencies: - ms "^2.1.3" - -debug@2.6.9: - version "2.6.9" - resolved "https://registry.npmmirror.com/debug/-/debug-2.6.9.tgz" - integrity sha512-bC7ElrdJaJnPbAP+1EotYvqZsb3ecl5wi6Bfi6BJTUcNowp6cvspg0jXznRTKDjm/E7AdgFBVeAPVMNcKGsHMA== +debug@^3.1.0, debug@^3.2.7: + version "3.2.7" + resolved "https://registry.npmmirror.com/debug/-/debug-3.2.7.tgz" + integrity sha512-CFjzYYAi4ThfiQvizrFQevTTXHtnCqWfe7x1AhgEscTz6ZbLbfoLRLPugTQyBth6f8ZERVUSyWHFD/7Wu4t1XQ== dependencies: - ms "2.0.0" + ms "^2.1.1" decimal.js@^10.4.2: version "10.5.0" @@ -5013,16 +4962,16 @@ delayed-stream@~1.0.0: resolved "https://registry.npmmirror.com/delayed-stream/-/delayed-stream-1.0.0.tgz" integrity sha512-ZySD7Nf91aLB0RxL4KGrKHBXl7Eds1DAmEdcoVawXnLD7SDhpNgtuII2aAkg7a7QS41jxPSZ17p4VdGnMHk3MQ== -depd@~1.1.2: - version "1.1.2" - resolved "https://registry.npmmirror.com/depd/-/depd-1.1.2.tgz" - integrity sha512-7emPTl6Dpo6JRXOXjLRxck+FlLRX5847cLKEn00PLAgc3g2hTZZgr+e4c2v6QpSmLeFP3n5yUo7ft6avBK/5jQ== - depd@2.0.0: version "2.0.0" resolved "https://registry.npmmirror.com/depd/-/depd-2.0.0.tgz" integrity sha512-g7nH6P6dyDioJogAAGprGpCtVImJhpPk/roCzdb3fIh61/s/nPsfR6onyMwkCAR/OlC3yBC0lESvUoQEAssIrw== +depd@~1.1.2: + version "1.1.2" + resolved "https://registry.npmmirror.com/depd/-/depd-1.1.2.tgz" + integrity sha512-7emPTl6Dpo6JRXOXjLRxck+FlLRX5847cLKEn00PLAgc3g2hTZZgr+e4c2v6QpSmLeFP3n5yUo7ft6avBK/5jQ== + destroy@1.2.0: version "1.2.0" resolved "https://registry.npmmirror.com/destroy/-/destroy-1.2.0.tgz" @@ -5249,12 +5198,7 @@ entities@^3.0.1: resolved "https://registry.npmmirror.com/entities/-/entities-3.0.1.tgz" integrity sha512-WiyBqoomrwMdFG1e0kqvASYfnlb0lp8M5o5Fw2OFq1hNZxxcNk8Ik0Xm7LxzBhuidnZB/UtBqVCgUz3kBOP51Q== -entities@^4.2.0: - version "4.5.0" - resolved "https://registry.npmmirror.com/entities/-/entities-4.5.0.tgz" - integrity sha512-V0hjH4dGPh9Ao5p0MoRY6BVqtwCjhz6vI5LT8AJ55H+4g9/4vbHx1I54fS0XuclLhDHArPQCiMjDxjaL8fPxhw== - -entities@^4.4.0: +entities@^4.2.0, entities@^4.4.0: version "4.5.0" resolved "https://registry.npmmirror.com/entities/-/entities-4.5.0.tgz" integrity sha512-V0hjH4dGPh9Ao5p0MoRY6BVqtwCjhz6vI5LT8AJ55H+4g9/4vbHx1I54fS0XuclLhDHArPQCiMjDxjaL8fPxhw== @@ -5997,7 +5941,7 @@ fast-glob@^3.2.5, fast-glob@^3.2.7, fast-glob@^3.2.9, fast-glob@^3.3.2: merge2 "^1.3.0" micromatch "^4.0.8" -fast-json-stable-stringify@^2.0.0, fast-json-stable-stringify@^2.1.0, fast-json-stable-stringify@2.x: +fast-json-stable-stringify@2.x, fast-json-stable-stringify@^2.0.0, fast-json-stable-stringify@^2.1.0: version "2.1.0" resolved "https://registry.npmmirror.com/fast-json-stable-stringify/-/fast-json-stable-stringify-2.1.0.tgz" integrity sha512-lhd/wF+Lk98HZoTCtlVraHtfh5XYijIjalXck7saUtuanSDyLMxnHhSXEDJqHxD7msR8D0uCmqlkwjCV8xvwHw== @@ -6063,6 +6007,11 @@ fbjs@^3.0.0, fbjs@^3.0.4: setimmediate "^1.0.5" ua-parser-js "^1.0.35" +fdir@^6.4.4: + version "6.4.4" + resolved "https://registry.npmmirror.com/fdir/-/fdir-6.4.4.tgz#1cfcf86f875a883e19a8fab53622cfe992e8d2f9" + integrity sha512-1NZP+GK4GfuAv3PqKvxQRDMjdSRZjnkq7KfhlNrCNNlZ0ygQFpebfrnfnq/W7fpUnAv9aGWmY1zKx7FYL3gwhg== + fetch-retry@^4.1.1: version "4.1.1" resolved "https://registry.npmmirror.com/fetch-retry/-/fetch-retry-4.1.1.tgz" @@ -6131,15 +6080,7 @@ find-up@^3.0.0: dependencies: locate-path "^3.0.0" -find-up@^4.0.0: - version "4.1.0" - resolved "https://registry.npmmirror.com/find-up/-/find-up-4.1.0.tgz" - integrity sha512-PpOwAdQ/YlXQ2vj8a3h8IipDuYRi3wceVQQGYWxNINccq40Anw7BlsEXCMbt1Zt+OLA6Fq9suIpIWD0OsnISlw== - dependencies: - locate-path "^5.0.0" - path-exists "^4.0.0" - -find-up@^4.1.0: +find-up@^4.0.0, find-up@^4.1.0: version "4.1.0" resolved "https://registry.npmmirror.com/find-up/-/find-up-4.1.0.tgz" integrity sha512-PpOwAdQ/YlXQ2vj8a3h8IipDuYRi3wceVQQGYWxNINccq40Anw7BlsEXCMbt1Zt+OLA6Fq9suIpIWD0OsnISlw== @@ -6232,6 +6173,16 @@ fresh@0.5.2: resolved "https://registry.npmmirror.com/fresh/-/fresh-0.5.2.tgz" integrity sha512-zJ2mQYM18rEFOudeV4GShTGIQ7RbzA7ozbU9I/XBpm7kqgMywgmylMwXHxZJmkVoYkna9d2pVXVXPdYTP9ej8Q== +fs-extra@9.0.0: + version "9.0.0" + resolved "https://registry.npmmirror.com/fs-extra/-/fs-extra-9.0.0.tgz" + integrity sha512-pmEYSk3vYsG/bF651KPUXZ+hvjpgWYw/Gc7W9NFUe3ZVLczKKWIij3IKpOrQcdw4TILtibFslZ0UmR8Vvzig4g== + dependencies: + at-least-node "^1.0.0" + graceful-fs "^4.2.0" + jsonfile "^6.0.1" + universalify "^1.0.0" + fs-extra@^11.2.0: version "11.3.0" resolved "https://registry.npmmirror.com/fs-extra/-/fs-extra-11.3.0.tgz" @@ -6260,16 +6211,6 @@ fs-extra@~8.1.0: jsonfile "^4.0.0" universalify "^0.1.0" -fs-extra@9.0.0: - version "9.0.0" - resolved "https://registry.npmmirror.com/fs-extra/-/fs-extra-9.0.0.tgz" - integrity sha512-pmEYSk3vYsG/bF651KPUXZ+hvjpgWYw/Gc7W9NFUe3ZVLczKKWIij3IKpOrQcdw4TILtibFslZ0UmR8Vvzig4g== - dependencies: - at-least-node "^1.0.0" - graceful-fs "^4.2.0" - jsonfile "^6.0.1" - universalify "^1.0.0" - fs-minipass@^2.0.0: version "2.1.0" resolved "https://registry.npmmirror.com/fs-minipass/-/fs-minipass-2.1.0.tgz" @@ -6417,7 +6358,7 @@ glob-to-regexp@^0.4.1: resolved "https://registry.npmmirror.com/glob-to-regexp/-/glob-to-regexp-0.4.1.tgz" integrity sha512-lkX1HJXwyMcprw/5YUZc2s7DrpAiHB21/V+E1rHUrVNokkvB6bqMzT0VfV6/86ZNabt1k14YOIaT7nDvOX3Iiw== -glob@^10.2.2, glob@^10.3.10, glob@^10.3.7, glob@^10.4.2, glob@^10.4.5: +glob@^10.2.2, glob@^10.3.10, glob@^10.4.2, glob@^10.4.5: version "10.4.5" resolved "https://registry.npmmirror.com/glob/-/glob-10.4.5.tgz" integrity sha512-7Bv8RF0k6xjo7d4A/PxYLbUCfb6c+Vpd2/mB2yRDlew7Jb5hEXiCD9ibfO7wpk8i4sevK6DFny9h7EYbM3/sHg== @@ -6429,43 +6370,7 @@ glob@^10.2.2, glob@^10.3.10, glob@^10.3.7, glob@^10.4.2, glob@^10.4.5: package-json-from-dist "^1.0.0" path-scurry "^1.11.1" -glob@^7.0.3, glob@^7.1.3: - version "7.2.3" - resolved "https://registry.npmmirror.com/glob/-/glob-7.2.3.tgz" - integrity sha512-nFR0zLpU2YCaRxwoCJvL6UvCH2JFyFVIvwTLsIf21AuHlMskA1hhTdk+LlYJtOlYt9v6dvszD2BGRqBL+iQK9Q== - dependencies: - fs.realpath "^1.0.0" - inflight "^1.0.4" - inherits "2" - minimatch "^3.1.1" - once "^1.3.0" - path-is-absolute "^1.0.0" - -glob@^7.1.1: - version "7.2.3" - resolved "https://registry.npmmirror.com/glob/-/glob-7.2.3.tgz" - integrity sha512-nFR0zLpU2YCaRxwoCJvL6UvCH2JFyFVIvwTLsIf21AuHlMskA1hhTdk+LlYJtOlYt9v6dvszD2BGRqBL+iQK9Q== - dependencies: - fs.realpath "^1.0.0" - inflight "^1.0.4" - inherits "2" - minimatch "^3.1.1" - once "^1.3.0" - path-is-absolute "^1.0.0" - -glob@^7.1.4: - version "7.2.3" - resolved "https://registry.npmmirror.com/glob/-/glob-7.2.3.tgz" - integrity sha512-nFR0zLpU2YCaRxwoCJvL6UvCH2JFyFVIvwTLsIf21AuHlMskA1hhTdk+LlYJtOlYt9v6dvszD2BGRqBL+iQK9Q== - dependencies: - fs.realpath "^1.0.0" - inflight "^1.0.4" - inherits "2" - minimatch "^3.1.1" - once "^1.3.0" - path-is-absolute "^1.0.0" - -glob@^7.2.0: +glob@^7.0.3, glob@^7.1.1, glob@^7.1.3, glob@^7.1.4, glob@^7.2.0: version "7.2.3" resolved "https://registry.npmmirror.com/glob/-/glob-7.2.3.tgz" integrity sha512-nFR0zLpU2YCaRxwoCJvL6UvCH2JFyFVIvwTLsIf21AuHlMskA1hhTdk+LlYJtOlYt9v6dvszD2BGRqBL+iQK9Q== @@ -6603,7 +6508,7 @@ hasown@^2.0.2: dependencies: function-bind "^1.1.2" -he@^1.2.0, he@1.2.0: +he@1.2.0, he@^1.2.0: version "1.2.0" resolved "https://registry.npmmirror.com/he/-/he-1.2.0.tgz" integrity sha512-F/1DnUGPopORZi0ni+CvrCgHQ5FyEAHRLSApuYWMmrbSwoN2Mn/7k+Gl38gJnR7yyDZk6WLXwiGod1JOWNDKGw== @@ -6647,7 +6552,9 @@ hosted-git-info@^7.0.0: lru-cache "^10.0.1" hosted-git-info@^8.0.0, hosted-git-info@^8.0.2: - version "8.0.2" + version "8.1.0" + resolved "https://registry.npmmirror.com/hosted-git-info/-/hosted-git-info-8.1.0.tgz#153cd84c03c6721481e16a5709eb74b1a0ab2ed0" + integrity sha512-Rw/B2DNQaPBICNXEm8balFz9a6WpZrkCGpcWFpy7nCj+NyhSdqXipmfvtmWt9xGfp0wZnBxB+iVpLmQMYt47Tw== dependencies: lru-cache "^10.0.1" @@ -6725,23 +6632,15 @@ htmlparser2@^7.1.2: entities "^3.0.1" http-cache-semantics@^4.1.1: - version "4.1.1" + version "4.2.0" + resolved "https://registry.npmmirror.com/http-cache-semantics/-/http-cache-semantics-4.2.0.tgz#205f4db64f8562b76a4ff9235aa5279839a09dd5" + integrity sha512-dTxcvPXqPvXBQpq5dUr6mEMJX4oIEFv6bwom3FDwKRDsuIjjJGANqhBuoAn9c1RQJIdAKav33ED65E2ys+87QQ== http-deceiver@^1.2.7: version "1.2.7" resolved "https://registry.npmmirror.com/http-deceiver/-/http-deceiver-1.2.7.tgz" integrity sha512-LmpOGxTfbpgtGVxJrj5k7asXHCgNZp5nLfp+hWc8QQRqtb7fUy6kRY3BO1h9ddF6yIPYUARgxGOwB42DnxIaNw== -http-errors@~1.6.2: - version "1.6.3" - resolved "https://registry.npmmirror.com/http-errors/-/http-errors-1.6.3.tgz" - integrity sha512-lks+lVC8dgGyh97jxvxeYTWQFvh4uw4yC12gVl63Cg30sjPX4wuGcdkICVXDAESr6OJGjqGA8Iz5mkeN6zlD7A== - dependencies: - depd "~1.1.2" - inherits "2.0.3" - setprototypeof "1.1.0" - statuses ">= 1.4.0 < 2" - http-errors@2.0.0: version "2.0.0" resolved "https://registry.npmmirror.com/http-errors/-/http-errors-2.0.0.tgz" @@ -6753,6 +6652,16 @@ http-errors@2.0.0: statuses "2.0.1" toidentifier "1.0.1" +http-errors@~1.6.2: + version "1.6.3" + resolved "https://registry.npmmirror.com/http-errors/-/http-errors-1.6.3.tgz" + integrity sha512-lks+lVC8dgGyh97jxvxeYTWQFvh4uw4yC12gVl63Cg30sjPX4wuGcdkICVXDAESr6OJGjqGA8Iz5mkeN6zlD7A== + dependencies: + depd "~1.1.2" + inherits "2.0.3" + setprototypeof "1.1.0" + statuses ">= 1.4.0 < 2" + http-parser-js@>=0.5.1: version "0.5.10" resolved "https://registry.npmmirror.com/http-parser-js/-/http-parser-js-0.5.10.tgz" @@ -6804,9 +6713,11 @@ https-proxy-agent@^5.0.1: debug "4" https-proxy-agent@^7.0.1: - version "7.0.5" + version "7.0.6" + resolved "https://registry.npmmirror.com/https-proxy-agent/-/https-proxy-agent-7.0.6.tgz#da8dfeac7da130b05c2ba4b59c9b6cd66611a6b9" + integrity sha512-vK9P5/iUfdl95AI+JVyUuIcVtd4ofvtrOr3HNtM2yxC9bnMbEdp3x01OhQNnjb8IJYi38VlTE3mBXwcfvywuSw== dependencies: - agent-base "^7.0.2" + agent-base "^7.1.2" debug "4" human-signals@^2.1.0: @@ -6826,27 +6737,20 @@ i18next@^24.2.3: dependencies: "@babel/runtime" "^7.26.10" -iconv-lite@^0.6.2: - version "0.6.3" - resolved "https://registry.npmmirror.com/iconv-lite/-/iconv-lite-0.6.3.tgz" - integrity sha512-4fCk79wshMdzMp2rH06qWrJE4iolqLhCUH+OiuIgU++RB0+94NlDL81atO7GX55uUKueo0txHNtvEyI6D7WdMw== +iconv-lite@0.4.24: + version "0.4.24" + resolved "https://registry.npmmirror.com/iconv-lite/-/iconv-lite-0.4.24.tgz" + integrity sha512-v3MXnZAcvnywkTUEZomIActle7RXXeedOR31wwl7VlyoXO4Qi9arvSenNQWne1TcRwhCL1HwLI21bEqdpj8/rA== dependencies: - safer-buffer ">= 2.1.2 < 3.0.0" + safer-buffer ">= 2.1.2 < 3" -iconv-lite@^0.6.3, iconv-lite@0.6.3: +iconv-lite@0.6.3, iconv-lite@^0.6.2, iconv-lite@^0.6.3: version "0.6.3" resolved "https://registry.npmmirror.com/iconv-lite/-/iconv-lite-0.6.3.tgz" integrity sha512-4fCk79wshMdzMp2rH06qWrJE4iolqLhCUH+OiuIgU++RB0+94NlDL81atO7GX55uUKueo0txHNtvEyI6D7WdMw== dependencies: safer-buffer ">= 2.1.2 < 3.0.0" -iconv-lite@0.4.24: - version "0.4.24" - resolved "https://registry.npmmirror.com/iconv-lite/-/iconv-lite-0.4.24.tgz" - integrity sha512-v3MXnZAcvnywkTUEZomIActle7RXXeedOR31wwl7VlyoXO4Qi9arvSenNQWne1TcRwhCL1HwLI21bEqdpj8/rA== - dependencies: - safer-buffer ">= 2.1.2 < 3" - icss-utils@^5.0.0, icss-utils@^5.1.0: version "5.1.0" resolved "https://registry.npmmirror.com/icss-utils/-/icss-utils-5.1.0.tgz" @@ -6915,7 +6819,7 @@ inflight@^1.0.4: once "^1.3.0" wrappy "1" -inherits@^2.0.1, inherits@^2.0.3, inherits@~2.0.3, inherits@2, inherits@2.0.4: +inherits@2, inherits@2.0.4, inherits@^2.0.1, inherits@^2.0.3, inherits@~2.0.3: version "2.0.4" resolved "https://registry.npmmirror.com/inherits/-/inherits-2.0.4.tgz" integrity sha512-k/vGaX4/Yla3WzyMCvTQOXYeIHvqOKtnqBduzTHpzpQZzAskKMhZ2K+EnBiSM9zGSoIFeMpXKxa4dYeZIQqewQ== @@ -6978,7 +6882,7 @@ internal-slot@^1.1.0: hasown "^2.0.2" side-channel "^1.1.0" -invariant@^2.2.4, invariant@2.2.4: +invariant@2.2.4, invariant@^2.2.4: version "2.2.4" resolved "https://registry.npmmirror.com/invariant/-/invariant-2.2.4.tgz" integrity sha512-phJfQVBuaJM5raOpJjSfkiD6BpbCE4Ns//LaXl6wGYtUBY83nWS6Rf9tXm2e8VaK60JEjYldbPif/A2B1C2gNA== @@ -7003,7 +6907,7 @@ ip-regex@^5.0.0: resolved "https://registry.npmmirror.com/ip-regex/-/ip-regex-5.0.0.tgz" integrity sha512-fOCG6lhoKKakwv+C6KdsOnGvgXnmgfmp0myi3bcNwj3qfwPAxRKWEuFhvEFF7ceYIz6+1jRZ+yguLFAmUNPEfw== -ipaddr.js@^1.9.0, ipaddr.js@1.9.1: +ipaddr.js@1.9.1, ipaddr.js@^1.9.0: version "1.9.1" resolved "https://registry.npmmirror.com/ipaddr.js/-/ipaddr.js-1.9.1.tgz" integrity sha512-0KI/607xoxSToH7GjN1FfSbLoU0+btTicjsQSWQlh/hZykN8KpmMf7uYwPW3R+akZ6R/w18ZlXSHBYXiYUPO3g== @@ -7076,7 +6980,9 @@ is-callable@^1.2.7: integrity sha512-1BC0BVFhS/p0qtw6enp8e+8OD0UrK0oFLztSjNzhcKA3WDuJxxAPXzPuPtKkjEY9UUoEWlX/8fgKeu2S8i9JTA== is-cidr@^5.1.0: - version "5.1.0" + version "5.1.1" + resolved "https://registry.npmmirror.com/is-cidr/-/is-cidr-5.1.1.tgz#83ec462922c2b9209bc64794c4e3b2a890d23994" + integrity sha512-AwzRMjtJNTPOgm7xuYZ71715z99t+4yRnSnSzgK5err5+heYi4zMuvmpUadaJ28+KCXCQo8CjUrKQZRWSPmqTQ== dependencies: cidr-regex "^4.1.1" @@ -7569,16 +7475,7 @@ jest-watcher@^29.0.0: jest-util "^29.7.0" string-length "^4.0.1" -jest-worker@^27.0.2: - version "27.5.1" - resolved "https://registry.npmmirror.com/jest-worker/-/jest-worker-27.5.1.tgz" - integrity sha512-7vuh85V5cdDofPyxn58nrPjBktZo0u9x1g8WtjQol+jZDaE+fhN+cIvTj11GndBnMnyfrUOG1sZQxCdjKh+DKg== - dependencies: - "@types/node" "*" - merge-stream "^2.0.0" - supports-color "^8.0.0" - -jest-worker@^27.4.5: +jest-worker@^27.0.2, jest-worker@^27.4.5: version "27.5.1" resolved "https://registry.npmmirror.com/jest-worker/-/jest-worker-27.5.1.tgz" integrity sha512-7vuh85V5cdDofPyxn58nrPjBktZo0u9x1g8WtjQol+jZDaE+fhN+cIvTj11GndBnMnyfrUOG1sZQxCdjKh+DKg== @@ -7714,12 +7611,7 @@ json-parse-better-errors@^1.0.1: resolved "https://registry.npmmirror.com/json-parse-better-errors/-/json-parse-better-errors-1.0.2.tgz" integrity sha512-mrqyZKfX5EhL7hvqcV6WG1yYjnjeuYDzDhhcAAUrq8Po85NBQBJP+ZDUT75qZQ98IkUoBqdkExkukOU7Ts2wrw== -json-parse-even-better-errors@^2.3.0: - version "2.3.1" - resolved "https://registry.npmmirror.com/json-parse-even-better-errors/-/json-parse-even-better-errors-2.3.1.tgz" - integrity sha512-xyFwyhro/JEof6Ghe2iz2NcXoj2sloNsWr/XsERDK/oiPCfaNhl5ONfp+jQdAZRQQ0IJWNzH9zIZF7li91kh2w== - -json-parse-even-better-errors@^2.3.1: +json-parse-even-better-errors@^2.3.0, json-parse-even-better-errors@^2.3.1: version "2.3.1" resolved "https://registry.npmmirror.com/json-parse-even-better-errors/-/json-parse-even-better-errors-2.3.1.tgz" integrity sha512-xyFwyhro/JEof6Ghe2iz2NcXoj2sloNsWr/XsERDK/oiPCfaNhl5ONfp+jQdAZRQQ0IJWNzH9zIZF7li91kh2w== @@ -7939,11 +7831,56 @@ lighthouse-logger@^1.0.0: debug "^2.6.9" marky "^1.2.2" +lightningcss-darwin-arm64@1.27.0: + version "1.27.0" + resolved "https://registry.npmmirror.com/lightningcss-darwin-arm64/-/lightningcss-darwin-arm64-1.27.0.tgz#565bd610533941cba648a70e105987578d82f996" + integrity sha512-Gl/lqIXY+d+ySmMbgDf0pgaWSqrWYxVHoc88q+Vhf2YNzZ8DwoRzGt5NZDVqqIW5ScpSnmmjcgXP87Dn2ylSSQ== + lightningcss-darwin-x64@1.27.0: version "1.27.0" resolved "https://registry.npmmirror.com/lightningcss-darwin-x64/-/lightningcss-darwin-x64-1.27.0.tgz" integrity sha512-0+mZa54IlcNAoQS9E0+niovhyjjQWEMrwW0p2sSdLRhLDc8LMQ/b67z7+B5q4VmjYCMSfnFi3djAAQFIDuj/Tg== +lightningcss-freebsd-x64@1.27.0: + version "1.27.0" + resolved "https://registry.npmmirror.com/lightningcss-freebsd-x64/-/lightningcss-freebsd-x64-1.27.0.tgz#a7c3c4d6ee18dffeb8fa69f14f8f9267f7dc0c34" + integrity sha512-n1sEf85fePoU2aDN2PzYjoI8gbBqnmLGEhKq7q0DKLj0UTVmOTwDC7PtLcy/zFxzASTSBlVQYJUhwIStQMIpRA== + +lightningcss-linux-arm-gnueabihf@1.27.0: + version "1.27.0" + resolved "https://registry.npmmirror.com/lightningcss-linux-arm-gnueabihf/-/lightningcss-linux-arm-gnueabihf-1.27.0.tgz#c7c16432a571ec877bf734fe500e4a43d48c2814" + integrity sha512-MUMRmtdRkOkd5z3h986HOuNBD1c2lq2BSQA1Jg88d9I7bmPGx08bwGcnB75dvr17CwxjxD6XPi3Qh8ArmKFqCA== + +lightningcss-linux-arm64-gnu@1.27.0: + version "1.27.0" + resolved "https://registry.npmmirror.com/lightningcss-linux-arm64-gnu/-/lightningcss-linux-arm64-gnu-1.27.0.tgz#cfd9e18df1cd65131da286ddacfa3aee6862a752" + integrity sha512-cPsxo1QEWq2sfKkSq2Bq5feQDHdUEwgtA9KaB27J5AX22+l4l0ptgjMZZtYtUnteBofjee+0oW1wQ1guv04a7A== + +lightningcss-linux-arm64-musl@1.27.0: + version "1.27.0" + resolved "https://registry.npmmirror.com/lightningcss-linux-arm64-musl/-/lightningcss-linux-arm64-musl-1.27.0.tgz#6682ff6b9165acef9a6796bd9127a8e1247bb0ed" + integrity sha512-rCGBm2ax7kQ9pBSeITfCW9XSVF69VX+fm5DIpvDZQl4NnQoMQyRwhZQm9pd59m8leZ1IesRqWk2v/DntMo26lg== + +lightningcss-linux-x64-gnu@1.27.0: + version "1.27.0" + resolved "https://registry.npmmirror.com/lightningcss-linux-x64-gnu/-/lightningcss-linux-x64-gnu-1.27.0.tgz#714221212ad184ddfe974bbb7dbe9300dfde4bc0" + integrity sha512-Dk/jovSI7qqhJDiUibvaikNKI2x6kWPN79AQiD/E/KeQWMjdGe9kw51RAgoWFDi0coP4jinaH14Nrt/J8z3U4A== + +lightningcss-linux-x64-musl@1.27.0: + version "1.27.0" + resolved "https://registry.npmmirror.com/lightningcss-linux-x64-musl/-/lightningcss-linux-x64-musl-1.27.0.tgz#247958daf622a030a6dc2285afa16b7184bdf21e" + integrity sha512-QKjTxXm8A9s6v9Tg3Fk0gscCQA1t/HMoF7Woy1u68wCk5kS4fR+q3vXa1p3++REW784cRAtkYKrPy6JKibrEZA== + +lightningcss-win32-arm64-msvc@1.27.0: + version "1.27.0" + resolved "https://registry.npmmirror.com/lightningcss-win32-arm64-msvc/-/lightningcss-win32-arm64-msvc-1.27.0.tgz#64cfe473c264ef5dc275a4d57a516d77fcac6bc9" + integrity sha512-/wXegPS1hnhkeG4OXQKEMQeJd48RDC3qdh+OA8pCuOPCyvnm/yEayrJdJVqzBsqpy1aJklRCVxscpFur80o6iQ== + +lightningcss-win32-x64-msvc@1.27.0: + version "1.27.0" + resolved "https://registry.npmmirror.com/lightningcss-win32-x64-msvc/-/lightningcss-win32-x64-msvc-1.27.0.tgz#237d0dc87d9cdc9cf82536bcbc07426fa9f3f422" + integrity sha512-/OJLj94Zm/waZShL8nB5jsNj3CfNATLCTyFxZyouilfTmSoLDX7VlVAmhPHoZWVFp4vdmoiEbPEYC8HID3m6yw== + lightningcss@~1.27.0: version "1.27.0" resolved "https://registry.npmmirror.com/lightningcss/-/lightningcss-1.27.0.tgz" @@ -8013,7 +7950,7 @@ lodash.debounce@^4.0.8: resolved "https://registry.npmmirror.com/lodash.debounce/-/lodash.debounce-4.0.8.tgz" integrity sha512-FT1yDzDYEoYWhnSGnpE/4Kj1fLZkDFyqRb7fNt6FdYOSxlUWAtp42Eh6Wb0rGIv/m9Bgo7x4GhQbm5Ys4SG5ow== -lodash.memoize@^4.1.2, lodash.memoize@4.x: +lodash.memoize@4.x, lodash.memoize@^4.1.2: version "4.1.2" resolved "https://registry.npmmirror.com/lodash.memoize/-/lodash.memoize-4.1.2.tgz" integrity sha512-t7j+NzmgnQzTAYXcsHYLgimltOV1MXHtlOWf6GjL9Kj8GK5FInw5JotxvbOs+IvV1/Dzo04/fCGfLVs7aXb4Ag== @@ -8081,14 +8018,7 @@ make-dir@^2.0.0, make-dir@^2.1.0: pify "^4.0.1" semver "^5.6.0" -make-dir@^3.0.2: - version "3.1.0" - resolved "https://registry.npmmirror.com/make-dir/-/make-dir-3.1.0.tgz" - integrity sha512-g3FeP20LNwhALb/6Cz6Dd4F2ngze0jz7tbzrD2wAV+o9FeNHe4rL+yK2md0J/fiSf1sa1ADhXqi5+oVwOM/eGw== - dependencies: - semver "^6.0.0" - -make-dir@^3.1.0: +make-dir@^3.0.2, make-dir@^3.1.0: version "3.1.0" resolved "https://registry.npmmirror.com/make-dir/-/make-dir-3.1.0.tgz" integrity sha512-g3FeP20LNwhALb/6Cz6Dd4F2ngze0jz7tbzrD2wAV+o9FeNHe4rL+yK2md0J/fiSf1sa1ADhXqi5+oVwOM/eGw== @@ -8100,7 +8030,7 @@ make-error@1.x: resolved "https://registry.npmmirror.com/make-error/-/make-error-1.3.6.tgz" integrity sha512-s8UhlNe7vPKomQhC1qFelMokr/Sc3AgNbso3n74mVPA5LTZwkB9NlXf4XPamLxJE8h0gh73rM94xvwRT2CVInw== -make-fetch-happen@^14.0.0, make-fetch-happen@^14.0.1, make-fetch-happen@^14.0.3: +make-fetch-happen@^14.0.0, make-fetch-happen@^14.0.1, make-fetch-happen@^14.0.2, make-fetch-happen@^14.0.3: version "14.0.3" resolved "https://registry.npmmirror.com/make-fetch-happen/-/make-fetch-happen-14.0.3.tgz" integrity sha512-QMjGbFTP0blj97EeidG5hk/QhKQ3T4ICckQGLgz38QF7Vgbk6e6FTARN8KhKxyBbWn8R0HU+bnw8aSoFPD4qtQ== @@ -8240,7 +8170,7 @@ metro-cache@0.81.5: flow-enums-runtime "^0.0.6" metro-core "0.81.5" -metro-config@^0.81.0, metro-config@0.81.5: +metro-config@0.81.5, metro-config@^0.81.0: version "0.81.5" resolved "https://registry.npmmirror.com/metro-config/-/metro-config-0.81.5.tgz" integrity sha512-oDRAzUvj6RNRxratFdcVAqtAsg+T3qcKrGdqGZFUdwzlFJdHGR9Z413sW583uD2ynsuOjA2QB6US8FdwiBdNKg== @@ -8254,7 +8184,7 @@ metro-config@^0.81.0, metro-config@0.81.5: metro-core "0.81.5" metro-runtime "0.81.5" -metro-core@^0.81.0, metro-core@0.81.5: +metro-core@0.81.5, metro-core@^0.81.0: version "0.81.5" resolved "https://registry.npmmirror.com/metro-core/-/metro-core-0.81.5.tgz" integrity sha512-+2R0c8ByfV2N7CH5wpdIajCWa8escUFd8TukfoXyBq/vb6yTCsznoA25FhNXJ+MC/cz1L447Zj3vdUfCXIZBwg== @@ -8293,7 +8223,7 @@ metro-resolver@0.81.5: dependencies: flow-enums-runtime "^0.0.6" -metro-runtime@^0.81.0, metro-runtime@0.81.5: +metro-runtime@0.81.5, metro-runtime@^0.81.0: version "0.81.5" resolved "https://registry.npmmirror.com/metro-runtime/-/metro-runtime-0.81.5.tgz" integrity sha512-M/Gf71ictUKP9+77dV/y8XlAWg7xl76uhU7ggYFUwEdOHHWPG6gLBr1iiK0BmTjPFH8yRo/xyqMli4s3oGorPQ== @@ -8301,7 +8231,7 @@ metro-runtime@^0.81.0, metro-runtime@0.81.5: "@babel/runtime" "^7.25.0" flow-enums-runtime "^0.0.6" -metro-source-map@^0.81.0, metro-source-map@0.81.5: +metro-source-map@0.81.5, metro-source-map@^0.81.0: version "0.81.5" resolved "https://registry.npmmirror.com/metro-source-map/-/metro-source-map-0.81.5.tgz" integrity sha512-Jz+CjvCKLNbJZYJTBeN3Kq9kIJf6b61MoLBdaOQZJ5Ajhw6Pf95Nn21XwA8BwfUYgajsi6IXsp/dTZsYJbN00Q== @@ -8360,7 +8290,7 @@ metro-transform-worker@0.81.5: metro-transform-plugins "0.81.5" nullthrows "^1.1.1" -metro@^0.81.0, metro@0.81.5: +metro@0.81.5, metro@^0.81.0: version "0.81.5" resolved "https://registry.npmmirror.com/metro/-/metro-0.81.5.tgz" integrity sha512-YpFF0DDDpDVygeca2mAn7K0+us+XKmiGk4rIYMz/CRdjFoCGqAei/IQSpV0UrGfQbToSugpMQeQJveaWSH88Hg== @@ -8414,16 +8344,16 @@ micromatch@^4.0.2, micromatch@^4.0.4, micromatch@^4.0.8: braces "^3.0.3" picomatch "^2.3.1" -"mime-db@>= 1.43.0 < 2": - version "1.54.0" - resolved "https://registry.npmmirror.com/mime-db/-/mime-db-1.54.0.tgz" - integrity sha512-aU5EJuIN2WDemCcAp2vFBfp/m4EAhWJnUNSSw0ixs7/kXbd6Pg64EmwJkNdFhB8aWt1sH2CTXrLxo/iAGV3oPQ== - mime-db@1.52.0: version "1.52.0" resolved "https://registry.npmmirror.com/mime-db/-/mime-db-1.52.0.tgz" integrity sha512-sPU4uV7dYlvtWJxwwxHD0PuihVNiE7TyAbQ5SWxDCB9mUYvOgroQOwYQQOKPJ8CIbE+1ETVlOoK1UC2nU3gYvg== +"mime-db@>= 1.43.0 < 2": + version "1.54.0" + resolved "https://registry.npmmirror.com/mime-db/-/mime-db-1.54.0.tgz" + integrity sha512-aU5EJuIN2WDemCcAp2vFBfp/m4EAhWJnUNSSw0ixs7/kXbd6Pg64EmwJkNdFhB8aWt1sH2CTXrLxo/iAGV3oPQ== + mime-types@^2.1.12, mime-types@^2.1.27, mime-types@^2.1.31, mime-types@^2.1.35, mime-types@~2.1.17, mime-types@~2.1.24, mime-types@~2.1.34: version "2.1.35" resolved "https://registry.npmmirror.com/mime-types/-/mime-types-2.1.35.tgz" @@ -8431,16 +8361,16 @@ mime-types@^2.1.12, mime-types@^2.1.27, mime-types@^2.1.31, mime-types@^2.1.35, dependencies: mime-db "1.52.0" -mime@^2.4.4: - version "2.6.0" - resolved "https://registry.npmmirror.com/mime/-/mime-2.6.0.tgz" - integrity sha512-USPkMeET31rOMiarsBNIHZKLGgvKc/LrjofAnBlOttf5ajRvqiRA8QsenbcooctK6d6Ts6aqZXBA+XbkKthiQg== - mime@1.6.0: version "1.6.0" resolved "https://registry.npmmirror.com/mime/-/mime-1.6.0.tgz" integrity sha512-x0Vn8spI+wuJ1O6S7gnbaQg8Pxh4NNHb7KSINmEWKiPE4RKOplvijn+NkmYmmRgP68mc70j2EbeTFRsrswaQeg== +mime@^2.4.4: + version "2.6.0" + resolved "https://registry.npmmirror.com/mime/-/mime-2.6.0.tgz" + integrity sha512-USPkMeET31rOMiarsBNIHZKLGgvKc/LrjofAnBlOttf5ajRvqiRA8QsenbcooctK6d6Ts6aqZXBA+XbkKthiQg== + mimic-fn@^1.0.0: version "1.2.0" resolved "https://registry.npmmirror.com/mimic-fn/-/mimic-fn-1.2.0.tgz" @@ -8496,7 +8426,9 @@ minipass-collect@^2.0.1: minipass "^7.0.3" minipass-fetch@^4.0.0: - version "4.0.0" + version "4.0.1" + resolved "https://registry.npmmirror.com/minipass-fetch/-/minipass-fetch-4.0.1.tgz#f2d717d5a418ad0b1a7274f9b913515d3e78f9e5" + integrity sha512-j7U11C5HXigVuutxebFadoYBbd7VSdZWggSe64NVdvWNBqGAiXPL2QVCehjmw7lY1oF9gOllYbORh+hiNgfPgQ== dependencies: minipass "^7.0.3" minipass-sized "^1.0.3" @@ -8532,16 +8464,16 @@ minipass@^3.0.0: dependencies: yallist "^4.0.0" -"minipass@^5.0.0 || ^6.0.2 || ^7.0.0", minipass@^7.0.2, minipass@^7.0.3, minipass@^7.0.4, minipass@^7.1.1, minipass@^7.1.2: - version "7.1.2" - resolved "https://registry.npmmirror.com/minipass/-/minipass-7.1.2.tgz" - integrity sha512-qOOzS1cBTWYF4BH8fVePDBOO9iptMnGUEZwNc/cMWnTV2nVLZ7VoNWEPHkYczZA0pdoA7dl6e7FL659nX9S2aw== - minipass@^5.0.0: version "5.0.0" resolved "https://registry.npmmirror.com/minipass/-/minipass-5.0.0.tgz" integrity sha512-3FnjYuehv9k6ovOEbyOswadCDPX1piCfhV8ncmYtHOjuPwylVWsghTLo7rabjC3Rx5xD4HDx8Wm1xnMF7S5qFQ== +"minipass@^5.0.0 || ^6.0.2 || ^7.0.0", minipass@^7.0.2, minipass@^7.0.3, minipass@^7.0.4, minipass@^7.1.1, minipass@^7.1.2: + version "7.1.2" + resolved "https://registry.npmmirror.com/minipass/-/minipass-7.1.2.tgz" + integrity sha512-qOOzS1cBTWYF4BH8fVePDBOO9iptMnGUEZwNc/cMWnTV2nVLZ7VoNWEPHkYczZA0pdoA7dl6e7FL659nX9S2aw== + minizlib@^2.1.1: version "2.1.2" resolved "https://registry.npmmirror.com/minizlib/-/minizlib-2.1.2.tgz" @@ -8551,10 +8483,11 @@ minizlib@^2.1.1: yallist "^4.0.0" minizlib@^3.0.1: - version "3.0.1" + version "3.0.2" + resolved "https://registry.npmmirror.com/minizlib/-/minizlib-3.0.2.tgz#f33d638eb279f664439aa38dc5f91607468cb574" + integrity sha512-oG62iEk+CYt5Xj2YqI5Xi9xWUeZhDI8jjQmC5oThVH5JGCTgIjr7ciJDzC7MBzYd//WvR1OTmP5Q38Q8ShQtVA== dependencies: - minipass "^7.0.4" - rimraf "^5.0.5" + minipass "^7.1.2" mkdirp@^0.5.1: version "0.5.6" @@ -8563,12 +8496,7 @@ mkdirp@^0.5.1: dependencies: minimist "^1.2.6" -mkdirp@^1.0.3: - version "1.0.4" - resolved "https://registry.npmmirror.com/mkdirp/-/mkdirp-1.0.4.tgz" - integrity sha512-vVqVZQyf3WLx2Shd0qJ9xuvqgAyKPLAiqITEtqW0oIUjzo3PePDd6fW9iFz30ef7Ysp/oiWqbhszeGWW2T6Gzw== - -mkdirp@^1.0.4: +mkdirp@^1.0.3, mkdirp@^1.0.4: version "1.0.4" resolved "https://registry.npmmirror.com/mkdirp/-/mkdirp-1.0.4.tgz" integrity sha512-vVqVZQyf3WLx2Shd0qJ9xuvqgAyKPLAiqITEtqW0oIUjzo3PePDd6fW9iFz30ef7Ysp/oiWqbhszeGWW2T6Gzw== @@ -8578,16 +8506,16 @@ mkdirp@^3.0.1: resolved "https://registry.npmmirror.com/mkdirp/-/mkdirp-3.0.1.tgz" integrity sha512-+NsyUUAZDmo6YVHzL/stxSu3t9YS1iljliy3BSDrXJ/dkn1KYdmtZODGGjLcc9XLgVVpH4KshHB8XmZgMhaBXg== -ms@^2.1.1, ms@^2.1.2, ms@^2.1.3, ms@2.1.3: - version "2.1.3" - resolved "https://registry.npmmirror.com/ms/-/ms-2.1.3.tgz" - integrity sha512-6FlzubTLZG3J2a/NVCAleEhjzq5oxgHyaCU9yYXvcLsvoVaHJq/s5xXI6/XXP6tz7R9xAOtHnSO/tXtF3WRTlA== - ms@2.0.0: version "2.0.0" resolved "https://registry.npmmirror.com/ms/-/ms-2.0.0.tgz" integrity sha512-Tpp60P6IUJDTuOq/5Z8cdskzJujfwqfOTkrwIwj7IRISpnkJnT6SyJ4PCPnGMoFjC9ddhal5KVIYtAt97ix05A== +ms@2.1.3, ms@^2.1.1, ms@^2.1.2, ms@^2.1.3: + version "2.1.3" + resolved "https://registry.npmmirror.com/ms/-/ms-2.1.3.tgz" + integrity sha512-6FlzubTLZG3J2a/NVCAleEhjzq5oxgHyaCU9yYXvcLsvoVaHJq/s5xXI6/XXP6tz7R9xAOtHnSO/tXtF3WRTlA== + multicast-dns@^7.2.5: version "7.2.5" resolved "https://registry.npmmirror.com/multicast-dns/-/multicast-dns-7.2.5.tgz" @@ -8620,6 +8548,11 @@ natural-compare@^1.4.0: resolved "https://registry.npmmirror.com/natural-compare/-/natural-compare-1.4.0.tgz" integrity sha512-OWND8ei3VtNC9h7V60qff3SVobHr996CTwgxubgyQYEpg290h9J0buyECNNJexkFm5sOajh5G116RYA1c8ZMSw== +negotiator@0.6.3: + version "0.6.3" + resolved "https://registry.npmmirror.com/negotiator/-/negotiator-0.6.3.tgz" + integrity sha512-+EUsqGPLsM+j/zdChZjsnX51g4XrHFOIXwfnCVPGlQk/k5giakcKsuxCObBRu6DSm9opw/O6slWbJdghQM4bBg== + negotiator@^1.0.0: version "1.0.0" resolved "https://registry.npmmirror.com/negotiator/-/negotiator-1.0.0.tgz" @@ -8630,11 +8563,6 @@ negotiator@~0.6.4: resolved "https://registry.npmmirror.com/negotiator/-/negotiator-0.6.4.tgz" integrity sha512-myRT3DiWPHqho5PrJaIRyaMv2kgYf0mUVgBNOYMuCH5Ki1yEiQaf/ZJuQ62nvpc44wL5WDbTX7yGJi1Neevw8w== -negotiator@0.6.3: - version "0.6.3" - resolved "https://registry.npmmirror.com/negotiator/-/negotiator-0.6.3.tgz" - integrity sha512-+EUsqGPLsM+j/zdChZjsnX51g4XrHFOIXwfnCVPGlQk/k5giakcKsuxCObBRu6DSm9opw/O6slWbJdghQM4bBg== - neo-async@^2.5.0, neo-async@^2.6.1, neo-async@^2.6.2: version "2.6.2" resolved "https://registry.npmmirror.com/neo-async/-/neo-async-2.6.2.tgz" @@ -8678,17 +8606,19 @@ node-forge@^1, node-forge@^1.2.1, node-forge@^1.3.1: integrity sha512-dPEtOeMvF9VMcYV/1Wb8CPoVAXtp6MKMlcbAt4ddqmGqUJ6fQZFXkNZNkNlfevtNkGtaSoXf/vNNNSvgrdXwtA== node-gyp@^11.0.0: - version "11.0.0" + version "11.2.0" + resolved "https://registry.npmmirror.com/node-gyp/-/node-gyp-11.2.0.tgz#fe2ee7f0511424d6ad70f7a0c88d7346f2fc6a6e" + integrity sha512-T0S1zqskVUSxcsSTkAsLc7xCycrRYmtDHadDinzocrThjyQCn5kMlEBSj6H4qDbgsIOSLmmlRIeb0lZXj+UArA== dependencies: env-paths "^2.2.0" exponential-backoff "^3.1.1" - glob "^10.3.10" graceful-fs "^4.2.6" make-fetch-happen "^14.0.3" nopt "^8.0.0" proc-log "^5.0.0" semver "^7.3.5" tar "^7.4.3" + tinyglobby "^0.2.12" which "^5.0.0" node-html-parser@^5.2.0: @@ -8710,9 +8640,11 @@ node-releases@^2.0.19: integrity sha512-xxOWJsBKtzAq7DY0J+DTzuz58K8e7sJbdgwkbMWQe8UYB6ekmsQ45q0M/tJDsGaZmbC+l7n57UV8Hl5tHxO9uw== nopt@^8.0.0: - version "8.0.0" + version "8.1.0" + resolved "https://registry.npmmirror.com/nopt/-/nopt-8.1.0.tgz#b11d38caf0f8643ce885818518064127f602eae3" + integrity sha512-ieGu42u/Qsa4TFktmaKEwM6MQH0pOWnaB3htzh0JRtx84+Mebc0cbZYN5bC+6WTZ4+77xrL9Pn5m7CV6VIkV7A== dependencies: - abbrev "^2.0.0" + abbrev "^3.0.0" normalize-package-data@^7.0.0: version "7.0.0" @@ -8768,7 +8700,9 @@ npm-package-arg@^11.0.0: validate-npm-package-name "^5.0.0" npm-package-arg@^12.0.0: - version "12.0.0" + version "12.0.2" + resolved "https://registry.npmmirror.com/npm-package-arg/-/npm-package-arg-12.0.2.tgz#3b1e04ebe651cc45028e298664e8c15ce9c0ca40" + integrity sha512-f1NpFjNI9O4VbKMOlA5QoBq/vSQPORHcTZ2feJpFkTHJ9eQkdlmZEKSjcAhxTGInC7RlEyScT9ui67NaOsjFWA== dependencies: hosted-git-info "^8.0.0" proc-log "^5.0.0" @@ -9002,13 +8936,6 @@ obuf@^1.0.0, obuf@^1.1.2: resolved "https://registry.npmmirror.com/obuf/-/obuf-1.1.2.tgz" integrity sha512-PX1wu0AmAdPqOL1mWhqmlOd8kOIZQwGZw6rh7uby9fTc5lhaOWFLX3I6R1hrF9k3zUY40e6igsLGkDXK92LJNg== -on-finished@~2.3.0: - version "2.3.0" - resolved "https://registry.npmmirror.com/on-finished/-/on-finished-2.3.0.tgz" - integrity sha512-ikqdkGAAyf/X/gPhXGvfgAytDZtDbr+bkNUJ0N9h5MI/dmdgCs3l6hoHrcUv41sRKew3jIwrp4qQDXiK99Utww== - dependencies: - ee-first "1.1.1" - on-finished@2.4.1: version "2.4.1" resolved "https://registry.npmmirror.com/on-finished/-/on-finished-2.4.1.tgz" @@ -9016,6 +8943,13 @@ on-finished@2.4.1: dependencies: ee-first "1.1.1" +on-finished@~2.3.0: + version "2.3.0" + resolved "https://registry.npmmirror.com/on-finished/-/on-finished-2.3.0.tgz" + integrity sha512-ikqdkGAAyf/X/gPhXGvfgAytDZtDbr+bkNUJ0N9h5MI/dmdgCs3l6hoHrcUv41sRKew3jIwrp4qQDXiK99Utww== + dependencies: + ee-first "1.1.1" + on-headers@~1.0.2: version "1.0.2" resolved "https://registry.npmmirror.com/on-headers/-/on-headers-1.0.2.tgz" @@ -9050,16 +8984,7 @@ open@^7.0.3: is-docker "^2.0.0" is-wsl "^2.1.1" -open@^8.0.4: - version "8.4.2" - resolved "https://registry.npmmirror.com/open/-/open-8.4.2.tgz" - integrity sha512-7x81NCL719oNbsq/3mh+hVrAWmFuEYUqrq/Iw3kUzH8ReypT9QQ0BLoJS7/G9k6N81XjW4qHWtjWwe/9eLy1EQ== - dependencies: - define-lazy-prop "^2.0.0" - is-docker "^2.1.1" - is-wsl "^2.2.0" - -open@^8.0.9: +open@^8.0.4, open@^8.0.9: version "8.4.2" resolved "https://registry.npmmirror.com/open/-/open-8.4.2.tgz" integrity sha512-7x81NCL719oNbsq/3mh+hVrAWmFuEYUqrq/Iw3kUzH8ReypT9QQ0BLoJS7/G9k6N81XjW4qHWtjWwe/9eLy1EQ== @@ -9101,14 +9026,7 @@ p-limit@^2.0.0, p-limit@^2.2.0: dependencies: p-try "^2.0.0" -p-limit@^3.0.2: - version "3.1.0" - resolved "https://registry.npmmirror.com/p-limit/-/p-limit-3.1.0.tgz" - integrity sha512-TYOanM3wGwNGsZN2cVTYPArw454xnXj5qmWF1bEoAc4+cU/ol7GVh7odevjp1FNHduHc3KZMcFduxU5Xc6uJRQ== - dependencies: - yocto-queue "^0.1.0" - -p-limit@^3.1.0: +p-limit@^3.0.2, p-limit@^3.1.0: version "3.1.0" resolved "https://registry.npmmirror.com/p-limit/-/p-limit-3.1.0.tgz" integrity sha512-TYOanM3wGwNGsZN2cVTYPArw454xnXj5qmWF1bEoAc4+cU/ol7GVh7odevjp1FNHduHc3KZMcFduxU5Xc6uJRQ== @@ -9149,7 +9067,9 @@ p-map@^4.0.0: aggregate-error "^3.0.0" p-map@^7.0.2: - version "7.0.2" + version "7.0.3" + resolved "https://registry.npmmirror.com/p-map/-/p-map-7.0.3.tgz#7ac210a2d36f81ec28b736134810f7ba4418cdb6" + integrity sha512-VkndIv2fIB99swvQoA65bm+fsmt6UNdGeIB0oxBs+WhAhdh08QA04JXpI7rbB9r08/nkbysKoya9rtDERYOYMA== p-retry@^4.5.0: version "4.6.2" @@ -9314,12 +9234,7 @@ path-key@^2.0.0, path-key@^2.0.1: resolved "https://registry.npmmirror.com/path-key/-/path-key-2.0.1.tgz" integrity sha512-fEHGKCSmUSDPv4uoj8AlD+joPlq3peND+HRYyxFz4KPw4z926S/b8rIuFs2FYJg3BwsxJf6A9/3eIdLaYC+9Dw== -path-key@^3.0.0: - version "3.1.1" - resolved "https://registry.npmmirror.com/path-key/-/path-key-3.1.1.tgz" - integrity sha512-ojmeN0qd+y0jszEtoY48r0Peq5dwMEkIlCOu6Q5f41lfkswXuKtYrhgoTpLnyIcHm24Uhqx+5Tqm2InSwLhE6Q== - -path-key@^3.1.0: +path-key@^3.0.0, path-key@^3.1.0: version "3.1.1" resolved "https://registry.npmmirror.com/path-key/-/path-key-3.1.1.tgz" integrity sha512-ojmeN0qd+y0jszEtoY48r0Peq5dwMEkIlCOu6Q5f41lfkswXuKtYrhgoTpLnyIcHm24Uhqx+5Tqm2InSwLhE6Q== @@ -9362,6 +9277,11 @@ picomatch@^3.0.1: resolved "https://registry.npmmirror.com/picomatch/-/picomatch-3.0.1.tgz" integrity sha512-I3EurrIQMlRc9IaAZnqRR044Phh2DXY+55o7uJ0V+hYZAcQYSuFWsc9q5PvyDHUSCe1Qxn/iBz+78s86zWnGag== +picomatch@^4.0.2: + version "4.0.2" + resolved "https://registry.npmmirror.com/picomatch/-/picomatch-4.0.2.tgz#77c742931e8f3b8820946c76cd0c1f13730d1dab" + integrity sha512-M7BAV6Rlcy5u+m6oPhAPFgJTzAioX/6B0DxyvDlo9l8+T3nLKbrczg2WLUyzd45L8RqfUMyGPzekbMvX2Ldkwg== + pify@^2.0.0: version "2.3.0" resolved "https://registry.npmmirror.com/pify/-/pify-2.3.0.tgz" @@ -9640,12 +9560,6 @@ postcss-selector-parser@^6.0.4, postcss-selector-parser@^6.0.5, postcss-selector cssesc "^3.0.0" util-deprecate "^1.0.2" -postcss-selector-parser@^6.1.2: - version "6.1.2" - dependencies: - cssesc "^3.0.0" - util-deprecate "^1.0.2" - postcss-selector-parser@^7.0.0: version "7.1.0" resolved "https://registry.npmmirror.com/postcss-selector-parser/-/postcss-selector-parser-7.1.0.tgz" @@ -9756,9 +9670,6 @@ promise-call-limit@^3.0.1: resolved "https://registry.npmmirror.com/promise-call-limit/-/promise-call-limit-3.0.2.tgz" integrity sha512-mRPQO2T1QQVw11E7+UdCJu7S61eJVWknzml9sC1heAdj1jxl0fWMBypIt9ZOcLFf8FkG995ZD7RnVk7HH72fZw== -promise-inflight@^1.0.1: - version "1.0.1" - promise-retry@^2.0.1: version "2.0.1" resolved "https://registry.npmmirror.com/promise-retry/-/promise-retry-2.0.1.tgz" @@ -9838,16 +9749,16 @@ punycode@^2.1.0, punycode@^2.1.1, punycode@^2.3.1: resolved "https://registry.npmmirror.com/punycode/-/punycode-2.3.1.tgz" integrity sha512-vYt7UD1U9Wg6138shLtLOvdAu+8DsC/ilFtEVHcH+wydcSpNE20AfSOduf6MkRFahL5FY7X1oU7nKVZFtfq8Fg== -qrcode-terminal@^0.12.0: - version "0.12.0" - resolved "https://registry.npmmirror.com/qrcode-terminal/-/qrcode-terminal-0.12.0.tgz" - integrity sha512-EXtzRZmC+YGmGlDFbXKxQiMZNwCLEO6BANKXG4iCtSIM0yqc/pappSx3RIKr4r0uh5JsBckOXeKrB3Iz7mdQpQ== - qrcode-terminal@0.11.0: version "0.11.0" resolved "https://registry.npmmirror.com/qrcode-terminal/-/qrcode-terminal-0.11.0.tgz" integrity sha512-Uu7ii+FQy4Qf82G4xu7ShHhjhGahEpCWc3x8UavY3CTcWV+ufmmCtwkr7ZKsX42jdL0kr1B5FKUeqJvAn51jzQ== +qrcode-terminal@^0.12.0: + version "0.12.0" + resolved "https://registry.npmmirror.com/qrcode-terminal/-/qrcode-terminal-0.12.0.tgz" + integrity sha512-EXtzRZmC+YGmGlDFbXKxQiMZNwCLEO6BANKXG4iCtSIM0yqc/pappSx3RIKr4r0uh5JsBckOXeKrB3Iz7mdQpQ== + qs@6.13.0: version "6.13.0" resolved "https://registry.npmmirror.com/qs/-/qs-6.13.0.tgz" @@ -9958,12 +9869,7 @@ react-is@^18.0.0: resolved "https://registry.npmmirror.com/react-is/-/react-is-18.3.1.tgz" integrity sha512-/LLMVyas0ljjAtoYiPqYiL8VWXzUUdThrmU5+n20DZv+a+ClRoevUzw5JxU+Ieh5/c87ytoTBV9G1FiKfNJdmg== -react-is@^19.0.0: - version "19.1.0" - resolved "https://registry.npmmirror.com/react-is/-/react-is-19.1.0.tgz" - integrity sha512-Oe56aUPnkHyyDxxkvqtd7KkdQP5uIUfHxd5XTb3wE9d/kRnZLmKbDB0GWk919tdQ+mxxPtG6EAs6RMT6i1qtHg== - -react-is@^19.1.0: +react-is@^19.0.0, react-is@^19.1.0: version "19.1.0" resolved "https://registry.npmmirror.com/react-is/-/react-is-19.1.0.tgz" integrity sha512-Oe56aUPnkHyyDxxkvqtd7KkdQP5uIUfHxd5XTb3wE9d/kRnZLmKbDB0GWk919tdQ+mxxPtG6EAs6RMT6i1qtHg== @@ -10244,7 +10150,9 @@ read-package-json-fast@^4.0.0: npm-normalize-package-bin "^4.0.0" read@^4.0.0: - version "4.0.0" + version "4.1.0" + resolved "https://registry.npmmirror.com/read/-/read-4.1.0.tgz#d97c2556b009b47b16b5bb82311d477cc7503548" + integrity sha512-uRfX6K+f+R8OOrYScaM3ixPY4erg69f8DN6pgTvMcA9iRc8iDhwrA4m3Yu8YYKsXJgVvum+m8PkRboZwwuLzYA== dependencies: mute-stream "^2.0.0" @@ -10524,11 +10432,6 @@ rimraf@^3.0.2: dependencies: glob "^7.1.3" -rimraf@^5.0.5: - version "5.0.10" - dependencies: - glob "^10.3.7" - rimraf@~2.6.2: version "2.6.3" resolved "https://registry.npmmirror.com/rimraf/-/rimraf-2.6.3.tgz" @@ -10559,7 +10462,7 @@ safe-array-concat@^1.1.3: has-symbols "^1.1.0" isarray "^2.0.5" -safe-buffer@^5.0.1, safe-buffer@^5.1.0, safe-buffer@>=5.1.0, safe-buffer@~5.2.0, safe-buffer@5.2.1: +safe-buffer@5.2.1, safe-buffer@>=5.1.0, safe-buffer@^5.0.1, safe-buffer@^5.1.0, safe-buffer@~5.2.0: version "5.2.1" resolved "https://registry.npmmirror.com/safe-buffer/-/safe-buffer-5.2.1.tgz" integrity sha512-rp3So07KcdmmKbGvgaNxQSJr7bGVSVk5S9Eq1F+ppbRo70+YeaDxkw5Dd8NPN+GD6bjnYm2VuPuCXmpuYvmCXQ== @@ -10603,6 +10506,13 @@ saxes@^6.0.0: dependencies: xmlchars "^2.2.0" +scheduler@0.24.0-canary-efb381bbf-20230505: + version "0.24.0-canary-efb381bbf-20230505" + resolved "https://registry.npmmirror.com/scheduler/-/scheduler-0.24.0-canary-efb381bbf-20230505.tgz" + integrity sha512-ABvovCDe/k9IluqSh4/ISoq8tIJnW8euVAWYt5j/bg6dRnqwQwiGO1F/V4AyK96NGF/FB04FhOUDuWj8IKfABA== + dependencies: + loose-envify "^1.1.0" + scheduler@^0.23.2: version "0.23.2" resolved "https://registry.npmmirror.com/scheduler/-/scheduler-0.23.2.tgz" @@ -10615,13 +10525,6 @@ scheduler@^0.25.0: resolved "https://registry.npmmirror.com/scheduler/-/scheduler-0.25.0.tgz" integrity sha512-xFVuu11jh+xcO7JOAGJNOXld8/TcEHK/4CituBUeUb5hqxJLj9YuemAEuvm9gQ/+pgXYfbQuqAkiYu+u7YEsNA== -scheduler@0.24.0-canary-efb381bbf-20230505: - version "0.24.0-canary-efb381bbf-20230505" - resolved "https://registry.npmmirror.com/scheduler/-/scheduler-0.24.0-canary-efb381bbf-20230505.tgz" - integrity sha512-ABvovCDe/k9IluqSh4/ISoq8tIJnW8euVAWYt5j/bg6dRnqwQwiGO1F/V4AyK96NGF/FB04FhOUDuWj8IKfABA== - dependencies: - loose-envify "^1.1.0" - schema-utils@^2.6.5: version "2.7.1" resolved "https://registry.npmmirror.com/schema-utils/-/schema-utils-2.7.1.tgz" @@ -10654,49 +10557,26 @@ selfsigned@^2.1.1, selfsigned@^2.4.1: "@types/node-forge" "^1.3.0" node-forge "^1" -semver@^5.3.0: - version "5.7.2" - resolved "https://registry.npmmirror.com/semver/-/semver-5.7.2.tgz" - integrity sha512-cBznnQ9KjJqU67B52RMC65CMarK2600WFnbkcaiwWq3xy/5haFJlshgnpjovMVJ+Hff49d8GEn0b87C5pDQ10g== +semver@7.3.2: + version "7.3.2" + resolved "https://registry.npmmirror.com/semver/-/semver-7.3.2.tgz" + integrity sha512-OrOb32TeeambH6UrhtShmF7CRDqhL6/5XpPNp2DuRH6+9QLw/orhp72j87v8Qa1ScDkvrrBNpZcDejAirJmfXQ== -semver@^5.5.0: - version "5.7.2" - resolved "https://registry.npmmirror.com/semver/-/semver-5.7.2.tgz" - integrity sha512-cBznnQ9KjJqU67B52RMC65CMarK2600WFnbkcaiwWq3xy/5haFJlshgnpjovMVJ+Hff49d8GEn0b87C5pDQ10g== +semver@7.x, semver@^7.1.1, semver@^7.1.3, semver@^7.3.5, semver@^7.3.7, semver@^7.5.3, semver@^7.5.4, semver@^7.6.0, semver@^7.6.3: + version "7.7.2" + resolved "https://registry.npmmirror.com/semver/-/semver-7.7.2.tgz" + integrity sha512-RF0Fw+rO5AMf9MAyaRXI4AV0Ulj5lMHqVxxdSgiVbixSCXoEmmX/jk0CuJw4+3SqroYO9VoUh+HcuJivvtJemA== -semver@^5.6.0: +semver@^5.3.0, semver@^5.5.0, semver@^5.6.0: version "5.7.2" resolved "https://registry.npmmirror.com/semver/-/semver-5.7.2.tgz" integrity sha512-cBznnQ9KjJqU67B52RMC65CMarK2600WFnbkcaiwWq3xy/5haFJlshgnpjovMVJ+Hff49d8GEn0b87C5pDQ10g== -semver@^6.0.0: - version "6.3.1" - resolved "https://registry.npmmirror.com/semver/-/semver-6.3.1.tgz" - integrity sha512-BR7VvDCVHO+q2xBEWskxS6DJE1qRnb7DxzUrogb71CWoSficBxYsiAGd+Kl0mmq/MprG9yArRkyrQxTO6XjMzA== - -semver@^6.1.0: +semver@^6.0.0, semver@^6.1.0, semver@^6.3.0, semver@^6.3.1: version "6.3.1" resolved "https://registry.npmmirror.com/semver/-/semver-6.3.1.tgz" integrity sha512-BR7VvDCVHO+q2xBEWskxS6DJE1qRnb7DxzUrogb71CWoSficBxYsiAGd+Kl0mmq/MprG9yArRkyrQxTO6XjMzA== -semver@^6.3.0: - version "6.3.1" - resolved "https://registry.npmmirror.com/semver/-/semver-6.3.1.tgz" - integrity sha512-BR7VvDCVHO+q2xBEWskxS6DJE1qRnb7DxzUrogb71CWoSficBxYsiAGd+Kl0mmq/MprG9yArRkyrQxTO6XjMzA== - -semver@^6.3.1: - version "6.3.1" - resolved "https://registry.npmmirror.com/semver/-/semver-6.3.1.tgz" - integrity sha512-BR7VvDCVHO+q2xBEWskxS6DJE1qRnb7DxzUrogb71CWoSficBxYsiAGd+Kl0mmq/MprG9yArRkyrQxTO6XjMzA== - -semver@^7.1.1, semver@^7.3.7: - version "7.6.3" - -semver@^7.1.3, semver@^7.3.5, semver@^7.5.3, semver@^7.5.4, semver@^7.6.0, semver@^7.6.3, semver@7.x: - version "7.7.2" - resolved "https://registry.npmmirror.com/semver/-/semver-7.7.2.tgz" - integrity sha512-RF0Fw+rO5AMf9MAyaRXI4AV0Ulj5lMHqVxxdSgiVbixSCXoEmmX/jk0CuJw4+3SqroYO9VoUh+HcuJivvtJemA== - semver@~7.5.4: version "7.5.4" resolved "https://registry.npmmirror.com/semver/-/semver-7.5.4.tgz" @@ -10704,20 +10584,15 @@ semver@~7.5.4: dependencies: lru-cache "^6.0.0" -semver@7.3.2: - version "7.3.2" - resolved "https://registry.npmmirror.com/semver/-/semver-7.3.2.tgz" - integrity sha512-OrOb32TeeambH6UrhtShmF7CRDqhL6/5XpPNp2DuRH6+9QLw/orhp72j87v8Qa1ScDkvrrBNpZcDejAirJmfXQ== - -send@^0.19.0: - version "0.19.1" - resolved "https://registry.npmmirror.com/send/-/send-0.19.1.tgz" - integrity sha512-p4rRk4f23ynFEfcD9LA0xRYngj+IyGiEYyqqOak8kaN0TvNmuxC2dcVeBn62GpCeR2CpWqyHCNScTP91QbAVFg== +send@0.19.0: + version "0.19.0" + resolved "https://registry.npmmirror.com/send/-/send-0.19.0.tgz" + integrity sha512-dW41u5VfLXu8SJh5bwRmyYUbAoSB3c9uQh6L8h/KtsFREPWpbX1lrljJo186Jc4nmci/sGUZ9a0a0J2zgfq2hw== dependencies: debug "2.6.9" depd "2.0.0" destroy "1.2.0" - encodeurl "~2.0.0" + encodeurl "~1.0.2" escape-html "~1.0.3" etag "~1.8.1" fresh "0.5.2" @@ -10728,15 +10603,15 @@ send@^0.19.0: range-parser "~1.2.1" statuses "2.0.1" -send@0.19.0: - version "0.19.0" - resolved "https://registry.npmmirror.com/send/-/send-0.19.0.tgz" - integrity sha512-dW41u5VfLXu8SJh5bwRmyYUbAoSB3c9uQh6L8h/KtsFREPWpbX1lrljJo186Jc4nmci/sGUZ9a0a0J2zgfq2hw== +send@^0.19.0: + version "0.19.1" + resolved "https://registry.npmmirror.com/send/-/send-0.19.1.tgz" + integrity sha512-p4rRk4f23ynFEfcD9LA0xRYngj+IyGiEYyqqOak8kaN0TvNmuxC2dcVeBn62GpCeR2CpWqyHCNScTP91QbAVFg== dependencies: debug "2.6.9" depd "2.0.0" destroy "1.2.0" - encodeurl "~1.0.2" + encodeurl "~2.0.0" escape-html "~1.0.3" etag "~1.8.1" fresh "0.5.2" @@ -10772,7 +10647,7 @@ serve-index@^1.9.1: mime-types "~2.1.17" parseurl "~1.3.2" -serve-static@^1.13.1, serve-static@1.16.2: +serve-static@1.16.2, serve-static@^1.13.1: version "1.16.2" resolved "https://registry.npmmirror.com/serve-static/-/serve-static-1.16.2.tgz" integrity sha512-VqpjJZKadQB/PEbEwvFdO43Ax5dFBZ2UECszz8bQ7pi7wt//PWe1P6MN7eCnjsatYtBT6EuiClbjSWP2WrIoTw== @@ -10920,14 +10795,16 @@ signal-exit@^4.0.1: integrity sha512-bzyZ1e88w9O1iNJbKnOlvYTrWPDl46O1bG0D3XInv+9tkPrxrN8jUUTiFlDkkmKWgn1M6CfIA13SuGqOa9Korw== sigstore@^3.0.0: - version "3.0.0" + version "3.1.0" + resolved "https://registry.npmmirror.com/sigstore/-/sigstore-3.1.0.tgz#08dc6c0c425263e9fdab85ffdb6477550e2c511d" + integrity sha512-ZpzWAFHIFqyFE56dXqgX/DkDRZdz+rRcjoIk/RQU4IX0wiCv1l8S7ZrXDHcCc+uaf+6o7w3h2l3g6GYG5TKN9Q== dependencies: - "@sigstore/bundle" "^3.0.0" + "@sigstore/bundle" "^3.1.0" "@sigstore/core" "^2.0.0" - "@sigstore/protobuf-specs" "^0.3.2" - "@sigstore/sign" "^3.0.0" - "@sigstore/tuf" "^3.0.0" - "@sigstore/verify" "^2.0.0" + "@sigstore/protobuf-specs" "^0.4.0" + "@sigstore/sign" "^3.1.0" + "@sigstore/tuf" "^3.1.0" + "@sigstore/verify" "^2.1.0" simple-plist@^1.1.0: version "1.3.1" @@ -10998,14 +10875,18 @@ sockjs@^0.3.24: websocket-driver "^0.7.4" socks-proxy-agent@^8.0.3: - version "8.0.4" + version "8.0.5" + resolved "https://registry.npmmirror.com/socks-proxy-agent/-/socks-proxy-agent-8.0.5.tgz#b9cdb4e7e998509d7659d689ce7697ac21645bee" + integrity sha512-HehCEsotFqbPW9sJ8WVYB6UbmIMv7kUUORIF2Nncq4VQvBfNBLibW9YZR5dlYCSUhwcD628pRllm7n+E+YTzJw== dependencies: - agent-base "^7.1.1" + agent-base "^7.1.2" debug "^4.3.4" socks "^2.8.3" socks@^2.8.3: - version "2.8.3" + version "2.8.4" + resolved "https://registry.npmmirror.com/socks/-/socks-2.8.4.tgz#07109755cdd4da03269bda4725baa061ab56d5cc" + integrity sha512-D3YaD0aRxR3mEcqnidIs7ReYJFVzWdd6fXJYUM8ixcQcJRGTka/b3saV0KflYhyVJXKhb947GndU35SxYNResQ== dependencies: ip-address "^9.0.5" smart-buffer "^4.2.0" @@ -11037,6 +10918,11 @@ source-map-support@^0.5.16, source-map-support@~0.5.20, source-map-support@~0.5. buffer-from "^1.0.0" source-map "^0.6.0" +source-map@0.5.6: + version "0.5.6" + resolved "https://registry.npmmirror.com/source-map/-/source-map-0.5.6.tgz" + integrity sha512-MjZkVp0NHr5+TPihLcadqnlVoGIoWo4IBHptutGh9wI3ttUYvCG26HkSuDi+K6lsZ25syXJXcctwgyVCt//xqA== + source-map@^0.5.6: version "0.5.7" resolved "https://registry.npmmirror.com/source-map/-/source-map-0.5.7.tgz" @@ -11047,11 +10933,6 @@ source-map@^0.6.0, source-map@^0.6.1, source-map@~0.6.0, source-map@~0.6.1: resolved "https://registry.npmmirror.com/source-map/-/source-map-0.6.1.tgz" integrity sha512-UjgapumWlbMhkBgzT7Ykc5YXUT46F0iKu8SGXq0bcwP5dz/h0Plj6enJqjz1Zbq2l5WaqYnrVbwWOWMyF3F47g== -source-map@0.5.6: - version "0.5.6" - resolved "https://registry.npmmirror.com/source-map/-/source-map-0.5.6.tgz" - integrity sha512-MjZkVp0NHr5+TPihLcadqnlVoGIoWo4IBHptutGh9wI3ttUYvCG26HkSuDi+K6lsZ25syXJXcctwgyVCt//xqA== - spdx-correct@^3.0.0: version "3.2.0" resolved "https://registry.npmmirror.com/spdx-correct/-/spdx-correct-3.2.0.tgz" @@ -11082,7 +10963,9 @@ spdx-expression-parse@^4.0.0: spdx-license-ids "^3.0.0" spdx-license-ids@^3.0.0: - version "3.0.20" + version "3.0.21" + resolved "https://registry.npmmirror.com/spdx-license-ids/-/spdx-license-ids-3.0.21.tgz#6d6e980c9df2b6fc905343a3b2d702a6239536c3" + integrity sha512-Bvg/8F5XephndSK3JffaRqdT+gyhfqIPwDHpX80tJrF8QQRYMo8sNMeaZ2Dp5+jhwKnUmIOyFFQfHRkjJm5nXg== spdy-transport@^3.0.0: version "3.0.0" @@ -11184,22 +11067,17 @@ stacktrace-parser@^0.1.10: dependencies: type-fest "^0.7.1" -"statuses@>= 1.4.0 < 2": - version "1.5.0" - resolved "https://registry.npmmirror.com/statuses/-/statuses-1.5.0.tgz" - integrity sha512-OpZ3zP+jT1PI7I8nemJX4AKmAX070ZkYPVWV/AaKTJl+tXCTGyVdC1a4SL8RUQYEwk/f34ZX8UTykN68FwrqAA== - -statuses@~1.5.0: - version "1.5.0" - resolved "https://registry.npmmirror.com/statuses/-/statuses-1.5.0.tgz" - integrity sha512-OpZ3zP+jT1PI7I8nemJX4AKmAX070ZkYPVWV/AaKTJl+tXCTGyVdC1a4SL8RUQYEwk/f34ZX8UTykN68FwrqAA== - statuses@2.0.1: version "2.0.1" resolved "https://registry.npmmirror.com/statuses/-/statuses-2.0.1.tgz" integrity sha512-RwNA9Z/7PrK06rYLIzFMlaF+l73iwpzsqRIFgbMLbTcLD6cOao82TaWefPXQvB2fOC4AjuYSEndS7N/mTCbkdQ== -stream-buffers@~2.2.0, stream-buffers@2.2.x: +"statuses@>= 1.4.0 < 2", statuses@~1.5.0: + version "1.5.0" + resolved "https://registry.npmmirror.com/statuses/-/statuses-1.5.0.tgz" + integrity sha512-OpZ3zP+jT1PI7I8nemJX4AKmAX070ZkYPVWV/AaKTJl+tXCTGyVdC1a4SL8RUQYEwk/f34ZX8UTykN68FwrqAA== + +stream-buffers@2.2.x, stream-buffers@~2.2.0: version "2.2.0" resolved "https://registry.npmmirror.com/stream-buffers/-/stream-buffers-2.2.0.tgz" integrity sha512-uyQK/mx5QjHun80FLJTfaWE7JtwfRMKBLkMne6udYOmvH0CawotVa7TfgYHzAnpphn4+TweIx1QKMnRIbipmUg== @@ -11209,20 +11087,6 @@ strict-uri-encode@^2.0.0: resolved "https://registry.npmmirror.com/strict-uri-encode/-/strict-uri-encode-2.0.0.tgz" integrity sha512-QwiXZgpRcKkhTj2Scnn++4PKtWsH0kpzZ62L2R6c/LUVYv7hVnZqcg2+sMuT6R7Jusu1vviK/MFsu6kNJfWlEQ== -string_decoder@^1.1.1: - version "1.3.0" - resolved "https://registry.npmmirror.com/string_decoder/-/string_decoder-1.3.0.tgz" - integrity sha512-hkRX8U1WjJFd8LsDJ2yQ/wWWxaopEsABU1XfkM8A+j0+85JAGppt16cr1Whg6KIbb4okU6Mql6BOj+uup/wKeA== - dependencies: - safe-buffer "~5.2.0" - -string_decoder@~1.1.1: - version "1.1.1" - resolved "https://registry.npmmirror.com/string_decoder/-/string_decoder-1.1.1.tgz" - integrity sha512-n/ShnvDi6FHbbVfviro+WojiFzv+s8MPMHBczVePfUpDJLwoLT0ht1l4YwBCbi8pJAveEEdnkHyPyTP/mzRfwg== - dependencies: - safe-buffer "~5.1.0" - string-length@^4.0.1: version "4.0.2" resolved "https://registry.npmmirror.com/string-length/-/string-length-4.0.2.tgz" @@ -11325,6 +11189,20 @@ string.prototype.trimstart@^1.0.8: define-properties "^1.2.1" es-object-atoms "^1.0.0" +string_decoder@^1.1.1: + version "1.3.0" + resolved "https://registry.npmmirror.com/string_decoder/-/string_decoder-1.3.0.tgz" + integrity sha512-hkRX8U1WjJFd8LsDJ2yQ/wWWxaopEsABU1XfkM8A+j0+85JAGppt16cr1Whg6KIbb4okU6Mql6BOj+uup/wKeA== + dependencies: + safe-buffer "~5.2.0" + +string_decoder@~1.1.1: + version "1.1.1" + resolved "https://registry.npmmirror.com/string_decoder/-/string_decoder-1.1.1.tgz" + integrity sha512-n/ShnvDi6FHbbVfviro+WojiFzv+s8MPMHBczVePfUpDJLwoLT0ht1l4YwBCbi8pJAveEEdnkHyPyTP/mzRfwg== + dependencies: + safe-buffer "~5.1.0" + stringify-entities@^3.1.0: version "3.1.0" resolved "https://registry.npmmirror.com/stringify-entities/-/stringify-entities-3.1.0.tgz" @@ -11553,6 +11431,15 @@ temp@^0.8.4: dependencies: rimraf "~2.6.2" +tempy@0.3.0: + version "0.3.0" + resolved "https://registry.npmmirror.com/tempy/-/tempy-0.3.0.tgz" + integrity sha512-WrH/pui8YCwmeiAoxV+lpRH9HpRtgBhSR2ViBPgpGb/wnYDzp21R4MN45fsCGvLROvY67o3byhJRYRONJyImVQ== + dependencies: + temp-dir "^1.0.0" + type-fest "^0.3.1" + unique-string "^1.0.0" + tempy@^0.7.1: version "0.7.1" resolved "https://registry.npmmirror.com/tempy/-/tempy-0.7.1.tgz" @@ -11564,15 +11451,6 @@ tempy@^0.7.1: type-fest "^0.16.0" unique-string "^2.0.0" -tempy@0.3.0: - version "0.3.0" - resolved "https://registry.npmmirror.com/tempy/-/tempy-0.3.0.tgz" - integrity sha512-WrH/pui8YCwmeiAoxV+lpRH9HpRtgBhSR2ViBPgpGb/wnYDzp21R4MN45fsCGvLROvY67o3byhJRYRONJyImVQ== - dependencies: - temp-dir "^1.0.0" - type-fest "^0.3.1" - unique-string "^1.0.0" - terminal-link@^2.1.1: version "2.1.1" resolved "https://registry.npmmirror.com/terminal-link/-/terminal-link-2.1.1.tgz" @@ -11645,6 +11523,14 @@ tiny-relative-date@^1.3.0: resolved "https://registry.npmmirror.com/tiny-relative-date/-/tiny-relative-date-1.3.0.tgz" integrity sha512-MOQHpzllWxDCHHaDno30hhLfbouoYlOI8YlMNtvKe1zXbjEVhbcEovQxvZrPvtiYW630GQDoMMarCnjfyfHA+A== +tinyglobby@^0.2.12: + version "0.2.13" + resolved "https://registry.npmmirror.com/tinyglobby/-/tinyglobby-0.2.13.tgz#a0e46515ce6cbcd65331537e57484af5a7b2ff7e" + integrity sha512-mEwzpUgrLySlveBwEVDMKk5B57bhLPYovRfPAXD5gA/98Opn0rCDj3GtLwFvCvH5RK9uPCExUROW5NjDwvqkxw== + dependencies: + fdir "^6.4.4" + picomatch "^4.0.2" + tmpl@1.0.5: version "1.0.5" resolved "https://registry.npmmirror.com/tmpl/-/tmpl-1.0.5.tgz" @@ -11935,7 +11821,7 @@ universalify@^2.0.0: resolved "https://registry.npmmirror.com/universalify/-/universalify-2.0.1.tgz" integrity sha512-gptHNQghINnc/vTGIk0SOFGFNXw7JVrlRUtConJRlvaw6DuX0wO5Jeko9sWrMBhh+PsYAZ7oXAiOnf/UKogyiw== -unpipe@~1.0.0, unpipe@1.0.0: +unpipe@1.0.0, unpipe@~1.0.0: version "1.0.0" resolved "https://registry.npmmirror.com/unpipe/-/unpipe-1.0.0.tgz" integrity sha512-pjy2bYhSsufwWlKwPc+l3cN7+wuJlK6uz0YdJEOlQDbl6jo/YlPi4mb8agUkVC8BF7V8NuzeyPNqRksA3hztKQ== @@ -12063,7 +11949,7 @@ walker@^1.0.7, walker@^1.0.8: dependencies: makeerror "1.0.12" -warn-once@^0.1.0, warn-once@^0.1.1, warn-once@0.1.1: +warn-once@0.1.1, warn-once@^0.1.0, warn-once@^0.1.1: version "0.1.1" resolved "https://registry.npmmirror.com/warn-once/-/warn-once-0.1.1.tgz" integrity sha512-VkQZJbO8zVImzYFteBXvBOZEl1qL175WH8VmZcxF2fZAoudNhNDvHi+doCaAEdU2l2vtcIwa2zn0QK5+I1HQ3Q== @@ -12208,7 +12094,7 @@ webpack@^5.64.4: watchpack "^2.4.1" webpack-sources "^3.2.3" -websocket-driver@^0.7.4, websocket-driver@>=0.5.1: +websocket-driver@>=0.5.1, websocket-driver@^0.7.4: version "0.7.4" resolved "https://registry.npmmirror.com/websocket-driver/-/websocket-driver-0.7.4.tgz" integrity sha512-b17KeDIQVjvb0ssuSDF2cYXSg2iztliJ4B9WdsuB6J952qCPKmnVq4DyW5motImXHDC1cBT/1UezrJVsKw5zjg== @@ -12407,27 +12293,12 @@ ws@^6.2.3: dependencies: async-limiter "~1.0.0" -ws@^7: +ws@^7, ws@^7.5.10: version "7.5.10" resolved "https://registry.npmmirror.com/ws/-/ws-7.5.10.tgz" integrity sha512-+dbF1tHwZpXcbOJdVOkzLDxZP1ailvSxM6ZweXTegylPny803bFhA+vqBYw4s31NSAk4S2Qz+AKXK9a4wkdjcQ== -ws@^7.5.10: - version "7.5.10" - resolved "https://registry.npmmirror.com/ws/-/ws-7.5.10.tgz" - integrity sha512-+dbF1tHwZpXcbOJdVOkzLDxZP1ailvSxM6ZweXTegylPny803bFhA+vqBYw4s31NSAk4S2Qz+AKXK9a4wkdjcQ== - -ws@^8.11.0: - version "8.18.2" - resolved "https://registry.npmmirror.com/ws/-/ws-8.18.2.tgz" - integrity sha512-DMricUmwGZUVr++AEAe2uiVM7UoO9MAVZMDu05UQOaUII0lp+zOzLLU4Xqh/JvTqklB1T4uELaaPBKyjE1r4fQ== - -ws@^8.12.1: - version "8.18.2" - resolved "https://registry.npmmirror.com/ws/-/ws-8.18.2.tgz" - integrity sha512-DMricUmwGZUVr++AEAe2uiVM7UoO9MAVZMDu05UQOaUII0lp+zOzLLU4Xqh/JvTqklB1T4uELaaPBKyjE1r4fQ== - -ws@^8.13.0: +ws@^8.11.0, ws@^8.12.1, ws@^8.13.0: version "8.18.2" resolved "https://registry.npmmirror.com/ws/-/ws-8.18.2.tgz" integrity sha512-DMricUmwGZUVr++AEAe2uiVM7UoO9MAVZMDu05UQOaUII0lp+zOzLLU4Xqh/JvTqklB1T4uELaaPBKyjE1r4fQ==