diff --git a/docs/animated.md b/docs/animated.md index 399acca67ba..4746db9d0a0 100644 --- a/docs/animated.md +++ b/docs/animated.md @@ -192,7 +192,8 @@ For example, when working with horizontal scrolling gestures, you would do the f x: scrollX } } - }] + }], + {useNativeEvent: true} )} ``` diff --git a/docs/animatedvaluexy.md b/docs/animatedvaluexy.md index e5ddd564489..b1952816906 100644 --- a/docs/animatedvaluexy.md +++ b/docs/animatedvaluexy.md @@ -17,13 +17,16 @@ const DraggableView = () => { const panResponder = PanResponder.create({ onStartShouldSetPanResponder: () => true, - onPanResponderMove: Animated.event([ - null, - { - dx: pan.x, // x,y are Animated.Value - dy: pan.y, - }, - ]), + onPanResponderMove: Animated.event( + [ + null, + { + dx: pan.x, // x,y are Animated.Value + dy: pan.y, + }, + ], + {useNativeDriver: false}, + ), onPanResponderRelease: () => { Animated.spring( pan, // Auto-multiplexed diff --git a/docs/animations.md b/docs/animations.md index 59ec24ebb96..7619c6713d4 100644 --- a/docs/animations.md +++ b/docs/animations.md @@ -293,15 +293,15 @@ Gestures, like panning or scrolling, and other events can map directly to animat For example, when working with horizontal scrolling gestures, you would do the following in order to map `event.nativeEvent.contentOffset.x` to `scrollX` (an `Animated.Value`): ```tsx - onScroll={Animated.event( - // scrollX = e.nativeEvent.contentOffset.x - [{nativeEvent: { - contentOffset: { - x: scrollX - } - } - }] - )} +onScroll={Animated.event( + // scrollX = e.nativeEvent.contentOffset.x + [{ + nativeEvent: { + contentOffset: { x: scrollX } + } + }], + {useNativeDriver: true} +)} ``` The following example implements a horizontal scrolling carousel where the scroll position indicators are animated using the `Animated.event` used in the `ScrollView` @@ -338,15 +338,18 @@ const App = () => { horizontal={true} pagingEnabled showsHorizontalScrollIndicator={false} - onScroll={Animated.event([ - { - nativeEvent: { - contentOffset: { - x: scrollX, + onScroll={Animated.event( + [ + { + nativeEvent: { + contentOffset: { + x: scrollX, + }, }, }, - }, - ])} + ], + {useNativeDriver: true}, + )} scrollEventThrottle={1}> {images.map((image, imageIndex) => { return ( @@ -459,7 +462,9 @@ const App = () => { const panResponder = useRef( PanResponder.create({ onMoveShouldSetPanResponder: () => true, - onPanResponderMove: Animated.event([null, {dx: pan.x, dy: pan.y}]), + onPanResponderMove: Animated.event([null, {dx: pan.x, dy: pan.y}], { + useNativeDriver: false, + }), onPanResponderRelease: () => { Animated.spring(pan, { toValue: {x: 0, y: 0}, diff --git a/docs/appstate.md b/docs/appstate.md index fb4188f6cf1..b5d6ad607f5 100644 --- a/docs/appstate.md +++ b/docs/appstate.md @@ -39,7 +39,7 @@ const AppStateExample = () => { useEffect(() => { const subscription = AppState.addEventListener('change', nextAppState => { if ( - appState.current.match(/inactive|background/) && + appState.current?.match(/inactive|background/) && nextAppState === 'active' ) { console.log('App has come to the foreground!'); diff --git a/docs/dimensions.md b/docs/dimensions.md index c9c6b70c613..b5bfa7635c7 100644 --- a/docs/dimensions.md +++ b/docs/dimensions.md @@ -26,9 +26,14 @@ If you are targeting foldable devices or devices which can change the screen siz ## Example -```SnackPlayer name=Dimensions%20Example +```SnackPlayer name=Dimensions%20Example&ext=tsx import {useState, useEffect} from 'react'; -import {StyleSheet, Text, Dimensions} from 'react-native'; +import { + StyleSheet, + Text, + Dimensions, + type DimensionsPayload, +} from 'react-native'; import {SafeAreaView, SafeAreaProvider} from 'react-native-safe-area-context'; const windowDimensions = Dimensions.get('window'); @@ -43,8 +48,10 @@ const App = () => { useEffect(() => { const subscription = Dimensions.addEventListener( 'change', - ({window, screen}) => { - setDimensions({window, screen}); + ({window, screen}: DimensionsPayload) => { + if (window && screen) { + setDimensions({window, screen}); + } }, ); return () => subscription?.remove(); diff --git a/docs/drawerlayoutandroid.md b/docs/drawerlayoutandroid.md index 079f50b60a6..8d4210edaf0 100644 --- a/docs/drawerlayoutandroid.md +++ b/docs/drawerlayoutandroid.md @@ -95,8 +95,12 @@ import { View, } from 'react-native'; +type DrawerLayoutAndroidInstance = React.ComponentRef< + typeof DrawerLayoutAndroid +>; + const App = () => { - const drawer = useRef(null); + const drawer = useRef(null); const [drawerPosition, setDrawerPosition] = useState<'left' | 'right'>( 'left', ); diff --git a/docs/flexbox.md b/docs/flexbox.md index c98c516714d..55ae3f1d481 100644 --- a/docs/flexbox.md +++ b/docs/flexbox.md @@ -1099,12 +1099,17 @@ export default AlignSelfLayout; ```SnackPlayer name=Align%20Self&ext=tsx import {useState} from 'react'; -import {View, TouchableOpacity, Text, StyleSheet} from 'react-native'; +import { + View, + TouchableOpacity, + Text, + StyleSheet, + type ViewStyle, +} from 'react-native'; import type {PropsWithChildren} from 'react'; -import type {FlexAlignType} from 'react-native'; const AlignSelfLayout = () => { - const [alignSelf, setAlignSelf] = useState('stretch'); + const [alignSelf, setAlignSelf] = useState('stretch'); return ( { type PreviewLayoutProps = PropsWithChildren<{ label: string; - values: FlexAlignType[]; - selectedValue: string; - setSelectedValue: (value: FlexAlignType) => void; + values: ViewStyle['alignSelf'][]; + selectedValue: ViewStyle['alignSelf']; + setSelectedValue: (value: ViewStyle['alignSelf']) => void; }>; const PreviewLayout = ({ diff --git a/docs/improvingux.md b/docs/improvingux.md index 4b8e807c6c4..fe73ba56d53 100644 --- a/docs/improvingux.md +++ b/docs/improvingux.md @@ -125,8 +125,10 @@ import { StyleSheet, } from 'react-native'; +type TextInputInstance = React.ComponentRef; + const App = () => { - const emailInput = useRef(null); + const emailInput = useRef(null); const [name, setName] = useState(''); const [email, setEmail] = useState(''); @@ -325,8 +327,10 @@ import { StyleSheet, } from 'react-native'; +type TextInputInstance = React.ComponentRef; + const App = () => { - const emailInput = useRef(null); + const emailInput = useRef(null); const [email, setEmail] = useState(''); const submit = () => { diff --git a/docs/layout-props.md b/docs/layout-props.md index 36797b8dc86..116f4a76b55 100644 --- a/docs/layout-props.md +++ b/docs/layout-props.md @@ -197,8 +197,7 @@ import { StyleSheet, Text, View, - FlexAlignType, - FlexStyle, + ViewStyle, } from 'react-native'; import {SafeAreaView, SafeAreaProvider} from 'react-native-safe-area-context'; @@ -217,7 +216,7 @@ const App = () => { alignItems: alignItemsArr[alignItems], direction: directions[direction], flexWrap: wraps[wrap], - } as FlexStyle; + }; const changeSetting = ( value: number, @@ -307,29 +306,29 @@ const App = () => { ); }; -const flexDirections = [ +const flexDirections: ViewStyle['flexDirection'][] = [ 'row', 'row-reverse', 'column', 'column-reverse', -] as FlexStyle['flexDirection'][]; -const justifyContents = [ +]; +const justifyContents: ViewStyle['justifyContent'][] = [ 'flex-start', 'flex-end', 'center', 'space-between', 'space-around', 'space-evenly', -] as FlexStyle['justifyContent'][]; -const alignItemsArr = [ +]; +const alignItemsArr: ViewStyle['alignItems'][] = [ 'flex-start', 'flex-end', 'center', 'stretch', 'baseline', -] as FlexAlignType[]; -const wraps = ['nowrap', 'wrap', 'wrap-reverse']; -const directions = ['inherit', 'ltr', 'rtl']; +]; +const wraps: ViewStyle['flexWrap'][] = ['nowrap', 'wrap', 'wrap-reverse']; +const directions: ViewStyle['direction'][] = ['inherit', 'ltr', 'rtl']; const styles = StyleSheet.create({ container: { diff --git a/docs/legacy/direct-manipulation.md b/docs/legacy/direct-manipulation.md index bc7953e544b..7eb6479d8a0 100644 --- a/docs/legacy/direct-manipulation.md +++ b/docs/legacy/direct-manipulation.md @@ -140,14 +140,16 @@ export default App; ```SnackPlayer name=Forwarding%20setNativeProps&ext=tsx -import {forwardRef} from 'react'; +import {forwardRef, ElementRef} from 'react'; import {Text, TouchableOpacity, View} from 'react-native'; -const MyButton = forwardRef((props, ref) => ( - - {props.label} - -)); +const MyButton = forwardRef, {label: string}>( + (props, ref) => ( + + {props.label} + + ), +); const App = () => ( @@ -229,8 +231,10 @@ import { View, } from 'react-native'; +type TextInputInstance = React.ComponentRef; + const App = () => { - const inputRef = useRef(null); + const inputRef = useRef(null); const editText = useCallback(() => { inputRef.current?.setNativeProps({text: 'Edited Text'}); }, []); @@ -379,9 +383,12 @@ type Measurements = { height: number; }; +type TextInstance = React.ComponentRef; +type ViewInstance = React.ComponentRef; + const App = () => { - const textContainerRef = useRef(null); - const textRef = useRef(null); + const textContainerRef = useRef(null); + const textRef = useRef(null); const [measure, setMeasure] = useState(null); useEffect(() => { diff --git a/docs/linking.md b/docs/linking.md index 308d1660d61..939292522d5 100644 --- a/docs/linking.md +++ b/docs/linking.md @@ -336,7 +336,7 @@ const useInitialURL = () => { // The setTimeout is just for testing purpose setTimeout(() => { - setUrl(initialUrl); + setUrl(initialUrl ?? null); setProcessing(false); }, 1000); }; @@ -390,7 +390,7 @@ const useInitialURL = () => { // The setTimeout is just for testing purpose setTimeout(() => { - setUrl(initialUrl); + setUrl(initialUrl ?? null); setProcessing(false); }, 1000); }; diff --git a/docs/panresponder.md b/docs/panresponder.md index b113a55559a..1a32583a1ef 100644 --- a/docs/panresponder.md +++ b/docs/panresponder.md @@ -91,7 +91,9 @@ const App = () => { const panResponder = useRef( PanResponder.create({ onMoveShouldSetPanResponder: () => true, - onPanResponderMove: Animated.event([null, {dx: pan.x, dy: pan.y}]), + onPanResponderMove: Animated.event([null, {dx: pan.x, dy: pan.y}], { + useNativeDriver: false, + }), onPanResponderRelease: () => { pan.extractOffset(); }, diff --git a/docs/progressbarandroid.md b/docs/progressbarandroid.md index a08adfae637..1a5a58bd659 100644 --- a/docs/progressbarandroid.md +++ b/docs/progressbarandroid.md @@ -19,15 +19,19 @@ const App = () => { Circle Progress Indicator - + Horizontal Progress Indicator - + Colored Progress Indicator - + Fixed Progress Value diff --git a/docs/statusbar.md b/docs/statusbar.md index 493966e4f0b..b0fead82c11 100644 --- a/docs/statusbar.md +++ b/docs/statusbar.md @@ -26,7 +26,7 @@ import { } from 'react-native'; import {SafeAreaView, SafeAreaProvider} from 'react-native-safe-area-context'; -const STYLES = ['default', 'dark-content', 'light-content']; +const STYLES = ['default', 'auto', 'dark-content', 'light-content']; const TRANSITIONS = ['fade', 'slide', 'none']; const App = () => { @@ -134,7 +134,7 @@ import { } from 'react-native'; import {SafeAreaView, SafeAreaProvider} from 'react-native-safe-area-context'; -const STYLES = ['default', 'dark-content', 'light-content'] as const; +const STYLES = ['default', 'auto', 'dark-content', 'light-content'] as const; const TRANSITIONS = ['fade', 'slide', 'none'] as const; const App = () => { @@ -407,8 +407,9 @@ Status bar style type. **Constants:** -| Value | Type | Description | -| ----------------- | ------ | ---------------------------------------------------------- | -| `'default'` | string | Default status bar style (dark for iOS, light for Android) | -| `'light-content'` | string | White texts and icons | -| `'dark-content'` | string | Dark texts and icons (requires API>=23 on Android) | +| Value | Type | Description | +| ----------------- | ------ | ----------------------------------------------------------------------------------------------------------------------------------- | +| `'default'` | string | Default status bar style (light for Android, dark for iOS) | +| `'auto'` | string | Automatically picks `light-content` or `dark-content` based on the current color scheme. Updates whenever the color scheme changes. | +| `'light-content'` | string | White texts and icons | +| `'dark-content'` | string | Dark texts and icons (requires API>=23 on Android) | diff --git a/docs/stylesheet.md b/docs/stylesheet.md index 90c14b962a4..5e3d54a3676 100644 --- a/docs/stylesheet.md +++ b/docs/stylesheet.md @@ -60,7 +60,7 @@ static compose(style1: Object, style2: Object): Object | Object[]; Combines two styles such that `style2` will override any styles in `style1`. If either style is falsy, the other one is returned without allocating an array, saving allocations and maintaining reference equality for PureComponent checks. -```SnackPlayer name=Compose +```SnackPlayer name=Compose&ext=js import {StyleSheet, Text} from 'react-native'; import {SafeAreaView, SafeAreaProvider} from 'react-native-safe-area-context'; diff --git a/docs/text-style-props.md b/docs/text-style-props.md index 227fccadbf4..ff85754108b 100644 --- a/docs/text-style-props.md +++ b/docs/text-style-props.md @@ -27,7 +27,6 @@ import {SafeAreaView, SafeAreaProvider} from 'react-native-safe-area-context'; const fontStyles = ['normal', 'italic']; const fontVariants = [ - undefined, 'small-caps', 'oldstyle-nums', 'lining-nums', @@ -628,7 +627,7 @@ const CustomSlider = ({ type CustomPickerProps = { label: string; - data?: ArrayLike | null; + data?: ArrayLike | undefined; currentIndex: number; onSelected: (index: number) => void; }; @@ -676,7 +675,6 @@ const CustomPicker = ({ const fontStyles = ['normal', 'italic']; const fontVariants = [ - undefined, 'small-caps', 'oldstyle-nums', 'lining-nums', diff --git a/docs/the-new-architecture/direct-manipulation.md b/docs/the-new-architecture/direct-manipulation.md index 6035b6a64b7..c549f6866fe 100644 --- a/docs/the-new-architecture/direct-manipulation.md +++ b/docs/the-new-architecture/direct-manipulation.md @@ -82,8 +82,10 @@ import { View, } from 'react-native'; +type TextInputInstance = React.ComponentRef; + const App = () => { - const inputRef = useRef(null); + const inputRef = useRef(null); const editText = useCallback(() => { inputRef.current?.setNativeProps({text: 'Edited Text'}); }, []); diff --git a/package.json b/package.json index 9a3cdd6214f..bb1fa79b81c 100644 --- a/package.json +++ b/package.json @@ -29,10 +29,10 @@ "dev:vercel": "vercel dev" }, "devDependencies": { - "@eslint/css": "^1.3.0", + "@eslint/css": "^1.4.0", "@eslint/js": "^9.39.4", "@manypkg/cli": "^0.25.1", - "@typescript-eslint/parser": "^8.61.0", + "@typescript-eslint/parser": "^8.69.0", "alex": "^11.0.1", "case-police": "^2.2.1", "eslint": "^9.39.4", @@ -41,18 +41,19 @@ "eslint-plugin-case-police": "2.2.1", "eslint-plugin-mdx": "^3.8.1", "eslint-plugin-prettier": "^5.5.6", - "eslint-plugin-yml": "^3.4.0", - "globals": "^17.6.0", + "eslint-plugin-yml": "^3.8.1", + "globals": "^17.12.0", "husky": "^9.1.7", "prettier": "^3.9.6", "pretty-quick": "^4.2.2", "typescript": "^6.0.3", - "typescript-eslint": "^8.61.0" + "typescript-eslint": "^8.69.0" }, "resolutions": { + "image-size": "^2", + "qs": "^6.15.2", "serialize-javascript": "^7.0.5", "serve-handler/minimatch": "3.1.4", - "qs": "^6.15.2", "uuid": "^11.1.1" } } diff --git a/packages/lint-examples/package.json b/packages/lint-examples/package.json index 3b7eebb7ab0..75edfca9c41 100644 --- a/packages/lint-examples/package.json +++ b/packages/lint-examples/package.json @@ -16,13 +16,13 @@ "@babel/preset-env": "^7.29.5", "@babel/runtime": "^7.29.2", "@eslint/compat": "^2.1.0", - "@react-native-community/slider": "^5.2.0", - "@react-native/babel-preset": "^0.86.0", - "@react-native/eslint-config": "^0.86.0", - "@react-native/eslint-plugin": "^0.86.0", - "@react-native/typescript-config": "^0.86.0", + "@react-native-community/slider": "^5.2.1", + "@react-native/babel-preset": "^0.87.1", + "@react-native/eslint-config": "^0.87.1", + "@react-native/eslint-plugin": "^0.87.1", + "@react-native/typescript-config": "^0.87.1", "@types/node": "^24.13.2", - "@types/react": "^19.2.17", + "@types/react": "19.2.17", "eslint": "^9.39.4", "eslint-plugin-eslint-comments": "^3.2.0", "eslint-plugin-jest": "^29.15.2", @@ -30,8 +30,8 @@ "glob": "^13.0.6", "prettier": "^3.9.6", "react": "^19.2.8", - "react-native": "^0.86.0", - "react-native-safe-area-context": "^5.8.0", + "react-native": "^0.87.1", + "react-native-safe-area-context": "^5.9.1", "typescript": "^6.0.3" } } diff --git a/website/package.json b/website/package.json index 3941b7e3751..38039a96bde 100644 --- a/website/package.json +++ b/website/package.json @@ -71,7 +71,7 @@ "@react-native-website/lint-examples": "*", "@signalwire/docusaurus-plugin-llms-txt": "^1.2.2", "@types/google.analytics": "^0.0.46", - "@types/react": "^19.2.17", + "@types/react": "19.2.17", "eslint": "^9.39.4", "glob": "^13.0.6", "prettier": "^3.9.6", diff --git a/website/versioned_docs/version-0.87/animated.md b/website/versioned_docs/version-0.87/animated.md index 399acca67ba..4746db9d0a0 100644 --- a/website/versioned_docs/version-0.87/animated.md +++ b/website/versioned_docs/version-0.87/animated.md @@ -192,7 +192,8 @@ For example, when working with horizontal scrolling gestures, you would do the f x: scrollX } } - }] + }], + {useNativeEvent: true} )} ``` diff --git a/website/versioned_docs/version-0.87/animatedvaluexy.md b/website/versioned_docs/version-0.87/animatedvaluexy.md index e5ddd564489..b1952816906 100644 --- a/website/versioned_docs/version-0.87/animatedvaluexy.md +++ b/website/versioned_docs/version-0.87/animatedvaluexy.md @@ -17,13 +17,16 @@ const DraggableView = () => { const panResponder = PanResponder.create({ onStartShouldSetPanResponder: () => true, - onPanResponderMove: Animated.event([ - null, - { - dx: pan.x, // x,y are Animated.Value - dy: pan.y, - }, - ]), + onPanResponderMove: Animated.event( + [ + null, + { + dx: pan.x, // x,y are Animated.Value + dy: pan.y, + }, + ], + {useNativeDriver: false}, + ), onPanResponderRelease: () => { Animated.spring( pan, // Auto-multiplexed diff --git a/website/versioned_docs/version-0.87/animations.md b/website/versioned_docs/version-0.87/animations.md index 59ec24ebb96..7619c6713d4 100644 --- a/website/versioned_docs/version-0.87/animations.md +++ b/website/versioned_docs/version-0.87/animations.md @@ -293,15 +293,15 @@ Gestures, like panning or scrolling, and other events can map directly to animat For example, when working with horizontal scrolling gestures, you would do the following in order to map `event.nativeEvent.contentOffset.x` to `scrollX` (an `Animated.Value`): ```tsx - onScroll={Animated.event( - // scrollX = e.nativeEvent.contentOffset.x - [{nativeEvent: { - contentOffset: { - x: scrollX - } - } - }] - )} +onScroll={Animated.event( + // scrollX = e.nativeEvent.contentOffset.x + [{ + nativeEvent: { + contentOffset: { x: scrollX } + } + }], + {useNativeDriver: true} +)} ``` The following example implements a horizontal scrolling carousel where the scroll position indicators are animated using the `Animated.event` used in the `ScrollView` @@ -338,15 +338,18 @@ const App = () => { horizontal={true} pagingEnabled showsHorizontalScrollIndicator={false} - onScroll={Animated.event([ - { - nativeEvent: { - contentOffset: { - x: scrollX, + onScroll={Animated.event( + [ + { + nativeEvent: { + contentOffset: { + x: scrollX, + }, }, }, - }, - ])} + ], + {useNativeDriver: true}, + )} scrollEventThrottle={1}> {images.map((image, imageIndex) => { return ( @@ -459,7 +462,9 @@ const App = () => { const panResponder = useRef( PanResponder.create({ onMoveShouldSetPanResponder: () => true, - onPanResponderMove: Animated.event([null, {dx: pan.x, dy: pan.y}]), + onPanResponderMove: Animated.event([null, {dx: pan.x, dy: pan.y}], { + useNativeDriver: false, + }), onPanResponderRelease: () => { Animated.spring(pan, { toValue: {x: 0, y: 0}, diff --git a/website/versioned_docs/version-0.87/appstate.md b/website/versioned_docs/version-0.87/appstate.md index fb4188f6cf1..b5d6ad607f5 100644 --- a/website/versioned_docs/version-0.87/appstate.md +++ b/website/versioned_docs/version-0.87/appstate.md @@ -39,7 +39,7 @@ const AppStateExample = () => { useEffect(() => { const subscription = AppState.addEventListener('change', nextAppState => { if ( - appState.current.match(/inactive|background/) && + appState.current?.match(/inactive|background/) && nextAppState === 'active' ) { console.log('App has come to the foreground!'); diff --git a/website/versioned_docs/version-0.87/dimensions.md b/website/versioned_docs/version-0.87/dimensions.md index c9c6b70c613..b5bfa7635c7 100644 --- a/website/versioned_docs/version-0.87/dimensions.md +++ b/website/versioned_docs/version-0.87/dimensions.md @@ -26,9 +26,14 @@ If you are targeting foldable devices or devices which can change the screen siz ## Example -```SnackPlayer name=Dimensions%20Example +```SnackPlayer name=Dimensions%20Example&ext=tsx import {useState, useEffect} from 'react'; -import {StyleSheet, Text, Dimensions} from 'react-native'; +import { + StyleSheet, + Text, + Dimensions, + type DimensionsPayload, +} from 'react-native'; import {SafeAreaView, SafeAreaProvider} from 'react-native-safe-area-context'; const windowDimensions = Dimensions.get('window'); @@ -43,8 +48,10 @@ const App = () => { useEffect(() => { const subscription = Dimensions.addEventListener( 'change', - ({window, screen}) => { - setDimensions({window, screen}); + ({window, screen}: DimensionsPayload) => { + if (window && screen) { + setDimensions({window, screen}); + } }, ); return () => subscription?.remove(); diff --git a/website/versioned_docs/version-0.87/drawerlayoutandroid.md b/website/versioned_docs/version-0.87/drawerlayoutandroid.md index 079f50b60a6..8d4210edaf0 100644 --- a/website/versioned_docs/version-0.87/drawerlayoutandroid.md +++ b/website/versioned_docs/version-0.87/drawerlayoutandroid.md @@ -95,8 +95,12 @@ import { View, } from 'react-native'; +type DrawerLayoutAndroidInstance = React.ComponentRef< + typeof DrawerLayoutAndroid +>; + const App = () => { - const drawer = useRef(null); + const drawer = useRef(null); const [drawerPosition, setDrawerPosition] = useState<'left' | 'right'>( 'left', ); diff --git a/website/versioned_docs/version-0.87/flexbox.md b/website/versioned_docs/version-0.87/flexbox.md index c98c516714d..55ae3f1d481 100644 --- a/website/versioned_docs/version-0.87/flexbox.md +++ b/website/versioned_docs/version-0.87/flexbox.md @@ -1099,12 +1099,17 @@ export default AlignSelfLayout; ```SnackPlayer name=Align%20Self&ext=tsx import {useState} from 'react'; -import {View, TouchableOpacity, Text, StyleSheet} from 'react-native'; +import { + View, + TouchableOpacity, + Text, + StyleSheet, + type ViewStyle, +} from 'react-native'; import type {PropsWithChildren} from 'react'; -import type {FlexAlignType} from 'react-native'; const AlignSelfLayout = () => { - const [alignSelf, setAlignSelf] = useState('stretch'); + const [alignSelf, setAlignSelf] = useState('stretch'); return ( { type PreviewLayoutProps = PropsWithChildren<{ label: string; - values: FlexAlignType[]; - selectedValue: string; - setSelectedValue: (value: FlexAlignType) => void; + values: ViewStyle['alignSelf'][]; + selectedValue: ViewStyle['alignSelf']; + setSelectedValue: (value: ViewStyle['alignSelf']) => void; }>; const PreviewLayout = ({ diff --git a/website/versioned_docs/version-0.87/improvingux.md b/website/versioned_docs/version-0.87/improvingux.md index 4b8e807c6c4..fe73ba56d53 100644 --- a/website/versioned_docs/version-0.87/improvingux.md +++ b/website/versioned_docs/version-0.87/improvingux.md @@ -125,8 +125,10 @@ import { StyleSheet, } from 'react-native'; +type TextInputInstance = React.ComponentRef; + const App = () => { - const emailInput = useRef(null); + const emailInput = useRef(null); const [name, setName] = useState(''); const [email, setEmail] = useState(''); @@ -325,8 +327,10 @@ import { StyleSheet, } from 'react-native'; +type TextInputInstance = React.ComponentRef; + const App = () => { - const emailInput = useRef(null); + const emailInput = useRef(null); const [email, setEmail] = useState(''); const submit = () => { diff --git a/website/versioned_docs/version-0.87/layout-props.md b/website/versioned_docs/version-0.87/layout-props.md index 36797b8dc86..116f4a76b55 100644 --- a/website/versioned_docs/version-0.87/layout-props.md +++ b/website/versioned_docs/version-0.87/layout-props.md @@ -197,8 +197,7 @@ import { StyleSheet, Text, View, - FlexAlignType, - FlexStyle, + ViewStyle, } from 'react-native'; import {SafeAreaView, SafeAreaProvider} from 'react-native-safe-area-context'; @@ -217,7 +216,7 @@ const App = () => { alignItems: alignItemsArr[alignItems], direction: directions[direction], flexWrap: wraps[wrap], - } as FlexStyle; + }; const changeSetting = ( value: number, @@ -307,29 +306,29 @@ const App = () => { ); }; -const flexDirections = [ +const flexDirections: ViewStyle['flexDirection'][] = [ 'row', 'row-reverse', 'column', 'column-reverse', -] as FlexStyle['flexDirection'][]; -const justifyContents = [ +]; +const justifyContents: ViewStyle['justifyContent'][] = [ 'flex-start', 'flex-end', 'center', 'space-between', 'space-around', 'space-evenly', -] as FlexStyle['justifyContent'][]; -const alignItemsArr = [ +]; +const alignItemsArr: ViewStyle['alignItems'][] = [ 'flex-start', 'flex-end', 'center', 'stretch', 'baseline', -] as FlexAlignType[]; -const wraps = ['nowrap', 'wrap', 'wrap-reverse']; -const directions = ['inherit', 'ltr', 'rtl']; +]; +const wraps: ViewStyle['flexWrap'][] = ['nowrap', 'wrap', 'wrap-reverse']; +const directions: ViewStyle['direction'][] = ['inherit', 'ltr', 'rtl']; const styles = StyleSheet.create({ container: { diff --git a/website/versioned_docs/version-0.87/legacy/direct-manipulation.md b/website/versioned_docs/version-0.87/legacy/direct-manipulation.md index bc7953e544b..7eb6479d8a0 100644 --- a/website/versioned_docs/version-0.87/legacy/direct-manipulation.md +++ b/website/versioned_docs/version-0.87/legacy/direct-manipulation.md @@ -140,14 +140,16 @@ export default App; ```SnackPlayer name=Forwarding%20setNativeProps&ext=tsx -import {forwardRef} from 'react'; +import {forwardRef, ElementRef} from 'react'; import {Text, TouchableOpacity, View} from 'react-native'; -const MyButton = forwardRef((props, ref) => ( - - {props.label} - -)); +const MyButton = forwardRef, {label: string}>( + (props, ref) => ( + + {props.label} + + ), +); const App = () => ( @@ -229,8 +231,10 @@ import { View, } from 'react-native'; +type TextInputInstance = React.ComponentRef; + const App = () => { - const inputRef = useRef(null); + const inputRef = useRef(null); const editText = useCallback(() => { inputRef.current?.setNativeProps({text: 'Edited Text'}); }, []); @@ -379,9 +383,12 @@ type Measurements = { height: number; }; +type TextInstance = React.ComponentRef; +type ViewInstance = React.ComponentRef; + const App = () => { - const textContainerRef = useRef(null); - const textRef = useRef(null); + const textContainerRef = useRef(null); + const textRef = useRef(null); const [measure, setMeasure] = useState(null); useEffect(() => { diff --git a/website/versioned_docs/version-0.87/linking.md b/website/versioned_docs/version-0.87/linking.md index 308d1660d61..939292522d5 100644 --- a/website/versioned_docs/version-0.87/linking.md +++ b/website/versioned_docs/version-0.87/linking.md @@ -336,7 +336,7 @@ const useInitialURL = () => { // The setTimeout is just for testing purpose setTimeout(() => { - setUrl(initialUrl); + setUrl(initialUrl ?? null); setProcessing(false); }, 1000); }; @@ -390,7 +390,7 @@ const useInitialURL = () => { // The setTimeout is just for testing purpose setTimeout(() => { - setUrl(initialUrl); + setUrl(initialUrl ?? null); setProcessing(false); }, 1000); }; diff --git a/website/versioned_docs/version-0.87/panresponder.md b/website/versioned_docs/version-0.87/panresponder.md index b113a55559a..1a32583a1ef 100644 --- a/website/versioned_docs/version-0.87/panresponder.md +++ b/website/versioned_docs/version-0.87/panresponder.md @@ -91,7 +91,9 @@ const App = () => { const panResponder = useRef( PanResponder.create({ onMoveShouldSetPanResponder: () => true, - onPanResponderMove: Animated.event([null, {dx: pan.x, dy: pan.y}]), + onPanResponderMove: Animated.event([null, {dx: pan.x, dy: pan.y}], { + useNativeDriver: false, + }), onPanResponderRelease: () => { pan.extractOffset(); }, diff --git a/website/versioned_docs/version-0.87/progressbarandroid.md b/website/versioned_docs/version-0.87/progressbarandroid.md index a08adfae637..1a5a58bd659 100644 --- a/website/versioned_docs/version-0.87/progressbarandroid.md +++ b/website/versioned_docs/version-0.87/progressbarandroid.md @@ -19,15 +19,19 @@ const App = () => { Circle Progress Indicator - + Horizontal Progress Indicator - + Colored Progress Indicator - + Fixed Progress Value diff --git a/website/versioned_docs/version-0.87/statusbar.md b/website/versioned_docs/version-0.87/statusbar.md index 493966e4f0b..b0fead82c11 100644 --- a/website/versioned_docs/version-0.87/statusbar.md +++ b/website/versioned_docs/version-0.87/statusbar.md @@ -26,7 +26,7 @@ import { } from 'react-native'; import {SafeAreaView, SafeAreaProvider} from 'react-native-safe-area-context'; -const STYLES = ['default', 'dark-content', 'light-content']; +const STYLES = ['default', 'auto', 'dark-content', 'light-content']; const TRANSITIONS = ['fade', 'slide', 'none']; const App = () => { @@ -134,7 +134,7 @@ import { } from 'react-native'; import {SafeAreaView, SafeAreaProvider} from 'react-native-safe-area-context'; -const STYLES = ['default', 'dark-content', 'light-content'] as const; +const STYLES = ['default', 'auto', 'dark-content', 'light-content'] as const; const TRANSITIONS = ['fade', 'slide', 'none'] as const; const App = () => { @@ -407,8 +407,9 @@ Status bar style type. **Constants:** -| Value | Type | Description | -| ----------------- | ------ | ---------------------------------------------------------- | -| `'default'` | string | Default status bar style (dark for iOS, light for Android) | -| `'light-content'` | string | White texts and icons | -| `'dark-content'` | string | Dark texts and icons (requires API>=23 on Android) | +| Value | Type | Description | +| ----------------- | ------ | ----------------------------------------------------------------------------------------------------------------------------------- | +| `'default'` | string | Default status bar style (light for Android, dark for iOS) | +| `'auto'` | string | Automatically picks `light-content` or `dark-content` based on the current color scheme. Updates whenever the color scheme changes. | +| `'light-content'` | string | White texts and icons | +| `'dark-content'` | string | Dark texts and icons (requires API>=23 on Android) | diff --git a/website/versioned_docs/version-0.87/stylesheet.md b/website/versioned_docs/version-0.87/stylesheet.md index 90c14b962a4..5e3d54a3676 100644 --- a/website/versioned_docs/version-0.87/stylesheet.md +++ b/website/versioned_docs/version-0.87/stylesheet.md @@ -60,7 +60,7 @@ static compose(style1: Object, style2: Object): Object | Object[]; Combines two styles such that `style2` will override any styles in `style1`. If either style is falsy, the other one is returned without allocating an array, saving allocations and maintaining reference equality for PureComponent checks. -```SnackPlayer name=Compose +```SnackPlayer name=Compose&ext=js import {StyleSheet, Text} from 'react-native'; import {SafeAreaView, SafeAreaProvider} from 'react-native-safe-area-context'; diff --git a/website/versioned_docs/version-0.87/text-style-props.md b/website/versioned_docs/version-0.87/text-style-props.md index 227fccadbf4..ff85754108b 100644 --- a/website/versioned_docs/version-0.87/text-style-props.md +++ b/website/versioned_docs/version-0.87/text-style-props.md @@ -27,7 +27,6 @@ import {SafeAreaView, SafeAreaProvider} from 'react-native-safe-area-context'; const fontStyles = ['normal', 'italic']; const fontVariants = [ - undefined, 'small-caps', 'oldstyle-nums', 'lining-nums', @@ -628,7 +627,7 @@ const CustomSlider = ({ type CustomPickerProps = { label: string; - data?: ArrayLike | null; + data?: ArrayLike | undefined; currentIndex: number; onSelected: (index: number) => void; }; @@ -676,7 +675,6 @@ const CustomPicker = ({ const fontStyles = ['normal', 'italic']; const fontVariants = [ - undefined, 'small-caps', 'oldstyle-nums', 'lining-nums', diff --git a/website/versioned_docs/version-0.87/the-new-architecture/direct-manipulation.md b/website/versioned_docs/version-0.87/the-new-architecture/direct-manipulation.md index 6035b6a64b7..c549f6866fe 100644 --- a/website/versioned_docs/version-0.87/the-new-architecture/direct-manipulation.md +++ b/website/versioned_docs/version-0.87/the-new-architecture/direct-manipulation.md @@ -82,8 +82,10 @@ import { View, } from 'react-native'; +type TextInputInstance = React.ComponentRef; + const App = () => { - const inputRef = useRef(null); + const inputRef = useRef(null); const editText = useCallback(() => { inputRef.current?.setNativeProps({text: 'Edited Text'}); }, []); diff --git a/website/versioned_docs/version-0.87/the-new-architecture/fabric-component-native-commands.md b/website/versioned_docs/version-0.87/the-new-architecture/fabric-component-native-commands.md index 5cb5dbd6710..44fa17d7d44 100644 --- a/website/versioned_docs/version-0.87/the-new-architecture/fabric-component-native-commands.md +++ b/website/versioned_docs/version-0.87/the-new-architecture/fabric-component-native-commands.md @@ -99,7 +99,7 @@ In TypeScript, the `React.ElementRef` is deprecated. The correct type to use is ## 2. Update the App code to use the new command -Now you can use the command in the the app. +Now you can use the command in the app. diff --git a/yarn.lock b/yarn.lock index 73cb32c8009..1cfa7b4c4a8 100644 --- a/yarn.lock +++ b/yarn.lock @@ -2352,14 +2352,14 @@ mdn-data "2.28.1" source-map-js "^1.2.1" -"@eslint/css@^1.3.0": - version "1.3.0" - resolved "https://registry.yarnpkg.com/@eslint/css/-/css-1.3.0.tgz#39d107d18b4daaaca23044fb467791c8ef728ba4" - integrity sha512-MwY657chvFQWtXmO86syZgD+JpWlzDq7VkKZyi65PwHDbhELQPMzPXh5s8rhrjptG6FCuls0puCmlXk66+14uA== +"@eslint/css@^1.4.0": + version "1.4.0" + resolved "https://registry.yarnpkg.com/@eslint/css/-/css-1.4.0.tgz#6fb8a340ca324b26a095a6237874a5d0770c1389" + integrity sha512-OnRNKgnbX+tufPuZc2kOJS+v1iIARvfJHRNEAVwN77DBpojl+rGjEP8NKTL6pEZ7BR+HtwIuSSdrymEFlANGxg== dependencies: "@eslint/core" "^1.2.1" "@eslint/css-tree" "^4.0.4" - "@eslint/plugin-kit" "^0.7.1" + "@eslint/plugin-kit" "^0.7.2" "@eslint/eslintrc@^3.3.5": version "3.3.5" @@ -2394,10 +2394,10 @@ "@eslint/core" "^0.17.0" levn "^0.4.1" -"@eslint/plugin-kit@^0.7.0", "@eslint/plugin-kit@^0.7.1": - version "0.7.1" - resolved "https://registry.yarnpkg.com/@eslint/plugin-kit/-/plugin-kit-0.7.1.tgz#c4125fd015eceeb09b793109fdbcd4dd0a02d346" - integrity sha512-rZAP3aVgB9ds9KOeUSL+zZ21hPmo8dh6fnIFwRQj5EAZl9gzR7wxYbYXYysAM8CTqGmUGyp2S4kUdV17MnGuWQ== +"@eslint/plugin-kit@^0.7.0", "@eslint/plugin-kit@^0.7.2": + version "0.7.2" + resolved "https://registry.yarnpkg.com/@eslint/plugin-kit/-/plugin-kit-0.7.2.tgz#4b0962f3f2c7ce8bc98b3ecfe34525c09d2cb729" + integrity sha512-+CNAzxglkrpNf/kKywqQfk74QjtceuOE7Qm+AF8miRvPF/wmmK5+OJOgVh3AVTT3RP2mH3+FOaxlE5v72owk0A== dependencies: "@eslint/core" "^1.2.1" levn "^0.4.1" @@ -3554,28 +3554,28 @@ dependencies: oxc-parser "0.139.0" -"@react-native-community/slider@^5.2.0": - version "5.2.0" - resolved "https://registry.yarnpkg.com/@react-native-community/slider/-/slider-5.2.0.tgz#c154ac4ec10537160462d7a9f3e2e43098257302" - integrity sha512-484sH8aWEaSjxaZ7HT3YZ8CKDcNes2synko1vdEz5DFEdvKAduxKJTj22L/qBMD7rtIkfbX69DMzWDAGbOAV6w== +"@react-native-community/slider@^5.2.1": + version "5.2.1" + resolved "https://registry.yarnpkg.com/@react-native-community/slider/-/slider-5.2.1.tgz#163243898394256af76dcaabde994a9ff1464717" + integrity sha512-HBDPRFRIN47hRtd5tdDWZp3kkVN1z98jGbK9wHOfUfVO+PbBDZzD7xjiiyBqNpg6Rom2QPFOpBZzsB2bHy4yAQ== -"@react-native/assets-registry@0.86.0": - version "0.86.0" - resolved "https://registry.yarnpkg.com/@react-native/assets-registry/-/assets-registry-0.86.0.tgz#560e78135969d1198aabfdc4ae74faae336463d0" - integrity sha512-nIaXbm2jX1OTYp0qbviJ3O6KZivoE8z3BnhUQ2LsqfZSWRoOK/n1qsiAr6oALiNKWnXY3j2KPwtYORnZzp8xew== +"@react-native/asset-utils@0.87.1": + version "0.87.1" + resolved "https://registry.yarnpkg.com/@react-native/asset-utils/-/asset-utils-0.87.1.tgz#b8a129103bf270b74964ba3b21abcb791385ff06" + integrity sha512-FeFnbn9ENPs7IVBzZt1bBWfiRGvT4q+CsWwXGFyKVW/1ol3ylBRuTtXBGHIAmcNN4fUR60nSXsCN19pzNHkPgA== -"@react-native/babel-plugin-codegen@0.86.0": - version "0.86.0" - resolved "https://registry.yarnpkg.com/@react-native/babel-plugin-codegen/-/babel-plugin-codegen-0.86.0.tgz#0300bbb88210b3ed73a148eb13943c0257db08c2" - integrity sha512-qdsABWNW7uTll90l4Vh03gjeyu3WVDi2CyiiyvYGMRDcoYbjbQi6df3BMAm9lQI2yslZ1T14LlDDAsgTwNxplA== +"@react-native/babel-plugin-codegen@0.87.1": + version "0.87.1" + resolved "https://registry.yarnpkg.com/@react-native/babel-plugin-codegen/-/babel-plugin-codegen-0.87.1.tgz#2b52e794e9caf22d8a3c2ad6ca1f2239406a4a5f" + integrity sha512-DfnyLAHG7jH4pqeID7ib6AeD6gG8T+KvM3c/w/yEa5ONkfRcHvTC8JMIRdhUqs4ruA+8xbYcNVQzewYRCPm1Xw== dependencies: "@babel/traverse" "^7.29.0" - "@react-native/codegen" "0.86.0" + "@react-native/codegen" "0.87.1" -"@react-native/babel-preset@^0.86.0": - version "0.86.0" - resolved "https://registry.yarnpkg.com/@react-native/babel-preset/-/babel-preset-0.86.0.tgz#28d066d5a97491188fcce23625a41c9497cdce39" - integrity sha512-bYQcWiPySNvF4dns9Ls9gMmwgq66ohvM9Fwc/Kn8r85t66UNHxch3p1QwPiSorDelFauZwJbgo9+ReibTgvpbA== +"@react-native/babel-preset@^0.87.1": + version "0.87.1" + resolved "https://registry.yarnpkg.com/@react-native/babel-preset/-/babel-preset-0.87.1.tgz#72f2d38c854e9f0181a74db5810bd570624e0c41" + integrity sha512-EN1oo8IqsJgq++na/buq6hYsdZJY5A8+URohSA620eGz5a+322WOAcBuvcYZTeovYwR2NegvpPk5h+QVk8iUMw== dependencies: "@babel/core" "^7.25.2" "@babel/plugin-proposal-export-default-from" "^7.24.7" @@ -3606,59 +3606,58 @@ "@babel/plugin-transform-runtime" "^7.24.7" "@babel/plugin-transform-typescript" "^7.25.2" "@babel/plugin-transform-unicode-regex" "^7.24.7" - "@react-native/babel-plugin-codegen" "0.86.0" - babel-plugin-syntax-hermes-parser "0.36.0" + "@react-native/babel-plugin-codegen" "0.87.1" + babel-plugin-syntax-hermes-parser "0.36.1" babel-plugin-transform-flow-enums "^0.0.2" react-refresh "^0.14.0" -"@react-native/codegen@0.86.0": - version "0.86.0" - resolved "https://registry.yarnpkg.com/@react-native/codegen/-/codegen-0.86.0.tgz#5508cf5d302df24baab2c16bf672e94530a09639" - integrity sha512-uTs9DBo3+/lUqinsGZK0FKJRBVClrwMXoZToaDxE1Q2SL2e55vs2GwyZfIKzPl5uJnbu4PfFMIp0/mLXLWUMuA== +"@react-native/codegen@0.87.1": + version "0.87.1" + resolved "https://registry.yarnpkg.com/@react-native/codegen/-/codegen-0.87.1.tgz#2069ff2c179969e64c6cb994ba4a6493ece1b6e3" + integrity sha512-qbaqEdlUfj2vRgvWTpMoNgHnEqAhAYJLUrpGkb0WC9n0kdtqUvgigpz4bDktZwolM9BemXwgGFgyiAnbs3t0xw== dependencies: "@babel/core" "^7.25.2" "@babel/parser" "^7.29.0" - hermes-parser "0.36.0" + hermes-parser "0.36.1" invariant "^2.2.4" nullthrows "^1.1.1" tinyglobby "^0.2.15" yargs "^17.6.2" -"@react-native/community-cli-plugin@0.86.0": - version "0.86.0" - resolved "https://registry.yarnpkg.com/@react-native/community-cli-plugin/-/community-cli-plugin-0.86.0.tgz#f18fb8cb6f792eb1d3e5fba7b0a08c8709273bf5" - integrity sha512-Jv8p1ebEPfTzs8gmrjsdT2XMXFfeAg45Pman+XPLFGaSeGAZkutRFRyX9Cs9aGTSOyIA9YPJ6vDNb1ayTf1FKQ== +"@react-native/community-cli-plugin@0.87.1": + version "0.87.1" + resolved "https://registry.yarnpkg.com/@react-native/community-cli-plugin/-/community-cli-plugin-0.87.1.tgz#1ad0cb0aa6f69a440d8811fb484d3aabd6453b6a" + integrity sha512-aGBae6v+ngy8fIpU1EOaVxn/8DOgmJNphEdn5Eb0wTchUCxr8bDjpTJYNdrptyn3qI/elk8r9agQ2OBaFvrRlw== dependencies: - "@react-native/dev-middleware" "0.86.0" + "@react-native/asset-utils" "0.87.1" + "@react-native/dev-middleware" "0.87.1" debug "^4.4.0" invariant "^2.2.4" - metro "^0.84.3" - metro-config "^0.84.3" - metro-core "^0.84.3" + metro "^0.87.0" semver "^7.1.3" -"@react-native/debugger-frontend@0.86.0": - version "0.86.0" - resolved "https://registry.yarnpkg.com/@react-native/debugger-frontend/-/debugger-frontend-0.86.0.tgz#ca2d2239932a9191eb0addfd967c18c1bcac3304" - integrity sha512-7Mb3nDfyJeys+ELF75Ageu7VKERlnIMoO+aNPoXqTXvz+b41L6l2CqMyLpDHxkBSlenij6gEepPNgaIyWHbJZw== +"@react-native/debugger-frontend@0.87.1": + version "0.87.1" + resolved "https://registry.yarnpkg.com/@react-native/debugger-frontend/-/debugger-frontend-0.87.1.tgz#d557d0f61a7808fbafac19a379d64ce0b7f17059" + integrity sha512-RNm7soJB+8YSauLnsCCylA1eVfT6JWaDTPUEF01uu9YwDyZ7remKlZbXtmVbtscbNGcp+hbI4iZUdVOpQWsHuA== -"@react-native/debugger-shell@0.86.0": - version "0.86.0" - resolved "https://registry.yarnpkg.com/@react-native/debugger-shell/-/debugger-shell-0.86.0.tgz#9b4282775a9d9d2df75b607bf160ff30561218db" - integrity sha512-Y0zEkZzLz8ou6o/VLml1A31X/rMgc6DRjwxwzPMa94qRTMY070WeBCNTITQo4kKTBAUgbxh07oXPQqp0Tpja8w== +"@react-native/debugger-shell@0.87.1": + version "0.87.1" + resolved "https://registry.yarnpkg.com/@react-native/debugger-shell/-/debugger-shell-0.87.1.tgz#f1636f3bdd6258cfc424e95cb11cf1ef0a5cac6f" + integrity sha512-eNbKjcnseJIjy5XCDwyhKOT1ngOg3Dv1fVxTDtnVFqdqjqsbfY4v9JuJG1RZJ7+mFoRRe05HE8GSQU8B7n5xwQ== dependencies: cross-spawn "^7.0.6" debug "^4.4.0" fb-dotslash "0.5.8" -"@react-native/dev-middleware@0.86.0": - version "0.86.0" - resolved "https://registry.yarnpkg.com/@react-native/dev-middleware/-/dev-middleware-0.86.0.tgz#d3c50a25b2c490ebc773e106225699834f8fd778" - integrity sha512-20pTO6yTybmvXvro520H6C7jydIQnLKOl5qFtVEcHSdFrY63r3OGei+Rx9bILgSRmH6jgnfEcijcMx7pwWuQtw== +"@react-native/dev-middleware@0.87.1": + version "0.87.1" + resolved "https://registry.yarnpkg.com/@react-native/dev-middleware/-/dev-middleware-0.87.1.tgz#d66cb75c14a91031a4d920e0b932c678e67b618f" + integrity sha512-KgvAGUaVl6/XrWFAPK8e0ojDRbsdBjr4bnwyn6PC3CwxPQc5iv+i7hMoUwYS8ORSkHKfjt+cV86/mBQ4lG8yfA== dependencies: "@isaacs/ttlcache" "^1.4.1" - "@react-native/debugger-frontend" "0.86.0" - "@react-native/debugger-shell" "0.86.0" + "@react-native/debugger-frontend" "0.87.1" + "@react-native/debugger-shell" "0.87.1" chrome-launcher "^0.15.2" chromium-edge-launcher "^0.3.0" connect "^3.6.5" @@ -3669,16 +3668,16 @@ serve-static "^1.16.2" ws "^7.5.10" -"@react-native/eslint-config@^0.86.0": - version "0.86.0" - resolved "https://registry.yarnpkg.com/@react-native/eslint-config/-/eslint-config-0.86.0.tgz#472f895858ab5643e39fbc564e3864f78991caa2" - integrity sha512-N7dtRMx6eVOScVkZ4+4SCGMWRh+nIbUmdc/yIPWvQdPLHKe5NLHYoyPGZvkwWN0Wj26OJwpXNTp53qE5ZiIjKQ== +"@react-native/eslint-config@^0.87.1": + version "0.87.1" + resolved "https://registry.yarnpkg.com/@react-native/eslint-config/-/eslint-config-0.87.1.tgz#aaddacd46115f528df46844d1fd836ad150f5646" + integrity sha512-l81N+YbiNussfSQe5MYCM/0nnCuXohFgFqSyHHFJFPGjmFVL+FCx2BFLGcQ3++8chXZJ0wZBoO+w89EvNQoeXw== dependencies: "@babel/core" "^7.25.2" "@babel/eslint-parser" "^7.25.1" - "@react-native/eslint-plugin" "0.86.0" - "@typescript-eslint/eslint-plugin" "^8.36.0" - "@typescript-eslint/parser" "^8.36.0" + "@react-native/eslint-plugin" "0.87.1" + "@typescript-eslint/eslint-plugin" "^8.59.2" + "@typescript-eslint/parser" "^8.59.2" eslint-config-prettier "^8.5.0" eslint-plugin-eslint-comments "^3.2.0" eslint-plugin-ft-flow "^2.0.1" @@ -3687,35 +3686,30 @@ eslint-plugin-react-hooks "^7.0.1" eslint-plugin-react-native "^5.0.0" -"@react-native/eslint-plugin@0.86.0", "@react-native/eslint-plugin@^0.86.0": - version "0.86.0" - resolved "https://registry.yarnpkg.com/@react-native/eslint-plugin/-/eslint-plugin-0.86.0.tgz#6ddf39db66225f2ae9e6704d0e71f0d6b13270c4" - integrity sha512-v0zZAO9tfB72RdluTGHZcYDe5fIH6hf/bk8jATTCdwNNWcvPEjHdzuA2O6M4OAEmC+UDq/kURb+LY5f2fGGRGg== - -"@react-native/gradle-plugin@0.86.0": - version "0.86.0" - resolved "https://registry.yarnpkg.com/@react-native/gradle-plugin/-/gradle-plugin-0.86.0.tgz#a712a39ac1514e72740764440ecd763a17ef500f" - integrity sha512-a1RcfaEDqWExCGfCwadIxt4l8FvKYgFqeMf2uzeKyAOnb+vTGNIeCvifFL2MqvgaeYxlER437HbMIajGcuJ1pQ== +"@react-native/eslint-plugin@0.87.1", "@react-native/eslint-plugin@^0.87.1": + version "0.87.1" + resolved "https://registry.yarnpkg.com/@react-native/eslint-plugin/-/eslint-plugin-0.87.1.tgz#4beea0695448745bbf561cbcbe5710e8531cef06" + integrity sha512-38astUSjcbuxfHQgzNiGrALD0il26G5Dz2fnthohXHne1iqmf/VPs/Fvw3RfrTMQ2i8qV04F9fLro7Ds35AAFg== -"@react-native/js-polyfills@0.86.0": - version "0.86.0" - resolved "https://registry.yarnpkg.com/@react-native/js-polyfills/-/js-polyfills-0.86.0.tgz#d289e1720f79c31291b1e27c39e9fa153309692a" - integrity sha512-zYy/Cjd1VTnZ2iCNaG9bDF9C3l2ntESiPRscjIlI5FKugu6aeTwsDSv1aI8Bc4Kp3vEdoVg+UQhLAhE4svREaQ== +"@react-native/gradle-plugin@0.87.1": + version "0.87.1" + resolved "https://registry.yarnpkg.com/@react-native/gradle-plugin/-/gradle-plugin-0.87.1.tgz#5a8a4b2446faacdbedb736fb9445d3cfbb4e3e77" + integrity sha512-bZ5X2BNxaSlfp2KlDtUM910QqW9G1yTIeZXghuv4ag8SAQLzm5Mf9j5GjJfT6ax2Qo2aRT15Vi3Tro/yLGJstA== -"@react-native/normalize-colors@0.86.0": - version "0.86.0" - resolved "https://registry.yarnpkg.com/@react-native/normalize-colors/-/normalize-colors-0.86.0.tgz#bcc3a1b330da6b5a3715431bd2abf8764f334095" - integrity sha512-kG0wfCGghUKlfxkJyyHCDVutWVYWK7/DG58ojA/4v9EfulgF+osuSQmlbNb3rcKX58qutm7JcldSeVLgGFha9g== +"@react-native/normalize-colors@0.87.1": + version "0.87.1" + resolved "https://registry.yarnpkg.com/@react-native/normalize-colors/-/normalize-colors-0.87.1.tgz#b91fa8acbd89242b0cefad5457b1b83384f7d3f6" + integrity sha512-8+AutemzX+a7cuKgTUyb7JUk3sFYgLyrSnlTLrL6LuW/LKDE+FYE8lJGWYhJPJcE51Ge1D8yRzxgQEdEFZtuIw== -"@react-native/typescript-config@^0.86.0": - version "0.86.0" - resolved "https://registry.yarnpkg.com/@react-native/typescript-config/-/typescript-config-0.86.0.tgz#9d109f5ea1eb570c83dcb9b44cfa0b2d0c621577" - integrity sha512-oSuFIEMVAVEXdIvDnrdXsWmIF4fYdgtvAEr2ofn8OY534m7XWm9QAqHHpGUzoK0iwDPlPZ5n2Rb25gqF1SZ0rg== +"@react-native/typescript-config@^0.87.1": + version "0.87.1" + resolved "https://registry.yarnpkg.com/@react-native/typescript-config/-/typescript-config-0.87.1.tgz#07adfcb97c2ba02fe0847ae7ae82de5f0919d3d7" + integrity sha512-AaPFOTglk3GJ7OWSS/vuF9I4qotm5IyazRIgITMwIdAk6JF7iDTec77UZRadUs5/08G593gnF78unedM3skn/Q== -"@react-native/virtualized-lists@0.86.0": - version "0.86.0" - resolved "https://registry.yarnpkg.com/@react-native/virtualized-lists/-/virtualized-lists-0.86.0.tgz#f79d40f969bff28fb48b46b175b076e3094a1b6b" - integrity sha512-4/ZLXdf/OSpPDVO0AsQ1SJdRIzt5t9BNQ46QwGgxvX7/cirYR5k8KXctNGGgW8lQo2gZChEfY2zFCZg9nM/jiw== +"@react-native/virtualized-lists@0.87.1": + version "0.87.1" + resolved "https://registry.yarnpkg.com/@react-native/virtualized-lists/-/virtualized-lists-0.87.1.tgz#c8da1d504c81efdbcb2828ebc7556a536f56087d" + integrity sha512-qSZjeX3UJrDvyfjf7yc3E68rp1XnzE+5nu8ImklhkVC0+p/XiaHPb/KGkRqDdnQyWHN55BRYSsCMEwgVI6WRNQ== dependencies: invariant "^2.2.4" nullthrows "^1.1.1" @@ -4828,7 +4822,7 @@ "@types/history" "^4.7.11" "@types/react" "*" -"@types/react@*", "@types/react@^19.2.17": +"@types/react@*", "@types/react@19.2.17": version "19.2.17" resolved "https://registry.yarnpkg.com/@types/react/-/react-19.2.17.tgz#dccac365baa0f1734ec270ff4b51c89465e8dc7f" integrity sha512-MXfmqaVPEVgkBT/aY0aGCkRWWtByiYQXo3xdQ8r5RzuFrPiRn8Gar2tQdXSUQ2GKV3bkXckek89V8wQBY2Q/Aw== @@ -4956,100 +4950,100 @@ dependencies: "@types/yargs-parser" "*" -"@typescript-eslint/eslint-plugin@8.61.0", "@typescript-eslint/eslint-plugin@^8.36.0": - version "8.61.0" - resolved "https://registry.yarnpkg.com/@typescript-eslint/eslint-plugin/-/eslint-plugin-8.61.0.tgz#db20271974b94a3a54d3b9544e5f5b3481448400" - integrity sha512-bFNvl9ZczlVb+wR2Akszf3gHfKVj/8WanXaGJ3UstTA7brNKg0cNdk6X1Psu5V7MZ2oQtzZKOEzIUehaoxbDGw== +"@typescript-eslint/eslint-plugin@8.69.0", "@typescript-eslint/eslint-plugin@^8.59.2": + version "8.69.0" + resolved "https://registry.yarnpkg.com/@typescript-eslint/eslint-plugin/-/eslint-plugin-8.69.0.tgz#bf74cc392ebcaaf096bc8b4c4d7bbeb0677687b8" + integrity sha512-t5jQTKPIgVW1PE6dR6H6Qz5gm8zjMlX5/2gRaOGd9eO6V7J+tQc6iWKukEe7dY8u9HyYasQ0yfF0/FSSTEO2gA== dependencies: "@eslint-community/regexpp" "^4.12.2" - "@typescript-eslint/scope-manager" "8.61.0" - "@typescript-eslint/type-utils" "8.61.0" - "@typescript-eslint/utils" "8.61.0" - "@typescript-eslint/visitor-keys" "8.61.0" + "@typescript-eslint/scope-manager" "8.69.0" + "@typescript-eslint/type-utils" "8.69.0" + "@typescript-eslint/utils" "8.69.0" + "@typescript-eslint/visitor-keys" "8.69.0" ignore "^7.0.5" natural-compare "^1.4.0" ts-api-utils "^2.5.0" -"@typescript-eslint/parser@8.61.0", "@typescript-eslint/parser@^8.36.0", "@typescript-eslint/parser@^8.61.0": - version "8.61.0" - resolved "https://registry.yarnpkg.com/@typescript-eslint/parser/-/parser-8.61.0.tgz#1afe73c9ccce16b7a26d6b95f9400b0ccc34af87" - integrity sha512-5B7PfA2e1NQGCnDHd/0lW7W3gvp3d59Ryw54FYO8Uswxo9f6ikw3AZV+Xj/TvpImmpsiYyUqAfhC6kJID1jF6w== +"@typescript-eslint/parser@8.69.0", "@typescript-eslint/parser@^8.59.2", "@typescript-eslint/parser@^8.69.0": + version "8.69.0" + resolved "https://registry.yarnpkg.com/@typescript-eslint/parser/-/parser-8.69.0.tgz#de3ead2b35e5c71580eda40820adb4fd14834ca1" + integrity sha512-l4b0DhWioGg6Gt2ebGlvfkFMOjRsauxtsnDRwUSRX1qHq3HdTfQHV8wW9zEXeciai6HfeaKOedQn2Zoofx3WBw== dependencies: - "@typescript-eslint/scope-manager" "8.61.0" - "@typescript-eslint/types" "8.61.0" - "@typescript-eslint/typescript-estree" "8.61.0" - "@typescript-eslint/visitor-keys" "8.61.0" + "@typescript-eslint/scope-manager" "8.69.0" + "@typescript-eslint/types" "8.69.0" + "@typescript-eslint/typescript-estree" "8.69.0" + "@typescript-eslint/visitor-keys" "8.69.0" debug "^4.4.3" -"@typescript-eslint/project-service@8.61.0": - version "8.61.0" - resolved "https://registry.yarnpkg.com/@typescript-eslint/project-service/-/project-service-8.61.0.tgz#417a2feac32e8ebd336d63f068c3b42b736ea1ac" - integrity sha512-DV42F7MLJO6Rax7SK1yg43tcnEfGUrurSpSxKuVX+a3RCTzBlH3fuxprrOJXKCJGAaw82xXocikJ0uQaqwXgGA== +"@typescript-eslint/project-service@8.69.0": + version "8.69.0" + resolved "https://registry.yarnpkg.com/@typescript-eslint/project-service/-/project-service-8.69.0.tgz#cf728554436a50e644a5214a89fe02cb1ffa9af8" + integrity sha512-yi4obFrHMmnsesWehHbkg9zMA7Jt8cXT+mKM08G999pH1yT6nqgsHx7MYm0uY1wAj8CqiBXYRJ7WAT0QdQHQXg== dependencies: - "@typescript-eslint/tsconfig-utils" "^8.61.0" - "@typescript-eslint/types" "^8.61.0" + "@typescript-eslint/tsconfig-utils" "^8.69.0" + "@typescript-eslint/types" "^8.69.0" debug "^4.4.3" -"@typescript-eslint/scope-manager@8.61.0": - version "8.61.0" - resolved "https://registry.yarnpkg.com/@typescript-eslint/scope-manager/-/scope-manager-8.61.0.tgz#93c2520d05653fe65eb9ee98efc74fd0134a7852" - integrity sha512-IWdXFHFSb6mlC3HPc7QsLDm5zYEbUla6trDEHf32D3/dnuUyXd87plScSNXSbm0/RxMvObpI17sv/EDTGrGZkA== +"@typescript-eslint/scope-manager@8.69.0": + version "8.69.0" + resolved "https://registry.yarnpkg.com/@typescript-eslint/scope-manager/-/scope-manager-8.69.0.tgz#13f3d1e25108e95a9ceb5a198806d1fa558f8c7a" + integrity sha512-ewfspqWvSxKSOaplqAUNbaSFO0eB6w1EtQ+esfYFRm3614Ty4uNtExkcbgd6nWsXphbqKyf9ZYdbZdv2xEoWEQ== dependencies: - "@typescript-eslint/types" "8.61.0" - "@typescript-eslint/visitor-keys" "8.61.0" + "@typescript-eslint/types" "8.69.0" + "@typescript-eslint/visitor-keys" "8.69.0" -"@typescript-eslint/tsconfig-utils@8.61.0", "@typescript-eslint/tsconfig-utils@^8.61.0": - version "8.61.0" - resolved "https://registry.yarnpkg.com/@typescript-eslint/tsconfig-utils/-/tsconfig-utils-8.61.0.tgz#05d6e3ff20001674ebcd22d03dac29ee448043ba" - integrity sha512-O5Amvdv9ztMpxpf+vmFULGG78IE6Qwdr3bCGvqwG4nwc9H2qXkOYJJnRbRHyMkQTjv1d03olqwwwzHLMqpFePQ== +"@typescript-eslint/tsconfig-utils@8.69.0", "@typescript-eslint/tsconfig-utils@^8.69.0": + version "8.69.0" + resolved "https://registry.yarnpkg.com/@typescript-eslint/tsconfig-utils/-/tsconfig-utils-8.69.0.tgz#d3b0ccc781ab252a90a0b3989b9d1eb85ab59469" + integrity sha512-xNqK7YTDZsLniQMV/4rpFR8Z5JlqeRvVjuG1YgF/mdPVH84HSD19L8CczMA0qg2RfwEV231GHH3VnToJDo4MfQ== -"@typescript-eslint/type-utils@8.61.0": - version "8.61.0" - resolved "https://registry.yarnpkg.com/@typescript-eslint/type-utils/-/type-utils-8.61.0.tgz#50219b57e6b89cecfb1a15f093b15ec9ee019974" - integrity sha512-TuBiQYIkd97yBfInHCTKVYMbX4kvEmpOEuixIuzCU9p8BGT1SfyyO0d0IfDMbPIHcjn/hWnusUX5e8v5Xg+X8A== +"@typescript-eslint/type-utils@8.69.0": + version "8.69.0" + resolved "https://registry.yarnpkg.com/@typescript-eslint/type-utils/-/type-utils-8.69.0.tgz#7ce68d2ebcbedd8421806c27a7f360755017159f" + integrity sha512-ZfoJAVg3JZndQEpEl9petVlxau3lRuElc4HRMuAlLCf8to04/iHz692RUSNmXKDjEuJmIL+KZ2/BsOcBc16dsA== dependencies: - "@typescript-eslint/types" "8.61.0" - "@typescript-eslint/typescript-estree" "8.61.0" - "@typescript-eslint/utils" "8.61.0" + "@typescript-eslint/types" "8.69.0" + "@typescript-eslint/typescript-estree" "8.69.0" + "@typescript-eslint/utils" "8.69.0" debug "^4.4.3" ts-api-utils "^2.5.0" -"@typescript-eslint/types@8.61.0", "@typescript-eslint/types@^8.61.0": - version "8.61.0" - resolved "https://registry.yarnpkg.com/@typescript-eslint/types/-/types-8.61.0.tgz#0ddb46e012a4288292950bdd253db42f278ce64d" - integrity sha512-9QTQpZ5Iin4CdIodfbDQFSeiSJKidgYJYug1P9CC2xWgUTvlmixViqDZNciMjwLBZyJnG4tGmPl97rVAFb1AJg== +"@typescript-eslint/types@8.69.0", "@typescript-eslint/types@^8.69.0": + version "8.69.0" + resolved "https://registry.yarnpkg.com/@typescript-eslint/types/-/types-8.69.0.tgz#5d9ad3f707c2e4f70a2db540031104df3e63bcf5" + integrity sha512-K3VrubUPhlo9VDBS6QdI8YB5j7ClpqLRdefcz6PFrhnwicehBweqQ9Evhl4l+FYz0HdDmMqIiSX0aldGRYtDCA== -"@typescript-eslint/typescript-estree@8.61.0": - version "8.61.0" - resolved "https://registry.yarnpkg.com/@typescript-eslint/typescript-estree/-/typescript-estree-8.61.0.tgz#98ca47260bbf627fc28f018b3a0abf00e3090690" - integrity sha512-42zatd5qSvvcV1JdDBCLxYRznvP4eIHpPoZXdkPFnAmanA4FuZ5dibSnCBggY8hQnqajPpoGjXFdZ7fIJKQnlA== +"@typescript-eslint/typescript-estree@8.69.0": + version "8.69.0" + resolved "https://registry.yarnpkg.com/@typescript-eslint/typescript-estree/-/typescript-estree-8.69.0.tgz#efa915913ffe2049bbfd26092b95d1bc7c9c454f" + integrity sha512-AdFkgqck3Vudb/kWnxlyafU/4aBhHrbQ9locP2N4psXTy5mOBg0SHJumnLvx7r6g1gV4DKvUFwV2nJZBoqOD8w== dependencies: - "@typescript-eslint/project-service" "8.61.0" - "@typescript-eslint/tsconfig-utils" "8.61.0" - "@typescript-eslint/types" "8.61.0" - "@typescript-eslint/visitor-keys" "8.61.0" + "@typescript-eslint/project-service" "8.69.0" + "@typescript-eslint/tsconfig-utils" "8.69.0" + "@typescript-eslint/types" "8.69.0" + "@typescript-eslint/visitor-keys" "8.69.0" debug "^4.4.3" minimatch "^10.2.2" semver "^7.7.3" tinyglobby "^0.2.15" ts-api-utils "^2.5.0" -"@typescript-eslint/utils@8.61.0", "@typescript-eslint/utils@^8.0.0", "@typescript-eslint/utils@^8.58.2": - version "8.61.0" - resolved "https://registry.yarnpkg.com/@typescript-eslint/utils/-/utils-8.61.0.tgz#ed3546a052787e84ea6c5064d0919fc5eea8522f" - integrity sha512-3bzFt7ImFMW/jVYwJamDoe/dMOdFLSC6pom6rRjdh4SZJEYupyMzem8e7vKZLclLfpHjlwSAXOUxtKxGXUiLqA== +"@typescript-eslint/utils@8.69.0", "@typescript-eslint/utils@^8.0.0", "@typescript-eslint/utils@^8.58.2": + version "8.69.0" + resolved "https://registry.yarnpkg.com/@typescript-eslint/utils/-/utils-8.69.0.tgz#67ad9c00edf12fe2fbc0bf0a71b00822a8d02e97" + integrity sha512-tUbx60BBqQa31kXF5MCsOOLL5E/WzUuxIn7YpAvq+eaUlqvk8/NXnXMBNAdLCr0icjkzem7iUA5QqWHe/hJ1aw== dependencies: "@eslint-community/eslint-utils" "^4.9.1" - "@typescript-eslint/scope-manager" "8.61.0" - "@typescript-eslint/types" "8.61.0" - "@typescript-eslint/typescript-estree" "8.61.0" + "@typescript-eslint/scope-manager" "8.69.0" + "@typescript-eslint/types" "8.69.0" + "@typescript-eslint/typescript-estree" "8.69.0" -"@typescript-eslint/visitor-keys@8.61.0": - version "8.61.0" - resolved "https://registry.yarnpkg.com/@typescript-eslint/visitor-keys/-/visitor-keys-8.61.0.tgz#39b4e1ab8936d23bea973d39fd092f9aa21f275e" - integrity sha512-QVLZu3ZPQEE+HICQyAMZ2yLQhxf0meY/wx6Hx14YcTNj13JB3qHlX3lJ02L3fLGHgERRH71kvYDwiXIguT3AjQ== +"@typescript-eslint/visitor-keys@8.69.0": + version "8.69.0" + resolved "https://registry.yarnpkg.com/@typescript-eslint/visitor-keys/-/visitor-keys-8.69.0.tgz#f659785dbb79733c40499f71a65439e2033966b5" + integrity sha512-+rmdgPA+EXkNgKYvHvFfhrs35utXbwaC5PGpDquSXcoXQDKUA5UjV0LmTucG/4JXkM31BTu4TilHtrN8IVBe8w== dependencies: - "@typescript-eslint/types" "8.61.0" + "@typescript-eslint/types" "8.69.0" eslint-visitor-keys "^5.0.0" "@ungap/structured-clone@^1.0.0": @@ -5201,13 +5195,6 @@ abbrev@^2.0.0: resolved "https://registry.yarnpkg.com/abbrev/-/abbrev-2.0.0.tgz#cf59829b8b4f03f89dda2771cb7f3653828c89bf" integrity sha512-6/mh1E2u2YgEsCHdY0Yx5oW+61gZU+1vXaoiHHrpKeuRNNgFvS+/jrwHiQhB5apAf5oB7UB7E19ol2R2LKH8hQ== -abort-controller@^3.0.0: - version "3.0.0" - resolved "https://registry.yarnpkg.com/abort-controller/-/abort-controller-3.0.0.tgz#eaf54d53b62bae4138e809ca225c8439a6efb392" - integrity sha512-h8lQ8tacZYnR3vNQTgibj+tODHI5/+l06Au2Pcriv/Gmet0eaj4TwWH41sO9wnHDiQsEj19q0drzdWdeAHtweg== - dependencies: - event-target-shim "^5.0.0" - accepts@^2.0.0: version "2.0.0" resolved "https://registry.yarnpkg.com/accepts/-/accepts-2.0.0.tgz#bbcf4ba5075467f3f2131eab3cffc73c2f5d7895" @@ -5690,12 +5677,12 @@ babel-plugin-polyfill-regenerator@^0.6.5, babel-plugin-polyfill-regenerator@^0.6 dependencies: "@babel/helper-define-polyfill-provider" "^0.6.8" -babel-plugin-syntax-hermes-parser@0.36.0: - version "0.36.0" - resolved "https://registry.yarnpkg.com/babel-plugin-syntax-hermes-parser/-/babel-plugin-syntax-hermes-parser-0.36.0.tgz#51e429f32f23b197c477a20525798a7a97709c80" - integrity sha512-LhD0xdoedDw7ansQgXbB2DADLZIK/LRXuWNBPuVzMc5S2WK5GyT89tCM+cQzxFGO0mGyLK6D5TrVOJJzAoDy8Q== +babel-plugin-syntax-hermes-parser@0.36.1: + version "0.36.1" + resolved "https://registry.yarnpkg.com/babel-plugin-syntax-hermes-parser/-/babel-plugin-syntax-hermes-parser-0.36.1.tgz#970277618fbec67b400bf8b01e4f61ba96ef5a40" + integrity sha512-ycduwJbvdvIMmVvlAZqGggS+pm5Eu4Bk9pcV9Sm2Z4PJNRVsKkv0g7vHj+LeuC1gHTeF67sJXFOq61IlqCa2hA== dependencies: - hermes-parser "0.36.0" + hermes-parser "0.36.1" babel-plugin-transform-flow-enums@^0.0.2: version "0.0.2" @@ -5838,17 +5825,17 @@ boxen@^7.0.0: wrap-ansi "^8.1.0" brace-expansion@^1.1.7: - version "1.1.14" - resolved "https://registry.yarnpkg.com/brace-expansion/-/brace-expansion-1.1.14.tgz#d9de602370d91347cd9ddad1224d4fd701eb348b" - integrity sha512-MWPGfDxnyzKU7rNOW9SP/c50vi3xrmrua/+6hfPbCS2ABNWfx24vPidzvC7krjU/RTo235sV776ymlsMtGKj8g== + version "1.1.18" + resolved "https://registry.yarnpkg.com/brace-expansion/-/brace-expansion-1.1.18.tgz#3ce74d89885136be1535341f8c3d4425c29a5cab" + integrity sha512-Edep/X9fGqVNmzKBVsDYIOtD+z1tuezV70LBjdCst9Tqu76lsnvRiZ6oTic1n+/BIwX6QDGAO94PN4N2SADvtw== dependencies: balanced-match "^1.0.0" concat-map "0.0.1" brace-expansion@^2.0.1, brace-expansion@^2.0.2: - version "2.1.0" - resolved "https://registry.yarnpkg.com/brace-expansion/-/brace-expansion-2.1.0.tgz#4f41a41190216ee36067ec381526fe9539c4f0ae" - integrity sha512-TN1kCZAgdgweJhWWpgKYrQaMNHcDULHkWwQIspdtjV4Y5aurRdZpjAqn6yX3FPqTA9ngHCc4hJxMAMgGfve85w== + version "2.1.4" + resolved "https://registry.yarnpkg.com/brace-expansion/-/brace-expansion-2.1.4.tgz#589dab11c0018d0366be64cd8bf12c8dbecc8326" + integrity sha512-hGfVzPxthbf3+2yjg/RBs60cB0FhqBS/zvdV/4wn4/BmN0bNMMHPc4V/BbFieqf1TKAGGAHnY4eSjajCl0f2Xg== dependencies: balanced-match "^1.0.0" @@ -7915,10 +7902,10 @@ eslint-plugin-react@^7.37.5: string.prototype.matchall "^4.0.12" string.prototype.repeat "^1.0.0" -eslint-plugin-yml@^3.4.0: - version "3.4.0" - resolved "https://registry.yarnpkg.com/eslint-plugin-yml/-/eslint-plugin-yml-3.4.0.tgz#e3b484bf74634ada2a307ebf01983e4f231c1db1" - integrity sha512-j6U3ESrAkidkvNb3HFN2UMxke46GNp6bsJokabXCICcgomSy3YU4oED9cjzkZ58nYxWD5qnWV1b/2YlqyWMOxA== +eslint-plugin-yml@^3.8.1: + version "3.8.1" + resolved "https://registry.yarnpkg.com/eslint-plugin-yml/-/eslint-plugin-yml-3.8.1.tgz#b734af7e174fbbf3da3bc8b5701098d5ef7de447" + integrity sha512-E/70psRwxz5EJ8dBtzrFfqSiiInuSytbdtFCjueb/GcKjsWzPBfxfhtQePImMAPjHwMA/VDurO7DJwStDJ4wWg== dependencies: "@eslint/core" "^1.0.1" "@eslint/plugin-kit" "^0.7.0" @@ -8171,11 +8158,6 @@ event-stream@~3.1.5: stream-combiner "~0.0.4" through "~2.3.1" -event-target-shim@^5.0.0: - version "5.0.1" - resolved "https://registry.yarnpkg.com/event-target-shim/-/event-target-shim-5.0.1.tgz#5d4d3ebdf9583d63a5333ce2deb7480ab2b05789" - integrity sha512-i/2XbnSz/uxRCU6+NdVJgKWDTM427+MqYbkQzD321DuCQJUqOuJKIA0IM2+W2xtYHdKOmZ4dR6fExsd4SXL+WQ== - eventemitter3@^4.0.0, eventemitter3@^4.0.4: version "4.0.7" resolved "https://registry.yarnpkg.com/eventemitter3/-/eventemitter3-4.0.7.tgz#2de9b68f6528d5644ef5c59526a1b4a07306169f" @@ -8796,10 +8778,10 @@ globals@^14.0.0: resolved "https://registry.yarnpkg.com/globals/-/globals-14.0.0.tgz#898d7413c29babcf6bafe56fcadded858ada724e" integrity sha512-oahGvuMGQlPw/ivIYBjVSrWAfWLBeku5tpPE2fOPLi+WHffIWbuh2tCjhyQhTBPMf5E9jDEH4FOmTYgYwbKwtQ== -globals@^17.6.0: - version "17.6.0" - resolved "https://registry.yarnpkg.com/globals/-/globals-17.6.0.tgz#0f0be018d5cca8690e6375ead1f65c4bb96191fc" - integrity sha512-sepffkT8stwnIYbsMBpoCHJuJM5l98FUF2AnE07hfvE0m/qp3R586hw4jF4uadbhvg1ooIdzuu7CsfD2jzCaNA== +globals@^17.12.0: + version "17.12.0" + resolved "https://registry.yarnpkg.com/globals/-/globals-17.12.0.tgz#910a368b8f093d3feb3f77a56dcefa05647d698e" + integrity sha512-cezEd/DTyyht9cvSSURyygXPfy04GtWO/5e6ZPvH7fCtjKz9PYOmuawphw1Ctd1f6C+5JypXfGD7ahNMXvevBA== globalthis@^1.0.4: version "1.0.4" @@ -9360,39 +9342,27 @@ he@^1.2.0: resolved "https://registry.yarnpkg.com/he/-/he-1.2.0.tgz#84ae65fa7eafb165fddb61566ae14baf05664f0f" integrity sha512-F/1DnUGPopORZi0ni+CvrCgHQ5FyEAHRLSApuYWMmrbSwoN2Mn/7k+Gl38gJnR7yyDZk6WLXwiGod1JOWNDKGw== -hermes-compiler@250829098.0.14: - version "250829098.0.14" - resolved "https://registry.yarnpkg.com/hermes-compiler/-/hermes-compiler-250829098.0.14.tgz#4fbe8c18d277d5b766c4650c7bc4b3dddd6fd9c1" - integrity sha512-5meXwsZxgiqFaJjNzwjzI9IyUkuGGBisu+z9BvQWmGVpjH6nz11hgqkyxe4dl8UAdyIV4lTbz91+Dlnjz0VxqA== +hermes-compiler@250829098.0.17: + version "250829098.0.17" + resolved "https://registry.yarnpkg.com/hermes-compiler/-/hermes-compiler-250829098.0.17.tgz#221c648d86929223f5e3ac5cee760d6a0c2a9bab" + integrity sha512-qG1PXzTEtriF6oQLZF3vyHhSMxOdW5h2TqqLri0rdpstPustd2fSvRZQMVAPdlhgFwBfYnj3OUZtiO6LjYsEFw== hermes-estree@0.25.1: version "0.25.1" resolved "https://registry.yarnpkg.com/hermes-estree/-/hermes-estree-0.25.1.tgz#6aeec17d1983b4eabf69721f3aa3eb705b17f480" integrity sha512-0wUoCcLp+5Ev5pDW2OriHC2MJCbwLwuRx+gAqMTOkGKJJiBCLjtrvy4PWUGn6MIVefecRpzoOZ/UV6iGdOr+Cw== -hermes-estree@0.35.0: - version "0.35.0" - resolved "https://registry.yarnpkg.com/hermes-estree/-/hermes-estree-0.35.0.tgz#767cce0b14a68b4bc06cd5db7efe889f6188c565" - integrity sha512-xVx5Opwy8Oo1I5yGpVRhCvWL/iV3M+ylksSKVNlxxD90cpDpR/AR1jLYqK8HWihm065a6UI3HeyAmYzwS8NOOg== +hermes-estree@0.36.1: + version "0.36.1" + resolved "https://registry.yarnpkg.com/hermes-estree/-/hermes-estree-0.36.1.tgz#71368d9e78238728e11ef1f458a8921d0564a572" + integrity sha512-guv1nQ6IJ7S83NRFPWc3SA7IBZrdNC9kapwOq6uXvF4wP+sDCgjzQbKPCoyYmoyZRzztF/n/c36l/rccCZSiCw== -hermes-estree@0.36.0: - version "0.36.0" - resolved "https://registry.yarnpkg.com/hermes-estree/-/hermes-estree-0.36.0.tgz#5b8c162e986159baf86bc4d01612cff9845ab0f7" - integrity sha512-A1+8zn5oss2CFP7pKsOaxorQG6FNIz1WU1VDqruLPPZl3LVgeE2C5xfFg8Ow6/Ow4mSslLLtYP1J3n38eKyW9w== - -hermes-parser@0.35.0: - version "0.35.0" - resolved "https://registry.yarnpkg.com/hermes-parser/-/hermes-parser-0.35.0.tgz#7625ec2f34ab897c2a17a7bea9788d136d5fd8c9" - integrity sha512-9JLjeHxBx8T4CAsydZR49PNZUaix+WpQJwu9p2010lu+7Kwl6D/7wYFFJxoz+aXkaaClp9Zfg6W6/zVlSJORaA== +hermes-parser@0.36.1: + version "0.36.1" + resolved "https://registry.yarnpkg.com/hermes-parser/-/hermes-parser-0.36.1.tgz#f619b9f99bf34e80fb6f7024b1c62944d2beb14a" + integrity sha512-GApNk4zLHi2UWoWZZkx7LNCOSzLSc5lB55pZ/PhK7ycFeg7u5LcF88p/WbpIi1XUDtE0MpHE3uRR3u3KB7TjSQ== dependencies: - hermes-estree "0.35.0" - -hermes-parser@0.36.0: - version "0.36.0" - resolved "https://registry.yarnpkg.com/hermes-parser/-/hermes-parser-0.36.0.tgz#756d6b07301789c5ff0ac3ac7ff6bffa8be7098c" - integrity sha512-GdpwMmH5x6IpC1cijvcvYnlPB60Mh6kTSF/NFdYV/j56gYdi+0RIakYs+eqOV+bbO0SW7mgVVGSsTJxyPQfo3w== - dependencies: - hermes-estree "0.36.0" + hermes-estree "0.36.1" hermes-parser@^0.25.1: version "0.25.1" @@ -9665,14 +9635,7 @@ ignore@^7.0.5: resolved "https://registry.yarnpkg.com/ignore/-/ignore-7.0.5.tgz#4cb5f6cd7d4c7ab0365738c7aea888baa6d7efd9" integrity sha512-Hs59xBNfUIunMFgWAbGX5cq6893IbWg4KnrjbYwX3tx0ztorVgTDA6B2sxf8ejHJ4wz8BqGUMYlnzNBer5NvGg== -image-size@^1.0.2: - version "1.2.1" - resolved "https://registry.yarnpkg.com/image-size/-/image-size-1.2.1.tgz#ee118aedfe666db1a6ee12bed5821cde3740276d" - integrity sha512-rH+46sQJ2dlwfjfhCyNx5thzrv+dtmBIhPHk0zgRUukHzZ/kRueTJXoYYsclBaKcSMBWuGbOFXtioLpzTb5euw== - dependencies: - queue "6.0.2" - -image-size@^2.0.2: +image-size@^1.0.2, image-size@^2, image-size@^2.0.2: version "2.0.2" resolved "https://registry.yarnpkg.com/image-size/-/image-size-2.0.2.tgz#84a7b43704db5736f364bf0d1b029821299b4bdc" integrity sha512-IRqXKlaXwgSMAMtpNzZa1ZAe8m+Sa1770Dhk8VkSsP9LS+iHD62Zd8FQKs8fbPiagBE7BzoFX23cxFnwshpV6w== @@ -10700,17 +10663,17 @@ joi@^17.9.2: integrity sha512-RdJUflcE3cUzKiMqQgsCu06FPu9UdIJO0beYbPhHN4k6apgJtifcoCtT9bcxOpYBtpD2kCM6Sbzg4CausW/PKQ== js-yaml@^3.13.1: - version "3.14.2" - resolved "https://registry.yarnpkg.com/js-yaml/-/js-yaml-3.14.2.tgz#77485ce1dd7f33c061fd1b16ecea23b55fcb04b0" - integrity sha512-PMSmkqxr106Xa156c2M265Z+FTrPl+oxd/rgOQy2tijQeK5TxQ43psO1ZCwhVOSdnn+RzkzlRz/eY4BgJBYVpg== + version "3.15.2" + resolved "https://registry.yarnpkg.com/js-yaml/-/js-yaml-3.15.2.tgz#3f83823ac6be17f570f23b2ecdef3777ff5ea364" + integrity sha512-6EuL879VkRA+1Cz578mKMiKvjPNEuk6+r1JaFzoSWejZmtf7xWbIyw1e3KkxlkzTIt9Taw6JBhEppG7utc1P+w== dependencies: argparse "^1.0.7" esprima "^4.0.0" js-yaml@^4.1.0, js-yaml@^4.1.1: - version "4.1.1" - resolved "https://registry.yarnpkg.com/js-yaml/-/js-yaml-4.1.1.tgz#854c292467705b699476e1a2decc0c8a3458806b" - integrity sha512-qQKT4zQxXl8lLwBtHMWwaTcGfFOZviOJet3Oy/xmGk2gZH677CJM9EvtfdSkgWcATZhj/55JZ0rmy3myCT5lsA== + version "4.3.2" + resolved "https://registry.yarnpkg.com/js-yaml/-/js-yaml-4.3.2.tgz#8e44fb14a2643c59726bb15787b5f1512cb3d3fb" + integrity sha512-SFNOvSJ+Dgf/9An904Yx+CgSlIPCkIpao4qo51lpee25TIRejdH3rhR4EZMGoNx3/TP3O+wzWuiTFl4sqbltzA== dependencies: argparse "^2.0.1" @@ -11733,61 +11696,60 @@ methods@~1.1.2: resolved "https://registry.yarnpkg.com/methods/-/methods-1.1.2.tgz#5529a4d67654134edcc5266656835b0f851afcee" integrity sha512-iclAHeNqNm68zFtnZ0e+1L2yUIdvzNoauKU4WBA3VvH/vPFieF7qfRlwUZU+DA9P9bPXIS90ulxoUoCH23sV2w== -metro-babel-transformer@0.84.4: - version "0.84.4" - resolved "https://registry.yarnpkg.com/metro-babel-transformer/-/metro-babel-transformer-0.84.4.tgz#2d7de9bd4e5998c8c0530fe05eef714d7c10f9cf" - integrity sha512-rvCfz8snl9h20VcvpOHxZuHP1SlAkv4HXbzw7nyyVwu6Eqo5PRerbakQ9XmUCOsRy70spJ37O+G1TK8oMzo48g== +metro-babel-transformer@0.87.0: + version "0.87.0" + resolved "https://registry.yarnpkg.com/metro-babel-transformer/-/metro-babel-transformer-0.87.0.tgz#90f32240050185fcaecdc9949923922de48b6543" + integrity sha512-IEn1K1FyY4J1sA5y6zqDjf2OkfmpTEqhZOeP6MJX8HepSW0cuHGw1m8bYOdv2adkG3XUE9dtM0csUs0gP/Xa5w== dependencies: "@babel/core" "^7.25.2" flow-enums-runtime "^0.0.6" - hermes-parser "0.35.0" - metro-cache-key "0.84.4" + hermes-parser "0.36.1" + metro-cache-key "0.87.0" nullthrows "^1.1.1" -metro-cache-key@0.84.4: - version "0.84.4" - resolved "https://registry.yarnpkg.com/metro-cache-key/-/metro-cache-key-0.84.4.tgz#52059d32da68ef2e06d5a3d4770defdc6d8bad77" - integrity sha512-wVO79aGrkYImpnaVS4+d5RrRBRPX31QtvKB3wKGBuiNSznduZTQHzsrJZRroFJSwnygrzdsGUtDQPuqqFjFdvw== +metro-cache-key@0.87.0: + version "0.87.0" + resolved "https://registry.yarnpkg.com/metro-cache-key/-/metro-cache-key-0.87.0.tgz#800534d5aa5dfadf5f6b0d78ea2dc8a03fbbbb24" + integrity sha512-Q+MPt6jl0zQogr4Q02WaJK6HY+GtE5A0nzj8kIV1Owgrx6OMNvm6scPTr1SM/R4LpCE8EH/Y5qfbXQ84GHTr0Q== dependencies: flow-enums-runtime "^0.0.6" -metro-cache@0.84.4: - version "0.84.4" - resolved "https://registry.yarnpkg.com/metro-cache/-/metro-cache-0.84.4.tgz#026476edb629a84650efd7b4245bbc600b3b0eb7" - integrity sha512-gpcFQdSLUwUCk71saKoE64jLFbx2nwTfVCcPSULMNT8QYq0p1eZZE29Jvd0HtT/UlhC3ZOutLxJME5xqD2JUZg== +metro-cache@0.87.0: + version "0.87.0" + resolved "https://registry.yarnpkg.com/metro-cache/-/metro-cache-0.87.0.tgz#23eddf1e61c034e05e616256565d45d96520e673" + integrity sha512-146vS1BMSKcp99jddOhFBfHwzUEWN35NrsnSJDF2sQQ0ZT5OsBcOjd574PM233TWEZISRJ5DOK+vokD+1ubx+w== dependencies: exponential-backoff "^3.1.1" flow-enums-runtime "^0.0.6" https-proxy-agent "^7.0.5" - metro-core "0.84.4" + metro-core "0.87.0" -metro-config@0.84.4, metro-config@^0.84.3: - version "0.84.4" - resolved "https://registry.yarnpkg.com/metro-config/-/metro-config-0.84.4.tgz#456190b984a4ce16eb10448a3c726880cec895e9" - integrity sha512-PMotGDjXcXLWo2TMRH+VR99phFNgYTwqh4OoieIKK3yTJa1Jmkl+fZJxDO0jfBvNF+WESHciHvpNuBtXaF3B0Q== +metro-config@0.87.0: + version "0.87.0" + resolved "https://registry.yarnpkg.com/metro-config/-/metro-config-0.87.0.tgz#5559e1ed872b709ba8cc66464d020ca996019d72" + integrity sha512-yZ9QAIzWH9MxwrzwRlX/CBGRWOT14l7klSDYg8hdtSdnoUs5A7MQRdHE2KB9iHVzGQW5wgWM5aXJswNeWbSQPA== dependencies: connect "^3.6.5" flow-enums-runtime "^0.0.6" jest-validate "^29.7.0" - metro "0.84.4" - metro-cache "0.84.4" - metro-core "0.84.4" - metro-runtime "0.84.4" - yaml "^2.6.1" + metro "0.87.0" + metro-cache "0.87.0" + metro-core "0.87.0" + metro-runtime "0.87.0" -metro-core@0.84.4, metro-core@^0.84.3: - version "0.84.4" - resolved "https://registry.yarnpkg.com/metro-core/-/metro-core-0.84.4.tgz#e4afffab9bd2e9b304c89c59322344d59911c31b" - integrity sha512-HONpWC5LGXZn3ffkd4Hu6AIrfE7j4Z0g0wMo/goV24WOB3lhuFZ40KgvaDiSw8iyQHloMYay5N/wPX+z8oN/PQ== +metro-core@0.87.0: + version "0.87.0" + resolved "https://registry.yarnpkg.com/metro-core/-/metro-core-0.87.0.tgz#97b3f4e4c3f5a0caf533a83a2000ac9fbbca1260" + integrity sha512-yW57+pCOHRC/CJZ99GA2PTd+30dORwDAjUPRCokj91IWW5In9Jwtt2FB5wACrGO8P0GHTyVHdTwDNyZsNndUbA== dependencies: flow-enums-runtime "^0.0.6" lodash.throttle "^4.1.1" - metro-resolver "0.84.4" + metro-resolver "0.87.0" -metro-file-map@0.84.4: - version "0.84.4" - resolved "https://registry.yarnpkg.com/metro-file-map/-/metro-file-map-0.84.4.tgz#00df08834ee4d34a8c15e33419fdff5a76a34870" - integrity sha512-KSVDi/u60hKPx++NLu3MTIvyjzNoJnFAF8PQFxaj1jiSka/wjw+Ua6sNuJ0TDHQv+7AAoFQxeMgaRAe8Yic5wQ== +metro-file-map@0.87.0: + version "0.87.0" + resolved "https://registry.yarnpkg.com/metro-file-map/-/metro-file-map-0.87.0.tgz#7ff958b189ea6cc67325c611cd897c5dc1d92be9" + integrity sha512-Dc57t8jsINwA90bbVlqaeDlxf1rVGgj5SmOEnOMbaHNUM/HCYYTJxPV8SRdOBwh7qTz/biO9vaQvBTjRBgbbsg== dependencies: debug "^4.4.0" fb-watchman "^2.0.0" @@ -11799,60 +11761,60 @@ metro-file-map@0.84.4: nullthrows "^1.1.1" walker "^1.0.7" -metro-minify-terser@0.84.4: - version "0.84.4" - resolved "https://registry.yarnpkg.com/metro-minify-terser/-/metro-minify-terser-0.84.4.tgz#e904d63f085d1af33587ff6daf5010243d19eec9" - integrity sha512-5qpbaVOMC7CPitIpuewzVeGw7E+C3ykbv2mqTjQLl85Z3annSVGlSCTcsZjqXZzjupfK4Ztj3dDc4kc44NZwtQ== +metro-minify-terser@0.87.0: + version "0.87.0" + resolved "https://registry.yarnpkg.com/metro-minify-terser/-/metro-minify-terser-0.87.0.tgz#2573f9bb7270ffdf88827116b0c083ea79aa28e7" + integrity sha512-tPa0O983PDutFu3LXbArRH5NduogcKrvW6fs9VHhksTKUA1iqDyoD1ZSj/Me52xJ6T9/9pOwIVyj9ulKc/zMkg== dependencies: flow-enums-runtime "^0.0.6" terser "^5.15.0" -metro-resolver@0.84.4: - version "0.84.4" - resolved "https://registry.yarnpkg.com/metro-resolver/-/metro-resolver-0.84.4.tgz#88181301abb9b476072e8263f7b3b918d493931a" - integrity sha512-1qLgbxQ5ZGhhutuPot1Yp348ofDsATL2WkrHF65TobqTT9K3P9qJXw38bomk7ncp5B7OYMfWwtyBZo1lCV792A== +metro-resolver@0.87.0: + version "0.87.0" + resolved "https://registry.yarnpkg.com/metro-resolver/-/metro-resolver-0.87.0.tgz#0ee08fb3ab126fe75e563a0969b57e568b3d4ed1" + integrity sha512-Xl3M9R3KToaHJvXlI2lSOxtYHitzxite+195DSi00HL9PcS7Xik5+3xlRjfkKb3FA86SZxYPj+WJwlcfgaZoxg== dependencies: flow-enums-runtime "^0.0.6" -metro-runtime@0.84.4, metro-runtime@^0.84.3: - version "0.84.4" - resolved "https://registry.yarnpkg.com/metro-runtime/-/metro-runtime-0.84.4.tgz#8c10a488d19a49d64bcc775039032b61cceb26a6" - integrity sha512-Jibypds4g7AhzdRKY+kDoj51s5EXMwgyp5ddtlreDAsWefMdOx+agWqgm0H2XSZ/ueanHHVM89fnf5OJnlxa8Q== +metro-runtime@0.87.0, metro-runtime@^0.87.0: + version "0.87.0" + resolved "https://registry.yarnpkg.com/metro-runtime/-/metro-runtime-0.87.0.tgz#859f36f34a9867a1d3c35f18a73280b23593f249" + integrity sha512-XsXZkgEwI0ZMYSBfvOMAbenzwa60XlObXJ27g6/Khgrz9ESbiBbAsd7hR62G2jRBYOhGAzG61Gk22dpRJj/mdw== dependencies: "@babel/runtime" "^7.25.0" flow-enums-runtime "^0.0.6" -metro-source-map@0.84.4, metro-source-map@^0.84.3: - version "0.84.4" - resolved "https://registry.yarnpkg.com/metro-source-map/-/metro-source-map-0.84.4.tgz#e16e7c2dce22d8aea527f459ba88f5a2827ba32a" - integrity sha512-jbWkPxIesVuo1IWkvezmMJld6iu8nD62GsrZiV6jP37AOdbo4OBq1FJ+qkOg8sV05wAHB//jAbziuW0SlJfW4g== +metro-source-map@0.87.0, metro-source-map@^0.87.0: + version "0.87.0" + resolved "https://registry.yarnpkg.com/metro-source-map/-/metro-source-map-0.87.0.tgz#d8b9b101502d0a3c3f792b64571952e7efb5791e" + integrity sha512-31BrYqu1c2co93rF1LN9Pw+7g+BrfDyxJkNQWrYm+pfA/+eVYVumF7tFMHbXLePLmHfhvSgVvbK6su1Oyiw1ng== dependencies: "@babel/traverse" "^7.29.0" "@babel/types" "^7.29.0" flow-enums-runtime "^0.0.6" invariant "^2.2.4" - metro-symbolicate "0.84.4" + metro-symbolicate "0.87.0" nullthrows "^1.1.1" - ob1 "0.84.4" + ob1 "0.87.0" source-map "^0.5.6" vlq "^1.0.0" -metro-symbolicate@0.84.4: - version "0.84.4" - resolved "https://registry.yarnpkg.com/metro-symbolicate/-/metro-symbolicate-0.84.4.tgz#0d5a9fd2f15b5c079050051d8bd1f88726d6e0d2" - integrity sha512-OnfpacxUqGPZQ27t8qK9mFa7uqHIlVWeqRqkCbvMvreEBiamEeOn8krKtcwgP5M4cYDPwuSmCTopHMVthqG4zA== +metro-symbolicate@0.87.0: + version "0.87.0" + resolved "https://registry.yarnpkg.com/metro-symbolicate/-/metro-symbolicate-0.87.0.tgz#fc0ed2408f52eda855e47cc6d65f0f98ad4a31a4" + integrity sha512-uOpTxAXu74N+RSujUZ78L6gjI6bDdnz6XuW+AIUNuubZDEQPIpaX0StzIb0GMeQWP6zfHOHwFrWPP5Iquu1GXw== dependencies: flow-enums-runtime "^0.0.6" invariant "^2.2.4" - metro-source-map "0.84.4" + metro-source-map "0.87.0" nullthrows "^1.1.1" source-map "^0.5.6" vlq "^1.0.0" -metro-transform-plugins@0.84.4: - version "0.84.4" - resolved "https://registry.yarnpkg.com/metro-transform-plugins/-/metro-transform-plugins-0.84.4.tgz#b5a4e4329b1ee0261fb21f8910df7eefd02e685d" - integrity sha512-kehr6HbAecqD0/a3xLXobELdPaAmRAl8bel0qagPF4vhZtux93nS8S4eq2kgKt6J2GnQpVjSoW1PXdst04mwow== +metro-transform-plugins@0.87.0: + version "0.87.0" + resolved "https://registry.yarnpkg.com/metro-transform-plugins/-/metro-transform-plugins-0.87.0.tgz#79003ea1861fd8224ba3ac2c21f3f2700eb6c62e" + integrity sha512-i8keUe9+BaSwMuQM26DGheElCpTtflAKIrSwJAm8ZsgDb50RAUQus+e6zt2suaJXJ1OxZa7vqgtqoZxdniM6Fw== dependencies: "@babel/core" "^7.25.2" "@babel/generator" "^7.29.1" @@ -11861,29 +11823,29 @@ metro-transform-plugins@0.84.4: flow-enums-runtime "^0.0.6" nullthrows "^1.1.1" -metro-transform-worker@0.84.4: - version "0.84.4" - resolved "https://registry.yarnpkg.com/metro-transform-worker/-/metro-transform-worker-0.84.4.tgz#2a66d65d147f7aa7d13c8620e65474095f46b441" - integrity sha512-W1IYMvvXTu4MxYr7d9h7CeG2vpIr3bmLLIavkPY4O1ilzDrvS8z/NEe6y+pC44Ff7raMXQgYSfdqDUwN/i39gg== +metro-transform-worker@0.87.0: + version "0.87.0" + resolved "https://registry.yarnpkg.com/metro-transform-worker/-/metro-transform-worker-0.87.0.tgz#38e8d4cf110d881d52b99c70a49fde887e8e2ef7" + integrity sha512-YftLzNJxCTYxEN5k4AzR8KYwiENTEuz30L+4QeoMrtDd+U8mDThZg/ArR3JVRd8LaikwPOjVAS5SP3xPJN0AaA== dependencies: "@babel/core" "^7.25.2" "@babel/generator" "^7.29.1" "@babel/parser" "^7.29.0" "@babel/types" "^7.29.0" flow-enums-runtime "^0.0.6" - metro "0.84.4" - metro-babel-transformer "0.84.4" - metro-cache "0.84.4" - metro-cache-key "0.84.4" - metro-minify-terser "0.84.4" - metro-source-map "0.84.4" - metro-transform-plugins "0.84.4" + metro "0.87.0" + metro-babel-transformer "0.87.0" + metro-cache "0.87.0" + metro-cache-key "0.87.0" + metro-minify-terser "0.87.0" + metro-source-map "0.87.0" + metro-transform-plugins "0.87.0" nullthrows "^1.1.1" -metro@0.84.4, metro@^0.84.3: - version "0.84.4" - resolved "https://registry.yarnpkg.com/metro/-/metro-0.84.4.tgz#dfcf92b3bcadce7cafaf1a1fa231b6490dfae78c" - integrity sha512-8ETTubqfD6ornDy2zYDvRcKnVDOXdFJsjetYDBsY4oAsb6NJkiwFR+FaMESyGppFmQUyBQA4H4sFGxzcQSGtFA== +metro@0.87.0, metro@^0.87.0: + version "0.87.0" + resolved "https://registry.yarnpkg.com/metro/-/metro-0.87.0.tgz#ebdc81166213dc0efc894d816d38e16b5f82892f" + integrity sha512-fRqFhSzQhLNQSCvJFeuRzBRXAOOKXf1O8d2cvmMtG6yFR0jCllQ7vBsXoLP18yuqtf+N1XwWXTPF11eWy9q6dQ== dependencies: "@babel/code-frame" "^7.29.0" "@babel/core" "^7.25.2" @@ -11899,24 +11861,24 @@ metro@0.84.4, metro@^0.84.3: error-stack-parser "^2.0.6" flow-enums-runtime "^0.0.6" graceful-fs "^4.2.4" - hermes-parser "0.35.0" + hermes-parser "0.36.1" image-size "^1.0.2" invariant "^2.2.4" jest-worker "^29.7.0" jsc-safe-url "^0.2.2" lodash.throttle "^4.1.1" - metro-babel-transformer "0.84.4" - metro-cache "0.84.4" - metro-cache-key "0.84.4" - metro-config "0.84.4" - metro-core "0.84.4" - metro-file-map "0.84.4" - metro-resolver "0.84.4" - metro-runtime "0.84.4" - metro-source-map "0.84.4" - metro-symbolicate "0.84.4" - metro-transform-plugins "0.84.4" - metro-transform-worker "0.84.4" + metro-babel-transformer "0.87.0" + metro-cache "0.87.0" + metro-cache-key "0.87.0" + metro-config "0.87.0" + metro-core "0.87.0" + metro-file-map "0.87.0" + metro-resolver "0.87.0" + metro-runtime "0.87.0" + metro-source-map "0.87.0" + metro-symbolicate "0.87.0" + metro-transform-plugins "0.87.0" + metro-transform-worker "0.87.0" mime-types "^3.0.1" nullthrows "^1.1.1" serialize-error "^2.1.0" @@ -13102,10 +13064,10 @@ nullthrows@^1.1.1: resolved "https://registry.yarnpkg.com/nullthrows/-/nullthrows-1.1.1.tgz#7818258843856ae971eae4208ad7d7eb19a431b1" integrity sha512-2vPPEi+Z7WqML2jZYddDIfy5Dqb0r2fze2zTxNNknZaFpVHU3mFB3R+DWeJWGVx0ecvttSGlJTI+WG+8Z4cDWw== -ob1@0.84.4: - version "0.84.4" - resolved "https://registry.yarnpkg.com/ob1/-/ob1-0.84.4.tgz#ec645debf5fbd8511dc1f00bf454e232fba02a9b" - integrity sha512-eJXMpz4aQHXF/YBB9ddqZDIS+ooO91hObo9FoW/xBkr54/zCwYYCDqT/O54vNo8kOkWs5Ou/y28NgdrV0edQNA== +ob1@0.87.0: + version "0.87.0" + resolved "https://registry.yarnpkg.com/ob1/-/ob1-0.87.0.tgz#66a467031147389460011bdfbe203832189d4c56" + integrity sha512-8Q8sKCiUwsxgSmjDtVWyRgmxsgeJXXam3oQH6Id8ADfNaJMV6GZKyeAl8+pGVVdgwAZabfk5+aExle7AP/nZiA== dependencies: flow-enums-runtime "^0.0.6" @@ -14511,13 +14473,6 @@ queue-microtask@^1.2.2: resolved "https://registry.yarnpkg.com/queue-microtask/-/queue-microtask-1.2.3.tgz#4929228bbc724dfac43e0efb058caf7b6cfb6243" integrity sha512-NuaNSa6flKT5JaSYQzJok04JzTL1CA6aGhv5rfLW3PgqA+M2ChpZQnAC8h8i4ZFkBS8X5RqkDBHA7r4hej3K9A== -queue@6.0.2: - version "6.0.2" - resolved "https://registry.yarnpkg.com/queue/-/queue-6.0.2.tgz#b91525283e2315c7553d2efa18d83e76432fed65" - integrity sha512-iHZWu+q3IdFZFX36ro/lKBkSvfkztY5Y7HMiPlOUjhupPcG2JMfst2KKEpu5XndviX/3UhFbRngUPNKtgvtZiA== - dependencies: - inherits "~2.0.3" - quick-lru@^5.1.1: version "5.1.1" resolved "https://registry.yarnpkg.com/quick-lru/-/quick-lru-5.1.1.tgz#366493e6b3e42a3a6885e2e99d18f80fb7a8c932" @@ -14630,35 +14585,33 @@ react-loadable-ssr-addon-v5-slorber@^1.0.3: dependencies: "@types/react" "*" -react-native-safe-area-context@^5.8.0: - version "5.8.0" - resolved "https://registry.yarnpkg.com/react-native-safe-area-context/-/react-native-safe-area-context-5.8.0.tgz#d2fb9fc8e0f0583311e261dc484b95ceb80f8902" - integrity sha512-t+ZsAVzY/wWzzx34vqGbo3/as9EEESJdbyZNL7Yg5EYX+toYMtMqFoDDCvqZUi35eeGVsXc6pAaEk4edMwbuCQ== - -react-native@^0.86.0: - version "0.86.0" - resolved "https://registry.yarnpkg.com/react-native/-/react-native-0.86.0.tgz#a5d62adbf350010ad7a61617b9bc300b2ff12870" - integrity sha512-17ALh/dd6AO4pgOVmOO5Axll5PbErEo3XFyLokyzW6usyi+OShIEPwUW26wLPlhVifgSOIfECCH0WN+0IqtJ1w== - dependencies: - "@react-native/assets-registry" "0.86.0" - "@react-native/codegen" "0.86.0" - "@react-native/community-cli-plugin" "0.86.0" - "@react-native/gradle-plugin" "0.86.0" - "@react-native/js-polyfills" "0.86.0" - "@react-native/normalize-colors" "0.86.0" - "@react-native/virtualized-lists" "0.86.0" - abort-controller "^3.0.0" +react-native-safe-area-context@^5.9.1: + version "5.9.1" + resolved "https://registry.yarnpkg.com/react-native-safe-area-context/-/react-native-safe-area-context-5.9.1.tgz#ee5b2730f0816a22a332352076395c3f48aaa442" + integrity sha512-Zpx9Iwg6VhgNarWFpcIM61xK2lUbSfSXemQUmcvOVRpux49lJsUompY1S3E5jKUJbLq233qEpj28DgmXVsgZMQ== + +react-native@^0.87.1: + version "0.87.1" + resolved "https://registry.yarnpkg.com/react-native/-/react-native-0.87.1.tgz#493036a52fb741e0462aee8911653d998e8bc8db" + integrity sha512-DJKG6ANoD7BtrE4z9DewiSD7/RxCX73lK5Pu49aUr85P3333Dm2roTiP0rRjQNDZdVizHSOmstWfwF/o9EjCRA== + dependencies: + "@react-native/asset-utils" "0.87.1" + "@react-native/codegen" "0.87.1" + "@react-native/community-cli-plugin" "0.87.1" + "@react-native/gradle-plugin" "0.87.1" + "@react-native/normalize-colors" "0.87.1" + "@react-native/virtualized-lists" "0.87.1" anser "^1.4.9" ansi-regex "^5.0.0" - babel-plugin-syntax-hermes-parser "0.36.0" + babel-plugin-syntax-hermes-parser "0.36.1" base64-js "^1.5.1" commander "^12.0.0" flow-enums-runtime "^0.0.6" - hermes-compiler "250829098.0.14" + hermes-compiler "250829098.0.17" invariant "^2.2.4" memoize-one "^5.0.0" - metro-runtime "^0.84.3" - metro-source-map "^0.84.3" + metro-runtime "^0.87.0" + metro-source-map "^0.87.0" nullthrows "^1.1.1" pretty-format "^29.7.0" promise "^8.3.0" @@ -16753,15 +16706,15 @@ typedarray@^0.0.6: resolved "https://registry.yarnpkg.com/typedarray/-/typedarray-0.0.6.tgz#867ac74e3864187b1d3d47d996a78ec5c8830777" integrity sha512-/aCDEGatGvZ2BIk+HmLf4ifCJFwvKFNb9/JeZPMulfgFracn9QFcAf5GO8B/mweUjSoblS5In0cWhqpfs/5PQA== -typescript-eslint@^8.61.0: - version "8.61.0" - resolved "https://registry.yarnpkg.com/typescript-eslint/-/typescript-eslint-8.61.0.tgz#6927fb94f5f29623e370d33fd9fa61f15d6d996b" - integrity sha512-8y31Rd0eGTrDKqhy6vT0HtzhN+YLjQizwX3aA3hPXP/ynSfnrBXcQY5IzsP9/DM7+klX4IUncZZjkchP0z+rUw== +typescript-eslint@^8.69.0: + version "8.69.0" + resolved "https://registry.yarnpkg.com/typescript-eslint/-/typescript-eslint-8.69.0.tgz#28a83f296d9c14001ea0691750c90cac8e94ba96" + integrity sha512-B3MltX0VqjUBNEe3b3sSuiRbfa6XrfHFtBiPamjT5AsW/dfq+y+bc0wyuS9DxAS1LyzCxRp2+rxzpLUvqM2BvA== dependencies: - "@typescript-eslint/eslint-plugin" "8.61.0" - "@typescript-eslint/parser" "8.61.0" - "@typescript-eslint/typescript-estree" "8.61.0" - "@typescript-eslint/utils" "8.61.0" + "@typescript-eslint/eslint-plugin" "8.69.0" + "@typescript-eslint/parser" "8.69.0" + "@typescript-eslint/typescript-estree" "8.69.0" + "@typescript-eslint/utils" "8.69.0" typescript@^6.0.3: version "6.0.3" @@ -17989,7 +17942,7 @@ yaml-eslint-parser@^2.0.0: eslint-visitor-keys "^5.0.0" yaml "^2.0.0" -yaml@^2.0.0, yaml@^2.6.1: +yaml@^2.0.0: version "2.8.3" resolved "https://registry.yarnpkg.com/yaml/-/yaml-2.8.3.tgz#a0d6bd2efb3dd03c59370223701834e60409bd7d" integrity sha512-AvbaCLOO2Otw/lW5bmh9d/WEdcDFdQp2Z2ZUH3pX9U2ihyUY0nvLv7J6TrWowklRGPYbB/IuIMfYgxaCPg5Bpg==