From 1e21262909acd380b5b04f35726f3235d0cb6bbd Mon Sep 17 00:00:00 2001 From: Sid Ferreira <143615+sidferreira@users.noreply.github.com> Date: Mon, 3 Feb 2025 07:06:18 -0800 Subject: [PATCH 01/11] exports PressableStateCallbackType (#3346) ## Description This is an absolute small fix, just exporting the `PressableStateCallbackType` type. The type was already marked as `export` but not included in the other files. ## Test plan --- src/components/Pressable/PressableProps.tsx | 15 ++++----------- src/components/Pressable/index.ts | 5 ++++- src/index.ts | 5 ++++- 3 files changed, 12 insertions(+), 13 deletions(-) diff --git a/src/components/Pressable/PressableProps.tsx b/src/components/Pressable/PressableProps.tsx index e0a7817d26..0ffaebc26a 100644 --- a/src/components/Pressable/PressableProps.tsx +++ b/src/components/Pressable/PressableProps.tsx @@ -1,22 +1,15 @@ import { - ColorValue, AccessibilityProps, ViewProps, Insets, StyleProp, ViewStyle, + PressableStateCallbackType as RNPressableStateCallbackType, + PressableAndroidRippleConfig as RNPressableAndroidRippleConfig, } from 'react-native'; -export interface PressableStateCallbackType { - readonly pressed: boolean; -} - -export interface PressableAndroidRippleConfig { - color?: null | ColorValue | undefined; - borderless?: null | boolean | undefined; - radius?: null | number | undefined; - foreground?: null | boolean | undefined; -} +export type PressableStateCallbackType = RNPressableStateCallbackType; +export type PressableAndroidRippleConfig = RNPressableAndroidRippleConfig; export type InnerPressableEvent = { changedTouches: InnerPressableEvent[]; diff --git a/src/components/Pressable/index.ts b/src/components/Pressable/index.ts index 149c76d90f..79ce14a8f0 100644 --- a/src/components/Pressable/index.ts +++ b/src/components/Pressable/index.ts @@ -1,2 +1,5 @@ -export type { PressableProps } from './PressableProps'; +export type { + PressableProps, + PressableStateCallbackType, +} from './PressableProps'; export { default } from './Pressable'; diff --git a/src/index.ts b/src/index.ts index 945b7cdcde..dcf7998e59 100644 --- a/src/index.ts +++ b/src/index.ts @@ -145,7 +145,10 @@ export type { export type { SwipeableProps } from './components/Swipeable'; export { default as Swipeable } from './components/Swipeable'; -export type { PressableProps } from './components/Pressable'; +export type { + PressableProps, + PressableStateCallbackType, +} from './components/Pressable'; export { default as Pressable } from './components/Pressable'; export type { From 7f90209add0b761d3738882339f4949b31f6f88f Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Ignacy=20=C5=81=C4=85tka?= Date: Mon, 3 Feb 2025 16:24:26 +0100 Subject: [PATCH 02/11] Fix android ripple color bug on fabric (#3369) ## Description Android ripple currently does not work on `Fabric`, as all values passed to `RawButton` and it's inheritors are passed through `processColor`, which is crucial on `Paper`, and broken on `Fabric`. This PR disables usage of `processColor`, when running on `Fabric`. Note: `isFabric` cannot be moved out of the body of the `Pressable`, as it likely won't be initialised before the `Pressable` starts being rendered. More details [here](https://github.com/software-mansion/react-native-gesture-handler/blob/b3d8fd91dca195267bdc33aa20fd6f5cd37d7fe2/src/utils.ts#L47). Fixes #3246 Fixes #3312 Supersedes #3250 Likely could add a workaround for https://github.com/software-mansion/react-native-reanimated/issues/6935 ## Test plan
Collapsed test code ```tsx import React from 'react'; import { Pressable as RNPressable, StyleSheet, Text } from 'react-native'; import { BaseButton, GestureHandlerRootView, RectButton, Pressable, } from 'react-native-gesture-handler'; const App = () => { return ( RectButton BaseButton {({ pressed }) => ( {pressed ? 'Pressed!' : 'Pressable from react-native'} )} {({ pressed }) => ( {pressed ? 'Pressed!' : 'Pressable from react-native'} )} {({ pressed }) => ( {pressed ? 'Pressed!' : 'Pressable from react-native'} )} {({ pressed }) => ( {pressed ? 'Pressed!' : 'Pressable from react-native'} )} ); }; const styles = StyleSheet.create({ container: { flex: 1, justifyContent: 'center', gap: 16, padding: 16, }, text: { fontSize: 32, }, wrapperCustom: { borderRadius: 8, padding: 6, flex: 1, backgroundColor: 'papayawhip', borderColor: 'red', borderWidth: 2, }, logBox: { flex: 1, padding: 20, margin: 10, borderWidth: StyleSheet.hairlineWidth, borderColor: '#f0f0f0', backgroundColor: '#f9f9f9', }, }); export default App; ```
--- src/components/GestureButtons.tsx | 15 +++++++++++++-- src/components/GestureButtonsProps.ts | 9 +++++++-- src/components/Pressable/Pressable.tsx | 20 ++++++++++++++++---- 3 files changed, 36 insertions(+), 8 deletions(-) diff --git a/src/components/GestureButtons.tsx b/src/components/GestureButtons.tsx index 8737e903f2..965ffb21f8 100644 --- a/src/components/GestureButtons.tsx +++ b/src/components/GestureButtons.tsx @@ -18,12 +18,15 @@ import type { BorderlessButtonWithRefProps, BorderlessButtonProps, } from './GestureButtonsProps'; +import { isFabric } from '../utils'; export const RawButton = createNativeWrapper(GestureHandlerButton, { shouldCancelWhenOutside: false, shouldActivateOnStart: false, }); +let IS_FABRIC: null | boolean = null; + class InnerBaseButton extends React.Component { static defaultProps = { delayLongPress: 600, @@ -120,12 +123,20 @@ class InnerBaseButton extends React.Component { }; render() { - const { rippleColor, style, ...rest } = this.props; + const { rippleColor: unprocessedRippleColor, style, ...rest } = this.props; + + if (IS_FABRIC === null) { + IS_FABRIC = isFabric(); + } + + const rippleColor = IS_FABRIC + ? unprocessedRippleColor + : processColor(unprocessedRippleColor ?? undefined); return ( = Platform.OS === 'web' ? { cursor: 'pointer' } : {}; @@ -381,6 +381,18 @@ export default function Pressable(props: PressableProps) { ? children({ pressed: pressedState }) : children; + const rippleColor = useMemo(() => { + if (IS_FABRIC === null) { + IS_FABRIC = isFabric(); + } + + const defaultRippleColor = android_ripple ? undefined : 'transparent'; + const unprocessedRippleColor = android_ripple?.color ?? defaultRippleColor; + return IS_FABRIC + ? unprocessedRippleColor + : processColor(unprocessedRippleColor); + }, [android_ripple]); + return ( Date: Tue, 4 Feb 2025 16:14:00 +0100 Subject: [PATCH 03/11] Remove view flattening error for `Text` component (#3338) ## Description Right now our `Text` components causes error that `GestureDetector` received view that may be view flattened. Adding `collapsable` into `Text` is not possible, so we decided to remove the error. Android check is different because using `dynamic_pointer_cast` yields `false`, even though in debugger `shadowNode` can be seen as `TextShadowNode`. Also, I've decided to use Android Studio formatter, to make sure that everyone in the team will have the same results. ## Test plan Tested on _**Nested Text**_ example. --- android/src/main/jni/cpp-adapter.cpp | 33 ++++++++++++------- apple/RNGestureHandlerModule.mm | 22 ++++++++++--- .../GestureDetector/useViewRefHandler.ts | 6 ++-- 3 files changed, 41 insertions(+), 20 deletions(-) diff --git a/android/src/main/jni/cpp-adapter.cpp b/android/src/main/jni/cpp-adapter.cpp index 9fc57662f5..e4bc281179 100644 --- a/android/src/main/jni/cpp-adapter.cpp +++ b/android/src/main/jni/cpp-adapter.cpp @@ -1,15 +1,17 @@ #include #include +#include +#include #include using namespace facebook; using namespace react; void decorateRuntime(jsi::Runtime &runtime) { - auto isFormsStackingContext = jsi::Function::createFromHostFunction( + auto isViewFlatteningDisabled = jsi::Function::createFromHostFunction( runtime, - jsi::PropNameID::forAscii(runtime, "isFormsStackingContext"), + jsi::PropNameID::forAscii(runtime, "isViewFlatteningDisabled"), 1, [](jsi::Runtime &runtime, const jsi::Value &thisValue, @@ -20,21 +22,28 @@ void decorateRuntime(jsi::Runtime &runtime) { } auto shadowNode = shadowNodeFromValue(runtime, arguments[0]); - bool isFormsStackingContext = shadowNode->getTraits().check(ShadowNodeTraits::FormsStackingContext); + bool isViewFlatteningDisabled = shadowNode->getTraits().check( + ShadowNodeTraits::FormsStackingContext); - return jsi::Value(isFormsStackingContext); + // This is done using component names instead of type checking because + // of duplicate symbols for RN types, which prevent RTTI from working. + const char *componentName = shadowNode->getComponentName(); + bool isTextComponent = strcmp(componentName, "Paragraph") == 0 || + strcmp(componentName, "Text") == 0; + + return jsi::Value(isViewFlatteningDisabled || isTextComponent); }); runtime.global().setProperty( - runtime, "isFormsStackingContext", std::move(isFormsStackingContext)); + runtime, "isViewFlatteningDisabled", std::move(isViewFlatteningDisabled)); } extern "C" JNIEXPORT void JNICALL Java_com_swmansion_gesturehandler_react_RNGestureHandlerModule_decorateRuntime( - JNIEnv *env, - jobject clazz, - jlong jsiPtr) { - jsi::Runtime *runtime = reinterpret_cast(jsiPtr); - if (runtime) { - decorateRuntime(*runtime); - } + JNIEnv *env, + jobject clazz, + jlong jsiPtr) { + jsi::Runtime *runtime = reinterpret_cast(jsiPtr); + if (runtime) { + decorateRuntime(*runtime); + } } diff --git a/apple/RNGestureHandlerModule.mm b/apple/RNGestureHandlerModule.mm index 4a0ce6939a..594eba35a1 100644 --- a/apple/RNGestureHandlerModule.mm +++ b/apple/RNGestureHandlerModule.mm @@ -14,6 +14,8 @@ #import #import +#import +#import #import #endif // RCT_NEW_ARCH_ENABLED @@ -91,19 +93,29 @@ - (dispatch_queue_t)methodQueue #ifdef RCT_NEW_ARCH_ENABLED void decorateRuntime(jsi::Runtime &runtime) { - auto isFormsStackingContext = jsi::Function::createFromHostFunction( + auto isViewFlatteningDisabled = jsi::Function::createFromHostFunction( runtime, - jsi::PropNameID::forAscii(runtime, "isFormsStackingContext"), + jsi::PropNameID::forAscii(runtime, "isViewFlatteningDisabled"), 1, [](jsi::Runtime &runtime, const jsi::Value &thisValue, const jsi::Value *arguments, size_t count) -> jsi::Value { if (!arguments[0].isObject()) { return jsi::Value::null(); } auto shadowNode = shadowNodeFromValue(runtime, arguments[0]); - bool isFormsStackingContext = shadowNode->getTraits().check(ShadowNodeTraits::FormsStackingContext); - return jsi::Value(isFormsStackingContext); + + if (dynamic_pointer_cast(shadowNode)) { + return jsi::Value(true); + } + + if (dynamic_pointer_cast(shadowNode)) { + return jsi::Value(true); + } + + bool isViewFlatteningDisabled = shadowNode->getTraits().check(ShadowNodeTraits::FormsStackingContext); + + return jsi::Value(isViewFlatteningDisabled); }); - runtime.global().setProperty(runtime, "isFormsStackingContext", std::move(isFormsStackingContext)); + runtime.global().setProperty(runtime, "isViewFlatteningDisabled", std::move(isViewFlatteningDisabled)); } #endif // RCT_NEW_ARCH_ENABLED diff --git a/src/handlers/gestures/GestureDetector/useViewRefHandler.ts b/src/handlers/gestures/GestureDetector/useViewRefHandler.ts index 6f9b639a3e..10679000c6 100644 --- a/src/handlers/gestures/GestureDetector/useViewRefHandler.ts +++ b/src/handlers/gestures/GestureDetector/useViewRefHandler.ts @@ -6,7 +6,7 @@ import React, { useCallback } from 'react'; import findNodeHandle from '../../../findNodeHandle'; declare const global: { - isFormsStackingContext: (node: unknown) => boolean | null; // JSI function + isViewFlatteningDisabled: (node: unknown) => boolean | null; // JSI function }; // Ref handler for the Wrap component attached under the GestureDetector. @@ -35,9 +35,9 @@ export function useViewRefHandler( updateAttachedGestures(true); } - if (__DEV__ && isFabric() && global.isFormsStackingContext) { + if (__DEV__ && isFabric() && global.isViewFlatteningDisabled) { const node = getShadowNodeFromRef(ref); - if (global.isFormsStackingContext(node) === false) { + if (global.isViewFlatteningDisabled(node) === false) { console.error( tagMessage( 'GestureDetector has received a child that may get view-flattened. ' + From b696961a5f10acc305135c91441131582ce8b138 Mon Sep 17 00:00:00 2001 From: Dorian Mazur <46839236+DorianMazur@users.noreply.github.com> Date: Tue, 4 Feb 2025 17:26:27 +0100 Subject: [PATCH 04/11] fix: overlapping buttons cause buttons to stop being responsive (#3371) ## Description Partially resolves problem in #3370 This PR fixes an issue where a behind button could stay stuck in the "pressed" state if another overlapping button took the responder. By adding a check in onTouchEvent, we ensure that only one button can stay pressed at a time. If another button is already the responder, the behind button cancels itself and won't remain highlighted. It will not solve the issue if both button are not exclusive. For this edge case better solution is needed. ## With this fix: https://github.com/user-attachments/assets/b88ff1d1-cf1c-4a62-9967-7dd25e2f3dc0 ## Without this fix: https://github.com/user-attachments/assets/b69771d2-655c-4fa6-b5b2-9edd37d32e9c ## Test plan https://snack.expo.dev/@oblador/gesture-handler-overlap-reproduction
Collapsed test code ```tsx import { Text, View, StyleSheet, ScrollView } from 'react-native'; import { BaseButton, GestureHandlerRootView, } from 'react-native-gesture-handler'; export default function App() { return ( console.log(event.nativeEvent)}> Behind console.log(event.nativeEvent)}> On top ); } const styles = StyleSheet.create({ container: { flex: 1, backgroundColor: '#ecf0f1', justifyContent: 'center', }, button: { padding: 30, borderWidth: 1, backgroundColor: '#ffffff99', }, onTop: { position: 'relative', top: -40, left: 100, right: 20, }, }); ```
--- .../react/RNGestureHandlerButtonViewManager.kt | 9 +++++++++ 1 file changed, 9 insertions(+) diff --git a/android/src/main/java/com/swmansion/gesturehandler/react/RNGestureHandlerButtonViewManager.kt b/android/src/main/java/com/swmansion/gesturehandler/react/RNGestureHandlerButtonViewManager.kt index 1e96341463..053c0464f8 100644 --- a/android/src/main/java/com/swmansion/gesturehandler/react/RNGestureHandlerButtonViewManager.kt +++ b/android/src/main/java/com/swmansion/gesturehandler/react/RNGestureHandlerButtonViewManager.kt @@ -296,6 +296,15 @@ class RNGestureHandlerButtonViewManager : ViewGroupManager(), R val eventTime = event.eventTime val action = event.action + if (touchResponder != null && touchResponder !== this && touchResponder!!.exclusive) { + if (isPressed) { + setPressed(false) + } + lastEventTime = eventTime + lastAction = action + return false + } + if (event.action == MotionEvent.ACTION_CANCEL) { tryFreeingResponder() } From 2781332831f431d36e0f4ab6d597ef4b1c6958b9 Mon Sep 17 00:00:00 2001 From: Sergey Gavrilyuk Date: Wed, 5 Feb 2025 03:39:15 -0700 Subject: [PATCH 05/11] Unregister from oldGestureHandler when component unmounts (#3374) ## Description We might have discovered a memory leak associated with oldGestureHandler registry. Nothing ever gets removed from it. We noticed a lot of hanging GenericTouchable components at runtime associated with this registry. ## Test plan
Tested on the following code: ```jsx import { useState } from 'react'; import { Button, View } from 'react-native'; import { GestureHandlerRootView, PanGestureHandler, } from 'react-native-gesture-handler'; export default function App() { const [show, setShow] = useState(false); return (
with ```jsx setInterval(() => console.log(oldHandlers), 1000); ``` added in `handlersRegistry.tsx` --- src/handlers/createHandler.tsx | 9 ++++++++- src/handlers/handlersRegistry.ts | 4 ++++ 2 files changed, 12 insertions(+), 1 deletion(-) diff --git a/src/handlers/createHandler.tsx b/src/handlers/createHandler.tsx index 06b269c7d7..4ea46d757c 100644 --- a/src/handlers/createHandler.tsx +++ b/src/handlers/createHandler.tsx @@ -8,7 +8,11 @@ import { import { customDirectEventTypes } from './customDirectEventTypes'; import RNGestureHandlerModule from '../RNGestureHandlerModule'; import { State } from '../State'; -import { handlerIDToTag, registerOldGestureHandler } from './handlersRegistry'; +import { + handlerIDToTag, + registerOldGestureHandler, + unregisterOldGestureHandler, +} from './handlersRegistry'; import { getNextHandlerTag } from './getNextHandlerTag'; import { @@ -255,6 +259,9 @@ export default function createHandler< componentWillUnmount() { this.inspectorToggleListener?.remove(); this.isMountedRef.current = false; + if (Platform.OS !== 'web') { + unregisterOldGestureHandler(this.handlerTag); + } RNGestureHandlerModule.dropGestureHandler(this.handlerTag); scheduleFlushOperations(); // We can't use this.props.id directly due to TS generic type narrowing bug, see https://github.com/microsoft/TypeScript/issues/13995 for more context diff --git a/src/handlers/handlersRegistry.ts b/src/handlers/handlersRegistry.ts index f070fc94b2..b60fc2d79d 100644 --- a/src/handlers/handlersRegistry.ts +++ b/src/handlers/handlersRegistry.ts @@ -25,6 +25,10 @@ export function registerOldGestureHandler( oldHandlers.set(handlerTag, handler); } +export function unregisterOldGestureHandler(handlerTag: number) { + oldHandlers.delete(handlerTag); +} + export function unregisterHandler(handlerTag: number, testID?: string) { gestures.delete(handlerTag); if (isTestEnv() && testID) { From 6e8d88e5a3b15bb399c188d4c23603b4e0f4a8bc Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Ignacy=20=C5=81=C4=85tka?= Date: Wed, 5 Feb 2025 11:41:02 +0100 Subject: [PATCH 06/11] Release 2.23.0 (#3373) ## Description Release 2.23.0 ## Test plan --- FabricExample/ios/Podfile.lock | 4 +- MacOSExample/macos/Podfile.lock | 8 +- example/yarn.lock | 568 ++++++++++++++++++++++++++++++-- package.json | 2 +- 4 files changed, 550 insertions(+), 32 deletions(-) diff --git a/FabricExample/ios/Podfile.lock b/FabricExample/ios/Podfile.lock index 750459039e..7ad6111aab 100644 --- a/FabricExample/ios/Podfile.lock +++ b/FabricExample/ios/Podfile.lock @@ -1499,7 +1499,7 @@ PODS: - React-logger (= 0.77.0) - React-perflogger (= 0.77.0) - React-utils (= 0.77.0) - - RNGestureHandler (2.22.1): + - RNGestureHandler (2.23.0): - DoubleConversion - glog - hermes-engine @@ -1801,7 +1801,7 @@ SPEC CHECKSUMS: ReactAppDependencyProvider: 6e8d68583f39dc31ee65235110287277eb8556ef ReactCodegen: c08a5113d9c9c895fe10f3c296f74c6b705a60a9 ReactCommon: 1bd2dc684d7992acbf0dfee887b89a57a1ead86d - RNGestureHandler: ab7b3143904577382d4e93f6d35d52f321660db6 + RNGestureHandler: b57c633defe01be73dfed9d645158fb21d6039d4 SocketRocket: d4aabe649be1e368d1318fdf28a022d714d65748 Yoga: 78d74e245ed67bb94275a1316cdc170b9b7fe884 diff --git a/MacOSExample/macos/Podfile.lock b/MacOSExample/macos/Podfile.lock index 17269e02ac..6682cccb3d 100644 --- a/MacOSExample/macos/Podfile.lock +++ b/MacOSExample/macos/Podfile.lock @@ -1166,7 +1166,7 @@ PODS: - React-utils (= 0.74.6) - RNCAsyncStorage (1.24.0): - React-Core - - RNGestureHandler (2.22.1): + - RNGestureHandler (2.23.0): - DoubleConversion - glog - hermes-engine @@ -1443,10 +1443,10 @@ EXTERNAL SOURCES: SPEC CHECKSUMS: boost: 0686b6af8cbd638c784fea5afb789be66699823c - DoubleConversion: acaf5db79676d2e9119015819153f0f99191de12 + DoubleConversion: 5b92c4507c560bb62e7aa1acdf2785ea3ff08b3b FBLazyVector: 8f41053475f558b29633b434bd62929813a38560 fmt: 03574da4b7ba40de39da59677ca66610ce8c4a02 - glog: 6df0a3d6e2750a50609471fd1a01fd2948d405b5 + glog: ba31c1afa7dcf1915a109861bccdb4421be6175b hermes-engine: 21ea4e6a0b64854652c8c20cb815efdbb3131fdd RCT-Folly: 2edbb9597acadc2312235c7ad6243d49852047a3 RCTDeprecation: 5f1d7e1f8ef6c53f0207e3ac0d0ca23575e8a6ab @@ -1496,7 +1496,7 @@ SPEC CHECKSUMS: React-utils: d1f30e28b14bea6aa6b009be03ab502bbf2cf5c6 ReactCommon: 68cae4af53cf2d34e6a26c0099f434f170495dd1 RNCAsyncStorage: ec53e44dc3e75b44aa2a9f37618a49c3bc080a7a - RNGestureHandler: ae092c8f9da8d2c0f47257caadc8eadebd03fa90 + RNGestureHandler: 2e6a9c6361b44a11795d51353445d65ba558cb1d RNReanimated: 45553a3ae29a75a76269595f8554d07d4090e392 RNSVG: 4590aa95758149fa27c5c83e54a6a466349a1688 SocketRocket: f6c6249082c011e6de2de60ed641ef8bbe0cfac9 diff --git a/example/yarn.lock b/example/yarn.lock index 44dbad2198..284aea6700 100644 --- a/example/yarn.lock +++ b/example/yarn.lock @@ -1866,6 +1866,18 @@ find-up "^5.0.0" js-yaml "^4.1.0" +"@hapi/hoek@^9.0.0", "@hapi/hoek@^9.3.0": + version "9.3.0" + resolved "https://registry.yarnpkg.com/@hapi/hoek/-/hoek-9.3.0.tgz#8368869dcb735be2e7f5cb7647de78e167a251fb" + integrity sha512-/c6rf4UJlmHlC9b5BaNvzAcFv7HZ2QHaV0D4/HNlBdvFnvQq8RI4kYdhyPCl7Xj+oWvTWQ8ujhqS53LIgAe6KQ== + +"@hapi/topo@^5.1.0": + version "5.1.0" + resolved "https://registry.yarnpkg.com/@hapi/topo/-/topo-5.1.0.tgz#dc448e332c6c6e37a4dc02fd84ba8d44b9afb012" + integrity sha512-foQZKJig7Ob0BMAYBfcJk8d77QtOe7Wo4ox7ff1lQYoNNAb6jwcY1ncdoy2e9wQZzvNy7ODZCYJkK8kzmcAnAg== + dependencies: + "@hapi/hoek" "^9.0.0" + "@humanwhocodes/config-array@^0.5.0": version "0.5.0" resolved "https://registry.yarnpkg.com/@humanwhocodes/config-array/-/config-array-0.5.0.tgz#1407967d4c6eecd7388f83acf1eaf4d0c6e58ef9" @@ -2100,6 +2112,17 @@ slash "^3.0.0" write-file-atomic "^4.0.2" +"@jest/types@^26.6.2": + version "26.6.2" + resolved "https://registry.yarnpkg.com/@jest/types/-/types-26.6.2.tgz#bef5a532030e1d88a2f5a6d933f84e97226ed48e" + integrity sha512-fC6QCp7Sc5sX6g8Tvbmj4XUTbyrik0akgRy03yjXbQaBWWNWGE7SGtJk98m0N8nzegD/7SggrUlivxo5ax4KWQ== + dependencies: + "@types/istanbul-lib-coverage" "^2.0.0" + "@types/istanbul-reports" "^3.0.0" + "@types/node" "*" + "@types/yargs" "^15.0.0" + chalk "^4.0.0" + "@jest/types@^29.6.3": version "29.6.3" resolved "https://registry.yarnpkg.com/@jest/types/-/types-29.6.3.tgz#1131f8cf634e7e84c5e77bab12f052af585fba59" @@ -2213,6 +2236,158 @@ dependencies: merge-options "^3.0.4" +"@react-native-community/cli-clean@15.0.1": + version "15.0.1" + resolved "https://registry.yarnpkg.com/@react-native-community/cli-clean/-/cli-clean-15.0.1.tgz#80ce09ffe0d62bb265447007f24dc8dcbf8fe7d3" + integrity sha512-flGTfT005UZvW2LAXVowZ/7ri22oiiZE4pPgMvc8klRxO5uofKIRuohgiHybHtiCo/HNqIz45JmZJvuFrhc4Ow== + dependencies: + "@react-native-community/cli-tools" "15.0.1" + chalk "^4.1.2" + execa "^5.0.0" + fast-glob "^3.3.2" + +"@react-native-community/cli-config-apple@15.0.1": + version "15.0.1" + resolved "https://registry.yarnpkg.com/@react-native-community/cli-config-apple/-/cli-config-apple-15.0.1.tgz#2d845599eada1b479df6716a25dc871c3d202f38" + integrity sha512-GEHUx4NRp9W9or6vygn0TgNeFkcJdNjrtko0vQEJAS4gJdWqP/9LqqwJNlUfaW5jHBN7TKALAMlfRmI12Op3sg== + dependencies: + "@react-native-community/cli-tools" "15.0.1" + chalk "^4.1.2" + execa "^5.0.0" + fast-glob "^3.3.2" + +"@react-native-community/cli-config@15.0.1": + version "15.0.1" + resolved "https://registry.yarnpkg.com/@react-native-community/cli-config/-/cli-config-15.0.1.tgz#fe44472757ebca4348fe4861ceaf9d4daff26767" + integrity sha512-SL3/9zIyzQQPKWei0+W1gNHxCPurrxqpODUWnVLoP38DNcvYCGtsRayw/4DsXgprZfBC+FsscNpd3IDJrG59XA== + dependencies: + "@react-native-community/cli-tools" "15.0.1" + chalk "^4.1.2" + cosmiconfig "^9.0.0" + deepmerge "^4.3.0" + fast-glob "^3.3.2" + joi "^17.2.1" + +"@react-native-community/cli-debugger-ui@15.0.1": + version "15.0.1" + resolved "https://registry.yarnpkg.com/@react-native-community/cli-debugger-ui/-/cli-debugger-ui-15.0.1.tgz#bed0d7af5ecb05222bdb7d6e74e21326a583bcf1" + integrity sha512-xkT2TLS8zg5r7Vl9l/2f7JVUoFECnVBS+B5ivrSu2PNZhKkr9lRmJFxC9aVLFb5lIxQQKNDvEyiIDNfP7wjJiA== + dependencies: + serve-static "^1.13.1" + +"@react-native-community/cli-doctor@15.0.1": + version "15.0.1" + resolved "https://registry.yarnpkg.com/@react-native-community/cli-doctor/-/cli-doctor-15.0.1.tgz#63cc42e7302f2bfa3739b29fea57b68d5d68fa03" + integrity sha512-YCu44lZR3zZxJJYVTqYZFz9cT9KBfbKI4q2MnKOvkamt00XY3usooMqfuwBAdvM/yvpx7M5w8kbM/nPyj4YCvQ== + dependencies: + "@react-native-community/cli-config" "15.0.1" + "@react-native-community/cli-platform-android" "15.0.1" + "@react-native-community/cli-platform-apple" "15.0.1" + "@react-native-community/cli-platform-ios" "15.0.1" + "@react-native-community/cli-tools" "15.0.1" + chalk "^4.1.2" + command-exists "^1.2.8" + deepmerge "^4.3.0" + envinfo "^7.13.0" + execa "^5.0.0" + node-stream-zip "^1.9.1" + ora "^5.4.1" + semver "^7.5.2" + strip-ansi "^5.2.0" + wcwidth "^1.0.1" + yaml "^2.2.1" + +"@react-native-community/cli-platform-android@15.0.1": + version "15.0.1" + resolved "https://registry.yarnpkg.com/@react-native-community/cli-platform-android/-/cli-platform-android-15.0.1.tgz#9706fe454d0e2af4680c3ea1937830c93041a35f" + integrity sha512-QlAMomj6H6TY6pHwjTYMsHDQLP5eLzjAmyW1qb03w/kyS/72elK2bjsklNWJrscFY9TMQLqw7qoAsXf1m5t/dg== + dependencies: + "@react-native-community/cli-tools" "15.0.1" + chalk "^4.1.2" + execa "^5.0.0" + fast-glob "^3.3.2" + fast-xml-parser "^4.4.1" + logkitty "^0.7.1" + +"@react-native-community/cli-platform-apple@15.0.1": + version "15.0.1" + resolved "https://registry.yarnpkg.com/@react-native-community/cli-platform-apple/-/cli-platform-apple-15.0.1.tgz#af3c9bc910c96e823a488c21e7d68a9b4a07c8d1" + integrity sha512-iQj1Dt2fr/Q7X2CQhyhWnece3eLDCark1osfiwpViksOfTH2WdpNS3lIwlFcIKhsieFU7YYwbNuFqQ3tF9Dlvw== + dependencies: + "@react-native-community/cli-config-apple" "15.0.1" + "@react-native-community/cli-tools" "15.0.1" + chalk "^4.1.2" + execa "^5.0.0" + fast-xml-parser "^4.4.1" + +"@react-native-community/cli-platform-ios@15.0.1": + version "15.0.1" + resolved "https://registry.yarnpkg.com/@react-native-community/cli-platform-ios/-/cli-platform-ios-15.0.1.tgz#a1cb78c3d43b9c2bbb411a074ef11364f2a94bbf" + integrity sha512-6pKzXEIgGL20eE1uOn8iSsNBlMzO1LG+pQOk+7mvD172EPhKm/lRzUVDX5gO/2jvsGoNw6VUW0JX1FI2firwqA== + dependencies: + "@react-native-community/cli-platform-apple" "15.0.1" + +"@react-native-community/cli-server-api@15.0.1": + version "15.0.1" + resolved "https://registry.yarnpkg.com/@react-native-community/cli-server-api/-/cli-server-api-15.0.1.tgz#e7975e7638343248835fd379803d557c0ae24d75" + integrity sha512-f3rb3t1ELLaMSX5/LWO/IykglBIgiP3+pPnyl8GphHnBpf3bdIcp7fHlHLemvHE06YxT2nANRxRPjy1gNskenA== + dependencies: + "@react-native-community/cli-debugger-ui" "15.0.1" + "@react-native-community/cli-tools" "15.0.1" + compression "^1.7.1" + connect "^3.6.5" + errorhandler "^1.5.1" + nocache "^3.0.1" + pretty-format "^26.6.2" + serve-static "^1.13.1" + ws "^6.2.3" + +"@react-native-community/cli-tools@15.0.1": + version "15.0.1" + resolved "https://registry.yarnpkg.com/@react-native-community/cli-tools/-/cli-tools-15.0.1.tgz#3cc5398da72b5d365eb4a30468ebce2bf37fa591" + integrity sha512-N79A+u/94roanfmNohVcNGu6Xg+0idh63JHZFLC9OJJuZwTifGMLDfSTHZATpR1J7rebozQ5ClcSUePavErnSg== + dependencies: + appdirsjs "^1.2.4" + chalk "^4.1.2" + execa "^5.0.0" + find-up "^5.0.0" + mime "^2.4.1" + open "^6.2.0" + ora "^5.4.1" + prompts "^2.4.2" + semver "^7.5.2" + shell-quote "^1.7.3" + sudo-prompt "^9.0.0" + +"@react-native-community/cli-types@15.0.1": + version "15.0.1" + resolved "https://registry.yarnpkg.com/@react-native-community/cli-types/-/cli-types-15.0.1.tgz#ebdb5bc76ade44b2820174fdcb2a3a05999686ec" + integrity sha512-sWiJ62kkGu2mgYni2dsPxOMBzpwTjNsDH1ubY4mqcNEI9Zmzs0vRwwDUEhYqwNGys9+KpBKoZRrT2PAlhO84xA== + dependencies: + joi "^17.2.1" + +"@react-native-community/cli@15.0.1": + version "15.0.1" + resolved "https://registry.yarnpkg.com/@react-native-community/cli/-/cli-15.0.1.tgz#d703d55cc6540ce3d29fd2fbf3303bea0ffd96f2" + integrity sha512-xIGPytx2bj5HxFk0c7S25AVuJowHmEFg5LFC9XosKc0TSOjP1r6zGC6OqC/arQV/pNuqmZN2IFnpgJn0Bn+hhQ== + dependencies: + "@react-native-community/cli-clean" "15.0.1" + "@react-native-community/cli-config" "15.0.1" + "@react-native-community/cli-debugger-ui" "15.0.1" + "@react-native-community/cli-doctor" "15.0.1" + "@react-native-community/cli-server-api" "15.0.1" + "@react-native-community/cli-tools" "15.0.1" + "@react-native-community/cli-types" "15.0.1" + chalk "^4.1.2" + commander "^9.4.1" + deepmerge "^4.3.0" + execa "^5.0.0" + find-up "^5.0.0" + fs-extra "^8.1.0" + graceful-fs "^4.1.3" + prompts "^2.4.2" + semver "^7.5.2" + "@react-native-community/slider@4.5.5": version "4.5.5" resolved "https://registry.yarnpkg.com/@react-native-community/slider/-/slider-4.5.5.tgz#d70fc5870477760033769bbd6625d57e7d7678b2" @@ -2552,6 +2727,23 @@ component-type "^1.2.1" join-component "^1.1.0" +"@sideway/address@^4.1.5": + version "4.1.5" + resolved "https://registry.yarnpkg.com/@sideway/address/-/address-4.1.5.tgz#4bc149a0076623ced99ca8208ba780d65a99b9d5" + integrity sha512-IqO/DUQHUkPeixNQ8n0JA6102hT9CmaljNTPmQ1u8MEhBo/R4Q8eKLN/vGZxuebwOroDB4cbpjheD4+/sKFK4Q== + dependencies: + "@hapi/hoek" "^9.0.0" + +"@sideway/formula@^3.0.1": + version "3.0.1" + resolved "https://registry.yarnpkg.com/@sideway/formula/-/formula-3.0.1.tgz#80fcbcbaf7ce031e0ef2dd29b1bfc7c3f583611f" + integrity sha512-/poHZJJVjx3L+zVD6g9KgHfYnb443oi7wLu/XKojDviHy6HOEOA6z1Trk5aR1dGcmPenJEgb2sK2I80LeS3MIg== + +"@sideway/pinpoint@^2.0.0": + version "2.0.0" + resolved "https://registry.yarnpkg.com/@sideway/pinpoint/-/pinpoint-2.0.0.tgz#cff8ffadc372ad29fd3f78277aeb29e632cc70df" + integrity sha512-RNiOoTPkptFtSVzQevY/yWtZwf/RxyVnPy/OcA9HBM3MlGDnBEYL5B41H0MTn0Uec8Hi+2qUtTfG2WWZBmMejQ== + "@sinclair/typebox@^0.27.8": version "0.27.8" resolved "https://registry.yarnpkg.com/@sinclair/typebox/-/typebox-0.27.8.tgz#6667fac16c436b5434a387a34dedb013198f6e6e" @@ -2714,6 +2906,13 @@ resolved "https://registry.yarnpkg.com/@types/yargs-parser/-/yargs-parser-21.0.3.tgz#815e30b786d2e8f0dcd85fd5bcf5e1a04d008f15" integrity sha512-I4q9QU9MQv4oEOz4tAHJtNz1cwuLxn2F3xcc2iV5WdqLPpUnj30aUuxt1mAxYTG+oe8CZMV/+6rU4S4gRDzqtQ== +"@types/yargs@^15.0.0": + version "15.0.19" + resolved "https://registry.yarnpkg.com/@types/yargs/-/yargs-15.0.19.tgz#328fb89e46109ecbdb70c295d96ff2f46dfd01b9" + integrity sha512-2XUaGVmyQjgyAZldf0D0c14vvo/yv0MhQBSTJcejMMaitsn3nxCB6TmH4G0ZQf+uxROOa9mpanoSm8h6SG/1ZA== + dependencies: + "@types/yargs-parser" "*" + "@types/yargs@^17.0.8": version "17.0.32" resolved "https://registry.yarnpkg.com/@types/yargs/-/yargs-17.0.32.tgz#030774723a2f7faafebf645f4e5a48371dca6229" @@ -2889,7 +3088,7 @@ abort-controller@^3.0.0: dependencies: event-target-shim "^5.0.0" -accepts@^1.3.7, accepts@^1.3.8: +accepts@^1.3.7, accepts@^1.3.8, accepts@~1.3.7: version "1.3.8" resolved "https://registry.yarnpkg.com/accepts/-/accepts-1.3.8.tgz#0bf0be125b67014adcb0b0921e62db7bffe16b2e" integrity sha512-PYAthTa2m2VKxuvSD3DPC/Gy+U+sOA1LAuT8mkmRuvw+NACSaeXEQ+NHcVF7rONl6qcaxV3Uuemwawk+7+SJLw== @@ -2957,6 +3156,15 @@ ansi-escapes@^4.2.1, ansi-escapes@^4.3.2: dependencies: type-fest "^0.21.3" +ansi-fragments@^0.2.1: + version "0.2.1" + resolved "https://registry.yarnpkg.com/ansi-fragments/-/ansi-fragments-0.2.1.tgz#24409c56c4cc37817c3d7caa99d8969e2de5a05e" + integrity sha512-DykbNHxuXQwUDRv5ibc2b0x7uw7wmwOGLBUd5RmaQ5z8Lhx19vwvKV+FAsM5rEA6dEcHxX+/Ad5s9eF2k2bB+w== + dependencies: + colorette "^1.0.7" + slice-ansi "^2.0.0" + strip-ansi "^5.0.0" + ansi-regex@^4.1.0: version "4.1.1" resolved "https://registry.yarnpkg.com/ansi-regex/-/ansi-regex-4.1.1.tgz#164daac87ab2d6f6db3a29875e2d1766582dabed" @@ -2972,7 +3180,7 @@ ansi-regex@^6.0.1: resolved "https://registry.yarnpkg.com/ansi-regex/-/ansi-regex-6.1.0.tgz#95ec409c69619d6cb1b8b34f14b660ef28ebd654" integrity sha512-7HSX4QQb4CspciLpVFwyRe79O3xsIZDDLER21kERQ71oaPodF8jL725AgJMFAYbooIqolJoRLuM81SpeUkpkvA== -ansi-styles@^3.2.1: +ansi-styles@^3.2.0, ansi-styles@^3.2.1: version "3.2.1" resolved "https://registry.yarnpkg.com/ansi-styles/-/ansi-styles-3.2.1.tgz#41fbb20243e50b12be0f04b8dedbf07520ce841d" integrity sha512-VT0ZI6kZRdTh8YyJw3SMbYm/u+NqfsAxEpWO0Pf9sq8/e94WxxOpPKx9FR1FlyCtOVDNOQ+8ntlqFxiRc+r5qA== @@ -3009,6 +3217,11 @@ anymatch@^3.0.3: normalize-path "^3.0.0" picomatch "^2.0.4" +appdirsjs@^1.2.4: + version "1.2.7" + resolved "https://registry.yarnpkg.com/appdirsjs/-/appdirsjs-1.2.7.tgz#50b4b7948a26ba6090d4aede2ae2dc2b051be3b3" + integrity sha512-Quji6+8kLBC3NnBeo14nPDq0+2jUs5s3/xEye+udFHumHhRk4M7aAMXp/PBJqkKYGuuyR9M/6Dq7d2AViiGmhw== + application-config-path@^0.1.0: version "0.1.1" resolved "https://registry.yarnpkg.com/application-config-path/-/application-config-path-0.1.1.tgz#8b5ac64ff6afdd9bd70ce69f6f64b6998f5f756e" @@ -3124,6 +3337,11 @@ ast-types@0.15.2: dependencies: tslib "^2.0.1" +astral-regex@^1.0.0: + version "1.0.0" + resolved "https://registry.yarnpkg.com/astral-regex/-/astral-regex-1.0.0.tgz#6c8c3fb827dd43ee3918f27b82782ab7658a6fd9" + integrity sha512-+Ryf6g3BKoRc7jfp7ad8tM4TtMiaWvbF/1/sQcZPkkS7ag3D5nMBCe2UfOTONtAkaG0tO0ij3C5Lwmf1EiyjHg== + astral-regex@^2.0.0: version "2.0.0" resolved "https://registry.yarnpkg.com/astral-regex/-/astral-regex-2.0.0.tgz#483143c567aeed4785759c0865786dc77d7d2e31" @@ -3325,6 +3543,15 @@ big-integer@1.6.x: resolved "https://registry.yarnpkg.com/big-integer/-/big-integer-1.6.52.tgz#60a887f3047614a8e1bffe5d7173490a97dc8c85" integrity sha512-QxD8cf2eVqJOOz63z6JIN9BzvVs/dlySa5HGSBH5xtR8dPteIRQnBxxKqkNTiT6jbDTF6jAfrd4oMcND9RGbQg== +bl@^4.1.0: + version "4.1.0" + resolved "https://registry.yarnpkg.com/bl/-/bl-4.1.0.tgz#451535264182bec2fbbc83a62ab98cf11d9f7b3a" + integrity sha512-1W07cM9gS6DcLperZfFSj+bWLtaPGSOHWhPiGzXmvVJbRLdG82sH/Kn8EtW1VqWVA54AKf2h5k5BbnIbwF3h6w== + dependencies: + buffer "^5.5.0" + inherits "^2.0.4" + readable-stream "^3.4.0" + boolbase@^1.0.0: version "1.0.0" resolved "https://registry.yarnpkg.com/boolbase/-/boolbase-1.0.0.tgz#68dff5fbe60c51eb37725ea9e3ed310dcc1e776e" @@ -3430,7 +3657,7 @@ buffer-from@^1.0.0: resolved "https://registry.yarnpkg.com/buffer-from/-/buffer-from-1.1.2.tgz#2b146a6fd72e80b4f55d255f35ed59a3a9a41bd5" integrity sha512-E+XQCRwSbaaiChtv6k6Dwgc+bx+Bs6vuKJHHl5kox/BaKbhiXzqQOwK4cO22yElGp2OCmjwVhT3HmxgyPGnJfQ== -buffer@^5.4.3: +buffer@^5.4.3, buffer@^5.5.0: version "5.7.1" resolved "https://registry.yarnpkg.com/buffer/-/buffer-5.7.1.tgz#ba62e7c13133053582197160851a8f648e99eed0" integrity sha512-EHcyIPBQ4BSGlvjB16k5KgAJ27CIsHY/2JBmCRReo48y9rQ3MaUzWX3KVlBa4U7MyX02HdVj0K7C3WaB3ju7FQ== @@ -3511,7 +3738,7 @@ callsites@^3.0.0: resolved "https://registry.yarnpkg.com/callsites/-/callsites-3.1.0.tgz#b3630abd8943432f54b3f0519238e33cd7df2f73" integrity sha512-P8BjAsXvZS+VIDUI11hHCQEv74YT67YUi5JJFNWIqL235sBmjX4+qx9Muvls5ivyNENctx46xQLQ3aTuE7ssaQ== -camelcase@^5.3.1: +camelcase@^5.0.0, camelcase@^5.3.1: version "5.3.1" resolved "https://registry.yarnpkg.com/camelcase/-/camelcase-5.3.1.tgz#e3c9b31569e106811df242f715725a1f4c494320" integrity sha512-L28STB170nwWS63UjtlEOE3dldQApaJXZkOI1uMFfzf3rRuPegHaHesyee+YxQ+W6SvRDQV6UrdOdRiR153wJg== @@ -3612,11 +3839,27 @@ cli-cursor@^2.1.0: dependencies: restore-cursor "^2.0.0" -cli-spinners@^2.0.0: +cli-cursor@^3.1.0: + version "3.1.0" + resolved "https://registry.yarnpkg.com/cli-cursor/-/cli-cursor-3.1.0.tgz#264305a7ae490d1d03bf0c9ba7c925d1753af307" + integrity sha512-I/zHAwsKf9FqGoXM4WWRACob9+SNukZTd94DWF57E4toouRulbCxcUh6RKUEOQlYTHJnzkPMySvPNaaSLNfLZw== + dependencies: + restore-cursor "^3.1.0" + +cli-spinners@^2.0.0, cli-spinners@^2.5.0: version "2.9.2" resolved "https://registry.yarnpkg.com/cli-spinners/-/cli-spinners-2.9.2.tgz#1773a8f4b9c4d6ac31563df53b3fc1d79462fe41" integrity sha512-ywqV+5MmyL4E7ybXgKys4DugZbX0FC6LnwrhjuykIjnK9k8OQacQ7axGKnjDXWNhns0xot3bZI5h55H8yo9cJg== +cliui@^6.0.0: + version "6.0.0" + resolved "https://registry.yarnpkg.com/cliui/-/cliui-6.0.0.tgz#511d702c0c4e41ca156d7d0e96021f23e13225b1" + integrity sha512-t6wbgtoCXvAzst7QgXxJYqPt0usEfbgQdftEPbLL/cvv6HPE5VgvqCuAIDR0NgU52ds6rFwqrgakNLrHEjCbrQ== + dependencies: + string-width "^4.2.0" + strip-ansi "^6.0.0" + wrap-ansi "^6.2.0" + cliui@^8.0.1: version "8.0.1" resolved "https://registry.yarnpkg.com/cliui/-/cliui-8.0.1.tgz#0c04b075db02cbfe60dc8e6cf2f5486b1a3608aa" @@ -3690,6 +3933,11 @@ color@^4.2.3: color-convert "^2.0.1" color-string "^1.9.0" +colorette@^1.0.7: + version "1.4.0" + resolved "https://registry.yarnpkg.com/colorette/-/colorette-1.4.0.tgz#5190fbb87276259a86ad700bff2c6d6faa3fca40" + integrity sha512-Y2oEozpomLn7Q3HFP7dpww7AtMJplbM9lGZP6RDfHqmbeRjiwRg4n6VM6j4KLmRke85uWEI7JqF17f3pqdRA0g== + combined-stream@^1.0.8: version "1.0.8" resolved "https://registry.yarnpkg.com/combined-stream/-/combined-stream-1.0.8.tgz#c3d45a8b34fd730631a110a8a2520682b31d5a7f" @@ -3697,7 +3945,7 @@ combined-stream@^1.0.8: dependencies: delayed-stream "~1.0.0" -command-exists@^1.2.4: +command-exists@^1.2.4, command-exists@^1.2.8: version "1.2.9" resolved "https://registry.yarnpkg.com/command-exists/-/command-exists-1.2.9.tgz#c50725af3808c8ab0260fd60b01fbfa25b954f69" integrity sha512-LTQ/SGc+s0Xc0Fu5WaKnR0YiygZkm9eKFvyS+fRsU7/ZWFF8ykFM6Pc9aCVf1+xasOOZpO3BAVgVrKvsqKHV7w== @@ -3722,6 +3970,11 @@ commander@^7.2.0: resolved "https://registry.yarnpkg.com/commander/-/commander-7.2.0.tgz#a36cb57d0b501ce108e4d20559a150a391d97ab7" integrity sha512-QrWXB+ZQSVPmIWIhtEO9H+gwHaMGYiF5ChvoJ+K9ZGHG/sVsa6yiesAD1GC/x46sET00Xlwo1u49RVVVzvcSkw== +commander@^9.4.1: + version "9.5.0" + resolved "https://registry.yarnpkg.com/commander/-/commander-9.5.0.tgz#bc08d1eb5cedf7ccb797a96199d41c7bc3e60d30" + integrity sha512-KRs7WVDKg86PWiuAqhDrAQnTXZKraVcCc6vFdL14qrZ/DcWwuRo7VoiYXalXO7S5GKpqYiVEwCbgFDfxNHKJBQ== + commondir@^1.0.1: version "1.0.1" resolved "https://registry.yarnpkg.com/commondir/-/commondir-1.0.1.tgz#ddd800da0c66127393cca5950ea968a3aaf1253b" @@ -3739,7 +3992,7 @@ compressible@~2.0.18: dependencies: mime-db ">= 1.43.0 < 2" -compression@^1.7.4: +compression@^1.7.1, compression@^1.7.4: version "1.7.5" resolved "https://registry.yarnpkg.com/compression/-/compression-1.7.5.tgz#fdd256c0a642e39e314c478f6c2cd654edd74c93" integrity sha512-bQJ0YRck5ak3LgtnpKkiabX5pNF7tMUh1BSy2ZBOTh0Dim0BUu6aPPwByIns6/A5Prh8PufSPerMDUklpzes2Q== @@ -3801,6 +4054,16 @@ cosmiconfig@^5.0.5: js-yaml "^3.13.1" parse-json "^4.0.0" +cosmiconfig@^9.0.0: + version "9.0.0" + resolved "https://registry.yarnpkg.com/cosmiconfig/-/cosmiconfig-9.0.0.tgz#34c3fc58287b915f3ae905ab6dc3de258b55ad9d" + integrity sha512-itvL5h8RETACmOTFc4UfIyB2RfEHi71Ax6E/PivVxq9NseKbOWpeyHEOIbmAw1rs8Ak0VursQNww7lf7YtUwzg== + dependencies: + env-paths "^2.2.1" + import-fresh "^3.3.0" + js-yaml "^4.1.0" + parse-json "^5.2.0" + create-jest@^29.7.0: version "29.7.0" resolved "https://registry.yarnpkg.com/create-jest/-/create-jest-29.7.0.tgz#a355c5b3cb1e1af02ba177fe7afd7feee49a5320" @@ -3923,6 +4186,11 @@ data-view-byte-offset@^1.0.1: es-errors "^1.3.0" is-data-view "^1.0.1" +dayjs@^1.8.15: + version "1.11.13" + resolved "https://registry.yarnpkg.com/dayjs/-/dayjs-1.11.13.tgz#92430b0139055c3ebb60150aa13e860a4b5a366c" + integrity sha512-oaMBel6gjolK862uaPQOVTA7q3TZhuSvuMQAAglQDOWYO9A91IrAOUJEyKVlqJlHE0vq5p5UXxzdPfMH/x6xNg== + debug@2.6.9, debug@^2.2.0, debug@^2.6.9: version "2.6.9" resolved "https://registry.yarnpkg.com/debug/-/debug-2.6.9.tgz#5d128515df134ff327e90a4c93f4e077a536341f" @@ -3951,6 +4219,11 @@ debug@^4.1.0, debug@^4.1.1, debug@^4.3.1, debug@^4.3.4: dependencies: ms "2.1.2" +decamelize@^1.2.0: + version "1.2.0" + resolved "https://registry.yarnpkg.com/decamelize/-/decamelize-1.2.0.tgz#f6534d15148269b20352e7bee26f501f9a191290" + integrity sha512-z2S+W9X73hAUUki+N+9Za2lBlun89zigOyGrsax+KUQ6wKW4ZoWpEYBkGhQjwAjjDCkWxhY0VKEhk8wzY7F5cA== + decode-uri-component@^0.2.2: version "0.2.2" resolved "https://registry.yarnpkg.com/decode-uri-component/-/decode-uri-component-0.2.2.tgz#e69dbe25d37941171dd540e024c444cd5188e1e9" @@ -3971,7 +4244,7 @@ deep-is@^0.1.3: resolved "https://registry.yarnpkg.com/deep-is/-/deep-is-0.1.4.tgz#a6f2dce612fadd2ef1f519b73551f17e85199831" integrity sha512-oIPzksmTg4/MriiaYGO+okXDT7ztn/w3Eptv/+gSIdMdKsJo0u4CfYNFJPy+4SKMuCqGw2wxnA+URMg3t8a/bQ== -deepmerge@^4.2.2, deepmerge@^4.3.1: +deepmerge@^4.2.2, deepmerge@^4.3.0, deepmerge@^4.3.1: version "4.3.1" resolved "https://registry.yarnpkg.com/deepmerge/-/deepmerge-4.3.1.tgz#44b5f2147cd3b00d4b56137685966f26fd25dd4a" integrity sha512-3sUqbMEc77XqpdNO7FRyRog+eW3ph+GYCbj+rK+uYyRMuwsVy0rMiVtPn+QJlKFvWP/1PYpapqYn0Me2knFn+A== @@ -4205,6 +4478,16 @@ env-editor@^0.4.1: resolved "https://registry.yarnpkg.com/env-editor/-/env-editor-0.4.2.tgz#4e76568d0bd8f5c2b6d314a9412c8fe9aa3ae861" integrity sha512-ObFo8v4rQJAE59M69QzwloxPZtd33TpYEIjtKD1rrFDcM1Gd7IkDxEBU+HriziN6HSHQnBJi8Dmy+JWkav5HKA== +env-paths@^2.2.1: + version "2.2.1" + resolved "https://registry.yarnpkg.com/env-paths/-/env-paths-2.2.1.tgz#420399d416ce1fbe9bc0a07c62fa68d67fd0f8f2" + integrity sha512-+h1lkLKhZMTYjog1VEpJNG7NZJWcuc2DDk/qsqSTRRCOXiLjeQ1d1/udrUGhqMxUgAlwKNZ0cf2uqan5GLuS2A== + +envinfo@^7.13.0: + version "7.14.0" + resolved "https://registry.yarnpkg.com/envinfo/-/envinfo-7.14.0.tgz#26dac5db54418f2a4c1159153a0b2ae980838aae" + integrity sha512-CO40UI41xDQzhLB1hWyqUKgFhs250pNcGbyGKe1l/e4FSaI/+YE4IMG76GDt0In67WLPACIITC+sOi08x4wIvg== + eol@^0.9.1: version "0.9.1" resolved "https://registry.yarnpkg.com/eol/-/eol-0.9.1.tgz#f701912f504074be35c6117a5c4ade49cd547acd" @@ -4224,6 +4507,14 @@ error-stack-parser@^2.0.6: dependencies: stackframe "^1.3.4" +errorhandler@^1.5.1: + version "1.5.1" + resolved "https://registry.yarnpkg.com/errorhandler/-/errorhandler-1.5.1.tgz#b9ba5d17cf90744cd1e851357a6e75bf806a9a91" + integrity sha512-rcOwbfvP1WTViVoUjcfZicVzjhjTuhSMntHh6mW3IrEiyE6mJyXvsToJUJGlGlw/2xU9P5whlWNGlIDVeCiT4A== + dependencies: + accepts "~1.3.7" + escape-html "~1.0.3" + es-abstract@^1.17.5, es-abstract@^1.23.2, es-abstract@^1.23.3, es-abstract@^1.23.5, es-abstract@^1.23.6, es-abstract@^1.23.9: version "1.23.9" resolved "https://registry.yarnpkg.com/es-abstract/-/es-abstract-1.23.9.tgz#5b45994b7de78dada5c1bebf1379646b32b9d606" @@ -4784,6 +5075,13 @@ fast-uri@^3.0.1: resolved "https://registry.yarnpkg.com/fast-uri/-/fast-uri-3.0.5.tgz#19f5f9691d0dab9b85861a7bb5d98fca961da9cd" integrity sha512-5JnBCWpFlMo0a3ciDy/JckMzzv1U9coZrIhedq+HXxxUfDTAiS0LA8OKVao4G9BxmCVck/jtA5r3KAtRWEyD8Q== +fast-xml-parser@^4.4.1: + version "4.5.1" + resolved "https://registry.yarnpkg.com/fast-xml-parser/-/fast-xml-parser-4.5.1.tgz#a7e665ff79b7919100a5202f23984b6150f9b31e" + integrity sha512-y655CeyUQ+jj7KBbYMc4FG01V8ZQqjN+gDYGJ50RtfsUB8iG9AmwmwoAgeKLJdmueKKMrH1RJ7yXHTSoczdv5w== + dependencies: + strnum "^1.0.5" + fastq@^1.6.0: version "1.17.1" resolved "https://registry.yarnpkg.com/fastq/-/fastq-1.17.1.tgz#2a523f07a4e7b1e81a42b91b8bf2254107753b47" @@ -4979,6 +5277,15 @@ fs-extra@9.0.0: jsonfile "^6.0.1" universalify "^1.0.0" +fs-extra@^8.1.0, fs-extra@~8.1.0: + version "8.1.0" + resolved "https://registry.yarnpkg.com/fs-extra/-/fs-extra-8.1.0.tgz#49d43c45a88cd9677668cb7be1b46efdb8d2e1c0" + integrity sha512-yhlQgA6mnOJUKOsRUFsgJdQCvkKhcz8tlZG5HBQfReYZy46OwLcY+Zia0mtdHsOo9y/hP+CxMN0TU9QxoOtG4g== + dependencies: + graceful-fs "^4.2.0" + jsonfile "^4.0.0" + universalify "^0.1.0" + fs-extra@^9.0.0, fs-extra@^9.1.0: version "9.1.0" resolved "https://registry.yarnpkg.com/fs-extra/-/fs-extra-9.1.0.tgz#5954460c764a8da2094ba3554bf839e6b9a7c86d" @@ -4989,15 +5296,6 @@ fs-extra@^9.0.0, fs-extra@^9.1.0: jsonfile "^6.0.1" universalify "^2.0.0" -fs-extra@~8.1.0: - version "8.1.0" - resolved "https://registry.yarnpkg.com/fs-extra/-/fs-extra-8.1.0.tgz#49d43c45a88cd9677668cb7be1b46efdb8d2e1c0" - integrity sha512-yhlQgA6mnOJUKOsRUFsgJdQCvkKhcz8tlZG5HBQfReYZy46OwLcY+Zia0mtdHsOo9y/hP+CxMN0TU9QxoOtG4g== - dependencies: - graceful-fs "^4.2.0" - jsonfile "^4.0.0" - universalify "^0.1.0" - fs-minipass@^2.0.0: version "2.1.0" resolved "https://registry.yarnpkg.com/fs-minipass/-/fs-minipass-2.1.0.tgz#7f5036fdbf12c63c169190cbe4199c852271f9fb" @@ -5054,7 +5352,7 @@ gensync@^1.0.0-beta.2: resolved "https://registry.yarnpkg.com/gensync/-/gensync-1.0.0-beta.2.tgz#32a6ee76c3d7f52d46b2b1ae5d93fea8580a25e0" integrity sha512-3hN7NaskYvMDLQY55gnW3NQ+mesEAepTqlg+VEbj7zzqEMBVNhzcGYYeqFo/TlYz6eQiFcp1HcsCZO+nGgS8zg== -get-caller-file@^2.0.5: +get-caller-file@^2.0.1, get-caller-file@^2.0.5: version "2.0.5" resolved "https://registry.yarnpkg.com/get-caller-file/-/get-caller-file-2.0.5.tgz#4f94412a82db32f36e3b0b9741f8a97feb031f7e" integrity sha512-DyFP3BM/3YHTQOCUL/w0OZHR0lpKeGrxotcHWcqNEdnltqFwXVfhEBQ94eIo34AfQpo0rGki4cyIiftY06h2Fg== @@ -5197,7 +5495,7 @@ gopd@^1.0.1, gopd@^1.2.0: resolved "https://registry.yarnpkg.com/gopd/-/gopd-1.2.0.tgz#89f56b8217bdbc8802bd299df6d7f1081d7e51a1" integrity sha512-ZUKRh6/kUFoAiTAtTYPZJ3hw9wNxx+BIBOijnlG9PnrJsCcSjs1wyyD6vJpaYtgnzDrKYRSqf3OO6Rfa93xsRg== -graceful-fs@^4.1.11, graceful-fs@^4.1.6, graceful-fs@^4.2.0, graceful-fs@^4.2.4, graceful-fs@^4.2.9: +graceful-fs@^4.1.11, graceful-fs@^4.1.3, graceful-fs@^4.1.6, graceful-fs@^4.2.0, graceful-fs@^4.2.4, graceful-fs@^4.2.9: version "4.2.11" resolved "https://registry.yarnpkg.com/graceful-fs/-/graceful-fs-4.2.11.tgz#4183e4e8bf08bb6e05bbb2f7d2e0c8f712ca40e3" integrity sha512-RbJ5/jmFcNNCcDV5o9eTnBLJ/HszWV0P73bc+Ff4nS/rJj+YaS6IGyiOL0VoBYX+l1Wrl3k63h/KrH+nhJ0XvQ== @@ -5398,6 +5696,14 @@ import-fresh@^3.0.0, import-fresh@^3.2.1: parent-module "^1.0.0" resolve-from "^4.0.0" +import-fresh@^3.3.0: + version "3.3.1" + resolved "https://registry.yarnpkg.com/import-fresh/-/import-fresh-3.3.1.tgz#9cecb56503c0ada1f2741dbbd6546e4b13b57ccf" + integrity sha512-TR3KfrTZTYLPB6jUjfx6MF9WcWrHL9su5TObK4ZkYgBdWKPOFoSoQIdEuTuR82pmtxH2spWG9h6etwfr1pLBqQ== + dependencies: + parent-module "^1.0.0" + resolve-from "^4.0.0" + import-local@^3.0.2: version "3.2.0" resolved "https://registry.yarnpkg.com/import-local/-/import-local-3.2.0.tgz#c3d5c745798c02a6f8b897726aba5100186ee260" @@ -5424,7 +5730,7 @@ inflight@^1.0.4: once "^1.3.0" wrappy "1" -inherits@2, inherits@2.0.4, inherits@~2.0.3: +inherits@2, inherits@2.0.4, inherits@^2.0.3, inherits@^2.0.4, inherits@~2.0.3: version "2.0.4" resolved "https://registry.yarnpkg.com/inherits/-/inherits-2.0.4.tgz#0fa2c64f932917c3433a0ded55363aae37416b7c" integrity sha512-k/vGaX4/Yla3WzyMCvTQOXYeIHvqOKtnqBduzTHpzpQZzAskKMhZ2K+EnBiSM9zGSoIFeMpXKxa4dYeZIQqewQ== @@ -5590,6 +5896,11 @@ is-finalizationregistry@^1.1.0: dependencies: call-bound "^1.0.3" +is-fullwidth-code-point@^2.0.0: + version "2.0.0" + resolved "https://registry.yarnpkg.com/is-fullwidth-code-point/-/is-fullwidth-code-point-2.0.0.tgz#a3b30a5c4f199183167aaab93beefae3ddfb654f" + integrity sha512-VHskAKYM8RfSFXwee5t5cbN5PZeq1Wrh6qd5bkyiXIf6UQcN6w/A0eXM9r6t8d+GYOh+o6ZhiEnb88LN/Y8m2w== + is-fullwidth-code-point@^3.0.0: version "3.0.0" resolved "https://registry.yarnpkg.com/is-fullwidth-code-point/-/is-fullwidth-code-point-3.0.0.tgz#f116f8064fe90b3f7844a38997c0b75051269f1d" @@ -5617,6 +5928,11 @@ is-glob@^4.0.0, is-glob@^4.0.1, is-glob@^4.0.3: dependencies: is-extglob "^2.1.1" +is-interactive@^1.0.0: + version "1.0.0" + resolved "https://registry.yarnpkg.com/is-interactive/-/is-interactive-1.0.0.tgz#cea6e6ae5c870a7b0a0004070b7b587e0252912e" + integrity sha512-2HvIEKRoqS62guEC+qBjpvRubdX910WCMuJTZ+I9yvqKU2/12eSL549HMwtabb4oupdj2sMP50k+XJfB/8JE6w== + is-map@^2.0.3: version "2.0.3" resolved "https://registry.yarnpkg.com/is-map/-/is-map-2.0.3.tgz#ede96b7fe1e270b3c4465e3a465658764926d62e" @@ -5713,6 +6029,11 @@ is-typed-array@^1.1.13, is-typed-array@^1.1.14, is-typed-array@^1.1.15: dependencies: which-typed-array "^1.1.16" +is-unicode-supported@^0.1.0: + version "0.1.0" + resolved "https://registry.yarnpkg.com/is-unicode-supported/-/is-unicode-supported-0.1.0.tgz#3f26c76a809593b52bfa2ecb5710ed2779b522a7" + integrity sha512-knxG2q4UC3u8stRGyAVJCOdxFmv5DZiRcdlIaAQXAbSfJya+OhopNotLQrstBhququ4ZpuKbDc/8S6mgXgPFPw== + is-weakmap@^2.0.2: version "2.0.2" resolved "https://registry.yarnpkg.com/is-weakmap/-/is-weakmap-2.0.2.tgz#bf72615d649dfe5f699079c54b83e47d1ae19cfd" @@ -5733,6 +6054,11 @@ is-weakset@^2.0.3: call-bound "^1.0.3" get-intrinsic "^1.2.6" +is-wsl@^1.1.0: + version "1.1.0" + resolved "https://registry.yarnpkg.com/is-wsl/-/is-wsl-1.1.0.tgz#1f16e4aa22b04d1336b66188a66af3c600c3a66d" + integrity sha512-gfygJYZ2gLTDlmbWMI0CE2MwnFzSN/2SZfkMlItC4K/JBlsWVDB0bO6XhqcY13YXE7iMcAJnzTCJjPiTeJJ0Mw== + is-wsl@^2.1.1, is-wsl@^2.2.0: version "2.2.0" resolved "https://registry.yarnpkg.com/is-wsl/-/is-wsl-2.2.0.tgz#74a4c76e77ca9fd3f932f290c17ea326cd157271" @@ -6197,6 +6523,17 @@ jimp-compact@0.16.1: resolved "https://registry.yarnpkg.com/jimp-compact/-/jimp-compact-0.16.1.tgz#9582aea06548a2c1e04dd148d7c3ab92075aefa3" integrity sha512-dZ6Ra7u1G8c4Letq/B5EzAxj4tLFHL+cGtdpR+PVm4yzPDj+lCk+AbivWt1eOM+ikzkowtyV7qSqX6qr3t71Ww== +joi@^17.2.1: + version "17.13.3" + resolved "https://registry.yarnpkg.com/joi/-/joi-17.13.3.tgz#0f5cc1169c999b30d344366d384b12d92558bcec" + integrity sha512-otDA4ldcIx+ZXsKHWmp0YizCweVRZG96J10b0FevjfuncLO1oX59THoAmHkNubYJ+9gWsYsp5k8v4ib6oDv1fA== + dependencies: + "@hapi/hoek" "^9.3.0" + "@hapi/topo" "^5.1.0" + "@sideway/address" "^4.1.5" + "@sideway/formula" "^3.0.1" + "@sideway/pinpoint" "^2.0.0" + join-component@^1.1.0: version "1.1.0" resolved "https://registry.yarnpkg.com/join-component/-/join-component-1.1.0.tgz#b8417b750661a392bee2c2537c68b2a9d4977cd5" @@ -6510,6 +6847,23 @@ log-symbols@^2.2.0: dependencies: chalk "^2.0.1" +log-symbols@^4.1.0: + version "4.1.0" + resolved "https://registry.yarnpkg.com/log-symbols/-/log-symbols-4.1.0.tgz#3fbdbb95b4683ac9fc785111e792e558d4abd503" + integrity sha512-8XPvpAA8uyhfteu8pIvQxpJZ7SYYdpUivZpGy6sFsBuKRY/7rQGavedeB8aK+Zkyq6upMFVL/9AW6vOYzfRyLg== + dependencies: + chalk "^4.1.0" + is-unicode-supported "^0.1.0" + +logkitty@^0.7.1: + version "0.7.1" + resolved "https://registry.yarnpkg.com/logkitty/-/logkitty-0.7.1.tgz#8e8d62f4085a826e8d38987722570234e33c6aa7" + integrity sha512-/3ER20CTTbahrCrpYfPn7Xavv9diBROZpoXGVZDWMw4b/X4uuUwAC0ki85tgsdMRONURyIJbcOvS94QsUBYPbQ== + dependencies: + ansi-fragments "^0.2.1" + dayjs "^1.8.15" + yargs "^15.1.0" + loose-envify@^1.0.0, loose-envify@^1.1.0, loose-envify@^1.4.0: version "1.4.0" resolved "https://registry.yarnpkg.com/loose-envify/-/loose-envify-1.4.0.tgz#71ee51fa7be4caec1a63839f7e682d8132d30caf" @@ -7022,6 +7376,11 @@ mime@1.6.0: resolved "https://registry.yarnpkg.com/mime/-/mime-1.6.0.tgz#32cd9e5c64553bd58d19a568af452acff04981b1" integrity sha512-x0Vn8spI+wuJ1O6S7gnbaQg8Pxh4NNHb7KSINmEWKiPE4RKOplvijn+NkmYmmRgP68mc70j2EbeTFRsrswaQeg== +mime@^2.4.1: + version "2.6.0" + resolved "https://registry.yarnpkg.com/mime/-/mime-2.6.0.tgz#a2a682a95cd4d0cb1d6257e28f83da7e35800367" + integrity sha512-USPkMeET31rOMiarsBNIHZKLGgvKc/LrjofAnBlOttf5ajRvqiRA8QsenbcooctK6d6Ts6aqZXBA+XbkKthiQg== + mimic-fn@^1.0.0: version "1.2.0" resolved "https://registry.yarnpkg.com/mimic-fn/-/mimic-fn-1.2.0.tgz#820c86a39334640e99516928bd03fca88057d022" @@ -7190,6 +7549,11 @@ nice-try@^1.0.4: resolved "https://registry.yarnpkg.com/nice-try/-/nice-try-1.0.5.tgz#a3378a7696ce7d223e88fc9b764bd7ef1089e366" integrity sha512-1nh45deeb5olNY7eX82BkPO7SSxR5SSYJiPTrTdFUVYwAl8CKMA5N9PjTYkHiRjisVcxcQ1HXdLhx2qxxJzLNQ== +nocache@^3.0.1: + version "3.0.4" + resolved "https://registry.yarnpkg.com/nocache/-/nocache-3.0.4.tgz#5b37a56ec6e09fc7d401dceaed2eab40c8bfdf79" + integrity sha512-WDD0bdg9mbq6F4mRxEYcPWwfA1vxd0mrvKOyxI7Xj/atfRHVeutzuWByG//jfm4uPzp0y4Kj051EORCBSQMycw== + node-abort-controller@^3.1.1: version "3.1.1" resolved "https://registry.yarnpkg.com/node-abort-controller/-/node-abort-controller-3.1.1.tgz#a94377e964a9a37ac3976d848cb5c765833b8548" @@ -7229,6 +7593,11 @@ node-releases@^2.0.19: resolved "https://registry.yarnpkg.com/node-releases/-/node-releases-2.0.19.tgz#9e445a52950951ec4d177d843af370b411caf314" integrity sha512-xxOWJsBKtzAq7DY0J+DTzuz58K8e7sJbdgwkbMWQe8UYB6ekmsQ45q0M/tJDsGaZmbC+l7n57UV8Hl5tHxO9uw== +node-stream-zip@^1.9.1: + version "1.15.0" + resolved "https://registry.yarnpkg.com/node-stream-zip/-/node-stream-zip-1.15.0.tgz#158adb88ed8004c6c49a396b50a6a5de3bca33ea" + integrity sha512-LN4fydt9TqhZhThkZIVQnF9cwjU3qmUH9h78Mx/K7d3VvfRqqwthLwJEUOEL0QPZ0XQmNN7be5Ggit5+4dq3Bw== + normalize-path@^3.0.0: version "3.0.0" resolved "https://registry.yarnpkg.com/normalize-path/-/normalize-path-3.0.0.tgz#0dcd69ff23a1c9b11fd0978316644a0388216a65" @@ -7371,13 +7740,20 @@ onetime@^2.0.0: dependencies: mimic-fn "^1.0.0" -onetime@^5.1.2: +onetime@^5.1.0, onetime@^5.1.2: version "5.1.2" resolved "https://registry.yarnpkg.com/onetime/-/onetime-5.1.2.tgz#d0e96ebb56b07476df1dd9c4806e5237985ca45e" integrity sha512-kbpaSSGJTWdAY5KPVeMOKXSrPtr8C8C7wodJbcsd51jRnmD+GZu8Y0VoU6Dm5Z4vWr0Ig/1NKuWRKf7j5aaYSg== dependencies: mimic-fn "^2.1.0" +open@^6.2.0: + version "6.4.0" + resolved "https://registry.yarnpkg.com/open/-/open-6.4.0.tgz#5c13e96d0dc894686164f18965ecfe889ecfc8a9" + integrity sha512-IFenVPgF70fSm1keSd2iDBIDIBZkroLeuffXq+wKTzTJlBpesFWojV9lb8mzOfaAzM1sr7HQHuO0vtV0zYekGg== + dependencies: + is-wsl "^1.1.0" + open@^7.0.3, open@^7.4.2: version "7.4.2" resolved "https://registry.yarnpkg.com/open/-/open-7.4.2.tgz#b8147e26dcf3e426316c730089fd71edd29c2321" @@ -7419,6 +7795,21 @@ ora@^3.4.0: strip-ansi "^5.2.0" wcwidth "^1.0.1" +ora@^5.4.1: + version "5.4.1" + resolved "https://registry.yarnpkg.com/ora/-/ora-5.4.1.tgz#1b2678426af4ac4a509008e5e4ac9e9959db9e18" + integrity sha512-5b6Y85tPxZZ7QytO+BQzysW31HJku27cRIlkbAXaNx+BdcVi+LlRFmVXzeF6a7JCwJpyw5c4b+YSVImQIrBpuQ== + dependencies: + bl "^4.1.0" + chalk "^4.1.0" + cli-cursor "^3.1.0" + cli-spinners "^2.5.0" + is-interactive "^1.0.0" + is-unicode-supported "^0.1.0" + log-symbols "^4.1.0" + strip-ansi "^6.0.0" + wcwidth "^1.0.1" + os-tmpdir@~1.0.2: version "1.0.2" resolved "https://registry.yarnpkg.com/os-tmpdir/-/os-tmpdir-1.0.2.tgz#bbe67406c79aa85c5cfec766fe5734555dfa1274" @@ -7709,6 +8100,16 @@ pretty-bytes@^5.6.0: resolved "https://registry.yarnpkg.com/pretty-bytes/-/pretty-bytes-5.6.0.tgz#356256f643804773c82f64723fe78c92c62beaeb" integrity sha512-FFw039TmrBqFK8ma/7OL3sDz/VytdtJr044/QUJtH0wK9lb9jLq9tJyIxUwtQJHwar2BqtiA4iCWSwo9JLkzFg== +pretty-format@^26.6.2: + version "26.6.2" + resolved "https://registry.yarnpkg.com/pretty-format/-/pretty-format-26.6.2.tgz#e35c2705f14cb7fe2fe94fa078345b444120fc93" + integrity sha512-7AeGuCYNGmycyQbCqd/3PWH4eOoX/OiCa0uphp57NVTeAGdJGaAliecxwBDHYQCIvrW7aDBZCYeNTP/WX69mkg== + dependencies: + "@jest/types" "^26.6.2" + ansi-regex "^5.0.0" + ansi-styles "^4.0.0" + react-is "^17.0.1" + pretty-format@^29.0.0, pretty-format@^29.7.0: version "29.7.0" resolved "https://registry.yarnpkg.com/pretty-format/-/pretty-format-29.7.0.tgz#ca42c758310f365bfa71a0bda0a807160b776812" @@ -7747,7 +8148,7 @@ promise@^8.3.0: dependencies: asap "~2.0.6" -prompts@^2.0.1, prompts@^2.3.2: +prompts@^2.0.1, prompts@^2.3.2, prompts@^2.4.2: version "2.4.2" resolved "https://registry.yarnpkg.com/prompts/-/prompts-2.4.2.tgz#7b57e73b3a48029ad10ebd44f74b01722a4cb069" integrity sha512-NxNv/kLguCA7p3jE8oL2aEBsrJWgAakBpgmgK6lpPWV+WuOmY6r2/zbAVnP+T8bQlA0nzHXSJSJW0Hq7ylaD2Q== @@ -7855,6 +8256,11 @@ react-is@^16.13.0, react-is@^16.13.1, react-is@^16.7.0: resolved "https://registry.yarnpkg.com/react-is/-/react-is-16.13.1.tgz#789729a4dc36de2999dc156dd6c1d9c18cea56a4" integrity sha512-24e6ynE2H+OKt4kqsOvNd8kBpV65zoxbA4BVsEOB3ARVWQki/DHzaUoC5KuON/BiccDaCCTZBuOcfZs70kR8bQ== +react-is@^17.0.1: + version "17.0.2" + resolved "https://registry.yarnpkg.com/react-is/-/react-is-17.0.2.tgz#e691d4a8e9c789365655539ab372762b0efb54f0" + integrity sha512-w2GsyukL62IJnlaff/nRegPQR94C/XXamvMWmSHRJ4y7Ts/4ocGRmTHvOs8PSE6pB3dWOrD/nueuU5sduBsQ4w== + "react-native-gesture-handler@link:..": version "0.0.0" uid "" @@ -7985,6 +8391,15 @@ react@18.3.1: dependencies: loose-envify "^1.1.0" +readable-stream@^3.4.0: + version "3.6.2" + resolved "https://registry.yarnpkg.com/readable-stream/-/readable-stream-3.6.2.tgz#56a9b36ea965c00c5a93ef31eb111a0f11056967" + integrity sha512-9u/sniCrY3D5WdsERHzHE4G2YCXqoG5FTHUiCC4SIbr6XcLZBY05ya9EKjYek9O5xOAwjGq+1JdGBAS7Q9ScoA== + dependencies: + inherits "^2.0.3" + string_decoder "^1.1.1" + util-deprecate "^1.0.1" + readable-stream@~2.3.6: version "2.3.8" resolved "https://registry.yarnpkg.com/readable-stream/-/readable-stream-2.3.8.tgz#91125e8042bba1b9887f49345f6277027ce8be9b" @@ -8138,6 +8553,11 @@ require-from-string@^2.0.2: resolved "https://registry.yarnpkg.com/require-from-string/-/require-from-string-2.0.2.tgz#89a7fdd938261267318eafe14f9c32e598c36909" integrity sha512-Xf0nWe6RseziFMu+Ap9biiUbmplq6S9/p+7w7YXP/JBHhrUDDUhwa+vANyubuqfZWTveU//DYVGsDG7RKL/vEw== +require-main-filename@^2.0.0: + version "2.0.0" + resolved "https://registry.yarnpkg.com/require-main-filename/-/require-main-filename-2.0.0.tgz#d0b329ecc7cc0f61649f62215be69af54aa8989b" + integrity sha512-NKN5kMDylKuldxYLSUfrbo5Tuzh4hd+2E8NPPX02mZtn1VuREQToYe/ZdlJy+J3uCpfaiGF05e7B8W0iXbQHmg== + requireg@^0.2.2: version "0.2.2" resolved "https://registry.yarnpkg.com/requireg/-/requireg-0.2.2.tgz#437e77a5316a54c9bcdbbf5d1f755fe093089830" @@ -8226,6 +8646,14 @@ restore-cursor@^2.0.0: onetime "^2.0.0" signal-exit "^3.0.2" +restore-cursor@^3.1.0: + version "3.1.0" + resolved "https://registry.yarnpkg.com/restore-cursor/-/restore-cursor-3.1.0.tgz#39f67c54b3a7a58cea5236d95cf0034239631f7e" + integrity sha512-l+sSefzHpj5qimhFSE5a8nufZYAM3sBSVMAPtYkmC+4EH2anSGaEMXSD0izRQbu9nfyQ9y5JrVmp7E8oZrUjvA== + dependencies: + onetime "^5.1.0" + signal-exit "^3.0.2" + reusify@^1.0.4: version "1.0.4" resolved "https://registry.yarnpkg.com/reusify/-/reusify-1.0.4.tgz#90da382b1e126efc02146e90845a88db12925d76" @@ -8270,7 +8698,7 @@ safe-array-concat@^1.1.3: has-symbols "^1.1.0" isarray "^2.0.5" -safe-buffer@5.2.1: +safe-buffer@5.2.1, safe-buffer@~5.2.0: version "5.2.1" resolved "https://registry.yarnpkg.com/safe-buffer/-/safe-buffer-5.2.1.tgz#1eaf9fa9bdb1fdd4ec75f58f9cdb4e6b7827eec6" integrity sha512-rp3So07KcdmmKbGvgaNxQSJr7bGVSVk5S9Eq1F+ppbRo70+YeaDxkw5Dd8NPN+GD6bjnYm2VuPuCXmpuYvmCXQ== @@ -8339,6 +8767,11 @@ semver@^7.1.3, semver@^7.2.1, semver@^7.3.5, semver@^7.3.7, semver@^7.5.3: resolved "https://registry.yarnpkg.com/semver/-/semver-7.6.3.tgz#980f7b5550bc175fb4dc09403085627f9eb33143" integrity sha512-oVekP1cKtI+CTDvHWYFUcMtsK/00wmAEfyqKfNdARm8u1wNVhSgaX7A8d4UuIlUI5e84iEwOhs7ZPYRmzU9U6A== +semver@^7.5.2: + version "7.7.0" + resolved "https://registry.yarnpkg.com/semver/-/semver-7.7.0.tgz#9c6fe61d0c6f9fa9e26575162ee5a9180361b09c" + integrity sha512-DrfFnPzblFmNrIZzg5RzHegbiRWg7KMR7btwi2yjHwx06zsUbO5g613sVwEV7FTwmzJu+Io0lJe2GJ3LxqpvBQ== + semver@^7.5.4, semver@^7.6.0: version "7.6.2" resolved "https://registry.yarnpkg.com/semver/-/semver-7.6.2.tgz#1e3b34759f896e8f14d6134732ce798aeb0c6e13" @@ -8397,6 +8830,11 @@ serve-static@^1.13.1: parseurl "~1.3.3" send "0.19.0" +set-blocking@^2.0.0: + version "2.0.0" + resolved "https://registry.yarnpkg.com/set-blocking/-/set-blocking-2.0.0.tgz#045f9782d011ae9a6803ddd382b24392b3d890f7" + integrity sha512-KiKBS8AnWGEyLzofFfmvKwpdPzqiy16LvQfK3yv/fVH7Bj13/wl3JSR1J+rfgRE9q7xUJK4qvgS8raSOeLUehw== + set-function-length@^1.2.2: version "1.2.2" resolved "https://registry.yarnpkg.com/set-function-length/-/set-function-length-1.2.2.tgz#aac72314198eaed975cf77b2c3b6b880695e5449" @@ -8474,6 +8912,11 @@ shell-quote@^1.6.1: resolved "https://registry.yarnpkg.com/shell-quote/-/shell-quote-1.8.1.tgz#6dbf4db75515ad5bac63b4f1894c3a154c766680" integrity sha512-6j1W9l1iAs/4xYBI1SYOVZyFcCis9b4KCLQ8fgAGG07QvzaRLVVRQvAy85yNmmZSjYjg4MWh4gNvlPujU/5LpA== +shell-quote@^1.7.3: + version "1.8.2" + resolved "https://registry.yarnpkg.com/shell-quote/-/shell-quote-1.8.2.tgz#d2d83e057959d53ec261311e9e9b8f51dcb2934a" + integrity sha512-AzqKpGKjrj7EM6rKVQEPpB288oCfnrEIuyoT9cyF4nmGa7V8Zk6f7RRqYisX8X9m+Q7bd632aZW4ky7EhbQztA== + side-channel-list@^1.0.0: version "1.0.0" resolved "https://registry.yarnpkg.com/side-channel-list/-/side-channel-list-1.0.0.tgz#10cb5984263115d3b7a0e336591e290a830af8ad" @@ -8555,6 +8998,15 @@ slash@^3.0.0: resolved "https://registry.yarnpkg.com/slash/-/slash-3.0.0.tgz#6539be870c165adbd5240220dbe361f1bc4d4634" integrity sha512-g9Q1haeby36OSStwb4ntCGGGaKsaVSjQ68fBxoQcutl5fS1vuY18H3wSt3jFyFtrkx+Kz0V1G85A4MyAdDMi2Q== +slice-ansi@^2.0.0: + version "2.1.0" + resolved "https://registry.yarnpkg.com/slice-ansi/-/slice-ansi-2.1.0.tgz#cacd7693461a637a5788d92a7dd4fba068e81636" + integrity sha512-Qu+VC3EwYLldKa1fCxuuvULvSJOKEgk9pi8dZeCVK7TqBfUNTH4sFkk4joj8afVSfAYgJoSOetjx9QWOJ5mYoQ== + dependencies: + ansi-styles "^3.2.0" + astral-regex "^1.0.0" + is-fullwidth-code-point "^2.0.0" + slice-ansi@^4.0.0: version "4.0.0" resolved "https://registry.yarnpkg.com/slice-ansi/-/slice-ansi-4.0.0.tgz#500e8dd0fd55b05815086255b3195adf2a45fe6b" @@ -8762,6 +9214,13 @@ 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.yarnpkg.com/string_decoder/-/string_decoder-1.3.0.tgz#42f114594a46cf1a8e30b0a84f56c78c3edac21e" + 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.yarnpkg.com/string_decoder/-/string_decoder-1.1.1.tgz#9cf1611ba62685d7030ae9e4ba34149c3af03fc8" @@ -8776,7 +9235,7 @@ string_decoder@~1.1.1: dependencies: ansi-regex "^5.0.1" -strip-ansi@^5.2.0: +strip-ansi@^5.0.0, strip-ansi@^5.2.0: version "5.2.0" resolved "https://registry.yarnpkg.com/strip-ansi/-/strip-ansi-5.2.0.tgz#8c9a536feb6afc962bdfa5b104a5091c1ad9c0ae" integrity sha512-DuRs1gKbBqsMKIZlrffwlug8MHkcnpjs5VPmL1PAh+mA30U0DTotfDZ0d2UUsXpPmPmMMJ6W773MaA3J+lbiWA== @@ -8822,6 +9281,11 @@ strip-json-comments@~2.0.1: resolved "https://registry.yarnpkg.com/strip-json-comments/-/strip-json-comments-2.0.1.tgz#3c531942e908c2697c0ec344858c286c7ca0a60a" integrity sha512-4gB8na07fecVVkOI6Rs4e7T6NOTki5EmL7TUduTs6bu3EdnSycntVJ4re8kgZA+wx9IueI2Y11bfbgwtzuE0KQ== +strnum@^1.0.5: + version "1.0.5" + resolved "https://registry.yarnpkg.com/strnum/-/strnum-1.0.5.tgz#5c4e829fe15ad4ff0d20c3db5ac97b73c9b072db" + integrity sha512-J8bbNyKKXl5qYcR36TIO8W3mVGVHrmmxsd5PAItGkmyzwJvybiw2IVq5nqd0i4LSNSkB/sx9VHllbfFdr9k1JA== + structured-headers@^0.4.1: version "0.4.1" resolved "https://registry.yarnpkg.com/structured-headers/-/structured-headers-0.4.1.tgz#77abd9410622c6926261c09b9d16cf10592694d1" @@ -8855,6 +9319,11 @@ sudo-prompt@^8.2.0: resolved "https://registry.yarnpkg.com/sudo-prompt/-/sudo-prompt-8.2.5.tgz#cc5ef3769a134bb94b24a631cc09628d4d53603e" integrity sha512-rlBo3HU/1zAJUrkY6jNxDOC9eVYliG6nS4JA8u8KAshITd07tafMc/Br7xQwCSseXwJ2iCcHCE8SNWX3q8Z+kw== +sudo-prompt@^9.0.0: + version "9.2.1" + resolved "https://registry.yarnpkg.com/sudo-prompt/-/sudo-prompt-9.2.1.tgz#77efb84309c9ca489527a4e749f287e6bdd52afd" + integrity sha512-Mu7R0g4ig9TUuGSxJavny5Rv0egCEtpZRNMrZaYS1vxkiIxGiGUwoezU3LazIQ+KE04hTrTfNPgxU5gzi7F5Pw== + supports-color@^5.3.0: version "5.5.0" resolved "https://registry.yarnpkg.com/supports-color/-/supports-color-5.5.0.tgz#e2e69a44ac8772f78a1ec0b35b689df6530efc8f" @@ -9272,7 +9741,7 @@ use-latest-callback@^0.2.1: resolved "https://registry.yarnpkg.com/use-latest-callback/-/use-latest-callback-0.2.3.tgz#2d644d3063040b9bc2d4c55bb525a13ae3de9e16" integrity sha512-7vI3fBuyRcP91pazVboc4qu+6ZqM8izPWX9k7cRnT8hbD5svslcknsh3S9BUhaK11OmgTV4oWZZVSeQAiV53SQ== -util-deprecate@~1.0.1: +util-deprecate@^1.0.1, util-deprecate@~1.0.1: version "1.0.2" resolved "https://registry.yarnpkg.com/util-deprecate/-/util-deprecate-1.0.2.tgz#450d4dc9fa70de732762fbd2d4a28981419a0ccf" integrity sha512-EPD5q1uXyFxJpCrLnCc1nHnq3gOa6DZBocAIiI2TaSCA7VCJ1UJDMagCzIkXNsUYfD1daK//LTEQ8xiIbrHtcw== @@ -9417,6 +9886,11 @@ which-collection@^1.0.2: is-weakmap "^2.0.2" is-weakset "^2.0.3" +which-module@^2.0.0: + version "2.0.1" + resolved "https://registry.yarnpkg.com/which-module/-/which-module-2.0.1.tgz#776b1fe35d90aebe99e8ac15eb24093389a4a409" + integrity sha512-iBdZ57RDvnOR9AGBhML2vFZf7h8vmBjhoaZqODJBFWHVtKkDmKuHai3cx5PgVMrX5YDNp27AofYbAwctSS+vhQ== + which-typed-array@^1.1.16, which-typed-array@^1.1.18: version "1.1.18" resolved "https://registry.yarnpkg.com/which-typed-array/-/which-typed-array-1.1.18.tgz#df2389ebf3fbb246a71390e90730a9edb6ce17ad" @@ -9462,6 +9936,15 @@ word-wrap@^1.2.5: string-width "^4.1.0" strip-ansi "^6.0.0" +wrap-ansi@^6.2.0: + version "6.2.0" + resolved "https://registry.yarnpkg.com/wrap-ansi/-/wrap-ansi-6.2.0.tgz#e9393ba07102e6c91a3b221478f0257cd2856e53" + integrity sha512-r6lPcBGxZXlIcymEu7InxDMhdW0KDxpLgoFLcguasxCaJ/SOIZwINatK9KY/tf+ZrlywOKU0UDj3ATXUBfxJXA== + dependencies: + ansi-styles "^4.0.0" + string-width "^4.1.0" + strip-ansi "^6.0.0" + wrap-ansi@^7.0.0: version "7.0.0" resolved "https://registry.yarnpkg.com/wrap-ansi/-/wrap-ansi-7.0.0.tgz#67e145cff510a6a6984bdf1152911d69d2eb9e43" @@ -9555,6 +10038,11 @@ xtend@~4.0.1: resolved "https://registry.yarnpkg.com/xtend/-/xtend-4.0.2.tgz#bb72779f5fa465186b1f438f674fa347fdb5db54" integrity sha512-LKYU1iAXJXUgAXn9URjiu+MWhyUXHsvfp7mcuYm9dSUKK0/CjtrUwFAxD82/mCWbtLsGjFIad0wIsod4zrTAEQ== +y18n@^4.0.0: + version "4.0.3" + resolved "https://registry.yarnpkg.com/y18n/-/y18n-4.0.3.tgz#b5f259c82cd6e336921efd7bfd8bf560de9eeedf" + integrity sha512-JKhqTOwSrqNA1NY5lSztJ1GrBiUodLMmIZuLiDaMRJ+itFd+ABVE8XBjOvIWL+rSqNDC74LCSFmlb/U4UZ4hJQ== + y18n@^5.0.5: version "5.0.8" resolved "https://registry.yarnpkg.com/y18n/-/y18n-5.0.8.tgz#7f4934d0f7ca8c56f95314939ddcd2dd91ce1d55" @@ -9575,11 +10063,41 @@ yaml@^1.10.2: resolved "https://registry.yarnpkg.com/yaml/-/yaml-1.10.2.tgz#2301c5ffbf12b467de8da2333a459e29e7920e4b" integrity sha512-r3vXyErRCYJ7wg28yvBY5VSoAF8ZvlcW9/BwUzEtUsjvX/DKs24dIkuwjtuprwJJHsbyUbLApepYTR1BN4uHrg== +yaml@^2.2.1: + version "2.7.0" + resolved "https://registry.yarnpkg.com/yaml/-/yaml-2.7.0.tgz#aef9bb617a64c937a9a748803786ad8d3ffe1e98" + integrity sha512-+hSoy/QHluxmC9kCIJyL/uyFmLmc+e5CFR5Wa+bpIhIj85LVb9ZH2nVnqrHoSvKogwODv0ClqZkmiSSaIH5LTA== + +yargs-parser@^18.1.2: + version "18.1.3" + resolved "https://registry.yarnpkg.com/yargs-parser/-/yargs-parser-18.1.3.tgz#be68c4975c6b2abf469236b0c870362fab09a7b0" + integrity sha512-o50j0JeToy/4K6OZcaQmW6lyXXKhq7csREXcDwk2omFPJEwUNOVtJKvmDr9EI1fAJZUyZcRF7kxGBWmRXudrCQ== + dependencies: + camelcase "^5.0.0" + decamelize "^1.2.0" + yargs-parser@^21.1.1: version "21.1.1" resolved "https://registry.yarnpkg.com/yargs-parser/-/yargs-parser-21.1.1.tgz#9096bceebf990d21bb31fa9516e0ede294a77d35" integrity sha512-tVpsJW7DdjecAiFpbIB1e3qxIQsE6NoPc5/eTdrbbIC4h0LVsWhnoa3g+m2HclBIujHzsxZ4VJVA+GUuc2/LBw== +yargs@^15.1.0: + version "15.4.1" + resolved "https://registry.yarnpkg.com/yargs/-/yargs-15.4.1.tgz#0d87a16de01aee9d8bec2bfbf74f67851730f4f8" + integrity sha512-aePbxDmcYW++PaqBsJ+HYUFwCdv4LVvdnhBy78E57PIor8/OVvhMrADFFEDh8DHDFRv/O9i3lPhsENjO7QX0+A== + dependencies: + cliui "^6.0.0" + decamelize "^1.2.0" + find-up "^4.1.0" + get-caller-file "^2.0.1" + require-directory "^2.1.1" + require-main-filename "^2.0.0" + set-blocking "^2.0.0" + string-width "^4.2.0" + which-module "^2.0.0" + y18n "^4.0.0" + yargs-parser "^18.1.2" + yargs@^17.3.1, yargs@^17.6.2: version "17.7.2" resolved "https://registry.yarnpkg.com/yargs/-/yargs-17.7.2.tgz#991df39aca675a192b816e1e0363f9d75d2aa269" diff --git a/package.json b/package.json index bd028f4fa9..64e34dae62 100644 --- a/package.json +++ b/package.json @@ -1,6 +1,6 @@ { "name": "react-native-gesture-handler", - "version": "2.22.1", + "version": "2.23.0", "description": "Declarative API exposing native platform touch and gesture system to React Native", "scripts": { "prepare": "bob build && husky install", From 07af72a8786d514040e18fff8fa3ff154193d6eb Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Ignacy=20=C5=81=C4=85tka?= Date: Wed, 5 Feb 2025 15:56:11 +0100 Subject: [PATCH 07/11] Fix android new arch crash on RN 0.75 (#3381) ## Description Fixes build failure on android when using new architecture and RN 0.75. Issue introduced here: https://github.com/software-mansion/react-native-gesture-handler/pull/3338 ## Test plan Build example app for android, with new arch and RN 0.75 --- android/src/main/jni/cpp-adapter.cpp | 2 -- 1 file changed, 2 deletions(-) diff --git a/android/src/main/jni/cpp-adapter.cpp b/android/src/main/jni/cpp-adapter.cpp index e4bc281179..cd2dfa72ff 100644 --- a/android/src/main/jni/cpp-adapter.cpp +++ b/android/src/main/jni/cpp-adapter.cpp @@ -1,8 +1,6 @@ #include #include -#include -#include #include using namespace facebook; From 1f9f20bcb1725396160a28ad5e2d1f7485b9babb Mon Sep 17 00:00:00 2001 From: Dominique Rau Date: Thu, 6 Feb 2025 12:03:44 +0100 Subject: [PATCH 08/11] chore(docs): add actionable advice to deprecation warnings (#3387) ## Description Add actionable advice to deprecation warnings. See: https://github.com/software-mansion/react-native-gesture-handler/pull/3260 ## Test plan - None needed --- docs/docs/components/touchables.md | 2 +- src/components/touchables/TouchableHighlight.tsx | 4 ++-- src/components/touchables/TouchableNativeFeedback.android.tsx | 2 +- src/components/touchables/TouchableNativeFeedback.tsx | 2 +- src/components/touchables/TouchableNativeFeedbackProps.tsx | 2 +- src/components/touchables/TouchableOpacity.tsx | 4 ++-- src/components/touchables/TouchableWithoutFeedback.tsx | 4 ++-- 7 files changed, 10 insertions(+), 10 deletions(-) diff --git a/docs/docs/components/touchables.md b/docs/docs/components/touchables.md index 3b1903be03..0e156db577 100644 --- a/docs/docs/components/touchables.md +++ b/docs/docs/components/touchables.md @@ -5,7 +5,7 @@ sidebar_label: Touchables --- :::warning -Touchables will be removed in the future version of Gesture Handler. +Touchables will be removed in the future version of Gesture Handler. Use Pressable instead. ::: Gesture Handler library provides an implementation of RN's touchable components that are based on [native buttons](buttons.mdx) and does not rely on JS responder system utilized by RN. Our touchable implementation follows the same API and aims to be a drop-in replacement for touchables available in React Native. diff --git a/src/components/touchables/TouchableHighlight.tsx b/src/components/touchables/TouchableHighlight.tsx index 0d484c72cb..384bcc6847 100644 --- a/src/components/touchables/TouchableHighlight.tsx +++ b/src/components/touchables/TouchableHighlight.tsx @@ -20,13 +20,13 @@ interface State { } /** - * @deprecated TouchableHighlight will be removed in the future version of Gesture Handler. + * @deprecated TouchableHighlight will be removed in the future version of Gesture Handler. Use Pressable instead. */ export type TouchableHighlightProps = RNTouchableHighlightProps & GenericTouchableProps; /** - * @deprecated TouchableHighlight will be removed in the future version of Gesture Handler. + * @deprecated TouchableHighlight will be removed in the future version of Gesture Handler. Use Pressable instead. * * TouchableHighlight follows RN's implementation */ diff --git a/src/components/touchables/TouchableNativeFeedback.android.tsx b/src/components/touchables/TouchableNativeFeedback.android.tsx index 708481d30c..e5f89ba48d 100644 --- a/src/components/touchables/TouchableNativeFeedback.android.tsx +++ b/src/components/touchables/TouchableNativeFeedback.android.tsx @@ -8,7 +8,7 @@ import { } from './TouchableNativeFeedbackProps'; /** - * @deprecated TouchableNativeFeedback will be removed in the future version of Gesture Handler. + * @deprecated TouchableNativeFeedback will be removed in the future version of Gesture Handler. Use Pressable instead. * * TouchableNativeFeedback behaves slightly different than RN's TouchableNativeFeedback. * There's small difference with handling long press ripple since RN's implementation calls diff --git a/src/components/touchables/TouchableNativeFeedback.tsx b/src/components/touchables/TouchableNativeFeedback.tsx index aaa70b9f44..d2f1e4285d 100644 --- a/src/components/touchables/TouchableNativeFeedback.tsx +++ b/src/components/touchables/TouchableNativeFeedback.tsx @@ -1,7 +1,7 @@ import { TouchableNativeFeedback as RNTouchableNativeFeedback } from 'react-native'; /** - * @deprecated TouchableNativeFeedback will be removed in the future version of Gesture Handler. + * @deprecated TouchableNativeFeedback will be removed in the future version of Gesture Handler. Use Pressable instead. */ const TouchableNativeFeedback = RNTouchableNativeFeedback; diff --git a/src/components/touchables/TouchableNativeFeedbackProps.tsx b/src/components/touchables/TouchableNativeFeedbackProps.tsx index 010756c82a..1440618058 100644 --- a/src/components/touchables/TouchableNativeFeedbackProps.tsx +++ b/src/components/touchables/TouchableNativeFeedbackProps.tsx @@ -9,7 +9,7 @@ export type TouchableNativeFeedbackExtraProps = { }; /** - * @deprecated TouchableNativeFeedback will be removed in the future version of Gesture Handler. + * @deprecated TouchableNativeFeedback will be removed in the future version of Gesture Handler. Use Pressable instead. */ export type TouchableNativeFeedbackProps = RNTouchableNativeFeedbackProps & GenericTouchableProps; diff --git a/src/components/touchables/TouchableOpacity.tsx b/src/components/touchables/TouchableOpacity.tsx index 1a9beb3ff1..53b274dbf5 100644 --- a/src/components/touchables/TouchableOpacity.tsx +++ b/src/components/touchables/TouchableOpacity.tsx @@ -11,7 +11,7 @@ import * as React from 'react'; import { Component } from 'react'; /** - * @deprecated TouchableOpacity will be removed in the future version of Gesture Handler. + * @deprecated TouchableOpacity will be removed in the future version of Gesture Handler. Use Pressable instead. */ export type TouchableOpacityProps = RNTouchableOpacityProps & GenericTouchableProps & { @@ -19,7 +19,7 @@ export type TouchableOpacityProps = RNTouchableOpacityProps & }; /** - * @deprecated TouchableOpacity will be removed in the future version of Gesture Handler. + * @deprecated TouchableOpacity will be removed in the future version of Gesture Handler. Use Pressable instead. * * TouchableOpacity bases on timing animation which has been used in RN's core */ diff --git a/src/components/touchables/TouchableWithoutFeedback.tsx b/src/components/touchables/TouchableWithoutFeedback.tsx index ffa17881b9..f24919c3f3 100644 --- a/src/components/touchables/TouchableWithoutFeedback.tsx +++ b/src/components/touchables/TouchableWithoutFeedback.tsx @@ -4,12 +4,12 @@ import GenericTouchable from './GenericTouchable'; import type { GenericTouchableProps } from './GenericTouchableProps'; /** - * @deprecated TouchableWithoutFeedback will be removed in the future version of Gesture Handler. + * @deprecated TouchableWithoutFeedback will be removed in the future version of Gesture Handler. Use Pressable instead. */ export type TouchableWithoutFeedbackProps = GenericTouchableProps; /** - * @deprecated TouchableWithoutFeedback will be removed in the future version of Gesture Handler. + * @deprecated TouchableWithoutFeedback will be removed in the future version of Gesture Handler. Use Pressable instead. */ const TouchableWithoutFeedback = React.forwardRef< GenericTouchable, From 7c3e0021f25949c0060b2353aa14d251dc34d548 Mon Sep 17 00:00:00 2001 From: Joseph Colicchio Date: Mon, 10 Feb 2025 00:12:55 -1000 Subject: [PATCH 09/11] Return false if gesture recognizers are present but all disabled (#3377) MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit ## Description This PR adjusts `shouldHandleTouch` to check for enabled gesture recognizers instead of returning true if the count of gesture recognizers is greater than zero. The motivation behind this PR is to address a bug where buttons become unresponsive if, I guess, iOS is inserting disabled accessibility gesture recognizers into the child views?? Fixes #3376 ## Test plan I was able to reproduce this reliably on a private repo, and used the debugger to observe `shouldHandleTouch` returning too early from a descendant of the button meant to be tapped. With this fix, I confirmed that the correct button returns to handle to touch event and the buttons all behave as expected I also was able to reproduce the issue with this sample code: 1. Tap `Courses` 2. Tap `Hello World 1` 3. Tap `All Courses` The `All Courses` button has an `onPress` which `alert`s, and in this snippet, I observed no alert occurring
Click to expand ``` import { StyleSheet, View, Text } from 'react-native'; import { BorderlessButton, FlatList } from 'react-native-gesture-handler'; import Animated from 'react-native-reanimated'; import { useNavigation } from 'expo-router'; import { useState } from 'react'; import { useSafeAreaInsets } from 'react-native-safe-area-context'; import {useEffect} from 'react'; import { FadeInLeft, FadeInUp, FadeOutLeft, FadeOutUp, } from 'react-native-reanimated'; const AnimatedBorderlessButton = Animated.createAnimatedComponent(BorderlessButton); const OptionsScreen = ({ options, onSelect }: { options: string[]; onSelect: (option?: string) => void; }) => { const insets = useSafeAreaInsets(); const navigation = useNavigation(); const styles = StyleSheet.create({ container: { paddingTop: insets.top, backgroundColor: 'rgba(0,0,0,0.7)', flex: 1, paddingHorizontal: 24, position: 'absolute', top: 0, left: 0, right: 0, bottom: 0, }, text: { paddingTop: 16, color: 'white', }, }); useEffect(() => { navigation.setOptions({ tabBarStyle: { display: 'none' }, }); return () => { navigation.setOptions({ tabBarStyle: { display: 'flex' }, }); }; }, [navigation]); return ( ( onSelect(item)}> {item} )} /> ); }; function HomeScreen() { const insets = useSafeAreaInsets(); const [selectedCategory, setSelectedCategory] = useState(''); const [options, setOptions] = useState([]); const styles = StyleSheet.create({ container: { flex: 1, paddingTop: insets.top, backgroundColor: 'white', }, categoryContainer: { gap: 16, paddingHorizontal: 24, }, }); const dummyData = { categoryOptions: (Array.from({length: 14}, (_, i) => `Hello World ${i + 1}`)), }; return ( setOptions(dummyData.categoryOptions)} entering={FadeInLeft} exiting={FadeOutLeft} > {selectedCategory.length > 0 ? selectedCategory : 'Courses'} {selectedCategory.length > 0 && ( alert('It Worked')} entering={FadeInLeft} exiting={FadeOutLeft} > All Courses )} {options.length > 0 && ( { setSelectedCategory(selectedOption ?? ''); setOptions([]); }} /> )} ); } export default function TabTwoScreen() { return ( ); } ```
--------- Co-authored-by: Michał Bert <63123542+m-bert@users.noreply.github.com> --- apple/RNGestureHandlerButton.mm | 14 ++++++++++++-- 1 file changed, 12 insertions(+), 2 deletions(-) diff --git a/apple/RNGestureHandlerButton.mm b/apple/RNGestureHandlerButton.mm index 97cdc7556e..2296c399aa 100644 --- a/apple/RNGestureHandlerButton.mm +++ b/apple/RNGestureHandlerButton.mm @@ -64,10 +64,20 @@ - (BOOL)shouldHandleTouch:(RNGHUIView *)view return button.userEnabled; } + // Certain subviews such as RCTViewComponentView have been observed to have disabled + // accessibility gesture recognizers such as _UIAccessibilityHUDGateGestureRecognizer, + // ostensibly set by iOS. Such gesture recognizers cause this function to return YES + // even when the passed view is static text and does not respond to touches. This in + // turn prevents the button from receiving touches, breaking functionality. To handle + // such case, we can count only the enabled gesture recognizers when determining + // whether a view should receive touches. + NSPredicate *isEnabledPredicate = [NSPredicate predicateWithFormat:@"isEnabled == YES"]; + NSArray *enabledGestureRecognizers = [view.gestureRecognizers filteredArrayUsingPredicate:isEnabledPredicate]; + #if !TARGET_OS_OSX - return [view isKindOfClass:[UIControl class]] || [view.gestureRecognizers count] > 0; + return [view isKindOfClass:[UIControl class]] || [enabledGestureRecognizers count] > 0; #else - return [view isKindOfClass:[NSControl class]] || [view.gestureRecognizers count] > 0; + return [view isKindOfClass:[NSControl class]] || [enabledGestureRecognizers count] > 0; #endif } From 32db4449a5bcf271e2700d77e1ab4e9248e60d1c Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Micha=C5=82=20Bert?= <63123542+m-bert@users.noreply.github.com> Date: Mon, 10 Feb 2025 12:01:34 +0100 Subject: [PATCH 10/11] [iOS] Add FabricComponents to Podfile (#3388) ## Description This PR updates `RNGestureHandler.podspec` to fix builds on iOS, which broke after #3338. Fixes #3385 ## Test plan Verified by users (see [issue](https://github.com/software-mansion/react-native-gesture-handler/issues/3385)) Tested on fresh React Native 0.77 app with the following line in `Podfile`: ```rb use_frameworks! :linkage => :static ``` --- RNGestureHandler.podspec | 8 ++++++++ 1 file changed, 8 insertions(+) diff --git a/RNGestureHandler.podspec b/RNGestureHandler.podspec index 1ae15b20db..f532cfad14 100644 --- a/RNGestureHandler.podspec +++ b/RNGestureHandler.podspec @@ -29,4 +29,12 @@ Pod::Spec.new do |s| else s.dependency "React-Core" end + + if ENV['USE_FRAMEWORKS'] != nil && ENV['RCT_NEW_ARCH_ENABLED'] == '1' + add_dependency(s, "React-FabricComponents", :additional_framework_paths => [ + "react/renderer/textlayoutmanager/platform/ios", + "react/renderer/components/textinput/platform/ios", + ]) + end + end From 03be0398cb88cbf690b2a6cf5ac8828b2f47359c Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Micha=C5=82=20Bert?= <63123542+m-bert@users.noreply.github.com> Date: Mon, 10 Feb 2025 13:52:34 +0100 Subject: [PATCH 11/11] Release 2.23.1 (#3396) MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit ## Description Release 2.23.1 ## Test plan 🚀 --- FabricExample/ios/Podfile.lock | 4 ++-- MacOSExample/macos/Podfile.lock | 8 ++++---- package.json | 2 +- 3 files changed, 7 insertions(+), 7 deletions(-) diff --git a/FabricExample/ios/Podfile.lock b/FabricExample/ios/Podfile.lock index 7ad6111aab..2d0602f248 100644 --- a/FabricExample/ios/Podfile.lock +++ b/FabricExample/ios/Podfile.lock @@ -1499,7 +1499,7 @@ PODS: - React-logger (= 0.77.0) - React-perflogger (= 0.77.0) - React-utils (= 0.77.0) - - RNGestureHandler (2.23.0): + - RNGestureHandler (2.23.1): - DoubleConversion - glog - hermes-engine @@ -1801,7 +1801,7 @@ SPEC CHECKSUMS: ReactAppDependencyProvider: 6e8d68583f39dc31ee65235110287277eb8556ef ReactCodegen: c08a5113d9c9c895fe10f3c296f74c6b705a60a9 ReactCommon: 1bd2dc684d7992acbf0dfee887b89a57a1ead86d - RNGestureHandler: b57c633defe01be73dfed9d645158fb21d6039d4 + RNGestureHandler: 93014de1ee4e1d539a74c6ce7aea72edd1fff6e0 SocketRocket: d4aabe649be1e368d1318fdf28a022d714d65748 Yoga: 78d74e245ed67bb94275a1316cdc170b9b7fe884 diff --git a/MacOSExample/macos/Podfile.lock b/MacOSExample/macos/Podfile.lock index 6682cccb3d..74dcd79006 100644 --- a/MacOSExample/macos/Podfile.lock +++ b/MacOSExample/macos/Podfile.lock @@ -1166,7 +1166,7 @@ PODS: - React-utils (= 0.74.6) - RNCAsyncStorage (1.24.0): - React-Core - - RNGestureHandler (2.23.0): + - RNGestureHandler (2.23.1): - DoubleConversion - glog - hermes-engine @@ -1443,10 +1443,10 @@ EXTERNAL SOURCES: SPEC CHECKSUMS: boost: 0686b6af8cbd638c784fea5afb789be66699823c - DoubleConversion: 5b92c4507c560bb62e7aa1acdf2785ea3ff08b3b + DoubleConversion: acaf5db79676d2e9119015819153f0f99191de12 FBLazyVector: 8f41053475f558b29633b434bd62929813a38560 fmt: 03574da4b7ba40de39da59677ca66610ce8c4a02 - glog: ba31c1afa7dcf1915a109861bccdb4421be6175b + glog: 6df0a3d6e2750a50609471fd1a01fd2948d405b5 hermes-engine: 21ea4e6a0b64854652c8c20cb815efdbb3131fdd RCT-Folly: 2edbb9597acadc2312235c7ad6243d49852047a3 RCTDeprecation: 5f1d7e1f8ef6c53f0207e3ac0d0ca23575e8a6ab @@ -1496,7 +1496,7 @@ SPEC CHECKSUMS: React-utils: d1f30e28b14bea6aa6b009be03ab502bbf2cf5c6 ReactCommon: 68cae4af53cf2d34e6a26c0099f434f170495dd1 RNCAsyncStorage: ec53e44dc3e75b44aa2a9f37618a49c3bc080a7a - RNGestureHandler: 2e6a9c6361b44a11795d51353445d65ba558cb1d + RNGestureHandler: 006e7ebf1a3d37843d951031389fb12712c7dd8e RNReanimated: 45553a3ae29a75a76269595f8554d07d4090e392 RNSVG: 4590aa95758149fa27c5c83e54a6a466349a1688 SocketRocket: f6c6249082c011e6de2de60ed641ef8bbe0cfac9 diff --git a/package.json b/package.json index 64e34dae62..aeadfc2dbe 100644 --- a/package.json +++ b/package.json @@ -1,6 +1,6 @@ { "name": "react-native-gesture-handler", - "version": "2.23.0", + "version": "2.23.1", "description": "Declarative API exposing native platform touch and gesture system to React Native", "scripts": { "prepare": "bob build && husky install",