react-native-windows 0.76.3 → 0.77.0-preview.2
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/.flowconfig +5 -1
- package/Libraries/ActionSheetIOS/ActionSheetIOS.d.ts +1 -0
- package/Libraries/ActionSheetIOS/ActionSheetIOS.js +13 -0
- package/Libraries/Animated/AnimatedEvent.js +1 -1
- package/Libraries/Animated/AnimatedImplementation.js +2 -2
- package/Libraries/Animated/NativeAnimatedAllowlist.js +20 -9
- package/Libraries/Animated/animations/Animation.js +60 -25
- package/Libraries/Animated/animations/DecayAnimation.js +26 -38
- package/Libraries/Animated/animations/SpringAnimation.js +33 -39
- package/Libraries/Animated/animations/TimingAnimation.js +34 -42
- package/Libraries/Animated/components/AnimatedFlatList.js +1 -1
- package/Libraries/Animated/components/AnimatedSectionList.js +3 -1
- package/Libraries/Animated/createAnimatedComponent.js +60 -33
- package/Libraries/Animated/nodes/AnimatedColor.js +1 -1
- package/Libraries/Animated/nodes/AnimatedInterpolation.js +1 -1
- package/Libraries/Animated/nodes/AnimatedNode.js +39 -45
- package/Libraries/Animated/nodes/AnimatedObject.js +13 -3
- package/Libraries/Animated/nodes/AnimatedProps.js +104 -46
- package/Libraries/Animated/nodes/AnimatedStyle.js +116 -39
- package/Libraries/Animated/nodes/AnimatedTransform.js +56 -23
- package/Libraries/Animated/nodes/AnimatedValue.js +1 -1
- package/Libraries/Animated/nodes/AnimatedWithChildren.js +1 -3
- package/Libraries/Animated/useAnimatedProps.js +41 -35
- package/Libraries/Components/AccessibilityInfo/AccessibilityInfo.d.ts +19 -3
- package/Libraries/Components/AccessibilityInfo/AccessibilityInfo.js +77 -5
- package/Libraries/Components/AccessibilityInfo/AccessibilityInfo.windows.js +82 -5
- package/Libraries/Components/ActivityIndicator/ActivityIndicator.js +4 -4
- package/Libraries/Components/Button.js +9 -4
- package/Libraries/Components/Button.windows.js +19 -5
- package/Libraries/Components/DrawerAndroid/DrawerLayoutAndroid.js +3 -1
- package/Libraries/Components/Glyph/Glyph.js +2 -1
- package/Libraries/Components/Keyboard/KeyboardAvoidingView.js +7 -0
- package/Libraries/Components/Popup/PopupNativeComponent.js +0 -1
- package/Libraries/Components/Pressable/Pressable.js +4 -4
- package/Libraries/Components/Pressable/Pressable.windows.js +10 -4
- package/Libraries/Components/ProgressBarAndroid/ProgressBarAndroid.android.js +13 -7
- package/Libraries/Components/RefreshControl/__mocks__/RefreshControlMock.js +3 -2
- package/Libraries/Components/SafeAreaView/SafeAreaView.js +4 -4
- package/Libraries/Components/ScrollView/AndroidHorizontalScrollViewNativeComponent.js +0 -1
- package/Libraries/Components/ScrollView/ScrollView.js +49 -88
- package/Libraries/Components/ScrollView/ScrollViewCommands.js +1 -1
- package/Libraries/Components/ScrollView/ScrollViewContext.js +2 -0
- package/Libraries/Components/ScrollView/ScrollViewNativeComponent.js +0 -2
- package/Libraries/Components/ScrollView/ScrollViewNativeComponent.windows.js +0 -5
- package/Libraries/Components/ScrollView/ScrollViewStickyHeader.js +8 -9
- package/Libraries/Components/Switch/Switch.js +8 -6
- package/Libraries/Components/Switch/Switch.windows.js +8 -6
- package/Libraries/Components/TextInput/InputAccessoryView.js +1 -1
- package/Libraries/Components/TextInput/RCTMultilineTextInputNativeComponent.js +4 -4
- package/Libraries/Components/TextInput/RCTSingelineTextInputNativeComponent.js +6 -4
- package/Libraries/Components/TextInput/RCTTextInputViewConfig.js +2 -1
- package/Libraries/Components/TextInput/TextInput.d.ts +27 -4
- package/Libraries/Components/TextInput/TextInput.flow.js +36 -19
- package/Libraries/Components/TextInput/TextInput.js +37 -13
- package/Libraries/Components/TextInput/TextInput.windows.js +47 -16
- package/Libraries/Components/TextInput/TextInputState.js +11 -13
- package/Libraries/Components/TextInput/TextInputState.windows.js +11 -13
- package/Libraries/Components/Touchable/BoundingDimensions.js +11 -3
- package/Libraries/Components/Touchable/Position.js +7 -2
- package/Libraries/Components/Touchable/Touchable.js +4 -0
- package/Libraries/Components/Touchable/Touchable.windows.js +4 -0
- package/Libraries/Components/Touchable/TouchableBounce.js +6 -2
- package/Libraries/Components/Touchable/TouchableBounce.windows.js +227 -0
- package/Libraries/Components/Touchable/TouchableHighlight.js +5 -5
- package/Libraries/Components/Touchable/TouchableHighlight.windows.js +5 -5
- package/Libraries/Components/Touchable/TouchableNativeFeedback.windows.js +371 -0
- package/Libraries/Components/Touchable/TouchableOpacity.js +6 -5
- package/Libraries/Components/Touchable/TouchableOpacity.windows.js +11 -5
- package/Libraries/Components/Touchable/TouchableWithoutFeedback.js +1 -2
- package/Libraries/Components/Touchable/TouchableWithoutFeedback.windows.js +9 -3
- package/Libraries/Components/View/ReactNativeStyleAttributes.js +6 -1
- package/Libraries/Components/View/View.js +4 -4
- package/Libraries/Components/View/View.windows.js +12 -5
- package/Libraries/Components/View/ViewAccessibility.d.ts +10 -0
- package/Libraries/Components/View/ViewAccessibility.windows.js +2 -0
- package/Libraries/Components/View/ViewNativeComponent.js +6 -98
- package/Libraries/Components/View/ViewPropTypes.d.ts +7 -0
- package/Libraries/Components/View/ViewPropTypes.js +0 -3
- package/Libraries/Components/View/ViewPropTypes.windows.js +2 -3
- package/Libraries/Core/ExceptionsManager.js +50 -29
- package/Libraries/Core/ReactNativeVersion.js +3 -3
- package/Libraries/Core/__mocks__/NativeExceptionsManager.js +0 -1
- package/Libraries/Core/setUpBatchedBridge.js +1 -10
- package/Libraries/Core/setUpDeveloperTools.js +1 -5
- package/Libraries/Core/setUpErrorHandling.js +20 -18
- package/Libraries/Core/setUpReactDevTools.js +107 -8
- package/Libraries/Core/setUpSegmentFetcher.js +1 -0
- package/Libraries/Core/setUpTimers.js +21 -18
- package/Libraries/Debugging/DebuggingOverlay.js +4 -5
- package/Libraries/Image/AssetSourceResolver.js +12 -1
- package/Libraries/Image/AssetSourceResolver.windows.js +12 -1
- package/Libraries/Image/Image.android.js +1 -5
- package/Libraries/Image/Image.d.ts +20 -29
- package/Libraries/Image/Image.ios.js +0 -2
- package/Libraries/Image/Image.windows.js +5 -1
- package/Libraries/Image/ImageBackground.js +2 -5
- package/Libraries/Image/ImageProps.js +7 -6
- package/Libraries/Image/ImageResizeMode.d.ts +8 -1
- package/Libraries/Image/ImageResizeMode.js +4 -1
- package/Libraries/Image/ImageSource.d.ts +0 -2
- package/Libraries/Image/ImageSource.js +0 -2
- package/Libraries/Image/ImageTypes.flow.js +11 -9
- package/Libraries/Image/ImageUtils.js +6 -3
- package/Libraries/Image/ImageViewNativeComponent.js +5 -3
- package/Libraries/Inspector/Inspector.js +1 -0
- package/Libraries/Inspector/NetworkOverlay.js +4 -0
- package/Libraries/Inspector/ReactDevToolsOverlay.js +8 -14
- package/Libraries/Inspector/getInspectorDataForViewAtPoint.js +3 -5
- package/Libraries/Interaction/InteractionManager.js +6 -1
- package/Libraries/Interaction/InteractionManagerStub.js +176 -0
- package/Libraries/Interaction/TouchHistoryMath.js +22 -19
- package/Libraries/JSInspector/NetworkAgent.js +1 -1
- package/Libraries/Lists/FlatList.d.ts +1 -2
- package/Libraries/Lists/FlatList.js +2 -2
- package/Libraries/Lists/SectionListModern.js +7 -7
- package/Libraries/Lists/__flowtests__/FlatList-flowtest.js +2 -2
- package/Libraries/Lists/__flowtests__/SectionList-flowtest.js +1 -1
- package/Libraries/LogBox/Data/LogBoxData.js +3 -3
- package/Libraries/LogBox/LogBox.js +18 -5
- package/Libraries/LogBox/LogBoxInspectorContainer.js +1 -1
- package/Libraries/LogBox/LogBoxNotificationContainer.js +2 -2
- package/Libraries/LogBox/UI/AnsiHighlight.js +26 -17
- package/Libraries/LogBox/UI/LogBoxInspectorCodeFrame.js +6 -1
- package/Libraries/LogBox/UI/LogBoxInspectorCodeFrame.windows.js +6 -1
- package/Libraries/LogBox/UI/LogBoxInspectorHeader.js +1 -1
- package/Libraries/LogBox/UI/LogBoxInspectorHeader.windows.js +1 -1
- package/Libraries/LogBox/UI/LogBoxInspectorStackFrames.js +1 -1
- package/Libraries/LogBox/UI/LogBoxMessage.js +2 -2
- package/Libraries/Modal/Modal.d.ts +12 -0
- package/Libraries/Modal/Modal.js +31 -4
- package/Libraries/Modal/Modal.windows.js +18 -0
- package/Libraries/NativeComponent/BaseViewConfig.android.js +72 -1
- package/Libraries/NativeComponent/BaseViewConfig.ios.js +2 -1
- package/Libraries/NativeComponent/BaseViewConfig.windows.js +3 -11
- package/Libraries/NativeComponent/NativeComponentRegistry.js +3 -3
- package/Libraries/NativeComponent/StaticViewConfigValidator.js +0 -1
- package/Libraries/Network/FormData.js +11 -3
- package/Libraries/Network/XHRInterceptor.js +63 -14
- package/Libraries/Network/XMLHttpRequest.js +26 -1
- package/Libraries/NewAppScreen/components/HermesBadge.js +1 -1
- package/Libraries/PermissionsAndroid/PermissionsAndroid.d.ts +49 -2
- package/Libraries/PermissionsAndroid/PermissionsAndroid.js +4 -4
- package/Libraries/Pressability/HoverState.js +2 -0
- package/Libraries/Pressability/Pressability.js +2 -3
- package/Libraries/Pressability/Pressability.windows.js +2 -3
- package/Libraries/Pressability/usePressability.js +4 -1
- package/Libraries/ReactNative/AppContainer.js +1 -1
- package/Libraries/ReactNative/AppRegistry.js +1 -11
- package/Libraries/ReactNative/DisplayMode.js +1 -1
- package/Libraries/ReactNative/ReactFabricPublicInstance/ReactFabricHostComponent.js +2 -3
- package/Libraries/ReactNative/RendererImplementation.js +18 -17
- package/Libraries/ReactNative/getCachedComponentWithDebugName.js +1 -3
- package/Libraries/ReactNative/renderApplication.js +9 -8
- package/Libraries/ReactNative/requireNativeComponent.js +5 -2
- package/Libraries/Renderer/shims/ReactFabric.js +3 -3
- package/Libraries/Renderer/shims/ReactFeatureFlags.js +2 -2
- package/Libraries/Renderer/shims/ReactNative.js +3 -3
- package/Libraries/Renderer/shims/ReactNativeTypes.js +22 -35
- package/Libraries/Renderer/shims/ReactNativeViewConfigRegistry.js +5 -6
- package/Libraries/Renderer/shims/createReactNativeComponentClass.js +2 -2
- package/Libraries/StyleSheet/StyleSheet.js +7 -1
- package/Libraries/StyleSheet/StyleSheetTypes.d.ts +13 -2
- package/Libraries/StyleSheet/StyleSheetTypes.js +24 -6
- package/Libraries/StyleSheet/processBackgroundImage.js +87 -110
- package/Libraries/StyleSheet/processTransform.js +3 -34
- package/Libraries/Text/Text.js +248 -249
- package/Libraries/Text/Text.windows.js +298 -292
- package/Libraries/Text/TextNativeComponent.js +0 -1
- package/Libraries/Text/TextProps.windows.js +2 -0
- package/Libraries/TurboModule/TurboModuleRegistry.js +5 -5
- package/Libraries/Types/CoreEventTypes.d.ts +3 -10
- package/Libraries/Types/CoreEventTypes.js +4 -6
- package/Libraries/Types/CoreEventTypes.windows.js +4 -6
- package/Libraries/Utilities/Appearance.js +3 -1
- package/Libraries/Utilities/BackHandler.android.js +6 -18
- package/Libraries/Utilities/BackHandler.d.ts +0 -4
- package/Libraries/Utilities/BackHandler.ios.js +0 -7
- package/Libraries/Utilities/BackHandler.windows.js +6 -18
- package/Libraries/Utilities/HMRClient.js +3 -4
- package/Libraries/Utilities/Platform.flow.js +2 -2
- package/Libraries/Utilities/Platform.flow.windows.js +3 -2
- package/Libraries/Utilities/__mocks__/BackHandler.js +3 -8
- package/Libraries/Utilities/codegenNativeComponent.js +1 -1
- package/Libraries/Utilities/useMergeRefs.js +26 -7
- package/Libraries/WebSocket/WebSocketEvent.js +4 -1
- package/Libraries/WebSocket/WebSocketInterceptor.js +31 -13
- package/Libraries/__flowtests__/ReactNativeTypes-flowtest.js +6 -5
- package/Libraries/promiseRejectionTrackingOptions.js +1 -1
- package/Microsoft.ReactNative/AsynchronousEventBeat.cpp +9 -8
- package/Microsoft.ReactNative/AsynchronousEventBeat.h +5 -5
- package/Microsoft.ReactNative/FBReactNativeSpec/FBReactNativeSpecJSI.h +5 -0
- package/Microsoft.ReactNative/Fabric/AbiComponentDescriptor.cpp +2 -2
- package/Microsoft.ReactNative/Fabric/Composition/CompositionDynamicAutomationProvider.cpp +197 -18
- package/Microsoft.ReactNative/Fabric/Composition/CompositionDynamicAutomationProvider.h +19 -1
- package/Microsoft.ReactNative/Fabric/Composition/CompositionViewComponentView.cpp +13 -0
- package/Microsoft.ReactNative/Fabric/Composition/ReactNativeIsland.cpp +1 -1
- package/Microsoft.ReactNative/Fabric/Composition/TextInput/WindowsTextInputComponentDescriptor.h +6 -8
- package/Microsoft.ReactNative/Fabric/Composition/TextInput/WindowsTextInputComponentView.cpp +2 -2
- package/Microsoft.ReactNative/Fabric/Composition/TextInput/WindowsTextInputShadowNode.cpp +3 -2
- package/Microsoft.ReactNative/Fabric/Composition/TooltipService.cpp +1 -1
- package/Microsoft.ReactNative/Fabric/Composition/UiaHelpers.cpp +24 -0
- package/Microsoft.ReactNative/Fabric/Composition/UiaHelpers.h +5 -0
- package/Microsoft.ReactNative/Fabric/FabricUIManagerModule.cpp +12 -12
- package/Microsoft.ReactNative/Fabric/FabricUIManagerModule.h +4 -4
- package/Microsoft.ReactNative/Fabric/ImageRequest.cpp +4 -8
- package/Microsoft.ReactNative/Fabric/platform/react/renderer/components/view/HostPlatformViewProps.cpp +16 -15
- package/Microsoft.ReactNative/Modules/AccessibilityInfoModule.cpp +15 -0
- package/Microsoft.ReactNative/Modules/AccessibilityInfoModule.h +9 -0
- package/Microsoft.ReactNative/ReactHost/ReactHost.cpp +20 -1
- package/Microsoft.ReactNative/ReactHost/ReactInstanceWin.cpp +11 -6
- package/Microsoft.ReactNative/ReactHost/ReactInstanceWin.h +1 -1
- package/Microsoft.ReactNative/SynchronousEventBeat.cpp +14 -4
- package/Microsoft.ReactNative/SynchronousEventBeat.h +4 -2
- package/Microsoft.ReactNative.Cxx/ApiLoaders/JSRuntimeApi.cpp +78 -0
- package/Microsoft.ReactNative.Cxx/ApiLoaders/JSRuntimeApi.h +51 -0
- package/Microsoft.ReactNative.Cxx/ApiLoaders/JSRuntimeApi.inc +48 -0
- package/Microsoft.ReactNative.Cxx/ApiLoaders/NodeApi.cpp +41 -0
- package/Microsoft.ReactNative.Cxx/ApiLoaders/NodeApi.h +127 -0
- package/Microsoft.ReactNative.Cxx/ApiLoaders/NodeApi.inc +125 -0
- package/Microsoft.ReactNative.Cxx/ApiLoaders/NodeApi_posix.cpp +16 -0
- package/Microsoft.ReactNative.Cxx/ApiLoaders/NodeApi_win.cpp +23 -0
- package/Microsoft.ReactNative.Cxx/JSI/decorator.h +834 -0
- package/Microsoft.ReactNative.Cxx/JSI/instrumentation.h +117 -0
- package/Microsoft.ReactNative.Cxx/JSI/jsi-inl.h +366 -0
- package/Microsoft.ReactNative.Cxx/JSI/jsi.cpp +560 -0
- package/Microsoft.ReactNative.Cxx/JSI/jsi.h +1611 -0
- package/Microsoft.ReactNative.Cxx/JSI/threadsafe.h +79 -0
- package/Microsoft.ReactNative.Cxx/Microsoft.ReactNative.Cxx.vcxitems +7 -11
- package/Microsoft.ReactNative.Cxx/Microsoft.ReactNative.Cxx.vcxitems.filters +1 -1
- package/Microsoft.ReactNative.Cxx/NodeApiJsiRuntime.cpp +2878 -0
- package/Microsoft.ReactNative.Cxx/NodeApiJsiRuntime.h +36 -0
- package/Microsoft.ReactNative.Cxx/ReactCommon/CallInvoker.h +64 -0
- package/Microsoft.ReactNative.Cxx/ReactCommon/SchedulerPriority.h +22 -0
- package/{ReactCommon/TEMP_UntilReactCommonUpdate/react/nativemodule/core → Microsoft.ReactNative.Cxx}/ReactCommon/TurboModule.cpp +63 -63
- package/Microsoft.ReactNative.Cxx/ReactCommon/TurboModule.h +165 -0
- package/Microsoft.ReactNative.Cxx/ReactCommon/TurboModuleUtils.cpp +105 -0
- package/{ReactCommon/TEMP_UntilReactCommonUpdate/react/nativemodule/core → Microsoft.ReactNative.Cxx}/ReactCommon/TurboModuleUtils.h +57 -58
- package/Microsoft.ReactNative.Cxx/ReactCommon/react/bridging/AString.h +42 -0
- package/Microsoft.ReactNative.Cxx/ReactCommon/react/bridging/Array.h +151 -0
- package/{ReactCommon/TEMP_UntilReactCommonUpdate → Microsoft.ReactNative.Cxx/ReactCommon}/react/bridging/Base.h +177 -154
- package/Microsoft.ReactNative.Cxx/ReactCommon/react/bridging/Bool.h +25 -0
- package/Microsoft.ReactNative.Cxx/ReactCommon/react/bridging/Bridging.h +21 -0
- package/Microsoft.ReactNative.Cxx/ReactCommon/react/bridging/CallbackWrapper.h +67 -0
- package/Microsoft.ReactNative.Cxx/ReactCommon/react/bridging/Class.h +90 -0
- package/{ReactCommon/TEMP_UntilReactCommonUpdate → Microsoft.ReactNative.Cxx/ReactCommon}/react/bridging/Convert.h +170 -172
- package/Microsoft.ReactNative.Cxx/ReactCommon/react/bridging/Error.h +51 -0
- package/{ReactCommon/TEMP_UntilReactCommonUpdate → Microsoft.ReactNative.Cxx/ReactCommon}/react/bridging/EventEmitter.h +134 -136
- package/{ReactCommon/TEMP_UntilReactCommonUpdate → Microsoft.ReactNative.Cxx/ReactCommon}/react/bridging/Function.h +283 -283
- package/Microsoft.ReactNative.Cxx/ReactCommon/react/bridging/LongLivedObject.cpp +63 -0
- package/Microsoft.ReactNative.Cxx/ReactCommon/react/bridging/LongLivedObject.h +61 -0
- package/Microsoft.ReactNative.Cxx/ReactCommon/react/bridging/Object.h +93 -0
- package/Microsoft.ReactNative.Cxx/ReactCommon/react/bridging/Promise.h +104 -0
- package/Microsoft.ReactNative.Cxx/ReactCommon/react/bridging/Value.h +107 -0
- package/Microsoft.ReactNative.Cxx/ReactCommon/react/debug/flags.h +22 -0
- package/Microsoft.ReactNative.Cxx/ReactCommon/react/debug/react_native_assert.h +72 -0
- package/Microsoft.ReactNative.Cxx/node-api/js_native_api.h +553 -0
- package/Microsoft.ReactNative.Cxx/node-api/js_native_api_types.h +167 -0
- package/Microsoft.ReactNative.Cxx/node-api/js_runtime_api.h +186 -0
- package/Microsoft.ReactNative.Cxx/stubs/glog/logging.h +82 -0
- package/PropertySheets/Bundle.Common.targets +1 -1
- package/PropertySheets/Bundle.props +3 -0
- package/PropertySheets/Generated/PackageVersion.g.props +4 -4
- package/PropertySheets/ManagedCodeGen/Microsoft.ReactNative.Managed.CodeGen.targets +1 -1
- package/PropertySheets/OutputMSBuildProperties.targets +3 -1
- package/PropertySheets/React.Cpp.props +6 -0
- package/ReactCommon/ReactCommon.vcxproj +5 -0
- package/ReactCommon/TEMP_UntilReactCommonUpdate/cxxreact/JSExecutor.cpp +2 -3
- package/ReactCommon/TEMP_UntilReactCommonUpdate/jsi/jsi/test/testlib.cpp +61 -0
- package/ReactCommon/TEMP_UntilReactCommonUpdate/react/nativemodule/core/ReactCommon/TurboModule.h +26 -23
- package/ReactCommon/TEMP_UntilReactCommonUpdate/react/renderer/componentregistry/ComponentDescriptorRegistry.cpp +150 -0
- package/ReactCommon/TEMP_UntilReactCommonUpdate/react/renderer/components/view/AccessibilityPrimitives.h +252 -0
- package/ReactCommon/TEMP_UntilReactCommonUpdate/react/renderer/components/view/accessibilityPropsConversions.h +795 -0
- package/ReactCommon/TEMP_UntilReactCommonUpdate/react/renderer/runtimescheduler/SchedulerPriorityUtils.h +59 -0
- package/ReactCommon/TEMP_UntilReactCommonUpdate/react/runtime/ReactInstance.cpp +227 -74
- package/Scripts/Microsoft.ReactNative.Managed.CodeGen.targets +1 -1
- package/Scripts/Tfs/Layout-MSRN-Headers.ps1 +97 -62
- package/Shared/InspectorPackagerConnection.cpp +3 -6
- package/Shared/InspectorPackagerConnection.h +2 -2
- package/Shared/InstanceManager.h +1 -1
- package/Shared/OInstance.h +1 -1
- package/Shared/Shared.vcxitems +17 -2
- package/Shared/Shared.vcxitems.filters +3 -1
- package/Shared/TurboModuleManager.cpp +29 -4
- package/codegen/NativeAccessibilityInfoSpec.g.h +27 -9
- package/codegen/NativeAccessibilityManagerSpec.g.h +19 -13
- package/codegen/NativeActionSheetManagerSpec.g.h +4 -0
- package/codegen/NativeExceptionsManagerSpec.g.h +1 -7
- package/codegen/NativeIntersectionObserverSpec.g.h +2 -0
- package/codegen/NativePerformanceSpec.g.h +127 -3
- package/codegen/NativeReactDevToolsRuntimeSettingsModuleSpec.g.h +67 -0
- package/codegen/NativeReactDevToolsSettingsManagerSpec.g.h +41 -0
- package/codegen/NativeReactNativeFeatureFlagsSpec.g.h +125 -137
- package/codegen/react/components/rnwcore/ComponentDescriptors.h +0 -1
- package/codegen/react/components/rnwcore/Props.cpp +1 -0
- package/codegen/react/components/rnwcore/Props.h +1 -0
- package/codegen/react/components/rnwcore/ShadowNodes.cpp +0 -1
- package/codegen/react/components/rnwcore/ShadowNodes.h +0 -11
- package/codegen/react/components/rnwcore/States.h +0 -12
- package/codegen/rnwcoreJSI-generated.cpp +219 -186
- package/codegen/rnwcoreJSI.h +942 -511
- package/index.js +10 -3
- package/index.windows.js +10 -3
- package/jest/setup.js +36 -1
- package/just-task.js +15 -0
- package/package.json +22 -22
- package/src/private/animated/NativeAnimatedHelper.js +18 -16
- package/src/private/animated/useAnimatedPropsMemo.js +356 -0
- package/src/private/components/HScrollViewNativeComponents.js +1 -27
- package/src/private/components/SafeAreaView_INTERNAL_DO_NOT_USE.js +11 -8
- package/src/private/components/VScrollViewNativeComponents.js +2 -25
- package/src/private/debugging/ReactDevToolsSettingsManager.android.js +20 -0
- package/src/private/debugging/ReactDevToolsSettingsManager.ios.js +30 -0
- package/src/private/debugging/ReactDevToolsSettingsManager.windows.js +20 -0
- package/src/private/{fusebox → debugging}/setUpFuseboxReactDevToolsDispatcher.js +6 -0
- package/src/private/devmenu/DevMenu.d.ts +20 -0
- package/src/private/devmenu/DevMenu.js +31 -0
- package/src/private/featureflags/ReactNativeFeatureFlags.js +95 -86
- package/src/private/featureflags/ReactNativeFeatureFlagsBase.js +8 -2
- package/src/private/featureflags/specs/NativeReactNativeFeatureFlags.js +17 -19
- package/src/private/fusebox/specs/NativeReactDevToolsRuntimeSettingsModule.js +34 -0
- package/src/private/setup/setUpDOM.js +14 -6
- package/src/private/setup/setUpMutationObserver.js +5 -0
- package/src/private/specs/components/AndroidHorizontalScrollContentViewNativeComponent.js +1 -0
- package/src/private/specs/components/RCTModalHostViewNativeComponent.js +8 -0
- package/src/private/specs/modules/NativeAccessibilityInfo.js +9 -0
- package/src/private/specs/modules/NativeAccessibilityManager.js +4 -0
- package/src/private/specs/modules/NativeActionSheetManager.js +2 -0
- package/src/private/specs/modules/NativeAppearance.js +4 -10
- package/src/private/specs/modules/NativeExceptionsManager.js +0 -12
- package/src/private/specs/modules/{NativeDevToolsSettingsManager.js → NativeReactDevToolsSettingsManager.js} +3 -5
- package/src/private/webapis/dom/geometry/DOMRect.js +2 -2
- package/src/private/webapis/dom/geometry/DOMRectReadOnly.js +2 -2
- package/src/private/webapis/dom/nodes/ReactNativeElement.js +2 -3
- package/src/private/webapis/intersectionobserver/IntersectionObserver.js +102 -11
- package/src/private/webapis/intersectionobserver/IntersectionObserverEntry.js +26 -0
- package/src/private/webapis/intersectionobserver/IntersectionObserverManager.js +1 -0
- package/src/private/webapis/intersectionobserver/specs/NativeIntersectionObserver.js +1 -0
- package/src/private/webapis/intersectionobserver/specs/__mocks__/NativeIntersectionObserver.js +9 -0
- package/src/private/webapis/performance/EventTiming.js +13 -8
- package/src/private/webapis/performance/Performance.js +66 -73
- package/src/private/webapis/performance/PerformanceEntry.js +2 -5
- package/src/private/webapis/performance/PerformanceObserver.js +65 -164
- package/src/private/webapis/performance/RawPerformanceEntry.js +1 -1
- package/src/private/webapis/performance/UserTiming.js +11 -7
- package/src/private/webapis/performance/Utilities.js +18 -0
- package/src/private/webapis/performance/specs/NativePerformance.js +71 -2
- package/src/private/webapis/performance/specs/__mocks__/NativePerformanceMock.js +267 -0
- package/templates/cpp-lib/template.config.js +13 -7
- package/templates/templateUtils.js +10 -0
- package/types/index.d.ts +1 -1
- package/types/public/ReactNativeTypes.d.ts +4 -8
- package/Libraries/DevToolsSettings/DevToolsSettingsManager.android.js +0 -35
- package/Libraries/DevToolsSettings/DevToolsSettingsManager.d.ts +0 -20
- package/Libraries/DevToolsSettings/DevToolsSettingsManager.ios.js +0 -49
- package/Libraries/DevToolsSettings/DevToolsSettingsManager.windows.js +0 -35
- package/Libraries/DevToolsSettings/NativeDevToolsSettingsManager.js +0 -13
- package/Libraries/ReactNative/ReactFabricInternals.js +0 -17
- package/ReactCommon/TEMP_UntilReactCommonUpdate/react/bridging/CallbackWrapper.h +0 -101
- package/ReactCommon/TEMP_UntilReactCommonUpdate/react/renderer/components/scrollview/ScrollViewProps.cpp +0 -569
- package/codegen/NativeDevToolsSettingsManagerSpec.g.h +0 -53
- package/codegen/NativePerformanceObserverSpec.g.h +0 -131
- package/src/private/components/useSyncOnScroll.js +0 -48
- package/src/private/webapis/performance/specs/NativePerformanceObserver.js +0 -61
- package/src/private/webapis/performance/specs/__mocks__/NativePerformance.js +0 -67
- package/src/private/webapis/performance/specs/__mocks__/NativePerformanceObserver.js +0 -127
- package/types/experimental.d.ts +0 -59
- /package/src/private/{fusebox → debugging}/FuseboxSessionObserver.js +0 -0
|
@@ -0,0 +1,61 @@
|
|
|
1
|
+
/*
|
|
2
|
+
* Copyright (c) Meta Platforms, Inc. and affiliates.
|
|
3
|
+
*
|
|
4
|
+
* This source code is licensed under the MIT license found in the
|
|
5
|
+
* LICENSE file in the root directory of this source tree.
|
|
6
|
+
*/
|
|
7
|
+
|
|
8
|
+
#pragma once
|
|
9
|
+
|
|
10
|
+
#include <jsi/jsi.h>
|
|
11
|
+
#include <memory>
|
|
12
|
+
#include <mutex>
|
|
13
|
+
#include <unordered_set>
|
|
14
|
+
|
|
15
|
+
namespace facebook::react {
|
|
16
|
+
|
|
17
|
+
/**
|
|
18
|
+
* A simple wrapper class that can be registered to a collection that keep it
|
|
19
|
+
* alive for extended period of time. This object can be removed from the
|
|
20
|
+
* collection when needed.
|
|
21
|
+
*
|
|
22
|
+
* The subclass of this class must be created using std::make_shared<T>().
|
|
23
|
+
* After creation, add it to the `LongLivedObjectCollection`. When done with the
|
|
24
|
+
* object, call `allowRelease()` to reclaim its memory.
|
|
25
|
+
*
|
|
26
|
+
* When using LongLivedObject to keep JS values alive, ensure you only hold weak
|
|
27
|
+
* references to the object outside the JS thread to avoid accessing deallocated
|
|
28
|
+
* values when the JS VM is shutdown.
|
|
29
|
+
*/
|
|
30
|
+
class LongLivedObject {
|
|
31
|
+
public:
|
|
32
|
+
virtual void allowRelease();
|
|
33
|
+
|
|
34
|
+
protected:
|
|
35
|
+
explicit LongLivedObject(jsi::Runtime& runtime) : runtime_(runtime) {}
|
|
36
|
+
virtual ~LongLivedObject() = default;
|
|
37
|
+
jsi::Runtime& runtime_;
|
|
38
|
+
};
|
|
39
|
+
|
|
40
|
+
/**
|
|
41
|
+
* A singleton, thread-safe, write-only collection for the `LongLivedObject`s.
|
|
42
|
+
*/
|
|
43
|
+
class LongLivedObjectCollection {
|
|
44
|
+
public:
|
|
45
|
+
static LongLivedObjectCollection& get(jsi::Runtime& runtime);
|
|
46
|
+
|
|
47
|
+
LongLivedObjectCollection() = default;
|
|
48
|
+
LongLivedObjectCollection(const LongLivedObjectCollection&) = delete;
|
|
49
|
+
void operator=(const LongLivedObjectCollection&) = delete;
|
|
50
|
+
|
|
51
|
+
void add(std::shared_ptr<LongLivedObject> o);
|
|
52
|
+
void remove(const LongLivedObject* o);
|
|
53
|
+
void clear();
|
|
54
|
+
size_t size() const;
|
|
55
|
+
|
|
56
|
+
private:
|
|
57
|
+
std::unordered_set<std::shared_ptr<LongLivedObject>> collection_;
|
|
58
|
+
mutable std::mutex collectionMutex_;
|
|
59
|
+
};
|
|
60
|
+
|
|
61
|
+
} // namespace facebook::react
|
|
@@ -0,0 +1,93 @@
|
|
|
1
|
+
/*
|
|
2
|
+
* Copyright (c) Meta Platforms, Inc. and affiliates.
|
|
3
|
+
*
|
|
4
|
+
* This source code is licensed under the MIT license found in the
|
|
5
|
+
* LICENSE file in the root directory of this source tree.
|
|
6
|
+
*/
|
|
7
|
+
|
|
8
|
+
#pragma once
|
|
9
|
+
|
|
10
|
+
#include <react/bridging/AString.h>
|
|
11
|
+
#include <react/bridging/Base.h>
|
|
12
|
+
|
|
13
|
+
#include <map>
|
|
14
|
+
#include <unordered_map>
|
|
15
|
+
|
|
16
|
+
namespace facebook::react {
|
|
17
|
+
|
|
18
|
+
template <>
|
|
19
|
+
struct Bridging<jsi::WeakObject> {
|
|
20
|
+
static jsi::WeakObject fromJs(jsi::Runtime& rt, const jsi::Object& value) {
|
|
21
|
+
return jsi::WeakObject(rt, value);
|
|
22
|
+
}
|
|
23
|
+
|
|
24
|
+
static jsi::Value toJs(jsi::Runtime& rt, jsi::WeakObject& value) {
|
|
25
|
+
return value.lock(rt);
|
|
26
|
+
}
|
|
27
|
+
};
|
|
28
|
+
|
|
29
|
+
template <typename T>
|
|
30
|
+
struct Bridging<
|
|
31
|
+
std::shared_ptr<T>,
|
|
32
|
+
std::enable_if_t<std::is_base_of_v<jsi::HostObject, T>>> {
|
|
33
|
+
static std::shared_ptr<T> fromJs(jsi::Runtime& rt, const jsi::Object& value) {
|
|
34
|
+
return value.getHostObject<T>(rt);
|
|
35
|
+
}
|
|
36
|
+
|
|
37
|
+
static jsi::Object toJs(jsi::Runtime& rt, std::shared_ptr<T> value) {
|
|
38
|
+
return jsi::Object::createFromHostObject(rt, std::move(value));
|
|
39
|
+
}
|
|
40
|
+
};
|
|
41
|
+
|
|
42
|
+
namespace map_detail {
|
|
43
|
+
|
|
44
|
+
template <typename T>
|
|
45
|
+
struct Bridging {
|
|
46
|
+
static T fromJs(
|
|
47
|
+
jsi::Runtime& rt,
|
|
48
|
+
const jsi::Object& value,
|
|
49
|
+
const std::shared_ptr<CallInvoker>& jsInvoker) {
|
|
50
|
+
T result;
|
|
51
|
+
auto propertyNames = value.getPropertyNames(rt);
|
|
52
|
+
auto length = propertyNames.length(rt);
|
|
53
|
+
|
|
54
|
+
for (size_t i = 0; i < length; i++) {
|
|
55
|
+
auto propertyName = propertyNames.getValueAtIndex(rt, i);
|
|
56
|
+
|
|
57
|
+
result.emplace(
|
|
58
|
+
bridging::fromJs<std::string>(rt, propertyName, jsInvoker),
|
|
59
|
+
bridging::fromJs<typename T::mapped_type>(
|
|
60
|
+
rt, value.getProperty(rt, propertyName.asString(rt)), jsInvoker));
|
|
61
|
+
}
|
|
62
|
+
|
|
63
|
+
return result;
|
|
64
|
+
}
|
|
65
|
+
|
|
66
|
+
static jsi::Object toJs(
|
|
67
|
+
jsi::Runtime& rt,
|
|
68
|
+
const T& map,
|
|
69
|
+
const std::shared_ptr<CallInvoker>& jsInvoker) {
|
|
70
|
+
auto resultObject = jsi::Object(rt);
|
|
71
|
+
|
|
72
|
+
for (const auto& [key, value] : map) {
|
|
73
|
+
resultObject.setProperty(
|
|
74
|
+
rt,
|
|
75
|
+
jsi::PropNameID::forUtf8(rt, key),
|
|
76
|
+
bridging::toJs(rt, value, jsInvoker));
|
|
77
|
+
}
|
|
78
|
+
|
|
79
|
+
return resultObject;
|
|
80
|
+
}
|
|
81
|
+
};
|
|
82
|
+
|
|
83
|
+
} // namespace map_detail
|
|
84
|
+
|
|
85
|
+
template <typename... Args>
|
|
86
|
+
struct Bridging<std::map<std::string, Args...>>
|
|
87
|
+
: map_detail::Bridging<std::map<std::string, Args...>> {};
|
|
88
|
+
|
|
89
|
+
template <typename... Args>
|
|
90
|
+
struct Bridging<std::unordered_map<std::string, Args...>>
|
|
91
|
+
: map_detail::Bridging<std::unordered_map<std::string, Args...>> {};
|
|
92
|
+
|
|
93
|
+
} // namespace facebook::react
|
|
@@ -0,0 +1,104 @@
|
|
|
1
|
+
/*
|
|
2
|
+
* Copyright (c) Meta Platforms, Inc. and affiliates.
|
|
3
|
+
*
|
|
4
|
+
* This source code is licensed under the MIT license found in the
|
|
5
|
+
* LICENSE file in the root directory of this source tree.
|
|
6
|
+
*/
|
|
7
|
+
|
|
8
|
+
#pragma once
|
|
9
|
+
|
|
10
|
+
#include <react/bridging/Error.h>
|
|
11
|
+
#include <react/bridging/Function.h>
|
|
12
|
+
#include <react/bridging/LongLivedObject.h>
|
|
13
|
+
|
|
14
|
+
#include <mutex>
|
|
15
|
+
#include <optional>
|
|
16
|
+
|
|
17
|
+
namespace facebook::react {
|
|
18
|
+
|
|
19
|
+
template <typename T>
|
|
20
|
+
class AsyncPromise {
|
|
21
|
+
public:
|
|
22
|
+
AsyncPromise(jsi::Runtime& rt, const std::shared_ptr<CallInvoker>& jsInvoker)
|
|
23
|
+
: state_(std::make_shared<SharedState>()) {
|
|
24
|
+
auto constructor = rt.global().getPropertyAsFunction(rt, "Promise");
|
|
25
|
+
|
|
26
|
+
auto promise = constructor.callAsConstructor(
|
|
27
|
+
rt,
|
|
28
|
+
bridging::toJs(
|
|
29
|
+
rt,
|
|
30
|
+
// Safe to capture this since this is called synchronously.
|
|
31
|
+
[this](AsyncCallback<T> resolve, AsyncCallback<Error> reject) {
|
|
32
|
+
state_->resolve = std::move(resolve);
|
|
33
|
+
state_->reject = std::move(reject);
|
|
34
|
+
},
|
|
35
|
+
jsInvoker));
|
|
36
|
+
|
|
37
|
+
auto promiseHolder =
|
|
38
|
+
std::make_shared<PromiseHolder>(rt, promise.asObject(rt));
|
|
39
|
+
LongLivedObjectCollection::get(rt).add(promiseHolder);
|
|
40
|
+
|
|
41
|
+
// The shared state can retain the promise holder weakly now.
|
|
42
|
+
state_->promiseHolder = promiseHolder;
|
|
43
|
+
}
|
|
44
|
+
|
|
45
|
+
void resolve(T value) {
|
|
46
|
+
std::lock_guard<std::mutex> lock(state_->mutex);
|
|
47
|
+
|
|
48
|
+
if (state_->resolve) {
|
|
49
|
+
state_->resolve->call(std::move(value));
|
|
50
|
+
state_->resolve.reset();
|
|
51
|
+
state_->reject.reset();
|
|
52
|
+
}
|
|
53
|
+
}
|
|
54
|
+
|
|
55
|
+
void reject(Error error) {
|
|
56
|
+
std::lock_guard<std::mutex> lock(state_->mutex);
|
|
57
|
+
|
|
58
|
+
if (state_->reject) {
|
|
59
|
+
state_->reject->call(std::move(error));
|
|
60
|
+
state_->reject.reset();
|
|
61
|
+
state_->resolve.reset();
|
|
62
|
+
}
|
|
63
|
+
}
|
|
64
|
+
|
|
65
|
+
jsi::Object get(jsi::Runtime& rt) const {
|
|
66
|
+
if (auto holder = state_->promiseHolder.lock()) {
|
|
67
|
+
return jsi::Value(rt, holder->promise).asObject(rt);
|
|
68
|
+
} else {
|
|
69
|
+
throw jsi::JSError(rt, "Failed to get invalidated promise");
|
|
70
|
+
}
|
|
71
|
+
}
|
|
72
|
+
|
|
73
|
+
private:
|
|
74
|
+
struct PromiseHolder : LongLivedObject {
|
|
75
|
+
PromiseHolder(jsi::Runtime& runtime, jsi::Object p)
|
|
76
|
+
: LongLivedObject(runtime), promise(std::move(p)) {}
|
|
77
|
+
|
|
78
|
+
jsi::Object promise;
|
|
79
|
+
};
|
|
80
|
+
|
|
81
|
+
struct SharedState {
|
|
82
|
+
~SharedState() {
|
|
83
|
+
if (auto holder = promiseHolder.lock()) {
|
|
84
|
+
holder->allowRelease();
|
|
85
|
+
}
|
|
86
|
+
}
|
|
87
|
+
|
|
88
|
+
std::mutex mutex;
|
|
89
|
+
std::weak_ptr<PromiseHolder> promiseHolder;
|
|
90
|
+
std::optional<AsyncCallback<T>> resolve;
|
|
91
|
+
std::optional<AsyncCallback<Error>> reject;
|
|
92
|
+
};
|
|
93
|
+
|
|
94
|
+
std::shared_ptr<SharedState> state_;
|
|
95
|
+
};
|
|
96
|
+
|
|
97
|
+
template <typename T>
|
|
98
|
+
struct Bridging<AsyncPromise<T>> {
|
|
99
|
+
static jsi::Object toJs(jsi::Runtime& rt, const AsyncPromise<T>& promise) {
|
|
100
|
+
return promise.get(rt);
|
|
101
|
+
}
|
|
102
|
+
};
|
|
103
|
+
|
|
104
|
+
} // namespace facebook::react
|
|
@@ -0,0 +1,107 @@
|
|
|
1
|
+
/*
|
|
2
|
+
* Copyright (c) Meta Platforms, Inc. and affiliates.
|
|
3
|
+
*
|
|
4
|
+
* This source code is licensed under the MIT license found in the
|
|
5
|
+
* LICENSE file in the root directory of this source tree.
|
|
6
|
+
*/
|
|
7
|
+
|
|
8
|
+
#pragma once
|
|
9
|
+
|
|
10
|
+
#include <react/bridging/Base.h>
|
|
11
|
+
|
|
12
|
+
#include <memory>
|
|
13
|
+
#include <optional>
|
|
14
|
+
|
|
15
|
+
namespace facebook::react {
|
|
16
|
+
|
|
17
|
+
template <>
|
|
18
|
+
struct Bridging<std::nullptr_t> {
|
|
19
|
+
static std::nullptr_t fromJs(jsi::Runtime& rt, const jsi::Value& value) {
|
|
20
|
+
if (value.isNull() || value.isUndefined()) {
|
|
21
|
+
return nullptr;
|
|
22
|
+
} else {
|
|
23
|
+
throw jsi::JSError(rt, "Cannot convert value to nullptr");
|
|
24
|
+
}
|
|
25
|
+
}
|
|
26
|
+
|
|
27
|
+
static std::nullptr_t toJs(jsi::Runtime&, std::nullptr_t) {
|
|
28
|
+
return nullptr;
|
|
29
|
+
}
|
|
30
|
+
};
|
|
31
|
+
|
|
32
|
+
template <typename T>
|
|
33
|
+
struct Bridging<std::optional<T>> {
|
|
34
|
+
static std::optional<T> fromJs(
|
|
35
|
+
jsi::Runtime& rt,
|
|
36
|
+
const jsi::Value& value,
|
|
37
|
+
const std::shared_ptr<CallInvoker>& jsInvoker) {
|
|
38
|
+
if (value.isNull() || value.isUndefined()) {
|
|
39
|
+
return {};
|
|
40
|
+
}
|
|
41
|
+
return bridging::fromJs<T>(rt, value, jsInvoker);
|
|
42
|
+
}
|
|
43
|
+
|
|
44
|
+
template <typename U>
|
|
45
|
+
static std::optional<T> fromJs(
|
|
46
|
+
jsi::Runtime& rt,
|
|
47
|
+
const std::optional<U>& value,
|
|
48
|
+
const std::shared_ptr<CallInvoker>& jsInvoker) {
|
|
49
|
+
if (value) {
|
|
50
|
+
return bridging::fromJs<T>(rt, *value, jsInvoker);
|
|
51
|
+
}
|
|
52
|
+
return {};
|
|
53
|
+
}
|
|
54
|
+
|
|
55
|
+
static jsi::Value toJs(
|
|
56
|
+
jsi::Runtime& rt,
|
|
57
|
+
const std::optional<T>& value,
|
|
58
|
+
const std::shared_ptr<CallInvoker>& jsInvoker) {
|
|
59
|
+
if (value) {
|
|
60
|
+
return bridging::toJs(rt, *value, jsInvoker);
|
|
61
|
+
}
|
|
62
|
+
return jsi::Value::null();
|
|
63
|
+
}
|
|
64
|
+
};
|
|
65
|
+
|
|
66
|
+
template <typename T>
|
|
67
|
+
struct Bridging<
|
|
68
|
+
std::shared_ptr<T>,
|
|
69
|
+
std::enable_if_t<!std::is_base_of_v<jsi::HostObject, T>>> {
|
|
70
|
+
static jsi::Value toJs(
|
|
71
|
+
jsi::Runtime& rt,
|
|
72
|
+
const std::shared_ptr<T>& ptr,
|
|
73
|
+
const std::shared_ptr<CallInvoker>& jsInvoker) {
|
|
74
|
+
if (ptr) {
|
|
75
|
+
return bridging::toJs(rt, *ptr, jsInvoker);
|
|
76
|
+
}
|
|
77
|
+
return jsi::Value::null();
|
|
78
|
+
}
|
|
79
|
+
};
|
|
80
|
+
|
|
81
|
+
template <typename T>
|
|
82
|
+
struct Bridging<std::unique_ptr<T>> {
|
|
83
|
+
static jsi::Value toJs(
|
|
84
|
+
jsi::Runtime& rt,
|
|
85
|
+
const std::unique_ptr<T>& ptr,
|
|
86
|
+
const std::shared_ptr<CallInvoker>& jsInvoker) {
|
|
87
|
+
if (ptr) {
|
|
88
|
+
return bridging::toJs(rt, *ptr, jsInvoker);
|
|
89
|
+
}
|
|
90
|
+
return jsi::Value::null();
|
|
91
|
+
}
|
|
92
|
+
};
|
|
93
|
+
|
|
94
|
+
template <typename T>
|
|
95
|
+
struct Bridging<std::weak_ptr<T>> {
|
|
96
|
+
static jsi::Value toJs(
|
|
97
|
+
jsi::Runtime& rt,
|
|
98
|
+
const std::weak_ptr<T>& weakPtr,
|
|
99
|
+
const std::shared_ptr<CallInvoker>& jsInvoker) {
|
|
100
|
+
if (auto ptr = weakPtr.lock()) {
|
|
101
|
+
return bridging::toJs(rt, *ptr, jsInvoker);
|
|
102
|
+
}
|
|
103
|
+
return jsi::Value::null();
|
|
104
|
+
}
|
|
105
|
+
};
|
|
106
|
+
|
|
107
|
+
} // namespace facebook::react
|
|
@@ -0,0 +1,22 @@
|
|
|
1
|
+
/*
|
|
2
|
+
* Copyright (c) Meta Platforms, Inc. and affiliates.
|
|
3
|
+
*
|
|
4
|
+
* This source code is licensed under the MIT license found in the
|
|
5
|
+
* LICENSE file in the root directory of this source tree.
|
|
6
|
+
*/
|
|
7
|
+
|
|
8
|
+
#pragma once
|
|
9
|
+
|
|
10
|
+
//
|
|
11
|
+
// Preprocessor flags which control whether code meant for debugging the
|
|
12
|
+
// internals of React Native is included in the build. E.g. debug assertions.
|
|
13
|
+
//
|
|
14
|
+
// This flag is normally derived from NDEBUG, but may be set explicitly by
|
|
15
|
+
// defining `REACT_NATIVE_DEBUG` or `REACT_NATIVE_PRODUCTION`.
|
|
16
|
+
#if !(defined(REACT_NATIVE_DEBUG) || defined(REACT_NATIVE_PRODUCTION))
|
|
17
|
+
#ifdef NDEBUG
|
|
18
|
+
#define REACT_NATIVE_PRODUCTION
|
|
19
|
+
#else
|
|
20
|
+
#define REACT_NATIVE_DEBUG
|
|
21
|
+
#endif
|
|
22
|
+
#endif
|
|
@@ -0,0 +1,72 @@
|
|
|
1
|
+
/*
|
|
2
|
+
* Copyright (c) Meta Platforms, Inc. and affiliates.
|
|
3
|
+
*
|
|
4
|
+
* This source code is licensed under the MIT license found in the
|
|
5
|
+
* LICENSE file in the root directory of this source tree.
|
|
6
|
+
*/
|
|
7
|
+
|
|
8
|
+
// No header guards since it is legitimately possible to include this file more
|
|
9
|
+
// than once with and without REACT_NATIVE_DEBUG.
|
|
10
|
+
|
|
11
|
+
// react_native_assert allows us to opt-in to specific asserts on Android and
|
|
12
|
+
// test before moving on. When all issues have been found, maybe we can use
|
|
13
|
+
// `UNDEBUG` flag to disable NDEBUG in debug builds on Android.
|
|
14
|
+
|
|
15
|
+
// Asserting is appropriate for conditions that:
|
|
16
|
+
// 1. May or may not be recoverable, and
|
|
17
|
+
// 2. imply there is a bug in React Native when violated.
|
|
18
|
+
// For recoverable conditions that can be violated by user mistake (e.g. JS
|
|
19
|
+
// code passes an unexpected prop value), consider react_native_expect instead.
|
|
20
|
+
|
|
21
|
+
#pragma once
|
|
22
|
+
|
|
23
|
+
#include "flags.h"
|
|
24
|
+
|
|
25
|
+
#undef react_native_assert
|
|
26
|
+
|
|
27
|
+
#ifndef REACT_NATIVE_DEBUG
|
|
28
|
+
|
|
29
|
+
#define react_native_assert(e) ((void)0)
|
|
30
|
+
|
|
31
|
+
#else // REACT_NATIVE_DEBUG
|
|
32
|
+
|
|
33
|
+
#ifdef __ANDROID__
|
|
34
|
+
|
|
35
|
+
#include <android/log.h>
|
|
36
|
+
|
|
37
|
+
#ifdef __cplusplus
|
|
38
|
+
extern "C" {
|
|
39
|
+
#endif // __cplusplus
|
|
40
|
+
void react_native_assert_fail(
|
|
41
|
+
const char* func,
|
|
42
|
+
const char* file,
|
|
43
|
+
int line,
|
|
44
|
+
const char* expr);
|
|
45
|
+
#ifdef __cplusplus
|
|
46
|
+
}
|
|
47
|
+
#endif // __cpusplus
|
|
48
|
+
|
|
49
|
+
#define react_native_assert(e) \
|
|
50
|
+
((e) ? (void)0 : react_native_assert_fail(__func__, __FILE__, __LINE__, #e))
|
|
51
|
+
|
|
52
|
+
#else // __ANDROID__
|
|
53
|
+
|
|
54
|
+
#include <glog/logging.h>
|
|
55
|
+
#include <cassert>
|
|
56
|
+
|
|
57
|
+
// For all platforms, but iOS+Xcode especially: flush logs because some might be
|
|
58
|
+
// lost on iOS if an assert is hit right after this. If you are trying to debug
|
|
59
|
+
// something actively and have added lots of LOG statements to track down an
|
|
60
|
+
// issue, there is race between flushing the final logs and stopping execution
|
|
61
|
+
// when the assert hits. Thus, if we know an assert will fail, we force flushing
|
|
62
|
+
// to happen right before the assert.
|
|
63
|
+
#define react_native_assert(cond) \
|
|
64
|
+
if (!(cond)) { \
|
|
65
|
+
LOG(ERROR) << "react_native_assert failure: " << #cond; \
|
|
66
|
+
google::FlushLogFiles(google::GLOG_INFO); \
|
|
67
|
+
assert(cond); \
|
|
68
|
+
}
|
|
69
|
+
|
|
70
|
+
#endif // platforms besides __ANDROID__
|
|
71
|
+
|
|
72
|
+
#endif // REACT_NATIVE_DEBUG
|