diff --git a/.flowconfig b/.flowconfig index b794c41aa91b8d..4f2c3a82108575 100644 --- a/.flowconfig +++ b/.flowconfig @@ -90,4 +90,4 @@ untyped-import untyped-type-import [version] -^0.122.0 +^0.123.0 diff --git a/.flowconfig.android b/.flowconfig.android index cc2caf065b3603..4094bb40f10b78 100644 --- a/.flowconfig.android +++ b/.flowconfig.android @@ -93,4 +93,4 @@ untyped-import untyped-type-import [version] -^0.122.0 +^0.123.0 diff --git a/.flowconfig.macos b/.flowconfig.macos index 733b179abf78d6..f681b53b53182d 100644 --- a/.flowconfig.macos +++ b/.flowconfig.macos @@ -89,4 +89,4 @@ untyped-import untyped-type-import [version] -^0.122.0 +^0.123.0 diff --git a/.github/label-actions.yml b/.github/label-actions.yml index e0636f4c614438..8cef0647e0068c 100644 --- a/.github/label-actions.yml +++ b/.github/label-actions.yml @@ -10,6 +10,10 @@ comment: > Please report documentation issues in the [`react-native-website`](https://github.com/facebook/react-native-website/issues) repository. close: true +"Type: Upgrade Issue": + comment: > + Do you need help upgrading to a newer React Native version? Visit the [Upgrade Support repository](https://github.com/react-native-community/upgrade-support) or use the [upgrade helper](https://react-native-community.github.io/upgrade-helper/) to see the changes that need to be made to upgrade your app. + close: true "Resolution: For Stack Overflow": comment: > We are using GitHub issues exclusively to track bugs in the core React Native library. Please try asking over on [Stack Overflow](http://stackoverflow.com/questions/tagged/react-native) as it is better suited for this type of question. diff --git a/Libraries/ActionSheetIOS/ActionSheetIOS.js b/Libraries/ActionSheetIOS/ActionSheetIOS.js index e330253df81b08..076ab004a56eb3 100644 --- a/Libraries/ActionSheetIOS/ActionSheetIOS.js +++ b/Libraries/ActionSheetIOS/ActionSheetIOS.js @@ -14,7 +14,7 @@ import RCTActionSheetManager from './NativeActionSheetManager'; const invariant = require('invariant'); const processColor = require('../StyleSheet/processColor'); -import type {ColorValue} from '../StyleSheet/StyleSheetTypes'; +import type {ColorValue} from '../StyleSheet/StyleSheet'; import type {ProcessedColorValue} from '../StyleSheet/processColor'; /** diff --git a/Libraries/Animated/src/nodes/AnimatedDivision.js b/Libraries/Animated/src/nodes/AnimatedDivision.js index e7b52f242b9f55..68e973fbd92d5b 100644 --- a/Libraries/Animated/src/nodes/AnimatedDivision.js +++ b/Libraries/Animated/src/nodes/AnimatedDivision.js @@ -23,6 +23,9 @@ class AnimatedDivision extends AnimatedWithChildren { constructor(a: AnimatedNode | number, b: AnimatedNode | number) { super(); + if (b === 0) { + console.error('Detected potential division by zero in AnimatedDivision'); + } this._a = typeof a === 'number' ? new AnimatedValue(a) : a; this._b = typeof b === 'number' ? new AnimatedValue(b) : b; } diff --git a/Libraries/Blob/RCTBlobManager.mm b/Libraries/Blob/RCTBlobManager.mm index 1f68ec27aa5345..380f3ae22885a6 100755 --- a/Libraries/Blob/RCTBlobManager.mm +++ b/Libraries/Blob/RCTBlobManager.mm @@ -310,12 +310,9 @@ - (id)processWebsocketMessage:(id)message }; } -- (std::shared_ptr) - getTurboModuleWithJsInvoker:(std::shared_ptr)jsInvoker - nativeInvoker:(std::shared_ptr)nativeInvoker - perfLogger:(id)perfLogger +- (std::shared_ptr)getTurboModule:(const facebook::react::ObjCTurboModule::InitParams &)params { - return std::make_shared(self, jsInvoker, nativeInvoker, perfLogger); + return std::make_shared(params); } @end diff --git a/Libraries/Blob/RCTFileReaderModule.mm b/Libraries/Blob/RCTFileReaderModule.mm index 7d6eda4d5c4f3b..62e817dc487aed 100644 --- a/Libraries/Blob/RCTFileReaderModule.mm +++ b/Libraries/Blob/RCTFileReaderModule.mm @@ -71,12 +71,9 @@ @implementation RCTFileReaderModule } } -- (std::shared_ptr) - getTurboModuleWithJsInvoker:(std::shared_ptr)jsInvoker - nativeInvoker:(std::shared_ptr)nativeInvoker - perfLogger:(id)perfLogger +- (std::shared_ptr)getTurboModule:(const facebook::react::ObjCTurboModule::InitParams &)params { - return std::make_shared(self, jsInvoker, nativeInvoker, perfLogger); + return std::make_shared(params); } @end diff --git a/Libraries/Components/ActivityIndicator/ActivityIndicator.js b/Libraries/Components/ActivityIndicator/ActivityIndicator.js index 62bc6664305a04..0b57a52c0b8263 100644 --- a/Libraries/Components/ActivityIndicator/ActivityIndicator.js +++ b/Libraries/Components/ActivityIndicator/ActivityIndicator.js @@ -16,7 +16,7 @@ const StyleSheet = require('../../StyleSheet/StyleSheet'); const View = require('../View/View'); import type {HostComponent} from '../../Renderer/shims/ReactNativeTypes'; import type {ViewProps} from '../View/ViewPropTypes'; -import type {ColorValue} from '../../StyleSheet/StyleSheetTypes'; +import type {ColorValue} from '../../StyleSheet/StyleSheet'; const PlatformActivityIndicator = Platform.OS === 'android' diff --git a/Libraries/Components/ActivityIndicator/ActivityIndicatorViewNativeComponent.js b/Libraries/Components/ActivityIndicator/ActivityIndicatorViewNativeComponent.js index 37898d2607ae04..a7a95da5943c1d 100644 --- a/Libraries/Components/ActivityIndicator/ActivityIndicatorViewNativeComponent.js +++ b/Libraries/Components/ActivityIndicator/ActivityIndicatorViewNativeComponent.js @@ -12,7 +12,7 @@ import type {WithDefault} from '../../Types/CodegenTypes'; -import type {ColorValue} from '../../StyleSheet/StyleSheetTypes'; +import type {ColorValue} from '../../StyleSheet/StyleSheet'; import type {ViewProps} from '../View/ViewPropTypes'; import codegenNativeComponent from '../../Utilities/codegenNativeComponent'; diff --git a/Libraries/Components/ActivityIndicator/__tests__/__snapshots__/ActivityIndicator-test.js.snap b/Libraries/Components/ActivityIndicator/__tests__/__snapshots__/ActivityIndicator-test.js.snap index 1d6d1e70b30ea6..d8316e939d13d1 100644 --- a/Libraries/Components/ActivityIndicator/__tests__/__snapshots__/ActivityIndicator-test.js.snap +++ b/Libraries/Components/ActivityIndicator/__tests__/__snapshots__/ActivityIndicator-test.js.snap @@ -34,7 +34,7 @@ exports[` should render as expected: should deep render whe `; exports[` should render as expected: should shallow render as when mocked 1`] = ` - should render as expected: should shallow render `; exports[` should render as expected: should shallow render as when not mocked 1`] = ` -; export type RippleConfig = {| - color?: ?ColorValue, - borderless?: ?boolean, - radius?: ?number, + color?: ColorValue, + borderless?: boolean, + radius?: number, |}; /** @@ -47,13 +47,12 @@ export default function useAndroidRippleForView( |}>, |}> { const {color, borderless, radius} = rippleConfig ?? {}; - const normalizedBorderless = borderless === true; return useMemo(() => { if ( Platform.OS === 'android' && Platform.Version >= 21 && - (color != null || normalizedBorderless || radius != null) + (color != null || borderless != null || radius != null) ) { const processedColor = processColor(color); invariant( @@ -67,7 +66,7 @@ export default function useAndroidRippleForView( nativeBackgroundAndroid: { type: 'RippleAndroid', color: processedColor, - borderless: normalizedBorderless, + borderless: borderless === true, rippleRadius: radius, }, }, @@ -101,5 +100,5 @@ export default function useAndroidRippleForView( }; } return null; - }, [color, normalizedBorderless, radius, viewRef]); + }, [color, borderless, radius, viewRef]); } diff --git a/Libraries/Components/ProgressBarAndroid/ProgressBarAndroid.android.js b/Libraries/Components/ProgressBarAndroid/ProgressBarAndroid.android.js index 7b10a0521522f1..61663d6ad50b30 100644 --- a/Libraries/Components/ProgressBarAndroid/ProgressBarAndroid.android.js +++ b/Libraries/Components/ProgressBarAndroid/ProgressBarAndroid.android.js @@ -15,7 +15,7 @@ const React = require('react'); import ProgressBarAndroidNativeComponent from './ProgressBarAndroidNativeComponent'; import type {ViewProps} from '../View/ViewPropTypes'; -import type {ColorValue} from '../../StyleSheet/StyleSheetTypes'; +import type {ColorValue} from '../../StyleSheet/StyleSheet'; export type ProgressBarAndroidProps = $ReadOnly<{| ...ViewProps, diff --git a/Libraries/Components/ProgressBarAndroid/ProgressBarAndroidNativeComponent.js b/Libraries/Components/ProgressBarAndroid/ProgressBarAndroidNativeComponent.js index 409c9ac7031483..c3efe138a71653 100644 --- a/Libraries/Components/ProgressBarAndroid/ProgressBarAndroidNativeComponent.js +++ b/Libraries/Components/ProgressBarAndroid/ProgressBarAndroidNativeComponent.js @@ -10,7 +10,7 @@ 'use strict'; -import type {ColorValue} from '../../StyleSheet/StyleSheetTypes'; +import type {ColorValue} from '../../StyleSheet/StyleSheet'; import type {ViewProps} from '../View/ViewPropTypes'; import type {Double, WithDefault} from '../../Types/CodegenTypes'; diff --git a/Libraries/Components/ProgressViewIOS/ProgressViewIOS.ios.js b/Libraries/Components/ProgressViewIOS/ProgressViewIOS.ios.js index fd34b055585820..189f7be3872ee0 100644 --- a/Libraries/Components/ProgressViewIOS/ProgressViewIOS.ios.js +++ b/Libraries/Components/ProgressViewIOS/ProgressViewIOS.ios.js @@ -15,7 +15,7 @@ const StyleSheet = require('../../StyleSheet/StyleSheet'); import RCTProgressViewNativeComponent from './RCTProgressViewNativeComponent'; import type {ImageSource} from '../../Image/ImageSource'; -import type {ColorValue} from '../../StyleSheet/StyleSheetTypes'; +import type {ColorValue} from '../../StyleSheet/StyleSheet'; import type {ViewProps} from '../View/ViewPropTypes'; type Props = $ReadOnly<{| diff --git a/Libraries/Components/ProgressViewIOS/RCTProgressViewNativeComponent.js b/Libraries/Components/ProgressViewIOS/RCTProgressViewNativeComponent.js index 8dd3feb50290e0..ccdd15e5100489 100644 --- a/Libraries/Components/ProgressViewIOS/RCTProgressViewNativeComponent.js +++ b/Libraries/Components/ProgressViewIOS/RCTProgressViewNativeComponent.js @@ -12,7 +12,7 @@ import type {Float, WithDefault} from '../../Types/CodegenTypes'; import type {ImageSource} from '../../Image/ImageSource'; -import type {ColorValue} from '../../StyleSheet/StyleSheetTypes'; +import type {ColorValue} from '../../StyleSheet/StyleSheet'; import type {ViewProps} from '../View/ViewPropTypes'; import codegenNativeComponent from '../../Utilities/codegenNativeComponent'; diff --git a/Libraries/Components/RefreshControl/AndroidSwipeRefreshLayoutNativeComponent.js b/Libraries/Components/RefreshControl/AndroidSwipeRefreshLayoutNativeComponent.js index 8e6dba7cede396..9bd3600eb31571 100644 --- a/Libraries/Components/RefreshControl/AndroidSwipeRefreshLayoutNativeComponent.js +++ b/Libraries/Components/RefreshControl/AndroidSwipeRefreshLayoutNativeComponent.js @@ -22,7 +22,7 @@ import type { Int32, WithDefault, } from '../../Types/CodegenTypes'; -import type {ColorValue} from '../../StyleSheet/StyleSheetTypes'; +import type {ColorValue} from '../../StyleSheet/StyleSheet'; import type {ViewProps} from '../View/ViewPropTypes'; type NativeProps = $ReadOnly<{| diff --git a/Libraries/Components/RefreshControl/PullToRefreshViewNativeComponent.js b/Libraries/Components/RefreshControl/PullToRefreshViewNativeComponent.js index 8134b8a486fd7e..adf8ba966db1bf 100644 --- a/Libraries/Components/RefreshControl/PullToRefreshViewNativeComponent.js +++ b/Libraries/Components/RefreshControl/PullToRefreshViewNativeComponent.js @@ -11,7 +11,7 @@ 'use strict'; import type {DirectEventHandler, WithDefault} from '../../Types/CodegenTypes'; -import type {ColorValue} from '../../StyleSheet/StyleSheetTypes'; +import type {ColorValue} from '../../StyleSheet/StyleSheet'; import type {ViewProps} from '../View/ViewPropTypes'; import * as React from 'react'; diff --git a/Libraries/Components/RefreshControl/RefreshControl.js b/Libraries/Components/RefreshControl/RefreshControl.js index f3ffa4980d4fe3..a85c820791d1e1 100644 --- a/Libraries/Components/RefreshControl/RefreshControl.js +++ b/Libraries/Components/RefreshControl/RefreshControl.js @@ -13,7 +13,7 @@ const Platform = require('../../Utilities/Platform'); const React = require('react'); -import type {ColorValue} from '../../StyleSheet/StyleSheetTypes'; +import type {ColorValue} from '../../StyleSheet/StyleSheet'; import type {ViewProps} from '../View/ViewPropTypes'; import AndroidSwipeRefreshLayoutNativeComponent, { Commands as AndroidSwipeRefreshLayoutCommands, diff --git a/Libraries/Components/ScrollView/AndroidHorizontalScrollViewNativeComponent.js b/Libraries/Components/ScrollView/AndroidHorizontalScrollViewNativeComponent.js index 22da77e56f1478..2fed508a35adf6 100644 --- a/Libraries/Components/ScrollView/AndroidHorizontalScrollViewNativeComponent.js +++ b/Libraries/Components/ScrollView/AndroidHorizontalScrollViewNativeComponent.js @@ -37,6 +37,7 @@ const AndroidHorizontalScrollViewViewConfig = { snapToInterval: true, snapToStart: true, snapToOffsets: true, + contentOffset: true, }, }; diff --git a/Libraries/Components/ScrollView/ScrollView.js b/Libraries/Components/ScrollView/ScrollView.js index 40a2b72c9a0887..c8d5426679e7de 100644 --- a/Libraries/Components/ScrollView/ScrollView.js +++ b/Libraries/Components/ScrollView/ScrollView.js @@ -31,7 +31,7 @@ const setAndForwardRef = require('../../Utilities/setAndForwardRef'); import type {EdgeInsetsProp} from '../../StyleSheet/EdgeInsetsPropType'; import type {PointProp} from '../../StyleSheet/PointPropType'; import type {ViewStyleProp} from '../../StyleSheet/StyleSheet'; -import type {ColorValue} from '../../StyleSheet/StyleSheetTypes'; +import type {ColorValue} from '../../StyleSheet/StyleSheet'; import type { PressEvent, ScrollEvent, diff --git a/Libraries/Components/ScrollView/ScrollViewNativeComponentType.js b/Libraries/Components/ScrollView/ScrollViewNativeComponentType.js index 4ea33db416b087..4004a6bfb9dc9e 100644 --- a/Libraries/Components/ScrollView/ScrollViewNativeComponentType.js +++ b/Libraries/Components/ScrollView/ScrollViewNativeComponentType.js @@ -16,7 +16,7 @@ import type { ViewStyleProp, DangerouslyImpreciseStyle, } from '../../StyleSheet/StyleSheet'; -import type {ColorValue} from '../../StyleSheet/StyleSheetTypes'; +import type {ColorValue} from '../../StyleSheet/StyleSheet'; import type {EdgeInsetsProp} from '../../StyleSheet/EdgeInsetsPropType'; import type {ScrollEvent} from '../../Types/CoreEventTypes'; import type {PointProp} from '../../StyleSheet/PointPropType'; diff --git a/Libraries/Components/ScrollView/__tests__/__snapshots__/ScrollView-test.js.snap b/Libraries/Components/ScrollView/__tests__/__snapshots__/ScrollView-test.js.snap index 4e91eb9ba4bf20..3f7620bc348fcb 100644 --- a/Libraries/Components/ScrollView/__tests__/__snapshots__/ScrollView-test.js.snap +++ b/Libraries/Components/ScrollView/__tests__/__snapshots__/ScrollView-test.js.snap @@ -73,21 +73,21 @@ exports[` should render as expected: should deep render when not m `; exports[` should render as expected: should shallow render as when mocked 1`] = ` - + Hello World! - + `; exports[` should render as expected: should shallow render as when not mocked 1`] = ` - + Hello World! - + `; diff --git a/Libraries/Components/SegmentedControlIOS/RCTSegmentedControlNativeComponent.js b/Libraries/Components/SegmentedControlIOS/RCTSegmentedControlNativeComponent.js index 8923582c394f74..c860c04ea9dcbb 100644 --- a/Libraries/Components/SegmentedControlIOS/RCTSegmentedControlNativeComponent.js +++ b/Libraries/Components/SegmentedControlIOS/RCTSegmentedControlNativeComponent.js @@ -18,7 +18,7 @@ import type { WithDefault, Int32, } from '../../Types/CodegenTypes'; -import type {ColorValue} from '../../StyleSheet/StyleSheetTypes'; +import type {ColorValue} from '../../StyleSheet/StyleSheet'; export type OnChangeEvent = $ReadOnly<{| value: Int32, diff --git a/Libraries/Components/Slider/Slider.js b/Libraries/Components/Slider/Slider.js index 72cc79b0756fb1..784af7cc272750 100644 --- a/Libraries/Components/Slider/Slider.js +++ b/Libraries/Components/Slider/Slider.js @@ -17,7 +17,7 @@ const StyleSheet = require('../../StyleSheet/StyleSheet'); import type {ImageSource} from '../../Image/ImageSource'; import type {ViewStyleProp} from '../../StyleSheet/StyleSheet'; -import type {ColorValue} from '../../StyleSheet/StyleSheetTypes'; +import type {ColorValue} from '../../StyleSheet/StyleSheet'; import type {ViewProps} from '../View/ViewPropTypes'; import type {SyntheticEvent} from '../../Types/CoreEventTypes'; diff --git a/Libraries/Components/Slider/SliderNativeComponent.js b/Libraries/Components/Slider/SliderNativeComponent.js index 91bb01b590fe90..c79d0fb730630f 100644 --- a/Libraries/Components/Slider/SliderNativeComponent.js +++ b/Libraries/Components/Slider/SliderNativeComponent.js @@ -20,7 +20,7 @@ import type { import codegenNativeComponent from '../../Utilities/codegenNativeComponent'; import type {HostComponent} from '../../Renderer/shims/ReactNativeTypes'; -import type {ColorValue} from '../../StyleSheet/StyleSheetTypes'; +import type {ColorValue} from '../../StyleSheet/StyleSheet'; import type {ImageSource} from '../../Image/ImageSource'; import type {ViewProps} from '../View/ViewPropTypes'; diff --git a/Libraries/Components/StatusBar/StatusBar.js b/Libraries/Components/StatusBar/StatusBar.js index f13c174e2f0d60..20624d77183277 100644 --- a/Libraries/Components/StatusBar/StatusBar.js +++ b/Libraries/Components/StatusBar/StatusBar.js @@ -15,7 +15,7 @@ const React = require('react'); const invariant = require('invariant'); const processColor = require('../../StyleSheet/processColor'); -import type {ColorValue} from '../../StyleSheet/StyleSheetTypes'; +import type {ColorValue} from '../../StyleSheet/StyleSheet'; import NativeStatusBarManagerAndroid from './NativeStatusBarManagerAndroid'; import NativeStatusBarManagerIOS from './NativeStatusBarManagerIOS'; diff --git a/Libraries/Components/Switch/Switch.js b/Libraries/Components/Switch/Switch.js index caf191c74a917e..3b0937d893e040 100644 --- a/Libraries/Components/Switch/Switch.js +++ b/Libraries/Components/Switch/Switch.js @@ -22,7 +22,7 @@ import SwitchNativeComponent, { Commands as SwitchCommands, } from './SwitchNativeComponent'; -import type {ColorValue} from '../../StyleSheet/StyleSheetTypes'; +import type {ColorValue} from '../../StyleSheet/StyleSheet'; import type {SyntheticEvent} from '../../Types/CoreEventTypes'; import type {ViewProps} from '../View/ViewPropTypes'; diff --git a/Libraries/Components/Switch/SwitchNativeComponent.js b/Libraries/Components/Switch/SwitchNativeComponent.js index c0dceb63ff2ecc..89f757b87db64b 100644 --- a/Libraries/Components/Switch/SwitchNativeComponent.js +++ b/Libraries/Components/Switch/SwitchNativeComponent.js @@ -11,7 +11,7 @@ 'use strict'; import type {BubblingEventHandler, WithDefault} from '../../Types/CodegenTypes'; -import type {ColorValue} from '../../StyleSheet/StyleSheetTypes'; +import type {ColorValue} from '../../StyleSheet/StyleSheet'; import type {ProcessedColorValue} from '../../StyleSheet/processColor'; // TODO(macOS GH#774) import type {ViewProps} from '../View/ViewPropTypes'; import * as React from 'react'; diff --git a/Libraries/Components/TextInput/AndroidTextInputNativeComponent.js b/Libraries/Components/TextInput/AndroidTextInputNativeComponent.js index 2ac53e759b825d..61e37c54bea434 100644 --- a/Libraries/Components/TextInput/AndroidTextInputNativeComponent.js +++ b/Libraries/Components/TextInput/AndroidTextInputNativeComponent.js @@ -21,7 +21,7 @@ import type { } from '../../Types/CodegenTypes'; import type {HostComponent} from '../../Renderer/shims/ReactNativeTypes'; import type {TextStyleProp, ViewStyleProp} from '../../StyleSheet/StyleSheet'; -import type {ColorValue} from '../../StyleSheet/StyleSheetTypes'; +import type {ColorValue} from '../../StyleSheet/StyleSheet'; import requireNativeComponent from '../../ReactNative/requireNativeComponent'; import codegenNativeCommands from '../../Utilities/codegenNativeCommands'; import type {TextInputNativeCommands} from './TextInputNativeCommands'; diff --git a/Libraries/Components/TextInput/InputAccessoryView.js b/Libraries/Components/TextInput/InputAccessoryView.js index b35920d5bcb23d..71c225bc4de3e2 100644 --- a/Libraries/Components/TextInput/InputAccessoryView.js +++ b/Libraries/Components/TextInput/InputAccessoryView.js @@ -17,7 +17,7 @@ const StyleSheet = require('../../StyleSheet/StyleSheet'); import RCTInputAccessoryViewNativeComponent from './RCTInputAccessoryViewNativeComponent'; import type {ViewStyleProp} from '../../StyleSheet/StyleSheet'; -import type {ColorValue} from '../../StyleSheet/StyleSheetTypes'; +import type {ColorValue} from '../../StyleSheet/StyleSheet'; /** * Note: iOS only diff --git a/Libraries/Components/TextInput/RCTInputAccessoryViewNativeComponent.js b/Libraries/Components/TextInput/RCTInputAccessoryViewNativeComponent.js index c0f0de232784ac..7fc7ed4861cb59 100644 --- a/Libraries/Components/TextInput/RCTInputAccessoryViewNativeComponent.js +++ b/Libraries/Components/TextInput/RCTInputAccessoryViewNativeComponent.js @@ -10,7 +10,7 @@ 'use strict'; -import type {ColorValue} from '../../StyleSheet/StyleSheetTypes'; +import type {ColorValue} from '../../StyleSheet/StyleSheet'; import type {ViewProps} from '../View/ViewPropTypes'; import codegenNativeComponent from '../../Utilities/codegenNativeComponent'; diff --git a/Libraries/Components/TextInput/TextInput.js b/Libraries/Components/TextInput/TextInput.js index 9dbf7ebccf4210..874046ba7f27e4 100644 --- a/Libraries/Components/TextInput/TextInput.js +++ b/Libraries/Components/TextInput/TextInput.js @@ -13,7 +13,6 @@ const DeprecatedTextInputPropTypes = require('../../DeprecatedPropTypes/DeprecatedTextInputPropTypes'); const Platform = require('../../Utilities/Platform'); const React = require('react'); -const ReactNative = require('../../Renderer/shims/ReactNative'); const StyleSheet = require('../../StyleSheet/StyleSheet'); const Text = require('../../Text/Text'); const TextAncestor = require('../../Text/TextAncestor'); @@ -25,7 +24,7 @@ const nullthrows = require('nullthrows'); const setAndForwardRef = require('../../Utilities/setAndForwardRef'); import type {TextStyleProp, ViewStyleProp} from '../../StyleSheet/StyleSheet'; -import type {ColorValue} from '../../StyleSheet/StyleSheetTypes'; +import type {ColorValue} from '../../StyleSheet/StyleSheet'; import type {ViewProps} from '../View/ViewPropTypes'; import type {SyntheticEvent, ScrollEvent} from '../../Types/CoreEventTypes'; import type {PressEvent} from '../../Types/CoreEventTypes'; diff --git a/Libraries/Components/Touchable/TouchableHighlight.js b/Libraries/Components/Touchable/TouchableHighlight.js index e7fcfa55b216b3..f4c85089a0904d 100644 --- a/Libraries/Components/Touchable/TouchableHighlight.js +++ b/Libraries/Components/Touchable/TouchableHighlight.js @@ -15,7 +15,7 @@ import Pressability, { } from '../../Pressability/Pressability'; import {PressabilityDebugView} from '../../Pressability/PressabilityDebug'; import StyleSheet, {type ViewStyleProp} from '../../StyleSheet/StyleSheet'; -import type {ColorValue} from '../../StyleSheet/StyleSheetTypes'; +import type {ColorValue} from '../../StyleSheet/StyleSheet'; import TVTouchable from './TVTouchable'; import typeof TouchableWithoutFeedback from './TouchableWithoutFeedback'; import Platform from '../../Utilities/Platform'; diff --git a/Libraries/FBReactNativeSpec/FBReactNativeSpec/FBReactNativeSpec-generated.mm b/Libraries/FBReactNativeSpec/FBReactNativeSpec/FBReactNativeSpec-generated.mm index d7215288893bfa..5c242e76747f02 100644 --- a/Libraries/FBReactNativeSpec/FBReactNativeSpec/FBReactNativeSpec-generated.mm +++ b/Libraries/FBReactNativeSpec/FBReactNativeSpec/FBReactNativeSpec-generated.mm @@ -36,8 +36,8 @@ } - NativeAccessibilityInfoSpecJSI::NativeAccessibilityInfoSpecJSI(id instance, std::shared_ptr jsInvoker, std::shared_ptr nativeInvoker, id perfLogger) - : ObjCTurboModule("AccessibilityInfo", instance, jsInvoker, nativeInvoker, perfLogger) { + NativeAccessibilityInfoSpecJSI::NativeAccessibilityInfoSpecJSI(const ObjCTurboModule::InitParams ¶ms) + : ObjCTurboModule(params) { methodMap_["isReduceMotionEnabled"] = MethodMetadata {1, __hostFunction_NativeAccessibilityInfoSpecJSI_isReduceMotionEnabled}; @@ -103,8 +103,8 @@ + (RCTManagedPointer *)JS_NativeAccessibilityManager_SpecSetAccessibilityContent } - NativeAccessibilityManagerSpecJSI::NativeAccessibilityManagerSpecJSI(id instance, std::shared_ptr jsInvoker, std::shared_ptr nativeInvoker, id perfLogger) - : ObjCTurboModule("AccessibilityManager", instance, jsInvoker, nativeInvoker, perfLogger) { + NativeAccessibilityManagerSpecJSI::NativeAccessibilityManagerSpecJSI(const ObjCTurboModule::InitParams ¶ms) + : ObjCTurboModule(params) { methodMap_["getCurrentBoldTextState"] = MethodMetadata {2, __hostFunction_NativeAccessibilityManagerSpecJSI_getCurrentBoldTextState}; @@ -170,8 +170,8 @@ + (RCTManagedPointer *)JS_NativeActionSheetManager_SpecShowShareActionSheetWithO } - NativeActionSheetManagerSpecJSI::NativeActionSheetManagerSpecJSI(id instance, std::shared_ptr jsInvoker, std::shared_ptr nativeInvoker, id perfLogger) - : ObjCTurboModule("ActionSheetManager", instance, jsInvoker, nativeInvoker, perfLogger) { + NativeActionSheetManagerSpecJSI::NativeActionSheetManagerSpecJSI(const ObjCTurboModule::InitParams ¶ms) + : ObjCTurboModule(params) { methodMap_["showActionSheetWithOptions"] = MethodMetadata {2, __hostFunction_NativeActionSheetManagerSpecJSI_showActionSheetWithOptions}; @@ -201,8 +201,8 @@ + (RCTManagedPointer *)JS_NativeAlertManager_Args:(id)json } - NativeAlertManagerSpecJSI::NativeAlertManagerSpecJSI(id instance, std::shared_ptr jsInvoker, std::shared_ptr nativeInvoker, id perfLogger) - : ObjCTurboModule("AlertManager", instance, jsInvoker, nativeInvoker, perfLogger) { + NativeAlertManagerSpecJSI::NativeAlertManagerSpecJSI(const ObjCTurboModule::InitParams ¶ms) + : ObjCTurboModule(params) { methodMap_["alertWithArgs"] = MethodMetadata {2, __hostFunction_NativeAlertManagerSpecJSI_alertWithArgs}; @@ -306,8 +306,8 @@ + (RCTManagedPointer *)JS_NativeAnimatedModule_EventMapping:(id)json } - NativeAnimatedModuleSpecJSI::NativeAnimatedModuleSpecJSI(id instance, std::shared_ptr jsInvoker, std::shared_ptr nativeInvoker, id perfLogger) - : ObjCTurboModule("AnimatedModule", instance, jsInvoker, nativeInvoker, perfLogger) { + NativeAnimatedModuleSpecJSI::NativeAnimatedModuleSpecJSI(const ObjCTurboModule::InitParams ¶ms) + : ObjCTurboModule(params) { methodMap_["createAnimatedNode"] = MethodMetadata {2, __hostFunction_NativeAnimatedModuleSpecJSI_createAnimatedNode}; @@ -385,8 +385,8 @@ + (RCTManagedPointer *)JS_NativeAnimatedModule_EventMapping:(id)json } - NativeAnimationsDebugModuleSpecJSI::NativeAnimationsDebugModuleSpecJSI(id instance, std::shared_ptr jsInvoker, std::shared_ptr nativeInvoker, id perfLogger) - : ObjCTurboModule("AnimationsDebugModule", instance, jsInvoker, nativeInvoker, perfLogger) { + NativeAnimationsDebugModuleSpecJSI::NativeAnimationsDebugModuleSpecJSI(const ObjCTurboModule::InitParams ¶ms) + : ObjCTurboModule(params) { methodMap_["startRecordingFps"] = MethodMetadata {0, __hostFunction_NativeAnimationsDebugModuleSpecJSI_startRecordingFps}; @@ -426,8 +426,8 @@ + (RCTManagedPointer *)JS_NativeAppState_SpecGetCurrentAppStateSuccessAppState:( } - NativeAppStateSpecJSI::NativeAppStateSpecJSI(id instance, std::shared_ptr jsInvoker, std::shared_ptr nativeInvoker, id perfLogger) - : ObjCTurboModule("AppState", instance, jsInvoker, nativeInvoker, perfLogger) { + NativeAppStateSpecJSI::NativeAppStateSpecJSI(const ObjCTurboModule::InitParams ¶ms) + : ObjCTurboModule(params) { methodMap_["getCurrentAppState"] = MethodMetadata {2, __hostFunction_NativeAppStateSpecJSI_getCurrentAppState}; @@ -463,8 +463,8 @@ + (RCTManagedPointer *)JS_NativeAppState_SpecGetCurrentAppStateSuccessAppState:( } - NativeAppearanceSpecJSI::NativeAppearanceSpecJSI(id instance, std::shared_ptr jsInvoker, std::shared_ptr nativeInvoker, id perfLogger) - : ObjCTurboModule("Appearance", instance, jsInvoker, nativeInvoker, perfLogger) { + NativeAppearanceSpecJSI::NativeAppearanceSpecJSI(const ObjCTurboModule::InitParams ¶ms) + : ObjCTurboModule(params) { methodMap_["getColorScheme"] = MethodMetadata {0, __hostFunction_NativeAppearanceSpecJSI_getColorScheme}; @@ -574,8 +574,8 @@ + (RCTManagedPointer *)JS_NativeAsyncStorage_SpecGetAllKeysCallbackError:(id)jso } - NativeAsyncStorageSpecJSI::NativeAsyncStorageSpecJSI(id instance, std::shared_ptr jsInvoker, std::shared_ptr nativeInvoker, id perfLogger) - : ObjCTurboModule("AsyncStorage", instance, jsInvoker, nativeInvoker, perfLogger) { + NativeAsyncStorageSpecJSI::NativeAsyncStorageSpecJSI(const ObjCTurboModule::InitParams ¶ms) + : ObjCTurboModule(params) { methodMap_["multiGet"] = MethodMetadata {2, __hostFunction_NativeAsyncStorageSpecJSI_multiGet}; @@ -633,8 +633,8 @@ + (RCTManagedPointer *)JS_NativeAsyncStorage_SpecGetAllKeysCallbackError:(id)jso } - NativeBlobModuleSpecJSI::NativeBlobModuleSpecJSI(id instance, std::shared_ptr jsInvoker, std::shared_ptr nativeInvoker, id perfLogger) - : ObjCTurboModule("BlobModule", instance, jsInvoker, nativeInvoker, perfLogger) { + NativeBlobModuleSpecJSI::NativeBlobModuleSpecJSI(const ObjCTurboModule::InitParams ¶ms) + : ObjCTurboModule(params) { methodMap_["addNetworkingHandler"] = MethodMetadata {0, __hostFunction_NativeBlobModuleSpecJSI_addNetworkingHandler}; @@ -679,8 +679,8 @@ + (RCTManagedPointer *)JS_NativeAsyncStorage_SpecGetAllKeysCallbackError:(id)jso } - NativeBugReportingSpecJSI::NativeBugReportingSpecJSI(id instance, std::shared_ptr jsInvoker, std::shared_ptr nativeInvoker, id perfLogger) - : ObjCTurboModule("BugReporting", instance, jsInvoker, nativeInvoker, perfLogger) { + NativeBugReportingSpecJSI::NativeBugReportingSpecJSI(const ObjCTurboModule::InitParams ¶ms) + : ObjCTurboModule(params) { methodMap_["startReportAProblemFlow"] = MethodMetadata {0, __hostFunction_NativeBugReportingSpecJSI_startReportAProblemFlow}; @@ -709,8 +709,8 @@ + (RCTManagedPointer *)JS_NativeAsyncStorage_SpecGetAllKeysCallbackError:(id)jso } - NativeClipboardSpecJSI::NativeClipboardSpecJSI(id instance, std::shared_ptr jsInvoker, std::shared_ptr nativeInvoker, id perfLogger) - : ObjCTurboModule("Clipboard", instance, jsInvoker, nativeInvoker, perfLogger) { + NativeClipboardSpecJSI::NativeClipboardSpecJSI(const ObjCTurboModule::InitParams ¶ms) + : ObjCTurboModule(params) { methodMap_["getString"] = MethodMetadata {0, __hostFunction_NativeClipboardSpecJSI_getString}; @@ -732,8 +732,8 @@ + (RCTManagedPointer *)JS_NativeAsyncStorage_SpecGetAllKeysCallbackError:(id)jso } - NativeDatePickerAndroidSpecJSI::NativeDatePickerAndroidSpecJSI(id instance, std::shared_ptr jsInvoker, std::shared_ptr nativeInvoker, id perfLogger) - : ObjCTurboModule("DatePickerAndroid", instance, jsInvoker, nativeInvoker, perfLogger) { + NativeDatePickerAndroidSpecJSI::NativeDatePickerAndroidSpecJSI(const ObjCTurboModule::InitParams ¶ms) + : ObjCTurboModule(params) { methodMap_["open"] = MethodMetadata {1, __hostFunction_NativeDatePickerAndroidSpecJSI_open}; @@ -756,8 +756,8 @@ + (RCTManagedPointer *)JS_NativeAsyncStorage_SpecGetAllKeysCallbackError:(id)jso } - NativeDevLoadingViewSpecJSI::NativeDevLoadingViewSpecJSI(id instance, std::shared_ptr jsInvoker, std::shared_ptr nativeInvoker, id perfLogger) - : ObjCTurboModule("DevLoadingView", instance, jsInvoker, nativeInvoker, perfLogger) { + NativeDevLoadingViewSpecJSI::NativeDevLoadingViewSpecJSI(const ObjCTurboModule::InitParams ¶ms) + : ObjCTurboModule(params) { methodMap_["showMessage"] = MethodMetadata {3, __hostFunction_NativeDevLoadingViewSpecJSI_showMessage}; @@ -795,8 +795,8 @@ + (RCTManagedPointer *)JS_NativeAsyncStorage_SpecGetAllKeysCallbackError:(id)jso } - NativeDevMenuSpecJSI::NativeDevMenuSpecJSI(id instance, std::shared_ptr jsInvoker, std::shared_ptr nativeInvoker, id perfLogger) - : ObjCTurboModule("DevMenu", instance, jsInvoker, nativeInvoker, perfLogger) { + NativeDevMenuSpecJSI::NativeDevMenuSpecJSI(const ObjCTurboModule::InitParams ¶ms) + : ObjCTurboModule(params) { methodMap_["show"] = MethodMetadata {0, __hostFunction_NativeDevMenuSpecJSI_show}; @@ -867,8 +867,8 @@ + (RCTManagedPointer *)JS_NativeAsyncStorage_SpecGetAllKeysCallbackError:(id)jso } - NativeDevSettingsSpecJSI::NativeDevSettingsSpecJSI(id instance, std::shared_ptr jsInvoker, std::shared_ptr nativeInvoker, id perfLogger) - : ObjCTurboModule("DevSettings", instance, jsInvoker, nativeInvoker, perfLogger) { + NativeDevSettingsSpecJSI::NativeDevSettingsSpecJSI(const ObjCTurboModule::InitParams ¶ms) + : ObjCTurboModule(params) { methodMap_["reload"] = MethodMetadata {0, __hostFunction_NativeDevSettingsSpecJSI_reload}; @@ -917,8 +917,8 @@ + (RCTManagedPointer *)JS_NativeAsyncStorage_SpecGetAllKeysCallbackError:(id)jso } - NativeDeviceEventManagerSpecJSI::NativeDeviceEventManagerSpecJSI(id instance, std::shared_ptr jsInvoker, std::shared_ptr nativeInvoker, id perfLogger) - : ObjCTurboModule("DeviceEventManager", instance, jsInvoker, nativeInvoker, perfLogger) { + NativeDeviceEventManagerSpecJSI::NativeDeviceEventManagerSpecJSI(const ObjCTurboModule::InitParams ¶ms) + : ObjCTurboModule(params) { methodMap_["invokeDefaultBackPressHandler"] = MethodMetadata {0, __hostFunction_NativeDeviceEventManagerSpecJSI_invokeDefaultBackPressHandler}; @@ -937,8 +937,8 @@ + (RCTManagedPointer *)JS_NativeAsyncStorage_SpecGetAllKeysCallbackError:(id)jso } - NativeDeviceInfoSpecJSI::NativeDeviceInfoSpecJSI(id instance, std::shared_ptr jsInvoker, std::shared_ptr nativeInvoker, id perfLogger) - : ObjCTurboModule("DeviceInfo", instance, jsInvoker, nativeInvoker, perfLogger) { + NativeDeviceInfoSpecJSI::NativeDeviceInfoSpecJSI(const ObjCTurboModule::InitParams ¶ms) + : ObjCTurboModule(params) { methodMap_["getConstants"] = MethodMetadata {0, __hostFunction_NativeDeviceInfoSpecJSI_getConstants}; @@ -967,8 +967,8 @@ + (RCTManagedPointer *)JS_NativeDialogManagerAndroid_DialogOptions:(id)json } - NativeDialogManagerAndroidSpecJSI::NativeDialogManagerAndroidSpecJSI(id instance, std::shared_ptr jsInvoker, std::shared_ptr nativeInvoker, id perfLogger) - : ObjCTurboModule("DialogManagerAndroid", instance, jsInvoker, nativeInvoker, perfLogger) { + NativeDialogManagerAndroidSpecJSI::NativeDialogManagerAndroidSpecJSI(const ObjCTurboModule::InitParams ¶ms) + : ObjCTurboModule(params) { methodMap_["showAlert"] = MethodMetadata {3, __hostFunction_NativeDialogManagerAndroidSpecJSI_showAlert}; @@ -1019,8 +1019,8 @@ + (RCTManagedPointer *)JS_NativeExceptionsManager_ExceptionData:(id)json } - NativeExceptionsManagerSpecJSI::NativeExceptionsManagerSpecJSI(id instance, std::shared_ptr jsInvoker, std::shared_ptr nativeInvoker, id perfLogger) - : ObjCTurboModule("ExceptionsManager", instance, jsInvoker, nativeInvoker, perfLogger) { + NativeExceptionsManagerSpecJSI::NativeExceptionsManagerSpecJSI(const ObjCTurboModule::InitParams ¶ms) + : ObjCTurboModule(params) { methodMap_["reportFatalException"] = MethodMetadata {3, __hostFunction_NativeExceptionsManagerSpecJSI_reportFatalException}; @@ -1056,8 +1056,8 @@ + (RCTManagedPointer *)JS_NativeExceptionsManager_ExceptionData:(id)json } - NativeFileReaderModuleSpecJSI::NativeFileReaderModuleSpecJSI(id instance, std::shared_ptr jsInvoker, std::shared_ptr nativeInvoker, id perfLogger) - : ObjCTurboModule("FileReaderModule", instance, jsInvoker, nativeInvoker, perfLogger) { + NativeFileReaderModuleSpecJSI::NativeFileReaderModuleSpecJSI(const ObjCTurboModule::InitParams ¶ms) + : ObjCTurboModule(params) { methodMap_["readAsDataURL"] = MethodMetadata {1, __hostFunction_NativeFileReaderModuleSpecJSI_readAsDataURL}; @@ -1097,8 +1097,8 @@ + (RCTManagedPointer *)JS_NativeFrameRateLogger_SpecSetGlobalOptionsOptions:(id) } - NativeFrameRateLoggerSpecJSI::NativeFrameRateLoggerSpecJSI(id instance, std::shared_ptr jsInvoker, std::shared_ptr nativeInvoker, id perfLogger) - : ObjCTurboModule("FrameRateLogger", instance, jsInvoker, nativeInvoker, perfLogger) { + NativeFrameRateLoggerSpecJSI::NativeFrameRateLoggerSpecJSI(const ObjCTurboModule::InitParams ¶ms) + : ObjCTurboModule(params) { methodMap_["setGlobalOptions"] = MethodMetadata {1, __hostFunction_NativeFrameRateLoggerSpecJSI_setGlobalOptions}; @@ -1131,8 +1131,8 @@ + (RCTManagedPointer *)JS_NativeFrameRateLogger_SpecSetGlobalOptionsOptions:(id) } - NativeHeadlessJsTaskSupportSpecJSI::NativeHeadlessJsTaskSupportSpecJSI(id instance, std::shared_ptr jsInvoker, std::shared_ptr nativeInvoker, id perfLogger) - : ObjCTurboModule("HeadlessJsTaskSupport", instance, jsInvoker, nativeInvoker, perfLogger) { + NativeHeadlessJsTaskSupportSpecJSI::NativeHeadlessJsTaskSupportSpecJSI(const ObjCTurboModule::InitParams ¶ms) + : ObjCTurboModule(params) { methodMap_["notifyTaskFinished"] = MethodMetadata {1, __hostFunction_NativeHeadlessJsTaskSupportSpecJSI_notifyTaskFinished}; @@ -1166,8 +1166,8 @@ + (RCTManagedPointer *)JS_NativeFrameRateLogger_SpecSetGlobalOptionsOptions:(id) } - NativeI18nManagerSpecJSI::NativeI18nManagerSpecJSI(id instance, std::shared_ptr jsInvoker, std::shared_ptr nativeInvoker, id perfLogger) - : ObjCTurboModule("I18nManager", instance, jsInvoker, nativeInvoker, perfLogger) { + NativeI18nManagerSpecJSI::NativeI18nManagerSpecJSI(const ObjCTurboModule::InitParams ¶ms) + : ObjCTurboModule(params) { methodMap_["allowRTL"] = MethodMetadata {1, __hostFunction_NativeI18nManagerSpecJSI_allowRTL}; @@ -1219,8 +1219,8 @@ + (RCTManagedPointer *)JS_NativeImageEditor_Options:(id)json } - NativeImageEditorSpecJSI::NativeImageEditorSpecJSI(id instance, std::shared_ptr jsInvoker, std::shared_ptr nativeInvoker, id perfLogger) - : ObjCTurboModule("ImageEditor", instance, jsInvoker, nativeInvoker, perfLogger) { + NativeImageEditorSpecJSI::NativeImageEditorSpecJSI(const ObjCTurboModule::InitParams ¶ms) + : ObjCTurboModule(params) { methodMap_["cropImage"] = MethodMetadata {4, __hostFunction_NativeImageEditorSpecJSI_cropImage}; @@ -1256,8 +1256,8 @@ + (RCTManagedPointer *)JS_NativeImageEditor_Options:(id)json } - NativeImageLoaderAndroidSpecJSI::NativeImageLoaderAndroidSpecJSI(id instance, std::shared_ptr jsInvoker, std::shared_ptr nativeInvoker, id perfLogger) - : ObjCTurboModule("ImageLoaderAndroid", instance, jsInvoker, nativeInvoker, perfLogger) { + NativeImageLoaderAndroidSpecJSI::NativeImageLoaderAndroidSpecJSI(const ObjCTurboModule::InitParams ¶ms) + : ObjCTurboModule(params) { methodMap_["abortRequest"] = MethodMetadata {1, __hostFunction_NativeImageLoaderAndroidSpecJSI_abortRequest}; @@ -1300,8 +1300,8 @@ + (RCTManagedPointer *)JS_NativeImageEditor_Options:(id)json } - NativeImageLoaderIOSSpecJSI::NativeImageLoaderIOSSpecJSI(id instance, std::shared_ptr jsInvoker, std::shared_ptr nativeInvoker, id perfLogger) - : ObjCTurboModule("ImageLoaderIOS", instance, jsInvoker, nativeInvoker, perfLogger) { + NativeImageLoaderIOSSpecJSI::NativeImageLoaderIOSSpecJSI(const ObjCTurboModule::InitParams ¶ms) + : ObjCTurboModule(params) { methodMap_["getSize"] = MethodMetadata {1, __hostFunction_NativeImageLoaderIOSSpecJSI_getSize}; @@ -1361,8 +1361,8 @@ + (RCTManagedPointer *)JS_NativeImagePickerIOS_SpecOpenSelectDialogConfig:(id)js } - NativeImagePickerIOSSpecJSI::NativeImagePickerIOSSpecJSI(id instance, std::shared_ptr jsInvoker, std::shared_ptr nativeInvoker, id perfLogger) - : ObjCTurboModule("ImagePickerIOS", instance, jsInvoker, nativeInvoker, perfLogger) { + NativeImagePickerIOSSpecJSI::NativeImagePickerIOSSpecJSI(const ObjCTurboModule::InitParams ¶ms) + : ObjCTurboModule(params) { methodMap_["canRecordVideos"] = MethodMetadata {1, __hostFunction_NativeImagePickerIOSSpecJSI_canRecordVideos}; @@ -1416,8 +1416,8 @@ + (RCTManagedPointer *)JS_NativeImageStore_SpecAddImageFromBase64ErrorCallbackEr } - NativeImageStoreSpecJSI::NativeImageStoreSpecJSI(id instance, std::shared_ptr jsInvoker, std::shared_ptr nativeInvoker, id perfLogger) - : ObjCTurboModule("ImageStore", instance, jsInvoker, nativeInvoker, perfLogger) { + NativeImageStoreSpecJSI::NativeImageStoreSpecJSI(const ObjCTurboModule::InitParams ¶ms) + : ObjCTurboModule(params) { methodMap_["getBase64ForTag"] = MethodMetadata {3, __hostFunction_NativeImageStoreSpecJSI_getBase64ForTag}; @@ -1445,8 +1445,8 @@ + (RCTManagedPointer *)JS_NativeImageStore_SpecAddImageFromBase64ErrorCallbackEr } - NativeJSCHeapCaptureSpecJSI::NativeJSCHeapCaptureSpecJSI(id instance, std::shared_ptr jsInvoker, std::shared_ptr nativeInvoker, id perfLogger) - : ObjCTurboModule("JSCHeapCapture", instance, jsInvoker, nativeInvoker, perfLogger) { + NativeJSCHeapCaptureSpecJSI::NativeJSCHeapCaptureSpecJSI(const ObjCTurboModule::InitParams ¶ms) + : ObjCTurboModule(params) { methodMap_["captureComplete"] = MethodMetadata {2, __hostFunction_NativeJSCHeapCaptureSpecJSI_captureComplete}; @@ -1465,8 +1465,8 @@ + (RCTManagedPointer *)JS_NativeImageStore_SpecAddImageFromBase64ErrorCallbackEr } - NativeJSCSamplingProfilerSpecJSI::NativeJSCSamplingProfilerSpecJSI(id instance, std::shared_ptr jsInvoker, std::shared_ptr nativeInvoker, id perfLogger) - : ObjCTurboModule("JSCSamplingProfiler", instance, jsInvoker, nativeInvoker, perfLogger) { + NativeJSCSamplingProfilerSpecJSI::NativeJSCSamplingProfilerSpecJSI(const ObjCTurboModule::InitParams ¶ms) + : ObjCTurboModule(params) { methodMap_["operationComplete"] = MethodMetadata {3, __hostFunction_NativeJSCSamplingProfilerSpecJSI_operationComplete}; @@ -1493,8 +1493,8 @@ + (RCTManagedPointer *)JS_NativeImageStore_SpecAddImageFromBase64ErrorCallbackEr } - NativeJSDevSupportSpecJSI::NativeJSDevSupportSpecJSI(id instance, std::shared_ptr jsInvoker, std::shared_ptr nativeInvoker, id perfLogger) - : ObjCTurboModule("JSDevSupport", instance, jsInvoker, nativeInvoker, perfLogger) { + NativeJSDevSupportSpecJSI::NativeJSDevSupportSpecJSI(const ObjCTurboModule::InitParams ¶ms) + : ObjCTurboModule(params) { methodMap_["onSuccess"] = MethodMetadata {1, __hostFunction_NativeJSDevSupportSpecJSI_onSuccess}; @@ -1523,8 +1523,8 @@ + (RCTManagedPointer *)JS_NativeImageStore_SpecAddImageFromBase64ErrorCallbackEr } - NativeKeyboardObserverSpecJSI::NativeKeyboardObserverSpecJSI(id instance, std::shared_ptr jsInvoker, std::shared_ptr nativeInvoker, id perfLogger) - : ObjCTurboModule("KeyboardObserver", instance, jsInvoker, nativeInvoker, perfLogger) { + NativeKeyboardObserverSpecJSI::NativeKeyboardObserverSpecJSI(const ObjCTurboModule::InitParams ¶ms) + : ObjCTurboModule(params) { methodMap_["addListener"] = MethodMetadata {1, __hostFunction_NativeKeyboardObserverSpecJSI_addListener}; @@ -1576,8 +1576,8 @@ + (RCTManagedPointer *)JS_NativeLinking_SpecSendIntentExtrasElement:(id)json } - NativeLinkingSpecJSI::NativeLinkingSpecJSI(id instance, std::shared_ptr jsInvoker, std::shared_ptr nativeInvoker, id perfLogger) - : ObjCTurboModule("Linking", instance, jsInvoker, nativeInvoker, perfLogger) { + NativeLinkingSpecJSI::NativeLinkingSpecJSI(const ObjCTurboModule::InitParams ¶ms) + : ObjCTurboModule(params) { methodMap_["getInitialURL"] = MethodMetadata {0, __hostFunction_NativeLinkingSpecJSI_getInitialURL}; @@ -1618,8 +1618,8 @@ + (RCTManagedPointer *)JS_NativeLinking_SpecSendIntentExtrasElement:(id)json } - NativeLogBoxSpecJSI::NativeLogBoxSpecJSI(id instance, std::shared_ptr jsInvoker, std::shared_ptr nativeInvoker, id perfLogger) - : ObjCTurboModule("LogBox", instance, jsInvoker, nativeInvoker, perfLogger) { + NativeLogBoxSpecJSI::NativeLogBoxSpecJSI(const ObjCTurboModule::InitParams ¶ms) + : ObjCTurboModule(params) { methodMap_["show"] = MethodMetadata {0, __hostFunction_NativeLogBoxSpecJSI_show}; @@ -1645,8 +1645,8 @@ + (RCTManagedPointer *)JS_NativeLinking_SpecSendIntentExtrasElement:(id)json } - NativeModalManagerSpecJSI::NativeModalManagerSpecJSI(id instance, std::shared_ptr jsInvoker, std::shared_ptr nativeInvoker, id perfLogger) - : ObjCTurboModule("ModalManager", instance, jsInvoker, nativeInvoker, perfLogger) { + NativeModalManagerSpecJSI::NativeModalManagerSpecJSI(const ObjCTurboModule::InitParams ¶ms) + : ObjCTurboModule(params) { methodMap_["addListener"] = MethodMetadata {1, __hostFunction_NativeModalManagerSpecJSI_addListener}; @@ -1684,8 +1684,8 @@ + (RCTManagedPointer *)JS_NativeLinking_SpecSendIntentExtrasElement:(id)json } - NativeNetworkingAndroidSpecJSI::NativeNetworkingAndroidSpecJSI(id instance, std::shared_ptr jsInvoker, std::shared_ptr nativeInvoker, id perfLogger) - : ObjCTurboModule("NetworkingAndroid", instance, jsInvoker, nativeInvoker, perfLogger) { + NativeNetworkingAndroidSpecJSI::NativeNetworkingAndroidSpecJSI(const ObjCTurboModule::InitParams ¶ms) + : ObjCTurboModule(params) { methodMap_["sendRequest"] = MethodMetadata {9, __hostFunction_NativeNetworkingAndroidSpecJSI_sendRequest}; @@ -1738,8 +1738,8 @@ + (RCTManagedPointer *)JS_NativeNetworkingIOS_SpecSendRequestQuery:(id)json } - NativeNetworkingIOSSpecJSI::NativeNetworkingIOSSpecJSI(id instance, std::shared_ptr jsInvoker, std::shared_ptr nativeInvoker, id perfLogger) - : ObjCTurboModule("NetworkingIOS", instance, jsInvoker, nativeInvoker, perfLogger) { + NativeNetworkingIOSSpecJSI::NativeNetworkingIOSSpecJSI(const ObjCTurboModule::InitParams ¶ms) + : ObjCTurboModule(params) { methodMap_["sendRequest"] = MethodMetadata {2, __hostFunction_NativeNetworkingIOSSpecJSI_sendRequest}; @@ -1783,8 +1783,8 @@ + (RCTManagedPointer *)JS_NativeNetworkingIOS_SpecSendRequestQuery:(id)json } - NativePermissionsAndroidSpecJSI::NativePermissionsAndroidSpecJSI(id instance, std::shared_ptr jsInvoker, std::shared_ptr nativeInvoker, id perfLogger) - : ObjCTurboModule("PermissionsAndroid", instance, jsInvoker, nativeInvoker, perfLogger) { + NativePermissionsAndroidSpecJSI::NativePermissionsAndroidSpecJSI(const ObjCTurboModule::InitParams ¶ms) + : ObjCTurboModule(params) { methodMap_["checkPermission"] = MethodMetadata {1, __hostFunction_NativePermissionsAndroidSpecJSI_checkPermission}; @@ -1816,8 +1816,8 @@ + (RCTManagedPointer *)JS_NativeNetworkingIOS_SpecSendRequestQuery:(id)json } - NativePlatformConstantsAndroidSpecJSI::NativePlatformConstantsAndroidSpecJSI(id instance, std::shared_ptr jsInvoker, std::shared_ptr nativeInvoker, id perfLogger) - : ObjCTurboModule("PlatformConstantsAndroid", instance, jsInvoker, nativeInvoker, perfLogger) { + NativePlatformConstantsAndroidSpecJSI::NativePlatformConstantsAndroidSpecJSI(const ObjCTurboModule::InitParams ¶ms) + : ObjCTurboModule(params) { methodMap_["getAndroidID"] = MethodMetadata {0, __hostFunction_NativePlatformConstantsAndroidSpecJSI_getAndroidID}; @@ -1839,8 +1839,8 @@ + (RCTManagedPointer *)JS_NativeNetworkingIOS_SpecSendRequestQuery:(id)json } - NativePlatformConstantsIOSSpecJSI::NativePlatformConstantsIOSSpecJSI(id instance, std::shared_ptr jsInvoker, std::shared_ptr nativeInvoker, id perfLogger) - : ObjCTurboModule("PlatformConstantsIOS", instance, jsInvoker, nativeInvoker, perfLogger) { + NativePlatformConstantsIOSSpecJSI::NativePlatformConstantsIOSSpecJSI(const ObjCTurboModule::InitParams ¶ms) + : ObjCTurboModule(params) { methodMap_["getConstants"] = MethodMetadata {0, __hostFunction_NativePlatformConstantsIOSSpecJSI_getConstants}; @@ -1941,8 +1941,8 @@ + (RCTManagedPointer *)JS_NativePushNotificationManagerIOS_Notification:(id)json } - NativePushNotificationManagerIOSSpecJSI::NativePushNotificationManagerIOSSpecJSI(id instance, std::shared_ptr jsInvoker, std::shared_ptr nativeInvoker, id perfLogger) - : ObjCTurboModule("PushNotificationManagerIOS", instance, jsInvoker, nativeInvoker, perfLogger) { + NativePushNotificationManagerIOSSpecJSI::NativePushNotificationManagerIOSSpecJSI(const ObjCTurboModule::InitParams ¶ms) + : ObjCTurboModule(params) { methodMap_["onFinishRemoteNotification"] = MethodMetadata {2, __hostFunction_NativePushNotificationManagerIOSSpecJSI_onFinishRemoteNotification}; @@ -2016,8 +2016,8 @@ + (RCTManagedPointer *)JS_NativePushNotificationManagerIOS_Notification:(id)json } - NativeRedBoxSpecJSI::NativeRedBoxSpecJSI(id instance, std::shared_ptr jsInvoker, std::shared_ptr nativeInvoker, id perfLogger) - : ObjCTurboModule("RedBox", instance, jsInvoker, nativeInvoker, perfLogger) { + NativeRedBoxSpecJSI::NativeRedBoxSpecJSI(const ObjCTurboModule::InitParams ¶ms) + : ObjCTurboModule(params) { methodMap_["setExtraData"] = MethodMetadata {2, __hostFunction_NativeRedBoxSpecJSI_setExtraData}; @@ -2043,8 +2043,8 @@ + (RCTManagedPointer *)JS_NativePushNotificationManagerIOS_Notification:(id)json } - NativeSegmentFetcherSpecJSI::NativeSegmentFetcherSpecJSI(id instance, std::shared_ptr jsInvoker, std::shared_ptr nativeInvoker, id perfLogger) - : ObjCTurboModule("SegmentFetcher", instance, jsInvoker, nativeInvoker, perfLogger) { + NativeSegmentFetcherSpecJSI::NativeSegmentFetcherSpecJSI(const ObjCTurboModule::InitParams ¶ms) + : ObjCTurboModule(params) { methodMap_["fetchSegment"] = MethodMetadata {3, __hostFunction_NativeSegmentFetcherSpecJSI_fetchSegment}; @@ -2074,8 +2074,8 @@ + (RCTManagedPointer *)JS_NativePushNotificationManagerIOS_Notification:(id)json } - NativeSettingsManagerSpecJSI::NativeSettingsManagerSpecJSI(id instance, std::shared_ptr jsInvoker, std::shared_ptr nativeInvoker, id perfLogger) - : ObjCTurboModule("SettingsManager", instance, jsInvoker, nativeInvoker, perfLogger) { + NativeSettingsManagerSpecJSI::NativeSettingsManagerSpecJSI(const ObjCTurboModule::InitParams ¶ms) + : ObjCTurboModule(params) { methodMap_["setValues"] = MethodMetadata {1, __hostFunction_NativeSettingsManagerSpecJSI_setValues}; @@ -2106,8 +2106,8 @@ + (RCTManagedPointer *)JS_NativeShareModule_SpecShareContent:(id)json } - NativeShareModuleSpecJSI::NativeShareModuleSpecJSI(id instance, std::shared_ptr jsInvoker, std::shared_ptr nativeInvoker, id perfLogger) - : ObjCTurboModule("ShareModule", instance, jsInvoker, nativeInvoker, perfLogger) { + NativeShareModuleSpecJSI::NativeShareModuleSpecJSI(const ObjCTurboModule::InitParams ¶ms) + : ObjCTurboModule(params) { methodMap_["share"] = MethodMetadata {2, __hostFunction_NativeShareModuleSpecJSI_share}; @@ -2127,8 +2127,8 @@ + (RCTManagedPointer *)JS_NativeShareModule_SpecShareContent:(id)json } - NativeSoundManagerSpecJSI::NativeSoundManagerSpecJSI(id instance, std::shared_ptr jsInvoker, std::shared_ptr nativeInvoker, id perfLogger) - : ObjCTurboModule("SoundManager", instance, jsInvoker, nativeInvoker, perfLogger) { + NativeSoundManagerSpecJSI::NativeSoundManagerSpecJSI(const ObjCTurboModule::InitParams ¶ms) + : ObjCTurboModule(params) { methodMap_["playTouchSound"] = MethodMetadata {0, __hostFunction_NativeSoundManagerSpecJSI_playTouchSound}; @@ -2147,8 +2147,8 @@ + (RCTManagedPointer *)JS_NativeShareModule_SpecShareContent:(id)json } - NativeSourceCodeSpecJSI::NativeSourceCodeSpecJSI(id instance, std::shared_ptr jsInvoker, std::shared_ptr nativeInvoker, id perfLogger) - : ObjCTurboModule("SourceCode", instance, jsInvoker, nativeInvoker, perfLogger) { + NativeSourceCodeSpecJSI::NativeSourceCodeSpecJSI(const ObjCTurboModule::InitParams ¶ms) + : ObjCTurboModule(params) { methodMap_["getConstants"] = MethodMetadata {0, __hostFunction_NativeSourceCodeSpecJSI_getConstants}; @@ -2183,8 +2183,8 @@ + (RCTManagedPointer *)JS_NativeShareModule_SpecShareContent:(id)json } - NativeStatusBarManagerAndroidSpecJSI::NativeStatusBarManagerAndroidSpecJSI(id instance, std::shared_ptr jsInvoker, std::shared_ptr nativeInvoker, id perfLogger) - : ObjCTurboModule("StatusBarManagerAndroid", instance, jsInvoker, nativeInvoker, perfLogger) { + NativeStatusBarManagerAndroidSpecJSI::NativeStatusBarManagerAndroidSpecJSI(const ObjCTurboModule::InitParams ¶ms) + : ObjCTurboModule(params) { methodMap_["setColor"] = MethodMetadata {2, __hostFunction_NativeStatusBarManagerAndroidSpecJSI_setColor}; @@ -2245,8 +2245,8 @@ + (RCTManagedPointer *)JS_NativeStatusBarManagerIOS_SpecGetHeightCallbackResult: } - NativeStatusBarManagerIOSSpecJSI::NativeStatusBarManagerIOSSpecJSI(id instance, std::shared_ptr jsInvoker, std::shared_ptr nativeInvoker, id perfLogger) - : ObjCTurboModule("StatusBarManagerIOS", instance, jsInvoker, nativeInvoker, perfLogger) { + NativeStatusBarManagerIOSSpecJSI::NativeStatusBarManagerIOSSpecJSI(const ObjCTurboModule::InitParams ¶ms) + : ObjCTurboModule(params) { methodMap_["getHeight"] = MethodMetadata {1, __hostFunction_NativeStatusBarManagerIOSSpecJSI_getHeight}; @@ -2287,8 +2287,8 @@ + (RCTManagedPointer *)JS_NativeStatusBarManagerIOS_SpecGetHeightCallbackResult: } - NativeTVNavigationEventEmitterSpecJSI::NativeTVNavigationEventEmitterSpecJSI(id instance, std::shared_ptr jsInvoker, std::shared_ptr nativeInvoker, id perfLogger) - : ObjCTurboModule("TVNavigationEventEmitter", instance, jsInvoker, nativeInvoker, perfLogger) { + NativeTVNavigationEventEmitterSpecJSI::NativeTVNavigationEventEmitterSpecJSI(const ObjCTurboModule::InitParams ¶ms) + : ObjCTurboModule(params) { methodMap_["addListener"] = MethodMetadata {1, __hostFunction_NativeTVNavigationEventEmitterSpecJSI_addListener}; @@ -2316,8 +2316,8 @@ + (RCTManagedPointer *)JS_NativeTimePickerAndroid_TimePickerOptions:(id)json } - NativeTimePickerAndroidSpecJSI::NativeTimePickerAndroidSpecJSI(id instance, std::shared_ptr jsInvoker, std::shared_ptr nativeInvoker, id perfLogger) - : ObjCTurboModule("TimePickerAndroid", instance, jsInvoker, nativeInvoker, perfLogger) { + NativeTimePickerAndroidSpecJSI::NativeTimePickerAndroidSpecJSI(const ObjCTurboModule::InitParams ¶ms) + : ObjCTurboModule(params) { methodMap_["open"] = MethodMetadata {1, __hostFunction_NativeTimePickerAndroidSpecJSI_open}; @@ -2351,8 +2351,8 @@ + (RCTManagedPointer *)JS_NativeTimePickerAndroid_TimePickerResult:(id)json } - NativeTimingSpecJSI::NativeTimingSpecJSI(id instance, std::shared_ptr jsInvoker, std::shared_ptr nativeInvoker, id perfLogger) - : ObjCTurboModule("Timing", instance, jsInvoker, nativeInvoker, perfLogger) { + NativeTimingSpecJSI::NativeTimingSpecJSI(const ObjCTurboModule::InitParams ¶ms) + : ObjCTurboModule(params) { methodMap_["createTimer"] = MethodMetadata {4, __hostFunction_NativeTimingSpecJSI_createTimer}; @@ -2389,8 +2389,8 @@ + (RCTManagedPointer *)JS_NativeTimePickerAndroid_TimePickerResult:(id)json } - NativeToastAndroidSpecJSI::NativeToastAndroidSpecJSI(id instance, std::shared_ptr jsInvoker, std::shared_ptr nativeInvoker, id perfLogger) - : ObjCTurboModule("ToastAndroid", instance, jsInvoker, nativeInvoker, perfLogger) { + NativeToastAndroidSpecJSI::NativeToastAndroidSpecJSI(const ObjCTurboModule::InitParams ¶ms) + : ObjCTurboModule(params) { methodMap_["show"] = MethodMetadata {2, __hostFunction_NativeToastAndroidSpecJSI_show}; @@ -2522,8 +2522,8 @@ + (RCTManagedPointer *)JS_NativeTimePickerAndroid_TimePickerResult:(id)json } - NativeUIManagerSpecJSI::NativeUIManagerSpecJSI(id instance, std::shared_ptr jsInvoker, std::shared_ptr nativeInvoker, id perfLogger) - : ObjCTurboModule("UIManager", instance, jsInvoker, nativeInvoker, perfLogger) { + NativeUIManagerSpecJSI::NativeUIManagerSpecJSI(const ObjCTurboModule::InitParams ¶ms) + : ObjCTurboModule(params) { methodMap_["getConstantsForViewManager"] = MethodMetadata {1, __hostFunction_NativeUIManagerSpecJSI_getConstantsForViewManager}; @@ -2628,8 +2628,8 @@ + (RCTManagedPointer *)JS_NativeTimePickerAndroid_TimePickerResult:(id)json } - NativeVibrationSpecJSI::NativeVibrationSpecJSI(id instance, std::shared_ptr jsInvoker, std::shared_ptr nativeInvoker, id perfLogger) - : ObjCTurboModule("Vibration", instance, jsInvoker, nativeInvoker, perfLogger) { + NativeVibrationSpecJSI::NativeVibrationSpecJSI(const ObjCTurboModule::InitParams ¶ms) + : ObjCTurboModule(params) { methodMap_["vibrate"] = MethodMetadata {1, __hostFunction_NativeVibrationSpecJSI_vibrate}; @@ -2684,8 +2684,8 @@ + (RCTManagedPointer *)JS_NativeWebSocketModule_SpecConnectOptions:(id)json } - NativeWebSocketModuleSpecJSI::NativeWebSocketModuleSpecJSI(id instance, std::shared_ptr jsInvoker, std::shared_ptr nativeInvoker, id perfLogger) - : ObjCTurboModule("WebSocketModule", instance, jsInvoker, nativeInvoker, perfLogger) { + NativeWebSocketModuleSpecJSI::NativeWebSocketModuleSpecJSI(const ObjCTurboModule::InitParams ¶ms) + : ObjCTurboModule(params) { methodMap_["connect"] = MethodMetadata {4, __hostFunction_NativeWebSocketModuleSpecJSI_connect}; diff --git a/Libraries/FBReactNativeSpec/FBReactNativeSpec/FBReactNativeSpec.h b/Libraries/FBReactNativeSpec/FBReactNativeSpec/FBReactNativeSpec.h index 3f6c7444d57927..ec337621912eeb 100644 --- a/Libraries/FBReactNativeSpec/FBReactNativeSpec/FBReactNativeSpec.h +++ b/Libraries/FBReactNativeSpec/FBReactNativeSpec/FBReactNativeSpec.h @@ -42,7 +42,7 @@ namespace facebook { class JSI_EXPORT NativeAccessibilityInfoSpecJSI : public ObjCTurboModule { public: - NativeAccessibilityInfoSpecJSI(id instance, std::shared_ptr jsInvoker, std::shared_ptr nativeInvoker, id perfLogger); + NativeAccessibilityInfoSpecJSI(const ObjCTurboModule::InitParams ¶ms); }; } // namespace react @@ -101,7 +101,7 @@ namespace facebook { class JSI_EXPORT NativeAccessibilityManagerSpecJSI : public ObjCTurboModule { public: - NativeAccessibilityManagerSpecJSI(id instance, std::shared_ptr jsInvoker, std::shared_ptr nativeInvoker, id perfLogger); + NativeAccessibilityManagerSpecJSI(const ObjCTurboModule::InitParams ¶ms); }; } // namespace react @@ -187,7 +187,7 @@ namespace facebook { class JSI_EXPORT NativeActionSheetManagerSpecJSI : public ObjCTurboModule { public: - NativeActionSheetManagerSpecJSI(id instance, std::shared_ptr jsInvoker, std::shared_ptr nativeInvoker, id perfLogger); + NativeActionSheetManagerSpecJSI(const ObjCTurboModule::InitParams ¶ms); }; } // namespace react @@ -234,7 +234,7 @@ namespace facebook { class JSI_EXPORT NativeAlertManagerSpecJSI : public ObjCTurboModule { public: - NativeAlertManagerSpecJSI(id instance, std::shared_ptr jsInvoker, std::shared_ptr nativeInvoker, id perfLogger); + NativeAlertManagerSpecJSI(const ObjCTurboModule::InitParams ¶ms); }; } // namespace react @@ -317,7 +317,7 @@ namespace facebook { class JSI_EXPORT NativeAnimatedModuleSpecJSI : public ObjCTurboModule { public: - NativeAnimatedModuleSpecJSI(id instance, std::shared_ptr jsInvoker, std::shared_ptr nativeInvoker, id perfLogger); + NativeAnimatedModuleSpecJSI(const ObjCTurboModule::InitParams ¶ms); }; } // namespace react @@ -336,7 +336,7 @@ namespace facebook { class JSI_EXPORT NativeAnimationsDebugModuleSpecJSI : public ObjCTurboModule { public: - NativeAnimationsDebugModuleSpecJSI(id instance, std::shared_ptr jsInvoker, std::shared_ptr nativeInvoker, id perfLogger); + NativeAnimationsDebugModuleSpecJSI(const ObjCTurboModule::InitParams ¶ms); }; } // namespace react @@ -403,7 +403,7 @@ namespace facebook { class JSI_EXPORT NativeAppStateSpecJSI : public ObjCTurboModule { public: - NativeAppStateSpecJSI(id instance, std::shared_ptr jsInvoker, std::shared_ptr nativeInvoker, id perfLogger); + NativeAppStateSpecJSI(const ObjCTurboModule::InitParams ¶ms); }; } // namespace react @@ -423,7 +423,7 @@ namespace facebook { class JSI_EXPORT NativeAppearanceSpecJSI : public ObjCTurboModule { public: - NativeAppearanceSpecJSI(id instance, std::shared_ptr jsInvoker, std::shared_ptr nativeInvoker, id perfLogger); + NativeAppearanceSpecJSI(const ObjCTurboModule::InitParams ¶ms); }; } // namespace react @@ -569,7 +569,7 @@ namespace facebook { class JSI_EXPORT NativeAsyncStorageSpecJSI : public ObjCTurboModule { public: - NativeAsyncStorageSpecJSI(id instance, std::shared_ptr jsInvoker, std::shared_ptr nativeInvoker, id perfLogger); + NativeAsyncStorageSpecJSI(const ObjCTurboModule::InitParams ¶ms); }; } // namespace react @@ -625,7 +625,7 @@ namespace facebook { class JSI_EXPORT NativeBlobModuleSpecJSI : public ObjCTurboModule { public: - NativeBlobModuleSpecJSI(id instance, std::shared_ptr jsInvoker, std::shared_ptr nativeInvoker, id perfLogger); + NativeBlobModuleSpecJSI(const ObjCTurboModule::InitParams ¶ms); }; } // namespace react @@ -646,7 +646,7 @@ namespace facebook { class JSI_EXPORT NativeBugReportingSpecJSI : public ObjCTurboModule { public: - NativeBugReportingSpecJSI(id instance, std::shared_ptr jsInvoker, std::shared_ptr nativeInvoker, id perfLogger); + NativeBugReportingSpecJSI(const ObjCTurboModule::InitParams ¶ms); }; } // namespace react @@ -666,7 +666,7 @@ namespace facebook { class JSI_EXPORT NativeClipboardSpecJSI : public ObjCTurboModule { public: - NativeClipboardSpecJSI(id instance, std::shared_ptr jsInvoker, std::shared_ptr nativeInvoker, id perfLogger); + NativeClipboardSpecJSI(const ObjCTurboModule::InitParams ¶ms); }; } // namespace react @@ -686,7 +686,7 @@ namespace facebook { class JSI_EXPORT NativeDatePickerAndroidSpecJSI : public ObjCTurboModule { public: - NativeDatePickerAndroidSpecJSI(id instance, std::shared_ptr jsInvoker, std::shared_ptr nativeInvoker, id perfLogger); + NativeDatePickerAndroidSpecJSI(const ObjCTurboModule::InitParams ¶ms); }; } // namespace react @@ -707,7 +707,7 @@ namespace facebook { class JSI_EXPORT NativeDevLoadingViewSpecJSI : public ObjCTurboModule { public: - NativeDevLoadingViewSpecJSI(id instance, std::shared_ptr jsInvoker, std::shared_ptr nativeInvoker, id perfLogger); + NativeDevLoadingViewSpecJSI(const ObjCTurboModule::InitParams ¶ms); }; } // namespace react @@ -729,7 +729,7 @@ namespace facebook { class JSI_EXPORT NativeDevMenuSpecJSI : public ObjCTurboModule { public: - NativeDevMenuSpecJSI(id instance, std::shared_ptr jsInvoker, std::shared_ptr nativeInvoker, id perfLogger); + NativeDevMenuSpecJSI(const ObjCTurboModule::InitParams ¶ms); }; } // namespace react @@ -758,7 +758,7 @@ namespace facebook { class JSI_EXPORT NativeDevSettingsSpecJSI : public ObjCTurboModule { public: - NativeDevSettingsSpecJSI(id instance, std::shared_ptr jsInvoker, std::shared_ptr nativeInvoker, id perfLogger); + NativeDevSettingsSpecJSI(const ObjCTurboModule::InitParams ¶ms); }; } // namespace react @@ -776,7 +776,7 @@ namespace facebook { class JSI_EXPORT NativeDeviceEventManagerSpecJSI : public ObjCTurboModule { public: - NativeDeviceEventManagerSpecJSI(id instance, std::shared_ptr jsInvoker, std::shared_ptr nativeInvoker, id perfLogger); + NativeDeviceEventManagerSpecJSI(const ObjCTurboModule::InitParams ¶ms); }; } // namespace react @@ -918,7 +918,7 @@ namespace facebook { class JSI_EXPORT NativeDeviceInfoSpecJSI : public ObjCTurboModule { public: - NativeDeviceInfoSpecJSI(id instance, std::shared_ptr jsInvoker, std::shared_ptr nativeInvoker, id perfLogger); + NativeDeviceInfoSpecJSI(const ObjCTurboModule::InitParams ¶ms); }; } // namespace react @@ -994,7 +994,7 @@ namespace facebook { class JSI_EXPORT NativeDialogManagerAndroidSpecJSI : public ObjCTurboModule { public: - NativeDialogManagerAndroidSpecJSI(id instance, std::shared_ptr jsInvoker, std::shared_ptr nativeInvoker, id perfLogger); + NativeDialogManagerAndroidSpecJSI(const ObjCTurboModule::InitParams ¶ms); }; } // namespace react @@ -1065,7 +1065,7 @@ namespace facebook { class JSI_EXPORT NativeExceptionsManagerSpecJSI : public ObjCTurboModule { public: - NativeExceptionsManagerSpecJSI(id instance, std::shared_ptr jsInvoker, std::shared_ptr nativeInvoker, id perfLogger); + NativeExceptionsManagerSpecJSI(const ObjCTurboModule::InitParams ¶ms); }; } // namespace react @@ -1089,7 +1089,7 @@ namespace facebook { class JSI_EXPORT NativeFileReaderModuleSpecJSI : public ObjCTurboModule { public: - NativeFileReaderModuleSpecJSI(id instance, std::shared_ptr jsInvoker, std::shared_ptr nativeInvoker, id perfLogger); + NativeFileReaderModuleSpecJSI(const ObjCTurboModule::InitParams ¶ms); }; } // namespace react @@ -1127,7 +1127,7 @@ namespace facebook { class JSI_EXPORT NativeFrameRateLoggerSpecJSI : public ObjCTurboModule { public: - NativeFrameRateLoggerSpecJSI(id instance, std::shared_ptr jsInvoker, std::shared_ptr nativeInvoker, id perfLogger); + NativeFrameRateLoggerSpecJSI(const ObjCTurboModule::InitParams ¶ms); }; } // namespace react @@ -1148,7 +1148,7 @@ namespace facebook { class JSI_EXPORT NativeHeadlessJsTaskSupportSpecJSI : public ObjCTurboModule { public: - NativeHeadlessJsTaskSupportSpecJSI(id instance, std::shared_ptr jsInvoker, std::shared_ptr nativeInvoker, id perfLogger); + NativeHeadlessJsTaskSupportSpecJSI(const ObjCTurboModule::InitParams ¶ms); }; } // namespace react @@ -1199,7 +1199,7 @@ namespace facebook { class JSI_EXPORT NativeI18nManagerSpecJSI : public ObjCTurboModule { public: - NativeI18nManagerSpecJSI(id instance, std::shared_ptr jsInvoker, std::shared_ptr nativeInvoker, id perfLogger); + NativeI18nManagerSpecJSI(const ObjCTurboModule::InitParams ¶ms); }; } // namespace react @@ -1291,7 +1291,7 @@ namespace facebook { class JSI_EXPORT NativeImageEditorSpecJSI : public ObjCTurboModule { public: - NativeImageEditorSpecJSI(id instance, std::shared_ptr jsInvoker, std::shared_ptr nativeInvoker, id perfLogger); + NativeImageEditorSpecJSI(const ObjCTurboModule::InitParams ¶ms); }; } // namespace react @@ -1323,7 +1323,7 @@ namespace facebook { class JSI_EXPORT NativeImageLoaderAndroidSpecJSI : public ObjCTurboModule { public: - NativeImageLoaderAndroidSpecJSI(id instance, std::shared_ptr jsInvoker, std::shared_ptr nativeInvoker, id perfLogger); + NativeImageLoaderAndroidSpecJSI(const ObjCTurboModule::InitParams ¶ms); }; } // namespace react @@ -1353,7 +1353,7 @@ namespace facebook { class JSI_EXPORT NativeImageLoaderIOSSpecJSI : public ObjCTurboModule { public: - NativeImageLoaderIOSSpecJSI(id instance, std::shared_ptr jsInvoker, std::shared_ptr nativeInvoker, id perfLogger); + NativeImageLoaderIOSSpecJSI(const ObjCTurboModule::InitParams ¶ms); }; } // namespace react @@ -1414,7 +1414,7 @@ namespace facebook { class JSI_EXPORT NativeImagePickerIOSSpecJSI : public ObjCTurboModule { public: - NativeImagePickerIOSSpecJSI(id instance, std::shared_ptr jsInvoker, std::shared_ptr nativeInvoker, id perfLogger); + NativeImagePickerIOSSpecJSI(const ObjCTurboModule::InitParams ¶ms); }; } // namespace react @@ -1456,7 +1456,7 @@ namespace facebook { class JSI_EXPORT NativeImageStoreSpecJSI : public ObjCTurboModule { public: - NativeImageStoreSpecJSI(id instance, std::shared_ptr jsInvoker, std::shared_ptr nativeInvoker, id perfLogger); + NativeImageStoreSpecJSI(const ObjCTurboModule::InitParams ¶ms); }; } // namespace react @@ -1475,7 +1475,7 @@ namespace facebook { class JSI_EXPORT NativeJSCHeapCaptureSpecJSI : public ObjCTurboModule { public: - NativeJSCHeapCaptureSpecJSI(id instance, std::shared_ptr jsInvoker, std::shared_ptr nativeInvoker, id perfLogger); + NativeJSCHeapCaptureSpecJSI(const ObjCTurboModule::InitParams ¶ms); }; } // namespace react @@ -1495,7 +1495,7 @@ namespace facebook { class JSI_EXPORT NativeJSCSamplingProfilerSpecJSI : public ObjCTurboModule { public: - NativeJSCSamplingProfilerSpecJSI(id instance, std::shared_ptr jsInvoker, std::shared_ptr nativeInvoker, id perfLogger); + NativeJSCSamplingProfilerSpecJSI(const ObjCTurboModule::InitParams ¶ms); }; } // namespace react @@ -1546,7 +1546,7 @@ namespace facebook { class JSI_EXPORT NativeJSDevSupportSpecJSI : public ObjCTurboModule { public: - NativeJSDevSupportSpecJSI(id instance, std::shared_ptr jsInvoker, std::shared_ptr nativeInvoker, id perfLogger); + NativeJSDevSupportSpecJSI(const ObjCTurboModule::InitParams ¶ms); }; } // namespace react @@ -1565,7 +1565,7 @@ namespace facebook { class JSI_EXPORT NativeKeyboardObserverSpecJSI : public ObjCTurboModule { public: - NativeKeyboardObserverSpecJSI(id instance, std::shared_ptr jsInvoker, std::shared_ptr nativeInvoker, id perfLogger); + NativeKeyboardObserverSpecJSI(const ObjCTurboModule::InitParams ¶ms); }; } // namespace react @@ -1615,7 +1615,7 @@ namespace facebook { class JSI_EXPORT NativeLinkingSpecJSI : public ObjCTurboModule { public: - NativeLinkingSpecJSI(id instance, std::shared_ptr jsInvoker, std::shared_ptr nativeInvoker, id perfLogger); + NativeLinkingSpecJSI(const ObjCTurboModule::InitParams ¶ms); }; } // namespace react @@ -1634,7 +1634,7 @@ namespace facebook { class JSI_EXPORT NativeLogBoxSpecJSI : public ObjCTurboModule { public: - NativeLogBoxSpecJSI(id instance, std::shared_ptr jsInvoker, std::shared_ptr nativeInvoker, id perfLogger); + NativeLogBoxSpecJSI(const ObjCTurboModule::InitParams ¶ms); }; } // namespace react @@ -1653,7 +1653,7 @@ namespace facebook { class JSI_EXPORT NativeModalManagerSpecJSI : public ObjCTurboModule { public: - NativeModalManagerSpecJSI(id instance, std::shared_ptr jsInvoker, std::shared_ptr nativeInvoker, id perfLogger); + NativeModalManagerSpecJSI(const ObjCTurboModule::InitParams ¶ms); }; } // namespace react @@ -1683,7 +1683,7 @@ namespace facebook { class JSI_EXPORT NativeNetworkingAndroidSpecJSI : public ObjCTurboModule { public: - NativeNetworkingAndroidSpecJSI(id instance, std::shared_ptr jsInvoker, std::shared_ptr nativeInvoker, id perfLogger); + NativeNetworkingAndroidSpecJSI(const ObjCTurboModule::InitParams ¶ms); }; } // namespace react @@ -1729,7 +1729,7 @@ namespace facebook { class JSI_EXPORT NativeNetworkingIOSSpecJSI : public ObjCTurboModule { public: - NativeNetworkingIOSSpecJSI(id instance, std::shared_ptr jsInvoker, std::shared_ptr nativeInvoker, id perfLogger); + NativeNetworkingIOSSpecJSI(const ObjCTurboModule::InitParams ¶ms); }; } // namespace react @@ -1758,7 +1758,7 @@ namespace facebook { class JSI_EXPORT NativePermissionsAndroidSpecJSI : public ObjCTurboModule { public: - NativePermissionsAndroidSpecJSI(id instance, std::shared_ptr jsInvoker, std::shared_ptr nativeInvoker, id perfLogger); + NativePermissionsAndroidSpecJSI(const ObjCTurboModule::InitParams ¶ms); }; } // namespace react @@ -1845,7 +1845,7 @@ namespace facebook { class JSI_EXPORT NativePlatformConstantsAndroidSpecJSI : public ObjCTurboModule { public: - NativePlatformConstantsAndroidSpecJSI(id instance, std::shared_ptr jsInvoker, std::shared_ptr nativeInvoker, id perfLogger); + NativePlatformConstantsAndroidSpecJSI(const ObjCTurboModule::InitParams ¶ms); }; } // namespace react @@ -1928,7 +1928,7 @@ namespace facebook { class JSI_EXPORT NativePlatformConstantsIOSSpecJSI : public ObjCTurboModule { public: - NativePlatformConstantsIOSSpecJSI(id instance, std::shared_ptr jsInvoker, std::shared_ptr nativeInvoker, id perfLogger); + NativePlatformConstantsIOSSpecJSI(const ObjCTurboModule::InitParams ¶ms); }; } // namespace react @@ -2026,7 +2026,7 @@ namespace facebook { class JSI_EXPORT NativePushNotificationManagerIOSSpecJSI : public ObjCTurboModule { public: - NativePushNotificationManagerIOSSpecJSI(id instance, std::shared_ptr jsInvoker, std::shared_ptr nativeInvoker, id perfLogger); + NativePushNotificationManagerIOSSpecJSI(const ObjCTurboModule::InitParams ¶ms); }; } // namespace react @@ -2046,7 +2046,7 @@ namespace facebook { class JSI_EXPORT NativeRedBoxSpecJSI : public ObjCTurboModule { public: - NativeRedBoxSpecJSI(id instance, std::shared_ptr jsInvoker, std::shared_ptr nativeInvoker, id perfLogger); + NativeRedBoxSpecJSI(const ObjCTurboModule::InitParams ¶ms); }; } // namespace react @@ -2069,7 +2069,7 @@ namespace facebook { class JSI_EXPORT NativeSegmentFetcherSpecJSI : public ObjCTurboModule { public: - NativeSegmentFetcherSpecJSI(id instance, std::shared_ptr jsInvoker, std::shared_ptr nativeInvoker, id perfLogger); + NativeSegmentFetcherSpecJSI(const ObjCTurboModule::InitParams ¶ms); }; } // namespace react @@ -2118,7 +2118,7 @@ namespace facebook { class JSI_EXPORT NativeSettingsManagerSpecJSI : public ObjCTurboModule { public: - NativeSettingsManagerSpecJSI(id instance, std::shared_ptr jsInvoker, std::shared_ptr nativeInvoker, id perfLogger); + NativeSettingsManagerSpecJSI(const ObjCTurboModule::InitParams ¶ms); }; } // namespace react @@ -2156,7 +2156,7 @@ namespace facebook { class JSI_EXPORT NativeShareModuleSpecJSI : public ObjCTurboModule { public: - NativeShareModuleSpecJSI(id instance, std::shared_ptr jsInvoker, std::shared_ptr nativeInvoker, id perfLogger); + NativeShareModuleSpecJSI(const ObjCTurboModule::InitParams ¶ms); }; } // namespace react @@ -2174,7 +2174,7 @@ namespace facebook { class JSI_EXPORT NativeSoundManagerSpecJSI : public ObjCTurboModule { public: - NativeSoundManagerSpecJSI(id instance, std::shared_ptr jsInvoker, std::shared_ptr nativeInvoker, id perfLogger); + NativeSoundManagerSpecJSI(const ObjCTurboModule::InitParams ¶ms); }; } // namespace react @@ -2221,7 +2221,7 @@ namespace facebook { class JSI_EXPORT NativeSourceCodeSpecJSI : public ObjCTurboModule { public: - NativeSourceCodeSpecJSI(id instance, std::shared_ptr jsInvoker, std::shared_ptr nativeInvoker, id perfLogger); + NativeSourceCodeSpecJSI(const ObjCTurboModule::InitParams ¶ms); }; } // namespace react @@ -2274,7 +2274,7 @@ namespace facebook { class JSI_EXPORT NativeStatusBarManagerAndroidSpecJSI : public ObjCTurboModule { public: - NativeStatusBarManagerAndroidSpecJSI(id instance, std::shared_ptr jsInvoker, std::shared_ptr nativeInvoker, id perfLogger); + NativeStatusBarManagerAndroidSpecJSI(const ObjCTurboModule::InitParams ¶ms); }; } // namespace react @@ -2346,7 +2346,7 @@ namespace facebook { class JSI_EXPORT NativeStatusBarManagerIOSSpecJSI : public ObjCTurboModule { public: - NativeStatusBarManagerIOSSpecJSI(id instance, std::shared_ptr jsInvoker, std::shared_ptr nativeInvoker, id perfLogger); + NativeStatusBarManagerIOSSpecJSI(const ObjCTurboModule::InitParams ¶ms); }; } // namespace react @@ -2365,7 +2365,7 @@ namespace facebook { class JSI_EXPORT NativeTVNavigationEventEmitterSpecJSI : public ObjCTurboModule { public: - NativeTVNavigationEventEmitterSpecJSI(id instance, std::shared_ptr jsInvoker, std::shared_ptr nativeInvoker, id perfLogger); + NativeTVNavigationEventEmitterSpecJSI(const ObjCTurboModule::InitParams ¶ms); }; } // namespace react @@ -2404,7 +2404,7 @@ namespace facebook { class JSI_EXPORT NativeTimePickerAndroidSpecJSI : public ObjCTurboModule { public: - NativeTimePickerAndroidSpecJSI(id instance, std::shared_ptr jsInvoker, std::shared_ptr nativeInvoker, id perfLogger); + NativeTimePickerAndroidSpecJSI(const ObjCTurboModule::InitParams ¶ms); }; } // namespace react @@ -2445,7 +2445,7 @@ namespace facebook { class JSI_EXPORT NativeTimingSpecJSI : public ObjCTurboModule { public: - NativeTimingSpecJSI(id instance, std::shared_ptr jsInvoker, std::shared_ptr nativeInvoker, id perfLogger); + NativeTimingSpecJSI(const ObjCTurboModule::InitParams ¶ms); }; } // namespace react @@ -2506,7 +2506,7 @@ namespace facebook { class JSI_EXPORT NativeToastAndroidSpecJSI : public ObjCTurboModule { public: - NativeToastAndroidSpecJSI(id instance, std::shared_ptr jsInvoker, std::shared_ptr nativeInvoker, id perfLogger); + NativeToastAndroidSpecJSI(const ObjCTurboModule::InitParams ¶ms); }; } // namespace react @@ -2610,7 +2610,7 @@ namespace facebook { class JSI_EXPORT NativeUIManagerSpecJSI : public ObjCTurboModule { public: - NativeUIManagerSpecJSI(id instance, std::shared_ptr jsInvoker, std::shared_ptr nativeInvoker, id perfLogger); + NativeUIManagerSpecJSI(const ObjCTurboModule::InitParams ¶ms); }; } // namespace react @@ -2631,7 +2631,7 @@ namespace facebook { class JSI_EXPORT NativeVibrationSpecJSI : public ObjCTurboModule { public: - NativeVibrationSpecJSI(id instance, std::shared_ptr jsInvoker, std::shared_ptr nativeInvoker, id perfLogger); + NativeVibrationSpecJSI(const ObjCTurboModule::InitParams ¶ms); }; } // namespace react @@ -2678,7 +2678,7 @@ namespace facebook { class JSI_EXPORT NativeWebSocketModuleSpecJSI : public ObjCTurboModule { public: - NativeWebSocketModuleSpecJSI(id instance, std::shared_ptr jsInvoker, std::shared_ptr nativeInvoker, id perfLogger); + NativeWebSocketModuleSpecJSI(const ObjCTurboModule::InitParams ¶ms); }; } // namespace react diff --git a/Libraries/Image/ImageViewNativeComponent.js b/Libraries/Image/ImageViewNativeComponent.js index b5dea64e6f19f7..8a6c0b25aab2e4 100644 --- a/Libraries/Image/ImageViewNativeComponent.js +++ b/Libraries/Image/ImageViewNativeComponent.js @@ -18,7 +18,7 @@ import type {HostComponent} from '../Renderer/shims/ReactNativeTypes'; import type {ImageProps} from './ImageProps'; import type {ViewProps} from '../Components/View/ViewPropTypes'; import type {ImageStyleProp} from '../StyleSheet/StyleSheet'; -import type {ColorValue} from '../StyleSheet/StyleSheetTypes'; +import type {ColorValue} from '../StyleSheet/StyleSheet'; import ImageViewViewConfig from './ImageViewViewConfig'; const ReactNativeViewConfigRegistry = require('../Renderer/shims/ReactNativeViewConfigRegistry'); diff --git a/Libraries/Image/RCTImageEditingManager.mm b/Libraries/Image/RCTImageEditingManager.mm index 6ea5a27d89cc5c..4ef22667c68d1b 100644 --- a/Libraries/Image/RCTImageEditingManager.mm +++ b/Libraries/Image/RCTImageEditingManager.mm @@ -92,12 +92,9 @@ @implementation RCTImageEditingManager }]; } -- (std::shared_ptr) - getTurboModuleWithJsInvoker:(std::shared_ptr)jsInvoker - nativeInvoker:(std::shared_ptr)nativeInvoker - perfLogger:(id)perfLogger +- (std::shared_ptr)getTurboModule:(const facebook::react::ObjCTurboModule::InitParams &)params { - return std::make_shared(self, jsInvoker, nativeInvoker, perfLogger); + return std::make_shared(params); } @end diff --git a/Libraries/Image/RCTImageLoader.mm b/Libraries/Image/RCTImageLoader.mm index 0efb2cb0fe2fc3..ecde0c638fd44e 100644 --- a/Libraries/Image/RCTImageLoader.mm +++ b/Libraries/Image/RCTImageLoader.mm @@ -1172,12 +1172,9 @@ - (void)cancelRequest:(id)requestToken } } -- (std::shared_ptr) - getTurboModuleWithJsInvoker:(std::shared_ptr)jsInvoker - nativeInvoker:(std::shared_ptr)nativeInvoker - perfLogger:(id)perfLogger +- (std::shared_ptr)getTurboModule:(const facebook::react::ObjCTurboModule::InitParams &)params { - return std::make_shared(self, jsInvoker, nativeInvoker, perfLogger); + return std::make_shared(params); } RCT_EXPORT_METHOD(getSize:(NSString *)uri resolve:(RCTPromiseResolveBlock)resolve reject:(RCTPromiseRejectBlock)reject) diff --git a/Libraries/Image/RCTImageStoreManager.mm b/Libraries/Image/RCTImageStoreManager.mm index 9fc7f38432eb5e..4a0940b69fa8b0 100644 --- a/Libraries/Image/RCTImageStoreManager.mm +++ b/Libraries/Image/RCTImageStoreManager.mm @@ -236,12 +236,9 @@ - (void)getImageForTag:(NSString *)imageTag withBlock:(void (^)(UIImage *image)) }); } -- (std::shared_ptr) - getTurboModuleWithJsInvoker:(std::shared_ptr)jsInvoker - nativeInvoker:(std::shared_ptr)nativeInvoker - perfLogger:(id)perfLogger +- (std::shared_ptr)getTurboModule:(const facebook::react::ObjCTurboModule::InitParams &)params { - return std::make_shared(self, jsInvoker, nativeInvoker, perfLogger); + return std::make_shared(params); } @end diff --git a/Libraries/Image/RCTUIImageViewAnimated.m b/Libraries/Image/RCTUIImageViewAnimated.m index ecc230fdd441d5..ade3659a0fcd58 100644 --- a/Libraries/Image/RCTUIImageViewAnimated.m +++ b/Libraries/Image/RCTUIImageViewAnimated.m @@ -189,7 +189,7 @@ - (void)displayDidRefresh:(CADisplayLink *)displayLink // TODO: `displayLink.frameInterval` is not available on UIKitForMac NSTimeInterval duration = displayLink.duration; #else - NSTimeInterval duration = displayLink.duration * displayLink.frameInterval; + NSTimeInterval duration = displayLink.duration * displayLink.preferredFramesPerSecond; #endif NSUInteger totalFrameCount = self.totalFrameCount; NSUInteger currentFrameIndex = self.currentFrameIndex; diff --git a/Libraries/Image/__tests__/__snapshots__/Image-test.js.snap b/Libraries/Image/__tests__/__snapshots__/Image-test.js.snap index 2d857eafdb1d0f..1bcd31396ff7d4 100644 --- a/Libraries/Image/__tests__/__snapshots__/Image-test.js.snap +++ b/Libraries/Image/__tests__/__snapshots__/Image-test.js.snap @@ -31,7 +31,7 @@ exports[` should render as when not mocked 1`] = ` `; exports[` should shallow render as when not mocked 1`] = ` -) - getTurboModuleWithJsInvoker:(std::shared_ptr)jsInvoker - nativeInvoker:(std::shared_ptr)nativeInvoker - perfLogger:(id)perfLogger +- (std::shared_ptr)getTurboModule:(const facebook::react::ObjCTurboModule::InitParams &)params { - return std::make_shared(self, jsInvoker, nativeInvoker, perfLogger); + return std::make_shared(params); } @end diff --git a/Libraries/Modal/Modal.js b/Libraries/Modal/Modal.js index 6f9f8569af2039..0dfe53ab1db7bf 100644 --- a/Libraries/Modal/Modal.js +++ b/Libraries/Modal/Modal.js @@ -259,7 +259,7 @@ class Modal extends React.Component { supportedOrientations={this.props.supportedOrientations} onOrientationChange={this.props.onOrientationChange}> - + {innerChildren} diff --git a/Libraries/Modal/__tests__/__snapshots__/Modal-test.js.snap b/Libraries/Modal/__tests__/__snapshots__/Modal-test.js.snap index 8c49d6f4aa0821..807bc29ca552b9 100644 --- a/Libraries/Modal/__tests__/__snapshots__/Modal-test.js.snap +++ b/Libraries/Modal/__tests__/__snapshots__/Modal-test.js.snap @@ -23,6 +23,7 @@ exports[` should render as when not mocked 1`] = ` } > )event }); } -- (std::shared_ptr) - getTurboModuleWithJsInvoker:(std::shared_ptr)jsInvoker - nativeInvoker:(std::shared_ptr)nativeInvoker - perfLogger:(id)perfLogger +- (std::shared_ptr)getTurboModule:(const facebook::react::ObjCTurboModule::InitParams &)params { - return std::make_shared(self, jsInvoker, nativeInvoker, perfLogger); + return std::make_shared(params); } @end diff --git a/Libraries/Network/RCTNetworking.mm b/Libraries/Network/RCTNetworking.mm index 2989276aca93b2..b857c43a9086e4 100644 --- a/Libraries/Network/RCTNetworking.mm +++ b/Libraries/Network/RCTNetworking.mm @@ -714,12 +714,9 @@ - (RCTNetworkTask *)networkTaskWithRequest:(NSURLRequest *)request completionBlo responseSender(@[@YES]); } -- (std::shared_ptr) - getTurboModuleWithJsInvoker:(std::shared_ptr)jsInvoker - nativeInvoker:(std::shared_ptr)nativeInvoker - perfLogger:(id)perfLogger +- (std::shared_ptr)getTurboModule:(const facebook::react::ObjCTurboModule::InitParams &)params { - return std::make_shared(self, jsInvoker, nativeInvoker, perfLogger); + return std::make_shared(params); } @end diff --git a/Libraries/NewAppScreen/components/Colors.js b/Libraries/NewAppScreen/components/Colors.js index 19416c4cb4b094..471751de7580e4 100644 --- a/Libraries/NewAppScreen/components/Colors.js +++ b/Libraries/NewAppScreen/components/Colors.js @@ -16,5 +16,6 @@ export default { lighter: '#F3F3F3', light: '#DAE1E7', dark: '#444', + darker: '#222', black: '#000', }; diff --git a/Libraries/NewAppScreen/components/Header.js b/Libraries/NewAppScreen/components/Header.js index a2776b0b47f5d9..b69fa5a109149e 100644 --- a/Libraries/NewAppScreen/components/Header.js +++ b/Libraries/NewAppScreen/components/Header.js @@ -11,25 +11,40 @@ 'use strict'; import Colors from './Colors'; import type {Node} from 'react'; -import {Text, StyleSheet, ImageBackground} from 'react-native'; +import {ImageBackground, StyleSheet, Text, useColorScheme} from 'react-native'; import React from 'react'; -const Header = (): Node => ( - - Welcome to React - -); +const Header = (): Node => { + const isDarkMode = useColorScheme() === 'dark'; + return ( + + + Welcome to React + + + ); +}; const styles = StyleSheet.create({ background: { paddingBottom: 40, paddingTop: 96, paddingHorizontal: 32, - backgroundColor: Colors.lighter, }, logo: { opacity: 0.2, @@ -48,7 +63,6 @@ const styles = StyleSheet.create({ fontSize: 40, fontWeight: '600', textAlign: 'center', - color: Colors.black, }, }); diff --git a/Libraries/NewAppScreen/components/LearnMoreLinks.js b/Libraries/NewAppScreen/components/LearnMoreLinks.js index 9effd49e172093..9e12acc8ead130 100644 --- a/Libraries/NewAppScreen/components/LearnMoreLinks.js +++ b/Libraries/NewAppScreen/components/LearnMoreLinks.js @@ -12,8 +12,14 @@ import Colors from './Colors'; import type {Node} from 'react'; import openURLInBrowser from 'react-native/Libraries/Core/Devtools/openURLInBrowser'; -import {View, Text, StyleSheet, TouchableOpacity} from 'react-native'; -import React from 'react'; +import { + StyleSheet, + Text, + TouchableOpacity, + useColorScheme, + View, +} from 'react-native'; +import React, {Fragment} from 'react'; const links = [ { @@ -70,24 +76,40 @@ const links = [ }, ]; -const LinkList = (): Node => ( - - {links.map(({id, title, link, description}) => { - return ( - - +const LinkList = (): Node => { + const isDarkMode = useColorScheme() === 'dark'; + return ( + + {links.map(({id, title, link, description}) => ( + + openURLInBrowser(link)} style={styles.linkContainer}> {title} - {description} + + {description} + - - ); - })} - -); + + ))} + + ); +}; const styles = StyleSheet.create({ container: { @@ -112,11 +134,9 @@ const styles = StyleSheet.create({ paddingVertical: 16, fontWeight: '400', fontSize: 18, - color: Colors.dark, }, separator: { - backgroundColor: Colors.light, - height: 1, + height: StyleSheet.hairlineWidth, }, }); diff --git a/Libraries/Pressability/PressabilityDebug.js b/Libraries/Pressability/PressabilityDebug.js index 168a8c1d110163..dd8ecdd2d172e0 100644 --- a/Libraries/Pressability/PressabilityDebug.js +++ b/Libraries/Pressability/PressabilityDebug.js @@ -11,7 +11,7 @@ 'use strict'; import normalizeColor from '../StyleSheet/normalizeColor'; -import type {ColorValue} from '../StyleSheet/StyleSheetTypes'; +import type {ColorValue} from '../StyleSheet/StyleSheet'; import Touchable from '../Components/Touchable/Touchable'; import View from '../Components/View/View'; diff --git a/Libraries/PushNotificationIOS/RCTPushNotificationManager.mm b/Libraries/PushNotificationIOS/RCTPushNotificationManager.mm index e26d4366fac9c1..43938c9eaf7ec7 100644 --- a/Libraries/PushNotificationIOS/RCTPushNotificationManager.mm +++ b/Libraries/PushNotificationIOS/RCTPushNotificationManager.mm @@ -749,12 +749,9 @@ - (void)handleRemoteNotificationRegistrationError:(NSNotification *)notification #endif //TARGET_OS_TV / TARGET_OS_UIKITFORMAC -- (std::shared_ptr) - getTurboModuleWithJsInvoker:(std::shared_ptr)jsInvoker - nativeInvoker:(std::shared_ptr)nativeInvoker - perfLogger:(id)perfLogger +- (std::shared_ptr)getTurboModule:(const facebook::react::ObjCTurboModule::InitParams &)params { - return std::make_shared(self, jsInvoker, nativeInvoker, perfLogger); + return std::make_shared(params); } @end diff --git a/Libraries/ReactNative/AppContainer.js b/Libraries/ReactNative/AppContainer.js index 22e3bd3bef1883..93c83fba66350b 100644 --- a/Libraries/ReactNative/AppContainer.js +++ b/Libraries/ReactNative/AppContainer.js @@ -14,7 +14,7 @@ const EmitterSubscription = require('../vendor/emitter/EmitterSubscription'); const PropTypes = require('prop-types'); const RCTDeviceEventEmitter = require('../EventEmitter/RCTDeviceEventEmitter'); const React = require('react'); -const RootTagContext = require('./RootTagContext'); +import {RootTagContext, createRootTag} from './RootTag'; const StyleSheet = require('../StyleSheet/StyleSheet'); const View = require('../Components/View/View'); @@ -128,7 +128,7 @@ class AppContainer extends React.Component { ); } return ( - + {!this.state.hasError && innerView} {this.state.inspector} diff --git a/Libraries/ReactNative/PaperUIManager.js b/Libraries/ReactNative/PaperUIManager.js index be399d2b8d1ba4..a3e850e06c90c3 100644 --- a/Libraries/ReactNative/PaperUIManager.js +++ b/Libraries/ReactNative/PaperUIManager.js @@ -31,10 +31,10 @@ function getConstants(): Object { return NativeUIManagerConstants; } +/* $FlowFixMe(>=0.123.0 site=react_native_fb) This comment suppresses an error + * found when Flow v0.123.0 was deployed. To see the error, delete this comment + * and run Flow. */ const UIManagerJS = { - /* $FlowFixMe(>=0.111.0 site=react_native_fb) This comment suppresses an - * error found when Flow v0.111 was deployed. To see the error, delete this - * comment and run Flow. */ ...NativeUIManager, getConstants(): Object { return getConstants(); diff --git a/Libraries/ReactNative/RootTag.js b/Libraries/ReactNative/RootTag.js new file mode 100644 index 00000000000000..24b151544d43b2 --- /dev/null +++ b/Libraries/ReactNative/RootTag.js @@ -0,0 +1,27 @@ +/** + * Copyright (c) Facebook, Inc. and its affiliates. + * + * This source code is licensed under the MIT license found in the + * LICENSE file in the root directory of this source tree. + * + * @flow strict + * @format + */ + +'use strict'; + +import * as React from 'react'; + +// TODO: Make this into an opaque type. +export type RootTag = number; + +export const RootTagContext: React$Context = React.createContext( + 0, +); + +/** + * Intended to only be used by `AppContainer`. + */ +export function createRootTag(rootTag: number): RootTag { + return rootTag; +} diff --git a/Libraries/ReactNative/RootTagContext.js b/Libraries/ReactNative/RootTagContext.js deleted file mode 100644 index ca5ed03932fd5c..00000000000000 --- a/Libraries/ReactNative/RootTagContext.js +++ /dev/null @@ -1,15 +0,0 @@ -/** - * Copyright (c) Facebook, Inc. and its affiliates. - * - * This source code is licensed under the MIT license found in the - * LICENSE file in the root directory of this source tree. - * - * @flow strict - * @format - */ - -'use strict'; - -const React = require('react'); - -module.exports = (React.createContext(0): React$Context); diff --git a/Libraries/Settings/RCTSettingsManager.mm b/Libraries/Settings/RCTSettingsManager.mm index cd5ddbf99d562c..14520d88627f55 100644 --- a/Libraries/Settings/RCTSettingsManager.mm +++ b/Libraries/Settings/RCTSettingsManager.mm @@ -142,12 +142,9 @@ - (void)userDefaultsDidChange:(NSNotification *)note } #endif // ]TODO(macOS GH#774) -- (std::shared_ptr) - getTurboModuleWithJsInvoker:(std::shared_ptr)jsInvoker - nativeInvoker:(std::shared_ptr)nativeInvoker - perfLogger:(id)perfLogger +- (std::shared_ptr)getTurboModule:(const facebook::react::ObjCTurboModule::InitParams &)params { - return std::make_shared(self, jsInvoker, nativeInvoker, perfLogger); + return std::make_shared(params); } @end diff --git a/Libraries/StyleSheet/PlatformColorValueTypes.android.js b/Libraries/StyleSheet/PlatformColorValueTypes.android.js index 1458a9b4396d54..82e7e55ec12889 100644 --- a/Libraries/StyleSheet/PlatformColorValueTypes.android.js +++ b/Libraries/StyleSheet/PlatformColorValueTypes.android.js @@ -10,7 +10,7 @@ 'use strict'; -import type {ColorValue} from './StyleSheetTypes'; +import type {ColorValue} from './StyleSheet'; import type {ProcessedColorValue} from './processColor'; export opaque type NativeColorValue = { @@ -21,10 +21,6 @@ export const PlatformColor = (...names: Array): ColorValue => { return {resource_paths: names}; }; -export const ColorAndroidPrivate = (color: string): ColorValue => { - return {resource_paths: [color]}; -}; - export const normalizeColorObject = ( color: NativeColorValue, ): ?ProcessedColorValue => { diff --git a/Libraries/StyleSheet/PlatformColorValueTypes.ios.js b/Libraries/StyleSheet/PlatformColorValueTypes.ios.js index d329db9316f2d1..d2707ed5dfb648 100644 --- a/Libraries/StyleSheet/PlatformColorValueTypes.ios.js +++ b/Libraries/StyleSheet/PlatformColorValueTypes.ios.js @@ -10,7 +10,7 @@ 'use strict'; -import type {ColorValue} from './StyleSheetTypes'; +import type {ColorValue} from './StyleSheet'; import type {ProcessedColorValue} from './processColor'; export opaque type NativeColorValue = { diff --git a/Libraries/StyleSheet/PlatformColorValueTypes.macos.js b/Libraries/StyleSheet/PlatformColorValueTypes.macos.js index 2dd8985a07b967..876e668f0fcbc9 100644 --- a/Libraries/StyleSheet/PlatformColorValueTypes.macos.js +++ b/Libraries/StyleSheet/PlatformColorValueTypes.macos.js @@ -10,7 +10,7 @@ // [TODO(macOS GH#774) 'use strict'; -import type {ColorValue} from './StyleSheetTypes'; +import type {ColorValue} from './StyleSheet'; import type {ProcessedColorValue} from './processColor'; export opaque type NativeColorValue = { diff --git a/Libraries/StyleSheet/PlatformColorValueTypesAndroid.android.js b/Libraries/StyleSheet/PlatformColorValueTypesAndroid.android.js deleted file mode 100644 index 58f551098fb5db..00000000000000 --- a/Libraries/StyleSheet/PlatformColorValueTypesAndroid.android.js +++ /dev/null @@ -1,18 +0,0 @@ -/** - * Copyright (c) Facebook, Inc. and its affiliates. - * - * This source code is licensed under the MIT license found in the - * LICENSE file in the root directory of this source tree. - * - * @format - * @flow strict-local - */ - -'use strict'; - -import type {ColorValue} from './StyleSheetTypes'; -import {ColorAndroidPrivate} from './PlatformColorValueTypes'; - -export const ColorAndroid = (color: string): ColorValue => { - return ColorAndroidPrivate(color); -}; diff --git a/Libraries/StyleSheet/PlatformColorValueTypesAndroid.js b/Libraries/StyleSheet/PlatformColorValueTypesAndroid.js deleted file mode 100644 index 647000b3b1e9d0..00000000000000 --- a/Libraries/StyleSheet/PlatformColorValueTypesAndroid.js +++ /dev/null @@ -1,17 +0,0 @@ -/** - * Copyright (c) Facebook, Inc. and its affiliates. - * - * This source code is licensed under the MIT license found in the - * LICENSE file in the root directory of this source tree. - * - * @format - * @flow strict-local - */ - -'use strict'; - -import type {ColorValue} from './StyleSheetTypes'; - -export const ColorAndroid = (color: string): ColorValue => { - throw new Error('ColorAndroid is not available on this platform.'); -}; diff --git a/Libraries/StyleSheet/PlatformColorValueTypesIOS.ios.js b/Libraries/StyleSheet/PlatformColorValueTypesIOS.ios.js index 2b21c61f3df19e..ebdbc7a078ac7b 100644 --- a/Libraries/StyleSheet/PlatformColorValueTypesIOS.ios.js +++ b/Libraries/StyleSheet/PlatformColorValueTypesIOS.ios.js @@ -10,7 +10,7 @@ 'use strict'; -import type {ColorValue} from './StyleSheetTypes'; +import type {ColorValue} from './StyleSheet'; import {DynamicColorIOSPrivate} from './PlatformColorValueTypes'; export type DynamicColorIOSTuple = { diff --git a/Libraries/StyleSheet/PlatformColorValueTypesIOS.js b/Libraries/StyleSheet/PlatformColorValueTypesIOS.js index cc9aa69e80f96b..a7f27e53e50103 100644 --- a/Libraries/StyleSheet/PlatformColorValueTypesIOS.js +++ b/Libraries/StyleSheet/PlatformColorValueTypesIOS.js @@ -10,7 +10,7 @@ 'use strict'; -import type {ColorValue} from './StyleSheetTypes'; +import type {ColorValue} from './StyleSheet'; export type DynamicColorIOSTuple = { light: ColorValue, diff --git a/Libraries/StyleSheet/PlatformColorValueTypesMacOS.js b/Libraries/StyleSheet/PlatformColorValueTypesMacOS.js index 7b8e5b6ee6d4c9..8a2c2e8eab684f 100644 --- a/Libraries/StyleSheet/PlatformColorValueTypesMacOS.js +++ b/Libraries/StyleSheet/PlatformColorValueTypesMacOS.js @@ -10,7 +10,7 @@ // [TODO(macOS GH#774) 'use strict'; -import type {ColorValue} from './StyleSheetTypes'; +import type {ColorValue} from './StyleSheet'; export type DynamicColorMacOSTuple = { light: ColorValue, diff --git a/Libraries/StyleSheet/PlatformColorValueTypesMacOS.macos.js b/Libraries/StyleSheet/PlatformColorValueTypesMacOS.macos.js index cfe6749398adab..76d4cfd3782896 100644 --- a/Libraries/StyleSheet/PlatformColorValueTypesMacOS.macos.js +++ b/Libraries/StyleSheet/PlatformColorValueTypesMacOS.macos.js @@ -10,7 +10,7 @@ // [TODO(macOS GH#774) 'use strict'; -import type {ColorValue} from './StyleSheetTypes'; +import type {ColorValue} from './StyleSheet'; import { DynamicColorMacOSPrivate, ColorWithSystemEffectMacOSPrivate, diff --git a/Libraries/StyleSheet/StyleSheet.js b/Libraries/StyleSheet/StyleSheet.js index 54094d8bd4929e..c4de35ce721987 100644 --- a/Libraries/StyleSheet/StyleSheet.js +++ b/Libraries/StyleSheet/StyleSheet.js @@ -17,6 +17,7 @@ const StyleSheetValidation = require('./StyleSheetValidation'); const flatten = require('./flattenStyle'); import type { + ____ColorValue_Internal, ____Styles_Internal, ____DangerouslyImpreciseStyle_Internal, ____DangerouslyImpreciseStyleProp_Internal, @@ -28,6 +29,15 @@ import type { ____ImageStyleProp_Internal, } from './StyleSheetTypes'; +/** + * This type should be used as the type for anything that is a color. It is + * most useful when using DynamicColorIOS which can be a string or a dynamic + * color object. + * + * type props = {backgroundColor: ColorValue}; + */ +export type ColorValue = ____ColorValue_Internal; + /** * This type should be used as the type for a prop that is passed through * to a 's `style` prop. This ensures call sites of the component diff --git a/Libraries/StyleSheet/StyleSheetTypes.js b/Libraries/StyleSheet/StyleSheetTypes.js index 39ee7da194c656..ba3ca816f6534b 100644 --- a/Libraries/StyleSheet/StyleSheetTypes.js +++ b/Libraries/StyleSheet/StyleSheetTypes.js @@ -14,9 +14,9 @@ const AnimatedNode = require('../Animated/src/nodes/AnimatedNode'); import type {NativeColorValue} from './PlatformColorValueTypes'; -export type ColorValue = null | string | NativeColorValue; +export type ____ColorValue_Internal = null | string | NativeColorValue; -export type ColorArrayValue = null | $ReadOnlyArray; +export type ColorArrayValue = null | $ReadOnlyArray<____ColorValue_Internal>; export type PointValue = {| x: number, y: number, @@ -530,7 +530,7 @@ export type ____ShadowStyle_Internal = $ReadOnly<{| * Sets the drop shadow color * @platform ios */ - shadowColor?: ColorValue, + shadowColor?: ____ColorValue_Internal, /** * Sets the drop shadow offset * @platform ios @@ -556,14 +556,14 @@ export type ____ViewStyle_Internal = $ReadOnly<{| ...$Exact<____ShadowStyle_Internal>, ...$Exact<____TransformStyle_Internal>, backfaceVisibility?: 'visible' | 'hidden', - backgroundColor?: ColorValue, - borderColor?: ColorValue, - borderBottomColor?: ColorValue, - borderEndColor?: ColorValue, - borderLeftColor?: ColorValue, - borderRightColor?: ColorValue, - borderStartColor?: ColorValue, - borderTopColor?: ColorValue, + backgroundColor?: ____ColorValue_Internal, + borderColor?: ____ColorValue_Internal, + borderBottomColor?: ____ColorValue_Internal, + borderEndColor?: ____ColorValue_Internal, + borderLeftColor?: ____ColorValue_Internal, + borderRightColor?: ____ColorValue_Internal, + borderStartColor?: ____ColorValue_Internal, + borderTopColor?: ____ColorValue_Internal, borderRadius?: number | AnimatedNode, borderBottomEndRadius?: number | AnimatedNode, borderBottomLeftRadius?: number | AnimatedNode, @@ -600,7 +600,7 @@ export type ____FontWeight_Internal = export type ____TextStyle_Internal = $ReadOnly<{| ...$Exact<____ViewStyle_Internal>, - color?: ColorValue, + color?: ____ColorValue_Internal, fontFamily?: string, fontSize?: number, fontStyle?: 'normal' | 'italic', @@ -622,7 +622,7 @@ export type ____TextStyle_Internal = $ReadOnly<{| height: number, |}>, textShadowRadius?: number, - textShadowColor?: ColorValue, + textShadowColor?: ____ColorValue_Internal, letterSpacing?: number, lineHeight?: number, textAlign?: 'auto' | 'left' | 'right' | 'center' | 'justify', @@ -634,7 +634,7 @@ export type ____TextStyle_Internal = $ReadOnly<{| | 'line-through' | 'underline line-through', textDecorationStyle?: 'solid' | 'double' | 'dotted' | 'dashed', - textDecorationColor?: ColorValue, + textDecorationColor?: ____ColorValue_Internal, textTransform?: 'none' | 'capitalize' | 'uppercase' | 'lowercase', writingDirection?: 'auto' | 'ltr' | 'rtl', |}>; @@ -642,14 +642,14 @@ export type ____TextStyle_Internal = $ReadOnly<{| export type ____ImageStyle_Internal = $ReadOnly<{| ...$Exact<____ViewStyle_Internal>, resizeMode?: 'contain' | 'cover' | 'stretch' | 'center' | 'repeat', - tintColor?: ColorValue, + tintColor?: ____ColorValue_Internal, overlayColor?: string, |}>; export type ____DangerouslyImpreciseStyle_Internal = { ...$Exact<____TextStyle_Internal>, +resizeMode?: 'contain' | 'cover' | 'stretch' | 'center' | 'repeat', - +tintColor?: ColorValue, + +tintColor?: ____ColorValue_Internal, +overlayColor?: string, ... }; diff --git a/Libraries/StyleSheet/normalizeColor.js b/Libraries/StyleSheet/normalizeColor.js index eaee5813b177e1..bd7737c5d568b7 100755 --- a/Libraries/StyleSheet/normalizeColor.js +++ b/Libraries/StyleSheet/normalizeColor.js @@ -12,7 +12,7 @@ 'use strict'; -import type {ColorValue} from './StyleSheetTypes'; +import type {ColorValue} from './StyleSheet'; import type {ProcessedColorValue} from './processColor'; function normalizeColor( diff --git a/Libraries/StyleSheet/processColor.js b/Libraries/StyleSheet/processColor.js index 3bfa9679e00a79..93a5c383540ff6 100644 --- a/Libraries/StyleSheet/processColor.js +++ b/Libraries/StyleSheet/processColor.js @@ -14,7 +14,7 @@ const Platform = require('../Utilities/Platform'); const normalizeColor = require('./normalizeColor'); -import type {ColorValue} from './StyleSheetTypes'; +import type {ColorValue} from './StyleSheet'; import type {NativeColorValue} from './PlatformColorValueTypes'; export type ProcessedColorValue = number | NativeColorValue; diff --git a/Libraries/StyleSheet/processColorArray.js b/Libraries/StyleSheet/processColorArray.js index 9bdb026b5bc0c3..0cbbdcd745b6b4 100644 --- a/Libraries/StyleSheet/processColorArray.js +++ b/Libraries/StyleSheet/processColorArray.js @@ -12,7 +12,7 @@ const processColor = require('./processColor'); -import type {ColorValue} from './StyleSheetTypes'; +import type {ColorValue} from './StyleSheet'; import type {ProcessedColorValue} from './processColor'; function processColorArray( diff --git a/Libraries/Text/TextInput/RCTBaseTextInputView.m b/Libraries/Text/TextInput/RCTBaseTextInputView.m index 17d8bf4b09e9f3..ccabbb2e922da0 100644 --- a/Libraries/Text/TextInput/RCTBaseTextInputView.m +++ b/Libraries/Text/TextInput/RCTBaseTextInputView.m @@ -69,7 +69,13 @@ - (void)enforceTextAttributesIfNeeded { if (![self ignoresTextAttributes]) { // TODO(OSS Candidate ISS#2710739) id backedTextInputView = self.backedTextInputView; - backedTextInputView.defaultTextAttributes = [_textAttributes effectiveTextAttributes]; + + NSDictionary *textAttributes = [[_textAttributes effectiveTextAttributes] mutableCopy]; + if ([textAttributes valueForKey:NSForegroundColorAttributeName] == nil) { + [textAttributes setValue:[RCTUIColor blackColor] forKey:NSForegroundColorAttributeName]; // TODO(macOS GH#774) + } + + backedTextInputView.defaultTextAttributes = textAttributes; } // TODO(OSS Candidate ISS#2710739) } diff --git a/Libraries/TurboModule/RCTExport.js b/Libraries/TurboModule/RCTExport.js index f90568d0e5bfc0..bbf236ed452d3d 100644 --- a/Libraries/TurboModule/RCTExport.js +++ b/Libraries/TurboModule/RCTExport.js @@ -34,3 +34,5 @@ export interface DEPRECATED_RCTExport { } export interface TurboModule extends DEPRECATED_RCTExport {} + +export type {RootTag} from '../ReactNative/RootTag.js'; diff --git a/Libraries/TurboModule/samples/NativeSampleTurboModule.js b/Libraries/TurboModule/samples/NativeSampleTurboModule.js index f82a8e810878e5..f9c4c6ef53e393 100644 --- a/Libraries/TurboModule/samples/NativeSampleTurboModule.js +++ b/Libraries/TurboModule/samples/NativeSampleTurboModule.js @@ -10,7 +10,7 @@ 'use strict'; -import type {TurboModule} from '../RCTExport'; +import type {RootTag, TurboModule} from '../RCTExport'; import * as TurboModuleRegistry from '../TurboModuleRegistry'; export interface Spec extends TurboModule { @@ -26,6 +26,7 @@ export interface Spec extends TurboModule { +getString: (arg: string) => string; +getArray: (arg: Array) => Array; +getObject: (arg: Object) => Object; + +getRootTag: (arg: RootTag) => RootTag; +getValue: (x: number, y: string, z: Object) => Object; +getValueWithCallback: (callback: (value: string) => void) => void; +getValueWithPromise: (error: boolean) => Promise; diff --git a/Libraries/Utilities/BackHandler.android.js b/Libraries/Utilities/BackHandler.android.js index 1d2544a1dd1237..ffa6bbfcf95fce 100644 --- a/Libraries/Utilities/BackHandler.android.js +++ b/Libraries/Utilities/BackHandler.android.js @@ -65,11 +65,11 @@ type TBackHandler = {| +exitApp: () => void, +addEventListener: ( eventName: BackPressEventName, - handler: Function, + handler: () => ?boolean, ) => {remove: () => void, ...}, +removeEventListener: ( eventName: BackPressEventName, - handler: Function, + handler: () => ?boolean, ) => void, |}; const BackHandler: TBackHandler = { @@ -89,7 +89,7 @@ const BackHandler: TBackHandler = { */ addEventListener: function( eventName: BackPressEventName, - handler: Function, + handler: () => ?boolean, ): {remove: () => void, ...} { if (_backPressSubscriptions.indexOf(handler) === -1) { _backPressSubscriptions.push(handler); @@ -104,7 +104,7 @@ const BackHandler: TBackHandler = { */ removeEventListener: function( eventName: BackPressEventName, - handler: Function, + handler: () => ?boolean, ): void { if (_backPressSubscriptions.indexOf(handler) !== -1) { _backPressSubscriptions.splice( diff --git a/Libraries/Utilities/BackHandler.ios.js b/Libraries/Utilities/BackHandler.ios.js index 2cf47b1f7a93a8..83441bf5a52b32 100644 --- a/Libraries/Utilities/BackHandler.ios.js +++ b/Libraries/Utilities/BackHandler.ios.js @@ -56,11 +56,11 @@ type TBackHandler = {| +exitApp: () => void, +addEventListener: ( eventName: BackPressEventName, - handler: Function, + handler: () => ?boolean, ) => {remove: () => void, ...}, +removeEventListener: ( eventName: BackPressEventName, - handler: Function, + handler: () => ?boolean, ) => void, |}; @@ -95,7 +95,7 @@ if (Platform.isTV) { addEventListener: function( eventName: BackPressEventName, - handler: Function, + handler: () => ?boolean, ): {remove: () => void, ...} { _backPressSubscriptions.add(handler); return { @@ -105,7 +105,7 @@ if (Platform.isTV) { removeEventListener: function( eventName: BackPressEventName, - handler: Function, + handler: () => ?boolean, ): void { _backPressSubscriptions.delete(handler); }, diff --git a/Libraries/Utilities/__mocks__/BackHandler.js b/Libraries/Utilities/__mocks__/BackHandler.js index 8422b05057c6e5..b90bf09d870fba 100644 --- a/Libraries/Utilities/__mocks__/BackHandler.js +++ b/Libraries/Utilities/__mocks__/BackHandler.js @@ -16,7 +16,7 @@ const BackHandler = { addEventListener: function( eventName: BackPressEventName, - handler: Function, + handler: () => ?boolean, ): {remove: () => void} { _backPressSubscriptions.add(handler); return { @@ -26,7 +26,7 @@ const BackHandler = { removeEventListener: function( eventName: BackPressEventName, - handler: Function, + handler: () => ?boolean, ): void { _backPressSubscriptions.delete(handler); }, diff --git a/Libraries/Vibration/RCTVibration.mm b/Libraries/Vibration/RCTVibration.mm index 2bbf168acd0d9e..3244818c1f742a 100644 --- a/Libraries/Vibration/RCTVibration.mm +++ b/Libraries/Vibration/RCTVibration.mm @@ -30,12 +30,9 @@ - (void)vibrate [self vibrate]; } -- (std::shared_ptr) - getTurboModuleWithJsInvoker:(std::shared_ptr)jsInvoker - nativeInvoker:(std::shared_ptr)nativeInvoker - perfLogger:(id)perfLogger +- (std::shared_ptr)getTurboModule:(const facebook::react::ObjCTurboModule::InitParams &)params { - return std::make_shared(self, jsInvoker, nativeInvoker, perfLogger); + return std::make_shared(params); } RCT_EXPORT_METHOD(vibrateByPattern:(NSArray *)pattern diff --git a/RNTester/Podfile.lock b/RNTester/Podfile.lock index a478efdb9e53e0..f1cc9b2f5fd073 100644 --- a/RNTester/Podfile.lock +++ b/RNTester/Podfile.lock @@ -493,8 +493,8 @@ SPEC CHECKSUMS: CocoaAsyncSocket: 694058e7c0ed05a9e217d1b3c7ded962f4180845 CocoaLibEvent: 2fab71b8bd46dd33ddb959f7928ec5909f838e3f DoubleConversion: 2b45d0f8e156a5b02354c8a4062de64d41ccb4e0 - FBLazyVector: b29a4d29fc5d0f638cf09c60db0a246f444f9bf9 - FBReactNativeSpec: 4c5fe967bd34b30660ff4f35459ba4f6b9e611ef + FBLazyVector: 2a6caf53223741f5f28ef26a4af1b6e8300ce387 + FBReactNativeSpec: 62c59cc87734b32894837cf83de694fa3875783d Flipper: be611d4b742d8c87fbae2ca5f44603a02539e365 Flipper-DoubleConversion: 38631e41ef4f9b12861c67d17cb5518d06badc41 Flipper-Folly: c12092ea368353b58e992843a990a3225d4533c3 @@ -505,32 +505,32 @@ SPEC CHECKSUMS: glog: 789873d01e4b200777d0a09bc23d548446758699 OpenSSL-Universal: 8b48cc0d10c1b2923617dfe5c178aa9ed2689355 RCT-Folly: 55d0039b24e192081ec0b2257f7bd9f42e382fb7 - RCTRequired: 8a571c04281ae50af36169fa983eff7bfb89d3d6 - RCTTypeSafety: 5efc3744a3cd7b71cb351b43bc5b33b2364a3e04 - React: 710ed7ba9a9711bec2eb253d7aa23ce6bf62908a - React-ART: 81a98efd7a0ff7d57d1030e65dfca720a7d3fb67 - React-callinvoker: 0191115d9d91a7e55fc7521dc0cc3777c18cf533 - React-Core: dea0338e20b50df8a15411263e2f4f1b3a89f070 - React-CoreModules: 2c371b6a320b9fd73815dbd7dce7a43add7e018a - React-cxxreact: 1053a1975b6395d17b3ff839aee65b23a5f4bb87 - React-jsi: c1ec6fd1034e0d637d92b1282a096b7b4922f276 - React-jsiexecutor: afc459a68ccfd382690664f686003bab3baa09b8 - React-jsinspector: f280ae94ad3db025253df305622f1a54b6908c3b - React-RCTActionSheet: e7156f3f7d52da87f0625d79de8bfdae9e62965e - React-RCTAnimation: 65b5f2d3ffeba09bffde93efb4c582e029389381 - React-RCTBlob: 87d6958a3fbdb03da3c6fdef012c9e643e9a1d3c - React-RCTImage: 71daf8d0319ab5e47dbcd0206f83cc238929f557 - React-RCTLinking: 7b094610b809edbe85b0e916ea1d62dba052c60f - React-RCTNetwork: 0910d6db9fac85cebce46eb91bc6d5cee494b779 - React-RCTPushNotification: 645b3646844d6ce73e120b7e35d98bb24dae5729 - React-RCTSettings: 6e44363d1d2ab4ee931d79d9dd79bdd95ec6f62a - React-RCTTest: 6c945d0a43aff9bc8fa31ebf94a0a598f3cadfb4 - React-RCTText: 678922da4f114668cebe7c91d99b0c380152f960 - React-RCTVibration: 0944720e04815682ef3b8e11b52e50d40495818b + RCTRequired: 37458b93b9cd9fba3ab51dd2e458dbb9cb47520d + RCTTypeSafety: 519c014f622af9b169ecfa216bedfab393ff5912 + React: 4fd7e473044e7648f405920f016929540d34e982 + React-ART: bcf223c5eff9012d960831ff1e769bb122b4f885 + React-callinvoker: 5b05b9e59fb30f90bc0725d4af7e1192ba26c481 + React-Core: 11c6182b2c0f066654cb15aa79cbded57491d6d6 + React-CoreModules: 3ee9b5c78248c356a40d1756848ff3e54643d507 + React-cxxreact: aa5a9272ad44004b38e168e23c89d3975ee89f8c + React-jsi: 2168becebc7c1f9da7db0e87128441ce5658276a + React-jsiexecutor: 910d40b16b39c7bf016ce531ecebe96775dc66df + React-jsinspector: f372dd2f90f35ca9f4ed414f02155cc32f092f21 + React-RCTActionSheet: d732c93288db766d84e9050b503fc573b20d4f0f + React-RCTAnimation: 82920521aa45e1d1497e4d8c489ecee47a7daf90 + React-RCTBlob: 075b73cf6d1d45d90ab49656234d5dc8de9de2ed + React-RCTImage: e13823a64d4dbdda8e6f995dd0e9f49cdd5441e7 + React-RCTLinking: f235950225543ebcdda86caa8fa4d9c61ac568b6 + React-RCTNetwork: 740884e7e2bad762f1678799c9d00805f562e333 + React-RCTPushNotification: 937bbbe82f700cbeaa1d5a3b1e9b13df48145c96 + React-RCTSettings: d79eaace2fed3bf317df17fa97355222cca052c5 + React-RCTTest: 66c38e03b6e5aa3c2721b0b1f5ff3e3895d2ede9 + React-RCTText: 8df41e7b83bbce2a8a55594b3e1663c177954eb1 + React-RCTVibration: 1c1755a5ed06d469f100d32c4cd28789b92f0a3c React-TurboModuleCxx-RNW: 18bb71af41fe34c8b12a56bef60aae7ee32b0817 - React-TurboModuleCxx-WinRTPort: 70d51a93322a3afc71ba9dce3c2772d2164f32e7 - ReactCommon: 5c36e8e65dd8ce9e756a3c60bf515d4381e197cb - Yoga: fe59dfb66522a6d9ccfc9ebf16893c7dc6334544 + React-TurboModuleCxx-WinRTPort: c1adb8fead6510128bd0203ab4a39ac9b14d9242 + ReactCommon: 94af7b71fd77b1f670215637147f79872ec95835 + Yoga: 190421d13b42fd56a19bea15f2a5b03f98e21911 YogaKit: f782866e155069a2cca2517aafea43200b01fd5a PODFILE CHECKSUM: 7d43a928a9b9ad27329da110adbfadd923a39ba8 diff --git a/RNTester/RCTTest/RCTTestModule.mm b/RNTester/RCTTest/RCTTestModule.mm index d5aa9ba1dc1f6e..7491b56f5a82d1 100644 --- a/RNTester/RCTTest/RCTTestModule.mm +++ b/RNTester/RCTTest/RCTTestModule.mm @@ -33,7 +33,7 @@ - (void)verifySnapshot:(RCTResponseSenderBlock)callback; class JSI_EXPORT NativeTestModuleSpecJSI : public ObjCTurboModule { public: - NativeTestModuleSpecJSI(id instance, std::shared_ptr jsInvoker, std::shared_ptr nativeInvoker, id perfLogger); + NativeTestModuleSpecJSI(const ObjCTurboModule::InitParams ¶ms); }; } // namespace react @@ -56,8 +56,8 @@ - (void)verifySnapshot:(RCTResponseSenderBlock)callback; } - NativeTestModuleSpecJSI::NativeTestModuleSpecJSI(id instance, std::shared_ptr jsInvoker, std::shared_ptr nativeInvoker, id perfLogger) - : ObjCTurboModule("TestModule", instance, jsInvoker, nativeInvoker, perfLogger) { + NativeTestModuleSpecJSI::NativeTestModuleSpecJSI(const ObjCTurboModule::InitParams ¶ms) + : ObjCTurboModule(params) { methodMap_["markTestCompleted"] = MethodMetadata {0, __hostFunction_NativeTestModuleSpecJSI_markTestCompleted}; @@ -146,12 +146,9 @@ - (dispatch_queue_t)methodQueue }]; } -- (std::shared_ptr) - getTurboModuleWithJsInvoker:(std::shared_ptr)jsInvoker - nativeInvoker:(std::shared_ptr)nativeInvoker - perfLogger:(id)perfLogger +- (std::shared_ptr)getTurboModule:(const facebook::react::ObjCTurboModule::InitParams &)params { - return std::make_shared(self, jsInvoker, nativeInvoker, perfLogger); + return std::make_shared(params); } @end diff --git a/RNTester/RNTester/AppDelegate.mm b/RNTester/RNTester/AppDelegate.mm index ac15022b495250..7e6e7fd10182e0 100644 --- a/RNTester/RNTester/AppDelegate.mm +++ b/RNTester/RNTester/AppDelegate.mm @@ -31,7 +31,10 @@ #ifdef RN_FABRIC_ENABLED #import +#import #import + +#import #endif @@ -55,7 +58,9 @@ @interface AppDelegate() { #ifdef RN_FABRIC_ENABLED - RCTSurfacePresenter *_surfacePresenter; + RCTSurfacePresenterBridgeAdapter *_bridgeAdapter; + std::shared_ptr _reactNativeConfig; + facebook::react::ContextContainer::Shared _contextContainer; #endif RCTTurboModuleManager *_turboModuleManager; @@ -85,14 +90,15 @@ - (BOOL)application:(__unused UIApplication *)application didFinishLaunchingWith } #ifdef RN_FABRIC_ENABLED - _surfacePresenter = [[RCTSurfacePresenter alloc] initWithBridge:_bridge - config:nil - imageLoader:RCTTurboModuleEnabled() ? - [_bridge moduleForName:@"RCTImageLoader" - lazilyLoadIfNecessary:YES] : nil - runtimeExecutor:nullptr]; + _contextContainer = std::make_shared(); + _reactNativeConfig = std::make_shared(); + + _contextContainer->insert("ReactNativeConfig", _reactNativeConfig); - _bridge.surfacePresenter = _surfacePresenter; + _bridgeAdapter = [[RCTSurfacePresenterBridgeAdapter alloc] initWithBridge:_bridge + contextContainer:_contextContainer]; + + _bridge.surfacePresenter = _bridgeAdapter.surfacePresenter; UIView *rootView = [[RCTFabricSurfaceHostingProxyRootView alloc] initWithBridge:_bridge moduleName:@"RNTesterApp" initialProperties:initProps]; #else @@ -183,12 +189,9 @@ - (Class)getModuleClassFromName:(const char *)name } - (std::shared_ptr)getTurboModule:(const std::string &)name - instance:(id)instance - jsInvoker:(std::shared_ptr)jsInvoker - nativeInvoker:(std::shared_ptr)nativeInvoker - perfLogger:(id)perfLogger + initParams:(const facebook::react::ObjCTurboModule::InitParams &)params { - return facebook::react::RNTesterTurboModuleProvider(name, instance, jsInvoker, nativeInvoker, perfLogger); + return facebook::react::RNTesterTurboModuleProvider(name, params); } - (id)getModuleInstanceFromClass:(Class)moduleClass diff --git a/RNTester/RNTester/RNTesterTurboModuleProvider.h b/RNTester/RNTester/RNTesterTurboModuleProvider.h index 4c61336a6df343..7c80b27b39a534 100644 --- a/RNTester/RNTester/RNTesterTurboModuleProvider.h +++ b/RNTester/RNTester/RNTesterTurboModuleProvider.h @@ -24,10 +24,7 @@ std::shared_ptr RNTesterTurboModuleProvider(const std::string &name * Provide an instance of a ObjCTurboModule, given the ObjC instance, specific to this app. */ std::shared_ptr RNTesterTurboModuleProvider(const std::string &name, - id instance, - std::shared_ptr jsInvoker, - std::shared_ptr nativeInvoker, - id perfLogger); + const ObjCTurboModule::InitParams ¶ms); } // namespace react } // namespace facebook diff --git a/RNTester/RNTester/RNTesterTurboModuleProvider.mm b/RNTester/RNTester/RNTesterTurboModuleProvider.mm index 9c2707654fd76a..97e5a16ced6eff 100644 --- a/RNTester/RNTester/RNTesterTurboModuleProvider.mm +++ b/RNTester/RNTester/RNTesterTurboModuleProvider.mm @@ -29,12 +29,9 @@ Class RNTesterTurboModuleClassProvider(const char *name) { } std::shared_ptr RNTesterTurboModuleProvider(const std::string &name, - id instance, - std::shared_ptr jsInvoker, - std::shared_ptr nativeInvoker, - id perfLogger) { + const ObjCTurboModule::InitParams ¶ms) { if (name == "SampleTurboModule") { - return std::make_shared(instance, jsInvoker, nativeInvoker, perfLogger); + return std::make_shared(params); } return nullptr; diff --git a/RNTester/RNTesterPods.xcodeproj/project.pbxproj b/RNTester/RNTesterPods.xcodeproj/project.pbxproj index 3c29e46d9c2c45..825f54b636aa8e 100644 --- a/RNTester/RNTesterPods.xcodeproj/project.pbxproj +++ b/RNTester/RNTesterPods.xcodeproj/project.pbxproj @@ -1607,6 +1607,7 @@ "$(inherited)", "-DFB_SONARKIT_ENABLED=1", ); + OTHER_SWIFT_FLAGS = "$(inherited) -Xcc -DFB_SONARKIT_ENABLED"; PRODUCT_NAME = "$(TARGET_NAME)"; SKIP_INSTALL = YES; TARGETED_DEVICE_FAMILY = "1,2"; @@ -1630,6 +1631,7 @@ "$(inherited)", "-DFB_SONARKIT_ENABLED=1", ); + OTHER_SWIFT_FLAGS = "$(inherited) -Xcc -DFB_SONARKIT_ENABLED"; PRODUCT_NAME = "$(TARGET_NAME)"; SKIP_INSTALL = YES; TARGETED_DEVICE_FAMILY = "1,2"; @@ -1653,6 +1655,7 @@ "$(inherited)", "-DFB_SONARKIT_ENABLED=1", ); + OTHER_SWIFT_FLAGS = "$(inherited) -Xcc -DFB_SONARKIT_ENABLED"; PRODUCT_NAME = "$(TARGET_NAME)"; SKIP_INSTALL = YES; TARGETED_DEVICE_FAMILY = "1,2"; @@ -1676,6 +1679,7 @@ "$(inherited)", "-DFB_SONARKIT_ENABLED=1", ); + OTHER_SWIFT_FLAGS = "$(inherited) -Xcc -DFB_SONARKIT_ENABLED"; PRODUCT_NAME = "$(TARGET_NAME)"; SKIP_INSTALL = YES; TARGETED_DEVICE_FAMILY = "1,2"; @@ -1700,6 +1704,7 @@ "$(inherited)", "-DFB_SONARKIT_ENABLED=1", ); + OTHER_SWIFT_FLAGS = "$(inherited) -Xcc -DFB_SONARKIT_ENABLED"; PRODUCT_NAME = "$(TARGET_NAME)"; SDKROOT = macosx; SKIP_INSTALL = YES; @@ -1724,6 +1729,7 @@ "$(inherited)", "-DFB_SONARKIT_ENABLED=1", ); + OTHER_SWIFT_FLAGS = "$(inherited) -Xcc -DFB_SONARKIT_ENABLED"; PRODUCT_NAME = "$(TARGET_NAME)"; SDKROOT = macosx; SKIP_INSTALL = YES; @@ -1920,6 +1926,7 @@ "$(inherited)", "-DFB_SONARKIT_ENABLED=1", ); + OTHER_SWIFT_FLAGS = "$(inherited) -Xcc -DFB_SONARKIT_ENABLED"; PRODUCT_BUNDLE_IDENTIFIER = "Microsoft.RNTester-macOS"; PRODUCT_NAME = "$(TARGET_NAME)"; SDKROOT = macosx; @@ -1959,6 +1966,7 @@ "$(inherited)", "-DFB_SONARKIT_ENABLED=1", ); + OTHER_SWIFT_FLAGS = "$(inherited) -Xcc -DFB_SONARKIT_ENABLED"; PRODUCT_BUNDLE_IDENTIFIER = "Microsoft.RNTester-macOS"; PRODUCT_NAME = "$(TARGET_NAME)"; SDKROOT = macosx; @@ -1994,6 +2002,7 @@ "$(inherited)", "-DFB_SONARKIT_ENABLED=1", ); + OTHER_SWIFT_FLAGS = "$(inherited) -Xcc -DFB_SONARKIT_ENABLED"; PRODUCT_BUNDLE_IDENTIFIER = "Microsoft.RNTester-macOSTests"; PRODUCT_NAME = "$(TARGET_NAME)"; SDKROOT = macosx; @@ -2029,6 +2038,7 @@ "$(inherited)", "-DFB_SONARKIT_ENABLED=1", ); + OTHER_SWIFT_FLAGS = "$(inherited) -Xcc -DFB_SONARKIT_ENABLED"; PRODUCT_BUNDLE_IDENTIFIER = "Microsoft.RNTester-macOSTests"; PRODUCT_NAME = "$(TARGET_NAME)"; SDKROOT = macosx; @@ -2065,6 +2075,7 @@ "$(inherited)", "-DFB_SONARKIT_ENABLED=1", ); + OTHER_SWIFT_FLAGS = "$(inherited) -Xcc -DFB_SONARKIT_ENABLED"; PRODUCT_BUNDLE_IDENTIFIER = "Microsoft.RNTester-macOSUITests"; PRODUCT_NAME = "$(TARGET_NAME)"; SDKROOT = macosx; @@ -2097,6 +2108,7 @@ "$(inherited)", "-DFB_SONARKIT_ENABLED=1", ); + OTHER_SWIFT_FLAGS = "$(inherited) -Xcc -DFB_SONARKIT_ENABLED"; PRODUCT_BUNDLE_IDENTIFIER = "Microsoft.RNTester-macOSUITests"; PRODUCT_NAME = "$(TARGET_NAME)"; SDKROOT = macosx; diff --git a/RNTester/js/components/RNTesterTheme.js b/RNTester/js/components/RNTesterTheme.js index 7bc14ea3ebd99d..5a1244ef36280c 100644 --- a/RNTester/js/components/RNTesterTheme.js +++ b/RNTester/js/components/RNTesterTheme.js @@ -12,7 +12,7 @@ import * as React from 'react'; import {Appearance} from 'react-native'; -import type {ColorValue} from '../../../Libraries/StyleSheet/StyleSheetTypes'; +import type {ColorValue} from 'react-native/Libraries/StyleSheet/StyleSheet'; export type RNTesterTheme = { LabelColor: ColorValue, diff --git a/RNTester/js/examples/Layout/LayoutAnimationExample.js b/RNTester/js/examples/Layout/LayoutAnimationExample.js index 4a0eac9fc58725..62c883246457b8 100644 --- a/RNTester/js/examples/Layout/LayoutAnimationExample.js +++ b/RNTester/js/examples/Layout/LayoutAnimationExample.js @@ -19,49 +19,184 @@ const { TouchableOpacity, } = require('react-native'); -class AddRemoveExample extends React.Component<{...}, $FlowFixMeState> { +type ExampleViewSpec = {| + key: number, +|}; + +type AddRemoveExampleState = {| + views: Array, + nextKey: number, +|}; + +function shuffleArray(array: Array) { + var currentIndex: number = array.length, + temporaryValue: ExampleViewSpec, + randomIndex: number; + + // While there remain elements to shuffle... + while (currentIndex !== 0) { + // Pick a remaining element... + randomIndex = Math.floor(Math.random() * currentIndex); + currentIndex -= 1; + + // And swap it with the current element. + temporaryValue = array[currentIndex]; + array[currentIndex] = array[randomIndex]; + array[randomIndex] = temporaryValue; + } + + return array; +} + +class AddRemoveExample extends React.Component<{...}, AddRemoveExampleState> { state = { views: [], + nextKey: 1, }; - UNSAFE_componentWillUpdate() { - LayoutAnimation.easeInEaseOut(args => - console.log('AddRemoveExample completed', args), + configureNextAnimation() { + LayoutAnimation.configureNext( + { + duration: 1000, + create: {type: 'easeInEaseOut', property: 'opacity'}, + update: {type: 'easeInEaseOut', property: 'opacity'}, + delete: {type: 'easeInEaseOut', property: 'opacity'}, + }, + args => console.log('AddRemoveExample completed', args), ); } + _onPressAddViewAnimated = () => { + this.configureNextAnimation(); + this._onPressAddView(); + }; + + _onPressRemoveViewAnimated = () => { + this.configureNextAnimation(); + this._onPressRemoveView(); + }; + + _onPressReorderViewsAnimated = () => { + this.configureNextAnimation(); + this._onPressReorderViews(); + }; + _onPressAddView = () => { - this.setState(state => ({views: [...state.views, {}]})); + this.setState(state => ({ + views: [...state.views, {key: state.nextKey}], + nextKey: state.nextKey + 1, + })); }; _onPressRemoveView = () => { this.setState(state => ({views: state.views.slice(0, -1)})); }; + _onPressReorderViews = () => { + this.setState(state => ({views: shuffleArray(state.views)})); + }; + render() { - const views = this.state.views.map((view, i) => ( - - {i} + const views = this.state.views.map(({key}) => ( + console.log('Box onLayout')}> + {key} )); return ( - + Add view - + Remove view + + + Reorder Views + + + + + Add view (no animation) + + + + + Remove view (no animation) + + + + + Reorder Views (no animation) + + {views} ); } } +type ReparentingExampleState = {| + hasBorder: boolean, +|}; + +class ReparentingExample extends React.Component< + {...}, + ReparentingExampleState, +> { + state = { + hasBorder: false, + }; + + _onPressToggleAnimated = () => { + LayoutAnimation.configureNext( + { + duration: 300, + create: {type: 'easeInEaseOut', property: 'opacity', duration: 1000}, + update: {type: 'easeInEaseOut', property: 'opacity'}, + delete: {type: 'easeInEaseOut', property: 'opacity', duration: 1000}, + }, + args => console.log('ReparentingExample completed', args), + ); + this._onPressToggle(); + }; + + _onPressToggle = () => { + this.setState(state => ({hasBorder: !state.hasBorder})); + }; + + render() { + const parentStyle = this.state.hasBorder + ? {borderWidth: 5, borderColor: 'red'} + : {}; + + return ( + + + + Toggle + + + + + Toggle (no animation) + + + + + + + ); + } +} + const GreenSquare = () => ( Green square @@ -74,7 +209,11 @@ const BlueSquare = () => ( ); -class CrossFadeExample extends React.Component<{...}, $FlowFixMeState> { +type CrossFadeExampleState = {| + toggled: boolean, +|}; + +class CrossFadeExample extends React.Component<{...}, CrossFadeExampleState> { state = { toggled: false, }; @@ -102,7 +241,15 @@ class CrossFadeExample extends React.Component<{...}, $FlowFixMeState> { } } -class LayoutUpdateExample extends React.Component<{...}, $FlowFixMeState> { +type LayoutUpdateExampleState = {| + width: number, + height: number, +|}; + +class LayoutUpdateExample extends React.Component< + {...}, + LayoutUpdateExampleState, +> { state = { width: 200, height: 100, @@ -206,6 +353,12 @@ exports.examples = [ return ; }, }, + { + title: 'Animate Reparenting Update', + render(): React.Element { + return ; + }, + }, { title: 'Cross fade views', render(): React.Element { diff --git a/RNTester/js/examples/PlatformColor/PlatformColorExample.js b/RNTester/js/examples/PlatformColor/PlatformColorExample.js index ed08bcd9b1b711..5a1358a22ed8c4 100644 --- a/RNTester/js/examples/PlatformColor/PlatformColorExample.js +++ b/RNTester/js/examples/PlatformColor/PlatformColorExample.js @@ -14,7 +14,6 @@ const React = require('react'); const ReactNative = require('react-native'); import Platform from '../../../../Libraries/Utilities/Platform'; const { - ColorAndroid, ColorWithSystemEffectMacOS, // TODO(macOS GH#750) DynamicColorIOS, DynamicColorMacOS, @@ -303,24 +302,6 @@ function DynamicColorsExample() { ); } -function AndroidColorsExample() { - return Platform.OS === 'android' ? ( - - - ColorAndroid('?attr/colorAccent') - - - - ) : ( - Not applicable on this platform - ); -} - function VariantColorsExample() { return ( @@ -329,7 +310,7 @@ function VariantColorsExample() { {// [TODO(OSS Candidate ISS#2710739) Platform.select({ ios: "DynamicColorIOS({light: 'red', dark: 'blue'})", - android: "ColorAndroid('?attr/colorAccent')", + android: "PlatformColor('?attr/colorAccent')", macos: "DynamicColorMacOS({light: 'red', dark: 'blue'})", }) // ]TODO(OSS Candidate ISS#2710739) @@ -345,7 +326,7 @@ function VariantColorsExample() { Platform.OS === 'macos' ? DynamicColorMacOS({light: 'red', dark: 'blue'}) : // ]TODO(macOS GH#774) - ColorAndroid('?attr/colorAccent'), + PlatformColor('?attr/colorAccent'), }} /> @@ -525,12 +506,6 @@ exports.examples = [ return ; }, }, - { - title: 'Android Colors', - render(): React.Element { - return ; - }, - }, { title: 'Variant Colors', render(): React.Element { diff --git a/RNTester/js/examples/Pressable/PressableExample.js b/RNTester/js/examples/Pressable/PressableExample.js index 1dadac6b1c4c13..e57f6320098e54 100644 --- a/RNTester/js/examples/Pressable/PressableExample.js +++ b/RNTester/js/examples/Pressable/PressableExample.js @@ -378,7 +378,7 @@ exports.examples = [ }, { title: 'Pressable with custom Ripple', - description: ("Pressable can specify ripple's radius and borderless params": string), + description: ("Pressable can specify ripple's radius, color and borderless params": string), platform: 'android', render: function(): React.Node { const nativeFeedbackButton = { @@ -386,32 +386,42 @@ exports.examples = [ margin: 10, }; return ( - - - - - radius 30 - - - + + + + + + radius 30 + + + - - - - radius 150 - - - + + + + radius 150 + + + + + + + + radius 70, with border + + + + - + - radius 70, with border + with border, default color and radius diff --git a/RNTester/js/examples/RTL/RTLExample.js b/RNTester/js/examples/RTL/RTLExample.js index 2008ea0ca8a9e2..e19c1bac3167c0 100644 --- a/RNTester/js/examples/RTL/RTLExample.js +++ b/RNTester/js/examples/RTL/RTLExample.js @@ -521,7 +521,7 @@ const BorderExample = withRTLState(({isRTL, setRTL}) => { }); const directionStyle = isRTL => - Platform.OS === 'ios' ? {direction: isRTL ? 'rtl' : 'ltr'} : null; + Platform.OS !== 'android' ? {direction: isRTL ? 'rtl' : 'ltr'} : null; const styles = StyleSheet.create({ container: { diff --git a/RNTester/js/examples/TurboModule/SampleTurboModuleExample.js b/RNTester/js/examples/TurboModule/SampleTurboModuleExample.js index eae564aa3a21cc..4eaa82444ad0ab 100644 --- a/RNTester/js/examples/TurboModule/SampleTurboModuleExample.js +++ b/RNTester/js/examples/TurboModule/SampleTurboModuleExample.js @@ -11,6 +11,7 @@ 'use strict'; import NativeSampleTurboModule from '../../../../Libraries/TurboModule/samples/NativeSampleTurboModule'; +import type {RootTag} from '../../../../Libraries/ReactNative/RootTag'; import { StyleSheet, Text, @@ -18,6 +19,7 @@ import { FlatList, Platform, TouchableOpacity, + unstable_RootTagContext, } from 'react-native'; import * as React from 'react'; @@ -33,6 +35,8 @@ type State = {| |}; class SampleTurboModuleExample extends React.Component<{||}, State> { + static contextType: React$Context = unstable_RootTagContext; + state: State = { testResults: {}, }; @@ -64,6 +68,7 @@ class SampleTurboModuleExample extends React.Component<{||}, State> { ]), getObject: () => NativeSampleTurboModule.getObject({a: 1, b: 'foo', c: null}), + getRootTag: () => NativeSampleTurboModule.getRootTag(this.context), getValue: () => NativeSampleTurboModule.getValue(5, 'test', {a: 1, b: 'foo'}), }; diff --git a/React/Base/RCTBundleURLProvider.h b/React/Base/RCTBundleURLProvider.h index 7094957cf67b3c..4254c9cae9b96e 100644 --- a/React/Base/RCTBundleURLProvider.h +++ b/React/Base/RCTBundleURLProvider.h @@ -39,8 +39,8 @@ extern NSString *const kRCTPlatformName; // TODO(macOS GH#774) */ - (NSString *)packagerServerHost; -#if RCT_DEV -- (BOOL)isPackagerRunning:(NSString *)host; +#if RCT_DEV_MENU ++ (BOOL)isPackagerRunning:(NSString *)host; #endif /** diff --git a/React/Base/RCTBundleURLProvider.m b/React/Base/RCTBundleURLProvider.m index e540231330033f..e50b08fafc7a2d 100644 --- a/React/Base/RCTBundleURLProvider.m +++ b/React/Base/RCTBundleURLProvider.m @@ -76,8 +76,8 @@ - (void)resetToDefaults stringWithFormat:@"http://%@:%lu/", hostPort, (unsigned long)kRCTBundleURLProviderDefaultPort]]; } -#if RCT_DEV -- (BOOL)isPackagerRunning:(NSString *)host +#if RCT_DEV_MENU ++ (BOOL)isPackagerRunning:(NSString *)host { NSURL *url = [serverRootWithHostPort(host) URLByAppendingPathComponent:@"status"]; @@ -111,7 +111,7 @@ - (NSString *)guessPackagerHost }); NSString *host = ipGuess ?: @"localhost"; - if ([self isPackagerRunning:host]) { + if ([RCTBundleURLProvider isPackagerRunning:host]) { return host; } return nil; diff --git a/React/Base/RCTConvert.m b/React/Base/RCTConvert.m index 0d82a06c4f8ed6..3a9b718a7a0d45 100644 --- a/React/Base/RCTConvert.m +++ b/React/Base/RCTConvert.m @@ -851,7 +851,8 @@ +(type)type : (id)json \ static NSString *const RCTColorSuffix = @"Color"; NSMutableDictionary *aliases = [NSMutableDictionary new]; for (NSString *objcSelector in map) { - RCTAssert([objcSelector hasSuffix:RCTColorSuffix], @"A selector in the color map did not end with the suffix Color."); + RCTAssert( + [objcSelector hasSuffix:RCTColorSuffix], @"A selector in the color map did not end with the suffix Color."); NSMutableDictionary *entry = [map[objcSelector] mutableCopy]; if ([entry objectForKey:RCTSelector] == nil) { entry[RCTSelector] = objcSelector; diff --git a/React/CoreModules/BUCK b/React/CoreModules/BUCK index 6f3cc25677e544..155d6378fa3c09 100644 --- a/React/CoreModules/BUCK +++ b/React/CoreModules/BUCK @@ -33,7 +33,10 @@ rn_apple_library( "UIKit", ], header_path_prefix = "React", - labels = ["supermodule:ios/default/public.react_native.infra"], + labels = [ + "depslint_never_remove", # Some old NativeModule still relies on +load unfortunately. + "supermodule:ios/default/public.react_native.infra", + ], link_whole = True, platform_preprocessor_flags = [( "linux", diff --git a/React/CoreModules/RCTAccessibilityManager.mm b/React/CoreModules/RCTAccessibilityManager.mm index d5748993d537e0..80158ab55be669 100644 --- a/React/CoreModules/RCTAccessibilityManager.mm +++ b/React/CoreModules/RCTAccessibilityManager.mm @@ -339,13 +339,10 @@ static void setMultipliers( onSuccess(@[ @(_isVoiceOverEnabled) ]); } -- (std::shared_ptr) - getTurboModuleWithJsInvoker:(std::shared_ptr)jsInvoker - nativeInvoker:(std::shared_ptr)nativeInvoker - perfLogger:(id)perfLogger +- (std::shared_ptr)getTurboModule: + (const facebook::react::ObjCTurboModule::InitParams &)params { - return std::make_shared( - self, jsInvoker, nativeInvoker, perfLogger); + return std::make_shared(params); } @end diff --git a/React/CoreModules/RCTActionSheetManager.mm b/React/CoreModules/RCTActionSheetManager.mm index d4ea21d4091c5a..110f9ee259f880 100644 --- a/React/CoreModules/RCTActionSheetManager.mm +++ b/React/CoreModules/RCTActionSheetManager.mm @@ -366,11 +366,9 @@ - (void)sharingService:(NSSharingService *)sharingService didShareItems:(NSArray #endif // ]TODO(macOS GH#774) -- (std::shared_ptr)getTurboModuleWithJsInvoker:(std::shared_ptr)jsInvoker - nativeInvoker:(std::shared_ptr)nativeInvoker - perfLogger:(id)perfLogger +- (std::shared_ptr)getTurboModule:(const ObjCTurboModule::InitParams &)params { - return std::make_shared(self, jsInvoker, nativeInvoker, perfLogger); + return std::make_shared(params); } @end diff --git a/React/CoreModules/RCTAlertManager.mm b/React/CoreModules/RCTAlertManager.mm index 0f400fb95cd9f6..3504ab37368ce3 100644 --- a/React/CoreModules/RCTAlertManager.mm +++ b/React/CoreModules/RCTAlertManager.mm @@ -296,12 +296,10 @@ - (void)invalidate #endif // ]TODO(macOS GH#774) } -- (std::shared_ptr) - getTurboModuleWithJsInvoker:(std::shared_ptr)jsInvoker - nativeInvoker:(std::shared_ptr)nativeInvoker - perfLogger:(id)perfLogger +- (std::shared_ptr)getTurboModule: + (const facebook::react::ObjCTurboModule::InitParams &)params { - return std::make_shared(self, jsInvoker, nativeInvoker, perfLogger); + return std::make_shared(params); } @end diff --git a/React/CoreModules/RCTAppState.mm b/React/CoreModules/RCTAppState.mm index 23f37d48885d21..e949171941610d 100644 --- a/React/CoreModules/RCTAppState.mm +++ b/React/CoreModules/RCTAppState.mm @@ -151,12 +151,10 @@ - (void)handleAppStateDidChange:(NSNotification *)notification callback(@[ @{@"app_state" : RCTCurrentAppState()} ]); } -- (std::shared_ptr) - getTurboModuleWithJsInvoker:(std::shared_ptr)jsInvoker - nativeInvoker:(std::shared_ptr)nativeInvoker - perfLogger:(id)perfLogger +- (std::shared_ptr)getTurboModule: + (const facebook::react::ObjCTurboModule::InitParams &)params { - return std::make_shared(self, jsInvoker, nativeInvoker, perfLogger); + return std::make_shared(params); } @end diff --git a/React/CoreModules/RCTAppearance.mm b/React/CoreModules/RCTAppearance.mm index c46454f5556ee8..36525f9563da39 100644 --- a/React/CoreModules/RCTAppearance.mm +++ b/React/CoreModules/RCTAppearance.mm @@ -111,11 +111,9 @@ - (dispatch_queue_t)methodQueue return dispatch_get_main_queue(); } -- (std::shared_ptr)getTurboModuleWithJsInvoker:(std::shared_ptr)jsInvoker - nativeInvoker:(std::shared_ptr)nativeInvoker - perfLogger:(id)perfLogger +- (std::shared_ptr)getTurboModule:(const ObjCTurboModule::InitParams &)params { - return std::make_shared(self, jsInvoker, nativeInvoker, perfLogger); + return std::make_shared(params); } #if TARGET_OS_OSX // [TODO(macOS GH#774): on macOS don't lazy init _currentColorScheme because [NSAppearance currentAppearance] cannot be executed on background thread. diff --git a/React/CoreModules/RCTAsyncLocalStorage.mm b/React/CoreModules/RCTAsyncLocalStorage.mm index cc7ed4518052ec..3d48ea18faebf0 100644 --- a/React/CoreModules/RCTAsyncLocalStorage.mm +++ b/React/CoreModules/RCTAsyncLocalStorage.mm @@ -480,12 +480,10 @@ - (NSDictionary *)_writeEntry:(NSArray *)entry changedManifest:(BOOL } } -- (std::shared_ptr) - getTurboModuleWithJsInvoker:(std::shared_ptr)jsInvoker - nativeInvoker:(std::shared_ptr)nativeInvoker - perfLogger:(id)perfLogger +- (std::shared_ptr)getTurboModule: + (const facebook::react::ObjCTurboModule::InitParams &)params { - return std::make_shared(self, jsInvoker, nativeInvoker, perfLogger); + return std::make_shared(params); } @end diff --git a/React/CoreModules/RCTClipboard.mm b/React/CoreModules/RCTClipboard.mm index d63ca2a0275bd1..7fbfd889c427e2 100644 --- a/React/CoreModules/RCTClipboard.mm +++ b/React/CoreModules/RCTClipboard.mm @@ -49,11 +49,9 @@ - (dispatch_queue_t)methodQueue #endif // ]TODO(macOS GH#774) } -- (std::shared_ptr)getTurboModuleWithJsInvoker:(std::shared_ptr)jsInvoker - nativeInvoker:(std::shared_ptr)nativeInvoker - perfLogger:(id)perfLogger +- (std::shared_ptr)getTurboModule:(const ObjCTurboModule::InitParams &)params { - return std::make_shared(self, jsInvoker, nativeInvoker, perfLogger); + return std::make_shared(params); } @end diff --git a/React/CoreModules/RCTDevLoadingView.mm b/React/CoreModules/RCTDevLoadingView.mm index af83ad2471561b..88a385c3275bae 100644 --- a/React/CoreModules/RCTDevLoadingView.mm +++ b/React/CoreModules/RCTDevLoadingView.mm @@ -228,11 +228,9 @@ - (void)updateProgress:(RCTLoadingProgress *)progress }); } -- (std::shared_ptr)getTurboModuleWithJsInvoker:(std::shared_ptr)jsInvoker - nativeInvoker:(std::shared_ptr)nativeInvoker - perfLogger:(id)perfLogger +- (std::shared_ptr)getTurboModule:(const ObjCTurboModule::InitParams &)params { - return std::make_shared(self, jsInvoker, nativeInvoker, perfLogger); + return std::make_shared(params); } @end @@ -263,11 +261,9 @@ - (void)updateProgress:(RCTLoadingProgress *)progress - (void)hide { } -- (std::shared_ptr)getTurboModuleWithJsInvoker:(std::shared_ptr)jsInvoker - nativeInvoker:(std::shared_ptr)nativeInvoker - perfLogger:(id)perfLogger +- (std::shared_ptr)getTurboModule:(const ObjCTurboModule::InitParams &)params { - return std::make_shared(self, jsInvoker, nativeInvoker, perfLogger); + return std::make_shared(params); } @end diff --git a/React/CoreModules/RCTDevMenu.mm b/React/CoreModules/RCTDevMenu.mm index 3eaa4026442641..fe9a4f4367de20 100644 --- a/React/CoreModules/RCTDevMenu.mm +++ b/React/CoreModules/RCTDevMenu.mm @@ -18,11 +18,9 @@ #import #import #import - #import "CoreModulesPlugins.h" #if RCT_DEV_MENU - #if RCT_ENABLE_INSPECTOR #import #endif @@ -243,14 +241,60 @@ - (void)setDefaultJSBundle }]]; if (!devSettings.isProfilingEnabled) { - if (!devSettings.isRemoteDebuggingAvailable) { +#if RCT_ENABLE_INSPECTOR + if (devSettings.isDeviceDebuggingAvailable) { + // For on-device debugging we link out to Flipper. + // Since we're assuming Flipper is available, also include the DevTools. + // Note: For parity with the Android code. + + // Reset the old debugger setting so no one gets stuck. + // TODO: Remove in a few weeks. + if (devSettings.isDebuggingRemotely) { + devSettings.isDebuggingRemotely = false; + } + [items addObject:[RCTDevMenuItem + buttonItemWithTitleBlock:^NSString * { + return @"Open Debugger"; + } + handler:^{ + [RCTInspectorDevServerHelper + openURL:@"flipper://null/Hermesdebuggerrn?device=React%20Native" + withBundleURL:bridge.bundleURL + withErrorMessage:@"Failed to open Flipper. Please check that Metro is runnning."]; + }]]; + + [items addObject:[RCTDevMenuItem + buttonItemWithTitleBlock:^NSString * { + return @"Open React DevTools"; + } + handler:^{ + [RCTInspectorDevServerHelper + openURL:@"flipper://null/React?device=React%20Native" + withBundleURL:bridge.bundleURL + withErrorMessage:@"Failed to open Flipper. Please check that Metro is runnning."]; + }]]; + } else if (devSettings.isRemoteDebuggingAvailable) { +#else + if (devSettings.isRemoteDebuggingAvailable) { +#endif + // For remote debugging, we open up Chrome running the app in a web worker. + // Note that this requires async communication, which will not work for Turbo Modules. + [items addObject:[RCTDevMenuItem + buttonItemWithTitleBlock:^NSString * { + return devSettings.isDebuggingRemotely ? @"Stop Debugging" : @"Debug with Chrome"; + } + handler:^{ + devSettings.isDebuggingRemotely = !devSettings.isDebuggingRemotely; + }]]; + } else { + // If neither are available, we're defaulting to a message that tells you about remote debugging. [items addObject:[RCTDevMenuItem buttonItemWithTitle:@"Debugger Unavailable" handler:^{ #if !TARGET_OS_OSX // TODO(macOS GH#774) NSString *message = RCTTurboModuleEnabled() - ? @"Debugging is not currently supported when TurboModule is enabled." + ? @"Debugging with Chrome is not supported when TurboModules are enabled." : @"Include the RCTWebSocket library to enable JavaScript debugging."; UIAlertController *alertController = [UIAlertController alertControllerWithTitle:@"Debugger Unavailable" @@ -277,14 +321,6 @@ - (void)setDefaultJSBundle [alert beginSheetModalForWindow:[NSApp keyWindow] completionHandler:nil]; #endif // ]TODO(macOS GH#774) }]]; - } else { - [items addObject:[RCTDevMenuItem - buttonItemWithTitleBlock:^NSString * { - return devSettings.isDebuggingRemotely ? @"Stop Debugging" : @"Debug"; - } - handler:^{ - devSettings.isDebuggingRemotely = !devSettings.isDebuggingRemotely; - }]]; } } @@ -583,12 +619,10 @@ - (BOOL)hotLoadingEnabled return _bridge.devSettings.isHotLoadingEnabled; } -- (std::shared_ptr) - getTurboModuleWithJsInvoker:(std::shared_ptr)jsInvoker - nativeInvoker:(std::shared_ptr)nativeInvoker - perfLogger:(id)perfLogger +- (std::shared_ptr)getTurboModule: + (const facebook::react::ObjCTurboModule::InitParams &)params { - return std::make_shared(self, jsInvoker, nativeInvoker, perfLogger); + return std::make_shared(params); } @end @@ -626,12 +660,10 @@ + (NSString *)moduleName return @"DevMenu"; } -- (std::shared_ptr) - getTurboModuleWithJsInvoker:(std::shared_ptr)jsInvoker - nativeInvoker:(std::shared_ptr)nativeInvoker - perfLogger:(id)perfLogger +- (std::shared_ptr)getTurboModule: + (const facebook::react::ObjCTurboModule::InitParams &)params { - return std::make_shared(self, jsInvoker, nativeInvoker, perfLogger); + return std::make_shared(params); } @end diff --git a/React/CoreModules/RCTDevSettings.h b/React/CoreModules/RCTDevSettings.h index 0ebd11a1f554d1..0143776cd52009 100644 --- a/React/CoreModules/RCTDevSettings.h +++ b/React/CoreModules/RCTDevSettings.h @@ -52,7 +52,7 @@ @property (nonatomic, readonly) BOOL isHotLoadingAvailable; @property (nonatomic, readonly) BOOL isLiveReloadAvailable; @property (nonatomic, readonly) BOOL isRemoteDebuggingAvailable; -@property (nonatomic, readonly) BOOL isNuclideDebuggingAvailable; +@property (nonatomic, readonly) BOOL isDeviceDebuggingAvailable; @property (nonatomic, readonly) BOOL isJSCSamplingProfilerAvailable; /** diff --git a/React/CoreModules/RCTDevSettings.mm b/React/CoreModules/RCTDevSettings.mm index 22d7642f7f1bcf..e58719f7aa905d 100644 --- a/React/CoreModules/RCTDevSettings.mm +++ b/React/CoreModules/RCTDevSettings.mm @@ -240,7 +240,7 @@ - (id)settingForKey:(NSString *)key return [[self dataSource] settingForKey:key]; // TODO(OSS Candidate ISS#2710739): protect against race conditions where another thread changes the _dataSource } -- (BOOL)isNuclideDebuggingAvailable +- (BOOL)isDeviceDebuggingAvailable { #if RCT_ENABLE_INSPECTOR return self.bridge.isInspectable; @@ -496,12 +496,10 @@ - (void)jsLoaded:(NSNotification *)notification }); } -- (std::shared_ptr) - getTurboModuleWithJsInvoker:(std::shared_ptr)jsInvoker - nativeInvoker:(std::shared_ptr)nativeInvoker - perfLogger:(id)perfLogger +- (std::shared_ptr)getTurboModule: + (const facebook::react::ObjCTurboModule::InitParams &)params { - return std::make_shared(self, jsInvoker, nativeInvoker, perfLogger); + return std::make_shared(params); } @end @@ -566,12 +564,10 @@ - (void)setIsShakeToShowDevMenuEnabled:(BOOL)enabled { } -- (std::shared_ptr) - getTurboModuleWithJsInvoker:(std::shared_ptr)jsInvoker - nativeInvoker:(std::shared_ptr)nativeInvoker - perfLogger:(id)perfLogger +- (std::shared_ptr)getTurboModule: + (const facebook::react::ObjCTurboModule::InitParams &)params { - return std::make_shared(self, jsInvoker, nativeInvoker, perfLogger); + return std::make_shared(params); } @end diff --git a/React/CoreModules/RCTDeviceInfo.mm b/React/CoreModules/RCTDeviceInfo.mm index 149eae8ca0b16d..73b61fac820314 100644 --- a/React/CoreModules/RCTDeviceInfo.mm +++ b/React/CoreModules/RCTDeviceInfo.mm @@ -221,11 +221,9 @@ - (void)_interfaceFrameDidChange #endif // TARGET_OS_TV -- (std::shared_ptr)getTurboModuleWithJsInvoker:(std::shared_ptr)jsInvoker - nativeInvoker:(std::shared_ptr)nativeInvoker - perfLogger:(id)perfLogger +- (std::shared_ptr)getTurboModule:(const ObjCTurboModule::InitParams &)params { - return std::make_shared(self, jsInvoker, nativeInvoker, perfLogger); + return std::make_shared(params); } @end diff --git a/React/CoreModules/RCTExceptionsManager.mm b/React/CoreModules/RCTExceptionsManager.mm index 95275b6c11138e..4899d7af7cd78f 100644 --- a/React/CoreModules/RCTExceptionsManager.mm +++ b/React/CoreModules/RCTExceptionsManager.mm @@ -148,12 +148,10 @@ - (void)reportFatal:(NSString *)message } } -- (std::shared_ptr) - getTurboModuleWithJsInvoker:(std::shared_ptr)jsInvoker - nativeInvoker:(std::shared_ptr)nativeInvoker - perfLogger:(id)perfLogger +- (std::shared_ptr)getTurboModule: + (const facebook::react::ObjCTurboModule::InitParams &)params { - return std::make_shared(self, jsInvoker, nativeInvoker, perfLogger); + return std::make_shared(params); } @end diff --git a/React/CoreModules/RCTI18nManager.mm b/React/CoreModules/RCTI18nManager.mm index 795e6c4ff84c0d..e9acaac29074dc 100644 --- a/React/CoreModules/RCTI18nManager.mm +++ b/React/CoreModules/RCTI18nManager.mm @@ -54,11 +54,9 @@ - (NSDictionary *)getConstants }; } -- (std::shared_ptr)getTurboModuleWithJsInvoker:(std::shared_ptr)jsInvoker - nativeInvoker:(std::shared_ptr)nativeInvoker - perfLogger:(id)perfLogger +- (std::shared_ptr)getTurboModule:(const ObjCTurboModule::InitParams &)params { - return std::make_shared(self, jsInvoker, nativeInvoker, perfLogger); + return std::make_shared(params); } @end diff --git a/React/CoreModules/RCTKeyboardObserver.mm b/React/CoreModules/RCTKeyboardObserver.mm index 0012f0f4ae17c0..511289564f7b82 100644 --- a/React/CoreModules/RCTKeyboardObserver.mm +++ b/React/CoreModules/RCTKeyboardObserver.mm @@ -77,12 +77,10 @@ -(void)EVENT : (NSNotification *)notification IMPLEMENT_KEYBOARD_HANDLER(keyboardWillChangeFrame) IMPLEMENT_KEYBOARD_HANDLER(keyboardDidChangeFrame) -- (std::shared_ptr) - getTurboModuleWithJsInvoker:(std::shared_ptr)jsInvoker - nativeInvoker:(std::shared_ptr)nativeInvoker - perfLogger:(id)perfLogger +- (std::shared_ptr)getTurboModule: + (const facebook::react::ObjCTurboModule::InitParams &)params { - return std::make_shared(self, jsInvoker, nativeInvoker, perfLogger); + return std::make_shared(params); } @end diff --git a/React/CoreModules/RCTLogBox.mm b/React/CoreModules/RCTLogBox.mm index 11c22840668095..1693cc6fb31c95 100644 --- a/React/CoreModules/RCTLogBox.mm +++ b/React/CoreModules/RCTLogBox.mm @@ -187,12 +187,10 @@ + (BOOL)requiresMainQueueSetup } } -- (std::shared_ptr) - getTurboModuleWithJsInvoker:(std::shared_ptr)jsInvoker - nativeInvoker:(std::shared_ptr)nativeInvoker - perfLogger:(id)perfLogger +- (std::shared_ptr)getTurboModule: + (const facebook::react::ObjCTurboModule::InitParams &)params { - return std::make_shared(self, jsInvoker, nativeInvoker, perfLogger); + return std::make_shared(params); } @end @@ -219,12 +217,10 @@ - (void)hide // noop } -- (std::shared_ptr) - getTurboModuleWithJsInvoker:(std::shared_ptr)jsInvoker - nativeInvoker:(std::shared_ptr)nativeInvoker - perfLogger:(id)perfLogger +- (std::shared_ptr)getTurboModule: + (const facebook::react::ObjCTurboModule::InitParams &)params { - return std::make_shared(self, jsInvoker, nativeInvoker, perfLogger); + return std::make_shared(params); } @end diff --git a/React/CoreModules/RCTPlatform.mm b/React/CoreModules/RCTPlatform.mm index 5f5c951fa035fc..b5952272c78712 100644 --- a/React/CoreModules/RCTPlatform.mm +++ b/React/CoreModules/RCTPlatform.mm @@ -76,11 +76,9 @@ - (dispatch_queue_t)methodQueue }); } -- (std::shared_ptr)getTurboModuleWithJsInvoker:(std::shared_ptr)jsInvoker - nativeInvoker:(std::shared_ptr)nativeInvoker - perfLogger:(id)perfLogger +- (std::shared_ptr)getTurboModule:(const ObjCTurboModule::InitParams &)params { - return std::make_shared(self, jsInvoker, nativeInvoker, perfLogger); + return std::make_shared(params); } @end diff --git a/React/CoreModules/RCTRedBox.mm b/React/CoreModules/RCTRedBox.mm index d84e51567f4efe..12cf40747287e3 100644 --- a/React/CoreModules/RCTRedBox.mm +++ b/React/CoreModules/RCTRedBox.mm @@ -240,10 +240,11 @@ - (void)showErrorMessage:(NSString *)message // Remove ANSI color codes from the message NSString *messageWithoutAnsi = [self stripAnsi:message]; + BOOL isRootViewControllerPresented = self.rootViewController.presentingViewController != nil; // Show if this is a new message, or if we're updating the previous message - BOOL isNew = !self.rootViewController.isBeingPresented && !isUpdate; + BOOL isNew = !isRootViewControllerPresented && !isUpdate; BOOL isUpdateForSameMessage = !isNew && - (self.rootViewController.isBeingPresented && isUpdate && + (isRootViewControllerPresented && isUpdate && ((errorCookie == -1 && [_lastErrorMessage isEqualToString:messageWithoutAnsi]) || (errorCookie == _lastErrorCookie))); if (isNew || isUpdateForSameMessage) { @@ -255,7 +256,7 @@ - (void)showErrorMessage:(NSString *)message [_stackTraceTableView reloadData]; - if (!self.rootViewController.isBeingPresented) { + if (!isRootViewControllerPresented) { [_stackTraceTableView scrollToRowAtIndexPath:[NSIndexPath indexPathForRow:0 inSection:0] atScrollPosition:UITableViewScrollPositionTop animated:NO]; @@ -1057,12 +1058,10 @@ - (void)addCustomButton:(NSString *)title onPressHandler:(RCTRedBoxButtonPressHa [_customButtonHandlers addObject:handler]; } -- (std::shared_ptr) - getTurboModuleWithJsInvoker:(std::shared_ptr)jsInvoker - nativeInvoker:(std::shared_ptr)nativeInvoker - perfLogger:(id)perfLogger +- (std::shared_ptr)getTurboModule: + (const facebook::react::ObjCTurboModule::InitParams &)params { - return std::make_shared(self, jsInvoker, nativeInvoker, perfLogger); + return std::make_shared(params); } @end @@ -1144,12 +1143,10 @@ - (void)dismiss - (void)addCustomButton:(NSString *)title onPressHandler:(RCTRedBoxButtonPressHandler)handler { } -- (std::shared_ptr) - getTurboModuleWithJsInvoker:(std::shared_ptr)jsInvoker - nativeInvoker:(std::shared_ptr)nativeInvoker - perfLogger:(id)perfLogger +- (std::shared_ptr)getTurboModule: + (const facebook::react::ObjCTurboModule::InitParams &)params { - return std::make_shared(self, jsInvoker, nativeInvoker, perfLogger); + return std::make_shared(params); } @end diff --git a/React/CoreModules/RCTSourceCode.mm b/React/CoreModules/RCTSourceCode.mm index 9b57b804563567..92cb27ef4e6929 100644 --- a/React/CoreModules/RCTSourceCode.mm +++ b/React/CoreModules/RCTSourceCode.mm @@ -41,11 +41,9 @@ + (BOOL)requiresMainQueueSetup }; } -- (std::shared_ptr)getTurboModuleWithJsInvoker:(std::shared_ptr)jsInvoker - nativeInvoker:(std::shared_ptr)nativeInvoker - perfLogger:(id)perfLogger +- (std::shared_ptr)getTurboModule:(const ObjCTurboModule::InitParams &)params { - return std::make_shared(self, jsInvoker, nativeInvoker, perfLogger); + return std::make_shared(params); } @end diff --git a/React/CoreModules/RCTStatusBarManager.mm b/React/CoreModules/RCTStatusBarManager.mm index e7744d548e037b..000ccd80afb301 100644 --- a/React/CoreModules/RCTStatusBarManager.mm +++ b/React/CoreModules/RCTStatusBarManager.mm @@ -196,13 +196,10 @@ - (void)applicationWillChangeStatusBarFrame:(NSNotification *)notification return (facebook::react::ModuleConstants)[self getConstants]; } -- (std::shared_ptr) - getTurboModuleWithJsInvoker:(std::shared_ptr)jsInvoker - nativeInvoker:(std::shared_ptr)nativeInvoker - perfLogger:(id)perfLogger +- (std::shared_ptr)getTurboModule: + (const facebook::react::ObjCTurboModule::InitParams &)params { - return std::make_shared( - self, jsInvoker, nativeInvoker, perfLogger); + return std::make_shared(params); } #endif // TARGET_OS_TV diff --git a/React/CoreModules/RCTTVNavigationEventEmitter.mm b/React/CoreModules/RCTTVNavigationEventEmitter.mm index 6052428f608520..58fc1ead297cfb 100644 --- a/React/CoreModules/RCTTVNavigationEventEmitter.mm +++ b/React/CoreModules/RCTTVNavigationEventEmitter.mm @@ -49,13 +49,10 @@ - (void)handleTVNavigationEventNotification:(NSNotification *)notif } } -- (std::shared_ptr) - getTurboModuleWithJsInvoker:(std::shared_ptr)jsInvoker - nativeInvoker:(std::shared_ptr)nativeInvoker - perfLogger:(id)perfLogger +- (std::shared_ptr)getTurboModule: + (const facebook::react::ObjCTurboModule::InitParams &)params { - return std::make_shared( - self, jsInvoker, nativeInvoker, perfLogger); + return std::make_shared(params); } @end diff --git a/React/CoreModules/RCTWebSocketModule.mm b/React/CoreModules/RCTWebSocketModule.mm index b56a8cc61427d2..4baa4a9e682a04 100644 --- a/React/CoreModules/RCTWebSocketModule.mm +++ b/React/CoreModules/RCTWebSocketModule.mm @@ -189,12 +189,10 @@ - (void)webSocket:(RCTSRWebSocket *)webSocket }]; } -- (std::shared_ptr) - getTurboModuleWithJsInvoker:(std::shared_ptr)jsInvoker - nativeInvoker:(std::shared_ptr)nativeInvoker - perfLogger:(id)perfLogger +- (std::shared_ptr)getTurboModule: + (const facebook::react::ObjCTurboModule::InitParams &)params { - return std::make_shared(self, jsInvoker, nativeInvoker, perfLogger); + return std::make_shared(params); } @end diff --git a/React/DevSupport/RCTInspectorDevServerHelper.h b/React/DevSupport/RCTInspectorDevServerHelper.h index fd5af417858b9c..234047f3867268 100644 --- a/React/DevSupport/RCTInspectorDevServerHelper.h +++ b/React/DevSupport/RCTInspectorDevServerHelper.h @@ -16,6 +16,7 @@ + (RCTInspectorPackagerConnection *)connectWithBundleURL:(NSURL *)bundleURL; + (void)disableDebugger; ++ (void)openURL:(NSString *)url withBundleURL:(NSURL *)bundleURL withErrorMessage:(NSString *)errorMessage; @end #endif diff --git a/React/DevSupport/RCTInspectorDevServerHelper.mm b/React/DevSupport/RCTInspectorDevServerHelper.mm index 81e74fa321062d..70efb30d361e1e 100644 --- a/React/DevSupport/RCTInspectorDevServerHelper.mm +++ b/React/DevSupport/RCTInspectorDevServerHelper.mm @@ -17,8 +17,14 @@ static NSString *const kDebuggerMsgDisable = @"{ \"id\":1,\"method\":\"Debugger.disable\" }"; -static NSString *getServerHost(NSURL *bundleURL, NSNumber *port) +static NSString *getServerHost(NSURL *bundleURL) { + NSNumber *port = @8081; + NSString *portStr = [[[NSProcessInfo processInfo] environment] objectForKey:@"RCT_METRO_PORT"]; + if (portStr && [portStr length] > 0) { + port = [NSNumber numberWithInt:[portStr intValue]]; + } + NSString *host = [bundleURL host]; if (!host) { host = @"localhost"; @@ -34,11 +40,6 @@ static NSURL *getInspectorDeviceUrl(NSURL *bundleURL) { - NSNumber *inspectorProxyPort = @8081; - NSString *inspectorProxyPortStr = [[[NSProcessInfo processInfo] environment] objectForKey:@"RCT_METRO_PORT"]; - if (inspectorProxyPortStr && [inspectorProxyPortStr length] > 0) { - inspectorProxyPort = [NSNumber numberWithInt:[inspectorProxyPortStr intValue]]; - } #if !TARGET_OS_OSX // TODO(macOS GH#774) NSString *escapedDeviceName = [[[UIDevice currentDevice] name] stringByAddingPercentEncodingWithAllowedCharacters:NSCharacterSet.URLQueryAllowedCharacterSet]; @@ -48,11 +49,14 @@ NSString *escapedAppName = [[[NSBundle mainBundle] bundleIdentifier] stringByAddingPercentEncodingWithAllowedCharacters:NSCharacterSet.URLQueryAllowedCharacterSet]; return [NSURL URLWithString:[NSString stringWithFormat:@"http://%@/inspector/device?name=%@&app=%@", - getServerHost(bundleURL, inspectorProxyPort), + getServerHost(bundleURL), escapedDeviceName, escapedAppName]]; } - +static NSURL *getOpenUrlEndpoint(NSURL *bundleURL) +{ + return [NSURL URLWithString:[NSString stringWithFormat:@"http://%@/open-url", getServerHost(bundleURL)]]; +} @implementation RCTInspectorDevServerHelper RCT_NOT_IMPLEMENTED(-(instancetype)init) @@ -66,6 +70,27 @@ static void sendEventToAllConnections(NSString *event) } } ++ (void)openURL:(NSString *)url withBundleURL:(NSURL *)bundleURL withErrorMessage:(NSString *)errorMessage +{ + NSURL *endpoint = getOpenUrlEndpoint(bundleURL); + + NSDictionary *jsonBodyDict = @{@"url" : url}; + NSData *jsonBodyData = [NSJSONSerialization dataWithJSONObject:jsonBodyDict options:kNilOptions error:nil]; + + NSMutableURLRequest *request = [NSMutableURLRequest requestWithURL:endpoint]; + [request setHTTPMethod:@"POST"]; + [request setHTTPBody:jsonBodyData]; + + [[[NSURLSession sharedSession] + dataTaskWithRequest:request + completionHandler:^( + __unused NSData *_Nullable data, __unused NSURLResponse *_Nullable response, NSError *_Nullable error) { + if (error != nullptr) { + RCTLogWarn(@"%@", errorMessage); + } + }] resume]; +} + + (void)disableDebugger { sendEventToAllConnections(kDebuggerMsgDisable); diff --git a/React/Fabric/Mounting/ComponentViews/ART/RCTARTSurfaceViewComponentView.mm b/React/Fabric/Mounting/ComponentViews/ART/RCTARTSurfaceViewComponentView.mm index 0a5e9a531d83cc..f8a26d871f6bf8 100644 --- a/React/Fabric/Mounting/ComponentViews/ART/RCTARTSurfaceViewComponentView.mm +++ b/React/Fabric/Mounting/ComponentViews/ART/RCTARTSurfaceViewComponentView.mm @@ -6,7 +6,7 @@ */ #import "RCTARTSurfaceViewComponentView.h" -#import +#import #import "RCTARTSurfaceViewComponentDescriptor.h" #import "FBRCTFabricComponentsPlugins.h" diff --git a/React/Fabric/Mounting/ComponentViews/TextInput/RCTTextInputComponentView.mm b/React/Fabric/Mounting/ComponentViews/TextInput/RCTTextInputComponentView.mm index f309300051da02..05b8f7ac3f7238 100644 --- a/React/Fabric/Mounting/ComponentViews/TextInput/RCTTextInputComponentView.mm +++ b/React/Fabric/Mounting/ComponentViews/TextInput/RCTTextInputComponentView.mm @@ -157,6 +157,10 @@ - (void)updateProps:(Props::Shared const &)props oldProps:(Props::Shared const & _backedTextInputView.placeholder = RCTNSStringFromString(newTextInputProps.placeholder); } + if (newTextInputProps.placeholderTextColor != oldTextInputProps.placeholderTextColor) { + _backedTextInputView.placeholderColor = RCTUIColorFromSharedColor(newTextInputProps.placeholderTextColor); + } + if (newTextInputProps.textAttributes != oldTextInputProps.textAttributes) { _backedTextInputView.defaultTextAttributes = RCTNSTextAttributesFromTextAttributes(newTextInputProps.getEffectiveTextAttributes()); diff --git a/React/Fabric/Mounting/RCTComponentViewFactory.h b/React/Fabric/Mounting/RCTComponentViewFactory.h index ee347d9cf75c43..638fd4e5bdedc5 100644 --- a/React/Fabric/Mounting/RCTComponentViewFactory.h +++ b/React/Fabric/Mounting/RCTComponentViewFactory.h @@ -10,7 +10,7 @@ #import #import -#import +#import NS_ASSUME_NONNULL_BEGIN diff --git a/React/Fabric/Mounting/RCTComponentViewFactory.mm b/React/Fabric/Mounting/RCTComponentViewFactory.mm index 773eba1ccc2958..e1566df29bf32b 100644 --- a/React/Fabric/Mounting/RCTComponentViewFactory.mm +++ b/React/Fabric/Mounting/RCTComponentViewFactory.mm @@ -13,8 +13,8 @@ #import #import +#import #import -#import #ifdef RN_DISABLE_OSS_PLUGIN_HEADER #import diff --git a/React/Fabric/Mounting/RCTComponentViewProtocol.h b/React/Fabric/Mounting/RCTComponentViewProtocol.h index 334b1bd89176c1..3fd2c3fccf5034 100644 --- a/React/Fabric/Mounting/RCTComponentViewProtocol.h +++ b/React/Fabric/Mounting/RCTComponentViewProtocol.h @@ -8,11 +8,11 @@ #import #import +#import #import #import #import #import -#import NS_ASSUME_NONNULL_BEGIN diff --git a/React/Fabric/Mounting/RCTMountingManager.h b/React/Fabric/Mounting/RCTMountingManager.h index 0e8771b8a8b907..eb4ca669c7a9f1 100644 --- a/React/Fabric/Mounting/RCTMountingManager.h +++ b/React/Fabric/Mounting/RCTMountingManager.h @@ -26,6 +26,8 @@ NS_ASSUME_NONNULL_BEGIN @property (nonatomic, weak) id delegate; @property (nonatomic, strong) RCTComponentViewRegistry *componentViewRegistry; +@property (atomic, assign) BOOL useModernDifferentiatorMode; + /** * Schedule a mounting transaction to be performed on the main thread. * Can be called from any thread. diff --git a/React/Fabric/Mounting/RCTMountingManager.mm b/React/Fabric/Mounting/RCTMountingManager.mm index 712d735b3408ac..1aa7786d8591df 100644 --- a/React/Fabric/Mounting/RCTMountingManager.mm +++ b/React/Fabric/Mounting/RCTMountingManager.mm @@ -266,7 +266,10 @@ - (void)performTransaction:(MountingCoordinator::Shared const &)mountingCoordina SystraceSection s("-[RCTMountingManager performTransaction:]"); RCTAssertMainQueue(); - auto transaction = mountingCoordinator->pullTransaction(DifferentiatorMode::Classic); + auto differentiatorMode = + self.useModernDifferentiatorMode ? DifferentiatorMode::OptimizedMoves : DifferentiatorMode::Classic; + + auto transaction = mountingCoordinator->pullTransaction(differentiatorMode); if (!transaction.has_value()) { return; } diff --git a/React/Fabric/Mounting/UIView+ComponentViewProtocol.mm b/React/Fabric/Mounting/UIView+ComponentViewProtocol.mm index c9dc5f98d7ac90..0eda1bda5ea8e8 100644 --- a/React/Fabric/Mounting/UIView+ComponentViewProtocol.mm +++ b/React/Fabric/Mounting/UIView+ComponentViewProtocol.mm @@ -79,13 +79,12 @@ - (void)updateLayoutMetrics:(LayoutMetrics const &)layoutMetrics @"-[UIView(ComponentViewProtocol) updateLayoutMetrics:oldLayoutMetrics:]: Received invalid layout metrics (%@) for a view (%@).", NSStringFromCGRect(frame), self); - return; + } else { + // Note: Changing `frame` when `layer.transform` is not the `identity transform` is undefined behavior. + // Therefore, we must use `center` and `bounds`. + self.center = CGPoint{CGRectGetMidX(frame), CGRectGetMidY(frame)}; + self.bounds = CGRect{CGPointZero, frame.size}; } - - // Note: Changing `frame` when `layer.transform` is not the `identity transform` is undefined behavior. - // Therefore, we must use `center` and `bounds`. - self.center = CGPoint{CGRectGetMidX(frame), CGRectGetMidY(frame)}; - self.bounds = CGRect{CGPointZero, frame.size}; } if (forceUpdate || (layoutMetrics.layoutDirection != oldLayoutMetrics.layoutDirection)) { diff --git a/React/Fabric/RCTScheduler.h b/React/Fabric/RCTScheduler.h index d0f9cda86c34d1..d38465591fe2c4 100644 --- a/React/Fabric/RCTScheduler.h +++ b/React/Fabric/RCTScheduler.h @@ -9,12 +9,12 @@ #import #import +#import #import #import #import #import -#import -#import +#import #import NS_ASSUME_NONNULL_BEGIN diff --git a/React/Fabric/RCTScheduler.mm b/React/Fabric/RCTScheduler.mm index e6257df16cca57..25821a72e6d913 100644 --- a/React/Fabric/RCTScheduler.mm +++ b/React/Fabric/RCTScheduler.mm @@ -7,10 +7,10 @@ #import "RCTScheduler.h" +#import #import -#import -#import -#import +#import +#import #import diff --git a/React/Fabric/RCTSurfacePresenter.mm b/React/Fabric/RCTSurfacePresenter.mm index 2256bb6abb60a7..a199c0d866b31c 100644 --- a/React/Fabric/RCTSurfacePresenter.mm +++ b/React/Fabric/RCTSurfacePresenter.mm @@ -23,11 +23,12 @@ #import #import +#import #import +#import #import #import -#import -#import +#import #import #import @@ -301,6 +302,12 @@ - (RCTScheduler *)_createScheduler RCTScheduler *scheduler = [[RCTScheduler alloc] initWithToolbox:toolbox]; scheduler.delegate = self; + auto reactNativeConfig = _contextContainer->at>("ReactNativeConfig"); + if (reactNativeConfig) { + _mountingManager.useModernDifferentiatorMode = + reactNativeConfig->getBool("react_fabric:enabled_optimized_moves_differ_ios"); + } + return scheduler; } diff --git a/ReactAndroid/src/androidTest/java/com/facebook/react/testing/ReactSettingsForTests.java b/ReactAndroid/src/androidTest/java/com/facebook/react/testing/ReactSettingsForTests.java index cffb8eec4c55a9..de7f8cc1b76b7e 100644 --- a/ReactAndroid/src/androidTest/java/com/facebook/react/testing/ReactSettingsForTests.java +++ b/ReactAndroid/src/androidTest/java/com/facebook/react/testing/ReactSettingsForTests.java @@ -37,7 +37,7 @@ public boolean isElementInspectorEnabled() { } @Override - public boolean isNuclideJSDebugEnabled() { + public boolean isDeviceDebugEnabled() { return false; } diff --git a/ReactAndroid/src/main/java/com/facebook/fbreact/specs/jni/FBReactNativeSpec-generated.cpp b/ReactAndroid/src/main/java/com/facebook/fbreact/specs/jni/FBReactNativeSpec-generated.cpp index a9eff26dbf2c5a..069f845b9fde02 100644 --- a/ReactAndroid/src/main/java/com/facebook/fbreact/specs/jni/FBReactNativeSpec-generated.cpp +++ b/ReactAndroid/src/main/java/com/facebook/fbreact/specs/jni/FBReactNativeSpec-generated.cpp @@ -35,8 +35,8 @@ namespace facebook { } - NativeAccessibilityInfoSpecJSI::NativeAccessibilityInfoSpecJSI(jni::alias_ref instance, std::shared_ptr jsInvoker, std::shared_ptr nativeInvoker) - : JavaTurboModule("AccessibilityInfo", instance, jsInvoker, nativeInvoker) { + NativeAccessibilityInfoSpecJSI::NativeAccessibilityInfoSpecJSI(const JavaTurboModule::InitParams ¶ms) + : JavaTurboModule(params) { methodMap_["isReduceMotionEnabled"] = MethodMetadata {1, __hostFunction_NativeAccessibilityInfoSpecJSI_isReduceMotionEnabled}; @@ -96,8 +96,8 @@ namespace facebook { } - NativeAccessibilityManagerSpecJSI::NativeAccessibilityManagerSpecJSI(jni::alias_ref instance, std::shared_ptr jsInvoker, std::shared_ptr nativeInvoker) - : JavaTurboModule("AccessibilityManager", instance, jsInvoker, nativeInvoker) { + NativeAccessibilityManagerSpecJSI::NativeAccessibilityManagerSpecJSI(const JavaTurboModule::InitParams ¶ms) + : JavaTurboModule(params) { methodMap_["getCurrentBoldTextState"] = MethodMetadata {2, __hostFunction_NativeAccessibilityManagerSpecJSI_getCurrentBoldTextState}; @@ -144,8 +144,8 @@ namespace facebook { } - NativeActionSheetManagerSpecJSI::NativeActionSheetManagerSpecJSI(jni::alias_ref instance, std::shared_ptr jsInvoker, std::shared_ptr nativeInvoker) - : JavaTurboModule("ActionSheetManager", instance, jsInvoker, nativeInvoker) { + NativeActionSheetManagerSpecJSI::NativeActionSheetManagerSpecJSI(const JavaTurboModule::InitParams ¶ms) + : JavaTurboModule(params) { methodMap_["showActionSheetWithOptions"] = MethodMetadata {2, __hostFunction_NativeActionSheetManagerSpecJSI_showActionSheetWithOptions}; @@ -167,8 +167,8 @@ namespace facebook { } - NativeAlertManagerSpecJSI::NativeAlertManagerSpecJSI(jni::alias_ref instance, std::shared_ptr jsInvoker, std::shared_ptr nativeInvoker) - : JavaTurboModule("AlertManager", instance, jsInvoker, nativeInvoker) { + NativeAlertManagerSpecJSI::NativeAlertManagerSpecJSI(const JavaTurboModule::InitParams ¶ms) + : JavaTurboModule(params) { methodMap_["alertWithArgs"] = MethodMetadata {2, __hostFunction_NativeAlertManagerSpecJSI_alertWithArgs}; @@ -259,8 +259,8 @@ namespace facebook { } - NativeAnimatedModuleSpecJSI::NativeAnimatedModuleSpecJSI(jni::alias_ref instance, std::shared_ptr jsInvoker, std::shared_ptr nativeInvoker) - : JavaTurboModule("AnimatedModule", instance, jsInvoker, nativeInvoker) { + NativeAnimatedModuleSpecJSI::NativeAnimatedModuleSpecJSI(const JavaTurboModule::InitParams ¶ms) + : JavaTurboModule(params) { methodMap_["createAnimatedNode"] = MethodMetadata {2, __hostFunction_NativeAnimatedModuleSpecJSI_createAnimatedNode}; @@ -337,8 +337,8 @@ namespace facebook { } - NativeAnimationsDebugModuleSpecJSI::NativeAnimationsDebugModuleSpecJSI(jni::alias_ref instance, std::shared_ptr jsInvoker, std::shared_ptr nativeInvoker) - : JavaTurboModule("AnimationsDebugModule", instance, jsInvoker, nativeInvoker) { + NativeAnimationsDebugModuleSpecJSI::NativeAnimationsDebugModuleSpecJSI(const JavaTurboModule::InitParams ¶ms) + : JavaTurboModule(params) { methodMap_["startRecordingFps"] = MethodMetadata {0, __hostFunction_NativeAnimationsDebugModuleSpecJSI_startRecordingFps}; @@ -372,8 +372,8 @@ namespace facebook { } - NativeAppStateSpecJSI::NativeAppStateSpecJSI(jni::alias_ref instance, std::shared_ptr jsInvoker, std::shared_ptr nativeInvoker) - : JavaTurboModule("AppState", instance, jsInvoker, nativeInvoker) { + NativeAppStateSpecJSI::NativeAppStateSpecJSI(const JavaTurboModule::InitParams ¶ms) + : JavaTurboModule(params) { methodMap_["getCurrentAppState"] = MethodMetadata {2, __hostFunction_NativeAppStateSpecJSI_getCurrentAppState}; @@ -409,8 +409,8 @@ namespace facebook { } - NativeAppearanceSpecJSI::NativeAppearanceSpecJSI(jni::alias_ref instance, std::shared_ptr jsInvoker, std::shared_ptr nativeInvoker) - : JavaTurboModule("Appearance", instance, jsInvoker, nativeInvoker) { + NativeAppearanceSpecJSI::NativeAppearanceSpecJSI(const JavaTurboModule::InitParams ¶ms) + : JavaTurboModule(params) { methodMap_["getColorScheme"] = MethodMetadata {0, __hostFunction_NativeAppearanceSpecJSI_getColorScheme}; @@ -455,8 +455,8 @@ namespace facebook { } - NativeAsyncStorageSpecJSI::NativeAsyncStorageSpecJSI(jni::alias_ref instance, std::shared_ptr jsInvoker, std::shared_ptr nativeInvoker) - : JavaTurboModule("AsyncStorage", instance, jsInvoker, nativeInvoker) { + NativeAsyncStorageSpecJSI::NativeAsyncStorageSpecJSI(const JavaTurboModule::InitParams ¶ms) + : JavaTurboModule(params) { methodMap_["multiGet"] = MethodMetadata {2, __hostFunction_NativeAsyncStorageSpecJSI_multiGet}; @@ -514,8 +514,8 @@ namespace facebook { } - NativeBlobModuleSpecJSI::NativeBlobModuleSpecJSI(jni::alias_ref instance, std::shared_ptr jsInvoker, std::shared_ptr nativeInvoker) - : JavaTurboModule("BlobModule", instance, jsInvoker, nativeInvoker) { + NativeBlobModuleSpecJSI::NativeBlobModuleSpecJSI(const JavaTurboModule::InitParams ¶ms) + : JavaTurboModule(params) { methodMap_["addNetworkingHandler"] = MethodMetadata {0, __hostFunction_NativeBlobModuleSpecJSI_addNetworkingHandler}; @@ -560,8 +560,8 @@ namespace facebook { } - NativeBugReportingSpecJSI::NativeBugReportingSpecJSI(jni::alias_ref instance, std::shared_ptr jsInvoker, std::shared_ptr nativeInvoker) - : JavaTurboModule("BugReporting", instance, jsInvoker, nativeInvoker) { + NativeBugReportingSpecJSI::NativeBugReportingSpecJSI(const JavaTurboModule::InitParams ¶ms) + : JavaTurboModule(params) { methodMap_["startReportAProblemFlow"] = MethodMetadata {0, __hostFunction_NativeBugReportingSpecJSI_startReportAProblemFlow}; @@ -590,8 +590,8 @@ namespace facebook { } - NativeClipboardSpecJSI::NativeClipboardSpecJSI(jni::alias_ref instance, std::shared_ptr jsInvoker, std::shared_ptr nativeInvoker) - : JavaTurboModule("Clipboard", instance, jsInvoker, nativeInvoker) { + NativeClipboardSpecJSI::NativeClipboardSpecJSI(const JavaTurboModule::InitParams ¶ms) + : JavaTurboModule(params) { methodMap_["getString"] = MethodMetadata {0, __hostFunction_NativeClipboardSpecJSI_getString}; @@ -613,8 +613,8 @@ namespace facebook { } - NativeDatePickerAndroidSpecJSI::NativeDatePickerAndroidSpecJSI(jni::alias_ref instance, std::shared_ptr jsInvoker, std::shared_ptr nativeInvoker) - : JavaTurboModule("DatePickerAndroid", instance, jsInvoker, nativeInvoker) { + NativeDatePickerAndroidSpecJSI::NativeDatePickerAndroidSpecJSI(const JavaTurboModule::InitParams ¶ms) + : JavaTurboModule(params) { methodMap_["open"] = MethodMetadata {1, __hostFunction_NativeDatePickerAndroidSpecJSI_open}; @@ -637,8 +637,8 @@ namespace facebook { } - NativeDevLoadingViewSpecJSI::NativeDevLoadingViewSpecJSI(jni::alias_ref instance, std::shared_ptr jsInvoker, std::shared_ptr nativeInvoker) - : JavaTurboModule("DevLoadingView", instance, jsInvoker, nativeInvoker) { + NativeDevLoadingViewSpecJSI::NativeDevLoadingViewSpecJSI(const JavaTurboModule::InitParams ¶ms) + : JavaTurboModule(params) { methodMap_["showMessage"] = MethodMetadata {3, __hostFunction_NativeDevLoadingViewSpecJSI_showMessage}; @@ -676,8 +676,8 @@ namespace facebook { } - NativeDevMenuSpecJSI::NativeDevMenuSpecJSI(jni::alias_ref instance, std::shared_ptr jsInvoker, std::shared_ptr nativeInvoker) - : JavaTurboModule("DevMenu", instance, jsInvoker, nativeInvoker) { + NativeDevMenuSpecJSI::NativeDevMenuSpecJSI(const JavaTurboModule::InitParams ¶ms) + : JavaTurboModule(params) { methodMap_["show"] = MethodMetadata {0, __hostFunction_NativeDevMenuSpecJSI_show}; @@ -748,8 +748,8 @@ namespace facebook { } - NativeDevSettingsSpecJSI::NativeDevSettingsSpecJSI(jni::alias_ref instance, std::shared_ptr jsInvoker, std::shared_ptr nativeInvoker) - : JavaTurboModule("DevSettings", instance, jsInvoker, nativeInvoker) { + NativeDevSettingsSpecJSI::NativeDevSettingsSpecJSI(const JavaTurboModule::InitParams ¶ms) + : JavaTurboModule(params) { methodMap_["reload"] = MethodMetadata {0, __hostFunction_NativeDevSettingsSpecJSI_reload}; @@ -798,8 +798,8 @@ namespace facebook { } - NativeDeviceEventManagerSpecJSI::NativeDeviceEventManagerSpecJSI(jni::alias_ref instance, std::shared_ptr jsInvoker, std::shared_ptr nativeInvoker) - : JavaTurboModule("DeviceEventManager", instance, jsInvoker, nativeInvoker) { + NativeDeviceEventManagerSpecJSI::NativeDeviceEventManagerSpecJSI(const JavaTurboModule::InitParams ¶ms) + : JavaTurboModule(params) { methodMap_["invokeDefaultBackPressHandler"] = MethodMetadata {0, __hostFunction_NativeDeviceEventManagerSpecJSI_invokeDefaultBackPressHandler}; @@ -818,8 +818,8 @@ namespace facebook { } - NativeDeviceInfoSpecJSI::NativeDeviceInfoSpecJSI(jni::alias_ref instance, std::shared_ptr jsInvoker, std::shared_ptr nativeInvoker) - : JavaTurboModule("DeviceInfo", instance, jsInvoker, nativeInvoker) { + NativeDeviceInfoSpecJSI::NativeDeviceInfoSpecJSI(const JavaTurboModule::InitParams ¶ms) + : JavaTurboModule(params) { methodMap_["getConstants"] = MethodMetadata {0, __hostFunction_NativeDeviceInfoSpecJSI_getConstants}; @@ -842,8 +842,8 @@ namespace facebook { } - NativeDialogManagerAndroidSpecJSI::NativeDialogManagerAndroidSpecJSI(jni::alias_ref instance, std::shared_ptr jsInvoker, std::shared_ptr nativeInvoker) - : JavaTurboModule("DialogManagerAndroid", instance, jsInvoker, nativeInvoker) { + NativeDialogManagerAndroidSpecJSI::NativeDialogManagerAndroidSpecJSI(const JavaTurboModule::InitParams ¶ms) + : JavaTurboModule(params) { methodMap_["showAlert"] = MethodMetadata {3, __hostFunction_NativeDialogManagerAndroidSpecJSI_showAlert}; @@ -881,8 +881,8 @@ namespace facebook { } - NativeExceptionsManagerSpecJSI::NativeExceptionsManagerSpecJSI(jni::alias_ref instance, std::shared_ptr jsInvoker, std::shared_ptr nativeInvoker) - : JavaTurboModule("ExceptionsManager", instance, jsInvoker, nativeInvoker) { + NativeExceptionsManagerSpecJSI::NativeExceptionsManagerSpecJSI(const JavaTurboModule::InitParams ¶ms) + : JavaTurboModule(params) { methodMap_["reportFatalException"] = MethodMetadata {3, __hostFunction_NativeExceptionsManagerSpecJSI_reportFatalException}; @@ -917,8 +917,8 @@ namespace facebook { } - NativeFileReaderModuleSpecJSI::NativeFileReaderModuleSpecJSI(jni::alias_ref instance, std::shared_ptr jsInvoker, std::shared_ptr nativeInvoker) - : JavaTurboModule("FileReaderModule", instance, jsInvoker, nativeInvoker) { + NativeFileReaderModuleSpecJSI::NativeFileReaderModuleSpecJSI(const JavaTurboModule::InitParams ¶ms) + : JavaTurboModule(params) { methodMap_["readAsDataURL"] = MethodMetadata {1, __hostFunction_NativeFileReaderModuleSpecJSI_readAsDataURL}; @@ -952,8 +952,8 @@ namespace facebook { } - NativeFrameRateLoggerSpecJSI::NativeFrameRateLoggerSpecJSI(jni::alias_ref instance, std::shared_ptr jsInvoker, std::shared_ptr nativeInvoker) - : JavaTurboModule("FrameRateLogger", instance, jsInvoker, nativeInvoker) { + NativeFrameRateLoggerSpecJSI::NativeFrameRateLoggerSpecJSI(const JavaTurboModule::InitParams ¶ms) + : JavaTurboModule(params) { methodMap_["setGlobalOptions"] = MethodMetadata {1, __hostFunction_NativeFrameRateLoggerSpecJSI_setGlobalOptions}; @@ -985,8 +985,8 @@ namespace facebook { } - NativeHeadlessJsTaskSupportSpecJSI::NativeHeadlessJsTaskSupportSpecJSI(jni::alias_ref instance, std::shared_ptr jsInvoker, std::shared_ptr nativeInvoker) - : JavaTurboModule("HeadlessJsTaskSupport", instance, jsInvoker, nativeInvoker) { + NativeHeadlessJsTaskSupportSpecJSI::NativeHeadlessJsTaskSupportSpecJSI(const JavaTurboModule::InitParams ¶ms) + : JavaTurboModule(params) { methodMap_["notifyTaskFinished"] = MethodMetadata {1, __hostFunction_NativeHeadlessJsTaskSupportSpecJSI_notifyTaskFinished}; @@ -1020,8 +1020,8 @@ namespace facebook { } - NativeI18nManagerSpecJSI::NativeI18nManagerSpecJSI(jni::alias_ref instance, std::shared_ptr jsInvoker, std::shared_ptr nativeInvoker) - : JavaTurboModule("I18nManager", instance, jsInvoker, nativeInvoker) { + NativeI18nManagerSpecJSI::NativeI18nManagerSpecJSI(const JavaTurboModule::InitParams ¶ms) + : JavaTurboModule(params) { methodMap_["allowRTL"] = MethodMetadata {1, __hostFunction_NativeI18nManagerSpecJSI_allowRTL}; @@ -1049,8 +1049,8 @@ namespace facebook { } - NativeImageEditorSpecJSI::NativeImageEditorSpecJSI(jni::alias_ref instance, std::shared_ptr jsInvoker, std::shared_ptr nativeInvoker) - : JavaTurboModule("ImageEditor", instance, jsInvoker, nativeInvoker) { + NativeImageEditorSpecJSI::NativeImageEditorSpecJSI(const JavaTurboModule::InitParams ¶ms) + : JavaTurboModule(params) { methodMap_["cropImage"] = MethodMetadata {4, __hostFunction_NativeImageEditorSpecJSI_cropImage}; @@ -1085,8 +1085,8 @@ namespace facebook { } - NativeImageLoaderAndroidSpecJSI::NativeImageLoaderAndroidSpecJSI(jni::alias_ref instance, std::shared_ptr jsInvoker, std::shared_ptr nativeInvoker) - : JavaTurboModule("ImageLoaderAndroid", instance, jsInvoker, nativeInvoker) { + NativeImageLoaderAndroidSpecJSI::NativeImageLoaderAndroidSpecJSI(const JavaTurboModule::InitParams ¶ms) + : JavaTurboModule(params) { methodMap_["abortRequest"] = MethodMetadata {1, __hostFunction_NativeImageLoaderAndroidSpecJSI_abortRequest}; @@ -1129,8 +1129,8 @@ namespace facebook { } - NativeImageLoaderIOSSpecJSI::NativeImageLoaderIOSSpecJSI(jni::alias_ref instance, std::shared_ptr jsInvoker, std::shared_ptr nativeInvoker) - : JavaTurboModule("ImageLoaderIOS", instance, jsInvoker, nativeInvoker) { + NativeImageLoaderIOSSpecJSI::NativeImageLoaderIOSSpecJSI(const JavaTurboModule::InitParams ¶ms) + : JavaTurboModule(params) { methodMap_["getSize"] = MethodMetadata {1, __hostFunction_NativeImageLoaderIOSSpecJSI_getSize}; @@ -1178,8 +1178,8 @@ namespace facebook { } - NativeImagePickerIOSSpecJSI::NativeImagePickerIOSSpecJSI(jni::alias_ref instance, std::shared_ptr jsInvoker, std::shared_ptr nativeInvoker) - : JavaTurboModule("ImagePickerIOS", instance, jsInvoker, nativeInvoker) { + NativeImagePickerIOSSpecJSI::NativeImagePickerIOSSpecJSI(const JavaTurboModule::InitParams ¶ms) + : JavaTurboModule(params) { methodMap_["canRecordVideos"] = MethodMetadata {1, __hostFunction_NativeImagePickerIOSSpecJSI_canRecordVideos}; @@ -1225,8 +1225,8 @@ namespace facebook { } - NativeImageStoreSpecJSI::NativeImageStoreSpecJSI(jni::alias_ref instance, std::shared_ptr jsInvoker, std::shared_ptr nativeInvoker) - : JavaTurboModule("ImageStore", instance, jsInvoker, nativeInvoker) { + NativeImageStoreSpecJSI::NativeImageStoreSpecJSI(const JavaTurboModule::InitParams ¶ms) + : JavaTurboModule(params) { methodMap_["getBase64ForTag"] = MethodMetadata {3, __hostFunction_NativeImageStoreSpecJSI_getBase64ForTag}; @@ -1254,8 +1254,8 @@ namespace facebook { } - NativeJSCHeapCaptureSpecJSI::NativeJSCHeapCaptureSpecJSI(jni::alias_ref instance, std::shared_ptr jsInvoker, std::shared_ptr nativeInvoker) - : JavaTurboModule("JSCHeapCapture", instance, jsInvoker, nativeInvoker) { + NativeJSCHeapCaptureSpecJSI::NativeJSCHeapCaptureSpecJSI(const JavaTurboModule::InitParams ¶ms) + : JavaTurboModule(params) { methodMap_["captureComplete"] = MethodMetadata {2, __hostFunction_NativeJSCHeapCaptureSpecJSI_captureComplete}; @@ -1274,8 +1274,8 @@ namespace facebook { } - NativeJSCSamplingProfilerSpecJSI::NativeJSCSamplingProfilerSpecJSI(jni::alias_ref instance, std::shared_ptr jsInvoker, std::shared_ptr nativeInvoker) - : JavaTurboModule("JSCSamplingProfiler", instance, jsInvoker, nativeInvoker) { + NativeJSCSamplingProfilerSpecJSI::NativeJSCSamplingProfilerSpecJSI(const JavaTurboModule::InitParams ¶ms) + : JavaTurboModule(params) { methodMap_["operationComplete"] = MethodMetadata {3, __hostFunction_NativeJSCSamplingProfilerSpecJSI_operationComplete}; @@ -1302,8 +1302,8 @@ namespace facebook { } - NativeJSDevSupportSpecJSI::NativeJSDevSupportSpecJSI(jni::alias_ref instance, std::shared_ptr jsInvoker, std::shared_ptr nativeInvoker) - : JavaTurboModule("JSDevSupport", instance, jsInvoker, nativeInvoker) { + NativeJSDevSupportSpecJSI::NativeJSDevSupportSpecJSI(const JavaTurboModule::InitParams ¶ms) + : JavaTurboModule(params) { methodMap_["onSuccess"] = MethodMetadata {1, __hostFunction_NativeJSDevSupportSpecJSI_onSuccess}; @@ -1332,8 +1332,8 @@ namespace facebook { } - NativeKeyboardObserverSpecJSI::NativeKeyboardObserverSpecJSI(jni::alias_ref instance, std::shared_ptr jsInvoker, std::shared_ptr nativeInvoker) - : JavaTurboModule("KeyboardObserver", instance, jsInvoker, nativeInvoker) { + NativeKeyboardObserverSpecJSI::NativeKeyboardObserverSpecJSI(const JavaTurboModule::InitParams ¶ms) + : JavaTurboModule(params) { methodMap_["addListener"] = MethodMetadata {1, __hostFunction_NativeKeyboardObserverSpecJSI_addListener}; @@ -1379,8 +1379,8 @@ namespace facebook { } - NativeLinkingSpecJSI::NativeLinkingSpecJSI(jni::alias_ref instance, std::shared_ptr jsInvoker, std::shared_ptr nativeInvoker) - : JavaTurboModule("Linking", instance, jsInvoker, nativeInvoker) { + NativeLinkingSpecJSI::NativeLinkingSpecJSI(const JavaTurboModule::InitParams ¶ms) + : JavaTurboModule(params) { methodMap_["getInitialURL"] = MethodMetadata {0, __hostFunction_NativeLinkingSpecJSI_getInitialURL}; @@ -1421,8 +1421,8 @@ namespace facebook { } - NativeLogBoxSpecJSI::NativeLogBoxSpecJSI(jni::alias_ref instance, std::shared_ptr jsInvoker, std::shared_ptr nativeInvoker) - : JavaTurboModule("LogBox", instance, jsInvoker, nativeInvoker) { + NativeLogBoxSpecJSI::NativeLogBoxSpecJSI(const JavaTurboModule::InitParams ¶ms) + : JavaTurboModule(params) { methodMap_["show"] = MethodMetadata {0, __hostFunction_NativeLogBoxSpecJSI_show}; @@ -1448,8 +1448,8 @@ namespace facebook { } - NativeModalManagerSpecJSI::NativeModalManagerSpecJSI(jni::alias_ref instance, std::shared_ptr jsInvoker, std::shared_ptr nativeInvoker) - : JavaTurboModule("ModalManager", instance, jsInvoker, nativeInvoker) { + NativeModalManagerSpecJSI::NativeModalManagerSpecJSI(const JavaTurboModule::InitParams ¶ms) + : JavaTurboModule(params) { methodMap_["addListener"] = MethodMetadata {1, __hostFunction_NativeModalManagerSpecJSI_addListener}; @@ -1487,8 +1487,8 @@ namespace facebook { } - NativeNetworkingAndroidSpecJSI::NativeNetworkingAndroidSpecJSI(jni::alias_ref instance, std::shared_ptr jsInvoker, std::shared_ptr nativeInvoker) - : JavaTurboModule("NetworkingAndroid", instance, jsInvoker, nativeInvoker) { + NativeNetworkingAndroidSpecJSI::NativeNetworkingAndroidSpecJSI(const JavaTurboModule::InitParams ¶ms) + : JavaTurboModule(params) { methodMap_["sendRequest"] = MethodMetadata {9, __hostFunction_NativeNetworkingAndroidSpecJSI_sendRequest}; @@ -1535,8 +1535,8 @@ namespace facebook { } - NativeNetworkingIOSSpecJSI::NativeNetworkingIOSSpecJSI(jni::alias_ref instance, std::shared_ptr jsInvoker, std::shared_ptr nativeInvoker) - : JavaTurboModule("NetworkingIOS", instance, jsInvoker, nativeInvoker) { + NativeNetworkingIOSSpecJSI::NativeNetworkingIOSSpecJSI(const JavaTurboModule::InitParams ¶ms) + : JavaTurboModule(params) { methodMap_["sendRequest"] = MethodMetadata {2, __hostFunction_NativeNetworkingIOSSpecJSI_sendRequest}; @@ -1579,8 +1579,8 @@ namespace facebook { } - NativePermissionsAndroidSpecJSI::NativePermissionsAndroidSpecJSI(jni::alias_ref instance, std::shared_ptr jsInvoker, std::shared_ptr nativeInvoker) - : JavaTurboModule("PermissionsAndroid", instance, jsInvoker, nativeInvoker) { + NativePermissionsAndroidSpecJSI::NativePermissionsAndroidSpecJSI(const JavaTurboModule::InitParams ¶ms) + : JavaTurboModule(params) { methodMap_["checkPermission"] = MethodMetadata {1, __hostFunction_NativePermissionsAndroidSpecJSI_checkPermission}; @@ -1612,8 +1612,8 @@ namespace facebook { } - NativePlatformConstantsAndroidSpecJSI::NativePlatformConstantsAndroidSpecJSI(jni::alias_ref instance, std::shared_ptr jsInvoker, std::shared_ptr nativeInvoker) - : JavaTurboModule("PlatformConstantsAndroid", instance, jsInvoker, nativeInvoker) { + NativePlatformConstantsAndroidSpecJSI::NativePlatformConstantsAndroidSpecJSI(const JavaTurboModule::InitParams ¶ms) + : JavaTurboModule(params) { methodMap_["getAndroidID"] = MethodMetadata {0, __hostFunction_NativePlatformConstantsAndroidSpecJSI_getAndroidID}; @@ -1635,8 +1635,8 @@ namespace facebook { } - NativePlatformConstantsIOSSpecJSI::NativePlatformConstantsIOSSpecJSI(jni::alias_ref instance, std::shared_ptr jsInvoker, std::shared_ptr nativeInvoker) - : JavaTurboModule("PlatformConstantsIOS", instance, jsInvoker, nativeInvoker) { + NativePlatformConstantsIOSSpecJSI::NativePlatformConstantsIOSSpecJSI(const JavaTurboModule::InitParams ¶ms) + : JavaTurboModule(params) { methodMap_["getConstants"] = MethodMetadata {0, __hostFunction_NativePlatformConstantsIOSSpecJSI_getConstants}; @@ -1719,8 +1719,8 @@ namespace facebook { } - NativePushNotificationManagerIOSSpecJSI::NativePushNotificationManagerIOSSpecJSI(jni::alias_ref instance, std::shared_ptr jsInvoker, std::shared_ptr nativeInvoker) - : JavaTurboModule("PushNotificationManagerIOS", instance, jsInvoker, nativeInvoker) { + NativePushNotificationManagerIOSSpecJSI::NativePushNotificationManagerIOSSpecJSI(const JavaTurboModule::InitParams ¶ms) + : JavaTurboModule(params) { methodMap_["onFinishRemoteNotification"] = MethodMetadata {2, __hostFunction_NativePushNotificationManagerIOSSpecJSI_onFinishRemoteNotification}; @@ -1791,8 +1791,8 @@ namespace facebook { } - NativeRedBoxSpecJSI::NativeRedBoxSpecJSI(jni::alias_ref instance, std::shared_ptr jsInvoker, std::shared_ptr nativeInvoker) - : JavaTurboModule("RedBox", instance, jsInvoker, nativeInvoker) { + NativeRedBoxSpecJSI::NativeRedBoxSpecJSI(const JavaTurboModule::InitParams ¶ms) + : JavaTurboModule(params) { methodMap_["setExtraData"] = MethodMetadata {2, __hostFunction_NativeRedBoxSpecJSI_setExtraData}; @@ -1818,8 +1818,8 @@ namespace facebook { } - NativeSegmentFetcherSpecJSI::NativeSegmentFetcherSpecJSI(jni::alias_ref instance, std::shared_ptr jsInvoker, std::shared_ptr nativeInvoker) - : JavaTurboModule("SegmentFetcher", instance, jsInvoker, nativeInvoker) { + NativeSegmentFetcherSpecJSI::NativeSegmentFetcherSpecJSI(const JavaTurboModule::InitParams ¶ms) + : JavaTurboModule(params) { methodMap_["fetchSegment"] = MethodMetadata {3, __hostFunction_NativeSegmentFetcherSpecJSI_fetchSegment}; @@ -1849,8 +1849,8 @@ namespace facebook { } - NativeSettingsManagerSpecJSI::NativeSettingsManagerSpecJSI(jni::alias_ref instance, std::shared_ptr jsInvoker, std::shared_ptr nativeInvoker) - : JavaTurboModule("SettingsManager", instance, jsInvoker, nativeInvoker) { + NativeSettingsManagerSpecJSI::NativeSettingsManagerSpecJSI(const JavaTurboModule::InitParams ¶ms) + : JavaTurboModule(params) { methodMap_["setValues"] = MethodMetadata {1, __hostFunction_NativeSettingsManagerSpecJSI_setValues}; @@ -1875,8 +1875,8 @@ namespace facebook { } - NativeShareModuleSpecJSI::NativeShareModuleSpecJSI(jni::alias_ref instance, std::shared_ptr jsInvoker, std::shared_ptr nativeInvoker) - : JavaTurboModule("ShareModule", instance, jsInvoker, nativeInvoker) { + NativeShareModuleSpecJSI::NativeShareModuleSpecJSI(const JavaTurboModule::InitParams ¶ms) + : JavaTurboModule(params) { methodMap_["share"] = MethodMetadata {2, __hostFunction_NativeShareModuleSpecJSI_share}; @@ -1895,8 +1895,8 @@ namespace facebook { } - NativeSoundManagerSpecJSI::NativeSoundManagerSpecJSI(jni::alias_ref instance, std::shared_ptr jsInvoker, std::shared_ptr nativeInvoker) - : JavaTurboModule("SoundManager", instance, jsInvoker, nativeInvoker) { + NativeSoundManagerSpecJSI::NativeSoundManagerSpecJSI(const JavaTurboModule::InitParams ¶ms) + : JavaTurboModule(params) { methodMap_["playTouchSound"] = MethodMetadata {0, __hostFunction_NativeSoundManagerSpecJSI_playTouchSound}; @@ -1915,8 +1915,8 @@ namespace facebook { } - NativeSourceCodeSpecJSI::NativeSourceCodeSpecJSI(jni::alias_ref instance, std::shared_ptr jsInvoker, std::shared_ptr nativeInvoker) - : JavaTurboModule("SourceCode", instance, jsInvoker, nativeInvoker) { + NativeSourceCodeSpecJSI::NativeSourceCodeSpecJSI(const JavaTurboModule::InitParams ¶ms) + : JavaTurboModule(params) { methodMap_["getConstants"] = MethodMetadata {0, __hostFunction_NativeSourceCodeSpecJSI_getConstants}; @@ -1951,8 +1951,8 @@ namespace facebook { } - NativeStatusBarManagerAndroidSpecJSI::NativeStatusBarManagerAndroidSpecJSI(jni::alias_ref instance, std::shared_ptr jsInvoker, std::shared_ptr nativeInvoker) - : JavaTurboModule("StatusBarManagerAndroid", instance, jsInvoker, nativeInvoker) { + NativeStatusBarManagerAndroidSpecJSI::NativeStatusBarManagerAndroidSpecJSI(const JavaTurboModule::InitParams ¶ms) + : JavaTurboModule(params) { methodMap_["setColor"] = MethodMetadata {2, __hostFunction_NativeStatusBarManagerAndroidSpecJSI_setColor}; @@ -2007,8 +2007,8 @@ namespace facebook { } - NativeStatusBarManagerIOSSpecJSI::NativeStatusBarManagerIOSSpecJSI(jni::alias_ref instance, std::shared_ptr jsInvoker, std::shared_ptr nativeInvoker) - : JavaTurboModule("StatusBarManagerIOS", instance, jsInvoker, nativeInvoker) { + NativeStatusBarManagerIOSSpecJSI::NativeStatusBarManagerIOSSpecJSI(const JavaTurboModule::InitParams ¶ms) + : JavaTurboModule(params) { methodMap_["getHeight"] = MethodMetadata {1, __hostFunction_NativeStatusBarManagerIOSSpecJSI_getHeight}; @@ -2049,8 +2049,8 @@ namespace facebook { } - NativeTVNavigationEventEmitterSpecJSI::NativeTVNavigationEventEmitterSpecJSI(jni::alias_ref instance, std::shared_ptr jsInvoker, std::shared_ptr nativeInvoker) - : JavaTurboModule("TVNavigationEventEmitter", instance, jsInvoker, nativeInvoker) { + NativeTVNavigationEventEmitterSpecJSI::NativeTVNavigationEventEmitterSpecJSI(const JavaTurboModule::InitParams ¶ms) + : JavaTurboModule(params) { methodMap_["addListener"] = MethodMetadata {1, __hostFunction_NativeTVNavigationEventEmitterSpecJSI_addListener}; @@ -2072,8 +2072,8 @@ namespace facebook { } - NativeTimePickerAndroidSpecJSI::NativeTimePickerAndroidSpecJSI(jni::alias_ref instance, std::shared_ptr jsInvoker, std::shared_ptr nativeInvoker) - : JavaTurboModule("TimePickerAndroid", instance, jsInvoker, nativeInvoker) { + NativeTimePickerAndroidSpecJSI::NativeTimePickerAndroidSpecJSI(const JavaTurboModule::InitParams ¶ms) + : JavaTurboModule(params) { methodMap_["open"] = MethodMetadata {1, __hostFunction_NativeTimePickerAndroidSpecJSI_open}; @@ -2100,8 +2100,8 @@ namespace facebook { } - NativeTimingSpecJSI::NativeTimingSpecJSI(jni::alias_ref instance, std::shared_ptr jsInvoker, std::shared_ptr nativeInvoker) - : JavaTurboModule("Timing", instance, jsInvoker, nativeInvoker) { + NativeTimingSpecJSI::NativeTimingSpecJSI(const JavaTurboModule::InitParams ¶ms) + : JavaTurboModule(params) { methodMap_["createTimer"] = MethodMetadata {4, __hostFunction_NativeTimingSpecJSI_createTimer}; @@ -2138,8 +2138,8 @@ namespace facebook { } - NativeToastAndroidSpecJSI::NativeToastAndroidSpecJSI(jni::alias_ref instance, std::shared_ptr jsInvoker, std::shared_ptr nativeInvoker) - : JavaTurboModule("ToastAndroid", instance, jsInvoker, nativeInvoker) { + NativeToastAndroidSpecJSI::NativeToastAndroidSpecJSI(const JavaTurboModule::InitParams ¶ms) + : JavaTurboModule(params) { methodMap_["show"] = MethodMetadata {2, __hostFunction_NativeToastAndroidSpecJSI_show}; @@ -2271,8 +2271,8 @@ namespace facebook { } - NativeUIManagerSpecJSI::NativeUIManagerSpecJSI(jni::alias_ref instance, std::shared_ptr jsInvoker, std::shared_ptr nativeInvoker) - : JavaTurboModule("UIManager", instance, jsInvoker, nativeInvoker) { + NativeUIManagerSpecJSI::NativeUIManagerSpecJSI(const JavaTurboModule::InitParams ¶ms) + : JavaTurboModule(params) { methodMap_["getConstantsForViewManager"] = MethodMetadata {1, __hostFunction_NativeUIManagerSpecJSI_getConstantsForViewManager}; @@ -2377,8 +2377,8 @@ namespace facebook { } - NativeVibrationSpecJSI::NativeVibrationSpecJSI(jni::alias_ref instance, std::shared_ptr jsInvoker, std::shared_ptr nativeInvoker) - : JavaTurboModule("Vibration", instance, jsInvoker, nativeInvoker) { + NativeVibrationSpecJSI::NativeVibrationSpecJSI(const JavaTurboModule::InitParams ¶ms) + : JavaTurboModule(params) { methodMap_["vibrate"] = MethodMetadata {1, __hostFunction_NativeVibrationSpecJSI_vibrate}; @@ -2427,8 +2427,8 @@ namespace facebook { } - NativeWebSocketModuleSpecJSI::NativeWebSocketModuleSpecJSI(jni::alias_ref instance, std::shared_ptr jsInvoker, std::shared_ptr nativeInvoker) - : JavaTurboModule("WebSocketModule", instance, jsInvoker, nativeInvoker) { + NativeWebSocketModuleSpecJSI::NativeWebSocketModuleSpecJSI(const JavaTurboModule::InitParams ¶ms) + : JavaTurboModule(params) { methodMap_["connect"] = MethodMetadata {4, __hostFunction_NativeWebSocketModuleSpecJSI_connect}; diff --git a/ReactAndroid/src/main/java/com/facebook/fbreact/specs/jni/FBReactNativeSpec.h b/ReactAndroid/src/main/java/com/facebook/fbreact/specs/jni/FBReactNativeSpec.h index 2f5b02694dedcc..eb22a864c9bfa7 100644 --- a/ReactAndroid/src/main/java/com/facebook/fbreact/specs/jni/FBReactNativeSpec.h +++ b/ReactAndroid/src/main/java/com/facebook/fbreact/specs/jni/FBReactNativeSpec.h @@ -25,7 +25,7 @@ namespace facebook { class JSI_EXPORT NativeAccessibilityInfoSpecJSI : public JavaTurboModule { public: - NativeAccessibilityInfoSpecJSI(jni::alias_ref instance, std::shared_ptr jsInvoker, std::shared_ptr nativeInvoker); + NativeAccessibilityInfoSpecJSI(const JavaTurboModule::InitParams ¶ms); }; } // namespace react @@ -39,7 +39,7 @@ namespace facebook { class JSI_EXPORT NativeAccessibilityManagerSpecJSI : public JavaTurboModule { public: - NativeAccessibilityManagerSpecJSI(jni::alias_ref instance, std::shared_ptr jsInvoker, std::shared_ptr nativeInvoker); + NativeAccessibilityManagerSpecJSI(const JavaTurboModule::InitParams ¶ms); }; } // namespace react @@ -53,7 +53,7 @@ namespace facebook { class JSI_EXPORT NativeActionSheetManagerSpecJSI : public JavaTurboModule { public: - NativeActionSheetManagerSpecJSI(jni::alias_ref instance, std::shared_ptr jsInvoker, std::shared_ptr nativeInvoker); + NativeActionSheetManagerSpecJSI(const JavaTurboModule::InitParams ¶ms); }; } // namespace react @@ -67,7 +67,7 @@ namespace facebook { class JSI_EXPORT NativeAlertManagerSpecJSI : public JavaTurboModule { public: - NativeAlertManagerSpecJSI(jni::alias_ref instance, std::shared_ptr jsInvoker, std::shared_ptr nativeInvoker); + NativeAlertManagerSpecJSI(const JavaTurboModule::InitParams ¶ms); }; } // namespace react @@ -81,7 +81,7 @@ namespace facebook { class JSI_EXPORT NativeAnimatedModuleSpecJSI : public JavaTurboModule { public: - NativeAnimatedModuleSpecJSI(jni::alias_ref instance, std::shared_ptr jsInvoker, std::shared_ptr nativeInvoker); + NativeAnimatedModuleSpecJSI(const JavaTurboModule::InitParams ¶ms); }; } // namespace react @@ -95,7 +95,7 @@ namespace facebook { class JSI_EXPORT NativeAnimationsDebugModuleSpecJSI : public JavaTurboModule { public: - NativeAnimationsDebugModuleSpecJSI(jni::alias_ref instance, std::shared_ptr jsInvoker, std::shared_ptr nativeInvoker); + NativeAnimationsDebugModuleSpecJSI(const JavaTurboModule::InitParams ¶ms); }; } // namespace react @@ -109,7 +109,7 @@ namespace facebook { class JSI_EXPORT NativeAppStateSpecJSI : public JavaTurboModule { public: - NativeAppStateSpecJSI(jni::alias_ref instance, std::shared_ptr jsInvoker, std::shared_ptr nativeInvoker); + NativeAppStateSpecJSI(const JavaTurboModule::InitParams ¶ms); }; } // namespace react @@ -123,7 +123,7 @@ namespace facebook { class JSI_EXPORT NativeAppearanceSpecJSI : public JavaTurboModule { public: - NativeAppearanceSpecJSI(jni::alias_ref instance, std::shared_ptr jsInvoker, std::shared_ptr nativeInvoker); + NativeAppearanceSpecJSI(const JavaTurboModule::InitParams ¶ms); }; } // namespace react @@ -137,7 +137,7 @@ namespace facebook { class JSI_EXPORT NativeAsyncStorageSpecJSI : public JavaTurboModule { public: - NativeAsyncStorageSpecJSI(jni::alias_ref instance, std::shared_ptr jsInvoker, std::shared_ptr nativeInvoker); + NativeAsyncStorageSpecJSI(const JavaTurboModule::InitParams ¶ms); }; } // namespace react @@ -151,7 +151,7 @@ namespace facebook { class JSI_EXPORT NativeBlobModuleSpecJSI : public JavaTurboModule { public: - NativeBlobModuleSpecJSI(jni::alias_ref instance, std::shared_ptr jsInvoker, std::shared_ptr nativeInvoker); + NativeBlobModuleSpecJSI(const JavaTurboModule::InitParams ¶ms); }; } // namespace react @@ -165,7 +165,7 @@ namespace facebook { class JSI_EXPORT NativeBugReportingSpecJSI : public JavaTurboModule { public: - NativeBugReportingSpecJSI(jni::alias_ref instance, std::shared_ptr jsInvoker, std::shared_ptr nativeInvoker); + NativeBugReportingSpecJSI(const JavaTurboModule::InitParams ¶ms); }; } // namespace react @@ -179,7 +179,7 @@ namespace facebook { class JSI_EXPORT NativeClipboardSpecJSI : public JavaTurboModule { public: - NativeClipboardSpecJSI(jni::alias_ref instance, std::shared_ptr jsInvoker, std::shared_ptr nativeInvoker); + NativeClipboardSpecJSI(const JavaTurboModule::InitParams ¶ms); }; } // namespace react @@ -193,7 +193,7 @@ namespace facebook { class JSI_EXPORT NativeDatePickerAndroidSpecJSI : public JavaTurboModule { public: - NativeDatePickerAndroidSpecJSI(jni::alias_ref instance, std::shared_ptr jsInvoker, std::shared_ptr nativeInvoker); + NativeDatePickerAndroidSpecJSI(const JavaTurboModule::InitParams ¶ms); }; } // namespace react @@ -207,7 +207,7 @@ namespace facebook { class JSI_EXPORT NativeDevLoadingViewSpecJSI : public JavaTurboModule { public: - NativeDevLoadingViewSpecJSI(jni::alias_ref instance, std::shared_ptr jsInvoker, std::shared_ptr nativeInvoker); + NativeDevLoadingViewSpecJSI(const JavaTurboModule::InitParams ¶ms); }; } // namespace react @@ -221,7 +221,7 @@ namespace facebook { class JSI_EXPORT NativeDevMenuSpecJSI : public JavaTurboModule { public: - NativeDevMenuSpecJSI(jni::alias_ref instance, std::shared_ptr jsInvoker, std::shared_ptr nativeInvoker); + NativeDevMenuSpecJSI(const JavaTurboModule::InitParams ¶ms); }; } // namespace react @@ -235,7 +235,7 @@ namespace facebook { class JSI_EXPORT NativeDevSettingsSpecJSI : public JavaTurboModule { public: - NativeDevSettingsSpecJSI(jni::alias_ref instance, std::shared_ptr jsInvoker, std::shared_ptr nativeInvoker); + NativeDevSettingsSpecJSI(const JavaTurboModule::InitParams ¶ms); }; } // namespace react @@ -249,7 +249,7 @@ namespace facebook { class JSI_EXPORT NativeDeviceEventManagerSpecJSI : public JavaTurboModule { public: - NativeDeviceEventManagerSpecJSI(jni::alias_ref instance, std::shared_ptr jsInvoker, std::shared_ptr nativeInvoker); + NativeDeviceEventManagerSpecJSI(const JavaTurboModule::InitParams ¶ms); }; } // namespace react @@ -263,7 +263,7 @@ namespace facebook { class JSI_EXPORT NativeDeviceInfoSpecJSI : public JavaTurboModule { public: - NativeDeviceInfoSpecJSI(jni::alias_ref instance, std::shared_ptr jsInvoker, std::shared_ptr nativeInvoker); + NativeDeviceInfoSpecJSI(const JavaTurboModule::InitParams ¶ms); }; } // namespace react @@ -277,7 +277,7 @@ namespace facebook { class JSI_EXPORT NativeDialogManagerAndroidSpecJSI : public JavaTurboModule { public: - NativeDialogManagerAndroidSpecJSI(jni::alias_ref instance, std::shared_ptr jsInvoker, std::shared_ptr nativeInvoker); + NativeDialogManagerAndroidSpecJSI(const JavaTurboModule::InitParams ¶ms); }; } // namespace react @@ -291,7 +291,7 @@ namespace facebook { class JSI_EXPORT NativeExceptionsManagerSpecJSI : public JavaTurboModule { public: - NativeExceptionsManagerSpecJSI(jni::alias_ref instance, std::shared_ptr jsInvoker, std::shared_ptr nativeInvoker); + NativeExceptionsManagerSpecJSI(const JavaTurboModule::InitParams ¶ms); }; } // namespace react @@ -305,7 +305,7 @@ namespace facebook { class JSI_EXPORT NativeFileReaderModuleSpecJSI : public JavaTurboModule { public: - NativeFileReaderModuleSpecJSI(jni::alias_ref instance, std::shared_ptr jsInvoker, std::shared_ptr nativeInvoker); + NativeFileReaderModuleSpecJSI(const JavaTurboModule::InitParams ¶ms); }; } // namespace react @@ -319,7 +319,7 @@ namespace facebook { class JSI_EXPORT NativeFrameRateLoggerSpecJSI : public JavaTurboModule { public: - NativeFrameRateLoggerSpecJSI(jni::alias_ref instance, std::shared_ptr jsInvoker, std::shared_ptr nativeInvoker); + NativeFrameRateLoggerSpecJSI(const JavaTurboModule::InitParams ¶ms); }; } // namespace react @@ -333,7 +333,7 @@ namespace facebook { class JSI_EXPORT NativeHeadlessJsTaskSupportSpecJSI : public JavaTurboModule { public: - NativeHeadlessJsTaskSupportSpecJSI(jni::alias_ref instance, std::shared_ptr jsInvoker, std::shared_ptr nativeInvoker); + NativeHeadlessJsTaskSupportSpecJSI(const JavaTurboModule::InitParams ¶ms); }; } // namespace react @@ -347,7 +347,7 @@ namespace facebook { class JSI_EXPORT NativeI18nManagerSpecJSI : public JavaTurboModule { public: - NativeI18nManagerSpecJSI(jni::alias_ref instance, std::shared_ptr jsInvoker, std::shared_ptr nativeInvoker); + NativeI18nManagerSpecJSI(const JavaTurboModule::InitParams ¶ms); }; } // namespace react @@ -361,7 +361,7 @@ namespace facebook { class JSI_EXPORT NativeImageEditorSpecJSI : public JavaTurboModule { public: - NativeImageEditorSpecJSI(jni::alias_ref instance, std::shared_ptr jsInvoker, std::shared_ptr nativeInvoker); + NativeImageEditorSpecJSI(const JavaTurboModule::InitParams ¶ms); }; } // namespace react @@ -375,7 +375,7 @@ namespace facebook { class JSI_EXPORT NativeImageLoaderAndroidSpecJSI : public JavaTurboModule { public: - NativeImageLoaderAndroidSpecJSI(jni::alias_ref instance, std::shared_ptr jsInvoker, std::shared_ptr nativeInvoker); + NativeImageLoaderAndroidSpecJSI(const JavaTurboModule::InitParams ¶ms); }; } // namespace react @@ -389,7 +389,7 @@ namespace facebook { class JSI_EXPORT NativeImageLoaderIOSSpecJSI : public JavaTurboModule { public: - NativeImageLoaderIOSSpecJSI(jni::alias_ref instance, std::shared_ptr jsInvoker, std::shared_ptr nativeInvoker); + NativeImageLoaderIOSSpecJSI(const JavaTurboModule::InitParams ¶ms); }; } // namespace react @@ -403,7 +403,7 @@ namespace facebook { class JSI_EXPORT NativeImagePickerIOSSpecJSI : public JavaTurboModule { public: - NativeImagePickerIOSSpecJSI(jni::alias_ref instance, std::shared_ptr jsInvoker, std::shared_ptr nativeInvoker); + NativeImagePickerIOSSpecJSI(const JavaTurboModule::InitParams ¶ms); }; } // namespace react @@ -417,7 +417,7 @@ namespace facebook { class JSI_EXPORT NativeImageStoreSpecJSI : public JavaTurboModule { public: - NativeImageStoreSpecJSI(jni::alias_ref instance, std::shared_ptr jsInvoker, std::shared_ptr nativeInvoker); + NativeImageStoreSpecJSI(const JavaTurboModule::InitParams ¶ms); }; } // namespace react @@ -431,7 +431,7 @@ namespace facebook { class JSI_EXPORT NativeJSCHeapCaptureSpecJSI : public JavaTurboModule { public: - NativeJSCHeapCaptureSpecJSI(jni::alias_ref instance, std::shared_ptr jsInvoker, std::shared_ptr nativeInvoker); + NativeJSCHeapCaptureSpecJSI(const JavaTurboModule::InitParams ¶ms); }; } // namespace react @@ -445,7 +445,7 @@ namespace facebook { class JSI_EXPORT NativeJSCSamplingProfilerSpecJSI : public JavaTurboModule { public: - NativeJSCSamplingProfilerSpecJSI(jni::alias_ref instance, std::shared_ptr jsInvoker, std::shared_ptr nativeInvoker); + NativeJSCSamplingProfilerSpecJSI(const JavaTurboModule::InitParams ¶ms); }; } // namespace react @@ -459,7 +459,7 @@ namespace facebook { class JSI_EXPORT NativeJSDevSupportSpecJSI : public JavaTurboModule { public: - NativeJSDevSupportSpecJSI(jni::alias_ref instance, std::shared_ptr jsInvoker, std::shared_ptr nativeInvoker); + NativeJSDevSupportSpecJSI(const JavaTurboModule::InitParams ¶ms); }; } // namespace react @@ -473,7 +473,7 @@ namespace facebook { class JSI_EXPORT NativeKeyboardObserverSpecJSI : public JavaTurboModule { public: - NativeKeyboardObserverSpecJSI(jni::alias_ref instance, std::shared_ptr jsInvoker, std::shared_ptr nativeInvoker); + NativeKeyboardObserverSpecJSI(const JavaTurboModule::InitParams ¶ms); }; } // namespace react @@ -487,7 +487,7 @@ namespace facebook { class JSI_EXPORT NativeLinkingSpecJSI : public JavaTurboModule { public: - NativeLinkingSpecJSI(jni::alias_ref instance, std::shared_ptr jsInvoker, std::shared_ptr nativeInvoker); + NativeLinkingSpecJSI(const JavaTurboModule::InitParams ¶ms); }; } // namespace react @@ -501,7 +501,7 @@ namespace facebook { class JSI_EXPORT NativeLogBoxSpecJSI : public JavaTurboModule { public: - NativeLogBoxSpecJSI(jni::alias_ref instance, std::shared_ptr jsInvoker, std::shared_ptr nativeInvoker); + NativeLogBoxSpecJSI(const JavaTurboModule::InitParams ¶ms); }; } // namespace react @@ -515,7 +515,7 @@ namespace facebook { class JSI_EXPORT NativeModalManagerSpecJSI : public JavaTurboModule { public: - NativeModalManagerSpecJSI(jni::alias_ref instance, std::shared_ptr jsInvoker, std::shared_ptr nativeInvoker); + NativeModalManagerSpecJSI(const JavaTurboModule::InitParams ¶ms); }; } // namespace react @@ -529,7 +529,7 @@ namespace facebook { class JSI_EXPORT NativeNetworkingAndroidSpecJSI : public JavaTurboModule { public: - NativeNetworkingAndroidSpecJSI(jni::alias_ref instance, std::shared_ptr jsInvoker, std::shared_ptr nativeInvoker); + NativeNetworkingAndroidSpecJSI(const JavaTurboModule::InitParams ¶ms); }; } // namespace react @@ -543,7 +543,7 @@ namespace facebook { class JSI_EXPORT NativeNetworkingIOSSpecJSI : public JavaTurboModule { public: - NativeNetworkingIOSSpecJSI(jni::alias_ref instance, std::shared_ptr jsInvoker, std::shared_ptr nativeInvoker); + NativeNetworkingIOSSpecJSI(const JavaTurboModule::InitParams ¶ms); }; } // namespace react @@ -557,7 +557,7 @@ namespace facebook { class JSI_EXPORT NativePermissionsAndroidSpecJSI : public JavaTurboModule { public: - NativePermissionsAndroidSpecJSI(jni::alias_ref instance, std::shared_ptr jsInvoker, std::shared_ptr nativeInvoker); + NativePermissionsAndroidSpecJSI(const JavaTurboModule::InitParams ¶ms); }; } // namespace react @@ -571,7 +571,7 @@ namespace facebook { class JSI_EXPORT NativePlatformConstantsAndroidSpecJSI : public JavaTurboModule { public: - NativePlatformConstantsAndroidSpecJSI(jni::alias_ref instance, std::shared_ptr jsInvoker, std::shared_ptr nativeInvoker); + NativePlatformConstantsAndroidSpecJSI(const JavaTurboModule::InitParams ¶ms); }; } // namespace react @@ -585,7 +585,7 @@ namespace facebook { class JSI_EXPORT NativePlatformConstantsIOSSpecJSI : public JavaTurboModule { public: - NativePlatformConstantsIOSSpecJSI(jni::alias_ref instance, std::shared_ptr jsInvoker, std::shared_ptr nativeInvoker); + NativePlatformConstantsIOSSpecJSI(const JavaTurboModule::InitParams ¶ms); }; } // namespace react @@ -599,7 +599,7 @@ namespace facebook { class JSI_EXPORT NativePushNotificationManagerIOSSpecJSI : public JavaTurboModule { public: - NativePushNotificationManagerIOSSpecJSI(jni::alias_ref instance, std::shared_ptr jsInvoker, std::shared_ptr nativeInvoker); + NativePushNotificationManagerIOSSpecJSI(const JavaTurboModule::InitParams ¶ms); }; } // namespace react @@ -613,7 +613,7 @@ namespace facebook { class JSI_EXPORT NativeRedBoxSpecJSI : public JavaTurboModule { public: - NativeRedBoxSpecJSI(jni::alias_ref instance, std::shared_ptr jsInvoker, std::shared_ptr nativeInvoker); + NativeRedBoxSpecJSI(const JavaTurboModule::InitParams ¶ms); }; } // namespace react @@ -627,7 +627,7 @@ namespace facebook { class JSI_EXPORT NativeSegmentFetcherSpecJSI : public JavaTurboModule { public: - NativeSegmentFetcherSpecJSI(jni::alias_ref instance, std::shared_ptr jsInvoker, std::shared_ptr nativeInvoker); + NativeSegmentFetcherSpecJSI(const JavaTurboModule::InitParams ¶ms); }; } // namespace react @@ -641,7 +641,7 @@ namespace facebook { class JSI_EXPORT NativeSettingsManagerSpecJSI : public JavaTurboModule { public: - NativeSettingsManagerSpecJSI(jni::alias_ref instance, std::shared_ptr jsInvoker, std::shared_ptr nativeInvoker); + NativeSettingsManagerSpecJSI(const JavaTurboModule::InitParams ¶ms); }; } // namespace react @@ -655,7 +655,7 @@ namespace facebook { class JSI_EXPORT NativeShareModuleSpecJSI : public JavaTurboModule { public: - NativeShareModuleSpecJSI(jni::alias_ref instance, std::shared_ptr jsInvoker, std::shared_ptr nativeInvoker); + NativeShareModuleSpecJSI(const JavaTurboModule::InitParams ¶ms); }; } // namespace react @@ -669,7 +669,7 @@ namespace facebook { class JSI_EXPORT NativeSoundManagerSpecJSI : public JavaTurboModule { public: - NativeSoundManagerSpecJSI(jni::alias_ref instance, std::shared_ptr jsInvoker, std::shared_ptr nativeInvoker); + NativeSoundManagerSpecJSI(const JavaTurboModule::InitParams ¶ms); }; } // namespace react @@ -683,7 +683,7 @@ namespace facebook { class JSI_EXPORT NativeSourceCodeSpecJSI : public JavaTurboModule { public: - NativeSourceCodeSpecJSI(jni::alias_ref instance, std::shared_ptr jsInvoker, std::shared_ptr nativeInvoker); + NativeSourceCodeSpecJSI(const JavaTurboModule::InitParams ¶ms); }; } // namespace react @@ -697,7 +697,7 @@ namespace facebook { class JSI_EXPORT NativeStatusBarManagerAndroidSpecJSI : public JavaTurboModule { public: - NativeStatusBarManagerAndroidSpecJSI(jni::alias_ref instance, std::shared_ptr jsInvoker, std::shared_ptr nativeInvoker); + NativeStatusBarManagerAndroidSpecJSI(const JavaTurboModule::InitParams ¶ms); }; } // namespace react @@ -711,7 +711,7 @@ namespace facebook { class JSI_EXPORT NativeStatusBarManagerIOSSpecJSI : public JavaTurboModule { public: - NativeStatusBarManagerIOSSpecJSI(jni::alias_ref instance, std::shared_ptr jsInvoker, std::shared_ptr nativeInvoker); + NativeStatusBarManagerIOSSpecJSI(const JavaTurboModule::InitParams ¶ms); }; } // namespace react @@ -725,7 +725,7 @@ namespace facebook { class JSI_EXPORT NativeTVNavigationEventEmitterSpecJSI : public JavaTurboModule { public: - NativeTVNavigationEventEmitterSpecJSI(jni::alias_ref instance, std::shared_ptr jsInvoker, std::shared_ptr nativeInvoker); + NativeTVNavigationEventEmitterSpecJSI(const JavaTurboModule::InitParams ¶ms); }; } // namespace react @@ -739,7 +739,7 @@ namespace facebook { class JSI_EXPORT NativeTimePickerAndroidSpecJSI : public JavaTurboModule { public: - NativeTimePickerAndroidSpecJSI(jni::alias_ref instance, std::shared_ptr jsInvoker, std::shared_ptr nativeInvoker); + NativeTimePickerAndroidSpecJSI(const JavaTurboModule::InitParams ¶ms); }; } // namespace react @@ -753,7 +753,7 @@ namespace facebook { class JSI_EXPORT NativeTimingSpecJSI : public JavaTurboModule { public: - NativeTimingSpecJSI(jni::alias_ref instance, std::shared_ptr jsInvoker, std::shared_ptr nativeInvoker); + NativeTimingSpecJSI(const JavaTurboModule::InitParams ¶ms); }; } // namespace react @@ -767,7 +767,7 @@ namespace facebook { class JSI_EXPORT NativeToastAndroidSpecJSI : public JavaTurboModule { public: - NativeToastAndroidSpecJSI(jni::alias_ref instance, std::shared_ptr jsInvoker, std::shared_ptr nativeInvoker); + NativeToastAndroidSpecJSI(const JavaTurboModule::InitParams ¶ms); }; } // namespace react @@ -781,7 +781,7 @@ namespace facebook { class JSI_EXPORT NativeUIManagerSpecJSI : public JavaTurboModule { public: - NativeUIManagerSpecJSI(jni::alias_ref instance, std::shared_ptr jsInvoker, std::shared_ptr nativeInvoker); + NativeUIManagerSpecJSI(const JavaTurboModule::InitParams ¶ms); }; } // namespace react @@ -795,7 +795,7 @@ namespace facebook { class JSI_EXPORT NativeVibrationSpecJSI : public JavaTurboModule { public: - NativeVibrationSpecJSI(jni::alias_ref instance, std::shared_ptr jsInvoker, std::shared_ptr nativeInvoker); + NativeVibrationSpecJSI(const JavaTurboModule::InitParams ¶ms); }; } // namespace react @@ -809,7 +809,7 @@ namespace facebook { class JSI_EXPORT NativeWebSocketModuleSpecJSI : public JavaTurboModule { public: - NativeWebSocketModuleSpecJSI(jni::alias_ref instance, std::shared_ptr jsInvoker, std::shared_ptr nativeInvoker); + NativeWebSocketModuleSpecJSI(const JavaTurboModule::InitParams ¶ms); }; } // namespace react diff --git a/ReactAndroid/src/main/java/com/facebook/react/devsupport/DevInternalSettings.java b/ReactAndroid/src/main/java/com/facebook/react/devsupport/DevInternalSettings.java index 9d060babc1866f..b63b37cdc9ce58 100644 --- a/ReactAndroid/src/main/java/com/facebook/react/devsupport/DevInternalSettings.java +++ b/ReactAndroid/src/main/java/com/facebook/react/devsupport/DevInternalSettings.java @@ -105,7 +105,7 @@ public void setElementInspectorEnabled(boolean enabled) { } @Override - public boolean isNuclideJSDebugEnabled() { + public boolean isDeviceDebugEnabled() { return ReactBuildConfig.IS_INTERNAL_BUILD && ReactBuildConfig.DEBUG; } diff --git a/ReactAndroid/src/main/java/com/facebook/react/devsupport/DevServerHelper.java b/ReactAndroid/src/main/java/com/facebook/react/devsupport/DevServerHelper.java index f80ae648404005..5c5bad9eb4a3a2 100644 --- a/ReactAndroid/src/main/java/com/facebook/react/devsupport/DevServerHelper.java +++ b/ReactAndroid/src/main/java/com/facebook/react/devsupport/DevServerHelper.java @@ -7,10 +7,12 @@ package com.facebook.react.devsupport; +import android.content.Context; import android.os.AsyncTask; import androidx.annotation.Nullable; import com.facebook.common.logging.FLog; import com.facebook.infer.annotation.Assertions; +import com.facebook.react.bridge.ReactContext; import com.facebook.react.common.ReactConstants; import com.facebook.react.devsupport.interfaces.DevBundleDownloadListener; import com.facebook.react.devsupport.interfaces.PackagerStatusCallback; @@ -23,6 +25,7 @@ import com.facebook.react.packagerconnection.RequestHandler; import com.facebook.react.packagerconnection.RequestOnlyHandler; import com.facebook.react.packagerconnection.Responder; +import com.facebook.react.util.RNLog; import java.io.File; import java.io.IOException; import java.util.Arrays; @@ -247,6 +250,38 @@ protected Void doInBackground(Void... params) { }.executeOnExecutor(AsyncTask.THREAD_POOL_EXECUTOR); } + public void openUrl(final ReactContext context, final String url, final String errorMessage) { + new AsyncTask() { + @Override + protected Boolean doInBackground(Void... ignore) { + return doSync(); + } + + public boolean doSync() { + try { + String openUrlEndpoint = getOpenUrlEndpoint(context); + String jsonString = new JSONObject().put("url", url).toString(); + RequestBody body = RequestBody.create(MediaType.parse("application/json"), jsonString); + + Request request = new Request.Builder().url(openUrlEndpoint).post(body).build(); + OkHttpClient client = new OkHttpClient(); + client.newCall(request).execute(); + return true; + } catch (JSONException | IOException e) { + FLog.e(ReactConstants.TAG, "Failed to open URL" + url, e); + return false; + } + } + + @Override + protected void onPostExecute(Boolean result) { + if (!result) { + RNLog.w(context, errorMessage); + } + } + }.executeOnExecutor(AsyncTask.THREAD_POOL_EXECUTOR); + } + public void symbolicateStackTrace( Iterable stackFrames, final SymbolicationListener listener) { try { @@ -345,6 +380,11 @@ public void downloadBundleFromURL( mBundleDownloader.downloadBundleFromURL(callback, outputFile, bundleURL, bundleInfo); } + private String getOpenUrlEndpoint(Context context) { + return String.format( + Locale.US, "http://%s/open-url", AndroidInfoHelpers.getServerHost(context)); + } + public void downloadBundleFromURL( DevBundleDownloadListener callback, File outputFile, diff --git a/ReactAndroid/src/main/java/com/facebook/react/devsupport/DevSupportManagerBase.java b/ReactAndroid/src/main/java/com/facebook/react/devsupport/DevSupportManagerBase.java index 249a359230dcc6..8a99c522ba9fbf 100644 --- a/ReactAndroid/src/main/java/com/facebook/react/devsupport/DevSupportManagerBase.java +++ b/ReactAndroid/src/main/java/com/facebook/react/devsupport/DevSupportManagerBase.java @@ -71,6 +71,9 @@ public abstract class DevSupportManagerBase private static final int JSEXCEPTION_ERROR_COOKIE = -1; private static final String JS_BUNDLE_FILE_NAME = "ReactNativeDevBundle.js"; private static final String RELOAD_APP_ACTION_SUFFIX = ".RELOAD_APP_ACTION"; + private static final String FLIPPER_DEBUGGER_URL = + "flipper://null/Hermesdebuggerrn?device=React%20Native"; + private static final String FLIPPER_DEVTOOLS_URL = "flipper://null/React?device=React%20Native"; private boolean mIsSamplingProfilerEnabled = false; private enum ErrorType { @@ -432,17 +435,53 @@ public void onOptionSelected() { handleReloadJS(); } }); - options.put( - mDevSettings.isRemoteJSDebugEnabled() - ? mApplicationContext.getString(R.string.catalyst_debug_stop) - : mApplicationContext.getString(R.string.catalyst_debug), - new DevOptionHandler() { - @Override - public void onOptionSelected() { - mDevSettings.setRemoteJSDebugEnabled(!mDevSettings.isRemoteJSDebugEnabled()); - handleReloadJS(); - } - }); + if (mDevSettings.isDeviceDebugEnabled()) { + // For on-device debugging we link out to Flipper. + // Since we're assuming Flipper is available, also include the DevTools. + + // Reset the old debugger setting so no one gets stuck. + // TODO: Remove in a few weeks. + if (mDevSettings.isRemoteJSDebugEnabled()) { + mDevSettings.setRemoteJSDebugEnabled(false); + handleReloadJS(); + } + options.put( + mApplicationContext.getString(R.string.catalyst_debug_open), + new DevOptionHandler() { + @Override + public void onOptionSelected() { + mDevServerHelper.openUrl( + mCurrentContext, + FLIPPER_DEBUGGER_URL, + mApplicationContext.getString(R.string.catalyst_open_flipper_error)); + } + }); + options.put( + mApplicationContext.getString(R.string.catalyst_devtools_open), + new DevOptionHandler() { + @Override + public void onOptionSelected() { + mDevServerHelper.openUrl( + mCurrentContext, + FLIPPER_DEVTOOLS_URL, + mApplicationContext.getString(R.string.catalyst_open_flipper_error)); + } + }); + } else { + // For remote debugging, we open up Chrome running the app in a web worker. + // Note that this requires async communication, which will not work for Turbo Modules. + options.put( + mDevSettings.isRemoteJSDebugEnabled() + ? mApplicationContext.getString(R.string.catalyst_debug_stop) + : mApplicationContext.getString(R.string.catalyst_debug), + new DevOptionHandler() { + @Override + public void onOptionSelected() { + mDevSettings.setRemoteJSDebugEnabled(!mDevSettings.isRemoteJSDebugEnabled()); + handleReloadJS(); + } + }); + } options.put( mApplicationContext.getString(R.string.catalyst_change_bundle_location), new DevOptionHandler() { diff --git a/ReactAndroid/src/main/java/com/facebook/react/fabric/FabricUIManager.java b/ReactAndroid/src/main/java/com/facebook/react/fabric/FabricUIManager.java index 5bc9ab4627d7b6..d63206e3f2267c 100644 --- a/ReactAndroid/src/main/java/com/facebook/react/fabric/FabricUIManager.java +++ b/ReactAndroid/src/main/java/com/facebook/react/fabric/FabricUIManager.java @@ -758,7 +758,26 @@ private boolean dispatchMountItems() { FLog.d(TAG, "dispatchMountItems: Executing mountItem: " + m); } } - mountItem.execute(mMountingManager); + + // TODO: if early ViewCommand dispatch ships 100% as a feature, this can be removed. + // This try/catch catches Retryable errors that can only be thrown by ViewCommands, which + // won't be executed here in Early Dispatch mode. + try { + mountItem.execute(mMountingManager); + } catch (RetryableMountingLayerException e) { + // It's very common for commands to be executed on views that no longer exist - for + // example, a blur event on TextInput being fired because of a navigation event away + // from the current screen. If the exception is marked as Retryable, we log a soft + // exception but never crash in debug. + // It's not clear that logging this is even useful, because these events are very + // common, mundane, and there's not much we can do about them currently. + ReactSoftException.logSoftException( + TAG, + new ReactNoCrashSoftException( + "Caught exception executing retryable mounting layer instruction: " + + mountItem.toString(), + e)); + } } mBatchedExecutionTime += SystemClock.uptimeMillis() - batchedExecutionStartTime; } diff --git a/ReactAndroid/src/main/java/com/facebook/react/fabric/jni/BUCK b/ReactAndroid/src/main/java/com/facebook/react/fabric/jni/BUCK index 65ffaea91c4cbd..fc4d7c9c768531 100644 --- a/ReactAndroid/src/main/java/com/facebook/react/fabric/jni/BUCK +++ b/ReactAndroid/src/main/java/com/facebook/react/fabric/jni/BUCK @@ -29,6 +29,8 @@ rn_xplat_cxx_library( react_native_xplat_target("better:better"), react_native_xplat_target("config:config"), react_native_xplat_target("fabric/uimanager:uimanager"), + react_native_xplat_target("fabric/scheduler:scheduler"), + react_native_xplat_target("fabric/componentregistry:componentregistry"), react_native_xplat_target("fabric/components/scrollview:scrollview"), react_native_xplat_target("utils:utils"), react_native_target("jni/react/jni:jni"), diff --git a/ReactAndroid/src/main/java/com/facebook/react/fabric/jni/Binding.cpp b/ReactAndroid/src/main/java/com/facebook/react/fabric/jni/Binding.cpp index 908b0e73eab9f8..e188e9d336e688 100644 --- a/ReactAndroid/src/main/java/com/facebook/react/fabric/jni/Binding.cpp +++ b/ReactAndroid/src/main/java/com/facebook/react/fabric/jni/Binding.cpp @@ -15,15 +15,15 @@ #include #include #include +#include #include #include #include #include #include -#include -#include -#include -#include +#include +#include +#include #include #include diff --git a/ReactAndroid/src/main/java/com/facebook/react/fabric/jni/Binding.h b/ReactAndroid/src/main/java/com/facebook/react/fabric/jni/Binding.h index 1145d7ea8f0e3f..2d7128d23875d1 100644 --- a/ReactAndroid/src/main/java/com/facebook/react/fabric/jni/Binding.h +++ b/ReactAndroid/src/main/java/com/facebook/react/fabric/jni/Binding.h @@ -10,8 +10,8 @@ #include #include #include -#include -#include +#include +#include #include #include #include "ComponentFactoryDelegate.h" diff --git a/ReactAndroid/src/main/java/com/facebook/react/fabric/jni/ComponentFactoryDelegate.cpp b/ReactAndroid/src/main/java/com/facebook/react/fabric/jni/ComponentFactoryDelegate.cpp index 4a722a75b9d649..0f4d4c08fb64c0 100644 --- a/ReactAndroid/src/main/java/com/facebook/react/fabric/jni/ComponentFactoryDelegate.cpp +++ b/ReactAndroid/src/main/java/com/facebook/react/fabric/jni/ComponentFactoryDelegate.cpp @@ -9,7 +9,7 @@ #include #include #include -#include +#include using namespace facebook::jsi; diff --git a/ReactAndroid/src/main/java/com/facebook/react/fabric/jni/ComponentFactoryDelegate.h b/ReactAndroid/src/main/java/com/facebook/react/fabric/jni/ComponentFactoryDelegate.h index aea2b356b1c7a1..aae5a8e5220b28 100644 --- a/ReactAndroid/src/main/java/com/facebook/react/fabric/jni/ComponentFactoryDelegate.h +++ b/ReactAndroid/src/main/java/com/facebook/react/fabric/jni/ComponentFactoryDelegate.h @@ -9,8 +9,8 @@ #include #include -#include -#include +#include +#include #include #include #include diff --git a/ReactAndroid/src/main/java/com/facebook/react/modules/debug/interfaces/DeveloperSettings.java b/ReactAndroid/src/main/java/com/facebook/react/modules/debug/interfaces/DeveloperSettings.java index bc5e19d7c9efdd..118c8fdb276a44 100644 --- a/ReactAndroid/src/main/java/com/facebook/react/modules/debug/interfaces/DeveloperSettings.java +++ b/ReactAndroid/src/main/java/com/facebook/react/modules/debug/interfaces/DeveloperSettings.java @@ -26,7 +26,7 @@ public interface DeveloperSettings { boolean isElementInspectorEnabled(); /** @return Whether Nuclide JS debugging is enabled. */ - boolean isNuclideJSDebugEnabled(); + boolean isDeviceDebugEnabled(); /** @return Whether remote JS debugging is enabled. */ boolean isRemoteJSDebugEnabled(); diff --git a/ReactAndroid/src/main/java/com/facebook/react/shell/BUCK b/ReactAndroid/src/main/java/com/facebook/react/shell/BUCK index bb25d9d77605b4..4df1ab9930362d 100644 --- a/ReactAndroid/src/main/java/com/facebook/react/shell/BUCK +++ b/ReactAndroid/src/main/java/com/facebook/react/shell/BUCK @@ -52,7 +52,6 @@ rn_android_library( react_native_target("java/com/facebook/react/turbomodule/core/interfaces:interfaces"), react_native_target("java/com/facebook/react/uimanager:uimanager"), react_native_target("java/com/facebook/react/views/art:art"), - react_native_target("java/com/facebook/react/views/checkbox:checkbox"), react_native_target("java/com/facebook/react/views/drawer:drawer"), react_native_target("java/com/facebook/react/views/image:image"), react_native_target("java/com/facebook/react/views/modal:modal"), diff --git a/ReactAndroid/src/main/java/com/facebook/react/shell/MainReactPackage.java b/ReactAndroid/src/main/java/com/facebook/react/shell/MainReactPackage.java index 1ccb0fe94ece3f..7c60cda3300a9d 100644 --- a/ReactAndroid/src/main/java/com/facebook/react/shell/MainReactPackage.java +++ b/ReactAndroid/src/main/java/com/facebook/react/shell/MainReactPackage.java @@ -45,7 +45,6 @@ import com.facebook.react.uimanager.ViewManager; import com.facebook.react.views.art.ARTRenderableViewManager; import com.facebook.react.views.art.ARTSurfaceViewManager; -import com.facebook.react.views.checkbox.ReactCheckBoxManager; import com.facebook.react.views.drawer.ReactDrawerLayoutManager; import com.facebook.react.views.image.ReactImageManager; import com.facebook.react.views.modal.ReactModalHostManager; @@ -178,7 +177,6 @@ public List createViewManagers(ReactApplicationContext reactContext viewManagers.add(ARTRenderableViewManager.createARTGroupViewManager()); viewManagers.add(ARTRenderableViewManager.createARTShapeViewManager()); viewManagers.add(ARTRenderableViewManager.createARTTextViewManager()); - viewManagers.add(new ReactCheckBoxManager()); viewManagers.add(new ReactDialogPickerManager()); viewManagers.add(new ReactDrawerLayoutManager()); viewManagers.add(new ReactDropdownPickerManager()); diff --git a/ReactAndroid/src/main/java/com/facebook/react/turbomodule/core/BUCK b/ReactAndroid/src/main/java/com/facebook/react/turbomodule/core/BUCK index ab6fd1ad0ef562..f3e34f4e46effc 100644 --- a/ReactAndroid/src/main/java/com/facebook/react/turbomodule/core/BUCK +++ b/ReactAndroid/src/main/java/com/facebook/react/turbomodule/core/BUCK @@ -16,9 +16,11 @@ rn_android_library( react_native_dep("third-party/android/androidx:annotation"), react_native_dep("java/com/facebook/proguard/annotations:annotations"), react_native_dep("java/com/facebook/systrace:systrace"), + react_native_dep("libraries/fbcore/src/main/java/com/facebook/common/logging:logging"), react_native_dep("libraries/soloader/java/com/facebook/soloader:soloader"), react_native_dep("third-party/java/infer-annotations:infer-annotations"), react_native_dep("third-party/java/jsr-305:jsr-305"), + react_native_target("java/com/facebook/react/common:common"), react_native_target("java/com/facebook/react/turbomodule/core/jni:jni"), react_native_target("java/com/facebook/debug/holder:holder"), react_native_target("java/com/facebook/react/bridge:interfaces"), diff --git a/ReactAndroid/src/main/java/com/facebook/react/turbomodule/core/ReactPackageTurboModuleManagerDelegate.java b/ReactAndroid/src/main/java/com/facebook/react/turbomodule/core/ReactPackageTurboModuleManagerDelegate.java index e8a45458325950..65ee5186e476bc 100644 --- a/ReactAndroid/src/main/java/com/facebook/react/turbomodule/core/ReactPackageTurboModuleManagerDelegate.java +++ b/ReactAndroid/src/main/java/com/facebook/react/turbomodule/core/ReactPackageTurboModuleManagerDelegate.java @@ -18,13 +18,10 @@ import com.facebook.react.module.model.ReactModuleInfo; import com.facebook.react.turbomodule.core.interfaces.TurboModule; import java.util.ArrayList; -import java.util.HashMap; import java.util.List; -import java.util.Map; public abstract class ReactPackageTurboModuleManagerDelegate extends TurboModuleManagerDelegate { private final List mPackages = new ArrayList<>(); - private final Map mModules = new HashMap<>(); private final ReactApplicationContext mReactApplicationContext; protected ReactPackageTurboModuleManagerDelegate( @@ -69,11 +66,8 @@ public CxxModuleWrapper getLegacyCxxModule(String moduleName) { return (CxxModuleWrapper) module; } + @Nullable private TurboModule resolveModule(String moduleName) { - if (mModules.containsKey(moduleName)) { - return mModules.get(moduleName); - } - NativeModule resolvedModule = null; for (final TurboReactPackage pkg : mPackages) { @@ -92,20 +86,10 @@ private TurboModule resolveModule(String moduleName) { } if (resolvedModule instanceof TurboModule) { - mModules.put(moduleName, (TurboModule) resolvedModule); - } else { - /** - * 1. The list of TurboReactPackages doesn't change. 2. TurboReactPackage.getModule is - * deterministic. Therefore, any two invocations of TurboReactPackage.getModule will return - * the same result given that they're provided the same arguments. - * - *

Hence, if module lookup fails once, we know it'll fail every time. Therefore, we can - * write null to the mModules Map and avoid doing this extra work. - */ - mModules.put(moduleName, null); + return (TurboModule) resolvedModule; } - return mModules.get(moduleName); + return null; } @Override diff --git a/ReactAndroid/src/main/java/com/facebook/react/turbomodule/core/TurboModuleManager.java b/ReactAndroid/src/main/java/com/facebook/react/turbomodule/core/TurboModuleManager.java index 52647dd0129874..004c8e8a7407a0 100644 --- a/ReactAndroid/src/main/java/com/facebook/react/turbomodule/core/TurboModuleManager.java +++ b/ReactAndroid/src/main/java/com/facebook/react/turbomodule/core/TurboModuleManager.java @@ -10,6 +10,7 @@ import androidx.annotation.GuardedBy; import androidx.annotation.NonNull; import androidx.annotation.Nullable; +import com.facebook.common.logging.FLog; import com.facebook.infer.annotation.Assertions; import com.facebook.jni.HybridData; import com.facebook.proguard.annotations.DoNotStrip; @@ -17,6 +18,7 @@ import com.facebook.react.bridge.JSIModule; import com.facebook.react.bridge.JavaScriptContextHolder; import com.facebook.react.bridge.NativeModule; +import com.facebook.react.common.ReactConstants; import com.facebook.react.turbomodule.core.interfaces.CallInvokerHolder; import com.facebook.react.turbomodule.core.interfaces.TurboModule; import com.facebook.react.turbomodule.core.interfaces.TurboModuleRegistry; @@ -30,7 +32,7 @@ */ public class TurboModuleManager implements JSIModule, TurboModuleRegistry { private static volatile boolean sIsSoLibraryLoaded; - private final List mEagerInitModuleNames; + private final List mEagerInitModuleNames = new ArrayList<>(); private final TurboModuleProvider mJavaModuleProvider; private final TurboModuleProvider mCxxModuleProvider; @@ -62,8 +64,11 @@ public TurboModuleManager( delegate); installJSIBindings(); - mEagerInitModuleNames = - delegate == null ? new ArrayList() : delegate.getEagerInitModuleNames(); + if (delegate != null) { + synchronized (delegate) { + mEagerInitModuleNames.addAll(delegate.getEagerInitModuleNames()); + } + } mJavaModuleProvider = new TurboModuleProvider() { @@ -73,7 +78,10 @@ public TurboModule getModule(String moduleName) { return null; } - return delegate.getModule(moduleName); + /** TODO(T65532092): Should TurboModuleManagerDelegate be thread-safe? */ + synchronized (delegate) { + return delegate.getModule(moduleName); + } } }; @@ -85,7 +93,13 @@ public TurboModule getModule(String moduleName) { return null; } - CxxModuleWrapper nativeModule = delegate.getLegacyCxxModule(moduleName); + CxxModuleWrapper nativeModule; + + /** TODO(T65532092): Should TurboModuleManagerDelegate be thread-safe? */ + synchronized (delegate) { + nativeModule = delegate.getLegacyCxxModule(moduleName); + } + if (nativeModule != null) { // TurboModuleManagerDelegate must always return TurboModules Assertions.assertCondition( @@ -114,6 +128,12 @@ private TurboModuleHolder getOrMaybeCreateTurboModuleHolder(String moduleName) { /* * Always return null after cleanup has started, so that getModule(moduleName) returns null. */ + + FLog.e( + ReactConstants.TAG, + "TurboModuleManager.getOrMaybeCreateTurboModuleHolder: Tried to require TurboModule " + + moduleName + + " after cleanup initiated"); return null; } @@ -174,6 +194,10 @@ public TurboModule getModule(String moduleName) { * Therefore, we should initialize on the TurboModule now. */ ((NativeModule) turboModule).initialize(); + } else { + FLog.e( + ReactConstants.TAG, + "TurboModuleManager.getModule: TurboModule " + moduleName + " not found in delegate"); } synchronized (moduleHolder) { diff --git a/ReactAndroid/src/main/java/com/facebook/react/turbomodule/core/jni/ReactCommon/TurboModuleManager.cpp b/ReactAndroid/src/main/java/com/facebook/react/turbomodule/core/jni/ReactCommon/TurboModuleManager.cpp index 9d1cb27475bb81..ac3a74c20660c9 100644 --- a/ReactAndroid/src/main/java/com/facebook/react/turbomodule/core/jni/ReactCommon/TurboModuleManager.cpp +++ b/ReactAndroid/src/main/java/com/facebook/react/turbomodule/core/jni/ReactCommon/TurboModuleManager.cpp @@ -112,8 +112,12 @@ void TurboModuleManager::installJSIBindings() { auto moduleInstance = getJavaModule(javaPart.get(), name); if (moduleInstance) { - auto turboModule = delegate->cthis()->getTurboModule( - name, moduleInstance, jsCallInvoker, nativeCallInvoker); + JavaTurboModule::InitParams params = {.moduleName = name, + .instance = moduleInstance, + .jsInvoker = jsCallInvoker, + .nativeInvoker = nativeCallInvoker}; + + auto turboModule = delegate->cthis()->getTurboModule(name, params); turboModuleCache->insert({name, turboModule}); return turboModule; } diff --git a/ReactAndroid/src/main/java/com/facebook/react/turbomodule/core/jni/ReactCommon/TurboModuleManagerDelegate.h b/ReactAndroid/src/main/java/com/facebook/react/turbomodule/core/jni/ReactCommon/TurboModuleManagerDelegate.h index 8fd63d66682667..d98cb39013023e 100644 --- a/ReactAndroid/src/main/java/com/facebook/react/turbomodule/core/jni/ReactCommon/TurboModuleManagerDelegate.h +++ b/ReactAndroid/src/main/java/com/facebook/react/turbomodule/core/jni/ReactCommon/TurboModuleManagerDelegate.h @@ -23,13 +23,11 @@ class TurboModuleManagerDelegate "Lcom/facebook/react/turbomodule/core/TurboModuleManagerDelegate;"; virtual std::shared_ptr getTurboModule( - std::string name, - jni::alias_ref turboModule, - std::shared_ptr jsInvoker, - std::shared_ptr nativeInvoker) = 0; + const std::string name, + const JavaTurboModule::InitParams ¶ms) = 0; virtual std::shared_ptr getTurboModule( - std::string name, - std::shared_ptr jsInvoker) = 0; + const std::string name, + const std::shared_ptr jsInvoker) = 0; private: friend HybridBase; diff --git a/ReactAndroid/src/main/java/com/facebook/react/uimanager/UIManagerModule.java b/ReactAndroid/src/main/java/com/facebook/react/uimanager/UIManagerModule.java index 2000e6f7212d9a..9d7879d425d2ae 100644 --- a/ReactAndroid/src/main/java/com/facebook/react/uimanager/UIManagerModule.java +++ b/ReactAndroid/src/main/java/com/facebook/react/uimanager/UIManagerModule.java @@ -815,6 +815,7 @@ public EventDispatcher getEventDispatcher() { public void sendAccessibilityEvent(int tag, int eventType) { int uiManagerType = ViewUtil.getUIManagerType(tag); if (uiManagerType == FABRIC) { + // TODO: T65793557 Refactor sendAccessibilityEvent to use ViewCommands UIManager fabricUIManager = UIManagerHelper.getUIManager(getReactApplicationContext(), uiManagerType); if (fabricUIManager != null) { diff --git a/ReactAndroid/src/main/java/com/facebook/react/uimanager/ViewProps.java b/ReactAndroid/src/main/java/com/facebook/react/uimanager/ViewProps.java index 19926020b8a7c6..fcb4d2bb4f15cc 100644 --- a/ReactAndroid/src/main/java/com/facebook/react/uimanager/ViewProps.java +++ b/ReactAndroid/src/main/java/com/facebook/react/uimanager/ViewProps.java @@ -97,6 +97,7 @@ public class ViewProps { public static final String ON = "on"; public static final String RESIZE_MODE = "resizeMode"; public static final String RESIZE_METHOD = "resizeMethod"; + public static final String LAYOUT_DIRECTION = "layoutDirection"; public static final String TEXT_ALIGN = "textAlign"; public static final String TEXT_ALIGN_VERTICAL = "textAlignVertical"; public static final String TEXT_DECORATION_LINE = "textDecorationLine"; diff --git a/ReactAndroid/src/main/java/com/facebook/react/views/checkbox/BUCK b/ReactAndroid/src/main/java/com/facebook/react/views/checkbox/BUCK deleted file mode 100644 index 3e2f34a0960d51..00000000000000 --- a/ReactAndroid/src/main/java/com/facebook/react/views/checkbox/BUCK +++ /dev/null @@ -1,25 +0,0 @@ -load("//tools/build_defs/oss:rn_defs.bzl", "react_native_dep", "react_native_target", "rn_android_library") - -rn_android_library( - name = "checkbox", - srcs = glob(["*.java"]), - is_androidx = True, - provided_deps = [ - react_native_dep("third-party/android/androidx:annotation"), - react_native_dep("third-party/android/androidx:appcompat"), - react_native_dep("third-party/android/androidx:core"), - react_native_dep("third-party/android/androidx:fragment"), - react_native_dep("third-party/android/androidx:legacy-support-core-ui"), - react_native_dep("third-party/android/androidx:legacy-support-core-utils"), - ], - visibility = [ - "PUBLIC", - ], - deps = [ - react_native_dep("third-party/java/jsr-305:jsr-305"), - react_native_target("java/com/facebook/react/bridge:bridge"), - react_native_target("java/com/facebook/react/common:common"), - react_native_target("java/com/facebook/react/uimanager:uimanager"), - react_native_target("java/com/facebook/react/uimanager/annotations:annotations"), - ], -) diff --git a/ReactAndroid/src/main/java/com/facebook/react/views/checkbox/ReactCheckBox.java b/ReactAndroid/src/main/java/com/facebook/react/views/checkbox/ReactCheckBox.java deleted file mode 100644 index 7165a781208228..00000000000000 --- a/ReactAndroid/src/main/java/com/facebook/react/views/checkbox/ReactCheckBox.java +++ /dev/null @@ -1,38 +0,0 @@ -/* - * Copyright (c) Facebook, Inc. and its affiliates. - * - * This source code is licensed under the MIT license found in the - * LICENSE file in the root directory of this source tree. - */ - -package com.facebook.react.views.checkbox; - -import android.content.Context; -import androidx.appcompat.widget.AppCompatCheckBox; - -/** CheckBox that has its value controlled by JS. */ -/*package*/ class ReactCheckBox extends AppCompatCheckBox { - - private boolean mAllowChange; - - public ReactCheckBox(Context context) { - super(context); - mAllowChange = true; - } - - @Override - public void setChecked(boolean checked) { - if (mAllowChange) { - mAllowChange = false; - super.setChecked(checked); - } - } - - /*package*/ void setOn(boolean on) { - // If the checkbox has a different value than the value sent by JS, we must change it. - if (isChecked() != on) { - super.setChecked(on); - } - mAllowChange = true; - } -} diff --git a/ReactAndroid/src/main/java/com/facebook/react/views/checkbox/ReactCheckBoxEvent.java b/ReactAndroid/src/main/java/com/facebook/react/views/checkbox/ReactCheckBoxEvent.java deleted file mode 100644 index 3e0aaa628ebd21..00000000000000 --- a/ReactAndroid/src/main/java/com/facebook/react/views/checkbox/ReactCheckBoxEvent.java +++ /dev/null @@ -1,53 +0,0 @@ -/* - * Copyright (c) Facebook, Inc. and its affiliates. - * - * This source code is licensed under the MIT license found in the - * LICENSE file in the root directory of this source tree. - */ - -package com.facebook.react.views.checkbox; - -import com.facebook.react.bridge.Arguments; -import com.facebook.react.bridge.WritableMap; -import com.facebook.react.uimanager.events.Event; -import com.facebook.react.uimanager.events.RCTEventEmitter; - -/** Event emitted by a ReactCheckBoxManager once a checkbox is manipulated. */ -/*package*/ class ReactCheckBoxEvent extends Event { - - public static final String EVENT_NAME = "topChange"; - - private final boolean mIsChecked; - - public ReactCheckBoxEvent(int viewId, boolean isChecked) { - super(viewId); - mIsChecked = isChecked; - } - - public boolean getIsChecked() { - return mIsChecked; - } - - @Override - public String getEventName() { - return EVENT_NAME; - } - - @Override - public short getCoalescingKey() { - // All checkbox events for a given view can be coalesced. - return 0; - } - - @Override - public void dispatch(RCTEventEmitter rctEventEmitter) { - rctEventEmitter.receiveEvent(getViewTag(), getEventName(), serializeEventData()); - } - - private WritableMap serializeEventData() { - WritableMap eventData = Arguments.createMap(); - eventData.putInt("target", getViewTag()); - eventData.putBoolean("value", getIsChecked()); - return eventData; - } -} diff --git a/ReactAndroid/src/main/java/com/facebook/react/views/checkbox/ReactCheckBoxManager.java b/ReactAndroid/src/main/java/com/facebook/react/views/checkbox/ReactCheckBoxManager.java deleted file mode 100644 index 6f0bd7eeaf23db..00000000000000 --- a/ReactAndroid/src/main/java/com/facebook/react/views/checkbox/ReactCheckBoxManager.java +++ /dev/null @@ -1,137 +0,0 @@ -/* - * Copyright (c) Facebook, Inc. and its affiliates. - * - * This source code is licensed under the MIT license found in the - * LICENSE file in the root directory of this source tree. - */ - -package com.facebook.react.views.checkbox; - -import android.content.Context; -import android.content.res.ColorStateList; -import android.util.TypedValue; -import android.widget.CompoundButton; -import androidx.annotation.NonNull; -import androidx.annotation.Nullable; -import androidx.appcompat.widget.TintContextWrapper; -import androidx.core.widget.CompoundButtonCompat; -import com.facebook.react.bridge.ReactContext; -import com.facebook.react.bridge.ReadableArray; -import com.facebook.react.bridge.ReadableMap; -import com.facebook.react.uimanager.SimpleViewManager; -import com.facebook.react.uimanager.ThemedReactContext; -import com.facebook.react.uimanager.UIManagerModule; -import com.facebook.react.uimanager.ViewProps; -import com.facebook.react.uimanager.annotations.ReactProp; - -/** View manager for {@link ReactCheckBox} components. */ -public class ReactCheckBoxManager extends SimpleViewManager { - - public static final String REACT_CLASS = "AndroidCheckBox"; - - private static final CompoundButton.OnCheckedChangeListener ON_CHECKED_CHANGE_LISTENER = - new CompoundButton.OnCheckedChangeListener() { - @Override - public void onCheckedChanged(CompoundButton buttonView, boolean isChecked) { - ReactContext reactContext = getReactContext(buttonView); - reactContext - .getNativeModule(UIManagerModule.class) - .getEventDispatcher() - .dispatchEvent(new ReactCheckBoxEvent(buttonView.getId(), isChecked)); - } - - private ReactContext getReactContext(CompoundButton buttonView) { - ReactContext reactContext; - Context ctx = buttonView.getContext(); - if (ctx instanceof TintContextWrapper) { - reactContext = (ReactContext) ((TintContextWrapper) ctx).getBaseContext(); - } else { - reactContext = (ReactContext) buttonView.getContext(); - } - return reactContext; - } - }; - - @Override - public String getName() { - return REACT_CLASS; - } - - @Override - protected void addEventEmitters(final ThemedReactContext reactContext, final ReactCheckBox view) { - view.setOnCheckedChangeListener(ON_CHECKED_CHANGE_LISTENER); - } - - @Override - protected ReactCheckBox createViewInstance(ThemedReactContext context) { - ReactCheckBox view = new ReactCheckBox(context); - return view; - } - - @ReactProp(name = ViewProps.ENABLED, defaultBoolean = true) - public void setEnabled(ReactCheckBox view, boolean enabled) { - view.setEnabled(enabled); - } - - @ReactProp(name = ViewProps.ON) - public void setOn(ReactCheckBox view, boolean on) { - // we set the checked change listener to null and then restore it so that we don't fire an - // onChange event to JS when JS itself is updating the value of the checkbox - view.setOnCheckedChangeListener(null); - view.setOn(on); - view.setOnCheckedChangeListener(ON_CHECKED_CHANGE_LISTENER); - } - - @Override - public void receiveCommand( - @NonNull ReactCheckBox root, String commandId, @Nullable ReadableArray args) { - switch (commandId) { - case "setNativeValue": - if (args != null) { - setOn(root, args.getBoolean(0)); - break; - } - } - } - - private static int getThemeColor(final Context context, String colorId) { - final TypedValue value = new TypedValue(); - context.getTheme().resolveAttribute(getIdentifier(context, colorId), value, true); - return value.data; - } - - /** - * The appcompat-v7 BUCK dep is listed as a provided_dep, which complains that - * com.facebook.react.R doesn't exist. Since the attributes are provided from a parent, we can - * access those attributes dynamically. - */ - private static int getIdentifier(Context context, String name) { - return context.getResources().getIdentifier(name, "attr", context.getPackageName()); - } - - @ReactProp(name = "tintColors") - public void setTintColors(ReactCheckBox view, @Nullable ReadableMap colorsMap) { - String defaultColorIdOfCheckedState = "colorAccent"; - int trueColor = - colorsMap == null || !colorsMap.hasKey("true") - ? getThemeColor(view.getContext(), defaultColorIdOfCheckedState) - : colorsMap.getInt("true"); - - String defaultColorIdOfUncheckedState = "colorPrimaryDark"; - int falseColor = - colorsMap == null || !colorsMap.hasKey("false") - ? getThemeColor(view.getContext(), defaultColorIdOfUncheckedState) - : colorsMap.getInt("false"); - - ColorStateList csl = - new ColorStateList( - new int[][] { - new int[] {android.R.attr.state_checked}, new int[] {-android.R.attr.state_checked} - }, - new int[] { - trueColor, falseColor, - }); - - CompoundButtonCompat.setButtonTintList(view, csl); - } -} diff --git a/ReactAndroid/src/main/java/com/facebook/react/views/modal/ReactModalHostManager.java b/ReactAndroid/src/main/java/com/facebook/react/views/modal/ReactModalHostManager.java index e9a8f66c3b847e..ac0cffd04979fa 100644 --- a/ReactAndroid/src/main/java/com/facebook/react/views/modal/ReactModalHostManager.java +++ b/ReactAndroid/src/main/java/com/facebook/react/views/modal/ReactModalHostManager.java @@ -140,7 +140,6 @@ protected void onAfterUpdateTransaction(ReactModalHostView view) { @Override public Object updateState( ReactModalHostView view, ReactStylesDiffMap props, @Nullable StateWrapper stateWrapper) { - // TODO T55794595: Add support for updating state with null stateWrapper Point modalSize = ModalHostHelper.getModalHostSize(view.getContext()); view.updateState(stateWrapper, modalSize.x, modalSize.y); return null; diff --git a/ReactAndroid/src/main/java/com/facebook/react/views/scroll/ReactHorizontalScrollView.java b/ReactAndroid/src/main/java/com/facebook/react/views/scroll/ReactHorizontalScrollView.java index 0dee6f7c8e9d03..c905c5dc9a4f37 100644 --- a/ReactAndroid/src/main/java/com/facebook/react/views/scroll/ReactHorizontalScrollView.java +++ b/ReactAndroid/src/main/java/com/facebook/react/views/scroll/ReactHorizontalScrollView.java @@ -50,6 +50,8 @@ public class ReactHorizontalScrollView extends HorizontalScrollView private static final String CONTENT_OFFSET_LEFT = "contentOffsetLeft"; private static final String CONTENT_OFFSET_TOP = "contentOffsetTop"; + private static final int UNSET_CONTENT_OFFSET = -1; + private final OnScrollDispatchHelper mOnScrollDispatchHelper = new OnScrollDispatchHelper(); private final @Nullable OverScroller mScroller; private final VelocityHelper mVelocityHelper = new VelocityHelper(); @@ -76,6 +78,8 @@ public class ReactHorizontalScrollView extends HorizontalScrollView private boolean mSnapToEnd = true; private ReactViewBackgroundManager mReactBackgroundManager; private boolean mPagedArrowScrolling = false; + private int pendingContentOffsetX = UNSET_CONTENT_OFFSET; + private int pendingContentOffsetY = UNSET_CONTENT_OFFSET; private @Nullable StateWrapper mStateWrapper; private final Rect mTempRect = new Rect(); @@ -224,7 +228,13 @@ protected void onMeasure(int widthMeasureSpec, int heightMeasureSpec) { @Override protected void onLayout(boolean changed, int l, int t, int r, int b) { // Call with the present values in order to re-layout if necessary - reactScrollTo(getScrollX(), getScrollY()); + // If a "pending" value has been set, we restore that value. + // That value gets cleared by reactScrollTo. + int scrollToX = + pendingContentOffsetX != UNSET_CONTENT_OFFSET ? pendingContentOffsetX : getScrollX(); + int scrollToY = + pendingContentOffsetY != UNSET_CONTENT_OFFSET ? pendingContentOffsetY : getScrollY(); + reactScrollTo(scrollToX, scrollToY); } /** @@ -906,6 +916,7 @@ public void setBorderStyle(@Nullable String style) { public void reactSmoothScrollTo(int x, int y) { smoothScrollTo(x, y); updateStateOnScroll(x, y); + setPendingContentOffsets(x, y); } /** @@ -917,6 +928,25 @@ public void reactSmoothScrollTo(int x, int y) { public void reactScrollTo(int x, int y) { scrollTo(x, y); updateStateOnScroll(x, y); + setPendingContentOffsets(x, y); + } + + /** + * If contentOffset is set before the View has been laid out, store the values and set them when + * `onLayout` is called. + * + * @param x + * @param y + */ + private void setPendingContentOffsets(int x, int y) { + View child = getChildAt(0); + if (child != null && child.getWidth() != 0 && child.getHeight() != 0) { + pendingContentOffsetX = UNSET_CONTENT_OFFSET; + pendingContentOffsetY = UNSET_CONTENT_OFFSET; + } else { + pendingContentOffsetX = x; + pendingContentOffsetY = y; + } } public void updateState(@Nullable StateWrapper stateWrapper) { diff --git a/ReactAndroid/src/main/java/com/facebook/react/views/scroll/ReactHorizontalScrollViewManager.java b/ReactAndroid/src/main/java/com/facebook/react/views/scroll/ReactHorizontalScrollViewManager.java index b7712b3d65387a..ecb72fff78746f 100644 --- a/ReactAndroid/src/main/java/com/facebook/react/views/scroll/ReactHorizontalScrollViewManager.java +++ b/ReactAndroid/src/main/java/com/facebook/react/views/scroll/ReactHorizontalScrollViewManager.java @@ -12,6 +12,7 @@ import androidx.annotation.Nullable; import androidx.core.view.ViewCompat; import com.facebook.react.bridge.ReadableArray; +import com.facebook.react.bridge.ReadableMap; import com.facebook.react.module.annotations.ReactModule; import com.facebook.react.uimanager.DisplayMetricsHolder; import com.facebook.react.uimanager.PixelUtil; @@ -299,4 +300,13 @@ public void setFadingEdgeLength(ReactHorizontalScrollView view, int value) { view.setFadingEdgeLength(0); } } + + @ReactProp(name = "contentOffset") + public void setContentOffset(ReactHorizontalScrollView view, ReadableMap value) { + if (value != null) { + double x = value.getDouble("x"); + double y = value.getDouble("y"); + view.reactScrollTo((int) PixelUtil.toPixelFromDIP(x), (int) PixelUtil.toPixelFromDIP(y)); + } + } } diff --git a/ReactAndroid/src/main/java/com/facebook/react/views/scroll/ReactScrollView.java b/ReactAndroid/src/main/java/com/facebook/react/views/scroll/ReactScrollView.java index 6bd0be836203e1..f0d4e99658553a 100644 --- a/ReactAndroid/src/main/java/com/facebook/react/views/scroll/ReactScrollView.java +++ b/ReactAndroid/src/main/java/com/facebook/react/views/scroll/ReactScrollView.java @@ -55,6 +55,8 @@ public class ReactScrollView extends ScrollView private static final String CONTENT_OFFSET_LEFT = "contentOffsetLeft"; private static final String CONTENT_OFFSET_TOP = "contentOffsetTop"; + private static final int UNSET_CONTENT_OFFSET = -1; + private final OnScrollDispatchHelper mOnScrollDispatchHelper = new OnScrollDispatchHelper(); private final @Nullable OverScroller mScroller; private final VelocityHelper mVelocityHelper = new VelocityHelper(); @@ -81,6 +83,8 @@ public class ReactScrollView extends ScrollView private boolean mSnapToEnd = true; private View mContentView; private ReactViewBackgroundManager mReactBackgroundManager; + private int pendingContentOffsetX = UNSET_CONTENT_OFFSET; + private int pendingContentOffsetY = UNSET_CONTENT_OFFSET; private @Nullable StateWrapper mStateWrapper; public ReactScrollView(ReactContext context) { @@ -200,7 +204,13 @@ protected void onMeasure(int widthMeasureSpec, int heightMeasureSpec) { @Override protected void onLayout(boolean changed, int l, int t, int r, int b) { // Call with the present values in order to re-layout if necessary - reactScrollTo(getScrollX(), getScrollY()); + // If a "pending" value has been set, we restore that value. + // That value gets cleared by reactScrollTo. + int scrollToX = + pendingContentOffsetX != UNSET_CONTENT_OFFSET ? pendingContentOffsetX : getScrollX(); + int scrollToY = + pendingContentOffsetY != UNSET_CONTENT_OFFSET ? pendingContentOffsetY : getScrollY(); + reactScrollTo(scrollToX, scrollToY); } @Override @@ -777,6 +787,7 @@ public void onChildViewRemoved(View parent, View child) { public void reactSmoothScrollTo(int x, int y) { smoothScrollTo(x, y); updateStateOnScroll(x, y); + setPendingContentOffsets(x, y); } /** @@ -788,6 +799,25 @@ public void reactSmoothScrollTo(int x, int y) { public void reactScrollTo(int x, int y) { scrollTo(x, y); updateStateOnScroll(x, y); + setPendingContentOffsets(x, y); + } + + /** + * If contentOffset is set before the View has been laid out, store the values and set them when + * `onLayout` is called. + * + * @param x + * @param y + */ + private void setPendingContentOffsets(int x, int y) { + View child = getChildAt(0); + if (child != null && child.getWidth() != 0 && child.getHeight() != 0) { + pendingContentOffsetX = UNSET_CONTENT_OFFSET; + pendingContentOffsetY = UNSET_CONTENT_OFFSET; + } else { + pendingContentOffsetX = x; + pendingContentOffsetY = y; + } } /** diff --git a/ReactAndroid/src/main/java/com/facebook/react/views/scroll/ReactScrollViewManager.java b/ReactAndroid/src/main/java/com/facebook/react/views/scroll/ReactScrollViewManager.java index 51dc13166b0952..ed7cd05778836e 100644 --- a/ReactAndroid/src/main/java/com/facebook/react/views/scroll/ReactScrollViewManager.java +++ b/ReactAndroid/src/main/java/com/facebook/react/views/scroll/ReactScrollViewManager.java @@ -13,6 +13,7 @@ import androidx.annotation.Nullable; import androidx.core.view.ViewCompat; import com.facebook.react.bridge.ReadableArray; +import com.facebook.react.bridge.ReadableMap; import com.facebook.react.bridge.RetryableMountingLayerException; import com.facebook.react.common.MapBuilder; import com.facebook.react.module.annotations.ReactModule; @@ -304,6 +305,15 @@ public void setFadingEdgeLength(ReactScrollView view, int value) { } } + @ReactProp(name = "contentOffset") + public void setContentOffset(ReactScrollView view, ReadableMap value) { + if (value != null) { + double x = value.getDouble("x"); + double y = value.getDouble("y"); + view.reactScrollTo((int) PixelUtil.toPixelFromDIP(x), (int) PixelUtil.toPixelFromDIP(y)); + } + } + @Override public Object updateState( ReactScrollView view, ReactStylesDiffMap props, @Nullable StateWrapper stateWrapper) { diff --git a/ReactAndroid/src/main/java/com/facebook/react/views/text/ReactTextShadowNode.java b/ReactAndroid/src/main/java/com/facebook/react/views/text/ReactTextShadowNode.java index 2a3a5b604dd8ee..ac84caae1e07d9 100644 --- a/ReactAndroid/src/main/java/com/facebook/react/views/text/ReactTextShadowNode.java +++ b/ReactAndroid/src/main/java/com/facebook/react/views/text/ReactTextShadowNode.java @@ -122,12 +122,37 @@ public long measure( } } - if (mNumberOfLines != UNSET && mNumberOfLines < layout.getLineCount()) { - return YogaMeasureOutput.make( - layout.getWidth(), layout.getLineBottom(mNumberOfLines - 1)); + final int lineCount = + mNumberOfLines == UNSET + ? layout.getLineCount() + : Math.min(mNumberOfLines, layout.getLineCount()); + + // Instead of using `layout.getWidth()` (which may yield a significantly larger width for + // text that is wrapping), compute width using the longest line. + float layoutWidth = 0; + if (widthMode == YogaMeasureMode.EXACTLY) { + layoutWidth = width; } else { - return YogaMeasureOutput.make(layout.getWidth(), layout.getHeight()); + for (int lineIndex = 0; lineIndex < lineCount; lineIndex++) { + float lineWidth = layout.getLineWidth(lineIndex); + if (lineWidth > layoutWidth) { + layoutWidth = lineWidth; + } + } + if (widthMode == YogaMeasureMode.AT_MOST && layoutWidth > width) { + layoutWidth = width; + } } + + float layoutHeight = height; + if (heightMode != YogaMeasureMode.EXACTLY) { + layoutHeight = layout.getLineBottom(lineCount - 1); + if (heightMode == YogaMeasureMode.AT_MOST && layoutHeight > height) { + layoutHeight = height; + } + } + + return YogaMeasureOutput.make(layoutWidth, layoutHeight); } }; diff --git a/ReactAndroid/src/main/java/com/facebook/react/views/text/ReactTextViewManager.java b/ReactAndroid/src/main/java/com/facebook/react/views/text/ReactTextViewManager.java index c6d739a586f03e..c3e248bc33b309 100644 --- a/ReactAndroid/src/main/java/com/facebook/react/views/text/ReactTextViewManager.java +++ b/ReactAndroid/src/main/java/com/facebook/react/views/text/ReactTextViewManager.java @@ -83,11 +83,9 @@ public boolean needsCustomLayoutForChildren() { @Override public Object updateState( ReactTextView view, ReactStylesDiffMap props, @Nullable StateWrapper stateWrapper) { - // TODO T55794595: Add support for updating state with null stateWrapper ReadableNativeMap state = stateWrapper.getState(); ReadableMap attributedString = state.getMap("attributedString"); ReadableMap paragraphAttributes = state.getMap("paragraphAttributes"); - Spannable spanned = TextLayoutManager.getOrCreateSpannableForText( view.getContext(), attributedString, mReactTextViewManagerCallback); @@ -100,7 +98,7 @@ public Object updateState( spanned, state.hasKey("mostRecentEventCount") ? state.getInt("mostRecentEventCount") : -1, false, // TODO add this into local Data - TextAttributeProps.getTextAlignment(props), + TextAttributeProps.getTextAlignment(props, TextLayoutManager.isRTL(attributedString)), textBreakStrategy, TextAttributeProps.getJustificationMode(props)); } diff --git a/ReactAndroid/src/main/java/com/facebook/react/views/text/TextAttributeProps.java b/ReactAndroid/src/main/java/com/facebook/react/views/text/TextAttributeProps.java index 2562f450ea578f..29e3e2969fb879 100644 --- a/ReactAndroid/src/main/java/com/facebook/react/views/text/TextAttributeProps.java +++ b/ReactAndroid/src/main/java/com/facebook/react/views/text/TextAttributeProps.java @@ -10,6 +10,7 @@ import android.graphics.Typeface; import android.os.Build; import android.text.Layout; +import android.util.LayoutDirection; import android.view.Gravity; import androidx.annotation.Nullable; import com.facebook.react.bridge.JSApplicationIllegalArgumentException; @@ -57,6 +58,9 @@ public class TextAttributeProps { protected float mLetterSpacingInput = Float.NaN; protected int mTextAlign = Gravity.NO_GRAVITY; + // `UNSET` is -1 and is the same as `LayoutDirection.UNDEFINED` but the symbol isn't available. + protected int mLayoutDirection = UNSET; + protected TextTransform mTextTransform = TextTransform.UNSET; protected float mTextShadowOffsetDx = 0; @@ -129,10 +133,10 @@ public TextAttributeProps(ReactStylesDiffMap props) { setTextShadowRadius(getIntProp(PROP_SHADOW_RADIUS, 1)); setTextShadowColor(getIntProp(PROP_SHADOW_COLOR, DEFAULT_TEXT_SHADOW_COLOR)); setTextTransform(getStringProp(PROP_TEXT_TRANSFORM)); + setLayoutDirection(getStringProp(ViewProps.LAYOUT_DIRECTION)); } - // TODO T63645393 add support for RTL - public static int getTextAlignment(ReactStylesDiffMap props) { + public static int getTextAlignment(ReactStylesDiffMap props, boolean isRTL) { @Nullable String textAlignPropValue = props.hasKey(ViewProps.TEXT_ALIGN) ? props.getString(ViewProps.TEXT_ALIGN) : null; @@ -144,9 +148,9 @@ public static int getTextAlignment(ReactStylesDiffMap props) { if (textAlignPropValue == null || "auto".equals(textAlignPropValue)) { textAlignment = Gravity.NO_GRAVITY; } else if ("left".equals(textAlignPropValue)) { - textAlignment = Gravity.LEFT; + textAlignment = isRTL ? Gravity.RIGHT : Gravity.LEFT; } else if ("right".equals(textAlignPropValue)) { - textAlignment = Gravity.RIGHT; + textAlignment = isRTL ? Gravity.LEFT : Gravity.RIGHT; } else if ("center".equals(textAlignPropValue)) { textAlignment = Gravity.CENTER_HORIZONTAL; } else { @@ -369,6 +373,19 @@ public void setTextShadowOffset(ReadableMap offsetMap) { } } + public void setLayoutDirection(@Nullable String layoutDirection) { + if (layoutDirection == null || "undefined".equals(layoutDirection)) { + mLayoutDirection = UNSET; + } else if ("rtl".equals(layoutDirection)) { + mLayoutDirection = LayoutDirection.RTL; + } else if ("ltr".equals(layoutDirection)) { + mLayoutDirection = LayoutDirection.LTR; + } else { + throw new JSApplicationIllegalArgumentException( + "Invalid layoutDirection: " + layoutDirection); + } + } + public void setTextShadowRadius(float textShadowRadius) { if (textShadowRadius != mTextShadowRadius) { mTextShadowRadius = textShadowRadius; diff --git a/ReactAndroid/src/main/java/com/facebook/react/views/text/TextLayoutManager.java b/ReactAndroid/src/main/java/com/facebook/react/views/text/TextLayoutManager.java index 93aaf3d4866466..4b64720d80e51c 100644 --- a/ReactAndroid/src/main/java/com/facebook/react/views/text/TextLayoutManager.java +++ b/ReactAndroid/src/main/java/com/facebook/react/views/text/TextLayoutManager.java @@ -18,6 +18,7 @@ import android.text.Spanned; import android.text.StaticLayout; import android.text.TextPaint; +import android.util.LayoutDirection; import android.util.LruCache; import androidx.annotation.Nullable; import com.facebook.react.bridge.ReadableArray; @@ -47,6 +48,17 @@ public class TextLayoutManager { private static final Object sSpannableCacheLock = new Object(); private static LruCache sSpannableCache = new LruCache<>(spannableCacheSize); + public static boolean isRTL(ReadableMap attributedString) { + ReadableArray fragments = attributedString.getArray("fragments"); + for (int i = 0, length = fragments.size(); i < length; i++) { + ReadableMap fragment = fragments.getMap(i); + ReactStylesDiffMap map = new ReactStylesDiffMap(fragment.getMap("textAttributes")); + TextAttributeProps textAttributes = new TextAttributeProps(map); + return textAttributes.mLayoutDirection == LayoutDirection.RTL; + } + return false; + } + private static void buildSpannableFromFragment( Context context, ReadableArray fragments, @@ -294,14 +306,34 @@ public static long measureText( ? paragraphAttributes.getInt("maximumNumberOfLines") : UNSET; - int calculatedWidth = layout.getWidth(); - int calculatedHeight; - if (maximumNumberOfLines != UNSET - && maximumNumberOfLines != 0 - && maximumNumberOfLines < layout.getLineCount()) { - calculatedHeight = layout.getLineBottom(maximumNumberOfLines - 1); + int calculatedLineCount = + maximumNumberOfLines == UNSET || maximumNumberOfLines == 0 + ? layout.getLineCount() + : Math.min(maximumNumberOfLines, layout.getLineCount()); + + // Instead of using `layout.getWidth()` (which may yield a significantly larger width for + // text that is wrapping), compute width using the longest line. + float calculatedWidth = 0; + if (widthYogaMeasureMode == YogaMeasureMode.EXACTLY) { + calculatedWidth = width; } else { - calculatedHeight = layout.getHeight(); + for (int lineIndex = 0; lineIndex < calculatedLineCount; lineIndex++) { + float lineWidth = layout.getLineWidth(lineIndex); + if (lineWidth > calculatedWidth) { + calculatedWidth = lineWidth; + } + } + if (widthYogaMeasureMode == YogaMeasureMode.AT_MOST && calculatedWidth > width) { + calculatedWidth = width; + } + } + + float calculatedHeight = height; + if (heightYogaMeasureMode != YogaMeasureMode.EXACTLY) { + calculatedHeight = layout.getLineBottom(calculatedLineCount - 1); + if (heightYogaMeasureMode == YogaMeasureMode.AT_MOST && calculatedHeight > height) { + calculatedHeight = height; + } } // Calculate the positions of the attachments (views) that will be rendered inside the Spanned @@ -324,12 +356,12 @@ public static long measureText( // thing to be truncated. if (!(isLineTruncated && start >= layout.getLineStart(line) + layout.getEllipsisStart(line)) || start >= layout.getLineEnd(line)) { - int placeholderWidth = placeholder.getWidth(); - int placeholderHeight = placeholder.getHeight(); + float placeholderWidth = placeholder.getWidth(); + float placeholderHeight = placeholder.getHeight(); // Calculate if the direction of the placeholder character is Right-To-Left. boolean isRtlChar = layout.isRtlCharAt(start); boolean isRtlParagraph = layout.getParagraphDirection(line) == Layout.DIR_RIGHT_TO_LEFT; - int placeholderLeftPosition; + float placeholderLeftPosition; // There's a bug on Samsung devices where calling getPrimaryHorizontal on // the last offset in the layout will result in an endless loop. Work around // this bug by avoiding getPrimaryHorizontal in that case. @@ -338,8 +370,8 @@ public static long measureText( isRtlParagraph // Equivalent to `layout.getLineLeft(line)` but `getLineLeft` returns incorrect // values when the paragraph is RTL and `setSingleLine(true)`. - ? calculatedWidth - (int) layout.getLineWidth(line) - : (int) layout.getLineRight(line) - placeholderWidth; + ? calculatedWidth - layout.getLineWidth(line) + : layout.getLineRight(line) - placeholderWidth; } else { // The direction of the paragraph may not be exactly the direction the string is heading // in at the @@ -349,8 +381,8 @@ public static long measureText( boolean characterAndParagraphDirectionMatch = isRtlParagraph == isRtlChar; placeholderLeftPosition = characterAndParagraphDirectionMatch - ? (int) layout.getPrimaryHorizontal(start) - : (int) layout.getSecondaryHorizontal(start); + ? layout.getPrimaryHorizontal(start) + : layout.getSecondaryHorizontal(start); if (isRtlParagraph) { // Adjust `placeholderLeftPosition` to work around an Android bug. // The bug is when the paragraph is RTL and `setSingleLine(true)`, some layout @@ -361,21 +393,21 @@ public static long measureText( // The result is equivalent to bugless versions of // `getPrimaryHorizontal`/`getSecondaryHorizontal`. placeholderLeftPosition = - calculatedWidth - ((int) layout.getLineRight(line) - placeholderLeftPosition); + calculatedWidth - (layout.getLineRight(line) - placeholderLeftPosition); } if (isRtlChar) { placeholderLeftPosition -= placeholderWidth; } } // Vertically align the inline view to the baseline of the line of text. - int placeholderTopPosition = layout.getLineBaseline(line) - placeholderHeight; + float placeholderTopPosition = layout.getLineBaseline(line) - placeholderHeight; int attachmentPosition = attachmentIndex * 2; // The attachment array returns the positions of each of the attachments as attachmentsPositions[attachmentPosition] = - (int) PixelUtil.toSPFromPixel(placeholderTopPosition); + (int) Math.ceil(PixelUtil.toSPFromPixel(placeholderTopPosition)); attachmentsPositions[attachmentPosition + 1] = - (int) PixelUtil.toSPFromPixel(placeholderLeftPosition); + (int) Math.ceil(PixelUtil.toSPFromPixel(placeholderLeftPosition)); attachmentIndex++; } } diff --git a/ReactAndroid/src/main/java/com/facebook/react/views/textinput/ReactTextInputManager.java b/ReactAndroid/src/main/java/com/facebook/react/views/textinput/ReactTextInputManager.java index 7765147af55231..6e462335820b6f 100644 --- a/ReactAndroid/src/main/java/com/facebook/react/views/textinput/ReactTextInputManager.java +++ b/ReactAndroid/src/main/java/com/facebook/react/views/textinput/ReactTextInputManager.java @@ -1291,7 +1291,7 @@ public Object updateState( spanned, state.getInt("mostRecentEventCount"), false, // TODO add this into local Data - TextAttributeProps.getTextAlignment(props), + TextAttributeProps.getTextAlignment(props, TextLayoutManager.isRTL(attributedString)), textBreakStrategy, TextAttributeProps.getJustificationMode(props), attributedString); diff --git a/ReactAndroid/src/main/java/com/facebook/react/views/view/ReactViewBackgroundDrawable.java b/ReactAndroid/src/main/java/com/facebook/react/views/view/ReactViewBackgroundDrawable.java index b9863d87203bd8..163103eb868cb8 100644 --- a/ReactAndroid/src/main/java/com/facebook/react/views/view/ReactViewBackgroundDrawable.java +++ b/ReactAndroid/src/main/java/com/facebook/react/views/view/ReactViewBackgroundDrawable.java @@ -1007,7 +1007,7 @@ private static int fastBorderCompatibleColorOrZero( private void drawRectangularBackgroundWithBorders(Canvas canvas) { mPaint.setStyle(Paint.Style.FILL); - + int useColor = ColorUtil.multiplyColorAlpha(mColor, mAlpha); if (Color.alpha(useColor) != 0) { // color is not transparent mPaint.setColor(useColor); diff --git a/ReactAndroid/src/main/java/com/facebook/yoga/YogaNodeJNIBase.java b/ReactAndroid/src/main/java/com/facebook/yoga/YogaNodeJNIBase.java index e20a53892ba79d..406e75e5dc3f5e 100644 --- a/ReactAndroid/src/main/java/com/facebook/yoga/YogaNodeJNIBase.java +++ b/ReactAndroid/src/main/java/com/facebook/yoga/YogaNodeJNIBase.java @@ -15,7 +15,7 @@ @DoNotStrip public abstract class YogaNodeJNIBase extends YogaNode implements Cloneable { - /* Those flags needs be in sync with YGJNI.cpp */ + /* Those flags needs be in sync with YGJNI.h */ private static final byte MARGIN = 1; private static final byte PADDING = 2; private static final byte BORDER = 4; diff --git a/ReactAndroid/src/main/res/devsupport/values/strings.xml b/ReactAndroid/src/main/res/devsupport/values/strings.xml index 82db0a9b7ec2a8..3571c835e31690 100644 --- a/ReactAndroid/src/main/res/devsupport/values/strings.xml +++ b/ReactAndroid/src/main/res/devsupport/values/strings.xml @@ -3,14 +3,15 @@ Reload Failed to load bundle. Try restarting the bundler or reconnecting your device. Change Bundle Location + Failed to open Flipper. Please check that Metro is running. + Open React DevTools + Open Debugger Debug Stop Debugging Connecting to debugger... Failed to connect to debugger! Debug with Chrome Stop Chrome Debugging - Debug with Nuclide - Failed to communicate with the bundler to enabling debugging with Nuclide. Enable Fast Refresh Disable Fast Refresh Disabling Fast Refresh because it requires a development bundle. diff --git a/ReactCommon/fabric/attributedstring/AttributedString.cpp b/ReactCommon/fabric/attributedstring/AttributedString.cpp index 7d872e65e9c0e7..57120d063c4e86 100644 --- a/ReactCommon/fabric/attributedstring/AttributedString.cpp +++ b/ReactCommon/fabric/attributedstring/AttributedString.cpp @@ -18,7 +18,7 @@ using Fragments = AttributedString::Fragments; #pragma mark - Fragment std::string Fragment::AttachmentCharacter() { - return "\uFFFC"; // Unicode `OBJECT REPLACEMENT CHARACTER` + return u8"\uFFFC"; // Unicode `OBJECT REPLACEMENT CHARACTER` } bool Fragment::isAttachment() const { diff --git a/ReactCommon/fabric/componentregistry/BUCK b/ReactCommon/fabric/componentregistry/BUCK new file mode 100644 index 00000000000000..b5be24c533470c --- /dev/null +++ b/ReactCommon/fabric/componentregistry/BUCK @@ -0,0 +1,62 @@ +load("@fbsource//tools/build_defs/apple:flag_defs.bzl", "get_preprocessor_flags_for_build_mode") +load( + "//tools/build_defs/oss:rn_defs.bzl", + "ANDROID", + "APPLE", + "CXX", + "get_apple_compiler_flags", + "get_apple_inspector_flags", + "react_native_xplat_target", + "rn_xplat_cxx_library", + "subdir_glob", +) + +APPLE_COMPILER_FLAGS = get_apple_compiler_flags() + +rn_xplat_cxx_library( + name = "componentregistry", + srcs = glob( + ["**/*.cpp"], + exclude = glob(["tests/**/*.cpp"]), + ), + headers = glob( + ["**/*.h"], + exclude = glob(["tests/**/*.h"]), + ), + header_namespace = "", + exported_headers = subdir_glob( + [ + ("", "*.h"), + ], + prefix = "react/componentregistry", + ), + compiler_flags = [ + "-fexceptions", + "-frtti", + "-std=c++14", + "-Wall", + ], + fbobjc_compiler_flags = APPLE_COMPILER_FLAGS, + fbobjc_labels = ["supermodule:ios/default/public.react_native.infra"], + fbobjc_preprocessor_flags = get_preprocessor_flags_for_build_mode() + get_apple_inspector_flags(), + force_static = True, + macosx_tests_override = [], + platforms = (ANDROID, APPLE, CXX), + preprocessor_flags = [ + "-DLOG_TAG=\"ReactNative\"", + "-DWITH_FBSYSTRACE=1", + ], + visibility = ["PUBLIC"], + deps = [ + "//xplat/fbsystrace:fbsystrace", + "//xplat/folly:headers_only", + "//xplat/folly:memory", + "//xplat/folly:molly", + "//xplat/jsi:JSIDynamic", + "//xplat/jsi:jsi", + "//xplat/third-party/glog:glog", + react_native_xplat_target("fabric/core:core"), + react_native_xplat_target("fabric/debug:debug"), + react_native_xplat_target("utils:utils"), + ], +) diff --git a/ReactCommon/fabric/uimanager/ComponentDescriptorFactory.h b/ReactCommon/fabric/componentregistry/ComponentDescriptorFactory.h similarity index 100% rename from ReactCommon/fabric/uimanager/ComponentDescriptorFactory.h rename to ReactCommon/fabric/componentregistry/ComponentDescriptorFactory.h diff --git a/ReactCommon/fabric/uimanager/ComponentDescriptorProvider.h b/ReactCommon/fabric/componentregistry/ComponentDescriptorProvider.h similarity index 100% rename from ReactCommon/fabric/uimanager/ComponentDescriptorProvider.h rename to ReactCommon/fabric/componentregistry/ComponentDescriptorProvider.h diff --git a/ReactCommon/fabric/uimanager/ComponentDescriptorProviderRegistry.cpp b/ReactCommon/fabric/componentregistry/ComponentDescriptorProviderRegistry.cpp similarity index 100% rename from ReactCommon/fabric/uimanager/ComponentDescriptorProviderRegistry.cpp rename to ReactCommon/fabric/componentregistry/ComponentDescriptorProviderRegistry.cpp diff --git a/ReactCommon/fabric/uimanager/ComponentDescriptorProviderRegistry.h b/ReactCommon/fabric/componentregistry/ComponentDescriptorProviderRegistry.h similarity index 94% rename from ReactCommon/fabric/uimanager/ComponentDescriptorProviderRegistry.h rename to ReactCommon/fabric/componentregistry/ComponentDescriptorProviderRegistry.h index fb8e5ee4512ee1..40be7eb6ad0a4f 100644 --- a/ReactCommon/fabric/uimanager/ComponentDescriptorProviderRegistry.h +++ b/ReactCommon/fabric/componentregistry/ComponentDescriptorProviderRegistry.h @@ -9,9 +9,9 @@ #include +#include +#include #include -#include -#include namespace facebook { namespace react { diff --git a/ReactCommon/fabric/uimanager/ComponentDescriptorRegistry.cpp b/ReactCommon/fabric/componentregistry/ComponentDescriptorRegistry.cpp similarity index 98% rename from ReactCommon/fabric/uimanager/ComponentDescriptorRegistry.cpp rename to ReactCommon/fabric/componentregistry/ComponentDescriptorRegistry.cpp index 778f32fbde30eb..b85cf63661a532 100644 --- a/ReactCommon/fabric/uimanager/ComponentDescriptorRegistry.cpp +++ b/ReactCommon/fabric/componentregistry/ComponentDescriptorRegistry.cpp @@ -7,9 +7,8 @@ #include "ComponentDescriptorRegistry.h" +#include #include -#include -#include namespace facebook { namespace react { diff --git a/ReactCommon/fabric/uimanager/ComponentDescriptorRegistry.h b/ReactCommon/fabric/componentregistry/ComponentDescriptorRegistry.h similarity index 97% rename from ReactCommon/fabric/uimanager/ComponentDescriptorRegistry.h rename to ReactCommon/fabric/componentregistry/ComponentDescriptorRegistry.h index 26ff94ea1709f4..3f25839bf5c06d 100644 --- a/ReactCommon/fabric/uimanager/ComponentDescriptorRegistry.h +++ b/ReactCommon/fabric/componentregistry/ComponentDescriptorRegistry.h @@ -12,8 +12,8 @@ #include #include +#include #include -#include namespace facebook { namespace react { diff --git a/ReactCommon/fabric/components/image/ImageShadowNode.h b/ReactCommon/fabric/components/image/ImageShadowNode.h index 592a67b505a50f..a723a000b195dc 100644 --- a/ReactCommon/fabric/components/image/ImageShadowNode.h +++ b/ReactCommon/fabric/components/image/ImageShadowNode.h @@ -30,6 +30,12 @@ class ImageShadowNode final : public ConcreteViewShadowNode< public: using ConcreteViewShadowNode::ConcreteViewShadowNode; + static ShadowNodeTraits BaseTraits() { + auto traits = ConcreteViewShadowNode::BaseTraits(); + traits.set(ShadowNodeTraits::Trait::LeafYogaNode); + return traits; + } + /* * Associates a shared `ImageManager` with the node. */ @@ -37,7 +43,7 @@ class ImageShadowNode final : public ConcreteViewShadowNode< static ImageState initialStateData( ShadowNodeFragment const &fragment, - SurfaceId const surfaceId, + ShadowNodeFamilyFragment const &familyFragment, ComponentDescriptor const &componentDescriptor) { auto imageSource = ImageSource{ImageSource::Type::Invalid}; return {imageSource, {imageSource, nullptr}}; diff --git a/ReactCommon/fabric/components/modal/BUCK b/ReactCommon/fabric/components/modal/BUCK index 7beb9ec18d8018..070a02cb8494fa 100644 --- a/ReactCommon/fabric/components/modal/BUCK +++ b/ReactCommon/fabric/components/modal/BUCK @@ -84,6 +84,7 @@ rn_xplat_cxx_library( react_native_xplat_target("fabric/graphics:graphics"), react_native_xplat_target("fabric/imagemanager:imagemanager"), react_native_xplat_target("fabric/uimanager:uimanager"), + react_native_xplat_target("fabric/componentregistry:componentregistry"), "//xplat/js/react-native-github:generated_components-rncore", ], ) diff --git a/ReactCommon/fabric/components/picker/BUCK b/ReactCommon/fabric/components/picker/BUCK index 82604cfca44f1d..829f5adec8fd0c 100644 --- a/ReactCommon/fabric/components/picker/BUCK +++ b/ReactCommon/fabric/components/picker/BUCK @@ -65,6 +65,7 @@ rn_xplat_cxx_library( react_native_xplat_target("fabric/graphics:graphics"), react_native_xplat_target("fabric/components/view:view"), react_native_xplat_target("fabric/uimanager:uimanager"), + react_native_xplat_target("fabric/componentregistry:componentregistry"), "//xplat/js/react-native-github:generated_components-rncore", ], ) diff --git a/ReactCommon/fabric/components/slider/BUCK b/ReactCommon/fabric/components/slider/BUCK index a661fdbb4f40c2..52f567d985a99e 100644 --- a/ReactCommon/fabric/components/slider/BUCK +++ b/ReactCommon/fabric/components/slider/BUCK @@ -93,6 +93,7 @@ rn_xplat_cxx_library( react_native_xplat_target("fabric/graphics:graphics"), react_native_xplat_target("fabric/imagemanager:imagemanager"), react_native_xplat_target("fabric/uimanager:uimanager"), + react_native_xplat_target("fabric/componentregistry:componentregistry"), "//xplat/js/react-native-github:generated_components-rncore", ], ) diff --git a/ReactCommon/fabric/components/slider/SliderShadowNode.h b/ReactCommon/fabric/components/slider/SliderShadowNode.h index f4b9c334fad1e3..958f3b2aafb7b0 100644 --- a/ReactCommon/fabric/components/slider/SliderShadowNode.h +++ b/ReactCommon/fabric/components/slider/SliderShadowNode.h @@ -40,7 +40,7 @@ class SliderShadowNode final : public ConcreteViewShadowNode< static SliderState initialStateData( ShadowNodeFragment const &fragment, - SurfaceId const surfaceId, + ShadowNodeFamilyFragment const &familyFragment, ComponentDescriptor const &componentDescriptor) { auto imageSource = ImageSource{ImageSource::Type::Invalid}; return {imageSource, diff --git a/ReactCommon/fabric/components/switch/BUCK b/ReactCommon/fabric/components/switch/BUCK index 7aece1971a7bec..f5b4493c5de37b 100644 --- a/ReactCommon/fabric/components/switch/BUCK +++ b/ReactCommon/fabric/components/switch/BUCK @@ -66,6 +66,7 @@ rn_xplat_cxx_library( react_native_xplat_target("fabric/graphics:graphics"), react_native_xplat_target("fabric/components/view:view"), react_native_xplat_target("fabric/uimanager:uimanager"), + react_native_xplat_target("fabric/componentregistry:componentregistry"), "//xplat/js/react-native-github:generated_components-rncore", ], ) diff --git a/ReactCommon/fabric/components/text/BUCK b/ReactCommon/fabric/components/text/BUCK index 6ea5e080c86c91..c32ad04dfc4509 100644 --- a/ReactCommon/fabric/components/text/BUCK +++ b/ReactCommon/fabric/components/text/BUCK @@ -69,6 +69,7 @@ rn_xplat_cxx_library( react_native_xplat_target("fabric/textlayoutmanager:textlayoutmanager"), react_native_xplat_target("fabric/components/view:view"), react_native_xplat_target("fabric/uimanager:uimanager"), + react_native_xplat_target("fabric/componentregistry:componentregistry"), ], ) diff --git a/ReactCommon/fabric/components/textinput/BUCK b/ReactCommon/fabric/components/textinput/BUCK index 448cbe3e532f29..aa630a15ac7383 100644 --- a/ReactCommon/fabric/components/textinput/BUCK +++ b/ReactCommon/fabric/components/textinput/BUCK @@ -68,6 +68,7 @@ rn_xplat_cxx_library( react_native_xplat_target("fabric/components/view:view"), react_native_xplat_target("fabric/components/image:image"), react_native_xplat_target("fabric/uimanager:uimanager"), + react_native_xplat_target("fabric/componentregistry:componentregistry"), react_native_xplat_target("fabric/imagemanager:imagemanager"), ], ) diff --git a/ReactCommon/fabric/components/textinput/iostextinput/BUCK b/ReactCommon/fabric/components/textinput/iostextinput/BUCK index 94b321c61a6238..d6baec266ab94e 100644 --- a/ReactCommon/fabric/components/textinput/iostextinput/BUCK +++ b/ReactCommon/fabric/components/textinput/iostextinput/BUCK @@ -68,6 +68,7 @@ rn_xplat_cxx_library( react_native_xplat_target("fabric/components/view:view"), react_native_xplat_target("fabric/components/image:image"), react_native_xplat_target("fabric/uimanager:uimanager"), + react_native_xplat_target("fabric/componentregistry:componentregistry"), react_native_xplat_target("fabric/imagemanager:imagemanager"), ], ) diff --git a/ReactCommon/fabric/components/view/ViewShadowNode.h b/ReactCommon/fabric/components/view/ViewShadowNode.h index 969c6267b2c240..8d27e37143ff2a 100644 --- a/ReactCommon/fabric/components/view/ViewShadowNode.h +++ b/ReactCommon/fabric/components/view/ViewShadowNode.h @@ -23,6 +23,12 @@ class ViewShadowNode final : public ConcreteViewShadowNode< ViewProps, ViewEventEmitter> { public: + static ShadowNodeTraits BaseTraits() { + auto traits = BaseShadowNode::BaseTraits(); + traits.set(ShadowNodeTraits::Trait::View); + return traits; + } + ViewShadowNode( ShadowNodeFragment const &fragment, ShadowNodeFamily::Shared const &family, diff --git a/ReactCommon/fabric/components/view/tests/ViewTest.cpp b/ReactCommon/fabric/components/view/tests/ViewTest.cpp index 32aff6679052df..2224bc6829498c 100644 --- a/ReactCommon/fabric/components/view/tests/ViewTest.cpp +++ b/ReactCommon/fabric/components/view/tests/ViewTest.cpp @@ -10,13 +10,13 @@ #include +#include #include #include #include #include #include #include -#include namespace facebook { namespace react { diff --git a/ReactCommon/fabric/components/view/yoga/YogaLayoutableShadowNode.cpp b/ReactCommon/fabric/components/view/yoga/YogaLayoutableShadowNode.cpp index 3f4c0bdbe909fd..04c48fda480595 100644 --- a/ReactCommon/fabric/components/view/yoga/YogaLayoutableShadowNode.cpp +++ b/ReactCommon/fabric/components/view/yoga/YogaLayoutableShadowNode.cpp @@ -6,11 +6,6 @@ */ #include "YogaLayoutableShadowNode.h" - -#include -#include -#include - #include #include #include @@ -18,7 +13,9 @@ #include #include #include -#include +#include +#include +#include namespace facebook { namespace react { @@ -55,8 +52,14 @@ YogaLayoutableShadowNode::YogaLayoutableShadowNode( yogaNode_(&initializeYogaConfig(yogaConfig_)) { yogaNode_.setContext(this); + // Newly created node must be `dirty` just becasue it is new. + // This is not a default for `YGNode`. + yogaNode_.setDirty(true); + updateYogaProps(); updateYogaChildren(); + + ensureConsistency(); } YogaLayoutableShadowNode::YogaLayoutableShadowNode( @@ -83,6 +86,8 @@ YogaLayoutableShadowNode::YogaLayoutableShadowNode( if (fragment.children) { updateYogaChildren(); } + + ensureConsistency(); } void YogaLayoutableShadowNode::cleanLayout() { @@ -114,53 +119,108 @@ void YogaLayoutableShadowNode::enableMeasurement() { YogaLayoutableShadowNode::yogaNodeMeasureCallbackConnector); } -void YogaLayoutableShadowNode::appendChild(ShadowNode::Shared const &child) { +void YogaLayoutableShadowNode::appendYogaChild(ShadowNode const &childNode) { + // The caller must check this before calling this method. + assert(!getTraits().check(ShadowNodeTraits::Trait::LeafYogaNode)); + + ensureYogaChildrenLookFine(); + + auto &layoutableChildNode = + traitCast(childNode); + yogaNode_.insertChild( + &layoutableChildNode.yogaNode_, yogaNode_.getChildren().size()); + + ensureYogaChildrenLookFine(); +} + +void YogaLayoutableShadowNode::adoptYogaChild(size_t index) { ensureUnsealed(); + ensureYogaChildrenLookFine(); + + // The caller must check this before calling this method. + assert(!getTraits().check(ShadowNodeTraits::Trait::LeafYogaNode)); + + auto &children = getChildren(); + + // Overflow checks. + assert(children.size() > index); + assert(children.size() >= yogaNode_.getChildren().size()); + + auto &childNode = *children.at(index); + + auto &layoutableChildNode = + traitCast(childNode); + + // Note, the following (commented out) assert is conceptually valid but still + // might produce false-positive signals because of the ABA problem (different + // objects with non-interleaving life-times being allocated on the same + // address). assert(layoutableChildNode.yogaNode_.getOwner() != &yogaNode_); - LayoutableShadowNode::appendChild(child); + if (layoutableChildNode.yogaNode_.getOwner() == nullptr) { + // The child node is not owned. + layoutableChildNode.yogaNode_.setOwner(&yogaNode_); + // At this point the child yoga node must be already inserted by the caller. + // assert(layoutableChildNode.yogaNode_.isDirty()); + } else { + // The child is owned by some other node, we need to clone that. + auto clonedChildNode = childNode.clone({}); + auto &layoutableClonedChildNode = + traitCast(*clonedChildNode); - auto yogaLayoutableChild = - traitCast(child.get()); - if (yogaLayoutableChild) { - appendChildYogaNode(*yogaLayoutableChild); + // The owner must be nullptr for a newly cloned node. + assert(layoutableClonedChildNode.yogaNode_.getOwner() == nullptr); + + // Establishing ownership. + layoutableClonedChildNode.yogaNode_.setOwner(&yogaNode_); + + // Replace the child node with a newly cloned one in the children list. + replaceChild(childNode, clonedChildNode, index); + + // Replace the Yoga node inside the Yoga node children list. + yogaNode_.replaceChild(&layoutableClonedChildNode.yogaNode_, index); } -} -bool YogaLayoutableShadowNode::doesOwn( - YogaLayoutableShadowNode const &child) const { - return child.yogaNode_.getOwner() == &yogaNode_; + ensureYogaChildrenLookFine(); } -void YogaLayoutableShadowNode::appendChildYogaNode( - YogaLayoutableShadowNode const &child) { +void YogaLayoutableShadowNode::appendChild( + ShadowNode::Shared const &childNode) { ensureUnsealed(); + ensureConsistency(); + + // Calling the base class (`ShadowNode`) mehtod. + LayoutableShadowNode::appendChild(childNode); if (getTraits().check(ShadowNodeTraits::Trait::LeafYogaNode)) { - // This node is a declared leaf, therefore we must not add the Yoga node as - // a child. + // This node is a declared leaf. return; } + // Here we don't have information about the previous structure of the node (if + // it that existed before), so we don't have anything to compare the Yoga node + // with (like a previous version of this node). Therefore we must dirty the + // node. yogaNode_.setDirty(true); - auto yogaNodeRawPtr = &yogaNode_; - auto childYogaNodeRawPtr = &child.yogaNode_; - auto childNodePtr = const_cast(&child); + // All children of a non-leaf `YogaLayoutableShadowNode` must be a + // `YogaLayoutableShadowNode`s. + assert(traitCast(childNode.get())); - if (childYogaNodeRawPtr->getOwner() != nullptr) { - childNodePtr = - &cloneAndReplaceChild(*childNodePtr, yogaNode_.getChildren().size()); - childYogaNodeRawPtr = &childNodePtr->yogaNode_; - } + // Appending the Yoga node. + appendYogaChild(*childNode); - // Inserted node must have a clear owner (must not be shared). - assert(childYogaNodeRawPtr->getOwner() == nullptr); + ensureYogaChildrenLookFine(); + ensureYogaChildrenAlighment(); - childNodePtr->ensureUnsealed(); - childYogaNodeRawPtr->setOwner(yogaNodeRawPtr); + // Adopting the Yoga node. + adoptYogaChild(getChildren().size() - 1); - yogaNodeRawPtr->insertChild( - childYogaNodeRawPtr, yogaNodeRawPtr->getChildren().size()); + ensureConsistency(); +} + +bool YogaLayoutableShadowNode::doesOwn( + YogaLayoutableShadowNode const &child) const { + return child.yogaNode_.getOwner() == &yogaNode_; } void YogaLayoutableShadowNode::updateYogaChildren() { @@ -170,33 +230,29 @@ void YogaLayoutableShadowNode::updateYogaChildren() { ensureUnsealed(); - auto &children = getChildren(); - - // Optimization: - // If the new list of child nodes consists of clean nodes, and if their styles - // are identical to styles of old children, we don't dirty the node. - bool isClean = !yogaNode_.getDirtied() && - children.size() == yogaNode_.getChildren().size(); - auto oldChildren = isClean ? yogaNode_.getChildren() : YGVector{}; + bool isClean = !yogaNode_.isDirty() && + getChildren().size() == yogaNode_.getChildren().size(); + auto oldYogaChildren = isClean ? yogaNode_.getChildren() : YGVector{}; yogaNode_.setChildren({}); - auto i = int{0}; - for (auto const &child : children) { - auto yogaLayoutableChild = - traitCast(child.get()); - - if (!yogaLayoutableChild) { - continue; - } + for (size_t i = 0; i < getChildren().size(); i++) { + appendYogaChild(*getChildren().at(i)); + adoptYogaChild(i); - appendChildYogaNode(*yogaLayoutableChild); + if (isClean) { + auto &oldYogaChildNode = *oldYogaChildren[i]; + auto &newYogaChildNode = + traitCast(*getChildren().at(i)) + .yogaNode_; - isClean = isClean && !yogaLayoutableChild->yogaNode_.isDirty() && - yogaLayoutableChild->yogaNode_.getStyle() == - oldChildren[i++]->getStyle(); + isClean = isClean && !newYogaChildNode.isDirty() && + (newYogaChildNode.getStyle() == oldYogaChildNode.getStyle()); + } } + assert(getChildren().size() == yogaNode_.getChildren().size()); + yogaNode_.setDirty(!isClean); } @@ -317,15 +373,6 @@ void YogaLayoutableShadowNode::layoutChildren(LayoutContext layoutContext) { } } -YogaLayoutableShadowNode &YogaLayoutableShadowNode::cloneAndReplaceChild( - YogaLayoutableShadowNode &child, - int suggestedIndex) { - auto clonedChildShadowNode = child.clone({}); - replaceChild(child, clonedChildShadowNode, suggestedIndex); - - return static_cast(*clonedChildShadowNode); -} - #pragma mark - Yoga Connectors YGNode *YogaLayoutableShadowNode::yogaNodeCloneCallbackConnector( @@ -340,8 +387,10 @@ YGNode *YogaLayoutableShadowNode::yogaNodeCloneCallbackConnector( static_cast(parentYogaNode->getContext()); auto oldNode = static_cast(oldYogaNode->getContext()); - auto clonedNode = &parentNode->cloneAndReplaceChild(*oldNode, childIndex); - return &clonedNode->yogaNode_; + + auto clonedNode = oldNode->clone({}); + parentNode->replaceChild(*oldNode, clonedNode, childIndex); + return &static_cast(*clonedNode).yogaNode_; } YGSize YogaLayoutableShadowNode::yogaNodeMeasureCallbackConnector( @@ -390,10 +439,29 @@ YGSize YogaLayoutableShadowNode::yogaNodeMeasureCallbackConnector( yogaFloatFromFloat(size.height)}; } +#ifdef RN_DEBUG_YOGA_LOGGER +static int YogaLog( + const YGConfigRef config, + const YGNodeRef node, + YGLogLevel level, + const char *format, + va_list args) { + int result = vsnprintf(NULL, 0, format, args); + std::vector buffer(1 + result); + vsnprintf(buffer.data(), buffer.size(), format, args); + LOG(INFO) << "RNYogaLogger " << buffer.data(); + return result; +} +#endif + YGConfig &YogaLayoutableShadowNode::initializeYogaConfig(YGConfig &config) { config.setCloneNodeCallback( YogaLayoutableShadowNode::yogaNodeCloneCallbackConnector); config.useLegacyStretchBehaviour = true; +#ifdef RN_DEBUG_YOGA_LOGGER + config.printTree = true; + config.setLogger(&YogaLog); +#endif return config; } @@ -450,7 +518,7 @@ void YogaLayoutableShadowNode::swapLeftAndRightInYogaStyleProps( if (yogaStyle.margin()[YGEdgeRight] != YGValueUndefined) { yogaStyle.margin()[YGEdgeEnd] = margin[YGEdgeRight]; - yogaStyle.margin()[YGEdgeLeft] = YGValueUndefined; + yogaStyle.margin()[YGEdgeRight] = YGValueUndefined; } shadowNode.yogaNode_.setStyle(yogaStyle); @@ -515,5 +583,73 @@ void YogaLayoutableShadowNode::swapLeftAndRightInViewProps( } } +#pragma mark - Consistency Ensuring Helpers + +void YogaLayoutableShadowNode::ensureConsistency() const { + ensureYogaChildrenLookFine(); + ensureYogaChildrenAlighment(); + ensureYogaChildrenOwnersConsistency(); +} + +void YogaLayoutableShadowNode::ensureYogaChildrenOwnersConsistency() const { +#ifndef NDEBUG + // Checking that all Yoga node children have the same `owner`. + // The owner might be not equal to the `yogaNode_` though. + auto &yogaChildren = yogaNode_.getChildren(); + + if (yogaChildren.size() > 0) { + auto owner = yogaChildren.at(0)->getOwner(); + for (auto const &child : yogaChildren) { + assert(child->getOwner() == owner); + } + } +#endif +} + +void YogaLayoutableShadowNode::ensureYogaChildrenLookFine() const { +#ifndef NDEBUG + // Checking that the shapes of Yoga node children object look fine. + // This is the only heuristic that might produce false-positive results + // (really broken dangled nodes might look fine). This is useful as an early + // signal that something went wrong. + auto &yogaChildren = yogaNode_.getChildren(); + + for (auto const &yogaChild : yogaChildren) { + assert(yogaChild->getContext()); + assert(yogaChild->getChildren().size() < 16384); + if (yogaChild->getChildren().size() > 0) { + assert(!yogaChild->hasMeasureFunc()); + } + } +#endif +} + +void YogaLayoutableShadowNode::ensureYogaChildrenAlighment() const { +#ifndef NDEBUG + // If the node is not a leaf node, checking that: + // - All children are `YogaLayoutableShadowNode` subclasses. + // - All Yoga children are owned/connected to corresponding children of + // this node. + + auto &yogaChildren = yogaNode_.getChildren(); + auto &children = getChildren(); + + if (getTraits().check(ShadowNodeTraits::Trait::LeafYogaNode)) { + assert(yogaChildren.size() == 0); + return; + } + + assert(yogaChildren.size() == children.size()); + + for (size_t i = 0; i < children.size(); i++) { + auto &yogaChild = yogaChildren.at(i); + auto &child = children.at(i); + assert( + yogaChild->getContext() == + traitCast(child.get())); + } +#endif +} + } // namespace react } // namespace facebook diff --git a/ReactCommon/fabric/components/view/yoga/YogaLayoutableShadowNode.h b/ReactCommon/fabric/components/view/yoga/YogaLayoutableShadowNode.h index 0ee5dc091a68a5..e9ea29cd477e87 100644 --- a/ReactCommon/fabric/components/view/yoga/YogaLayoutableShadowNode.h +++ b/ReactCommon/fabric/components/view/yoga/YogaLayoutableShadowNode.h @@ -107,15 +107,17 @@ class YogaLayoutableShadowNode : public LayoutableShadowNode { bool doesOwn(YogaLayoutableShadowNode const &child) const; /* - * Appends `child`'s Yoga node to the own Yoga node. - * Complements `ShadowNode::appendChild(...)` functionality from Yoga - * perspective. + * Appends a Yoga node to the Yoga node associated with this node. + * The method does *not* do anything besides that (no cloning or `owner` field + * adjustment). */ - void appendChildYogaNode(YogaLayoutableShadowNode const &child); + void appendYogaChild(ShadowNode const &childNode); - YogaLayoutableShadowNode &cloneAndReplaceChild( - YogaLayoutableShadowNode &child, - int suggestedIndex); + /* + * Makes the child node with a given `index` (and Yoga node associated with) a + * valid child node satisfied requirements of the Concurrent Layout approach. + */ + void adoptYogaChild(size_t index); static YGConfig &initializeYogaConfig(YGConfig &config); static YGNode *yogaNodeCloneCallbackConnector( @@ -129,6 +131,8 @@ class YogaLayoutableShadowNode : public LayoutableShadowNode { float height, YGMeasureMode heightMode); +#pragma mark - RTL Legacy Autoflip + /* * Walks though shadow node hierarchy and reassign following values: * - (left|right) → (start|end) @@ -160,6 +164,13 @@ class YogaLayoutableShadowNode : public LayoutableShadowNode { */ static void swapLeftAndRightInYogaStyleProps( YogaLayoutableShadowNode const &shadowNode); + +#pragma mark - Consistency Ensuring Helpers + + void ensureConsistency() const; + void ensureYogaChildrenAlighment() const; + void ensureYogaChildrenOwnersConsistency() const; + void ensureYogaChildrenLookFine() const; }; template <> diff --git a/ReactCommon/fabric/core/componentdescriptor/ComponentDescriptor.h b/ReactCommon/fabric/core/componentdescriptor/ComponentDescriptor.h index ea2952ce291968..c9d2feb75af004 100644 --- a/ReactCommon/fabric/core/componentdescriptor/ComponentDescriptor.h +++ b/ReactCommon/fabric/core/componentdescriptor/ComponentDescriptor.h @@ -98,6 +98,7 @@ class ComponentDescriptor { * `props` and `rawProps` applied on top of this. * If `props` is `nullptr`, a default `Props` object (with default values) * will be used. + * Must return an object which is NOT pointer equal to `props`. */ virtual SharedProps cloneProps( const SharedProps &props, diff --git a/ReactCommon/fabric/core/componentdescriptor/ConcreteComponentDescriptor.h b/ReactCommon/fabric/core/componentdescriptor/ConcreteComponentDescriptor.h index 142e0dd2aadfa0..43fbeaf40cf3ae 100644 --- a/ReactCommon/fabric/core/componentdescriptor/ConcreteComponentDescriptor.h +++ b/ReactCommon/fabric/core/componentdescriptor/ConcreteComponentDescriptor.h @@ -108,8 +108,13 @@ class ConcreteComponentDescriptor : public ComponentDescriptor { dynamic_cast(props.get()) && "Provided `props` has an incompatible type."); - if (rawProps.isEmpty()) { - return props ? props : ShadowNodeT::defaultSharedProps(); + // Optimization: + // Quite often nodes are constructed with default/empty props: the base + // `props` object is `null` (there no base because it's not cloning) and the + // `rawProps` is empty. In this case, we can return the default props object + // of a concrete type entirely bypassing parsing. + if (!props && rawProps.isEmpty()) { + return ShadowNodeT::defaultSharedProps(); } rawProps.parse(rawPropsParser_); @@ -128,7 +133,7 @@ class ConcreteComponentDescriptor : public ComponentDescriptor { return std::make_shared( std::make_shared( ConcreteShadowNode::initialStateData( - fragment, family->getSurfaceId(), *this)), + fragment, ShadowNodeFamilyFragment::build(*family), *this)), family); } diff --git a/ReactCommon/fabric/core/layout/LayoutableShadowNode.h b/ReactCommon/fabric/core/layout/LayoutableShadowNode.h index 5351328522335e..78601fa5e221c0 100644 --- a/ReactCommon/fabric/core/layout/LayoutableShadowNode.h +++ b/ReactCommon/fabric/core/layout/LayoutableShadowNode.h @@ -89,7 +89,7 @@ class LayoutableShadowNode : public ShadowNode { /* * Returns layout metrics computed during previous layout pass. */ - virtual LayoutMetrics getLayoutMetrics() const; + LayoutMetrics getLayoutMetrics() const; /* * Returns a transform object that represents transformations that will/should diff --git a/ReactCommon/fabric/core/primitives/Sealable.cpp b/ReactCommon/fabric/core/primitives/Sealable.cpp index 501f8d60edeb11..5bc35e6908b68b 100644 --- a/ReactCommon/fabric/core/primitives/Sealable.cpp +++ b/ReactCommon/fabric/core/primitives/Sealable.cpp @@ -7,7 +7,7 @@ #include "Sealable.h" -#include +#include namespace facebook { namespace react { @@ -56,9 +56,7 @@ bool Sealable::getSealed() const { } void Sealable::ensureUnsealed() const { - if (sealed_) { - throw std::runtime_error("Attempt to mutate a sealed object."); - } + assert(!sealed_ && "Attempt to mutate a sealed object."); } #endif diff --git a/ReactCommon/fabric/core/shadownode/ConcreteShadowNode.h b/ReactCommon/fabric/core/shadownode/ConcreteShadowNode.h index fded3fe4bd1790..7edb2e567830a3 100644 --- a/ReactCommon/fabric/core/shadownode/ConcreteShadowNode.h +++ b/ReactCommon/fabric/core/shadownode/ConcreteShadowNode.h @@ -82,7 +82,7 @@ class ConcreteShadowNode : public BaseShadowNodeT { static ConcreteStateData initialStateData( ShadowNodeFragment const &fragment, - SurfaceId const surfaceId, + ShadowNodeFamilyFragment const &familyFragment, ComponentDescriptor const &componentDescriptor) { return {}; } diff --git a/ReactCommon/fabric/core/shadownode/ShadowNode.cpp b/ReactCommon/fabric/core/shadownode/ShadowNode.cpp index cf88b5a6a78d7a..f54fedcf22b073 100644 --- a/ReactCommon/fabric/core/shadownode/ShadowNode.cpp +++ b/ReactCommon/fabric/core/shadownode/ShadowNode.cpp @@ -263,6 +263,10 @@ ShadowNode::Unshared ShadowNode::cloneTree( auto newShadowNode = callback(*oldShadowNode); + assert( + newShadowNode && + "`callback` returned `nullptr` which is not allowed value."); + auto childNode = newShadowNode; for (auto it = ancestors.rbegin(); it != ancestors.rend(); ++it) { diff --git a/ReactCommon/fabric/core/shadownode/ShadowNodeFamily.h b/ReactCommon/fabric/core/shadownode/ShadowNodeFamily.h index ea9699ce35d7fe..15998067f44222 100644 --- a/ReactCommon/fabric/core/shadownode/ShadowNodeFamily.h +++ b/ReactCommon/fabric/core/shadownode/ShadowNodeFamily.h @@ -87,6 +87,7 @@ class ShadowNodeFamily { private: friend ShadowNode; + friend ShadowNodeFamilyFragment; EventDispatcher::Weak eventDispatcher_; mutable std::shared_ptr mostRecentState_; diff --git a/ReactCommon/fabric/core/shadownode/ShadowNodeFamilyFragment.cpp b/ReactCommon/fabric/core/shadownode/ShadowNodeFamilyFragment.cpp new file mode 100644 index 00000000000000..47cee004354ec6 --- /dev/null +++ b/ReactCommon/fabric/core/shadownode/ShadowNodeFamilyFragment.cpp @@ -0,0 +1,36 @@ +/* + * Copyright (c) Facebook, Inc. and its affiliates. + * + * This source code is licensed under the MIT license found in the + * LICENSE file in the root directory of this source tree. + */ + +#include "ShadowNodeFamilyFragment.h" + +#include + +namespace facebook { +namespace react { + +ShadowNodeFamilyFragment ShadowNodeFamilyFragment::build( + ShadowNodeFamily const &family) { + return { + family.tag_, + family.surfaceId_, + family.eventEmitter_, + }; +} + +using Value = ShadowNodeFamilyFragment::Value; + +Value::Value(ShadowNodeFamilyFragment const &fragment) + : tag_(fragment.tag), + surfaceId_(fragment.surfaceId), + eventEmitter_(fragment.eventEmitter) {} + +Value::operator ShadowNodeFamilyFragment() const { + return ShadowNodeFamilyFragment{tag_, surfaceId_, eventEmitter_}; +} + +} // namespace react +} // namespace facebook diff --git a/ReactCommon/fabric/core/shadownode/ShadowNodeFamilyFragment.h b/ReactCommon/fabric/core/shadownode/ShadowNodeFamilyFragment.h index 88de3a07d2bcd6..9b97a6d340748d 100644 --- a/ReactCommon/fabric/core/shadownode/ShadowNodeFamilyFragment.h +++ b/ReactCommon/fabric/core/shadownode/ShadowNodeFamilyFragment.h @@ -13,6 +13,8 @@ namespace facebook { namespace react { +class ShadowNodeFamily; + /* * Note: All of the fields are `const &` references (essentially just raw * pointers) which means that the Fragment does not copy/store them nor @@ -20,9 +22,34 @@ namespace react { */ class ShadowNodeFamilyFragment final { public: + static ShadowNodeFamilyFragment build(ShadowNodeFamily const &family); + Tag const tag; SurfaceId const surfaceId; EventEmitter::Shared const &eventEmitter; + + /* + * `ShadowNodeFamilyFragment` is not owning data-structure, it only stores raw + * pointers to the data. `ShadowNodeFamilyFragment::Value` is a convenient + * owning counterpart of that. + */ + class Value final { + public: + /* + * Creates an object with given `ShadowNodeFragment`. + */ + Value(ShadowNodeFamilyFragment const &fragment); + + /* + * Creates a `ShadowNodeFragment` from the object. + */ + explicit operator ShadowNodeFamilyFragment() const; + + private: + Tag const tag_; + SurfaceId const surfaceId_; + EventEmitter::Shared const eventEmitter_; + }; }; } // namespace react diff --git a/ReactCommon/fabric/core/tests/ComponentDescriptorTest.cpp b/ReactCommon/fabric/core/tests/ComponentDescriptorTest.cpp index 1dfc1878eff37d..58baadffb321ab 100644 --- a/ReactCommon/fabric/core/tests/ComponentDescriptorTest.cpp +++ b/ReactCommon/fabric/core/tests/ComponentDescriptorTest.cpp @@ -72,6 +72,9 @@ TEST(ComponentDescriptorTest, cloneShadowNode) { EXPECT_EQ(cloned->getTag(), 9); EXPECT_EQ(cloned->getSurfaceId(), 1); EXPECT_STREQ(cloned->getProps()->nativeId.c_str(), "abc"); + + auto clonedButSameProps = descriptor->cloneProps(props, RawProps()); + EXPECT_NE(clonedButSameProps, props); } TEST(ComponentDescriptorTest, appendChild) { diff --git a/ReactCommon/fabric/core/tests/PrimitivesTest.cpp b/ReactCommon/fabric/core/tests/PrimitivesTest.cpp index f156ed77b420c0..49c4f4bd93384e 100644 --- a/ReactCommon/fabric/core/tests/PrimitivesTest.cpp +++ b/ReactCommon/fabric/core/tests/PrimitivesTest.cpp @@ -23,17 +23,22 @@ TEST(SealableTest, sealObjectCorrectly) { TEST(SealableTest, handleAssignmentsCorrectly) { Sealable obj; Sealable other; - EXPECT_NO_THROW(obj = other); + + // Should work fine. + obj = other; // Assignment after getting sealed is not allowed. obj.seal(); Sealable other2; - EXPECT_THROW(obj = other2, std::runtime_error); + + EXPECT_DEATH_IF_SUPPORTED( + { obj = other2; }, "Attempt to mutate a sealed object."); // It doesn't matter if the other object is also sealed, it's still not // allowed. other2.seal(); - EXPECT_THROW(obj = other2, std::runtime_error); + EXPECT_DEATH_IF_SUPPORTED( + { obj = other2; }, "Attempt to mutate a sealed object."); // Fresh creation off other Sealable is still unsealed. Sealable other3(obj); diff --git a/ReactCommon/fabric/core/tests/ShadowNodeFamilyTest.cpp b/ReactCommon/fabric/core/tests/ShadowNodeFamilyTest.cpp index b5737b4b24130c..26f5c861fa2f4b 100644 --- a/ReactCommon/fabric/core/tests/ShadowNodeFamilyTest.cpp +++ b/ReactCommon/fabric/core/tests/ShadowNodeFamilyTest.cpp @@ -9,10 +9,10 @@ #include +#include #include #include #include -#include using namespace facebook::react; diff --git a/ReactCommon/fabric/core/tests/ShadowNodeTest.cpp b/ReactCommon/fabric/core/tests/ShadowNodeTest.cpp index 08e331a56fcd4f..3f0c74ebc280f2 100644 --- a/ReactCommon/fabric/core/tests/ShadowNodeTest.cpp +++ b/ReactCommon/fabric/core/tests/ShadowNodeTest.cpp @@ -288,5 +288,7 @@ TEST_F(ShadowNodeTest, handleState) { // State cannot be changed for sealed shadow node. secondNode->sealRecursive(); - EXPECT_ANY_THROW(secondNode->setStateData(TestState{42})); + EXPECT_DEATH_IF_SUPPORTED( + { secondNode->setStateData(TestState{42}); }, + "Attempt to mutate a sealed object."); } diff --git a/ReactCommon/fabric/debug/DebugStringConvertible.h b/ReactCommon/fabric/debug/DebugStringConvertible.h index efab8ffaa4f9e4..ccdfef0189acf5 100644 --- a/ReactCommon/fabric/debug/DebugStringConvertible.h +++ b/ReactCommon/fabric/debug/DebugStringConvertible.h @@ -20,6 +20,15 @@ namespace react { #define RN_DEBUG_STRING_CONVERTIBLE 1 #endif +// To Debug Yoga layout, uncomment the following line. +// #define RN_DEBUG_YOGA_LOGGER 1 +// +// Additional logging can be enabled editing yoga.cpp (e.g. gPrintChanges, +// gPrintSkips) + +// To Debug introspection of RN Shadow tree, uncomment the following line: +// #define RN_SHADOW_TREE_INTROSPECTION 1 + #if RN_DEBUG_STRING_CONVERTIBLE class DebugStringConvertible; @@ -302,6 +311,23 @@ std::vector getDebugChildren( return vector; } +// `std::array` +template +std::string getDebugName(std::array const &array) { + return "List"; +} + +template +std::vector getDebugChildren( + std::array const &array, + DebugStringConvertibleOptions options) { + auto vector = std::vector{}; + for (auto const &value : array) { + vector.push_back(value); + } + return vector; +} + // `std::unordered_set` template std::string getDebugName(std::unordered_set const &set) { diff --git a/ReactCommon/fabric/element/BUCK b/ReactCommon/fabric/element/BUCK index 85428f8bd7dad1..f7fce793547bdd 100644 --- a/ReactCommon/fabric/element/BUCK +++ b/ReactCommon/fabric/element/BUCK @@ -57,6 +57,7 @@ rn_xplat_cxx_library( react_native_xplat_target("fabric/components/scrollview:scrollview"), react_native_xplat_target("fabric/components/text:text"), react_native_xplat_target("fabric/uimanager:uimanager"), + react_native_xplat_target("fabric/componentregistry:componentregistry"), react_native_xplat_target("fabric/core:core"), react_native_xplat_target("fabric/debug:debug"), react_native_xplat_target("utils:utils"), diff --git a/ReactCommon/fabric/element/ComponentBuilder.h b/ReactCommon/fabric/element/ComponentBuilder.h index 9e015665ec18cf..cafbaaa019cf23 100644 --- a/ReactCommon/fabric/element/ComponentBuilder.h +++ b/ReactCommon/fabric/element/ComponentBuilder.h @@ -9,11 +9,11 @@ #include +#include #include #include #include #include -#include #include #include diff --git a/ReactCommon/fabric/element/testUtils.h b/ReactCommon/fabric/element/testUtils.h index 008786913c1b77..2c32cbd60e8144 100644 --- a/ReactCommon/fabric/element/testUtils.h +++ b/ReactCommon/fabric/element/testUtils.h @@ -7,6 +7,7 @@ #pragma once +#include #include #include #include @@ -14,7 +15,6 @@ #include #include #include -#include namespace facebook { namespace react { diff --git a/ReactCommon/fabric/element/tests/ElementTest.cpp b/ReactCommon/fabric/element/tests/ElementTest.cpp index 0a0a09b015e4a8..3ed6c7f8fcc2b3 100644 --- a/ReactCommon/fabric/element/tests/ElementTest.cpp +++ b/ReactCommon/fabric/element/tests/ElementTest.cpp @@ -9,12 +9,12 @@ #include +#include #include #include #include #include #include -#include using namespace facebook::react; diff --git a/ReactCommon/fabric/mounting/BUCK b/ReactCommon/fabric/mounting/BUCK index 7bc30293aa96ae..9d6ad218c1d131 100644 --- a/ReactCommon/fabric/mounting/BUCK +++ b/ReactCommon/fabric/mounting/BUCK @@ -81,5 +81,9 @@ fb_xplat_cxx_test( ":mounting", "//xplat/folly:molly", "//xplat/third-party/gmock:gtest", + react_native_xplat_target("fabric/element:element"), + react_native_xplat_target("fabric/components/root:root"), + react_native_xplat_target("fabric/components/view:view"), + react_native_xplat_target("fabric/components/scrollview:scrollview"), ], ) diff --git a/ReactCommon/fabric/mounting/tests/MountingTelemetryTest.cpp b/ReactCommon/fabric/mounting/tests/MountingTelemetryTest.cpp index afeaf6f2f31c79..8d1426675b85bb 100644 --- a/ReactCommon/fabric/mounting/tests/MountingTelemetryTest.cpp +++ b/ReactCommon/fabric/mounting/tests/MountingTelemetryTest.cpp @@ -18,11 +18,19 @@ using namespace facebook::react; #define EXPECT_EQ_WITH_THRESHOLD(a, b, threshold) \ EXPECT_TRUE((a >= b - threshold) && (a <= b + threshold)) +template +void sleep(double durationInSeconds) { + auto timepoint = ClockT::now() + + std::chrono::milliseconds((long long)(durationInSeconds * 1000)); + while (ClockT::now() < timepoint) { + } +} + TEST(MountingTelemetryTest, timepoints) { - auto threshold = int64_t{100}; + auto threshold = int64_t{10}; auto timepointA = telemetryTimePointNow(); - std::this_thread::sleep_for(std::chrono::milliseconds(100)); + sleep(0.1); auto timepointB = telemetryTimePointNow(); auto duration = telemetryDurationToMilliseconds(timepointB - timepointA); @@ -31,21 +39,21 @@ TEST(MountingTelemetryTest, timepoints) { } TEST(MountingTelemetryTest, normalUseCase) { - auto threshold = int64_t{100}; + auto threshold = int64_t{10}; auto telemetry = MountingTelemetry{}; telemetry.willCommit(); - std::this_thread::sleep_for(std::chrono::milliseconds(100)); + sleep(0.1); telemetry.willLayout(); - std::this_thread::sleep_for(std::chrono::milliseconds(200)); + sleep(0.2); telemetry.didLayout(); - std::this_thread::sleep_for(std::chrono::milliseconds(100)); + sleep(0.1); telemetry.didCommit(); - std::this_thread::sleep_for(std::chrono::milliseconds(300)); + sleep(0.3); telemetry.willMount(); - std::this_thread::sleep_for(std::chrono::milliseconds(100)); + sleep(0.1); telemetry.didMount(); auto commitDuration = telemetryDurationToMilliseconds( @@ -55,7 +63,7 @@ TEST(MountingTelemetryTest, normalUseCase) { auto mountDuration = telemetryDurationToMilliseconds( telemetry.getMountEndTime() - telemetry.getMountStartTime()); - EXPECT_EQ_WITH_THRESHOLD(commitDuration, 400, threshold * 2); + EXPECT_EQ_WITH_THRESHOLD(commitDuration, 400, threshold); EXPECT_EQ_WITH_THRESHOLD(layoutDuration, 200, threshold); EXPECT_EQ_WITH_THRESHOLD(mountDuration, 100, threshold); } diff --git a/ReactCommon/fabric/mounting/tests/MountingTest.cpp b/ReactCommon/fabric/mounting/tests/MountingTest.cpp index 1241987432e928..4783516bf1c4a5 100644 --- a/ReactCommon/fabric/mounting/tests/MountingTest.cpp +++ b/ReactCommon/fabric/mounting/tests/MountingTest.cpp @@ -14,7 +14,7 @@ #include "shadowTreeGeneration.h" -#include +#include #include namespace facebook { @@ -248,24 +248,18 @@ TEST(MountingTest, testMinimalInstructionGeneration) { // This test, in particular, ensures that removing a node in the middle // produces a single remove (and delete) instruction, and no remove/insert // (move) operations; and that simultaneously, we can insert a node at the - // end. NOTE: This list of mutations has some unexpected "Update" - // instructions, due to layout issues (some LayoutMetrics are 0). Not sure - // why, but the point of this test is to make sure there aren't unnecessary - // insert/deletes, so we can ignore for now. - assert(mutations3.size() == 7); - assert(mutations3[0].type == ShadowViewMutation::Update); - assert(mutations3[1].type == ShadowViewMutation::Update); - assert(mutations3[2].type == ShadowViewMutation::Update); - assert(mutations3[3].type == ShadowViewMutation::Remove); - assert(mutations3[3].oldChildShadowView.tag == 102); - assert(mutations3[3].index == 1); - assert(mutations3[4].type == ShadowViewMutation::Delete); - assert(mutations3[4].oldChildShadowView.tag == 102); - assert(mutations3[5].type == ShadowViewMutation::Create); - assert(mutations3[5].newChildShadowView.tag == 104); - assert(mutations3[6].type == ShadowViewMutation::Insert); - assert(mutations3[6].newChildShadowView.tag == 104); - assert(mutations3[6].index == 2); + // end. + assert(mutations3.size() == 4); + assert(mutations3[0].type == ShadowViewMutation::Remove); + assert(mutations3[0].oldChildShadowView.tag == 102); + assert(mutations3[0].index == 1); + assert(mutations3[1].type == ShadowViewMutation::Delete); + assert(mutations3[1].oldChildShadowView.tag == 102); + assert(mutations3[2].type == ShadowViewMutation::Create); + assert(mutations3[2].newChildShadowView.tag == 104); + assert(mutations3[3].type == ShadowViewMutation::Insert); + assert(mutations3[3].newChildShadowView.tag == 104); + assert(mutations3[3].index == 2); // Calculating mutations. auto mutations4 = calculateShadowViewMutations( @@ -276,29 +270,23 @@ TEST(MountingTest, testMinimalInstructionGeneration) { // This test, in particular, ensures that inserting a child at the middle, and // at the end, and removing a node in the middle, produces the minimal set of // instructions. All these nodes are laid out with absolute positioning, so - // moving them around does not change layout. NOTE: This list of mutations has - // some unexpected "Update" instructions, due to layout issues (some - // LayoutMetrics are 0). Not sure why, but the point of this test is to make - // sure there aren't unnecessary insert/deletes, so we can ignore for now. - assert(mutations4.size() == 9); - assert(mutations4[0].type == ShadowViewMutation::Update); - assert(mutations4[1].type == ShadowViewMutation::Update); - assert(mutations4[2].type == ShadowViewMutation::Update); - assert(mutations4[3].type == ShadowViewMutation::Remove); - assert(mutations4[3].oldChildShadowView.tag == 103); - assert(mutations4[3].index == 1); - assert(mutations4[4].type == ShadowViewMutation::Delete); - assert(mutations4[4].oldChildShadowView.tag == 103); - assert(mutations4[5].type == ShadowViewMutation::Create); - assert(mutations4[5].newChildShadowView.tag == 100); - assert(mutations4[6].type == ShadowViewMutation::Create); - assert(mutations4[6].newChildShadowView.tag == 102); - assert(mutations4[7].type == ShadowViewMutation::Insert); - assert(mutations4[7].newChildShadowView.tag == 100); - assert(mutations4[7].index == 1); - assert(mutations4[8].type == ShadowViewMutation::Insert); - assert(mutations4[8].newChildShadowView.tag == 102); - assert(mutations4[8].index == 3); + // moving them around does not change layout. + assert(mutations4.size() == 6); + assert(mutations4[0].type == ShadowViewMutation::Remove); + assert(mutations4[0].oldChildShadowView.tag == 103); + assert(mutations4[0].index == 1); + assert(mutations4[1].type == ShadowViewMutation::Delete); + assert(mutations4[1].oldChildShadowView.tag == 103); + assert(mutations4[2].type == ShadowViewMutation::Create); + assert(mutations4[2].newChildShadowView.tag == 100); + assert(mutations4[3].type == ShadowViewMutation::Create); + assert(mutations4[3].newChildShadowView.tag == 102); + assert(mutations4[4].type == ShadowViewMutation::Insert); + assert(mutations4[4].newChildShadowView.tag == 100); + assert(mutations4[4].index == 1); + assert(mutations4[5].type == ShadowViewMutation::Insert); + assert(mutations4[5].newChildShadowView.tag == 102); + assert(mutations4[5].index == 3); auto mutations5 = calculateShadowViewMutations( DifferentiatorMode::OptimizedMoves, *rootNodeV5, *rootNodeV6); diff --git a/ReactCommon/fabric/mounting/tests/StateReconciliationTest.cpp b/ReactCommon/fabric/mounting/tests/StateReconciliationTest.cpp new file mode 100644 index 00000000000000..19ba086ca2e3e3 --- /dev/null +++ b/ReactCommon/fabric/mounting/tests/StateReconciliationTest.cpp @@ -0,0 +1,176 @@ +/* + * Copyright (c) Facebook, Inc. and its affiliates. + * + * This source code is licensed under the MIT license found in the + * LICENSE file in the root directory of this source tree. + */ + +#include + +#include + +#include +#include +#include +#include +#include +#include + +#include +#include +#include + +using namespace facebook::react; + +class DummyShadowTreeDelegate : public ShadowTreeDelegate { + public: + virtual void shadowTreeDidFinishTransaction( + ShadowTree const &shadowTree, + MountingCoordinator::Shared const &mountingCoordinator) const override{}; +}; + +inline ShadowNode const *findDescendantNode( + ShadowNode const &shadowNode, + ShadowNodeFamily const &family) { + auto result = (ShadowNode const *){nullptr}; + shadowNode.cloneTree(family, [&](ShadowNode const &oldShadowNode) { + result = &oldShadowNode; + return oldShadowNode.clone({}); + }); + return result; +} + +inline ShadowNode const *findDescendantNode( + ShadowTree const &shadowTree, + ShadowNodeFamily const &family) { + auto result = (ShadowNode const *){nullptr}; + + shadowTree.tryCommit( + [&](RootShadowNode::Shared const &oldRootShadowNode) { + result = findDescendantNode(*oldRootShadowNode, family); + return nullptr; + }, + false); + + return result; +} + +TEST(StateReconciliationTest, testStateReconciliation) { + auto builder = simpleComponentBuilder(); + + auto shadowNodeA = std::shared_ptr{}; + auto shadowNodeAA = std::shared_ptr{}; + auto shadowNodeAB = std::shared_ptr{}; + auto shadowNodeABA = std::shared_ptr{}; + auto shadowNodeABB = std::shared_ptr{}; + auto shadowNodeABC = std::shared_ptr{}; + + // clang-format off + auto element = + Element() + .reference(shadowNodeA) + .finalize([](RootShadowNode &shadowNode){ + shadowNode.sealRecursive(); + }) + .children({ + Element() + .reference(shadowNodeAA), + Element() + .reference(shadowNodeAB) + .children({ + Element() + .reference(shadowNodeABA), + Element() + .reference(shadowNodeABB), + Element() + .reference(shadowNodeABC) + }) + }); + // clang-format on + + auto shadowNode = builder.build(element); + + auto rootShadowNodeState1 = shadowNode->ShadowNode::clone({}); + + auto &scrollViewComponentDescriptor = shadowNodeAB->getComponentDescriptor(); + auto &family = shadowNodeAB->getFamily(); + auto state1 = shadowNodeAB->getState(); + auto shadowTreeDelegate = DummyShadowTreeDelegate{}; + auto eventDispatcher = EventDispatcher::Shared{}; + auto rootComponentDescriptor = + ComponentDescriptorParameters{eventDispatcher, nullptr, nullptr}; + ShadowTree shadowTree{SurfaceId{11}, + LayoutConstraints{}, + LayoutContext{}, + rootComponentDescriptor, + shadowTreeDelegate}; + + shadowTree.commit( + [&](RootShadowNode::Shared const &oldRootShadowNode) { + return std::static_pointer_cast(rootShadowNodeState1); + }, + true); + + EXPECT_EQ(state1->getMostRecentState(), state1); + + EXPECT_EQ( + findDescendantNode(*rootShadowNodeState1, family)->getState(), state1); + + auto state2 = scrollViewComponentDescriptor.createState( + family, std::make_shared()); + + auto rootShadowNodeState2 = + shadowNode->cloneTree(family, [&](ShadowNode const &oldShadowNode) { + return oldShadowNode.clone({ShadowNodeFragment::propsPlaceholder(), + ShadowNodeFragment::childrenPlaceholder(), + state2}); + }); + + EXPECT_EQ( + findDescendantNode(*rootShadowNodeState2, family)->getState(), state2); + + shadowTree.commit( + [&](RootShadowNode::Shared const &oldRootShadowNode) { + return std::static_pointer_cast(rootShadowNodeState2); + }, + true); + + EXPECT_EQ(state1->getMostRecentState(), state2); + EXPECT_EQ(state2->getMostRecentState(), state2); + + auto state3 = scrollViewComponentDescriptor.createState( + family, std::make_shared()); + + auto rootShadowNodeState3 = rootShadowNodeState2->cloneTree( + family, [&](ShadowNode const &oldShadowNode) { + return oldShadowNode.clone({ShadowNodeFragment::propsPlaceholder(), + ShadowNodeFragment::childrenPlaceholder(), + state3}); + }); + + EXPECT_EQ( + findDescendantNode(*rootShadowNodeState3, family)->getState(), state3); + + shadowTree.commit( + [&](RootShadowNode::Shared const &oldRootShadowNode) { + return std::static_pointer_cast(rootShadowNodeState3); + }, + true); + + EXPECT_EQ(findDescendantNode(shadowTree, family)->getState(), state3); + + EXPECT_EQ(state1->getMostRecentState(), state3); + EXPECT_EQ(state2->getMostRecentState(), state3); + EXPECT_EQ(state3->getMostRecentState(), state3); + + // This is the core part of the whole test. + // Here we commit the old tree but we expect that the state associated with + // the node will stay the same (newer that the old tree has). + shadowTree.commit( + [&](RootShadowNode::Shared const &oldRootShadowNode) { + return std::static_pointer_cast(rootShadowNodeState2); + }, + true); + + EXPECT_EQ(findDescendantNode(shadowTree, family)->getState(), state3); +} diff --git a/ReactCommon/fabric/scheduler/BUCK b/ReactCommon/fabric/scheduler/BUCK new file mode 100644 index 00000000000000..527e6756d5f96d --- /dev/null +++ b/ReactCommon/fabric/scheduler/BUCK @@ -0,0 +1,68 @@ +load("@fbsource//tools/build_defs/apple:flag_defs.bzl", "get_preprocessor_flags_for_build_mode") +load( + "//tools/build_defs/oss:rn_defs.bzl", + "ANDROID", + "APPLE", + "CXX", + "get_apple_compiler_flags", + "get_apple_inspector_flags", + "react_native_xplat_target", + "rn_xplat_cxx_library", + "subdir_glob", +) + +APPLE_COMPILER_FLAGS = get_apple_compiler_flags() + +rn_xplat_cxx_library( + name = "scheduler", + srcs = glob( + ["**/*.cpp"], + exclude = glob(["tests/**/*.cpp"]), + ), + headers = glob( + ["**/*.h"], + exclude = glob(["tests/**/*.h"]), + ), + header_namespace = "", + exported_headers = subdir_glob( + [ + ("", "*.h"), + ], + prefix = "react/scheduler", + ), + compiler_flags = [ + "-fexceptions", + "-frtti", + "-std=c++14", + "-Wall", + ], + fbobjc_compiler_flags = APPLE_COMPILER_FLAGS, + fbobjc_labels = ["supermodule:ios/default/public.react_native.infra"], + fbobjc_preprocessor_flags = get_preprocessor_flags_for_build_mode() + get_apple_inspector_flags(), + force_static = True, + macosx_tests_override = [], + platforms = (ANDROID, APPLE, CXX), + preprocessor_flags = [ + "-DLOG_TAG=\"ReactNative\"", + "-DWITH_FBSYSTRACE=1", + ], + visibility = ["PUBLIC"], + deps = [ + "//xplat/fbsystrace:fbsystrace", + "//xplat/folly:headers_only", + "//xplat/folly:memory", + "//xplat/folly:molly", + "//xplat/jsi:JSIDynamic", + "//xplat/jsi:jsi", + "//xplat/third-party/glog:glog", + react_native_xplat_target("fabric/core:core"), + react_native_xplat_target("fabric/mounting:mounting"), + react_native_xplat_target("fabric/uimanager:uimanager"), + react_native_xplat_target("fabric/templateprocessor:templateprocessor"), + react_native_xplat_target("config:config"), + react_native_xplat_target("fabric/componentregistry:componentregistry"), + react_native_xplat_target("fabric/debug:debug"), + react_native_xplat_target("fabric/components/root:root"), + react_native_xplat_target("utils:utils"), + ], +) diff --git a/ReactCommon/fabric/uimanager/Scheduler.cpp b/ReactCommon/fabric/scheduler/Scheduler.cpp similarity index 98% rename from ReactCommon/fabric/uimanager/Scheduler.cpp rename to ReactCommon/fabric/scheduler/Scheduler.cpp index 6b9c47f7a93db4..671713b4b69a8a 100644 --- a/ReactCommon/fabric/uimanager/Scheduler.cpp +++ b/ReactCommon/fabric/scheduler/Scheduler.cpp @@ -10,12 +10,12 @@ #include #include +#include #include #include -#include +#include #include #include -#include namespace facebook { namespace react { diff --git a/ReactCommon/fabric/uimanager/Scheduler.h b/ReactCommon/fabric/scheduler/Scheduler.h similarity index 94% rename from ReactCommon/fabric/uimanager/Scheduler.h rename to ReactCommon/fabric/scheduler/Scheduler.h index 31f40b474b5569..59e91c5dfa711a 100644 --- a/ReactCommon/fabric/uimanager/Scheduler.h +++ b/ReactCommon/fabric/scheduler/Scheduler.h @@ -10,14 +10,14 @@ #include #include +#include +#include #include #include #include #include -#include -#include -#include -#include +#include +#include #include #include #include diff --git a/ReactCommon/fabric/uimanager/SchedulerDelegate.h b/ReactCommon/fabric/scheduler/SchedulerDelegate.h similarity index 100% rename from ReactCommon/fabric/uimanager/SchedulerDelegate.h rename to ReactCommon/fabric/scheduler/SchedulerDelegate.h diff --git a/ReactCommon/fabric/uimanager/SchedulerToolbox.cpp b/ReactCommon/fabric/scheduler/SchedulerToolbox.cpp similarity index 100% rename from ReactCommon/fabric/uimanager/SchedulerToolbox.cpp rename to ReactCommon/fabric/scheduler/SchedulerToolbox.cpp diff --git a/ReactCommon/fabric/uimanager/SchedulerToolbox.h b/ReactCommon/fabric/scheduler/SchedulerToolbox.h similarity index 94% rename from ReactCommon/fabric/uimanager/SchedulerToolbox.h rename to ReactCommon/fabric/scheduler/SchedulerToolbox.h index 0ffa322acab807..1862f1889fd0de 100644 --- a/ReactCommon/fabric/uimanager/SchedulerToolbox.h +++ b/ReactCommon/fabric/scheduler/SchedulerToolbox.h @@ -7,8 +7,8 @@ #pragma once +#include #include -#include #include #include diff --git a/ReactCommon/fabric/templateprocessor/BUCK b/ReactCommon/fabric/templateprocessor/BUCK new file mode 100644 index 00000000000000..4a35935675458a --- /dev/null +++ b/ReactCommon/fabric/templateprocessor/BUCK @@ -0,0 +1,93 @@ +load("@fbsource//tools/build_defs/apple:flag_defs.bzl", "get_preprocessor_flags_for_build_mode") +load( + "//tools/build_defs/oss:rn_defs.bzl", + "ANDROID", + "APPLE", + "CXX", + "fb_xplat_cxx_test", + "get_apple_compiler_flags", + "get_apple_inspector_flags", + "react_native_xplat_target", + "rn_xplat_cxx_library", + "subdir_glob", +) + +APPLE_COMPILER_FLAGS = get_apple_compiler_flags() + +rn_xplat_cxx_library( + name = "templateprocessor", + srcs = glob( + ["**/*.cpp"], + exclude = glob(["tests/**/*.cpp"]), + ), + headers = glob( + ["**/*.h"], + exclude = glob(["tests/**/*.h"]), + ), + header_namespace = "", + exported_headers = subdir_glob( + [ + ("", "*.h"), + ], + prefix = "react/templateprocessor", + ), + compiler_flags = [ + "-fexceptions", + "-frtti", + "-std=c++14", + "-Wall", + ], + fbobjc_compiler_flags = APPLE_COMPILER_FLAGS, + fbobjc_labels = ["supermodule:ios/default/public.react_native.infra"], + fbobjc_preprocessor_flags = get_preprocessor_flags_for_build_mode() + get_apple_inspector_flags(), + force_static = True, + macosx_tests_override = [], + platforms = (ANDROID, APPLE, CXX), + preprocessor_flags = [ + "-DLOG_TAG=\"ReactNative\"", + "-DWITH_FBSYSTRACE=1", + ], + tests = [":tests"], + visibility = ["PUBLIC"], + deps = [ + "//xplat/fbsystrace:fbsystrace", + "//xplat/folly:headers_only", + "//xplat/folly:memory", + "//xplat/folly:molly", + "//xplat/jsi:JSIDynamic", + "//xplat/jsi:jsi", + "//xplat/third-party/glog:glog", + react_native_xplat_target("fabric/core:core"), + react_native_xplat_target("fabric/uimanager:uimanager"), + react_native_xplat_target("fabric/componentregistry:componentregistry"), + react_native_xplat_target("fabric/debug:debug"), + react_native_xplat_target("config:config"), + react_native_xplat_target("utils:utils"), + ], +) + +fb_xplat_cxx_test( + name = "tests", + srcs = glob(["tests/**/*.cpp"]), + headers = glob(["tests/**/*.h"]), + compiler_flags = [ + "-fexceptions", + "-frtti", + "-std=c++14", + "-Wall", + ], + contacts = ["oncall+react_native@xmail.facebook.com"], + platforms = (ANDROID, APPLE, CXX), + deps = [ + ":templateprocessor", + "//xplat/folly:molly", + "//xplat/third-party/gmock:gtest", + react_native_xplat_target("config:config"), + react_native_xplat_target("fabric/components/activityindicator:activityindicator"), + react_native_xplat_target("fabric/components/image:image"), + react_native_xplat_target("fabric/components/root:root"), + react_native_xplat_target("fabric/components/scrollview:scrollview"), + react_native_xplat_target("fabric/components/view:view"), + "//xplat/js/react-native-github:generated_components-rncore", + ], +) diff --git a/ReactCommon/fabric/uimanager/UITemplateProcessor.cpp b/ReactCommon/fabric/templateprocessor/UITemplateProcessor.cpp similarity index 100% rename from ReactCommon/fabric/uimanager/UITemplateProcessor.cpp rename to ReactCommon/fabric/templateprocessor/UITemplateProcessor.cpp diff --git a/ReactCommon/fabric/uimanager/UITemplateProcessor.h b/ReactCommon/fabric/templateprocessor/UITemplateProcessor.h similarity index 96% rename from ReactCommon/fabric/uimanager/UITemplateProcessor.h rename to ReactCommon/fabric/templateprocessor/UITemplateProcessor.h index dff902334b749d..4f9a892acf9397 100644 --- a/ReactCommon/fabric/uimanager/UITemplateProcessor.h +++ b/ReactCommon/fabric/templateprocessor/UITemplateProcessor.h @@ -11,9 +11,9 @@ #include +#include #include #include -#include #include namespace facebook { diff --git a/ReactCommon/fabric/uimanager/tests/UITemplateProcessorTest.cpp b/ReactCommon/fabric/templateprocessor/tests/UITemplateProcessorTest.cpp similarity index 94% rename from ReactCommon/fabric/uimanager/tests/UITemplateProcessorTest.cpp rename to ReactCommon/fabric/templateprocessor/tests/UITemplateProcessorTest.cpp index 3339afa17e29cb..743b203a6b097b 100644 --- a/ReactCommon/fabric/uimanager/tests/UITemplateProcessorTest.cpp +++ b/ReactCommon/fabric/templateprocessor/tests/UITemplateProcessorTest.cpp @@ -9,18 +9,18 @@ #include #include -#include -#include +#include +#include using namespace facebook::react; +#include +#include +#include #include #include #include #include -#include -#include -#include #include namespace facebook { diff --git a/ReactCommon/fabric/textlayoutmanager/BUCK b/ReactCommon/fabric/textlayoutmanager/BUCK index ff90396790bc20..ba629ee394966b 100644 --- a/ReactCommon/fabric/textlayoutmanager/BUCK +++ b/ReactCommon/fabric/textlayoutmanager/BUCK @@ -129,6 +129,7 @@ rn_xplat_cxx_library( react_native_xplat_target("fabric/debug:debug"), react_native_xplat_target("fabric/graphics:graphics"), react_native_xplat_target("fabric/uimanager:uimanager"), + react_native_xplat_target("fabric/componentregistry:componentregistry"), ], ) diff --git a/ReactCommon/fabric/uimanager/BUCK b/ReactCommon/fabric/uimanager/BUCK index b9bae06f580423..e2bdd3b4c26864 100644 --- a/ReactCommon/fabric/uimanager/BUCK +++ b/ReactCommon/fabric/uimanager/BUCK @@ -61,6 +61,7 @@ rn_xplat_cxx_library( react_native_xplat_target("fabric/components/view:view"), react_native_xplat_target("fabric/mounting:mounting"), react_native_xplat_target("fabric/core:core"), + react_native_xplat_target("fabric/componentregistry:componentregistry"), react_native_xplat_target("fabric/debug:debug"), react_native_xplat_target("utils:utils"), ], diff --git a/ReactCommon/fabric/uimanager/UIManager.h b/ReactCommon/fabric/uimanager/UIManager.h index db882e3aec2a4c..7d282d43836205 100644 --- a/ReactCommon/fabric/uimanager/UIManager.h +++ b/ReactCommon/fabric/uimanager/UIManager.h @@ -11,12 +11,12 @@ #include #include +#include #include #include #include #include #include -#include #include namespace facebook { diff --git a/ReactCommon/hermes/inspector/Inspector.cpp b/ReactCommon/hermes/inspector/Inspector.cpp index 8ab8e8643aa03d..7376b578aa1e1c 100644 --- a/ReactCommon/hermes/inspector/Inspector.cpp +++ b/ReactCommon/hermes/inspector/Inspector.cpp @@ -382,6 +382,34 @@ folly::Future Inspector::setPauseOnExceptions( return promise->getFuture(); }; +folly::Future Inspector::setPauseOnLoads( + const PauseOnLoadMode mode) { + std::unique_lock lock(mutex_); + auto promise = std::make_shared>(); + pauseOnLoadMode_ = mode; + promise->setValue(); + return promise->getFuture(); +}; + +bool Inspector::shouldPauseOnThisScriptLoad() { + switch (pauseOnLoadMode_) { + case None: + return false; + case All: + return true; + case Smart: + // If we don't have active breakpoints, there's nothing to set or update. + if (debugger_.getBreakpoints().size() == 0) { + return false; + } + // If there's no source map URL, it's probably not a file we care about. + if (getScriptInfoFromTopCallFrame().sourceMappingUrl.size() == 0) { + return false; + } + return true; + } +}; + debugger::Command Inspector::didPause(debugger::Debugger &debugger) { std::unique_lock lock(mutex_); diff --git a/ReactCommon/hermes/inspector/Inspector.h b/ReactCommon/hermes/inspector/Inspector.h index 0cc0b8f4dd4a11..bf4fc553c1da1f 100644 --- a/ReactCommon/hermes/inspector/Inspector.h +++ b/ReactCommon/hermes/inspector/Inspector.h @@ -53,6 +53,8 @@ struct ConsoleMessageInfo { args(std::move(args)) {} }; +enum PauseOnLoadMode { None, Smart, All }; + /** * InspectorObserver notifies the observer of events that occur in the VM. */ @@ -200,6 +202,19 @@ class Inspector : public facebook::hermes::debugger::EventObserver, folly::Future setPauseOnExceptions( const facebook::hermes::debugger::PauseOnThrowMode &mode); + /** + * Set whether to pause on loads. This does not require runtime modifications, + * but returns a future for consistency. + */ + folly::Future setPauseOnLoads(const PauseOnLoadMode mode); + + /** + * If called during a script load event, return true if we should pause. + * Assumed to be called from a script load event where we already hold + * `mutex_`. + */ + bool shouldPauseOnThisScriptLoad(); + /** * didPause implements the pause callback from Hermes. This callback arrives * on the JS thread. @@ -297,6 +312,9 @@ class Inspector : public facebook::hermes::debugger::EventObserver, // this state is here rather than in the Running class. AsyncPauseState pendingPauseState_ = AsyncPauseState::None; + // Whether we should enter a paused state when a script loads. + PauseOnLoadMode pauseOnLoadMode_ = PauseOnLoadMode::None; + // All scripts loaded in to the VM, along with whether we've notified the // client about the script yet. struct LoadedScriptInfo { diff --git a/ReactCommon/hermes/inspector/InspectorState.cpp b/ReactCommon/hermes/inspector/InspectorState.cpp index 7b7552f3e1e75a..7d6c35e05bbaee 100644 --- a/ReactCommon/hermes/inspector/InspectorState.cpp +++ b/ReactCommon/hermes/inspector/InspectorState.cpp @@ -236,6 +236,10 @@ std::pair InspectorState::Running::didPause( } else if (reason == debugger::PauseReason::ScriptLoaded) { inspector_.addCurrentScriptToLoadedScripts(); inspector_.notifyScriptsLoaded(); + if (inspector_.shouldPauseOnThisScriptLoad()) { + return std::make_pair( + InspectorState::Paused::make(inspector_), nullptr); + } } else if (reason == debugger::PauseReason::EvalComplete) { assert(pendingEvalPromise_); diff --git a/ReactCommon/hermes/inspector/chrome/Connection.cpp b/ReactCommon/hermes/inspector/chrome/Connection.cpp index 268cbc2e9d334a..6c170f312d3827 100644 --- a/ReactCommon/hermes/inspector/chrome/Connection.cpp +++ b/ReactCommon/hermes/inspector/chrome/Connection.cpp @@ -88,6 +88,7 @@ class Connection::Impl : public inspector::InspectorObserver, const m::heapProfiler::StopTrackingHeapObjectsRequest &req) override; void handle(const m::runtime::EvaluateRequest &req) override; void handle(const m::runtime::GetPropertiesRequest &req) override; + void handle(const m::hermes::SetPauseOnLoadRequest &req) override; private: std::vector makePropsFromScope( @@ -290,6 +291,9 @@ void Connection::Impl::onPause( case debugger::PauseReason::Exception: note.reason = "exception"; break; + case debugger::PauseReason::ScriptLoaded: + note.reason = "load"; + break; default: note.reason = "other"; break; @@ -757,6 +761,21 @@ void Connection::Impl::handle(const m::runtime::GetPropertiesRequest &req) { .thenError(sendErrorToClient(req.id)); } +void Connection::Impl::handle(const m::hermes::SetPauseOnLoadRequest &req) { + PauseOnLoadMode mode; + if (req.state == "none") { + mode = PauseOnLoadMode::None; + } else if (req.state == "all") { + mode = PauseOnLoadMode::All; + } else if (req.state == "smart") { + mode = PauseOnLoadMode::Smart; + } else { + sendErrorToClientViaExecutor(req.id, "Unrecognized pause on load mode"); + return; + } + sendResponseToClientViaExecutor(inspector_->setPauseOnLoads(mode), req.id); +} + /* * Send-to-client methods */ diff --git a/ReactCommon/hermes/inspector/chrome/MessageTypes.cpp b/ReactCommon/hermes/inspector/chrome/MessageTypes.cpp index ae0f77851a1e14..18ce5ac65a6a60 100644 --- a/ReactCommon/hermes/inspector/chrome/MessageTypes.cpp +++ b/ReactCommon/hermes/inspector/chrome/MessageTypes.cpp @@ -1,5 +1,5 @@ // Copyright 2004-present Facebook. All Rights Reserved. -// @generated SignedSource<<4ab81efd6f767bd583d00c806b7d1d9b>> +// @generated SignedSource<<0d7691362d081e7bc44d2b7a0ed24371>> #include "MessageTypes.h" @@ -46,6 +46,7 @@ std::unique_ptr Request::fromJsonThrowOnError(const std::string &str) { makeUnique}, {"HeapProfiler.takeHeapSnapshot", makeUnique}, + {"Hermes.setPauseOnLoad", makeUnique}, {"Runtime.evaluate", makeUnique}, {"Runtime.getProperties", makeUnique}, }; @@ -682,6 +683,33 @@ void heapProfiler::TakeHeapSnapshotRequest::accept( handler.handle(*this); } +hermes::SetPauseOnLoadRequest::SetPauseOnLoadRequest() + : Request("Hermes.setPauseOnLoad") {} + +hermes::SetPauseOnLoadRequest::SetPauseOnLoadRequest(const dynamic &obj) + : Request("Hermes.setPauseOnLoad") { + assign(id, obj, "id"); + assign(method, obj, "method"); + + dynamic params = obj.at("params"); + assign(state, params, "state"); +} + +dynamic hermes::SetPauseOnLoadRequest::toDynamic() const { + dynamic params = dynamic::object; + put(params, "state", state); + + dynamic obj = dynamic::object; + put(obj, "id", id); + put(obj, "method", method); + put(obj, "params", std::move(params)); + return obj; +} + +void hermes::SetPauseOnLoadRequest::accept(RequestHandler &handler) const { + handler.handle(*this); +} + runtime::EvaluateRequest::EvaluateRequest() : Request("Runtime.evaluate") {} runtime::EvaluateRequest::EvaluateRequest(const dynamic &obj) diff --git a/ReactCommon/hermes/inspector/chrome/MessageTypes.h b/ReactCommon/hermes/inspector/chrome/MessageTypes.h index 503b486743c3a8..3d7222fd6ac65a 100644 --- a/ReactCommon/hermes/inspector/chrome/MessageTypes.h +++ b/ReactCommon/hermes/inspector/chrome/MessageTypes.h @@ -1,5 +1,5 @@ // Copyright 2004-present Facebook. All Rights Reserved. -// @generated SignedSource<<0a1a011902fd18d4eebd2fe12fafb8b1>> +// @generated SignedSource<<08b66e22784e225b926d36131b9a7693>> #pragma once @@ -73,6 +73,10 @@ struct StopTrackingHeapObjectsRequest; struct TakeHeapSnapshotRequest; } // namespace heapProfiler +namespace hermes { +struct SetPauseOnLoadRequest; +} // namespace hermes + /// RequestHandler handles requests via the visitor pattern. struct RequestHandler { virtual ~RequestHandler() = default; @@ -95,6 +99,7 @@ struct RequestHandler { virtual void handle( const heapProfiler::StopTrackingHeapObjectsRequest &req) = 0; virtual void handle(const heapProfiler::TakeHeapSnapshotRequest &req) = 0; + virtual void handle(const hermes::SetPauseOnLoadRequest &req) = 0; virtual void handle(const runtime::EvaluateRequest &req) = 0; virtual void handle(const runtime::GetPropertiesRequest &req) = 0; }; @@ -119,6 +124,7 @@ struct NoopRequestHandler : public RequestHandler { void handle( const heapProfiler::StopTrackingHeapObjectsRequest &req) override {} void handle(const heapProfiler::TakeHeapSnapshotRequest &req) override {} + void handle(const hermes::SetPauseOnLoadRequest &req) override {} void handle(const runtime::EvaluateRequest &req) override {} void handle(const runtime::GetPropertiesRequest &req) override {} }; @@ -411,6 +417,16 @@ struct heapProfiler::TakeHeapSnapshotRequest : public Request { folly::Optional treatGlobalObjectsAsRoots; }; +struct hermes::SetPauseOnLoadRequest : public Request { + SetPauseOnLoadRequest(); + explicit SetPauseOnLoadRequest(const folly::dynamic &obj); + + folly::dynamic toDynamic() const override; + void accept(RequestHandler &handler) const override; + + std::string state; +}; + struct runtime::EvaluateRequest : public Request { EvaluateRequest(); explicit EvaluateRequest(const folly::dynamic &obj); diff --git a/ReactCommon/hermes/inspector/tools/message_types.txt b/ReactCommon/hermes/inspector/tools/message_types.txt index 420fdad15d6d08..6d02ed4e754d6e 100644 --- a/ReactCommon/hermes/inspector/tools/message_types.txt +++ b/ReactCommon/hermes/inspector/tools/message_types.txt @@ -23,3 +23,4 @@ Runtime.consoleAPICalled Runtime.evaluate Runtime.executionContextCreated Runtime.getProperties +Hermes.setPauseOnLoad diff --git a/ReactCommon/hermes/inspector/tools/msggen/src/custom.json b/ReactCommon/hermes/inspector/tools/msggen/src/custom.json new file mode 100644 index 00000000000000..c9650a9c293a77 --- /dev/null +++ b/ReactCommon/hermes/inspector/tools/msggen/src/custom.json @@ -0,0 +1,26 @@ +{ + "domains": [ + { + "domain": "Hermes", + "description": "Hermes specific messages", + "commands": [ + { + "name": "setPauseOnLoad", + "description": "Pause VM when new scripts are loaded (reason='load')", + "parameters": [ + { + "name": "state", + "description": "Pause on script load mode", + "type": "string", + "enum": [ + "none", + "smart", + "all" + ] + } + ] + } + ] + } + ] +} diff --git a/ReactCommon/hermes/inspector/tools/msggen/src/index.js b/ReactCommon/hermes/inspector/tools/msggen/src/index.js index 5124485a86d853..adcbdea071eda9 100644 --- a/ReactCommon/hermes/inspector/tools/msggen/src/index.js +++ b/ReactCommon/hermes/inspector/tools/msggen/src/index.js @@ -24,7 +24,9 @@ import {HeaderWriter} from './HeaderWriter'; import {ImplementationWriter} from './ImplementationWriter'; // $FlowFixMe: this isn't a module, just a JSON file. -const proto = require('devtools-protocol/json/js_protocol.json'); +const standard = require('devtools-protocol/json/js_protocol.json'); + +const custom = require('../src/custom.json'); type Descriptor = {| types: Array, @@ -32,6 +34,12 @@ type Descriptor = {| events: Array, |}; +function mergeDomains(original, extra) { + return {...original, domains: original.domains.concat(extra.domains)}; +} + +const proto = mergeDomains(standard, custom); + function parseDomains( domainObjs: Array, ignoreExperimental: boolean, diff --git a/ReactCommon/jsi/jsi/CMakeLists.txt b/ReactCommon/jsi/jsi/CMakeLists.txt index 6a2db94383d9b8..f2610548ee0e8a 100644 --- a/ReactCommon/jsi/jsi/CMakeLists.txt +++ b/ReactCommon/jsi/jsi/CMakeLists.txt @@ -9,7 +9,7 @@ set(CMAKE_CXX_STANDARD_REQUIRED ON) add_library(jsi jsi.cpp) -include_directories(..) +target_include_directories(jsi PUBLIC ..) set(jsi_compile_flags "") diff --git a/ReactCommon/jsi/jsi/decorator.h b/ReactCommon/jsi/jsi/decorator.h index 0021794e57786a..d090a47fc9c974 100644 --- a/ReactCommon/jsi/jsi/decorator.h +++ b/ReactCommon/jsi/jsi/decorator.h @@ -407,6 +407,44 @@ struct AfterCaller { } }; +// It's possible to use multiple decorators by nesting +// WithRuntimeDecorator<...>, but this specialization allows use of +// std::tuple of decorator classes instead. See testlib.cpp for an +// example. +template +struct BeforeCaller> { + static void before(std::tuple& tuple) { + all_before<0, T...>(tuple); + } + + private: + template + static void all_before(std::tuple& tuple) { + detail::BeforeCaller::before(std::get(tuple)); + all_before(tuple); + } + + template + static void all_before(std::tuple&) {} +}; + +template +struct AfterCaller> { + static void after(std::tuple& tuple) { + all_after<0, T...>(tuple); + } + + private: + template + static void all_after(std::tuple& tuple) { + all_after(tuple); + detail::AfterCaller::after(std::get(tuple)); + } + + template + static void all_after(std::tuple&) {} +}; + } // namespace detail // A decorator which implements an around idiom. A With instance is @@ -691,40 +729,5 @@ class WithRuntimeDecorator : public RuntimeDecorator { With& with_; }; -// Nesting WithRuntimeDecorator will work, but using this as the With -// type will be easier to read, write, and understand. -template -class WithTuple : public std::tuple { - public: - using std::tuple::tuple; - - void before() { - all_before<0, T...>(); - } - - void after() { - all_after<0, T...>(); - } - - private: - template - void all_before() { - detail::BeforeCaller::before(std::get(*this)); - all_before(); - } - - template - void all_before() {} - - template - void all_after() { - all_after(); - detail::AfterCaller::after(std::get(*this)); - } - - template - void all_after() {} -}; - } // namespace jsi } // namespace facebook diff --git a/ReactCommon/jsi/jsi/test/testlib.cpp b/ReactCommon/jsi/jsi/test/testlib.cpp index ad3b9937584cfd..a8573d6ebb6700 100644 --- a/ReactCommon/jsi/jsi/test/testlib.cpp +++ b/ReactCommon/jsi/jsi/test/testlib.cpp @@ -1197,10 +1197,11 @@ TEST_P(JSITest, MultiDecoratorTest) { int nest = 0; }; - class MultiRuntime final : public WithRuntimeDecorator> { + class MultiRuntime final + : public WithRuntimeDecorator> { public: explicit MultiRuntime(std::unique_ptr rt) - : WithRuntimeDecorator>(*rt, tuple_), + : WithRuntimeDecorator>(*rt, tuple_), rt_(std::move(rt)) {} int count() { @@ -1212,7 +1213,7 @@ TEST_P(JSITest, MultiDecoratorTest) { private: std::unique_ptr rt_; - WithTuple tuple_; + std::tuple tuple_; }; MultiRuntime mrt(factory()); diff --git a/ReactCommon/jsiexecutor/jsireact/JSIExecutor.cpp b/ReactCommon/jsiexecutor/jsireact/JSIExecutor.cpp index 0f1370a7eeb50c..fd77eba63e6461 100644 --- a/ReactCommon/jsiexecutor/jsireact/JSIExecutor.cpp +++ b/ReactCommon/jsiexecutor/jsireact/JSIExecutor.cpp @@ -147,8 +147,6 @@ void JSIExecutor::loadBundle( std::string sourceURL) { SystraceSection s("JSIExecutor::loadBundle"); - // TODO: check for and use precompiled HBC - bool hasLogger(ReactMarker::logTaggedMarker); std::string scriptName = simpleBasename(sourceURL); if (hasLogger) { diff --git a/ReactCommon/turbomodule/core/platform/android/JavaTurboModule.cpp b/ReactCommon/turbomodule/core/platform/android/JavaTurboModule.cpp index 09504b879f471c..e79158ee7ccd2d 100644 --- a/ReactCommon/turbomodule/core/platform/android/JavaTurboModule.cpp +++ b/ReactCommon/turbomodule/core/platform/android/JavaTurboModule.cpp @@ -23,17 +23,12 @@ namespace facebook { namespace react { -JavaTurboModule::JavaTurboModule( - const std::string &name, - jni::alias_ref instance, - std::shared_ptr jsInvoker, - std::shared_ptr nativeInvoker) - : TurboModule(name, jsInvoker), - instance_(jni::make_global(instance)), - nativeInvoker_(nativeInvoker) {} +JavaTurboModule::JavaTurboModule(const InitParams ¶ms) + : TurboModule(params.moduleName, params.jsInvoker), + instance_(jni::make_global(params.instance)), + nativeInvoker_(params.nativeInvoker) {} namespace { - jni::local_ref createJavaCallbackFromJSIFunction( jsi::Function &&function, jsi::Runtime &rt, diff --git a/ReactCommon/turbomodule/core/platform/android/JavaTurboModule.h b/ReactCommon/turbomodule/core/platform/android/JavaTurboModule.h index 87cbc1603f448d..3a903e49558b76 100644 --- a/ReactCommon/turbomodule/core/platform/android/JavaTurboModule.h +++ b/ReactCommon/turbomodule/core/platform/android/JavaTurboModule.h @@ -32,11 +32,15 @@ struct JTurboModule : jni::JavaClass { class JSI_EXPORT JavaTurboModule : public TurboModule { public: - JavaTurboModule( - const std::string &name, - jni::alias_ref instance, - std::shared_ptr jsInvoker, - std::shared_ptr nativeInvoker); + // TODO(T65603471): Should we unify this with a Fabric abstraction? + struct InitParams { + std::string moduleName; + jni::alias_ref instance; + std::shared_ptr jsInvoker; + std::shared_ptr nativeInvoker; + }; + + JavaTurboModule(const InitParams ¶ms); jsi::Value invokeJavaMethod( jsi::Runtime &runtime, TurboModuleMethodValueKind valueKind, diff --git a/ReactCommon/turbomodule/core/platform/ios/RCTTurboModule.h b/ReactCommon/turbomodule/core/platform/ios/RCTTurboModule.h index 1277561b71c5b4..89aa23832b8225 100644 --- a/ReactCommon/turbomodule/core/platform/ios/RCTTurboModule.h +++ b/ReactCommon/turbomodule/core/platform/ios/RCTTurboModule.h @@ -127,12 +127,16 @@ class Instance; */ class JSI_EXPORT ObjCTurboModule : public TurboModule { public: - ObjCTurboModule( - const std::string &name, - id instance, - std::shared_ptr jsInvoker, - std::shared_ptr nativeInvoker, - id perfLogger); + // TODO(T65603471): Should we unify this with a Fabric abstraction? + struct InitParams { + std::string moduleName; + id instance; + std::shared_ptr jsInvoker; + std::shared_ptr nativeInvoker; + id perfLogger; + }; + + ObjCTurboModule(const InitParams ¶ms); jsi::Value invokeObjCMethod( jsi::Runtime &runtime, @@ -208,10 +212,8 @@ class JSI_EXPORT ObjCTurboModule : public TurboModule { @optional // This should be required, after migration is done. -- (std::shared_ptr) - getTurboModuleWithJsInvoker:(std::shared_ptr)jsInvoker - nativeInvoker:(std::shared_ptr)nativeInvoker - perfLogger:(id)perfLogger; +- (std::shared_ptr)getTurboModule: + (const facebook::react::ObjCTurboModule::InitParams &)params; @end diff --git a/ReactCommon/turbomodule/core/platform/ios/RCTTurboModule.mm b/ReactCommon/turbomodule/core/platform/ios/RCTTurboModule.mm index 20caa031d987e9..221bff76829cb0 100644 --- a/ReactCommon/turbomodule/core/platform/ios/RCTTurboModule.mm +++ b/ReactCommon/turbomodule/core/platform/ios/RCTTurboModule.mm @@ -605,13 +605,11 @@ static RCTResponseSenderBlock convertJSIFunctionToCallback( return inv; } -ObjCTurboModule::ObjCTurboModule( - const std::string &name, - id instance, - std::shared_ptr jsInvoker, - std::shared_ptr nativeInvoker, - id perfLogger) - : TurboModule(name, jsInvoker), instance_(instance), nativeInvoker_(nativeInvoker), performanceLogger_(perfLogger) +ObjCTurboModule::ObjCTurboModule(const InitParams ¶ms) + : TurboModule(params.moduleName, params.jsInvoker), + instance_(params.instance), + nativeInvoker_(params.nativeInvoker), + performanceLogger_(params.perfLogger) { } diff --git a/ReactCommon/turbomodule/core/platform/ios/RCTTurboModuleManager.h b/ReactCommon/turbomodule/core/platform/ios/RCTTurboModuleManager.h index 0ee31c0922c235..870d1a7d8a2ec8 100644 --- a/ReactCommon/turbomodule/core/platform/ios/RCTTurboModuleManager.h +++ b/ReactCommon/turbomodule/core/platform/ios/RCTTurboModuleManager.h @@ -11,11 +11,8 @@ // TODO: Move to xplat codegen. - (std::shared_ptr)getTurboModule:(const std::string &)name - instance:(id)instance - jsInvoker:(std::shared_ptr)jsInvoker - nativeInvoker: - (std::shared_ptr)nativeInvoker - perfLogger:(id)perfLogger; + initParams: + (const facebook::react::ObjCTurboModule::InitParams &)params; @optional diff --git a/ReactCommon/turbomodule/core/platform/ios/RCTTurboModuleManager.mm b/ReactCommon/turbomodule/core/platform/ios/RCTTurboModuleManager.mm index a2061d1ea86333..f5a12a6dce6b26 100644 --- a/ReactCommon/turbomodule/core/platform/ios/RCTTurboModuleManager.mm +++ b/ReactCommon/turbomodule/core/platform/ios/RCTTurboModuleManager.mm @@ -9,6 +9,7 @@ #import #import +#import #import #import @@ -31,6 +32,57 @@ static char kAssociatedMethodQueueKey; namespace { +class TurboModuleHolder { + private: + id module_; + bool isTryingToCreateModule_; + bool isDoneCreatingModule_; + std::mutex mutex_; + std::condition_variable cv_; + + public: + void setModule(id module) + { + module_ = module; + } + + id getModule() const + { + return module_; + } + + void startCreatingModule() + { + isTryingToCreateModule_ = true; + } + + void endCreatingModule() + { + isTryingToCreateModule_ = false; + isDoneCreatingModule_ = true; + } + + bool isDoneCreatingModule() const + { + return isDoneCreatingModule_; + } + + bool isCreatingModule() const + { + return isTryingToCreateModule_; + } + + std::mutex &mutex() + { + return mutex_; + } + + std::condition_variable &cv() + { + return cv_; + } +}; + class MethodQueueNativeCallInvoker : public facebook::react::CallInvoker { private: dispatch_queue_t methodQueue_; @@ -82,26 +134,25 @@ @implementation RCTTurboModuleManager { id _performanceLogger; __weak id _delegate; __weak RCTBridge *_bridge; + /** * TODO(T48018690): * All modules are currently long-lived. * We need to come up with a mechanism to allow modules to specify whether * they want to be long-lived or short-lived. + * + * All instances of TurboModuleHolder are owned by the _turboModuleHolders map. + * We create TurboModuleHolder via operator[] inside getOrCreateTurboModuleHolder(). + * Henceforth, we only refer to TurboModuleHolders via pointers to entries in the _turboModuleHolders map. */ - std::unordered_map> _rctTurboModuleCache; + std::unordered_map _turboModuleHolders; std::unordered_map> _turboModuleCache; - /** - * _rctTurboModuleCache can be accessed by multiple threads at once via - * the provideRCTTurboModule method. This can lead to races. Therefore, we - * need to protect access to this unordered_map. - * - * Note: - * There's no need to protect access to _turboModuleCache because that cache - * is only accessed within provideTurboModule, which is only invoked by the - * JS thread. - */ - std::mutex _rctTurboModuleCacheLock; + // Enforce synchronous access into _delegate + std::mutex _turboModuleManagerDelegateMutex; + + // Enforce synchronous access to _invalidating and _turboModuleHolders + std::mutex _turboModuleHoldersMutex; std::atomic _invalidating; } @@ -215,13 +266,19 @@ - (void)notifyAboutTurboModuleSetup:(const char *)name nativeInvoker = [_bridge decorateNativeCallInvoker:nativeInvoker]; } + facebook::react::ObjCTurboModule::InitParams params = { + .moduleName = moduleName, + .instance = module, + .jsInvoker = _jsInvoker, + .nativeInvoker = nativeInvoker, + .perfLogger = _performanceLogger, + }; + // If RCTTurboModule supports creating its own C++ TurboModule object, // allow it to do so. - if ([module respondsToSelector:@selector(getTurboModuleWithJsInvoker:nativeInvoker:perfLogger:)]) { + if ([module respondsToSelector:@selector(getTurboModule:)]) { [_performanceLogger getTurboModuleFromRCTTurboModuleStart:moduleName]; - auto turboModule = [module getTurboModuleWithJsInvoker:_jsInvoker - nativeInvoker:nativeInvoker - perfLogger:_performanceLogger]; + auto turboModule = [module getTurboModule:params]; [_performanceLogger getTurboModuleFromRCTTurboModuleEnd:moduleName]; assert(turboModule != nullptr); _turboModuleCache.insert({moduleName, turboModule}); @@ -246,11 +303,7 @@ - (void)notifyAboutTurboModuleSetup:(const char *)name * Step 2e: Return an exact sub-class of ObjC TurboModule */ [_performanceLogger getTurboModuleFromTMMDelegateStart:moduleName]; - auto turboModule = [_delegate getTurboModule:moduleName - instance:module - jsInvoker:_jsInvoker - nativeInvoker:nativeInvoker - perfLogger:_performanceLogger]; + auto turboModule = [_delegate getTurboModule:moduleName initParams:params]; [_performanceLogger getTurboModuleFromTMMDelegateEnd:moduleName]; if (turboModule != nullptr) { _turboModuleCache.insert({moduleName, turboModule}); @@ -268,22 +321,29 @@ - (void)notifyAboutTurboModuleSetup:(const char *)name */ - (id)provideRCTTurboModule:(const char *)moduleName { - Class moduleClass; - id module = nil; + TurboModuleHolder *moduleHolder = [self _getOrCreateTurboModuleHolder:moduleName]; + + if (!moduleHolder) { + return nil; + } + + bool shouldCreateModule = false; { - std::unique_lock lock(_rctTurboModuleCacheLock); + std::lock_guard guard(moduleHolder->mutex()); - auto rctTurboModuleCacheLookup = _rctTurboModuleCache.find(moduleName); - if (rctTurboModuleCacheLookup != _rctTurboModuleCache.end()) { - [_performanceLogger createRCTTurboModuleCacheHit:moduleName]; - return rctTurboModuleCacheLookup->second; + if (moduleHolder->isDoneCreatingModule()) { + return moduleHolder->getModule(); } - if (_invalidating) { - // Don't allow creating new instances while invalidating. - return nil; + if (!moduleHolder->isCreatingModule()) { + shouldCreateModule = true; + moduleHolder->startCreatingModule(); } + } + + if (shouldCreateModule) { + Class moduleClass; /** * Step 2a: Resolve platform-specific class. @@ -291,6 +351,8 @@ - (void)notifyAboutTurboModuleSetup:(const char *)name [_performanceLogger getRCTTurboModuleClassStart:moduleName]; if ([_delegate respondsToSelector:@selector(getModuleClassFromName:)]) { + std::lock_guard delegateGuard(_turboModuleManagerDelegateMutex); + moduleClass = [_delegate getModuleClassFromName:moduleName]; } @@ -300,195 +362,278 @@ - (void)notifyAboutTurboModuleSetup:(const char *)name [_performanceLogger getRCTTurboModuleClassEnd:moduleName]; - if (![moduleClass conformsToProtocol:@protocol(RCTTurboModule)]) { - return nil; - } + __block id module = nil; - /** - * Step 2b: Ask hosting application/delegate to instantiate this class - */ - [_performanceLogger getRCTTurboModuleInstanceStart:moduleName]; + if ([moduleClass conformsToProtocol:@protocol(RCTTurboModule)]) { + dispatch_block_t work = ^{ + module = [self _createAndSetUpRCTTurboModule:moduleClass moduleName:moduleName]; + }; - if ([_delegate respondsToSelector:@selector(getModuleInstanceFromClass:)]) { - module = [_delegate getModuleInstanceFromClass:moduleClass]; - } else { - module = [moduleClass new]; + if ([self _requiresMainQueueSetup:moduleClass]) { + RCTUnsafeExecuteOnMainQueueSync(work); + } else { + work(); + } } - [_performanceLogger getRCTTurboModuleInstanceEnd:moduleName]; + { + std::lock_guard guard(moduleHolder->mutex()); - if ([module respondsToSelector:@selector(setTurboModuleLookupDelegate:)]) { - [module setTurboModuleLookupDelegate:self]; + moduleHolder->setModule(module); + moduleHolder->endCreatingModule(); } - _rctTurboModuleCache.insert({moduleName, module}); + moduleHolder->cv().notify_all(); + + return module; } - [self setUpRCTTurboModule:module moduleName:moduleName]; - return module; + std::unique_lock guard(moduleHolder->mutex()); + + while (moduleHolder->isCreatingModule()) { + /** + * TODO(T65905574): + * If the thread responsible for creating and initializing the NativeModule stalls, we'll wait here indefinitely. + * This is the behaviour in legacy NativeModuels. Changing this now could lead to more crashes/problems in + * TurboModules than in NativeModules, which'll make it more difficult to test the TurboModules infra. Therefore, + * we should consider making it post TurboModule 100% rollout. + */ + moduleHolder->cv().wait(guard); + } + + return moduleHolder->getModule(); } -- (void)setUpRCTTurboModule:(id)module moduleName:(const char *)moduleName +/** + * Given a TurboModule class, and its name, create and initialize it synchronously. + * + * This method can be called synchronously from two different contexts: + * - The thread that calls provideRCTTurboModule: + * - The main thread (if the TurboModule requires main queue init), blocking the thread that calls + * provideRCTTurboModule:. + */ +- (id)_createAndSetUpRCTTurboModule:(Class)moduleClass moduleName:(const char *)moduleName { - __weak id weakModule = (id)module; - __weak RCTBridge *weakBridge = _bridge; - id performanceLogger = _performanceLogger; + id module = nil; - auto setUpTurboModule = ^{ - if (!weakModule) { - return; - } + /** + * Step 2b: Ask hosting application/delegate to instantiate this class + */ + [_performanceLogger getRCTTurboModuleInstanceStart:moduleName]; + + if ([_delegate respondsToSelector:@selector(getModuleInstanceFromClass:)]) { + std::lock_guard delegateGuard(_turboModuleManagerDelegateMutex); + + module = [_delegate getModuleInstanceFromClass:moduleClass]; + } else { + module = [moduleClass new]; + } + + [_performanceLogger getRCTTurboModuleInstanceEnd:moduleName]; - [performanceLogger setupRCTTurboModuleStart:moduleName]; + [_performanceLogger setupRCTTurboModuleStart:moduleName]; - id strongModule = weakModule; - RCTBridge *strongBridge = weakBridge; + if ([module respondsToSelector:@selector(setTurboModuleLookupDelegate:)]) { + [module setTurboModuleLookupDelegate:self]; + } + + /** + * It is reasonable for NativeModules to not want/need the bridge. + * In such cases, they won't have `@synthesize bridge = _bridge` in their + * implementation, and a `- (RCTBridge *) bridge { ... }` method won't be + * generated by the ObjC runtime. The property will also not be backed + * by an ivar, which makes writing to it unsafe. Therefore, we check if + * this method exists to know if we can safely set the bridge to the + * NativeModule. + */ + if ([module respondsToSelector:@selector(bridge)] && _bridge) { + [_performanceLogger attachRCTBridgeToRCTTurboModuleStart:moduleName]; /** - * It is reasonable for NativeModules to not want/need the bridge. - * In such cases, they won't have `@synthesize bridge = _bridge` in their - * implementation, and a `- (RCTBridge *) bridge { ... }` method won't be - * generated by the ObjC runtime. The property will also not be backed - * by an ivar, which makes writing to it unsafe. Therefore, we check if - * this method exists to know if we can safely set the bridge to the - * NativeModule. + * Just because a NativeModule has the `bridge` method, it doesn't mean + * that it has synthesized the bridge in its implementation. Therefore, + * we need to surround the code that sets the bridge to the NativeModule + * inside a try/catch. This catches the cases where the NativeModule + * author specifies a `bridge` method manually. */ - if ([strongModule respondsToSelector:@selector(bridge)] && strongBridge) { - [performanceLogger attachRCTBridgeToRCTTurboModuleStart:moduleName]; + @try { + /** + * RCTBridgeModule declares the bridge property as readonly. + * Therefore, when authors of NativeModules synthesize the bridge + * via @synthesize bridge = bridge;, the ObjC runtime generates + * only a - (RCTBridge *) bridge: { ... } method. No setter is + * generated, so we have have to rely on the KVC API of ObjC to set + * the bridge property of these NativeModules. + */ + [(id)module setValue:_bridge forKey:@"bridge"]; + } @catch (NSException *exception) { + RCTLogError( + @"%@ has no setter or ivar for its bridge, which is not " + "permitted. You must either @synthesize the bridge property, " + "or provide your own setter method.", + RCTBridgeModuleNameForClass([module class])); + } + + [_performanceLogger attachRCTBridgeToRCTTurboModuleEnd:moduleName]; + } + + /** + * Some modules need their own queues, but don't provide any, so we need to create it for them. + * These modules typically have the following: + * `@synthesize methodQueue = _methodQueue` + */ + + [_performanceLogger attachMethodQueueToRCTTurboModuleStart:moduleName]; + dispatch_queue_t methodQueue = nil; + BOOL moduleHasMethodQueueGetter = [module respondsToSelector:@selector(methodQueue)]; + + if (moduleHasMethodQueueGetter) { + methodQueue = [(id)module methodQueue]; + } + + /** + * Note: RCTJSThread, which is a valid method queue, is defined as (id)kCFNull. It should rightfully not enter the + * following if condition's block. + */ + if (!methodQueue) { + NSString *methodQueueName = [NSString stringWithFormat:@"com.facebook.react.%sQueue", moduleName]; + methodQueue = dispatch_queue_create(methodQueueName.UTF8String, DISPATCH_QUEUE_SERIAL); + + if (moduleHasMethodQueueGetter) { /** - * Just because a NativeModule has the `bridge` method, it doesn't mean - * that it has synthesized the bridge in its implementation. Therefore, - * we need to surround the code that sets the bridge to the NativeModule - * inside a try/catch. This catches the cases where the NativeModule - * author specifies a `bridge` method manually. + * If the module has a method queue getter, two cases are possible: + * - We @synthesized the method queue. In this case, the getter will initially return nil. + * - We had a custom methodQueue function on the NativeModule. If we got this far, then that getter returned + * nil. + * + * Therefore, we do a try/catch and use ObjC's KVC API and try to assign the method queue to the NativeModule. + * In case 1, we'll succeed. In case 2, an exception will be thrown, which we'll ignore. */ + @try { - /** - * RCTBridgeModule declares the bridge property as readonly. - * Therefore, when authors of NativeModules synthesize the bridge - * via @synthesize bridge = bridge;, the ObjC runtime generates - * only a - (RCTBridge *) bridge: { ... } method. No setter is - * generated, so we have have to rely on the KVC API of ObjC to set - * the bridge property of these NativeModules. - */ - [(id)strongModule setValue:strongBridge forKey:@"bridge"]; + [(id)module setValue:methodQueue forKey:@"methodQueue"]; } @catch (NSException *exception) { RCTLogError( - @"%@ has no setter or ivar for its bridge, which is not " + @"%@ has no setter or ivar for its methodQueue, which is not " "permitted. You must either @synthesize the bridge property, " "or provide your own setter method.", - RCTBridgeModuleNameForClass([strongModule class])); + RCTBridgeModuleNameForClass([module class])); } - - [performanceLogger attachRCTBridgeToRCTTurboModuleEnd:moduleName]; } + } - /** - * Some modules need their own queues, but don't provide any, so we need to create it for them. - * These modules typically have the following: - * `@synthesize methodQueue = _methodQueue` - */ + /** + * Attach method queue to id object. + * This is necessary because the id object can be eagerly created/initialized before the method + * queue is required. The method queue is required for an id for JS -> Native calls. So, we need it + * before we create the id's TurboModule jsi::HostObject in provideTurboModule:. + */ + objc_setAssociatedObject(module, &kAssociatedMethodQueueKey, methodQueue, OBJC_ASSOCIATION_RETAIN); - [performanceLogger attachMethodQueueToRCTTurboModuleStart:moduleName]; + [_performanceLogger attachMethodQueueToRCTTurboModuleEnd:moduleName]; - dispatch_queue_t methodQueue = nil; - BOOL moduleHasMethodQueueGetter = [strongModule respondsToSelector:@selector(methodQueue)]; + /** + * NativeModules that implement the RCTFrameUpdateObserver protocol + * require registration with RCTDisplayLink. + * + * TODO(T55504345): Investigate whether we can improve this after TM + * rollout. + */ + if (_bridge) { + [_performanceLogger registerRCTTurboModuleForFrameUpdatesStart:moduleName]; + RCTModuleData *data = [[RCTModuleData alloc] initWithModuleInstance:(id)module bridge:_bridge]; + [_bridge registerModuleForFrameUpdates:(id)module withModuleData:data]; + [_performanceLogger registerRCTTurboModuleForFrameUpdatesEnd:moduleName]; + } - if (moduleHasMethodQueueGetter) { - methodQueue = [strongModule methodQueue]; - } + /** + * Broadcast that this TurboModule was created. + * + * TODO(T41180176): Investigate whether we can delete this after TM + * rollout. + */ + [_performanceLogger dispatchDidInitializeModuleNotificationForRCTTurboModuleStart:moduleName]; + [[NSNotificationCenter defaultCenter] + postNotificationName:RCTDidInitializeModuleNotification + object:_bridge + userInfo:@{@"module" : module, @"bridge" : RCTNullIfNil([_bridge parentBridge])}]; + [_performanceLogger dispatchDidInitializeModuleNotificationForRCTTurboModuleEnd:moduleName]; - /** - * Note: RCTJSThread, which is a valid method queue, is defined as (id)kCFNull. It should rightfully not enter the - * following if condition's block. - */ - if (!methodQueue) { - NSString *methodQueueName = [NSString stringWithFormat:@"com.facebook.react.%sQueue", moduleName]; - methodQueue = dispatch_queue_create(methodQueueName.UTF8String, DISPATCH_QUEUE_SERIAL); + [_performanceLogger setupRCTTurboModuleEnd:moduleName]; - if (moduleHasMethodQueueGetter) { - /** - * If the module has a method queue getter, two cases are possible: - * - We @synthesized the method queue. In this case, the getter will initially return nil. - * - We had a custom methodQueue function on the NativeModule. If we got this far, then that getter returned - * nil. - * - * Therefore, we do a try/catch and use ObjC's KVC API and try to assign the method queue to the NativeModule. - * In case 1, we'll succeed. In case 2, an exception will be thrown, which we'll ignore. - */ + return module; +} - @try { - [(id)strongModule setValue:methodQueue forKey:@"methodQueue"]; - } @catch (NSException *exception) { - RCTLogError( - @"%@ has no setter or ivar for its methodQueue, which is not " - "permitted. You must either @synthesize the bridge property, " - "or provide your own setter method.", - RCTBridgeModuleNameForClass([strongModule class])); - } - } - } +/** + * Return a pointer to this TurboModule's TurboModuleHolder entry, creating one if it doesn't exist. + * Return nullptr if we've started teardown of TurboModuleManager. + */ +- (TurboModuleHolder *)_getOrCreateTurboModuleHolder:(const char *)moduleName +{ + std::lock_guard guard(_turboModuleHoldersMutex); + if (_invalidating) { + return nullptr; + } - /** - * Attach method queue to id object. - * This is necessary because the id object can be eagerly created/initialized before the method - * queue is required. The method queue is required for an id for JS -> Native calls. So, we need it - * before we create the id's TurboModule jsi::HostObject in provideTurboModule:. - */ - objc_setAssociatedObject(strongModule, &kAssociatedMethodQueueKey, methodQueue, OBJC_ASSOCIATION_RETAIN); + return &_turboModuleHolders[moduleName]; +} - [performanceLogger attachMethodQueueToRCTTurboModuleEnd:moduleName]; +/** + * Should this TurboModule be created and initialized on the main queue? + * + * For TurboModule ObjC classes that implement requiresMainQueueInit, return the result of this method. + * For TurboModule ObjC classes that don't. Return true if they have a custom init or constantsToExport method. + */ +- (BOOL)_requiresMainQueueSetup:(Class)moduleClass +{ + const BOOL implementsRequireMainQueueSetup = [moduleClass respondsToSelector:@selector(requiresMainQueueSetup)]; + if (implementsRequireMainQueueSetup) { + return [moduleClass requiresMainQueueSetup]; + } - /** - * NativeModules that implement the RCTFrameUpdateObserver protocol - * require registration with RCTDisplayLink. - * - * TODO(T55504345): Investigate whether we can improve this after TM - * rollout. - */ - if (strongBridge) { - [performanceLogger registerRCTTurboModuleForFrameUpdatesStart:moduleName]; - RCTModuleData *data = [[RCTModuleData alloc] initWithModuleInstance:strongModule bridge:strongBridge]; - [strongBridge registerModuleForFrameUpdates:strongModule withModuleData:data]; - [performanceLogger registerRCTTurboModuleForFrameUpdatesEnd:moduleName]; - } + /** + * WARNING! + * This following logic exists for backwards compatibility with the legacy NativeModule system. + * + * TODO(T65864302) Remove the following logic after TM 100% rollout + */ - /** - * Broadcast that this TurboModule was created. - * - * TODO(T41180176): Investigate whether we can delete this after TM - * rollout. - */ - [performanceLogger dispatchDidInitializeModuleNotificationForRCTTurboModuleStart:moduleName]; - [[NSNotificationCenter defaultCenter] - postNotificationName:RCTDidInitializeModuleNotification - object:strongBridge - userInfo:@{@"module" : module, @"bridge" : RCTNullIfNil([strongBridge parentBridge])}]; - [performanceLogger dispatchDidInitializeModuleNotificationForRCTTurboModuleEnd:moduleName]; - - [performanceLogger setupRCTTurboModuleEnd:moduleName]; - }; + /** + * If a module overrides `constantsToExport` and doesn't implement `requiresMainQueueSetup`, then we must assume + * that it must be called on the main thread, because it may need to access UIKit. + */ + BOOL hasConstantsToExport = [moduleClass instancesRespondToSelector:@selector(constantsToExport)]; + + static IMP objectInitMethod; + static dispatch_once_t onceToken; + dispatch_once(&onceToken, ^{ + objectInitMethod = [NSObject instanceMethodForSelector:@selector(init)]; + }); /** - * TODO(T64991809): Fix TurboModule race: - * - When NativeModules that don't require main queue setup are required from different threads, they'll - * concurrently run setUpRCTTurboModule: + * If a module overrides `init` then we must assume that it expects to be initialized on the main thread, because it + * may need to access UIKit. */ - if ([[module class] respondsToSelector:@selector(requiresMainQueueSetup)] && - [[module class] requiresMainQueueSetup]) { - /** - * If the main thread synchronously calls into JS that creates a TurboModule, - * we could deadlock. This behaviour is migrated over from the legacy NativeModule - * system. - * - * TODO(T63807674): Investigate the right migration plan off of this - */ - [_performanceLogger setupRCTTurboModuleDispatch:moduleName]; - RCTUnsafeExecuteOnMainQueueSync(setUpTurboModule); - } else { - setUpTurboModule(); + const BOOL hasCustomInit = [moduleClass instanceMethodForSelector:@selector(init)] != objectInitMethod; + + BOOL requiresMainQueueSetup = hasConstantsToExport || hasCustomInit; + if (requiresMainQueueSetup) { + const char *methodName = ""; + if (hasConstantsToExport) { + methodName = "constantsToExport"; + } else if (hasCustomInit) { + methodName = "init"; + } + RCTLogWarn( + @"Module %@ requires main queue setup since it overrides `%s` but doesn't implement " + "`requiresMainQueueSetup`. In a future release React Native will default to initializing all native modules " + "on a background thread unless explicitly opted-out of.", + moduleClass, + methodName); } + + return requiresMainQueueSetup; } - (void)installJSBindingWithRuntime:(jsi::Runtime *)runtime @@ -558,8 +703,8 @@ - (id)moduleForName:(const char *)moduleName warnOnLookupFailure:(BOOL)warnOnLoo - (BOOL)moduleIsInitialized:(const char *)moduleName { - std::unique_lock lock(_rctTurboModuleCacheLock); - return _rctTurboModuleCache.find(std::string(moduleName)) != _rctTurboModuleCache.end(); + std::unique_lock guard(_turboModuleHoldersMutex); + return _turboModuleHolders.find(moduleName) != _turboModuleHolders.end(); } #pragma mark Invalidation logic @@ -571,6 +716,9 @@ - (void)bridgeWillInvalidateModules:(NSNotification *)notification return; } + std::lock_guard guard(_turboModuleHoldersMutex); + + // This should halt all insertions into _turboModuleHolders _invalidating = true; } @@ -581,16 +729,19 @@ - (void)bridgeDidInvalidateModules:(NSNotification *)notification return; } - std::unordered_map> rctCacheCopy; - { - std::unique_lock lock(_rctTurboModuleCacheLock); - rctCacheCopy.insert(_rctTurboModuleCache.begin(), _rctTurboModuleCache.end()); - } - // Backward-compatibility: RCTInvalidating handling. dispatch_group_t moduleInvalidationGroup = dispatch_group_create(); - for (const auto &p : rctCacheCopy) { - id module = p.second; + + for (const auto &pair : _turboModuleHolders) { + std::string moduleName = pair.first; + + /** + * We could start tearing down ReactNative before a TurboModule is fully initialized. In this case, we should wait + * for init to finish before we call invalidate on the module. Therefore, we call provideRCTTurboModule (because + * it's guaranteed to return a fully initialized NativeModule). + */ + id module = [self provideRCTTurboModule:moduleName.c_str()]; + if ([module respondsToSelector:@selector(invalidate)]) { if ([module respondsToSelector:@selector(methodQueue)]) { dispatch_queue_t methodQueue = [module performSelector:@selector(methodQueue)]; @@ -613,35 +764,26 @@ - (void)bridgeDidInvalidateModules:(NSNotification *)notification RCTLogError(@"TurboModuleManager: Timed out waiting for modules to be invalidated"); } - { - std::unique_lock lock(_rctTurboModuleCacheLock); - _rctTurboModuleCache.clear(); - } - + _turboModuleHolders.clear(); _turboModuleCache.clear(); } - (void)invalidate { - std::unordered_map> rctCacheCopy; { - std::unique_lock lock(_rctTurboModuleCacheLock); - rctCacheCopy.insert(_rctTurboModuleCache.begin(), _rctTurboModuleCache.end()); + std::lock_guard guard(_turboModuleHoldersMutex); + _invalidating = true; } // Backward-compatibility: RCTInvalidating handling, but not adhering to desired methodQueue. - for (const auto &p : rctCacheCopy) { - id module = p.second; + for (const auto &p : _turboModuleHolders) { + id module = p.second.getModule(); if ([module respondsToSelector:@selector(invalidate)]) { [((id)module) invalidate]; } } - { - std::unique_lock lock(_rctTurboModuleCacheLock); - _rctTurboModuleCache.clear(); - } - + _turboModuleHolders.clear(); _turboModuleCache.clear(); } diff --git a/ReactCommon/turbomodule/samples/platform/ios/RCTNativeSampleTurboModuleSpec.h b/ReactCommon/turbomodule/samples/platform/ios/RCTNativeSampleTurboModuleSpec.h index 174783fdda2e2a..4738cff8d10ad5 100644 --- a/ReactCommon/turbomodule/samples/platform/ios/RCTNativeSampleTurboModuleSpec.h +++ b/ReactCommon/turbomodule/samples/platform/ios/RCTNativeSampleTurboModuleSpec.h @@ -26,6 +26,7 @@ - (NSString *)getString:(NSString *)arg; - (NSArray> *)getArray:(NSArray *)arg; - (NSDictionary *)getObject:(NSDictionary *)arg; +- (NSNumber *)getRootTag:(double)arg; - (NSDictionary *)getValue:(double)x y:(NSString *)y z:(NSDictionary *)z; - (void)getValueWithCallback:(RCTResponseSenderBlock)callback; - (void)getValueWithPromise:(BOOL)error resolve:(RCTPromiseResolveBlock)resolve reject:(RCTPromiseRejectBlock)reject; @@ -42,11 +43,7 @@ namespace react { */ class JSI_EXPORT NativeSampleTurboModuleSpecJSI : public ObjCTurboModule { public: - NativeSampleTurboModuleSpecJSI( - id instance, - std::shared_ptr jsInvoker, - std::shared_ptr nativeInvoker, - id perfLogger); + NativeSampleTurboModuleSpecJSI(const ObjCTurboModule::InitParams ¶ms); }; } // namespace react diff --git a/ReactCommon/turbomodule/samples/platform/ios/RCTNativeSampleTurboModuleSpec.mm b/ReactCommon/turbomodule/samples/platform/ios/RCTNativeSampleTurboModuleSpec.mm index 0a576cfeb1a6c0..70f69b107babb3 100644 --- a/ReactCommon/turbomodule/samples/platform/ios/RCTNativeSampleTurboModuleSpec.mm +++ b/ReactCommon/turbomodule/samples/platform/ios/RCTNativeSampleTurboModuleSpec.mm @@ -70,6 +70,16 @@ .invokeObjCMethod(rt, ObjectKind, "getObject", @selector(getObject:), args, count); } +static facebook::jsi::Value __hostFunction_NativeSampleTurboModuleSpecJSI_getRootTag( + facebook::jsi::Runtime &rt, + TurboModule &turboModule, + const facebook::jsi::Value *args, + size_t count) +{ + return static_cast(turboModule) + .invokeObjCMethod(rt, NumberKind, "getRootTag", @selector(getRootTag:), args, count); +} + static facebook::jsi::Value __hostFunction_NativeSampleTurboModuleSpecJSI_getValue( facebook::jsi::Runtime &rt, TurboModule &turboModule, @@ -111,12 +121,8 @@ .invokeObjCMethod(rt, ObjectKind, "getConstants", @selector(getConstants), args, count); } -NativeSampleTurboModuleSpecJSI::NativeSampleTurboModuleSpecJSI( - id instance, - std::shared_ptr jsInvoker, - std::shared_ptr nativeInvoker, - id perfLogger) - : ObjCTurboModule("SampleTurboModule", instance, jsInvoker, nativeInvoker, perfLogger) +NativeSampleTurboModuleSpecJSI::NativeSampleTurboModuleSpecJSI(const ObjCTurboModule::InitParams ¶ms) + : ObjCTurboModule(params) { methodMap_["voidFunc"] = MethodMetadata{0, __hostFunction_NativeSampleTurboModuleSpecJSI_voidFunc}; methodMap_["getBool"] = MethodMetadata{1, __hostFunction_NativeSampleTurboModuleSpecJSI_getBool}; @@ -124,6 +130,7 @@ methodMap_["getString"] = MethodMetadata{1, __hostFunction_NativeSampleTurboModuleSpecJSI_getString}; methodMap_["getArray"] = MethodMetadata{1, __hostFunction_NativeSampleTurboModuleSpecJSI_getArray}; methodMap_["getObject"] = MethodMetadata{1, __hostFunction_NativeSampleTurboModuleSpecJSI_getObject}; + methodMap_["getRootTag"] = MethodMetadata{1, __hostFunction_NativeSampleTurboModuleSpecJSI_getRootTag}; methodMap_["getValue"] = MethodMetadata{3, __hostFunction_NativeSampleTurboModuleSpecJSI_getValue}; methodMap_["getValueWithCallback"] = MethodMetadata{1, __hostFunction_NativeSampleTurboModuleSpecJSI_getValueWithCallback}; diff --git a/ReactCommon/turbomodule/samples/platform/ios/RCTSampleTurboModule.mm b/ReactCommon/turbomodule/samples/platform/ios/RCTSampleTurboModule.mm index 13aacd17c4f5c7..5ecd7aefdad85e 100644 --- a/ReactCommon/turbomodule/samples/platform/ios/RCTSampleTurboModule.mm +++ b/ReactCommon/turbomodule/samples/platform/ios/RCTSampleTurboModule.mm @@ -30,12 +30,10 @@ - (dispatch_queue_t)methodQueue return dispatch_get_main_queue(); } -- (std::shared_ptr) - getTurboModuleWithJsInvoker:(std::shared_ptr)jsInvoker - nativeInvoker:(std::shared_ptr)nativeInvoker - perfLogger:(id)perfLogger +- (std::shared_ptr)getTurboModule: + (const facebook::react::ObjCTurboModule::InitParams &)params { - return std::make_shared(self, jsInvoker, nativeInvoker, perfLogger); + return std::make_shared(params); } // Backward compatible invalidation @@ -98,6 +96,11 @@ - (NSDictionary *)constantsToExport return arg; } +RCT_EXPORT_SYNCHRONOUS_TYPED_METHOD(NSNumber *, getRootTag : (double)arg) +{ + return @(arg); +} + RCT_EXPORT_SYNCHRONOUS_TYPED_METHOD(NSDictionary *, getValue : (double)x y : (NSString *)y z : (NSDictionary *)z) { return @{ diff --git a/ReactCommon/turbomodule/samples/platform/ios/SampleTurboCxxModuleLegacyImpl.cpp b/ReactCommon/turbomodule/samples/platform/ios/SampleTurboCxxModuleLegacyImpl.cpp index 54c975938b57a1..5eea42c3d8058a 100644 --- a/ReactCommon/turbomodule/samples/platform/ios/SampleTurboCxxModuleLegacyImpl.cpp +++ b/ReactCommon/turbomodule/samples/platform/ios/SampleTurboCxxModuleLegacyImpl.cpp @@ -69,6 +69,12 @@ std::vector SampleTurboCxxModuleLegacyImpl::getMethods() { return getObject(xplat::jsArgAsObject(args, 0)); }, CxxModule::SyncTag), + CxxModule::Method( + "getRootTag", + [this](folly::dynamic args) { + return getNumber(xplat::jsArgAsDouble(args, 0)); + }, + CxxModule::SyncTag), CxxModule::Method( "getValue", [this](folly::dynamic args) { @@ -120,6 +126,10 @@ folly::dynamic SampleTurboCxxModuleLegacyImpl::getObject( return arg; } +double SampleTurboCxxModuleLegacyImpl::getRootTag(double arg) { + return arg; +} + folly::dynamic SampleTurboCxxModuleLegacyImpl::getValue( double x, const std::string &y, diff --git a/ReactCommon/turbomodule/samples/platform/ios/SampleTurboCxxModuleLegacyImpl.h b/ReactCommon/turbomodule/samples/platform/ios/SampleTurboCxxModuleLegacyImpl.h index 8248acad1cb354..72d0e3b4adbf49 100644 --- a/ReactCommon/turbomodule/samples/platform/ios/SampleTurboCxxModuleLegacyImpl.h +++ b/ReactCommon/turbomodule/samples/platform/ios/SampleTurboCxxModuleLegacyImpl.h @@ -31,6 +31,7 @@ class SampleTurboCxxModuleLegacyImpl std::string getString(const std::string &arg); folly::dynamic getArray(const folly::dynamic &arg); folly::dynamic getObject(const folly::dynamic &arg); + double getRootTag(double arg); folly::dynamic getValue(double x, const std::string &y, const folly::dynamic &z); void getValueWithCallback( diff --git a/ReactCommon/yoga/yoga/YGLayout.h b/ReactCommon/yoga/yoga/YGLayout.h index 30b8dd765c2c3a..b7604d8e2dbe45 100644 --- a/ReactCommon/yoga/yoga/YGLayout.h +++ b/ReactCommon/yoga/yoga/YGLayout.h @@ -36,7 +36,7 @@ struct YGLayout { // Instead of recomputing the entire layout every single time, we cache some // information to break early when nothing changed uint32_t generationCount = 0; - YGDirection lastOwnerDirection = (YGDirection) -1; + YGDirection lastOwnerDirection = YGDirectionInherit; uint32_t nextCachedMeasurementsIndex = 0; std::array diff --git a/ReactCommon/yoga/yoga/YGNode.cpp b/ReactCommon/yoga/yoga/YGNode.cpp index c15af8de76e7fc..23d5c40bc93806 100644 --- a/ReactCommon/yoga/yoga/YGNode.cpp +++ b/ReactCommon/yoga/yoga/YGNode.cpp @@ -29,7 +29,7 @@ YGNode::YGNode(YGNode&& node) { config_ = node.config_; resolvedDimensions_ = node.resolvedDimensions_; for (auto c : children_) { - c->setOwner(c); + c->setOwner(this); } } diff --git a/ReactCommon/yoga/yoga/YGNode.h b/ReactCommon/yoga/yoga/YGNode.h index 9aef1ec6833000..63d98fe3a1a816 100644 --- a/ReactCommon/yoga/yoga/YGNode.h +++ b/ReactCommon/yoga/yoga/YGNode.h @@ -6,6 +6,9 @@ */ #pragma once + +#ifdef __cplusplus + #include #include #include "BitUtils.h" @@ -330,3 +333,5 @@ struct YOGA_EXPORT YGNode { bool isLayoutTreeEqualToNode(const YGNode& node) const; void reset(); }; + +#endif diff --git a/ReactCommon/yoga/yoga/YGStyle.h b/ReactCommon/yoga/yoga/YGStyle.h index 9bfbc4422c512d..aab7599ccd964b 100644 --- a/ReactCommon/yoga/yoga/YGStyle.h +++ b/ReactCommon/yoga/yoga/YGStyle.h @@ -6,6 +6,9 @@ */ #pragma once + +#ifdef __cplusplus + #include #include #include @@ -229,3 +232,5 @@ YOGA_EXPORT bool operator==(const YGStyle& lhs, const YGStyle& rhs); YOGA_EXPORT inline bool operator!=(const YGStyle& lhs, const YGStyle& rhs) { return !(lhs == rhs); } + +#endif diff --git a/ReactCommon/yoga/yoga/Yoga-internal.h b/ReactCommon/yoga/yoga/Yoga-internal.h index 0b3368a0d72e99..1a22f24c9c147b 100644 --- a/ReactCommon/yoga/yoga/Yoga-internal.h +++ b/ReactCommon/yoga/yoga/Yoga-internal.h @@ -54,10 +54,10 @@ struct YGCachedMeasurement { float computedHeight; YGCachedMeasurement() - : availableWidth(0), - availableHeight(0), - widthMeasureMode((YGMeasureMode) -1), - heightMeasureMode((YGMeasureMode) -1), + : availableWidth(-1), + availableHeight(-1), + widthMeasureMode(YGMeasureModeUndefined), + heightMeasureMode(YGMeasureModeUndefined), computedWidth(-1), computedHeight(-1) {} diff --git a/ReactCommon/yoga/yoga/Yoga.cpp b/ReactCommon/yoga/yoga/Yoga.cpp index d916a45f64814b..bb7da7bfd91d88 100644 --- a/ReactCommon/yoga/yoga/Yoga.cpp +++ b/ReactCommon/yoga/yoga/Yoga.cpp @@ -1663,8 +1663,8 @@ static void YGNodeAbsoluteLayoutChild( static void YGNodeWithMeasureFuncSetMeasuredDimensions( const YGNodeRef node, - const float availableWidth, - const float availableHeight, + float availableWidth, + float availableHeight, const YGMeasureMode widthMeasureMode, const YGMeasureMode heightMeasureMode, const float ownerWidth, @@ -1677,6 +1677,13 @@ static void YGNodeWithMeasureFuncSetMeasuredDimensions( node->hasMeasureFunc(), "Expected node to have custom measure function"); + if (widthMeasureMode == YGMeasureModeUndefined) { + availableWidth = YGUndefined; + } + if (heightMeasureMode == YGMeasureModeUndefined) { + availableHeight = YGUndefined; + } + const float paddingAndBorderAxisRow = YGNodePaddingAndBorderForAxis(node, YGFlexDirectionRow, ownerWidth); const float paddingAndBorderAxisColumn = @@ -3814,8 +3821,10 @@ bool YGLayoutNodeInternal( if (needToVisitNode) { // Invalidate the cached results. layout->nextCachedMeasurementsIndex = 0; - layout->cachedLayout.widthMeasureMode = (YGMeasureMode) -1; - layout->cachedLayout.heightMeasureMode = (YGMeasureMode) -1; + layout->cachedLayout.availableWidth = -1; + layout->cachedLayout.availableHeight = -1; + layout->cachedLayout.widthMeasureMode = YGMeasureModeUndefined; + layout->cachedLayout.heightMeasureMode = YGMeasureModeUndefined; layout->cachedLayout.computedWidth = -1; layout->cachedLayout.computedHeight = -1; } diff --git a/flow-typed/npm/metro_vx.x.x.js b/flow-typed/npm/metro_vx.x.x.js deleted file mode 100644 index ae90fe1e0a3c72..00000000000000 --- a/flow-typed/npm/metro_vx.x.x.js +++ /dev/null @@ -1,1063 +0,0 @@ -/** - * Copyright (c) Facebook, Inc. and its affiliates. - * - * This source code is licensed under the MIT license found in the - * LICENSE file in the root directory of this source tree. - * - * @flow strict-local - * @format - */ - -// flow-typed signature: d001c1f5a12f9970243121d73d04bb1e -// flow-typed version: <>/metro_v0.47.0/flow_v0.82.0 - -/** - * This is an autogenerated libdef stub for: - * - * 'metro' - * - * Fill this stub out by replacing all the `any` types. - * - * Once filled out, we encourage you to share your work with the - * community by sending a pull request to: - * https://github.com/flowtype/flow-typed - */ - -declare module 'metro' { - declare module.exports: any; -} - -/** - * We include stubs for each file inside this npm package in case you need to - * require those files directly. Feel free to delete any files that aren't - * needed. - */ -declare module 'metro/src/Assets' { - declare module.exports: any; -} - -declare module 'metro/src/assetTransformer' { - declare module.exports: any; -} - -declare module 'metro/src/Bundler' { - declare module.exports: any; -} - -declare module 'metro/src/Bundler/util' { - declare module.exports: any; -} - -declare module 'metro/src/cli-utils' { - declare module.exports: any; -} - -declare module 'metro/src/cli' { - declare module.exports: any; -} - -declare module 'metro/src/commands/build' { - declare module.exports: any; -} - -declare module 'metro/src/commands/serve' { - declare module.exports: any; -} - -declare module 'metro/src/defaultTransformer' { - declare module.exports: any; -} - -declare module 'metro/src/DeltaBundler' { - declare module.exports: any; -} - -declare module 'metro/src/DeltaBundler/DeltaCalculator' { - declare module.exports: any; -} - -declare module 'metro/src/DeltaBundler/ResourceNotFoundError' { - declare module.exports: any; -} - -declare module 'metro/src/DeltaBundler/Serializers/deltaJSBundle' { - declare module.exports: any; -} - -declare module 'metro/src/DeltaBundler/Serializers/getAllFiles' { - declare module.exports: any; -} - -declare module 'metro/src/DeltaBundler/Serializers/getAssets' { - declare module.exports: any; -} - -declare module 'metro/src/DeltaBundler/Serializers/getRamBundleInfo' { - declare module.exports: any; -} - -declare module 'metro/src/DeltaBundler/Serializers/helpers/getTransitiveDependencies' { - declare module.exports: any; -} - -declare module 'metro/src/DeltaBundler/Serializers/helpers/js' { - declare module.exports: any; -} - -declare module 'metro/src/DeltaBundler/Serializers/hmrJSBundle' { - declare module.exports: any; -} - -declare module 'metro/src/DeltaBundler/Serializers/plainJSBundle' { - declare module.exports: any; -} - -declare module 'metro/src/DeltaBundler/Serializers/sourceMapObject' { - declare module.exports: any; -} - -declare module 'metro/src/DeltaBundler/Serializers/sourceMapString' { - declare module.exports: any; -} - -declare module 'metro/src/DeltaBundler/Transformer' { - declare module.exports: any; -} - -declare module 'metro/src/DeltaBundler/Transformer/getTransformCacheKey' { - declare module.exports: any; -} - -declare module 'metro/src/DeltaBundler/traverseDependencies' { - declare module.exports: any; -} - -declare module 'metro/src/DeltaBundler/types.flow' { - declare module.exports: any; -} - -declare module 'metro/src/DeltaBundler/Worker' { - declare module.exports: any; -} - -declare module 'metro/src/DeltaBundler/WorkerFarm' { - declare module.exports: any; -} - -declare module 'metro/src/HmrServer' { - declare module.exports: any; -} - -declare module 'metro/src/index' { - declare module.exports: any; -} - -declare module 'metro/src/integration_tests/basic_bundle/AssetRegistry' { - declare module.exports: any; -} - -declare module 'metro/src/integration_tests/basic_bundle/Bar' { - declare module.exports: any; -} - -declare module 'metro/src/integration_tests/basic_bundle/ErrorBundle' { - declare module.exports: any; -} - -declare module 'metro/src/integration_tests/basic_bundle/Foo' { - declare module.exports: any; -} - -declare module 'metro/src/integration_tests/basic_bundle/import-export/export-1' { - declare module.exports: any; -} - -declare module 'metro/src/integration_tests/basic_bundle/import-export/export-2' { - declare module.exports: any; -} - -declare module 'metro/src/integration_tests/basic_bundle/import-export/export-3' { - declare module.exports: any; -} - -declare module 'metro/src/integration_tests/basic_bundle/import-export/export-4' { - declare module.exports: any; -} - -declare module 'metro/src/integration_tests/basic_bundle/import-export/export-null' { - declare module.exports: any; -} - -declare module 'metro/src/integration_tests/basic_bundle/import-export/export-primitive-default' { - declare module.exports: any; -} - -declare module 'metro/src/integration_tests/basic_bundle/import-export/index' { - declare module.exports: any; -} - -declare module 'metro/src/integration_tests/basic_bundle/polyfill' { - declare module.exports: any; -} - -declare module 'metro/src/integration_tests/basic_bundle/TestBundle' { - declare module.exports: any; -} - -declare module 'metro/src/integration_tests/basic_bundle/TestPolyfill' { - declare module.exports: any; -} - -declare module 'metro/src/integration_tests/execBundle' { - declare module.exports: any; -} - -declare module 'metro/src/integration_tests/metro.config' { - declare module.exports: any; -} - -declare module 'metro/src/JSTransformer/worker' { - declare module.exports: any; -} - -declare module 'metro/src/JSTransformer/worker/constant-folding-plugin' { - declare module.exports: any; -} - -declare module 'metro/src/JSTransformer/worker/import-export-plugin' { - declare module.exports: any; -} - -declare module 'metro/src/JSTransformer/worker/inline-platform' { - declare module.exports: any; -} - -declare module 'metro/src/JSTransformer/worker/inline-plugin' { - declare module.exports: any; -} - -declare module 'metro/src/JSTransformer/worker/normalizePseudoglobals' { - declare module.exports: any; -} - -declare module 'metro/src/JSTransformer/worker/test-helpers' { - declare module.exports: any; -} - -declare module 'metro/src/legacy' { - declare module.exports: any; -} - -declare module 'metro/src/lib/addParamsToDefineCall' { - declare module.exports: any; -} - -declare module 'metro/src/lib/attachWebsocketServer' { - declare module.exports: any; -} - -declare module 'metro/src/lib/BatchProcessor' { - declare module.exports: any; -} - -declare module 'metro/src/lib/bundle-modules/asyncRequire' { - declare module.exports: any; -} - -declare module 'metro/src/lib/bundle-modules/HMRClient' { - declare module.exports: any; -} - -declare module 'metro/src/lib/bundle-modules/MetroClient' { - declare module.exports: any; -} - -declare module 'metro/src/lib/createModuleIdFactory' { - declare module.exports: any; -} - -declare module 'metro/src/lib/formatBundlingError' { - declare module.exports: any; -} - -declare module 'metro/src/lib/getAbsolutePath' { - declare module.exports: any; -} - -declare module 'metro/src/lib/getAppendScripts' { - declare module.exports: any; -} - -declare module 'metro/src/lib/getEntryAbsolutePath' { - declare module.exports: any; -} - -declare module 'metro/src/lib/getKeyFromFiles' { - declare module.exports: any; -} - -declare module 'metro/src/lib/getMaxWorkers' { - declare module.exports: any; -} - -declare module 'metro/src/lib/getMinifier' { - declare module.exports: any; -} - -declare module 'metro/src/lib/getPreludeCode' { - declare module.exports: any; -} - -declare module 'metro/src/lib/getPrependedScripts' { - declare module.exports: any; -} - -declare module 'metro/src/lib/JsonReporter' { - declare module.exports: any; -} - -declare module 'metro/src/lib/parseCustomTransformOptions' { - declare module.exports: any; -} - -declare module 'metro/src/lib/polyfills/require' { - declare module.exports: any; -} - -declare module 'metro/src/lib/RamBundleParser' { - declare module.exports: any; -} - -declare module 'metro/src/lib/relativizeSourceMap' { - declare module.exports: any; -} - -declare module 'metro/src/lib/reporting' { - declare module.exports: any; -} - -declare module 'metro/src/lib/TerminalReporter' { - declare module.exports: any; -} - -declare module 'metro/src/lib/transformHelpers' { - declare module.exports: any; -} - -declare module 'metro/src/ModuleGraph/build' { - declare module.exports: any; -} - -declare module 'metro/src/ModuleGraph/module' { - declare module.exports: any; -} - -declare module 'metro/src/ModuleGraph/node-haste/HasteFS' { - declare module.exports: any; -} - -declare module 'metro/src/ModuleGraph/node-haste/Module' { - declare module.exports: any; -} - -declare module 'metro/src/ModuleGraph/node-haste/ModuleCache' { - declare module.exports: any; -} - -declare module 'metro/src/ModuleGraph/node-haste/node-haste.flow' { - declare module.exports: any; -} - -declare module 'metro/src/ModuleGraph/node-haste/node-haste' { - declare module.exports: any; -} - -declare module 'metro/src/ModuleGraph/node-haste/Package' { - declare module.exports: any; -} - -declare module 'metro/src/ModuleGraph/output/indexed-ram-bundle' { - declare module.exports: any; -} - -declare module 'metro/src/ModuleGraph/output/multiple-files-ram-bundle' { - declare module.exports: any; -} - -declare module 'metro/src/ModuleGraph/output/plain-bundle' { - declare module.exports: any; -} - -declare module 'metro/src/ModuleGraph/output/util' { - declare module.exports: any; -} - -declare module 'metro/src/ModuleGraph/silent-console' { - declare module.exports: any; -} - -declare module 'metro/src/ModuleGraph/test-helpers' { - declare module.exports: any; -} - -declare module 'metro/src/ModuleGraph/types.flow' { - declare module.exports: any; -} - -declare module 'metro/src/ModuleGraph/worker/collectDependencies' { - declare module.exports: any; -} - -declare module 'metro/src/ModuleGraph/worker/generate' { - declare module.exports: any; -} - -declare module 'metro/src/ModuleGraph/worker/generateImportNames' { - declare module.exports: any; -} - -declare module 'metro/src/ModuleGraph/worker/JsFileWrapping' { - declare module.exports: any; -} - -declare module 'metro/src/ModuleGraph/worker/optimizeDependencies' { - declare module.exports: any; -} - -declare module 'metro/src/ModuleGraph/worker/Platforms' { - declare module.exports: any; -} - -declare module 'metro/src/node-haste/AssetResolutionCache' { - declare module.exports: any; -} - -declare module 'metro/src/node-haste/DependencyGraph' { - declare module.exports: any; -} - -declare module 'metro/src/node-haste/DependencyGraph/assets/empty-module' { - declare module.exports: any; -} - -declare module 'metro/src/node-haste/DependencyGraph/DependencyGraphHelpers' { - declare module.exports: any; -} - -declare module 'metro/src/node-haste/DependencyGraph/ModuleResolution' { - declare module.exports: any; -} - -declare module 'metro/src/node-haste/DependencyGraph/ResolutionRequest' { - declare module.exports: any; -} - -declare module 'metro/src/node-haste/FilesByDirNameIndex' { - declare module.exports: any; -} - -declare module 'metro/src/node-haste/lib/AssetPaths' { - declare module.exports: any; -} - -declare module 'metro/src/node-haste/lib/MapWithDefaults' { - declare module.exports: any; -} - -declare module 'metro/src/node-haste/lib/parsePlatformFilePath' { - declare module.exports: any; -} - -declare module 'metro/src/node-haste/Module' { - declare module.exports: any; -} - -declare module 'metro/src/node-haste/ModuleCache' { - declare module.exports: any; -} - -declare module 'metro/src/node-haste/Package' { - declare module.exports: any; -} - -declare module 'metro/src/node-haste/types' { - declare module.exports: any; -} - -declare module 'metro/src/reactNativeTransformer' { - declare module.exports: any; -} - -declare module 'metro/src/rn-cli.config' { - declare module.exports: any; -} - -declare module 'metro/src/Server' { - declare module.exports: any; -} - -declare module 'metro/src/Server/MultipartResponse' { - declare module.exports: any; -} - -declare module 'metro/src/Server/symbolicate/symbolicate' { - declare module.exports: any; -} - -declare module 'metro/src/Server/symbolicate/util' { - declare module.exports: any; -} - -declare module 'metro/src/Server/symbolicate/worker' { - declare module.exports: any; -} - -declare module 'metro/src/shared/output/bundle' { - declare module.exports: any; -} - -declare module 'metro/src/shared/output/meta' { - declare module.exports: any; -} - -declare module 'metro/src/shared/output/RamBundle' { - declare module.exports: any; -} - -declare module 'metro/src/shared/output/RamBundle/as-assets' { - declare module.exports: any; -} - -declare module 'metro/src/shared/output/RamBundle/as-indexed-file' { - declare module.exports: any; -} - -declare module 'metro/src/shared/output/RamBundle/buildSourcemapWithMetadata' { - declare module.exports: any; -} - -declare module 'metro/src/shared/output/RamBundle/magic-number' { - declare module.exports: any; -} - -declare module 'metro/src/shared/output/RamBundle/util' { - declare module.exports: any; -} - -declare module 'metro/src/shared/output/RamBundle/write-sourcemap' { - declare module.exports: any; -} - -declare module 'metro/src/shared/output/unbundle' { - declare module.exports: any; -} - -declare module 'metro/src/shared/output/writeFile' { - declare module.exports: any; -} - -declare module 'metro/src/shared/types.flow' { - declare module.exports: any; -} - -// Filename aliases -declare module 'metro/src/Assets.js' { - declare module.exports: $Exports<'metro/src/Assets'>; -} -declare module 'metro/src/assetTransformer.js' { - declare module.exports: $Exports<'metro/src/assetTransformer'>; -} -declare module 'metro/src/Bundler.js' { - declare module.exports: $Exports<'metro/src/Bundler'>; -} -declare module 'metro/src/Bundler/util.js' { - declare module.exports: $Exports<'metro/src/Bundler/util'>; -} -declare module 'metro/src/cli-utils.js' { - declare module.exports: $Exports<'metro/src/cli-utils'>; -} -declare module 'metro/src/cli.js' { - declare module.exports: $Exports<'metro/src/cli'>; -} -declare module 'metro/src/commands/build.js' { - declare module.exports: $Exports<'metro/src/commands/build'>; -} -declare module 'metro/src/commands/serve.js' { - declare module.exports: $Exports<'metro/src/commands/serve'>; -} -declare module 'metro/src/defaultTransformer.js' { - declare module.exports: $Exports<'metro/src/defaultTransformer'>; -} -declare module 'metro/src/DeltaBundler.js' { - declare module.exports: $Exports<'metro/src/DeltaBundler'>; -} -declare module 'metro/src/DeltaBundler/DeltaCalculator.js' { - declare module.exports: $Exports<'metro/src/DeltaBundler/DeltaCalculator'>; -} -declare module 'metro/src/DeltaBundler/ResourceNotFoundError.js' { - declare module.exports: $Exports< - 'metro/src/DeltaBundler/ResourceNotFoundError', - >; -} -declare module 'metro/src/DeltaBundler/Serializers/deltaJSBundle.js' { - declare module.exports: $Exports< - 'metro/src/DeltaBundler/Serializers/deltaJSBundle', - >; -} -declare module 'metro/src/DeltaBundler/Serializers/getAllFiles.js' { - declare module.exports: $Exports< - 'metro/src/DeltaBundler/Serializers/getAllFiles', - >; -} -declare module 'metro/src/DeltaBundler/Serializers/getAssets.js' { - declare module.exports: $Exports< - 'metro/src/DeltaBundler/Serializers/getAssets', - >; -} -declare module 'metro/src/DeltaBundler/Serializers/getRamBundleInfo.js' { - declare module.exports: $Exports< - 'metro/src/DeltaBundler/Serializers/getRamBundleInfo', - >; -} -declare module 'metro/src/DeltaBundler/Serializers/helpers/getTransitiveDependencies.js' { - declare module.exports: $Exports< - 'metro/src/DeltaBundler/Serializers/helpers/getTransitiveDependencies', - >; -} -declare module 'metro/src/DeltaBundler/Serializers/helpers/js.js' { - declare module.exports: $Exports< - 'metro/src/DeltaBundler/Serializers/helpers/js', - >; -} -declare module 'metro/src/DeltaBundler/Serializers/hmrJSBundle.js' { - declare module.exports: $Exports< - 'metro/src/DeltaBundler/Serializers/hmrJSBundle', - >; -} -declare module 'metro/src/DeltaBundler/Serializers/plainJSBundle.js' { - declare module.exports: $Exports< - 'metro/src/DeltaBundler/Serializers/plainJSBundle', - >; -} -declare module 'metro/src/DeltaBundler/Serializers/sourceMapObject.js' { - declare module.exports: $Exports< - 'metro/src/DeltaBundler/Serializers/sourceMapObject', - >; -} -declare module 'metro/src/DeltaBundler/Serializers/sourceMapString.js' { - declare module.exports: $Exports< - 'metro/src/DeltaBundler/Serializers/sourceMapString', - >; -} -declare module 'metro/src/DeltaBundler/Transformer.js' { - declare module.exports: $Exports<'metro/src/DeltaBundler/Transformer'>; -} -declare module 'metro/src/DeltaBundler/Transformer/getTransformCacheKey.js' { - declare module.exports: $Exports< - 'metro/src/DeltaBundler/Transformer/getTransformCacheKey', - >; -} -declare module 'metro/src/DeltaBundler/traverseDependencies.js' { - declare module.exports: $Exports< - 'metro/src/DeltaBundler/traverseDependencies', - >; -} -declare module 'metro/src/DeltaBundler/types.flow.js' { - declare module.exports: $Exports<'metro/src/DeltaBundler/types.flow'>; -} -declare module 'metro/src/DeltaBundler/Worker.js' { - declare module.exports: $Exports<'metro/src/DeltaBundler/Worker'>; -} -declare module 'metro/src/DeltaBundler/WorkerFarm.js' { - declare module.exports: $Exports<'metro/src/DeltaBundler/WorkerFarm'>; -} -declare module 'metro/src/HmrServer.js' { - declare module.exports: $Exports<'metro/src/HmrServer'>; -} -declare module 'metro/src/index.js' { - declare module.exports: $Exports<'metro/src/index'>; -} -declare module 'metro/src/integration_tests/basic_bundle/AssetRegistry.js' { - declare module.exports: $Exports< - 'metro/src/integration_tests/basic_bundle/AssetRegistry', - >; -} -declare module 'metro/src/integration_tests/basic_bundle/Bar.js' { - declare module.exports: $Exports< - 'metro/src/integration_tests/basic_bundle/Bar', - >; -} -declare module 'metro/src/integration_tests/basic_bundle/ErrorBundle.js' { - declare module.exports: $Exports< - 'metro/src/integration_tests/basic_bundle/ErrorBundle', - >; -} -declare module 'metro/src/integration_tests/basic_bundle/Foo.js' { - declare module.exports: $Exports< - 'metro/src/integration_tests/basic_bundle/Foo', - >; -} -declare module 'metro/src/integration_tests/basic_bundle/import-export/export-1.js' { - declare module.exports: $Exports< - 'metro/src/integration_tests/basic_bundle/import-export/export-1', - >; -} -declare module 'metro/src/integration_tests/basic_bundle/import-export/export-2.js' { - declare module.exports: $Exports< - 'metro/src/integration_tests/basic_bundle/import-export/export-2', - >; -} -declare module 'metro/src/integration_tests/basic_bundle/import-export/export-3.js' { - declare module.exports: $Exports< - 'metro/src/integration_tests/basic_bundle/import-export/export-3', - >; -} -declare module 'metro/src/integration_tests/basic_bundle/import-export/export-4.js' { - declare module.exports: $Exports< - 'metro/src/integration_tests/basic_bundle/import-export/export-4', - >; -} -declare module 'metro/src/integration_tests/basic_bundle/import-export/export-null.js' { - declare module.exports: $Exports< - 'metro/src/integration_tests/basic_bundle/import-export/export-null', - >; -} -declare module 'metro/src/integration_tests/basic_bundle/import-export/export-primitive-default.js' { - declare module.exports: $Exports< - 'metro/src/integration_tests/basic_bundle/import-export/export-primitive-default', - >; -} -declare module 'metro/src/integration_tests/basic_bundle/import-export/index.js' { - declare module.exports: $Exports< - 'metro/src/integration_tests/basic_bundle/import-export/index', - >; -} -declare module 'metro/src/integration_tests/basic_bundle/polyfill.js' { - declare module.exports: $Exports< - 'metro/src/integration_tests/basic_bundle/polyfill', - >; -} -declare module 'metro/src/integration_tests/basic_bundle/TestBundle.js' { - declare module.exports: $Exports< - 'metro/src/integration_tests/basic_bundle/TestBundle', - >; -} -declare module 'metro/src/integration_tests/basic_bundle/TestPolyfill.js' { - declare module.exports: $Exports< - 'metro/src/integration_tests/basic_bundle/TestPolyfill', - >; -} -declare module 'metro/src/integration_tests/execBundle.js' { - declare module.exports: $Exports<'metro/src/integration_tests/execBundle'>; -} -declare module 'metro/src/integration_tests/metro.config.js' { - declare module.exports: $Exports<'metro/src/integration_tests/metro.config'>; -} -declare module 'metro/src/JSTransformer/worker.js' { - declare module.exports: $Exports<'metro/src/JSTransformer/worker'>; -} -declare module 'metro/src/JSTransformer/worker/constant-folding-plugin.js' { - declare module.exports: $Exports< - 'metro/src/JSTransformer/worker/constant-folding-plugin', - >; -} -declare module 'metro/src/JSTransformer/worker/import-export-plugin.js' { - declare module.exports: $Exports< - 'metro/src/JSTransformer/worker/import-export-plugin', - >; -} -declare module 'metro/src/JSTransformer/worker/inline-platform.js' { - declare module.exports: $Exports< - 'metro/src/JSTransformer/worker/inline-platform', - >; -} -declare module 'metro/src/JSTransformer/worker/inline-plugin.js' { - declare module.exports: $Exports< - 'metro/src/JSTransformer/worker/inline-plugin', - >; -} -declare module 'metro/src/JSTransformer/worker/normalizePseudoglobals.js' { - declare module.exports: $Exports< - 'metro/src/JSTransformer/worker/normalizePseudoglobals', - >; -} -declare module 'metro/src/JSTransformer/worker/test-helpers.js' { - declare module.exports: $Exports< - 'metro/src/JSTransformer/worker/test-helpers', - >; -} -declare module 'metro/src/legacy.js' { - declare module.exports: $Exports<'metro/src/legacy'>; -} -declare module 'metro/src/lib/addParamsToDefineCall.js' { - declare module.exports: $Exports<'metro/src/lib/addParamsToDefineCall'>; -} -declare module 'metro/src/lib/attachWebsocketServer.js' { - declare module.exports: $Exports<'metro/src/lib/attachWebsocketServer'>; -} -declare module 'metro/src/lib/BatchProcessor.js' { - declare module.exports: $Exports<'metro/src/lib/BatchProcessor'>; -} -declare module 'metro/src/lib/bundle-modules/asyncRequire.js' { - declare module.exports: $Exports<'metro/src/lib/bundle-modules/asyncRequire'>; -} -declare module 'metro/src/lib/bundle-modules/HMRClient.js' { - declare module.exports: $Exports<'metro/src/lib/bundle-modules/HMRClient'>; -} -declare module 'metro/src/lib/bundle-modules/MetroClient.js' { - declare module.exports: $Exports<'metro/src/lib/bundle-modules/MetroClient'>; -} -declare module 'metro/src/lib/createModuleIdFactory.js' { - declare module.exports: $Exports<'metro/src/lib/createModuleIdFactory'>; -} -declare module 'metro/src/lib/formatBundlingError.js' { - declare module.exports: $Exports<'metro/src/lib/formatBundlingError'>; -} -declare module 'metro/src/lib/getAbsolutePath.js' { - declare module.exports: $Exports<'metro/src/lib/getAbsolutePath'>; -} -declare module 'metro/src/lib/getAppendScripts.js' { - declare module.exports: $Exports<'metro/src/lib/getAppendScripts'>; -} -declare module 'metro/src/lib/getEntryAbsolutePath.js' { - declare module.exports: $Exports<'metro/src/lib/getEntryAbsolutePath'>; -} -declare module 'metro/src/lib/getKeyFromFiles.js' { - declare module.exports: $Exports<'metro/src/lib/getKeyFromFiles'>; -} -declare module 'metro/src/lib/getMaxWorkers.js' { - declare module.exports: $Exports<'metro/src/lib/getMaxWorkers'>; -} -declare module 'metro/src/lib/getMinifier.js' { - declare module.exports: $Exports<'metro/src/lib/getMinifier'>; -} -declare module 'metro/src/lib/getPreludeCode.js' { - declare module.exports: $Exports<'metro/src/lib/getPreludeCode'>; -} -declare module 'metro/src/lib/getPrependedScripts.js' { - declare module.exports: $Exports<'metro/src/lib/getPrependedScripts'>; -} -declare module 'metro/src/lib/JsonReporter.js' { - declare module.exports: $Exports<'metro/src/lib/JsonReporter'>; -} -declare module 'metro/src/lib/parseCustomTransformOptions.js' { - declare module.exports: $Exports<'metro/src/lib/parseCustomTransformOptions'>; -} -declare module 'metro/src/lib/polyfills/require.js' { - declare module.exports: $Exports<'metro/src/lib/polyfills/require'>; -} -declare module 'metro/src/lib/RamBundleParser.js' { - declare module.exports: $Exports<'metro/src/lib/RamBundleParser'>; -} -declare module 'metro/src/lib/relativizeSourceMap.js' { - declare module.exports: $Exports<'metro/src/lib/relativizeSourceMap'>; -} -declare module 'metro/src/lib/reporting.js' { - declare module.exports: $Exports<'metro/src/lib/reporting'>; -} -declare module 'metro/src/lib/TerminalReporter.js' { - declare module.exports: $Exports<'metro/src/lib/TerminalReporter'>; -} -declare module 'metro/src/lib/transformHelpers.js' { - declare module.exports: $Exports<'metro/src/lib/transformHelpers'>; -} -declare module 'metro/src/ModuleGraph/build.js' { - declare module.exports: $Exports<'metro/src/ModuleGraph/build'>; -} -declare module 'metro/src/ModuleGraph/module.js' { - declare module.exports: $Exports<'metro/src/ModuleGraph/module'>; -} -declare module 'metro/src/ModuleGraph/node-haste/HasteFS.js' { - declare module.exports: $Exports<'metro/src/ModuleGraph/node-haste/HasteFS'>; -} -declare module 'metro/src/ModuleGraph/node-haste/Module.js' { - declare module.exports: $Exports<'metro/src/ModuleGraph/node-haste/Module'>; -} -declare module 'metro/src/ModuleGraph/node-haste/ModuleCache.js' { - declare module.exports: $Exports< - 'metro/src/ModuleGraph/node-haste/ModuleCache', - >; -} -declare module 'metro/src/ModuleGraph/node-haste/node-haste.flow.js' { - declare module.exports: $Exports< - 'metro/src/ModuleGraph/node-haste/node-haste.flow', - >; -} -declare module 'metro/src/ModuleGraph/node-haste/node-haste.js' { - declare module.exports: $Exports< - 'metro/src/ModuleGraph/node-haste/node-haste', - >; -} -declare module 'metro/src/ModuleGraph/node-haste/Package.js' { - declare module.exports: $Exports<'metro/src/ModuleGraph/node-haste/Package'>; -} -declare module 'metro/src/ModuleGraph/output/indexed-ram-bundle.js' { - declare module.exports: $Exports< - 'metro/src/ModuleGraph/output/indexed-ram-bundle', - >; -} -declare module 'metro/src/ModuleGraph/output/multiple-files-ram-bundle.js' { - declare module.exports: $Exports< - 'metro/src/ModuleGraph/output/multiple-files-ram-bundle', - >; -} -declare module 'metro/src/ModuleGraph/output/plain-bundle.js' { - declare module.exports: $Exports<'metro/src/ModuleGraph/output/plain-bundle'>; -} -declare module 'metro/src/ModuleGraph/output/util.js' { - declare module.exports: $Exports<'metro/src/ModuleGraph/output/util'>; -} -declare module 'metro/src/ModuleGraph/silent-console.js' { - declare module.exports: $Exports<'metro/src/ModuleGraph/silent-console'>; -} -declare module 'metro/src/ModuleGraph/test-helpers.js' { - declare module.exports: $Exports<'metro/src/ModuleGraph/test-helpers'>; -} -declare module 'metro/src/ModuleGraph/types.flow.js' { - declare module.exports: $Exports<'metro/src/ModuleGraph/types.flow'>; -} -declare module 'metro/src/ModuleGraph/worker/collectDependencies.js' { - declare module.exports: $Exports< - 'metro/src/ModuleGraph/worker/collectDependencies', - >; -} -declare module 'metro/src/ModuleGraph/worker/generate.js' { - declare module.exports: $Exports<'metro/src/ModuleGraph/worker/generate'>; -} -declare module 'metro/src/ModuleGraph/worker/generateImportNames.js' { - declare module.exports: $Exports< - 'metro/src/ModuleGraph/worker/generateImportNames', - >; -} -declare module 'metro/src/ModuleGraph/worker/JsFileWrapping.js' { - declare module.exports: $Exports< - 'metro/src/ModuleGraph/worker/JsFileWrapping', - >; -} -declare module 'metro/src/ModuleGraph/worker/optimizeDependencies.js' { - declare module.exports: $Exports< - 'metro/src/ModuleGraph/worker/optimizeDependencies', - >; -} -declare module 'metro/src/ModuleGraph/worker/Platforms.js' { - declare module.exports: $Exports<'metro/src/ModuleGraph/worker/Platforms'>; -} -declare module 'metro/src/node-haste/AssetResolutionCache.js' { - declare module.exports: $Exports<'metro/src/node-haste/AssetResolutionCache'>; -} -declare module 'metro/src/node-haste/DependencyGraph.js' { - declare module.exports: $Exports<'metro/src/node-haste/DependencyGraph'>; -} -declare module 'metro/src/node-haste/DependencyGraph/assets/empty-module.js' { - declare module.exports: $Exports< - 'metro/src/node-haste/DependencyGraph/assets/empty-module', - >; -} -declare module 'metro/src/node-haste/DependencyGraph/DependencyGraphHelpers.js' { - declare module.exports: $Exports< - 'metro/src/node-haste/DependencyGraph/DependencyGraphHelpers', - >; -} -declare module 'metro/src/node-haste/DependencyGraph/ModuleResolution.js' { - declare module.exports: $Exports< - 'metro/src/node-haste/DependencyGraph/ModuleResolution', - >; -} -declare module 'metro/src/node-haste/DependencyGraph/ResolutionRequest.js' { - declare module.exports: $Exports< - 'metro/src/node-haste/DependencyGraph/ResolutionRequest', - >; -} -declare module 'metro/src/node-haste/FilesByDirNameIndex.js' { - declare module.exports: $Exports<'metro/src/node-haste/FilesByDirNameIndex'>; -} -declare module 'metro/src/node-haste/lib/AssetPaths.js' { - declare module.exports: $Exports<'metro/src/node-haste/lib/AssetPaths'>; -} -declare module 'metro/src/node-haste/lib/MapWithDefaults.js' { - declare module.exports: $Exports<'metro/src/node-haste/lib/MapWithDefaults'>; -} -declare module 'metro/src/node-haste/lib/parsePlatformFilePath.js' { - declare module.exports: $Exports< - 'metro/src/node-haste/lib/parsePlatformFilePath', - >; -} -declare module 'metro/src/node-haste/Module.js' { - declare module.exports: $Exports<'metro/src/node-haste/Module'>; -} -declare module 'metro/src/node-haste/ModuleCache.js' { - declare module.exports: $Exports<'metro/src/node-haste/ModuleCache'>; -} -declare module 'metro/src/node-haste/Package.js' { - declare module.exports: $Exports<'metro/src/node-haste/Package'>; -} -declare module 'metro/src/node-haste/types.js' { - declare module.exports: $Exports<'metro/src/node-haste/types'>; -} -declare module 'metro/src/reactNativeTransformer.js' { - declare module.exports: $Exports<'metro/src/reactNativeTransformer'>; -} -declare module 'metro/src/rn-cli.config.js' { - declare module.exports: $Exports<'metro/src/rn-cli.config'>; -} -declare module 'metro/src/Server.js' { - declare module.exports: $Exports<'metro/src/Server'>; -} -declare module 'metro/src/Server/MultipartResponse.js' { - declare module.exports: $Exports<'metro/src/Server/MultipartResponse'>; -} -declare module 'metro/src/Server/symbolicate/symbolicate.js' { - declare module.exports: $Exports<'metro/src/Server/symbolicate/symbolicate'>; -} -declare module 'metro/src/Server/symbolicate/util.js' { - declare module.exports: $Exports<'metro/src/Server/symbolicate/util'>; -} -declare module 'metro/src/Server/symbolicate/worker.js' { - declare module.exports: $Exports<'metro/src/Server/symbolicate/worker'>; -} -declare module 'metro/src/shared/output/bundle.js' { - declare module.exports: $Exports<'metro/src/shared/output/bundle'>; -} -declare module 'metro/src/shared/output/meta.js' { - declare module.exports: $Exports<'metro/src/shared/output/meta'>; -} -declare module 'metro/src/shared/output/RamBundle.js' { - declare module.exports: $Exports<'metro/src/shared/output/RamBundle'>; -} -declare module 'metro/src/shared/output/RamBundle/as-assets.js' { - declare module.exports: $Exports< - 'metro/src/shared/output/RamBundle/as-assets', - >; -} -declare module 'metro/src/shared/output/RamBundle/as-indexed-file.js' { - declare module.exports: $Exports< - 'metro/src/shared/output/RamBundle/as-indexed-file', - >; -} -declare module 'metro/src/shared/output/RamBundle/buildSourcemapWithMetadata.js' { - declare module.exports: $Exports< - 'metro/src/shared/output/RamBundle/buildSourcemapWithMetadata', - >; -} -declare module 'metro/src/shared/output/RamBundle/magic-number.js' { - declare module.exports: $Exports< - 'metro/src/shared/output/RamBundle/magic-number', - >; -} -declare module 'metro/src/shared/output/RamBundle/util.js' { - declare module.exports: $Exports<'metro/src/shared/output/RamBundle/util'>; -} -declare module 'metro/src/shared/output/RamBundle/write-sourcemap.js' { - declare module.exports: $Exports< - 'metro/src/shared/output/RamBundle/write-sourcemap', - >; -} -declare module 'metro/src/shared/output/unbundle.js' { - declare module.exports: $Exports<'metro/src/shared/output/unbundle'>; -} -declare module 'metro/src/shared/output/writeFile.js' { - declare module.exports: $Exports<'metro/src/shared/output/writeFile'>; -} -declare module 'metro/src/shared/types.flow.js' { - declare module.exports: $Exports<'metro/src/shared/types.flow'>; -} diff --git a/gradle/wrapper/gradle-wrapper.jar b/gradle/wrapper/gradle-wrapper.jar index f3d88b1c2faf2f..490fda8577df6c 100644 Binary files a/gradle/wrapper/gradle-wrapper.jar and b/gradle/wrapper/gradle-wrapper.jar differ diff --git a/gradle/wrapper/gradle-wrapper.properties b/gradle/wrapper/gradle-wrapper.properties index 84226702066b81..6623300bebd011 100644 --- a/gradle/wrapper/gradle-wrapper.properties +++ b/gradle/wrapper/gradle-wrapper.properties @@ -1,5 +1,5 @@ distributionBase=GRADLE_USER_HOME distributionPath=wrapper/dists -distributionUrl=https\://services.gradle.org/distributions/gradle-6.2-all.zip +distributionUrl=https\://services.gradle.org/distributions/gradle-6.3-all.zip zipStoreBase=GRADLE_USER_HOME zipStorePath=wrapper/dists diff --git a/gradlew.bat b/gradlew.bat index 62bd9b9ccefea2..9109989e3cbf66 100644 --- a/gradlew.bat +++ b/gradlew.bat @@ -1,103 +1,103 @@ -@rem -@rem Copyright 2015 the original author or authors. -@rem -@rem Licensed under the Apache License, Version 2.0 (the "License"); -@rem you may not use this file except in compliance with the License. -@rem You may obtain a copy of the License at -@rem -@rem https://www.apache.org/licenses/LICENSE-2.0 -@rem -@rem Unless required by applicable law or agreed to in writing, software -@rem distributed under the License is distributed on an "AS IS" BASIS, -@rem WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. -@rem See the License for the specific language governing permissions and -@rem limitations under the License. -@rem - -@if "%DEBUG%" == "" @echo off -@rem ########################################################################## -@rem -@rem Gradle startup script for Windows -@rem -@rem ########################################################################## - -@rem Set local scope for the variables with windows NT shell -if "%OS%"=="Windows_NT" setlocal - -set DIRNAME=%~dp0 -if "%DIRNAME%" == "" set DIRNAME=. -set APP_BASE_NAME=%~n0 -set APP_HOME=%DIRNAME% - -@rem Resolve any "." and ".." in APP_HOME to make it shorter. -for %%i in ("%APP_HOME%") do set APP_HOME=%%~fi - -@rem Add default JVM options here. You can also use JAVA_OPTS and GRADLE_OPTS to pass JVM options to this script. -set DEFAULT_JVM_OPTS="-Xmx64m" "-Xms64m" - -@rem Find java.exe -if defined JAVA_HOME goto findJavaFromJavaHome - -set JAVA_EXE=java.exe -%JAVA_EXE% -version >NUL 2>&1 -if "%ERRORLEVEL%" == "0" goto init - -echo. -echo ERROR: JAVA_HOME is not set and no 'java' command could be found in your PATH. -echo. -echo Please set the JAVA_HOME variable in your environment to match the -echo location of your Java installation. - -goto fail - -:findJavaFromJavaHome -set JAVA_HOME=%JAVA_HOME:"=% -set JAVA_EXE=%JAVA_HOME%/bin/java.exe - -if exist "%JAVA_EXE%" goto init - -echo. -echo ERROR: JAVA_HOME is set to an invalid directory: %JAVA_HOME% -echo. -echo Please set the JAVA_HOME variable in your environment to match the -echo location of your Java installation. - -goto fail - -:init -@rem Get command-line arguments, handling Windows variants - -if not "%OS%" == "Windows_NT" goto win9xME_args - -:win9xME_args -@rem Slurp the command line arguments. -set CMD_LINE_ARGS= -set _SKIP=2 - -:win9xME_args_slurp -if "x%~1" == "x" goto execute - -set CMD_LINE_ARGS=%* - -:execute -@rem Setup the command line - -set CLASSPATH=%APP_HOME%\gradle\wrapper\gradle-wrapper.jar - -@rem Execute Gradle -"%JAVA_EXE%" %DEFAULT_JVM_OPTS% %JAVA_OPTS% %GRADLE_OPTS% "-Dorg.gradle.appname=%APP_BASE_NAME%" -classpath "%CLASSPATH%" org.gradle.wrapper.GradleWrapperMain %CMD_LINE_ARGS% - -:end -@rem End local scope for the variables with windows NT shell -if "%ERRORLEVEL%"=="0" goto mainEnd - -:fail -rem Set variable GRADLE_EXIT_CONSOLE if you need the _script_ return code instead of -rem the _cmd.exe /c_ return code! -if not "" == "%GRADLE_EXIT_CONSOLE%" exit 1 -exit /b 1 - -:mainEnd -if "%OS%"=="Windows_NT" endlocal - -:omega +@rem +@rem Copyright 2015 the original author or authors. +@rem +@rem Licensed under the Apache License, Version 2.0 (the "License"); +@rem you may not use this file except in compliance with the License. +@rem You may obtain a copy of the License at +@rem +@rem https://www.apache.org/licenses/LICENSE-2.0 +@rem +@rem Unless required by applicable law or agreed to in writing, software +@rem distributed under the License is distributed on an "AS IS" BASIS, +@rem WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +@rem See the License for the specific language governing permissions and +@rem limitations under the License. +@rem + +@if "%DEBUG%" == "" @echo off +@rem ########################################################################## +@rem +@rem Gradle startup script for Windows +@rem +@rem ########################################################################## + +@rem Set local scope for the variables with windows NT shell +if "%OS%"=="Windows_NT" setlocal + +set DIRNAME=%~dp0 +if "%DIRNAME%" == "" set DIRNAME=. +set APP_BASE_NAME=%~n0 +set APP_HOME=%DIRNAME% + +@rem Resolve any "." and ".." in APP_HOME to make it shorter. +for %%i in ("%APP_HOME%") do set APP_HOME=%%~fi + +@rem Add default JVM options here. You can also use JAVA_OPTS and GRADLE_OPTS to pass JVM options to this script. +set DEFAULT_JVM_OPTS="-Xmx64m" "-Xms64m" + +@rem Find java.exe +if defined JAVA_HOME goto findJavaFromJavaHome + +set JAVA_EXE=java.exe +%JAVA_EXE% -version >NUL 2>&1 +if "%ERRORLEVEL%" == "0" goto init + +echo. +echo ERROR: JAVA_HOME is not set and no 'java' command could be found in your PATH. +echo. +echo Please set the JAVA_HOME variable in your environment to match the +echo location of your Java installation. + +goto fail + +:findJavaFromJavaHome +set JAVA_HOME=%JAVA_HOME:"=% +set JAVA_EXE=%JAVA_HOME%/bin/java.exe + +if exist "%JAVA_EXE%" goto init + +echo. +echo ERROR: JAVA_HOME is set to an invalid directory: %JAVA_HOME% +echo. +echo Please set the JAVA_HOME variable in your environment to match the +echo location of your Java installation. + +goto fail + +:init +@rem Get command-line arguments, handling Windows variants + +if not "%OS%" == "Windows_NT" goto win9xME_args + +:win9xME_args +@rem Slurp the command line arguments. +set CMD_LINE_ARGS= +set _SKIP=2 + +:win9xME_args_slurp +if "x%~1" == "x" goto execute + +set CMD_LINE_ARGS=%* + +:execute +@rem Setup the command line + +set CLASSPATH=%APP_HOME%\gradle\wrapper\gradle-wrapper.jar + +@rem Execute Gradle +"%JAVA_EXE%" %DEFAULT_JVM_OPTS% %JAVA_OPTS% %GRADLE_OPTS% "-Dorg.gradle.appname=%APP_BASE_NAME%" -classpath "%CLASSPATH%" org.gradle.wrapper.GradleWrapperMain %CMD_LINE_ARGS% + +:end +@rem End local scope for the variables with windows NT shell +if "%ERRORLEVEL%"=="0" goto mainEnd + +:fail +rem Set variable GRADLE_EXIT_CONSOLE if you need the _script_ return code instead of +rem the _cmd.exe /c_ return code! +if not "" == "%GRADLE_EXIT_CONSOLE%" exit 1 +exit /b 1 + +:mainEnd +if "%OS%"=="Windows_NT" endlocal + +:omega diff --git a/index.js b/index.js index 3e8a16d9678bb5..a7af1e12f3d020 100644 --- a/index.js +++ b/index.js @@ -99,8 +99,7 @@ import typeof {PlatformColor} from './Libraries/StyleSheet/PlatformColorValueTyp import typeof {DynamicColorIOS} from './Libraries/StyleSheet/PlatformColorValueTypesIOS'; import typeof {DynamicColorMacOS} from './Libraries/StyleSheet/PlatformColorValueTypesMacOS'; // TODO(macOS GH#774) import typeof {ColorWithSystemEffectMacOS} from './Libraries/StyleSheet/PlatformColorValueTypesMacOS'; // TODO(macOS GH#750) -import typeof {ColorAndroid} from './Libraries/StyleSheet/PlatformColorValueTypesAndroid'; -import typeof RootTagContext from './Libraries/ReactNative/RootTagContext'; +import typeof {RootTagContext} from './Libraries/ReactNative/RootTag'; import typeof DeprecatedColorPropType from './Libraries/DeprecatedPropTypes/DeprecatedColorPropType'; import typeof DeprecatedEdgeInsetsPropType from './Libraries/DeprecatedPropTypes/DeprecatedEdgeInsetsPropType'; import typeof DeprecatedPointPropType from './Libraries/DeprecatedPropTypes/DeprecatedPointPropType'; @@ -497,17 +496,13 @@ module.exports = { return require('./Libraries/StyleSheet/PlatformColorValueTypesMacOS') .ColorWithSystemEffectMacOS; }, // ]TODO(macOS GH#750) - get ColorAndroid(): ColorAndroid { - return require('./Libraries/StyleSheet/PlatformColorValueTypesAndroid') - .ColorAndroid; - }, get requireNativeComponent(): ( uiViewClassName: string, ) => HostComponent { return require('./Libraries/ReactNative/requireNativeComponent'); }, get unstable_RootTagContext(): RootTagContext { - return require('./Libraries/ReactNative/RootTagContext'); + return require('./Libraries/ReactNative/RootTag').RootTagContext; }, get unstable_enableLogBox(): () => void { return () => diff --git a/package.json b/package.json index e38bf3f3b49fc9..dcaa7c5a44094b 100644 --- a/package.json +++ b/package.json @@ -107,7 +107,7 @@ "metro-react-native-babel-transformer": "0.59.0", "metro-source-map": "0.59.0", "nullthrows": "^1.1.1", - "pretty-format": "^24.9.0", + "pretty-format": "^25.4.0", "promise": "^8.0.3", "prop-types": "^15.7.2", "react-devtools-core": "^4.6.0", @@ -143,11 +143,11 @@ "eslint-plugin-react-hooks": "^3.0.0", "eslint-plugin-react-native": "3.8.1", "eslint-plugin-relay": "1.7.0", - "flow-bin": "^0.122.0", + "flow-bin": "^0.123.0", "flow-remove-types": "1.2.3", "hermes-engine-darwin": "~0.5.0", - "jest": "^24.9.0", - "jest-junit": "^6.3.0", + "jest": "^25.4.0", + "jest-junit": "^10.0.0", "jscodeshift": "^0.7.0", "mkdirp": "^0.5.1", "prettier": "1.19.1", diff --git a/packages/babel-plugin-inline-view-configs/__tests__/__snapshots__/index-test.js.snap b/packages/babel-plugin-inline-view-configs/__tests__/__snapshots__/index-test.js.snap index af56f2b191b12d..85c8e4580aa169 100644 --- a/packages/babel-plugin-inline-view-configs/__tests__/__snapshots__/index-test.js.snap +++ b/packages/babel-plugin-inline-view-configs/__tests__/__snapshots__/index-test.js.snap @@ -141,7 +141,7 @@ exports[`Babel plugin inline view configs fails on inline config for CommandsExp 17 | } 18 | > 19 | export const Foo = codegenNativeCommands(); - | ^ + | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ 20 | 21 | export default (codegenNativeComponent('Module'): NativeType); 22 | " @@ -152,7 +152,7 @@ exports[`Babel plugin inline view configs fails on inline config for CommandsExp 19 | const Commands = 4; 20 | > 21 | export {Commands}; - | ^ + | ^^^^^^^^^^^^^^^^^^ 22 | 23 | export default (codegenNativeComponent('Module'): NativeType); 24 | " @@ -163,7 +163,7 @@ exports[`Babel plugin inline view configs fails on inline config for OtherComman 17 | } 18 | > 19 | export const Commands = 4; - | ^ + | ^^^^^^^^^^^^^^^^^^^^^^^^^^ 20 | 21 | export default (codegenNativeComponent('Module'): NativeType); 22 | " diff --git a/packages/eslint-config-react-native-community/package.json b/packages/eslint-config-react-native-community/package.json index b3886b45a4a786..1e599a5952d39c 100644 --- a/packages/eslint-config-react-native-community/package.json +++ b/packages/eslint-config-react-native-community/package.json @@ -13,7 +13,7 @@ "@react-native-community/eslint-plugin": "^1.1.0", "@typescript-eslint/eslint-plugin": "^2.25.0", "@typescript-eslint/parser": "^2.25.0", - "babel-eslint": "10.1.0", + "babel-eslint": "^10.1.0", "eslint-config-prettier": "^6.10.1", "eslint-plugin-eslint-comments": "^3.1.2", "eslint-plugin-flowtype": "2.50.3", diff --git a/packages/eslint-config-react-native-community/yarn.lock b/packages/eslint-config-react-native-community/yarn.lock index f20d678ab34220..2bc0acb2eee40f 100644 --- a/packages/eslint-config-react-native-community/yarn.lock +++ b/packages/eslint-config-react-native-community/yarn.lock @@ -272,7 +272,7 @@ astral-regex@^1.0.0: resolved "https://registry.yarnpkg.com/astral-regex/-/astral-regex-1.0.0.tgz#6c8c3fb827dd43ee3918f27b82782ab7658a6fd9" integrity sha512-+Ryf6g3BKoRc7jfp7ad8tM4TtMiaWvbF/1/sQcZPkkS7ag3D5nMBCe2UfOTONtAkaG0tO0ij3C5Lwmf1EiyjHg== -babel-eslint@10.1.0: +babel-eslint@^10.1.0: version "10.1.0" resolved "https://registry.yarnpkg.com/babel-eslint/-/babel-eslint-10.1.0.tgz#6968e568a910b78fb3779cdd8b6ac2f479943232" integrity sha512-ifWaTHQ0ce+448CYop8AdrQiBsGrnC+bMgfyKFdi6EsPLTAWG+QfyDeM6OH+FmWnKvEq5NnBMLvlBUPKQZoDSg== diff --git a/packages/eslint-plugin-react-native-community/README.md b/packages/eslint-plugin-react-native-community/README.md index 702c35cd0c19d0..33aac086a30782 100644 --- a/packages/eslint-plugin-react-native-community/README.md +++ b/packages/eslint-plugin-react-native-community/README.md @@ -31,3 +31,7 @@ Enforces that error classes ( = classes with PascalCase names ending with `Error ### `no-haste-imports` Disallows Haste module names in `import` statements and `require()` calls. + +### `platform-colors` + +Enforces that calls to `PlatformColor` and `DynamicColorIOS` are statically analyzable to enable performance optimizations. diff --git a/packages/eslint-plugin-react-native-community/__tests__/platform-colors-test.js b/packages/eslint-plugin-react-native-community/__tests__/platform-colors-test.js index 9d1168272ecdc6..75343c25864993 100644 --- a/packages/eslint-plugin-react-native-community/__tests__/platform-colors-test.js +++ b/packages/eslint-plugin-react-native-community/__tests__/platform-colors-test.js @@ -22,7 +22,6 @@ eslintTester.run('../platform-colors', rule, { "const color = PlatformColor('controlAccentColor', 'controlColor');", "const color = DynamicColorIOS({light: 'black', dark: 'white'});", "const color = DynamicColorIOS({light: PlatformColor('black'), dark: PlatformColor('white')});", - "const color = ColorAndroid('?attr/colorAccent')", ], invalid: [ { @@ -49,14 +48,5 @@ eslintTester.run('../platform-colors', rule, { "const white = 'white'; const color = DynamicColorIOS({light: 'black', dark: white});", errors: [{message: rule.meta.messages.dynamicColorIOSDark}], }, - { - code: 'const color = ColorAndroid();', - errors: [{message: rule.meta.messages.colorAndroidArg}], - }, - { - code: - "const colorAccent = '?attr/colorAccent'; const color = ColorAndroid(colorAccent);", - errors: [{message: rule.meta.messages.colorAndroidArg}], - }, ], }); diff --git a/packages/eslint-plugin-react-native-community/package.json b/packages/eslint-plugin-react-native-community/package.json index 5247452a965672..a4a01429fa9e8c 100644 --- a/packages/eslint-plugin-react-native-community/package.json +++ b/packages/eslint-plugin-react-native-community/package.json @@ -1,6 +1,6 @@ { "name": "@react-native-community/eslint-plugin", - "version": "1.0.0", + "version": "1.1.0", "description": "ESLint rules for @react-native-community/eslint-config", "main": "index.js", "repository": { diff --git a/packages/eslint-plugin-react-native-community/platform-colors.js b/packages/eslint-plugin-react-native-community/platform-colors.js index 4d20496f8772d8..d2d720527e64a6 100644 --- a/packages/eslint-plugin-react-native-community/platform-colors.js +++ b/packages/eslint-plugin-react-native-community/platform-colors.js @@ -12,7 +12,7 @@ module.exports = { type: 'problem', docs: { description: - 'Ensure that PlatformColor(), DynamicColorIOS(), and ColorAndroid() are passed literals of the expected shape.', + 'Ensure that PlatformColor() and DynamicColorIOS() are passed literals of the expected shape.', }, messages: { platformColorArgsLength: @@ -25,8 +25,6 @@ module.exports = { 'DynamicColorIOS() light value must be either a literal or a PlatformColor() call.', dynamicColorIOSDark: 'DynamicColorIOS() dark value must be either a literal or a PlatformColor() call.', - colorAndroidArg: - 'ColorAndroid() must take a single argument that is a literal.', }, schema: [], }, @@ -103,15 +101,6 @@ module.exports = { }); return; } - } else if (node.callee.name === 'ColorAndroid') { - const args = node.arguments; - if (!(args.length === 1 && args[0].type === 'Literal')) { - context.report({ - node, - messageId: 'colorAndroidArg', - }); - return; - } } }, }; diff --git a/packages/react-native-codegen/BUCK b/packages/react-native-codegen/BUCK index eb1521347d7ddd..622981a8d9ec28 100644 --- a/packages/react-native-codegen/BUCK +++ b/packages/react-native-codegen/BUCK @@ -29,6 +29,7 @@ fb_native.sh_binary( resources = [ "src/cli/combine/combine-js-to-schema.js", "src/cli/combine/combine_js_to_schema.sh", + ":yarn-workspace", "//xplat/js:setup_env", ], visibility = ["PUBLIC"], diff --git a/packages/react-native-codegen/e2e/__test_fixtures__/components/ArrayPropsNativeComponent.js b/packages/react-native-codegen/e2e/__test_fixtures__/components/ArrayPropsNativeComponent.js index 98c2b3ac5490bd..63b0bbeefb74d9 100644 --- a/packages/react-native-codegen/e2e/__test_fixtures__/components/ArrayPropsNativeComponent.js +++ b/packages/react-native-codegen/e2e/__test_fixtures__/components/ArrayPropsNativeComponent.js @@ -12,9 +12,9 @@ import type { PointValue, - ColorValue, EdgeInsetsValue, } from '../../../../../Libraries/StyleSheet/StyleSheetTypes'; +import type {ColorValue} from '../../../../../Libraries/StyleSheet/StyleSheet'; import type {ImageSource} from '../../../../../Libraries/Image/ImageSource'; import type { Int32, diff --git a/packages/react-native-codegen/e2e/__test_fixtures__/components/ColorPropNativeComponent.js b/packages/react-native-codegen/e2e/__test_fixtures__/components/ColorPropNativeComponent.js index 10afa18f80e275..c00a934f6a814b 100644 --- a/packages/react-native-codegen/e2e/__test_fixtures__/components/ColorPropNativeComponent.js +++ b/packages/react-native-codegen/e2e/__test_fixtures__/components/ColorPropNativeComponent.js @@ -10,7 +10,7 @@ 'use strict'; -import type {ColorValue} from '../../../../../Libraries/StyleSheet/StyleSheetTypes'; +import type {ColorValue} from '../../../../../Libraries/StyleSheet/StyleSheet'; import type {ViewProps} from '../../../../../Libraries/Components/View/ViewPropTypes'; import codegenNativeComponent from '../../../../../Libraries/Utilities/codegenNativeComponent'; import type {HostComponent} from '../../../../../Libraries/Renderer/shims/ReactNativeTypes'; diff --git a/packages/react-native-codegen/e2e/__test_fixtures__/components/MultiNativePropNativeComponent.js b/packages/react-native-codegen/e2e/__test_fixtures__/components/MultiNativePropNativeComponent.js index a4e3b545ff61bb..6965813f5ddf5e 100644 --- a/packages/react-native-codegen/e2e/__test_fixtures__/components/MultiNativePropNativeComponent.js +++ b/packages/react-native-codegen/e2e/__test_fixtures__/components/MultiNativePropNativeComponent.js @@ -10,10 +10,8 @@ 'use strict'; -import type { - PointValue, - ColorValue, -} from '../../../../../Libraries/StyleSheet/StyleSheetTypes'; +import type {PointValue} from '../../../../../Libraries/StyleSheet/StyleSheetTypes'; +import type {ColorValue} from '../../../../../Libraries/StyleSheet/StyleSheet'; import type {ImageSource} from '../../../../../Libraries/Image/ImageSource'; import type {ViewProps} from '../../../../../Libraries/Components/View/ViewPropTypes'; import codegenNativeComponent from '../../../../../Libraries/Utilities/codegenNativeComponent'; diff --git a/packages/react-native-codegen/e2e/__test_fixtures__/components/ObjectPropsNativeComponent.js b/packages/react-native-codegen/e2e/__test_fixtures__/components/ObjectPropsNativeComponent.js index a967576c405340..cfaf7d8b4bf0ef 100644 --- a/packages/react-native-codegen/e2e/__test_fixtures__/components/ObjectPropsNativeComponent.js +++ b/packages/react-native-codegen/e2e/__test_fixtures__/components/ObjectPropsNativeComponent.js @@ -12,10 +12,8 @@ import type {ViewProps} from '../../../../../Libraries/Components/View/ViewPropTypes'; import type {ImageSource} from '../../../../../Libraries/Image/ImageSource'; -import type { - PointValue, - ColorValue, -} from '../../../../../Libraries/StyleSheet/StyleSheetTypes'; +import type {PointValue} from '../../../../../Libraries/StyleSheet/StyleSheetTypes'; +import type {ColorValue} from '../../../../../Libraries/StyleSheet/StyleSheet'; import type { Int32, Float, diff --git a/packages/react-native-codegen/src/CodegenSchema.js b/packages/react-native-codegen/src/CodegenSchema.js index 7d8375512b3599..51d96416ff772e 100644 --- a/packages/react-native-codegen/src/CodegenSchema.js +++ b/packages/react-native-codegen/src/CodegenSchema.js @@ -21,12 +21,18 @@ export type CommandsFunctionTypeParamAnnotation = $ReadOnly<{| |}>; export type CommandsTypeAnnotation = + | ReservedFunctionValueTypeAnnotation | BooleanTypeAnnotation | Int32TypeAnnotation | DoubleTypeAnnotation | FloatTypeAnnotation | StringTypeAnnotation; +type ReservedFunctionValueTypeAnnotation = $ReadOnly<{| + type: 'ReservedFunctionValueTypeAnnotation', + name: ReservedFunctionValueTypeName, +|}>; + export type DoubleTypeAnnotation = $ReadOnly<{| type: 'DoubleTypeAnnotation', |}>; @@ -47,7 +53,7 @@ export type StringTypeAnnotation = $ReadOnly<{| type: 'StringTypeAnnotation', |}>; -export type ObjectPropertyType = +export type EventObjectPropertyType = | $ReadOnly<{| type: 'BooleanTypeAnnotation', name: string, @@ -85,7 +91,7 @@ export type ObjectPropertyType = type: 'ObjectTypeAnnotation', name: string, optional: boolean, - properties: $ReadOnlyArray, + properties: $ReadOnlyArray, |}>; type PropTypeTypeAnnotation = @@ -124,7 +130,7 @@ type PropTypeTypeAnnotation = |}>, |}> | $ReadOnly<{| - type: 'NativePrimitiveTypeAnnotation', + type: 'ReservedPropTypeAnnotation', name: | 'ColorPrimitive' | 'ImageSourcePrimitive' @@ -165,7 +171,7 @@ type PropTypeTypeAnnotation = properties: $ReadOnlyArray, |}> | $ReadOnly<{| - type: 'NativePrimitiveTypeAnnotation', + type: 'ReservedPropTypeAnnotation', name: | 'ColorPrimitive' | 'ImageSourcePrimitive' @@ -200,6 +206,8 @@ export type PrimitiveTypeAnnotation = $ReadOnly<{| type: PrimitiveTypeAnnotationType, |}>; +export type ReservedFunctionValueTypeName = 'RootTag'; // Union with more custom types. + export type FunctionTypeAnnotationParamTypeAnnotation = | $ReadOnly<{| type: @@ -207,6 +215,10 @@ export type FunctionTypeAnnotationParamTypeAnnotation = | 'FunctionTypeAnnotation' | PrimitiveTypeAnnotationType, |}> + | $ReadOnly<{| + type: 'ReservedFunctionValueTypeAnnotation', + name: ReservedFunctionValueTypeName, + |}> | $ReadOnly<{| type: 'ArrayTypeAnnotation', elementType: ?FunctionTypeAnnotationParamTypeAnnotation, @@ -228,9 +240,14 @@ export type FunctionTypeAnnotationReturn = | $ReadOnly<{| nullable: boolean, type: - | PrimitiveTypeAnnotationType + | 'GenericPromiseTypeAnnotation' | 'VoidTypeAnnotation' - | 'GenericPromiseTypeAnnotation', + | PrimitiveTypeAnnotationType, + |}> + | $ReadOnly<{| + nullable: boolean, + type: 'ReservedFunctionValueTypeAnnotation', + name: ReservedFunctionValueTypeName, |}> | $ReadOnly<{| nullable: boolean, @@ -256,13 +273,13 @@ export type FunctionTypeAnnotation = $ReadOnly<{| optional: boolean, |}>; -export type MethodTypeShape = $ReadOnly<{| +export type NativeModuleMethodTypeShape = $ReadOnly<{| name: string, typeAnnotation: FunctionTypeAnnotation, |}>; export type NativeModuleShape = $ReadOnly<{| - properties: $ReadOnlyArray, + properties: $ReadOnlyArray, |}>; export type EventTypeShape = $ReadOnly<{| @@ -274,7 +291,7 @@ export type EventTypeShape = $ReadOnly<{| type: 'EventTypeAnnotation', argument?: $ReadOnly<{| type: 'ObjectTypeAnnotation', - properties: $ReadOnlyArray, + properties: $ReadOnlyArray, |}>, |}>, |}>; diff --git a/packages/react-native-codegen/src/generators/components/CppHelpers.js b/packages/react-native-codegen/src/generators/components/CppHelpers.js index 80854623221241..75b259ab84f912 100644 --- a/packages/react-native-codegen/src/generators/components/CppHelpers.js +++ b/packages/react-native-codegen/src/generators/components/CppHelpers.js @@ -78,13 +78,13 @@ function getImports(properties: $ReadOnlyArray): Set { properties.forEach(prop => { const typeAnnotation = prop.typeAnnotation; - if (typeAnnotation.type === 'NativePrimitiveTypeAnnotation') { + if (typeAnnotation.type === 'ReservedPropTypeAnnotation') { addImportsForNativeName(typeAnnotation.name); } if ( typeAnnotation.type === 'ArrayTypeAnnotation' && - typeAnnotation.elementType.type === 'NativePrimitiveTypeAnnotation' + typeAnnotation.elementType.type === 'ReservedPropTypeAnnotation' ) { addImportsForNativeName(typeAnnotation.elementType.name); } @@ -151,7 +151,7 @@ function convertDefaultTypeToString( return parseInt(defaultFloatVal, 10) === defaultFloatVal ? defaultFloatVal.toFixed(1) : String(typeAnnotation.default); - case 'NativePrimitiveTypeAnnotation': + case 'ReservedPropTypeAnnotation': switch (typeAnnotation.name) { case 'ColorPrimitive': return ''; @@ -163,7 +163,9 @@ function convertDefaultTypeToString( return ''; default: (typeAnnotation.name: empty); - throw new Error('Received unknown NativePrimitiveTypeAnnotation'); + throw new Error( + `Unsupported type annotation: ${typeAnnotation.name}`, + ); } case 'ArrayTypeAnnotation': { const elementType = typeAnnotation.elementType; @@ -198,7 +200,7 @@ function convertDefaultTypeToString( )}`; default: (typeAnnotation: empty); - throw new Error('Received invalid typeAnnotation'); + throw new Error(`Unsupported type annotation: ${typeAnnotation.type}`); } } diff --git a/packages/react-native-codegen/src/generators/components/GenerateComponentHObjCpp.js b/packages/react-native-codegen/src/generators/components/GenerateComponentHObjCpp.js index db66bacc553b41..6ecc358b3815f4 100644 --- a/packages/react-native-codegen/src/generators/components/GenerateComponentHObjCpp.js +++ b/packages/react-native-codegen/src/generators/components/GenerateComponentHObjCpp.js @@ -102,7 +102,17 @@ NS_ASSUME_NONNULL_END `.trim(); function getObjCParamType(param: CommandsFunctionTypeParamAnnotation): string { - switch (param.typeAnnotation.type) { + const {typeAnnotation} = param; + + switch (typeAnnotation.type) { + case 'ReservedFunctionValueTypeAnnotation': + switch (typeAnnotation.name) { + case 'RootTag': + return 'double'; + default: + (typeAnnotation.name: empty); + throw new Error(`Receieved invalid type: ${typeAnnotation.name}`); + } case 'BooleanTypeAnnotation': return 'BOOL'; case 'DoubleTypeAnnotation': @@ -114,7 +124,7 @@ function getObjCParamType(param: CommandsFunctionTypeParamAnnotation): string { case 'StringTypeAnnotation': return 'NSString *'; default: - (param.typeAnnotation.type: empty); + (typeAnnotation.type: empty); throw new Error('Received invalid param type annotation'); } } @@ -122,7 +132,17 @@ function getObjCParamType(param: CommandsFunctionTypeParamAnnotation): string { function getObjCExpectedKindParamType( param: CommandsFunctionTypeParamAnnotation, ): string { - switch (param.typeAnnotation.type) { + const {typeAnnotation} = param; + + switch (typeAnnotation.type) { + case 'ReservedFunctionValueTypeAnnotation': + switch (typeAnnotation.name) { + case 'RootTag': + return '[NSNumber class]'; + default: + (typeAnnotation.name: empty); + throw new Error(`Receieved invalid type: ${typeAnnotation.name}`); + } case 'BooleanTypeAnnotation': return '[NSNumber class]'; case 'DoubleTypeAnnotation': @@ -134,7 +154,7 @@ function getObjCExpectedKindParamType( case 'StringTypeAnnotation': return '[NSString class]'; default: - (param.typeAnnotation.type: empty); + (typeAnnotation.type: empty); throw new Error('Received invalid param type annotation'); } } @@ -142,7 +162,17 @@ function getObjCExpectedKindParamType( function getReadableExpectedKindParamType( param: CommandsFunctionTypeParamAnnotation, ): string { - switch (param.typeAnnotation.type) { + const {typeAnnotation} = param; + + switch (typeAnnotation.type) { + case 'ReservedFunctionValueTypeAnnotation': + switch (typeAnnotation.name) { + case 'RootTag': + return 'double'; + default: + (typeAnnotation.name: empty); + throw new Error(`Receieved invalid type: ${typeAnnotation.name}`); + } case 'BooleanTypeAnnotation': return 'boolean'; case 'DoubleTypeAnnotation': @@ -154,7 +184,7 @@ function getReadableExpectedKindParamType( case 'StringTypeAnnotation': return 'string'; default: - (param.typeAnnotation.type: empty); + (typeAnnotation.type: empty); throw new Error('Received invalid param type annotation'); } } @@ -163,7 +193,17 @@ function getObjCRightHandAssignmentParamType( param: CommandsFunctionTypeParamAnnotation, index: number, ): string { - switch (param.typeAnnotation.type) { + const {typeAnnotation} = param; + + switch (typeAnnotation.type) { + case 'ReservedFunctionValueTypeAnnotation': + switch (typeAnnotation.name) { + case 'RootTag': + return `[(NSNumber *)arg${index} doubleValue]`; + default: + (typeAnnotation.name: empty); + throw new Error(`Receieved invalid type: ${typeAnnotation.name}`); + } case 'BooleanTypeAnnotation': return `[(NSNumber *)arg${index} boolValue]`; case 'DoubleTypeAnnotation': @@ -175,7 +215,7 @@ function getObjCRightHandAssignmentParamType( case 'StringTypeAnnotation': return `(NSString *)arg${index}`; default: - (param.typeAnnotation.type: empty); + (typeAnnotation.type: empty); throw new Error('Received invalid param type annotation'); } } diff --git a/packages/react-native-codegen/src/generators/components/GenerateEventEmitterCpp.js b/packages/react-native-codegen/src/generators/components/GenerateEventEmitterCpp.js index 8577df4309ebe6..052315baaf46ed 100644 --- a/packages/react-native-codegen/src/generators/components/GenerateEventEmitterCpp.js +++ b/packages/react-native-codegen/src/generators/components/GenerateEventEmitterCpp.js @@ -14,7 +14,7 @@ const {generateEventStructName} = require('./CppHelpers.js'); import type { ComponentShape, - ObjectPropertyType, + EventObjectPropertyType, SchemaType, } from '../../CodegenSchema'; @@ -79,7 +79,7 @@ function generateEnumSetter(variableName, propertyName, propertyParts) { function generateSetters( parentPropertyName: string, - properties: $ReadOnlyArray, + properties: $ReadOnlyArray, propertyParts: $ReadOnlyArray, ): string { const propSetters = properties diff --git a/packages/react-native-codegen/src/generators/components/GenerateEventEmitterH.js b/packages/react-native-codegen/src/generators/components/GenerateEventEmitterH.js index a1d6956f8557cc..6c90069677f1ce 100644 --- a/packages/react-native-codegen/src/generators/components/GenerateEventEmitterH.js +++ b/packages/react-native-codegen/src/generators/components/GenerateEventEmitterH.js @@ -21,7 +21,7 @@ const { import type { ComponentShape, EventTypeShape, - ObjectPropertyType, + EventObjectPropertyType, SchemaType, } from '../../CodegenSchema'; @@ -97,7 +97,7 @@ function indent(nice: string, spaces: number) { function getNativeTypeFromAnnotation( componentName: string, - eventProperty: ObjectPropertyType, + eventProperty: EventObjectPropertyType, nameParts: $ReadOnlyArray, ): string { const type = eventProperty.type; @@ -146,7 +146,7 @@ function generateStruct( structs: StructsMap, componentName: string, nameParts: $ReadOnlyArray, - properties: $ReadOnlyArray, + properties: $ReadOnlyArray, ): void { const structNameParts = nameParts; const structName = generateEventStructName(structNameParts); @@ -161,7 +161,7 @@ function generateStruct( }) .join('\n' + ' '); - properties.forEach((property: ObjectPropertyType) => { + properties.forEach((property: EventObjectPropertyType) => { const name = property.name; switch (property.type) { case 'BooleanTypeAnnotation': diff --git a/packages/react-native-codegen/src/generators/components/GeneratePropsH.js b/packages/react-native-codegen/src/generators/components/GeneratePropsH.js index fd12096e297854..adb94d16f442f4 100644 --- a/packages/react-native-codegen/src/generators/components/GeneratePropsH.js +++ b/packages/react-native-codegen/src/generators/components/GeneratePropsH.js @@ -221,7 +221,7 @@ function getNativeTypeFromAnnotation( case 'DoubleTypeAnnotation': case 'FloatTypeAnnotation': return getCppTypeForAnnotation(typeAnnotation.type); - case 'NativePrimitiveTypeAnnotation': + case 'ReservedPropTypeAnnotation': switch (typeAnnotation.name) { case 'ColorPrimitive': return 'SharedColor'; @@ -233,7 +233,7 @@ function getNativeTypeFromAnnotation( return 'EdgeInsets'; default: (typeAnnotation.name: empty); - throw new Error('Received unknown NativePrimitiveTypeAnnotation'); + throw new Error('Received unknown ReservedPropTypeAnnotation'); } case 'ArrayTypeAnnotation': { const arrayType = typeAnnotation.elementType.type; @@ -503,16 +503,14 @@ function getLocalImports( return; default: (name: empty); - throw new Error( - `Invalid NativePrimitiveTypeAnnotation name, got ${name}`, - ); + throw new Error(`Invalid ReservedPropTypeAnnotation name, got ${name}`); } } properties.forEach(prop => { const typeAnnotation = prop.typeAnnotation; - if (typeAnnotation.type === 'NativePrimitiveTypeAnnotation') { + if (typeAnnotation.type === 'ReservedPropTypeAnnotation') { addImportsForNativeName(typeAnnotation.name); } @@ -525,7 +523,7 @@ function getLocalImports( if ( typeAnnotation.type === 'ArrayTypeAnnotation' && - typeAnnotation.elementType.type === 'NativePrimitiveTypeAnnotation' + typeAnnotation.elementType.type === 'ReservedPropTypeAnnotation' ) { addImportsForNativeName(typeAnnotation.elementType.name); } @@ -703,7 +701,7 @@ function generateStruct( return; case 'FloatTypeAnnotation': return; - case 'NativePrimitiveTypeAnnotation': + case 'ReservedPropTypeAnnotation': return; case 'ArrayTypeAnnotation': return; diff --git a/packages/react-native-codegen/src/generators/components/GeneratePropsJavaDelegate.js b/packages/react-native-codegen/src/generators/components/GeneratePropsJavaDelegate.js index a92f7e445f1b51..17f587b0145327 100644 --- a/packages/react-native-codegen/src/generators/components/GeneratePropsJavaDelegate.js +++ b/packages/react-native-codegen/src/generators/components/GeneratePropsJavaDelegate.js @@ -97,7 +97,7 @@ function getJavaValueForProp( } else { return 'value == null ? Float.NaN : ((Double) value).floatValue()'; } - case 'NativePrimitiveTypeAnnotation': + case 'ReservedPropTypeAnnotation': switch (typeAnnotation.name) { case 'ColorPrimitive': return 'ColorPropConverter.getColor(value, view.getContext())'; @@ -109,7 +109,7 @@ function getJavaValueForProp( return '(ReadableMap) value'; default: (typeAnnotation.name: empty); - throw new Error('Received unknown NativePrimitiveTypeAnnotation'); + throw new Error('Received unknown ReservedPropTypeAnnotation'); } case 'ArrayTypeAnnotation': { return '(ReadableArray) value'; @@ -153,7 +153,17 @@ function generatePropCasesString( } function getCommandArgJavaType(param, index) { - switch (param.typeAnnotation.type) { + const {typeAnnotation} = param; + + switch (typeAnnotation.type) { + case 'ReservedFunctionValueTypeAnnotation': + switch (typeAnnotation.name) { + case 'RootTag': + return `args.getDouble(${index})`; + default: + (typeAnnotation.name: empty); + throw new Error(`Receieved invalid type: ${typeAnnotation.name}`); + } case 'BooleanTypeAnnotation': return `args.getBoolean(${index})`; case 'DoubleTypeAnnotation': @@ -165,8 +175,8 @@ function getCommandArgJavaType(param, index) { case 'StringTypeAnnotation': return `args.getString(${index})`; default: - (param.typeAnnotation.type: empty); - throw new Error('Receieved invalid typeAnnotation'); + (typeAnnotation.type: empty); + throw new Error(`Receieved invalid type: ${typeAnnotation.type}`); } } diff --git a/packages/react-native-codegen/src/generators/components/GeneratePropsJavaInterface.js b/packages/react-native-codegen/src/generators/components/GeneratePropsJavaInterface.js index 51b008bb54dc94..bf4f42bbfc891d 100644 --- a/packages/react-native-codegen/src/generators/components/GeneratePropsJavaInterface.js +++ b/packages/react-native-codegen/src/generators/components/GeneratePropsJavaInterface.js @@ -72,7 +72,7 @@ function getJavaValueForProp(prop: PropTypeShape, imports): string { } else { return 'float value'; } - case 'NativePrimitiveTypeAnnotation': + case 'ReservedPropTypeAnnotation': switch (typeAnnotation.name) { case 'ColorPrimitive': addNullable(imports); @@ -88,7 +88,7 @@ function getJavaValueForProp(prop: PropTypeShape, imports): string { return '@Nullable ReadableMap value'; default: (typeAnnotation.name: empty); - throw new Error('Received unknown NativePrimitiveTypeAnnotation'); + throw new Error('Received unknown ReservedPropTypeAnnotation'); } case 'ArrayTypeAnnotation': { addNullable(imports); @@ -125,7 +125,17 @@ function generatePropsString(component: ComponentShape, imports) { } function getCommandArgJavaType(param) { - switch (param.typeAnnotation.type) { + const {typeAnnotation} = param; + + switch (typeAnnotation.type) { + case 'ReservedFunctionValueTypeAnnotation': + switch (typeAnnotation.name) { + case 'RootTag': + return 'double'; + default: + (typeAnnotation.name: empty); + throw new Error(`Receieved invalid type: ${typeAnnotation.name}`); + } case 'BooleanTypeAnnotation': return 'boolean'; case 'DoubleTypeAnnotation': @@ -137,7 +147,7 @@ function getCommandArgJavaType(param) { case 'StringTypeAnnotation': return 'String'; default: - (param.typeAnnotation.type: empty); + (typeAnnotation.type: empty); throw new Error('Receieved invalid typeAnnotation'); } } diff --git a/packages/react-native-codegen/src/generators/components/GenerateTests.js b/packages/react-native-codegen/src/generators/components/GenerateTests.js index 213ee3ba4d2c21..25c0cfa59a9b61 100644 --- a/packages/react-native-codegen/src/generators/components/GenerateTests.js +++ b/packages/react-native-codegen/src/generators/components/GenerateTests.js @@ -83,7 +83,7 @@ function getTestCasesForProp(propName, typeAnnotation) { propName, propValue: typeAnnotation.default != null ? typeAnnotation.default : 0.1, }); - } else if (typeAnnotation.type === 'NativePrimitiveTypeAnnotation') { + } else if (typeAnnotation.type === 'ReservedPropTypeAnnotation') { if (typeAnnotation.name === 'ColorPrimitive') { cases.push({ propName, diff --git a/packages/react-native-codegen/src/generators/components/GenerateViewConfigJs.js b/packages/react-native-codegen/src/generators/components/GenerateViewConfigJs.js index 22e76aa785baad..3b578b752d01b8 100644 --- a/packages/react-native-codegen/src/generators/components/GenerateViewConfigJs.js +++ b/packages/react-native-codegen/src/generators/components/GenerateViewConfigJs.js @@ -49,7 +49,7 @@ function getReactDiffProcessValue(typeAnnotation) { case 'StringEnumTypeAnnotation': case 'Int32EnumTypeAnnotation': return j.literal(true); - case 'NativePrimitiveTypeAnnotation': + case 'ReservedPropTypeAnnotation': switch (typeAnnotation.name) { case 'ColorPrimitive': return j.template.expression`{ process: require('processColor') }`; @@ -67,7 +67,7 @@ function getReactDiffProcessValue(typeAnnotation) { ); } case 'ArrayTypeAnnotation': - if (typeAnnotation.elementType.type === 'NativePrimitiveTypeAnnotation') { + if (typeAnnotation.elementType.type === 'ReservedPropTypeAnnotation') { switch (typeAnnotation.elementType.name) { case 'ColorPrimitive': return j.template diff --git a/packages/react-native-codegen/src/generators/components/JavaHelpers.js b/packages/react-native-codegen/src/generators/components/JavaHelpers.js index affb28a21406e0..e59fe7df4f8571 100644 --- a/packages/react-native-codegen/src/generators/components/JavaHelpers.js +++ b/packages/react-native-codegen/src/generators/components/JavaHelpers.js @@ -78,16 +78,14 @@ function getImports( return; default: (name: empty); - throw new Error( - `Invalid NativePrimitiveTypeAnnotation name, got ${name}`, - ); + throw new Error(`Invalid ReservedPropTypeAnnotation name, got ${name}`); } } component.props.forEach(prop => { const typeAnnotation = prop.typeAnnotation; - if (typeAnnotation.type === 'NativePrimitiveTypeAnnotation') { + if (typeAnnotation.type === 'ReservedPropTypeAnnotation') { addImportsForNativeName(typeAnnotation.name); } diff --git a/packages/react-native-codegen/src/generators/components/__test_fixtures__/fixtures.js b/packages/react-native-codegen/src/generators/components/__test_fixtures__/fixtures.js index 07d7fae0e0ef47..6f3bf1becb890d 100644 --- a/packages/react-native-codegen/src/generators/components/__test_fixtures__/fixtures.js +++ b/packages/react-native-codegen/src/generators/components/__test_fixtures__/fixtures.js @@ -409,7 +409,7 @@ const COLOR_PROP: SchemaType = { name: 'tintColor', optional: true, typeAnnotation: { - type: 'NativePrimitiveTypeAnnotation', + type: 'ReservedPropTypeAnnotation', name: 'ColorPrimitive', }, }, @@ -438,7 +438,7 @@ const IMAGE_PROP: SchemaType = { name: 'thumbImage', optional: true, typeAnnotation: { - type: 'NativePrimitiveTypeAnnotation', + type: 'ReservedPropTypeAnnotation', name: 'ImageSourcePrimitive', }, }, @@ -467,7 +467,7 @@ const POINT_PROP: SchemaType = { name: 'startPoint', optional: true, typeAnnotation: { - type: 'NativePrimitiveTypeAnnotation', + type: 'ReservedPropTypeAnnotation', name: 'PointPrimitive', }, }, @@ -496,7 +496,7 @@ const INSETS_PROP: SchemaType = { name: 'contentInset', optional: true, typeAnnotation: { - type: 'NativePrimitiveTypeAnnotation', + type: 'ReservedPropTypeAnnotation', name: 'EdgeInsetsPrimitive', }, }, @@ -567,7 +567,7 @@ const ARRAY_PROPS: SchemaType = { typeAnnotation: { type: 'ArrayTypeAnnotation', elementType: { - type: 'NativePrimitiveTypeAnnotation', + type: 'ReservedPropTypeAnnotation', name: 'ColorPrimitive', }, }, @@ -578,7 +578,7 @@ const ARRAY_PROPS: SchemaType = { typeAnnotation: { type: 'ArrayTypeAnnotation', elementType: { - type: 'NativePrimitiveTypeAnnotation', + type: 'ReservedPropTypeAnnotation', name: 'ImageSourcePrimitive', }, }, @@ -589,7 +589,7 @@ const ARRAY_PROPS: SchemaType = { typeAnnotation: { type: 'ArrayTypeAnnotation', elementType: { - type: 'NativePrimitiveTypeAnnotation', + type: 'ReservedPropTypeAnnotation', name: 'PointPrimitive', }, }, @@ -726,7 +726,7 @@ const ARRAY_PROPS_WITH_NESTED_OBJECT: SchemaType = { typeAnnotation: { type: 'ArrayTypeAnnotation', elementType: { - type: 'NativePrimitiveTypeAnnotation', + type: 'ReservedPropTypeAnnotation', name: 'ColorPrimitive', }, }, @@ -737,7 +737,7 @@ const ARRAY_PROPS_WITH_NESTED_OBJECT: SchemaType = { typeAnnotation: { type: 'ArrayTypeAnnotation', elementType: { - type: 'NativePrimitiveTypeAnnotation', + type: 'ReservedPropTypeAnnotation', name: 'ImageSourcePrimitive', }, }, @@ -748,7 +748,7 @@ const ARRAY_PROPS_WITH_NESTED_OBJECT: SchemaType = { typeAnnotation: { type: 'ArrayTypeAnnotation', elementType: { - type: 'NativePrimitiveTypeAnnotation', + type: 'ReservedPropTypeAnnotation', name: 'PointPrimitive', }, }, @@ -871,7 +871,7 @@ const OBJECT_PROPS: SchemaType = { name: 'image', optional: true, typeAnnotation: { - type: 'NativePrimitiveTypeAnnotation', + type: 'ReservedPropTypeAnnotation', name: 'ImageSourcePrimitive', }, }, @@ -879,7 +879,7 @@ const OBJECT_PROPS: SchemaType = { name: 'color', optional: true, typeAnnotation: { - type: 'NativePrimitiveTypeAnnotation', + type: 'ReservedPropTypeAnnotation', name: 'ColorPrimitive', }, }, @@ -887,7 +887,7 @@ const OBJECT_PROPS: SchemaType = { name: 'point', optional: true, typeAnnotation: { - type: 'NativePrimitiveTypeAnnotation', + type: 'ReservedPropTypeAnnotation', name: 'PointPrimitive', }, }, @@ -977,7 +977,7 @@ const MULTI_NATIVE_PROP: SchemaType = { name: 'thumbImage', optional: true, typeAnnotation: { - type: 'NativePrimitiveTypeAnnotation', + type: 'ReservedPropTypeAnnotation', name: 'ImageSourcePrimitive', }, }, @@ -985,7 +985,7 @@ const MULTI_NATIVE_PROP: SchemaType = { name: 'color', optional: true, typeAnnotation: { - type: 'NativePrimitiveTypeAnnotation', + type: 'ReservedPropTypeAnnotation', name: 'ColorPrimitive', }, }, @@ -993,7 +993,7 @@ const MULTI_NATIVE_PROP: SchemaType = { name: 'thumbTintColor', optional: true, typeAnnotation: { - type: 'NativePrimitiveTypeAnnotation', + type: 'ReservedPropTypeAnnotation', name: 'ColorPrimitive', }, }, @@ -1001,7 +1001,7 @@ const MULTI_NATIVE_PROP: SchemaType = { name: 'point', optional: true, typeAnnotation: { - type: 'NativePrimitiveTypeAnnotation', + type: 'ReservedPropTypeAnnotation', name: 'PointPrimitive', }, }, @@ -1475,6 +1475,22 @@ const COMMANDS_AND_PROPS: SchemaType = { }, ], commands: [ + { + name: 'handleRootTag', + optional: false, + typeAnnotation: { + type: 'FunctionTypeAnnotation', + params: [ + { + name: 'rootTag', + typeAnnotation: { + type: 'ReservedFunctionValueTypeAnnotation', + name: 'RootTag', + }, + }, + ], + }, + }, { name: 'hotspotUpdate', optional: false, diff --git a/packages/react-native-codegen/src/generators/components/__tests__/__snapshots__/GenerateComponentHObjCpp-test.js.snap b/packages/react-native-codegen/src/generators/components/__tests__/__snapshots__/GenerateComponentHObjCpp-test.js.snap index 70dd19d5b9ed03..93b0a8b7f0ffe8 100644 --- a/packages/react-native-codegen/src/generators/components/__tests__/__snapshots__/GenerateComponentHObjCpp-test.js.snap +++ b/packages/react-native-codegen/src/generators/components/__tests__/__snapshots__/GenerateComponentHObjCpp-test.js.snap @@ -208,6 +208,7 @@ Map { NS_ASSUME_NONNULL_BEGIN @protocol RCTCommandNativeComponentViewProtocol +- (void)handleRootTag:(double)rootTag; - (void)hotspotUpdate:(NSInteger)x y:(NSInteger)y; @end @@ -216,7 +217,27 @@ RCT_EXTERN inline void RCTCommandNativeComponentHandleCommand( NSString const *commandName, NSArray const *args) { - if ([commandName isEqualToString:@\\"hotspotUpdate\\"]) { + if ([commandName isEqualToString:@\\"handleRootTag\\"]) { +#if RCT_DEBUG + if ([args count] != 1) { + RCTLogError(@\\"%@ command %@ received %d arguments, expected %d.\\", @\\"CommandNativeComponent\\", commandName, (int)[args count], 1); + return; + } +#endif + + NSObject *arg0 = args[0]; +#if RCT_DEBUG + if (!RCTValidateTypeOfViewCommandArgument(arg0, [NSNumber class], @\\"double\\", @\\"CommandNativeComponent\\", commandName, @\\"1st\\")) { + return; + } +#endif + double rootTag = [(NSNumber *)arg0 doubleValue]; + + [componentView handleRootTag:rootTag]; + return; +} + +if ([commandName isEqualToString:@\\"hotspotUpdate\\"]) { #if RCT_DEBUG if ([args count] != 2) { RCTLogError(@\\"%@ command %@ received %d arguments, expected %d.\\", @\\"CommandNativeComponent\\", commandName, (int)[args count], 2); diff --git a/packages/react-native-codegen/src/generators/components/__tests__/__snapshots__/GeneratePropsJavaDelegate-test.js.snap b/packages/react-native-codegen/src/generators/components/__tests__/__snapshots__/GeneratePropsJavaDelegate-test.js.snap index 27e4baf9895c93..6ae0cd6f4f22c8 100644 --- a/packages/react-native-codegen/src/generators/components/__tests__/__snapshots__/GeneratePropsJavaDelegate-test.js.snap +++ b/packages/react-native-codegen/src/generators/components/__tests__/__snapshots__/GeneratePropsJavaDelegate-test.js.snap @@ -266,6 +266,9 @@ public class CommandNativeComponentManagerDelegate viewManager, T view, String commandName, ReadableArray args) { switch (commandName) { + case \\"handleRootTag\\": + viewManager.handleRootTag(view, args.getDouble(0)); + break; case \\"hotspotUpdate\\": viewManager.hotspotUpdate(view, args.getInt(0), args.getInt(1)); break; diff --git a/packages/react-native-codegen/src/generators/components/__tests__/__snapshots__/GeneratePropsJavaInterface-test.js.snap b/packages/react-native-codegen/src/generators/components/__tests__/__snapshots__/GeneratePropsJavaInterface-test.js.snap index 1f52c9c59a8a56..45873d75b224bc 100644 --- a/packages/react-native-codegen/src/generators/components/__tests__/__snapshots__/GeneratePropsJavaInterface-test.js.snap +++ b/packages/react-native-codegen/src/generators/components/__tests__/__snapshots__/GeneratePropsJavaInterface-test.js.snap @@ -145,6 +145,7 @@ import androidx.annotation.Nullable; public interface CommandNativeComponentManagerInterface { void setAccessibilityHint(T view, @Nullable String value); + void handleRootTag(T view, double rootTag); void hotspotUpdate(T view, int x, int y); } ", diff --git a/packages/react-native-codegen/src/generators/components/__tests__/__snapshots__/GenerateViewConfigJs-test.js.snap b/packages/react-native-codegen/src/generators/components/__tests__/__snapshots__/GenerateViewConfigJs-test.js.snap index 6a1892f0aa755d..f7e1722e545a8e 100644 --- a/packages/react-native-codegen/src/generators/components/__tests__/__snapshots__/GenerateViewConfigJs-test.js.snap +++ b/packages/react-native-codegen/src/generators/components/__tests__/__snapshots__/GenerateViewConfigJs-test.js.snap @@ -227,6 +227,10 @@ export const __INTERNAL_VIEW_CONFIG = CommandNativeComponentViewConfig; export default nativeComponentName; export const Commands = { + handleRootTag(ref, rootTag) { + dispatchCommand(ref, \\"handleRootTag\\", [rootTag]); + }, + hotspotUpdate(ref, x, y) { dispatchCommand(ref, \\"hotspotUpdate\\", [x, y]); } diff --git a/packages/react-native-codegen/src/generators/modules/GenerateModuleCpp.js b/packages/react-native-codegen/src/generators/modules/GenerateModuleCpp.js index dd2eb05858f7e5..5acd433a04c64f 100644 --- a/packages/react-native-codegen/src/generators/modules/GenerateModuleCpp.js +++ b/packages/react-native-codegen/src/generators/modules/GenerateModuleCpp.js @@ -66,8 +66,18 @@ function traverseArg(arg, index): string { function wrap(suffix) { return `args[${index}]${suffix}`; } - const type = arg.typeAnnotation.type; - switch (type) { + const {typeAnnotation} = arg; + switch (typeAnnotation.type) { + case 'ReservedFunctionValueTypeAnnotation': + switch (typeAnnotation.name) { + case 'RootTag': + return wrap('.getNumber()'); + default: + (typeAnnotation.name: empty); + throw new Error( + `Unknown prop type for "${arg.name}, found: ${typeAnnotation.name}"`, + ); + } case 'StringTypeAnnotation': return wrap('.getString(rt)'); case 'BooleanTypeAnnotation': @@ -85,14 +95,16 @@ function traverseArg(arg, index): string { return wrap('.getObject(rt)'); case 'AnyTypeAnnotation': throw new Error(`Any type is not allowed in params for "${arg.name}"`); - default: - (type: empty); - throw new Error(`Unknown prop type for "${arg.name}, found: ${type}"`); + // TODO (T65847278): Figure out why this does not work. + // (typeAnnotation.type: empty); + throw new Error( + `Unknown prop type for "${arg.name}, found: ${typeAnnotation.type}"`, + ); } } -function traverseProprety(property): string { +function traverseProperty(property): string { const propertyTemplate = property.typeAnnotation.returnTypeAnnotation.type === 'VoidTypeAnnotation' ? voidPropertyTemplate @@ -127,7 +139,7 @@ module.exports = { .map(name => { const {properties} = nativeModules[name]; const traversedProperties = properties - .map(property => traverseProprety(property)) + .map(property => traverseProperty(property)) .join('\n'); return moduleTemplate .replace(/::_MODULE_PROPERTIES_::/g, traversedProperties) diff --git a/packages/react-native-codegen/src/generators/modules/GenerateModuleH.js b/packages/react-native-codegen/src/generators/modules/GenerateModuleH.js index afb1b9c2f747ad..a423127ee49f75 100644 --- a/packages/react-native-codegen/src/generators/modules/GenerateModuleH.js +++ b/packages/react-native-codegen/src/generators/modules/GenerateModuleH.js @@ -49,12 +49,20 @@ namespace react { `; function translatePrimitiveJSTypeToCpp( - type: + typeAnnotation: | FunctionTypeAnnotationParamTypeAnnotation | FunctionTypeAnnotationReturn, - error: string, + createErrorMessage: (typeName: string) => string, ) { - switch (type.type) { + switch (typeAnnotation.type) { + case 'ReservedFunctionValueTypeAnnotation': + switch (typeAnnotation.name) { + case 'RootTag': + return 'double'; + default: + (typeAnnotation.name: empty); + throw new Error(createErrorMessage(typeAnnotation.name)); + } case 'VoidTypeAnnotation': return 'void'; case 'StringTypeAnnotation': @@ -75,11 +83,13 @@ function translatePrimitiveJSTypeToCpp( return 'jsi::Function'; case 'GenericPromiseTypeAnnotation': return 'jsi::Value'; - default: - throw new Error(error); + // TODO (T65847278): Figure out why this does not work. + // (typeAnnotation.type: empty); + throw new Error(createErrorMessage(typeAnnotation.type)); } } + const propertyTemplate = 'virtual ::_RETURN_VALUE_:: ::_PROPERTY_NAME_::(jsi::Runtime &rt::_ARGS_::) = 0;'; @@ -110,7 +120,8 @@ module.exports = { .map(param => { const translatedParam = translatePrimitiveJSTypeToCpp( param.typeAnnotation, - `Unspopported type for param "${param.name}" in ${prop.name}. Found: ${param.typeAnnotation.type}`, + typeName => + `Unsupported type for param "${param.name}" in ${prop.name}. Found: ${typeName}`, ); const isObject = translatedParam.startsWith('jsi::'); return ( @@ -126,7 +137,8 @@ module.exports = { '::_RETURN_VALUE_::', translatePrimitiveJSTypeToCpp( prop.typeAnnotation.returnTypeAnnotation, - `Unspopported return type for ${prop.name}. Found: ${prop.typeAnnotation.returnTypeAnnotation.type}`, + typeName => + `Unsupported return type for ${prop.name}. Found: ${typeName}`, ), ) .replace( diff --git a/packages/react-native-codegen/src/generators/modules/GenerateModuleHObjCpp.js b/packages/react-native-codegen/src/generators/modules/GenerateModuleHObjCpp.js index 1018323e960c77..87e9367bae09dd 100644 --- a/packages/react-native-codegen/src/generators/modules/GenerateModuleHObjCpp.js +++ b/packages/react-native-codegen/src/generators/modules/GenerateModuleHObjCpp.js @@ -27,7 +27,7 @@ type FilesOutput = Map; const moduleTemplate = ` class JSI_EXPORT Native::_MODULE_NAME_::SpecJSI : public ObjCTurboModule { public: - Native::_MODULE_NAME_::SpecJSI(id instance, std::shared_ptr jsInvoker, std::shared_ptr nativeInvoker, id perfLogger); + Native::_MODULE_NAME_::SpecJSI(const ObjCTurboModule::InitParams ¶ms); };`; const protocolTemplate = ` @@ -93,20 +93,30 @@ const constants = `- (facebook::react::ModuleConstants string, ) { + const {nullable, typeAnnotation} = param; + function wrapIntoNullableIfNeeded(generatedType: string) { - return param.nullable ? `${generatedType} _Nullable` : generatedType; + return nullable ? `${generatedType} _Nullable` : generatedType; } - switch (param.typeAnnotation.type) { + switch (typeAnnotation.type) { + case 'ReservedFunctionValueTypeAnnotation': + switch (typeAnnotation.name) { + case 'RootTag': + return nullable ? 'NSNumber *' : 'double'; + default: + (typeAnnotation.name: empty); + throw new Error(createErrorMessage(typeAnnotation.name)); + } case 'StringTypeAnnotation': return wrapIntoNullableIfNeeded('NSString *'); case 'NumberTypeAnnotation': case 'FloatTypeAnnotation': case 'Int32TypeAnnotation': - return param.nullable ? 'NSNumber *' : 'double'; + return nullable ? 'NSNumber *' : 'double'; case 'BooleanTypeAnnotation': - return param.nullable ? 'NSNumber * _Nullable' : 'BOOL'; + return nullable ? 'NSNumber * _Nullable' : 'BOOL'; case 'GenericObjectTypeAnnotation': return wrapIntoNullableIfNeeded('NSDictionary *'); case 'ArrayTypeAnnotation': @@ -116,18 +126,30 @@ function translatePrimitiveJSTypeToObjCType( case 'ObjectTypeAnnotation': return wrapIntoNullableIfNeeded('NSDictionary *'); default: - throw new Error(error); + // TODO (T65847278): Figure out why this does not work. + // (typeAnnotation.type: empty); + throw new Error(createErrorMessage(typeAnnotation.type)); } } function translatePrimitiveJSTypeToObjCTypeForReturn( - type: FunctionTypeAnnotationReturn, - error: string, + typeAnnotation: FunctionTypeAnnotationReturn, + createErrorMessage: (typeName: string) => string, ) { function wrapIntoNullableIfNeeded(generatedType: string) { - return type.nullable ? `${generatedType} _Nullable` : generatedType; + return typeAnnotation.nullable + ? `${generatedType} _Nullable` + : generatedType; } - switch (type.type) { + switch (typeAnnotation.type) { + case 'ReservedFunctionValueTypeAnnotation': + switch (typeAnnotation.name) { + case 'RootTag': + return wrapIntoNullableIfNeeded('NSNumber *'); + default: + (typeAnnotation.name: empty); + throw new Error(createErrorMessage(typeAnnotation.name)); + } case 'VoidTypeAnnotation': case 'GenericPromiseTypeAnnotation': return 'void'; @@ -138,7 +160,7 @@ function translatePrimitiveJSTypeToObjCTypeForReturn( case 'Int32TypeAnnotation': return wrapIntoNullableIfNeeded('NSNumber *'); case 'BooleanTypeAnnotation': - return type.nullable ? 'NSNumber * _Nullable' : 'BOOL'; + return typeAnnotation.nullable ? 'NSNumber * _Nullable' : 'BOOL'; case 'GenericObjectTypeAnnotation': return wrapIntoNullableIfNeeded('NSDictionary *'); case 'ArrayTypeAnnotation': @@ -146,9 +168,12 @@ function translatePrimitiveJSTypeToObjCTypeForReturn( case 'ObjectTypeAnnotation': return wrapIntoNullableIfNeeded('NSDictionary *'); default: - throw new Error(error); + // TODO (T65847278): Figure out why this does not work. + // (typeAnnotation.type: empty); + throw new Error(createErrorMessage(typeAnnotation.type)); } } + const methodImplementationTemplate = '- (::_RETURN_VALUE_::) ::_PROPERTY_NAME_::::_ARGS_::;'; @@ -201,7 +226,8 @@ module.exports = { } else { paramObjCType = translatePrimitiveJSTypeToObjCType( param, - `Unspopported type for param "${param.name}" in ${prop.name}. Found: ${param.typeAnnotation.type}`, + typeName => + `Unsupported type for param "${param.name}" in ${prop.name}. Found: ${typeName}`, ); } return `${i === 0 ? '' : param.name}:(${paramObjCType})${ @@ -230,7 +256,8 @@ module.exports = { '::_RETURN_VALUE_::', translatePrimitiveJSTypeToObjCTypeForReturn( returnTypeAnnotation, - `Unspopported return type for ${prop.name}. Found: ${prop.typeAnnotation.returnTypeAnnotation.type}`, + typeName => + `Unsupported return type for ${prop.name}. Found: ${typeName}`, ), ) .replace('::_ARGS_::', nativeArgs); diff --git a/packages/react-native-codegen/src/generators/modules/GenerateModuleMm.js b/packages/react-native-codegen/src/generators/modules/GenerateModuleMm.js index ab142588de96aa..a0807282399c0f 100644 --- a/packages/react-native-codegen/src/generators/modules/GenerateModuleMm.js +++ b/packages/react-native-codegen/src/generators/modules/GenerateModuleMm.js @@ -34,8 +34,8 @@ const proprertyDefTemplate = const moduleTemplate = ` ::_TURBOMODULE_METHOD_INVOKERS_:: -Native::_MODULE_NAME_::SpecJSI::Native::_MODULE_NAME_::SpecJSI(id instance, std::shared_ptr jsInvoker, std::shared_ptr nativeInvoker, id perfLogger) - : ObjCTurboModule("::_MODULE_NAME_::", instance, jsInvoker, nativeInvoker, perfLogger) { +Native::_MODULE_NAME_::SpecJSI::Native::_MODULE_NAME_::SpecJSI(const ObjCTurboModule::InitParams ¶ms) + : ObjCTurboModule(params) { ::_PROPERTIES_MAP_::::_CONVERSION_SELECTORS_:: }`.trim(); @@ -71,8 +71,18 @@ namespace react { } // namespace facebook `; -function translateReturnTypeToKind(type): string { - switch (type) { +function translateReturnTypeToKind(typeAnnotation): string { + switch (typeAnnotation.type) { + case 'ReservedFunctionValueTypeAnnotation': + switch (typeAnnotation.name) { + case 'RootTag': + return 'NumberKind'; + default: + (typeAnnotation.name: empty); + throw new Error( + `Invalid ReservedFunctionValueTypeName name, got ${typeAnnotation.name}`, + ); + } case 'VoidTypeAnnotation': return 'VoidKind'; case 'StringTypeAnnotation': @@ -92,23 +102,24 @@ function translateReturnTypeToKind(type): string { case 'ArrayTypeAnnotation': return 'ArrayKind'; default: - (type: empty); - throw new Error(`Unknown prop type for returning value, found: ${type}"`); + // TODO (T65847278): Figure out why this does not work. + // (typeAnnotation.type: empty); + throw new Error( + `Unknown prop type for returning value, found: ${typeAnnotation.type}"`, + ); } } -function tranlsateMethodForImplementation(property): string { +function translateMethodForImplementation(property): string { + const {returnTypeAnnotation} = property.typeAnnotation; + const numberOfParams = property.typeAnnotation.params.length + - (property.typeAnnotation.returnTypeAnnotation.type === - 'GenericPromiseTypeAnnotation' - ? 2 - : 0); + (returnTypeAnnotation.type === 'GenericPromiseTypeAnnotation' ? 2 : 0); const translatedArguments = property.typeAnnotation.params .map(param => param.name) .concat( - property.typeAnnotation.returnTypeAnnotation.type === - 'GenericPromiseTypeAnnotation' + returnTypeAnnotation.type === 'GenericPromiseTypeAnnotation' ? ['resolve', 'reject'] : [], ) @@ -117,20 +128,14 @@ function tranlsateMethodForImplementation(property): string { .concat(':'); if ( property.name === 'getConstants' && - property.typeAnnotation.returnTypeAnnotation.type === - 'ObjectTypeAnnotation' && - property.typeAnnotation.returnTypeAnnotation.properties && - property.typeAnnotation.returnTypeAnnotation.properties.length === 0 + returnTypeAnnotation.type === 'ObjectTypeAnnotation' && + returnTypeAnnotation.properties && + returnTypeAnnotation.properties.length === 0 ) { return ''; } return propertyTemplate - .replace( - /::_KIND_::/g, - translateReturnTypeToKind( - property.typeAnnotation.returnTypeAnnotation.type, - ), - ) + .replace(/::_KIND_::/g, translateReturnTypeToKind(returnTypeAnnotation)) .replace(/::_PROPERTY_NAME_::/g, property.name) .replace( /::_ARGS_::/g, @@ -220,7 +225,7 @@ module.exports = { .map(name => { const {properties} = nativeModules[name]; const translatedMethods = properties - .map(property => tranlsateMethodForImplementation(property)) + .map(property => translateMethodForImplementation(property)) .join('\n'); return moduleTemplate .replace(/::_TURBOMODULE_METHOD_INVOKERS_::/g, translatedMethods) diff --git a/packages/react-native-codegen/src/generators/modules/ObjCppUtils/GenerateStructs.js b/packages/react-native-codegen/src/generators/modules/ObjCppUtils/GenerateStructs.js index 3c44ef81ec1ab5..ae924598b0ee1f 100644 --- a/packages/react-native-codegen/src/generators/modules/ObjCppUtils/GenerateStructs.js +++ b/packages/react-native-codegen/src/generators/modules/ObjCppUtils/GenerateStructs.js @@ -50,6 +50,14 @@ function getInlineMethodSignature( ): string { const {typeAnnotation} = property; switch (typeAnnotation.type) { + case 'ReservedFunctionValueTypeAnnotation': + switch (typeAnnotation.name) { + case 'RootTag': + return `double ${property.name}() const;`; + default: + (typeAnnotation.name: empty); + throw new Error(`Unknown prop type, found: ${typeAnnotation.name}"`); + } case 'StringTypeAnnotation': return `NSString *${property.name}() const;`; case 'NumberTypeAnnotation': @@ -79,6 +87,16 @@ function getInlineMethodImplementation( ): string { const {typeAnnotation} = property; switch (typeAnnotation.type) { + case 'ReservedFunctionValueTypeAnnotation': + switch (typeAnnotation.name) { + case 'RootTag': + return inlineTemplate + .replace(/::_RETURN_TYPE_::/, 'double ') + .replace(/::_RETURN_VALUE_::/, 'RCTBridgingToDouble(p)'); + default: + (typeAnnotation.name: empty); + throw new Error(`Unknown prop type, found: ${typeAnnotation.name}"`); + } case 'StringTypeAnnotation': return inlineTemplate .replace(/::_RETURN_TYPE_::/, 'NSString *') diff --git a/packages/react-native-codegen/src/generators/modules/ObjCppUtils/GenerateStructsForConstants.js b/packages/react-native-codegen/src/generators/modules/ObjCppUtils/GenerateStructsForConstants.js index a0098654c82d5d..adf71dff20d49f 100644 --- a/packages/react-native-codegen/src/generators/modules/ObjCppUtils/GenerateStructsForConstants.js +++ b/packages/react-native-codegen/src/generators/modules/ObjCppUtils/GenerateStructsForConstants.js @@ -63,6 +63,14 @@ function getBuilderInputFieldDeclaration( } const {typeAnnotation} = property; switch (typeAnnotation.type) { + case 'ReservedFunctionValueTypeAnnotation': + switch (typeAnnotation.name) { + case 'RootTag': + return markRequiredIfNecessary('double'); + default: + (typeAnnotation.name: empty); + throw new Error(`Unknown prop type, found: ${typeAnnotation.name}"`); + } case 'StringTypeAnnotation': if (property.optional) { return 'NSString *' + property.name + ';'; @@ -146,6 +154,14 @@ function unsafeGetter(name: string, optional: boolean) { function getObjectProperty(property: ObjectParamTypeAnnotation): string { const {typeAnnotation} = property; switch (typeAnnotation.type) { + case 'ReservedFunctionValueTypeAnnotation': + switch (typeAnnotation.name) { + case 'RootTag': + return numberGetter(property.name, property.optional); + default: + (typeAnnotation.name: empty); + throw new Error(`Unknown prop type, found: ${typeAnnotation.name}"`); + } case 'NumberTypeAnnotation': case 'FloatTypeAnnotation': case 'Int32TypeAnnotation': diff --git a/packages/react-native-codegen/src/generators/modules/__test_fixtures__/fixtures.js b/packages/react-native-codegen/src/generators/modules/__test_fixtures__/fixtures.js index f13dae88bd50d5..25725ebaa42c26 100644 --- a/packages/react-native-codegen/src/generators/modules/__test_fixtures__/fixtures.js +++ b/packages/react-native-codegen/src/generators/modules/__test_fixtures__/fixtures.js @@ -183,6 +183,28 @@ const SIMPLE_NATIVE_MODULES: SchemaType = { optional: false, }, }, + { + name: 'getRootTag', + typeAnnotation: { + type: 'FunctionTypeAnnotation', + returnTypeAnnotation: { + nullable: false, + type: 'ReservedFunctionValueTypeAnnotation', + name: 'RootTag', + }, + params: [ + { + nullable: false, + name: 'arg', + typeAnnotation: { + type: 'ReservedFunctionValueTypeAnnotation', + name: 'RootTag', + }, + }, + ], + optional: false, + }, + }, { name: 'getValue', typeAnnotation: { diff --git a/packages/react-native-codegen/src/generators/modules/__test_fixtures__/structFixtures.js b/packages/react-native-codegen/src/generators/modules/__test_fixtures__/structFixtures.js index 3386c4ce192c14..cbb6fb58ec04c7 100644 --- a/packages/react-native-codegen/src/generators/modules/__test_fixtures__/structFixtures.js +++ b/packages/react-native-codegen/src/generators/modules/__test_fixtures__/structFixtures.js @@ -99,6 +99,14 @@ const SIMPLE_STRUCT: $ReadOnlyArray< ], }, }, + { + optional: false, + name: 'k', + typeAnnotation: { + type: 'ReservedFunctionValueTypeAnnotation', + name: 'RootTag', + }, + }, ], }, }, @@ -192,6 +200,14 @@ const SIMPLE_CONSTANTS: $ReadOnlyArray< ], }, }, + { + optional: false, + name: 'k', + typeAnnotation: { + type: 'ReservedFunctionValueTypeAnnotation', + name: 'RootTag', + }, + }, ], }, }, diff --git a/packages/react-native-codegen/src/generators/modules/__tests__/__snapshots__/GenerateModuleCpp-test.js.snap b/packages/react-native-codegen/src/generators/modules/__tests__/__snapshots__/GenerateModuleCpp-test.js.snap index dc3ddba143f078..f79507df8b3d3a 100644 --- a/packages/react-native-codegen/src/generators/modules/__tests__/__snapshots__/GenerateModuleCpp-test.js.snap +++ b/packages/react-native-codegen/src/generators/modules/__tests__/__snapshots__/GenerateModuleCpp-test.js.snap @@ -98,6 +98,9 @@ static jsi::Value __hostFunction_NativeSampleTurboModuleCxxSpecJSI_getArray(jsi: static jsi::Value __hostFunction_NativeSampleTurboModuleCxxSpecJSI_getObject(jsi::Runtime &rt, TurboModule &turboModule, const jsi::Value* args, size_t count) { return static_cast(&turboModule)->getObject(rt, args[0].getObject(rt)); } +static jsi::Value __hostFunction_NativeSampleTurboModuleCxxSpecJSI_getRootTag(jsi::Runtime &rt, TurboModule &turboModule, const jsi::Value* args, size_t count) { + return static_cast(&turboModule)->getRootTag(rt, args[0].getNumber()); +} static jsi::Value __hostFunction_NativeSampleTurboModuleCxxSpecJSI_getValue(jsi::Runtime &rt, TurboModule &turboModule, const jsi::Value* args, size_t count) { return static_cast(&turboModule)->getValue(rt, args[0].getNumber(), args[1].getString(rt), args[2].getObject(rt)); } @@ -119,6 +122,7 @@ NativeSampleTurboModuleCxxSpecJSI::NativeSampleTurboModuleCxxSpecJSI(std::shared methodMap_[\\"getString\\"] = MethodMetadata {1, __hostFunction_NativeSampleTurboModuleCxxSpecJSI_getString}; methodMap_[\\"getArray\\"] = MethodMetadata {1, __hostFunction_NativeSampleTurboModuleCxxSpecJSI_getArray}; methodMap_[\\"getObject\\"] = MethodMetadata {1, __hostFunction_NativeSampleTurboModuleCxxSpecJSI_getObject}; + methodMap_[\\"getRootTag\\"] = MethodMetadata {1, __hostFunction_NativeSampleTurboModuleCxxSpecJSI_getRootTag}; methodMap_[\\"getValue\\"] = MethodMetadata {3, __hostFunction_NativeSampleTurboModuleCxxSpecJSI_getValue}; methodMap_[\\"getValueWithCallback\\"] = MethodMetadata {1, __hostFunction_NativeSampleTurboModuleCxxSpecJSI_getValueWithCallback}; methodMap_[\\"getValueWithPromise\\"] = MethodMetadata {1, __hostFunction_NativeSampleTurboModuleCxxSpecJSI_getValueWithPromise}; diff --git a/packages/react-native-codegen/src/generators/modules/__tests__/__snapshots__/GenerateModuleH-test.js.snap b/packages/react-native-codegen/src/generators/modules/__tests__/__snapshots__/GenerateModuleH-test.js.snap index 9a6328bbf103a4..2fcc8834fa2372 100644 --- a/packages/react-native-codegen/src/generators/modules/__tests__/__snapshots__/GenerateModuleH-test.js.snap +++ b/packages/react-native-codegen/src/generators/modules/__tests__/__snapshots__/GenerateModuleH-test.js.snap @@ -93,6 +93,7 @@ virtual double getNumber(jsi::Runtime &rt, double arg) = 0; virtual jsi::String getString(jsi::Runtime &rt, const jsi::String &arg) = 0; virtual jsi::Array getArray(jsi::Runtime &rt, const jsi::Array &arg) = 0; virtual jsi::Object getObject(jsi::Runtime &rt, const jsi::Object &arg) = 0; +virtual double getRootTag(jsi::Runtime &rt, double arg) = 0; virtual jsi::Object getValue(jsi::Runtime &rt, double x, const jsi::String &y, const jsi::Object &z) = 0; virtual void getValueWithCallback(jsi::Runtime &rt, const jsi::Function &callback) = 0; virtual jsi::Value getValueWithPromise(jsi::Runtime &rt, bool error) = 0; diff --git a/packages/react-native-codegen/src/generators/modules/__tests__/__snapshots__/GenerateModuleHObjCpp-test.js.snap b/packages/react-native-codegen/src/generators/modules/__tests__/__snapshots__/GenerateModuleHObjCpp-test.js.snap index 9fecc865e8aea3..948c86afc4f0e8 100644 --- a/packages/react-native-codegen/src/generators/modules/__tests__/__snapshots__/GenerateModuleHObjCpp-test.js.snap +++ b/packages/react-native-codegen/src/generators/modules/__tests__/__snapshots__/GenerateModuleHObjCpp-test.js.snap @@ -158,7 +158,7 @@ namespace react { class JSI_EXPORT NativeSampleTurboModuleSpecJSI : public ObjCTurboModule { public: - NativeSampleTurboModuleSpecJSI(id instance, std::shared_ptr jsInvoker, std::shared_ptr nativeInvoker, id perfLogger); + NativeSampleTurboModuleSpecJSI(const ObjCTurboModule::InitParams ¶ms); }; } // namespace react @@ -207,7 +207,7 @@ namespace react { class JSI_EXPORT NativeSampleTurboModuleSpecJSI : public ObjCTurboModule { public: - NativeSampleTurboModuleSpecJSI(id instance, std::shared_ptr jsInvoker, std::shared_ptr nativeInvoker, id perfLogger); + NativeSampleTurboModuleSpecJSI(const ObjCTurboModule::InitParams ¶ms); }; } // namespace react @@ -298,6 +298,7 @@ inline JS::NativeSampleTurboModule::Constants::Builder::Builder(Constants i) : _ - (NSString *) getString:(NSString *)arg; - (NSArray> *) getArray:(NSArray *)arg; - (NSDictionary *) getObject:(NSDictionary *)arg; +- (NSNumber *) getRootTag:(double)arg; - (NSDictionary *) getValue:(double)x y:(NSString *)y z:(NSDictionary *)z; @@ -313,7 +314,7 @@ namespace react { class JSI_EXPORT NativeSampleTurboModuleSpecJSI : public ObjCTurboModule { public: - NativeSampleTurboModuleSpecJSI(id instance, std::shared_ptr jsInvoker, std::shared_ptr nativeInvoker, id perfLogger); + NativeSampleTurboModuleSpecJSI(const ObjCTurboModule::InitParams ¶ms); }; } // namespace react @@ -372,12 +373,12 @@ namespace react { class JSI_EXPORT NativeSampleTurboModuleSpecJSI : public ObjCTurboModule { public: - NativeSampleTurboModuleSpecJSI(id instance, std::shared_ptr jsInvoker, std::shared_ptr nativeInvoker, id perfLogger); + NativeSampleTurboModuleSpecJSI(const ObjCTurboModule::InitParams ¶ms); }; class JSI_EXPORT NativeSample2TurboModuleSpecJSI : public ObjCTurboModule { public: - NativeSample2TurboModuleSpecJSI(id instance, std::shared_ptr jsInvoker, std::shared_ptr nativeInvoker, id perfLogger); + NativeSample2TurboModuleSpecJSI(const ObjCTurboModule::InitParams ¶ms); }; } // namespace react @@ -435,12 +436,12 @@ namespace react { class JSI_EXPORT NativeSampleTurboModuleSpecJSI : public ObjCTurboModule { public: - NativeSampleTurboModuleSpecJSI(id instance, std::shared_ptr jsInvoker, std::shared_ptr nativeInvoker, id perfLogger); + NativeSampleTurboModuleSpecJSI(const ObjCTurboModule::InitParams ¶ms); }; class JSI_EXPORT NativeSample2TurboModuleSpecJSI : public ObjCTurboModule { public: - NativeSample2TurboModuleSpecJSI(id instance, std::shared_ptr jsInvoker, std::shared_ptr nativeInvoker, id perfLogger); + NativeSample2TurboModuleSpecJSI(const ObjCTurboModule::InitParams ¶ms); }; } // namespace react diff --git a/packages/react-native-codegen/src/generators/modules/__tests__/__snapshots__/GenerateModuleMm-test.js.snap b/packages/react-native-codegen/src/generators/modules/__tests__/__snapshots__/GenerateModuleMm-test.js.snap index 126bc5aa37330e..7b9ffc955e1b8d 100644 --- a/packages/react-native-codegen/src/generators/modules/__tests__/__snapshots__/GenerateModuleMm-test.js.snap +++ b/packages/react-native-codegen/src/generators/modules/__tests__/__snapshots__/GenerateModuleMm-test.js.snap @@ -37,8 +37,8 @@ static facebook::jsi::Value __hostFunction_NativeSampleTurboModuleSpecJSI_diffic .invokeObjCMethod(rt, ObjectKind, \\"difficult\\", @selector(difficult:), args, count); } -NativeSampleTurboModuleSpecJSI::NativeSampleTurboModuleSpecJSI(id instance, std::shared_ptr jsInvoker, std::shared_ptr nativeInvoker, id perfLogger) - : ObjCTurboModule(\\"SampleTurboModule\\", instance, jsInvoker, nativeInvoker, perfLogger) { +NativeSampleTurboModuleSpecJSI::NativeSampleTurboModuleSpecJSI(const ObjCTurboModule::InitParams ¶ms) + : ObjCTurboModule(params) { methodMap_[\\"difficult\\"] = MethodMetadata {1, __hostFunction_NativeSampleTurboModuleSpecJSI_difficult}; setMethodArgConversionSelector(@\\"difficult\\", 0, @\\"JS_NativeSampleTurboModule_SpecDifficultA:\\"); } @@ -67,8 +67,8 @@ namespace react { -NativeSampleTurboModuleSpecJSI::NativeSampleTurboModuleSpecJSI(id instance, std::shared_ptr jsInvoker, std::shared_ptr nativeInvoker, id perfLogger) - : ObjCTurboModule(\\"SampleTurboModule\\", instance, jsInvoker, nativeInvoker, perfLogger) { +NativeSampleTurboModuleSpecJSI::NativeSampleTurboModuleSpecJSI(const ObjCTurboModule::InitParams ¶ms) + : ObjCTurboModule(params) { } @@ -122,6 +122,10 @@ static facebook::jsi::Value __hostFunction_NativeSampleTurboModuleSpecJSI_getObj return static_cast(turboModule) .invokeObjCMethod(rt, ObjectKind, \\"getObject\\", @selector(getObject:), args, count); } +static facebook::jsi::Value __hostFunction_NativeSampleTurboModuleSpecJSI_getRootTag(facebook::jsi::Runtime& rt, TurboModule &turboModule, const facebook::jsi::Value* args, size_t count) { + return static_cast(turboModule) + .invokeObjCMethod(rt, NumberKind, \\"getRootTag\\", @selector(getRootTag:), args, count); +} static facebook::jsi::Value __hostFunction_NativeSampleTurboModuleSpecJSI_getValue(facebook::jsi::Runtime& rt, TurboModule &turboModule, const facebook::jsi::Value* args, size_t count) { return static_cast(turboModule) .invokeObjCMethod(rt, ObjectKind, \\"getValue\\", @selector(getValue:y:z:), args, count); @@ -135,8 +139,8 @@ static facebook::jsi::Value __hostFunction_NativeSampleTurboModuleSpecJSI_getVal .invokeObjCMethod(rt, PromiseKind, \\"getValueWithPromise\\", @selector(getValueWithPromise:resolve:reject:), args, count); } -NativeSampleTurboModuleSpecJSI::NativeSampleTurboModuleSpecJSI(id instance, std::shared_ptr jsInvoker, std::shared_ptr nativeInvoker, id perfLogger) - : ObjCTurboModule(\\"SampleTurboModule\\", instance, jsInvoker, nativeInvoker, perfLogger) { +NativeSampleTurboModuleSpecJSI::NativeSampleTurboModuleSpecJSI(const ObjCTurboModule::InitParams ¶ms) + : ObjCTurboModule(params) { methodMap_[\\"getConstants\\"] = MethodMetadata {0, __hostFunction_NativeSampleTurboModuleSpecJSI_getConstants}; methodMap_[\\"voidFunc\\"] = MethodMetadata {0, __hostFunction_NativeSampleTurboModuleSpecJSI_voidFunc}; methodMap_[\\"getBool\\"] = MethodMetadata {1, __hostFunction_NativeSampleTurboModuleSpecJSI_getBool}; @@ -144,6 +148,7 @@ NativeSampleTurboModuleSpecJSI::NativeSampleTurboModuleSpecJSI(id instance, std::shared_ptr jsInvoker, std::shared_ptr nativeInvoker, id perfLogger) - : ObjCTurboModule(\\"SampleTurboModule\\", instance, jsInvoker, nativeInvoker, perfLogger) { +NativeSampleTurboModuleSpecJSI::NativeSampleTurboModuleSpecJSI(const ObjCTurboModule::InitParams ¶ms) + : ObjCTurboModule(params) { methodMap_[\\"voidFunc\\"] = MethodMetadata {0, __hostFunction_NativeSampleTurboModuleSpecJSI_voidFunc}; } @@ -187,8 +192,8 @@ static facebook::jsi::Value __hostFunction_NativeSample2TurboModuleSpecJSI_voidF .invokeObjCMethod(rt, VoidKind, \\"voidFunc\\", @selector(voidFunc), args, count); } -NativeSample2TurboModuleSpecJSI::NativeSample2TurboModuleSpecJSI(id instance, std::shared_ptr jsInvoker, std::shared_ptr nativeInvoker, id perfLogger) - : ObjCTurboModule(\\"Sample2TurboModule\\", instance, jsInvoker, nativeInvoker, perfLogger) { +NativeSample2TurboModuleSpecJSI::NativeSample2TurboModuleSpecJSI(const ObjCTurboModule::InitParams ¶ms) + : ObjCTurboModule(params) { methodMap_[\\"voidFunc\\"] = MethodMetadata {0, __hostFunction_NativeSample2TurboModuleSpecJSI_voidFunc}; } @@ -221,8 +226,8 @@ static facebook::jsi::Value __hostFunction_NativeSampleTurboModuleSpecJSI_voidFu .invokeObjCMethod(rt, VoidKind, \\"voidFunc\\", @selector(voidFunc), args, count); } -NativeSampleTurboModuleSpecJSI::NativeSampleTurboModuleSpecJSI(id instance, std::shared_ptr jsInvoker, std::shared_ptr nativeInvoker, id perfLogger) - : ObjCTurboModule(\\"SampleTurboModule\\", instance, jsInvoker, nativeInvoker, perfLogger) { +NativeSampleTurboModuleSpecJSI::NativeSampleTurboModuleSpecJSI(const ObjCTurboModule::InitParams ¶ms) + : ObjCTurboModule(params) { methodMap_[\\"voidFunc\\"] = MethodMetadata {0, __hostFunction_NativeSampleTurboModuleSpecJSI_voidFunc}; } static facebook::jsi::Value __hostFunction_NativeSample2TurboModuleSpecJSI_voidFunc(facebook::jsi::Runtime& rt, TurboModule &turboModule, const facebook::jsi::Value* args, size_t count) { @@ -230,8 +235,8 @@ static facebook::jsi::Value __hostFunction_NativeSample2TurboModuleSpecJSI_voidF .invokeObjCMethod(rt, VoidKind, \\"voidFunc\\", @selector(voidFunc), args, count); } -NativeSample2TurboModuleSpecJSI::NativeSample2TurboModuleSpecJSI(id instance, std::shared_ptr jsInvoker, std::shared_ptr nativeInvoker, id perfLogger) - : ObjCTurboModule(\\"Sample2TurboModule\\", instance, jsInvoker, nativeInvoker, perfLogger) { +NativeSample2TurboModuleSpecJSI::NativeSample2TurboModuleSpecJSI(const ObjCTurboModule::InitParams ¶ms) + : ObjCTurboModule(params) { methodMap_[\\"voidFunc\\"] = MethodMetadata {0, __hostFunction_NativeSample2TurboModuleSpecJSI_voidFunc}; } diff --git a/packages/react-native-codegen/src/generators/modules/__tests__/__snapshots__/GenerateStructs-test.js.snap b/packages/react-native-codegen/src/generators/modules/__tests__/__snapshots__/GenerateStructs-test.js.snap index 69ed01654183cb..75bb7bfe5dbde1 100644 --- a/packages/react-native-codegen/src/generators/modules/__tests__/__snapshots__/GenerateStructs-test.js.snap +++ b/packages/react-native-codegen/src/generators/modules/__tests__/__snapshots__/GenerateStructs-test.js.snap @@ -101,6 +101,7 @@ namespace JS { RCTRequired b; RCTRequired c; RCTRequired d; + RCTRequired k; }; /** Initialize with a set of values */ @@ -132,6 +133,8 @@ auto c = i.c.get(); d[@\\"c\\"] = c; auto d = i.d.get(); d[@\\"d\\"] = d.buildUnsafeRawValue(); +auto k = i.k.get(); + d[@\\"k\\"] = @(k); return d; }) {} inline JS::NativeSampleTurboModule::Constants::Builder::Builder(Constants i) : _factory(^{ @@ -188,6 +191,7 @@ namespace JS { double b() const; NSString *c() const; JS::NativeSampleTurboModule::SpecSampleFuncReturnTypeD d() const; + double k() const; SpecSampleFuncReturnType(NSDictionary *const v) : _v(v) {} private: @@ -228,6 +232,13 @@ inline JS::NativeSampleTurboModule::SpecSampleFuncReturnTypeD JS::NativeSampleTu } +inline double JS::NativeSampleTurboModule::SpecSampleFuncReturnType::k() const +{ + id const p = _v[@\\"k\\"]; + return RCTBridgingToDouble(p); +} + + inline bool JS::NativeSampleTurboModule::SpecSampleFuncReturnTypeD::e() const { id const p = _v[@\\"e\\"]; diff --git a/packages/react-native-codegen/src/parsers/flow/components/__test_fixtures__/fixtures.js b/packages/react-native-codegen/src/parsers/flow/components/__test_fixtures__/fixtures.js index 5a6e24d43dc864..13e5131953358b 100644 --- a/packages/react-native-codegen/src/parsers/flow/components/__test_fixtures__/fixtures.js +++ b/packages/react-native-codegen/src/parsers/flow/components/__test_fixtures__/fixtures.js @@ -837,6 +837,7 @@ const codegenNativeCommands = require('codegenNativeCommands'); const codegenNativeComponent = require('codegenNativeComponent'); import type {Int32, Double, Float} from 'CodegenTypes'; +import type {RootTag} from 'RCTExport'; import type {ViewProps} from 'ViewPropTypes'; import type {HostComponent} from 'react-native'; @@ -849,6 +850,7 @@ export type ModuleProps = $ReadOnly<{| type NativeType = HostComponent; interface NativeCommands { + +handleRootTag: (viewRef: React.ElementRef, rootTag: RootTag) => void; +hotspotUpdate: (viewRef: React.ElementRef, x: Int32, y: Int32) => void; +scrollTo: ( viewRef: React.ElementRef, @@ -860,7 +862,7 @@ interface NativeCommands { } export const Commands = codegenNativeCommands({ - supportedCommands: ['hotspotUpdate', 'scrollTo'], + supportedCommands: ['handleRootTag', 'hotspotUpdate', 'scrollTo'], }); export default (codegenNativeComponent( diff --git a/packages/react-native-codegen/src/parsers/flow/components/__tests__/__snapshots__/component-parser-test.js.snap b/packages/react-native-codegen/src/parsers/flow/components/__tests__/__snapshots__/component-parser-test.js.snap index 5fdbb373abe9a9..8192bb77cdf40a 100644 --- a/packages/react-native-codegen/src/parsers/flow/components/__tests__/__snapshots__/component-parser-test.js.snap +++ b/packages/react-native-codegen/src/parsers/flow/components/__tests__/__snapshots__/component-parser-test.js.snap @@ -361,7 +361,7 @@ Object { "optional": false, "typeAnnotation": Object { "name": "ImageSourcePrimitive", - "type": "NativePrimitiveTypeAnnotation", + "type": "ReservedPropTypeAnnotation", }, }, Object { @@ -369,7 +369,7 @@ Object { "optional": true, "typeAnnotation": Object { "name": "ImageSourcePrimitive", - "type": "NativePrimitiveTypeAnnotation", + "type": "ReservedPropTypeAnnotation", }, }, Object { @@ -377,7 +377,7 @@ Object { "optional": true, "typeAnnotation": Object { "name": "ImageSourcePrimitive", - "type": "NativePrimitiveTypeAnnotation", + "type": "ReservedPropTypeAnnotation", }, }, Object { @@ -385,7 +385,7 @@ Object { "optional": false, "typeAnnotation": Object { "name": "ColorPrimitive", - "type": "NativePrimitiveTypeAnnotation", + "type": "ReservedPropTypeAnnotation", }, }, Object { @@ -393,7 +393,7 @@ Object { "optional": true, "typeAnnotation": Object { "name": "ColorPrimitive", - "type": "NativePrimitiveTypeAnnotation", + "type": "ReservedPropTypeAnnotation", }, }, Object { @@ -401,7 +401,7 @@ Object { "optional": true, "typeAnnotation": Object { "name": "ColorPrimitive", - "type": "NativePrimitiveTypeAnnotation", + "type": "ReservedPropTypeAnnotation", }, }, Object { @@ -409,7 +409,7 @@ Object { "optional": true, "typeAnnotation": Object { "name": "ColorPrimitive", - "type": "NativePrimitiveTypeAnnotation", + "type": "ReservedPropTypeAnnotation", }, }, Object { @@ -418,7 +418,7 @@ Object { "typeAnnotation": Object { "elementType": Object { "name": "ColorPrimitive", - "type": "NativePrimitiveTypeAnnotation", + "type": "ReservedPropTypeAnnotation", }, "type": "ArrayTypeAnnotation", }, @@ -429,7 +429,7 @@ Object { "typeAnnotation": Object { "elementType": Object { "name": "ColorPrimitive", - "type": "NativePrimitiveTypeAnnotation", + "type": "ReservedPropTypeAnnotation", }, "type": "ArrayTypeAnnotation", }, @@ -440,7 +440,7 @@ Object { "typeAnnotation": Object { "elementType": Object { "name": "ColorPrimitive", - "type": "NativePrimitiveTypeAnnotation", + "type": "ReservedPropTypeAnnotation", }, "type": "ArrayTypeAnnotation", }, @@ -451,7 +451,7 @@ Object { "typeAnnotation": Object { "elementType": Object { "name": "ColorPrimitive", - "type": "NativePrimitiveTypeAnnotation", + "type": "ReservedPropTypeAnnotation", }, "type": "ArrayTypeAnnotation", }, @@ -461,7 +461,7 @@ Object { "optional": false, "typeAnnotation": Object { "name": "ColorPrimitive", - "type": "NativePrimitiveTypeAnnotation", + "type": "ReservedPropTypeAnnotation", }, }, Object { @@ -469,7 +469,7 @@ Object { "optional": true, "typeAnnotation": Object { "name": "ColorPrimitive", - "type": "NativePrimitiveTypeAnnotation", + "type": "ReservedPropTypeAnnotation", }, }, Object { @@ -477,7 +477,7 @@ Object { "optional": true, "typeAnnotation": Object { "name": "ColorPrimitive", - "type": "NativePrimitiveTypeAnnotation", + "type": "ReservedPropTypeAnnotation", }, }, Object { @@ -485,7 +485,7 @@ Object { "optional": true, "typeAnnotation": Object { "name": "ColorPrimitive", - "type": "NativePrimitiveTypeAnnotation", + "type": "ReservedPropTypeAnnotation", }, }, Object { @@ -493,7 +493,7 @@ Object { "optional": false, "typeAnnotation": Object { "name": "PointPrimitive", - "type": "NativePrimitiveTypeAnnotation", + "type": "ReservedPropTypeAnnotation", }, }, Object { @@ -501,7 +501,7 @@ Object { "optional": true, "typeAnnotation": Object { "name": "PointPrimitive", - "type": "NativePrimitiveTypeAnnotation", + "type": "ReservedPropTypeAnnotation", }, }, Object { @@ -509,7 +509,7 @@ Object { "optional": true, "typeAnnotation": Object { "name": "PointPrimitive", - "type": "NativePrimitiveTypeAnnotation", + "type": "ReservedPropTypeAnnotation", }, }, Object { @@ -517,7 +517,7 @@ Object { "optional": true, "typeAnnotation": Object { "name": "PointPrimitive", - "type": "NativePrimitiveTypeAnnotation", + "type": "ReservedPropTypeAnnotation", }, }, Object { @@ -525,7 +525,7 @@ Object { "optional": false, "typeAnnotation": Object { "name": "EdgeInsetsPrimitive", - "type": "NativePrimitiveTypeAnnotation", + "type": "ReservedPropTypeAnnotation", }, }, Object { @@ -533,7 +533,7 @@ Object { "optional": true, "typeAnnotation": Object { "name": "EdgeInsetsPrimitive", - "type": "NativePrimitiveTypeAnnotation", + "type": "ReservedPropTypeAnnotation", }, }, Object { @@ -541,7 +541,7 @@ Object { "optional": true, "typeAnnotation": Object { "name": "EdgeInsetsPrimitive", - "type": "NativePrimitiveTypeAnnotation", + "type": "ReservedPropTypeAnnotation", }, }, Object { @@ -549,7 +549,7 @@ Object { "optional": true, "typeAnnotation": Object { "name": "EdgeInsetsPrimitive", - "type": "NativePrimitiveTypeAnnotation", + "type": "ReservedPropTypeAnnotation", }, }, ], @@ -819,7 +819,7 @@ Object { "typeAnnotation": Object { "elementType": Object { "name": "ImageSourcePrimitive", - "type": "NativePrimitiveTypeAnnotation", + "type": "ReservedPropTypeAnnotation", }, "type": "ArrayTypeAnnotation", }, @@ -830,7 +830,7 @@ Object { "typeAnnotation": Object { "elementType": Object { "name": "ImageSourcePrimitive", - "type": "NativePrimitiveTypeAnnotation", + "type": "ReservedPropTypeAnnotation", }, "type": "ArrayTypeAnnotation", }, @@ -841,7 +841,7 @@ Object { "typeAnnotation": Object { "elementType": Object { "name": "ImageSourcePrimitive", - "type": "NativePrimitiveTypeAnnotation", + "type": "ReservedPropTypeAnnotation", }, "type": "ArrayTypeAnnotation", }, @@ -852,7 +852,7 @@ Object { "typeAnnotation": Object { "elementType": Object { "name": "ImageSourcePrimitive", - "type": "NativePrimitiveTypeAnnotation", + "type": "ReservedPropTypeAnnotation", }, "type": "ArrayTypeAnnotation", }, @@ -863,7 +863,7 @@ Object { "typeAnnotation": Object { "elementType": Object { "name": "ColorPrimitive", - "type": "NativePrimitiveTypeAnnotation", + "type": "ReservedPropTypeAnnotation", }, "type": "ArrayTypeAnnotation", }, @@ -874,7 +874,7 @@ Object { "typeAnnotation": Object { "elementType": Object { "name": "ColorPrimitive", - "type": "NativePrimitiveTypeAnnotation", + "type": "ReservedPropTypeAnnotation", }, "type": "ArrayTypeAnnotation", }, @@ -885,7 +885,7 @@ Object { "typeAnnotation": Object { "elementType": Object { "name": "ColorPrimitive", - "type": "NativePrimitiveTypeAnnotation", + "type": "ReservedPropTypeAnnotation", }, "type": "ArrayTypeAnnotation", }, @@ -896,7 +896,7 @@ Object { "typeAnnotation": Object { "elementType": Object { "name": "ColorPrimitive", - "type": "NativePrimitiveTypeAnnotation", + "type": "ReservedPropTypeAnnotation", }, "type": "ArrayTypeAnnotation", }, @@ -907,7 +907,7 @@ Object { "typeAnnotation": Object { "elementType": Object { "name": "PointPrimitive", - "type": "NativePrimitiveTypeAnnotation", + "type": "ReservedPropTypeAnnotation", }, "type": "ArrayTypeAnnotation", }, @@ -918,7 +918,7 @@ Object { "typeAnnotation": Object { "elementType": Object { "name": "PointPrimitive", - "type": "NativePrimitiveTypeAnnotation", + "type": "ReservedPropTypeAnnotation", }, "type": "ArrayTypeAnnotation", }, @@ -929,7 +929,7 @@ Object { "typeAnnotation": Object { "elementType": Object { "name": "PointPrimitive", - "type": "NativePrimitiveTypeAnnotation", + "type": "ReservedPropTypeAnnotation", }, "type": "ArrayTypeAnnotation", }, @@ -940,7 +940,7 @@ Object { "typeAnnotation": Object { "elementType": Object { "name": "PointPrimitive", - "type": "NativePrimitiveTypeAnnotation", + "type": "ReservedPropTypeAnnotation", }, "type": "ArrayTypeAnnotation", }, @@ -951,7 +951,7 @@ Object { "typeAnnotation": Object { "elementType": Object { "name": "EdgeInsetsPrimitive", - "type": "NativePrimitiveTypeAnnotation", + "type": "ReservedPropTypeAnnotation", }, "type": "ArrayTypeAnnotation", }, @@ -962,7 +962,7 @@ Object { "typeAnnotation": Object { "elementType": Object { "name": "EdgeInsetsPrimitive", - "type": "NativePrimitiveTypeAnnotation", + "type": "ReservedPropTypeAnnotation", }, "type": "ArrayTypeAnnotation", }, @@ -973,7 +973,7 @@ Object { "typeAnnotation": Object { "elementType": Object { "name": "EdgeInsetsPrimitive", - "type": "NativePrimitiveTypeAnnotation", + "type": "ReservedPropTypeAnnotation", }, "type": "ArrayTypeAnnotation", }, @@ -984,7 +984,7 @@ Object { "typeAnnotation": Object { "elementType": Object { "name": "EdgeInsetsPrimitive", - "type": "NativePrimitiveTypeAnnotation", + "type": "ReservedPropTypeAnnotation", }, "type": "ArrayTypeAnnotation", }, @@ -2336,6 +2336,22 @@ Object { "components": Object { "Module": Object { "commands": Array [ + Object { + "name": "handleRootTag", + "optional": false, + "typeAnnotation": Object { + "params": Array [ + Object { + "name": "rootTag", + "typeAnnotation": Object { + "name": "RootTag", + "type": "ReservedFunctionValueTypeAnnotation", + }, + }, + ], + "type": "FunctionTypeAnnotation", + }, + }, Object { "name": "hotspotUpdate", "optional": false, @@ -5386,7 +5402,7 @@ Object { "optional": false, "typeAnnotation": Object { "name": "ImageSourcePrimitive", - "type": "NativePrimitiveTypeAnnotation", + "type": "ReservedPropTypeAnnotation", }, }, ], @@ -5403,7 +5419,7 @@ Object { "optional": true, "typeAnnotation": Object { "name": "ImageSourcePrimitive", - "type": "NativePrimitiveTypeAnnotation", + "type": "ReservedPropTypeAnnotation", }, }, ], @@ -5420,7 +5436,7 @@ Object { "optional": true, "typeAnnotation": Object { "name": "ImageSourcePrimitive", - "type": "NativePrimitiveTypeAnnotation", + "type": "ReservedPropTypeAnnotation", }, }, ], @@ -5437,7 +5453,7 @@ Object { "optional": true, "typeAnnotation": Object { "name": "ImageSourcePrimitive", - "type": "NativePrimitiveTypeAnnotation", + "type": "ReservedPropTypeAnnotation", }, }, ], @@ -5454,7 +5470,7 @@ Object { "optional": false, "typeAnnotation": Object { "name": "ColorPrimitive", - "type": "NativePrimitiveTypeAnnotation", + "type": "ReservedPropTypeAnnotation", }, }, ], @@ -5471,7 +5487,7 @@ Object { "optional": true, "typeAnnotation": Object { "name": "ColorPrimitive", - "type": "NativePrimitiveTypeAnnotation", + "type": "ReservedPropTypeAnnotation", }, }, ], @@ -5488,7 +5504,7 @@ Object { "optional": true, "typeAnnotation": Object { "name": "ColorPrimitive", - "type": "NativePrimitiveTypeAnnotation", + "type": "ReservedPropTypeAnnotation", }, }, ], @@ -5505,7 +5521,7 @@ Object { "optional": true, "typeAnnotation": Object { "name": "ColorPrimitive", - "type": "NativePrimitiveTypeAnnotation", + "type": "ReservedPropTypeAnnotation", }, }, ], @@ -5522,7 +5538,7 @@ Object { "optional": false, "typeAnnotation": Object { "name": "ColorPrimitive", - "type": "NativePrimitiveTypeAnnotation", + "type": "ReservedPropTypeAnnotation", }, }, ], @@ -5539,7 +5555,7 @@ Object { "optional": true, "typeAnnotation": Object { "name": "ColorPrimitive", - "type": "NativePrimitiveTypeAnnotation", + "type": "ReservedPropTypeAnnotation", }, }, ], @@ -5556,7 +5572,7 @@ Object { "optional": true, "typeAnnotation": Object { "name": "ColorPrimitive", - "type": "NativePrimitiveTypeAnnotation", + "type": "ReservedPropTypeAnnotation", }, }, ], @@ -5573,7 +5589,7 @@ Object { "optional": true, "typeAnnotation": Object { "name": "ColorPrimitive", - "type": "NativePrimitiveTypeAnnotation", + "type": "ReservedPropTypeAnnotation", }, }, ], @@ -5590,7 +5606,7 @@ Object { "optional": false, "typeAnnotation": Object { "name": "PointPrimitive", - "type": "NativePrimitiveTypeAnnotation", + "type": "ReservedPropTypeAnnotation", }, }, ], @@ -5607,7 +5623,7 @@ Object { "optional": true, "typeAnnotation": Object { "name": "PointPrimitive", - "type": "NativePrimitiveTypeAnnotation", + "type": "ReservedPropTypeAnnotation", }, }, ], @@ -5624,7 +5640,7 @@ Object { "optional": true, "typeAnnotation": Object { "name": "PointPrimitive", - "type": "NativePrimitiveTypeAnnotation", + "type": "ReservedPropTypeAnnotation", }, }, ], @@ -5641,7 +5657,7 @@ Object { "optional": true, "typeAnnotation": Object { "name": "PointPrimitive", - "type": "NativePrimitiveTypeAnnotation", + "type": "ReservedPropTypeAnnotation", }, }, ], @@ -5658,7 +5674,7 @@ Object { "optional": false, "typeAnnotation": Object { "name": "EdgeInsetsPrimitive", - "type": "NativePrimitiveTypeAnnotation", + "type": "ReservedPropTypeAnnotation", }, }, ], @@ -5675,7 +5691,7 @@ Object { "optional": true, "typeAnnotation": Object { "name": "EdgeInsetsPrimitive", - "type": "NativePrimitiveTypeAnnotation", + "type": "ReservedPropTypeAnnotation", }, }, ], @@ -5692,7 +5708,7 @@ Object { "optional": true, "typeAnnotation": Object { "name": "EdgeInsetsPrimitive", - "type": "NativePrimitiveTypeAnnotation", + "type": "ReservedPropTypeAnnotation", }, }, ], @@ -5709,7 +5725,7 @@ Object { "optional": true, "typeAnnotation": Object { "name": "EdgeInsetsPrimitive", - "type": "NativePrimitiveTypeAnnotation", + "type": "ReservedPropTypeAnnotation", }, }, ], diff --git a/packages/react-native-codegen/src/parsers/flow/components/commands.js b/packages/react-native-codegen/src/parsers/flow/components/commands.js index 0232a82d1f4002..769039be7a074d 100644 --- a/packages/react-native-codegen/src/parsers/flow/components/commands.js +++ b/packages/react-native-codegen/src/parsers/flow/components/commands.js @@ -47,6 +47,12 @@ function buildCommandSchema(property, types: TypeMap) { let returnType; switch (type) { + case 'RootTag': + returnType = { + type: 'ReservedFunctionValueTypeAnnotation', + name: 'RootTag', + }; + break; case 'BooleanTypeAnnotation': returnType = { type: 'BooleanTypeAnnotation', diff --git a/packages/react-native-codegen/src/parsers/flow/components/events.js b/packages/react-native-codegen/src/parsers/flow/components/events.js index bb748d48eece47..8767cf88a9a802 100644 --- a/packages/react-native-codegen/src/parsers/flow/components/events.js +++ b/packages/react-native-codegen/src/parsers/flow/components/events.js @@ -12,7 +12,7 @@ import type { EventTypeShape, - ObjectPropertyType, + EventObjectPropertyType, } from '../../../CodegenSchema.js'; function getPropertyType(name, optional, typeAnnotation) { @@ -126,7 +126,7 @@ function findEventArgumentsAndType( } } -function buildPropertiesForEvent(property): ObjectPropertyType { +function buildPropertiesForEvent(property): EventObjectPropertyType { const name = property.key.name; const optional = property.value.type === 'NullableTypeAnnotation' || property.optional; diff --git a/packages/react-native-codegen/src/parsers/flow/components/props.js b/packages/react-native-codegen/src/parsers/flow/components/props.js index 24e5889d4a3f56..9b549ac2337acd 100644 --- a/packages/react-native-codegen/src/parsers/flow/components/props.js +++ b/packages/react-native-codegen/src/parsers/flow/components/props.js @@ -90,23 +90,23 @@ function getTypeAnnotationForArray(name, typeAnnotation, defaultValue, types) { switch (type) { case 'ImageSource': return { - type: 'NativePrimitiveTypeAnnotation', + type: 'ReservedPropTypeAnnotation', name: 'ImageSourcePrimitive', }; case 'ColorValue': case 'ProcessedColorValue': return { - type: 'NativePrimitiveTypeAnnotation', + type: 'ReservedPropTypeAnnotation', name: 'ColorPrimitive', }; case 'PointValue': return { - type: 'NativePrimitiveTypeAnnotation', + type: 'ReservedPropTypeAnnotation', name: 'PointPrimitive', }; case 'EdgeInsetsValue': return { - type: 'NativePrimitiveTypeAnnotation', + type: 'ReservedPropTypeAnnotation', name: 'EdgeInsetsPrimitive', }; case 'Stringish': @@ -214,31 +214,31 @@ function getTypeAnnotation( switch (type) { case 'ImageSource': return { - type: 'NativePrimitiveTypeAnnotation', + type: 'ReservedPropTypeAnnotation', name: 'ImageSourcePrimitive', }; case 'ColorValue': case 'ProcessedColorValue': return { - type: 'NativePrimitiveTypeAnnotation', + type: 'ReservedPropTypeAnnotation', name: 'ColorPrimitive', }; case 'ColorArrayValue': return { type: 'ArrayTypeAnnotation', elementType: { - type: 'NativePrimitiveTypeAnnotation', + type: 'ReservedPropTypeAnnotation', name: 'ColorPrimitive', }, }; case 'PointValue': return { - type: 'NativePrimitiveTypeAnnotation', + type: 'ReservedPropTypeAnnotation', name: 'PointPrimitive', }; case 'EdgeInsetsValue': return { - type: 'NativePrimitiveTypeAnnotation', + type: 'ReservedPropTypeAnnotation', name: 'EdgeInsetsPrimitive', }; case 'Int32': diff --git a/packages/react-native-codegen/src/parsers/flow/modules/__test_fixtures__/fixtures.js b/packages/react-native-codegen/src/parsers/flow/modules/__test_fixtures__/fixtures.js index 11d87b9835cc96..e15a2f823f8f0e 100644 --- a/packages/react-native-codegen/src/parsers/flow/modules/__test_fixtures__/fixtures.js +++ b/packages/react-native-codegen/src/parsers/flow/modules/__test_fixtures__/fixtures.js @@ -132,7 +132,7 @@ export default TurboModuleRegistry.getEnforcing('SampleTurboModule'); `; -const NATIVE_MODULE_WITH_WITH_ALIASES = ` +const NATIVE_MODULE_WITH_ALIASES = ` /** * Copyright (c) Facebook, Inc. and its affiliates. * @@ -159,14 +159,14 @@ export interface Spec extends TurboModule { // Exported methods. +getNumber: Num2; +getVoid: () => Void; - +getArray: (a : Array) => {| a: B |}; + +getArray: (a: Array) => {| a: B |}; } export default TurboModuleRegistry.getEnforcing('SampleTurboModule'); `; -const NATIVE_MODULE_WITH_WITH_FLOAT_AND_INT32 = ` +const NATIVE_MODULE_WITH_FLOAT_AND_INT32 = ` /** * Copyright (c) Facebook, Inc. and its affiliates. * @@ -208,7 +208,31 @@ import type {TurboModule} from '../RCTExport'; import * as TurboModuleRegistry from '../TurboModuleRegistry'; export interface Spec extends TurboModule { - +getObject: (o : Object) => Object, + +getObject: (o: Object) => Object, +} + +export default TurboModuleRegistry.getEnforcing('SampleTurboModule'); + +`; + +const NATIVE_MODULE_WITH_ROOT_TAG = ` +/** + * Copyright (c) Facebook, Inc. and its affiliates. + * + * This source code is licensed under the MIT license found in the + * LICENSE file in the root directory of this source tree. + * + * @flow strict-local + * @format + */ + +'use strict'; + +import type {RootTag, TurboModule} from '../RCTExport'; +import * as TurboModuleRegistry from '../TurboModuleRegistry'; + +export interface Spec extends TurboModule { + +getRootTag: (rootTag: RootTag) => RootTag, } export default TurboModuleRegistry.getEnforcing('SampleTurboModule'); @@ -265,7 +289,7 @@ export default TurboModuleRegistry.getEnforcing('SampleTurboModule'); `; -const NATIVE_MODULE_WITH_OBJECT_WITH_OBJECT_DEIFNED_IN_FILE_AS_PROPERTY = ` +const NATIVE_MODULE_WITH_OBJECT_WITH_OBJECT_DEFINED_IN_FILE_AS_PROPERTY = ` /** * Copyright (c) Facebook, Inc. and its affiliates. * @@ -431,14 +455,15 @@ export default TurboModuleRegistry.getEnforcing('SampleTurboModule'); `; module.exports = { - NATIVE_MODULE_WITH_OBJECT_WITH_OBJECT_DEIFNED_IN_FILE_AS_PROPERTY, + NATIVE_MODULE_WITH_OBJECT_WITH_OBJECT_DEFINED_IN_FILE_AS_PROPERTY, NATIVE_MODULE_WITH_ARRAY_WITH_UNION_AND_TOUPLE, - NATIVE_MODULE_WITH_WITH_FLOAT_AND_INT32, - NATIVE_MODULE_WITH_WITH_ALIASES, + NATIVE_MODULE_WITH_FLOAT_AND_INT32, + NATIVE_MODULE_WITH_ALIASES, NATIVE_MODULE_WITH_PROMISE, NATIVE_MODULE_WITH_COMPLEX_OBJECTS, NATIVE_MODULE_WITH_COMPLEX_OBJECTS_WITH_NULLABLE_KEY, NATIVE_MODULE_WITH_SIMPLE_OBJECT, + NATIVE_MODULE_WITH_ROOT_TAG, NATIVE_MODULE_WITH_NULLABLE_PARAM, NATIVE_MODULE_WITH_BASIC_ARRAY, NATIVE_MODULE_WITH_COMPLEX_ARRAY, diff --git a/packages/react-native-codegen/src/parsers/flow/modules/__tests__/__snapshots__/module-parser-test.js.snap b/packages/react-native-codegen/src/parsers/flow/modules/__tests__/__snapshots__/module-parser-test.js.snap index 37673dd7c530f0..ebfd9e4637b22d 100644 --- a/packages/react-native-codegen/src/parsers/flow/modules/__tests__/__snapshots__/module-parser-test.js.snap +++ b/packages/react-native-codegen/src/parsers/flow/modules/__tests__/__snapshots__/module-parser-test.js.snap @@ -33,6 +33,85 @@ Object { } `; +exports[`RN Codegen Flow Parser can generate fixture NATIVE_MODULE_WITH_ALIASES 1`] = ` +Object { + "modules": Object { + "NativeSampleTurboModule": Object { + "nativeModules": Object { + "SampleTurboModule": Object { + "properties": Array [ + Object { + "name": "getNumber", + "typeAnnotation": Object { + "optional": false, + "params": Array [ + Object { + "name": "arg", + "nullable": false, + "typeAnnotation": Object { + "type": "NumberTypeAnnotation", + }, + }, + ], + "returnTypeAnnotation": Object { + "nullable": false, + "type": "VoidTypeAnnotation", + }, + "type": "FunctionTypeAnnotation", + }, + }, + Object { + "name": "getVoid", + "typeAnnotation": Object { + "optional": false, + "params": Array [], + "returnTypeAnnotation": Object { + "nullable": false, + "type": "VoidTypeAnnotation", + }, + "type": "FunctionTypeAnnotation", + }, + }, + Object { + "name": "getArray", + "typeAnnotation": Object { + "optional": false, + "params": Array [ + Object { + "name": "a", + "nullable": false, + "typeAnnotation": Object { + "elementType": Object { + "type": "NumberTypeAnnotation", + }, + "type": "ArrayTypeAnnotation", + }, + }, + ], + "returnTypeAnnotation": Object { + "nullable": false, + "properties": Array [ + Object { + "name": "a", + "optional": false, + "typeAnnotation": Object { + "type": "NumberTypeAnnotation", + }, + }, + ], + "type": "ObjectTypeAnnotation", + }, + "type": "FunctionTypeAnnotation", + }, + }, + ], + }, + }, + }, + }, +} +`; + exports[`RN Codegen Flow Parser can generate fixture NATIVE_MODULE_WITH_ARRAY_WITH_ALIAS 1`] = ` Object { "modules": Object { @@ -683,6 +762,61 @@ Object { } `; +exports[`RN Codegen Flow Parser can generate fixture NATIVE_MODULE_WITH_FLOAT_AND_INT32 1`] = ` +Object { + "modules": Object { + "NativeSampleTurboModule": Object { + "nativeModules": Object { + "SampleTurboModule": Object { + "properties": Array [ + Object { + "name": "getInt", + "typeAnnotation": Object { + "optional": false, + "params": Array [ + Object { + "name": "arg", + "nullable": false, + "typeAnnotation": Object { + "type": "Int32TypeAnnotation", + }, + }, + ], + "returnTypeAnnotation": Object { + "nullable": false, + "type": "Int32TypeAnnotation", + }, + "type": "FunctionTypeAnnotation", + }, + }, + Object { + "name": "getFloat", + "typeAnnotation": Object { + "optional": false, + "params": Array [ + Object { + "name": "arg", + "nullable": false, + "typeAnnotation": Object { + "type": "FloatTypeAnnotation", + }, + }, + ], + "returnTypeAnnotation": Object { + "nullable": false, + "type": "FloatTypeAnnotation", + }, + "type": "FunctionTypeAnnotation", + }, + }, + ], + }, + }, + }, + }, +} +`; + exports[`RN Codegen Flow Parser can generate fixture NATIVE_MODULE_WITH_NULLABLE_PARAM 1`] = ` Object { "modules": Object { @@ -718,7 +852,7 @@ Object { } `; -exports[`RN Codegen Flow Parser can generate fixture NATIVE_MODULE_WITH_OBJECT_WITH_OBJECT_DEIFNED_IN_FILE_AS_PROPERTY 1`] = ` +exports[`RN Codegen Flow Parser can generate fixture NATIVE_MODULE_WITH_OBJECT_WITH_OBJECT_DEFINED_IN_FILE_AS_PROPERTY 1`] = ` Object { "modules": Object { "NativeSampleTurboModule": Object { @@ -862,7 +996,7 @@ Object { } `; -exports[`RN Codegen Flow Parser can generate fixture NATIVE_MODULE_WITH_SIMPLE_OBJECT 1`] = ` +exports[`RN Codegen Flow Parser can generate fixture NATIVE_MODULE_WITH_ROOT_TAG 1`] = ` Object { "modules": Object { "NativeSampleTurboModule": Object { @@ -870,100 +1004,23 @@ Object { "SampleTurboModule": Object { "properties": Array [ Object { - "name": "getObject", - "typeAnnotation": Object { - "optional": false, - "params": Array [ - Object { - "name": "o", - "nullable": false, - "typeAnnotation": Object { - "type": "GenericObjectTypeAnnotation", - }, - }, - ], - "returnTypeAnnotation": Object { - "nullable": false, - "type": "GenericObjectTypeAnnotation", - }, - "type": "FunctionTypeAnnotation", - }, - }, - ], - }, - }, - }, - }, -} -`; - -exports[`RN Codegen Flow Parser can generate fixture NATIVE_MODULE_WITH_WITH_ALIASES 1`] = ` -Object { - "modules": Object { - "NativeSampleTurboModule": Object { - "nativeModules": Object { - "SampleTurboModule": Object { - "properties": Array [ - Object { - "name": "getNumber", - "typeAnnotation": Object { - "optional": false, - "params": Array [ - Object { - "name": "arg", - "nullable": false, - "typeAnnotation": Object { - "type": "NumberTypeAnnotation", - }, - }, - ], - "returnTypeAnnotation": Object { - "nullable": false, - "type": "VoidTypeAnnotation", - }, - "type": "FunctionTypeAnnotation", - }, - }, - Object { - "name": "getVoid", - "typeAnnotation": Object { - "optional": false, - "params": Array [], - "returnTypeAnnotation": Object { - "nullable": false, - "type": "VoidTypeAnnotation", - }, - "type": "FunctionTypeAnnotation", - }, - }, - Object { - "name": "getArray", + "name": "getRootTag", "typeAnnotation": Object { "optional": false, "params": Array [ Object { - "name": "a", + "name": "rootTag", "nullable": false, "typeAnnotation": Object { - "elementType": Object { - "type": "NumberTypeAnnotation", - }, - "type": "ArrayTypeAnnotation", + "name": "RootTag", + "type": "ReservedFunctionValueTypeAnnotation", }, }, ], "returnTypeAnnotation": Object { + "name": "RootTag", "nullable": false, - "properties": Array [ - Object { - "name": "a", - "optional": false, - "typeAnnotation": Object { - "type": "NumberTypeAnnotation", - }, - }, - ], - "type": "ObjectTypeAnnotation", + "type": "ReservedFunctionValueTypeAnnotation", }, "type": "FunctionTypeAnnotation", }, @@ -976,7 +1033,7 @@ Object { } `; -exports[`RN Codegen Flow Parser can generate fixture NATIVE_MODULE_WITH_WITH_FLOAT_AND_INT32 1`] = ` +exports[`RN Codegen Flow Parser can generate fixture NATIVE_MODULE_WITH_SIMPLE_OBJECT 1`] = ` Object { "modules": Object { "NativeSampleTurboModule": Object { @@ -984,41 +1041,21 @@ Object { "SampleTurboModule": Object { "properties": Array [ Object { - "name": "getInt", - "typeAnnotation": Object { - "optional": false, - "params": Array [ - Object { - "name": "arg", - "nullable": false, - "typeAnnotation": Object { - "type": "Int32TypeAnnotation", - }, - }, - ], - "returnTypeAnnotation": Object { - "nullable": false, - "type": "Int32TypeAnnotation", - }, - "type": "FunctionTypeAnnotation", - }, - }, - Object { - "name": "getFloat", + "name": "getObject", "typeAnnotation": Object { "optional": false, "params": Array [ Object { - "name": "arg", + "name": "o", "nullable": false, "typeAnnotation": Object { - "type": "FloatTypeAnnotation", + "type": "GenericObjectTypeAnnotation", }, }, ], "returnTypeAnnotation": Object { "nullable": false, - "type": "FloatTypeAnnotation", + "type": "GenericObjectTypeAnnotation", }, "type": "FunctionTypeAnnotation", }, diff --git a/packages/react-native-codegen/src/parsers/flow/modules/methods.js b/packages/react-native-codegen/src/parsers/flow/modules/methods.js index 79f0b413716e4a..7edb91ec1513e4 100644 --- a/packages/react-native-codegen/src/parsers/flow/modules/methods.js +++ b/packages/react-native-codegen/src/parsers/flow/modules/methods.js @@ -11,7 +11,7 @@ 'use strict'; import type { - MethodTypeShape, + NativeModuleMethodTypeShape, FunctionTypeAnnotationParam, FunctionTypeAnnotationReturn, FunctionTypeAnnotationParamTypeAnnotation, @@ -67,6 +67,11 @@ function getElementTypeForArrayOrObject( : typeAnnotation.type; switch (type) { + case 'RootTag': + return { + type: 'ReservedFunctionValueTypeAnnotation', + name: 'RootTag', + }; case 'Array': case '$ReadOnlyArray': if ( @@ -168,6 +173,15 @@ function getTypeAnnotationForParam( : typeAnnotation.type; switch (type) { + case 'RootTag': + return { + name: paramName, + nullable, + typeAnnotation: { + type: 'ReservedFunctionValueTypeAnnotation', + name: 'RootTag', + }, + }; case 'Array': case '$ReadOnlyArray': if ( @@ -300,6 +314,12 @@ function getReturnTypeAnnotation( : typeAnnotation.type; switch (type) { + case 'RootTag': + return { + nullable, + type: 'ReservedFunctionValueTypeAnnotation', + name: 'RootTag', + }; case 'Promise': if ( typeAnnotation.typeParameters && @@ -401,7 +421,7 @@ function getReturnTypeAnnotation( function buildMethodSchema( property: MethodAST, types: TypeMap, -): MethodTypeShape { +): NativeModuleMethodTypeShape { const name: string = property.key.name; const value = getValueFromTypes(property.value, types); if (value.type !== 'FunctionTypeAnnotation') { @@ -432,7 +452,7 @@ function buildMethodSchema( function getMethods( typeDefinition: $ReadOnlyArray, types: TypeMap, -): $ReadOnlyArray { +): $ReadOnlyArray { return typeDefinition .filter(property => property.type === 'ObjectTypeProperty') .map(property => buildMethodSchema(property, types)) diff --git a/packages/react-native-codegen/src/parsers/flow/modules/schema.js b/packages/react-native-codegen/src/parsers/flow/modules/schema.js index c40c3c8b591693..b2da0d43dd99c9 100644 --- a/packages/react-native-codegen/src/parsers/flow/modules/schema.js +++ b/packages/react-native-codegen/src/parsers/flow/modules/schema.js @@ -10,10 +10,13 @@ 'use strict'; -import type {SchemaType, MethodTypeShape} from '../../../CodegenSchema.js'; +import type { + SchemaType, + NativeModuleMethodTypeShape, +} from '../../../CodegenSchema.js'; export type NativeModuleSchemaBuilderConfig = $ReadOnly<{| - properties: $ReadOnlyArray, + properties: $ReadOnlyArray, |}>; function buildModuleSchema( diff --git a/scripts/android-e2e-test.js b/scripts/android-e2e-test.js index 692d19ae33f223..ccc4f32e646bb1 100644 --- a/scripts/android-e2e-test.js +++ b/scripts/android-e2e-test.js @@ -36,7 +36,7 @@ const wd = require('wd'); const path = require('path'); const fs = require('fs'); const pd = require('pretty-data2').pd; -require('colors'); + // value in ms to print out screen contents, set this value in CI to debug if tests are failing const appiumDebugInterval = process.env.APPIUM_DEBUG_INTERVAL; diff --git a/scripts/circleci/report-bundle-size.sh b/scripts/circleci/report-bundle-size.sh index 4f8c49535f7e32..c8fa61079383f4 100755 --- a/scripts/circleci/report-bundle-size.sh +++ b/scripts/circleci/report-bundle-size.sh @@ -8,7 +8,7 @@ case $1 in "android" | "ios") GITHUB_OWNER=${CIRCLE_PROJECT_USERNAME:-facebook} \ GITHUB_REPO=${CIRCLE_PROJECT_REPONAME:-react-native} \ - GITHUB_PR_NUMBER="$CIRCLE_PR_NUMBER" \ + GITHUB_PR_NUMBER="${CIRCLE_PR_NUMBER:-${CIRCLE_PULL_REQUEST##*/}}" \ GITHUB_REF=${CIRCLE_BRANCH} \ GITHUB_SHA=${CIRCLE_SHA1} \ node bots/report-bundle-size.js "$1" diff --git a/scripts/react_native_pods.rb b/scripts/react_native_pods.rb index 88a30720409df1..606d8f5dca7fb6 100644 --- a/scripts/react_native_pods.rb +++ b/scripts/react_native_pods.rb @@ -109,4 +109,31 @@ def flipper_post_install(installer) end end end + file_name = Dir.glob("*.xcodeproj")[0] + app_project = Xcodeproj::Project.open(file_name) + app_project.native_targets.each do |target| + target.build_configurations.each do |config| + cflags = config.build_settings['OTHER_CFLAGS'] || '$(inherited) ' + unless cflags.include? '-DFB_SONARKIT_ENABLED=1' + puts 'Adding -DFB_SONARKIT_ENABLED=1 in OTHER_CFLAGS...' + cflags << '-DFB_SONARKIT_ENABLED=1' + end + config.build_settings['OTHER_CFLAGS'] = cflags + if (config.build_settings['OTHER_SWIFT_FLAGS']) + unless config.build_settings['OTHER_SWIFT_FLAGS'].include? '-DFB_SONARKIT_ENABLED' + puts 'Adding -DFB_SONARKIT_ENABLED ...' + swift_flags = config.build_settings['OTHER_SWIFT_FLAGS'] + if swift_flags.split.last != '-Xcc' + config.build_settings['OTHER_SWIFT_FLAGS'] << ' -Xcc' + end + config.build_settings['OTHER_SWIFT_FLAGS'] << ' -DFB_SONARKIT_ENABLED' + end + else + puts 'OTHER_SWIFT_FLAGS does not exist thus assigning it to `$(inherited) -Xcc -DFB_SONARKIT_ENABLED`' + config.build_settings['OTHER_SWIFT_FLAGS'] = '$(inherited) -Xcc -DFB_SONARKIT_ENABLED' + end + app_project.save + end + end + installer.pods_project.save end diff --git a/scripts/test-manual-e2e.sh b/scripts/test-manual-e2e.sh index b38cbb3753575a..29236584606fa1 100755 --- a/scripts/test-manual-e2e.sh +++ b/scripts/test-manual-e2e.sh @@ -58,7 +58,6 @@ info "" read -n 1 adb shell am start -n com.facebook.react.uiapp/.RNTesterActivity - success "Installing CocoaPods dependencies" rm -rf RNTester/Pods (cd RNTester && pod install) diff --git a/template/App.js b/template/App.js index 23cd158d89565c..5d410f6da3f29a 100644 --- a/template/App.js +++ b/template/App.js @@ -7,82 +7,109 @@ */ import React from 'react'; +import type {Node} from 'react'; import { SafeAreaView, - StyleSheet, ScrollView, - View, - Text, StatusBar, + StyleSheet, + Text, + useColorScheme, + View, } from 'react-native'; import { - Header, - LearnMoreLinks, Colors, DebugInstructions, + Header, + LearnMoreLinks, ReloadInstructions, } from 'react-native/Libraries/NewAppScreen'; -const App: () => React$Node = () => { +const Section = ({children, title}): Node => { + const isDarkMode = useColorScheme() === 'dark'; return ( - <> - - - -

- {global.HermesInternal == null ? null : ( - - Engine: Hermes - - )} - - - Step One - - Edit App.js to change this - screen and then come back to see your edits. - - - - See Your Changes - - - - - - Debug - - - - - - Learn More - - Read the docs to discover what to do next: - - - - - - - + + + {title} + + + {children} + + + ); +}; + +const App: () => Node = () => { + const isDarkMode = useColorScheme() === 'dark'; + + const backgroundStyle = { + backgroundColor: isDarkMode ? Colors.darker : Colors.lighter, + }; + + const hermes = global.HermesInternal ? ( + + + Engine: Hermes + + + ) : null; + + return ( + + + +
+ {hermes} + +
+ Edit App.js to change this + screen and then come back to see your edits. +
+
+ +
+
+ +
+
+ Read the docs to discover what to do next: +
+ +
+ + ); }; const styles = StyleSheet.create({ - scrollView: { - backgroundColor: Colors.lighter, - }, engine: { position: 'absolute', right: 0, }, - body: { - backgroundColor: Colors.white, - }, sectionContainer: { marginTop: 32, paddingHorizontal: 24, @@ -90,19 +117,16 @@ const styles = StyleSheet.create({ sectionTitle: { fontSize: 24, fontWeight: '600', - color: Colors.black, }, sectionDescription: { marginTop: 8, fontSize: 18, fontWeight: '400', - color: Colors.dark, }, highlight: { fontWeight: '700', }, footer: { - color: Colors.dark, fontSize: 12, fontWeight: '600', padding: 4, diff --git a/template/_flowconfig b/template/_flowconfig index 10944845351b72..b9e2438817bbf9 100644 --- a/template/_flowconfig +++ b/template/_flowconfig @@ -73,4 +73,4 @@ untyped-import untyped-type-import [version] -^0.122.0 +^0.123.0 diff --git a/template/android/app/src/main/res/values/styles.xml b/template/android/app/src/main/res/values/styles.xml index 62fe59fa485459..9fab0be743760d 100644 --- a/template/android/app/src/main/res/values/styles.xml +++ b/template/android/app/src/main/res/values/styles.xml @@ -1,7 +1,7 @@ - diff --git a/template/android/gradle/wrapper/gradle-wrapper.jar b/template/android/gradle/wrapper/gradle-wrapper.jar index f3d88b1c2faf2f..490fda8577df6c 100644 Binary files a/template/android/gradle/wrapper/gradle-wrapper.jar and b/template/android/gradle/wrapper/gradle-wrapper.jar differ diff --git a/template/android/gradle/wrapper/gradle-wrapper.properties b/template/android/gradle/wrapper/gradle-wrapper.properties index 84226702066b81..6623300bebd011 100644 --- a/template/android/gradle/wrapper/gradle-wrapper.properties +++ b/template/android/gradle/wrapper/gradle-wrapper.properties @@ -1,5 +1,5 @@ distributionBase=GRADLE_USER_HOME distributionPath=wrapper/dists -distributionUrl=https\://services.gradle.org/distributions/gradle-6.2-all.zip +distributionUrl=https\://services.gradle.org/distributions/gradle-6.3-all.zip zipStoreBase=GRADLE_USER_HOME zipStorePath=wrapper/dists diff --git a/template/android/gradlew.bat b/template/android/gradlew.bat index 62bd9b9ccefea2..9109989e3cbf66 100644 --- a/template/android/gradlew.bat +++ b/template/android/gradlew.bat @@ -1,103 +1,103 @@ -@rem -@rem Copyright 2015 the original author or authors. -@rem -@rem Licensed under the Apache License, Version 2.0 (the "License"); -@rem you may not use this file except in compliance with the License. -@rem You may obtain a copy of the License at -@rem -@rem https://www.apache.org/licenses/LICENSE-2.0 -@rem -@rem Unless required by applicable law or agreed to in writing, software -@rem distributed under the License is distributed on an "AS IS" BASIS, -@rem WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. -@rem See the License for the specific language governing permissions and -@rem limitations under the License. -@rem - -@if "%DEBUG%" == "" @echo off -@rem ########################################################################## -@rem -@rem Gradle startup script for Windows -@rem -@rem ########################################################################## - -@rem Set local scope for the variables with windows NT shell -if "%OS%"=="Windows_NT" setlocal - -set DIRNAME=%~dp0 -if "%DIRNAME%" == "" set DIRNAME=. -set APP_BASE_NAME=%~n0 -set APP_HOME=%DIRNAME% - -@rem Resolve any "." and ".." in APP_HOME to make it shorter. -for %%i in ("%APP_HOME%") do set APP_HOME=%%~fi - -@rem Add default JVM options here. You can also use JAVA_OPTS and GRADLE_OPTS to pass JVM options to this script. -set DEFAULT_JVM_OPTS="-Xmx64m" "-Xms64m" - -@rem Find java.exe -if defined JAVA_HOME goto findJavaFromJavaHome - -set JAVA_EXE=java.exe -%JAVA_EXE% -version >NUL 2>&1 -if "%ERRORLEVEL%" == "0" goto init - -echo. -echo ERROR: JAVA_HOME is not set and no 'java' command could be found in your PATH. -echo. -echo Please set the JAVA_HOME variable in your environment to match the -echo location of your Java installation. - -goto fail - -:findJavaFromJavaHome -set JAVA_HOME=%JAVA_HOME:"=% -set JAVA_EXE=%JAVA_HOME%/bin/java.exe - -if exist "%JAVA_EXE%" goto init - -echo. -echo ERROR: JAVA_HOME is set to an invalid directory: %JAVA_HOME% -echo. -echo Please set the JAVA_HOME variable in your environment to match the -echo location of your Java installation. - -goto fail - -:init -@rem Get command-line arguments, handling Windows variants - -if not "%OS%" == "Windows_NT" goto win9xME_args - -:win9xME_args -@rem Slurp the command line arguments. -set CMD_LINE_ARGS= -set _SKIP=2 - -:win9xME_args_slurp -if "x%~1" == "x" goto execute - -set CMD_LINE_ARGS=%* - -:execute -@rem Setup the command line - -set CLASSPATH=%APP_HOME%\gradle\wrapper\gradle-wrapper.jar - -@rem Execute Gradle -"%JAVA_EXE%" %DEFAULT_JVM_OPTS% %JAVA_OPTS% %GRADLE_OPTS% "-Dorg.gradle.appname=%APP_BASE_NAME%" -classpath "%CLASSPATH%" org.gradle.wrapper.GradleWrapperMain %CMD_LINE_ARGS% - -:end -@rem End local scope for the variables with windows NT shell -if "%ERRORLEVEL%"=="0" goto mainEnd - -:fail -rem Set variable GRADLE_EXIT_CONSOLE if you need the _script_ return code instead of -rem the _cmd.exe /c_ return code! -if not "" == "%GRADLE_EXIT_CONSOLE%" exit 1 -exit /b 1 - -:mainEnd -if "%OS%"=="Windows_NT" endlocal - -:omega +@rem +@rem Copyright 2015 the original author or authors. +@rem +@rem Licensed under the Apache License, Version 2.0 (the "License"); +@rem you may not use this file except in compliance with the License. +@rem You may obtain a copy of the License at +@rem +@rem https://www.apache.org/licenses/LICENSE-2.0 +@rem +@rem Unless required by applicable law or agreed to in writing, software +@rem distributed under the License is distributed on an "AS IS" BASIS, +@rem WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +@rem See the License for the specific language governing permissions and +@rem limitations under the License. +@rem + +@if "%DEBUG%" == "" @echo off +@rem ########################################################################## +@rem +@rem Gradle startup script for Windows +@rem +@rem ########################################################################## + +@rem Set local scope for the variables with windows NT shell +if "%OS%"=="Windows_NT" setlocal + +set DIRNAME=%~dp0 +if "%DIRNAME%" == "" set DIRNAME=. +set APP_BASE_NAME=%~n0 +set APP_HOME=%DIRNAME% + +@rem Resolve any "." and ".." in APP_HOME to make it shorter. +for %%i in ("%APP_HOME%") do set APP_HOME=%%~fi + +@rem Add default JVM options here. You can also use JAVA_OPTS and GRADLE_OPTS to pass JVM options to this script. +set DEFAULT_JVM_OPTS="-Xmx64m" "-Xms64m" + +@rem Find java.exe +if defined JAVA_HOME goto findJavaFromJavaHome + +set JAVA_EXE=java.exe +%JAVA_EXE% -version >NUL 2>&1 +if "%ERRORLEVEL%" == "0" goto init + +echo. +echo ERROR: JAVA_HOME is not set and no 'java' command could be found in your PATH. +echo. +echo Please set the JAVA_HOME variable in your environment to match the +echo location of your Java installation. + +goto fail + +:findJavaFromJavaHome +set JAVA_HOME=%JAVA_HOME:"=% +set JAVA_EXE=%JAVA_HOME%/bin/java.exe + +if exist "%JAVA_EXE%" goto init + +echo. +echo ERROR: JAVA_HOME is set to an invalid directory: %JAVA_HOME% +echo. +echo Please set the JAVA_HOME variable in your environment to match the +echo location of your Java installation. + +goto fail + +:init +@rem Get command-line arguments, handling Windows variants + +if not "%OS%" == "Windows_NT" goto win9xME_args + +:win9xME_args +@rem Slurp the command line arguments. +set CMD_LINE_ARGS= +set _SKIP=2 + +:win9xME_args_slurp +if "x%~1" == "x" goto execute + +set CMD_LINE_ARGS=%* + +:execute +@rem Setup the command line + +set CLASSPATH=%APP_HOME%\gradle\wrapper\gradle-wrapper.jar + +@rem Execute Gradle +"%JAVA_EXE%" %DEFAULT_JVM_OPTS% %JAVA_OPTS% %GRADLE_OPTS% "-Dorg.gradle.appname=%APP_BASE_NAME%" -classpath "%CLASSPATH%" org.gradle.wrapper.GradleWrapperMain %CMD_LINE_ARGS% + +:end +@rem End local scope for the variables with windows NT shell +if "%ERRORLEVEL%"=="0" goto mainEnd + +:fail +rem Set variable GRADLE_EXIT_CONSOLE if you need the _script_ return code instead of +rem the _cmd.exe /c_ return code! +if not "" == "%GRADLE_EXIT_CONSOLE%" exit 1 +exit /b 1 + +:mainEnd +if "%OS%"=="Windows_NT" endlocal + +:omega diff --git a/template/ios/HelloWorld-tvOS/Info.plist b/template/ios/HelloWorld-tvOS/Info.plist deleted file mode 100644 index ecbd496be7dfa3..00000000000000 --- a/template/ios/HelloWorld-tvOS/Info.plist +++ /dev/null @@ -1,53 +0,0 @@ - - - - - CFBundleDevelopmentRegion - en - CFBundleExecutable - $(EXECUTABLE_NAME) - CFBundleIdentifier - $(PRODUCT_BUNDLE_IDENTIFIER) - CFBundleInfoDictionaryVersion - 6.0 - CFBundleName - $(PRODUCT_NAME) - CFBundlePackageType - APPL - CFBundleShortVersionString - 1.0 - CFBundleSignature - ???? - CFBundleVersion - 1 - LSRequiresIPhoneOS - - NSAppTransportSecurity - - NSExceptionDomains - - localhost - - NSExceptionAllowsInsecureHTTPLoads - - - - - NSLocationWhenInUseUsageDescription - - UILaunchStoryboardName - LaunchScreen - UIRequiredDeviceCapabilities - - armv7 - - UISupportedInterfaceOrientations - - UIInterfaceOrientationPortrait - UIInterfaceOrientationLandscapeLeft - UIInterfaceOrientationLandscapeRight - - UIViewControllerBasedStatusBarAppearance - - - diff --git a/template/ios/HelloWorld-tvOSTests/Info.plist b/template/ios/HelloWorld-tvOSTests/Info.plist deleted file mode 100644 index ba72822e8728ef..00000000000000 --- a/template/ios/HelloWorld-tvOSTests/Info.plist +++ /dev/null @@ -1,24 +0,0 @@ - - - - - CFBundleDevelopmentRegion - en - CFBundleExecutable - $(EXECUTABLE_NAME) - CFBundleIdentifier - $(PRODUCT_BUNDLE_IDENTIFIER) - CFBundleInfoDictionaryVersion - 6.0 - CFBundleName - $(PRODUCT_NAME) - CFBundlePackageType - BNDL - CFBundleShortVersionString - 1.0 - CFBundleSignature - ???? - CFBundleVersion - 1 - - diff --git a/template/ios/HelloWorld.xcodeproj/project.pbxproj b/template/ios/HelloWorld.xcodeproj/project.pbxproj index 9c5cc952f5bca1..0a340e5af348ee 100644 --- a/template/ios/HelloWorld.xcodeproj/project.pbxproj +++ b/template/ios/HelloWorld.xcodeproj/project.pbxproj @@ -11,10 +11,6 @@ 13B07FBC1A68108700A75B9A /* AppDelegate.m in Sources */ = {isa = PBXBuildFile; fileRef = 13B07FB01A68108700A75B9A /* AppDelegate.m */; }; 13B07FBF1A68108700A75B9A /* Images.xcassets in Resources */ = {isa = PBXBuildFile; fileRef = 13B07FB51A68108700A75B9A /* Images.xcassets */; }; 13B07FC11A68108700A75B9A /* main.m in Sources */ = {isa = PBXBuildFile; fileRef = 13B07FB71A68108700A75B9A /* main.m */; }; - 2D02E4BC1E0B4A80006451C7 /* AppDelegate.m in Sources */ = {isa = PBXBuildFile; fileRef = 13B07FB01A68108700A75B9A /* AppDelegate.m */; }; - 2D02E4BD1E0B4A84006451C7 /* Images.xcassets in Resources */ = {isa = PBXBuildFile; fileRef = 13B07FB51A68108700A75B9A /* Images.xcassets */; }; - 2D02E4BF1E0B4AB3006451C7 /* main.m in Sources */ = {isa = PBXBuildFile; fileRef = 13B07FB71A68108700A75B9A /* main.m */; }; - 2DCD954D1E0B4F2C00145EB5 /* HelloWorldTests.m in Sources */ = {isa = PBXBuildFile; fileRef = 00E356F21AD99517003FC87E /* HelloWorldTests.m */; }; 81AB9BB82411601600AC10FF /* LaunchScreen.storyboard in Resources */ = {isa = PBXBuildFile; fileRef = 81AB9BB72411601600AC10FF /* LaunchScreen.storyboard */; }; /* End PBXBuildFile section */ @@ -26,13 +22,6 @@ remoteGlobalIDString = 13B07F861A680F5B00A75B9A; remoteInfo = HelloWorld; }; - 2D02E4911E0B4A5D006451C7 /* PBXContainerItemProxy */ = { - isa = PBXContainerItemProxy; - containerPortal = 83CBB9F71A601CBA00E9B192 /* Project object */; - proxyType = 1; - remoteGlobalIDString = 2D02E47A1E0B4A5D006451C7; - remoteInfo = "HelloWorld-tvOS"; - }; /* End PBXContainerItemProxy section */ /* Begin PBXFileReference section */ @@ -46,8 +35,6 @@ 13B07FB51A68108700A75B9A /* Images.xcassets */ = {isa = PBXFileReference; lastKnownFileType = folder.assetcatalog; name = Images.xcassets; path = HelloWorld/Images.xcassets; sourceTree = ""; }; 13B07FB61A68108700A75B9A /* Info.plist */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = text.plist.xml; name = Info.plist; path = HelloWorld/Info.plist; sourceTree = ""; }; 13B07FB71A68108700A75B9A /* main.m */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.objc; name = main.m; path = HelloWorld/main.m; sourceTree = ""; }; - 2D02E47B1E0B4A5D006451C7 /* HelloWorld-tvOS.app */ = {isa = PBXFileReference; explicitFileType = wrapper.application; includeInIndex = 0; path = "HelloWorld-tvOS.app"; sourceTree = BUILT_PRODUCTS_DIR; }; - 2D02E4901E0B4A5D006451C7 /* HelloWorld-tvOSTests.xctest */ = {isa = PBXFileReference; explicitFileType = wrapper.cfbundle; includeInIndex = 0; path = "HelloWorld-tvOSTests.xctest"; sourceTree = BUILT_PRODUCTS_DIR; }; 81AB9BB72411601600AC10FF /* LaunchScreen.storyboard */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = file.storyboard; name = LaunchScreen.storyboard; path = HelloWorld/LaunchScreen.storyboard; sourceTree = ""; }; ED297162215061F000B7C4FE /* JavaScriptCore.framework */ = {isa = PBXFileReference; lastKnownFileType = wrapper.framework; name = JavaScriptCore.framework; path = System/Library/Frameworks/JavaScriptCore.framework; sourceTree = SDKROOT; }; ED2971642150620600B7C4FE /* JavaScriptCore.framework */ = {isa = PBXFileReference; lastKnownFileType = wrapper.framework; name = JavaScriptCore.framework; path = Platforms/AppleTVOS.platform/Developer/SDKs/AppleTVOS12.0.sdk/System/Library/Frameworks/JavaScriptCore.framework; sourceTree = DEVELOPER_DIR; }; @@ -68,20 +55,6 @@ ); runOnlyForDeploymentPostprocessing = 0; }; - 2D02E4781E0B4A5D006451C7 /* Frameworks */ = { - isa = PBXFrameworksBuildPhase; - buildActionMask = 2147483647; - files = ( - ); - runOnlyForDeploymentPostprocessing = 0; - }; - 2D02E48D1E0B4A5D006451C7 /* Frameworks */ = { - isa = PBXFrameworksBuildPhase; - buildActionMask = 2147483647; - files = ( - ); - runOnlyForDeploymentPostprocessing = 0; - }; /* End PBXFrameworksBuildPhase section */ /* Begin PBXGroup section */ @@ -151,8 +124,6 @@ children = ( 13B07F961A680F5B00A75B9A /* HelloWorld.app */, 00E356EE1AD99517003FC87E /* HelloWorldTests.xctest */, - 2D02E47B1E0B4A5D006451C7 /* HelloWorld-tvOS.app */, - 2D02E4901E0B4A5D006451C7 /* HelloWorld-tvOSTests.xctest */, ); name = Products; sourceTree = ""; @@ -197,43 +168,6 @@ productReference = 13B07F961A680F5B00A75B9A /* HelloWorld.app */; productType = "com.apple.product-type.application"; }; - 2D02E47A1E0B4A5D006451C7 /* HelloWorld-tvOS */ = { - isa = PBXNativeTarget; - buildConfigurationList = 2D02E4BA1E0B4A5E006451C7 /* Build configuration list for PBXNativeTarget "HelloWorld-tvOS" */; - buildPhases = ( - FD10A7F122414F3F0027D42C /* Start Packager */, - 2D02E4771E0B4A5D006451C7 /* Sources */, - 2D02E4781E0B4A5D006451C7 /* Frameworks */, - 2D02E4791E0B4A5D006451C7 /* Resources */, - 2D02E4CB1E0B4B27006451C7 /* Bundle React Native Code And Images */, - ); - buildRules = ( - ); - dependencies = ( - ); - name = "HelloWorld-tvOS"; - productName = "HelloWorld-tvOS"; - productReference = 2D02E47B1E0B4A5D006451C7 /* HelloWorld-tvOS.app */; - productType = "com.apple.product-type.application"; - }; - 2D02E48F1E0B4A5D006451C7 /* HelloWorld-tvOSTests */ = { - isa = PBXNativeTarget; - buildConfigurationList = 2D02E4BB1E0B4A5E006451C7 /* Build configuration list for PBXNativeTarget "HelloWorld-tvOSTests" */; - buildPhases = ( - 2D02E48C1E0B4A5D006451C7 /* Sources */, - 2D02E48D1E0B4A5D006451C7 /* Frameworks */, - 2D02E48E1E0B4A5D006451C7 /* Resources */, - ); - buildRules = ( - ); - dependencies = ( - 2D02E4921E0B4A5D006451C7 /* PBXTargetDependency */, - ); - name = "HelloWorld-tvOSTests"; - productName = "HelloWorld-tvOSTests"; - productReference = 2D02E4901E0B4A5D006451C7 /* HelloWorld-tvOSTests.xctest */; - productType = "com.apple.product-type.bundle.unit-test"; - }; /* End PBXNativeTarget section */ /* Begin PBXProject section */ @@ -249,15 +183,6 @@ 13B07F861A680F5B00A75B9A = { LastSwiftMigration = 1120; }; - 2D02E47A1E0B4A5D006451C7 = { - CreatedOnToolsVersion = 8.2.1; - ProvisioningStyle = Automatic; - }; - 2D02E48F1E0B4A5D006451C7 = { - CreatedOnToolsVersion = 8.2.1; - ProvisioningStyle = Automatic; - TestTargetID = 2D02E47A1E0B4A5D006451C7; - }; }; }; buildConfigurationList = 83CBB9FA1A601CBA00E9B192 /* Build configuration list for PBXProject "HelloWorld" */; @@ -275,8 +200,6 @@ targets = ( 13B07F861A680F5B00A75B9A /* HelloWorld */, 00E356ED1AD99517003FC87E /* HelloWorldTests */, - 2D02E47A1E0B4A5D006451C7 /* HelloWorld-tvOS */, - 2D02E48F1E0B4A5D006451C7 /* HelloWorld-tvOSTests */, ); }; /* End PBXProject section */ @@ -298,21 +221,6 @@ ); runOnlyForDeploymentPostprocessing = 0; }; - 2D02E4791E0B4A5D006451C7 /* Resources */ = { - isa = PBXResourcesBuildPhase; - buildActionMask = 2147483647; - files = ( - 2D02E4BD1E0B4A84006451C7 /* Images.xcassets in Resources */, - ); - runOnlyForDeploymentPostprocessing = 0; - }; - 2D02E48E1E0B4A5D006451C7 /* Resources */ = { - isa = PBXResourcesBuildPhase; - buildActionMask = 2147483647; - files = ( - ); - runOnlyForDeploymentPostprocessing = 0; - }; /* End PBXResourcesBuildPhase section */ /* Begin PBXShellScriptBuildPhase section */ @@ -330,20 +238,6 @@ shellPath = /bin/sh; shellScript = "export NODE_BINARY=node\n../node_modules/react-native/scripts/react-native-xcode.sh"; }; - 2D02E4CB1E0B4B27006451C7 /* Bundle React Native Code And Images */ = { - isa = PBXShellScriptBuildPhase; - buildActionMask = 2147483647; - files = ( - ); - inputPaths = ( - ); - name = "Bundle React Native Code And Images"; - outputPaths = ( - ); - runOnlyForDeploymentPostprocessing = 0; - shellPath = /bin/sh; - shellScript = "export NODE_BINARY=node\n../node_modules/react-native/scripts/react-native-xcode.sh"; - }; FD10A7F022414F080027D42C /* Start Packager */ = { isa = PBXShellScriptBuildPhase; buildActionMask = 2147483647; @@ -363,25 +257,6 @@ shellScript = "export RCT_METRO_PORT=\"${RCT_METRO_PORT:=8081}\"\necho \"export RCT_METRO_PORT=${RCT_METRO_PORT}\" > \"${SRCROOT}/../node_modules/react-native/scripts/.packager.env\"\nif [ -z \"${RCT_NO_LAUNCH_PACKAGER+xxx}\" ] ; then\n if nc -w 5 -z localhost ${RCT_METRO_PORT} ; then\n if ! curl -s \"http://localhost:${RCT_METRO_PORT}/status\" | grep -q \"packager-status:running\" ; then\n echo \"Port ${RCT_METRO_PORT} already in use, packager is either not running or not running correctly\"\n exit 2\n fi\n else\n open \"$SRCROOT/../node_modules/react-native/scripts/launchPackager.command\" || echo \"Can't start packager automatically\"\n fi\nfi\n"; showEnvVarsInLog = 0; }; - FD10A7F122414F3F0027D42C /* Start Packager */ = { - isa = PBXShellScriptBuildPhase; - buildActionMask = 2147483647; - files = ( - ); - inputFileListPaths = ( - ); - inputPaths = ( - ); - name = "Start Packager"; - outputFileListPaths = ( - ); - outputPaths = ( - ); - runOnlyForDeploymentPostprocessing = 0; - shellPath = /bin/sh; - shellScript = "export RCT_METRO_PORT=\"${RCT_METRO_PORT:=8081}\"\necho \"export RCT_METRO_PORT=${RCT_METRO_PORT}\" > \"${SRCROOT}/../node_modules/react-native/scripts/.packager.env\"\nif [ -z \"${RCT_NO_LAUNCH_PACKAGER+xxx}\" ] ; then\n if nc -w 5 -z localhost ${RCT_METRO_PORT} ; then\n if ! curl -s \"http://localhost:${RCT_METRO_PORT}/status\" | grep -q \"packager-status:running\" ; then\n echo \"Port ${RCT_METRO_PORT} already in use, packager is either not running or not running correctly\"\n exit 2\n fi\n else\n open \"$SRCROOT/../node_modules/react-native/scripts/launchPackager.command\" || echo \"Can't start packager automatically\"\n fi\nfi\n"; - showEnvVarsInLog = 0; - }; /* End PBXShellScriptBuildPhase section */ /* Begin PBXSourcesBuildPhase section */ @@ -402,23 +277,6 @@ ); runOnlyForDeploymentPostprocessing = 0; }; - 2D02E4771E0B4A5D006451C7 /* Sources */ = { - isa = PBXSourcesBuildPhase; - buildActionMask = 2147483647; - files = ( - 2D02E4BF1E0B4AB3006451C7 /* main.m in Sources */, - 2D02E4BC1E0B4A80006451C7 /* AppDelegate.m in Sources */, - ); - runOnlyForDeploymentPostprocessing = 0; - }; - 2D02E48C1E0B4A5D006451C7 /* Sources */ = { - isa = PBXSourcesBuildPhase; - buildActionMask = 2147483647; - files = ( - 2DCD954D1E0B4F2C00145EB5 /* HelloWorldTests.m in Sources */, - ); - runOnlyForDeploymentPostprocessing = 0; - }; /* End PBXSourcesBuildPhase section */ /* Begin PBXTargetDependency section */ @@ -427,11 +285,6 @@ target = 13B07F861A680F5B00A75B9A /* HelloWorld */; targetProxy = 00E356F41AD99517003FC87E /* PBXContainerItemProxy */; }; - 2D02E4921E0B4A5D006451C7 /* PBXTargetDependency */ = { - isa = PBXTargetDependency; - target = 2D02E47A1E0B4A5D006451C7 /* HelloWorld-tvOS */; - targetProxy = 2D02E4911E0B4A5D006451C7 /* PBXContainerItemProxy */; - }; /* End PBXTargetDependency section */ /* Begin XCBuildConfiguration section */ @@ -518,112 +371,6 @@ }; name = Release; }; - 2D02E4971E0B4A5E006451C7 /* Debug */ = { - isa = XCBuildConfiguration; - buildSettings = { - ASSETCATALOG_COMPILER_APPICON_NAME = "App Icon & Top Shelf Image"; - ASSETCATALOG_COMPILER_LAUNCHIMAGE_NAME = LaunchImage; - CLANG_ANALYZER_NONNULL = YES; - CLANG_WARN_DOCUMENTATION_COMMENTS = YES; - CLANG_WARN_INFINITE_RECURSION = YES; - CLANG_WARN_SUSPICIOUS_MOVE = YES; - DEBUG_INFORMATION_FORMAT = dwarf; - ENABLE_TESTABILITY = YES; - GCC_NO_COMMON_BLOCKS = YES; - INFOPLIST_FILE = "HelloWorld-tvOS/Info.plist"; - LD_RUNPATH_SEARCH_PATHS = "$(inherited) @executable_path/Frameworks"; - OTHER_LDFLAGS = ( - "$(inherited)", - "-ObjC", - "-lc++", - ); - PRODUCT_BUNDLE_IDENTIFIER = "org.reactjs.native.example.HelloWorld-tvOS"; - PRODUCT_NAME = "$(TARGET_NAME)"; - SDKROOT = appletvos; - TARGETED_DEVICE_FAMILY = 3; - TVOS_DEPLOYMENT_TARGET = 10.0; - }; - name = Debug; - }; - 2D02E4981E0B4A5E006451C7 /* Release */ = { - isa = XCBuildConfiguration; - buildSettings = { - ASSETCATALOG_COMPILER_APPICON_NAME = "App Icon & Top Shelf Image"; - ASSETCATALOG_COMPILER_LAUNCHIMAGE_NAME = LaunchImage; - CLANG_ANALYZER_NONNULL = YES; - CLANG_WARN_DOCUMENTATION_COMMENTS = YES; - CLANG_WARN_INFINITE_RECURSION = YES; - CLANG_WARN_SUSPICIOUS_MOVE = YES; - COPY_PHASE_STRIP = NO; - DEBUG_INFORMATION_FORMAT = "dwarf-with-dsym"; - GCC_NO_COMMON_BLOCKS = YES; - INFOPLIST_FILE = "HelloWorld-tvOS/Info.plist"; - LD_RUNPATH_SEARCH_PATHS = "$(inherited) @executable_path/Frameworks"; - OTHER_LDFLAGS = ( - "$(inherited)", - "-ObjC", - "-lc++", - ); - PRODUCT_BUNDLE_IDENTIFIER = "org.reactjs.native.example.HelloWorld-tvOS"; - PRODUCT_NAME = "$(TARGET_NAME)"; - SDKROOT = appletvos; - TARGETED_DEVICE_FAMILY = 3; - TVOS_DEPLOYMENT_TARGET = 10.0; - }; - name = Release; - }; - 2D02E4991E0B4A5E006451C7 /* Debug */ = { - isa = XCBuildConfiguration; - buildSettings = { - BUNDLE_LOADER = "$(TEST_HOST)"; - CLANG_ANALYZER_NONNULL = YES; - CLANG_WARN_DOCUMENTATION_COMMENTS = YES; - CLANG_WARN_INFINITE_RECURSION = YES; - CLANG_WARN_SUSPICIOUS_MOVE = YES; - DEBUG_INFORMATION_FORMAT = dwarf; - ENABLE_TESTABILITY = YES; - GCC_NO_COMMON_BLOCKS = YES; - INFOPLIST_FILE = "HelloWorld-tvOSTests/Info.plist"; - LD_RUNPATH_SEARCH_PATHS = "$(inherited) @executable_path/Frameworks @loader_path/Frameworks"; - OTHER_LDFLAGS = ( - "$(inherited)", - "-ObjC", - "-lc++", - ); - PRODUCT_BUNDLE_IDENTIFIER = "org.reactjs.native.example.HelloWorld-tvOSTests"; - PRODUCT_NAME = "$(TARGET_NAME)"; - SDKROOT = appletvos; - TEST_HOST = "$(BUILT_PRODUCTS_DIR)/HelloWorld-tvOS.app/HelloWorld-tvOS"; - TVOS_DEPLOYMENT_TARGET = 10.1; - }; - name = Debug; - }; - 2D02E49A1E0B4A5E006451C7 /* Release */ = { - isa = XCBuildConfiguration; - buildSettings = { - BUNDLE_LOADER = "$(TEST_HOST)"; - CLANG_ANALYZER_NONNULL = YES; - CLANG_WARN_DOCUMENTATION_COMMENTS = YES; - CLANG_WARN_INFINITE_RECURSION = YES; - CLANG_WARN_SUSPICIOUS_MOVE = YES; - COPY_PHASE_STRIP = NO; - DEBUG_INFORMATION_FORMAT = "dwarf-with-dsym"; - GCC_NO_COMMON_BLOCKS = YES; - INFOPLIST_FILE = "HelloWorld-tvOSTests/Info.plist"; - LD_RUNPATH_SEARCH_PATHS = "$(inherited) @executable_path/Frameworks @loader_path/Frameworks"; - OTHER_LDFLAGS = ( - "$(inherited)", - "-ObjC", - "-lc++", - ); - PRODUCT_BUNDLE_IDENTIFIER = "org.reactjs.native.example.HelloWorld-tvOSTests"; - PRODUCT_NAME = "$(TARGET_NAME)"; - SDKROOT = appletvos; - TEST_HOST = "$(BUILT_PRODUCTS_DIR)/HelloWorld-tvOS.app/HelloWorld-tvOS"; - TVOS_DEPLOYMENT_TARGET = 10.1; - }; - name = Release; - }; 83CBBA201A601CBA00E9B192 /* Debug */ = { isa = XCBuildConfiguration; buildSettings = { @@ -758,24 +505,6 @@ defaultConfigurationIsVisible = 0; defaultConfigurationName = Release; }; - 2D02E4BA1E0B4A5E006451C7 /* Build configuration list for PBXNativeTarget "HelloWorld-tvOS" */ = { - isa = XCConfigurationList; - buildConfigurations = ( - 2D02E4971E0B4A5E006451C7 /* Debug */, - 2D02E4981E0B4A5E006451C7 /* Release */, - ); - defaultConfigurationIsVisible = 0; - defaultConfigurationName = Release; - }; - 2D02E4BB1E0B4A5E006451C7 /* Build configuration list for PBXNativeTarget "HelloWorld-tvOSTests" */ = { - isa = XCConfigurationList; - buildConfigurations = ( - 2D02E4991E0B4A5E006451C7 /* Debug */, - 2D02E49A1E0B4A5E006451C7 /* Release */, - ); - defaultConfigurationIsVisible = 0; - defaultConfigurationName = Release; - }; 83CBB9FA1A601CBA00E9B192 /* Build configuration list for PBXProject "HelloWorld" */ = { isa = XCConfigurationList; buildConfigurations = ( diff --git a/template/ios/HelloWorld.xcodeproj/xcshareddata/xcschemes/HelloWorld-tvOS.xcscheme b/template/ios/HelloWorld.xcodeproj/xcshareddata/xcschemes/HelloWorld-tvOS.xcscheme deleted file mode 100644 index d4e27b270d01a1..00000000000000 --- a/template/ios/HelloWorld.xcodeproj/xcshareddata/xcschemes/HelloWorld-tvOS.xcscheme +++ /dev/null @@ -1,88 +0,0 @@ - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - diff --git a/template/ios/HelloWorld/AppDelegate.m b/template/ios/HelloWorld/AppDelegate.m index 91737c5d5bed69..59b62377cd4b65 100644 --- a/template/ios/HelloWorld/AppDelegate.m +++ b/template/ios/HelloWorld/AppDelegate.m @@ -36,7 +36,11 @@ - (BOOL)application:(UIApplication *)application didFinishLaunchingWithOptions:( moduleName:@"HelloWorld" initialProperties:nil]; - rootView.backgroundColor = [[UIColor alloc] initWithRed:1.0f green:1.0f blue:1.0f alpha:1]; + if (@available(iOS 13.0, *)) { + rootView.backgroundColor = [UIColor systemBackgroundColor]; + } else { + rootView.backgroundColor = [UIColor whiteColor]; + } self.window = [[UIWindow alloc] initWithFrame:[UIScreen mainScreen].bounds]; UIViewController *rootViewController = [UIViewController new]; diff --git a/template/ios/HelloWorld/LaunchScreen.storyboard b/template/ios/HelloWorld/LaunchScreen.storyboard index 0d0edbb9640b43..e13962e9bf5470 100644 --- a/template/ios/HelloWorld/LaunchScreen.storyboard +++ b/template/ios/HelloWorld/LaunchScreen.storyboard @@ -16,32 +16,21 @@ - - + - - - diff --git a/template/ios/Podfile b/template/ios/Podfile index 6e1ebd6181167f..73726efe1d9d8f 100644 --- a/template/ios/Podfile +++ b/template/ios/Podfile @@ -22,12 +22,3 @@ target 'HelloWorld' do flipper_post_install(installer) end end - -target 'HelloWorld-tvOS' do - # Pods for HelloWorld-tvOS - - target 'HelloWorld-tvOSTests' do - inherit! :search_paths - # Pods for testing - end -end diff --git a/yarn.lock b/yarn.lock index 0c06df011f8225..3defe0840ee560 100644 --- a/yarn.lock +++ b/yarn.lock @@ -2,218 +2,144 @@ # yarn lockfile v1 -"@babel/code-frame@^7.0.0": - version "7.0.0" - resolved "https://registry.yarnpkg.com/@babel/code-frame/-/code-frame-7.0.0.tgz#06e2ab19bdb535385559aabb5ba59729482800f8" - integrity sha512-OfC2uemaknXr87bdLUkWog7nYuliM9Ij5HUcajsVcMCpQrcLmtxRbVFTIqmcSkSeYRBFBRxs2FiUqFJDLdiebA== - dependencies: - "@babel/highlight" "^7.0.0" - -"@babel/code-frame@^7.5.5": - version "7.5.5" - resolved "https://registry.yarnpkg.com/@babel/code-frame/-/code-frame-7.5.5.tgz#bc0782f6d69f7b7d49531219699b988f669a8f9d" - integrity sha512-27d4lZoomVyo51VegxI20xZPuSHusqbQag/ztrBC7wegWoQ1nLREPVSKSW8byhTlzTKyNE4ifaTA6lCp7JjpFw== - dependencies: - "@babel/highlight" "^7.0.0" - -"@babel/code-frame@^7.8.3": +"@babel/code-frame@^7.0.0", "@babel/code-frame@^7.8.3": version "7.8.3" resolved "https://registry.yarnpkg.com/@babel/code-frame/-/code-frame-7.8.3.tgz#33e25903d7481181534e12ec0a25f16b6fcf419e" integrity sha512-a9gxpmdXtZEInkCSHUJDLHZVBgb1QS0jhss4cPP93EW7s+uC5bikET2twEF3KV+7rDblJcmNvTR7VJejqd2C2g== dependencies: "@babel/highlight" "^7.8.3" -"@babel/core@^7.0.0": - version "7.1.2" - resolved "https://registry.yarnpkg.com/@babel/core/-/core-7.1.2.tgz#f8d2a9ceb6832887329a7b60f9d035791400ba4e" - integrity sha512-IFeSSnjXdhDaoysIlev//UzHZbdEmm7D0EIH2qtse9xK7mXEZQpYjs2P00XlP1qYsYvid79p+Zgg6tz1mp6iVw== +"@babel/compat-data@^7.8.6", "@babel/compat-data@^7.9.0": + version "7.9.0" + resolved "https://registry.yarnpkg.com/@babel/compat-data/-/compat-data-7.9.0.tgz#04815556fc90b0c174abd2c0c1bb966faa036a6c" + integrity sha512-zeFQrr+284Ekvd9e7KAX954LkapWiOmQtsfHirhxqfdlX6MEC32iRE+pqUGlYIBchdevaCwvzxWGSy/YBNI85g== dependencies: - "@babel/code-frame" "^7.0.0" - "@babel/generator" "^7.1.2" - "@babel/helpers" "^7.1.2" - "@babel/parser" "^7.1.2" - "@babel/template" "^7.1.2" - "@babel/traverse" "^7.1.0" - "@babel/types" "^7.1.2" - convert-source-map "^1.1.0" - debug "^3.1.0" - json5 "^0.5.0" - lodash "^4.17.10" - resolve "^1.3.2" - semver "^5.4.1" - source-map "^0.5.0" + browserslist "^4.9.1" + invariant "^2.2.4" + semver "^5.5.0" -"@babel/core@^7.1.0", "@babel/core@^7.1.6": - version "7.2.2" - resolved "https://registry.yarnpkg.com/@babel/core/-/core-7.2.2.tgz#07adba6dde27bb5ad8d8672f15fde3e08184a687" - integrity sha512-59vB0RWt09cAct5EIe58+NzGP4TFSD3Bz//2/ELy3ZeTeKF6VTD1AXlH8BGGbCX0PuobZBsIzO7IAI9PH67eKw== +"@babel/core@^7.0.0", "@babel/core@^7.1.0", "@babel/core@^7.1.6", "@babel/core@^7.4.5", "@babel/core@^7.7.5": + version "7.9.0" + resolved "https://registry.yarnpkg.com/@babel/core/-/core-7.9.0.tgz#ac977b538b77e132ff706f3b8a4dbad09c03c56e" + integrity sha512-kWc7L0fw1xwvI0zi8OKVBuxRVefwGOrKSQMvrQ3dW+bIIavBY3/NpXmpjMy7bQnLgwgzWQZ8TlM57YHpHNHz4w== dependencies: - "@babel/code-frame" "^7.0.0" - "@babel/generator" "^7.2.2" - "@babel/helpers" "^7.2.0" - "@babel/parser" "^7.2.2" - "@babel/template" "^7.2.2" - "@babel/traverse" "^7.2.2" - "@babel/types" "^7.2.2" - convert-source-map "^1.1.0" - debug "^4.1.0" - json5 "^2.1.0" - lodash "^4.17.10" - resolve "^1.3.2" - semver "^5.4.1" - source-map "^0.5.0" - -"@babel/core@^7.4.5": - version "7.7.2" - resolved "https://registry.yarnpkg.com/@babel/core/-/core-7.7.2.tgz#ea5b99693bcfc058116f42fa1dd54da412b29d91" - integrity sha512-eeD7VEZKfhK1KUXGiyPFettgF3m513f8FoBSWiQ1xTvl1RAopLs42Wp9+Ze911I6H0N9lNqJMDgoZT7gHsipeQ== - dependencies: - "@babel/code-frame" "^7.5.5" - "@babel/generator" "^7.7.2" - "@babel/helpers" "^7.7.0" - "@babel/parser" "^7.7.2" - "@babel/template" "^7.7.0" - "@babel/traverse" "^7.7.2" - "@babel/types" "^7.7.2" + "@babel/code-frame" "^7.8.3" + "@babel/generator" "^7.9.0" + "@babel/helper-module-transforms" "^7.9.0" + "@babel/helpers" "^7.9.0" + "@babel/parser" "^7.9.0" + "@babel/template" "^7.8.6" + "@babel/traverse" "^7.9.0" + "@babel/types" "^7.9.0" convert-source-map "^1.7.0" debug "^4.1.0" - json5 "^2.1.0" + gensync "^1.0.0-beta.1" + json5 "^2.1.2" lodash "^4.17.13" resolve "^1.3.2" semver "^5.4.1" source-map "^0.5.0" -"@babel/generator@^7.0.0", "@babel/generator@^7.2.2": - version "7.2.2" - resolved "https://registry.yarnpkg.com/@babel/generator/-/generator-7.2.2.tgz#18c816c70962640eab42fe8cae5f3947a5c65ccc" - integrity sha512-I4o675J/iS8k+P38dvJ3IBGqObLXyQLTxtrR4u9cSUJOURvafeEWb/pFMOTwtNrmq73mJzyF6ueTbO1BtN0Zeg== - dependencies: - "@babel/types" "^7.2.2" - jsesc "^2.5.1" - lodash "^4.17.10" - source-map "^0.5.0" - trim-right "^1.0.1" - -"@babel/generator@^7.1.2": - version "7.3.2" - resolved "https://registry.yarnpkg.com/@babel/generator/-/generator-7.3.2.tgz#fff31a7b2f2f3dad23ef8e01be45b0d5c2fc0132" - integrity sha512-f3QCuPppXxtZOEm5GWPra/uYUjmNQlu9pbAD8D/9jze4pTY83rTtB1igTBSwvkeNlC5gR24zFFkz+2WHLFQhqQ== +"@babel/generator@^7.5.0", "@babel/generator@^7.9.0": + version "7.9.4" + resolved "https://registry.yarnpkg.com/@babel/generator/-/generator-7.9.4.tgz#12441e90c3b3c4159cdecf312075bf1a8ce2dbce" + integrity sha512-rjP8ahaDy/ouhrvCoU1E5mqaitWrxwuNGU+dy1EpaoK48jZay4MdkskKGIMHLZNewg8sAsqpGSREJwP0zH3YQA== dependencies: - "@babel/types" "^7.3.2" + "@babel/types" "^7.9.0" jsesc "^2.5.1" - lodash "^4.17.10" + lodash "^4.17.13" source-map "^0.5.0" - trim-right "^1.0.1" -"@babel/generator@^7.5.0", "@babel/generator@^7.7.2": - version "7.7.2" - resolved "https://registry.yarnpkg.com/@babel/generator/-/generator-7.7.2.tgz#2f4852d04131a5e17ea4f6645488b5da66ebf3af" - integrity sha512-WthSArvAjYLz4TcbKOi88me+KmDJdKSlfwwN8CnUYn9jBkzhq0ZEPuBfkAWIvjJ3AdEV1Cf/+eSQTnp3IDJKlQ== +"@babel/generator@^7.9.5": + version "7.9.5" + resolved "https://registry.yarnpkg.com/@babel/generator/-/generator-7.9.5.tgz#27f0917741acc41e6eaaced6d68f96c3fa9afaf9" + integrity sha512-GbNIxVB3ZJe3tLeDm1HSn2AhuD/mVcyLDpgtLXa5tplmWrJdF/elxB56XNqCuD6szyNkDi6wuoKXln3QeBmCHQ== dependencies: - "@babel/types" "^7.7.2" + "@babel/types" "^7.9.5" jsesc "^2.5.1" lodash "^4.17.13" source-map "^0.5.0" -"@babel/generator@^7.8.3": +"@babel/helper-annotate-as-pure@^7.8.3": version "7.8.3" - resolved "https://registry.yarnpkg.com/@babel/generator/-/generator-7.8.3.tgz#0e22c005b0a94c1c74eafe19ef78ce53a4d45c03" - integrity sha512-WjoPk8hRpDRqqzRpvaR8/gDUPkrnOOeuT2m8cNICJtZH6mwaCo3v0OKMI7Y6SM1pBtyijnLtAL0HDi41pf41ug== + resolved "https://registry.yarnpkg.com/@babel/helper-annotate-as-pure/-/helper-annotate-as-pure-7.8.3.tgz#60bc0bc657f63a0924ff9a4b4a0b24a13cf4deee" + integrity sha512-6o+mJrZBxOoEX77Ezv9zwW7WV8DdluouRKNY/IR5u/YTMuKHgugHOzYWlYvYLpLA9nPsQCAAASpCIbjI9Mv+Uw== dependencies: "@babel/types" "^7.8.3" - jsesc "^2.5.1" - lodash "^4.17.13" - source-map "^0.5.0" - -"@babel/helper-annotate-as-pure@^7.0.0": - version "7.0.0" - resolved "https://registry.yarnpkg.com/@babel/helper-annotate-as-pure/-/helper-annotate-as-pure-7.0.0.tgz#323d39dd0b50e10c7c06ca7d7638e6864d8c5c32" - integrity sha512-3UYcJUj9kvSLbLbUIfQTqzcy5VX7GRZ/CCDrnOaZorFFM01aXp1+GJwuFGV4NDDoAS+mOUyHcO6UD/RfqOks3Q== - dependencies: - "@babel/types" "^7.0.0" -"@babel/helper-builder-binary-assignment-operator-visitor@^7.1.0": - version "7.1.0" - resolved "https://registry.yarnpkg.com/@babel/helper-builder-binary-assignment-operator-visitor/-/helper-builder-binary-assignment-operator-visitor-7.1.0.tgz#6b69628dfe4087798e0c4ed98e3d4a6b2fbd2f5f" - integrity sha512-qNSR4jrmJ8M1VMM9tibvyRAHXQs2PmaksQF7c1CGJNipfe3D8p+wgNwgso/P2A2r2mdgBWAXljNWR0QRZAMW8w== +"@babel/helper-builder-binary-assignment-operator-visitor@^7.8.3": + version "7.8.3" + resolved "https://registry.yarnpkg.com/@babel/helper-builder-binary-assignment-operator-visitor/-/helper-builder-binary-assignment-operator-visitor-7.8.3.tgz#c84097a427a061ac56a1c30ebf54b7b22d241503" + integrity sha512-5eFOm2SyFPK4Rh3XMMRDjN7lBH0orh3ss0g3rTYZnBQ+r6YPj7lgDyCvPphynHvUrobJmeMignBr6Acw9mAPlw== dependencies: - "@babel/helper-explode-assignable-expression" "^7.1.0" - "@babel/types" "^7.0.0" + "@babel/helper-explode-assignable-expression" "^7.8.3" + "@babel/types" "^7.8.3" -"@babel/helper-builder-react-jsx@^7.0.0": - version "7.0.0" - resolved "https://registry.yarnpkg.com/@babel/helper-builder-react-jsx/-/helper-builder-react-jsx-7.0.0.tgz#fa154cb53eb918cf2a9a7ce928e29eb649c5acdb" - integrity sha512-ebJ2JM6NAKW0fQEqN8hOLxK84RbRz9OkUhGS/Xd5u56ejMfVbayJ4+LykERZCOUM6faa6Fp3SZNX3fcT16MKHw== +"@babel/helper-builder-react-jsx-experimental@^7.9.0": + version "7.9.0" + resolved "https://registry.yarnpkg.com/@babel/helper-builder-react-jsx-experimental/-/helper-builder-react-jsx-experimental-7.9.0.tgz#066d80262ade488f9c1b1823ce5db88a4cedaa43" + integrity sha512-3xJEiyuYU4Q/Ar9BsHisgdxZsRlsShMe90URZ0e6przL26CCs8NJbDoxH94kKT17PcxlMhsCAwZd90evCo26VQ== dependencies: - "@babel/types" "^7.0.0" - esutils "^2.0.0" + "@babel/helper-annotate-as-pure" "^7.8.3" + "@babel/helper-module-imports" "^7.8.3" + "@babel/types" "^7.9.0" -"@babel/helper-call-delegate@^7.1.0": - version "7.1.0" - resolved "https://registry.yarnpkg.com/@babel/helper-call-delegate/-/helper-call-delegate-7.1.0.tgz#6a957f105f37755e8645343d3038a22e1449cc4a" - integrity sha512-YEtYZrw3GUK6emQHKthltKNZwszBcHK58Ygcis+gVUrF4/FmTVr5CCqQNSfmvg2y+YDEANyYoaLz/SHsnusCwQ== +"@babel/helper-builder-react-jsx@^7.9.0": + version "7.9.0" + resolved "https://registry.yarnpkg.com/@babel/helper-builder-react-jsx/-/helper-builder-react-jsx-7.9.0.tgz#16bf391990b57732700a3278d4d9a81231ea8d32" + integrity sha512-weiIo4gaoGgnhff54GQ3P5wsUQmnSwpkvU0r6ZHq6TzoSzKy4JxHEgnxNytaKbov2a9z/CVNyzliuCOUPEX3Jw== dependencies: - "@babel/helper-hoist-variables" "^7.0.0" - "@babel/traverse" "^7.1.0" - "@babel/types" "^7.0.0" + "@babel/helper-annotate-as-pure" "^7.8.3" + "@babel/types" "^7.9.0" -"@babel/helper-create-class-features-plugin@^7.2.3": - version "7.2.3" - resolved "https://registry.yarnpkg.com/@babel/helper-create-class-features-plugin/-/helper-create-class-features-plugin-7.2.3.tgz#f6e719abb90cb7f4a69591e35fd5eb89047c4a7c" - integrity sha512-xO/3Gn+2C7/eOUeb0VRnSP1+yvWHNxlpAot1eMhtoKDCN7POsyQP5excuT5UsV5daHxMWBeIIOeI5cmB8vMRgQ== +"@babel/helper-compilation-targets@^7.8.7": + version "7.8.7" + resolved "https://registry.yarnpkg.com/@babel/helper-compilation-targets/-/helper-compilation-targets-7.8.7.tgz#dac1eea159c0e4bd46e309b5a1b04a66b53c1dde" + integrity sha512-4mWm8DCK2LugIS+p1yArqvG1Pf162upsIsjE7cNBjez+NjliQpVhj20obE520nao0o14DaTnFJv+Fw5a0JpoUw== dependencies: - "@babel/helper-function-name" "^7.1.0" - "@babel/helper-member-expression-to-functions" "^7.0.0" - "@babel/helper-optimise-call-expression" "^7.0.0" - "@babel/helper-plugin-utils" "^7.0.0" - "@babel/helper-replace-supers" "^7.2.3" + "@babel/compat-data" "^7.8.6" + browserslist "^4.9.1" + invariant "^2.2.4" + levenary "^1.1.1" + semver "^5.5.0" "@babel/helper-create-class-features-plugin@^7.8.3": - version "7.8.3" - resolved "https://registry.yarnpkg.com/@babel/helper-create-class-features-plugin/-/helper-create-class-features-plugin-7.8.3.tgz#5b94be88c255f140fd2c10dd151e7f98f4bff397" - integrity sha512-qmp4pD7zeTxsv0JNecSBsEmG1ei2MqwJq4YQcK3ZWm/0t07QstWfvuV/vm3Qt5xNMFETn2SZqpMx2MQzbtq+KA== + version "7.8.6" + resolved "https://registry.yarnpkg.com/@babel/helper-create-class-features-plugin/-/helper-create-class-features-plugin-7.8.6.tgz#243a5b46e2f8f0f674dc1387631eb6b28b851de0" + integrity sha512-klTBDdsr+VFFqaDHm5rR69OpEQtO2Qv8ECxHS1mNhJJvaHArR6a1xTf5K/eZW7eZpJbhCx3NW1Yt/sKsLXLblg== dependencies: "@babel/helper-function-name" "^7.8.3" "@babel/helper-member-expression-to-functions" "^7.8.3" "@babel/helper-optimise-call-expression" "^7.8.3" "@babel/helper-plugin-utils" "^7.8.3" - "@babel/helper-replace-supers" "^7.8.3" + "@babel/helper-replace-supers" "^7.8.6" "@babel/helper-split-export-declaration" "^7.8.3" -"@babel/helper-define-map@^7.1.0": - version "7.1.0" - resolved "https://registry.yarnpkg.com/@babel/helper-define-map/-/helper-define-map-7.1.0.tgz#3b74caec329b3c80c116290887c0dd9ae468c20c" - integrity sha512-yPPcW8dc3gZLN+U1mhYV91QU3n5uTbx7DUdf8NnPbjS0RMwBuHi9Xt2MUgppmNz7CJxTBWsGczTiEp1CSOTPRg== +"@babel/helper-create-regexp-features-plugin@^7.8.3", "@babel/helper-create-regexp-features-plugin@^7.8.8": + version "7.8.8" + resolved "https://registry.yarnpkg.com/@babel/helper-create-regexp-features-plugin/-/helper-create-regexp-features-plugin-7.8.8.tgz#5d84180b588f560b7864efaeea89243e58312087" + integrity sha512-LYVPdwkrQEiX9+1R29Ld/wTrmQu1SSKYnuOk3g0CkcZMA1p0gsNxJFj/3gBdaJ7Cg0Fnek5z0DsMULePP7Lrqg== dependencies: - "@babel/helper-function-name" "^7.1.0" - "@babel/types" "^7.0.0" - lodash "^4.17.10" + "@babel/helper-annotate-as-pure" "^7.8.3" + "@babel/helper-regex" "^7.8.3" + regexpu-core "^4.7.0" -"@babel/helper-explode-assignable-expression@^7.1.0": - version "7.1.0" - resolved "https://registry.yarnpkg.com/@babel/helper-explode-assignable-expression/-/helper-explode-assignable-expression-7.1.0.tgz#537fa13f6f1674df745b0c00ec8fe4e99681c8f6" - integrity sha512-NRQpfHrJ1msCHtKjbzs9YcMmJZOg6mQMmGRB+hbamEdG5PNpaSm95275VD92DvJKuyl0s2sFiDmMZ+EnnvufqA== - dependencies: - "@babel/traverse" "^7.1.0" - "@babel/types" "^7.0.0" - -"@babel/helper-function-name@^7.1.0": - version "7.1.0" - resolved "https://registry.yarnpkg.com/@babel/helper-function-name/-/helper-function-name-7.1.0.tgz#a0ceb01685f73355d4360c1247f582bfafc8ff53" - integrity sha512-A95XEoCpb3TO+KZzJ4S/5uW5fNe26DjBGqf1o9ucyLyCmi1dXq/B3c8iaWTfBk3VvetUxl16e8tIrd5teOCfGw== +"@babel/helper-define-map@^7.8.3": + version "7.8.3" + resolved "https://registry.yarnpkg.com/@babel/helper-define-map/-/helper-define-map-7.8.3.tgz#a0655cad5451c3760b726eba875f1cd8faa02c15" + integrity sha512-PoeBYtxoZGtct3md6xZOCWPcKuMuk3IHhgxsRRNtnNShebf4C8YonTSblsK4tvDbm+eJAw2HAPOfCr+Q/YRG/g== dependencies: - "@babel/helper-get-function-arity" "^7.0.0" - "@babel/template" "^7.1.0" - "@babel/types" "^7.0.0" + "@babel/helper-function-name" "^7.8.3" + "@babel/types" "^7.8.3" + lodash "^4.17.13" -"@babel/helper-function-name@^7.7.0": - version "7.7.0" - resolved "https://registry.yarnpkg.com/@babel/helper-function-name/-/helper-function-name-7.7.0.tgz#44a5ad151cfff8ed2599c91682dda2ec2c8430a3" - integrity sha512-tDsJgMUAP00Ugv8O2aGEua5I2apkaQO7lBGUq1ocwN3G23JE5Dcq0uh3GvFTChPa4b40AWiAsLvCZOA2rdnQ7Q== +"@babel/helper-explode-assignable-expression@^7.8.3": + version "7.8.3" + resolved "https://registry.yarnpkg.com/@babel/helper-explode-assignable-expression/-/helper-explode-assignable-expression-7.8.3.tgz#a728dc5b4e89e30fc2dfc7d04fa28a930653f982" + integrity sha512-N+8eW86/Kj147bO9G2uclsg5pwfs/fqqY5rwgIL7eTBklgXjcOJ3btzS5iM6AitJcftnY7pm2lGsrJVYLGjzIw== dependencies: - "@babel/helper-get-function-arity" "^7.7.0" - "@babel/template" "^7.7.0" - "@babel/types" "^7.7.0" + "@babel/traverse" "^7.8.3" + "@babel/types" "^7.8.3" "@babel/helper-function-name@^7.8.3": version "7.8.3" @@ -224,19 +150,14 @@ "@babel/template" "^7.8.3" "@babel/types" "^7.8.3" -"@babel/helper-get-function-arity@^7.0.0": - version "7.0.0" - resolved "https://registry.yarnpkg.com/@babel/helper-get-function-arity/-/helper-get-function-arity-7.0.0.tgz#83572d4320e2a4657263734113c42868b64e49c3" - integrity sha512-r2DbJeg4svYvt3HOS74U4eWKsUAMRH01Z1ds1zx8KNTPtpTL5JAsdFv8BNyOpVqdFhHkkRDIg5B4AsxmkjAlmQ== - dependencies: - "@babel/types" "^7.0.0" - -"@babel/helper-get-function-arity@^7.7.0": - version "7.7.0" - resolved "https://registry.yarnpkg.com/@babel/helper-get-function-arity/-/helper-get-function-arity-7.7.0.tgz#c604886bc97287a1d1398092bc666bc3d7d7aa2d" - integrity sha512-tLdojOTz4vWcEnHWHCuPN5P85JLZWbm5Fx5ZsMEMPhF3Uoe3O7awrbM2nQ04bDOUToH/2tH/ezKEOR8zEYzqyw== +"@babel/helper-function-name@^7.9.5": + version "7.9.5" + resolved "https://registry.yarnpkg.com/@babel/helper-function-name/-/helper-function-name-7.9.5.tgz#2b53820d35275120e1874a82e5aabe1376920a5c" + integrity sha512-JVcQZeXM59Cd1qanDUxv9fgJpt3NeKUaqBqUEvfmQ+BCOKq2xUgaWZW2hr0dkbyJgezYuplEoh5knmrnS68efw== dependencies: - "@babel/types" "^7.7.0" + "@babel/helper-get-function-arity" "^7.8.3" + "@babel/template" "^7.8.3" + "@babel/types" "^7.9.5" "@babel/helper-get-function-arity@^7.8.3": version "7.8.3" @@ -245,19 +166,12 @@ dependencies: "@babel/types" "^7.8.3" -"@babel/helper-hoist-variables@^7.0.0": - version "7.0.0" - resolved "https://registry.yarnpkg.com/@babel/helper-hoist-variables/-/helper-hoist-variables-7.0.0.tgz#46adc4c5e758645ae7a45deb92bab0918c23bb88" - integrity sha512-Ggv5sldXUeSKsuzLkddtyhyHe2YantsxWKNi7A+7LeD12ExRDWTRk29JCXpaHPAbMaIPZSil7n+lq78WY2VY7w== - dependencies: - "@babel/types" "^7.0.0" - -"@babel/helper-member-expression-to-functions@^7.0.0": - version "7.0.0" - resolved "https://registry.yarnpkg.com/@babel/helper-member-expression-to-functions/-/helper-member-expression-to-functions-7.0.0.tgz#8cd14b0a0df7ff00f009e7d7a436945f47c7a16f" - integrity sha512-avo+lm/QmZlv27Zsi0xEor2fKcqWG56D5ae9dzklpIaY7cQMK5N8VSpaNVPPagiqmy7LrEjK1IWdGMOqPu5csg== +"@babel/helper-hoist-variables@^7.8.3": + version "7.8.3" + resolved "https://registry.yarnpkg.com/@babel/helper-hoist-variables/-/helper-hoist-variables-7.8.3.tgz#1dbe9b6b55d78c9b4183fc8cdc6e30ceb83b7134" + integrity sha512-ky1JLOjcDUtSc+xkt0xhYff7Z6ILTAHKmZLHPxAhOP0Nd77O+3nCsd6uSVYur6nJnCI029CrNbYlc0LoPfAPQg== dependencies: - "@babel/types" "^7.0.0" + "@babel/types" "^7.8.3" "@babel/helper-member-expression-to-functions@^7.8.3": version "7.8.3" @@ -266,31 +180,25 @@ dependencies: "@babel/types" "^7.8.3" -"@babel/helper-module-imports@^7.0.0": - version "7.0.0" - resolved "https://registry.yarnpkg.com/@babel/helper-module-imports/-/helper-module-imports-7.0.0.tgz#96081b7111e486da4d2cd971ad1a4fe216cc2e3d" - integrity sha512-aP/hlLq01DWNEiDg4Jn23i+CXxW/owM4WpDLFUbpjxe4NS3BhLVZQ5i7E0ZrxuQ/vwekIeciyamgB1UIYxxM6A== - dependencies: - "@babel/types" "^7.0.0" - -"@babel/helper-module-transforms@^7.1.0": - version "7.1.0" - resolved "https://registry.yarnpkg.com/@babel/helper-module-transforms/-/helper-module-transforms-7.1.0.tgz#470d4f9676d9fad50b324cdcce5fbabbc3da5787" - integrity sha512-0JZRd2yhawo79Rcm4w0LwSMILFmFXjugG3yqf+P/UsKsRS1mJCmMwwlHDlMg7Avr9LrvSpp4ZSULO9r8jpCzcw== +"@babel/helper-module-imports@^7.8.3": + version "7.8.3" + resolved "https://registry.yarnpkg.com/@babel/helper-module-imports/-/helper-module-imports-7.8.3.tgz#7fe39589b39c016331b6b8c3f441e8f0b1419498" + integrity sha512-R0Bx3jippsbAEtzkpZ/6FIiuzOURPcMjHp+Z6xPe6DtApDJx+w7UYyOLanZqO8+wKR9G10s/FmHXvxaMd9s6Kg== dependencies: - "@babel/helper-module-imports" "^7.0.0" - "@babel/helper-simple-access" "^7.1.0" - "@babel/helper-split-export-declaration" "^7.0.0" - "@babel/template" "^7.1.0" - "@babel/types" "^7.0.0" - lodash "^4.17.10" + "@babel/types" "^7.8.3" -"@babel/helper-optimise-call-expression@^7.0.0": - version "7.0.0" - resolved "https://registry.yarnpkg.com/@babel/helper-optimise-call-expression/-/helper-optimise-call-expression-7.0.0.tgz#a2920c5702b073c15de51106200aa8cad20497d5" - integrity sha512-u8nd9NQePYNQV8iPWu/pLLYBqZBa4ZaY1YWRFMuxrid94wKI1QNt67NEZ7GAe5Kc/0LLScbim05xZFWkAdrj9g== +"@babel/helper-module-transforms@^7.9.0": + version "7.9.0" + resolved "https://registry.yarnpkg.com/@babel/helper-module-transforms/-/helper-module-transforms-7.9.0.tgz#43b34dfe15961918707d247327431388e9fe96e5" + integrity sha512-0FvKyu0gpPfIQ8EkxlrAydOWROdHpBmiCiRwLkUiBGhCUPRRbVD2/tm3sFr/c/GWFrQ/ffutGUAnx7V0FzT2wA== dependencies: - "@babel/types" "^7.0.0" + "@babel/helper-module-imports" "^7.8.3" + "@babel/helper-replace-supers" "^7.8.6" + "@babel/helper-simple-access" "^7.8.3" + "@babel/helper-split-export-declaration" "^7.8.3" + "@babel/template" "^7.8.6" + "@babel/types" "^7.9.0" + lodash "^4.17.13" "@babel/helper-optimise-call-expression@^7.8.3": version "7.8.3" @@ -299,75 +207,46 @@ dependencies: "@babel/types" "^7.8.3" -"@babel/helper-plugin-utils@^7.0.0": - version "7.0.0" - resolved "https://registry.yarnpkg.com/@babel/helper-plugin-utils/-/helper-plugin-utils-7.0.0.tgz#bbb3fbee98661c569034237cc03967ba99b4f250" - integrity sha512-CYAOUCARwExnEixLdB6sDm2dIJ/YgEAKDM1MOeMeZu9Ld/bDgVo8aiWrXwcY7OBh+1Ea2uUcVRcxKk0GJvW7QA== - -"@babel/helper-plugin-utils@^7.8.3": +"@babel/helper-plugin-utils@^7.0.0", "@babel/helper-plugin-utils@^7.8.0", "@babel/helper-plugin-utils@^7.8.3": version "7.8.3" resolved "https://registry.yarnpkg.com/@babel/helper-plugin-utils/-/helper-plugin-utils-7.8.3.tgz#9ea293be19babc0f52ff8ca88b34c3611b208670" integrity sha512-j+fq49Xds2smCUNYmEHF9kGNkhbet6yVIBp4e6oeQpH1RUs/Ir06xUKzDjDkGcaaokPiTNs2JBWHjaE4csUkZQ== -"@babel/helper-regex@^7.0.0": - version "7.0.0" - resolved "https://registry.yarnpkg.com/@babel/helper-regex/-/helper-regex-7.0.0.tgz#2c1718923b57f9bbe64705ffe5640ac64d9bdb27" - integrity sha512-TR0/N0NDCcUIUEbqV6dCO+LptmmSQFQ7q70lfcEB4URsjD0E1HzicrwUH+ap6BAQ2jhCX9Q4UqZy4wilujWlkg== - dependencies: - lodash "^4.17.10" - -"@babel/helper-remap-async-to-generator@^7.1.0": - version "7.1.0" - resolved "https://registry.yarnpkg.com/@babel/helper-remap-async-to-generator/-/helper-remap-async-to-generator-7.1.0.tgz#361d80821b6f38da75bd3f0785ece20a88c5fe7f" - integrity sha512-3fOK0L+Fdlg8S5al8u/hWE6vhufGSn0bN09xm2LXMy//REAF8kDCrYoOBKYmA8m5Nom+sV9LyLCwrFynA8/slg== - dependencies: - "@babel/helper-annotate-as-pure" "^7.0.0" - "@babel/helper-wrap-function" "^7.1.0" - "@babel/template" "^7.1.0" - "@babel/traverse" "^7.1.0" - "@babel/types" "^7.0.0" - -"@babel/helper-replace-supers@^7.1.0", "@babel/helper-replace-supers@^7.2.3": - version "7.2.3" - resolved "https://registry.yarnpkg.com/@babel/helper-replace-supers/-/helper-replace-supers-7.2.3.tgz#19970020cf22677d62b3a689561dbd9644d8c5e5" - integrity sha512-GyieIznGUfPXPWu0yLS6U55Mz67AZD9cUk0BfirOWlPrXlBcan9Gz+vHGz+cPfuoweZSnPzPIm67VtQM0OWZbA== +"@babel/helper-regex@^7.8.3": + version "7.8.3" + resolved "https://registry.yarnpkg.com/@babel/helper-regex/-/helper-regex-7.8.3.tgz#139772607d51b93f23effe72105b319d2a4c6965" + integrity sha512-BWt0QtYv/cg/NecOAZMdcn/waj/5P26DR4mVLXfFtDokSR6fyuG0Pj+e2FqtSME+MqED1khnSMulkmGl8qWiUQ== dependencies: - "@babel/helper-member-expression-to-functions" "^7.0.0" - "@babel/helper-optimise-call-expression" "^7.0.0" - "@babel/traverse" "^7.2.3" - "@babel/types" "^7.0.0" + lodash "^4.17.13" -"@babel/helper-replace-supers@^7.8.3": +"@babel/helper-remap-async-to-generator@^7.8.3": version "7.8.3" - resolved "https://registry.yarnpkg.com/@babel/helper-replace-supers/-/helper-replace-supers-7.8.3.tgz#91192d25f6abbcd41da8a989d4492574fb1530bc" - integrity sha512-xOUssL6ho41U81etpLoT2RTdvdus4VfHamCuAm4AHxGr+0it5fnwoVdwUJ7GFEqCsQYzJUhcbsN9wB9apcYKFA== + resolved "https://registry.yarnpkg.com/@babel/helper-remap-async-to-generator/-/helper-remap-async-to-generator-7.8.3.tgz#273c600d8b9bf5006142c1e35887d555c12edd86" + integrity sha512-kgwDmw4fCg7AVgS4DukQR/roGp+jP+XluJE5hsRZwxCYGg+Rv9wSGErDWhlI90FODdYfd4xG4AQRiMDjjN0GzA== dependencies: - "@babel/helper-member-expression-to-functions" "^7.8.3" - "@babel/helper-optimise-call-expression" "^7.8.3" + "@babel/helper-annotate-as-pure" "^7.8.3" + "@babel/helper-wrap-function" "^7.8.3" + "@babel/template" "^7.8.3" "@babel/traverse" "^7.8.3" "@babel/types" "^7.8.3" -"@babel/helper-simple-access@^7.1.0": - version "7.1.0" - resolved "https://registry.yarnpkg.com/@babel/helper-simple-access/-/helper-simple-access-7.1.0.tgz#65eeb954c8c245beaa4e859da6188f39d71e585c" - integrity sha512-Vk+78hNjRbsiu49zAPALxTb+JUQCz1aolpd8osOF16BGnLtseD21nbHgLPGUwrXEurZgiCOUmvs3ExTu4F5x6w== - dependencies: - "@babel/template" "^7.1.0" - "@babel/types" "^7.0.0" - -"@babel/helper-split-export-declaration@^7.0.0": - version "7.0.0" - resolved "https://registry.yarnpkg.com/@babel/helper-split-export-declaration/-/helper-split-export-declaration-7.0.0.tgz#3aae285c0311c2ab095d997b8c9a94cad547d813" - integrity sha512-MXkOJqva62dfC0w85mEf/LucPPS/1+04nmmRMPEBUB++hiiThQ2zPtX/mEWQ3mtzCEjIJvPY8nuwxXtQeQwUag== +"@babel/helper-replace-supers@^7.8.3", "@babel/helper-replace-supers@^7.8.6": + version "7.8.6" + resolved "https://registry.yarnpkg.com/@babel/helper-replace-supers/-/helper-replace-supers-7.8.6.tgz#5ada744fd5ad73203bf1d67459a27dcba67effc8" + integrity sha512-PeMArdA4Sv/Wf4zXwBKPqVj7n9UF/xg6slNRtZW84FM7JpE1CbG8B612FyM4cxrf4fMAMGO0kR7voy1ForHHFA== dependencies: - "@babel/types" "^7.0.0" + "@babel/helper-member-expression-to-functions" "^7.8.3" + "@babel/helper-optimise-call-expression" "^7.8.3" + "@babel/traverse" "^7.8.6" + "@babel/types" "^7.8.6" -"@babel/helper-split-export-declaration@^7.7.0": - version "7.7.0" - resolved "https://registry.yarnpkg.com/@babel/helper-split-export-declaration/-/helper-split-export-declaration-7.7.0.tgz#1365e74ea6c614deeb56ebffabd71006a0eb2300" - integrity sha512-HgYSI8rH08neWlAH3CcdkFg9qX9YsZysZI5GD8LjhQib/mM0jGOZOVkoUiiV2Hu978fRtjtsGsW6w0pKHUWtqA== +"@babel/helper-simple-access@^7.8.3": + version "7.8.3" + resolved "https://registry.yarnpkg.com/@babel/helper-simple-access/-/helper-simple-access-7.8.3.tgz#7f8109928b4dab4654076986af575231deb639ae" + integrity sha512-VNGUDjx5cCWg4vvCTR8qQ7YJYZ+HBjxOgXEl7ounz+4Sn7+LMD3CFrCTEU6/qXKbA2nKg21CwhhBzO0RpRbdCw== dependencies: - "@babel/types" "^7.7.0" + "@babel/template" "^7.8.3" + "@babel/types" "^7.8.3" "@babel/helper-split-export-declaration@^7.8.3": version "7.8.3" @@ -376,85 +255,48 @@ dependencies: "@babel/types" "^7.8.3" -"@babel/helper-wrap-function@^7.1.0": - version "7.1.0" - resolved "https://registry.yarnpkg.com/@babel/helper-wrap-function/-/helper-wrap-function-7.1.0.tgz#8cf54e9190706067f016af8f75cb3df829cc8c66" - integrity sha512-R6HU3dete+rwsdAfrOzTlE9Mcpk4RjU3aX3gi9grtmugQY0u79X7eogUvfXA5sI81Mfq1cn6AgxihfN33STjJA== - dependencies: - "@babel/helper-function-name" "^7.1.0" - "@babel/template" "^7.1.0" - "@babel/traverse" "^7.1.0" - "@babel/types" "^7.0.0" +"@babel/helper-validator-identifier@^7.9.0": + version "7.9.0" + resolved "https://registry.yarnpkg.com/@babel/helper-validator-identifier/-/helper-validator-identifier-7.9.0.tgz#ad53562a7fc29b3b9a91bbf7d10397fd146346ed" + integrity sha512-6G8bQKjOh+of4PV/ThDm/rRqlU7+IGoJuofpagU5GlEl29Vv0RGqqt86ZGRV8ZuSOY3o+8yXl5y782SMcG7SHw== -"@babel/helpers@^7.1.2": - version "7.3.1" - resolved "https://registry.yarnpkg.com/@babel/helpers/-/helpers-7.3.1.tgz#949eec9ea4b45d3210feb7dc1c22db664c9e44b9" - integrity sha512-Q82R3jKsVpUV99mgX50gOPCWwco9Ec5Iln/8Vyu4osNIOQgSrd9RFrQeUvmvddFNoLwMyOUWU+5ckioEKpDoGA== - dependencies: - "@babel/template" "^7.1.2" - "@babel/traverse" "^7.1.5" - "@babel/types" "^7.3.0" +"@babel/helper-validator-identifier@^7.9.5": + version "7.9.5" + resolved "https://registry.yarnpkg.com/@babel/helper-validator-identifier/-/helper-validator-identifier-7.9.5.tgz#90977a8e6fbf6b431a7dc31752eee233bf052d80" + integrity sha512-/8arLKUFq882w4tWGj9JYzRpAlZgiWUJ+dtteNTDqrRBz9Iguck9Rn3ykuBDoUwh2TO4tSAJlrxDUOXWklJe4g== -"@babel/helpers@^7.2.0": - version "7.2.0" - resolved "https://registry.yarnpkg.com/@babel/helpers/-/helpers-7.2.0.tgz#8335f3140f3144270dc63c4732a4f8b0a50b7a21" - integrity sha512-Fr07N+ea0dMcMN8nFpuK6dUIT7/ivt9yKQdEEnjVS83tG2pHwPi03gYmk/tyuwONnZ+sY+GFFPlWGgCtW1hF9A== - dependencies: - "@babel/template" "^7.1.2" - "@babel/traverse" "^7.1.5" - "@babel/types" "^7.2.0" - -"@babel/helpers@^7.7.0": - version "7.7.0" - resolved "https://registry.yarnpkg.com/@babel/helpers/-/helpers-7.7.0.tgz#359bb5ac3b4726f7c1fde0ec75f64b3f4275d60b" - integrity sha512-VnNwL4YOhbejHb7x/b5F39Zdg5vIQpUUNzJwx0ww1EcVRt41bbGRZWhAURrfY32T5zTT3qwNOQFWpn+P0i0a2g== +"@babel/helper-wrap-function@^7.8.3": + version "7.8.3" + resolved "https://registry.yarnpkg.com/@babel/helper-wrap-function/-/helper-wrap-function-7.8.3.tgz#9dbdb2bb55ef14aaa01fe8c99b629bd5352d8610" + integrity sha512-LACJrbUET9cQDzb6kG7EeD7+7doC3JNvUgTEQOx2qaO1fKlzE/Bf05qs9w1oXQMmXlPO65lC3Tq9S6gZpTErEQ== dependencies: - "@babel/template" "^7.7.0" - "@babel/traverse" "^7.7.0" - "@babel/types" "^7.7.0" + "@babel/helper-function-name" "^7.8.3" + "@babel/template" "^7.8.3" + "@babel/traverse" "^7.8.3" + "@babel/types" "^7.8.3" -"@babel/highlight@^7.0.0": - version "7.0.0" - resolved "https://registry.yarnpkg.com/@babel/highlight/-/highlight-7.0.0.tgz#f710c38c8d458e6dd9a201afb637fcb781ce99e4" - integrity sha512-UFMC4ZeFC48Tpvj7C8UgLvtkaUuovQX+5xNWrsIoMG8o2z+XFKjKaN9iVmS84dPwVN00W4wPmqvYoZF3EGAsfw== +"@babel/helpers@^7.9.0": + version "7.9.2" + resolved "https://registry.yarnpkg.com/@babel/helpers/-/helpers-7.9.2.tgz#b42a81a811f1e7313b88cba8adc66b3d9ae6c09f" + integrity sha512-JwLvzlXVPjO8eU9c/wF9/zOIN7X6h8DYf7mG4CiFRZRvZNKEF5dQ3H3V+ASkHoIB3mWhatgl5ONhyqHRI6MppA== dependencies: - chalk "^2.0.0" - esutils "^2.0.2" - js-tokens "^4.0.0" + "@babel/template" "^7.8.3" + "@babel/traverse" "^7.9.0" + "@babel/types" "^7.9.0" "@babel/highlight@^7.8.3": - version "7.8.3" - resolved "https://registry.yarnpkg.com/@babel/highlight/-/highlight-7.8.3.tgz#28f173d04223eaaa59bc1d439a3836e6d1265797" - integrity sha512-PX4y5xQUvy0fnEVHrYOarRPXVWafSjTW9T0Hab8gVIawpl2Sj0ORyrygANq+KjcNlSSTw0YCLSNA8OyZ1I4yEg== + version "7.9.0" + resolved "https://registry.yarnpkg.com/@babel/highlight/-/highlight-7.9.0.tgz#4e9b45ccb82b79607271b2979ad82c7b68163079" + integrity sha512-lJZPilxX7Op3Nv/2cvFdnlepPXDxi29wxteT57Q965oc5R9v86ztx0jfxVrTcBk8C2kcPkkDa2Z4T3ZsPPVWsQ== dependencies: + "@babel/helper-validator-identifier" "^7.9.0" chalk "^2.0.0" - esutils "^2.0.2" js-tokens "^4.0.0" -"@babel/parser@^7.0.0", "@babel/parser@^7.1.6", "@babel/parser@^7.2.2", "@babel/parser@^7.2.3": - version "7.2.3" - resolved "https://registry.yarnpkg.com/@babel/parser/-/parser-7.2.3.tgz#32f5df65744b70888d17872ec106b02434ba1489" - integrity sha512-0LyEcVlfCoFmci8mXx8A5oIkpkOgyo8dRHtxBnK9RRBwxO2+JZPNsqtVEZQ7mJFPxnXF9lfmU24mHOPI0qnlkA== - -"@babel/parser@^7.1.0": - version "7.3.4" - resolved "https://registry.yarnpkg.com/@babel/parser/-/parser-7.3.4.tgz#a43357e4bbf4b92a437fb9e465c192848287f27c" - integrity sha512-tXZCqWtlOOP4wgCp6RjRvLmfuhnqTLy9VHwRochJBCP2nDm27JnnuFEnXFASVyQNHk36jD1tAammsCEEqgscIQ== - -"@babel/parser@^7.1.2": - version "7.3.2" - resolved "https://registry.yarnpkg.com/@babel/parser/-/parser-7.3.2.tgz#95cdeddfc3992a6ca2a1315191c1679ca32c55cd" - integrity sha512-QzNUC2RO1gadg+fs21fi0Uu0OuGNzRKEmgCxoLNzbCdoprLwjfmZwzUrpUNfJPaVRwBpDY47A17yYEGWyRelnQ== - -"@babel/parser@^7.7.0", "@babel/parser@^7.7.2": - version "7.7.3" - resolved "https://registry.yarnpkg.com/@babel/parser/-/parser-7.7.3.tgz#5fad457c2529de476a248f75b0f090b3060af043" - integrity sha512-bqv+iCo9i+uLVbI0ILzKkvMorqxouI+GbV13ivcARXn9NNEabi2IEz912IgNpT/60BNXac5dgcfjb94NjsF33A== - -"@babel/parser@^7.8.3": - version "7.8.3" - resolved "https://registry.yarnpkg.com/@babel/parser/-/parser-7.8.3.tgz#790874091d2001c9be6ec426c2eed47bc7679081" - integrity sha512-/V72F4Yp/qmHaTALizEm9Gf2eQHV3QyTL3K0cNfijwnMnb1L+LDlAubb/ZnSdGAVzVSWakujHYs1I26x66sMeQ== +"@babel/parser@^7.0.0", "@babel/parser@^7.1.0", "@babel/parser@^7.1.6", "@babel/parser@^7.7.5", "@babel/parser@^7.8.6", "@babel/parser@^7.9.0": + version "7.9.4" + resolved "https://registry.yarnpkg.com/@babel/parser/-/parser-7.9.4.tgz#68a35e6b0319bbc014465be43828300113f2f2e8" + integrity sha512-bC49otXX6N0/VYhgOMh4gnP26E9xnDZK3TmbNpxYzzz9BQLBosQwfyOe9/cXUU3txYhTzLCbcqd5c8y/OmCjHA== "@babel/plugin-check-constants@^7.0.0-beta.38": version "7.0.0-beta.38" @@ -462,183 +304,205 @@ integrity sha512-MjdGn/2sMLu0fnNFbkILut0OsegzRTeCOJ/uGHH88TwTXPzxONx2cTVJ36i3cTQXHMiIOUT3hX6HqzWM99Q6vA== "@babel/plugin-external-helpers@^7.0.0": - version "7.0.0" - resolved "https://registry.yarnpkg.com/@babel/plugin-external-helpers/-/plugin-external-helpers-7.0.0.tgz#61ee7ba5dba27d7cad72a13d46bec23c060b762e" - integrity sha512-tZKTMdhZvTy0KCEX5EGQQm1RHr7jUa36q/yax1baEA0yZapVYmu10yW7LTqijITgSq416gPVjrcexiA6y4pJlA== + version "7.8.3" + resolved "https://registry.yarnpkg.com/@babel/plugin-external-helpers/-/plugin-external-helpers-7.8.3.tgz#5a94164d9af393b2820a3cdc407e28ebf237de4b" + integrity sha512-mx0WXDDiIl5DwzMtzWGRSPugXi9BxROS05GQrhLNbEamhBiicgn994ibwkyiBH+6png7bm/yA7AUsvHyCXi4Vw== dependencies: - "@babel/helper-plugin-utils" "^7.0.0" + "@babel/helper-plugin-utils" "^7.8.3" -"@babel/plugin-proposal-async-generator-functions@^7.2.0": - version "7.2.0" - resolved "https://registry.yarnpkg.com/@babel/plugin-proposal-async-generator-functions/-/plugin-proposal-async-generator-functions-7.2.0.tgz#b289b306669dce4ad20b0252889a15768c9d417e" - integrity sha512-+Dfo/SCQqrwx48ptLVGLdE39YtWRuKc/Y9I5Fy0P1DDBB9lsAHpjcEJQt+4IifuSOSTLBKJObJqMvaO1pIE8LQ== +"@babel/plugin-proposal-async-generator-functions@^7.8.3": + version "7.8.3" + resolved "https://registry.yarnpkg.com/@babel/plugin-proposal-async-generator-functions/-/plugin-proposal-async-generator-functions-7.8.3.tgz#bad329c670b382589721b27540c7d288601c6e6f" + integrity sha512-NZ9zLv848JsV3hs8ryEh7Uaz/0KsmPLqv0+PdkDJL1cJy0K4kOCFa8zc1E3mp+RHPQcpdfb/6GovEsW4VDrOMw== dependencies: - "@babel/helper-plugin-utils" "^7.0.0" - "@babel/helper-remap-async-to-generator" "^7.1.0" - "@babel/plugin-syntax-async-generators" "^7.2.0" + "@babel/helper-plugin-utils" "^7.8.3" + "@babel/helper-remap-async-to-generator" "^7.8.3" + "@babel/plugin-syntax-async-generators" "^7.8.0" "@babel/plugin-proposal-class-properties@^7.0.0", "@babel/plugin-proposal-class-properties@^7.1.0": - version "7.2.3" - resolved "https://registry.yarnpkg.com/@babel/plugin-proposal-class-properties/-/plugin-proposal-class-properties-7.2.3.tgz#c9e1294363b346cff333007a92080f3203698461" - integrity sha512-FVuQngLoN2iDrpW7LmhPZ2sO4DJxf35FOcwidwB9Ru9tMvI5URthnkVHuG14IStV+TzkMTyLMoOUlSTtrdVwqw== + version "7.8.3" + resolved "https://registry.yarnpkg.com/@babel/plugin-proposal-class-properties/-/plugin-proposal-class-properties-7.8.3.tgz#5e06654af5cd04b608915aada9b2a6788004464e" + integrity sha512-EqFhbo7IosdgPgZggHaNObkmO1kNUe3slaKu54d5OWvy+p9QIKOzK1GAEpAIsZtWVtPXUHSMcT4smvDrCfY4AA== dependencies: - "@babel/helper-create-class-features-plugin" "^7.2.3" - "@babel/helper-plugin-utils" "^7.0.0" + "@babel/helper-create-class-features-plugin" "^7.8.3" + "@babel/helper-plugin-utils" "^7.8.3" + +"@babel/plugin-proposal-dynamic-import@^7.8.3": + version "7.8.3" + resolved "https://registry.yarnpkg.com/@babel/plugin-proposal-dynamic-import/-/plugin-proposal-dynamic-import-7.8.3.tgz#38c4fe555744826e97e2ae930b0fb4cc07e66054" + integrity sha512-NyaBbyLFXFLT9FP+zk0kYlUlA8XtCUbehs67F0nnEg7KICgMc2mNkIeu9TYhKzyXMkrapZFwAhXLdnt4IYHy1w== + dependencies: + "@babel/helper-plugin-utils" "^7.8.3" + "@babel/plugin-syntax-dynamic-import" "^7.8.0" "@babel/plugin-proposal-export-default-from@^7.0.0": - version "7.0.0" - resolved "https://registry.yarnpkg.com/@babel/plugin-proposal-export-default-from/-/plugin-proposal-export-default-from-7.0.0.tgz#a057bbfd4649facfe39f33a537e18554bdd2b5da" - integrity sha512-cWhkx6SyjZ4caFOanoPmDNgQCuYYTmou4QXy886JsyLTw/vhWQbop2gLKsWyyswrJkKTB7fSNxVYbP/oEsoySA== + version "7.8.3" + resolved "https://registry.yarnpkg.com/@babel/plugin-proposal-export-default-from/-/plugin-proposal-export-default-from-7.8.3.tgz#4cb7c2fdeaed490b60d9bfd3dc8a20f81f9c2e7c" + integrity sha512-PYtv2S2OdCdp7GSPDg5ndGZFm9DmWFvuLoS5nBxZCgOBggluLnhTScspJxng96alHQzPyrrHxvC9/w4bFuspeA== dependencies: - "@babel/helper-plugin-utils" "^7.0.0" - "@babel/plugin-syntax-export-default-from" "^7.0.0" + "@babel/helper-plugin-utils" "^7.8.3" + "@babel/plugin-syntax-export-default-from" "^7.8.3" -"@babel/plugin-proposal-json-strings@^7.2.0": - version "7.2.0" - resolved "https://registry.yarnpkg.com/@babel/plugin-proposal-json-strings/-/plugin-proposal-json-strings-7.2.0.tgz#568ecc446c6148ae6b267f02551130891e29f317" - integrity sha512-MAFV1CA/YVmYwZG0fBQyXhmj0BHCB5egZHCKWIFVv/XCxAeVGIHfos3SwDck4LvCllENIAg7xMKOG5kH0dzyUg== +"@babel/plugin-proposal-json-strings@^7.8.3": + version "7.8.3" + resolved "https://registry.yarnpkg.com/@babel/plugin-proposal-json-strings/-/plugin-proposal-json-strings-7.8.3.tgz#da5216b238a98b58a1e05d6852104b10f9a70d6b" + integrity sha512-KGhQNZ3TVCQG/MjRbAUwuH+14y9q0tpxs1nWWs3pbSleRdDro9SAMMDyye8HhY1gqZ7/NqIc8SKhya0wRDgP1Q== dependencies: - "@babel/helper-plugin-utils" "^7.0.0" - "@babel/plugin-syntax-json-strings" "^7.2.0" + "@babel/helper-plugin-utils" "^7.8.3" + "@babel/plugin-syntax-json-strings" "^7.8.0" -"@babel/plugin-proposal-nullish-coalescing-operator@^7.0.0": - version "7.0.0" - resolved "https://registry.yarnpkg.com/@babel/plugin-proposal-nullish-coalescing-operator/-/plugin-proposal-nullish-coalescing-operator-7.0.0.tgz#b72ec31adf612d062dc0348316246127a451e45f" - integrity sha512-QIN3UFo1ul4ruAsjIqK43PeXedo1qY74zeGrODJl1KfCGeMc6qJC4rb5Ylml/smzxibqsDeVZGH+TmWHCldRQQ== +"@babel/plugin-proposal-nullish-coalescing-operator@^7.0.0", "@babel/plugin-proposal-nullish-coalescing-operator@^7.8.3": + version "7.8.3" + resolved "https://registry.yarnpkg.com/@babel/plugin-proposal-nullish-coalescing-operator/-/plugin-proposal-nullish-coalescing-operator-7.8.3.tgz#e4572253fdeed65cddeecfdab3f928afeb2fd5d2" + integrity sha512-TS9MlfzXpXKt6YYomudb/KU7nQI6/xnapG6in1uZxoxDghuSMZsPb6D2fyUwNYSAp4l1iR7QtFOjkqcRYcUsfw== dependencies: - "@babel/helper-plugin-utils" "^7.0.0" - "@babel/plugin-syntax-nullish-coalescing-operator" "^7.0.0" + "@babel/helper-plugin-utils" "^7.8.3" + "@babel/plugin-syntax-nullish-coalescing-operator" "^7.8.0" -"@babel/plugin-proposal-object-rest-spread@^7.0.0", "@babel/plugin-proposal-object-rest-spread@^7.2.0": - version "7.2.0" - resolved "https://registry.yarnpkg.com/@babel/plugin-proposal-object-rest-spread/-/plugin-proposal-object-rest-spread-7.2.0.tgz#88f5fec3e7ad019014c97f7ee3c992f0adbf7fb8" - integrity sha512-1L5mWLSvR76XYUQJXkd/EEQgjq8HHRP6lQuZTTg0VA4tTGPpGemmCdAfQIz1rzEuWAm+ecP8PyyEm30jC1eQCg== +"@babel/plugin-proposal-numeric-separator@^7.8.3": + version "7.8.3" + resolved "https://registry.yarnpkg.com/@babel/plugin-proposal-numeric-separator/-/plugin-proposal-numeric-separator-7.8.3.tgz#5d6769409699ec9b3b68684cd8116cedff93bad8" + integrity sha512-jWioO1s6R/R+wEHizfaScNsAx+xKgwTLNXSh7tTC4Usj3ItsPEhYkEpU4h+lpnBwq7NBVOJXfO6cRFYcX69JUQ== dependencies: - "@babel/helper-plugin-utils" "^7.0.0" - "@babel/plugin-syntax-object-rest-spread" "^7.2.0" + "@babel/helper-plugin-utils" "^7.8.3" + "@babel/plugin-syntax-numeric-separator" "^7.8.3" -"@babel/plugin-proposal-optional-catch-binding@^7.0.0", "@babel/plugin-proposal-optional-catch-binding@^7.2.0": - version "7.2.0" - resolved "https://registry.yarnpkg.com/@babel/plugin-proposal-optional-catch-binding/-/plugin-proposal-optional-catch-binding-7.2.0.tgz#135d81edb68a081e55e56ec48541ece8065c38f5" - integrity sha512-mgYj3jCcxug6KUcX4OBoOJz3CMrwRfQELPQ5560F70YQUBZB7uac9fqaWamKR1iWUzGiK2t0ygzjTScZnVz75g== +"@babel/plugin-proposal-object-rest-spread@^7.0.0", "@babel/plugin-proposal-object-rest-spread@^7.9.0": + version "7.9.0" + resolved "https://registry.yarnpkg.com/@babel/plugin-proposal-object-rest-spread/-/plugin-proposal-object-rest-spread-7.9.0.tgz#a28993699fc13df165995362693962ba6b061d6f" + integrity sha512-UgqBv6bjq4fDb8uku9f+wcm1J7YxJ5nT7WO/jBr0cl0PLKb7t1O6RNR1kZbjgx2LQtsDI9hwoQVmn0yhXeQyow== dependencies: - "@babel/helper-plugin-utils" "^7.0.0" - "@babel/plugin-syntax-optional-catch-binding" "^7.2.0" + "@babel/helper-plugin-utils" "^7.8.3" + "@babel/plugin-syntax-object-rest-spread" "^7.8.0" -"@babel/plugin-proposal-optional-chaining@^7.0.0": - version "7.0.0" - resolved "https://registry.yarnpkg.com/@babel/plugin-proposal-optional-chaining/-/plugin-proposal-optional-chaining-7.0.0.tgz#3d344d4152253379b8758e7d041148e8787c4a9d" - integrity sha512-7x8HLa71OzNiofbQUVakS0Kmg++6a+cXNfS7QKHbbv03SuSaumJyaWsfNgw+T7aqrJlqurYpZqrkPgXu0iZK0w== +"@babel/plugin-proposal-optional-catch-binding@^7.0.0", "@babel/plugin-proposal-optional-catch-binding@^7.8.3": + version "7.8.3" + resolved "https://registry.yarnpkg.com/@babel/plugin-proposal-optional-catch-binding/-/plugin-proposal-optional-catch-binding-7.8.3.tgz#9dee96ab1650eed88646ae9734ca167ac4a9c5c9" + integrity sha512-0gkX7J7E+AtAw9fcwlVQj8peP61qhdg/89D5swOkjYbkboA2CVckn3kiyum1DE0wskGb7KJJxBdyEBApDLLVdw== dependencies: - "@babel/helper-plugin-utils" "^7.0.0" - "@babel/plugin-syntax-optional-chaining" "^7.0.0" + "@babel/helper-plugin-utils" "^7.8.3" + "@babel/plugin-syntax-optional-catch-binding" "^7.8.0" -"@babel/plugin-proposal-unicode-property-regex@^7.2.0": - version "7.2.0" - resolved "https://registry.yarnpkg.com/@babel/plugin-proposal-unicode-property-regex/-/plugin-proposal-unicode-property-regex-7.2.0.tgz#abe7281fe46c95ddc143a65e5358647792039520" - integrity sha512-LvRVYb7kikuOtIoUeWTkOxQEV1kYvL5B6U3iWEGCzPNRus1MzJweFqORTj+0jkxozkTSYNJozPOddxmqdqsRpw== +"@babel/plugin-proposal-optional-chaining@^7.0.0", "@babel/plugin-proposal-optional-chaining@^7.9.0": + version "7.9.0" + resolved "https://registry.yarnpkg.com/@babel/plugin-proposal-optional-chaining/-/plugin-proposal-optional-chaining-7.9.0.tgz#31db16b154c39d6b8a645292472b98394c292a58" + integrity sha512-NDn5tu3tcv4W30jNhmc2hyD5c56G6cXx4TesJubhxrJeCvuuMpttxr0OnNCqbZGhFjLrg+NIhxxC+BK5F6yS3w== dependencies: - "@babel/helper-plugin-utils" "^7.0.0" - "@babel/helper-regex" "^7.0.0" - regexpu-core "^4.2.0" + "@babel/helper-plugin-utils" "^7.8.3" + "@babel/plugin-syntax-optional-chaining" "^7.8.0" -"@babel/plugin-syntax-async-generators@^7.2.0": - version "7.2.0" - resolved "https://registry.yarnpkg.com/@babel/plugin-syntax-async-generators/-/plugin-syntax-async-generators-7.2.0.tgz#69e1f0db34c6f5a0cf7e2b3323bf159a76c8cb7f" - integrity sha512-1ZrIRBv2t0GSlcwVoQ6VgSLpLgiN/FVQUzt9znxo7v2Ov4jJrs8RY8tv0wvDmFN3qIdMKWrmMMW6yZ0G19MfGg== +"@babel/plugin-proposal-unicode-property-regex@^7.4.4", "@babel/plugin-proposal-unicode-property-regex@^7.8.3": + version "7.8.8" + resolved "https://registry.yarnpkg.com/@babel/plugin-proposal-unicode-property-regex/-/plugin-proposal-unicode-property-regex-7.8.8.tgz#ee3a95e90cdc04fe8cd92ec3279fa017d68a0d1d" + integrity sha512-EVhjVsMpbhLw9ZfHWSx2iy13Q8Z/eg8e8ccVWt23sWQK5l1UdkoLJPN5w69UA4uITGBnEZD2JOe4QOHycYKv8A== dependencies: - "@babel/helper-plugin-utils" "^7.0.0" + "@babel/helper-create-regexp-features-plugin" "^7.8.8" + "@babel/helper-plugin-utils" "^7.8.3" -"@babel/plugin-syntax-class-properties@^7.0.0": - version "7.0.0" - resolved "https://registry.yarnpkg.com/@babel/plugin-syntax-class-properties/-/plugin-syntax-class-properties-7.0.0.tgz#e051af5d300cbfbcec4a7476e37a803489881634" - integrity sha512-cR12g0Qzn4sgkjrbrzWy2GE7m9vMl/sFkqZ3gIpAQdrvPDnLM8180i+ANDFIXfjHo9aqp0ccJlQ0QNZcFUbf9w== +"@babel/plugin-syntax-async-generators@^7.8.0", "@babel/plugin-syntax-async-generators@^7.8.4": + version "7.8.4" + resolved "https://registry.yarnpkg.com/@babel/plugin-syntax-async-generators/-/plugin-syntax-async-generators-7.8.4.tgz#a983fb1aeb2ec3f6ed042a210f640e90e786fe0d" + integrity sha512-tycmZxkGfZaxhMRbXlPXuVFpdWlXpir2W4AMhSJgRKzk/eDlIXOhb2LHWoLpDF7TEHylV5zNhykX6KAgHJmTNw== dependencies: - "@babel/helper-plugin-utils" "^7.0.0" + "@babel/helper-plugin-utils" "^7.8.0" -"@babel/plugin-syntax-dynamic-import@^7.0.0": - version "7.0.0" - resolved "https://registry.yarnpkg.com/@babel/plugin-syntax-dynamic-import/-/plugin-syntax-dynamic-import-7.0.0.tgz#6dfb7d8b6c3be14ce952962f658f3b7eb54c33ee" - integrity sha512-Gt9xNyRrCHCiyX/ZxDGOcBnlJl0I3IWicpZRC4CdC0P5a/I07Ya2OAMEBU+J7GmRFVmIetqEYRko6QYRuKOESw== +"@babel/plugin-syntax-bigint@^7.8.3": + version "7.8.3" + resolved "https://registry.yarnpkg.com/@babel/plugin-syntax-bigint/-/plugin-syntax-bigint-7.8.3.tgz#4c9a6f669f5d0cdf1b90a1671e9a146be5300cea" + integrity sha512-wnTnFlG+YxQm3vDxpGE57Pj0srRU4sHE/mDkt1qv2YJJSeUAec2ma4WLUnUPeKjyrfntVwe/N6dCXpU+zL3Npg== dependencies: - "@babel/helper-plugin-utils" "^7.0.0" + "@babel/helper-plugin-utils" "^7.8.0" -"@babel/plugin-syntax-export-default-from@^7.0.0": - version "7.0.0" - resolved "https://registry.yarnpkg.com/@babel/plugin-syntax-export-default-from/-/plugin-syntax-export-default-from-7.0.0.tgz#084b639bce3d42f3c5bf3f68ccb42220bb2d729d" - integrity sha512-HNnjg/fFFbnuLAqr/Ocp1Y3GB4AjmXcu1xxn3ql3bS2kGrB/qi+Povshb8i3hOkE5jNozzh8r/0/lq1w8oOWbQ== +"@babel/plugin-syntax-class-properties@^7.0.0", "@babel/plugin-syntax-class-properties@^7.8.3": + version "7.8.3" + resolved "https://registry.yarnpkg.com/@babel/plugin-syntax-class-properties/-/plugin-syntax-class-properties-7.8.3.tgz#6cb933a8872c8d359bfde69bbeaae5162fd1e8f7" + integrity sha512-UcAyQWg2bAN647Q+O811tG9MrJ38Z10jjhQdKNAL8fsyPzE3cCN/uT+f55cFVY4aGO4jqJAvmqsuY3GQDwAoXg== dependencies: - "@babel/helper-plugin-utils" "^7.0.0" + "@babel/helper-plugin-utils" "^7.8.3" -"@babel/plugin-syntax-flow@^7.0.0": - version "7.0.0" - resolved "https://registry.yarnpkg.com/@babel/plugin-syntax-flow/-/plugin-syntax-flow-7.0.0.tgz#70638aeaad9ee426bc532e51523cff8ff02f6f17" - integrity sha512-zGcuZWiWWDa5qTZ6iAnpG0fnX/GOu49pGR5PFvkQ9GmKNaSphXQnlNXh/LG20sqWtNrx/eB6krzfEzcwvUyeFA== +"@babel/plugin-syntax-dynamic-import@^7.0.0", "@babel/plugin-syntax-dynamic-import@^7.8.0": + version "7.8.3" + resolved "https://registry.yarnpkg.com/@babel/plugin-syntax-dynamic-import/-/plugin-syntax-dynamic-import-7.8.3.tgz#62bf98b2da3cd21d626154fc96ee5b3cb68eacb3" + integrity sha512-5gdGbFon+PszYzqs83S3E5mpi7/y/8M9eC90MRTZfduQOYW76ig6SOSPNe41IG5LoP3FGBn2N0RjVDSQiS94kQ== dependencies: - "@babel/helper-plugin-utils" "^7.0.0" + "@babel/helper-plugin-utils" "^7.8.0" -"@babel/plugin-syntax-flow@^7.2.0": - version "7.2.0" - resolved "https://registry.yarnpkg.com/@babel/plugin-syntax-flow/-/plugin-syntax-flow-7.2.0.tgz#a765f061f803bc48f240c26f8747faf97c26bf7c" - integrity sha512-r6YMuZDWLtLlu0kqIim5o/3TNRAlWb073HwT3e2nKf9I8IIvOggPrnILYPsrrKilmn/mYEMCf/Z07w3yQJF6dg== +"@babel/plugin-syntax-export-default-from@^7.0.0", "@babel/plugin-syntax-export-default-from@^7.8.3": + version "7.8.3" + resolved "https://registry.yarnpkg.com/@babel/plugin-syntax-export-default-from/-/plugin-syntax-export-default-from-7.8.3.tgz#f1e55ce850091442af4ba9c2550106035b29d678" + integrity sha512-a1qnnsr73KLNIQcQlcQ4ZHxqqfBKM6iNQZW2OMTyxNbA2WC7SHWHtGVpFzWtQAuS2pspkWVzdEBXXx8Ik0Za4w== dependencies: - "@babel/helper-plugin-utils" "^7.0.0" + "@babel/helper-plugin-utils" "^7.8.3" -"@babel/plugin-syntax-json-strings@^7.2.0": - version "7.2.0" - resolved "https://registry.yarnpkg.com/@babel/plugin-syntax-json-strings/-/plugin-syntax-json-strings-7.2.0.tgz#72bd13f6ffe1d25938129d2a186b11fd62951470" - integrity sha512-5UGYnMSLRE1dqqZwug+1LISpA403HzlSfsg6P9VXU6TBjcSHeNlw4DxDx7LgpF+iKZoOG/+uzqoRHTdcUpiZNg== +"@babel/plugin-syntax-flow@^7.0.0", "@babel/plugin-syntax-flow@^7.2.0", "@babel/plugin-syntax-flow@^7.8.3": + version "7.8.3" + resolved "https://registry.yarnpkg.com/@babel/plugin-syntax-flow/-/plugin-syntax-flow-7.8.3.tgz#f2c883bd61a6316f2c89380ae5122f923ba4527f" + integrity sha512-innAx3bUbA0KSYj2E2MNFSn9hiCeowOFLxlsuhXzw8hMQnzkDomUr9QCD7E9VF60NmnG1sNTuuv6Qf4f8INYsg== dependencies: - "@babel/helper-plugin-utils" "^7.0.0" + "@babel/helper-plugin-utils" "^7.8.3" -"@babel/plugin-syntax-jsx@^7.0.0": - version "7.0.0" - resolved "https://registry.yarnpkg.com/@babel/plugin-syntax-jsx/-/plugin-syntax-jsx-7.0.0.tgz#034d5e2b4e14ccaea2e4c137af7e4afb39375ffd" - integrity sha512-PdmL2AoPsCLWxhIr3kG2+F9v4WH06Q3z+NoGVpQgnUNGcagXHq5sB3OXxkSahKq9TLdNMN/AJzFYSOo8UKDMHg== +"@babel/plugin-syntax-json-strings@^7.8.0", "@babel/plugin-syntax-json-strings@^7.8.3": + version "7.8.3" + resolved "https://registry.yarnpkg.com/@babel/plugin-syntax-json-strings/-/plugin-syntax-json-strings-7.8.3.tgz#01ca21b668cd8218c9e640cb6dd88c5412b2c96a" + integrity sha512-lY6kdGpWHvjoe2vk4WrAapEuBR69EMxZl+RoGRhrFGNYVK8mOPAW8VfbT/ZgrFbXlDNiiaxQnAtgVCZ6jv30EA== dependencies: - "@babel/helper-plugin-utils" "^7.0.0" + "@babel/helper-plugin-utils" "^7.8.0" -"@babel/plugin-syntax-jsx@^7.8.3": +"@babel/plugin-syntax-jsx@^7.0.0", "@babel/plugin-syntax-jsx@^7.8.3": version "7.8.3" resolved "https://registry.yarnpkg.com/@babel/plugin-syntax-jsx/-/plugin-syntax-jsx-7.8.3.tgz#521b06c83c40480f1e58b4fd33b92eceb1d6ea94" integrity sha512-WxdW9xyLgBdefoo0Ynn3MRSkhe5tFVxxKNVdnZSh318WrG2e2jH+E9wd/++JsqcLJZPfz87njQJ8j2Upjm0M0A== dependencies: "@babel/helper-plugin-utils" "^7.8.3" -"@babel/plugin-syntax-nullish-coalescing-operator@^7.0.0": - version "7.0.0" - resolved "https://registry.yarnpkg.com/@babel/plugin-syntax-nullish-coalescing-operator/-/plugin-syntax-nullish-coalescing-operator-7.0.0.tgz#b60931d5a15da82625fff6657c39419969598743" - integrity sha512-oAJmMsAvTSIk9y0sZdU2S/nY44PEUuHN7EzNDMgbuR4e/OwyfR9lSmoBJBZ2lslFZIqhksrTt4i+av7uKfNYDw== +"@babel/plugin-syntax-logical-assignment-operators@^7.8.3": + version "7.8.3" + resolved "https://registry.yarnpkg.com/@babel/plugin-syntax-logical-assignment-operators/-/plugin-syntax-logical-assignment-operators-7.8.3.tgz#3995d7d7ffff432f6ddc742b47e730c054599897" + integrity sha512-Zpg2Sgc++37kuFl6ppq2Q7Awc6E6AIW671x5PY8E/f7MCIyPPGK/EoeZXvvY3P42exZ3Q4/t3YOzP/HiN79jDg== dependencies: - "@babel/helper-plugin-utils" "^7.0.0" + "@babel/helper-plugin-utils" "^7.8.3" -"@babel/plugin-syntax-object-rest-spread@^7.0.0", "@babel/plugin-syntax-object-rest-spread@^7.2.0": - version "7.2.0" - resolved "https://registry.yarnpkg.com/@babel/plugin-syntax-object-rest-spread/-/plugin-syntax-object-rest-spread-7.2.0.tgz#3b7a3e733510c57e820b9142a6579ac8b0dfad2e" - integrity sha512-t0JKGgqk2We+9may3t0xDdmneaXmyxq0xieYcKHxIsrJO64n1OiMWNUtc5gQK1PA0NpdCRrtZp4z+IUaKugrSA== +"@babel/plugin-syntax-nullish-coalescing-operator@^7.0.0", "@babel/plugin-syntax-nullish-coalescing-operator@^7.8.0", "@babel/plugin-syntax-nullish-coalescing-operator@^7.8.3": + version "7.8.3" + resolved "https://registry.yarnpkg.com/@babel/plugin-syntax-nullish-coalescing-operator/-/plugin-syntax-nullish-coalescing-operator-7.8.3.tgz#167ed70368886081f74b5c36c65a88c03b66d1a9" + integrity sha512-aSff4zPII1u2QD7y+F8oDsz19ew4IGEJg9SVW+bqwpwtfFleiQDMdzA/R+UlWDzfnHFCxxleFT0PMIrR36XLNQ== dependencies: - "@babel/helper-plugin-utils" "^7.0.0" + "@babel/helper-plugin-utils" "^7.8.0" -"@babel/plugin-syntax-optional-catch-binding@^7.2.0": - version "7.2.0" - resolved "https://registry.yarnpkg.com/@babel/plugin-syntax-optional-catch-binding/-/plugin-syntax-optional-catch-binding-7.2.0.tgz#a94013d6eda8908dfe6a477e7f9eda85656ecf5c" - integrity sha512-bDe4xKNhb0LI7IvZHiA13kff0KEfaGX/Hv4lMA9+7TEc63hMNvfKo6ZFpXhKuEp+II/q35Gc4NoMeDZyaUbj9w== +"@babel/plugin-syntax-numeric-separator@^7.8.0", "@babel/plugin-syntax-numeric-separator@^7.8.3": + version "7.8.3" + resolved "https://registry.yarnpkg.com/@babel/plugin-syntax-numeric-separator/-/plugin-syntax-numeric-separator-7.8.3.tgz#0e3fb63e09bea1b11e96467271c8308007e7c41f" + integrity sha512-H7dCMAdN83PcCmqmkHB5dtp+Xa9a6LKSvA2hiFBC/5alSHxM5VgWZXFqDi0YFe8XNGT6iCa+z4V4zSt/PdZ7Dw== dependencies: - "@babel/helper-plugin-utils" "^7.0.0" + "@babel/helper-plugin-utils" "^7.8.3" -"@babel/plugin-syntax-optional-chaining@^7.0.0": - version "7.0.0" - resolved "https://registry.yarnpkg.com/@babel/plugin-syntax-optional-chaining/-/plugin-syntax-optional-chaining-7.0.0.tgz#1e6ecba124310b5d3a8fc1e00d50b1c4c2e05e68" - integrity sha512-QXedQsZf8yua1nNrXSePT0TsGSQH9A1iK08m9dhCMdZeJaaxYcQfXdgHWVV6Cp7WE/afPVvSKIsAHK5wP+yxDA== +"@babel/plugin-syntax-object-rest-spread@^7.0.0", "@babel/plugin-syntax-object-rest-spread@^7.8.0", "@babel/plugin-syntax-object-rest-spread@^7.8.3": + version "7.8.3" + resolved "https://registry.yarnpkg.com/@babel/plugin-syntax-object-rest-spread/-/plugin-syntax-object-rest-spread-7.8.3.tgz#60e225edcbd98a640332a2e72dd3e66f1af55871" + integrity sha512-XoqMijGZb9y3y2XskN+P1wUGiVwWZ5JmoDRwx5+3GmEplNyVM2s2Dg8ILFQm8rWM48orGy5YpI5Bl8U1y7ydlA== dependencies: - "@babel/helper-plugin-utils" "^7.0.0" + "@babel/helper-plugin-utils" "^7.8.0" -"@babel/plugin-syntax-typescript@^7.2.0": - version "7.2.0" - resolved "https://registry.yarnpkg.com/@babel/plugin-syntax-typescript/-/plugin-syntax-typescript-7.2.0.tgz#55d240536bd314dcbbec70fd949c5cabaed1de29" - integrity sha512-WhKr6yu6yGpGcNMVgIBuI9MkredpVc7Y3YR4UzEZmDztHoL6wV56YBHLhWnjO1EvId1B32HrD3DRFc+zSoKI1g== +"@babel/plugin-syntax-optional-catch-binding@^7.8.0", "@babel/plugin-syntax-optional-catch-binding@^7.8.3": + version "7.8.3" + resolved "https://registry.yarnpkg.com/@babel/plugin-syntax-optional-catch-binding/-/plugin-syntax-optional-catch-binding-7.8.3.tgz#6111a265bcfb020eb9efd0fdfd7d26402b9ed6c1" + integrity sha512-6VPD0Pc1lpTqw0aKoeRTMiB+kWhAoT24PA+ksWSBrFtl5SIRVpZlwN3NNPQjehA2E/91FV3RjLWoVTglWcSV3Q== dependencies: - "@babel/helper-plugin-utils" "^7.0.0" + "@babel/helper-plugin-utils" "^7.8.0" + +"@babel/plugin-syntax-optional-chaining@^7.0.0", "@babel/plugin-syntax-optional-chaining@^7.8.0", "@babel/plugin-syntax-optional-chaining@^7.8.3": + version "7.8.3" + resolved "https://registry.yarnpkg.com/@babel/plugin-syntax-optional-chaining/-/plugin-syntax-optional-chaining-7.8.3.tgz#4f69c2ab95167e0180cd5336613f8c5788f7d48a" + integrity sha512-KoK9ErH1MBlCPxV0VANkXW2/dw4vlbGDrFgz8bmUsBGYkFRcbRwMh6cIJubdPrkxRwuGdtCk0v/wPTKbQgBjkg== + dependencies: + "@babel/helper-plugin-utils" "^7.8.0" + +"@babel/plugin-syntax-top-level-await@^7.8.3": + version "7.8.3" + resolved "https://registry.yarnpkg.com/@babel/plugin-syntax-top-level-await/-/plugin-syntax-top-level-await-7.8.3.tgz#3acdece695e6b13aaf57fc291d1a800950c71391" + integrity sha512-kwj1j9lL/6Wd0hROD3b/OZZ7MSrZLqqn9RAZ5+cYYsflQ9HZBIKCUkr3+uL1MEJ1NePiUbf98jjiMQSv0NMR9g== + dependencies: + "@babel/helper-plugin-utils" "^7.8.3" "@babel/plugin-syntax-typescript@^7.8.3": version "7.8.3" @@ -647,500 +511,490 @@ dependencies: "@babel/helper-plugin-utils" "^7.8.3" -"@babel/plugin-transform-arrow-functions@^7.0.0", "@babel/plugin-transform-arrow-functions@^7.2.0": - version "7.2.0" - resolved "https://registry.yarnpkg.com/@babel/plugin-transform-arrow-functions/-/plugin-transform-arrow-functions-7.2.0.tgz#9aeafbe4d6ffc6563bf8f8372091628f00779550" - integrity sha512-ER77Cax1+8/8jCB9fo4Ud161OZzWN5qawi4GusDuRLcDbDG+bIGYY20zb2dfAFdTRGzrfq2xZPvF0R64EHnimg== +"@babel/plugin-transform-arrow-functions@^7.0.0", "@babel/plugin-transform-arrow-functions@^7.8.3": + version "7.8.3" + resolved "https://registry.yarnpkg.com/@babel/plugin-transform-arrow-functions/-/plugin-transform-arrow-functions-7.8.3.tgz#82776c2ed0cd9e1a49956daeb896024c9473b8b6" + integrity sha512-0MRF+KC8EqH4dbuITCWwPSzsyO3HIWWlm30v8BbbpOrS1B++isGxPnnuq/IZvOX5J2D/p7DQalQm+/2PnlKGxg== dependencies: - "@babel/helper-plugin-utils" "^7.0.0" + "@babel/helper-plugin-utils" "^7.8.3" -"@babel/plugin-transform-async-to-generator@^7.0.0", "@babel/plugin-transform-async-to-generator@^7.2.0": - version "7.2.0" - resolved "https://registry.yarnpkg.com/@babel/plugin-transform-async-to-generator/-/plugin-transform-async-to-generator-7.2.0.tgz#68b8a438663e88519e65b776f8938f3445b1a2ff" - integrity sha512-CEHzg4g5UraReozI9D4fblBYABs7IM6UerAVG7EJVrTLC5keh00aEuLUT+O40+mJCEzaXkYfTCUKIyeDfMOFFQ== +"@babel/plugin-transform-async-to-generator@^7.0.0", "@babel/plugin-transform-async-to-generator@^7.8.3": + version "7.8.3" + resolved "https://registry.yarnpkg.com/@babel/plugin-transform-async-to-generator/-/plugin-transform-async-to-generator-7.8.3.tgz#4308fad0d9409d71eafb9b1a6ee35f9d64b64086" + integrity sha512-imt9tFLD9ogt56Dd5CI/6XgpukMwd/fLGSrix2httihVe7LOGVPhyhMh1BU5kDM7iHD08i8uUtmV2sWaBFlHVQ== dependencies: - "@babel/helper-module-imports" "^7.0.0" - "@babel/helper-plugin-utils" "^7.0.0" - "@babel/helper-remap-async-to-generator" "^7.1.0" + "@babel/helper-module-imports" "^7.8.3" + "@babel/helper-plugin-utils" "^7.8.3" + "@babel/helper-remap-async-to-generator" "^7.8.3" -"@babel/plugin-transform-block-scoped-functions@^7.0.0", "@babel/plugin-transform-block-scoped-functions@^7.2.0": - version "7.2.0" - resolved "https://registry.yarnpkg.com/@babel/plugin-transform-block-scoped-functions/-/plugin-transform-block-scoped-functions-7.2.0.tgz#5d3cc11e8d5ddd752aa64c9148d0db6cb79fd190" - integrity sha512-ntQPR6q1/NKuphly49+QiQiTN0O63uOwjdD6dhIjSWBI5xlrbUFh720TIpzBhpnrLfv2tNH/BXvLIab1+BAI0w== +"@babel/plugin-transform-block-scoped-functions@^7.0.0", "@babel/plugin-transform-block-scoped-functions@^7.8.3": + version "7.8.3" + resolved "https://registry.yarnpkg.com/@babel/plugin-transform-block-scoped-functions/-/plugin-transform-block-scoped-functions-7.8.3.tgz#437eec5b799b5852072084b3ae5ef66e8349e8a3" + integrity sha512-vo4F2OewqjbB1+yaJ7k2EJFHlTP3jR634Z9Cj9itpqNjuLXvhlVxgnjsHsdRgASR8xYDrx6onw4vW5H6We0Jmg== dependencies: - "@babel/helper-plugin-utils" "^7.0.0" + "@babel/helper-plugin-utils" "^7.8.3" -"@babel/plugin-transform-block-scoping@^7.0.0", "@babel/plugin-transform-block-scoping@^7.2.0": - version "7.2.0" - resolved "https://registry.yarnpkg.com/@babel/plugin-transform-block-scoping/-/plugin-transform-block-scoping-7.2.0.tgz#f17c49d91eedbcdf5dd50597d16f5f2f770132d4" - integrity sha512-vDTgf19ZEV6mx35yiPJe4fS02mPQUUcBNwWQSZFXSzTSbsJFQvHt7DqyS3LK8oOWALFOsJ+8bbqBgkirZteD5Q== +"@babel/plugin-transform-block-scoping@^7.0.0", "@babel/plugin-transform-block-scoping@^7.8.3": + version "7.8.3" + resolved "https://registry.yarnpkg.com/@babel/plugin-transform-block-scoping/-/plugin-transform-block-scoping-7.8.3.tgz#97d35dab66857a437c166358b91d09050c868f3a" + integrity sha512-pGnYfm7RNRgYRi7bids5bHluENHqJhrV4bCZRwc5GamaWIIs07N4rZECcmJL6ZClwjDz1GbdMZFtPs27hTB06w== dependencies: - "@babel/helper-plugin-utils" "^7.0.0" - lodash "^4.17.10" + "@babel/helper-plugin-utils" "^7.8.3" + lodash "^4.17.13" -"@babel/plugin-transform-classes@^7.0.0", "@babel/plugin-transform-classes@^7.2.0": - version "7.2.2" - resolved "https://registry.yarnpkg.com/@babel/plugin-transform-classes/-/plugin-transform-classes-7.2.2.tgz#6c90542f210ee975aa2aa8c8b5af7fa73a126953" - integrity sha512-gEZvgTy1VtcDOaQty1l10T3jQmJKlNVxLDCs+3rCVPr6nMkODLELxViq5X9l+rfxbie3XrfrMCYYY6eX3aOcOQ== +"@babel/plugin-transform-classes@^7.0.0", "@babel/plugin-transform-classes@^7.9.0": + version "7.9.2" + resolved "https://registry.yarnpkg.com/@babel/plugin-transform-classes/-/plugin-transform-classes-7.9.2.tgz#8603fc3cc449e31fdbdbc257f67717536a11af8d" + integrity sha512-TC2p3bPzsfvSsqBZo0kJnuelnoK9O3welkUpqSqBQuBF6R5MN2rysopri8kNvtlGIb2jmUO7i15IooAZJjZuMQ== dependencies: - "@babel/helper-annotate-as-pure" "^7.0.0" - "@babel/helper-define-map" "^7.1.0" - "@babel/helper-function-name" "^7.1.0" - "@babel/helper-optimise-call-expression" "^7.0.0" - "@babel/helper-plugin-utils" "^7.0.0" - "@babel/helper-replace-supers" "^7.1.0" - "@babel/helper-split-export-declaration" "^7.0.0" + "@babel/helper-annotate-as-pure" "^7.8.3" + "@babel/helper-define-map" "^7.8.3" + "@babel/helper-function-name" "^7.8.3" + "@babel/helper-optimise-call-expression" "^7.8.3" + "@babel/helper-plugin-utils" "^7.8.3" + "@babel/helper-replace-supers" "^7.8.6" + "@babel/helper-split-export-declaration" "^7.8.3" globals "^11.1.0" -"@babel/plugin-transform-computed-properties@^7.0.0", "@babel/plugin-transform-computed-properties@^7.2.0": - version "7.2.0" - resolved "https://registry.yarnpkg.com/@babel/plugin-transform-computed-properties/-/plugin-transform-computed-properties-7.2.0.tgz#83a7df6a658865b1c8f641d510c6f3af220216da" - integrity sha512-kP/drqTxY6Xt3NNpKiMomfgkNn4o7+vKxK2DDKcBG9sHj51vHqMBGy8wbDS/J4lMxnqs153/T3+DmCEAkC5cpA== +"@babel/plugin-transform-computed-properties@^7.0.0", "@babel/plugin-transform-computed-properties@^7.8.3": + version "7.8.3" + resolved "https://registry.yarnpkg.com/@babel/plugin-transform-computed-properties/-/plugin-transform-computed-properties-7.8.3.tgz#96d0d28b7f7ce4eb5b120bb2e0e943343c86f81b" + integrity sha512-O5hiIpSyOGdrQZRQ2ccwtTVkgUDBBiCuK//4RJ6UfePllUTCENOzKxfh6ulckXKc0DixTFLCfb2HVkNA7aDpzA== dependencies: - "@babel/helper-plugin-utils" "^7.0.0" + "@babel/helper-plugin-utils" "^7.8.3" -"@babel/plugin-transform-destructuring@^7.0.0", "@babel/plugin-transform-destructuring@^7.2.0": - version "7.2.0" - resolved "https://registry.yarnpkg.com/@babel/plugin-transform-destructuring/-/plugin-transform-destructuring-7.2.0.tgz#e75269b4b7889ec3a332cd0d0c8cff8fed0dc6f3" - integrity sha512-coVO2Ayv7g0qdDbrNiadE4bU7lvCd9H539m2gMknyVjjMdwF/iCOM7R+E8PkntoqLkltO0rk+3axhpp/0v68VQ== +"@babel/plugin-transform-destructuring@^7.0.0", "@babel/plugin-transform-destructuring@^7.8.3": + version "7.8.8" + resolved "https://registry.yarnpkg.com/@babel/plugin-transform-destructuring/-/plugin-transform-destructuring-7.8.8.tgz#fadb2bc8e90ccaf5658de6f8d4d22ff6272a2f4b" + integrity sha512-eRJu4Vs2rmttFCdhPUM3bV0Yo/xPSdPw6ML9KHs/bjB4bLA5HXlbvYXPOD5yASodGod+krjYx21xm1QmL8dCJQ== dependencies: - "@babel/helper-plugin-utils" "^7.0.0" + "@babel/helper-plugin-utils" "^7.8.3" + +"@babel/plugin-transform-dotall-regex@^7.4.4", "@babel/plugin-transform-dotall-regex@^7.8.3": + version "7.8.3" + resolved "https://registry.yarnpkg.com/@babel/plugin-transform-dotall-regex/-/plugin-transform-dotall-regex-7.8.3.tgz#c3c6ec5ee6125c6993c5cbca20dc8621a9ea7a6e" + integrity sha512-kLs1j9Nn4MQoBYdRXH6AeaXMbEJFaFu/v1nQkvib6QzTj8MZI5OQzqmD83/2jEM1z0DLilra5aWO5YpyC0ALIw== + dependencies: + "@babel/helper-create-regexp-features-plugin" "^7.8.3" + "@babel/helper-plugin-utils" "^7.8.3" -"@babel/plugin-transform-dotall-regex@^7.2.0": - version "7.2.0" - resolved "https://registry.yarnpkg.com/@babel/plugin-transform-dotall-regex/-/plugin-transform-dotall-regex-7.2.0.tgz#f0aabb93d120a8ac61e925ea0ba440812dbe0e49" - integrity sha512-sKxnyHfizweTgKZf7XsXu/CNupKhzijptfTM+bozonIuyVrLWVUvYjE2bhuSBML8VQeMxq4Mm63Q9qvcvUcciQ== +"@babel/plugin-transform-duplicate-keys@^7.8.3": + version "7.8.3" + resolved "https://registry.yarnpkg.com/@babel/plugin-transform-duplicate-keys/-/plugin-transform-duplicate-keys-7.8.3.tgz#8d12df309aa537f272899c565ea1768e286e21f1" + integrity sha512-s8dHiBUbcbSgipS4SMFuWGqCvyge5V2ZeAWzR6INTVC3Ltjig/Vw1G2Gztv0vU/hRG9X8IvKvYdoksnUfgXOEQ== dependencies: - "@babel/helper-plugin-utils" "^7.0.0" - "@babel/helper-regex" "^7.0.0" - regexpu-core "^4.1.3" + "@babel/helper-plugin-utils" "^7.8.3" -"@babel/plugin-transform-duplicate-keys@^7.2.0": - version "7.2.0" - resolved "https://registry.yarnpkg.com/@babel/plugin-transform-duplicate-keys/-/plugin-transform-duplicate-keys-7.2.0.tgz#d952c4930f312a4dbfff18f0b2914e60c35530b3" - integrity sha512-q+yuxW4DsTjNceUiTzK0L+AfQ0zD9rWaTLiUqHA8p0gxx7lu1EylenfzjeIWNkPy6e/0VG/Wjw9uf9LueQwLOw== +"@babel/plugin-transform-exponentiation-operator@^7.0.0", "@babel/plugin-transform-exponentiation-operator@^7.8.3": + version "7.8.3" + resolved "https://registry.yarnpkg.com/@babel/plugin-transform-exponentiation-operator/-/plugin-transform-exponentiation-operator-7.8.3.tgz#581a6d7f56970e06bf51560cd64f5e947b70d7b7" + integrity sha512-zwIpuIymb3ACcInbksHaNcR12S++0MDLKkiqXHl3AzpgdKlFNhog+z/K0+TGW+b0w5pgTq4H6IwV/WhxbGYSjQ== dependencies: - "@babel/helper-plugin-utils" "^7.0.0" + "@babel/helper-builder-binary-assignment-operator-visitor" "^7.8.3" + "@babel/helper-plugin-utils" "^7.8.3" -"@babel/plugin-transform-exponentiation-operator@^7.0.0", "@babel/plugin-transform-exponentiation-operator@^7.2.0": - version "7.2.0" - resolved "https://registry.yarnpkg.com/@babel/plugin-transform-exponentiation-operator/-/plugin-transform-exponentiation-operator-7.2.0.tgz#a63868289e5b4007f7054d46491af51435766008" - integrity sha512-umh4hR6N7mu4Elq9GG8TOu9M0bakvlsREEC+ialrQN6ABS4oDQ69qJv1VtR3uxlKMCQMCvzk7vr17RHKcjx68A== +"@babel/plugin-transform-flow-strip-types@^7.0.0", "@babel/plugin-transform-flow-strip-types@^7.9.0": + version "7.9.0" + resolved "https://registry.yarnpkg.com/@babel/plugin-transform-flow-strip-types/-/plugin-transform-flow-strip-types-7.9.0.tgz#8a3538aa40434e000b8f44a3c5c9ac7229bd2392" + integrity sha512-7Qfg0lKQhEHs93FChxVLAvhBshOPQDtJUTVHr/ZwQNRccCm4O9D79r9tVSoV8iNwjP1YgfD+e/fgHcPkN1qEQg== dependencies: - "@babel/helper-builder-binary-assignment-operator-visitor" "^7.1.0" - "@babel/helper-plugin-utils" "^7.0.0" + "@babel/helper-plugin-utils" "^7.8.3" + "@babel/plugin-syntax-flow" "^7.8.3" -"@babel/plugin-transform-flow-strip-types@^7.0.0": - version "7.0.0" - resolved "https://registry.yarnpkg.com/@babel/plugin-transform-flow-strip-types/-/plugin-transform-flow-strip-types-7.0.0.tgz#c40ced34c2783985d90d9f9ac77a13e6fb396a01" - integrity sha512-WhXUNb4It5a19RsgKKbQPrjmy4yWOY1KynpEbNw7bnd1QTcrT/EIl3MJvnGgpgvrKyKbqX7nUNOJfkpLOnoDKA== +"@babel/plugin-transform-for-of@^7.0.0", "@babel/plugin-transform-for-of@^7.9.0": + version "7.9.0" + resolved "https://registry.yarnpkg.com/@babel/plugin-transform-for-of/-/plugin-transform-for-of-7.9.0.tgz#0f260e27d3e29cd1bb3128da5e76c761aa6c108e" + integrity sha512-lTAnWOpMwOXpyDx06N+ywmF3jNbafZEqZ96CGYabxHrxNX8l5ny7dt4bK/rGwAh9utyP2b2Hv7PlZh1AAS54FQ== dependencies: - "@babel/helper-plugin-utils" "^7.0.0" - "@babel/plugin-syntax-flow" "^7.0.0" + "@babel/helper-plugin-utils" "^7.8.3" -"@babel/plugin-transform-for-of@^7.0.0", "@babel/plugin-transform-for-of@^7.2.0": - version "7.2.0" - resolved "https://registry.yarnpkg.com/@babel/plugin-transform-for-of/-/plugin-transform-for-of-7.2.0.tgz#ab7468befa80f764bb03d3cb5eef8cc998e1cad9" - integrity sha512-Kz7Mt0SsV2tQk6jG5bBv5phVbkd0gd27SgYD4hH1aLMJRchM0dzHaXvrWhVZ+WxAlDoAKZ7Uy3jVTW2mKXQ1WQ== +"@babel/plugin-transform-function-name@^7.0.0", "@babel/plugin-transform-function-name@^7.8.3": + version "7.8.3" + resolved "https://registry.yarnpkg.com/@babel/plugin-transform-function-name/-/plugin-transform-function-name-7.8.3.tgz#279373cb27322aaad67c2683e776dfc47196ed8b" + integrity sha512-rO/OnDS78Eifbjn5Py9v8y0aR+aSYhDhqAwVfsTl0ERuMZyr05L1aFSCJnbv2mmsLkit/4ReeQ9N2BgLnOcPCQ== dependencies: - "@babel/helper-plugin-utils" "^7.0.0" + "@babel/helper-function-name" "^7.8.3" + "@babel/helper-plugin-utils" "^7.8.3" -"@babel/plugin-transform-function-name@^7.0.0", "@babel/plugin-transform-function-name@^7.2.0": - version "7.2.0" - resolved "https://registry.yarnpkg.com/@babel/plugin-transform-function-name/-/plugin-transform-function-name-7.2.0.tgz#f7930362829ff99a3174c39f0afcc024ef59731a" - integrity sha512-kWgksow9lHdvBC2Z4mxTsvc7YdY7w/V6B2vy9cTIPtLEE9NhwoWivaxdNM/S37elu5bqlLP/qOY906LukO9lkQ== +"@babel/plugin-transform-literals@^7.0.0", "@babel/plugin-transform-literals@^7.8.3": + version "7.8.3" + resolved "https://registry.yarnpkg.com/@babel/plugin-transform-literals/-/plugin-transform-literals-7.8.3.tgz#aef239823d91994ec7b68e55193525d76dbd5dc1" + integrity sha512-3Tqf8JJ/qB7TeldGl+TT55+uQei9JfYaregDcEAyBZ7akutriFrt6C/wLYIer6OYhleVQvH/ntEhjE/xMmy10A== dependencies: - "@babel/helper-function-name" "^7.1.0" - "@babel/helper-plugin-utils" "^7.0.0" + "@babel/helper-plugin-utils" "^7.8.3" -"@babel/plugin-transform-literals@^7.0.0", "@babel/plugin-transform-literals@^7.2.0": - version "7.2.0" - resolved "https://registry.yarnpkg.com/@babel/plugin-transform-literals/-/plugin-transform-literals-7.2.0.tgz#690353e81f9267dad4fd8cfd77eafa86aba53ea1" - integrity sha512-2ThDhm4lI4oV7fVQ6pNNK+sx+c/GM5/SaML0w/r4ZB7sAneD/piDJtwdKlNckXeyGK7wlwg2E2w33C/Hh+VFCg== +"@babel/plugin-transform-member-expression-literals@^7.0.0", "@babel/plugin-transform-member-expression-literals@^7.8.3": + version "7.8.3" + resolved "https://registry.yarnpkg.com/@babel/plugin-transform-member-expression-literals/-/plugin-transform-member-expression-literals-7.8.3.tgz#963fed4b620ac7cbf6029c755424029fa3a40410" + integrity sha512-3Wk2EXhnw+rP+IDkK6BdtPKsUE5IeZ6QOGrPYvw52NwBStw9V1ZVzxgK6fSKSxqUvH9eQPR3tm3cOq79HlsKYA== dependencies: - "@babel/helper-plugin-utils" "^7.0.0" + "@babel/helper-plugin-utils" "^7.8.3" -"@babel/plugin-transform-member-expression-literals@^7.0.0": - version "7.0.0" - resolved "https://registry.yarnpkg.com/@babel/plugin-transform-member-expression-literals/-/plugin-transform-member-expression-literals-7.0.0.tgz#96a265bf61a9ed6f75c39db0c30d41ef7aabf072" - integrity sha512-kgAGWcjVdflNPSaRb9rDPdGJ9/gF80VPmxx80gdKz6NSofHvxA2LofECQ+7GrDVzzH8zBJzTn1xlV4xnmWj/nw== +"@babel/plugin-transform-modules-amd@^7.9.0": + version "7.9.0" + resolved "https://registry.yarnpkg.com/@babel/plugin-transform-modules-amd/-/plugin-transform-modules-amd-7.9.0.tgz#19755ee721912cf5bb04c07d50280af3484efef4" + integrity sha512-vZgDDF003B14O8zJy0XXLnPH4sg+9X5hFBBGN1V+B2rgrB+J2xIypSN6Rk9imB2hSTHQi5OHLrFWsZab1GMk+Q== dependencies: - "@babel/helper-plugin-utils" "^7.0.0" + "@babel/helper-module-transforms" "^7.9.0" + "@babel/helper-plugin-utils" "^7.8.3" + babel-plugin-dynamic-import-node "^2.3.0" -"@babel/plugin-transform-modules-amd@^7.2.0": - version "7.2.0" - resolved "https://registry.yarnpkg.com/@babel/plugin-transform-modules-amd/-/plugin-transform-modules-amd-7.2.0.tgz#82a9bce45b95441f617a24011dc89d12da7f4ee6" - integrity sha512-mK2A8ucqz1qhrdqjS9VMIDfIvvT2thrEsIQzbaTdc5QFzhDjQv2CkJJ5f6BXIkgbmaoax3zBr2RyvV/8zeoUZw== +"@babel/plugin-transform-modules-commonjs@^7.0.0", "@babel/plugin-transform-modules-commonjs@^7.9.0": + version "7.9.0" + resolved "https://registry.yarnpkg.com/@babel/plugin-transform-modules-commonjs/-/plugin-transform-modules-commonjs-7.9.0.tgz#e3e72f4cbc9b4a260e30be0ea59bdf5a39748940" + integrity sha512-qzlCrLnKqio4SlgJ6FMMLBe4bySNis8DFn1VkGmOcxG9gqEyPIOzeQrA//u0HAKrWpJlpZbZMPB1n/OPa4+n8g== dependencies: - "@babel/helper-module-transforms" "^7.1.0" - "@babel/helper-plugin-utils" "^7.0.0" + "@babel/helper-module-transforms" "^7.9.0" + "@babel/helper-plugin-utils" "^7.8.3" + "@babel/helper-simple-access" "^7.8.3" + babel-plugin-dynamic-import-node "^2.3.0" -"@babel/plugin-transform-modules-commonjs@^7.0.0", "@babel/plugin-transform-modules-commonjs@^7.2.0": - version "7.2.0" - resolved "https://registry.yarnpkg.com/@babel/plugin-transform-modules-commonjs/-/plugin-transform-modules-commonjs-7.2.0.tgz#c4f1933f5991d5145e9cfad1dfd848ea1727f404" - integrity sha512-V6y0uaUQrQPXUrmj+hgnks8va2L0zcZymeU7TtWEgdRLNkceafKXEduv7QzgQAE4lT+suwooG9dC7LFhdRAbVQ== +"@babel/plugin-transform-modules-systemjs@^7.9.0": + version "7.9.0" + resolved "https://registry.yarnpkg.com/@babel/plugin-transform-modules-systemjs/-/plugin-transform-modules-systemjs-7.9.0.tgz#e9fd46a296fc91e009b64e07ddaa86d6f0edeb90" + integrity sha512-FsiAv/nao/ud2ZWy4wFacoLOm5uxl0ExSQ7ErvP7jpoihLR6Cq90ilOFyX9UXct3rbtKsAiZ9kFt5XGfPe/5SQ== dependencies: - "@babel/helper-module-transforms" "^7.1.0" - "@babel/helper-plugin-utils" "^7.0.0" - "@babel/helper-simple-access" "^7.1.0" + "@babel/helper-hoist-variables" "^7.8.3" + "@babel/helper-module-transforms" "^7.9.0" + "@babel/helper-plugin-utils" "^7.8.3" + babel-plugin-dynamic-import-node "^2.3.0" -"@babel/plugin-transform-modules-systemjs@^7.2.0": - version "7.2.0" - resolved "https://registry.yarnpkg.com/@babel/plugin-transform-modules-systemjs/-/plugin-transform-modules-systemjs-7.2.0.tgz#912bfe9e5ff982924c81d0937c92d24994bb9068" - integrity sha512-aYJwpAhoK9a+1+O625WIjvMY11wkB/ok0WClVwmeo3mCjcNRjt+/8gHWrB5i+00mUju0gWsBkQnPpdvQ7PImmQ== +"@babel/plugin-transform-modules-umd@^7.9.0": + version "7.9.0" + resolved "https://registry.yarnpkg.com/@babel/plugin-transform-modules-umd/-/plugin-transform-modules-umd-7.9.0.tgz#e909acae276fec280f9b821a5f38e1f08b480697" + integrity sha512-uTWkXkIVtg/JGRSIABdBoMsoIeoHQHPTL0Y2E7xf5Oj7sLqwVsNXOkNk0VJc7vF0IMBsPeikHxFjGe+qmwPtTQ== dependencies: - "@babel/helper-hoist-variables" "^7.0.0" - "@babel/helper-plugin-utils" "^7.0.0" + "@babel/helper-module-transforms" "^7.9.0" + "@babel/helper-plugin-utils" "^7.8.3" -"@babel/plugin-transform-modules-umd@^7.2.0": - version "7.2.0" - resolved "https://registry.yarnpkg.com/@babel/plugin-transform-modules-umd/-/plugin-transform-modules-umd-7.2.0.tgz#7678ce75169f0877b8eb2235538c074268dd01ae" - integrity sha512-BV3bw6MyUH1iIsGhXlOK6sXhmSarZjtJ/vMiD9dNmpY8QXFFQTj+6v92pcfy1iqa8DeAfJFwoxcrS/TUZda6sw== +"@babel/plugin-transform-named-capturing-groups-regex@^7.8.3": + version "7.8.3" + resolved "https://registry.yarnpkg.com/@babel/plugin-transform-named-capturing-groups-regex/-/plugin-transform-named-capturing-groups-regex-7.8.3.tgz#a2a72bffa202ac0e2d0506afd0939c5ecbc48c6c" + integrity sha512-f+tF/8UVPU86TrCb06JoPWIdDpTNSGGcAtaD9mLP0aYGA0OS0j7j7DHJR0GTFrUZPUU6loZhbsVZgTh0N+Qdnw== dependencies: - "@babel/helper-module-transforms" "^7.1.0" - "@babel/helper-plugin-utils" "^7.0.0" + "@babel/helper-create-regexp-features-plugin" "^7.8.3" -"@babel/plugin-transform-new-target@^7.0.0": - version "7.0.0" - resolved "https://registry.yarnpkg.com/@babel/plugin-transform-new-target/-/plugin-transform-new-target-7.0.0.tgz#ae8fbd89517fa7892d20e6564e641e8770c3aa4a" - integrity sha512-yin069FYjah+LbqfGeTfzIBODex/e++Yfa0rH0fpfam9uTbuEeEOx5GLGr210ggOV77mVRNoeqSYqeuaqSzVSw== +"@babel/plugin-transform-new-target@^7.8.3": + version "7.8.3" + resolved "https://registry.yarnpkg.com/@babel/plugin-transform-new-target/-/plugin-transform-new-target-7.8.3.tgz#60cc2ae66d85c95ab540eb34babb6434d4c70c43" + integrity sha512-QuSGysibQpyxexRyui2vca+Cmbljo8bcRckgzYV4kRIsHpVeyeC3JDO63pY+xFZ6bWOBn7pfKZTqV4o/ix9sFw== dependencies: - "@babel/helper-plugin-utils" "^7.0.0" + "@babel/helper-plugin-utils" "^7.8.3" "@babel/plugin-transform-object-assign@^7.0.0": - version "7.0.0" - resolved "https://registry.yarnpkg.com/@babel/plugin-transform-object-assign/-/plugin-transform-object-assign-7.0.0.tgz#fca6d7500d9675c42868b8f3882979201b9a5ad8" - integrity sha512-Dag8mxx7/03oj8F8PkNso8GEMhwGfeT0TL6KfMsa9Brjx4IpwZVl3WBvEmYks8BMhPmrvM5NQ/tjaMbwEj5ijA== + version "7.8.3" + resolved "https://registry.yarnpkg.com/@babel/plugin-transform-object-assign/-/plugin-transform-object-assign-7.8.3.tgz#dc3b8dd50ef03837868a37b7df791f64f288538e" + integrity sha512-i3LuN8tPDqUCRFu3dkzF2r1Nx0jp4scxtm7JxtIqI9he9Vk20YD+/zshdzR9JLsoBMlJlNR82a62vQExNEVx/Q== dependencies: - "@babel/helper-plugin-utils" "^7.0.0" + "@babel/helper-plugin-utils" "^7.8.3" -"@babel/plugin-transform-object-super@^7.0.0", "@babel/plugin-transform-object-super@^7.2.0": - version "7.2.0" - resolved "https://registry.yarnpkg.com/@babel/plugin-transform-object-super/-/plugin-transform-object-super-7.2.0.tgz#b35d4c10f56bab5d650047dad0f1d8e8814b6598" - integrity sha512-VMyhPYZISFZAqAPVkiYb7dUe2AsVi2/wCT5+wZdsNO31FojQJa9ns40hzZ6U9f50Jlq4w6qwzdBB2uwqZ00ebg== +"@babel/plugin-transform-object-super@^7.0.0", "@babel/plugin-transform-object-super@^7.8.3": + version "7.8.3" + resolved "https://registry.yarnpkg.com/@babel/plugin-transform-object-super/-/plugin-transform-object-super-7.8.3.tgz#ebb6a1e7a86ffa96858bd6ac0102d65944261725" + integrity sha512-57FXk+gItG/GejofIyLIgBKTas4+pEU47IXKDBWFTxdPd7F80H8zybyAY7UoblVfBhBGs2EKM+bJUu2+iUYPDQ== dependencies: - "@babel/helper-plugin-utils" "^7.0.0" - "@babel/helper-replace-supers" "^7.1.0" + "@babel/helper-plugin-utils" "^7.8.3" + "@babel/helper-replace-supers" "^7.8.3" -"@babel/plugin-transform-parameters@^7.0.0", "@babel/plugin-transform-parameters@^7.2.0": - version "7.2.0" - resolved "https://registry.yarnpkg.com/@babel/plugin-transform-parameters/-/plugin-transform-parameters-7.2.0.tgz#0d5ad15dc805e2ea866df4dd6682bfe76d1408c2" - integrity sha512-kB9+hhUidIgUoBQ0MsxMewhzr8i60nMa2KgeJKQWYrqQpqcBYtnpR+JgkadZVZoaEZ/eKu9mclFaVwhRpLNSzA== +"@babel/plugin-transform-parameters@^7.0.0", "@babel/plugin-transform-parameters@^7.8.7": + version "7.9.3" + resolved "https://registry.yarnpkg.com/@babel/plugin-transform-parameters/-/plugin-transform-parameters-7.9.3.tgz#3028d0cc20ddc733166c6e9c8534559cee09f54a" + integrity sha512-fzrQFQhp7mIhOzmOtPiKffvCYQSK10NR8t6BBz2yPbeUHb9OLW8RZGtgDRBn8z2hGcwvKDL3vC7ojPTLNxmqEg== dependencies: - "@babel/helper-call-delegate" "^7.1.0" - "@babel/helper-get-function-arity" "^7.0.0" - "@babel/helper-plugin-utils" "^7.0.0" + "@babel/helper-get-function-arity" "^7.8.3" + "@babel/helper-plugin-utils" "^7.8.3" -"@babel/plugin-transform-property-literals@^7.0.0": - version "7.0.0" - resolved "https://registry.yarnpkg.com/@babel/plugin-transform-property-literals/-/plugin-transform-property-literals-7.0.0.tgz#0b95a91dbd1f0be5b5a99ed86571ef5b5ae77009" - integrity sha512-7HK6/jB4MLpwQUJQ3diaX0pbCRcoL9asJscQfU3D1HpDwYdrH6yAUKleUNFHFyGNYBI9UeJrS2Jpx2JhtPKu5g== +"@babel/plugin-transform-property-literals@^7.0.0", "@babel/plugin-transform-property-literals@^7.8.3": + version "7.8.3" + resolved "https://registry.yarnpkg.com/@babel/plugin-transform-property-literals/-/plugin-transform-property-literals-7.8.3.tgz#33194300d8539c1ed28c62ad5087ba3807b98263" + integrity sha512-uGiiXAZMqEoQhRWMK17VospMZh5sXWg+dlh2soffpkAl96KAm+WZuJfa6lcELotSRmooLqg0MWdH6UUq85nmmg== dependencies: - "@babel/helper-plugin-utils" "^7.0.0" + "@babel/helper-plugin-utils" "^7.8.3" "@babel/plugin-transform-react-display-name@^7.0.0": - version "7.0.0" - resolved "https://registry.yarnpkg.com/@babel/plugin-transform-react-display-name/-/plugin-transform-react-display-name-7.0.0.tgz#93759e6c023782e52c2da3b75eca60d4f10533ee" - integrity sha512-BX8xKuQTO0HzINxT6j/GiCwoJB0AOMs0HmLbEnAvcte8U8rSkNa/eSCAY+l1OA4JnCVq2jw2p6U8QQryy2fTPg== + version "7.8.3" + resolved "https://registry.yarnpkg.com/@babel/plugin-transform-react-display-name/-/plugin-transform-react-display-name-7.8.3.tgz#70ded987c91609f78353dd76d2fb2a0bb991e8e5" + integrity sha512-3Jy/PCw8Fe6uBKtEgz3M82ljt+lTg+xJaM4og+eyu83qLT87ZUSckn0wy7r31jflURWLO83TW6Ylf7lyXj3m5A== dependencies: - "@babel/helper-plugin-utils" "^7.0.0" + "@babel/helper-plugin-utils" "^7.8.3" "@babel/plugin-transform-react-jsx-self@^7.0.0": - version "7.8.3" - resolved "https://registry.yarnpkg.com/@babel/plugin-transform-react-jsx-self/-/plugin-transform-react-jsx-self-7.8.3.tgz#c4f178b2aa588ecfa8d077ea80d4194ee77ed702" - integrity sha512-01OT7s5oa0XTLf2I8XGsL8+KqV9lx3EZV+jxn/L2LQ97CGKila2YMroTkCEIE0HV/FF7CMSRsIAybopdN9NTdg== + version "7.9.0" + resolved "https://registry.yarnpkg.com/@babel/plugin-transform-react-jsx-self/-/plugin-transform-react-jsx-self-7.9.0.tgz#f4f26a325820205239bb915bad8e06fcadabb49b" + integrity sha512-K2ObbWPKT7KUTAoyjCsFilOkEgMvFG+y0FqOl6Lezd0/13kMkkjHskVsZvblRPj1PHA44PrToaZANrryppzTvQ== dependencies: "@babel/helper-plugin-utils" "^7.8.3" "@babel/plugin-syntax-jsx" "^7.8.3" "@babel/plugin-transform-react-jsx-source@^7.0.0": - version "7.0.0" - resolved "https://registry.yarnpkg.com/@babel/plugin-transform-react-jsx-source/-/plugin-transform-react-jsx-source-7.0.0.tgz#28e00584f9598c0dd279f6280eee213fa0121c3c" - integrity sha512-OSeEpFJEH5dw/TtxTg4nijl4nHBbhqbKL94Xo/Y17WKIf2qJWeIk/QeXACF19lG1vMezkxqruwnTjVizaW7u7w== + version "7.9.0" + resolved "https://registry.yarnpkg.com/@babel/plugin-transform-react-jsx-source/-/plugin-transform-react-jsx-source-7.9.0.tgz#89ef93025240dd5d17d3122294a093e5e0183de0" + integrity sha512-K6m3LlSnTSfRkM6FcRk8saNEeaeyG5k7AVkBU2bZK3+1zdkSED3qNdsWrUgQBeTVD2Tp3VMmerxVO2yM5iITmw== dependencies: - "@babel/helper-plugin-utils" "^7.0.0" - "@babel/plugin-syntax-jsx" "^7.0.0" + "@babel/helper-plugin-utils" "^7.8.3" + "@babel/plugin-syntax-jsx" "^7.8.3" "@babel/plugin-transform-react-jsx@^7.0.0": - version "7.0.0" - resolved "https://registry.yarnpkg.com/@babel/plugin-transform-react-jsx/-/plugin-transform-react-jsx-7.0.0.tgz#524379e4eca5363cd10c4446ba163f093da75f3e" - integrity sha512-0TMP21hXsSUjIQJmu/r7RiVxeFrXRcMUigbKu0BLegJK9PkYodHstaszcig7zxXfaBji2LYUdtqIkHs+hgYkJQ== + version "7.9.4" + resolved "https://registry.yarnpkg.com/@babel/plugin-transform-react-jsx/-/plugin-transform-react-jsx-7.9.4.tgz#86f576c8540bd06d0e95e0b61ea76d55f6cbd03f" + integrity sha512-Mjqf3pZBNLt854CK0C/kRuXAnE6H/bo7xYojP+WGtX8glDGSibcwnsWwhwoSuRg0+EBnxPC1ouVnuetUIlPSAw== dependencies: - "@babel/helper-builder-react-jsx" "^7.0.0" - "@babel/helper-plugin-utils" "^7.0.0" - "@babel/plugin-syntax-jsx" "^7.0.0" + "@babel/helper-builder-react-jsx" "^7.9.0" + "@babel/helper-builder-react-jsx-experimental" "^7.9.0" + "@babel/helper-plugin-utils" "^7.8.3" + "@babel/plugin-syntax-jsx" "^7.8.3" -"@babel/plugin-transform-regenerator@^7.0.0": - version "7.0.0" - resolved "https://registry.yarnpkg.com/@babel/plugin-transform-regenerator/-/plugin-transform-regenerator-7.0.0.tgz#5b41686b4ed40bef874d7ed6a84bdd849c13e0c1" - integrity sha512-sj2qzsEx8KDVv1QuJc/dEfilkg3RRPvPYx/VnKLtItVQRWt1Wqf5eVCOLZm29CiGFfYYsA3VPjfizTCV0S0Dlw== +"@babel/plugin-transform-regenerator@^7.0.0", "@babel/plugin-transform-regenerator@^7.8.7": + version "7.8.7" + resolved "https://registry.yarnpkg.com/@babel/plugin-transform-regenerator/-/plugin-transform-regenerator-7.8.7.tgz#5e46a0dca2bee1ad8285eb0527e6abc9c37672f8" + integrity sha512-TIg+gAl4Z0a3WmD3mbYSk+J9ZUH6n/Yc57rtKRnlA/7rcCvpekHXe0CMZHP1gYp7/KLe9GHTuIba0vXmls6drA== + dependencies: + regenerator-transform "^0.14.2" + +"@babel/plugin-transform-reserved-words@^7.8.3": + version "7.8.3" + resolved "https://registry.yarnpkg.com/@babel/plugin-transform-reserved-words/-/plugin-transform-reserved-words-7.8.3.tgz#9a0635ac4e665d29b162837dd3cc50745dfdf1f5" + integrity sha512-mwMxcycN3omKFDjDQUl+8zyMsBfjRFr0Zn/64I41pmjv4NJuqcYlEtezwYtw9TFd9WR1vN5kiM+O0gMZzO6L0A== dependencies: - regenerator-transform "^0.13.3" + "@babel/helper-plugin-utils" "^7.8.3" "@babel/plugin-transform-runtime@^7.0.0": - version "7.1.0" - resolved "https://registry.yarnpkg.com/@babel/plugin-transform-runtime/-/plugin-transform-runtime-7.1.0.tgz#9f76920d42551bb577e2dc594df229b5f7624b63" - integrity sha512-WFLMgzu5DLQEah0lKTJzYb14vd6UiES7PTnXcvrPZ1VrwFeJ+mTbvr65fFAsXYMt2bIoOoC0jk76zY1S7HZjUg== + version "7.9.0" + resolved "https://registry.yarnpkg.com/@babel/plugin-transform-runtime/-/plugin-transform-runtime-7.9.0.tgz#45468c0ae74cc13204e1d3b1f4ce6ee83258af0b" + integrity sha512-pUu9VSf3kI1OqbWINQ7MaugnitRss1z533436waNXp+0N3ur3zfut37sXiQMxkuCF4VUjwZucen/quskCh7NHw== dependencies: - "@babel/helper-module-imports" "^7.0.0" - "@babel/helper-plugin-utils" "^7.0.0" + "@babel/helper-module-imports" "^7.8.3" + "@babel/helper-plugin-utils" "^7.8.3" resolve "^1.8.1" semver "^5.5.1" -"@babel/plugin-transform-shorthand-properties@^7.0.0", "@babel/plugin-transform-shorthand-properties@^7.2.0": - version "7.2.0" - resolved "https://registry.yarnpkg.com/@babel/plugin-transform-shorthand-properties/-/plugin-transform-shorthand-properties-7.2.0.tgz#6333aee2f8d6ee7e28615457298934a3b46198f0" - integrity sha512-QP4eUM83ha9zmYtpbnyjTLAGKQritA5XW/iG9cjtuOI8s1RuL/3V6a3DeSHfKutJQ+ayUfeZJPcnCYEQzaPQqg== - dependencies: - "@babel/helper-plugin-utils" "^7.0.0" - -"@babel/plugin-transform-spread@^7.0.0", "@babel/plugin-transform-spread@^7.2.0": - version "7.2.2" - resolved "https://registry.yarnpkg.com/@babel/plugin-transform-spread/-/plugin-transform-spread-7.2.2.tgz#3103a9abe22f742b6d406ecd3cd49b774919b406" - integrity sha512-KWfky/58vubwtS0hLqEnrWJjsMGaOeSBn90Ezn5Jeg9Z8KKHmELbP1yGylMlm5N6TPKeY9A2+UaSYLdxahg01w== +"@babel/plugin-transform-shorthand-properties@^7.0.0", "@babel/plugin-transform-shorthand-properties@^7.8.3": + version "7.8.3" + resolved "https://registry.yarnpkg.com/@babel/plugin-transform-shorthand-properties/-/plugin-transform-shorthand-properties-7.8.3.tgz#28545216e023a832d4d3a1185ed492bcfeac08c8" + integrity sha512-I9DI6Odg0JJwxCHzbzW08ggMdCezoWcuQRz3ptdudgwaHxTjxw5HgdFJmZIkIMlRymL6YiZcped4TTCB0JcC8w== dependencies: - "@babel/helper-plugin-utils" "^7.0.0" + "@babel/helper-plugin-utils" "^7.8.3" -"@babel/plugin-transform-sticky-regex@^7.0.0", "@babel/plugin-transform-sticky-regex@^7.2.0": - version "7.2.0" - resolved "https://registry.yarnpkg.com/@babel/plugin-transform-sticky-regex/-/plugin-transform-sticky-regex-7.2.0.tgz#a1e454b5995560a9c1e0d537dfc15061fd2687e1" - integrity sha512-KKYCoGaRAf+ckH8gEL3JHUaFVyNHKe3ASNsZ+AlktgHevvxGigoIttrEJb8iKN03Q7Eazlv1s6cx2B2cQ3Jabw== +"@babel/plugin-transform-spread@^7.0.0", "@babel/plugin-transform-spread@^7.8.3": + version "7.8.3" + resolved "https://registry.yarnpkg.com/@babel/plugin-transform-spread/-/plugin-transform-spread-7.8.3.tgz#9c8ffe8170fdfb88b114ecb920b82fb6e95fe5e8" + integrity sha512-CkuTU9mbmAoFOI1tklFWYYbzX5qCIZVXPVy0jpXgGwkplCndQAa58s2jr66fTeQnA64bDox0HL4U56CFYoyC7g== dependencies: - "@babel/helper-plugin-utils" "^7.0.0" - "@babel/helper-regex" "^7.0.0" + "@babel/helper-plugin-utils" "^7.8.3" -"@babel/plugin-transform-template-literals@^7.0.0", "@babel/plugin-transform-template-literals@^7.2.0": - version "7.2.0" - resolved "https://registry.yarnpkg.com/@babel/plugin-transform-template-literals/-/plugin-transform-template-literals-7.2.0.tgz#d87ed01b8eaac7a92473f608c97c089de2ba1e5b" - integrity sha512-FkPix00J9A/XWXv4VoKJBMeSkyY9x/TqIh76wzcdfl57RJJcf8CehQ08uwfhCDNtRQYtHQKBTwKZDEyjE13Lwg== +"@babel/plugin-transform-sticky-regex@^7.0.0", "@babel/plugin-transform-sticky-regex@^7.8.3": + version "7.8.3" + resolved "https://registry.yarnpkg.com/@babel/plugin-transform-sticky-regex/-/plugin-transform-sticky-regex-7.8.3.tgz#be7a1290f81dae767475452199e1f76d6175b100" + integrity sha512-9Spq0vGCD5Bb4Z/ZXXSK5wbbLFMG085qd2vhL1JYu1WcQ5bXqZBAYRzU1d+p79GcHs2szYv5pVQCX13QgldaWw== dependencies: - "@babel/helper-annotate-as-pure" "^7.0.0" - "@babel/helper-plugin-utils" "^7.0.0" + "@babel/helper-plugin-utils" "^7.8.3" + "@babel/helper-regex" "^7.8.3" -"@babel/plugin-transform-typeof-symbol@^7.2.0": - version "7.2.0" - resolved "https://registry.yarnpkg.com/@babel/plugin-transform-typeof-symbol/-/plugin-transform-typeof-symbol-7.2.0.tgz#117d2bcec2fbf64b4b59d1f9819894682d29f2b2" - integrity sha512-2LNhETWYxiYysBtrBTqL8+La0jIoQQnIScUJc74OYvUGRmkskNY4EzLCnjHBzdmb38wqtTaixpo1NctEcvMDZw== +"@babel/plugin-transform-template-literals@^7.0.0", "@babel/plugin-transform-template-literals@^7.8.3": + version "7.8.3" + resolved "https://registry.yarnpkg.com/@babel/plugin-transform-template-literals/-/plugin-transform-template-literals-7.8.3.tgz#7bfa4732b455ea6a43130adc0ba767ec0e402a80" + integrity sha512-820QBtykIQOLFT8NZOcTRJ1UNuztIELe4p9DCgvj4NK+PwluSJ49we7s9FB1HIGNIYT7wFUJ0ar2QpCDj0escQ== dependencies: - "@babel/helper-plugin-utils" "^7.0.0" + "@babel/helper-annotate-as-pure" "^7.8.3" + "@babel/helper-plugin-utils" "^7.8.3" -"@babel/plugin-transform-typescript@^7.1.0": - version "7.2.0" - resolved "https://registry.yarnpkg.com/@babel/plugin-transform-typescript/-/plugin-transform-typescript-7.2.0.tgz#bce7c06300434de6a860ae8acf6a442ef74a99d1" - integrity sha512-EnI7i2/gJ7ZNr2MuyvN2Hu+BHJENlxWte5XygPvfj/MbvtOkWor9zcnHpMMQL2YYaaCcqtIvJUyJ7QVfoGs7ew== +"@babel/plugin-transform-typeof-symbol@^7.8.4": + version "7.8.4" + resolved "https://registry.yarnpkg.com/@babel/plugin-transform-typeof-symbol/-/plugin-transform-typeof-symbol-7.8.4.tgz#ede4062315ce0aaf8a657a920858f1a2f35fc412" + integrity sha512-2QKyfjGdvuNfHsb7qnBBlKclbD4CfshH2KvDabiijLMGXPHJXGxtDzwIF7bQP+T0ysw8fYTtxPafgfs/c1Lrqg== dependencies: - "@babel/helper-plugin-utils" "^7.0.0" - "@babel/plugin-syntax-typescript" "^7.2.0" + "@babel/helper-plugin-utils" "^7.8.3" -"@babel/plugin-transform-typescript@^7.5.0": - version "7.8.3" - resolved "https://registry.yarnpkg.com/@babel/plugin-transform-typescript/-/plugin-transform-typescript-7.8.3.tgz#be6f01a7ef423be68e65ace1f04fc407e6d88917" - integrity sha512-Ebj230AxcrKGZPKIp4g4TdQLrqX95TobLUWKd/CwG7X1XHUH1ZpkpFvXuXqWbtGRWb7uuEWNlrl681wsOArAdQ== +"@babel/plugin-transform-typescript@^7.5.0", "@babel/plugin-transform-typescript@^7.9.0": + version "7.9.4" + resolved "https://registry.yarnpkg.com/@babel/plugin-transform-typescript/-/plugin-transform-typescript-7.9.4.tgz#4bb4dde4f10bbf2d787fce9707fb09b483e33359" + integrity sha512-yeWeUkKx2auDbSxRe8MusAG+n4m9BFY/v+lPjmQDgOFX5qnySkUY5oXzkp6FwPdsYqnKay6lorXYdC0n3bZO7w== dependencies: "@babel/helper-create-class-features-plugin" "^7.8.3" "@babel/helper-plugin-utils" "^7.8.3" "@babel/plugin-syntax-typescript" "^7.8.3" -"@babel/plugin-transform-unicode-regex@^7.0.0", "@babel/plugin-transform-unicode-regex@^7.2.0": - version "7.2.0" - resolved "https://registry.yarnpkg.com/@babel/plugin-transform-unicode-regex/-/plugin-transform-unicode-regex-7.2.0.tgz#4eb8db16f972f8abb5062c161b8b115546ade08b" - integrity sha512-m48Y0lMhrbXEJnVUaYly29jRXbQ3ksxPrS1Tg8t+MHqzXhtBYAvI51euOBaoAlZLPHsieY9XPVMf80a5x0cPcA== +"@babel/plugin-transform-unicode-regex@^7.0.0", "@babel/plugin-transform-unicode-regex@^7.8.3": + version "7.8.3" + resolved "https://registry.yarnpkg.com/@babel/plugin-transform-unicode-regex/-/plugin-transform-unicode-regex-7.8.3.tgz#0cef36e3ba73e5c57273effb182f46b91a1ecaad" + integrity sha512-+ufgJjYdmWfSQ+6NS9VGUR2ns8cjJjYbrbi11mZBTaWm+Fui/ncTLFF28Ei1okavY+xkojGr1eJxNsWYeA5aZw== dependencies: - "@babel/helper-plugin-utils" "^7.0.0" - "@babel/helper-regex" "^7.0.0" - regexpu-core "^4.1.3" + "@babel/helper-create-regexp-features-plugin" "^7.8.3" + "@babel/helper-plugin-utils" "^7.8.3" "@babel/preset-env@^7.1.6": - version "7.2.3" - resolved "https://registry.yarnpkg.com/@babel/preset-env/-/preset-env-7.2.3.tgz#948c8df4d4609c99c7e0130169f052ea6a7a8933" - integrity sha512-AuHzW7a9rbv5WXmvGaPX7wADxFkZIqKlbBh1dmZUQp4iwiPpkE/Qnrji6SC4UQCQzvWY/cpHET29eUhXS9cLPw== + version "7.9.0" + resolved "https://registry.yarnpkg.com/@babel/preset-env/-/preset-env-7.9.0.tgz#a5fc42480e950ae8f5d9f8f2bbc03f52722df3a8" + integrity sha512-712DeRXT6dyKAM/FMbQTV/FvRCms2hPCx+3weRjZ8iQVQWZejWWk1wwG6ViWMyqb/ouBbGOl5b6aCk0+j1NmsQ== dependencies: - "@babel/helper-module-imports" "^7.0.0" - "@babel/helper-plugin-utils" "^7.0.0" - "@babel/plugin-proposal-async-generator-functions" "^7.2.0" - "@babel/plugin-proposal-json-strings" "^7.2.0" - "@babel/plugin-proposal-object-rest-spread" "^7.2.0" - "@babel/plugin-proposal-optional-catch-binding" "^7.2.0" - "@babel/plugin-proposal-unicode-property-regex" "^7.2.0" - "@babel/plugin-syntax-async-generators" "^7.2.0" - "@babel/plugin-syntax-object-rest-spread" "^7.2.0" - "@babel/plugin-syntax-optional-catch-binding" "^7.2.0" - "@babel/plugin-transform-arrow-functions" "^7.2.0" - "@babel/plugin-transform-async-to-generator" "^7.2.0" - "@babel/plugin-transform-block-scoped-functions" "^7.2.0" - "@babel/plugin-transform-block-scoping" "^7.2.0" - "@babel/plugin-transform-classes" "^7.2.0" - "@babel/plugin-transform-computed-properties" "^7.2.0" - "@babel/plugin-transform-destructuring" "^7.2.0" - "@babel/plugin-transform-dotall-regex" "^7.2.0" - "@babel/plugin-transform-duplicate-keys" "^7.2.0" - "@babel/plugin-transform-exponentiation-operator" "^7.2.0" - "@babel/plugin-transform-for-of" "^7.2.0" - "@babel/plugin-transform-function-name" "^7.2.0" - "@babel/plugin-transform-literals" "^7.2.0" - "@babel/plugin-transform-modules-amd" "^7.2.0" - "@babel/plugin-transform-modules-commonjs" "^7.2.0" - "@babel/plugin-transform-modules-systemjs" "^7.2.0" - "@babel/plugin-transform-modules-umd" "^7.2.0" - "@babel/plugin-transform-new-target" "^7.0.0" - "@babel/plugin-transform-object-super" "^7.2.0" - "@babel/plugin-transform-parameters" "^7.2.0" - "@babel/plugin-transform-regenerator" "^7.0.0" - "@babel/plugin-transform-shorthand-properties" "^7.2.0" - "@babel/plugin-transform-spread" "^7.2.0" - "@babel/plugin-transform-sticky-regex" "^7.2.0" - "@babel/plugin-transform-template-literals" "^7.2.0" - "@babel/plugin-transform-typeof-symbol" "^7.2.0" - "@babel/plugin-transform-unicode-regex" "^7.2.0" - browserslist "^4.3.4" + "@babel/compat-data" "^7.9.0" + "@babel/helper-compilation-targets" "^7.8.7" + "@babel/helper-module-imports" "^7.8.3" + "@babel/helper-plugin-utils" "^7.8.3" + "@babel/plugin-proposal-async-generator-functions" "^7.8.3" + "@babel/plugin-proposal-dynamic-import" "^7.8.3" + "@babel/plugin-proposal-json-strings" "^7.8.3" + "@babel/plugin-proposal-nullish-coalescing-operator" "^7.8.3" + "@babel/plugin-proposal-numeric-separator" "^7.8.3" + "@babel/plugin-proposal-object-rest-spread" "^7.9.0" + "@babel/plugin-proposal-optional-catch-binding" "^7.8.3" + "@babel/plugin-proposal-optional-chaining" "^7.9.0" + "@babel/plugin-proposal-unicode-property-regex" "^7.8.3" + "@babel/plugin-syntax-async-generators" "^7.8.0" + "@babel/plugin-syntax-dynamic-import" "^7.8.0" + "@babel/plugin-syntax-json-strings" "^7.8.0" + "@babel/plugin-syntax-nullish-coalescing-operator" "^7.8.0" + "@babel/plugin-syntax-numeric-separator" "^7.8.0" + "@babel/plugin-syntax-object-rest-spread" "^7.8.0" + "@babel/plugin-syntax-optional-catch-binding" "^7.8.0" + "@babel/plugin-syntax-optional-chaining" "^7.8.0" + "@babel/plugin-syntax-top-level-await" "^7.8.3" + "@babel/plugin-transform-arrow-functions" "^7.8.3" + "@babel/plugin-transform-async-to-generator" "^7.8.3" + "@babel/plugin-transform-block-scoped-functions" "^7.8.3" + "@babel/plugin-transform-block-scoping" "^7.8.3" + "@babel/plugin-transform-classes" "^7.9.0" + "@babel/plugin-transform-computed-properties" "^7.8.3" + "@babel/plugin-transform-destructuring" "^7.8.3" + "@babel/plugin-transform-dotall-regex" "^7.8.3" + "@babel/plugin-transform-duplicate-keys" "^7.8.3" + "@babel/plugin-transform-exponentiation-operator" "^7.8.3" + "@babel/plugin-transform-for-of" "^7.9.0" + "@babel/plugin-transform-function-name" "^7.8.3" + "@babel/plugin-transform-literals" "^7.8.3" + "@babel/plugin-transform-member-expression-literals" "^7.8.3" + "@babel/plugin-transform-modules-amd" "^7.9.0" + "@babel/plugin-transform-modules-commonjs" "^7.9.0" + "@babel/plugin-transform-modules-systemjs" "^7.9.0" + "@babel/plugin-transform-modules-umd" "^7.9.0" + "@babel/plugin-transform-named-capturing-groups-regex" "^7.8.3" + "@babel/plugin-transform-new-target" "^7.8.3" + "@babel/plugin-transform-object-super" "^7.8.3" + "@babel/plugin-transform-parameters" "^7.8.7" + "@babel/plugin-transform-property-literals" "^7.8.3" + "@babel/plugin-transform-regenerator" "^7.8.7" + "@babel/plugin-transform-reserved-words" "^7.8.3" + "@babel/plugin-transform-shorthand-properties" "^7.8.3" + "@babel/plugin-transform-spread" "^7.8.3" + "@babel/plugin-transform-sticky-regex" "^7.8.3" + "@babel/plugin-transform-template-literals" "^7.8.3" + "@babel/plugin-transform-typeof-symbol" "^7.8.4" + "@babel/plugin-transform-unicode-regex" "^7.8.3" + "@babel/preset-modules" "^0.1.3" + "@babel/types" "^7.9.0" + browserslist "^4.9.1" + core-js-compat "^3.6.2" invariant "^2.2.2" - js-levenshtein "^1.1.3" - semver "^5.3.0" + levenary "^1.1.1" + semver "^5.5.0" "@babel/preset-flow@^7.0.0": - version "7.0.0" - resolved "https://registry.yarnpkg.com/@babel/preset-flow/-/preset-flow-7.0.0.tgz#afd764835d9535ec63d8c7d4caf1c06457263da2" - integrity sha512-bJOHrYOPqJZCkPVbG1Lot2r5OSsB+iUOaxiHdlOeB1yPWS6evswVHwvkDLZ54WTaTRIk89ds0iHmGZSnxlPejQ== + version "7.9.0" + resolved "https://registry.yarnpkg.com/@babel/preset-flow/-/preset-flow-7.9.0.tgz#fee847c3e090b0b2d9227c1949e4da1d1379280d" + integrity sha512-88uSmlshIrlmPkNkEcx3UpSZ6b8n0UGBq0/0ZMZCF/uxAW0XIAUuDHBhIOAh0pvweafH4RxOwi/H3rWhtqOYPA== + dependencies: + "@babel/helper-plugin-utils" "^7.8.3" + "@babel/plugin-transform-flow-strip-types" "^7.9.0" + +"@babel/preset-modules@^0.1.3": + version "0.1.3" + resolved "https://registry.yarnpkg.com/@babel/preset-modules/-/preset-modules-0.1.3.tgz#13242b53b5ef8c883c3cf7dddd55b36ce80fbc72" + integrity sha512-Ra3JXOHBq2xd56xSF7lMKXdjBn3T772Y1Wet3yWnkDly9zHvJki029tAFzvAAK5cf4YV3yoxuP61crYRol6SVg== dependencies: "@babel/helper-plugin-utils" "^7.0.0" - "@babel/plugin-transform-flow-strip-types" "^7.0.0" + "@babel/plugin-proposal-unicode-property-regex" "^7.4.4" + "@babel/plugin-transform-dotall-regex" "^7.4.4" + "@babel/types" "^7.4.4" + esutils "^2.0.2" "@babel/preset-typescript@^7.1.0": - version "7.1.0" - resolved "https://registry.yarnpkg.com/@babel/preset-typescript/-/preset-typescript-7.1.0.tgz#49ad6e2084ff0bfb5f1f7fb3b5e76c434d442c7f" - integrity sha512-LYveByuF9AOM8WrsNne5+N79k1YxjNB6gmpCQsnuSBAcV8QUeB+ZUxQzL7Rz7HksPbahymKkq2qBR+o36ggFZA== + version "7.9.0" + resolved "https://registry.yarnpkg.com/@babel/preset-typescript/-/preset-typescript-7.9.0.tgz#87705a72b1f0d59df21c179f7c3d2ef4b16ce192" + integrity sha512-S4cueFnGrIbvYJgwsVFKdvOmpiL0XGw9MFW9D0vgRys5g36PBhZRL8NX8Gr2akz8XRtzq6HuDXPD/1nniagNUg== dependencies: - "@babel/helper-plugin-utils" "^7.0.0" - "@babel/plugin-transform-typescript" "^7.1.0" + "@babel/helper-plugin-utils" "^7.8.3" + "@babel/plugin-transform-typescript" "^7.9.0" "@babel/register@^7.0.0": - version "7.0.0" - resolved "https://registry.yarnpkg.com/@babel/register/-/register-7.0.0.tgz#fa634bae1bfa429f60615b754fc1f1d745edd827" - integrity sha512-f/+CRmaCe7rVEvcvPvxeA8j5aJhHC3aJie7YuqcMDhUOuyWLA7J/aNrTaHIzoWPEhpHA54mec4Mm8fv8KBlv3g== + version "7.9.0" + resolved "https://registry.yarnpkg.com/@babel/register/-/register-7.9.0.tgz#02464ede57548bddbb5e9f705d263b7c3f43d48b" + integrity sha512-Tv8Zyi2J2VRR8g7pC5gTeIN8Ihultbmk0ocyNz8H2nEZbmhp1N6q0A1UGsQbDvGP/sNinQKUHf3SqXwqjtFv4Q== dependencies: - core-js "^2.5.7" - find-cache-dir "^1.0.0" - home-or-tmp "^3.0.0" - lodash "^4.17.10" - mkdirp "^0.5.1" + find-cache-dir "^2.0.0" + lodash "^4.17.13" + make-dir "^2.1.0" pirates "^4.0.0" - source-map-support "^0.5.9" - -"@babel/runtime@^7.0.0": - version "7.1.2" - resolved "https://registry.yarnpkg.com/@babel/runtime/-/runtime-7.1.2.tgz#81c89935f4647706fc54541145e6b4ecfef4b8e3" - integrity sha512-Y3SCjmhSupzFB6wcv1KmmFucH6gDVnI30WjOcicV10ju0cZjak3Jcs67YLIXBrmZYw1xCrVeJPbycFwrqNyxpg== - dependencies: - regenerator-runtime "^0.12.0" + source-map-support "^0.5.16" -"@babel/template@^7.0.0", "@babel/template@^7.1.0", "@babel/template@^7.1.2", "@babel/template@^7.2.2": - version "7.2.2" - resolved "https://registry.yarnpkg.com/@babel/template/-/template-7.2.2.tgz#005b3fdf0ed96e88041330379e0da9a708eb2907" - integrity sha512-zRL0IMM02AUDwghf5LMSSDEz7sBCO2YnNmpg3uWTZj/v1rcG2BmQUvaGU8GhU8BvfMh1k2KIAYZ7Ji9KXPUg7g== +"@babel/runtime@^7.0.0", "@babel/runtime@^7.8.4": + version "7.9.2" + resolved "https://registry.yarnpkg.com/@babel/runtime/-/runtime-7.9.2.tgz#d90df0583a3a252f09aaa619665367bae518db06" + integrity sha512-NE2DtOdufG7R5vnfQUTehdTfNycfUANEtCa9PssN9O/xmTzP4E08UI797ixaei6hBEVL9BI/PsdJS5x7mWoB9Q== dependencies: - "@babel/code-frame" "^7.0.0" - "@babel/parser" "^7.2.2" - "@babel/types" "^7.2.2" - -"@babel/template@^7.7.0": - version "7.7.0" - resolved "https://registry.yarnpkg.com/@babel/template/-/template-7.7.0.tgz#4fadc1b8e734d97f56de39c77de76f2562e597d0" - integrity sha512-OKcwSYOW1mhWbnTBgQY5lvg1Fxg+VyfQGjcBduZFljfc044J5iDlnDSfhQ867O17XHiSCxYHUxHg2b7ryitbUQ== - dependencies: - "@babel/code-frame" "^7.0.0" - "@babel/parser" "^7.7.0" - "@babel/types" "^7.7.0" + regenerator-runtime "^0.13.4" -"@babel/template@^7.8.3": - version "7.8.3" - resolved "https://registry.yarnpkg.com/@babel/template/-/template-7.8.3.tgz#e02ad04fe262a657809327f578056ca15fd4d1b8" - integrity sha512-04m87AcQgAFdvuoyiQ2kgELr2tV8B4fP/xJAVUL3Yb3bkNdMedD3d0rlSQr3PegP0cms3eHjl1F7PWlvWbU8FQ== +"@babel/template@^7.0.0", "@babel/template@^7.7.4", "@babel/template@^7.8.3", "@babel/template@^7.8.6": + version "7.8.6" + resolved "https://registry.yarnpkg.com/@babel/template/-/template-7.8.6.tgz#86b22af15f828dfb086474f964dcc3e39c43ce2b" + integrity sha512-zbMsPMy/v0PWFZEhQJ66bqjhH+z0JgMoBWuikXybgG3Gkd/3t5oQ1Rw2WQhnSrsOmsKXnZOx15tkC4qON/+JPg== dependencies: "@babel/code-frame" "^7.8.3" - "@babel/parser" "^7.8.3" - "@babel/types" "^7.8.3" + "@babel/parser" "^7.8.6" + "@babel/types" "^7.8.6" -"@babel/traverse@^7.0.0", "@babel/traverse@^7.1.0", "@babel/traverse@^7.1.5", "@babel/traverse@^7.2.2", "@babel/traverse@^7.2.3": - version "7.2.3" - resolved "https://registry.yarnpkg.com/@babel/traverse/-/traverse-7.2.3.tgz#7ff50cefa9c7c0bd2d81231fdac122f3957748d8" - integrity sha512-Z31oUD/fJvEWVR0lNZtfgvVt512ForCTNKYcJBGbPb1QZfve4WGH8Wsy7+Mev33/45fhP/hwQtvgusNdcCMgSw== +"@babel/traverse@^7.0.0", "@babel/traverse@^7.1.0", "@babel/traverse@^7.8.3", "@babel/traverse@^7.8.6", "@babel/traverse@^7.9.0": + version "7.9.0" + resolved "https://registry.yarnpkg.com/@babel/traverse/-/traverse-7.9.0.tgz#d3882c2830e513f4fe4cec9fe76ea1cc78747892" + integrity sha512-jAZQj0+kn4WTHO5dUZkZKhbFrqZE7K5LAQ5JysMnmvGij+wOdr+8lWqPeW0BcF4wFwrEXXtdGO7wcV6YPJcf3w== dependencies: - "@babel/code-frame" "^7.0.0" - "@babel/generator" "^7.2.2" - "@babel/helper-function-name" "^7.1.0" - "@babel/helper-split-export-declaration" "^7.0.0" - "@babel/parser" "^7.2.3" - "@babel/types" "^7.2.2" - debug "^4.1.0" - globals "^11.1.0" - lodash "^4.17.10" - -"@babel/traverse@^7.7.0", "@babel/traverse@^7.7.2": - version "7.7.2" - resolved "https://registry.yarnpkg.com/@babel/traverse/-/traverse-7.7.2.tgz#ef0a65e07a2f3c550967366b3d9b62a2dcbeae09" - integrity sha512-TM01cXib2+rgIZrGJOLaHV/iZUAxf4A0dt5auY6KNZ+cm6aschuJGqKJM3ROTt3raPUdIDk9siAufIFEleRwtw== - dependencies: - "@babel/code-frame" "^7.5.5" - "@babel/generator" "^7.7.2" - "@babel/helper-function-name" "^7.7.0" - "@babel/helper-split-export-declaration" "^7.7.0" - "@babel/parser" "^7.7.2" - "@babel/types" "^7.7.2" + "@babel/code-frame" "^7.8.3" + "@babel/generator" "^7.9.0" + "@babel/helper-function-name" "^7.8.3" + "@babel/helper-split-export-declaration" "^7.8.3" + "@babel/parser" "^7.9.0" + "@babel/types" "^7.9.0" debug "^4.1.0" globals "^11.1.0" lodash "^4.17.13" -"@babel/traverse@^7.8.3": - version "7.8.3" - resolved "https://registry.yarnpkg.com/@babel/traverse/-/traverse-7.8.3.tgz#a826215b011c9b4f73f3a893afbc05151358bf9a" - integrity sha512-we+a2lti+eEImHmEXp7bM9cTxGzxPmBiVJlLVD+FuuQMeeO7RaDbutbgeheDkw+Xe3mCfJHnGOWLswT74m2IPg== +"@babel/traverse@^7.7.4": + version "7.9.5" + resolved "https://registry.yarnpkg.com/@babel/traverse/-/traverse-7.9.5.tgz#6e7c56b44e2ac7011a948c21e283ddd9d9db97a2" + integrity sha512-c4gH3jsvSuGUezlP6rzSJ6jf8fYjLj3hsMZRx/nX0h+fmHN0w+ekubRrHPqnMec0meycA2nwCsJ7dC8IPem2FQ== dependencies: "@babel/code-frame" "^7.8.3" - "@babel/generator" "^7.8.3" - "@babel/helper-function-name" "^7.8.3" + "@babel/generator" "^7.9.5" + "@babel/helper-function-name" "^7.9.5" "@babel/helper-split-export-declaration" "^7.8.3" - "@babel/parser" "^7.8.3" - "@babel/types" "^7.8.3" + "@babel/parser" "^7.9.0" + "@babel/types" "^7.9.5" debug "^4.1.0" globals "^11.1.0" lodash "^4.17.13" -"@babel/types@^7.0.0", "@babel/types@^7.2.0", "@babel/types@^7.2.2": - version "7.2.2" - resolved "https://registry.yarnpkg.com/@babel/types/-/types-7.2.2.tgz#44e10fc24e33af524488b716cdaee5360ea8ed1e" - integrity sha512-fKCuD6UFUMkR541eDWL+2ih/xFZBXPOg/7EQFeTluMDebfqR4jrpaCjLhkWlQS4hT6nRa2PMEgXKbRB5/H2fpg== - dependencies: - esutils "^2.0.2" - lodash "^4.17.10" - to-fast-properties "^2.0.0" - -"@babel/types@^7.1.2", "@babel/types@^7.3.0", "@babel/types@^7.3.2": - version "7.3.2" - resolved "https://registry.yarnpkg.com/@babel/types/-/types-7.3.2.tgz#424f5be4be633fff33fb83ab8d67e4a8290f5a2f" - integrity sha512-3Y6H8xlUlpbGR+XvawiH0UXehqydTmNmEpozWcXymqwcrwYAl5KMvKtQ+TF6f6E08V6Jur7v/ykdDSF+WDEIXQ== - dependencies: - esutils "^2.0.2" - lodash "^4.17.10" - to-fast-properties "^2.0.0" - -"@babel/types@^7.7.0", "@babel/types@^7.7.2": - version "7.7.2" - resolved "https://registry.yarnpkg.com/@babel/types/-/types-7.7.2.tgz#550b82e5571dcd174af576e23f0adba7ffc683f7" - integrity sha512-YTf6PXoh3+eZgRCBzzP25Bugd2ngmpQVrk7kXX0i5N9BO7TFBtIgZYs7WtxtOGs8e6A4ZI7ECkbBCEHeXocvOA== +"@babel/types@^7.0.0", "@babel/types@^7.3.0", "@babel/types@^7.4.4", "@babel/types@^7.8.3", "@babel/types@^7.8.6", "@babel/types@^7.9.0": + version "7.9.0" + resolved "https://registry.yarnpkg.com/@babel/types/-/types-7.9.0.tgz#00b064c3df83ad32b2dbf5ff07312b15c7f1efb5" + integrity sha512-BS9JKfXkzzJl8RluW4JGknzpiUV7ZrvTayM6yfqLTVBEnFtyowVIOu6rqxRd5cVO6yGoWf4T8u8dgK9oB+GCng== dependencies: - esutils "^2.0.2" + "@babel/helper-validator-identifier" "^7.9.0" lodash "^4.17.13" to-fast-properties "^2.0.0" -"@babel/types@^7.8.3": - version "7.8.3" - resolved "https://registry.yarnpkg.com/@babel/types/-/types-7.8.3.tgz#5a383dffa5416db1b73dedffd311ffd0788fb31c" - integrity sha512-jBD+G8+LWpMBBWvVcdr4QysjUE4mU/syrhN17o1u3gx0/WzJB1kwiVZAXRtWbsIPOwW8pF/YJV5+nmetPzepXg== +"@babel/types@^7.9.5": + version "7.9.5" + resolved "https://registry.yarnpkg.com/@babel/types/-/types-7.9.5.tgz#89231f82915a8a566a703b3b20133f73da6b9444" + integrity sha512-XjnvNqenk818r5zMaba+sLQjnbda31UfUURv3ei0qPQw4u+j2jMyJ5b11y8ZHYTRSI3NnInQkkkRT4fLqqPdHg== dependencies: - esutils "^2.0.2" + "@babel/helper-validator-identifier" "^7.9.5" lodash "^4.17.13" to-fast-properties "^2.0.0" +"@bcoe/v8-coverage@^0.2.3": + version "0.2.3" + resolved "https://registry.yarnpkg.com/@bcoe/v8-coverage/-/v8-coverage-0.2.3.tgz#75a2e8b51cb758a7553d6804a5932d7aace75c39" + integrity sha512-0hYQ8SB4Db5zvZB4axdMHGwEaQjkZzFjQiN9LVYvIFB2nSUHW9tYpxWriPrWDASIxiaXax83REcLxuSdnGPZtw== + "@cnakazawa/watch@^1.0.3": version "1.0.3" resolved "https://registry.yarnpkg.com/@cnakazawa/watch/-/watch-1.0.3.tgz#099139eaec7ebf07a27c1786a3ff64f39464d2ef" @@ -1186,6 +1040,21 @@ dependencies: "@hapi/hoek" "8.x.x" +"@istanbuljs/load-nyc-config@^1.0.0": + version "1.0.0" + resolved "https://registry.yarnpkg.com/@istanbuljs/load-nyc-config/-/load-nyc-config-1.0.0.tgz#10602de5570baea82f8afbfa2630b24e7a8cfe5b" + integrity sha512-ZR0rq/f/E4f4XcgnDvtMWXCUJpi8eO0rssVhmztsZqLIEFA9UUP9zmpE0VxlM+kv/E1ul2I876Fwil2ayptDVg== + dependencies: + camelcase "^5.3.1" + find-up "^4.1.0" + js-yaml "^3.13.1" + resolve-from "^5.0.0" + +"@istanbuljs/schema@^0.1.2": + version "0.1.2" + resolved "https://registry.yarnpkg.com/@istanbuljs/schema/-/schema-0.1.2.tgz#26520bf09abe4a5644cd5414e37125a8954241dd" + integrity sha512-tsAQNx32a8CoFhjhijUIhI4kccIAgmGhy8LZMZgGfmXcpMbPRUqn5LWmgRttILi6yeGmBJd2xsPkFMs0PzgPCw== + "@jest/console@^24.7.1": version "24.7.1" resolved "https://registry.yarnpkg.com/@jest/console/-/console-24.7.1.tgz#32a9e42535a97aedfe037e725bd67e954b459545" @@ -1195,58 +1064,59 @@ chalk "^2.0.1" slash "^2.0.0" -"@jest/console@^24.9.0": - version "24.9.0" - resolved "https://registry.yarnpkg.com/@jest/console/-/console-24.9.0.tgz#79b1bc06fb74a8cfb01cbdedf945584b1b9707f0" - integrity sha512-Zuj6b8TnKXi3q4ymac8EQfc3ea/uhLeCGThFqXeC8H9/raaH8ARPUTdId+XyGd03Z4In0/VjD2OYFcBF09fNLQ== +"@jest/console@^25.4.0": + version "25.4.0" + resolved "https://registry.yarnpkg.com/@jest/console/-/console-25.4.0.tgz#e2760b532701137801ba824dcff6bc822c961bac" + integrity sha512-CfE0erx4hdJ6t7RzAcE1wLG6ZzsHSmybvIBQDoCkDM1QaSeWL9wJMzID/2BbHHa7ll9SsbbK43HjbERbBaFX2A== dependencies: - "@jest/source-map" "^24.9.0" - chalk "^2.0.1" - slash "^2.0.0" + "@jest/types" "^25.4.0" + chalk "^3.0.0" + jest-message-util "^25.4.0" + jest-util "^25.4.0" + slash "^3.0.0" -"@jest/core@^24.9.0": - version "24.9.0" - resolved "https://registry.yarnpkg.com/@jest/core/-/core-24.9.0.tgz#2ceccd0b93181f9c4850e74f2a9ad43d351369c4" - integrity sha512-Fogg3s4wlAr1VX7q+rhV9RVnUv5tD7VuWfYy1+whMiWUrvl7U3QJSJyWcDio9Lq2prqYsZaeTv2Rz24pWGkJ2A== - dependencies: - "@jest/console" "^24.7.1" - "@jest/reporters" "^24.9.0" - "@jest/test-result" "^24.9.0" - "@jest/transform" "^24.9.0" - "@jest/types" "^24.9.0" - ansi-escapes "^3.0.0" - chalk "^2.0.1" +"@jest/core@^25.4.0": + version "25.4.0" + resolved "https://registry.yarnpkg.com/@jest/core/-/core-25.4.0.tgz#cc1fe078df69b8f0fbb023bb0bcee23ef3b89411" + integrity sha512-h1x9WSVV0+TKVtATGjyQIMJENs8aF6eUjnCoi4jyRemYZmekLr8EJOGQqTWEX8W6SbZ6Skesy9pGXrKeAolUJw== + dependencies: + "@jest/console" "^25.4.0" + "@jest/reporters" "^25.4.0" + "@jest/test-result" "^25.4.0" + "@jest/transform" "^25.4.0" + "@jest/types" "^25.4.0" + ansi-escapes "^4.2.1" + chalk "^3.0.0" exit "^0.1.2" - graceful-fs "^4.1.15" - jest-changed-files "^24.9.0" - jest-config "^24.9.0" - jest-haste-map "^24.9.0" - jest-message-util "^24.9.0" - jest-regex-util "^24.3.0" - jest-resolve "^24.9.0" - jest-resolve-dependencies "^24.9.0" - jest-runner "^24.9.0" - jest-runtime "^24.9.0" - jest-snapshot "^24.9.0" - jest-util "^24.9.0" - jest-validate "^24.9.0" - jest-watcher "^24.9.0" - micromatch "^3.1.10" - p-each-series "^1.0.0" - realpath-native "^1.1.0" - rimraf "^2.5.4" - slash "^2.0.0" - strip-ansi "^5.0.0" + graceful-fs "^4.2.3" + jest-changed-files "^25.4.0" + jest-config "^25.4.0" + jest-haste-map "^25.4.0" + jest-message-util "^25.4.0" + jest-regex-util "^25.2.6" + jest-resolve "^25.4.0" + jest-resolve-dependencies "^25.4.0" + jest-runner "^25.4.0" + jest-runtime "^25.4.0" + jest-snapshot "^25.4.0" + jest-util "^25.4.0" + jest-validate "^25.4.0" + jest-watcher "^25.4.0" + micromatch "^4.0.2" + p-each-series "^2.1.0" + realpath-native "^2.0.0" + rimraf "^3.0.0" + slash "^3.0.0" + strip-ansi "^6.0.0" -"@jest/environment@^24.9.0": - version "24.9.0" - resolved "https://registry.yarnpkg.com/@jest/environment/-/environment-24.9.0.tgz#21e3afa2d65c0586cbd6cbefe208bafade44ab18" - integrity sha512-5A1QluTPhvdIPFYnO3sZC3smkNeXPVELz7ikPbhUj0bQjB07EoE9qtLrem14ZUYWdVayYbsjVwIiL4WBIMV4aQ== +"@jest/environment@^25.4.0": + version "25.4.0" + resolved "https://registry.yarnpkg.com/@jest/environment/-/environment-25.4.0.tgz#45071f525f0d8c5a51ed2b04fd42b55a8f0c7cb3" + integrity sha512-KDctiak4mu7b4J6BIoN/+LUL3pscBzoUCP+EtSPd2tK9fqyDY5OF+CmkBywkFWezS9tyH5ACOQNtpjtueEDH6Q== dependencies: - "@jest/fake-timers" "^24.9.0" - "@jest/transform" "^24.9.0" - "@jest/types" "^24.9.0" - jest-mock "^24.9.0" + "@jest/fake-timers" "^25.4.0" + "@jest/types" "^25.4.0" + jest-mock "^25.4.0" "@jest/fake-timers@^24.8.0": version "24.8.0" @@ -1257,41 +1127,47 @@ jest-message-util "^24.8.0" jest-mock "^24.8.0" -"@jest/fake-timers@^24.9.0": - version "24.9.0" - resolved "https://registry.yarnpkg.com/@jest/fake-timers/-/fake-timers-24.9.0.tgz#ba3e6bf0eecd09a636049896434d306636540c93" - integrity sha512-eWQcNa2YSwzXWIMC5KufBh3oWRIijrQFROsIqt6v/NS9Io/gknw1jsAC9c+ih/RQX4A3O7SeWAhQeN0goKhT9A== - dependencies: - "@jest/types" "^24.9.0" - jest-message-util "^24.9.0" - jest-mock "^24.9.0" - -"@jest/reporters@^24.9.0": - version "24.9.0" - resolved "https://registry.yarnpkg.com/@jest/reporters/-/reporters-24.9.0.tgz#86660eff8e2b9661d042a8e98a028b8d631a5b43" - integrity sha512-mu4X0yjaHrffOsWmVLzitKmmmWSQ3GGuefgNscUSWNiUNcEOSEQk9k3pERKEQVBb0Cnn88+UESIsZEMH3o88Gw== - dependencies: - "@jest/environment" "^24.9.0" - "@jest/test-result" "^24.9.0" - "@jest/transform" "^24.9.0" - "@jest/types" "^24.9.0" - chalk "^2.0.1" +"@jest/fake-timers@^25.4.0": + version "25.4.0" + resolved "https://registry.yarnpkg.com/@jest/fake-timers/-/fake-timers-25.4.0.tgz#3a9a4289ba836abd084953dca406389a57e00fbd" + integrity sha512-lI9z+VOmVX4dPPFzyj0vm+UtaB8dCJJ852lcDnY0uCPRvZAaVGnMwBBc1wxtf+h7Vz6KszoOvKAt4QijDnHDkg== + dependencies: + "@jest/types" "^25.4.0" + jest-message-util "^25.4.0" + jest-mock "^25.4.0" + jest-util "^25.4.0" + lolex "^5.0.0" + +"@jest/reporters@^25.4.0": + version "25.4.0" + resolved "https://registry.yarnpkg.com/@jest/reporters/-/reporters-25.4.0.tgz#836093433b32ce4e866298af2d6fcf6ed351b0b0" + integrity sha512-bhx/buYbZgLZm4JWLcRJ/q9Gvmd3oUh7k2V7gA4ZYBx6J28pIuykIouclRdiAC6eGVX1uRZT+GK4CQJLd/PwPg== + dependencies: + "@bcoe/v8-coverage" "^0.2.3" + "@jest/console" "^25.4.0" + "@jest/test-result" "^25.4.0" + "@jest/transform" "^25.4.0" + "@jest/types" "^25.4.0" + chalk "^3.0.0" + collect-v8-coverage "^1.0.0" exit "^0.1.2" glob "^7.1.2" - istanbul-lib-coverage "^2.0.2" - istanbul-lib-instrument "^3.0.1" - istanbul-lib-report "^2.0.4" - istanbul-lib-source-maps "^3.0.1" - istanbul-reports "^2.2.6" - jest-haste-map "^24.9.0" - jest-resolve "^24.9.0" - jest-runtime "^24.9.0" - jest-util "^24.9.0" - jest-worker "^24.6.0" - node-notifier "^5.4.2" - slash "^2.0.0" + istanbul-lib-coverage "^3.0.0" + istanbul-lib-instrument "^4.0.0" + istanbul-lib-report "^3.0.0" + istanbul-lib-source-maps "^4.0.0" + istanbul-reports "^3.0.2" + jest-haste-map "^25.4.0" + jest-resolve "^25.4.0" + jest-util "^25.4.0" + jest-worker "^25.4.0" + slash "^3.0.0" source-map "^0.6.0" - string-length "^2.0.0" + string-length "^3.1.0" + terminal-link "^2.0.0" + v8-to-istanbul "^4.1.3" + optionalDependencies: + node-notifier "^6.0.0" "@jest/source-map@^24.3.0": version "24.3.0" @@ -1302,13 +1178,13 @@ graceful-fs "^4.1.15" source-map "^0.6.0" -"@jest/source-map@^24.9.0": - version "24.9.0" - resolved "https://registry.yarnpkg.com/@jest/source-map/-/source-map-24.9.0.tgz#0e263a94430be4b41da683ccc1e6bffe2a191714" - integrity sha512-/Xw7xGlsZb4MJzNDgB7PW5crou5JqWiBQaz6xyPd3ArOg2nfn/PunV8+olXbbEZzNl591o5rWKE9BRDaFAuIBg== +"@jest/source-map@^25.2.6": + version "25.2.6" + resolved "https://registry.yarnpkg.com/@jest/source-map/-/source-map-25.2.6.tgz#0ef2209514c6d445ebccea1438c55647f22abb4c" + integrity sha512-VuIRZF8M2zxYFGTEhkNSvQkUKafQro4y+mwUxy5ewRqs5N/ynSFUODYp3fy1zCnbCMy1pz3k+u57uCqx8QRSQQ== dependencies: callsites "^3.0.0" - graceful-fs "^4.1.15" + graceful-fs "^4.2.3" source-map "^0.6.0" "@jest/test-result@^24.8.0": @@ -1320,46 +1196,47 @@ "@jest/types" "^24.8.0" "@types/istanbul-lib-coverage" "^2.0.0" -"@jest/test-result@^24.9.0": - version "24.9.0" - resolved "https://registry.yarnpkg.com/@jest/test-result/-/test-result-24.9.0.tgz#11796e8aa9dbf88ea025757b3152595ad06ba0ca" - integrity sha512-XEFrHbBonBJ8dGp2JmF8kP/nQI/ImPpygKHwQ/SY+es59Z3L5PI4Qb9TQQMAEeYsThG1xF0k6tmG0tIKATNiiA== +"@jest/test-result@^25.4.0": + version "25.4.0" + resolved "https://registry.yarnpkg.com/@jest/test-result/-/test-result-25.4.0.tgz#6f2ec2c8da9981ef013ad8651c1c6f0cb20c6324" + integrity sha512-8BAKPaMCHlL941eyfqhWbmp3MebtzywlxzV+qtngQ3FH+RBqnoSAhNEPj4MG7d2NVUrMOVfrwuzGpVIK+QnMAA== dependencies: - "@jest/console" "^24.9.0" - "@jest/types" "^24.9.0" + "@jest/console" "^25.4.0" + "@jest/types" "^25.4.0" "@types/istanbul-lib-coverage" "^2.0.0" + collect-v8-coverage "^1.0.0" -"@jest/test-sequencer@^24.9.0": - version "24.9.0" - resolved "https://registry.yarnpkg.com/@jest/test-sequencer/-/test-sequencer-24.9.0.tgz#f8f334f35b625a4f2f355f2fe7e6036dad2e6b31" - integrity sha512-6qqsU4o0kW1dvA95qfNog8v8gkRN9ph6Lz7r96IvZpHdNipP2cBcb07J1Z45mz/VIS01OHJ3pY8T5fUY38tg4A== +"@jest/test-sequencer@^25.4.0": + version "25.4.0" + resolved "https://registry.yarnpkg.com/@jest/test-sequencer/-/test-sequencer-25.4.0.tgz#2b96f9d37f18dc3336b28e3c8070f97f9f55f43b" + integrity sha512-240cI+nsM3attx2bMp9uGjjHrwrpvxxrZi8Tyqp/cfOzl98oZXVakXBgxODGyBYAy/UGXPKXLvNc2GaqItrsJg== dependencies: - "@jest/test-result" "^24.9.0" - jest-haste-map "^24.9.0" - jest-runner "^24.9.0" - jest-runtime "^24.9.0" + "@jest/test-result" "^25.4.0" + jest-haste-map "^25.4.0" + jest-runner "^25.4.0" + jest-runtime "^25.4.0" -"@jest/transform@^24.9.0": - version "24.9.0" - resolved "https://registry.yarnpkg.com/@jest/transform/-/transform-24.9.0.tgz#4ae2768b296553fadab09e9ec119543c90b16c56" - integrity sha512-TcQUmyNRxV94S0QpMOnZl0++6RMiqpbH/ZMccFB/amku6Uwvyb1cjYX7xkp5nGNkbX4QPH/FcB6q1HBTHynLmQ== +"@jest/transform@^25.4.0": + version "25.4.0" + resolved "https://registry.yarnpkg.com/@jest/transform/-/transform-25.4.0.tgz#eef36f0367d639e2fd93dccd758550377fbb9962" + integrity sha512-t1w2S6V1sk++1HHsxboWxPEuSpN8pxEvNrZN+Ud/knkROWtf8LeUmz73A4ezE8476a5AM00IZr9a8FO9x1+j3g== dependencies: "@babel/core" "^7.1.0" - "@jest/types" "^24.9.0" - babel-plugin-istanbul "^5.1.0" - chalk "^2.0.1" + "@jest/types" "^25.4.0" + babel-plugin-istanbul "^6.0.0" + chalk "^3.0.0" convert-source-map "^1.4.0" fast-json-stable-stringify "^2.0.0" - graceful-fs "^4.1.15" - jest-haste-map "^24.9.0" - jest-regex-util "^24.9.0" - jest-util "^24.9.0" - micromatch "^3.1.10" + graceful-fs "^4.2.3" + jest-haste-map "^25.4.0" + jest-regex-util "^25.2.6" + jest-util "^25.4.0" + micromatch "^4.0.2" pirates "^4.0.1" - realpath-native "^1.1.0" - slash "^2.0.0" + realpath-native "^2.0.0" + slash "^3.0.0" source-map "^0.6.1" - write-file-atomic "2.4.1" + write-file-atomic "^3.0.0" "@jest/types@^24.7.0", "@jest/types@^24.8.0", "@jest/types@^24.9.0": version "24.9.0" @@ -1380,6 +1257,16 @@ "@types/yargs" "^15.0.0" chalk "^3.0.0" +"@jest/types@^25.4.0": + version "25.4.0" + resolved "https://registry.yarnpkg.com/@jest/types/-/types-25.4.0.tgz#5afeb8f7e1cba153a28e5ac3c9fe3eede7206d59" + integrity sha512-XBeaWNzw2PPnGW5aXvZt3+VO60M+34RY3XDsCK5tW7kyj3RK0XClRutCfjqcBuaR2aBQTbluEDME9b5MB9UAPw== + dependencies: + "@types/istanbul-lib-coverage" "^2.0.0" + "@types/istanbul-reports" "^1.1.1" + "@types/yargs" "^15.0.0" + chalk "^3.0.0" + "@jest/types@^25.5.0": version "25.5.0" resolved "https://registry.yarnpkg.com/@jest/types/-/types-25.5.0.tgz#4d6a4793f7b9599fc3680877b856a97dbccf2a9d" @@ -1498,16 +1385,23 @@ wcwidth "^1.0.1" "@react-native-community/eslint-plugin@file:packages/eslint-plugin-react-native-community": - version "1.0.0" + version "1.1.0" "@reactions/component@^2.0.2": version "2.0.2" resolved "https://registry.yarnpkg.com/@reactions/component/-/component-2.0.2.tgz#40f8c1c2c37baabe57a0c944edb9310dc1ec6642" -"@types/babel__core@^7.1.0": - version "7.1.0" - resolved "https://registry.yarnpkg.com/@types/babel__core/-/babel__core-7.1.0.tgz#710f2487dda4dcfd010ca6abb2b4dc7394365c51" - integrity sha512-wJTeJRt7BToFx3USrCDs2BhEi4ijBInTQjOIukj6a/5tEkwpFMVZ+1ppgmE+Q/FQyc5P/VWUbx7I9NELrKruHA== +"@sinonjs/commons@^1.7.0": + version "1.7.2" + resolved "https://registry.yarnpkg.com/@sinonjs/commons/-/commons-1.7.2.tgz#505f55c74e0272b43f6c52d81946bed7058fc0e2" + integrity sha512-+DUO6pnp3udV/v2VfUWgaY5BIE1IfT7lLfeDzPVeMT1XKkaAp9LgSI9x5RtrFQoZ9Oi0PgXQQHPaoKu7dCjVxw== + dependencies: + type-detect "4.0.8" + +"@types/babel__core@^7.1.7": + version "7.1.7" + resolved "https://registry.yarnpkg.com/@types/babel__core/-/babel__core-7.1.7.tgz#1dacad8840364a57c98d0dd4855c6dd3752c6b89" + integrity sha512-RL62NqSFPCDK2FM1pSDH0scHpJvsXtZNiYlMB73DgPBaG1E38ZYVL+ei5EkWRbr+KC4YNiAUNBnRj+bgwpgjMw== dependencies: "@babel/parser" "^7.1.0" "@babel/types" "^7.0.0" @@ -1542,7 +1436,7 @@ resolved "https://registry.yarnpkg.com/@types/color-name/-/color-name-1.1.1.tgz#1c1261bbeaa10a8055bbc5d8ab84b7b2afc846a0" integrity sha512-rr+OQyAjxze7GgWrSaJwydHStIhHq2lvY3BOC2Mj7KnzI7XK0Uw1TOOdI9lDoajEbSWLiYgoo4f1R51erQfhPQ== -"@types/istanbul-lib-coverage@*": +"@types/istanbul-lib-coverage@*", "@types/istanbul-lib-coverage@^2.0.1": version "2.0.1" resolved "https://registry.yarnpkg.com/@types/istanbul-lib-coverage/-/istanbul-lib-coverage-2.0.1.tgz#42995b446db9a48a11a07ec083499a860e9138ff" integrity sha512-hRJD2ahnnpLgsj6KWMYSrmXkM3rm2Dl1qkx6IOFD5FnuNPXJIG5L0dhgKXCYTRMGzU4n0wImQ/xfmRc4POUFlg== @@ -1567,6 +1461,16 @@ "@types/istanbul-lib-coverage" "*" "@types/istanbul-lib-report" "*" +"@types/normalize-package-data@^2.4.0": + version "2.4.0" + resolved "https://registry.yarnpkg.com/@types/normalize-package-data/-/normalize-package-data-2.4.0.tgz#e486d0d97396d79beedd0a6e33f4534ff6b4973e" + integrity sha512-f5j5b/Gf71L+dbqxIpQ4Z2WlmI/mPJ0fOkGGmFgtb6sAu97EPczzbS3/tJKxmcYDj55OX6ssqwDAWOHIYDRDGA== + +"@types/prettier@^1.19.0": + version "1.19.1" + resolved "https://registry.yarnpkg.com/@types/prettier/-/prettier-1.19.1.tgz#33509849f8e679e4add158959fdb086440e9553f" + integrity sha512-5qOlnZscTn4xxM5MeGXAMOsIOIKIbh9e85zJWfBRVPlRMEVawzoPhINYbRGkBZCI8LxvBe7tJCdWiarA99OZfQ== + "@types/stack-utils@^1.0.1": version "1.0.1" resolved "https://registry.yarnpkg.com/@types/stack-utils/-/stack-utils-1.0.1.tgz#0a851d3bd96498fa25c33ab7278ed3bd65f06c3e" @@ -1621,10 +1525,10 @@ accepts@~1.3.5, accepts@~1.3.7: mime-types "~2.1.24" negotiator "0.6.2" -acorn-globals@^4.1.0: - version "4.3.0" - resolved "https://registry.yarnpkg.com/acorn-globals/-/acorn-globals-4.3.0.tgz#e3b6f8da3c1552a95ae627571f7dd6923bb54103" - integrity sha512-hMtHj3s5RnuhvHPowpBYvJVj3rAar82JiDQHvGs1zO0l10ocX/xEdBShNHTJaboucJUsScghp74pH3s7EnHHQw== +acorn-globals@^4.3.2: + version "4.3.4" + resolved "https://registry.yarnpkg.com/acorn-globals/-/acorn-globals-4.3.4.tgz#9fa1926addc11c97308c4e66d7add0d40c3272e7" + integrity sha512-clfQEh21R+D0leSbUdWf3OcfqyaCSAQ8Ryq00bofSekfr9W8u1jyYZo6ir0xu9Gtcf7BjcHJpnbZH7JOCpP60A== dependencies: acorn "^6.0.1" acorn-walk "^6.0.1" @@ -1639,11 +1543,6 @@ acorn-walk@^6.0.1: resolved "https://registry.yarnpkg.com/acorn-walk/-/acorn-walk-6.1.0.tgz#c957f4a1460da46af4a0388ce28b4c99355b0cbc" integrity sha512-ugTb7Lq7u4GfWSqqpwE0bGyoBZNMTok/zDBXxfEG0QM50jNlGhIWjRC1pPN7bvV1anhF+bs+/gNcRw+o55Evbg== -acorn@^5.5.3: - version "5.7.3" - resolved "https://registry.yarnpkg.com/acorn/-/acorn-5.7.3.tgz#67aa231bf8812974b85235a96771eb6bd07ea279" - integrity sha512-T/zvzYRfbVojPWahDsE5evJdHb3oJoQfFbsrKM7w5Zcs++Tr257tia3BmMP8XYVjp1S9RZXQMh7gao96BlqZOw== - acorn@^6.0.1: version "6.0.2" resolved "https://registry.yarnpkg.com/acorn/-/acorn-6.0.2.tgz#6a459041c320ab17592c6317abbfdf4bbaa98ca4" @@ -1654,6 +1553,11 @@ acorn@^6.0.2: resolved "https://registry.yarnpkg.com/acorn/-/acorn-6.1.1.tgz#7d25ae05bb8ad1f9b699108e1094ecd7884adc1f" integrity sha512-jPTiwtOxaHNaAPg/dmrJ/beuzLRnXtB0kQPQ8JpotKJgTB6rX6c8mlf315941pyjBSaPg8NHXS9fhP4u17DpGA== +acorn@^7.1.0: + version "7.1.1" + resolved "https://registry.yarnpkg.com/acorn/-/acorn-7.1.1.tgz#e35668de0b402f359de515c5482a1ab9f89a69bf" + integrity sha512-add7dgA5ppRPxCFJoAGfMDi7PIBXq1RtGo7BhbLaxwrXPOmw8gq48Y9ozT01hUKy9byMjlR20EJhu5zlkErEkg== + ajv-keywords@^3.0.0: version "3.4.0" resolved "https://registry.yarnpkg.com/ajv-keywords/-/ajv-keywords-3.4.0.tgz#4b831e7b531415a7cc518cd404e73f6193c6349d" @@ -1679,6 +1583,16 @@ ajv@^6.0.1, ajv@^6.5.0: json-schema-traverse "^0.4.1" uri-js "^4.2.2" +ajv@^6.5.5: + version "6.12.0" + resolved "https://registry.yarnpkg.com/ajv/-/ajv-6.12.0.tgz#06d60b96d87b8454a5adaba86e7854da629db4b7" + integrity sha512-D6gFiFA0RRLyUbvijN74DWAjXSFxWKaWP7mldxkVhyhAV3+SWA9HEJPHQ2c9soIeTFJqcSdFDGFgdqs1iUU2Hw== + dependencies: + fast-deep-equal "^3.1.1" + fast-json-stable-stringify "^2.0.0" + json-schema-traverse "^0.4.1" + uri-js "^4.2.2" + anser@^1.4.9: version "1.4.9" resolved "https://registry.yarnpkg.com/anser/-/anser-1.4.9.tgz#1f85423a5dcf8da4631a341665ff675b96845760" @@ -1703,6 +1617,13 @@ ansi-escapes@^3.0.0: resolved "https://registry.yarnpkg.com/ansi-escapes/-/ansi-escapes-3.1.0.tgz#f73207bb81207d75fd6c83f125af26eea378ca30" integrity sha512-UgAb8H9D41AQnu/PbWlCofQVcnV4Gs2bBJi9eZPxfU/hgglFh3SMDMENRIqdr7H6XFnXdoknctFByVsCOotTVw== +ansi-escapes@^4.2.1: + version "4.3.1" + resolved "https://registry.yarnpkg.com/ansi-escapes/-/ansi-escapes-4.3.1.tgz#a5c47cc43181f1f38ffd7076837700d395522a61" + integrity sha512-JWF7ocqNrp8u9oqpgV+wH5ftbt+cfvv+PTjOvKLT3AdYly/LmORARfEVT1iyjwN+4MqE5UmVKoAdIBqeoCHgLA== + dependencies: + type-fest "^0.11.0" + ansi-fragments@^0.2.1: version "0.2.1" resolved "https://registry.yarnpkg.com/ansi-fragments/-/ansi-fragments-0.2.1.tgz#24409c56c4cc37817c3d7caa99d8969e2de5a05e" @@ -1784,6 +1705,14 @@ anymatch@^2.0.0: micromatch "^3.1.4" normalize-path "^2.1.1" +anymatch@^3.0.3: + version "3.1.1" + resolved "https://registry.yarnpkg.com/anymatch/-/anymatch-3.1.1.tgz#c55ecf02185e2469259399310c173ce31233b142" + integrity sha512-mM8522psRCqzV+6LhomX5wgp25YVibjh8Wj23I5RPkPppSVSjyKD2A2mBJmWGa+KN7f2D6LNh9jkBCeyLktzjg== + dependencies: + normalize-path "^3.0.0" + picomatch "^2.0.4" + aproba@^1.0.3: version "1.2.0" resolved "https://registry.yarnpkg.com/aproba/-/aproba-1.2.0.tgz#6802e6264efd18c790a1b0d517f0f2627bf2c94a" @@ -1878,11 +1807,6 @@ array-unique@^0.3.2: resolved "https://registry.yarnpkg.com/array-unique/-/array-unique-0.3.2.tgz#a894b75d4bc4f6cd679ef3244a9fd8f46ae2d428" integrity sha1-qJS3XUvE9s1nnvMkSp/Y9Gri1Cg= -arrify@^1.0.1: - version "1.0.1" - resolved "https://registry.yarnpkg.com/arrify/-/arrify-1.0.1.tgz#898508da2226f380df904728456849c1501a4b0d" - integrity sha1-iYUI2iIm84DfkEcoRWhJwVAaSw0= - asap@~2.0.3, asap@~2.0.6: version "2.0.6" resolved "https://registry.yarnpkg.com/asap/-/asap-2.0.6.tgz#e50347611d7e690943208bbdafebcbc2fb866d46" @@ -1990,32 +1914,41 @@ babel-eslint@10.0.1: eslint-scope "3.7.1" eslint-visitor-keys "^1.0.0" -babel-jest@^24.9.0: - version "24.9.0" - resolved "https://registry.yarnpkg.com/babel-jest/-/babel-jest-24.9.0.tgz#3fc327cb8467b89d14d7bc70e315104a783ccd54" - integrity sha512-ntuddfyiN+EhMw58PTNL1ph4C9rECiQXjI4nMMBKBaNjXvqLdkXpPRcMSr4iyBrJg/+wz9brFUD6RhOAT6r4Iw== +babel-jest@^25.4.0: + version "25.4.0" + resolved "https://registry.yarnpkg.com/babel-jest/-/babel-jest-25.4.0.tgz#409eb3e2ddc2ad9a92afdbb00991f1633f8018d0" + integrity sha512-p+epx4K0ypmHuCnd8BapfyOwWwosNCYhedetQey1awddtfmEX0MmdxctGl956uwUmjwXR5VSS5xJcGX9DvdIog== dependencies: - "@jest/transform" "^24.9.0" - "@jest/types" "^24.9.0" - "@types/babel__core" "^7.1.0" - babel-plugin-istanbul "^5.1.0" - babel-preset-jest "^24.9.0" - chalk "^2.4.2" - slash "^2.0.0" + "@jest/transform" "^25.4.0" + "@jest/types" "^25.4.0" + "@types/babel__core" "^7.1.7" + babel-plugin-istanbul "^6.0.0" + babel-preset-jest "^25.4.0" + chalk "^3.0.0" + slash "^3.0.0" -babel-plugin-istanbul@^5.1.0: - version "5.1.0" - resolved "https://registry.yarnpkg.com/babel-plugin-istanbul/-/babel-plugin-istanbul-5.1.0.tgz#6892f529eff65a3e2d33d87dc5888ffa2ecd4a30" - integrity sha512-CLoXPRSUWiR8yao8bShqZUIC6qLfZVVY3X1wj+QPNXu0wfmrRRfarh1LYy+dYMVI+bDj0ghy3tuqFFRFZmL1Nw== +babel-plugin-dynamic-import-node@^2.3.0: + version "2.3.0" + resolved "https://registry.yarnpkg.com/babel-plugin-dynamic-import-node/-/babel-plugin-dynamic-import-node-2.3.0.tgz#f00f507bdaa3c3e3ff6e7e5e98d90a7acab96f7f" + integrity sha512-o6qFkpeQEBxcqt0XYlWzAVxNCSCZdUgcR8IRlhD/8DylxjjO4foPcvTW0GGKa/cVt3rvxZ7o5ippJ+/0nvLhlQ== dependencies: - find-up "^3.0.0" - istanbul-lib-instrument "^3.0.0" - test-exclude "^5.0.0" + object.assign "^4.1.0" -babel-plugin-jest-hoist@^24.9.0: - version "24.9.0" - resolved "https://registry.yarnpkg.com/babel-plugin-jest-hoist/-/babel-plugin-jest-hoist-24.9.0.tgz#4f837091eb407e01447c8843cbec546d0002d756" - integrity sha512-2EMA2P8Vp7lG0RAzr4HXqtYwacfMErOuv1U3wrvxHX6rD1sV6xS3WXG3r8TRQ2r6w8OhvSdWt+z41hQNwNm3Xw== +babel-plugin-istanbul@^6.0.0: + version "6.0.0" + resolved "https://registry.yarnpkg.com/babel-plugin-istanbul/-/babel-plugin-istanbul-6.0.0.tgz#e159ccdc9af95e0b570c75b4573b7c34d671d765" + integrity sha512-AF55rZXpe7trmEylbaE1Gv54wn6rwU03aptvRoVIGP8YykoSxqdVLV1TfwflBCE/QtHmqtP8SWlTENqbK8GCSQ== + dependencies: + "@babel/helper-plugin-utils" "^7.0.0" + "@istanbuljs/load-nyc-config" "^1.0.0" + "@istanbuljs/schema" "^0.1.2" + istanbul-lib-instrument "^4.0.0" + test-exclude "^6.0.0" + +babel-plugin-jest-hoist@^25.4.0: + version "25.4.0" + resolved "https://registry.yarnpkg.com/babel-plugin-jest-hoist/-/babel-plugin-jest-hoist-25.4.0.tgz#0c122c1b93fb76f52d2465be2e8069e798e9d442" + integrity sha512-M3a10JCtTyKevb0MjuH6tU+cP/NVQZ82QPADqI1RQYY1OphztsCeIeQmTsHmF/NS6m0E51Zl4QNsI3odXSQF5w== dependencies: "@types/babel__traverse" "^7.0.6" @@ -2024,6 +1957,22 @@ babel-plugin-syntax-trailing-function-commas@^7.0.0-beta.0: resolved "https://registry.yarnpkg.com/babel-plugin-syntax-trailing-function-commas/-/babel-plugin-syntax-trailing-function-commas-7.0.0-beta.0.tgz#aa213c1435e2bffeb6fca842287ef534ad05d5cf" integrity sha512-Xj9XuRuz3nTSbaTXWv3itLOcxyF4oPD8douBBmj7U9BBC6nEBYfyOJYQMf/8PJAFotC62UY5dFfIGEPr7WswzQ== +babel-preset-current-node-syntax@^0.1.2: + version "0.1.2" + resolved "https://registry.yarnpkg.com/babel-preset-current-node-syntax/-/babel-preset-current-node-syntax-0.1.2.tgz#fb4a4c51fe38ca60fede1dc74ab35eb843cb41d6" + integrity sha512-u/8cS+dEiK1SFILbOC8/rUI3ml9lboKuuMvZ/4aQnQmhecQAgPw5ew066C1ObnEAUmlx7dv/s2z52psWEtLNiw== + dependencies: + "@babel/plugin-syntax-async-generators" "^7.8.4" + "@babel/plugin-syntax-bigint" "^7.8.3" + "@babel/plugin-syntax-class-properties" "^7.8.3" + "@babel/plugin-syntax-json-strings" "^7.8.3" + "@babel/plugin-syntax-logical-assignment-operators" "^7.8.3" + "@babel/plugin-syntax-nullish-coalescing-operator" "^7.8.3" + "@babel/plugin-syntax-numeric-separator" "^7.8.3" + "@babel/plugin-syntax-object-rest-spread" "^7.8.3" + "@babel/plugin-syntax-optional-catch-binding" "^7.8.3" + "@babel/plugin-syntax-optional-chaining" "^7.8.3" + babel-preset-fbjs@^3.0.0: version "3.0.1" resolved "https://registry.yarnpkg.com/babel-preset-fbjs/-/babel-preset-fbjs-3.0.1.tgz#0be99c39367d6fb5bbcf1f6c33be0321b5234c1c" @@ -2091,13 +2040,13 @@ babel-preset-fbjs@^3.3.0: "@babel/plugin-transform-template-literals" "^7.0.0" babel-plugin-syntax-trailing-function-commas "^7.0.0-beta.0" -babel-preset-jest@^24.9.0: - version "24.9.0" - resolved "https://registry.yarnpkg.com/babel-preset-jest/-/babel-preset-jest-24.9.0.tgz#192b521e2217fb1d1f67cf73f70c336650ad3cdc" - integrity sha512-izTUuhE4TMfTRPF92fFwD2QfdXaZW08qvWTFCI51V8rW5x00UuPgc3ajRoWofXOuxjfcOM5zzSYsQS3H8KGCAg== +babel-preset-jest@^25.4.0: + version "25.4.0" + resolved "https://registry.yarnpkg.com/babel-preset-jest/-/babel-preset-jest-25.4.0.tgz#10037cc32b751b994b260964629e49dc479abf4c" + integrity sha512-PwFiEWflHdu3JCeTr0Pb9NcHHE34qWFnPQRVPvqQITx4CsDCzs6o05923I10XvLvn9nNsRHuiVgB72wG/90ZHQ== dependencies: - "@babel/plugin-syntax-object-rest-spread" "^7.0.0" - babel-plugin-jest-hoist "^24.9.0" + babel-plugin-jest-hoist "^25.4.0" + babel-preset-current-node-syntax "^0.1.2" babylon@^6.15.0: version "6.18.0" @@ -2182,6 +2131,13 @@ braces@^2.3.1: split-string "^3.0.2" to-regex "^3.0.1" +braces@^3.0.1: + version "3.0.2" + resolved "https://registry.yarnpkg.com/braces/-/braces-3.0.2.tgz#3454e1a462ee8d599e236df336cd9ea4f8afe107" + integrity sha512-b8um+L1RzM3WDSzvhm6gIz1yfTbBt6YTlcEKAvsmqCZZFw46z626lVj9j1yEPW33H5H+lBQpZMP1k8l+78Ha0A== + dependencies: + fill-range "^7.0.1" + browser-process-hrtime@^0.1.2: version "0.1.3" resolved "https://registry.yarnpkg.com/browser-process-hrtime/-/browser-process-hrtime-0.1.3.tgz#616f00faef1df7ec1b5bf9cfe2bdc3170f26c7b4" @@ -2194,14 +2150,15 @@ browser-resolve@^1.11.3: dependencies: resolve "1.1.7" -browserslist@^4.3.4: - version "4.3.6" - resolved "https://registry.yarnpkg.com/browserslist/-/browserslist-4.3.6.tgz#0f9d9081afc66b36f477c6bdf3813f784f42396a" - integrity sha512-kMGKs4BTzRWviZ8yru18xBpx+CyHG9eqgRbj9XbE3IMgtczf4aiA0Y1YCpVdvUieKGZ03kolSPXqTcscBCb9qw== +browserslist@^4.8.3, browserslist@^4.9.1: + version "4.11.1" + resolved "https://registry.yarnpkg.com/browserslist/-/browserslist-4.11.1.tgz#92f855ee88d6e050e7e7311d987992014f1a1f1b" + integrity sha512-DCTr3kDrKEYNw6Jb9HFxVLQNaue8z+0ZfRBRjmCunKDEXEBajKDj2Y+Uelg+Pi29OnvaSGwjOsnRyNEkXzHg5g== dependencies: - caniuse-lite "^1.0.30000921" - electron-to-chromium "^1.3.92" - node-releases "^1.1.1" + caniuse-lite "^1.0.30001038" + electron-to-chromium "^1.3.390" + node-releases "^1.1.53" + pkg-up "^2.0.0" bser@^2.0.0: version "2.0.0" @@ -2220,11 +2177,6 @@ buffer-from@^1.0.0: resolved "https://registry.yarnpkg.com/buffer-from/-/buffer-from-1.1.1.tgz#32713bc028f75c02fdb710d7c7bcec1f2c6070ef" integrity sha512-MQcXEUbCKtEo7bhqEs6560Hyd4XaovZlO/k9V3hjVUF/zwW7KBVdSK4gIt/bzwS9MbR5qob+F5jusZsb0YQK2A== -builtin-modules@^1.0.0: - version "1.1.1" - resolved "https://registry.yarnpkg.com/builtin-modules/-/builtin-modules-1.1.1.tgz#270f076c5a72c02f5b65a47df94c5fe3a278892f" - integrity sha1-Jw8HbFpywC9bZaR9+Uxf46J4iS8= - bunyan-debug-stream@^1.1.0: version "1.1.1" resolved "https://registry.yarnpkg.com/bunyan-debug-stream/-/bunyan-debug-stream-1.1.1.tgz#4740a00b7d5c2d9d1b714925ab0802516040813e" @@ -2309,10 +2261,10 @@ camelcase@^5.3.1: resolved "https://registry.yarnpkg.com/camelcase/-/camelcase-5.3.1.tgz#e3c9b31569e106811df242f715725a1f4c494320" integrity sha512-L28STB170nwWS63UjtlEOE3dldQApaJXZkOI1uMFfzf3rRuPegHaHesyee+YxQ+W6SvRDQV6UrdOdRiR153wJg== -caniuse-lite@^1.0.30000921: - version "1.0.30000923" - resolved "https://registry.yarnpkg.com/caniuse-lite/-/caniuse-lite-1.0.30000923.tgz#148f9bda508024b5ce957b463ae2e8302b451bb2" - integrity sha512-j5ur7eeluOFjjPUkydtXP4KFAsmH3XaQNch5tvWSO+dLHYt5PE+VgJZLWtbVOodfWij6m6zas28T4gB/cLYq1w== +caniuse-lite@^1.0.30001038: + version "1.0.30001038" + resolved "https://registry.yarnpkg.com/caniuse-lite/-/caniuse-lite-1.0.30001038.tgz#44da3cbca2ab6cb6aa83d1be5d324e17f141caff" + integrity sha512-zii9quPo96XfOiRD4TrfYGs+QsGZpb2cGiMAzPjtf/hpFgB6zCPZgJb7I1+EATeMw/o+lG8FyRAnI+CWStHcaQ== capture-exit@^1.2.0: version "1.2.0" @@ -2470,6 +2422,11 @@ code-point-at@^1.0.0: resolved "https://registry.yarnpkg.com/code-point-at/-/code-point-at-1.1.0.tgz#0d070b4d043a5bea33a2f1a40e2edb3d9a4ccf77" integrity sha1-DQcLTQQ6W+ozovGkDi7bPZpMz3c= +collect-v8-coverage@^1.0.0: + version "1.0.1" + resolved "https://registry.yarnpkg.com/collect-v8-coverage/-/collect-v8-coverage-1.0.1.tgz#cc2c8e94fc18bbdffe64d6534570c8a673b27f59" + integrity sha512-iBPtljfCNcTKNAto0KEtDfZ3qzjJvqE3aTGZsbhjSBlorqpXJlaWWtPO35D+ZImoC3KWejX64o+yPGxhWSTzfg== + collection-visit@^1.0.0: version "1.0.0" resolved "https://registry.yarnpkg.com/collection-visit/-/collection-visit-1.0.0.tgz#4bc0373c164bc3291b4d368c829cf1a80a59dca0" @@ -2599,14 +2556,14 @@ console-control-strings@^1.0.0, console-control-strings@~1.1.0: resolved "https://registry.yarnpkg.com/console-control-strings/-/console-control-strings-1.1.0.tgz#3d7cf4464db6446ea644bf4b39507f9851008e8e" integrity sha1-PXz0Rk22RG6mRL9LOVB/mFEAjo4= -convert-source-map@^1.1.0, convert-source-map@^1.4.0: +convert-source-map@^1.4.0: version "1.6.0" resolved "https://registry.yarnpkg.com/convert-source-map/-/convert-source-map-1.6.0.tgz#51b537a8c43e0f04dec1993bffcdd504e758ac20" integrity sha512-eFu7XigvxdZ1ETfbgPBohgyQ/Z++C0eEhTor0qRwBw9unw+L0/6V8wkSuGgzdThkiS5lSpdptOQPD8Ak40a+7A== dependencies: safe-buffer "~5.1.1" -convert-source-map@^1.7.0: +convert-source-map@^1.6.0, convert-source-map@^1.7.0: version "1.7.0" resolved "https://registry.yarnpkg.com/convert-source-map/-/convert-source-map-1.7.0.tgz#17a2cb882d7f77d3490585e2ce6c524424a3a442" integrity sha512-4FJkXzKXEDB1snCFZlLP4gpC3JILicCpGbzG9f9G7tGqGCzETQ2hWPrcinA9oU4wtf2biUaEH5065UnMeR33oA== @@ -2618,7 +2575,15 @@ copy-descriptor@^0.1.0: resolved "https://registry.yarnpkg.com/copy-descriptor/-/copy-descriptor-0.1.1.tgz#676f6eb3c39997c2ee1ac3a924fd6124748f578d" integrity sha1-Z29us8OZl8LuGsOpJP1hJHSPV40= -core-js@^2.2.2, core-js@^2.4.1, core-js@^2.5.7: +core-js-compat@^3.6.2: + version "3.6.4" + resolved "https://registry.yarnpkg.com/core-js-compat/-/core-js-compat-3.6.4.tgz#938476569ebb6cda80d339bcf199fae4f16fff17" + integrity sha512-zAa3IZPvsJ0slViBQ2z+vgyyTuhd3MFn1rBQjZSKVEgB0UMYhUkCj9jJUVPgGTGqWvsBVmfnruXgTcNyTlEiSA== + dependencies: + browserslist "^4.8.3" + semver "7.0.0" + +core-js@^2.2.2, core-js@^2.4.1: version "2.5.7" resolved "https://registry.yarnpkg.com/core-js/-/core-js-2.5.7.tgz#f972608ff0cead68b841a16a932d0b183791814e" integrity sha512-RszJCAxg/PP6uzXVXL6BsxSXx/B05oJAQ2vkJRjyjrEcNVycaqOmNb5OTxZPE3xa5gwZduqza6L9JOCenh/Ecw== @@ -2687,17 +2652,31 @@ cross-spawn@^6.0.0, cross-spawn@^6.0.5: shebang-command "^1.2.0" which "^1.2.9" -cssom@0.3.x, "cssom@>= 0.3.2 < 0.4.0": - version "0.3.4" - resolved "https://registry.yarnpkg.com/cssom/-/cssom-0.3.4.tgz#8cd52e8a3acfd68d3aed38ee0a640177d2f9d797" - integrity sha512-+7prCSORpXNeR4/fUP3rL+TzqtiFfhMvTd7uEqMdgPvLPt4+uzFUeufx5RHjGTACCargg/DiEt/moMQmvnfkog== +cross-spawn@^7.0.0: + version "7.0.2" + resolved "https://registry.yarnpkg.com/cross-spawn/-/cross-spawn-7.0.2.tgz#d0d7dcfa74e89115c7619f4f721a94e1fdb716d6" + integrity sha512-PD6G8QG3S4FK/XCGFbEQrDqO2AnMMsy0meR7lerlIOHAAbkuavGU/pOqprrlvfTNjvowivTeBsjebAL0NSoMxw== + dependencies: + path-key "^3.1.0" + shebang-command "^2.0.0" + which "^2.0.1" + +cssom@^0.4.1: + version "0.4.4" + resolved "https://registry.yarnpkg.com/cssom/-/cssom-0.4.4.tgz#5a66cf93d2d0b661d80bf6a44fb65f5c2e4e0a10" + integrity sha512-p3pvU7r1MyyqbTk+WbNJIgJjG2VmTIaB10rI93LzVPrmDJKkzKYMtxxyAvQXR/NS6otuzveI7+7BBq3SjBS2mw== -cssstyle@^1.0.0: - version "1.1.1" - resolved "https://registry.yarnpkg.com/cssstyle/-/cssstyle-1.1.1.tgz#18b038a9c44d65f7a8e428a653b9f6fe42faf5fb" - integrity sha512-364AI1l/M5TYcFH83JnOH/pSqgaNnKmYgKrm0didZMGKWjQB60dymwWy1rKUgL3J1ffdq9xVi2yGLHdSjjSNog== +cssom@~0.3.6: + version "0.3.8" + resolved "https://registry.yarnpkg.com/cssom/-/cssom-0.3.8.tgz#9f1276f5b2b463f2114d3f2c75250af8c1a36f4a" + integrity sha512-b0tGHbfegbhPJpxpiBPU2sCkigAqtM9O121le6bbOlgyV+NyGyCmVfJ6QW9eRjz8CpNfWEOYBIMIGRYkLwsIYg== + +cssstyle@^2.0.0: + version "2.2.0" + resolved "https://registry.yarnpkg.com/cssstyle/-/cssstyle-2.2.0.tgz#e4c44debccd6b7911ed617a4395e5754bba59992" + integrity sha512-sEb3XFPx3jNnCAMtqrXPDeSgQr+jojtCeNf8cvMNMh1cG970+lljssvQDzPq6lmmJu2Vhqood/gtEomBiHOGnA== dependencies: - cssom "0.3.x" + cssom "~0.3.6" damerau-levenshtein@^1.0.4: version "1.0.4" @@ -2711,13 +2690,13 @@ dashdash@^1.12.0: dependencies: assert-plus "^1.0.0" -data-urls@^1.0.0: - version "1.0.1" - resolved "https://registry.yarnpkg.com/data-urls/-/data-urls-1.0.1.tgz#d416ac3896918f29ca84d81085bc3705834da579" - integrity sha512-0HdcMZzK6ubMUnsMmQmG0AcLQPvbvb47R0+7CCZQCYgcd8OUWG91CG7sM6GoXgjz+WLl4ArFzHtBMy/QqSF4eg== +data-urls@^1.1.0: + version "1.1.0" + resolved "https://registry.yarnpkg.com/data-urls/-/data-urls-1.1.0.tgz#15ee0582baa5e22bb59c77140da8f9c76963bbfe" + integrity sha512-YTWYI9se1P55u58gL5GkQHW4P6VJBJ5iBT+B5a7i2Tjadhv52paJG0qHX4A0OR6/t52odI64KP2YvFpkDOi3eQ== dependencies: abab "^2.0.0" - whatwg-mimetype "^2.1.0" + whatwg-mimetype "^2.2.0" whatwg-url "^7.0.0" dayjs@^1.8.15: @@ -2778,6 +2757,11 @@ deepmerge@^3.2.0: resolved "https://registry.yarnpkg.com/deepmerge/-/deepmerge-3.2.0.tgz#58ef463a57c08d376547f8869fdc5bcee957f44e" integrity sha512-6+LuZGU7QCNUnAJyX8cIrlzoEgggTM6B7mm+znKOX4t5ltluT9KLjN6g61ECMS0LTsLW7yDpNoxhix5FZcrIow== +deepmerge@^4.2.2: + version "4.2.2" + resolved "https://registry.yarnpkg.com/deepmerge/-/deepmerge-4.2.2.tgz#44d2ea3679b8f4d4ffba33f03d865fc1e7bf4955" + integrity sha512-FJ3UgI4gIl+PHZm53knsuSFpE+nESMr7M4v9QcgB7S63Kj/6WqMiFQJpBBYz1Pt+66bZpP3Q7Lye0Oo9MPKEdg== + defaults@^1.0.3: version "1.0.3" resolved "https://registry.yarnpkg.com/defaults/-/defaults-1.0.3.tgz#c656051e9817d9ff08ed881477f3fe4019f3ef7d" @@ -2844,10 +2828,10 @@ detect-libc@^1.0.2: resolved "https://registry.yarnpkg.com/detect-libc/-/detect-libc-1.0.3.tgz#fa137c4bd698edf55cd5cd02ac559f91a4c4ba9b" integrity sha1-+hN8S9aY7fVc1c0CrFWfkaTEups= -detect-newline@^2.1.0: - version "2.1.0" - resolved "https://registry.yarnpkg.com/detect-newline/-/detect-newline-2.1.0.tgz#f41f1c10be4b00e87b5f13da680759f2c5bfd3e2" - integrity sha1-9B8cEL5LAOh7XxPaaAdZ8sW/0+I= +detect-newline@^3.0.0: + version "3.1.0" + resolved "https://registry.yarnpkg.com/detect-newline/-/detect-newline-3.1.0.tgz#576f5dfc63ae1a192ff192d8ad3af6308991b651" + integrity sha512-TLz+x/vEXm/Y7P7wn1EJFNLxYpUD4TgMosxY6fAVJUnJMbupHBOncxyWUG9OpTaH9EBD7uFI5LfEgmMOc54DsA== detox@16.7.2: version "16.7.2" @@ -2877,10 +2861,10 @@ detox@16.7.2: yargs "^13.0.0" yargs-parser "^13.0.0" -diff-sequences@^24.9.0: - version "24.9.0" - resolved "https://registry.yarnpkg.com/diff-sequences/-/diff-sequences-24.9.0.tgz#5715d6244e2aa65f48bba0bc972db0b0b11e95b5" - integrity sha512-Dj6Wk3tWyTE+Fo1rW8v0Xhwk80um6yFYKbuAxc9c3EZxIHFDYwbi34Uk42u1CdnIiVorvt4RmlSDjIPyzGC2ew== +diff-sequences@^25.2.6: + version "25.2.6" + resolved "https://registry.yarnpkg.com/diff-sequences/-/diff-sequences-25.2.6.tgz#5f467c00edd35352b7bca46d7927d60e687a76dd" + integrity sha512-Hq8o7+6GaZeoFjtpgvRBUknSXNeJiCx7V9Fr94ZMljNiCr9n9L8H8aJqgWOQiDDGdyn29fRNcDdRVJ5fdyihfg== doctrine@^2.1.0: version "2.1.0" @@ -2916,10 +2900,10 @@ ee-first@1.1.1: resolved "https://registry.yarnpkg.com/ee-first/-/ee-first-1.1.1.tgz#590c61156b0ae2f4f0255732a158b266bc56b21d" integrity sha1-WQxhFWsK4vTwJVcyoViyZrxWsh0= -electron-to-chromium@^1.3.92: - version "1.3.95" - resolved "https://registry.yarnpkg.com/electron-to-chromium/-/electron-to-chromium-1.3.95.tgz#79fac438813ca7f3db182a525c2ab432934f6484" - integrity sha512-0JZEDKOQAE05EO/4rk3vLAE+PYFI9OLCVLAS4QAq1y+Bb2y1N6MyQJz62ynzHN/y0Ka/nO5jVJcahbCEdfiXLQ== +electron-to-chromium@^1.3.390: + version "1.3.392" + resolved "https://registry.yarnpkg.com/electron-to-chromium/-/electron-to-chromium-1.3.392.tgz#280ab4f7a3ae47419cfabb15dbfc1567be7f1111" + integrity sha512-/hsgeVdReDsyTBE0aU9FRdh1wnNPrX3xlz3t61F+CJPOT+Umfi9DXHsCX85TEgWZQqlow0Rw44/4/jbU2Sqgkg== emoji-regex@^7.0.1, emoji-regex@^7.0.2: version "7.0.3" @@ -2982,7 +2966,7 @@ es-abstract@^1.10.0, es-abstract@^1.11.0: is-regex "^1.0.4" object-keys "^1.0.12" -es-abstract@^1.5.1, es-abstract@^1.7.0: +es-abstract@^1.7.0: version "1.12.0" resolved "https://registry.yarnpkg.com/es-abstract/-/es-abstract-1.12.0.tgz#9dbbdd27c6856f0001421ca18782d786bf8a6165" integrity sha512-C8Fx/0jFmV5IPoMOFPA9P9G5NtqW+4cOPit3MIuvR2t7Ag2K15EJTpxnHAYTzL+aYQJIESYeXZmDBfOBE1HcpA== @@ -3012,12 +2996,12 @@ escape-string-regexp@^1.0.2, escape-string-regexp@^1.0.5: resolved "https://registry.yarnpkg.com/escape-string-regexp/-/escape-string-regexp-1.0.5.tgz#1b61c0562190a8dff6ae3bb2cf0200ca130b86d4" integrity sha1-G2HAViGQqN/2rjuyzwIAyhMLhtQ= -escodegen@^1.9.1: - version "1.11.0" - resolved "https://registry.yarnpkg.com/escodegen/-/escodegen-1.11.0.tgz#b27a9389481d5bfd5bec76f7bb1eb3f8f4556589" - integrity sha512-IeMV45ReixHS53K/OmfKAIztN/igDHzTJUhZM3k1jMhIZWjk45SMwAtBsEXiJp3vSPmTcu6CXn7mDvFHRN66fw== +escodegen@^1.11.1: + version "1.14.1" + resolved "https://registry.yarnpkg.com/escodegen/-/escodegen-1.14.1.tgz#ba01d0c8278b5e95a9a45350142026659027a457" + integrity sha512-Bmt7NcRySdIfNPfU2ZoXDrrXsG9ZjvDxcAlMfDUgRBjLOWTuIACXPBFJH7Z+cLb40JeQco5toikyc9t9P8E9SQ== dependencies: - esprima "^3.1.3" + esprima "^4.0.1" estraverse "^4.2.0" esutils "^2.0.2" optionator "^0.8.1" @@ -3219,12 +3203,7 @@ espree@^4.0.0: acorn-jsx "^5.0.0" eslint-visitor-keys "^1.0.0" -esprima@^3.1.3: - version "3.1.3" - resolved "https://registry.yarnpkg.com/esprima/-/esprima-3.1.3.tgz#fdca51cee6133895e3c88d535ce49dbff62a4633" - integrity sha1-/cpRzuYTOJXjyI1TXOSdv/YqRjM= - -esprima@^4.0.0, esprima@~4.0.0: +esprima@^4.0.0, esprima@^4.0.1, esprima@~4.0.0: version "4.0.1" resolved "https://registry.yarnpkg.com/esprima/-/esprima-4.0.1.tgz#13b04cdb3e6c5d19df91ab6987a8695619b0aa71" integrity sha512-eGuFFw7Upda+g4p+QHvnW0RyTX/SVeJBDM/gCtMARO0cLuT2HcEKnTPvhjV6aGeqrCB/sbNop0Kszm0jsaWU4A== @@ -3248,7 +3227,7 @@ estraverse@^4.0.0, estraverse@^4.1.0, estraverse@^4.1.1, estraverse@^4.2.0: resolved "https://registry.yarnpkg.com/estraverse/-/estraverse-4.2.0.tgz#0dee3fed31fcd469618ce7342099fc1afa0bdb13" integrity sha1-De4/7TH81GlhjOc0IJn8GvoL2xM= -esutils@^2.0.0, esutils@^2.0.2: +esutils@^2.0.2: version "2.0.2" resolved "https://registry.yarnpkg.com/esutils/-/esutils-2.0.2.tgz#0abf4f1caa5bcb1f7a9d8acc6dea4faaa04bac9b" integrity sha1-Cr9PHKpbyx96nYrMbepPqqBLrJs= @@ -3293,6 +3272,22 @@ execa@^1.0.0: signal-exit "^3.0.0" strip-eof "^1.0.0" +execa@^3.2.0: + version "3.4.0" + resolved "https://registry.yarnpkg.com/execa/-/execa-3.4.0.tgz#c08ed4550ef65d858fac269ffc8572446f37eb89" + integrity sha512-r9vdGQk4bmCuK1yKQu1KTwcT2zwfWdbdaXfCtAh+5nU/4fSX+JAb7vZGvI5naJrQlvONrEB20jeruESI69530g== + dependencies: + cross-spawn "^7.0.0" + get-stream "^5.0.0" + human-signals "^1.1.1" + is-stream "^2.0.0" + merge-stream "^2.0.0" + npm-run-path "^4.0.0" + onetime "^5.1.0" + p-finally "^2.0.0" + signal-exit "^3.0.2" + strip-final-newline "^2.0.0" + exit@^0.1.2: version "0.1.2" resolved "https://registry.yarnpkg.com/exit/-/exit-0.1.2.tgz#0632638f8d877cc82107d30a0fff1a17cba1cd0c" @@ -3311,17 +3306,17 @@ expand-brackets@^2.1.4: snapdragon "^0.8.1" to-regex "^3.0.1" -expect@^24.9.0: - version "24.9.0" - resolved "https://registry.yarnpkg.com/expect/-/expect-24.9.0.tgz#b75165b4817074fa4a157794f46fe9f1ba15b6ca" - integrity sha512-wvVAx8XIol3Z5m9zvZXiyZOQ+sRJqNTIm6sGjdWlaZIeupQGO3WbYI+15D/AmEwZywL6wtJkbAbJtzkOfBuR0Q== +expect@^25.4.0: + version "25.4.0" + resolved "https://registry.yarnpkg.com/expect/-/expect-25.4.0.tgz#0b16c17401906d1679d173e59f0d4580b22f8dc8" + integrity sha512-7BDIX99BTi12/sNGJXA9KMRcby4iAmu1xccBOhyKCyEhjcVKS3hPmHdA/4nSI9QGIOkUropKqr3vv7WMDM5lvQ== dependencies: - "@jest/types" "^24.9.0" - ansi-styles "^3.2.0" - jest-get-type "^24.9.0" - jest-matcher-utils "^24.9.0" - jest-message-util "^24.9.0" - jest-regex-util "^24.9.0" + "@jest/types" "^25.4.0" + ansi-styles "^4.0.0" + jest-get-type "^25.2.6" + jest-matcher-utils "^25.4.0" + jest-message-util "^25.4.0" + jest-regex-util "^25.2.6" extend-shallow@^1.1.2: version "1.1.4" @@ -3397,6 +3392,11 @@ fast-deep-equal@^2.0.1: resolved "https://registry.yarnpkg.com/fast-deep-equal/-/fast-deep-equal-2.0.1.tgz#7b05218ddf9667bf7f370bf7fdb2cb15fdd0aa49" integrity sha1-ewUhjd+WZ79/Nwv3/bLLFf3Qqkk= +fast-deep-equal@^3.1.1: + version "3.1.1" + resolved "https://registry.yarnpkg.com/fast-deep-equal/-/fast-deep-equal-3.1.1.tgz#545145077c501491e33b15ec408c294376e94ae4" + integrity sha512-8UEa58QDLauDNfpbrX55Q9jrGHThw2ZMdOky5Gl1CDtVeJDPVrG4Jxx1N8jw2gkWaff5UUuX1KJd+9zGe2B+ZA== + fast-diff@^1.1.1: version "1.2.0" resolved "https://registry.yarnpkg.com/fast-diff/-/fast-diff-1.2.0.tgz#73ee11982d86caaf7959828d519cfe927fac5f03" @@ -3479,6 +3479,13 @@ fill-range@^4.0.0: repeat-string "^1.6.1" to-regex-range "^2.1.0" +fill-range@^7.0.1: + version "7.0.1" + resolved "https://registry.yarnpkg.com/fill-range/-/fill-range-7.0.1.tgz#1919a6a7c75fe38b2c7c77e5198535da9acdda40" + integrity sha512-qOo9F+dMUmC2Lcb4BbVvnKJxTPjCm+RRpe4gDuGrzkL7mEVl/djYSu2OdQ2Pa302N4oqkSg9ir6jaLWJ2USVpQ== + dependencies: + to-regex-range "^5.0.1" + finalhandler@1.1.0: version "1.1.0" resolved "https://registry.yarnpkg.com/finalhandler/-/finalhandler-1.1.0.tgz#ce0b6855b45853e791b2fcc680046d88253dd7f5" @@ -3492,14 +3499,14 @@ finalhandler@1.1.0: statuses "~1.3.1" unpipe "~1.0.0" -find-cache-dir@^1.0.0: - version "1.0.0" - resolved "https://registry.yarnpkg.com/find-cache-dir/-/find-cache-dir-1.0.0.tgz#9288e3e9e3cc3748717d39eade17cf71fc30ee6f" - integrity sha1-kojj6ePMN0hxfTnq3hfPcfww7m8= +find-cache-dir@^2.0.0: + version "2.1.0" + resolved "https://registry.yarnpkg.com/find-cache-dir/-/find-cache-dir-2.1.0.tgz#8d0f94cd13fe43c6c7c261a0d86115ca918c05f7" + integrity sha512-Tq6PixE0w/VMFfCgbONnkiQIVol/JJL7nRMi20fqzA4NRs9AfeqMGeRdPi3wIhYkxjeBaWh2rxwapn5Tu3IqOQ== dependencies: commondir "^1.0.1" - make-dir "^1.0.0" - pkg-dir "^2.0.0" + make-dir "^2.0.0" + pkg-dir "^3.0.0" find-up@^2.1.0: version "2.1.0" @@ -3515,7 +3522,7 @@ find-up@^3.0.0: dependencies: locate-path "^3.0.0" -find-up@^4.1.0: +find-up@^4.0.0, find-up@^4.1.0: version "4.1.0" resolved "https://registry.yarnpkg.com/find-up/-/find-up-4.1.0.tgz#97afe7d6cdc0bc5928584b7c8d7b16e8a9aa5d19" integrity sha512-PpOwAdQ/YlXQ2vj8a3h8IipDuYRi3wceVQQGYWxNINccq40Anw7BlsEXCMbt1Zt+OLA6Fq9suIpIWD0OsnISlw== @@ -3533,10 +3540,10 @@ flat-cache@^1.2.1: rimraf "~2.6.2" write "^0.2.1" -flow-bin@^0.122.0: - version "0.122.0" - resolved "https://registry.yarnpkg.com/flow-bin/-/flow-bin-0.122.0.tgz#c723a2b33b1a70bd10204704ae1dc776d5d89d79" - integrity sha512-my8N5jgl/A+UVby9E7NDppHdhLgRbWgKbmFZSx2MSYMRh3d9YGnM2MM+wexpUpl0ftY1IM6ZcUwaAhrypLyvlA== +flow-bin@^0.123.0: + version "0.123.0" + resolved "https://registry.yarnpkg.com/flow-bin/-/flow-bin-0.123.0.tgz#7ba61a0b8775928cf4943ccf78eed2b1b05f7b3a" + integrity sha512-Ylcf8YDIM/KrqtxkPuq+f8O+6sdYA2Nuz5f+sWHlp539DatZz3YMcsO1EiXaf1C11HJgpT/3YGYe7xZ9/UZmvQ== flow-parser@0.*: version "0.89.0" @@ -3629,6 +3636,11 @@ fsevents@^1.2.7: nan "^2.9.2" node-pre-gyp "^0.10.0" +fsevents@^2.1.2: + version "2.1.2" + resolved "https://registry.yarnpkg.com/fsevents/-/fsevents-2.1.2.tgz#4c0a1fb34bc68e543b4b82a9ec392bfbda840805" + integrity sha512-R4wDiBwZ0KzpgOWetKDug1FZcYhqYnUYKtfZYt4mD5SBz76q0KR4Q9o7GIPamsVPGmW3EYPPJ0dOOjvx32ldZA== + function-bind@^1.1.1: version "1.1.1" resolved "https://registry.yarnpkg.com/function-bind/-/function-bind-1.1.1.tgz#a56899d3ea3c9bab874bb9773b7c5ede92f4895d" @@ -3658,6 +3670,11 @@ gauge@~2.7.3: strip-ansi "^3.0.1" wide-align "^1.1.0" +gensync@^1.0.0-beta.1: + version "1.0.0-beta.1" + resolved "https://registry.yarnpkg.com/gensync/-/gensync-1.0.0-beta.1.tgz#58f4361ff987e5ff6e1e7a210827aa371eaac269" + integrity sha512-r8EC6NO1sngH/zdD9fiRDLdcgnbayXah+mLgManTaIZJqEC1MZstmnox8KpnI2/fxQwrp5OpCOYWLp4rBl4Jcg== + get-caller-file@^2.0.1: version "2.0.5" resolved "https://registry.yarnpkg.com/get-caller-file/-/get-caller-file-2.0.5.tgz#4f94412a82db32f36e3b0b9741f8a97feb031f7e" @@ -3682,6 +3699,13 @@ get-stream@^4.0.0: dependencies: pump "^3.0.0" +get-stream@^5.0.0: + version "5.1.0" + resolved "https://registry.yarnpkg.com/get-stream/-/get-stream-5.1.0.tgz#01203cdc92597f9b909067c3e656cc1f4d3c4dc9" + integrity sha512-EXr1FOzrzTfGeL0gQdeFEvOMm2mzMOglyiOXSTpPC+iAjAKftbr3jpCMWynogwYnM+eSj9sHGc6wjIcDvYiygw== + dependencies: + pump "^3.0.0" + get-value@^2.0.3, get-value@^2.0.6: version "2.0.6" resolved "https://registry.yarnpkg.com/get-value/-/get-value-2.0.6.tgz#dc15ca1c672387ca76bd37ac0a395ba2042a2c28" @@ -3717,6 +3741,18 @@ glob@^7.0.0, glob@^7.0.5, glob@^7.1.1, glob@^7.1.2, glob@^7.1.3: once "^1.3.0" path-is-absolute "^1.0.0" +glob@^7.1.4: + version "7.1.6" + resolved "https://registry.yarnpkg.com/glob/-/glob-7.1.6.tgz#141f33b81a7c2492e125594307480c46679278a6" + integrity sha512-LwaxwyZ72Lk7vZINtNNrywX0ZuLyStrdDtabefZKAY5ZGJhVtgdznluResxNmPitE0SAO+O26sWTHeKSI2wMBA== + dependencies: + fs.realpath "^1.0.0" + inflight "^1.0.4" + inherits "2" + minimatch "^3.0.4" + once "^1.3.0" + path-is-absolute "^1.0.0" + globals@^11.1.0, globals@^11.7.0: version "11.8.0" resolved "https://registry.yarnpkg.com/globals/-/globals-11.8.0.tgz#c1ef45ee9bed6badf0663c5cb90e8d1adec1321d" @@ -3732,7 +3768,7 @@ graceful-fs@^4.1.15: resolved "https://registry.yarnpkg.com/graceful-fs/-/graceful-fs-4.1.15.tgz#ffb703e1066e8a0eeaa4c8b80ba9253eeefbfb00" integrity sha512-6uHUhOPEBgQ24HM+r6b/QwWfZq+yiFcipKFrOFiBEnWdy5sdzYoi+pJeQaPI5qOLRFqWmAXUPQNsielzdLoecA== -graceful-fs@^4.2.0: +graceful-fs@^4.2.0, graceful-fs@^4.2.3: version "4.2.3" resolved "https://registry.yarnpkg.com/graceful-fs/-/graceful-fs-4.2.3.tgz#4a12ff1b60376ef09862c2093edd908328be8423" integrity sha512-a30VEBm4PEdx1dRB7MFK7BejejvCvBronbLjht+sHuGYj8PHs7M/5Z+rt5lw551vZ7yfTCj4Vuyy3mSJytDWRQ== @@ -3765,6 +3801,14 @@ har-validator@~5.1.0: ajv "^5.3.0" har-schema "^2.0.0" +har-validator@~5.1.3: + version "5.1.3" + resolved "https://registry.yarnpkg.com/har-validator/-/har-validator-5.1.3.tgz#1ef89ebd3e4996557675eed9893110dc350fa080" + integrity sha512-sNvOCzEQNr/qrvJgc3UG/kD4QtlHycrzwS+6mfTrrSq97BvaYcPZZI1ZSqGSPR73Cxn4LKTD4PttRwfU7jWq5g== + dependencies: + ajv "^6.5.5" + har-schema "^2.0.0" + has-ansi@^2.0.0: version "2.0.0" resolved "https://registry.yarnpkg.com/has-ansi/-/has-ansi-2.0.0.tgz#34f5049ce1ecdf2b0649af3ef24e45ed35416d91" @@ -3840,15 +3884,10 @@ hermes-engine@~0.5.0: resolved "https://registry.yarnpkg.com/hermes-engine/-/hermes-engine-0.5.0.tgz#d914acce72e9657b3c98875ad3f9094d8643f327" integrity sha512-jSuHiOhdh2+IF3bH2gLpQ37eMkdUrEb9GK6PoG3rLRaUDK3Zn2Y9fXM+wyDfoUTA3gz9EET0/IIWk5k21qp4kw== -home-or-tmp@^3.0.0: - version "3.0.0" - resolved "https://registry.yarnpkg.com/home-or-tmp/-/home-or-tmp-3.0.0.tgz#57a8fe24cf33cdd524860a15821ddc25c86671fb" - integrity sha1-V6j+JM8zzdUkhgoVgh3cJchmcfs= - hosted-git-info@^2.1.4: - version "2.7.1" - resolved "https://registry.yarnpkg.com/hosted-git-info/-/hosted-git-info-2.7.1.tgz#97f236977bd6e125408930ff6de3eec6281ec047" - integrity sha512-7T/BxH19zbcCTa8XkMlbK5lTo1WtgkFi3GvdWEyNuc4Vex7/9Dqbnpsf4JMydcfj9HCg4zUWFTL3Za6lapg5/w== + version "2.8.8" + resolved "https://registry.yarnpkg.com/hosted-git-info/-/hosted-git-info-2.8.8.tgz#7539bd4bc1e0e0a895815a2e0262420b12858488" + integrity sha512-f/wzC2QaWBs7t9IYqB4T3sR1xviIViXJRJTWBlx2Gf3g0Xi5vI7Yy4koXQ1c9OYDGHN9sBy1DQ2AB8fqZBWhUg== html-encoding-sniffer@^1.0.2: version "1.0.2" @@ -3881,6 +3920,11 @@ http-signature@~1.2.0: jsprim "^1.2.2" sshpk "^1.7.0" +human-signals@^1.1.1: + version "1.1.1" + resolved "https://registry.yarnpkg.com/human-signals/-/human-signals-1.1.1.tgz#c5b1cd14f50aeae09ab6c59fe63ba3395fe4dfa3" + integrity sha512-SEQu7vl8KjNL2eoGBLF3+wAjpsNfA9XMlXAYj/3EdaNfAlxKthD1xjEQfGOUhllCGGJVNY34bRr6lPINhNjyZw== + iconv-lite@0.4.24, iconv-lite@^0.4.17, iconv-lite@^0.4.4, iconv-lite@~0.4.13: version "0.4.24" resolved "https://registry.yarnpkg.com/iconv-lite/-/iconv-lite-0.4.24.tgz#2022b4b25fbddc21d2f524974a474aafe733908b" @@ -3918,13 +3962,13 @@ import-fresh@^2.0.0: caller-path "^2.0.0" resolve-from "^3.0.0" -import-local@^2.0.0: - version "2.0.0" - resolved "https://registry.yarnpkg.com/import-local/-/import-local-2.0.0.tgz#55070be38a5993cf18ef6db7e961f5bee5c5a09d" - integrity sha512-b6s04m3O+s3CGSbqDIyP4R6aAwAeYlVq9+WUWep6iHa8ETRf9yei1U48C5MmfJmV9AiLYYBKPMq/W+/WRpQmCQ== +import-local@^3.0.2: + version "3.0.2" + resolved "https://registry.yarnpkg.com/import-local/-/import-local-3.0.2.tgz#a8cfd0431d1de4a2199703d003e3e62364fa6db6" + integrity sha512-vjL3+w0oulAVZ0hBHnxa/Nm5TAurf9YLQJDhqRZyqb+VKGOB6LU8t9H1Nr5CIo16vh9XfJTOoHwU0B71S557gA== dependencies: - pkg-dir "^3.0.0" - resolve-cwd "^2.0.0" + pkg-dir "^4.2.0" + resolve-cwd "^3.0.0" imurmurhash@^0.1.4: version "0.1.4" @@ -4005,6 +4049,11 @@ invert-kv@^2.0.0: resolved "https://registry.yarnpkg.com/invert-kv/-/invert-kv-2.0.0.tgz#7393f5afa59ec9ff5f67a27620d11c226e3eec02" integrity sha512-wPVv/y/QQ/Uiirj/vh3oP+1Ww+AWehmi1g5fFWGPF6IpCBCDVrhgHRMvrLfdYcwDh3QJbGXDW4JAuzxElLSqKA== +ip-regex@^2.1.0: + version "2.1.0" + resolved "https://registry.yarnpkg.com/ip-regex/-/ip-regex-2.1.0.tgz#fa78bf5d2e6913c911ce9f819ee5146bb6d844e9" + integrity sha1-+ni/XS5pE8kRzp+BnuUUa7bYROk= + is-accessor-descriptor@^0.1.6: version "0.1.6" resolved "https://registry.yarnpkg.com/is-accessor-descriptor/-/is-accessor-descriptor-0.1.6.tgz#a9e12cb3ae8d876727eeef3843f8a0897b5c98d6" @@ -4029,13 +4078,6 @@ is-buffer@^1.1.5: resolved "https://registry.yarnpkg.com/is-buffer/-/is-buffer-1.1.6.tgz#efaa2ea9daa0d7ab2ea13a97b2b8ad51fefbe8be" integrity sha512-NcdALwpXkTm5Zvvbk7owOUSvVvBKDgKP5/ewfXEznmQFfs4ZRmanOeKBTjRVjka3QFoN6XJ+9F3USqfHqTaU5w== -is-builtin-module@^1.0.0: - version "1.0.0" - resolved "https://registry.yarnpkg.com/is-builtin-module/-/is-builtin-module-1.0.0.tgz#540572d34f7ac3119f8f76c30cbc1b1e037affbe" - integrity sha1-VAVy0096wxGfj3bDDLwbHgN6/74= - dependencies: - builtin-modules "^1.0.0" - is-callable@^1.1.3, is-callable@^1.1.4: version "1.1.4" resolved "https://registry.yarnpkg.com/is-callable/-/is-callable-1.1.4.tgz#1e1adf219e1eeb684d691f9d6a05ff0d30a24d75" @@ -4131,6 +4173,11 @@ is-number@^3.0.0: dependencies: kind-of "^3.0.2" +is-number@^7.0.0: + version "7.0.0" + resolved "https://registry.yarnpkg.com/is-number/-/is-number-7.0.0.tgz#7535345b896734d5f80c4d06c50955527a14f12b" + integrity sha512-41Cifkg6e8TylSpdtTpeLVMqvSBEVzTttHvERD741+pnZ8ANv0004MRL43QKPDlK9cGvNp6NZWZUBlbGXYxxng== + is-plain-object@^2.0.1, is-plain-object@^2.0.3, is-plain-object@^2.0.4: version "2.0.4" resolved "https://registry.yarnpkg.com/is-plain-object/-/is-plain-object-2.0.4.tgz#2c163b3fafb1b606d9d17928f05c2a1c38e07677" @@ -4160,6 +4207,11 @@ is-stream@^1.0.1, is-stream@^1.1.0: resolved "https://registry.yarnpkg.com/is-stream/-/is-stream-1.1.0.tgz#12d4a3dd4e68e0b79ceb8dbc84173ae80d91ca44" integrity sha1-EtSj3U5o4Lec6428hBc66A2RykQ= +is-stream@^2.0.0: + version "2.0.0" + resolved "https://registry.yarnpkg.com/is-stream/-/is-stream-2.0.0.tgz#bde9c32680d6fae04129d6ac9d921ce7815f78e3" + integrity sha512-XCoy+WlUr7d1+Z8GgSuXmpuUFC9fOhRXglJMx+dwLKTkL44Cjd4W1Z5P+BQZpr+cR93aGP4S/s7Ftw6Nd/kiEw== + is-symbol@^1.0.2: version "1.0.2" resolved "https://registry.yarnpkg.com/is-symbol/-/is-symbol-1.0.2.tgz#a055f6ae57192caee329e7a860118b497a950f38" @@ -4167,7 +4219,7 @@ is-symbol@^1.0.2: dependencies: has-symbols "^1.0.0" -is-typedarray@~1.0.0: +is-typedarray@^1.0.0, is-typedarray@~1.0.0: version "1.0.0" resolved "https://registry.yarnpkg.com/is-typedarray/-/is-typedarray-1.0.0.tgz#e479c80858df0c1b11ddda6940f96011fcda4a9a" integrity sha1-5HnICFjfDBsR3dppQPlgEfzaSpo= @@ -4182,6 +4234,11 @@ is-wsl@^1.1.0: resolved "https://registry.npmjs.org/is-wsl/-/is-wsl-1.1.0.tgz#1f16e4aa22b04d1336b66188a66af3c600c3a66d" integrity sha1-HxbkqiKwTRM2tmGIpmrzxgDDpm0= +is-wsl@^2.1.1: + version "2.1.1" + resolved "https://registry.yarnpkg.com/is-wsl/-/is-wsl-2.1.1.tgz#4a1c152d429df3d441669498e2486d3596ebaf1d" + integrity sha512-umZHcSrwlDHo2TGMXv0DZ8dIUGunZ2Iv68YZnrmCiBPkZ4aaOhtv7pXJKeki9k3qJ3RJr0cDyitcl5wEH3AYog== + isarray@1.0.0, isarray@~1.0.0: version "1.0.0" resolved "https://registry.yarnpkg.com/isarray/-/isarray-1.0.0.tgz#bb935d48582cba168c06834957a54a3e07124f11" @@ -4217,162 +4274,158 @@ isstream@~0.1.2: resolved "https://registry.yarnpkg.com/isstream/-/isstream-0.1.2.tgz#47e63f7af55afa6f92e1500e690eb8b8529c099a" integrity sha1-R+Y/evVa+m+S4VAOaQ64uFKcCZo= -istanbul-lib-coverage@^2.0.2, istanbul-lib-coverage@^2.0.3: - version "2.0.3" - resolved "https://registry.yarnpkg.com/istanbul-lib-coverage/-/istanbul-lib-coverage-2.0.3.tgz#0b891e5ad42312c2b9488554f603795f9a2211ba" - integrity sha512-dKWuzRGCs4G+67VfW9pBFFz2Jpi4vSp/k7zBcJ888ofV5Mi1g5CUML5GvMvV6u9Cjybftu+E8Cgp+k0dI1E5lw== +istanbul-lib-coverage@^3.0.0: + version "3.0.0" + resolved "https://registry.yarnpkg.com/istanbul-lib-coverage/-/istanbul-lib-coverage-3.0.0.tgz#f5944a37c70b550b02a78a5c3b2055b280cec8ec" + integrity sha512-UiUIqxMgRDET6eR+o5HbfRYP1l0hqkWOs7vNxC/mggutCMUIhWMm8gAHb8tHlyfD3/l6rlgNA5cKdDzEAf6hEg== -istanbul-lib-instrument@^3.0.0, istanbul-lib-instrument@^3.0.1: - version "3.1.0" - resolved "https://registry.yarnpkg.com/istanbul-lib-instrument/-/istanbul-lib-instrument-3.1.0.tgz#a2b5484a7d445f1f311e93190813fa56dfb62971" - integrity sha512-ooVllVGT38HIk8MxDj/OIHXSYvH+1tq/Vb38s8ixt9GoJadXska4WkGY+0wkmtYCZNYtaARniH/DixUGGLZ0uA== - dependencies: - "@babel/generator" "^7.0.0" - "@babel/parser" "^7.0.0" - "@babel/template" "^7.0.0" - "@babel/traverse" "^7.0.0" - "@babel/types" "^7.0.0" - istanbul-lib-coverage "^2.0.3" - semver "^5.5.0" +istanbul-lib-instrument@^4.0.0: + version "4.0.1" + resolved "https://registry.yarnpkg.com/istanbul-lib-instrument/-/istanbul-lib-instrument-4.0.1.tgz#61f13ac2c96cfefb076fe7131156cc05907874e6" + integrity sha512-imIchxnodll7pvQBYOqUu88EufLCU56LMeFPZZM/fJZ1irYcYdqroaV+ACK1Ila8ls09iEYArp+nqyC6lW1Vfg== + dependencies: + "@babel/core" "^7.7.5" + "@babel/parser" "^7.7.5" + "@babel/template" "^7.7.4" + "@babel/traverse" "^7.7.4" + "@istanbuljs/schema" "^0.1.2" + istanbul-lib-coverage "^3.0.0" + semver "^6.3.0" -istanbul-lib-report@^2.0.4: - version "2.0.4" - resolved "https://registry.yarnpkg.com/istanbul-lib-report/-/istanbul-lib-report-2.0.4.tgz#bfd324ee0c04f59119cb4f07dab157d09f24d7e4" - integrity sha512-sOiLZLAWpA0+3b5w5/dq0cjm2rrNdAfHWaGhmn7XEFW6X++IV9Ohn+pnELAl9K3rfpaeBfbmH9JU5sejacdLeA== +istanbul-lib-report@^3.0.0: + version "3.0.0" + resolved "https://registry.yarnpkg.com/istanbul-lib-report/-/istanbul-lib-report-3.0.0.tgz#7518fe52ea44de372f460a76b5ecda9ffb73d8a6" + integrity sha512-wcdi+uAKzfiGT2abPpKZ0hSU1rGQjUQnLvtY5MpQ7QCTahD3VODhcu4wcfY1YtkGaDD5yuydOLINXsfbus9ROw== dependencies: - istanbul-lib-coverage "^2.0.3" - make-dir "^1.3.0" - supports-color "^6.0.0" + istanbul-lib-coverage "^3.0.0" + make-dir "^3.0.0" + supports-color "^7.1.0" -istanbul-lib-source-maps@^3.0.1: - version "3.0.2" - resolved "https://registry.yarnpkg.com/istanbul-lib-source-maps/-/istanbul-lib-source-maps-3.0.2.tgz#f1e817229a9146e8424a28e5d69ba220fda34156" - integrity sha512-JX4v0CiKTGp9fZPmoxpu9YEkPbEqCqBbO3403VabKjH+NRXo72HafD5UgnjTEqHL2SAjaZK1XDuDOkn6I5QVfQ== +istanbul-lib-source-maps@^4.0.0: + version "4.0.0" + resolved "https://registry.yarnpkg.com/istanbul-lib-source-maps/-/istanbul-lib-source-maps-4.0.0.tgz#75743ce6d96bb86dc7ee4352cf6366a23f0b1ad9" + integrity sha512-c16LpFRkR8vQXyHZ5nLpY35JZtzj1PQY1iZmesUbf1FZHbIupcWfjgOXBY9YHkLEQ6puz1u4Dgj6qmU/DisrZg== dependencies: debug "^4.1.1" - istanbul-lib-coverage "^2.0.3" - make-dir "^1.3.0" - rimraf "^2.6.2" + istanbul-lib-coverage "^3.0.0" source-map "^0.6.1" -istanbul-reports@^2.2.6: - version "2.2.7" - resolved "https://registry.yarnpkg.com/istanbul-reports/-/istanbul-reports-2.2.7.tgz#5d939f6237d7b48393cc0959eab40cd4fd056931" - integrity sha512-uu1F/L1o5Y6LzPVSVZXNOoD/KXpJue9aeLRd0sM9uMXfZvzomB0WxVamWb5ue8kA2vVWEmW7EG+A5n3f1kqHKg== +istanbul-reports@^3.0.2: + version "3.0.2" + resolved "https://registry.yarnpkg.com/istanbul-reports/-/istanbul-reports-3.0.2.tgz#d593210e5000683750cb09fc0644e4b6e27fd53b" + integrity sha512-9tZvz7AiR3PEDNGiV9vIouQ/EAcqMXFmkcA1CDFTwOB98OZVDL0PH9glHotf5Ugp6GCOTypfzGWI/OqjWNCRUw== dependencies: html-escaper "^2.0.0" + istanbul-lib-report "^3.0.0" -jest-changed-files@^24.9.0: - version "24.9.0" - resolved "https://registry.yarnpkg.com/jest-changed-files/-/jest-changed-files-24.9.0.tgz#08d8c15eb79a7fa3fc98269bc14b451ee82f8039" - integrity sha512-6aTWpe2mHF0DhL28WjdkO8LyGjs3zItPET4bMSeXU6T3ub4FPMw+mcOcbdGXQOAfmLcxofD23/5Bl9Z4AkFwqg== +jest-changed-files@^25.4.0: + version "25.4.0" + resolved "https://registry.yarnpkg.com/jest-changed-files/-/jest-changed-files-25.4.0.tgz#e573db32c2fd47d2b90357ea2eda0622c5c5cbd6" + integrity sha512-VR/rfJsEs4BVMkwOTuStRyS630fidFVekdw/lBaBQjx9KK3VZFOZ2c0fsom2fRp8pMCrCTP6LGna00o/DXGlqA== dependencies: - "@jest/types" "^24.9.0" - execa "^1.0.0" - throat "^4.0.0" + "@jest/types" "^25.4.0" + execa "^3.2.0" + throat "^5.0.0" -jest-cli@^24.9.0: - version "24.9.0" - resolved "https://registry.yarnpkg.com/jest-cli/-/jest-cli-24.9.0.tgz#ad2de62d07472d419c6abc301fc432b98b10d2af" - integrity sha512-+VLRKyitT3BWoMeSUIHRxV/2g8y9gw91Jh5z2UmXZzkZKpbC08CSehVxgHUwTpy+HwGcns/tqafQDJW7imYvGg== +jest-cli@^25.4.0: + version "25.4.0" + resolved "https://registry.yarnpkg.com/jest-cli/-/jest-cli-25.4.0.tgz#5dac8be0fece6ce39f0d671395a61d1357322bab" + integrity sha512-usyrj1lzCJZMRN1r3QEdnn8e6E6yCx/QN7+B1sLoA68V7f3WlsxSSQfy0+BAwRiF4Hz2eHauf11GZG3PIfWTXQ== dependencies: - "@jest/core" "^24.9.0" - "@jest/test-result" "^24.9.0" - "@jest/types" "^24.9.0" - chalk "^2.0.1" + "@jest/core" "^25.4.0" + "@jest/test-result" "^25.4.0" + "@jest/types" "^25.4.0" + chalk "^3.0.0" exit "^0.1.2" - import-local "^2.0.0" + import-local "^3.0.2" is-ci "^2.0.0" - jest-config "^24.9.0" - jest-util "^24.9.0" - jest-validate "^24.9.0" + jest-config "^25.4.0" + jest-util "^25.4.0" + jest-validate "^25.4.0" prompts "^2.0.1" - realpath-native "^1.1.0" - yargs "^13.3.0" + realpath-native "^2.0.0" + yargs "^15.3.1" -jest-config@^24.9.0: - version "24.9.0" - resolved "https://registry.yarnpkg.com/jest-config/-/jest-config-24.9.0.tgz#fb1bbc60c73a46af03590719efa4825e6e4dd1b5" - integrity sha512-RATtQJtVYQrp7fvWg6f5y3pEFj9I+H8sWw4aKxnDZ96mob5i5SD6ZEGWgMLXQ4LE8UurrjbdlLWdUeo+28QpfQ== +jest-config@^25.4.0: + version "25.4.0" + resolved "https://registry.yarnpkg.com/jest-config/-/jest-config-25.4.0.tgz#56e5df3679a96ff132114b44fb147389c8c0a774" + integrity sha512-egT9aKYxMyMSQV1aqTgam0SkI5/I2P9qrKexN5r2uuM2+68ypnc+zPGmfUxK7p1UhE7dYH9SLBS7yb+TtmT1AA== dependencies: "@babel/core" "^7.1.0" - "@jest/test-sequencer" "^24.9.0" - "@jest/types" "^24.9.0" - babel-jest "^24.9.0" - chalk "^2.0.1" + "@jest/test-sequencer" "^25.4.0" + "@jest/types" "^25.4.0" + babel-jest "^25.4.0" + chalk "^3.0.0" + deepmerge "^4.2.2" glob "^7.1.1" - jest-environment-jsdom "^24.9.0" - jest-environment-node "^24.9.0" - jest-get-type "^24.9.0" - jest-jasmine2 "^24.9.0" - jest-regex-util "^24.3.0" - jest-resolve "^24.9.0" - jest-util "^24.9.0" - jest-validate "^24.9.0" - micromatch "^3.1.10" - pretty-format "^24.9.0" - realpath-native "^1.1.0" - -jest-diff@^24.9.0: - version "24.9.0" - resolved "https://registry.yarnpkg.com/jest-diff/-/jest-diff-24.9.0.tgz#931b7d0d5778a1baf7452cb816e325e3724055da" - integrity sha512-qMfrTs8AdJE2iqrTp0hzh7kTd2PQWrsFyj9tORoKmu32xjPjeE4NyjVRDz8ybYwqS2ik8N4hsIpiVTyFeo2lBQ== + jest-environment-jsdom "^25.4.0" + jest-environment-node "^25.4.0" + jest-get-type "^25.2.6" + jest-jasmine2 "^25.4.0" + jest-regex-util "^25.2.6" + jest-resolve "^25.4.0" + jest-util "^25.4.0" + jest-validate "^25.4.0" + micromatch "^4.0.2" + pretty-format "^25.4.0" + realpath-native "^2.0.0" + +jest-diff@^25.4.0: + version "25.4.0" + resolved "https://registry.yarnpkg.com/jest-diff/-/jest-diff-25.4.0.tgz#260b70f19a46c283adcad7f081cae71eb784a634" + integrity sha512-kklLbJVXW0y8UKOWOdYhI6TH5MG6QAxrWiBMgQaPIuhj3dNFGirKCd+/xfplBXICQ7fI+3QcqHm9p9lWu1N6ug== dependencies: - chalk "^2.0.1" - diff-sequences "^24.9.0" - jest-get-type "^24.9.0" - pretty-format "^24.9.0" + chalk "^3.0.0" + diff-sequences "^25.2.6" + jest-get-type "^25.2.6" + pretty-format "^25.4.0" jest-docblock@^21.0.0: version "21.2.0" resolved "https://registry.yarnpkg.com/jest-docblock/-/jest-docblock-21.2.0.tgz#51529c3b30d5fd159da60c27ceedc195faf8d414" integrity sha512-5IZ7sY9dBAYSV+YjQ0Ovb540Ku7AO9Z5o2Cg789xj167iQuZ2cG+z0f3Uct6WeYLbU6aQiM2pCs7sZ+4dotydw== -jest-docblock@^24.3.0: - version "24.3.0" - resolved "https://registry.yarnpkg.com/jest-docblock/-/jest-docblock-24.3.0.tgz#b9c32dac70f72e4464520d2ba4aec02ab14db5dd" - integrity sha512-nlANmF9Yq1dufhFlKG9rasfQlrY7wINJbo3q01tu56Jv5eBU5jirylhF2O5ZBnLxzOVBGRDz/9NAwNyBtG4Nyg== - dependencies: - detect-newline "^2.1.0" - -jest-each@^24.9.0: - version "24.9.0" - resolved "https://registry.yarnpkg.com/jest-each/-/jest-each-24.9.0.tgz#eb2da602e2a610898dbc5f1f6df3ba86b55f8b05" - integrity sha512-ONi0R4BvW45cw8s2Lrx8YgbeXL1oCQ/wIDwmsM3CqM/nlblNCPmnC3IPQlMbRFZu3wKdQ2U8BqM6lh3LJ5Bsog== - dependencies: - "@jest/types" "^24.9.0" - chalk "^2.0.1" - jest-get-type "^24.9.0" - jest-util "^24.9.0" - pretty-format "^24.9.0" - -jest-environment-jsdom@^24.9.0: - version "24.9.0" - resolved "https://registry.yarnpkg.com/jest-environment-jsdom/-/jest-environment-jsdom-24.9.0.tgz#4b0806c7fc94f95edb369a69cc2778eec2b7375b" - integrity sha512-Zv9FV9NBRzLuALXjvRijO2351DRQeLYXtpD4xNvfoVFw21IOKNhZAEUKcbiEtjTkm2GsJ3boMVgkaR7rN8qetA== +jest-docblock@^25.3.0: + version "25.3.0" + resolved "https://registry.yarnpkg.com/jest-docblock/-/jest-docblock-25.3.0.tgz#8b777a27e3477cd77a168c05290c471a575623ef" + integrity sha512-aktF0kCar8+zxRHxQZwxMy70stc9R1mOmrLsT5VO3pIT0uzGRSDAXxSlz4NqQWpuLjPpuMhPRl7H+5FRsvIQAg== dependencies: - "@jest/environment" "^24.9.0" - "@jest/fake-timers" "^24.9.0" - "@jest/types" "^24.9.0" - jest-mock "^24.9.0" - jest-util "^24.9.0" - jsdom "^11.5.1" + detect-newline "^3.0.0" -jest-environment-node@^24.9.0: - version "24.9.0" - resolved "https://registry.yarnpkg.com/jest-environment-node/-/jest-environment-node-24.9.0.tgz#333d2d2796f9687f2aeebf0742b519f33c1cbfd3" - integrity sha512-6d4V2f4nxzIzwendo27Tr0aFm+IXWa0XEUnaH6nU0FMaozxovt+sfRvh4J47wL1OvF83I3SSTu0XK+i4Bqe7uA== +jest-each@^25.4.0: + version "25.4.0" + resolved "https://registry.yarnpkg.com/jest-each/-/jest-each-25.4.0.tgz#ad4e46164764e8e77058f169a0076a7f86f6b7d4" + integrity sha512-lwRIJ8/vQU/6vq3nnSSUw1Y3nz5tkYSFIywGCZpUBd6WcRgpn8NmJoQICojbpZmsJOJNHm0BKdyuJ6Xdx+eDQQ== dependencies: - "@jest/environment" "^24.9.0" - "@jest/fake-timers" "^24.9.0" - "@jest/types" "^24.9.0" - jest-mock "^24.9.0" - jest-util "^24.9.0" - -jest-get-type@^24.0.0: - version "24.0.0" - resolved "https://registry.yarnpkg.com/jest-get-type/-/jest-get-type-24.0.0.tgz#36e72930b78e33da59a4f63d44d332188278940b" - integrity sha512-z6/Eyf6s9ZDGz7eOvl+fzpuJmN9i0KyTt1no37/dHu8galssxz5ZEgnc1KaV8R31q1khxyhB4ui/X5ZjjPk77w== + "@jest/types" "^25.4.0" + chalk "^3.0.0" + jest-get-type "^25.2.6" + jest-util "^25.4.0" + pretty-format "^25.4.0" + +jest-environment-jsdom@^25.4.0: + version "25.4.0" + resolved "https://registry.yarnpkg.com/jest-environment-jsdom/-/jest-environment-jsdom-25.4.0.tgz#bbfc7f85bb6ade99089062a830c79cb454565cf0" + integrity sha512-KTitVGMDrn2+pt7aZ8/yUTuS333w3pWt1Mf88vMntw7ZSBNDkRS6/4XLbFpWXYfWfp1FjcjQTOKzbK20oIehWQ== + dependencies: + "@jest/environment" "^25.4.0" + "@jest/fake-timers" "^25.4.0" + "@jest/types" "^25.4.0" + jest-mock "^25.4.0" + jest-util "^25.4.0" + jsdom "^15.2.1" + +jest-environment-node@^25.4.0: + version "25.4.0" + resolved "https://registry.yarnpkg.com/jest-environment-node/-/jest-environment-node-25.4.0.tgz#188aef01ae6418e001c03fdd1c299961e1439082" + integrity sha512-wryZ18vsxEAKFH7Z74zi/y/SyI1j6UkVZ6QsllBuT/bWlahNfQjLNwFsgh/5u7O957dYFoXj4yfma4n4X6kU9A== + dependencies: + "@jest/environment" "^25.4.0" + "@jest/fake-timers" "^25.4.0" + "@jest/types" "^25.4.0" + jest-mock "^25.4.0" + jest-util "^25.4.0" + semver "^6.3.0" jest-get-type@^24.3.0: version "24.3.0" @@ -4384,6 +4437,11 @@ jest-get-type@^24.9.0: resolved "https://registry.yarnpkg.com/jest-get-type/-/jest-get-type-24.9.0.tgz#1684a0c8a50f2e4901b6644ae861f579eed2ef0e" integrity sha512-lUseMzAley4LhIcpSP9Jf+fTrQ4a1yHQwLNeeVa2cEmbCGeoZAtYPOIv8JaxLD/sUpKxetKGP+gsHl8f8TSj8Q== +jest-get-type@^25.2.6: + version "25.2.6" + resolved "https://registry.yarnpkg.com/jest-get-type/-/jest-get-type-25.2.6.tgz#0b0a32fab8908b44d508be81681487dbabb8d877" + integrity sha512-DxjtyzOHjObRM+sM1knti6or+eOgcGU4xVSb2HNP1TqO4ahsT+rqZg+nyqHWJSvWgKC5cG3QjGFBqxLghiF/Ig== + jest-haste-map@^24.7.1: version "24.8.1" resolved "https://registry.yarnpkg.com/jest-haste-map/-/jest-haste-map-24.8.1.tgz#f39cc1d2b1d907e014165b4bd5a957afcb992982" @@ -4403,74 +4461,76 @@ jest-haste-map@^24.7.1: optionalDependencies: fsevents "^1.2.7" -jest-haste-map@^24.9.0: - version "24.9.0" - resolved "https://registry.yarnpkg.com/jest-haste-map/-/jest-haste-map-24.9.0.tgz#b38a5d64274934e21fa417ae9a9fbeb77ceaac7d" - integrity sha512-kfVFmsuWui2Sj1Rp1AJ4D9HqJwE4uwTlS/vO+eRUaMmd54BFpli2XhMQnPC2k4cHFVbB2Q2C+jtI1AGLgEnCjQ== +jest-haste-map@^25.4.0: + version "25.4.0" + resolved "https://registry.yarnpkg.com/jest-haste-map/-/jest-haste-map-25.4.0.tgz#da7c309dd7071e0a80c953ba10a0ec397efb1ae2" + integrity sha512-5EoCe1gXfGC7jmXbKzqxESrgRcaO3SzWXGCnvp9BcT0CFMyrB1Q6LIsjl9RmvmJGQgW297TCfrdgiy574Rl9HQ== dependencies: - "@jest/types" "^24.9.0" - anymatch "^2.0.0" + "@jest/types" "^25.4.0" + anymatch "^3.0.3" fb-watchman "^2.0.0" - graceful-fs "^4.1.15" - invariant "^2.2.4" - jest-serializer "^24.9.0" - jest-util "^24.9.0" - jest-worker "^24.9.0" - micromatch "^3.1.10" + graceful-fs "^4.2.3" + jest-serializer "^25.2.6" + jest-util "^25.4.0" + jest-worker "^25.4.0" + micromatch "^4.0.2" sane "^4.0.3" walker "^1.0.7" + which "^2.0.2" optionalDependencies: - fsevents "^1.2.7" + fsevents "^2.1.2" -jest-jasmine2@^24.9.0: - version "24.9.0" - resolved "https://registry.yarnpkg.com/jest-jasmine2/-/jest-jasmine2-24.9.0.tgz#1f7b1bd3242c1774e62acabb3646d96afc3be6a0" - integrity sha512-Cq7vkAgaYKp+PsX+2/JbTarrk0DmNhsEtqBXNwUHkdlbrTBLtMJINADf2mf5FkowNsq8evbPc07/qFO0AdKTzw== +jest-jasmine2@^25.4.0: + version "25.4.0" + resolved "https://registry.yarnpkg.com/jest-jasmine2/-/jest-jasmine2-25.4.0.tgz#3d3d19514022e2326e836c2b66d68b4cb63c5861" + integrity sha512-QccxnozujVKYNEhMQ1vREiz859fPN/XklOzfQjm2j9IGytAkUbSwjFRBtQbHaNZ88cItMpw02JnHGsIdfdpwxQ== dependencies: "@babel/traverse" "^7.1.0" - "@jest/environment" "^24.9.0" - "@jest/test-result" "^24.9.0" - "@jest/types" "^24.9.0" - chalk "^2.0.1" + "@jest/environment" "^25.4.0" + "@jest/source-map" "^25.2.6" + "@jest/test-result" "^25.4.0" + "@jest/types" "^25.4.0" + chalk "^3.0.0" co "^4.6.0" - expect "^24.9.0" + expect "^25.4.0" is-generator-fn "^2.0.0" - jest-each "^24.9.0" - jest-matcher-utils "^24.9.0" - jest-message-util "^24.9.0" - jest-runtime "^24.9.0" - jest-snapshot "^24.9.0" - jest-util "^24.9.0" - pretty-format "^24.9.0" - throat "^4.0.0" - -jest-junit@^6.3.0: - version "6.3.0" - resolved "https://registry.yarnpkg.com/jest-junit/-/jest-junit-6.3.0.tgz#99e64ebc54eddcb21238f0cc49f5820c89a8c785" - integrity sha512-3PH9UkpaomX6CUzqjlnk0m4yBCW/eroxV6v61OM6LkCQFO848P3YUhfIzu8ypZSBKB3vvCbB4WaLTKT0BrIf8A== + jest-each "^25.4.0" + jest-matcher-utils "^25.4.0" + jest-message-util "^25.4.0" + jest-runtime "^25.4.0" + jest-snapshot "^25.4.0" + jest-util "^25.4.0" + pretty-format "^25.4.0" + throat "^5.0.0" + +jest-junit@^10.0.0: + version "10.0.0" + resolved "https://registry.yarnpkg.com/jest-junit/-/jest-junit-10.0.0.tgz#c94b91c24920a327c9d2a075e897b2dba4af494b" + integrity sha512-dbOVRyxHprdSpwSAR9/YshLwmnwf+RSl5hf0kCGlhAcEeZY9aRqo4oNmaT0tLC16Zy9D0zekDjWkjHGjXlglaQ== dependencies: - jest-validate "^24.0.0" + jest-validate "^24.9.0" mkdirp "^0.5.1" - strip-ansi "^4.0.0" + strip-ansi "^5.2.0" + uuid "^3.3.3" xml "^1.0.1" -jest-leak-detector@^24.9.0: - version "24.9.0" - resolved "https://registry.yarnpkg.com/jest-leak-detector/-/jest-leak-detector-24.9.0.tgz#b665dea7c77100c5c4f7dfcb153b65cf07dcf96a" - integrity sha512-tYkFIDsiKTGwb2FG1w8hX9V0aUb2ot8zY/2nFg087dUageonw1zrLMP4W6zsRO59dPkTSKie+D4rhMuP9nRmrA== +jest-leak-detector@^25.4.0: + version "25.4.0" + resolved "https://registry.yarnpkg.com/jest-leak-detector/-/jest-leak-detector-25.4.0.tgz#cf94a160c78e53d810e7b2f40b5fd7ee263375b3" + integrity sha512-7Y6Bqfv2xWsB+7w44dvZuLs5SQ//fzhETgOGG7Gq3TTGFdYvAgXGwV8z159RFZ6fXiCPm/szQ90CyfVos9JIFQ== dependencies: - jest-get-type "^24.9.0" - pretty-format "^24.9.0" + jest-get-type "^25.2.6" + pretty-format "^25.4.0" -jest-matcher-utils@^24.9.0: - version "24.9.0" - resolved "https://registry.yarnpkg.com/jest-matcher-utils/-/jest-matcher-utils-24.9.0.tgz#f5b3661d5e628dffe6dd65251dfdae0e87c3a073" - integrity sha512-OZz2IXsu6eaiMAwe67c1T+5tUAtQyQx27/EMEkbFAGiw52tB9em+uGbzpcgYVpA8wl0hlxKPZxrly4CXU/GjHA== +jest-matcher-utils@^25.4.0: + version "25.4.0" + resolved "https://registry.yarnpkg.com/jest-matcher-utils/-/jest-matcher-utils-25.4.0.tgz#dc3e7aec402a1e567ed80b572b9ad285878895e6" + integrity sha512-yPMdtj7YDgXhnGbc66bowk8AkQ0YwClbbwk3Kzhn5GVDrciiCr27U4NJRbrqXbTdtxjImONITg2LiRIw650k5A== dependencies: - chalk "^2.0.1" - jest-diff "^24.9.0" - jest-get-type "^24.9.0" - pretty-format "^24.9.0" + chalk "^3.0.0" + jest-diff "^25.4.0" + jest-get-type "^25.2.6" + pretty-format "^25.4.0" jest-message-util@^24.8.0: version "24.8.0" @@ -4486,18 +4546,17 @@ jest-message-util@^24.8.0: slash "^2.0.0" stack-utils "^1.0.1" -jest-message-util@^24.9.0: - version "24.9.0" - resolved "https://registry.yarnpkg.com/jest-message-util/-/jest-message-util-24.9.0.tgz#527f54a1e380f5e202a8d1149b0ec872f43119e3" - integrity sha512-oCj8FiZ3U0hTP4aSui87P4L4jC37BtQwUMqk+zk/b11FR19BJDeZsZAvIHutWnmtw7r85UmR3CEWZ0HWU2mAlw== +jest-message-util@^25.4.0: + version "25.4.0" + resolved "https://registry.yarnpkg.com/jest-message-util/-/jest-message-util-25.4.0.tgz#2899e8bc43f5317acf8dfdfe89ea237d354fcdab" + integrity sha512-LYY9hRcVGgMeMwmdfh9tTjeux1OjZHMusq/E5f3tJN+dAoVVkJtq5ZUEPIcB7bpxDUt2zjUsrwg0EGgPQ+OhXQ== dependencies: "@babel/code-frame" "^7.0.0" - "@jest/test-result" "^24.9.0" - "@jest/types" "^24.9.0" + "@jest/types" "^25.4.0" "@types/stack-utils" "^1.0.1" - chalk "^2.0.1" - micromatch "^3.1.10" - slash "^2.0.0" + chalk "^3.0.0" + micromatch "^4.0.2" + slash "^3.0.0" stack-utils "^1.0.1" jest-mock@^24.8.0: @@ -4507,130 +4566,131 @@ jest-mock@^24.8.0: dependencies: "@jest/types" "^24.8.0" -jest-mock@^24.9.0: - version "24.9.0" - resolved "https://registry.yarnpkg.com/jest-mock/-/jest-mock-24.9.0.tgz#c22835541ee379b908673ad51087a2185c13f1c6" - integrity sha512-3BEYN5WbSq9wd+SyLDES7AHnjH9A/ROBwmz7l2y+ol+NtSFO8DYiEBzoO1CeFc9a8DYy10EO4dDFVv/wN3zl1w== +jest-mock@^25.4.0: + version "25.4.0" + resolved "https://registry.yarnpkg.com/jest-mock/-/jest-mock-25.4.0.tgz#ded7d64b5328d81d78d2138c825d3a45e30ec8ca" + integrity sha512-MdazSfcYAUjJjuVTTnusLPzE0pE4VXpOUzWdj8sbM+q6abUjm3bATVPXFqTXrxSieR8ocpvQ9v/QaQCftioQFg== dependencies: - "@jest/types" "^24.9.0" + "@jest/types" "^25.4.0" jest-pnp-resolver@^1.2.1: version "1.2.1" resolved "https://registry.yarnpkg.com/jest-pnp-resolver/-/jest-pnp-resolver-1.2.1.tgz#ecdae604c077a7fbc70defb6d517c3c1c898923a" integrity sha512-pgFw2tm54fzgYvc/OHrnysABEObZCUNFnhjoRjaVOCN8NYc032/gVjPaHD4Aq6ApkSieWtfKAFQtmDKAmhupnQ== -jest-regex-util@^24.3.0: - version "24.3.0" - resolved "https://registry.yarnpkg.com/jest-regex-util/-/jest-regex-util-24.3.0.tgz#d5a65f60be1ae3e310d5214a0307581995227b36" - integrity sha512-tXQR1NEOyGlfylyEjg1ImtScwMq8Oh3iJbGTjN7p0J23EuVX1MA8rwU69K4sLbCmwzgCUbVkm0FkSF9TdzOhtg== - -jest-regex-util@^24.9.0: - version "24.9.0" - resolved "https://registry.yarnpkg.com/jest-regex-util/-/jest-regex-util-24.9.0.tgz#c13fb3380bde22bf6575432c493ea8fe37965636" - integrity sha512-05Cmb6CuxaA+Ys6fjr3PhvV3bGQmO+2p2La4hFbU+W5uOc479f7FdLXUWXw4pYMAhhSZIuKHwSXSu6CsSBAXQA== +jest-regex-util@^25.2.6: + version "25.2.6" + resolved "https://registry.yarnpkg.com/jest-regex-util/-/jest-regex-util-25.2.6.tgz#d847d38ba15d2118d3b06390056028d0f2fd3964" + integrity sha512-KQqf7a0NrtCkYmZZzodPftn7fL1cq3GQAFVMn5Hg8uKx/fIenLEobNanUxb7abQ1sjADHBseG/2FGpsv/wr+Qw== -jest-resolve-dependencies@^24.9.0: - version "24.9.0" - resolved "https://registry.yarnpkg.com/jest-resolve-dependencies/-/jest-resolve-dependencies-24.9.0.tgz#ad055198959c4cfba8a4f066c673a3f0786507ab" - integrity sha512-Fm7b6AlWnYhT0BXy4hXpactHIqER7erNgIsIozDXWl5dVm+k8XdGVe1oTg1JyaFnOxarMEbax3wyRJqGP2Pq+g== +jest-resolve-dependencies@^25.4.0: + version "25.4.0" + resolved "https://registry.yarnpkg.com/jest-resolve-dependencies/-/jest-resolve-dependencies-25.4.0.tgz#783937544cfc40afcc7c569aa54748c4b3f83f5a" + integrity sha512-A0eoZXx6kLiuG1Ui7wITQPl04HwjLErKIJTt8GR3c7UoDAtzW84JtCrgrJ6Tkw6c6MwHEyAaLk7dEPml5pf48A== dependencies: - "@jest/types" "^24.9.0" - jest-regex-util "^24.3.0" - jest-snapshot "^24.9.0" + "@jest/types" "^25.4.0" + jest-regex-util "^25.2.6" + jest-snapshot "^25.4.0" -jest-resolve@^24.9.0: - version "24.9.0" - resolved "https://registry.yarnpkg.com/jest-resolve/-/jest-resolve-24.9.0.tgz#dff04c7687af34c4dd7e524892d9cf77e5d17321" - integrity sha512-TaLeLVL1l08YFZAt3zaPtjiVvyy4oSA6CRe+0AFPPVX3Q/VI0giIWWoAvoS5L96vj9Dqxj4fB5p2qrHCmTU/MQ== +jest-resolve@^25.4.0: + version "25.4.0" + resolved "https://registry.yarnpkg.com/jest-resolve/-/jest-resolve-25.4.0.tgz#6f4540ce0d419c4c720e791e871da32ba4da7a60" + integrity sha512-wOsKqVDFWUiv8BtLMCC6uAJ/pHZkfFgoBTgPtmYlsprAjkxrr2U++ZnB3l5ykBMd2O24lXvf30SMAjJIW6k2aA== dependencies: - "@jest/types" "^24.9.0" + "@jest/types" "^25.4.0" browser-resolve "^1.11.3" - chalk "^2.0.1" + chalk "^3.0.0" jest-pnp-resolver "^1.2.1" - realpath-native "^1.1.0" + read-pkg-up "^7.0.1" + realpath-native "^2.0.0" + resolve "^1.15.1" + slash "^3.0.0" -jest-runner@^24.9.0: - version "24.9.0" - resolved "https://registry.yarnpkg.com/jest-runner/-/jest-runner-24.9.0.tgz#574fafdbd54455c2b34b4bdf4365a23857fcdf42" - integrity sha512-KksJQyI3/0mhcfspnxxEOBueGrd5E4vV7ADQLT9ESaCzz02WnbdbKWIf5Mkaucoaj7obQckYPVX6JJhgUcoWWg== +jest-runner@^25.4.0: + version "25.4.0" + resolved "https://registry.yarnpkg.com/jest-runner/-/jest-runner-25.4.0.tgz#6ca4a3d52e692bbc081228fa68f750012f1f29e5" + integrity sha512-wWQSbVgj2e/1chFdMRKZdvlmA6p1IPujhpLT7TKNtCSl1B0PGBGvJjCaiBal/twaU2yfk8VKezHWexM8IliBfA== dependencies: - "@jest/console" "^24.7.1" - "@jest/environment" "^24.9.0" - "@jest/test-result" "^24.9.0" - "@jest/types" "^24.9.0" - chalk "^2.4.2" + "@jest/console" "^25.4.0" + "@jest/environment" "^25.4.0" + "@jest/test-result" "^25.4.0" + "@jest/types" "^25.4.0" + chalk "^3.0.0" exit "^0.1.2" - graceful-fs "^4.1.15" - jest-config "^24.9.0" - jest-docblock "^24.3.0" - jest-haste-map "^24.9.0" - jest-jasmine2 "^24.9.0" - jest-leak-detector "^24.9.0" - jest-message-util "^24.9.0" - jest-resolve "^24.9.0" - jest-runtime "^24.9.0" - jest-util "^24.9.0" - jest-worker "^24.6.0" + graceful-fs "^4.2.3" + jest-config "^25.4.0" + jest-docblock "^25.3.0" + jest-haste-map "^25.4.0" + jest-jasmine2 "^25.4.0" + jest-leak-detector "^25.4.0" + jest-message-util "^25.4.0" + jest-resolve "^25.4.0" + jest-runtime "^25.4.0" + jest-util "^25.4.0" + jest-worker "^25.4.0" source-map-support "^0.5.6" - throat "^4.0.0" - -jest-runtime@^24.9.0: - version "24.9.0" - resolved "https://registry.yarnpkg.com/jest-runtime/-/jest-runtime-24.9.0.tgz#9f14583af6a4f7314a6a9d9f0226e1a781c8e4ac" - integrity sha512-8oNqgnmF3v2J6PVRM2Jfuj8oX3syKmaynlDMMKQ4iyzbQzIG6th5ub/lM2bCMTmoTKM3ykcUYI2Pw9xwNtjMnw== - dependencies: - "@jest/console" "^24.7.1" - "@jest/environment" "^24.9.0" - "@jest/source-map" "^24.3.0" - "@jest/transform" "^24.9.0" - "@jest/types" "^24.9.0" - "@types/yargs" "^13.0.0" - chalk "^2.0.1" + throat "^5.0.0" + +jest-runtime@^25.4.0: + version "25.4.0" + resolved "https://registry.yarnpkg.com/jest-runtime/-/jest-runtime-25.4.0.tgz#1e5227a9e2159d26ae27dcd426ca6bc041983439" + integrity sha512-lgNJlCDULtXu9FumnwCyWlOub8iytijwsPNa30BKrSNtgoT6NUMXOPrZvsH06U6v0wgD/Igwz13nKA2wEKU2VA== + dependencies: + "@jest/console" "^25.4.0" + "@jest/environment" "^25.4.0" + "@jest/source-map" "^25.2.6" + "@jest/test-result" "^25.4.0" + "@jest/transform" "^25.4.0" + "@jest/types" "^25.4.0" + "@types/yargs" "^15.0.0" + chalk "^3.0.0" + collect-v8-coverage "^1.0.0" exit "^0.1.2" glob "^7.1.3" - graceful-fs "^4.1.15" - jest-config "^24.9.0" - jest-haste-map "^24.9.0" - jest-message-util "^24.9.0" - jest-mock "^24.9.0" - jest-regex-util "^24.3.0" - jest-resolve "^24.9.0" - jest-snapshot "^24.9.0" - jest-util "^24.9.0" - jest-validate "^24.9.0" - realpath-native "^1.1.0" - slash "^2.0.0" - strip-bom "^3.0.0" - yargs "^13.3.0" + graceful-fs "^4.2.3" + jest-config "^25.4.0" + jest-haste-map "^25.4.0" + jest-message-util "^25.4.0" + jest-mock "^25.4.0" + jest-regex-util "^25.2.6" + jest-resolve "^25.4.0" + jest-snapshot "^25.4.0" + jest-util "^25.4.0" + jest-validate "^25.4.0" + realpath-native "^2.0.0" + slash "^3.0.0" + strip-bom "^4.0.0" + yargs "^15.3.1" jest-serializer@^24.4.0: version "24.4.0" resolved "https://registry.yarnpkg.com/jest-serializer/-/jest-serializer-24.4.0.tgz#f70c5918c8ea9235ccb1276d232e459080588db3" integrity sha512-k//0DtglVstc1fv+GY/VHDIjrtNjdYvYjMlbLUed4kxrE92sIUewOi5Hj3vrpB8CXfkJntRPDRjCrCvUhBdL8Q== -jest-serializer@^24.9.0: - version "24.9.0" - resolved "https://registry.yarnpkg.com/jest-serializer/-/jest-serializer-24.9.0.tgz#e6d7d7ef96d31e8b9079a714754c5d5c58288e73" - integrity sha512-DxYipDr8OvfrKH3Kel6NdED3OXxjvxXZ1uIY2I9OFbGg+vUkkg7AGvi65qbhbWNPvDckXmzMPbK3u3HaDO49bQ== +jest-serializer@^25.2.6: + version "25.2.6" + resolved "https://registry.yarnpkg.com/jest-serializer/-/jest-serializer-25.2.6.tgz#3bb4cc14fe0d8358489dbbefbb8a4e708ce039b7" + integrity sha512-RMVCfZsezQS2Ww4kB5HJTMaMJ0asmC0BHlnobQC6yEtxiFKIxohFA4QSXSabKwSggaNkqxn6Z2VwdFCjhUWuiQ== -jest-snapshot@^24.9.0: - version "24.9.0" - resolved "https://registry.yarnpkg.com/jest-snapshot/-/jest-snapshot-24.9.0.tgz#ec8e9ca4f2ec0c5c87ae8f925cf97497b0e951ba" - integrity sha512-uI/rszGSs73xCM0l+up7O7a40o90cnrk429LOiK3aeTvfC0HHmldbd81/B7Ix81KSFe1lwkbl7GnBGG4UfuDew== +jest-snapshot@^25.4.0: + version "25.4.0" + resolved "https://registry.yarnpkg.com/jest-snapshot/-/jest-snapshot-25.4.0.tgz#e0b26375e2101413fd2ccb4278a5711b1922545c" + integrity sha512-J4CJ0X2SaGheYRZdLz9CRHn9jUknVmlks4UBeu270hPAvdsauFXOhx9SQP2JtRzhnR3cvro/9N9KP83/uvFfRg== dependencies: "@babel/types" "^7.0.0" - "@jest/types" "^24.9.0" - chalk "^2.0.1" - expect "^24.9.0" - jest-diff "^24.9.0" - jest-get-type "^24.9.0" - jest-matcher-utils "^24.9.0" - jest-message-util "^24.9.0" - jest-resolve "^24.9.0" - mkdirp "^0.5.1" + "@jest/types" "^25.4.0" + "@types/prettier" "^1.19.0" + chalk "^3.0.0" + expect "^25.4.0" + jest-diff "^25.4.0" + jest-get-type "^25.2.6" + jest-matcher-utils "^25.4.0" + jest-message-util "^25.4.0" + jest-resolve "^25.4.0" + make-dir "^3.0.0" natural-compare "^1.4.0" - pretty-format "^24.9.0" - semver "^6.2.0" + pretty-format "^25.4.0" + semver "^6.3.0" jest-util@^24.8.0: version "24.8.0" @@ -4650,34 +4710,15 @@ jest-util@^24.8.0: slash "^2.0.0" source-map "^0.6.0" -jest-util@^24.9.0: - version "24.9.0" - resolved "https://registry.yarnpkg.com/jest-util/-/jest-util-24.9.0.tgz#7396814e48536d2e85a37de3e4c431d7cb140162" - integrity sha512-x+cZU8VRmOJxbA1K5oDBdxQmdq0OIdADarLxk0Mq+3XS4jgvhG/oKGWcIDCtPG0HgjxOYvF+ilPJQsAyXfbNOg== +jest-util@^25.4.0: + version "25.4.0" + resolved "https://registry.yarnpkg.com/jest-util/-/jest-util-25.4.0.tgz#6a093d09d86d2b41ef583e5fe7dd3976346e1acd" + integrity sha512-WSZD59sBtAUjLv1hMeKbNZXmMcrLRWcYqpO8Dz8b4CeCTZpfNQw2q9uwrYAD+BbJoLJlu4ezVPwtAmM/9/SlZA== dependencies: - "@jest/console" "^24.9.0" - "@jest/fake-timers" "^24.9.0" - "@jest/source-map" "^24.9.0" - "@jest/test-result" "^24.9.0" - "@jest/types" "^24.9.0" - callsites "^3.0.0" - chalk "^2.0.1" - graceful-fs "^4.1.15" + "@jest/types" "^25.4.0" + chalk "^3.0.0" is-ci "^2.0.0" - mkdirp "^0.5.1" - slash "^2.0.0" - source-map "^0.6.0" - -jest-validate@^24.0.0: - version "24.0.0" - resolved "https://registry.yarnpkg.com/jest-validate/-/jest-validate-24.0.0.tgz#aa8571a46983a6538328fef20406b4a496b6c020" - integrity sha512-vMrKrTOP4BBFIeOWsjpsDgVXATxCspC9S1gqvbJ3Tnn/b9ACsJmteYeVx9830UMV28Cob1RX55x96Qq3Tfad4g== - dependencies: - camelcase "^5.0.0" - chalk "^2.0.1" - jest-get-type "^24.0.0" - leven "^2.1.0" - pretty-format "^24.0.0" + make-dir "^3.0.0" jest-validate@^24.7.0: version "24.7.0" @@ -4703,18 +4744,29 @@ jest-validate@^24.9.0: leven "^3.1.0" pretty-format "^24.9.0" -jest-watcher@^24.9.0: - version "24.9.0" - resolved "https://registry.yarnpkg.com/jest-watcher/-/jest-watcher-24.9.0.tgz#4b56e5d1ceff005f5b88e528dc9afc8dd4ed2b3b" - integrity sha512-+/fLOfKPXXYJDYlks62/4R4GoT+GU1tYZed99JSCOsmzkkF7727RqKrjNAxtfO4YpGv11wybgRvCjR73lK2GZw== +jest-validate@^25.4.0: + version "25.4.0" + resolved "https://registry.yarnpkg.com/jest-validate/-/jest-validate-25.4.0.tgz#2e177a93b716a137110eaf2768f3d9095abd3f38" + integrity sha512-hvjmes/EFVJSoeP1yOl8qR8mAtMR3ToBkZeXrD/ZS9VxRyWDqQ/E1C5ucMTeSmEOGLipvdlyipiGbHJ+R1MQ0g== dependencies: - "@jest/test-result" "^24.9.0" - "@jest/types" "^24.9.0" - "@types/yargs" "^13.0.0" - ansi-escapes "^3.0.0" - chalk "^2.0.1" - jest-util "^24.9.0" - string-length "^2.0.0" + "@jest/types" "^25.4.0" + camelcase "^5.3.1" + chalk "^3.0.0" + jest-get-type "^25.2.6" + leven "^3.1.0" + pretty-format "^25.4.0" + +jest-watcher@^25.4.0: + version "25.4.0" + resolved "https://registry.yarnpkg.com/jest-watcher/-/jest-watcher-25.4.0.tgz#63ec0cd5c83bb9c9d1ac95be7558dd61c995ff05" + integrity sha512-36IUfOSRELsKLB7k25j/wutx0aVuHFN6wO94gPNjQtQqFPa2rkOymmx9rM5EzbF3XBZZ2oqD9xbRVoYa2w86gw== + dependencies: + "@jest/test-result" "^25.4.0" + "@jest/types" "^25.4.0" + ansi-escapes "^4.2.1" + chalk "^3.0.0" + jest-util "^25.4.0" + string-length "^3.1.0" jest-worker@^24.6.0: version "24.6.0" @@ -4724,32 +4776,28 @@ jest-worker@^24.6.0: merge-stream "^1.0.1" supports-color "^6.1.0" -jest-worker@^24.9.0: - version "24.9.0" - resolved "https://registry.yarnpkg.com/jest-worker/-/jest-worker-24.9.0.tgz#5dbfdb5b2d322e98567898238a9697bcce67b3e5" - integrity sha512-51PE4haMSXcHohnSMdM42anbvZANYTqMrr52tVKPqqsPJMzoP6FYYDVqahX/HrAoKEKz3uUPzSvKs9A3qR4iVw== +jest-worker@^25.4.0: + version "25.4.0" + resolved "https://registry.yarnpkg.com/jest-worker/-/jest-worker-25.4.0.tgz#ee0e2ceee5a36ecddf5172d6d7e0ab00df157384" + integrity sha512-ghAs/1FtfYpMmYQ0AHqxV62XPvKdUDIBBApMZfly+E9JEmYh2K45G0R5dWxx986RN12pRCxsViwQVtGl+N4whw== dependencies: merge-stream "^2.0.0" - supports-color "^6.1.0" + supports-color "^7.0.0" -jest@^24.9.0: - version "24.9.0" - resolved "https://registry.yarnpkg.com/jest/-/jest-24.9.0.tgz#987d290c05a08b52c56188c1002e368edb007171" - integrity sha512-YvkBL1Zm7d2B1+h5fHEOdyjCG+sGMz4f8D86/0HiqJ6MB4MnDc8FgP5vdWsGnemOQro7lnYo8UakZ3+5A0jxGw== +jest@^25.4.0: + version "25.4.0" + resolved "https://registry.yarnpkg.com/jest/-/jest-25.4.0.tgz#fb96892c5c4e4a6b9bcb12068849cddf4c5f8cc7" + integrity sha512-XWipOheGB4wai5JfCYXd6vwsWNwM/dirjRoZgAa7H2wd8ODWbli2AiKjqG8AYhyx+8+5FBEdpO92VhGlBydzbw== dependencies: - import-local "^2.0.0" - jest-cli "^24.9.0" + "@jest/core" "^25.4.0" + import-local "^3.0.2" + jest-cli "^25.4.0" jetifier@^1.6.2: version "1.6.4" resolved "https://registry.yarnpkg.com/jetifier/-/jetifier-1.6.4.tgz#6159db8e275d97980d26162897a0648b6d4a3222" integrity sha512-+f/4OLeqY8RAmXnonI1ffeY1DR8kMNJPhv5WMFehchf7U71cjMQVKkOz1n6asz6kfVoAqKNWJz1A/18i18AcXA== -js-levenshtein@^1.1.3: - version "1.1.4" - resolved "https://registry.yarnpkg.com/js-levenshtein/-/js-levenshtein-1.1.4.tgz#3a56e3cbf589ca0081eb22cd9ba0b1290a16d26e" - integrity sha512-PxfGzSs0ztShKrUYPIn5r0MtyAhYcCwmndozzpz8YObbPnD1jFxzlBGbRnX2mIu6Z13xN6+PTu05TQFnZFlzow== - "js-tokens@^3.0.0 || ^4.0.0", js-tokens@^4.0.0: version "4.0.0" resolved "https://registry.yarnpkg.com/js-tokens/-/js-tokens-4.0.0.tgz#19203fb59991df98e3a287050d4647cdeaf32499" @@ -4810,36 +4858,36 @@ jscodeshift@^0.7.0: temp "^0.8.1" write-file-atomic "^2.3.0" -jsdom@^11.5.1: - version "11.12.0" - resolved "https://registry.yarnpkg.com/jsdom/-/jsdom-11.12.0.tgz#1a80d40ddd378a1de59656e9e6dc5a3ba8657bc8" - integrity sha512-y8Px43oyiBM13Zc1z780FrfNLJCXTL40EWlty/LXUtcjykRBNgLlCjWXpfSPBl2iv+N7koQN+dvqszHZgT/Fjw== +jsdom@^15.2.1: + version "15.2.1" + resolved "https://registry.yarnpkg.com/jsdom/-/jsdom-15.2.1.tgz#d2feb1aef7183f86be521b8c6833ff5296d07ec5" + integrity sha512-fAl1W0/7T2G5vURSyxBzrJ1LSdQn6Tr5UX/xD4PXDx/PDgwygedfW6El/KIj3xJ7FU61TTYnc/l/B7P49Eqt6g== dependencies: abab "^2.0.0" - acorn "^5.5.3" - acorn-globals "^4.1.0" + acorn "^7.1.0" + acorn-globals "^4.3.2" array-equal "^1.0.0" - cssom ">= 0.3.2 < 0.4.0" - cssstyle "^1.0.0" - data-urls "^1.0.0" + cssom "^0.4.1" + cssstyle "^2.0.0" + data-urls "^1.1.0" domexception "^1.0.1" - escodegen "^1.9.1" + escodegen "^1.11.1" html-encoding-sniffer "^1.0.2" - left-pad "^1.3.0" - nwsapi "^2.0.7" - parse5 "4.0.0" + nwsapi "^2.2.0" + parse5 "5.1.0" pn "^1.1.0" - request "^2.87.0" - request-promise-native "^1.0.5" - sax "^1.2.4" + request "^2.88.0" + request-promise-native "^1.0.7" + saxes "^3.1.9" symbol-tree "^3.2.2" - tough-cookie "^2.3.4" + tough-cookie "^3.0.1" w3c-hr-time "^1.0.1" + w3c-xmlserializer "^1.1.2" webidl-conversions "^4.0.2" - whatwg-encoding "^1.0.3" - whatwg-mimetype "^2.1.0" - whatwg-url "^6.4.1" - ws "^5.2.0" + whatwg-encoding "^1.0.5" + whatwg-mimetype "^2.3.0" + whatwg-url "^7.0.0" + ws "^7.0.0" xml-name-validator "^3.0.0" jsesc@^2.5.1: @@ -4889,17 +4937,12 @@ json-stringify-safe@~5.0.1: resolved "https://registry.yarnpkg.com/json-stringify-safe/-/json-stringify-safe-5.0.1.tgz#1296a2d58fd45f19a0f6ce01d65701e2c735b6eb" integrity sha1-Epai1Y/UXxmg9s4B1lcB4sc1tus= -json5@^0.5.0: - version "0.5.1" - resolved "https://registry.yarnpkg.com/json5/-/json5-0.5.1.tgz#1eade7acc012034ad84e2396767ead9fa5495821" - integrity sha1-Hq3nrMASA0rYTiOWdn6tn6VJWCE= - -json5@^2.1.0: - version "2.1.0" - resolved "https://registry.yarnpkg.com/json5/-/json5-2.1.0.tgz#e7a0c62c48285c628d20a10b85c89bb807c32850" - integrity sha512-8Mh9h6xViijj36g7Dxi+Y4S6hNGV96vcJZr/SrlHh1LR/pEn/8j/+qIBbs44YKl69Lrfctp4QD+AdWLTMqEZAQ== +json5@^2.1.2: + version "2.1.2" + resolved "https://registry.yarnpkg.com/json5/-/json5-2.1.2.tgz#43ef1f0af9835dd624751a6b7fa48874fb2d608e" + integrity sha512-MoUOQ4WdiN3yxhm7NEVJSJrieAo5hNSLQ5sj05OTRHPL9HOBy8u4Bu88jsC1jvqAdN+E1bJmsUcZH+1HQxliqQ== dependencies: - minimist "^1.2.0" + minimist "^1.2.5" jsonfile@^2.1.0: version "2.4.0" @@ -4962,9 +5005,9 @@ kind-of@^5.0.0: integrity sha512-NGEErnH6F2vUuXDh+OlbcKW7/wOcfdRHaZ7VWtqCztfHri/++YKmP51OdWeGPuqCOba6kk2OTe5d02VmTB80Pw== kind-of@^6.0.0, kind-of@^6.0.2: - version "6.0.2" - resolved "https://registry.yarnpkg.com/kind-of/-/kind-of-6.0.2.tgz#01146b36a6218e64e58f3a8d66de5d7fc6f6d051" - integrity sha512-s5kLOcnH0XqDO+FvuaLX8DDjZ18CGFk7VygH40QoKPUQhW4e2rvM0rwUq0t8IQDOwYSeLK01U90OjzBTme2QqA== + version "6.0.3" + resolved "https://registry.yarnpkg.com/kind-of/-/kind-of-6.0.3.tgz#07c05034a6c349fa06e24fa35aa76db4580ce4dd" + integrity sha512-dcS1ul+9tmeD95T+x28/ehLgd9mENa3LsvDTtzm3vyBEO7RPptvAD+t44WVXaUjTBRcrpFeFlC8WCruUR456hw== klaw@^1.0.0: version "1.3.1" @@ -4990,11 +5033,6 @@ lcov-parse@^0.0.10: resolved "https://registry.yarnpkg.com/lcov-parse/-/lcov-parse-0.0.10.tgz#1b0b8ff9ac9c7889250582b70b71315d9da6d9a3" integrity sha1-GwuP+ayceIklBYK3C3ExXZ2m2aM= -left-pad@^1.3.0: - version "1.3.0" - resolved "https://registry.yarnpkg.com/left-pad/-/left-pad-1.3.0.tgz#5b8a3a7765dfe001261dde915589e782f8c94d1e" - integrity sha512-XI5MPzVNApjAyhQzphX8BkmKsKUxD4LdyK24iZeQGinBN9yTQT3bFlCBy/aVx2HrNcqQGsdot8ghrjyrvMCoEA== - leven@^2.1.0: version "2.1.0" resolved "https://registry.yarnpkg.com/leven/-/leven-2.1.0.tgz#c2e7a9f772094dee9d34202ae8acce4687875580" @@ -5005,6 +5043,13 @@ leven@^3.1.0: resolved "https://registry.yarnpkg.com/leven/-/leven-3.1.0.tgz#77891de834064cccba82ae7842bb6b14a13ed7f2" integrity sha512-qsda+H8jTaUaN/x5vzW2rzc+8Rw4TAQ/4KjB46IwK5VH+IlVeeeje/EoZRpiXvIqjFgK84QffqPztGI3VBLG1A== +levenary@^1.1.1: + version "1.1.1" + resolved "https://registry.yarnpkg.com/levenary/-/levenary-1.1.1.tgz#842a9ee98d2075aa7faeedbe32679e9205f46f77" + integrity sha512-mkAdOIt79FD6irqjYSs4rdbnlT5vRonMEvBVPVb3XmevfS8kgRXwfes0dhPdEtzTWD/1eNE/Bm/G1iRt6DcnQQ== + dependencies: + leven "^3.1.0" + levn@^0.3.0, levn@~0.3.0: version "0.3.0" resolved "https://registry.yarnpkg.com/levn/-/levn-0.3.0.tgz#3b09924edf9f083c0490fdd4c0bc4421e04764ee" @@ -5013,15 +5058,10 @@ levn@^0.3.0, levn@~0.3.0: prelude-ls "~1.1.2" type-check "~0.3.2" -load-json-file@^4.0.0: - version "4.0.0" - resolved "https://registry.yarnpkg.com/load-json-file/-/load-json-file-4.0.0.tgz#2f5f45ab91e33216234fd53adab668eb4ec0993b" - integrity sha1-L19Fq5HjMhYjT9U62rZo607AmTs= - dependencies: - graceful-fs "^4.1.2" - parse-json "^4.0.0" - pify "^3.0.0" - strip-bom "^3.0.0" +lines-and-columns@^1.1.6: + version "1.1.6" + resolved "https://registry.yarnpkg.com/lines-and-columns/-/lines-and-columns-1.1.6.tgz#1c00c743b433cd0a4e80758f7b64a57440d9ff00" + integrity sha1-HADHQ7QzzQpOgHWPe2SldEDZ/wA= locate-path@^2.0.0: version "2.0.0" @@ -5056,7 +5096,7 @@ lodash.throttle@^4.1.1: resolved "https://registry.yarnpkg.com/lodash.throttle/-/lodash.throttle-4.1.1.tgz#c23e91b710242ac70c37f1e1cda9274cc39bf2f4" integrity sha1-wj6RtxAkKscMN/HhzaknTMOb8vQ= -lodash@4.x.x, lodash@^4.13.1, lodash@^4.17.10, lodash@^4.17.4, lodash@^4.17.5, lodash@^4.3.0: +lodash@4.x.x, lodash@^4.17.10, lodash@^4.17.4, lodash@^4.17.5, lodash@^4.3.0: version "4.17.11" resolved "https://registry.yarnpkg.com/lodash/-/lodash-4.17.11.tgz#b39ea6229ef607ecd89e2c8df12536891cac9b8d" integrity sha512-cQKh8igo5QUhZ7lg38DYWAxMvjSAKG0A8wGSVimP07SIUEK2UO+arSRKbRZWtelMtN5V0Hkwh5ryOto/SshYIg== @@ -5087,6 +5127,13 @@ logkitty@^0.7.1: dayjs "^1.8.15" yargs "^15.1.0" +lolex@^5.0.0: + version "5.1.2" + resolved "https://registry.yarnpkg.com/lolex/-/lolex-5.1.2.tgz#953694d098ce7c07bc5ed6d0e42bc6c0c6d5a367" + integrity sha512-h4hmjAvHTmd+25JSwrtTIuwbKdwg5NzZVRMLn9saij4SZaepCrTCxPr35H/3bjwfMJtN+t3CX8672UIkglz28A== + dependencies: + "@sinonjs/commons" "^1.7.0" + loose-envify@^1.0.0, loose-envify@^1.1.0, loose-envify@^1.3.1, loose-envify@^1.4.0: version "1.4.0" resolved "https://registry.yarnpkg.com/loose-envify/-/loose-envify-1.4.0.tgz#71ee51fa7be4caec1a63839f7e682d8132d30caf" @@ -5102,12 +5149,20 @@ lru-cache@^4.0.1: pseudomap "^1.0.2" yallist "^2.1.2" -make-dir@^1.0.0, make-dir@^1.3.0: - version "1.3.0" - resolved "https://registry.yarnpkg.com/make-dir/-/make-dir-1.3.0.tgz#79c1033b80515bd6d24ec9933e860ca75ee27f0c" - integrity sha512-2w31R7SJtieJJnQtGc7RVL2StM2vGYVfqUOvUDxH6bC6aJTxPxTF0GnIgCyu7tjockiUWAYQRbxa7vKn34s5sQ== +make-dir@^2.0.0, make-dir@^2.1.0: + version "2.1.0" + resolved "https://registry.yarnpkg.com/make-dir/-/make-dir-2.1.0.tgz#5f0310e18b8be898cc07009295a30ae41e91e6f5" + integrity sha512-LS9X+dc8KLxXCb8dni79fLIIUA5VyZoyjSMCwTluaXA0o27cCK0bhXkpgw+sTXVpPy/lSO57ilRixqk0vDmtRA== dependencies: - pify "^3.0.0" + pify "^4.0.1" + semver "^5.6.0" + +make-dir@^3.0.0: + version "3.0.2" + resolved "https://registry.yarnpkg.com/make-dir/-/make-dir-3.0.2.tgz#04a1acbf22221e1d6ef43559f43e05a90dbb4392" + integrity sha512-rYKABKutXa6vXTXhoV18cBE7PaewPXHe/Bdq4v+ZLMhxbWApkFFplT0LcbMW+6BbjnQXzZ/sAvSE/JdguApG5w== + dependencies: + semver "^6.0.0" makeerror@1.0.x: version "1.0.11" @@ -5497,6 +5552,14 @@ micromatch@^3.1.10, micromatch@^3.1.4: snapdragon "^0.8.1" to-regex "^3.0.2" +micromatch@^4.0.2: + version "4.0.2" + resolved "https://registry.yarnpkg.com/micromatch/-/micromatch-4.0.2.tgz#4fcb0999bf9fbc2fcbdd212f6d629b9a56c39259" + integrity sha512-y7FpHSbMUMoyPbYUSzO6PaZ6FyRnQOpHuKwbo1G+Knck95XVU4QAiKdGEnj5wwoS7PlOgthX/09u5iFJ+aYf5Q== + dependencies: + braces "^3.0.1" + picomatch "^2.0.5" + mime-db@1.44.0, "mime-db@>= 1.43.0 < 2": version "1.44.0" resolved "https://registry.yarnpkg.com/mime-db/-/mime-db-1.44.0.tgz#fa11c5eb0aca1334b4233cb4d52f10c5a6272f92" @@ -5548,6 +5611,11 @@ mimic-fn@^1.0.0: resolved "https://registry.yarnpkg.com/mimic-fn/-/mimic-fn-1.2.0.tgz#820c86a39334640e99516928bd03fca88057d022" integrity sha512-jf84uxzwiuiIVKiOLpfYk7N46TSy8ubTonmneY9vrpHNAnp0QBt2BxWV9dO3/j+BoVAb+a5G6YDPW3M5HOdMWQ== +mimic-fn@^2.1.0: + version "2.1.0" + resolved "https://registry.yarnpkg.com/mimic-fn/-/mimic-fn-2.1.0.tgz#7ed2c2ccccaf84d3ffcb7a69b57711fc2083401b" + integrity sha512-OqbOk5oEQeAZ8WXWydlu9HJjz9WVdEIvamMCcXmuqUYjTknH/sqsWvhQ3vgwKFRR1HpjvNBKQ37nbJgYzGqGcg== + "minimatch@2 || 3", minimatch@^3.0.2, minimatch@^3.0.4: version "3.0.4" resolved "https://registry.yarnpkg.com/minimatch/-/minimatch-3.0.4.tgz#5166e286457f03306064be5497e8dbb0c3d32083" @@ -5565,6 +5633,11 @@ minimist@^1.1.1, minimist@^1.2.0: resolved "https://registry.yarnpkg.com/minimist/-/minimist-1.2.0.tgz#a35008b20f41383eec1fb914f4cd5df79a264284" integrity sha1-o1AIsg9BOD7sH7kU9M1d95omQoQ= +minimist@^1.2.5: + version "1.2.5" + resolved "https://registry.yarnpkg.com/minimist/-/minimist-1.2.5.tgz#67d66014b66a6a8aaa0c083c5fd58df4e4e97602" + integrity sha512-FM9nNUYrRBAELZQT3xeZQ7fmMOBg6nWNmJKTcgsJeaLstP/UODVpGsr5OhXhhXg6f+qtJ8uiZ+PUxkDWcgIXLw== + minipass@^2.2.1, minipass@^2.3.3: version "2.3.4" resolved "https://registry.yarnpkg.com/minipass/-/minipass-2.3.4.tgz#4768d7605ed6194d6d576169b9e12ef71e9d9957" @@ -5715,16 +5788,16 @@ node-modules-regexp@^1.0.0: resolved "https://registry.yarnpkg.com/node-modules-regexp/-/node-modules-regexp-1.0.0.tgz#8d9dbe28964a4ac5712e9131642107c71e90ec40" integrity sha1-jZ2+KJZKSsVxLpExZCEHxx6Q7EA= -node-notifier@^5.4.2: - version "5.4.3" - resolved "https://registry.yarnpkg.com/node-notifier/-/node-notifier-5.4.3.tgz#cb72daf94c93904098e28b9c590fd866e464bd50" - integrity sha512-M4UBGcs4jeOK9CjTsYwkvH6/MzuUmGCyTW+kCY7uO+1ZVr0+FHGdPdIf5CCLqAaxnRrWidyoQlNkMIIVwbKB8Q== +node-notifier@^6.0.0: + version "6.0.0" + resolved "https://registry.yarnpkg.com/node-notifier/-/node-notifier-6.0.0.tgz#cea319e06baa16deec8ce5cd7f133c4a46b68e12" + integrity sha512-SVfQ/wMw+DesunOm5cKqr6yDcvUTDl/yc97ybGHMrteNEY6oekXpNpS3lZwgLlwz0FLgHoiW28ZpmBHUDg37cw== dependencies: growly "^1.3.0" - is-wsl "^1.1.0" - semver "^5.5.0" + is-wsl "^2.1.1" + semver "^6.3.0" shellwords "^0.1.1" - which "^1.3.0" + which "^1.3.1" node-pre-gyp@^0.10.0: version "0.10.3" @@ -5742,12 +5815,10 @@ node-pre-gyp@^0.10.0: semver "^5.3.0" tar "^4" -node-releases@^1.1.1: - version "1.1.2" - resolved "https://registry.yarnpkg.com/node-releases/-/node-releases-1.1.2.tgz#93c17fba5eec8650ad908de5433fa8763baebe4d" - integrity sha512-j1gEV/zX821yxdWp/1vBMN0pSUjuH9oGUdLCb4PfUko6ZW7KdRs3Z+QGGwDUhYtSpQvdVVyLd2V0YvLsmdg5jQ== - dependencies: - semver "^5.3.0" +node-releases@^1.1.53: + version "1.1.53" + resolved "https://registry.yarnpkg.com/node-releases/-/node-releases-1.1.53.tgz#2d821bfa499ed7c5dffc5e2f28c88e78a08ee3f4" + integrity sha512-wp8zyQVwef2hpZ/dJH7SfSrIPD6YoJz6BDQDpGEkcA0s3LpAQoxBIYmfIq6QAhC1DhwsyCgTaTTcONwX8qzCuQ== node-stream-zip@^1.9.1: version "1.11.3" @@ -5767,13 +5838,13 @@ nopt@^4.0.1: abbrev "1" osenv "^0.1.4" -normalize-package-data@^2.3.2: - version "2.4.0" - resolved "https://registry.yarnpkg.com/normalize-package-data/-/normalize-package-data-2.4.0.tgz#12f95a307d58352075a04907b84ac8be98ac012f" - integrity sha512-9jjUFbTPfEy3R/ad/2oNbKtW9Hgovl5O1FvFWKkKblNXoN/Oou6+9+KKohPK13Yc3/TyunyWhJp6gvRNR/PPAw== +normalize-package-data@^2.5.0: + version "2.5.0" + resolved "https://registry.yarnpkg.com/normalize-package-data/-/normalize-package-data-2.5.0.tgz#e66db1838b200c1dfc233225d12cb36520e234a8" + integrity sha512-/5CMN3T0R4XTj4DcGaexo+roZSdSFW/0AOOTROrjxzCG1wrWXEsGbRKevjlIL+ZDE4sZlJr5ED4YW0yqmkK+eA== dependencies: hosted-git-info "^2.1.4" - is-builtin-module "^1.0.0" + resolve "^1.10.0" semver "2 || 3 || 4 || 5" validate-npm-package-license "^3.0.1" @@ -5784,6 +5855,11 @@ normalize-path@^2.1.1: dependencies: remove-trailing-separator "^1.0.1" +normalize-path@^3.0.0: + version "3.0.0" + resolved "https://registry.yarnpkg.com/normalize-path/-/normalize-path-3.0.0.tgz#0dcd69ff23a1c9b11fd0978316644a0388216a65" + integrity sha512-6eZs5Ls3WtCisHWp9S2GUy8dqkpGi4BVSz3GaqiE6ezub0512ESztXUwUB6C6IKbQkY2Pnb/mD4WYojCRwcwLA== + npm-bundled@^1.0.1: version "1.0.5" resolved "https://registry.yarnpkg.com/npm-bundled/-/npm-bundled-1.0.5.tgz#3c1732b7ba936b3a10325aef616467c0ccbcc979" @@ -5804,6 +5880,13 @@ npm-run-path@^2.0.0: dependencies: path-key "^2.0.0" +npm-run-path@^4.0.0: + version "4.0.1" + resolved "https://registry.yarnpkg.com/npm-run-path/-/npm-run-path-4.0.1.tgz#b7ecd1e5ed53da8e37a55e1c2269e0b97ed748ea" + integrity sha512-S48WzZW777zhNIrn7gxOlISNAqi9ZC/uQFnRdbeIHhZhCA6UqpkOT8T1G7BvfdgP4Er8gF4sUbaS0i7QvIfCWw== + dependencies: + path-key "^3.0.0" + npmlog@^4.0.2: version "4.1.2" resolved "https://registry.yarnpkg.com/npmlog/-/npmlog-4.1.2.tgz#08a7f2a8bf734604779a9efa4ad5cc717abb954b" @@ -5824,10 +5907,10 @@ number-is-nan@^1.0.0: resolved "https://registry.yarnpkg.com/number-is-nan/-/number-is-nan-1.0.1.tgz#097b602b53422a522c1afb8790318336941a011d" integrity sha1-CXtgK1NCKlIsGvuHkDGDNpQaAR0= -nwsapi@^2.0.7: - version "2.0.9" - resolved "https://registry.yarnpkg.com/nwsapi/-/nwsapi-2.0.9.tgz#77ac0cdfdcad52b6a1151a84e73254edc33ed016" - integrity sha512-nlWFSCTYQcHk/6A9FFnfhKc14c3aFhfdNBXgo8Qgi9QTBu/qg3Ww+Uiz9wMzXd1T8GFxPc2QIHB6Qtf2XFryFQ== +nwsapi@^2.2.0: + version "2.2.0" + resolved "https://registry.yarnpkg.com/nwsapi/-/nwsapi-2.2.0.tgz#204879a9e3d068ff2a55139c2c772780681a38b7" + integrity sha512-h2AatdwYH+JHiZpv7pt/gSX1XoRGb7L/qSIeuqA6GwYoF9w1vP1cw42TO0aI2pNyshRK5893hNSl+1//vHK7hQ== oauth-sign@~0.9.0: version "0.9.0" @@ -5858,6 +5941,11 @@ object-copy@^0.1.0: define-property "^0.2.5" kind-of "^3.0.3" +object-keys@^1.0.11: + version "1.1.1" + resolved "https://registry.yarnpkg.com/object-keys/-/object-keys-1.1.1.tgz#1c47f272df277f3b1daf061677d9c82e2322c60e" + integrity sha512-NuAESUOUMrlIXOfHKzD6bpPu3tYt3xvjNdRIQ+FeT0lNb4K8WR70CaDxhuNguS2XG+GjkyMwOzsN5ZktImfhLA== + object-keys@^1.0.12: version "1.0.12" resolved "https://registry.yarnpkg.com/object-keys/-/object-keys-1.0.12.tgz#09c53855377575310cca62f55bb334abff7b3ed2" @@ -5870,6 +5958,16 @@ object-visit@^1.0.0: dependencies: isobject "^3.0.0" +object.assign@^4.1.0: + version "4.1.0" + resolved "https://registry.yarnpkg.com/object.assign/-/object.assign-4.1.0.tgz#968bf1100d7956bb3ca086f006f846b3bc4008da" + integrity sha512-exHJeq6kBKj58mqGyTQ9DFvrZC/eR6OwxzoM9YRoGBqrXYonaFyGiFMuc9VZrXf7DarreEwMpurG3dd+CNyW5w== + dependencies: + define-properties "^1.1.2" + function-bind "^1.1.1" + has-symbols "^1.0.0" + object-keys "^1.0.11" + object.fromentries@^2.0.0: version "2.0.0" resolved "https://registry.yarnpkg.com/object.fromentries/-/object.fromentries-2.0.0.tgz#49a543d92151f8277b3ac9600f1e930b189d30ab" @@ -5880,14 +5978,6 @@ object.fromentries@^2.0.0: function-bind "^1.1.1" has "^1.0.1" -object.getownpropertydescriptors@^2.0.3: - version "2.0.3" - resolved "https://registry.yarnpkg.com/object.getownpropertydescriptors/-/object.getownpropertydescriptors-2.0.3.tgz#8758c846f5b407adab0f236e0986f14b051caa16" - integrity sha1-h1jIRvW0B62rDyNuCYbxSwUcqhY= - dependencies: - define-properties "^1.1.2" - es-abstract "^1.5.1" - object.pick@^1.3.0: version "1.3.0" resolved "https://registry.yarnpkg.com/object.pick/-/object.pick-1.3.0.tgz#87a10ac4c1694bd2e1cbf53591a66141fb5dd747" @@ -5921,6 +6011,13 @@ onetime@^2.0.0: dependencies: mimic-fn "^1.0.0" +onetime@^5.1.0: + version "5.1.0" + resolved "https://registry.yarnpkg.com/onetime/-/onetime-5.1.0.tgz#fff0f3c91617fe62bb50189636e99ac8a6df7be5" + integrity sha512-5NcSkPHhwTVFIQN+TUqXoS5+dlElHXdpAWu9I0HP20YOtIi+aZ0Ct82jdlILDxjLEAWwvm+qj1m6aEtsDVmm6Q== + dependencies: + mimic-fn "^2.1.0" + open@^6.2.0: version "6.4.0" resolved "https://registry.npmjs.org/open/-/open-6.4.0.tgz#5c13e96d0dc894686164f18965ecfe889ecfc8a9" @@ -5989,18 +6086,21 @@ p-defer@^1.0.0: resolved "https://registry.yarnpkg.com/p-defer/-/p-defer-1.0.0.tgz#9f6eb182f6c9aa8cd743004a7d4f96b196b0fb0c" integrity sha1-n26xgvbJqozXQwBKfU+WsZaw+ww= -p-each-series@^1.0.0: - version "1.0.0" - resolved "https://registry.yarnpkg.com/p-each-series/-/p-each-series-1.0.0.tgz#930f3d12dd1f50e7434457a22cd6f04ac6ad7f71" - integrity sha1-kw89Et0fUOdDRFeiLNbwSsatf3E= - dependencies: - p-reduce "^1.0.0" +p-each-series@^2.1.0: + version "2.1.0" + resolved "https://registry.yarnpkg.com/p-each-series/-/p-each-series-2.1.0.tgz#961c8dd3f195ea96c747e636b262b800a6b1af48" + integrity sha512-ZuRs1miPT4HrjFa+9fRfOFXxGJfORgelKV9f9nNOWw2gl6gVsRaVDOQP0+MI0G0wGKns1Yacsu0GjOFbTK0JFQ== p-finally@^1.0.0: version "1.0.0" resolved "https://registry.yarnpkg.com/p-finally/-/p-finally-1.0.0.tgz#3fbcfb15b899a44123b34b6dcc18b724336a2cae" integrity sha1-P7z7FbiZpEEjs0ttzBi3JDNqLK4= +p-finally@^2.0.0: + version "2.0.1" + resolved "https://registry.yarnpkg.com/p-finally/-/p-finally-2.0.1.tgz#bd6fcaa9c559a096b680806f4d657b3f0f240561" + integrity sha512-vpm09aKwq6H9phqRQzecoDpD8TmVyGw70qmWlyq5onxY7tqyTTFVvxMykxQSQKILBSFlbXpypIw2T1Ml7+DDtw== + p-is-promise@^1.1.0: version "1.1.0" resolved "http://registry.npmjs.org/p-is-promise/-/p-is-promise-1.1.0.tgz#9c9456989e9f6588017b0434d56097675c3da05e" @@ -6048,11 +6148,6 @@ p-locate@^4.1.0: dependencies: p-limit "^2.2.0" -p-reduce@^1.0.0: - version "1.0.0" - resolved "https://registry.yarnpkg.com/p-reduce/-/p-reduce-1.0.0.tgz#18c2b0dd936a4690a529f8231f58a0fdb6a47dfa" - integrity sha1-GMKw3ZNqRpClKfgjH1ig/bakffo= - p-try@^1.0.0: version "1.0.0" resolved "https://registry.yarnpkg.com/p-try/-/p-try-1.0.0.tgz#cbc79cdbaf8fd4228e13f621f2b1a237c1b207b3" @@ -6071,10 +6166,20 @@ parse-json@^4.0.0: error-ex "^1.3.1" json-parse-better-errors "^1.0.1" -parse5@4.0.0: - version "4.0.0" - resolved "https://registry.yarnpkg.com/parse5/-/parse5-4.0.0.tgz#6d78656e3da8d78b4ec0b906f7c08ef1dfe3f608" - integrity sha512-VrZ7eOd3T1Fk4XWNXMgiGBK/z0MG48BWG2uQNU4I72fkQuKUTZpl+u9k+CxEG0twMVzSmXEEz12z5Fnw1jIQFA== +parse-json@^5.0.0: + version "5.0.0" + resolved "https://registry.yarnpkg.com/parse-json/-/parse-json-5.0.0.tgz#73e5114c986d143efa3712d4ea24db9a4266f60f" + integrity sha512-OOY5b7PAEFV0E2Fir1KOkxchnZNCdowAJgQ5NuxjpBKTRP3pQhwkrkxqQjeoKJ+fO7bCpmIZaogI4eZGDMEGOw== + dependencies: + "@babel/code-frame" "^7.0.0" + error-ex "^1.3.1" + json-parse-better-errors "^1.0.1" + lines-and-columns "^1.1.6" + +parse5@5.1.0: + version "5.1.0" + resolved "https://registry.yarnpkg.com/parse5/-/parse5-5.1.0.tgz#c59341c9723f414c452975564c7c00a68d58acd2" + integrity sha512-fxNG2sQjHvlVAYmzBZS9YlDp6PTSSDwa98vkD4QgVDDCAo84z5X1t5XyJQ62ImdLXx5NdIIfihey6xpum9/gRQ== parseurl@~1.3.2: version "1.3.2" @@ -6111,27 +6216,30 @@ path-key@^2.0.0, path-key@^2.0.1: resolved "https://registry.yarnpkg.com/path-key/-/path-key-2.0.1.tgz#411cadb574c5a140d3a4b1910d40d80cc9f40b40" integrity sha1-QRyttXTFoUDTpLGRDUDYDMn0C0A= -path-parse@^1.0.5, path-parse@^1.0.6: +path-key@^3.0.0, path-key@^3.1.0: + version "3.1.1" + resolved "https://registry.yarnpkg.com/path-key/-/path-key-3.1.1.tgz#581f6ade658cbba65a0d3380de7753295054f375" + integrity sha512-ojmeN0qd+y0jszEtoY48r0Peq5dwMEkIlCOu6Q5f41lfkswXuKtYrhgoTpLnyIcHm24Uhqx+5Tqm2InSwLhE6Q== + +path-parse@^1.0.6: version "1.0.6" resolved "https://registry.yarnpkg.com/path-parse/-/path-parse-1.0.6.tgz#d62dbb5679405d72c4737ec58600e9ddcf06d24c" integrity sha512-GSmOT2EbHrINBf9SR7CDELwlJ8AENk3Qn7OikK4nFYAu3Ote2+JYNVvkpAEQm3/TLNEJFD/xZJjzyxg3KBWOzw== -path-type@^3.0.0: - version "3.0.0" - resolved "https://registry.yarnpkg.com/path-type/-/path-type-3.0.0.tgz#cef31dc8e0a1a3bb0d105c0cd97cf3bf47f4e36f" - integrity sha512-T2ZUsdZFHgA3u4e5PfPbjd7HDDpxPnQb5jN0SrDsjNSuVXHJqtwTnWqG0B1jZrgmJ/7lj1EmVIByWt1gxGkWvg== - dependencies: - pify "^3.0.0" - performance-now@^2.1.0: version "2.1.0" resolved "https://registry.yarnpkg.com/performance-now/-/performance-now-2.1.0.tgz#6309f4e0e5fa913ec1c69307ae364b4b377c9e7b" integrity sha1-Ywn04OX6kT7BxpMHrjZLSzd8nns= -pify@^3.0.0: - version "3.0.0" - resolved "https://registry.yarnpkg.com/pify/-/pify-3.0.0.tgz#e5a4acd2c101fdf3d9a4d07f0dbc4db49dd28176" - integrity sha1-5aSs0sEB/fPZpNB/DbxNtJ3SgXY= +picomatch@^2.0.4, picomatch@^2.0.5: + version "2.2.2" + resolved "https://registry.yarnpkg.com/picomatch/-/picomatch-2.2.2.tgz#21f333e9b6b8eaff02468f5146ea406d345f4dad" + integrity sha512-q0M/9eZHzmr0AulXyPwNfZjtwZ/RBZlbN3K3CErVrk50T2ASYI7Bye0EvekFY3IP1Nt2DHu0re+V2ZHIpMkuWg== + +pify@^4.0.1: + version "4.0.1" + resolved "https://registry.yarnpkg.com/pify/-/pify-4.0.1.tgz#4b2cd25c50d598735c50292224fd8c6df41e3231" + integrity sha512-uB80kBFb/tfd68bVleG9T5GGsGPjJrLAUpR5PZIrhBnIaRTQRjqdJSsIKkOP6OAIFbj7GOrcudc5pNjZ+geV2g== pinkie-promise@^2.0.0: version "2.0.1" @@ -6159,13 +6267,6 @@ pirates@^4.0.1: dependencies: node-modules-regexp "^1.0.0" -pkg-dir@^2.0.0: - version "2.0.0" - resolved "https://registry.yarnpkg.com/pkg-dir/-/pkg-dir-2.0.0.tgz#f6d5d1109e19d63edf428e0bd57e12777615334b" - integrity sha1-9tXREJ4Z1j7fQo4L1X4Sd3YVM0s= - dependencies: - find-up "^2.1.0" - pkg-dir@^3.0.0: version "3.0.0" resolved "https://registry.yarnpkg.com/pkg-dir/-/pkg-dir-3.0.0.tgz#2749020f239ed990881b1f71210d51eb6523bea3" @@ -6173,6 +6274,20 @@ pkg-dir@^3.0.0: dependencies: find-up "^3.0.0" +pkg-dir@^4.2.0: + version "4.2.0" + resolved "https://registry.yarnpkg.com/pkg-dir/-/pkg-dir-4.2.0.tgz#f099133df7ede422e81d1d8448270eeb3e4261f3" + integrity sha512-HRDzbaKjC+AOWVXxAU/x54COGeIv9eb+6CkDSQoNTt4XyWoIJvuPsXizxu/Fr23EiekbtZwmh1IcIG/l/a10GQ== + dependencies: + find-up "^4.0.0" + +pkg-up@^2.0.0: + version "2.0.0" + resolved "https://registry.yarnpkg.com/pkg-up/-/pkg-up-2.0.0.tgz#c819ac728059a461cab1c3889a2be3c49a004d7f" + integrity sha1-yBmscoBZpGHKscOImivjxJoATX8= + dependencies: + find-up "^2.1.0" + plist@^3.0.1: version "3.0.1" resolved "https://registry.yarnpkg.com/plist/-/plist-3.0.1.tgz#a9b931d17c304e8912ef0ba3bdd6182baf2e1f8c" @@ -6218,14 +6333,6 @@ prettier@1.19.1: resolved "https://registry.yarnpkg.com/prettier/-/prettier-1.19.1.tgz#f7d7f5ff8a9cd872a7be4ca142095956a60797cb" integrity sha512-s7PoyDv/II1ObgQunCbB9PdLmUcBZcnWOcxDh7O0N/UwDEsHyqkW+Qh28jW+mVuCdx7gLB0BotYI1Y6uI9iyew== -pretty-format@^24.0.0: - version "24.0.0" - resolved "https://registry.yarnpkg.com/pretty-format/-/pretty-format-24.0.0.tgz#cb6599fd73ac088e37ed682f61291e4678f48591" - integrity sha512-LszZaKG665djUcqg5ZQq+XzezHLKrxsA86ZABTozp+oNhkdqa+tG2dX4qa6ERl5c/sRDrAa3lHmwnvKoP+OG/g== - dependencies: - ansi-regex "^4.0.0" - ansi-styles "^3.2.0" - pretty-format@^24.7.0: version "24.7.0" resolved "https://registry.yarnpkg.com/pretty-format/-/pretty-format-24.7.0.tgz#d23106bc2edcd776079c2daa5da02bcb12ed0c10" @@ -6266,7 +6373,17 @@ pretty-format@^25.2.0: ansi-styles "^4.0.0" react-is "^16.12.0" -private@^0.1.6, private@^0.1.8: +pretty-format@^25.4.0: + version "25.4.0" + resolved "https://registry.yarnpkg.com/pretty-format/-/pretty-format-25.4.0.tgz#c58801bb5c4926ff4a677fe43f9b8b99812c7830" + integrity sha512-PI/2dpGjXK5HyXexLPZU/jw5T9Q6S1YVXxxVxco+LIqzUFHXIbKZKdUVt7GcX7QUCr31+3fzhi4gN4/wUYPVxQ== + dependencies: + "@jest/types" "^25.4.0" + ansi-regex "^5.0.0" + ansi-styles "^4.0.0" + react-is "^16.12.0" + +private@^0.1.8: version "0.1.8" resolved "https://registry.yarnpkg.com/private/-/private-0.1.8.tgz#2381edb3689f7a53d653190060fcf822d2f368ff" integrity sha512-VvivMrbvd2nKkiG38qjULzlc+4Vx4wm/whI9pQD35YrARNnhxeiRktSOhSukRLFNlzg6Br/cJPet5J/u19r/mg== @@ -6343,6 +6460,11 @@ psl@^1.1.24: resolved "https://registry.yarnpkg.com/psl/-/psl-1.1.29.tgz#60f580d360170bb722a797cc704411e6da850c67" integrity sha512-AeUmQ0oLN02flVHXWh9sSJF7mcdFq0ppid/JkErufc3hGIV/AMa8Fo9VgDo/cT2jFdOWoFvHp90qqBH54W+gjQ== +psl@^1.1.28: + version "1.8.0" + resolved "https://registry.yarnpkg.com/psl/-/psl-1.8.0.tgz#9326f8bcfb013adcc005fdff056acce020e51c24" + integrity sha512-RIdOzyoavK+hA18OGGWDqUTsCLhtA7IcZ/6NCs4fFJaHBDab+pDDmDIByWFRQJq2Cd7r1OoQxBGKOaztq+hjIQ== + pump@^3.0.0: version "3.0.0" resolved "https://registry.yarnpkg.com/pump/-/pump-3.0.0.tgz#b4a2116815bde2f4e1ea602354e8c75565107a64" @@ -6356,7 +6478,7 @@ punycode@^1.4.1: resolved "https://registry.yarnpkg.com/punycode/-/punycode-1.4.1.tgz#c0d5a63b2718800ad8e1eb0fa5269c84dd41845e" integrity sha1-wNWmOycYgArY4esPpSachN1BhF4= -punycode@^2.1.0: +punycode@^2.1.0, punycode@^2.1.1: version "2.1.1" resolved "https://registry.yarnpkg.com/punycode/-/punycode-2.1.1.tgz#b58b010ac40c22c5657616c8d2c2c02c7bf479ec" integrity sha512-XRsRjdf+j5ml+y/6GKHPZbrF/8p2Yga0JPtdqTIY2Xe5ohJPD9saDJJLPvp9+NSBprVvevdXZybnj2cv8OEd0A== @@ -6428,22 +6550,24 @@ react@16.13.1: object-assign "^4.1.1" prop-types "^15.6.2" -read-pkg-up@^4.0.0: - version "4.0.0" - resolved "https://registry.yarnpkg.com/read-pkg-up/-/read-pkg-up-4.0.0.tgz#1b221c6088ba7799601c808f91161c66e58f8978" - integrity sha512-6etQSH7nJGsK0RbG/2TeDzZFa8shjQ1um+SwQQ5cwKy0dhSXdOncEhb1CPpvQG4h7FyOV6EB6YlV0yJvZQNAkA== +read-pkg-up@^7.0.1: + version "7.0.1" + resolved "https://registry.yarnpkg.com/read-pkg-up/-/read-pkg-up-7.0.1.tgz#f3a6135758459733ae2b95638056e1854e7ef507" + integrity sha512-zK0TB7Xd6JpCLmlLmufqykGE+/TlOePD6qKClNW7hHDKFh/J7/7gCWGR7joEQEW1bKq3a3yUZSObOoWLFQ4ohg== dependencies: - find-up "^3.0.0" - read-pkg "^3.0.0" + find-up "^4.1.0" + read-pkg "^5.2.0" + type-fest "^0.8.1" -read-pkg@^3.0.0: - version "3.0.0" - resolved "https://registry.yarnpkg.com/read-pkg/-/read-pkg-3.0.0.tgz#9cbc686978fee65d16c00e2b19c237fcf6e38389" - integrity sha1-nLxoaXj+5l0WwA4rGcI3/Pbjg4k= +read-pkg@^5.2.0: + version "5.2.0" + resolved "https://registry.yarnpkg.com/read-pkg/-/read-pkg-5.2.0.tgz#7bf295438ca5a33e56cd30e053b34ee7250c93cc" + integrity sha512-Ug69mNOpfvKDAc2Q8DRpMjjzdtrnv9HcSMX+4VsZxD1aZ6ZzrIE7rlzXBtWTyhULSMKg076AW6WR5iZpD0JiOg== dependencies: - load-json-file "^4.0.0" - normalize-package-data "^2.3.2" - path-type "^3.0.0" + "@types/normalize-package-data" "^2.4.0" + normalize-package-data "^2.5.0" + parse-json "^5.0.0" + type-fest "^0.6.0" readable-stream@^2.0.1, readable-stream@^2.0.6, readable-stream@^2.1.5, readable-stream@^2.2.2, readable-stream@~2.3.6: version "2.3.6" @@ -6458,12 +6582,10 @@ readable-stream@^2.0.1, readable-stream@^2.0.6, readable-stream@^2.1.5, readable string_decoder "~1.1.1" util-deprecate "~1.0.1" -realpath-native@^1.1.0: - version "1.1.0" - resolved "https://registry.yarnpkg.com/realpath-native/-/realpath-native-1.1.0.tgz#2003294fea23fb0672f2476ebe22fcf498a2d65c" - integrity sha512-wlgPA6cCIIg9gKz0fgAPjnzh4yR/LnXovwuo9hvyGvx3h8nX4+/iLZplfUWasXpqD8BdnGnP5njOFjkUwPzvjA== - dependencies: - util.promisify "^1.0.0" +realpath-native@^2.0.0: + version "2.0.0" + resolved "https://registry.yarnpkg.com/realpath-native/-/realpath-native-2.0.0.tgz#7377ac429b6e1fd599dc38d08ed942d0d7beb866" + integrity sha512-v1SEYUOXXdbBZK8ZuNgO4TBjamPsiSgcFr0aP+tEKpQZK8vooEUqV6nm6Cv502mX4NF2EfsnVqtNAHG+/6Ur1Q== recast@^0.18.1: version "0.18.7" @@ -6482,10 +6604,10 @@ rechoir@^0.6.2: dependencies: resolve "^1.1.6" -regenerate-unicode-properties@^7.0.0: - version "7.0.0" - resolved "https://registry.yarnpkg.com/regenerate-unicode-properties/-/regenerate-unicode-properties-7.0.0.tgz#107405afcc4a190ec5ed450ecaa00ed0cafa7a4c" - integrity sha512-s5NGghCE4itSlUS+0WUj88G6cfMVMmH8boTPNvABf8od+2dhT9WDlWu8n01raQAJZMOK8Ch6jSexaRO7swd6aw== +regenerate-unicode-properties@^8.2.0: + version "8.2.0" + resolved "https://registry.yarnpkg.com/regenerate-unicode-properties/-/regenerate-unicode-properties-8.2.0.tgz#e5de7111d655e7ba60c057dbe9ff37c87e65cdec" + integrity sha512-F9DjY1vKLo/tPePDycuH3dn9H1OTPIkVD9Kz4LODu+F2C75mgjAJ7x/gwy6ZcSNRAAkhNlJSOHRe8k3p+K9WhA== dependencies: regenerate "^1.4.0" @@ -6494,22 +6616,23 @@ regenerate@^1.4.0: resolved "https://registry.yarnpkg.com/regenerate/-/regenerate-1.4.0.tgz#4a856ec4b56e4077c557589cae85e7a4c8869a11" integrity sha512-1G6jJVDWrt0rK99kBjvEtziZNCICAuvIPkSiUFIQxVP06RCVpq3dmDo2oi6ABpYaDYaTRr67BEhL8r1wgEZZKg== -regenerator-runtime@^0.12.0: - version "0.12.1" - resolved "https://registry.yarnpkg.com/regenerator-runtime/-/regenerator-runtime-0.12.1.tgz#fa1a71544764c036f8c49b13a08b2594c9f8a0de" - integrity sha512-odxIc1/vDlo4iZcfXqRYFj0vpXFNoGdKMAUieAlFYO6m/nl5e9KR/beGf41z4a1FI+aQgtjhuaSlDxQ0hmkrHg== - regenerator-runtime@^0.13.2: version "0.13.2" resolved "https://registry.yarnpkg.com/regenerator-runtime/-/regenerator-runtime-0.13.2.tgz#32e59c9a6fb9b1a4aff09b4930ca2d4477343447" integrity sha512-S/TQAZJO+D3m9xeN1WTI8dLKBBiRgXBlTJvbWjCThHWZj9EvHK70Ff50/tYj2J/fvBY6JtFVwRuazHN2E7M9BA== -regenerator-transform@^0.13.3: - version "0.13.3" - resolved "https://registry.yarnpkg.com/regenerator-transform/-/regenerator-transform-0.13.3.tgz#264bd9ff38a8ce24b06e0636496b2c856b57bcbb" - integrity sha512-5ipTrZFSq5vU2YoGoww4uaRVAK4wyYC4TSICibbfEPOruUu8FFP7ErV0BjmbIOEpn3O/k9na9UEdYR/3m7N6uA== +regenerator-runtime@^0.13.4: + version "0.13.5" + resolved "https://registry.yarnpkg.com/regenerator-runtime/-/regenerator-runtime-0.13.5.tgz#d878a1d094b4306d10b9096484b33ebd55e26697" + integrity sha512-ZS5w8CpKFinUzOwW3c83oPeVXoNsrLsaCoLtJvAClH135j/R77RuymhiSErhm2lKcwSCIpmvIWSbDkIfAqKQlA== + +regenerator-transform@^0.14.2: + version "0.14.4" + resolved "https://registry.yarnpkg.com/regenerator-transform/-/regenerator-transform-0.14.4.tgz#5266857896518d1616a78a0479337a30ea974cc7" + integrity sha512-EaJaKPBI9GvKpvUz2mz4fhx7WPgvwRLY9v3hlNHWmAuJHI13T4nwKnNvm5RWJzEdnI5g5UwtOww+S8IdoUC2bw== dependencies: - private "^0.1.6" + "@babel/runtime" "^7.8.4" + private "^0.1.8" regex-not@^1.0.0, regex-not@^1.0.2: version "1.0.2" @@ -6531,27 +6654,27 @@ regexpp@^1.1.0: resolved "https://registry.yarnpkg.com/regexpp/-/regexpp-1.1.0.tgz#0e3516dd0b7904f413d2d4193dce4618c3a689ab" integrity sha512-LOPw8FpgdQF9etWMaAfG/WRthIdXJGYp4mJ2Jgn/2lpkbod9jPn0t9UqN7AxBOKNfzRbYyVfgc7Vk4t/MpnXgw== -regexpu-core@^4.1.3, regexpu-core@^4.2.0: - version "4.2.0" - resolved "https://registry.yarnpkg.com/regexpu-core/-/regexpu-core-4.2.0.tgz#a3744fa03806cffe146dea4421a3e73bdcc47b1d" - integrity sha512-Z835VSnJJ46CNBttalHD/dB+Sj2ezmY6Xp38npwU87peK6mqOzOpV8eYktdkLTEkzzD+JsTcxd84ozd8I14+rw== +regexpu-core@^4.7.0: + version "4.7.0" + resolved "https://registry.yarnpkg.com/regexpu-core/-/regexpu-core-4.7.0.tgz#fcbf458c50431b0bb7b45d6967b8192d91f3d938" + integrity sha512-TQ4KXRnIn6tz6tjnrXEkD/sshygKH/j5KzK86X8MkeHyZ8qst/LZ89j3X4/8HEIfHANTFIP/AbXakeRhWIl5YQ== dependencies: regenerate "^1.4.0" - regenerate-unicode-properties "^7.0.0" - regjsgen "^0.4.0" - regjsparser "^0.3.0" + regenerate-unicode-properties "^8.2.0" + regjsgen "^0.5.1" + regjsparser "^0.6.4" unicode-match-property-ecmascript "^1.0.4" - unicode-match-property-value-ecmascript "^1.0.2" + unicode-match-property-value-ecmascript "^1.2.0" -regjsgen@^0.4.0: - version "0.4.0" - resolved "https://registry.yarnpkg.com/regjsgen/-/regjsgen-0.4.0.tgz#c1eb4c89a209263f8717c782591523913ede2561" - integrity sha512-X51Lte1gCYUdlwhF28+2YMO0U6WeN0GLpgpA7LK7mbdDnkQYiwvEpmpe0F/cv5L14EbxgrdayAG3JETBv0dbXA== +regjsgen@^0.5.1: + version "0.5.1" + resolved "https://registry.yarnpkg.com/regjsgen/-/regjsgen-0.5.1.tgz#48f0bf1a5ea205196929c0d9798b42d1ed98443c" + integrity sha512-5qxzGZjDs9w4tzT3TPhCJqWdCc3RLYwy9J2NB0nm5Lz+S273lvWcpjaTGHsT1dc6Hhfq41uSEOw8wBmxrKOuyg== -regjsparser@^0.3.0: - version "0.3.0" - resolved "https://registry.yarnpkg.com/regjsparser/-/regjsparser-0.3.0.tgz#3c326da7fcfd69fa0d332575a41c8c0cdf588c96" - integrity sha512-zza72oZBBHzt64G7DxdqrOo/30bhHkwMUoT0WqfGu98XLd7N+1tsy5MJ96Bk4MD0y74n629RhmrGW6XlnLLwCA== +regjsparser@^0.6.4: + version "0.6.4" + resolved "https://registry.yarnpkg.com/regjsparser/-/regjsparser-0.6.4.tgz#a769f8684308401a66e9b529d2436ff4d0666272" + integrity sha512-64O87/dPDgfk8/RQqC4gkZoGyyWFIEUTTh80CU6CWuK5vkCGyekIx+oKcEIYtP/RAxSQltCZHCNu/mdd7fqlJw== dependencies: jsesc "~0.5.0" @@ -6570,23 +6693,23 @@ repeat-string@^1.6.1: resolved "https://registry.yarnpkg.com/repeat-string/-/repeat-string-1.6.1.tgz#8dcae470e1c88abc2d600fff4a776286da75e637" integrity sha1-jcrkcOHIirwtYA//Sndihtp15jc= -request-promise-core@1.1.1: - version "1.1.1" - resolved "https://registry.yarnpkg.com/request-promise-core/-/request-promise-core-1.1.1.tgz#3eee00b2c5aa83239cfb04c5700da36f81cd08b6" - integrity sha1-Pu4AssWqgyOc+wTFcA2jb4HNCLY= +request-promise-core@1.1.3: + version "1.1.3" + resolved "https://registry.yarnpkg.com/request-promise-core/-/request-promise-core-1.1.3.tgz#e9a3c081b51380dfea677336061fea879a829ee9" + integrity sha512-QIs2+ArIGQVp5ZYbWD5ZLCY29D5CfWizP8eWnm8FoGD1TX61veauETVQbrV60662V0oFBkrDOuaBI8XgtuyYAQ== dependencies: - lodash "^4.13.1" + lodash "^4.17.15" -request-promise-native@^1.0.5: - version "1.0.5" - resolved "https://registry.yarnpkg.com/request-promise-native/-/request-promise-native-1.0.5.tgz#5281770f68e0c9719e5163fd3fab482215f4fda5" - integrity sha1-UoF3D2jgyXGeUWP9P6tIIhX0/aU= +request-promise-native@^1.0.7: + version "1.0.8" + resolved "https://registry.yarnpkg.com/request-promise-native/-/request-promise-native-1.0.8.tgz#a455b960b826e44e2bf8999af64dff2bfe58cb36" + integrity sha512-dapwLGqkHtwL5AEbfenuzjTYg35Jd6KPytsC2/TLkVMz8rm+tNt72MGUWT1RP/aYawMpN6HqbNGBQaRcBtjQMQ== dependencies: - request-promise-core "1.1.1" - stealthy-require "^1.1.0" - tough-cookie ">=2.3.3" + request-promise-core "1.1.3" + stealthy-require "^1.1.1" + tough-cookie "^2.3.3" -request@^2.85.0, request@^2.87.0: +request@^2.85.0: version "2.88.0" resolved "https://registry.yarnpkg.com/request/-/request-2.88.0.tgz#9c2fca4f7d35b592efe57c7f0a55e81052124fef" integrity sha512-NAqBSrijGLZdM0WZNsInLJpkJokL72XYjUpnB0iwsRgxh7dB6COrHnTBNwN0E+lHDAJzu7kLAkDeY08z2/A0hg== @@ -6612,16 +6735,37 @@ request@^2.85.0, request@^2.87.0: tunnel-agent "^0.6.0" uuid "^3.3.2" +request@^2.88.0: + version "2.88.2" + resolved "https://registry.yarnpkg.com/request/-/request-2.88.2.tgz#d73c918731cb5a87da047e207234146f664d12b3" + integrity sha512-MsvtOrfG9ZcrOwAW+Qi+F6HbD0CWXEh9ou77uOb7FM2WPhwT7smM833PzanhJLsgXjN89Ir6V2PczXNnMpwKhw== + dependencies: + aws-sign2 "~0.7.0" + aws4 "^1.8.0" + caseless "~0.12.0" + combined-stream "~1.0.6" + extend "~3.0.2" + forever-agent "~0.6.1" + form-data "~2.3.2" + har-validator "~5.1.3" + http-signature "~1.2.0" + is-typedarray "~1.0.0" + isstream "~0.1.2" + json-stringify-safe "~5.0.1" + mime-types "~2.1.19" + oauth-sign "~0.9.0" + performance-now "^2.1.0" + qs "~6.5.2" + safe-buffer "^5.1.2" + tough-cookie "~2.5.0" + tunnel-agent "^0.6.0" + uuid "^3.3.2" + require-directory@^2.1.1: version "2.1.1" resolved "https://registry.yarnpkg.com/require-directory/-/require-directory-2.1.1.tgz#8c64ad5fd30dab1c976e2344ffe7f792a6a6df42" integrity sha1-jGStX9MNqxyXbiNE/+f3kqam30I= -require-main-filename@^1.0.1: - version "1.0.1" - resolved "https://registry.yarnpkg.com/require-main-filename/-/require-main-filename-1.0.1.tgz#97f717b69d48784f5f526a6c5aa8ffdda055a4d1" - integrity sha1-l/cXtp1IeE9fUmpsWqj/3aBVpNE= - require-main-filename@^2.0.0: version "2.0.0" resolved "https://registry.yarnpkg.com/require-main-filename/-/require-main-filename-2.0.0.tgz#d0b329ecc7cc0f61649f62215be69af54aa8989b" @@ -6635,12 +6779,12 @@ require-uncached@^1.0.3: caller-path "^0.1.0" resolve-from "^1.0.0" -resolve-cwd@^2.0.0: - version "2.0.0" - resolved "https://registry.yarnpkg.com/resolve-cwd/-/resolve-cwd-2.0.0.tgz#00a9f7387556e27038eae232caa372a6a59b665a" - integrity sha1-AKn3OHVW4nA46uIyyqNypqWbZlo= +resolve-cwd@^3.0.0: + version "3.0.0" + resolved "https://registry.yarnpkg.com/resolve-cwd/-/resolve-cwd-3.0.0.tgz#0f0075f1bb2544766cf73ba6a6e2adfebcb13f2d" + integrity sha512-OrZaX2Mb+rJCpH/6CpSqt9xFVpN++x01XnN2ie9g6P5/3xelLAkXWVADpdz1IHD/KFfEXyE6V0U01OQ3UO2rEg== dependencies: - resolve-from "^3.0.0" + resolve-from "^5.0.0" resolve-from@^1.0.0: version "1.0.1" @@ -6652,6 +6796,11 @@ resolve-from@^3.0.0: resolved "https://registry.yarnpkg.com/resolve-from/-/resolve-from-3.0.0.tgz#b22c7af7d9d6881bc8b6e653335eebcb0a188748" integrity sha1-six699nWiBvItuZTM17rywoYh0g= +resolve-from@^5.0.0: + version "5.0.0" + resolved "https://registry.yarnpkg.com/resolve-from/-/resolve-from-5.0.0.tgz#c35225843df8f776df21c57557bc087e9dfdfc69" + integrity sha512-qYg9KP24dD5qka9J47d0aVky0N+b4fTU89LN9iDnjB5waksiC49rvMB0PrUJQGoTmH50XPiqOvAjDfaijGxYZw== + resolve-url@^0.2.1: version "0.2.1" resolved "https://registry.yarnpkg.com/resolve-url/-/resolve-url-0.2.1.tgz#2c637fe77c893afd2a663fe21aa9080068e2052a" @@ -6662,17 +6811,10 @@ resolve@1.1.7: resolved "https://registry.yarnpkg.com/resolve/-/resolve-1.1.7.tgz#203114d82ad2c5ed9e8e0411b3932875e889e97b" integrity sha1-IDEU2CrSxe2ejgQRs5ModeiJ6Xs= -resolve@^1.1.6, resolve@^1.3.2, resolve@^1.5.0, resolve@^1.8.1: - version "1.8.1" - resolved "https://registry.yarnpkg.com/resolve/-/resolve-1.8.1.tgz#82f1ec19a423ac1fbd080b0bab06ba36e84a7a26" - integrity sha512-AicPrAC7Qu1JxPCZ9ZgCZlY35QgFnNqc+0LtbRNxnVw4TXvjQ72wnuL9JQcEBgXkI9JM8MsT9kaQoHcpCRJOYA== - dependencies: - path-parse "^1.0.5" - -resolve@^1.9.0: - version "1.10.0" - resolved "https://registry.yarnpkg.com/resolve/-/resolve-1.10.0.tgz#3bdaaeaf45cc07f375656dfd2e54ed0810b101ba" - integrity sha512-3sUr9aq5OfSg2S9pNtPA9hL1FVEAjvfOC4leW0SNf/mpnaakz2a9femSd6LqAww2RaFctwyf1lCqnTHuF1rxDg== +resolve@^1.1.6, resolve@^1.10.0, resolve@^1.15.1, resolve@^1.3.2, resolve@^1.5.0, resolve@^1.8.1, resolve@^1.9.0: + version "1.15.1" + resolved "https://registry.yarnpkg.com/resolve/-/resolve-1.15.1.tgz#27bdcdeffeaf2d6244b95bb0f9f4b4653451f3e8" + integrity sha512-84oo6ZTtoTUpjgNEr5SJyzQhzL72gaRodsSfyxC/AXRvwu0Yse9H8eF9IpGo7b8YetZhlI6v7ZQ6bKBFV/6S7w== dependencies: path-parse "^1.0.6" @@ -6701,10 +6843,10 @@ rimraf@^2.5.4, rimraf@^2.6.1: dependencies: glob "^7.0.5" -rimraf@^2.6.2, rimraf@~2.6.2: - version "2.6.3" - resolved "https://registry.yarnpkg.com/rimraf/-/rimraf-2.6.3.tgz#b2d104fe0d8fb27cf9e0a1cda8262dd3833c6cab" - integrity sha512-mwqeW5XsA2qAejG46gYdENaxXjx9onRNCfn7L0duuP4hCuTIi/QO7PDK07KJfp1d+izWPrzEJDcSqBa0OZQriA== +rimraf@^3.0.0: + version "3.0.2" + resolved "https://registry.yarnpkg.com/rimraf/-/rimraf-3.0.2.tgz#f1a5402ba6220ad52cc1282bac1ae3aa49fd061a" + integrity sha512-JZkJMZkAGFFPP2YqXZXPbMlMBgsxzE8ILs4lMIX/2o0L9UBw9O/Y3o6wFw/i9YLapcUJWwqbi3kdxIPdC62TIA== dependencies: glob "^7.1.3" @@ -6720,6 +6862,13 @@ rimraf@~2.4.0: dependencies: glob "^6.0.1" +rimraf@~2.6.2: + version "2.6.3" + resolved "https://registry.yarnpkg.com/rimraf/-/rimraf-2.6.3.tgz#b2d104fe0d8fb27cf9e0a1cda8262dd3833c6cab" + integrity sha512-mwqeW5XsA2qAejG46gYdENaxXjx9onRNCfn7L0duuP4hCuTIi/QO7PDK07KJfp1d+izWPrzEJDcSqBa0OZQriA== + dependencies: + glob "^7.1.3" + rsvp@^3.3.3: version "3.6.2" resolved "https://registry.yarnpkg.com/rsvp/-/rsvp-3.6.2.tgz#2e96491599a96cde1b515d5674a8f7a91452926a" @@ -6800,6 +6949,13 @@ sax@^1.2.1, sax@^1.2.4: resolved "https://registry.yarnpkg.com/sax/-/sax-1.2.4.tgz#2816234e2378bddc4e5354fab5caa895df7100d9" integrity sha512-NqVDv9TpANUjFm0N8uM5GxL36UgKi9/atZw+x7YFnQ8ckwFGKrl4xX4yWtrey3UJm5nP1kUbnYgLopqWNSRhWw== +saxes@^3.1.9: + version "3.1.11" + resolved "https://registry.yarnpkg.com/saxes/-/saxes-3.1.11.tgz#d59d1fd332ec92ad98a2e0b2ee644702384b1c5b" + integrity sha512-Ydydq3zC+WYDJK1+gRxRapLIED9PWeSuuS41wqyoRmzvhhh9nc+QQrVMKJYzJFULazeGhzSV0QleN2wD3boh2g== + dependencies: + xmlchars "^2.1.1" + scheduler@0.19.1, scheduler@^0.19.1: version "0.19.1" resolved "https://registry.yarnpkg.com/scheduler/-/scheduler-0.19.1.tgz#4f3e2ed2c1a7d65681f4c854fa8c5a1ccb40f196" @@ -6808,12 +6964,22 @@ scheduler@0.19.1, scheduler@^0.19.1: loose-envify "^1.1.0" object-assign "^4.1.1" -"semver@2 || 3 || 4 || 5", semver@^5.1.0, semver@^5.3.0, semver@^5.4.1, semver@^5.5.0, semver@^5.5.1: +"semver@2 || 3 || 4 || 5", semver@^5.6.0: + version "5.7.1" + resolved "https://registry.yarnpkg.com/semver/-/semver-5.7.1.tgz#a954f931aeba508d307bbf069eff0c01c96116f7" + integrity sha512-sauaDf/PZdVgrLTNYHRtpXa1iRiKcaebiKQ1BJdpQlWH2lCvexQdX55snPFyK7QzpudqbCI0qXFfOasHdyNDGQ== + +semver@7.0.0: + version "7.0.0" + resolved "https://registry.yarnpkg.com/semver/-/semver-7.0.0.tgz#5f3ca35761e47e05b206c6daff2cf814f0316b8e" + integrity sha512-+GB6zVA9LWh6zovYQLALHwv5rb2PHGlJi3lfiqIHxR0uuwCgefcOJc59v9fv1w8GbStwxuuqqAjI9NMAOOgq1A== + +semver@^5.1.0, semver@^5.3.0, semver@^5.4.1, semver@^5.5.0, semver@^5.5.1: version "5.6.0" resolved "https://registry.yarnpkg.com/semver/-/semver-5.6.0.tgz#7e74256fbaa49c75aa7c7a205cc22799cac80004" integrity sha512-RS9R6R35NYgQn++fkDWaOmqGoj4Ek9gGs+DPxNUZKuwE183xjJroKvyo1IzVFeXvUrvmALy6FWD5xrdJT25gMg== -semver@^6.2.0, semver@^6.3.0: +semver@^6.0.0, semver@^6.3.0: version "6.3.0" resolved "https://registry.yarnpkg.com/semver/-/semver-6.3.0.tgz#ee0a64c8af5e8ceea67687b133761e1becbd1d3d" integrity sha512-b39TBaTSfV6yBrapU89p5fKekE2m/NwnDocOVruQFS1/veMgdzuPcnOM34M6CwxW8jH/lxEa5rBoDeUwu5HHTw== @@ -6894,11 +7060,23 @@ shebang-command@^1.2.0: dependencies: shebang-regex "^1.0.0" +shebang-command@^2.0.0: + version "2.0.0" + resolved "https://registry.yarnpkg.com/shebang-command/-/shebang-command-2.0.0.tgz#ccd0af4f8835fbdc265b82461aaf0c36663f34ea" + integrity sha512-kHxr2zZpYtdmrN1qDjrrX/Z1rR1kG8Dx+gkpK1G4eXmvXswmcE1hTWBWYUzlraYw1/yZp6YuDY77YtvbN0dmDA== + dependencies: + shebang-regex "^3.0.0" + shebang-regex@^1.0.0: version "1.0.0" resolved "https://registry.yarnpkg.com/shebang-regex/-/shebang-regex-1.0.0.tgz#da42f49740c0b42db2ca9728571cb190c98efea3" integrity sha1-2kL0l0DAtC2yypcoVxyxkMmO/qM= +shebang-regex@^3.0.0: + version "3.0.0" + resolved "https://registry.yarnpkg.com/shebang-regex/-/shebang-regex-3.0.0.tgz#ae16f1644d873ecad843b0307b143362d4c42172" + integrity sha512-7++dFhtcx3353uBaq8DDR4NuxBetBzC7ZQOhmTQInHEd6bSrXdiEyzCvG07Z44UYdLShWUyXt5M/yhz8ekcb1A== + shell-quote@1.6.1, shell-quote@^1.6.1: version "1.6.1" resolved "https://registry.yarnpkg.com/shell-quote/-/shell-quote-1.6.1.tgz#f4781949cce402697127430ea3b3c5476f481767" @@ -7026,7 +7204,15 @@ source-map-resolve@^0.5.0: source-map-url "^0.4.0" urix "^0.1.0" -source-map-support@^0.5.6, source-map-support@^0.5.9: +source-map-support@^0.5.16: + version "0.5.16" + resolved "https://registry.yarnpkg.com/source-map-support/-/source-map-support-0.5.16.tgz#0ae069e7fe3ba7538c64c98515e35339eac5a042" + integrity sha512-efyLRJDr68D9hBBNIPWFjhpFzURh+KJykQwvMyW5UiZzYwoF6l4YMMDIJJEyFWxWCqfyxLzz6tSfUFR+kXXsVQ== + dependencies: + buffer-from "^1.0.0" + source-map "^0.6.0" + +source-map-support@^0.5.6: version "0.5.9" resolved "https://registry.yarnpkg.com/source-map-support/-/source-map-support-0.5.9.tgz#41bc953b2534267ea2d605bccfa7bfa3111ced5f" integrity sha512-gR6Rw4MvUlYy83vP0vxoVNzM6t8MUXqNuRsuBmBHQDu1Fh6X015FrLdgoDKcNdkwGubozq0P4N0Q37UyFVr1EA== @@ -7049,10 +7235,15 @@ source-map@^0.6.0, source-map@^0.6.1, source-map@~0.6.1: resolved "https://registry.yarnpkg.com/source-map/-/source-map-0.6.1.tgz#74722af32e9614e9c287a8d0bbde48b5e2f1a263" integrity sha512-UjgapumWlbMhkBgzT7Ykc5YXUT46F0iKu8SGXq0bcwP5dz/h0Plj6enJqjz1Zbq2l5WaqYnrVbwWOWMyF3F47g== +source-map@^0.7.3: + version "0.7.3" + resolved "https://registry.yarnpkg.com/source-map/-/source-map-0.7.3.tgz#5302f8169031735226544092e64981f751750383" + integrity sha512-CkCj6giN3S+n9qrYiBTX5gystlENnRW5jZeNLHpe6aue+SrHcG5VYwujhW9s4dY31mEGsxBDrHR6oI69fTXsaQ== + spdx-correct@^3.0.0: - version "3.0.2" - resolved "https://registry.yarnpkg.com/spdx-correct/-/spdx-correct-3.0.2.tgz#19bb409e91b47b1ad54159243f7312a858db3c2e" - integrity sha512-q9hedtzyXHr5S0A1vEPoK/7l8NpfkFYTq6iCY+Pno2ZbdZR6WexZFtqeVGkGxW3TEJMN914Z55EnAGMmenlIQQ== + version "3.1.0" + resolved "https://registry.yarnpkg.com/spdx-correct/-/spdx-correct-3.1.0.tgz#fb83e504445268f154b074e218c87c003cd31df4" + integrity sha512-lr2EZCctC2BNR7j7WzJ2FpDznxky1sjfxvvYEyzxNyb6lZXHODmEoJeFu4JupYlkfha1KZpJyoqiJ7pgA1qq8Q== dependencies: spdx-expression-parse "^3.0.0" spdx-license-ids "^3.0.0" @@ -7071,9 +7262,9 @@ spdx-expression-parse@^3.0.0: spdx-license-ids "^3.0.0" spdx-license-ids@^3.0.0: - version "3.0.1" - resolved "https://registry.yarnpkg.com/spdx-license-ids/-/spdx-license-ids-3.0.1.tgz#e2a303236cac54b04031fa7a5a79c7e701df852f" - integrity sha512-TfOfPcYGBB5sDuPn3deByxPhmfegAhpDYKSOXZQN81Oyrrif8ZCodOLzK3AesELnCx03kikhyDwh0pfvvQvF8w== + version "3.0.5" + resolved "https://registry.yarnpkg.com/spdx-license-ids/-/spdx-license-ids-3.0.5.tgz#3694b5804567a458d3c8045842a6358632f62654" + integrity sha512-J+FWzZoynJEXGphVIS+XEh3kFSjZX/1i9gFBaWQcB+/tmpe2qUsSBABpcxqxnAxFdiUFEgAX1bjYGQvIZmoz9Q== split-string@^3.0.1, split-string@^3.0.2: version "3.1.0" @@ -7135,7 +7326,7 @@ statuses@~1.4.0: resolved "https://registry.yarnpkg.com/statuses/-/statuses-1.4.0.tgz#bb73d446da2796106efcc1b601a253d6c46bd087" integrity sha512-zhSCtt8v2NDrRlPQpCNtw/heZLtfUDqxBM1udqikb/Hbk52LK4nQSwr10u77iopCW5LsyHpuXS0GnEc48mLeew== -stealthy-require@^1.1.0: +stealthy-require@^1.1.1: version "1.1.1" resolved "https://registry.yarnpkg.com/stealthy-require/-/stealthy-require-1.1.1.tgz#35b09875b4ff49f26a777e509b3090a3226bf24b" integrity sha1-NbCYdbT/SfJqd35QmzCQoyJr8ks= @@ -7145,13 +7336,13 @@ stream-buffers@~2.2.0: resolved "https://registry.yarnpkg.com/stream-buffers/-/stream-buffers-2.2.0.tgz#91d5f5130d1cef96dcfa7f726945188741d09ee4" integrity sha1-kdX1Ew0c75bc+n9yaUUYh0HQnuQ= -string-length@^2.0.0: - version "2.0.0" - resolved "https://registry.yarnpkg.com/string-length/-/string-length-2.0.0.tgz#d40dbb686a3ace960c1cffca562bf2c45f8363ed" - integrity sha1-1A27aGo6zpYMHP/KVivyxF+DY+0= +string-length@^3.1.0: + version "3.1.0" + resolved "https://registry.yarnpkg.com/string-length/-/string-length-3.1.0.tgz#107ef8c23456e187a8abd4a61162ff4ac6e25837" + integrity sha512-Ttp5YvkGm5v9Ijagtaz1BnN+k9ObpvS0eIBblPMp2YWL8FBmi9qblQ9fexc2k/CXFgrTIteU3jAw3payCnwSTA== dependencies: astral-regex "^1.0.0" - strip-ansi "^4.0.0" + strip-ansi "^5.2.0" string-width@^1.0.1: version "1.0.2" @@ -7241,16 +7432,21 @@ strip-ansi@^6.0.0: dependencies: ansi-regex "^5.0.0" -strip-bom@^3.0.0: - version "3.0.0" - resolved "https://registry.yarnpkg.com/strip-bom/-/strip-bom-3.0.0.tgz#2334c18e9c759f7bdd56fdef7e9ae3d588e68ed3" - integrity sha1-IzTBjpx1n3vdVv3vfprj1YjmjtM= +strip-bom@^4.0.0: + version "4.0.0" + resolved "https://registry.yarnpkg.com/strip-bom/-/strip-bom-4.0.0.tgz#9c3505c1db45bcedca3d9cf7a16f5c5aa3901878" + integrity sha512-3xurFv5tEgii33Zi8Jtp55wEIILR9eh34FAW00PZf+JnSsTmV/ioewSgQl97JHvgjoRGwPShsWm+IdrxB35d0w== strip-eof@^1.0.0: version "1.0.0" resolved "https://registry.yarnpkg.com/strip-eof/-/strip-eof-1.0.0.tgz#bb43ff5598a6eb05d89b59fcd129c983313606bf" integrity sha1-u0P/VZim6wXYm1n80SnJgzE2Br8= +strip-final-newline@^2.0.0: + version "2.0.0" + resolved "https://registry.yarnpkg.com/strip-final-newline/-/strip-final-newline-2.0.0.tgz#89b852fb2fcbe936f6f4b3187afb0a12c1ab58ad" + integrity sha512-BrpvfNAE3dcvq7ll3xVumzjKjZQ5tI1sEUIKr3Uoks0XUl45St3FlatVqef9prk4jRDzhW6WZg+3bk93y6pLjA== + strip-json-comments@^2.0.1, strip-json-comments@~2.0.1: version "2.0.1" resolved "https://registry.yarnpkg.com/strip-json-comments/-/strip-json-comments-2.0.1.tgz#3c531942e908c2697c0ec344858c286c7ca0a60a" @@ -7273,20 +7469,28 @@ supports-color@^5.3.0: dependencies: has-flag "^3.0.0" -supports-color@^6.0.0, supports-color@^6.1.0: +supports-color@^6.1.0: version "6.1.0" resolved "https://registry.yarnpkg.com/supports-color/-/supports-color-6.1.0.tgz#0764abc69c63d5ac842dd4867e8d025e880df8f3" integrity sha512-qe1jfm1Mg7Nq/NSh6XE24gPXROEVsWHxC1LIx//XNlD9iw7YZQGjZNjYN7xGaEG6iKdA8EtNFW6R0gjnVXp+wQ== dependencies: has-flag "^3.0.0" -supports-color@^7.1.0: +supports-color@^7.0.0, supports-color@^7.1.0: version "7.1.0" resolved "https://registry.yarnpkg.com/supports-color/-/supports-color-7.1.0.tgz#68e32591df73e25ad1c4b49108a2ec507962bfd1" integrity sha512-oRSIpR8pxT1Wr2FquTNnGet79b3BWljqOuoW/h4oBhxJ/HUbX5nX6JSruTkvXDCFMwDPvsaTTbvMLKZWSy0R5g== dependencies: has-flag "^4.0.0" +supports-hyperlinks@^2.0.0: + version "2.1.0" + resolved "https://registry.yarnpkg.com/supports-hyperlinks/-/supports-hyperlinks-2.1.0.tgz#f663df252af5f37c5d49bbd7eeefa9e0b9e59e47" + integrity sha512-zoE5/e+dnEijk6ASB6/qrK+oYdm2do1hjoLWrqUC/8WEIW1gbxFcKuBof7sW8ArN6e+AYvsE8HBGiVRWL/F5CA== + dependencies: + has-flag "^4.0.0" + supports-color "^7.0.0" + symbol-observable@1.0.1: version "1.0.1" resolved "https://registry.yarnpkg.com/symbol-observable/-/symbol-observable-1.0.1.tgz#8340fc4702c3122df5d22288f88283f513d3fdd4" @@ -7355,26 +7559,38 @@ tempfile@^2.0.0: temp-dir "^1.0.0" uuid "^3.0.1" -test-exclude@^5.0.0: - version "5.1.0" - resolved "https://registry.yarnpkg.com/test-exclude/-/test-exclude-5.1.0.tgz#6ba6b25179d2d38724824661323b73e03c0c1de1" - integrity sha512-gwf0S2fFsANC55fSeSqpb8BYk6w3FDvwZxfNjeF6FRgvFa43r+7wRiA/Q0IxoRU37wB/LE8IQ4221BsNucTaCA== +terminal-link@^2.0.0: + version "2.1.1" + resolved "https://registry.yarnpkg.com/terminal-link/-/terminal-link-2.1.1.tgz#14a64a27ab3c0df933ea546fba55f2d078edc994" + integrity sha512-un0FmiRUQNr5PJqy9kP7c40F5BOfpGlYTrxonDChEZB7pzZxRNp/bt+ymiy9/npwXya9KH99nJ/GXFIiUkYGFQ== dependencies: - arrify "^1.0.1" + ansi-escapes "^4.2.1" + supports-hyperlinks "^2.0.0" + +test-exclude@^6.0.0: + version "6.0.0" + resolved "https://registry.yarnpkg.com/test-exclude/-/test-exclude-6.0.0.tgz#04a8698661d805ea6fa293b6cb9e63ac044ef15e" + integrity sha512-cAGWPIyOHU6zlmg88jwm7VRyXnMN7iV68OGAbYDk/Mh/xC/pzVPlQtY6ngoIH/5/tciuhGfvESU8GrHrcxD56w== + dependencies: + "@istanbuljs/schema" "^0.1.2" + glob "^7.1.4" minimatch "^3.0.4" - read-pkg-up "^4.0.0" - require-main-filename "^1.0.1" text-table@^0.2.0: version "0.2.0" resolved "https://registry.yarnpkg.com/text-table/-/text-table-0.2.0.tgz#7f5ee823ae805207c00af2df4a84ec3fcfa570b4" integrity sha1-f17oI66AUgfACvLfSoTsP8+lcLQ= -throat@^4.0.0, throat@^4.1.0: +throat@^4.1.0: version "4.1.0" resolved "https://registry.yarnpkg.com/throat/-/throat-4.1.0.tgz#89037cbc92c56ab18926e6ba4cbb200e15672a6a" integrity sha1-iQN8vJLFarGJJua6TLsgDhVnKmo= +throat@^5.0.0: + version "5.0.0" + resolved "https://registry.yarnpkg.com/throat/-/throat-5.0.0.tgz#c5199235803aad18754a667d659b5e72ce16764b" + integrity sha512-fcwX4mndzpLQKBS1DVYhGAcYaYt7vsHNIvQV+WXMvnow5cgjPphq5CaayLaGsjRdSCKZFNGt7/GYAuXaNOiYCA== + through2@^2.0.0: version "2.0.3" resolved "https://registry.yarnpkg.com/through2/-/through2-2.0.3.tgz#0004569b37c7c74ba39c43f3ced78d1ad94140be" @@ -7433,6 +7649,13 @@ to-regex-range@^2.1.0: is-number "^3.0.0" repeat-string "^1.6.1" +to-regex-range@^5.0.1: + version "5.0.1" + resolved "https://registry.yarnpkg.com/to-regex-range/-/to-regex-range-5.0.1.tgz#1648c44aae7c8d988a326018ed72f5b4dd0392e4" + integrity sha512-65P7iz6X5yEr1cwcgvQxbbIw7Uk3gOy5dIdtZ4rDveLqhrdJP+Li/Hx6tyK0NEb+2GCyneCMJiGqrADCSNk8sQ== + dependencies: + is-number "^7.0.0" + to-regex@^3.0.1, to-regex@^3.0.2: version "3.0.2" resolved "https://registry.yarnpkg.com/to-regex/-/to-regex-3.0.2.tgz#13cfdd9b336552f30b51f33a8ae1b42a7a7599ce" @@ -7443,7 +7666,24 @@ to-regex@^3.0.1, to-regex@^3.0.2: regex-not "^1.0.2" safe-regex "^1.1.0" -tough-cookie@>=2.3.3, tough-cookie@^2.3.4, tough-cookie@~2.4.3: +tough-cookie@^2.3.3, tough-cookie@~2.5.0: + version "2.5.0" + resolved "https://registry.yarnpkg.com/tough-cookie/-/tough-cookie-2.5.0.tgz#cd9fb2a0aa1d5a12b473bd9fb96fa3dcff65ade2" + integrity sha512-nlLsUzgm1kfLXSXfRZMc1KLAugd4hqJHDTvc2hDIwS3mZAfMEuMbc03SujMF+GEcpaX/qboeycw6iO8JwVv2+g== + dependencies: + psl "^1.1.28" + punycode "^2.1.1" + +tough-cookie@^3.0.1: + version "3.0.1" + resolved "https://registry.yarnpkg.com/tough-cookie/-/tough-cookie-3.0.1.tgz#9df4f57e739c26930a018184887f4adb7dca73b2" + integrity sha512-yQyJ0u4pZsv9D4clxO69OEjLWYw+jbgspjTue4lTQZLfV0c5l1VmK2y1JK8E9ahdpltPOaAThPcp5nKPUgSnsg== + dependencies: + ip-regex "^2.1.0" + psl "^1.1.28" + punycode "^2.1.1" + +tough-cookie@~2.4.3: version "2.4.3" resolved "https://registry.yarnpkg.com/tough-cookie/-/tough-cookie-2.4.3.tgz#53f36da3f47783b0925afa06ff9f3b165280f781" integrity sha512-Q5srk/4vDM54WJsJio3XNn6K2sCG+CQ8G5Wz6bZhRZoAe/+TxjWB/GlFAnYEbkYVlON9FMk/fE3h2RLpPXo4lQ== @@ -7458,11 +7698,6 @@ tr46@^1.0.1: dependencies: punycode "^2.1.0" -trim-right@^1.0.1: - version "1.0.1" - resolved "https://registry.yarnpkg.com/trim-right/-/trim-right-1.0.1.tgz#cb2e1203067e0c8de1f614094b9fe45704ea6003" - integrity sha1-yy4SAwZ+DI3h9hQJS5/kVwTqYAM= - truncate-utf8-bytes@^1.0.0: version "1.0.2" resolved "https://registry.yarnpkg.com/truncate-utf8-bytes/-/truncate-utf8-bytes-1.0.2.tgz#405923909592d56f78a5818434b0b78489ca5f2b" @@ -7489,6 +7724,33 @@ type-check@~0.3.2: dependencies: prelude-ls "~1.1.2" +type-detect@4.0.8: + version "4.0.8" + resolved "https://registry.yarnpkg.com/type-detect/-/type-detect-4.0.8.tgz#7646fb5f18871cfbb7749e69bd39a6388eb7450c" + integrity sha512-0fr/mIH1dlO+x7TlcMy+bIDqKPsw/70tVyeHW787goQjhmqaZe10uwLujubK9q9Lg6Fiho1KUKDYz0Z7k7g5/g== + +type-fest@^0.11.0: + version "0.11.0" + resolved "https://registry.yarnpkg.com/type-fest/-/type-fest-0.11.0.tgz#97abf0872310fed88a5c466b25681576145e33f1" + integrity sha512-OdjXJxnCN1AvyLSzeKIgXTXxV+99ZuXl3Hpo9XpJAv9MBcHrrJOQ5kV7ypXOuQie+AmWG25hLbiKdwYTifzcfQ== + +type-fest@^0.6.0: + version "0.6.0" + resolved "https://registry.yarnpkg.com/type-fest/-/type-fest-0.6.0.tgz#8d2a2370d3df886eb5c90ada1c5bf6188acf838b" + integrity sha512-q+MB8nYR1KDLrgr4G5yemftpMC7/QLqVndBmEEdqzmNj5dcFOO4Oo8qlwZE3ULT3+Zim1F8Kq4cBnikNhlCMlg== + +type-fest@^0.8.1: + version "0.8.1" + resolved "https://registry.yarnpkg.com/type-fest/-/type-fest-0.8.1.tgz#09e249ebde851d3b1e48d27c105444667f17b83d" + integrity sha512-4dbzIzqvjtgiM5rw1k5rEHtBANKmdudhGyBEajN01fEyhaAIhsoKNy6y7+IN93IfpFtwY9iqi7kD+xwKhQsNJA== + +typedarray-to-buffer@^3.1.5: + version "3.1.5" + resolved "https://registry.yarnpkg.com/typedarray-to-buffer/-/typedarray-to-buffer-3.1.5.tgz#a97ee7a9ff42691b9f783ff1bc5112fe3fca9080" + integrity sha512-zdu8XMNEDepKKR+XYOXAVPtWui0ly0NtohUscw+UmaHiAWT8hrV1rr//H6V+0DvJ3OQ19S979M0laLfX8rm82Q== + dependencies: + is-typedarray "^1.0.0" + typedarray@^0.0.6: version "0.0.6" resolved "https://registry.yarnpkg.com/typedarray/-/typedarray-0.0.6.tgz#867ac74e3864187b1d3d47d996a78ec5c8830777" @@ -7530,10 +7792,10 @@ unicode-match-property-ecmascript@^1.0.4: unicode-canonical-property-names-ecmascript "^1.0.4" unicode-property-aliases-ecmascript "^1.0.4" -unicode-match-property-value-ecmascript@^1.0.2: - version "1.0.2" - resolved "https://registry.yarnpkg.com/unicode-match-property-value-ecmascript/-/unicode-match-property-value-ecmascript-1.0.2.tgz#9f1dc76926d6ccf452310564fd834ace059663d4" - integrity sha512-Rx7yODZC1L/T8XKo/2kNzVAQaRE88AaMvI1EF/Xnj3GW2wzN6fop9DDWuFAKUVFH7vozkz26DzP0qyWLKLIVPQ== +unicode-match-property-value-ecmascript@^1.2.0: + version "1.2.0" + resolved "https://registry.yarnpkg.com/unicode-match-property-value-ecmascript/-/unicode-match-property-value-ecmascript-1.2.0.tgz#0d91f600eeeb3096aa962b1d6fc88876e64ea531" + integrity sha512-wjuQHGQVofmSJv1uVISKLE5zO2rNGzM/KCYZch/QQvez7C1hUhBIuZ701fYXExuufJFMPhv2SyL8CyoIfMLbIQ== unicode-property-aliases-ecmascript@^1.0.4: version "1.0.4" @@ -7600,14 +7862,6 @@ util-deprecate@~1.0.1: resolved "https://registry.yarnpkg.com/util-deprecate/-/util-deprecate-1.0.2.tgz#450d4dc9fa70de732762fbd2d4a28981419a0ccf" integrity sha1-RQ1Nyfpw3nMnYvvS1KKJgUGaDM8= -util.promisify@^1.0.0: - version "1.0.0" - resolved "https://registry.yarnpkg.com/util.promisify/-/util.promisify-1.0.0.tgz#440f7165a459c9a16dc145eb8e72f35687097030" - integrity sha512-i+6qA2MPhvoKLuxnJNpXAGhg7HphQOSUq2LKMZD0m15EiskXUkMvKdF4Uui0WYeCUGea+o2cw/ZuwehtfsrNkA== - dependencies: - define-properties "^1.1.2" - object.getownpropertydescriptors "^2.0.3" - utils-merge@1.0.1: version "1.0.1" resolved "https://registry.yarnpkg.com/utils-merge/-/utils-merge-1.0.1.tgz#9f95710f50a267947b2ccc124741c1028427e713" @@ -7618,6 +7872,20 @@ uuid@^3.0.1, uuid@^3.3.2: resolved "https://registry.yarnpkg.com/uuid/-/uuid-3.3.2.tgz#1b4af4955eb3077c501c23872fc6513811587131" integrity sha512-yXJmeNaw3DnnKAOKJE51sL/ZaYfWJRl1pK9dr19YFCu0ObS231AB1/LbqTKRAQ5kw8A90rA6fr4riOUpTZvQZA== +uuid@^3.3.3: + version "3.4.0" + resolved "https://registry.yarnpkg.com/uuid/-/uuid-3.4.0.tgz#b23e4358afa8a202fe7a100af1f5f883f02007ee" + integrity sha512-HjSDRw6gZE5JMggctHBcjVak08+KEVhSIiDzFnT9S9aegmp85S/bReBVTb4QTFaRNptJ9kuYaNhnbNEOkbKb/A== + +v8-to-istanbul@^4.1.3: + version "4.1.3" + resolved "https://registry.yarnpkg.com/v8-to-istanbul/-/v8-to-istanbul-4.1.3.tgz#22fe35709a64955f49a08a7c7c959f6520ad6f20" + integrity sha512-sAjOC+Kki6aJVbUOXJbcR0MnbfjvBzwKZazEJymA2IX49uoOdEdk+4fBq5cXgYgiyKtAyrrJNtBZdOeDIF+Fng== + dependencies: + "@types/istanbul-lib-coverage" "^2.0.1" + convert-source-map "^1.6.0" + source-map "^0.7.3" + validate-npm-package-license@^3.0.1: version "3.0.4" resolved "https://registry.yarnpkg.com/validate-npm-package-license/-/validate-npm-package-license-3.0.4.tgz#fc91f6b9c7ba15c857f4cb2c5defeec39d4f410a" @@ -7657,6 +7925,15 @@ w3c-hr-time@^1.0.1: dependencies: browser-process-hrtime "^0.1.2" +w3c-xmlserializer@^1.1.2: + version "1.1.2" + resolved "https://registry.yarnpkg.com/w3c-xmlserializer/-/w3c-xmlserializer-1.1.2.tgz#30485ca7d70a6fd052420a3d12fd90e6339ce794" + integrity sha512-p10l/ayESzrBMYWRID6xbuCKh2Fp77+sA0doRuGn4tTIMrrZVeqfpKjXHY+oDh3K4nLdPgNwMTVP6Vp4pvqbNg== + dependencies: + domexception "^1.0.1" + webidl-conversions "^4.0.2" + xml-name-validator "^3.0.0" + walker@^1.0.7, walker@~1.0.5: version "1.0.7" resolved "https://registry.yarnpkg.com/walker/-/walker-1.0.7.tgz#2f7f9b8fd10d677262b18a884e28d19618e028fb" @@ -7676,7 +7953,7 @@ webidl-conversions@^4.0.2: resolved "https://registry.yarnpkg.com/webidl-conversions/-/webidl-conversions-4.0.2.tgz#a855980b1f0b6b359ba1d5d9fb39ae941faa63ad" integrity sha512-YQ+BmxuTgd6UXZW3+ICGfyqRyHXVlD5GtQr5+qjiNW7bF0cqrzX500HVXPBOvgXb5YnzDd+h0zqyv61KUD7+Sg== -whatwg-encoding@^1.0.1, whatwg-encoding@^1.0.3: +whatwg-encoding@^1.0.1, whatwg-encoding@^1.0.5: version "1.0.5" resolved "https://registry.yarnpkg.com/whatwg-encoding/-/whatwg-encoding-1.0.5.tgz#5abacf777c32166a51d085d6b4f3e7d27113ddb0" integrity sha512-b5lim54JOPN9HtzvK9HFXvBma/rnfFeqsic0hSpjtDbVxR3dJKLc+KB4V6GgiGOvl7CY/KNh8rxSo9DKQrnUEw== @@ -7688,19 +7965,10 @@ whatwg-fetch@>=0.10.0, whatwg-fetch@^3.0.0: resolved "https://registry.yarnpkg.com/whatwg-fetch/-/whatwg-fetch-3.0.0.tgz#fc804e458cc460009b1a2b966bc8817d2578aefb" integrity sha512-9GSJUgz1D4MfyKU7KRqwOjXCXTqWdFNvEr7eUBYchQiVc744mqK/MzXPNR2WsPkmkOa4ywfg8C2n8h+13Bey1Q== -whatwg-mimetype@^2.1.0: - version "2.2.0" - resolved "https://registry.yarnpkg.com/whatwg-mimetype/-/whatwg-mimetype-2.2.0.tgz#a3d58ef10b76009b042d03e25591ece89b88d171" - integrity sha512-5YSO1nMd5D1hY3WzAQV3PzZL83W3YeyR1yW9PcH26Weh1t+Vzh9B6XkDh7aXm83HBZ4nSMvkjvN2H2ySWIvBgw== - -whatwg-url@^6.4.1: - version "6.5.0" - resolved "https://registry.yarnpkg.com/whatwg-url/-/whatwg-url-6.5.0.tgz#f2df02bff176fd65070df74ad5ccbb5a199965a8" - integrity sha512-rhRZRqx/TLJQWUpQ6bmrt2UV4f0HCQ463yQuONJqC6fO2VoEb1pTYddbe59SkYq87aoM5A3bdhMZiUiVws+fzQ== - dependencies: - lodash.sortby "^4.7.0" - tr46 "^1.0.1" - webidl-conversions "^4.0.2" +whatwg-mimetype@^2.2.0, whatwg-mimetype@^2.3.0: + version "2.3.0" + resolved "https://registry.yarnpkg.com/whatwg-mimetype/-/whatwg-mimetype-2.3.0.tgz#3d4b1e0312d2079879f826aff18dbeeca5960fbf" + integrity sha512-M4yMwr6mAnQz76TbJm914+gPpB/nCwvZbJU28cUD6dR004SAxDLOOSUaB1JDRqLtaOV/vi0IC5lEAGFgrjGv/g== whatwg-url@^7.0.0: version "7.0.0" @@ -7716,13 +7984,20 @@ which-module@^2.0.0: resolved "https://registry.yarnpkg.com/which-module/-/which-module-2.0.0.tgz#d9ef07dce77b9902b8a3a8fa4b31c3e3f7e6e87a" integrity sha1-2e8H3Od7mQK4o6j6SzHD4/fm6Ho= -which@^1.2.9, which@^1.3.0, which@^1.3.1: +which@^1.2.9, which@^1.3.1: version "1.3.1" resolved "https://registry.yarnpkg.com/which/-/which-1.3.1.tgz#a45043d54f5805316da8d62f9f50918d3da70b0a" integrity sha512-HxJdYWq1MTIQbJ3nw0cqssHoTNU267KlrDuGZ1WYlxDStUtKUhOaJmh112/TZmHxxUfuJqPXSOm7tDyas0OSIQ== dependencies: isexe "^2.0.0" +which@^2.0.1, which@^2.0.2: + version "2.0.2" + resolved "https://registry.yarnpkg.com/which/-/which-2.0.2.tgz#7c6a8dd0a636a0327e10b59c9286eee93f3f51b1" + integrity sha512-BLI3Tl1TW3Pvl70l3yq3Y64i+awpwXqsGBYWkkqMtnbXgrMD+yj7rhW0kuEDxzJaYXGjEW5ogapKNMEKNMjibA== + dependencies: + isexe "^2.0.0" + wide-align@^1.1.0: version "1.1.3" resolved "https://registry.yarnpkg.com/wide-align/-/wide-align-1.1.3.tgz#ae074e6bdc0c14a431e804e624549c633b000457" @@ -7766,15 +8041,6 @@ wrappy@1: resolved "https://registry.yarnpkg.com/wrappy/-/wrappy-1.0.2.tgz#b5243d8f3ec1aa35f1364605bc0d1036e30ab69f" integrity sha1-tSQ9jz7BqjXxNkYFvA0QNuMKtp8= -write-file-atomic@2.4.1: - version "2.4.1" - resolved "https://registry.yarnpkg.com/write-file-atomic/-/write-file-atomic-2.4.1.tgz#d0b05463c188ae804396fd5ab2a370062af87529" - integrity sha512-TGHFeZEZMnv+gBFRfjAcxL5bPHrsGKtnb4qsFAws7/vlh+QfwAaySIw4AXP9ZskTTh5GWu3FLuJhsWVdiJPGvg== - dependencies: - graceful-fs "^4.1.11" - imurmurhash "^0.1.4" - signal-exit "^3.0.2" - write-file-atomic@^1.2.0: version "1.3.4" resolved "https://registry.yarnpkg.com/write-file-atomic/-/write-file-atomic-1.3.4.tgz#f807a4f0b1d9e913ae7a48112e6cc3af1991b45f" @@ -7793,6 +8059,16 @@ write-file-atomic@^2.3.0: imurmurhash "^0.1.4" signal-exit "^3.0.2" +write-file-atomic@^3.0.0: + version "3.0.3" + resolved "https://registry.yarnpkg.com/write-file-atomic/-/write-file-atomic-3.0.3.tgz#56bd5c5a5c70481cd19c571bd39ab965a5de56e8" + integrity sha512-AvHcyZ5JnSfq3ioSyjrBkH9yW4m7Ayk8/9My/DD9onKeu/94fwrMocemO2QAJFAlnnDN+ZDS+ZjAR5ua1/PV/Q== + dependencies: + imurmurhash "^0.1.4" + is-typedarray "^1.0.0" + signal-exit "^3.0.2" + typedarray-to-buffer "^3.1.5" + write@^0.2.1: version "0.2.1" resolved "https://registry.yarnpkg.com/write/-/write-0.2.1.tgz#5fc03828e264cea3fe91455476f7a3c566cb0757" @@ -7817,13 +8093,6 @@ ws@^3.3.1: safe-buffer "~5.1.0" ultron "~1.1.0" -ws@^5.2.0: - version "5.2.2" - resolved "https://registry.yarnpkg.com/ws/-/ws-5.2.2.tgz#dffef14866b8e8dc9133582514d1befaf96e980f" - integrity sha512-jaHFD6PFv6UgoIVda6qZllptQsMlDEJkTQcybzzXDYM1XO9Y8em691FGMPmM46WGyLU4z9KMgQN+qrux/nhlHA== - dependencies: - async-limiter "~1.0.0" - ws@^6.1.4: version "6.1.4" resolved "https://registry.yarnpkg.com/ws/-/ws-6.1.4.tgz#5b5c8800afab925e94ccb29d153c8d02c1776ef9" @@ -7838,6 +8107,11 @@ ws@^7: dependencies: async-limiter "^1.0.0" +ws@^7.0.0: + version "7.2.3" + resolved "https://registry.yarnpkg.com/ws/-/ws-7.2.3.tgz#a5411e1fb04d5ed0efee76d26d5c46d830c39b46" + integrity sha512-HTDl9G9hbkNDk98naoR/cHDws7+EyYMOdL1BmjsZXRUjf7d+MficC4B7HLUPlSiho0vg+CWKrGIt/VJBd1xunQ== + xcode@^2.0.0: version "2.0.0" resolved "https://registry.yarnpkg.com/xcode/-/xcode-2.0.0.tgz#134f1f94c26fbfe8a9aaa9724bfb2772419da1a2" @@ -7861,6 +8135,11 @@ xmlbuilder@^9.0.7: resolved "https://registry.yarnpkg.com/xmlbuilder/-/xmlbuilder-9.0.7.tgz#132ee63d2ec5565c557e20f4c22df9aca686b10d" integrity sha1-Ey7mPS7FVlxVfiD0wi35rKaGsQ0= +xmlchars@^2.1.1: + version "2.2.0" + resolved "https://registry.yarnpkg.com/xmlchars/-/xmlchars-2.2.0.tgz#060fe1bcb7f9c76fe2a17db86a9bc3ab894210cb" + integrity sha512-JZnDKK8B0RCDw84FNdDAIpZK+JuJw+s7Lz8nksI7SIuU3UXJJslUthsi+uWBUYOwPFwW7W7PRLRfUKpxjtjFCw== + xmldoc@^1.1.2: version "1.1.2" resolved "https://registry.yarnpkg.com/xmldoc/-/xmldoc-1.1.2.tgz#6666e029fe25470d599cd30e23ff0d1ed50466d7" @@ -7906,14 +8185,6 @@ yargs-parser@^13.0.0: camelcase "^5.0.0" decamelize "^1.2.0" -yargs-parser@^13.1.1: - version "13.1.1" - resolved "https://registry.yarnpkg.com/yargs-parser/-/yargs-parser-13.1.1.tgz#d26058532aa06d365fe091f6a1fc06b2f7e5eca0" - integrity sha512-oVAVsHz6uFrg3XQheFII8ESO2ssAf9luWuAd6Wexsu4F3OtIW0o8IribPXYrD4WC24LWtPrJlGy87y5udK+dxQ== - dependencies: - camelcase "^5.0.0" - decamelize "^1.2.0" - yargs-parser@^15.0.0: version "15.0.0" resolved "https://registry.yarnpkg.com/yargs-parser/-/yargs-parser-15.0.0.tgz#cdd7a97490ec836195f59f3f4dbe5ea9e8f75f08" @@ -7923,9 +8194,9 @@ yargs-parser@^15.0.0: decamelize "^1.2.0" yargs-parser@^18.1.1: - version "18.1.3" - resolved "https://registry.yarnpkg.com/yargs-parser/-/yargs-parser-18.1.3.tgz#be68c4975c6b2abf469236b0c870362fab09a7b0" - integrity sha512-o50j0JeToy/4K6OZcaQmW6lyXXKhq7csREXcDwk2omFPJEwUNOVtJKvmDr9EI1fAJZUyZcRF7kxGBWmRXudrCQ== + version "18.1.2" + resolved "https://registry.yarnpkg.com/yargs-parser/-/yargs-parser-18.1.2.tgz#2f482bea2136dbde0861683abea7756d30b504f1" + integrity sha512-hlIPNR3IzC1YuL1c2UwwDKpXlNFBqD1Fswwh1khz5+d8Cq/8yc/Mn0i+rQXduu8hcrFKvO7Eryk+09NecTQAAQ== dependencies: camelcase "^5.0.0" decamelize "^1.2.0" @@ -7947,22 +8218,6 @@ yargs@^13.0.0: y18n "^4.0.0" yargs-parser "^13.0.0" -yargs@^13.3.0: - version "13.3.0" - resolved "https://registry.yarnpkg.com/yargs/-/yargs-13.3.0.tgz#4c657a55e07e5f2cf947f8a366567c04a0dedc83" - integrity sha512-2eehun/8ALW8TLoIl7MVaRUrg+yCnenu8B4kBlRxj3GJGDKU1Og7sMXPNm1BYyM1DOJmTZ4YeN/Nwxv+8XJsUA== - dependencies: - cliui "^5.0.0" - find-up "^3.0.0" - get-caller-file "^2.0.1" - require-directory "^2.1.1" - require-main-filename "^2.0.0" - set-blocking "^2.0.0" - string-width "^3.0.0" - which-module "^2.0.0" - y18n "^4.0.0" - yargs-parser "^13.1.1" - yargs@^14.2.0: version "14.2.0" resolved "https://registry.yarnpkg.com/yargs/-/yargs-14.2.0.tgz#f116a9242c4ed8668790b40759b4906c276e76c3" @@ -7980,7 +8235,7 @@ yargs@^14.2.0: y18n "^4.0.0" yargs-parser "^15.0.0" -yargs@^15.1.0: +yargs@^15.1.0, yargs@^15.3.1: version "15.3.1" resolved "https://registry.yarnpkg.com/yargs/-/yargs-15.3.1.tgz#9505b472763963e54afe60148ad27a330818e98b" integrity sha512-92O1HWEjw27sBfgmXiixJWT5hRBp2eobqXicLtPBIDBhYB+1HpwZlXmbW2luivBJHBzki+7VyCLRtAkScbTBQA==