react-native-windows 0.84.0 → 0.85.0-preview.1
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 +1 -5
- package/Directory.Build.props +1 -16
- package/Directory.Build.targets +12 -4
- package/Folly/ThreadNameStub.cpp +4 -6
- package/Libraries/ActionSheetIOS/ActionSheetIOS.js +3 -3
- package/Libraries/Animated/Animated.d.ts +8 -1
- package/Libraries/Animated/AnimatedEvent.js +4 -4
- package/Libraries/Animated/AnimatedImplementation.js +2 -2
- package/Libraries/Animated/animations/Animation.js +3 -3
- package/Libraries/Animated/animations/DecayAnimation.js +4 -4
- package/Libraries/Animated/animations/SpringAnimation.js +5 -5
- package/Libraries/Animated/animations/TimingAnimation.js +5 -5
- package/Libraries/Animated/createAnimatedComponent.js +7 -7
- package/Libraries/Animated/nodes/AnimatedColor.js +2 -2
- package/Libraries/Animated/nodes/AnimatedInterpolation.js +12 -12
- package/Libraries/Animated/nodes/AnimatedNode.js +3 -3
- package/Libraries/Animated/nodes/AnimatedObject.js +3 -3
- package/Libraries/Animated/nodes/AnimatedProps.js +6 -6
- package/Libraries/Animated/nodes/AnimatedStyle.js +7 -7
- package/Libraries/Animated/nodes/AnimatedTransform.js +13 -13
- package/Libraries/Animated/nodes/AnimatedValue.js +1 -1
- package/Libraries/Animated/nodes/AnimatedValueXY.js +1 -1
- package/Libraries/Animated/nodes/AnimatedWithChildren.js +1 -1
- package/Libraries/Animated/useAnimatedColor.d.ts +15 -0
- package/Libraries/Animated/useAnimatedColor.js +25 -0
- package/Libraries/Animated/useAnimatedValueXY.d.ts +15 -0
- package/Libraries/Animated/useAnimatedValueXY.js +26 -0
- package/Libraries/AppState/AppState.js +1 -1
- package/Libraries/BatchedBridge/MessageQueue.js +3 -3
- package/Libraries/BatchedBridge/NativeModules.js +12 -10
- package/Libraries/Components/AccessibilityInfo/AccessibilityInfo.js +30 -26
- package/Libraries/Components/AccessibilityInfo/AccessibilityInfo.windows.js +34 -30
- package/Libraries/Components/ActivityIndicator/ActivityIndicator.js +2 -2
- package/Libraries/Components/Button.js +2 -2
- package/Libraries/Components/Button.windows.js +2 -2
- package/Libraries/Components/DrawerAndroid/DrawerLayoutAndroidTypes.js +2 -2
- package/Libraries/Components/Keyboard/Keyboard.js +6 -6
- package/Libraries/Components/Keyboard/KeyboardAvoidingView.js +1 -1
- package/Libraries/Components/LayoutConformance/LayoutConformance.js +1 -1
- package/Libraries/Components/LayoutConformance/LayoutConformanceNativeComponent.js +1 -1
- package/Libraries/Components/Pressable/Pressable.d.ts +5 -0
- package/Libraries/Components/Pressable/Pressable.js +3 -3
- package/Libraries/Components/Pressable/Pressable.windows.js +3 -3
- package/Libraries/Components/Pressable/useAndroidRippleForView.js +4 -4
- package/Libraries/Components/ProgressBarAndroid/ProgressBarAndroid.js +1 -1
- package/Libraries/Components/ProgressBarAndroid/ProgressBarAndroidTypes.js +3 -3
- package/Libraries/Components/RefreshControl/RefreshControl.js +5 -5
- package/Libraries/Components/RefreshControl/RefreshControl.windows.js +5 -5
- package/Libraries/Components/ScrollView/AndroidHorizontalScrollViewNativeComponent.js +8 -12
- package/Libraries/Components/ScrollView/ScrollView.d.ts +9 -0
- package/Libraries/Components/ScrollView/ScrollView.js +19 -9
- package/Libraries/Components/ScrollView/ScrollView.windows.js +19 -9
- package/Libraries/Components/ScrollView/ScrollViewNativeComponent.js +8 -18
- package/Libraries/Components/ScrollView/ScrollViewNativeComponent.windows.js +8 -18
- package/Libraries/Components/ScrollView/ScrollViewNativeComponentType.js +4 -3
- package/Libraries/Components/ScrollView/ScrollViewStickyHeader.js +1 -1
- package/Libraries/Components/StaticRenderer.js +1 -1
- package/Libraries/Components/StatusBar/StatusBar.js +8 -8
- package/Libraries/Components/Switch/Switch.js +3 -3
- package/Libraries/Components/Switch/Switch.windows.js +3 -3
- package/Libraries/Components/TextInput/AndroidTextInputNativeComponent.js +33 -48
- package/Libraries/Components/TextInput/InputAccessoryView.js +1 -1
- package/Libraries/Components/TextInput/RCTTextInputViewConfig.js +6 -11
- package/Libraries/Components/TextInput/TextInput.flow.js +21 -20
- package/Libraries/Components/TextInput/TextInput.flow.windows.js +23 -22
- package/Libraries/Components/TextInput/TextInput.js +8 -4
- package/Libraries/Components/TextInput/TextInput.windows.js +3 -4
- package/Libraries/Components/TextInput/WindowsTextInputNativeComponent.js +33 -48
- package/Libraries/Components/Touchable/PooledClass.js +1 -1
- package/Libraries/Components/Touchable/Touchable.js +2 -2
- package/Libraries/Components/Touchable/Touchable.windows.js +2 -2
- package/Libraries/Components/Touchable/TouchableBounce.js +4 -4
- package/Libraries/Components/Touchable/TouchableBounce.windows.js +4 -4
- package/Libraries/Components/Touchable/TouchableHighlight.js +8 -8
- package/Libraries/Components/Touchable/TouchableHighlight.windows.js +9 -9
- package/Libraries/Components/Touchable/TouchableNativeFeedback.js +7 -7
- package/Libraries/Components/Touchable/TouchableNativeFeedback.windows.js +7 -7
- package/Libraries/Components/Touchable/TouchableOpacity.js +4 -4
- package/Libraries/Components/Touchable/TouchableOpacity.windows.js +4 -4
- package/Libraries/Components/Touchable/TouchableWithoutFeedback.js +1 -1
- package/Libraries/Components/Touchable/TouchableWithoutFeedback.windows.js +1 -1
- package/Libraries/Components/UnimplementedViews/UnimplementedView.js +1 -1
- package/Libraries/Components/View/ReactNativeStyleAttributes.js +68 -31
- package/Libraries/Components/View/View.windows.js +1 -1
- package/Libraries/Components/View/ViewAccessibility.js +7 -7
- package/Libraries/Components/View/ViewAccessibility.windows.js +7 -7
- package/Libraries/Components/View/ViewPropTypes.js +14 -14
- package/Libraries/Components/View/ViewPropTypes.windows.js +18 -16
- package/Libraries/Core/Devtools/parseHermesStack.js +8 -8
- package/Libraries/Core/Devtools/symbolicateStackTrace.js +2 -2
- package/Libraries/Core/ExceptionsManager.js +2 -2
- package/Libraries/Core/ExtendedError.js +3 -3
- package/Libraries/Core/RawEventEmitter.js +1 -1
- package/Libraries/Core/ReactNativeVersion.js +2 -2
- package/Libraries/Core/Timers/JSTimers.js +3 -2
- package/Libraries/Core/setUpDeveloperTools.js +1 -1
- package/Libraries/Core/setUpErrorHandling.js +4 -2
- package/Libraries/Core/setUpReactDevTools.js +23 -6
- package/Libraries/Core/setUpSegmentFetcher.js +1 -1
- package/Libraries/Debugging/DebuggingOverlay.js +2 -2
- package/Libraries/EventEmitter/NativeEventEmitter.js +7 -9
- package/Libraries/EventEmitter/RCTDeviceEventEmitter.js +1 -1
- package/Libraries/Image/AssetSourceResolver.js +1 -1
- package/Libraries/Image/AssetSourceResolver.windows.js +1 -1
- package/Libraries/Image/Image.android.js +172 -306
- package/Libraries/Image/ImageProps.js +9 -11
- package/Libraries/Image/ImageSource.js +2 -2
- package/Libraries/Image/ImageSourceUtils.js +8 -4
- package/Libraries/Image/ImageTypes.flow.js +2 -2
- package/Libraries/Image/ImageViewNativeComponent.js +7 -16
- package/Libraries/Image/nativeImageSource.js +1 -1
- package/Libraries/Interaction/InteractionManager.js +5 -4
- package/Libraries/Interaction/PanResponder.js +1 -1
- package/Libraries/LayoutAnimation/LayoutAnimation.js +2 -2
- package/Libraries/Linking/Linking.js +1 -1
- package/Libraries/Lists/FlatList.js +3 -3
- package/Libraries/Lists/SectionList.js +1 -1
- package/Libraries/Lists/SectionListModern.js +2 -2
- package/Libraries/LogBox/Data/LogBoxData.js +38 -24
- package/Libraries/LogBox/Data/LogBoxLog.js +43 -112
- package/Libraries/LogBox/Data/parseLogBoxLog.js +21 -117
- package/Libraries/LogBox/LogBox.js +42 -19
- package/Libraries/LogBox/LogBoxInspectorContainer.js +2 -2
- package/Libraries/LogBox/LogBoxNotificationContainer.js +2 -2
- package/Libraries/LogBox/UI/LogBoxButton.js +14 -16
- package/Libraries/LogBox/UI/LogBoxInspector.js +2 -2
- package/Libraries/LogBox/UI/LogBoxInspectorCodeFrame.js +6 -9
- package/Libraries/LogBox/UI/LogBoxInspectorCodeFrame.windows.js +6 -9
- package/Libraries/LogBox/UI/LogBoxInspectorFooter.js +1 -1
- package/Libraries/LogBox/UI/LogBoxInspectorFooterButton.js +1 -1
- package/Libraries/LogBox/UI/LogBoxInspectorHeader.js +1 -1
- package/Libraries/LogBox/UI/LogBoxInspectorHeader.windows.js +1 -1
- package/Libraries/LogBox/UI/LogBoxInspectorHeaderButton.js +1 -1
- package/Libraries/LogBox/UI/LogBoxInspectorMessageHeader.js +10 -15
- package/Libraries/LogBox/UI/LogBoxInspectorReactFrames.js +25 -18
- package/Libraries/LogBox/UI/LogBoxInspectorReactFrames.windows.js +15 -16
- package/Libraries/LogBox/UI/LogBoxInspectorSection.js +5 -7
- package/Libraries/LogBox/UI/LogBoxInspectorSourceMapStatus.js +8 -10
- package/Libraries/LogBox/UI/LogBoxInspectorStackFrame.js +8 -6
- package/Libraries/LogBox/UI/LogBoxInspectorStackFrame.windows.js +3 -5
- package/Libraries/LogBox/UI/LogBoxInspectorStackFrames.js +17 -29
- package/Libraries/LogBox/UI/LogBoxMessage.js +28 -37
- package/Libraries/LogBox/UI/LogBoxNotification.js +1 -1
- package/Libraries/Modal/Modal.d.ts +4 -0
- package/Libraries/Modal/Modal.js +3 -3
- package/Libraries/Modal/Modal.windows.js +7 -3
- package/Libraries/NativeComponent/BaseViewConfig.android.js +28 -52
- package/Libraries/NativeComponent/BaseViewConfig.ios.js +19 -21
- package/Libraries/NativeComponent/BaseViewConfig.windows.js +26 -17
- package/Libraries/Network/RCTNetworking.android.js +1 -1
- package/Libraries/Network/RCTNetworking.ios.js +1 -1
- package/Libraries/Network/RCTNetworking.js.flow +1 -1
- package/Libraries/Network/RCTNetworking.windows.js +1 -1
- package/Libraries/Network/RCTNetworkingEventDefinitions.flow.js +1 -1
- package/Libraries/Network/XMLHttpRequest.js +1 -1
- package/Libraries/PermissionsAndroid/PermissionsAndroid.js +3 -3
- package/Libraries/Pressability/Pressability.js +5 -5
- package/Libraries/Pressability/Pressability.windows.js +5 -5
- package/Libraries/Pressability/PressabilityDebug.js +1 -1
- package/Libraries/Pressability/PressabilityPerformanceEventEmitter.js +1 -1
- package/Libraries/Pressability/usePressability.js +3 -14
- package/Libraries/PushNotificationIOS/PushNotificationIOS.js +2 -2
- package/Libraries/ReactNative/AppContainer-dev.js +18 -1
- package/Libraries/ReactNative/AppContainer.js +1 -1
- package/Libraries/ReactNative/AppRegistry.flow.js +2 -2
- package/Libraries/ReactNative/AppRegistryImpl.js +2 -2
- package/Libraries/ReactNative/FabricUIManager.js +1 -1
- package/Libraries/ReactNative/RendererImplementation.js +4 -4
- package/Libraries/ReactNative/UIManagerProperties.js +1 -1
- package/Libraries/Renderer/implementations/ReactNativeRenderer-dev.js +3 -2
- package/Libraries/Renderer/implementations/ReactNativeRenderer-prod.js +3 -2
- package/Libraries/Renderer/implementations/ReactNativeRenderer-profiling.js +3 -2
- package/Libraries/Renderer/shims/ReactFabric.js +1 -3
- package/Libraries/Renderer/shims/ReactFeatureFlags.js +1 -3
- package/Libraries/Renderer/shims/ReactNative.js +3 -2
- package/Libraries/Renderer/shims/ReactNativeTypes.js +1 -3
- package/Libraries/Renderer/shims/ReactNativeTypes.windows.js +1 -3
- package/Libraries/Renderer/shims/ReactNativeViewConfigRegistry.js +1 -3
- package/Libraries/Renderer/shims/createReactNativeComponentClass.js +1 -3
- package/Libraries/StyleSheet/PointPropType.js +1 -1
- package/Libraries/StyleSheet/Rect.js +1 -1
- package/Libraries/StyleSheet/StyleSheet.d.ts +0 -5
- package/Libraries/StyleSheet/StyleSheet.js +1 -1
- package/Libraries/StyleSheet/StyleSheet.js.flow +1 -1
- package/Libraries/StyleSheet/StyleSheetExports.js +16 -25
- package/Libraries/StyleSheet/StyleSheetExports.js.flow +2 -7
- package/Libraries/StyleSheet/StyleSheetTypes.js +33 -35
- package/Libraries/StyleSheet/private/_StyleSheetTypesOverrides.js +5 -5
- package/Libraries/StyleSheet/private/_TransformStyle.js +7 -7
- package/Libraries/StyleSheet/processBackgroundImage.js +7 -7
- package/Libraries/StyleSheet/processBackgroundPosition.js +4 -4
- package/Libraries/StyleSheet/processBackgroundRepeat.js +4 -4
- package/Libraries/StyleSheet/processBackgroundSize.js +4 -4
- package/Libraries/StyleSheet/processBoxShadow.js +44 -4
- package/Libraries/StyleSheet/processColorArray.js +2 -2
- package/Libraries/StyleSheet/processFilter.js +2 -2
- package/Libraries/Text/Text.js +295 -627
- package/Libraries/Text/Text.windows.js +342 -717
- package/Libraries/Text/TextNativeComponent.js +14 -7
- package/Libraries/Text/TextProps.js +4 -4
- package/Libraries/Text/TextProps.windows.js +4 -4
- package/Libraries/Types/CodegenTypes.js +1 -1
- package/Libraries/Types/CoreEventTypes.js +21 -21
- package/Libraries/Types/CoreEventTypes.windows.js +21 -21
- package/Libraries/Types/ReactDevToolsTypes.js +2 -2
- package/Libraries/Utilities/Appearance.js +6 -1
- package/Libraries/Utilities/Dimensions.js +1 -1
- package/Libraries/Utilities/HMRClient.js +32 -5
- package/Libraries/Utilities/IPerformanceLogger.js +4 -4
- package/Libraries/Utilities/codegenNativeCommands.js +4 -4
- package/Libraries/Utilities/codegenNativeComponent.d.ts +2 -0
- package/Libraries/Utilities/codegenNativeComponent.js +2 -2
- package/Libraries/Utilities/logError.js +1 -1
- package/Libraries/Utilities/stringifySafe.js +3 -3
- package/Libraries/Utilities/useMergeRefs.js +2 -2
- package/Libraries/vendor/core/ErrorUtils.js +4 -4
- package/Libraries/vendor/emitter/EventEmitter.js +16 -20
- package/Microsoft.ReactNative/CallInvoker.cpp +14 -4
- package/Microsoft.ReactNative/Fabric/AbiComponentDescriptor.cpp +1 -1
- package/Microsoft.ReactNative/Fabric/AbiPortalShadowNode.cpp +2 -2
- package/Microsoft.ReactNative/Fabric/AbiViewComponentDescriptor.h +1 -1
- package/Microsoft.ReactNative/Fabric/Composition/BorderPrimitive.cpp +73 -97
- package/Microsoft.ReactNative/Fabric/Composition/BorderPrimitive.h +4 -1
- package/Microsoft.ReactNative/Fabric/Composition/CompositionContextHelper.cpp +0 -1
- package/Microsoft.ReactNative/Fabric/Composition/CompositionEventHandler.cpp +4 -4
- package/Microsoft.ReactNative/Fabric/Composition/CompositionViewComponentView.cpp +135 -18
- package/Microsoft.ReactNative/Fabric/Composition/CompositionViewComponentView.h +10 -0
- package/Microsoft.ReactNative/Fabric/Composition/ImageComponentView.cpp +7 -2
- package/Microsoft.ReactNative/Fabric/Composition/ImageComponentView.h +2 -0
- package/Microsoft.ReactNative/Fabric/Composition/Modal/WindowsModalHostViewComponentView.cpp +63 -15
- package/Microsoft.ReactNative/Fabric/Composition/ParagraphComponentView.cpp +3 -1
- package/Microsoft.ReactNative/Fabric/Composition/TextInput/WindowsTextInputComponentView.cpp +1 -1
- package/Microsoft.ReactNative/Fabric/Composition/TextInput/WindowsTextInputState.cpp +1 -1
- package/Microsoft.ReactNative/Fabric/FabricUIManagerModule.cpp +11 -0
- package/Microsoft.ReactNative/Fabric/FabricUIManagerModule.h +1 -0
- package/Microsoft.ReactNative/Fabric/platform/react/renderer/graphics/HostPlatformColor.h +3 -0
- package/Microsoft.ReactNative/Fabric/platform/react/renderer/graphics/PlatformColorUtils.cpp +0 -3
- package/Microsoft.ReactNative/Fabric/platform/react/renderer/textlayoutmanager/WindowsTextLayoutManager.cpp +2 -7
- package/Microsoft.ReactNative/IReactPackageBuilder.idl +6 -0
- package/Microsoft.ReactNative/Microsoft.ReactNative.vcxproj +1 -61
- package/Microsoft.ReactNative/Microsoft.ReactNative.vcxproj.filters +1 -26
- package/Microsoft.ReactNative/Modules/AlertModule.cpp +2 -1
- package/Microsoft.ReactNative/Modules/AppStateModule.cpp +2 -17
- package/Microsoft.ReactNative/Modules/AppStateModule.h +0 -4
- package/Microsoft.ReactNative/Modules/AppThemeModuleUwp.cpp +0 -2
- package/Microsoft.ReactNative/Modules/AppearanceModule.cpp +16 -15
- package/Microsoft.ReactNative/Modules/AppearanceModule.h +5 -1
- package/Microsoft.ReactNative/Modules/DeviceInfoModule.cpp +2 -7
- package/Microsoft.ReactNative/Modules/DeviceInfoModule.h +0 -1
- package/Microsoft.ReactNative/Modules/I18nManagerModule.h +4 -4
- package/Microsoft.ReactNative/QuirkSettings.cpp +0 -133
- package/Microsoft.ReactNative/QuirkSettings.h +0 -43
- package/Microsoft.ReactNative/QuirkSettings.idl +0 -41
- package/Microsoft.ReactNative/ReactHost/CrashManager.cpp +0 -4
- package/Microsoft.ReactNative/ReactHost/MsoReactContext.cpp +0 -2
- package/Microsoft.ReactNative/ReactHost/React.h +0 -5
- package/Microsoft.ReactNative/ReactHost/ReactHost.cpp +0 -1
- package/Microsoft.ReactNative/ReactHost/ReactInstanceWin.cpp +3 -26
- package/Microsoft.ReactNative/ReactHost/ReactInstanceWin.h +0 -5
- package/Microsoft.ReactNative/ReactHost/React_Win.h +0 -2
- package/Microsoft.ReactNative/ReactNativeAppBuilder.idl +3 -0
- package/Microsoft.ReactNative/ReactPackageBuilder.cpp +7 -0
- package/Microsoft.ReactNative/ReactPackageBuilder.h +1 -0
- package/Microsoft.ReactNative/RedBox.cpp +0 -9
- package/Microsoft.ReactNative/RedBoxHandler.cpp +0 -4
- package/Microsoft.ReactNative/TurboModulesProvider.cpp +5 -10
- package/Microsoft.ReactNative/TurboModulesProvider.h +2 -0
- package/Microsoft.ReactNative/Utils/ValueUtils.cpp +1 -1
- package/Microsoft.ReactNative.Cxx/CppWinRTIncludes.h +0 -7
- package/Microsoft.ReactNative.Cxx/DesktopWindowBridge.h +0 -22
- package/Microsoft.ReactNative.Cxx/ModuleRegistration.cpp +8 -2
- package/Microsoft.ReactNative.Cxx/ModuleRegistration.h +36 -20
- package/Microsoft.ReactNative.Cxx/NamespaceRedirect.h +0 -3
- package/Microsoft.ReactNative.Cxx/NativeModules.h +8 -2
- package/Microsoft.ReactNative.Cxx/XamlUtils.h +0 -9
- package/Microsoft.ReactNative.Managed/ReactContext.cs +0 -9
- package/PropertySheets/Autolink.props +1 -1
- package/PropertySheets/Bundle.props +1 -1
- package/PropertySheets/Codegen.props +1 -1
- package/PropertySheets/Generated/PackageVersion.g.props +3 -3
- package/PropertySheets/NuGet.LockFile.props +8 -0
- package/PropertySheets/React.Cpp.props +4 -4
- package/PropertySheets/ReactNativeArchitecture.props +6 -24
- package/ReactCommon/ReactCommon.vcxproj +5 -6
- package/ReactCommon/TEMP_UntilReactCommonUpdate/jsi/jsi/test/testlib.cpp +1 -1
- package/ReactCommon/TEMP_UntilReactCommonUpdate/jsinspector-modern/NetworkIOAgent.cpp +15 -4
- package/ReactCommon/TEMP_UntilReactCommonUpdate/jsinspector-modern/NetworkIOAgent.h +13 -0
- package/ReactCommon/TEMP_UntilReactCommonUpdate/react/nativemodule/defaults/DefaultTurboModules.cpp +69 -0
- package/ReactCommon/TEMP_UntilReactCommonUpdate/react/renderer/animationbackend/AnimatedPropSerializer.cpp +717 -0
- package/ReactCommon/TEMP_UntilReactCommonUpdate/react/renderer/components/text/ParagraphShadowNode.cpp +10 -10
- package/ReactCommon/TEMP_UntilReactCommonUpdate/react/renderer/components/view/AccessibilityPrimitives.h +2 -21
- package/ReactCommon/TEMP_UntilReactCommonUpdate/react/renderer/components/view/TouchEventEmitter.cpp +151 -0
- package/ReactCommon/TEMP_UntilReactCommonUpdate/react/renderer/components/view/TouchEventEmitter.h +50 -0
- package/ReactCommon/TEMP_UntilReactCommonUpdate/react/renderer/mapbuffer/MapBuffer.cpp +178 -0
- package/ReactCommon/TEMP_UntilReactCommonUpdate/react/renderer/uimanager/UIManager.cpp +69 -39
- package/Scripts/OfficeReact.Win32.nuspec +0 -1
- package/Scripts/Tfs/Layout-Desktop-Headers.ps1 +4 -39
- package/Scripts/creaternwapp.cmd +1 -9
- package/Scripts/creaternwlib.cmd +4 -24
- package/Shared/DevSettings.h +0 -3
- package/Shared/Networking/WinRTWebSocketResource.cpp +23 -408
- package/Shared/Networking/WinRTWebSocketResource.h +3 -119
- package/Shared/Shared.vcxitems +63 -38
- package/Shared/Shared.vcxitems.filters +54 -0
- package/Shared/Utils.cpp +0 -88
- package/Shared/Utils.h +0 -14
- package/Shared/WebSocketResourceFactory.cpp +28 -0
- package/Shared/tracing/fbsystrace.h +1 -0
- package/codegen/NativeReactNativeFeatureFlagsSpec.g.h +172 -160
- package/codegen/react/components/rnwcore/ModalHostView.g.h +8 -0
- package/codegen/react/components/rnwcore/Props.cpp +17 -7
- package/codegen/react/components/rnwcore/Props.h +3 -1
- package/codegen/react/components/rnwcore/VirtualViewExperimental.g.h +4 -4
- package/codegen/rnwcoreJSI.h +93 -77
- package/index.js +9 -0
- package/index.windows.js +9 -0
- package/jest/RefreshControlMock.js +2 -2
- package/jest/assetFileTransformer.js +8 -3
- package/jest/mockComponent.js +3 -4
- package/jest/mockNativeComponent.js +1 -1
- package/jest/mocks/ActivityIndicator.js +2 -2
- package/jest/mocks/Image.js +2 -2
- package/jest/mocks/Modal.js +2 -2
- package/jest/mocks/RefreshControl.js +3 -3
- package/jest/mocks/RendererProxy.js +2 -2
- package/jest/mocks/ScrollView.js +5 -5
- package/jest/mocks/Text.js +2 -2
- package/jest/mocks/TextInput.js +2 -2
- package/jest/mocks/View.js +2 -2
- package/jest/mocks/ViewNativeComponent.js +1 -1
- package/jest/mocks/requireNativeComponent.js +1 -1
- package/jest/mocks/useColorScheme.js +1 -1
- package/jest/setup.js +68 -31
- package/package.json +27 -22
- package/src/private/animated/NativeAnimatedHelper.js +2 -2
- package/src/private/animated/createAnimatedPropsMemoHook.js +19 -19
- package/src/private/components/virtualview/VirtualView.js +14 -21
- package/src/private/components/virtualview/VirtualViewExperimentalNativeComponent.js +11 -10
- package/src/private/components/virtualview/VirtualViewNativeComponent.js +4 -4
- package/src/private/devsupport/devmenu/elementinspector/BorderBox.js +2 -2
- package/src/private/devsupport/devmenu/elementinspector/BoxInspector.js +3 -3
- package/src/private/devsupport/devmenu/elementinspector/ElementBox.js +4 -4
- package/src/private/devsupport/devmenu/elementinspector/ElementProperties.js +1 -1
- package/src/private/devsupport/devmenu/elementinspector/Inspector.js +39 -17
- package/src/private/devsupport/devmenu/elementinspector/InspectorOverlay.js +15 -3
- package/src/private/devsupport/devmenu/elementinspector/InspectorPanel.js +2 -2
- package/src/private/devsupport/devmenu/elementinspector/ReactDevToolsOverlay.js +2 -8
- package/src/private/devsupport/devmenu/elementinspector/StyleInspector.js +1 -1
- package/src/private/devsupport/devmenu/elementinspector/resolveBoxStyle.js +1 -1
- package/src/private/devsupport/devmenu/elementinspector/useExternalInspection.js +102 -0
- package/src/private/devsupport/rndevtools/FuseboxSessionObserver.js +12 -25
- package/src/private/devsupport/rndevtools/GlobalStateObserver.js +56 -0
- package/src/private/devsupport/rndevtools/TracingStateObserver.js +28 -0
- package/src/private/featureflags/ReactNativeFeatureFlags.js +71 -79
- package/src/private/featureflags/ReactNativeFeatureFlagsBase.js +2 -2
- package/src/private/featureflags/specs/NativeReactNativeFeatureFlags.js +14 -12
- package/src/private/setup/setUpDefaultReactNativeEnvironment.js +6 -0
- package/src/private/specs_DEPRECATED/components/ActivityIndicatorViewNativeComponent.js +1 -1
- package/src/private/specs_DEPRECATED/components/AndroidDrawerLayoutNativeComponent.js +3 -3
- package/src/private/specs_DEPRECATED/components/AndroidHorizontalScrollContentViewNativeComponent.js +1 -1
- package/src/private/specs_DEPRECATED/components/AndroidSwipeRefreshLayoutNativeComponent.js +2 -2
- package/src/private/specs_DEPRECATED/components/AndroidSwitchNativeComponent.js +2 -2
- package/src/private/specs_DEPRECATED/components/DebuggingOverlayNativeComponent.js +3 -3
- package/src/private/specs_DEPRECATED/components/ProgressBarAndroidNativeComponent.js +1 -1
- package/src/private/specs_DEPRECATED/components/PullToRefreshViewNativeComponent.js +1 -1
- package/src/private/specs_DEPRECATED/components/RCTInputAccessoryViewNativeComponent.js +1 -1
- package/src/private/specs_DEPRECATED/components/RCTModalHostViewNativeComponent.js +7 -3
- package/src/private/specs_DEPRECATED/components/RCTSafeAreaViewNativeComponent.js +1 -1
- package/src/private/specs_DEPRECATED/components/SwitchNativeComponent.js +2 -2
- package/src/private/specs_DEPRECATED/components/UnimplementedNativeViewNativeComponent.js +1 -1
- package/src/private/specs_DEPRECATED/modules/NativeImageLoaderIOS.js +1 -1
- package/src/private/styles/composeStyles.js +1 -1
- package/src/private/utilities/toError.js +27 -0
- package/src/private/utilities/toExtendedError.js +30 -0
- package/src/private/webapis/dom/events/Event.js +1 -1
- package/src/private/webapis/dom/events/EventHandlerAttributes.js +2 -2
- package/src/private/webapis/dom/events/EventTarget.js +3 -3
- package/src/private/webapis/dom/events/internals/EventInternals.js +2 -2
- package/src/private/webapis/dom/nodes/ReadOnlyElement.js +1 -1
- package/src/private/webapis/dom/nodes/ReadOnlyNode.js +2 -2
- package/src/private/webapis/dom/nodes/specs/NativeDOM.js +14 -14
- package/src/private/webapis/dom/oldstylecollections/HTMLCollection.js +2 -2
- package/src/private/webapis/dom/oldstylecollections/NodeList.js +2 -2
- package/src/private/webapis/geometry/DOMRectList.js +2 -2
- package/src/private/webapis/intersectionobserver/IntersectionObserver.js +8 -8
- package/src/private/webapis/intersectionobserver/specs/NativeIntersectionObserver.js +6 -6
- package/src/private/webapis/mutationobserver/MutationObserver.js +2 -2
- package/src/private/webapis/mutationobserver/MutationRecord.js +2 -2
- package/src/private/webapis/mutationobserver/internals/MutationObserverManager.js +1 -1
- package/src/private/webapis/mutationobserver/specs/NativeMutationObserver.js +3 -3
- package/src/private/webapis/performance/LongTasks.js +3 -3
- package/src/private/webapis/performance/Performance.js +4 -4
- package/src/private/webapis/performance/PerformanceEntry.js +1 -1
- package/src/private/webapis/performance/PerformanceObserver.js +2 -2
- package/src/private/webapis/performance/specs/NativePerformance.js +8 -8
- package/src/private/webapis/structuredClone/structuredClone.js +2 -2
- package/src/types/globals.d.ts +4 -4
- package/template/cpp-lib/proj/MyLib.sln +0 -33
- package/template/cpp-lib/proj/MyLib.vcxproj +1 -1
- package/template/cs-lib/proj/MyLib.sln +0 -33
- package/template/metro.config.js +12 -2
- package/templates/cpp-app/metro.config.js +12 -2
- package/templates/cpp-app/windows/MyApp/MyApp.cpp +9 -6
- package/templates/cpp-app/windows/MyApp/MyApp.vcxproj +1 -1
- package/templates/cpp-app/windows/MyApp.sln +0 -33
- package/templates/cpp-lib/example/metro.config.js +12 -2
- package/templates/cpp-lib/windows/MyLib/MyLib.vcxproj +1 -1
- package/templates/cpp-lib/windows/MyLib.sln +0 -33
- package/types/index.d.ts +2 -0
- package/Folly/.clang-format +0 -2
- package/Folly/Folly.natvis +0 -25
- package/Folly/Folly.vcxproj +0 -378
- package/Folly/Folly.vcxproj.filters +0 -558
- package/Folly/TEMP_UntilFollyUpdate/ConstexprMath.h +0 -978
- package/Folly/TEMP_UntilFollyUpdate/Conv.cpp +0 -1205
- package/Folly/TEMP_UntilFollyUpdate/chrono/Hardware.h +0 -155
- package/Folly/TEMP_UntilFollyUpdate/concurrency/CacheLocality.cpp +0 -633
- package/Folly/TEMP_UntilFollyUpdate/json/dynamic-inl.h +0 -1438
- package/Folly/TEMP_UntilFollyUpdate/json/json.cpp +0 -1118
- package/Folly/TEMP_UntilFollyUpdate/lang/SafeAssert.h +0 -188
- package/Folly/TEMP_UntilFollyUpdate/lang/ToAscii.cpp +0 -348
- package/Folly/TEMP_UntilFollyUpdate/lang/ToAscii.h +0 -182
- package/Folly/TEMP_UntilFollyUpdate/portability/Unistd.cpp +0 -33
- package/Folly/cgmanifest.json +0 -25
- package/Libraries/Components/View/ReactNativeViewAttributes.js +0 -60
- package/Libraries/Components/View/ReactNativeViewAttributes.windows.js +0 -64
- package/Libraries/Image/TextInlineImageNativeComponent.js +0 -49
- package/Microsoft.ReactNative/Fabric/Composition/CompositionContextHelper_emptyimpl.cpp +0 -75
- package/Microsoft.ReactNative/Fabric/Composition/CompositionUIService_emptyimpl.cpp +0 -27
- package/Microsoft.ReactNative/Fabric/Composition/Theme_emptyimpl.cpp +0 -81
- package/Microsoft.ReactNative/Modules/CreateModules.cpp +0 -24
- package/Microsoft.ReactNative/ReactSupport.cpp +0 -221
- package/Microsoft.ReactNative/ReactSupport.h +0 -13
- package/Microsoft.ReactNative/Utils/UwpPreparedScriptStore.cpp +0 -107
- package/Microsoft.ReactNative/Utils/UwpPreparedScriptStore.h +0 -62
- package/Microsoft.ReactNative/Utils/UwpScriptStore.cpp +0 -56
- package/Microsoft.ReactNative/Utils/UwpScriptStore.h +0 -23
- package/Microsoft.ReactNative/XamlUIService.cpp +0 -68
- package/Microsoft.ReactNative/XamlUIService.h +0 -37
- package/Microsoft.ReactNative/XamlUIService.idl +0 -53
- package/ReactCommon/TEMP_UntilReactCommonUpdate/cxxreact/CxxNativeModule.cpp +0 -259
- package/ReactCommon/TEMP_UntilReactCommonUpdate/cxxreact/Instance.cpp +0 -381
- package/ReactCommon/TEMP_UntilReactCommonUpdate/cxxreact/JSIndexedRAMBundle.cpp +0 -145
- package/ReactCommon/TEMP_UntilReactCommonUpdate/cxxreact/MethodCall.cpp +0 -100
- package/ReactCommon/TEMP_UntilReactCommonUpdate/cxxreact/ModuleRegistry.cpp +0 -256
- package/ReactCommon/TEMP_UntilReactCommonUpdate/cxxreact/NativeToJsBridge.cpp +0 -363
- package/ReactCommon/TEMP_UntilReactCommonUpdate/cxxreact/RAMBundleRegistry.cpp +0 -93
- package/ReactCommon/TEMP_UntilReactCommonUpdate/cxxreact/ReactMarker.cpp +0 -148
- package/ReactCommon/TEMP_UntilReactCommonUpdate/cxxreact/TraceSection.h +0 -190
- package/ReactCommon/TEMP_UntilReactCommonUpdate/jsiexecutor/jsireact/JSINativeModules.cpp +0 -123
- package/ReactCommon/TEMP_UntilReactCommonUpdate/react/nativemodule/core/ReactCommon/TurboModuleWithJSIBindings.cpp +0 -27
- package/ReactCommon/TEMP_UntilReactCommonUpdate/react/nativemodule/webperformance/NativePerformance.cpp +0 -414
- package/ReactCommon/TEMP_UntilReactCommonUpdate/react/renderer/components/text/platform/android/react/renderer/components/text/ParagraphState.h +0 -91
- package/ReactCommon/TEMP_UntilReactCommonUpdate/react/renderer/core/EventDispatcher.cpp +0 -80
- package/ReactCommon/TEMP_UntilReactCommonUpdate/react/renderer/core/EventQueueProcessor.cpp +0 -138
- package/fmt/.clang-format +0 -2
- package/fmt/cgmanifest.json +0 -15
- package/fmt/fmt.vcxproj +0 -153
- package/fmt/fmt.vcxproj.filters +0 -59
- package/fmt/pch.cpp +0 -4
- package/fmt/pch.h +0 -2
|
@@ -1,188 +0,0 @@
|
|
|
1
|
-
/*
|
|
2
|
-
* Copyright (c) Meta Platforms, Inc. and affiliates.
|
|
3
|
-
*
|
|
4
|
-
* Licensed under the Apache License, Version 2.0 (the "License");
|
|
5
|
-
* you may not use this file except in compliance with the License.
|
|
6
|
-
* You may obtain a copy of the License at
|
|
7
|
-
*
|
|
8
|
-
* http://www.apache.org/licenses/LICENSE-2.0
|
|
9
|
-
*
|
|
10
|
-
* Unless required by applicable law or agreed to in writing, software
|
|
11
|
-
* distributed under the License is distributed on an "AS IS" BASIS,
|
|
12
|
-
* WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
|
|
13
|
-
* See the License for the specific language governing permissions and
|
|
14
|
-
* limitations under the License.
|
|
15
|
-
*/
|
|
16
|
-
|
|
17
|
-
#pragma once
|
|
18
|
-
|
|
19
|
-
#include <cstdint>
|
|
20
|
-
#include <utility>
|
|
21
|
-
|
|
22
|
-
#include <folly/CppAttributes.h>
|
|
23
|
-
#include <folly/Portability.h>
|
|
24
|
-
#include <folly/Preprocessor.h>
|
|
25
|
-
#include <folly/lang/CArray.h>
|
|
26
|
-
|
|
27
|
-
#define FOLLY_DETAIL_SAFE_CHECK_IMPL(d, p, u, expr, ...) \
|
|
28
|
-
do { \
|
|
29
|
-
if ((!d || ::folly::kIsDebug || ::folly::kIsSanitize) && \
|
|
30
|
-
!static_cast<bool>(expr)) { \
|
|
31
|
-
static constexpr auto __folly_detail_safe_assert_fun = __func__; \
|
|
32
|
-
static constexpr ::folly::detail::safe_assert_arg \
|
|
33
|
-
__folly_detail_safe_assert_arg{ \
|
|
34
|
-
u ? nullptr : #expr, \
|
|
35
|
-
__FILE__, \
|
|
36
|
-
FOLLY_PP_CONSTINIT_LINE_UNSIGNED, \
|
|
37
|
-
__folly_detail_safe_assert_fun, \
|
|
38
|
-
::folly::detail::safe_assert_msg_types< \
|
|
39
|
-
decltype(::folly::detail::safe_assert_msg_types_seq_of( \
|
|
40
|
-
__VA_ARGS__))>::value.data}; \
|
|
41
|
-
constexpr ::folly::detail::safe_assert_terminate_w<p> \
|
|
42
|
-
__folly_detail_safe_assert_terminate_w{ \
|
|
43
|
-
__folly_detail_safe_assert_arg}; \
|
|
44
|
-
__folly_detail_safe_assert_terminate_w(__VA_ARGS__); \
|
|
45
|
-
} \
|
|
46
|
-
} while (false)
|
|
47
|
-
|
|
48
|
-
// FOLLY_SAFE_CHECK
|
|
49
|
-
//
|
|
50
|
-
// If expr evaluates to false after explicit conversion to bool, prints context
|
|
51
|
-
// information to stderr and aborts. Context information includes the remaining
|
|
52
|
-
// variadic arguments.
|
|
53
|
-
//
|
|
54
|
-
// When the remaining variadic arguments are printed to stderr, there are two
|
|
55
|
-
// supported types after implicit conversions: char const* and uint64_t. This
|
|
56
|
-
// facility is intentionally not extensible to custom types.
|
|
57
|
-
//
|
|
58
|
-
// multi-thread-safe
|
|
59
|
-
// async-signal-safe
|
|
60
|
-
#define FOLLY_SAFE_CHECK(expr, ...) \
|
|
61
|
-
FOLLY_DETAIL_SAFE_CHECK_IMPL(0, 0, 0, expr, __VA_ARGS__)
|
|
62
|
-
|
|
63
|
-
// FOLLY_SAFE_DCHECK
|
|
64
|
-
//
|
|
65
|
-
// Equivalent to FOLLY_SAFE_CHECK when in debug or instrumented builds, where
|
|
66
|
-
// debug builds are signalled by NDEBUG being undefined and instrumented builds
|
|
67
|
-
// include sanitizer builds.
|
|
68
|
-
//
|
|
69
|
-
// multi-thread-safe
|
|
70
|
-
// async-signal-safe
|
|
71
|
-
#define FOLLY_SAFE_DCHECK(expr, ...) \
|
|
72
|
-
FOLLY_DETAIL_SAFE_CHECK_IMPL(1, 0, 0, expr, __VA_ARGS__)
|
|
73
|
-
|
|
74
|
-
// FOLLY_SAFE_PCHECK
|
|
75
|
-
//
|
|
76
|
-
// Equivalent to FOLLY_SAFE_CHECK but includes errno in the contextual
|
|
77
|
-
// information printed to stderr.
|
|
78
|
-
//
|
|
79
|
-
// multi-thread-safe
|
|
80
|
-
// async-signal-safe
|
|
81
|
-
#define FOLLY_SAFE_PCHECK(expr, ...) \
|
|
82
|
-
FOLLY_DETAIL_SAFE_CHECK_IMPL(0, 1, 0, expr, __VA_ARGS__)
|
|
83
|
-
|
|
84
|
-
// FOLLY_SAFE_DPCHECK
|
|
85
|
-
//
|
|
86
|
-
// Equivalent to FOLLY_SAFE_DCHECK but includes errno in the contextual
|
|
87
|
-
// information printed to stderr.
|
|
88
|
-
//
|
|
89
|
-
// multi-thread-safe
|
|
90
|
-
// async-signal-safe
|
|
91
|
-
#define FOLLY_SAFE_DPCHECK(expr, ...) \
|
|
92
|
-
FOLLY_DETAIL_SAFE_CHECK_IMPL(1, 1, 0, expr, __VA_ARGS__)
|
|
93
|
-
|
|
94
|
-
// FOLLY_SAFE_FATAL
|
|
95
|
-
//
|
|
96
|
-
// Equivalent to FOLLY_SAFE_CHECK(false, ...) but excludes any failing
|
|
97
|
-
// expression from the contextual information printed to stderr.
|
|
98
|
-
//
|
|
99
|
-
// multi-thread-safe
|
|
100
|
-
// async-signal-safe
|
|
101
|
-
#define FOLLY_SAFE_FATAL(...) \
|
|
102
|
-
FOLLY_DETAIL_SAFE_CHECK_IMPL(0, 0, 1, false, __VA_ARGS__)
|
|
103
|
-
|
|
104
|
-
// FOLLY_SAFE_DFATAL
|
|
105
|
-
//
|
|
106
|
-
// Equivalent to FOLLY_SAFE_DCHECK(false, ...) but excludes any failing
|
|
107
|
-
// expression from the contextual information printed to stderr.
|
|
108
|
-
//
|
|
109
|
-
// multi-thread-safe
|
|
110
|
-
// async-signal-safe
|
|
111
|
-
#define FOLLY_SAFE_DFATAL(...) \
|
|
112
|
-
FOLLY_DETAIL_SAFE_CHECK_IMPL(1, 0, 1, false, __VA_ARGS__)
|
|
113
|
-
|
|
114
|
-
namespace folly {
|
|
115
|
-
namespace detail {
|
|
116
|
-
|
|
117
|
-
enum class safe_assert_msg_type : char { term, cstr, ui64 };
|
|
118
|
-
|
|
119
|
-
template <safe_assert_msg_type... A>
|
|
120
|
-
struct safe_assert_msg_type_s {};
|
|
121
|
-
|
|
122
|
-
struct safe_assert_msg_types_one_fn {
|
|
123
|
-
template <safe_assert_msg_type A>
|
|
124
|
-
using c = std::integral_constant<safe_assert_msg_type, A>;
|
|
125
|
-
// only used in unevaluated contexts:
|
|
126
|
-
c<safe_assert_msg_type::cstr> operator()(char const*) const;
|
|
127
|
-
c<safe_assert_msg_type::ui64> operator()(uint64_t) const;
|
|
128
|
-
};
|
|
129
|
-
inline constexpr safe_assert_msg_types_one_fn
|
|
130
|
-
safe_assert_msg_types_one{}; // a function object to prevent extensions
|
|
131
|
-
|
|
132
|
-
template <typename... A>
|
|
133
|
-
safe_assert_msg_type_s<decltype(safe_assert_msg_types_one((A)A{}))::value...>
|
|
134
|
-
safe_assert_msg_types_seq_of(A...); // only used in unevaluated contexts
|
|
135
|
-
|
|
136
|
-
template <typename>
|
|
137
|
-
struct safe_assert_msg_types;
|
|
138
|
-
template <safe_assert_msg_type... A>
|
|
139
|
-
struct safe_assert_msg_types<safe_assert_msg_type_s<A...>> {
|
|
140
|
-
using value_type = c_array<safe_assert_msg_type, sizeof...(A) + 1>;
|
|
141
|
-
static constexpr value_type value = {{A..., safe_assert_msg_type::term}};
|
|
142
|
-
};
|
|
143
|
-
|
|
144
|
-
struct safe_assert_arg {
|
|
145
|
-
char const* expr;
|
|
146
|
-
char const* file;
|
|
147
|
-
unsigned int line;
|
|
148
|
-
char const* function;
|
|
149
|
-
safe_assert_msg_type const* msg_types;
|
|
150
|
-
};
|
|
151
|
-
|
|
152
|
-
struct safe_assert_msg_cast_one_fn {
|
|
153
|
-
FOLLY_ERASE auto operator()(char const* const a) const { return a; }
|
|
154
|
-
FOLLY_ERASE auto operator()(uint64_t const a) const { return a; }
|
|
155
|
-
};
|
|
156
|
-
inline constexpr safe_assert_msg_cast_one_fn
|
|
157
|
-
safe_assert_msg_cast_one{}; // a function object to prevent extensions
|
|
158
|
-
|
|
159
|
-
template <bool P>
|
|
160
|
-
[[noreturn, FOLLY_ATTR_GNU_COLD]] FOLLY_NOINLINE void safe_assert_terminate(
|
|
161
|
-
safe_assert_arg const* arg, ...) noexcept; // the true backing function
|
|
162
|
-
|
|
163
|
-
// [Win - Fixes Error C2908 explicit specialization; 'void folly::detail::safe_assert_terminate<false>(const folly::detail::safe_assert_arg *,...) noexcept' has already been instantiated
|
|
164
|
-
template <>
|
|
165
|
-
[[noreturn, FOLLY_ATTR_GNU_COLD]] FOLLY_NOINLINE void safe_assert_terminate<0>(
|
|
166
|
-
safe_assert_arg const* arg, ...) noexcept;
|
|
167
|
-
|
|
168
|
-
template <>
|
|
169
|
-
[[noreturn, FOLLY_ATTR_GNU_COLD]] FOLLY_NOINLINE void safe_assert_terminate<1>(
|
|
170
|
-
safe_assert_arg const* arg, ...) noexcept;
|
|
171
|
-
// Win]
|
|
172
|
-
|
|
173
|
-
template <bool P>
|
|
174
|
-
struct safe_assert_terminate_w {
|
|
175
|
-
safe_assert_arg const& arg;
|
|
176
|
-
|
|
177
|
-
FOLLY_ERASE constexpr safe_assert_terminate_w(
|
|
178
|
-
safe_assert_arg const& arg_) noexcept
|
|
179
|
-
: arg{arg_} {}
|
|
180
|
-
|
|
181
|
-
template <typename... A>
|
|
182
|
-
[[noreturn]] FOLLY_ERASE void operator()(A... a) const noexcept {
|
|
183
|
-
safe_assert_terminate<P>(&arg, safe_assert_msg_cast_one(a)...);
|
|
184
|
-
}
|
|
185
|
-
};
|
|
186
|
-
|
|
187
|
-
} // namespace detail
|
|
188
|
-
} // namespace folly
|
|
@@ -1,348 +0,0 @@
|
|
|
1
|
-
/*
|
|
2
|
-
* Copyright (c) Meta Platforms, Inc. and affiliates.
|
|
3
|
-
*
|
|
4
|
-
* Licensed under the Apache License, Version 2.0 (the "License");
|
|
5
|
-
* you may not use this file except in compliance with the License.
|
|
6
|
-
* You may obtain a copy of the License at
|
|
7
|
-
*
|
|
8
|
-
* http://www.apache.org/licenses/LICENSE-2.0
|
|
9
|
-
*
|
|
10
|
-
* Unless required by applicable law or agreed to in writing, software
|
|
11
|
-
* distributed under the License is distributed on an "AS IS" BASIS,
|
|
12
|
-
* WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
|
|
13
|
-
* See the License for the specific language governing permissions and
|
|
14
|
-
* limitations under the License.
|
|
15
|
-
*/
|
|
16
|
-
|
|
17
|
-
#include <folly/lang/ToAscii.h>
|
|
18
|
-
|
|
19
|
-
namespace folly {
|
|
20
|
-
|
|
21
|
-
namespace detail {
|
|
22
|
-
|
|
23
|
-
template <uint64_t Base, typename Alphabet>
|
|
24
|
-
struct to_ascii_array {
|
|
25
|
-
using data_type_ = c_array<uint8_t, Base>;
|
|
26
|
-
static constexpr data_type_ data_() {
|
|
27
|
-
data_type_ result{};
|
|
28
|
-
Alphabet alpha;
|
|
29
|
-
// [Windows #12703 - CodeQL patch]
|
|
30
|
-
for (uint64_t i = 0; i < Base; ++i) {
|
|
31
|
-
result.data[i] = alpha(static_cast<uint8_t>(i));
|
|
32
|
-
}
|
|
33
|
-
return result;
|
|
34
|
-
}
|
|
35
|
-
// @lint-ignore CLANGTIDY
|
|
36
|
-
static data_type_ const data;
|
|
37
|
-
constexpr char operator()(uint8_t index) const { // also an alphabet
|
|
38
|
-
return data.data[index];
|
|
39
|
-
}
|
|
40
|
-
};
|
|
41
|
-
template <uint64_t Base, typename Alphabet>
|
|
42
|
-
alignas(kIsMobile ? sizeof(size_t) : hardware_constructive_interference_size)
|
|
43
|
-
typename to_ascii_array<Base, Alphabet>::data_type_ const
|
|
44
|
-
to_ascii_array<Base, Alphabet>::data =
|
|
45
|
-
to_ascii_array<Base, Alphabet>::data_();
|
|
46
|
-
|
|
47
|
-
extern template to_ascii_array<8, to_ascii_alphabet_lower>::data_type_ const
|
|
48
|
-
to_ascii_array<8, to_ascii_alphabet_lower>::data;
|
|
49
|
-
extern template to_ascii_array<10, to_ascii_alphabet_lower>::data_type_ const
|
|
50
|
-
to_ascii_array<10, to_ascii_alphabet_lower>::data;
|
|
51
|
-
extern template to_ascii_array<16, to_ascii_alphabet_lower>::data_type_ const
|
|
52
|
-
to_ascii_array<16, to_ascii_alphabet_lower>::data;
|
|
53
|
-
extern template to_ascii_array<8, to_ascii_alphabet_upper>::data_type_ const
|
|
54
|
-
to_ascii_array<8, to_ascii_alphabet_upper>::data;
|
|
55
|
-
extern template to_ascii_array<10, to_ascii_alphabet_upper>::data_type_ const
|
|
56
|
-
to_ascii_array<10, to_ascii_alphabet_upper>::data;
|
|
57
|
-
extern template to_ascii_array<16, to_ascii_alphabet_upper>::data_type_ const
|
|
58
|
-
to_ascii_array<16, to_ascii_alphabet_upper>::data;
|
|
59
|
-
|
|
60
|
-
template <uint64_t Base, typename Alphabet>
|
|
61
|
-
struct to_ascii_table {
|
|
62
|
-
using data_type_ = c_array<uint16_t, Base * Base>;
|
|
63
|
-
static constexpr data_type_ data_() {
|
|
64
|
-
data_type_ result{};
|
|
65
|
-
Alphabet alpha;
|
|
66
|
-
// [Windows #12703 - CodeQL patch]
|
|
67
|
-
for (uint64_t i = 0; i < Base * Base; ++i) {
|
|
68
|
-
result.data[i] = //
|
|
69
|
-
(alpha(uint8_t(i / Base)) << (kIsLittleEndian ? 0 : 8)) |
|
|
70
|
-
(alpha(uint8_t(i % Base)) << (kIsLittleEndian ? 8 : 0));
|
|
71
|
-
}
|
|
72
|
-
return result;
|
|
73
|
-
}
|
|
74
|
-
// @lint-ignore CLANGTIDY
|
|
75
|
-
static data_type_ const data;
|
|
76
|
-
};
|
|
77
|
-
template <uint64_t Base, typename Alphabet>
|
|
78
|
-
alignas(hardware_constructive_interference_size)
|
|
79
|
-
typename to_ascii_table<Base, Alphabet>::data_type_ const
|
|
80
|
-
to_ascii_table<Base, Alphabet>::data =
|
|
81
|
-
to_ascii_table<Base, Alphabet>::data_();
|
|
82
|
-
|
|
83
|
-
extern template to_ascii_table<8, to_ascii_alphabet_lower>::data_type_ const
|
|
84
|
-
to_ascii_table<8, to_ascii_alphabet_lower>::data;
|
|
85
|
-
extern template to_ascii_table<10, to_ascii_alphabet_lower>::data_type_ const
|
|
86
|
-
to_ascii_table<10, to_ascii_alphabet_lower>::data;
|
|
87
|
-
extern template to_ascii_table<16, to_ascii_alphabet_lower>::data_type_ const
|
|
88
|
-
to_ascii_table<16, to_ascii_alphabet_lower>::data;
|
|
89
|
-
extern template to_ascii_table<8, to_ascii_alphabet_upper>::data_type_ const
|
|
90
|
-
to_ascii_table<8, to_ascii_alphabet_upper>::data;
|
|
91
|
-
extern template to_ascii_table<10, to_ascii_alphabet_upper>::data_type_ const
|
|
92
|
-
to_ascii_table<10, to_ascii_alphabet_upper>::data;
|
|
93
|
-
extern template to_ascii_table<16, to_ascii_alphabet_upper>::data_type_ const
|
|
94
|
-
to_ascii_table<16, to_ascii_alphabet_upper>::data;
|
|
95
|
-
|
|
96
|
-
template <uint64_t Base, typename Int>
|
|
97
|
-
struct to_ascii_powers {
|
|
98
|
-
static constexpr size_t size_(Int v) {
|
|
99
|
-
return 1 + (v < Base ? 0 : size_(v / Base));
|
|
100
|
-
}
|
|
101
|
-
static constexpr size_t const size = size_(~Int(0));
|
|
102
|
-
using data_type_ = c_array<Int, size>;
|
|
103
|
-
static constexpr data_type_ data_() {
|
|
104
|
-
data_type_ result{};
|
|
105
|
-
for (size_t i = 0; i < size; ++i) {
|
|
106
|
-
result.data[i] = constexpr_pow(Base, i);
|
|
107
|
-
}
|
|
108
|
-
return result;
|
|
109
|
-
}
|
|
110
|
-
// @lint-ignore CLANGTIDY
|
|
111
|
-
static data_type_ const data;
|
|
112
|
-
};
|
|
113
|
-
#if FOLLY_CPLUSPLUS < 201703L
|
|
114
|
-
template <uint64_t Base, typename Int>
|
|
115
|
-
constexpr size_t const to_ascii_powers<Base, Int>::size;
|
|
116
|
-
#endif
|
|
117
|
-
template <uint64_t Base, typename Int>
|
|
118
|
-
alignas(hardware_constructive_interference_size)
|
|
119
|
-
typename to_ascii_powers<Base, Int>::data_type_ const
|
|
120
|
-
to_ascii_powers<Base, Int>::data = to_ascii_powers<Base, Int>::data_();
|
|
121
|
-
|
|
122
|
-
extern template to_ascii_powers<8, uint64_t>::data_type_ const
|
|
123
|
-
to_ascii_powers<8, uint64_t>::data;
|
|
124
|
-
extern template to_ascii_powers<10, uint64_t>::data_type_ const
|
|
125
|
-
to_ascii_powers<10, uint64_t>::data;
|
|
126
|
-
extern template to_ascii_powers<16, uint64_t>::data_type_ const
|
|
127
|
-
to_ascii_powers<16, uint64_t>::data;
|
|
128
|
-
|
|
129
|
-
template <uint64_t Base>
|
|
130
|
-
FOLLY_ALWAYS_INLINE size_t to_ascii_size_imuls(uint64_t v) {
|
|
131
|
-
using powers = to_ascii_powers<Base, uint64_t>;
|
|
132
|
-
uint64_t p = 1;
|
|
133
|
-
for (size_t i = 0u; i < powers::size; ++i, p *= Base) {
|
|
134
|
-
if (FOLLY_UNLIKELY(v < p)) {
|
|
135
|
-
return i + size_t(i == 0);
|
|
136
|
-
}
|
|
137
|
-
}
|
|
138
|
-
return powers::size;
|
|
139
|
-
}
|
|
140
|
-
|
|
141
|
-
template <uint64_t Base>
|
|
142
|
-
FOLLY_ALWAYS_INLINE size_t to_ascii_size_idivs(uint64_t v) {
|
|
143
|
-
size_t i = 1;
|
|
144
|
-
while (v >= Base) {
|
|
145
|
-
i += 1;
|
|
146
|
-
v /= Base;
|
|
147
|
-
}
|
|
148
|
-
return i;
|
|
149
|
-
}
|
|
150
|
-
|
|
151
|
-
template <uint64_t Base>
|
|
152
|
-
FOLLY_ALWAYS_INLINE size_t to_ascii_size_array(uint64_t v) {
|
|
153
|
-
using powers = to_ascii_powers<Base, uint64_t>;
|
|
154
|
-
for (size_t i = 0u; i < powers::size; ++i) {
|
|
155
|
-
if (FOLLY_UNLIKELY(v < powers::data.data[i])) {
|
|
156
|
-
return i + size_t(i == 0);
|
|
157
|
-
}
|
|
158
|
-
}
|
|
159
|
-
return powers::size;
|
|
160
|
-
}
|
|
161
|
-
|
|
162
|
-
// For some architectures, we can get a little help from clzll, the "count
|
|
163
|
-
// leading zeros" builtin, which is backed by a single performant instruction.
|
|
164
|
-
//
|
|
165
|
-
// Note that the compiler implements __builtin_clzll on all architectures, but
|
|
166
|
-
// only emits a single clzll instruction when the architecture has one.
|
|
167
|
-
//
|
|
168
|
-
// This implementation may be faster than the basic ones in the general case
|
|
169
|
-
// because the time taken to compute this one is constant for non-zero v,
|
|
170
|
-
// whereas the basic ones take time proportional to log<2>(v). Whether this one
|
|
171
|
-
// is actually faster depends on the emitted code for this implementation and
|
|
172
|
-
// on whether the loops in the basic implementations are unrolled.
|
|
173
|
-
template <uint64_t Base>
|
|
174
|
-
FOLLY_ALWAYS_INLINE size_t to_ascii_size_clzll(uint64_t v) {
|
|
175
|
-
using powers = to_ascii_powers<Base, uint64_t>;
|
|
176
|
-
|
|
177
|
-
// clzll is undefined for 0; must special case this
|
|
178
|
-
if (FOLLY_UNLIKELY(!v)) {
|
|
179
|
-
return 1;
|
|
180
|
-
}
|
|
181
|
-
|
|
182
|
-
// log2 is approx log<2>(v)
|
|
183
|
-
size_t const vlog2 = 64 - static_cast<size_t>(__builtin_clzll(v));
|
|
184
|
-
|
|
185
|
-
// work around msvc warning C4127 (conditional expression is constant)
|
|
186
|
-
bool false_ = false;
|
|
187
|
-
|
|
188
|
-
// handle directly when Base is power-of-two
|
|
189
|
-
if (false_ || !(Base & (Base - 1))) {
|
|
190
|
-
constexpr auto const blog2 = constexpr_log2(Base);
|
|
191
|
-
return vlog2 / blog2 + size_t(vlog2 % blog2 != 0);
|
|
192
|
-
}
|
|
193
|
-
|
|
194
|
-
// blog2r is approx 1 / log<2>(Base), used in log change-of-base just below
|
|
195
|
-
constexpr auto const blog2m = constexpr_log2(constexpr_pow(Base, 8));
|
|
196
|
-
constexpr auto const blog2r = 8. / double(blog2m);
|
|
197
|
-
|
|
198
|
-
// vlogb is approx log<Base>(v) = log<2>(v) / log<2>(Base)
|
|
199
|
-
auto const vlogb = vlog2 * size_t(blog2r * 256) / 256;
|
|
200
|
-
|
|
201
|
-
// return vlogb, adjusted if necessary
|
|
202
|
-
return vlogb + size_t(vlogb < powers::size && v >= powers::data.data[vlogb]);
|
|
203
|
-
}
|
|
204
|
-
|
|
205
|
-
template <uint64_t Base>
|
|
206
|
-
FOLLY_ALWAYS_INLINE size_t to_ascii_size_route(uint64_t v) {
|
|
207
|
-
return kIsArchAmd64 && !(Base & (Base - 1)) //
|
|
208
|
-
? to_ascii_size_clzll<Base>(v)
|
|
209
|
-
: to_ascii_size_array<Base>(v);
|
|
210
|
-
}
|
|
211
|
-
|
|
212
|
-
// The straightforward implementation, assuming the size known in advance.
|
|
213
|
-
//
|
|
214
|
-
// The straightforward implementation without the size known in advance would
|
|
215
|
-
// entail emitting the bytes backward and then reversing them at the end, once
|
|
216
|
-
// the size is known.
|
|
217
|
-
template <uint64_t Base, typename Alphabet>
|
|
218
|
-
FOLLY_ALWAYS_INLINE void to_ascii_with_basic(
|
|
219
|
-
char* out, size_t size, uint64_t v) {
|
|
220
|
-
Alphabet const xlate;
|
|
221
|
-
for (auto pos = size - 1; pos; --pos) {
|
|
222
|
-
// keep /, % together so a peephole optimization computes them together
|
|
223
|
-
auto const q = v / Base;
|
|
224
|
-
auto const r = v % Base;
|
|
225
|
-
out[pos] = xlate(uint8_t(r));
|
|
226
|
-
v = q;
|
|
227
|
-
}
|
|
228
|
-
out[0] = xlate(uint8_t(v));
|
|
229
|
-
}
|
|
230
|
-
|
|
231
|
-
// A variant of the straightforward implementation, but using a lookup table.
|
|
232
|
-
template <uint64_t Base, typename Alphabet>
|
|
233
|
-
FOLLY_ALWAYS_INLINE void to_ascii_with_array(
|
|
234
|
-
char* out, size_t size, uint64_t v) {
|
|
235
|
-
using array = to_ascii_array<Base, Alphabet>; // also an alphabet
|
|
236
|
-
to_ascii_with_basic<Base, array>(out, size, v);
|
|
237
|
-
}
|
|
238
|
-
|
|
239
|
-
// A trickier implementation which performs half as many divides as the other,
|
|
240
|
-
// more straightforward, implementation. On modern hardware, the divides are
|
|
241
|
-
// the bottleneck (even when the compiler emits a complicated sequence of add,
|
|
242
|
-
// sub, and mul instructions with special constants to simulate a divide by a
|
|
243
|
-
// fixed denominator).
|
|
244
|
-
//
|
|
245
|
-
// The downside of this implementation is that the emitted code is larger,
|
|
246
|
-
// especially when the divide is simulated, which affects inlining decisions.
|
|
247
|
-
template <uint64_t Base, typename Alphabet>
|
|
248
|
-
FOLLY_ALWAYS_INLINE void to_ascii_with_table(
|
|
249
|
-
char* out, size_t size, uint64_t v) {
|
|
250
|
-
using table = to_ascii_table<Base, Alphabet>;
|
|
251
|
-
auto pos = size;
|
|
252
|
-
while (FOLLY_UNLIKELY(pos > 2)) {
|
|
253
|
-
pos -= 2;
|
|
254
|
-
// keep /, % together so a peephole optimization computes them together
|
|
255
|
-
auto const q = v / (Base * Base);
|
|
256
|
-
auto const r = v % (Base * Base);
|
|
257
|
-
auto const val = table::data.data[size_t(r)];
|
|
258
|
-
std::memcpy(out + pos, &val, 2);
|
|
259
|
-
v = q;
|
|
260
|
-
}
|
|
261
|
-
|
|
262
|
-
auto const val = table::data.data[size_t(v)];
|
|
263
|
-
if (FOLLY_UNLIKELY(pos == 2)) {
|
|
264
|
-
std::memcpy(out, &val, 2);
|
|
265
|
-
} else {
|
|
266
|
-
*out = val >> (kIsLittleEndian ? 8 : 0);
|
|
267
|
-
}
|
|
268
|
-
}
|
|
269
|
-
template <uint64_t Base, typename Alphabet>
|
|
270
|
-
FOLLY_ALWAYS_INLINE size_t to_ascii_with_table(char* out, uint64_t v) {
|
|
271
|
-
auto const size = to_ascii_size_route<Base>(v);
|
|
272
|
-
to_ascii_with_table<Base, Alphabet>(out, size, v);
|
|
273
|
-
return size;
|
|
274
|
-
}
|
|
275
|
-
|
|
276
|
-
// Assumes that size >= number of digits in v. If >, the result is left-padded
|
|
277
|
-
// with 0s.
|
|
278
|
-
template <uint64_t Base, typename Alphabet>
|
|
279
|
-
FOLLY_ALWAYS_INLINE void to_ascii_with_route(
|
|
280
|
-
char* outb, size_t size, uint64_t v) {
|
|
281
|
-
kIsMobile //
|
|
282
|
-
? to_ascii_with_array<Base, Alphabet>(outb, size, v)
|
|
283
|
-
: to_ascii_with_table<Base, Alphabet>(outb, size, v);
|
|
284
|
-
}
|
|
285
|
-
template <uint64_t Base, typename Alphabet>
|
|
286
|
-
FOLLY_ALWAYS_INLINE size_t
|
|
287
|
-
to_ascii_with_route(char* outb, char const* oute, uint64_t v) {
|
|
288
|
-
auto const size = to_ascii_size_route<Base>(v);
|
|
289
|
-
if (FOLLY_UNLIKELY(oute < outb || size_t(oute - outb) < size)) {
|
|
290
|
-
return 0;
|
|
291
|
-
}
|
|
292
|
-
to_ascii_with_route<Base, Alphabet>(outb, size, v);
|
|
293
|
-
return size;
|
|
294
|
-
}
|
|
295
|
-
template <uint64_t Base, typename Alphabet, size_t N>
|
|
296
|
-
FOLLY_ALWAYS_INLINE size_t to_ascii_with_route(char (&out)[N], uint64_t v) {
|
|
297
|
-
static_assert(N >= to_ascii_powers<Base, decltype(v)>::size, "out too small");
|
|
298
|
-
return to_ascii_with_table<Base, Alphabet>(out, v);
|
|
299
|
-
}
|
|
300
|
-
|
|
301
|
-
size_t to_ascii_size_route<10>(uint64_t v);
|
|
302
|
-
|
|
303
|
-
|
|
304
|
-
template to_ascii_array<8, to_ascii_alphabet_lower>::data_type_ const
|
|
305
|
-
to_ascii_array<8, to_ascii_alphabet_lower>::data;
|
|
306
|
-
template to_ascii_array<10, to_ascii_alphabet_lower>::data_type_ const
|
|
307
|
-
to_ascii_array<10, to_ascii_alphabet_lower>::data;
|
|
308
|
-
template to_ascii_array<16, to_ascii_alphabet_lower>::data_type_ const
|
|
309
|
-
to_ascii_array<16, to_ascii_alphabet_lower>::data;
|
|
310
|
-
template to_ascii_array<8, to_ascii_alphabet_upper>::data_type_ const
|
|
311
|
-
to_ascii_array<8, to_ascii_alphabet_upper>::data;
|
|
312
|
-
template to_ascii_array<10, to_ascii_alphabet_upper>::data_type_ const
|
|
313
|
-
to_ascii_array<10, to_ascii_alphabet_upper>::data;
|
|
314
|
-
template to_ascii_array<16, to_ascii_alphabet_upper>::data_type_ const
|
|
315
|
-
to_ascii_array<16, to_ascii_alphabet_upper>::data;
|
|
316
|
-
|
|
317
|
-
template to_ascii_table<8, to_ascii_alphabet_lower>::data_type_ const
|
|
318
|
-
to_ascii_table<8, to_ascii_alphabet_lower>::data;
|
|
319
|
-
template to_ascii_table<10, to_ascii_alphabet_lower>::data_type_ const
|
|
320
|
-
to_ascii_table<10, to_ascii_alphabet_lower>::data;
|
|
321
|
-
template to_ascii_table<16, to_ascii_alphabet_lower>::data_type_ const
|
|
322
|
-
to_ascii_table<16, to_ascii_alphabet_lower>::data;
|
|
323
|
-
template to_ascii_table<8, to_ascii_alphabet_upper>::data_type_ const
|
|
324
|
-
to_ascii_table<8, to_ascii_alphabet_upper>::data;
|
|
325
|
-
template to_ascii_table<10, to_ascii_alphabet_upper>::data_type_ const
|
|
326
|
-
to_ascii_table<10, to_ascii_alphabet_upper>::data;
|
|
327
|
-
template to_ascii_table<16, to_ascii_alphabet_upper>::data_type_ const
|
|
328
|
-
to_ascii_table<16, to_ascii_alphabet_upper>::data;
|
|
329
|
-
|
|
330
|
-
template to_ascii_powers<8, uint64_t>::data_type_ const
|
|
331
|
-
to_ascii_powers<8, uint64_t>::data;
|
|
332
|
-
template to_ascii_powers<10, uint64_t>::data_type_ const
|
|
333
|
-
to_ascii_powers<10, uint64_t>::data;
|
|
334
|
-
template to_ascii_powers<16, uint64_t>::data_type_ const
|
|
335
|
-
to_ascii_powers<16, uint64_t>::data;
|
|
336
|
-
|
|
337
|
-
// [Windows] Code to ensure functions exist to export
|
|
338
|
-
void forExports() {
|
|
339
|
-
auto b = to_ascii_size_route<10>(0);
|
|
340
|
-
char cc[20];
|
|
341
|
-
auto a = to_ascii_with_route<10, to_ascii_alphabet<false>, 20>(cc, 0);
|
|
342
|
-
char d, e;
|
|
343
|
-
auto r = to_ascii_with_route<10, to_ascii_alphabet<false>>(&d, &e, static_cast<uint64_t>(0));
|
|
344
|
-
}
|
|
345
|
-
|
|
346
|
-
} // namespace detail
|
|
347
|
-
|
|
348
|
-
} // namespace folly
|