From 04c0dd302246d893211c1a61e900686004a15150 Mon Sep 17 00:00:00 2001 From: David Calhoun <438664+dcalhoun@users.noreply.github.com> Date: Mon, 3 Jan 2022 15:54:48 -0600 Subject: [PATCH] [RNMobile] Upgrade to RN 0.66 (#36328) * Upgrade base React Native packages for 0.66.2 - react-native - react - react-dom - react-test-renderer - metro-react-native-babel-preset - metro-react-native-babel-transformer * Remove legacy module patches These patches have now arrived from upstream changes. - https://github.com/facebook/metro/commit/1e6cec8d869319f72e8b681267a3db5f6f92ce4d - https://github.com/facebook/react-native/commit/842bcb902ed27928255b60cb20524e9318d9bf70 * Apply React Native Upgrade Helper changes https://react-native-community.github.io/upgrade-helper/?from=0.64.0&to=0.66.1 * Apply possibly overlooked changes from React Native 0.64.0 upgrade https://react-native-community.github.io/upgrade-helper/?from=0.61.5&to=0.64.0 * Capture pod installation changes Result of `npm run native preios`. * Bump version of hermes we keep on the S3 mirror * Utilize store definition rather than store name string Errors were thrown from `useSelect` and `useDispatch` returning unexpected `undefined` values. Utilize the store defintion rather than the store name string resolved the errors. There is already a movement to use this approach in general: https://git.io/JPQW2 * Remove usage of deprecated EventEmitter.removeEventListener This function is marked as deprecated.We should be replaced by calling `remove` on the subscription itself. https://git.io/JPQzO * Patch react-native-modal to remove deprecated method usage Remove usage of deprecated `EventEmitter.removeEventListener`. This function is marked as deprecated.We should be replaced by calling `remove` on the subscription itself. https://git.io/JPQzO The patch can be removed once we upgrade to react-native-modal@^13.0.0. https://git.io/JPQgq * Fix native Android Demo app build Set the relative RN CLI path for the Demo app to fix broken builds when using Android Studio, as opposed to the RN CLI directly. It appears the [code used to locate the CLI was modified](https://git.io/JcNzp) for v0.64.0. So, our recent React Native upgrade is likely when this issue began. * Disable Metro inlineRequires configuration When enabled, this option converts top-level imports into inline requires as a performance optimization for large apps. However, it would appear that some import side effects break, e.g. `import './hooks'`. https://reactnative.dev/docs/ram-bundles-inline-requires#inline-requires * Patch @react-navigation/native to remove usage of deprecated method Remove usage of deprecated `EventEmitter.removeEventListener`. This function is marked as deprecated.We should be replaced by calling `remove` on the subscription itself. https://git.io/JPQzO The patch can be removed once we upgrade to react-navigation@^6.0.0. https://git.io/JP7OG * Remove ALWAYS_EMBED_SWIFT_STANDARD_LIBRARIES setting Installing pods resulted in the following warning. Given that the target is an unused test workspace, it felt safe to remove this setting. ``` [!] The `GutenbergDemoTests [Debug]` target overrides the `ALWAYS_EMBED_SWIFT_STANDARD_LIBRARIES` build setting defined in `Pods/Target Support Files/Pods-GutenbergDemo-GutenbergDemoTests/Pods-GutenbergDemo-GutenbergDemoTests.debug.xcconfig'. This can lead to problems with the CocoaPods installation - Use the `$(inherited)` flag, or - Remove the build settings from the target. [!] The `GutenbergDemoTests [Release]` target overrides the `ALWAYS_EMBED_SWIFT_STANDARD_LIBRARIES` build setting defined in `Pods/Target Support Files/Pods-GutenbergDemo-GutenbergDemoTests/Pods-GutenbergDemo-GutenbergDemoTests.release.xcconfig'. This can lead to problems with the CocoaPods installation - Use the `$(inherited)` flag, or - Remove the build settings from the target. ``` * Use Carthage --use-xcframeworks argument The Carthage documentation showcases this argument. Using it resolved the following error when running `npm run native preios:carthage`. https://github.com/Carthage/Carthage/tree/0.38.0#quick-start ``` Building universal frameworks with common architectures is not possible. The device and simulator slices for "Aztec" both build for: arm64 Rebuild with --use-xcframeworks to create an xcframework bundle instead. ``` * Add required EventEmitter methods to address warning The added methods are required by React Native. Otherwise, the below warning is displayed. https://stackoverflow.com/a/69650217/378228 ``` WARN `new NativeEventEmitter()` was called with a non-null argument without the required `addListener` method. WARN `new NativeEventEmitter()` was called with a non-null argument without the required `removeListeners` method. ``` * Enable LogBox to address deprecation warning `console.disableYellowBox` is deprecated. Additionally, totally disabling the logger increases the likelihood that we inadvertently overlook new warnings. * Patch react-native-keyboard-aware-scroll-view for deprecated method This patch changed from the deprecated `componentWillReceiveProps` to `componentDidUpdate`. We can remove this patch when we upgrade to `react-native-keyboard-aware-scroll-view@^0.9.2` https://git.io/JPbOK * Fix runtime error from invoking removed method Utilize the new versions of the scroll methods. This patch could be removed if we upgrade to `react-native-keyboard-aware-view@^0.9.5`. https://git.io/JPb6a * Remove redundant listener removal A few lines before this, `remove` is called on the subscription itself. * Remove usage of deprecated removeEventListener method We should use `remove` on the subscription itself instead. * Remove IPHONEOS_DEPLOYMENT_TARGET for all Pods Build errors occurred for `react-native-bridge` as it attempted to target 11.0, where the editor project targets 13.0. This change lets all Pods, except RCT-Folly, inherit the target of the project. RCT-Folly requires an explicit target. - https://stackoverflow.com/a/37289688/378228 - https://git.io/JPb7Y - https://git.io/JPb73 * Capture Podfile and Xcode project changes from initial build Result of running `npm run native ios`. * Replace deprecated Clipboard core module The `Clipboard` module was marked as deprecated and will be removed from React Native core. React Native documentation recommends relying upon the community package instead. ``` WARN Clipboard has been extracted from react-native core and will be removed in a future release. It can now be installed and imported from '@react-native-clipboard/clipboard' instead of 'react-native'. See https://github.com/react-native-clipboard/clipboard ``` * Capture lockfile changes from subsequent npm install These changes did not show up until the second run, unsure as to why. * Fix mock of AccessibilityInfo This aligns with the mock found within the React Native source itself. Prior to this change, `AccessibilityInfo` was `undefined` within tests. https://git.io/JXKgx * Capture Jest snapshot updates These changes occurred after upgrading React Native to 0.66.2. They do not appear suspicious. * Mark mock as an ESM default export This mock was not properly applied, which led to the error it resolved resurfacing in the test output. Setting `__esModule: true` signals the mocked file is an ESM default export. https://jestjs.io/docs/jest-object#jestmockmodulename-factory-options * Fix illegible iOS header in Demo app Changes to navigation bars in iOS 15 resulted in the navigation bar becoming unexpectedly transparent when content was scrolled all the way to the top. https://reactnative.dev/blog/2021/09/01/preparing-your-app-for-iOS-15-and-android-12#transparent-navigation-bar * Demote the warning to simple code comment While at it, expand the comment with more context about why there's no need to bump the event counter when already undefined. * Add global source to Gemfile This change addresses the following warning: ``` [DEPRECATED] This Gemfile does not include an explicit global source. Not using an explicit global source may result in a different lockfile being generated depending on the gems you have installed locally before bundler is run. Instead, define a global source in your Gemfile like this: source "https://rubygems.org". ``` * Remove unnecessary deprecated bundler --path argument A Bundler configuration file already sets this value. Also, this argument outputs the following deprecation warning: ``` [DEPRECATED] The `--path` flag is deprecated because it relies on being remembered across bundler invocations, which bundler will no longer do in future versions. Instead please use `bundle config set --local path 'vendor/bundle'`, and stop using this flag ``` * Fix non-dismissible modals caused by unnecessary height transitions These changes refactor animations for the `BottomSheetNavigationContainer` to reduce the likelihood of `LayoutAnimations` remaining unconsumed. In certain scenarios, the BottomSheet would erroneously register a `LayoutAnimation`, but then it would never be consumed for one reason or another. E.g. transitioning from full-height to full-height, computed pixel height was identical, stale height value captured within memoized callback. Unconsumed `LayoutAnimations` appear to cause issues for React Native's Modal component on iOS. Specifically, it can result in a transparent, non-dismissible modal sitting atop the rest of the app UI. Upgrading to React Native 0.66 appears to have increased the frequency of this occurring, for an unknown reason. - https://git.io/J1W3z - https://git.io/J1W32 - https://git.io/J1W3a - https://git.io/J1W3r - https://git.io/J1W36 * Fix non-dismissible modals caused by header layout transitions This change ensures changes to the header height are considered when computing the allowable maximum height for the `BottomSheet`. When the `BottomSheet` header changes its size, it configures a `LayoutAnimation` to manage the change. It then relies upon the `onSetHeight` callback to implement the change. In the scenario where the _header_ layout changed, but the rest of the content did not, it meant we attempted to set the height to the same value. This would result in an unconsumed `LayoutAnimation` lingering as no changes occurred which would consume the `LayoutAnimation`. Unconsumed `LayoutAnimations` appear to cause issues for React Native's Modal component on iOS. Specifically, it can result in a transparent, non-dismissible modal sitting atop the rest of the app UI. Upgrading to React Native 0.66 appears to have increased the frequency of this occurring, for an unknown reason. - https://git.io/J1W3z - https://git.io/J1W32 - https://git.io/J1W3a - https://git.io/J1W3r - https://git.io/J1W36 * Document ignored LogBox warnings Provide additional context as to why warnings are ignored and how we might address them properly. * Ignore overridden layout animations warnings `KeyboardAvoidingView`'s usage of `LayoutAnimation` collides with both `BottomSheet` and `NavigationContainer` usage of `LayoutAnimation` simultaneously. Each of these components may invoke overlapping animations, which produces this warning. The most appropriate way to handle this is likely to migrate to @gorhom/bottom-sheet and/or replace usage of `LayoutAnimation` with `Animated`. - https://git.io/J1lZv - https://git.io/J1lZY * Link picker dismisses iOS keyboard to ensure smooth animation Focus of the URL text input caused animation stutter while the iOS keyboard visibility toggled from hide to show to hide. To address this, the Android-specific keyboard dismiss logic is now applied to iOS as well. When the keyboard visibility changes, the `KeyboardingAvoidingView` configures a `LayoutAnimation` to manage the change. The quick toggle of hide to show to hide could result in an unconsumed `LayoutAnimation` lingering as no changes occurred which would consume the `LayoutAnimation`. Unconsumed `LayoutAnimations` appear to cause issues for React Native's Modal component on iOS. Specifically, it can result in a transparent, non-dismissible modal sitting atop the rest of the app UI. Upgrading to React Native 0.66 appears to have increased the frequency of this occurring, for an unknown reason. - https://git.io/J1W3z - https://git.io/J1W32 - https://git.io/J1W3a - https://git.io/J1W3r - https://git.io/J1W36 * Revert erroneous native editor package version bumps Automation to generate web releases seems to sporadically bump the package versions of the native editor packages by mistake. This reverts the erroneous version changes. * Install Pods after erroneous version bump revert * Revert erroneous package lock change Removing the `node_modules` directory entirely and `npm install` resulted in this package being added back. * Android: SafeArea sub can be null so, guard its removal * Remove unnecessary test mock code The implementation itself is irrelevant, we merely need the spy to assert against the call counts. * Avoid state updates on unmounted LinkSettingsScreen component State updates that triggerd from calling `submit` within `onHandleClosingBottomSheet` resulted in errors from React regarding a potential memory leak. Since the bottom sheet is closing and component is unmounting, there is no need to update the component state. The `onChange` callback, however, still needs to be invoked to persist the attribute changes. There is further opportunity to improve `onChange` as it currently empties the attributes causing a re-render during the close animation, which results in UI jumping. ``` ERROR Warning: Can't perform a React state update on an unmounted component. This is a no-op, but it indicates a memory leak in your application. To fix, cancel all subscriptions and asynchronous tasks in a useEffect cleanup function. in LinkSettingsScreen (at modal.native.js:25) ``` * Avoid unnecessary link removal while closing bottom sheet The absence of a checking the visibility of the link settings meant multiple calls to `removeLink` were performed while closing the bottom sheet. This resulted in unnecessary re-renders while the bottom sheet close animation was running, which led to poor animation performance and potential for unconsumed `LayoutAnimation`s. This change now only removes the link if the bottom sheet is still visible, which matches the behavior of submitting a link. Unconsumed `LayoutAnimation`s appear to cause issues for React Native's Modal component on iOS. Specifically, it can result in a transparent, non-dismissible modal sitting atop the rest of the app UI. Upgrading to React Native 0.66 appears to have increased the frequency of this occurring, for an unknown reason. - https://git.io/J1W3z - https://git.io/J1W32 - https://git.io/J1W3a - https://git.io/J1W3r - https://git.io/J1W36 * Pin react-native-url-polyfill to 1.1.2 that includes Buffer * Include rest of npm install changes in package-lock * Need to load the native part of the Clipboard package Note: haven't done the binary/release side setup yet. We'll need to fork the dependency to add Jitpack support as usual. * Point the android build to the forked react-native-clipboard * Point to the forked react-native-clipboard * Correct integrity hash for react-native-clipboard's tarball * Fix up the package name reference * Point to the JitPack fix commit * Update React Native version ref in third-party package forks (#36983) We currently maintain a few forks of third-party packages for modifications required for the Gutenberg mobile editor, e.g. Gradle configuration changes. This updates the dependency versions that reference React Native 0.66.2. * Update third-party package forks to tag references Tagging the third-party package fork repository is necessary for native bridge Android integration. For sake of consistency, this updates the git references in the `package.json` file to reference tags as well. https://git.io/JM2bA * Disable keyboard-related BottomSheet animations This particular animation exasperated a preexisting bug. We chose to disable this one animation as a temporary solution to keep the React Native upgrade moving forward. Long term, we should explore replacing `LayoutAnimation` usage with more nuanced `Animated` usage or replace our custom `BottomSheet` with `@gorhom/bottom-sheet`. https://git.io/JMPCV * Avoid non-dismissible modals caused by unnecessary height transitions Transitioning height between sub-pixel values is unnecessary and caused unconsumed LayoutAnimations which resulted in non-dismissible, transparent modals on iOS. These changes refactor animations for the `BottomSheetNavigationContainer` to reduce the likelihood of `LayoutAnimations` remaining unconsumed. In certain scenarios, the BottomSheet would erroneously register a `LayoutAnimation`, but then it would never be consumed for one reason or another. E.g. transitioning to height that is only a few decimal different. Unconsumed `LayoutAnimations` appear to cause issues for React Native's Modal component on iOS. Specifically, it can result in a transparent, non-dismissible modal sitting atop the rest of the app UI. Upgrading to React Native 0.66 appears to have increased the frequency of this occurring, for an unknown reason. - https://git.io/J1W3z - https://git.io/J1W32 - https://git.io/J1W3a - https://git.io/J1W3r - https://git.io/J1W36 * Adjust bottom sheet max height to account for header subtraction The percentage height required changing now that we subtract the header height from the max height calculation. The header is now subtracted to ensure that the `LayoutAnimation` scheduled is consumed if _only_ the header changes its height. Previously, a change in header height only scheduled a `LayoutAnimation`, but did not modify the max height. * Fix BottomSheet navigation hardware back button support (#37426) An earlier addition of `setHeight` to the dependencies array meant the callback was recreated multiple times, which led to unintentional updates to the hardware button handler. This resulted in navigating backwards multiple screen instead of one when pressing the hardward back button in a deeply nested screen. `onHandleHardwareButtonPress` stores a single value, which means future invocations from sibling screens can replace the callback for the currently active screen. Currently, the empty dependency array passed to `useCallback` here is what prevents erroneous callback replacements, but leveraging memoization to achieve this is brittle and explicitly discouraged in the React documentation. https://reactjs.org/docs/hooks-reference.html#usememo Ideally, we refactor `onHandleHardwareButtonPress` to manage multiple callbacks triggered based upon which screen is currently active. Related: https://git.io/JD2no * Further clarify link picker test intent The assertions of these tests do not tell the full story of the test expectation. Namely, due to bugs within react-native-testing-library and its dependencies, the tests do not assert navigation events that should occur _after_ the keyboard dismisses. Combining async renders and mocked timers is currently quite difficult. https://github.com/callstack/react-native-testing-library/issues/379#issuecomment-952031783 To clarify the intent of the test, the test description was expanded to describe the expectation that the keyboard is dismissed prior to the navigation event occurring. Simultaneously dismissing the keyboard and navigating has caused performance issues in our bottom sheet before. https://github.com/WordPress/gutenberg/issues/37559 * Replace usage of deprecated React Native Clipboard module The `Clipboard` module was relocated to a non-core package. This change mirrors earlier work in this branch, but needed to be applied to additional code that merged after the initial work. I.e. a merge resolution resulted in old references showing up. * Update React Native version in Gradle configuration These stale references lingered from prior iterations of the React Native upgrade work. * Remove unused React Native Clipboard module mock The React Native Clipboard module is deprecated. This project now utilizes the recommended, third-party module `@react-native-clipboard/clipboard` instead. * Reinstate version ranges for react and react-dom Using ranges avoids locking third-party projects to a specific version when consuming the `@wordpress/element` package. * Update outdated comments The code related to the comments changed in previous commits. Co-authored-by: Stefanos Togkoulidis --- package-lock.json | 2149 ++++++++++------- package.json | 12 +- .../components/block-styles/preview.native.js | 7 +- .../block-types-list/index.native.js | 7 +- .../test/__snapshots__/edit.native.js.snap | 20 + .../block-library/src/cover/edit.native.js | 7 +- .../src/embed/test/index.native.js | 3 +- .../block-library/src/file/edit.native.js | 3 +- .../test/__snapshots__/edit.native.js.snap | 13 +- .../src/image/test/edit.native.js | 10 + .../test/__snapshots__/edit.native.js.snap | 5 + .../block-library/src/search/edit.native.js | 7 +- .../test/__snapshots__/edit.native.js.snap | 15 - .../bottom-sheet-context.native.js | 2 + .../navigation-container.native.js | 22 +- .../navigation-screen.native.js | 36 +- .../test/navigation-container.native.js | 162 ++ .../src/mobile/bottom-sheet/cell.native.js | 7 +- .../src/mobile/bottom-sheet/index.native.js | 32 +- .../bottom-sheet/range-text-input.native.js | 7 +- .../keyboard-avoiding-view/index.ios.js | 21 +- .../src/mobile/link-picker/index.native.js | 3 +- .../link-picker/link-picker-screen.native.js | 18 +- .../src/mobile/link-settings/index.native.js | 3 +- .../mobile/link-settings/test/edit.native.js | 2 +- .../test/link-settings-navigation.native.js | 99 + .../readable-content-view/index.native.js | 7 +- .../utils/use-is-floating-keyboard.native.js | 7 +- .../use-unit-converter-to-mobile.native.js | 7 +- .../components/src/notice/index.native.js | 7 +- .../components/src/sandbox/index.native.js | 13 +- .../src/components/header/index.native.js | 14 +- .../src/components/layout/index.native.js | 7 +- .../src/components/provider/index.native.js | 17 +- packages/element/package.json | 4 +- .../format-library/src/link/index.native.js | 2 +- .../link-picker-screen.native.js | 35 +- .../link-settings-screen.native.js | 41 +- .../src/link/test/index.native.js | 139 ++ packages/react-native-aztec/package.json | 4 +- .../android/react-native-bridge/build.gradle | 8 +- .../RNReactNativeGutenbergBridgeModule.java | 10 + .../WPAndroidGlue/WPAndroidGlueCode.java | 2 + .../android/settings.gradle | 2 + packages/react-native-editor/.gitignore | 1 + .../android/app/build.gradle | 14 +- .../android/app/src/debug/AndroidManifest.xml | 7 +- .../android/app/src/main/AndroidManifest.xml | 5 +- .../java/com/gutenberg/MainApplication.java | 2 + .../react-native-editor/android/build.gradle | 14 +- .../android/gradle.properties | 2 +- packages/react-native-editor/ios/Gemfile | 6 +- packages/react-native-editor/ios/Gemfile.lock | 7 +- .../GutenbergDemo.xcodeproj/project.pbxproj | 145 +- .../GutenbergDemo/Base.lproj/LaunchScreen.xib | 41 - .../GutenbergViewController.swift | 1 - .../ios/LaunchScreen.storyboard | 48 + packages/react-native-editor/ios/Podfile | 38 +- packages/react-native-editor/ios/Podfile.lock | 569 ++--- packages/react-native-editor/metro.config.js | 3 + packages/react-native-editor/package.json | 31 +- packages/react-native-editor/src/index.js | 17 +- .../rich-text/src/component/index.native.js | 7 +- patches/@react-navigation+native+5.7.0.patch | 19 + patches/metro+0.64.0.patch | 13 - patches/react-native+0.64.0.patch | 25 - ...eyboard-aware-scroll-view+0.8.8-wp-1.patch | 76 + patches/react-native-modal+11.10.0.patch | 33 + test/native/setup.js | 48 +- 69 files changed, 2605 insertions(+), 1565 deletions(-) create mode 100644 packages/components/src/mobile/bottom-sheet/bottom-sheet-navigation/test/navigation-container.native.js create mode 100644 packages/components/src/mobile/link-settings/test/link-settings-navigation.native.js create mode 100644 packages/format-library/src/link/test/index.native.js delete mode 100644 packages/react-native-editor/ios/GutenbergDemo/Base.lproj/LaunchScreen.xib create mode 100644 packages/react-native-editor/ios/LaunchScreen.storyboard create mode 100644 patches/@react-navigation+native+5.7.0.patch delete mode 100644 patches/metro+0.64.0.patch delete mode 100644 patches/react-native+0.64.0.patch create mode 100644 patches/react-native-keyboard-aware-scroll-view+0.8.8-wp-1.patch create mode 100644 patches/react-native-modal+11.10.0.patch diff --git a/package-lock.json b/package-lock.json index 7a68a9f93f0638..2caf2230ec41fe 100644 --- a/package-lock.json +++ b/package-lock.json @@ -389,7 +389,6 @@ "version": "7.16.0", "resolved": "https://registry.npmjs.org/@babel/helper-remap-async-to-generator/-/helper-remap-async-to-generator-7.16.0.tgz", "integrity": "sha512-MLM1IOMe9aQBqMWxcRw8dcb9jlM86NIw7KA0Wri91Xkfied+dE0QuBFSBjMNvqzmS0OSIDsMNC24dBEkPUi7ew==", - "dev": true, "requires": { "@babel/helper-annotate-as-pure": "^7.16.0", "@babel/helper-wrap-function": "^7.16.0", @@ -445,7 +444,6 @@ "version": "7.16.0", "resolved": "https://registry.npmjs.org/@babel/helper-wrap-function/-/helper-wrap-function-7.16.0.tgz", "integrity": "sha512-VVMGzYY3vkWgCJML+qVLvGIam902mJW0FvT7Avj1zEe0Gn7D93aWdLblYARTxEw+6DhZmtzhBM2zv0ekE5zg1g==", - "dev": true, "requires": { "@babel/helper-function-name": "^7.16.0", "@babel/template": "^7.16.0", @@ -983,7 +981,6 @@ "version": "7.16.0", "resolved": "https://registry.npmjs.org/@babel/plugin-transform-async-to-generator/-/plugin-transform-async-to-generator-7.16.0.tgz", "integrity": "sha512-PbIr7G9kR8tdH6g8Wouir5uVjklETk91GMVSUq+VaOgiinbCkBP6Q7NN/suM/QutZkMJMvcyAriogcYAdhg8Gw==", - "dev": true, "requires": { "@babel/helper-module-imports": "^7.16.0", "@babel/helper-plugin-utils": "^7.14.5", @@ -1177,11 +1174,18 @@ } }, "@babel/plugin-transform-object-assign": { - "version": "7.16.0", - "resolved": "https://registry.npmjs.org/@babel/plugin-transform-object-assign/-/plugin-transform-object-assign-7.16.0.tgz", - "integrity": "sha512-TftKY6Hxo5Uf/EIoC3BKQyLvlH46tbtK4xub90vzi9+yS8z1+O/52YHyywCZvYeLPOvv//1j3BPokLuHTWPcbg==", + "version": "7.16.7", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-object-assign/-/plugin-transform-object-assign-7.16.7.tgz", + "integrity": "sha512-R8mawvm3x0COTJtveuoqZIjNypn2FjfvXZr4pSQ8VhEFBuQGBz4XhHasZtHXjgXU4XptZ4HtGof3NoYc93ZH9Q==", "requires": { - "@babel/helper-plugin-utils": "^7.14.5" + "@babel/helper-plugin-utils": "^7.16.7" + }, + "dependencies": { + "@babel/helper-plugin-utils": { + "version": "7.16.7", + "resolved": "https://registry.npmjs.org/@babel/helper-plugin-utils/-/helper-plugin-utils-7.16.7.tgz", + "integrity": "sha512-Qg3Nk7ZxpgMrsox6HreY1ZNKdBq7K72tDSliA6dCl5f007jR4ne8iD5UzuNnCJH2xBf2BEEVGr+/OL6Gdp7RxA==" + } } }, "@babel/plugin-transform-object-super": { @@ -1248,19 +1252,33 @@ } }, "@babel/plugin-transform-react-jsx-self": { - "version": "7.16.0", - "resolved": "https://registry.npmjs.org/@babel/plugin-transform-react-jsx-self/-/plugin-transform-react-jsx-self-7.16.0.tgz", - "integrity": "sha512-97yCFY+2GvniqOThOSjPor8xUoDiQ0STVWAQMl3pjhJoFVe5DuXDLZCRSZxu9clx+oRCbTiXGgKEG/Yoyo6Y+w==", + "version": "7.16.7", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-react-jsx-self/-/plugin-transform-react-jsx-self-7.16.7.tgz", + "integrity": "sha512-oe5VuWs7J9ilH3BCCApGoYjHoSO48vkjX2CbA5bFVhIuO2HKxA3vyF7rleA4o6/4rTDbk6r8hBW7Ul8E+UZrpA==", "requires": { - "@babel/helper-plugin-utils": "^7.14.5" + "@babel/helper-plugin-utils": "^7.16.7" + }, + "dependencies": { + "@babel/helper-plugin-utils": { + "version": "7.16.7", + "resolved": "https://registry.npmjs.org/@babel/helper-plugin-utils/-/helper-plugin-utils-7.16.7.tgz", + "integrity": "sha512-Qg3Nk7ZxpgMrsox6HreY1ZNKdBq7K72tDSliA6dCl5f007jR4ne8iD5UzuNnCJH2xBf2BEEVGr+/OL6Gdp7RxA==" + } } }, "@babel/plugin-transform-react-jsx-source": { - "version": "7.16.0", - "resolved": "https://registry.npmjs.org/@babel/plugin-transform-react-jsx-source/-/plugin-transform-react-jsx-source-7.16.0.tgz", - "integrity": "sha512-8yvbGGrHOeb/oyPc9tzNoe9/lmIjz3HLa9Nc5dMGDyNpGjfFrk8D2KdEq9NRkftZzeoQEW6yPQ29TMZtrLiUUA==", + "version": "7.16.7", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-react-jsx-source/-/plugin-transform-react-jsx-source-7.16.7.tgz", + "integrity": "sha512-rONFiQz9vgbsnaMtQlZCjIRwhJvlrPET8TabIUK2hzlXw9B9s2Ieaxte1SCOOXMbWRHodbKixNf3BLcWVOQ8Bw==", "requires": { - "@babel/helper-plugin-utils": "^7.14.5" + "@babel/helper-plugin-utils": "^7.16.7" + }, + "dependencies": { + "@babel/helper-plugin-utils": { + "version": "7.16.7", + "resolved": "https://registry.npmjs.org/@babel/helper-plugin-utils/-/helper-plugin-utils-7.16.7.tgz", + "integrity": "sha512-Qg3Nk7ZxpgMrsox6HreY1ZNKdBq7K72tDSliA6dCl5f007jR4ne8iD5UzuNnCJH2xBf2BEEVGr+/OL6Gdp7RxA==" + } } }, "@babel/plugin-transform-react-pure-annotations": { @@ -3199,32 +3217,40 @@ } }, "@jest/create-cache-key-function": { - "version": "26.6.2", - "resolved": "https://registry.npmjs.org/@jest/create-cache-key-function/-/create-cache-key-function-26.6.2.tgz", - "integrity": "sha512-LgEuqU1f/7WEIPYqwLPIvvHuc1sB6gMVbT6zWhin3txYUNYK/kGQrC1F2WR4gR34YlI9bBtViTm5z98RqVZAaw==", + "version": "27.3.1", + "resolved": "https://registry.npmjs.org/@jest/create-cache-key-function/-/create-cache-key-function-27.3.1.tgz", + "integrity": "sha512-21lx0HRgkznc5Tc2WGiXVYQQ6Vdfohs6CkLV2FLogLRb52f6v9SiSIjTNflu23lzEmY4EalLgQLxCfhgvREV6w==", "requires": { - "@jest/types": "^26.6.2" + "@jest/types": "^27.2.5" }, "dependencies": { "@jest/types": { - "version": "26.6.2", - "resolved": "https://registry.npmjs.org/@jest/types/-/types-26.6.2.tgz", - "integrity": "sha512-fC6QCp7Sc5sX6g8Tvbmj4XUTbyrik0akgRy03yjXbQaBWWNWGE7SGtJk98m0N8nzegD/7SggrUlivxo5ax4KWQ==", + "version": "27.2.5", + "resolved": "https://registry.npmjs.org/@jest/types/-/types-27.2.5.tgz", + "integrity": "sha512-nmuM4VuDtCZcY+eTpw+0nvstwReMsjPoj7ZR80/BbixulhLaiX+fbv8oeLW8WZlJMcsGQsTmMKT/iTZu1Uy/lQ==", "requires": { "@types/istanbul-lib-coverage": "^2.0.0", "@types/istanbul-reports": "^3.0.0", "@types/node": "*", - "@types/yargs": "^15.0.0", + "@types/yargs": "^16.0.0", "chalk": "^4.0.0" } }, "@types/istanbul-reports": { - "version": "3.0.0", - "resolved": "https://registry.npmjs.org/@types/istanbul-reports/-/istanbul-reports-3.0.0.tgz", - "integrity": "sha512-nwKNbvnwJ2/mndE9ItP/zc2TCzw6uuodnF4EHYWD+gCQDVBuRQL5UzbZD0/ezy1iKsFU2ZQiDqg4M9dN4+wZgA==", + "version": "3.0.1", + "resolved": "https://registry.npmjs.org/@types/istanbul-reports/-/istanbul-reports-3.0.1.tgz", + "integrity": "sha512-c3mAZEuK0lvBp8tmuL74XRKn1+y2dcwOUpH7x4WrF6gk1GIgiluDRgMYQtw2OFcBvAJWlt6ASU3tSqxp0Uu0Aw==", "requires": { "@types/istanbul-lib-report": "*" } + }, + "@types/yargs": { + "version": "16.0.4", + "resolved": "https://registry.npmjs.org/@types/yargs/-/yargs-16.0.4.tgz", + "integrity": "sha512-T8Yc9wt/5LbJyCaLiHPReJa0kApcIgJ7Bn735GjItUfh08Z1pJvu8QZqb9s+mMvKV6WUQRV7K2R46YbjMXTTJw==", + "requires": { + "@types/yargs-parser": "*" + } } } }, @@ -7355,6 +7381,10 @@ "react-lifecycles-compat": "^3.0.4" } }, + "@react-native-clipboard/clipboard": { + "version": "https://raw.githubusercontent.com/wordpress-mobile/react-native-clipboard/b9f44e935c7a1aac26d92e46e45cd92cd9da18c5/react-native-clipboard-clipboard-1.9.0-wp-1.tgz", + "integrity": "sha512-RZoK2BNEoyAnipjf4LnArFwYfCUGkF4/5JsgpyS4jVQvwxcBoZJP2yw4i87ZY6GxEiVp4Qeehg/07P81uknliA==" + }, "@react-native-community/blur": { "version": "3.6.0", "resolved": "https://registry.npmjs.org/@react-native-community/blur/-/blur-3.6.0.tgz", @@ -7363,23 +7393,49 @@ "prop-types": "^15.5.10" } }, - "@react-native-community/cli-platform-android": { - "version": "5.0.1-alpha.1", - "resolved": "https://registry.npmjs.org/@react-native-community/cli-platform-android/-/cli-platform-android-5.0.1-alpha.1.tgz", - "integrity": "sha512-Fx9Tm0Z9sl5CD/VS8XWIY1gTgf28MMnAvyx0oj7yO4IzWuOpJPyWxTJITc80GAK6tlyijORv5kriYpXnquxQLg==", - "requires": { - "@react-native-community/cli-tools": "^5.0.1-alpha.1", - "chalk": "^3.0.0", + "@react-native-community/cli": { + "version": "6.3.1", + "resolved": "https://registry.npmjs.org/@react-native-community/cli/-/cli-6.3.1.tgz", + "integrity": "sha512-UQ77AkGvPzdwJt6qhYXUyDMP1v2rdCcIlrhU48FOcAhGX+N/LCL9Cp/Ic6CkiiSHJdktbgiEEJ2srprXH8nzVg==", + "requires": { + "@react-native-community/cli-debugger-ui": "^6.0.0-rc.0", + "@react-native-community/cli-hermes": "^6.3.0", + "@react-native-community/cli-plugin-metro": "^6.2.0", + "@react-native-community/cli-server-api": "^6.2.0", + "@react-native-community/cli-tools": "^6.2.0", + "@react-native-community/cli-types": "^6.0.0", + "appdirsjs": "^1.2.4", + "chalk": "^4.1.2", + "command-exists": "^1.2.8", + "commander": "^2.19.0", + "cosmiconfig": "^5.1.0", + "deepmerge": "^3.2.0", + "envinfo": "^7.7.2", "execa": "^1.0.0", + "find-up": "^4.1.0", "fs-extra": "^8.1.0", "glob": "^7.1.3", - "jetifier": "^1.6.2", + "graceful-fs": "^4.1.3", + "joi": "^17.2.1", + "leven": "^3.1.0", "lodash": "^4.17.15", - "logkitty": "^0.7.1", - "slash": "^3.0.0", - "xmldoc": "^1.1.2" + "minimist": "^1.2.0", + "node-stream-zip": "^1.9.1", + "ora": "^3.4.0", + "pretty-format": "^26.6.2", + "prompts": "^2.4.0", + "semver": "^6.3.0", + "serve-static": "^1.13.1", + "strip-ansi": "^5.2.0", + "sudo-prompt": "^9.0.0", + "wcwidth": "^1.0.1" }, "dependencies": { + "ansi-regex": { + "version": "4.1.0", + "resolved": "https://registry.npmjs.org/ansi-regex/-/ansi-regex-4.1.0.tgz", + "integrity": "sha512-1apePfXM1UOSqw0o9IiFAovVz9M5S1Dg+4TrDwfMewQ6p/rmMueb7tWZjQ1rx4Loy1ArBggoqGpfqqdI4rondg==" + }, "ansi-styles": { "version": "4.3.0", "resolved": "https://registry.npmjs.org/ansi-styles/-/ansi-styles-4.3.0.tgz", @@ -7389,9 +7445,327 @@ } }, "chalk": { + "version": "4.1.2", + "resolved": "https://registry.npmjs.org/chalk/-/chalk-4.1.2.tgz", + "integrity": "sha512-oKnbhFyRIXpUuez8iBMmyEa4nbj4IOQyuhc/wy9kY7/WVPcwIO9VA668Pu8RkO7+0G76SLROeyw9CpQ061i4mA==", + "requires": { + "ansi-styles": "^4.1.0", + "supports-color": "^7.1.0" + } + }, + "color-convert": { + "version": "2.0.1", + "resolved": "https://registry.npmjs.org/color-convert/-/color-convert-2.0.1.tgz", + "integrity": "sha512-RRECPsj7iu/xb5oKYcsFHSppFNnsj/52OVTRKb4zP5onXwVF3zVmmToNcOfGC+CRDpfK/U584fMg38ZHCaElKQ==", + "requires": { + "color-name": "~1.1.4" + } + }, + "color-name": { + "version": "1.1.4", + "resolved": "https://registry.npmjs.org/color-name/-/color-name-1.1.4.tgz", + "integrity": "sha512-dOy+3AuW3a2wNbZHIuMZpTcgjGuLU/uBL/ubcZF9OXbDo8ff4O8yVp5Bf0efS8uEoYo5q4Fx7dY9OgQGXgAsQA==" + }, + "commander": { + "version": "2.20.3", + "resolved": "https://registry.npmjs.org/commander/-/commander-2.20.3.tgz", + "integrity": "sha512-GpVkmM8vF2vQUkj2LvZmD35JxeJOLCwJ9cUkugyk2nuhbv3+mJvpLYYt+0+USMxE+oj+ey/lJEnhZw75x/OMcQ==" + }, + "cosmiconfig": { + "version": "5.2.1", + "resolved": "https://registry.npmjs.org/cosmiconfig/-/cosmiconfig-5.2.1.tgz", + "integrity": "sha512-H65gsXo1SKjf8zmrJ67eJk8aIRKV5ff2D4uKZIBZShbhGSpEmsQOPW/SKMKYhSTrqR7ufy6RP69rPogdaPh/kA==", + "requires": { + "import-fresh": "^2.0.0", + "is-directory": "^0.3.1", + "js-yaml": "^3.13.1", + "parse-json": "^4.0.0" + } + }, + "cross-spawn": { + "version": "6.0.5", + "resolved": "https://registry.npmjs.org/cross-spawn/-/cross-spawn-6.0.5.tgz", + "integrity": "sha512-eTVLrBSt7fjbDygz805pMnstIs2VTBNkRm0qxZd+M7A5XDdxVRWO5MxGBXZhjY4cqLYLdtrGqRf8mBPmzwSpWQ==", + "requires": { + "nice-try": "^1.0.4", + "path-key": "^2.0.1", + "semver": "^5.5.0", + "shebang-command": "^1.2.0", + "which": "^1.2.9" + }, + "dependencies": { + "semver": { + "version": "5.7.1", + "resolved": "https://registry.npmjs.org/semver/-/semver-5.7.1.tgz", + "integrity": "sha512-sauaDf/PZdVgrLTNYHRtpXa1iRiKcaebiKQ1BJdpQlWH2lCvexQdX55snPFyK7QzpudqbCI0qXFfOasHdyNDGQ==" + } + } + }, + "deepmerge": { + "version": "3.3.0", + "resolved": "https://registry.npmjs.org/deepmerge/-/deepmerge-3.3.0.tgz", + "integrity": "sha512-GRQOafGHwMHpjPx9iCvTgpu9NojZ49q794EEL94JVEw6VaeA8XTUyBKvAkOOjBX9oJNiV6G3P+T+tihFjo2TqA==" + }, + "envinfo": { + "version": "7.8.1", + "resolved": "https://registry.npmjs.org/envinfo/-/envinfo-7.8.1.tgz", + "integrity": "sha512-/o+BXHmB7ocbHEAs6F2EnG0ogybVVUdkRunTT2glZU9XAaGmhqskrvKwqXuDfNjEO0LZKWdejEEpnq8aM0tOaw==" + }, + "execa": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/execa/-/execa-1.0.0.tgz", + "integrity": "sha512-adbxcyWV46qiHyvSp50TKt05tB4tK3HcmF7/nxfAdhnox83seTDbwnaqKO4sXRy7roHAIFqJP/Rw/AuEbX61LA==", + "requires": { + "cross-spawn": "^6.0.0", + "get-stream": "^4.0.0", + "is-stream": "^1.1.0", + "npm-run-path": "^2.0.0", + "p-finally": "^1.0.0", + "signal-exit": "^3.0.0", + "strip-eof": "^1.0.0" + } + }, + "find-up": { + "version": "4.1.0", + "resolved": "https://registry.npmjs.org/find-up/-/find-up-4.1.0.tgz", + "integrity": "sha512-PpOwAdQ/YlXQ2vj8a3h8IipDuYRi3wceVQQGYWxNINccq40Anw7BlsEXCMbt1Zt+OLA6Fq9suIpIWD0OsnISlw==", + "requires": { + "locate-path": "^5.0.0", + "path-exists": "^4.0.0" + } + }, + "get-stream": { + "version": "4.1.0", + "resolved": "https://registry.npmjs.org/get-stream/-/get-stream-4.1.0.tgz", + "integrity": "sha512-GMat4EJ5161kIy2HevLlr4luNjBgvmj413KaQA7jt4V8B4RDsfpHk7WQ9GVqfYyyx8OS/L66Kox+rJRNklLK7w==", + "requires": { + "pump": "^3.0.0" + } + }, + "glob": { + "version": "7.2.0", + "resolved": "https://registry.npmjs.org/glob/-/glob-7.2.0.tgz", + "integrity": "sha512-lmLf6gtyrPq8tTjSmrO94wBeQbFR3HbLHbuyD69wuyQkImp2hWqMGB47OX65FBkPffO641IP9jWa1z4ivqG26Q==", + "requires": { + "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" + } + }, + "has-flag": { + "version": "4.0.0", + "resolved": "https://registry.npmjs.org/has-flag/-/has-flag-4.0.0.tgz", + "integrity": "sha512-EykJT/Q1KjTWctppgIAgfSO0tKVuZUjhgMr17kqTumMl6Afv3EISleU7qZUzoXDFTAHTDC4NOoG/ZxU3EvlMPQ==" + }, + "import-fresh": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/import-fresh/-/import-fresh-2.0.0.tgz", + "integrity": "sha1-2BNVwVYS04bGH53dOSLUMEgipUY=", + "requires": { + "caller-path": "^2.0.0", + "resolve-from": "^3.0.0" + } + }, + "locate-path": { + "version": "5.0.0", + "resolved": "https://registry.npmjs.org/locate-path/-/locate-path-5.0.0.tgz", + "integrity": "sha512-t7hw9pI+WvuwNJXwk5zVHpyhIqzg2qTlklJOf0mVxGSbe3Fp2VieZcduNYjaLDoy6p9uGpQEGWG87WpMKlNq8g==", + "requires": { + "p-locate": "^4.1.0" + } + }, + "ora": { + "version": "3.4.0", + "resolved": "https://registry.npmjs.org/ora/-/ora-3.4.0.tgz", + "integrity": "sha512-eNwHudNbO1folBP3JsZ19v9azXWtQZjICdr3Q0TDPIaeBQ3mXLrh54wM+er0+hSp+dWKf+Z8KM58CYzEyIYxYg==", + "requires": { + "chalk": "^2.4.2", + "cli-cursor": "^2.1.0", + "cli-spinners": "^2.0.0", + "log-symbols": "^2.2.0", + "strip-ansi": "^5.2.0", + "wcwidth": "^1.0.1" + }, + "dependencies": { + "ansi-styles": { + "version": "3.2.1", + "resolved": "https://registry.npmjs.org/ansi-styles/-/ansi-styles-3.2.1.tgz", + "integrity": "sha512-VT0ZI6kZRdTh8YyJw3SMbYm/u+NqfsAxEpWO0Pf9sq8/e94WxxOpPKx9FR1FlyCtOVDNOQ+8ntlqFxiRc+r5qA==", + "requires": { + "color-convert": "^1.9.0" + } + }, + "chalk": { + "version": "2.4.2", + "resolved": "https://registry.npmjs.org/chalk/-/chalk-2.4.2.tgz", + "integrity": "sha512-Mti+f9lpJNcwF4tWV8/OrTTtF1gZi+f8FqlyAdouralcFWFQWF2+NgCHShjkCb+IFBLq9buZwE1xckQU4peSuQ==", + "requires": { + "ansi-styles": "^3.2.1", + "escape-string-regexp": "^1.0.5", + "supports-color": "^5.3.0" + } + }, + "color-convert": { + "version": "1.9.3", + "resolved": "https://registry.npmjs.org/color-convert/-/color-convert-1.9.3.tgz", + "integrity": "sha512-QfAUtd+vFdAtFQcC8CCyYt1fYWxSqAiK2cSD6zDB8N3cpsEBAvRxp9zOGg6G/SHHJYAT88/az/IuDGALsNVbGg==", + "requires": { + "color-name": "1.1.3" + } + }, + "color-name": { + "version": "1.1.3", + "resolved": "https://registry.npmjs.org/color-name/-/color-name-1.1.3.tgz", + "integrity": "sha1-p9BVi9icQveV3UIyj3QIMcpTvCU=" + }, + "has-flag": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/has-flag/-/has-flag-3.0.0.tgz", + "integrity": "sha1-tdRU3CGZriJWmfNGfloH87lVuv0=" + }, + "supports-color": { + "version": "5.5.0", + "resolved": "https://registry.npmjs.org/supports-color/-/supports-color-5.5.0.tgz", + "integrity": "sha512-QjVjwdXIt408MIiAqCX4oUKsgU2EqAGzs2Ppkm4aQYbjm+ZEWEcW4SfFNTr4uMNZma0ey4f5lgLrkB0aX0QMow==", + "requires": { + "has-flag": "^3.0.0" + } + } + } + }, + "p-limit": { + "version": "2.3.0", + "resolved": "https://registry.npmjs.org/p-limit/-/p-limit-2.3.0.tgz", + "integrity": "sha512-//88mFWSJx8lxCzwdAABTJL2MyWB12+eIY7MDL2SqLmAkeKU9qxRvWuSyTjm3FUmpBEMuFfckAIqEaVGUDxb6w==", + "requires": { + "p-try": "^2.0.0" + } + }, + "p-locate": { + "version": "4.1.0", + "resolved": "https://registry.npmjs.org/p-locate/-/p-locate-4.1.0.tgz", + "integrity": "sha512-R79ZZ/0wAxKGu3oYMlz8jy/kbhsNrS7SKZ7PxEHBgJ5+F2mtFW2fK2cOtBh1cHYkQsbzFV7I+EoRKe6Yt0oK7A==", + "requires": { + "p-limit": "^2.2.0" + } + }, + "p-try": { + "version": "2.2.0", + "resolved": "https://registry.npmjs.org/p-try/-/p-try-2.2.0.tgz", + "integrity": "sha512-R4nPAVTAU0B9D35/Gk3uJf/7XYbQcyohSKdvAxIRSNghFl4e71hVoGnBNQz9cWaXxO2I10KTC+3jMdvvoKw6dQ==" + }, + "parse-json": { + "version": "4.0.0", + "resolved": "https://registry.npmjs.org/parse-json/-/parse-json-4.0.0.tgz", + "integrity": "sha1-vjX1Qlvh9/bHRxhPmKeIy5lHfuA=", + "requires": { + "error-ex": "^1.3.1", + "json-parse-better-errors": "^1.0.1" + } + }, + "path-exists": { + "version": "4.0.0", + "resolved": "https://registry.npmjs.org/path-exists/-/path-exists-4.0.0.tgz", + "integrity": "sha512-ak9Qy5Q7jYb2Wwcey5Fpvg2KoAc/ZIhLSLOSBmRmygPsGwkVVt0fZa0qrtMz+m6tJTAHfZQ8FnmB4MG4LWy7/w==" + }, + "prompts": { + "version": "2.4.2", + "resolved": "https://registry.npmjs.org/prompts/-/prompts-2.4.2.tgz", + "integrity": "sha512-NxNv/kLguCA7p3jE8oL2aEBsrJWgAakBpgmgK6lpPWV+WuOmY6r2/zbAVnP+T8bQlA0nzHXSJSJW0Hq7ylaD2Q==", + "requires": { + "kleur": "^3.0.3", + "sisteransi": "^1.0.5" + } + }, + "pump": { "version": "3.0.0", - "resolved": "https://registry.npmjs.org/chalk/-/chalk-3.0.0.tgz", - "integrity": "sha512-4D3B6Wf41KOYRFdszmDqMCGq5VV/uMAB273JILmO+3jAlh8X4qDtdtgCR3fxtbLEMzSx22QdhnDcJvu2u1fVwg==", + "resolved": "https://registry.npmjs.org/pump/-/pump-3.0.0.tgz", + "integrity": "sha512-LwZy+p3SFs1Pytd/jYct4wpv49HiYCqd9Rlc5ZVdk0V+8Yzv6jR5Blk3TRmPL1ft69TxP0IMZGJ+WPFU2BFhww==", + "requires": { + "end-of-stream": "^1.1.0", + "once": "^1.3.1" + } + }, + "semver": { + "version": "6.3.0", + "resolved": "https://registry.npmjs.org/semver/-/semver-6.3.0.tgz", + "integrity": "sha512-b39TBaTSfV6yBrapU89p5fKekE2m/NwnDocOVruQFS1/veMgdzuPcnOM34M6CwxW8jH/lxEa5rBoDeUwu5HHTw==" + }, + "sisteransi": { + "version": "1.0.5", + "resolved": "https://registry.npmjs.org/sisteransi/-/sisteransi-1.0.5.tgz", + "integrity": "sha512-bLGGlR1QxBcynn2d5YmDX4MGjlZvy2MRBDRNHLJ8VI6l6+9FUiyTFNJ0IveOSP0bcXgVDPRcfGqA0pjaqUpfVg==" + }, + "strip-ansi": { + "version": "5.2.0", + "resolved": "https://registry.npmjs.org/strip-ansi/-/strip-ansi-5.2.0.tgz", + "integrity": "sha512-DuRs1gKbBqsMKIZlrffwlug8MHkcnpjs5VPmL1PAh+mA30U0DTotfDZ0d2UUsXpPmPmMMJ6W773MaA3J+lbiWA==", + "requires": { + "ansi-regex": "^4.1.0" + } + }, + "supports-color": { + "version": "7.2.0", + "resolved": "https://registry.npmjs.org/supports-color/-/supports-color-7.2.0.tgz", + "integrity": "sha512-qpCAvRl9stuOHveKsn7HncJRvv501qIacKzQlO/+Lwxc9+0q2wLyv4Dfvt80/DPn2pqOBsJdDiogXGR9+OvwRw==", + "requires": { + "has-flag": "^4.0.0" + } + } + } + }, + "@react-native-community/cli-debugger-ui": { + "version": "6.0.0-rc.0", + "resolved": "https://registry.npmjs.org/@react-native-community/cli-debugger-ui/-/cli-debugger-ui-6.0.0-rc.0.tgz", + "integrity": "sha512-achYcPPoWa9D02C5tn6TBzjeY443wQTyx37urptc75JpZ7gR5YHsDyIEEWa3DDYp1va9zx/iGg+uZ/hWw07GAw==", + "requires": { + "serve-static": "^1.13.1" + } + }, + "@react-native-community/cli-hermes": { + "version": "6.3.0", + "resolved": "https://registry.npmjs.org/@react-native-community/cli-hermes/-/cli-hermes-6.3.0.tgz", + "integrity": "sha512-Uhbm9bubyZLZ12vFCIfWbE/Qi3SBTbYIN/TC08EudTLhv/KbPomCQnmFsnJ7AXQFuOZJs73mBxoEAYSbRbwyVA==", + "requires": { + "@react-native-community/cli-platform-android": "^6.3.0", + "@react-native-community/cli-tools": "^6.2.0", + "chalk": "^4.1.2", + "hermes-profile-transformer": "^0.0.6", + "ip": "^1.1.5" + }, + "dependencies": { + "@react-native-community/cli-platform-android": { + "version": "6.3.0", + "resolved": "https://registry.npmjs.org/@react-native-community/cli-platform-android/-/cli-platform-android-6.3.0.tgz", + "integrity": "sha512-d5ufyYcvrZoHznYm5bjBXaiHIJv552t5gYtQpnUsxBhHSQ8QlaNmlLUyeSPRDfOw4ND9b0tPHqs4ufwx6vp/fQ==", + "requires": { + "@react-native-community/cli-tools": "^6.2.0", + "chalk": "^4.1.2", + "execa": "^1.0.0", + "fs-extra": "^8.1.0", + "glob": "^7.1.3", + "jetifier": "^1.6.2", + "lodash": "^4.17.15", + "logkitty": "^0.7.1", + "slash": "^3.0.0", + "xmldoc": "^1.1.2" + } + }, + "ansi-styles": { + "version": "4.3.0", + "resolved": "https://registry.npmjs.org/ansi-styles/-/ansi-styles-4.3.0.tgz", + "integrity": "sha512-zbB9rCJAT1rbjiVDb2hqKFHNYLxgtk8NURxZ3IZwD3F6NtxbXZQCnnSi1Lkx+IDohdPlFp222wVALIheZJQSEg==", + "requires": { + "color-convert": "^2.0.1" + } + }, + "chalk": { + "version": "4.1.2", + "resolved": "https://registry.npmjs.org/chalk/-/chalk-4.1.2.tgz", + "integrity": "sha512-oKnbhFyRIXpUuez8iBMmyEa4nbj4IOQyuhc/wy9kY7/WVPcwIO9VA668Pu8RkO7+0G76SLROeyw9CpQ061i4mA==", "requires": { "ansi-styles": "^4.1.0", "supports-color": "^7.1.0" @@ -7445,9 +7819,9 @@ } }, "glob": { - "version": "7.1.7", - "resolved": "https://registry.npmjs.org/glob/-/glob-7.1.7.tgz", - "integrity": "sha512-OvD9ENzPLbegENnYP5UUfJIirTg4+XwMWGaQfQTY0JenxNvvIKP3U3/tAQSPIu/lHxXYSZmpXlUHeqAIdKzBLQ==", + "version": "7.2.0", + "resolved": "https://registry.npmjs.org/glob/-/glob-7.2.0.tgz", + "integrity": "sha512-lmLf6gtyrPq8tTjSmrO94wBeQbFR3HbLHbuyD69wuyQkImp2hWqMGB47OX65FBkPffO641IP9jWa1z4ivqG26Q==", "requires": { "fs.realpath": "^1.0.0", "inflight": "^1.0.4", @@ -7476,10 +7850,128 @@ "resolved": "https://registry.npmjs.org/semver/-/semver-5.7.1.tgz", "integrity": "sha512-sauaDf/PZdVgrLTNYHRtpXa1iRiKcaebiKQ1BJdpQlWH2lCvexQdX55snPFyK7QzpudqbCI0qXFfOasHdyNDGQ==" }, - "slash": { + "supports-color": { + "version": "7.2.0", + "resolved": "https://registry.npmjs.org/supports-color/-/supports-color-7.2.0.tgz", + "integrity": "sha512-qpCAvRl9stuOHveKsn7HncJRvv501qIacKzQlO/+Lwxc9+0q2wLyv4Dfvt80/DPn2pqOBsJdDiogXGR9+OvwRw==", + "requires": { + "has-flag": "^4.0.0" + } + } + } + }, + "@react-native-community/cli-platform-android": { + "version": "6.2.0", + "resolved": "https://registry.npmjs.org/@react-native-community/cli-platform-android/-/cli-platform-android-6.2.0.tgz", + "integrity": "sha512-QLxwClcbxVhuIGsQiIpqRnoJzRdpN2B+y/Yt2OGgDHXGbuOXulgt4D+8AhvZXrB4jyAcEUlFg/048v3RGQQudw==", + "requires": { + "@react-native-community/cli-tools": "^6.2.0", + "chalk": "^4.1.2", + "execa": "^1.0.0", + "fs-extra": "^8.1.0", + "glob": "^7.1.3", + "jetifier": "^1.6.2", + "lodash": "^4.17.15", + "logkitty": "^0.7.1", + "slash": "^3.0.0", + "xmldoc": "^1.1.2" + }, + "dependencies": { + "ansi-styles": { + "version": "4.3.0", + "resolved": "https://registry.npmjs.org/ansi-styles/-/ansi-styles-4.3.0.tgz", + "integrity": "sha512-zbB9rCJAT1rbjiVDb2hqKFHNYLxgtk8NURxZ3IZwD3F6NtxbXZQCnnSi1Lkx+IDohdPlFp222wVALIheZJQSEg==", + "requires": { + "color-convert": "^2.0.1" + } + }, + "chalk": { + "version": "4.1.2", + "resolved": "https://registry.npmjs.org/chalk/-/chalk-4.1.2.tgz", + "integrity": "sha512-oKnbhFyRIXpUuez8iBMmyEa4nbj4IOQyuhc/wy9kY7/WVPcwIO9VA668Pu8RkO7+0G76SLROeyw9CpQ061i4mA==", + "requires": { + "ansi-styles": "^4.1.0", + "supports-color": "^7.1.0" + } + }, + "color-convert": { + "version": "2.0.1", + "resolved": "https://registry.npmjs.org/color-convert/-/color-convert-2.0.1.tgz", + "integrity": "sha512-RRECPsj7iu/xb5oKYcsFHSppFNnsj/52OVTRKb4zP5onXwVF3zVmmToNcOfGC+CRDpfK/U584fMg38ZHCaElKQ==", + "requires": { + "color-name": "~1.1.4" + } + }, + "color-name": { + "version": "1.1.4", + "resolved": "https://registry.npmjs.org/color-name/-/color-name-1.1.4.tgz", + "integrity": "sha512-dOy+3AuW3a2wNbZHIuMZpTcgjGuLU/uBL/ubcZF9OXbDo8ff4O8yVp5Bf0efS8uEoYo5q4Fx7dY9OgQGXgAsQA==" + }, + "cross-spawn": { + "version": "6.0.5", + "resolved": "https://registry.npmjs.org/cross-spawn/-/cross-spawn-6.0.5.tgz", + "integrity": "sha512-eTVLrBSt7fjbDygz805pMnstIs2VTBNkRm0qxZd+M7A5XDdxVRWO5MxGBXZhjY4cqLYLdtrGqRf8mBPmzwSpWQ==", + "requires": { + "nice-try": "^1.0.4", + "path-key": "^2.0.1", + "semver": "^5.5.0", + "shebang-command": "^1.2.0", + "which": "^1.2.9" + } + }, + "execa": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/execa/-/execa-1.0.0.tgz", + "integrity": "sha512-adbxcyWV46qiHyvSp50TKt05tB4tK3HcmF7/nxfAdhnox83seTDbwnaqKO4sXRy7roHAIFqJP/Rw/AuEbX61LA==", + "requires": { + "cross-spawn": "^6.0.0", + "get-stream": "^4.0.0", + "is-stream": "^1.1.0", + "npm-run-path": "^2.0.0", + "p-finally": "^1.0.0", + "signal-exit": "^3.0.0", + "strip-eof": "^1.0.0" + } + }, + "get-stream": { + "version": "4.1.0", + "resolved": "https://registry.npmjs.org/get-stream/-/get-stream-4.1.0.tgz", + "integrity": "sha512-GMat4EJ5161kIy2HevLlr4luNjBgvmj413KaQA7jt4V8B4RDsfpHk7WQ9GVqfYyyx8OS/L66Kox+rJRNklLK7w==", + "requires": { + "pump": "^3.0.0" + } + }, + "glob": { + "version": "7.2.0", + "resolved": "https://registry.npmjs.org/glob/-/glob-7.2.0.tgz", + "integrity": "sha512-lmLf6gtyrPq8tTjSmrO94wBeQbFR3HbLHbuyD69wuyQkImp2hWqMGB47OX65FBkPffO641IP9jWa1z4ivqG26Q==", + "requires": { + "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" + } + }, + "has-flag": { + "version": "4.0.0", + "resolved": "https://registry.npmjs.org/has-flag/-/has-flag-4.0.0.tgz", + "integrity": "sha512-EykJT/Q1KjTWctppgIAgfSO0tKVuZUjhgMr17kqTumMl6Afv3EISleU7qZUzoXDFTAHTDC4NOoG/ZxU3EvlMPQ==" + }, + "pump": { "version": "3.0.0", - "resolved": "https://registry.npmjs.org/slash/-/slash-3.0.0.tgz", - "integrity": "sha512-g9Q1haeby36OSStwb4ntCGGGaKsaVSjQ68fBxoQcutl5fS1vuY18H3wSt3jFyFtrkx+Kz0V1G85A4MyAdDMi2Q==" + "resolved": "https://registry.npmjs.org/pump/-/pump-3.0.0.tgz", + "integrity": "sha512-LwZy+p3SFs1Pytd/jYct4wpv49HiYCqd9Rlc5ZVdk0V+8Yzv6jR5Blk3TRmPL1ft69TxP0IMZGJ+WPFU2BFhww==", + "requires": { + "end-of-stream": "^1.1.0", + "once": "^1.3.1" + } + }, + "semver": { + "version": "5.7.1", + "resolved": "https://registry.npmjs.org/semver/-/semver-5.7.1.tgz", + "integrity": "sha512-sauaDf/PZdVgrLTNYHRtpXa1iRiKcaebiKQ1BJdpQlWH2lCvexQdX55snPFyK7QzpudqbCI0qXFfOasHdyNDGQ==" }, "supports-color": { "version": "7.2.0", @@ -7492,19 +7984,25 @@ } }, "@react-native-community/cli-platform-ios": { - "version": "5.0.1-alpha.2", - "resolved": "https://registry.npmjs.org/@react-native-community/cli-platform-ios/-/cli-platform-ios-5.0.1-alpha.2.tgz", - "integrity": "sha512-W15A75j+4bx6qbcapFia1A0M+W3JAt7Bc4VgEYvxDDRI62EsSHk1k6ZBNxs/j0cDPSYF9ZXHlRI+CWi3r9bTbQ==", + "version": "6.2.0", + "resolved": "https://registry.npmjs.org/@react-native-community/cli-platform-ios/-/cli-platform-ios-6.2.0.tgz", + "integrity": "sha512-k15MhExxLiLDDZOeuPgvTxbp0CsoLQQpk2Du0HjZDePqqWcKJylQqMZru1o8HuQHPcEr+b71HIs5V+lKyFYpfg==", "requires": { - "@react-native-community/cli-tools": "^5.0.1-alpha.1", - "chalk": "^3.0.0", + "@react-native-community/cli-tools": "^6.2.0", + "chalk": "^4.1.2", "glob": "^7.1.3", "js-yaml": "^3.13.1", "lodash": "^4.17.15", - "plist": "^3.0.1", + "ora": "^3.4.0", + "plist": "^3.0.2", "xcode": "^2.0.0" }, "dependencies": { + "ansi-regex": { + "version": "4.1.0", + "resolved": "https://registry.npmjs.org/ansi-regex/-/ansi-regex-4.1.0.tgz", + "integrity": "sha512-1apePfXM1UOSqw0o9IiFAovVz9M5S1Dg+4TrDwfMewQ6p/rmMueb7tWZjQ1rx4Loy1ArBggoqGpfqqdI4rondg==" + }, "ansi-styles": { "version": "4.3.0", "resolved": "https://registry.npmjs.org/ansi-styles/-/ansi-styles-4.3.0.tgz", @@ -7514,9 +8012,9 @@ } }, "chalk": { - "version": "3.0.0", - "resolved": "https://registry.npmjs.org/chalk/-/chalk-3.0.0.tgz", - "integrity": "sha512-4D3B6Wf41KOYRFdszmDqMCGq5VV/uMAB273JILmO+3jAlh8X4qDtdtgCR3fxtbLEMzSx22QdhnDcJvu2u1fVwg==", + "version": "4.1.2", + "resolved": "https://registry.npmjs.org/chalk/-/chalk-4.1.2.tgz", + "integrity": "sha512-oKnbhFyRIXpUuez8iBMmyEa4nbj4IOQyuhc/wy9kY7/WVPcwIO9VA668Pu8RkO7+0G76SLROeyw9CpQ061i4mA==", "requires": { "ansi-styles": "^4.1.0", "supports-color": "^7.1.0" @@ -7536,9 +8034,9 @@ "integrity": "sha512-dOy+3AuW3a2wNbZHIuMZpTcgjGuLU/uBL/ubcZF9OXbDo8ff4O8yVp5Bf0efS8uEoYo5q4Fx7dY9OgQGXgAsQA==" }, "glob": { - "version": "7.1.7", - "resolved": "https://registry.npmjs.org/glob/-/glob-7.1.7.tgz", - "integrity": "sha512-OvD9ENzPLbegENnYP5UUfJIirTg4+XwMWGaQfQTY0JenxNvvIKP3U3/tAQSPIu/lHxXYSZmpXlUHeqAIdKzBLQ==", + "version": "7.2.0", + "resolved": "https://registry.npmjs.org/glob/-/glob-7.2.0.tgz", + "integrity": "sha512-lmLf6gtyrPq8tTjSmrO94wBeQbFR3HbLHbuyD69wuyQkImp2hWqMGB47OX65FBkPffO641IP9jWa1z4ivqG26Q==", "requires": { "fs.realpath": "^1.0.0", "inflight": "^1.0.4", @@ -7553,6 +8051,73 @@ "resolved": "https://registry.npmjs.org/has-flag/-/has-flag-4.0.0.tgz", "integrity": "sha512-EykJT/Q1KjTWctppgIAgfSO0tKVuZUjhgMr17kqTumMl6Afv3EISleU7qZUzoXDFTAHTDC4NOoG/ZxU3EvlMPQ==" }, + "ora": { + "version": "3.4.0", + "resolved": "https://registry.npmjs.org/ora/-/ora-3.4.0.tgz", + "integrity": "sha512-eNwHudNbO1folBP3JsZ19v9azXWtQZjICdr3Q0TDPIaeBQ3mXLrh54wM+er0+hSp+dWKf+Z8KM58CYzEyIYxYg==", + "requires": { + "chalk": "^2.4.2", + "cli-cursor": "^2.1.0", + "cli-spinners": "^2.0.0", + "log-symbols": "^2.2.0", + "strip-ansi": "^5.2.0", + "wcwidth": "^1.0.1" + }, + "dependencies": { + "ansi-styles": { + "version": "3.2.1", + "resolved": "https://registry.npmjs.org/ansi-styles/-/ansi-styles-3.2.1.tgz", + "integrity": "sha512-VT0ZI6kZRdTh8YyJw3SMbYm/u+NqfsAxEpWO0Pf9sq8/e94WxxOpPKx9FR1FlyCtOVDNOQ+8ntlqFxiRc+r5qA==", + "requires": { + "color-convert": "^1.9.0" + } + }, + "chalk": { + "version": "2.4.2", + "resolved": "https://registry.npmjs.org/chalk/-/chalk-2.4.2.tgz", + "integrity": "sha512-Mti+f9lpJNcwF4tWV8/OrTTtF1gZi+f8FqlyAdouralcFWFQWF2+NgCHShjkCb+IFBLq9buZwE1xckQU4peSuQ==", + "requires": { + "ansi-styles": "^3.2.1", + "escape-string-regexp": "^1.0.5", + "supports-color": "^5.3.0" + } + }, + "color-convert": { + "version": "1.9.3", + "resolved": "https://registry.npmjs.org/color-convert/-/color-convert-1.9.3.tgz", + "integrity": "sha512-QfAUtd+vFdAtFQcC8CCyYt1fYWxSqAiK2cSD6zDB8N3cpsEBAvRxp9zOGg6G/SHHJYAT88/az/IuDGALsNVbGg==", + "requires": { + "color-name": "1.1.3" + } + }, + "color-name": { + "version": "1.1.3", + "resolved": "https://registry.npmjs.org/color-name/-/color-name-1.1.3.tgz", + "integrity": "sha1-p9BVi9icQveV3UIyj3QIMcpTvCU=" + }, + "has-flag": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/has-flag/-/has-flag-3.0.0.tgz", + "integrity": "sha1-tdRU3CGZriJWmfNGfloH87lVuv0=" + }, + "supports-color": { + "version": "5.5.0", + "resolved": "https://registry.npmjs.org/supports-color/-/supports-color-5.5.0.tgz", + "integrity": "sha512-QjVjwdXIt408MIiAqCX4oUKsgU2EqAGzs2Ppkm4aQYbjm+ZEWEcW4SfFNTr4uMNZma0ey4f5lgLrkB0aX0QMow==", + "requires": { + "has-flag": "^3.0.0" + } + } + } + }, + "strip-ansi": { + "version": "5.2.0", + "resolved": "https://registry.npmjs.org/strip-ansi/-/strip-ansi-5.2.0.tgz", + "integrity": "sha512-DuRs1gKbBqsMKIZlrffwlug8MHkcnpjs5VPmL1PAh+mA30U0DTotfDZ0d2UUsXpPmPmMMJ6W773MaA3J+lbiWA==", + "requires": { + "ansi-regex": "^4.1.0" + } + }, "supports-color": { "version": "7.2.0", "resolved": "https://registry.npmjs.org/supports-color/-/supports-color-7.2.0.tgz", @@ -7563,16 +8128,107 @@ } } }, + "@react-native-community/cli-plugin-metro": { + "version": "6.2.0", + "resolved": "https://registry.npmjs.org/@react-native-community/cli-plugin-metro/-/cli-plugin-metro-6.2.0.tgz", + "integrity": "sha512-JfmzuFNzOr+dFTUQJo1rV0t87XAqgHRTMYXNleQVt8otOVCk1FSCgKlgqMdvQc/FCx2ZjoMWEEV/g0LrPI8Etw==", + "requires": { + "@react-native-community/cli-server-api": "^6.2.0", + "@react-native-community/cli-tools": "^6.2.0", + "chalk": "^4.1.2", + "metro": "^0.66.1", + "metro-config": "^0.66.1", + "metro-core": "^0.66.1", + "metro-react-native-babel-transformer": "^0.66.1", + "metro-resolver": "^0.66.1", + "metro-runtime": "^0.66.1", + "readline": "^1.3.0" + }, + "dependencies": { + "ansi-styles": { + "version": "4.3.0", + "resolved": "https://registry.npmjs.org/ansi-styles/-/ansi-styles-4.3.0.tgz", + "integrity": "sha512-zbB9rCJAT1rbjiVDb2hqKFHNYLxgtk8NURxZ3IZwD3F6NtxbXZQCnnSi1Lkx+IDohdPlFp222wVALIheZJQSEg==", + "requires": { + "color-convert": "^2.0.1" + } + }, + "chalk": { + "version": "4.1.2", + "resolved": "https://registry.npmjs.org/chalk/-/chalk-4.1.2.tgz", + "integrity": "sha512-oKnbhFyRIXpUuez8iBMmyEa4nbj4IOQyuhc/wy9kY7/WVPcwIO9VA668Pu8RkO7+0G76SLROeyw9CpQ061i4mA==", + "requires": { + "ansi-styles": "^4.1.0", + "supports-color": "^7.1.0" + } + }, + "color-convert": { + "version": "2.0.1", + "resolved": "https://registry.npmjs.org/color-convert/-/color-convert-2.0.1.tgz", + "integrity": "sha512-RRECPsj7iu/xb5oKYcsFHSppFNnsj/52OVTRKb4zP5onXwVF3zVmmToNcOfGC+CRDpfK/U584fMg38ZHCaElKQ==", + "requires": { + "color-name": "~1.1.4" + } + }, + "color-name": { + "version": "1.1.4", + "resolved": "https://registry.npmjs.org/color-name/-/color-name-1.1.4.tgz", + "integrity": "sha512-dOy+3AuW3a2wNbZHIuMZpTcgjGuLU/uBL/ubcZF9OXbDo8ff4O8yVp5Bf0efS8uEoYo5q4Fx7dY9OgQGXgAsQA==" + }, + "has-flag": { + "version": "4.0.0", + "resolved": "https://registry.npmjs.org/has-flag/-/has-flag-4.0.0.tgz", + "integrity": "sha512-EykJT/Q1KjTWctppgIAgfSO0tKVuZUjhgMr17kqTumMl6Afv3EISleU7qZUzoXDFTAHTDC4NOoG/ZxU3EvlMPQ==" + }, + "supports-color": { + "version": "7.2.0", + "resolved": "https://registry.npmjs.org/supports-color/-/supports-color-7.2.0.tgz", + "integrity": "sha512-qpCAvRl9stuOHveKsn7HncJRvv501qIacKzQlO/+Lwxc9+0q2wLyv4Dfvt80/DPn2pqOBsJdDiogXGR9+OvwRw==", + "requires": { + "has-flag": "^4.0.0" + } + } + } + }, + "@react-native-community/cli-server-api": { + "version": "6.2.0", + "resolved": "https://registry.npmjs.org/@react-native-community/cli-server-api/-/cli-server-api-6.2.0.tgz", + "integrity": "sha512-OnbnYclhoDpjge33QO5Slhfn0DsmLzzAgyrSCnb24HhSqwq7ObjMHaLpoEhpajzLG71wq5oKh0APEQjiL4Mknw==", + "requires": { + "@react-native-community/cli-debugger-ui": "^6.0.0-rc.0", + "@react-native-community/cli-tools": "^6.2.0", + "compression": "^1.7.1", + "connect": "^3.6.5", + "errorhandler": "^1.5.0", + "nocache": "^2.1.0", + "pretty-format": "^26.6.2", + "serve-static": "^1.13.1", + "ws": "^1.1.0" + }, + "dependencies": { + "ws": { + "version": "1.1.5", + "resolved": "https://registry.npmjs.org/ws/-/ws-1.1.5.tgz", + "integrity": "sha512-o3KqipXNUdS7wpQzBHSe180lBGO60SoK0yVo3CYJgb2MkobuWuBX6dhkYP5ORCLd55y+SaflMOV5fqAB53ux4w==", + "requires": { + "options": ">=0.0.5", + "ultron": "1.0.x" + } + } + } + }, "@react-native-community/cli-tools": { - "version": "5.0.1-alpha.1", - "resolved": "https://registry.npmjs.org/@react-native-community/cli-tools/-/cli-tools-5.0.1-alpha.1.tgz", - "integrity": "sha512-TwQxtfEOxGf8n5+UYKVO5exm56TwEAsWjYcoWkUKcSsIBl6VwCR4s3qGB8Y63uLUN2wf9MKnzvsaX337GjMVTA==", + "version": "6.2.0", + "resolved": "https://registry.npmjs.org/@react-native-community/cli-tools/-/cli-tools-6.2.0.tgz", + "integrity": "sha512-08ssz4GMEnRxC/1FgTTN/Ud7mExQi5xMphItPjfHiTxpZPhrFn+IMx6mya0ncFEhhxQ207wYlJMRLPRRdBZ8oA==", "requires": { - "chalk": "^3.0.0", + "appdirsjs": "^1.2.4", + "chalk": "^4.1.2", "lodash": "^4.17.15", "mime": "^2.4.1", "node-fetch": "^2.6.0", "open": "^6.2.0", + "semver": "^6.3.0", "shell-quote": "1.6.1" }, "dependencies": { @@ -7585,9 +8241,9 @@ } }, "chalk": { - "version": "3.0.0", - "resolved": "https://registry.npmjs.org/chalk/-/chalk-3.0.0.tgz", - "integrity": "sha512-4D3B6Wf41KOYRFdszmDqMCGq5VV/uMAB273JILmO+3jAlh8X4qDtdtgCR3fxtbLEMzSx22QdhnDcJvu2u1fVwg==", + "version": "4.1.2", + "resolved": "https://registry.npmjs.org/chalk/-/chalk-4.1.2.tgz", + "integrity": "sha512-oKnbhFyRIXpUuez8iBMmyEa4nbj4IOQyuhc/wy9kY7/WVPcwIO9VA668Pu8RkO7+0G76SLROeyw9CpQ061i4mA==", "requires": { "ansi-styles": "^4.1.0", "supports-color": "^7.1.0" @@ -7611,6 +8267,11 @@ "resolved": "https://registry.npmjs.org/has-flag/-/has-flag-4.0.0.tgz", "integrity": "sha512-EykJT/Q1KjTWctppgIAgfSO0tKVuZUjhgMr17kqTumMl6Afv3EISleU7qZUzoXDFTAHTDC4NOoG/ZxU3EvlMPQ==" }, + "semver": { + "version": "6.3.0", + "resolved": "https://registry.npmjs.org/semver/-/semver-6.3.0.tgz", + "integrity": "sha512-b39TBaTSfV6yBrapU89p5fKekE2m/NwnDocOVruQFS1/veMgdzuPcnOM34M6CwxW8jH/lxEa5rBoDeUwu5HHTw==" + }, "supports-color": { "version": "7.2.0", "resolved": "https://registry.npmjs.org/supports-color/-/supports-color-7.2.0.tgz", @@ -7621,13 +8282,59 @@ } } }, + "@react-native-community/cli-types": { + "version": "6.0.0", + "resolved": "https://registry.npmjs.org/@react-native-community/cli-types/-/cli-types-6.0.0.tgz", + "integrity": "sha512-K493Fk2DMJC0ZM8s8gnfseKxGasIhuDaCUDeLZcoCSFlrjKEuEs1BKKEJiev0CARhKEXKOyyp/uqYM9nWhisNw==", + "requires": { + "ora": "^3.4.0" + }, + "dependencies": { + "ansi-regex": { + "version": "4.1.0", + "resolved": "https://registry.npmjs.org/ansi-regex/-/ansi-regex-4.1.0.tgz", + "integrity": "sha512-1apePfXM1UOSqw0o9IiFAovVz9M5S1Dg+4TrDwfMewQ6p/rmMueb7tWZjQ1rx4Loy1ArBggoqGpfqqdI4rondg==" + }, + "chalk": { + "version": "2.4.2", + "resolved": "https://registry.npmjs.org/chalk/-/chalk-2.4.2.tgz", + "integrity": "sha512-Mti+f9lpJNcwF4tWV8/OrTTtF1gZi+f8FqlyAdouralcFWFQWF2+NgCHShjkCb+IFBLq9buZwE1xckQU4peSuQ==", + "requires": { + "ansi-styles": "^3.2.1", + "escape-string-regexp": "^1.0.5", + "supports-color": "^5.3.0" + } + }, + "ora": { + "version": "3.4.0", + "resolved": "https://registry.npmjs.org/ora/-/ora-3.4.0.tgz", + "integrity": "sha512-eNwHudNbO1folBP3JsZ19v9azXWtQZjICdr3Q0TDPIaeBQ3mXLrh54wM+er0+hSp+dWKf+Z8KM58CYzEyIYxYg==", + "requires": { + "chalk": "^2.4.2", + "cli-cursor": "^2.1.0", + "cli-spinners": "^2.0.0", + "log-symbols": "^2.2.0", + "strip-ansi": "^5.2.0", + "wcwidth": "^1.0.1" + } + }, + "strip-ansi": { + "version": "5.2.0", + "resolved": "https://registry.npmjs.org/strip-ansi/-/strip-ansi-5.2.0.tgz", + "integrity": "sha512-DuRs1gKbBqsMKIZlrffwlug8MHkcnpjs5VPmL1PAh+mA30U0DTotfDZ0d2UUsXpPmPmMMJ6W773MaA3J+lbiWA==", + "requires": { + "ansi-regex": "^4.1.0" + } + } + } + }, "@react-native-community/masked-view": { - "version": "https://raw.githubusercontent.com/wordpress-mobile/react-native-masked-view/f204c270ecd7c63ddea3449ba829d2415076faa2/react-native-community-masked-view-0.1.11-wp-1.tgz", - "integrity": "sha512-hRvCRcs2FlLTE9tLXyDkc5b4tbSYchc8e71F73r8lTxhFcRTYXQMZTxEcNW495dqeuOw76rIrQOkOZiIJTZFIw==" + "version": "https://raw.githubusercontent.com/wordpress-mobile/react-native-masked-view/v0.1.11-wp-2/react-native-community-masked-view-0.1.11-wp-2.tgz", + "integrity": "sha512-fwa126Zx4o7z23GYWTPzeCaqYf4XixgrWNIm0nlOVKHFNXXDQ2MWxSO/Yn6SJjxUR7UiRCdMcVsHGJ6nU1WfQA==" }, "@react-native-community/slider": { - "version": "https://raw.githubusercontent.com/wordpress-mobile/react-native-slider/851dbc78d015afa55ad1e526c6d14bb86399722b/react-native-community-slider-3.0.2-wp-1.tgz", - "integrity": "sha512-lxcLjijQGlAJJo6/WapBdwi6463OlmtYDEilWD0uNSOvij3VSCUIPL9TWrC3tHSWilupa/PQ5fIihPmkJQDTaA==" + "version": "https://raw.githubusercontent.com/wordpress-mobile/react-native-slider/v3.0.2-wp-2/react-native-community-slider-3.0.2-wp-2.tgz", + "integrity": "sha512-JKRintAuY/fyf30euhB7Exu4r8Lp3n4Mw55J920zfAKuBfFJbmLvLEahvwxUdO9nkBMMJl4r3xquW+qqiXbHIQ==" }, "@react-native/assets": { "version": "1.0.0", @@ -7640,9 +8347,9 @@ "integrity": "sha512-xUNRvNmCl3UGCPbbHvfyFMnpvLPoOjDCcp5bT9m2k+TF/ZBklEQwhPZlkrxRx2NhgFh1X3a5uL7mJ7ZR+8G7Qg==" }, "@react-native/polyfills": { - "version": "1.0.0", - "resolved": "https://registry.npmjs.org/@react-native/polyfills/-/polyfills-1.0.0.tgz", - "integrity": "sha512-0jbp4RxjYopTsIdLl+/Fy2TiwVYHy4mgeu07DG4b/LyM0OS/+lPP5c9sbnt/AMlnF6qz2JRZpPpGw1eMNS6A4w==" + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/@react-native/polyfills/-/polyfills-2.0.0.tgz", + "integrity": "sha512-K0aGNn1TjalKj+65D7ycc1//H9roAQ51GJVk5ZJQFb2teECGmzd86bYDC0aYdbRf7gtovescq4Zt6FR0tgXiHQ==" }, "@react-navigation/core": { "version": "5.12.0", @@ -16032,8 +16739,8 @@ "@types/react-dom": "^17.0.11", "@wordpress/escape-html": "file:packages/escape-html", "lodash": "^4.17.21", - "react": "^17.0.1", - "react-dom": "^17.0.1" + "react": "^17.0.2", + "react-dom": "^17.0.2" } }, "@wordpress/env": { @@ -16459,9 +17166,10 @@ "version": "file:packages/react-native-editor", "requires": { "@babel/runtime": "^7.16.0", + "@react-native-clipboard/clipboard": "https://raw.githubusercontent.com/wordpress-mobile/react-native-clipboard/b9f44e935c7a1aac26d92e46e45cd92cd9da18c5/react-native-clipboard-clipboard-1.9.0-wp-1.tgz", "@react-native-community/blur": "3.6.0", - "@react-native-community/masked-view": "https://raw.githubusercontent.com/wordpress-mobile/react-native-masked-view/f204c270ecd7c63ddea3449ba829d2415076faa2/react-native-community-masked-view-0.1.11-wp-1.tgz", - "@react-native-community/slider": "https://raw.githubusercontent.com/wordpress-mobile/react-native-slider/851dbc78d015afa55ad1e526c6d14bb86399722b/react-native-community-slider-3.0.2-wp-1.tgz", + "@react-native-community/masked-view": "https://raw.githubusercontent.com/wordpress-mobile/react-native-masked-view/v0.1.11-wp-2/react-native-community-masked-view-0.1.11-wp-2.tgz", + "@react-native-community/slider": "https://raw.githubusercontent.com/wordpress-mobile/react-native-slider/v3.0.2-wp-2/react-native-community-slider-3.0.2-wp-2.tgz", "@react-navigation/core": "5.12.0", "@react-navigation/native": "5.7.0", "@react-navigation/routers": "5.4.9", @@ -16483,24 +17191,24 @@ "jed": "^1.1.1", "jsdom-jscore-rn": "git+https://github.com/iamcco/jsdom-jscore-rn.git#a562f3d57c27c13e5bfc8cf82d496e69a3ba2800", "node-fetch": "^2.6.0", - "react-native": "0.64.0", - "react-native-gesture-handler": "https://raw.githubusercontent.com/wordpress-mobile/react-native-gesture-handler/e20fb879b029dc2da92ff06e059cc8b1bd1cee26/react-native-gesture-handler-1.10.1-wp-3.tgz", - "react-native-get-random-values": "https://raw.githubusercontent.com/wordpress-mobile/react-native-get-random-values/f3f5e2a04078e4b00f6a3ca38ac1c73be942a2c9/react-native-get-random-values-1.4.0-wp-1.tgz", + "react-native": "0.66.2", + "react-native-gesture-handler": "https://raw.githubusercontent.com/wordpress-mobile/react-native-gesture-handler/1.10.1-wp-4/react-native-gesture-handler-1.10.1-wp-4.tgz", + "react-native-get-random-values": "https://raw.githubusercontent.com/wordpress-mobile/react-native-get-random-values/v1.4.0-wp-2/react-native-get-random-values-1.4.0-wp-2.tgz", "react-native-hr": "git+https://github.com/Riglerr/react-native-hr.git#2d01a5cf77212d100e8b99e0310cce5234f977b3", - "react-native-hsv-color-picker": "https://raw.githubusercontent.com/wordpress-mobile/react-native-hsv-color-picker/03c0038419326fb86120560cdc3ce958d52cee37/react-native-hsv-color-picker-1.0.1-wp-1.tgz", + "react-native-hsv-color-picker": "https://raw.githubusercontent.com/wordpress-mobile/react-native-hsv-color-picker/v1.0.1-wp-2/react-native-hsv-color-picker-1.0.1-wp-2.tgz", "react-native-keyboard-aware-scroll-view": "https://raw.githubusercontent.com/wordpress-mobile/react-native-keyboard-aware-scroll-view/v0.8.8-wp-1/react-native-keyboard-aware-scroll-view-0.8.8-wp-1.tgz", - "react-native-linear-gradient": "https://raw.githubusercontent.com/wordpress-mobile/react-native-linear-gradient/8bfaf806ee2d4c0c3b4f001f653825522529e51a/react-native-linear-gradient-2.5.6-wp-1.tgz", + "react-native-linear-gradient": "https://raw.githubusercontent.com/wordpress-mobile/react-native-linear-gradient/v2.5.6-wp-2/react-native-linear-gradient-2.5.6-wp-2.tgz", "react-native-modal": "^11.10.0", - "react-native-prompt-android": "https://raw.githubusercontent.com/wordpress-mobile/react-native-prompt-android/a1db6b97989e63490a13c31124de1e3882e6c46c/react-native-prompt-android-1.0.0-wp-1.tgz", - "react-native-reanimated": "https://raw.githubusercontent.com/wordpress-mobile/react-native-reanimated/1e8662de5378843e35c2e559d60aeaa729726fc0/react-native-reanimated-1.9.0-wp-1.tgz", + "react-native-prompt-android": "https://raw.githubusercontent.com/wordpress-mobile/react-native-prompt-android/v1.0.0-wp-2/react-native-prompt-android-1.0.0-wp-2.tgz", + "react-native-reanimated": "https://raw.githubusercontent.com/wordpress-mobile/react-native-reanimated/1.9.0-wp-2/react-native-reanimated-1.9.0-wp-2.tgz", "react-native-safe-area": "^0.5.0", - "react-native-safe-area-context": "https://raw.githubusercontent.com/wordpress-mobile/react-native-safe-area-context/3dae92d9c95a253f7cafb7fcde44b77b0ea72789/react-native-safe-area-context-3.2.0-wp-1.tgz", + "react-native-safe-area-context": "https://raw.githubusercontent.com/wordpress-mobile/react-native-safe-area-context/v3.2.0-wp-2/react-native-safe-area-context-3.2.0-wp-2.tgz", "react-native-sass-transformer": "^1.1.1", - "react-native-screens": "https://raw.githubusercontent.com/wordpress-mobile/react-native-screens/a25c3d81e0838d57c9f9ac77ef726751e329bad1/react-native-screens-2.9.0-wp-1.tgz", - "react-native-svg": "https://raw.githubusercontent.com/wordpress-mobile/react-native-svg/99132c9403db6a5709c5c383770547eda8eb25d1/react-native-svg-9.13.7-wp-1.tgz", + "react-native-screens": "https://raw.githubusercontent.com/wordpress-mobile/react-native-screens/2.9.0-wp-2/react-native-screens-2.9.0-wp-2.tgz", + "react-native-svg": "https://raw.githubusercontent.com/wordpress-mobile/react-native-svg/v9.13.7-wp-2/react-native-svg-9.13.7-wp-2.tgz", "react-native-url-polyfill": "^1.1.2", - "react-native-video": "https://raw.githubusercontent.com/wordpress-mobile/react-native-video/67b5961406c7d6be0916ef69c7a6af69501aad83/react-native-video-5.0.2-wp-1.tgz", - "react-native-webview": "https://raw.githubusercontent.com/wordpress-mobile/react-native-webview/0c8632f1f4f442574ed3118d8ea35e6f7b4511df/react-native-webview-11.6.5-wp-1.tgz" + "react-native-video": "https://raw.githubusercontent.com/wordpress-mobile/react-native-video/5.0.2-wp-2/react-native-video-5.0.2-wp-2.tgz", + "react-native-webview": "https://raw.githubusercontent.com/wordpress-mobile/react-native-webview/v11.6.5-wp-2/react-native-webview-11.6.5-wp-2.tgz" } }, "@wordpress/readable-js-assets-webpack-plugin": { @@ -17536,9 +18244,9 @@ "integrity": "sha512-91IFKeKk7FjfmezPKkwtaRvSpnUc4gDwPAjA1YZ9Gn0q0PPeW+vbeUsZuyDwjI7+QTHhcLen2v25fi/AmhvbJA==" }, "appdirsjs": { - "version": "1.2.4", - "resolved": "https://registry.npmjs.org/appdirsjs/-/appdirsjs-1.2.4.tgz", - "integrity": "sha512-WO5StDORR6JF/xYnXk/Fm0yu+iULaV5ULKuUw0Tu+jbgiTlSquaWBCgbpnsHLMXldf+fM3Gxn5p7vjond7He6w==" + "version": "1.2.6", + "resolved": "https://registry.npmjs.org/appdirsjs/-/appdirsjs-1.2.6.tgz", + "integrity": "sha512-D8wJNkqMCeQs3kLasatELsddox/Xqkhp+J07iXGyL54fVN7oc+nmNfYzGuCs1IEP6uBw+TfpuO3JKwc+lECy4w==" }, "appium": { "version": "1.22.0", @@ -25962,19 +26670,19 @@ } }, "bplist-creator": { - "version": "0.0.8", - "resolved": "https://registry.npmjs.org/bplist-creator/-/bplist-creator-0.0.8.tgz", - "integrity": "sha512-Za9JKzD6fjLC16oX2wsXfc+qBEhJBJB1YPInoAQpMLhDuj5aVOv1baGeIQSq1Fr3OCqzvsoQcSBSwGId/Ja2PA==", + "version": "0.1.0", + "resolved": "https://registry.npmjs.org/bplist-creator/-/bplist-creator-0.1.0.tgz", + "integrity": "sha512-sXaHZicyEEmY86WyueLTQesbeoH/mquvarJaQNbjuOQO+7gbFcDEWqKmcWA4cOTLzFlfgvkiVxolk1k5bBIpmg==", "requires": { - "stream-buffers": "~2.2.0" + "stream-buffers": "2.2.x" } }, "bplist-parser": { - "version": "0.2.0", - "resolved": "https://registry.npmjs.org/bplist-parser/-/bplist-parser-0.2.0.tgz", - "integrity": "sha512-z0M+byMThzQmD9NILRniCUXYsYpjwnlO8N5uCFaCqIOpqRsJCrQL9NK3JsD67CN5a08nF5oIL2bD6loTdHOuKw==", + "version": "0.3.0", + "resolved": "https://registry.npmjs.org/bplist-parser/-/bplist-parser-0.3.0.tgz", + "integrity": "sha512-zgmaRvT6AN1JpPPV+S0a1/FAtoxSreYDccZGIqEMSvZl9DMe70mJ7MFzpxa1X+gHVdkToE2haRUHHMiW1OdejA==", "requires": { - "big-integer": "^1.6.44" + "big-integer": "1.6.x" } }, "brace-expansion": { @@ -27340,9 +28048,9 @@ }, "dependencies": { "ansi-regex": { - "version": "5.0.0", - "resolved": "https://registry.npmjs.org/ansi-regex/-/ansi-regex-5.0.0.tgz", - "integrity": "sha512-bY6fj56OUQ0hU1KjFNDQuJFezqKdrAyFdIevADiqrWHwSlbmBNMHp5ak2f40Pm8JTFyM2mqxkG6ngkHO11f/lg==" + "version": "5.0.1", + "resolved": "https://registry.npmjs.org/ansi-regex/-/ansi-regex-5.0.1.tgz", + "integrity": "sha512-quJQXlTSUGL2LH9SUXo8VwsY4soanhgo6LNSm84E1LBcE8s3O0wpdiRzyR9z/ZZJMlMWv37qOOb9pdJlMUEKFQ==" }, "emoji-regex": { "version": "8.0.0", @@ -27355,21 +28063,21 @@ "integrity": "sha512-zymm5+u+sCsSWyD9qNaejV3DFvhCKclKdizYaJUuHA83RLjb7nSuGnddCHGv0hk+KY7BMAlsWeK4Ueg6EV6XQg==" }, "string-width": { - "version": "4.2.2", - "resolved": "https://registry.npmjs.org/string-width/-/string-width-4.2.2.tgz", - "integrity": "sha512-XBJbT3N4JhVumXE0eoLU9DCjcaF92KLNqTmFCnG1pf8duUxFGwtP6AD6nkjw9a3IdiRtL3E2w3JDiE/xi3vOeA==", + "version": "4.2.3", + "resolved": "https://registry.npmjs.org/string-width/-/string-width-4.2.3.tgz", + "integrity": "sha512-wKyQRQpjJ0sIp62ErSZdGsjMJWsap5oRNihHhu6G7JVO/9jIB6UyevL+tXuOqrng8j/cxKTWyWUwvSTriiZz/g==", "requires": { "emoji-regex": "^8.0.0", "is-fullwidth-code-point": "^3.0.0", - "strip-ansi": "^6.0.0" + "strip-ansi": "^6.0.1" } }, "strip-ansi": { - "version": "6.0.0", - "resolved": "https://registry.npmjs.org/strip-ansi/-/strip-ansi-6.0.0.tgz", - "integrity": "sha512-AuvKTrTfQNYNIctbR1K/YGTR1756GycPsg7b9bdV9Duqur4gv6aKqHXah67Z8ImS7WEz5QVcOtlfW2rZEugt6w==", + "version": "6.0.1", + "resolved": "https://registry.npmjs.org/strip-ansi/-/strip-ansi-6.0.1.tgz", + "integrity": "sha512-Y38VPSHcqkFrCpFnQ9vuSXmquuv5oXOKpGeT6aGrr3o3Gc9AlVa6JBfUSOCnbxGGZF+/0ooI7KrPuUSztUdU5A==", "requires": { - "ansi-regex": "^5.0.0" + "ansi-regex": "^5.0.1" } } } @@ -27866,11 +28574,6 @@ "requires": { "ms": "2.0.0" } - }, - "parseurl": { - "version": "1.3.3", - "resolved": "https://registry.npmjs.org/parseurl/-/parseurl-1.3.3.tgz", - "integrity": "sha512-CiyeOxFT/JZyN5m0z9PfXw4SCBJ6Sygz1Dpl0wqjlhDEGGBP1GnsUVEL0p63hoG1fcj3fHynXi9NYO4nWOL+qQ==" } } }, @@ -29333,9 +30036,9 @@ "dev": true }, "dayjs": { - "version": "1.10.5", - "resolved": "https://registry.npmjs.org/dayjs/-/dayjs-1.10.5.tgz", - "integrity": "sha512-BUFis41ikLz+65iH6LHQCDm4YPMj5r1YFLdupPIyM4SGcXMmtiLQ7U37i+hGS8urIuqe7I/ou3IS1jVc4nbN4g==" + "version": "1.10.7", + "resolved": "https://registry.npmjs.org/dayjs/-/dayjs-1.10.7.tgz", + "integrity": "sha512-P6twpd70BcPK34K26uJ1KT3wlhpuOAPoMwJzpsIWUxHZ7wpmbdZL/hQqBDfz7hGurYSa5PhzdhDHtt319hL3ig==" }, "debug": { "version": "3.1.0", @@ -33338,9 +34041,9 @@ } }, "fbjs": { - "version": "3.0.0", - "resolved": "https://registry.npmjs.org/fbjs/-/fbjs-3.0.0.tgz", - "integrity": "sha512-dJd4PiDOFuhe7vk4F80Mba83Vr2QuK86FoxtgPmzBqEJahncp+13YCmfoa53KHCo6OnlXLG7eeMWPfB5CrpVKg==", + "version": "3.0.1", + "resolved": "https://registry.npmjs.org/fbjs/-/fbjs-3.0.1.tgz", + "integrity": "sha512-8+vkGyT4lNDRKHQNPp0yh/6E7FfkLg89XqQbOYnvntRh+8RiSD43yrh9E5ejp1muCizTL4nDVG+y8W4e+LROHg==", "requires": { "cross-fetch": "^3.0.4", "fbjs-css-vars": "^1.0.0", @@ -33348,7 +34051,7 @@ "object-assign": "^4.1.0", "promise": "^7.1.1", "setimmediate": "^1.0.5", - "ua-parser-js": "^0.7.18" + "ua-parser-js": "^0.7.30" } }, "fbjs-css-vars": { @@ -34964,6 +35667,7 @@ "version": "7.1.2", "resolved": "https://registry.npmjs.org/glob/-/glob-7.1.2.tgz", "integrity": "sha512-MJTUg1kjuLeQCJ+ccE4Vpa6kKVXkPYJ2mOCQyUuKLcLQsdrMCpBPUi8qVE6+YuaJkozeA9NusTAw3hLr8Xe5EQ==", + "dev": true, "requires": { "fs.realpath": "^1.0.0", "inflight": "^1.0.4", @@ -35691,9 +36395,14 @@ "dev": true }, "hermes-engine": { - "version": "0.7.2", - "resolved": "https://registry.npmjs.org/hermes-engine/-/hermes-engine-0.7.2.tgz", - "integrity": "sha512-E2DkRaO97gwL98LPhgfkMqhHiNsrAjIfEk3wWYn2Y31xdkdWn0572H7RnVcGujMJVqZNJvtknxlpsUb8Wzc3KA==" + "version": "0.9.0", + "resolved": "https://registry.npmjs.org/hermes-engine/-/hermes-engine-0.9.0.tgz", + "integrity": "sha512-r7U+Y4P2Qg/igFVZN+DpT7JFfXUn1MM4dFne8aW+cCrF6RRymof+VqrUHs1kl07j8h8V2CNesU19RKgWbr3qPw==" + }, + "hermes-parser": { + "version": "0.4.7", + "resolved": "https://registry.npmjs.org/hermes-parser/-/hermes-parser-0.4.7.tgz", + "integrity": "sha512-jc+zCtXbtwTiXoMAoXOHepxAaGVFIp89wwE9qcdwnMd/uGVEtPoY8FaFSsx0ThPvyKirdR2EsIIDVrpbSXz1Ag==" }, "hermes-profile-transformer": { "version": "0.0.6", @@ -35953,21 +36662,26 @@ "dev": true }, "http-errors": { - "version": "1.7.3", - "resolved": "https://registry.npmjs.org/http-errors/-/http-errors-1.7.3.tgz", - "integrity": "sha512-ZTTX0MWrsQ2ZAhA1cejAwDLycFsd7I7nVtnkT3Ol0aqodaKW+0CTZDQ1uBv5whptCnc8e8HeRRJxRs0kmm/Qfw==", + "version": "1.8.1", + "resolved": "https://registry.npmjs.org/http-errors/-/http-errors-1.8.1.tgz", + "integrity": "sha512-Kpk9Sm7NmI+RHhnj6OIWDI1d6fIoFAtFt9RLaTMRlg/8w49juAStsrBgp0Dp4OdxdVbRIeKhtCUvoi/RuAhO4g==", "requires": { "depd": "~1.1.2", "inherits": "2.0.4", - "setprototypeof": "1.1.1", + "setprototypeof": "1.2.0", "statuses": ">= 1.5.0 < 2", - "toidentifier": "1.0.0" + "toidentifier": "1.0.1" }, "dependencies": { "inherits": { "version": "2.0.4", "resolved": "https://registry.npmjs.org/inherits/-/inherits-2.0.4.tgz", "integrity": "sha512-k/vGaX4/Yla3WzyMCvTQOXYeIHvqOKtnqBduzTHpzpQZzAskKMhZ2K+EnBiSM9zGSoIFeMpXKxa4dYeZIQqewQ==" + }, + "toidentifier": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/toidentifier/-/toidentifier-1.0.1.tgz", + "integrity": "sha512-o5sSPKEkg/DIQNmH43V0/uerLrpzVedkUh8tGNvaeXpfpuwjKenlSox/2O/BTlZUtEe+JG7s5YhEz608PlAHRA==" } } }, @@ -39059,9 +39773,9 @@ } }, "@types/istanbul-reports": { - "version": "3.0.0", - "resolved": "https://registry.npmjs.org/@types/istanbul-reports/-/istanbul-reports-3.0.0.tgz", - "integrity": "sha512-nwKNbvnwJ2/mndE9ItP/zc2TCzw6uuodnF4EHYWD+gCQDVBuRQL5UzbZD0/ezy1iKsFU2ZQiDqg4M9dN4+wZgA==", + "version": "3.0.1", + "resolved": "https://registry.npmjs.org/@types/istanbul-reports/-/istanbul-reports-3.0.1.tgz", + "integrity": "sha512-c3mAZEuK0lvBp8tmuL74XRKn1+y2dcwOUpH7x4WrF6gk1GIgiluDRgMYQtw2OFcBvAJWlt6ASU3tSqxp0Uu0Aw==", "requires": { "@types/istanbul-lib-report": "*" } @@ -39092,9 +39806,9 @@ } }, "graceful-fs": { - "version": "4.2.6", - "resolved": "https://registry.npmjs.org/graceful-fs/-/graceful-fs-4.2.6.tgz", - "integrity": "sha512-nTnJ528pbqxYanhpDYsi4Rd8MAeaBA67+RZ10CM1m3bTAVFEDcd5AuA4a6W5YkGZ1iNXHzZz8T6TBKLeBuNriQ==" + "version": "4.2.8", + "resolved": "https://registry.npmjs.org/graceful-fs/-/graceful-fs-4.2.8.tgz", + "integrity": "sha512-qkIilPUYcNhJpd33n0GBXTB1MMPp14TxEsEs0pTrsSVucApsYzW5V+Q8Qxhik6KU3evy+qkAAowTByymK0avdg==" }, "is-number": { "version": "7.0.0", @@ -41108,9 +41822,9 @@ }, "dependencies": { "graceful-fs": { - "version": "4.2.6", - "resolved": "https://registry.npmjs.org/graceful-fs/-/graceful-fs-4.2.6.tgz", - "integrity": "sha512-nTnJ528pbqxYanhpDYsi4Rd8MAeaBA67+RZ10CM1m3bTAVFEDcd5AuA4a6W5YkGZ1iNXHzZz8T6TBKLeBuNriQ==" + "version": "4.2.8", + "resolved": "https://registry.npmjs.org/graceful-fs/-/graceful-fs-4.2.8.tgz", + "integrity": "sha512-qkIilPUYcNhJpd33n0GBXTB1MMPp14TxEsEs0pTrsSVucApsYzW5V+Q8Qxhik6KU3evy+qkAAowTByymK0avdg==" } } }, @@ -41561,9 +42275,9 @@ } }, "@types/istanbul-reports": { - "version": "3.0.0", - "resolved": "https://registry.npmjs.org/@types/istanbul-reports/-/istanbul-reports-3.0.0.tgz", - "integrity": "sha512-nwKNbvnwJ2/mndE9ItP/zc2TCzw6uuodnF4EHYWD+gCQDVBuRQL5UzbZD0/ezy1iKsFU2ZQiDqg4M9dN4+wZgA==", + "version": "3.0.1", + "resolved": "https://registry.npmjs.org/@types/istanbul-reports/-/istanbul-reports-3.0.1.tgz", + "integrity": "sha512-c3mAZEuK0lvBp8tmuL74XRKn1+y2dcwOUpH7x4WrF6gk1GIgiluDRgMYQtw2OFcBvAJWlt6ASU3tSqxp0Uu0Aw==", "requires": { "@types/istanbul-lib-report": "*" } @@ -41585,9 +42299,9 @@ } }, "graceful-fs": { - "version": "4.2.6", - "resolved": "https://registry.npmjs.org/graceful-fs/-/graceful-fs-4.2.6.tgz", - "integrity": "sha512-nTnJ528pbqxYanhpDYsi4Rd8MAeaBA67+RZ10CM1m3bTAVFEDcd5AuA4a6W5YkGZ1iNXHzZz8T6TBKLeBuNriQ==" + "version": "4.2.8", + "resolved": "https://registry.npmjs.org/graceful-fs/-/graceful-fs-4.2.8.tgz", + "integrity": "sha512-qkIilPUYcNhJpd33n0GBXTB1MMPp14TxEsEs0pTrsSVucApsYzW5V+Q8Qxhik6KU3evy+qkAAowTByymK0avdg==" }, "is-number": { "version": "7.0.0", @@ -42042,9 +42756,9 @@ "optional": true }, "jsc-android": { - "version": "245459.0.0", - "resolved": "https://registry.npmjs.org/jsc-android/-/jsc-android-245459.0.0.tgz", - "integrity": "sha512-wkjURqwaB1daNkDi2OYYbsLnIdC/lUM2nPXQKRs5pqEU9chDg435bjvo+LSaHotDENygHQDHe+ntUkkw2gwMtg==" + "version": "250230.2.1", + "resolved": "https://registry.npmjs.org/jsc-android/-/jsc-android-250230.2.1.tgz", + "integrity": "sha512-KmxeBlRjwoqCnBBKGsihFtvsBHyUFlBxJPK4FzeYcIuBfdjv6jFys44JITAgSTbQD+vIdwMEfyZklsuQX0yI1Q==" }, "jscodeshift": { "version": "0.11.0", @@ -42078,9 +42792,9 @@ "integrity": "sha512-a+UqTh4kgZg/SlGvfbzDHpgRu7AAQOmmqRHJnxhRZICKFUT91brVhNNt58CMWU9PsBbv3PDCZUHbVxuDiH2mtA==" }, "graceful-fs": { - "version": "4.2.6", - "resolved": "https://registry.npmjs.org/graceful-fs/-/graceful-fs-4.2.6.tgz", - "integrity": "sha512-nTnJ528pbqxYanhpDYsi4Rd8MAeaBA67+RZ10CM1m3bTAVFEDcd5AuA4a6W5YkGZ1iNXHzZz8T6TBKLeBuNriQ==" + "version": "4.2.8", + "resolved": "https://registry.npmjs.org/graceful-fs/-/graceful-fs-4.2.8.tgz", + "integrity": "sha512-qkIilPUYcNhJpd33n0GBXTB1MMPp14TxEsEs0pTrsSVucApsYzW5V+Q8Qxhik6KU3evy+qkAAowTByymK0avdg==" } } }, @@ -43358,9 +44072,9 @@ }, "dependencies": { "ansi-regex": { - "version": "5.0.0", - "resolved": "https://registry.npmjs.org/ansi-regex/-/ansi-regex-5.0.0.tgz", - "integrity": "sha512-bY6fj56OUQ0hU1KjFNDQuJFezqKdrAyFdIevADiqrWHwSlbmBNMHp5ak2f40Pm8JTFyM2mqxkG6ngkHO11f/lg==" + "version": "5.0.1", + "resolved": "https://registry.npmjs.org/ansi-regex/-/ansi-regex-5.0.1.tgz", + "integrity": "sha512-quJQXlTSUGL2LH9SUXo8VwsY4soanhgo6LNSm84E1LBcE8s3O0wpdiRzyR9z/ZZJMlMWv37qOOb9pdJlMUEKFQ==" }, "camelcase": { "version": "5.3.1", @@ -43421,21 +44135,21 @@ "integrity": "sha512-ak9Qy5Q7jYb2Wwcey5Fpvg2KoAc/ZIhLSLOSBmRmygPsGwkVVt0fZa0qrtMz+m6tJTAHfZQ8FnmB4MG4LWy7/w==" }, "string-width": { - "version": "4.2.2", - "resolved": "https://registry.npmjs.org/string-width/-/string-width-4.2.2.tgz", - "integrity": "sha512-XBJbT3N4JhVumXE0eoLU9DCjcaF92KLNqTmFCnG1pf8duUxFGwtP6AD6nkjw9a3IdiRtL3E2w3JDiE/xi3vOeA==", + "version": "4.2.3", + "resolved": "https://registry.npmjs.org/string-width/-/string-width-4.2.3.tgz", + "integrity": "sha512-wKyQRQpjJ0sIp62ErSZdGsjMJWsap5oRNihHhu6G7JVO/9jIB6UyevL+tXuOqrng8j/cxKTWyWUwvSTriiZz/g==", "requires": { "emoji-regex": "^8.0.0", "is-fullwidth-code-point": "^3.0.0", - "strip-ansi": "^6.0.0" + "strip-ansi": "^6.0.1" } }, "strip-ansi": { - "version": "6.0.0", - "resolved": "https://registry.npmjs.org/strip-ansi/-/strip-ansi-6.0.0.tgz", - "integrity": "sha512-AuvKTrTfQNYNIctbR1K/YGTR1756GycPsg7b9bdV9Duqur4gv6aKqHXah67Z8ImS7WEz5QVcOtlfW2rZEugt6w==", + "version": "6.0.1", + "resolved": "https://registry.npmjs.org/strip-ansi/-/strip-ansi-6.0.1.tgz", + "integrity": "sha512-Y38VPSHcqkFrCpFnQ9vuSXmquuv5oXOKpGeT6aGrr3o3Gc9AlVa6JBfUSOCnbxGGZF+/0ooI7KrPuUSztUdU5A==", "requires": { - "ansi-regex": "^5.0.0" + "ansi-regex": "^5.0.1" } }, "yargs": { @@ -44548,16 +45262,16 @@ "dev": true }, "metro": { - "version": "0.64.0", - "resolved": "https://registry.npmjs.org/metro/-/metro-0.64.0.tgz", - "integrity": "sha512-G2OC08Rzfs0kqnSEuKo2yZxR+/eNUpA93Ru45c60uN0Dw3HPrDi+ZBipgFftC6iLE0l+6hu8roFFIofotWxybw==", + "version": "0.66.2", + "resolved": "https://registry.npmjs.org/metro/-/metro-0.66.2.tgz", + "integrity": "sha512-uNsISfcQ3iKKSHoN5Q+LAh0l3jeeg7ZcNZ/4BAHGsk02erA0OP+l2m+b5qYVoPptHz9Oc3KyG5oGJoTu41pWjg==", "requires": { "@babel/code-frame": "^7.0.0", - "@babel/core": "^7.0.0", - "@babel/generator": "^7.5.0", - "@babel/parser": "^7.0.0", + "@babel/core": "^7.14.0", + "@babel/generator": "^7.14.0", + "@babel/parser": "^7.14.0", "@babel/template": "^7.0.0", - "@babel/traverse": "^7.0.0", + "@babel/traverse": "^7.14.0", "@babel/types": "^7.0.0", "absolute-path": "^0.0.0", "accepts": "^1.3.7", @@ -44570,27 +45284,28 @@ "error-stack-parser": "^2.0.6", "fs-extra": "^1.0.0", "graceful-fs": "^4.1.3", + "hermes-parser": "0.4.7", "image-size": "^0.6.0", "invariant": "^2.2.4", "jest-haste-map": "^26.5.2", "jest-worker": "^26.0.0", "lodash.throttle": "^4.1.1", - "metro-babel-register": "0.64.0", - "metro-babel-transformer": "0.64.0", - "metro-cache": "0.64.0", - "metro-cache-key": "0.64.0", - "metro-config": "0.64.0", - "metro-core": "0.64.0", - "metro-hermes-compiler": "0.64.0", - "metro-inspector-proxy": "0.64.0", - "metro-minify-uglify": "0.64.0", - "metro-react-native-babel-preset": "0.64.0", - "metro-resolver": "0.64.0", - "metro-runtime": "0.64.0", - "metro-source-map": "0.64.0", - "metro-symbolicate": "0.64.0", - "metro-transform-plugins": "0.64.0", - "metro-transform-worker": "0.64.0", + "metro-babel-register": "0.66.2", + "metro-babel-transformer": "0.66.2", + "metro-cache": "0.66.2", + "metro-cache-key": "0.66.2", + "metro-config": "0.66.2", + "metro-core": "0.66.2", + "metro-hermes-compiler": "0.66.2", + "metro-inspector-proxy": "0.66.2", + "metro-minify-uglify": "0.66.2", + "metro-react-native-babel-preset": "0.66.2", + "metro-resolver": "0.66.2", + "metro-runtime": "0.66.2", + "metro-source-map": "0.66.2", + "metro-symbolicate": "0.66.2", + "metro-transform-plugins": "0.66.2", + "metro-transform-worker": "0.66.2", "mime-types": "^2.1.27", "mkdirp": "^0.5.1", "node-fetch": "^2.2.0", @@ -44606,9 +45321,9 @@ }, "dependencies": { "ansi-regex": { - "version": "5.0.0", - "resolved": "https://registry.npmjs.org/ansi-regex/-/ansi-regex-5.0.0.tgz", - "integrity": "sha512-bY6fj56OUQ0hU1KjFNDQuJFezqKdrAyFdIevADiqrWHwSlbmBNMHp5ak2f40Pm8JTFyM2mqxkG6ngkHO11f/lg==" + "version": "5.0.1", + "resolved": "https://registry.npmjs.org/ansi-regex/-/ansi-regex-5.0.1.tgz", + "integrity": "sha512-quJQXlTSUGL2LH9SUXo8VwsY4soanhgo6LNSm84E1LBcE8s3O0wpdiRzyR9z/ZZJMlMWv37qOOb9pdJlMUEKFQ==" }, "camelcase": { "version": "5.3.1", @@ -44648,9 +45363,9 @@ } }, "glob": { - "version": "7.1.7", - "resolved": "https://registry.npmjs.org/glob/-/glob-7.1.7.tgz", - "integrity": "sha512-OvD9ENzPLbegENnYP5UUfJIirTg4+XwMWGaQfQTY0JenxNvvIKP3U3/tAQSPIu/lHxXYSZmpXlUHeqAIdKzBLQ==", + "version": "7.2.0", + "resolved": "https://registry.npmjs.org/glob/-/glob-7.2.0.tgz", + "integrity": "sha512-lmLf6gtyrPq8tTjSmrO94wBeQbFR3HbLHbuyD69wuyQkImp2hWqMGB47OX65FBkPffO641IP9jWa1z4ivqG26Q==", "requires": { "fs.realpath": "^1.0.0", "inflight": "^1.0.4", @@ -44682,21 +45397,22 @@ } }, "metro-babel-transformer": { - "version": "0.64.0", - "resolved": "https://registry.npmjs.org/metro-babel-transformer/-/metro-babel-transformer-0.64.0.tgz", - "integrity": "sha512-itZaxKTgmKGEZWxNzbSZBc22NngrMZzoUNuU92aHSTGkYi2WH4XlvzEHsstmIKHMsRVKl75cA+mNmgk4gBFJKw==", + "version": "0.66.2", + "resolved": "https://registry.npmjs.org/metro-babel-transformer/-/metro-babel-transformer-0.66.2.tgz", + "integrity": "sha512-aJ/7fc/Xkofw8Fqa51OTDhBzBz26mmpIWrXAZcPdQ8MSTt883EWncxeCEjasc79NJ89BRi7sOkkaWZo2sXlKvw==", "requires": { - "@babel/core": "^7.0.0", - "metro-source-map": "0.64.0", + "@babel/core": "^7.14.0", + "hermes-parser": "0.4.7", + "metro-source-map": "0.66.2", "nullthrows": "^1.1.1" } }, "metro-react-native-babel-preset": { - "version": "0.64.0", - "resolved": "https://registry.npmjs.org/metro-react-native-babel-preset/-/metro-react-native-babel-preset-0.64.0.tgz", - "integrity": "sha512-HcZ0RWQRuJfpPiaHyFQJzcym+/dDIVUPwUAXWoub/C4GkGu+mPjp8vqK6g0FxokCnnI2TK0gZTza2IDfiNNscQ==", + "version": "0.66.2", + "resolved": "https://registry.npmjs.org/metro-react-native-babel-preset/-/metro-react-native-babel-preset-0.66.2.tgz", + "integrity": "sha512-H/nLBAz0MgfDloSe1FjyH4EnbokHFdncyERvLPXDACY3ROVRCeUyFNo70ywRGXW2NMbrV4H7KUyU4zkfWhC2HQ==", "requires": { - "@babel/core": "^7.0.0", + "@babel/core": "^7.14.0", "@babel/plugin-proposal-class-properties": "^7.0.0", "@babel/plugin-proposal-export-default-from": "^7.0.0", "@babel/plugin-proposal-nullish-coalescing-operator": "^7.0.0", @@ -44709,6 +45425,7 @@ "@babel/plugin-syntax-nullish-coalescing-operator": "^7.0.0", "@babel/plugin-syntax-optional-chaining": "^7.0.0", "@babel/plugin-transform-arrow-functions": "^7.0.0", + "@babel/plugin-transform-async-to-generator": "^7.0.0", "@babel/plugin-transform-block-scoping": "^7.0.0", "@babel/plugin-transform-classes": "^7.0.0", "@babel/plugin-transform-computed-properties": "^7.0.0", @@ -44738,27 +45455,27 @@ } }, "metro-source-map": { - "version": "0.64.0", - "resolved": "https://registry.npmjs.org/metro-source-map/-/metro-source-map-0.64.0.tgz", - "integrity": "sha512-OCG2rtcp5cLEGYvAbfkl6mEc0J2FPRP4/UCEly+juBk7hawS9bCBMBfhJm/HIsvY1frk6nT2Vsl1O8YBbwyx2g==", + "version": "0.66.2", + "resolved": "https://registry.npmjs.org/metro-source-map/-/metro-source-map-0.66.2.tgz", + "integrity": "sha512-038tFmB7vSh73VQcDWIbr5O1m+WXWyYafDaOy+1A/2K308YP0oj33gbEgDnZsLZDwcJ+xt1x6KUEBIzlX4YGeQ==", "requires": { - "@babel/traverse": "^7.0.0", + "@babel/traverse": "^7.14.0", "@babel/types": "^7.0.0", "invariant": "^2.2.4", - "metro-symbolicate": "0.64.0", + "metro-symbolicate": "0.66.2", "nullthrows": "^1.1.1", - "ob1": "0.64.0", + "ob1": "0.66.2", "source-map": "^0.5.6", "vlq": "^1.0.0" } }, "metro-symbolicate": { - "version": "0.64.0", - "resolved": "https://registry.npmjs.org/metro-symbolicate/-/metro-symbolicate-0.64.0.tgz", - "integrity": "sha512-qIi+YRrDWnLVmydj6gwidYLPaBsakZRibGWSspuXgHAxOI3UuLwlo4dpQ73Et0gyHjI7ZvRMRY8JPiOntf9AQQ==", + "version": "0.66.2", + "resolved": "https://registry.npmjs.org/metro-symbolicate/-/metro-symbolicate-0.66.2.tgz", + "integrity": "sha512-u+DeQHyAFXVD7mVP+GST/894WHJ3i/U8oEJFnT7U3P52ZuLgX8n4tMNxhqZU12RcLR6etF8143aP0Ktx1gFLEQ==", "requires": { "invariant": "^2.2.4", - "metro-source-map": "0.64.0", + "metro-source-map": "0.66.2", "nullthrows": "^1.1.1", "source-map": "^0.5.6", "through2": "^2.0.1", @@ -44766,16 +45483,16 @@ } }, "mime-db": { - "version": "1.47.0", - "resolved": "https://registry.npmjs.org/mime-db/-/mime-db-1.47.0.tgz", - "integrity": "sha512-QBmA/G2y+IfeS4oktet3qRZ+P5kPhCKRXxXnQEudYqUaEioAU1/Lq2us3D/t1Jfo4hE9REQPrbB7K5sOczJVIw==" + "version": "1.51.0", + "resolved": "https://registry.npmjs.org/mime-db/-/mime-db-1.51.0.tgz", + "integrity": "sha512-5y8A56jg7XVQx2mbv1lu49NR4dokRnhZYTtL+KGfaa27uq4pSTXkwQkFJl4pkRMyNFz/EtYDSkiiEHx3F7UN6g==" }, "mime-types": { - "version": "2.1.30", - "resolved": "https://registry.npmjs.org/mime-types/-/mime-types-2.1.30.tgz", - "integrity": "sha512-crmjA4bLtR8m9qLpHvgxSChT+XoSlZi8J4n/aIdn3z92e/U47Z0V/yl+Wh9W046GgFVAmoNR/fmdbZYcSSIUeg==", + "version": "2.1.34", + "resolved": "https://registry.npmjs.org/mime-types/-/mime-types-2.1.34.tgz", + "integrity": "sha512-6cP692WwGIs9XXdOO4++N+7qjqv0rqxxVvJ3VHPh/Sc9mVZcQP+ZGhkKiTvWMQRr2tbHkJP/Yn7Y0npb3ZBs4A==", "requires": { - "mime-db": "1.47.0" + "mime-db": "1.51.0" } }, "p-limit": { @@ -44818,21 +45535,21 @@ } }, "string-width": { - "version": "4.2.2", - "resolved": "https://registry.npmjs.org/string-width/-/string-width-4.2.2.tgz", - "integrity": "sha512-XBJbT3N4JhVumXE0eoLU9DCjcaF92KLNqTmFCnG1pf8duUxFGwtP6AD6nkjw9a3IdiRtL3E2w3JDiE/xi3vOeA==", + "version": "4.2.3", + "resolved": "https://registry.npmjs.org/string-width/-/string-width-4.2.3.tgz", + "integrity": "sha512-wKyQRQpjJ0sIp62ErSZdGsjMJWsap5oRNihHhu6G7JVO/9jIB6UyevL+tXuOqrng8j/cxKTWyWUwvSTriiZz/g==", "requires": { "emoji-regex": "^8.0.0", "is-fullwidth-code-point": "^3.0.0", - "strip-ansi": "^6.0.0" + "strip-ansi": "^6.0.1" } }, "strip-ansi": { - "version": "6.0.0", - "resolved": "https://registry.npmjs.org/strip-ansi/-/strip-ansi-6.0.0.tgz", - "integrity": "sha512-AuvKTrTfQNYNIctbR1K/YGTR1756GycPsg7b9bdV9Duqur4gv6aKqHXah67Z8ImS7WEz5QVcOtlfW2rZEugt6w==", + "version": "6.0.1", + "resolved": "https://registry.npmjs.org/strip-ansi/-/strip-ansi-6.0.1.tgz", + "integrity": "sha512-Y38VPSHcqkFrCpFnQ9vuSXmquuv5oXOKpGeT6aGrr3o3Gc9AlVa6JBfUSOCnbxGGZF+/0ooI7KrPuUSztUdU5A==", "requires": { - "ansi-regex": "^5.0.0" + "ansi-regex": "^5.0.1" } }, "strip-bom": { @@ -44879,14 +45596,14 @@ } }, "metro-babel-register": { - "version": "0.64.0", - "resolved": "https://registry.npmjs.org/metro-babel-register/-/metro-babel-register-0.64.0.tgz", - "integrity": "sha512-Kf6YvE3kIRumGnjK0Q9LqGDIdnsX9eFGtNBmBuCVDuB9wGGA/5CgX8We8W7Y44dz1RGTcHJRhfw5iGg+pwC3aQ==", + "version": "0.66.2", + "resolved": "https://registry.npmjs.org/metro-babel-register/-/metro-babel-register-0.66.2.tgz", + "integrity": "sha512-3F+vsVubUPJYKfVMeol8/7pd8CC287Rw92QYzJD8LEmI980xcgwMUEVBZ0UIAUwlLgiJG/f4Mwhuji2EeBXrPg==", "requires": { - "@babel/core": "^7.0.0", - "@babel/plugin-proposal-class-properties": "^7.0.0", + "@babel/core": "^7.14.0", "@babel/plugin-proposal-nullish-coalescing-operator": "^7.0.0", "@babel/plugin-proposal-optional-chaining": "^7.0.0", + "@babel/plugin-syntax-class-properties": "^7.0.0", "@babel/plugin-transform-flow-strip-types": "^7.0.0", "@babel/plugin-transform-modules-commonjs": "^7.0.0", "@babel/register": "^7.0.0", @@ -44894,29 +45611,30 @@ } }, "metro-babel-transformer": { - "version": "0.64.0", - "resolved": "https://registry.npmjs.org/metro-babel-transformer/-/metro-babel-transformer-0.64.0.tgz", - "integrity": "sha512-itZaxKTgmKGEZWxNzbSZBc22NngrMZzoUNuU92aHSTGkYi2WH4XlvzEHsstmIKHMsRVKl75cA+mNmgk4gBFJKw==", + "version": "0.66.2", + "resolved": "https://registry.npmjs.org/metro-babel-transformer/-/metro-babel-transformer-0.66.2.tgz", + "integrity": "sha512-aJ/7fc/Xkofw8Fqa51OTDhBzBz26mmpIWrXAZcPdQ8MSTt883EWncxeCEjasc79NJ89BRi7sOkkaWZo2sXlKvw==", "requires": { - "@babel/core": "^7.0.0", - "metro-source-map": "0.64.0", + "@babel/core": "^7.14.0", + "hermes-parser": "0.4.7", + "metro-source-map": "0.66.2", "nullthrows": "^1.1.1" } }, "metro-cache": { - "version": "0.64.0", - "resolved": "https://registry.npmjs.org/metro-cache/-/metro-cache-0.64.0.tgz", - "integrity": "sha512-QvGfxe/1QQYM9XOlR8W1xqE9eHDw/AgJIgYGn/TxZxBu9Zga+Rgs1omeSZju45D8w5VWgMr83ma5kACgzvOecg==", + "version": "0.66.2", + "resolved": "https://registry.npmjs.org/metro-cache/-/metro-cache-0.66.2.tgz", + "integrity": "sha512-5QCYJtJOHoBSbL3H4/Fpl36oA697C3oYHqsce+Hk/dh2qtODUGpS3gOBhvP1B8iB+H8jJMyR75lZq129LJEsIQ==", "requires": { - "metro-core": "0.64.0", + "metro-core": "0.66.2", "mkdirp": "^0.5.1", "rimraf": "^2.5.4" }, "dependencies": { "glob": { - "version": "7.1.7", - "resolved": "https://registry.npmjs.org/glob/-/glob-7.1.7.tgz", - "integrity": "sha512-OvD9ENzPLbegENnYP5UUfJIirTg4+XwMWGaQfQTY0JenxNvvIKP3U3/tAQSPIu/lHxXYSZmpXlUHeqAIdKzBLQ==", + "version": "7.2.0", + "resolved": "https://registry.npmjs.org/glob/-/glob-7.2.0.tgz", + "integrity": "sha512-lmLf6gtyrPq8tTjSmrO94wBeQbFR3HbLHbuyD69wuyQkImp2hWqMGB47OX65FBkPffO641IP9jWa1z4ivqG26Q==", "requires": { "fs.realpath": "^1.0.0", "inflight": "^1.0.4", @@ -44937,21 +45655,21 @@ } }, "metro-cache-key": { - "version": "0.64.0", - "resolved": "https://registry.npmjs.org/metro-cache-key/-/metro-cache-key-0.64.0.tgz", - "integrity": "sha512-O9B65G8L/fopck45ZhdRosyVZdMtUQuX5mBWEC1NRj02iWBIUPLmYMjrunqIe8vHipCMp3DtTCm/65IlBmO8jg==" + "version": "0.66.2", + "resolved": "https://registry.npmjs.org/metro-cache-key/-/metro-cache-key-0.66.2.tgz", + "integrity": "sha512-WtkNmRt41qOpHh1MkNA4nLiQ/m7iGL90ysSKD+fcLqlUnOBKJptPQm0ZUv8Kfqk18ddWX2KmsSbq+Sf3I6XohQ==" }, "metro-config": { - "version": "0.64.0", - "resolved": "https://registry.npmjs.org/metro-config/-/metro-config-0.64.0.tgz", - "integrity": "sha512-QhM4asnX5KhlRWaugwVGNNXhX0Z85u5nK0UQ/A90bBb4xWyXqUe20e788VtdA75rkQiiI6wXTCIHWT0afbnjwQ==", + "version": "0.66.2", + "resolved": "https://registry.npmjs.org/metro-config/-/metro-config-0.66.2.tgz", + "integrity": "sha512-0C+PrKKIBNNzLZUKN/8ZDJS2U5FLMOTXDWbvBHIdqb6YXz8WplXR2+xlSlaSCCi5b+GR7cWFWUNeKA4GQS1/AQ==", "requires": { "cosmiconfig": "^5.0.5", "jest-validate": "^26.5.2", - "metro": "0.64.0", - "metro-cache": "0.64.0", - "metro-core": "0.64.0", - "metro-runtime": "0.64.0" + "metro": "0.66.2", + "metro-cache": "0.66.2", + "metro-core": "0.66.2", + "metro-runtime": "0.66.2" }, "dependencies": { "@jest/types": { @@ -44967,17 +45685,17 @@ } }, "@types/istanbul-reports": { - "version": "3.0.0", - "resolved": "https://registry.npmjs.org/@types/istanbul-reports/-/istanbul-reports-3.0.0.tgz", - "integrity": "sha512-nwKNbvnwJ2/mndE9ItP/zc2TCzw6uuodnF4EHYWD+gCQDVBuRQL5UzbZD0/ezy1iKsFU2ZQiDqg4M9dN4+wZgA==", + "version": "3.0.1", + "resolved": "https://registry.npmjs.org/@types/istanbul-reports/-/istanbul-reports-3.0.1.tgz", + "integrity": "sha512-c3mAZEuK0lvBp8tmuL74XRKn1+y2dcwOUpH7x4WrF6gk1GIgiluDRgMYQtw2OFcBvAJWlt6ASU3tSqxp0Uu0Aw==", "requires": { "@types/istanbul-lib-report": "*" } }, "camelcase": { - "version": "6.2.0", - "resolved": "https://registry.npmjs.org/camelcase/-/camelcase-6.2.0.tgz", - "integrity": "sha512-c7wVvbw3f37nuobQNtgsgG9POC9qMbNuMQmTCqZv23b6MIz0fcYpBiOlv9gEN/hdLdnZTDQhg6e9Dq5M1vKvfg==" + "version": "6.2.1", + "resolved": "https://registry.npmjs.org/camelcase/-/camelcase-6.2.1.tgz", + "integrity": "sha512-tVI4q5jjFV5CavAU8DXfza/TJcZutVKo/5Foskmsqcm0MsL91moHvwiGNnqaa2o6PF/7yT5ikDRcVcl8Rj6LCA==" }, "cosmiconfig": { "version": "5.2.1", @@ -45029,24 +45747,24 @@ } }, "metro-core": { - "version": "0.64.0", - "resolved": "https://registry.npmjs.org/metro-core/-/metro-core-0.64.0.tgz", - "integrity": "sha512-v8ZQ5j72EaUwamQ8pLfHlOHTyp7SbdazvHPzFGDpHnwIQqIT0Bw3Syg8R4regTlVG3ngpeSEAi005UITljmMcQ==", + "version": "0.66.2", + "resolved": "https://registry.npmjs.org/metro-core/-/metro-core-0.66.2.tgz", + "integrity": "sha512-JieLZkef/516yxXYvQxWnf3OWw5rcgWRy76K8JV/wr/i8LGVGulPAXlIi445/QZzXVydzRVASKAEVqyxM5F4mA==", "requires": { "jest-haste-map": "^26.5.2", "lodash.throttle": "^4.1.1", - "metro-resolver": "0.64.0" + "metro-resolver": "0.66.2" } }, "metro-hermes-compiler": { - "version": "0.64.0", - "resolved": "https://registry.npmjs.org/metro-hermes-compiler/-/metro-hermes-compiler-0.64.0.tgz", - "integrity": "sha512-CLAjVDWGAoGhbi2ZyPHnH5YDdfrDIx6+tzFWfHGIMTZkYBXsYta9IfYXBV8lFb6BIbrXLjlXZAOoosknetMPOA==" + "version": "0.66.2", + "resolved": "https://registry.npmjs.org/metro-hermes-compiler/-/metro-hermes-compiler-0.66.2.tgz", + "integrity": "sha512-nCVL1g9uR6vrw5+X1wjwZruRyMkndnzGRMqjqoljf+nGEqBTD607CR7elXw4fMWn/EM+1y0Vdq5altUu9LdgCA==" }, "metro-inspector-proxy": { - "version": "0.64.0", - "resolved": "https://registry.npmjs.org/metro-inspector-proxy/-/metro-inspector-proxy-0.64.0.tgz", - "integrity": "sha512-KywbH3GNSz9Iqw4UH3smgaV2dBHHYMISeN7ORntDL/G+xfgPc6vt13d+zFb907YpUcXj5N0vdoiAHI5V/0y8IA==", + "version": "0.66.2", + "resolved": "https://registry.npmjs.org/metro-inspector-proxy/-/metro-inspector-proxy-0.66.2.tgz", + "integrity": "sha512-gnLc9121eznwP0iiA9tCBW8qZjwIsCgwHWMF1g1Qaki9le9tzeJv3dK4/lFNGxyfSaLO7vahQEhsEYsiRnTROg==", "requires": { "connect": "^3.6.5", "debug": "^2.2.0", @@ -45055,9 +45773,9 @@ }, "dependencies": { "ansi-regex": { - "version": "5.0.0", - "resolved": "https://registry.npmjs.org/ansi-regex/-/ansi-regex-5.0.0.tgz", - "integrity": "sha512-bY6fj56OUQ0hU1KjFNDQuJFezqKdrAyFdIevADiqrWHwSlbmBNMHp5ak2f40Pm8JTFyM2mqxkG6ngkHO11f/lg==" + "version": "5.0.1", + "resolved": "https://registry.npmjs.org/ansi-regex/-/ansi-regex-5.0.1.tgz", + "integrity": "sha512-quJQXlTSUGL2LH9SUXo8VwsY4soanhgo6LNSm84E1LBcE8s3O0wpdiRzyR9z/ZZJMlMWv37qOOb9pdJlMUEKFQ==" }, "camelcase": { "version": "5.3.1", @@ -45126,21 +45844,21 @@ "integrity": "sha512-ak9Qy5Q7jYb2Wwcey5Fpvg2KoAc/ZIhLSLOSBmRmygPsGwkVVt0fZa0qrtMz+m6tJTAHfZQ8FnmB4MG4LWy7/w==" }, "string-width": { - "version": "4.2.2", - "resolved": "https://registry.npmjs.org/string-width/-/string-width-4.2.2.tgz", - "integrity": "sha512-XBJbT3N4JhVumXE0eoLU9DCjcaF92KLNqTmFCnG1pf8duUxFGwtP6AD6nkjw9a3IdiRtL3E2w3JDiE/xi3vOeA==", + "version": "4.2.3", + "resolved": "https://registry.npmjs.org/string-width/-/string-width-4.2.3.tgz", + "integrity": "sha512-wKyQRQpjJ0sIp62ErSZdGsjMJWsap5oRNihHhu6G7JVO/9jIB6UyevL+tXuOqrng8j/cxKTWyWUwvSTriiZz/g==", "requires": { "emoji-regex": "^8.0.0", "is-fullwidth-code-point": "^3.0.0", - "strip-ansi": "^6.0.0" + "strip-ansi": "^6.0.1" } }, "strip-ansi": { - "version": "6.0.0", - "resolved": "https://registry.npmjs.org/strip-ansi/-/strip-ansi-6.0.0.tgz", - "integrity": "sha512-AuvKTrTfQNYNIctbR1K/YGTR1756GycPsg7b9bdV9Duqur4gv6aKqHXah67Z8ImS7WEz5QVcOtlfW2rZEugt6w==", + "version": "6.0.1", + "resolved": "https://registry.npmjs.org/strip-ansi/-/strip-ansi-6.0.1.tgz", + "integrity": "sha512-Y38VPSHcqkFrCpFnQ9vuSXmquuv5oXOKpGeT6aGrr3o3Gc9AlVa6JBfUSOCnbxGGZF+/0ooI7KrPuUSztUdU5A==", "requires": { - "ansi-regex": "^5.0.0" + "ansi-regex": "^5.0.1" } }, "ws": { @@ -45182,20 +45900,41 @@ } }, "metro-minify-uglify": { - "version": "0.64.0", - "resolved": "https://registry.npmjs.org/metro-minify-uglify/-/metro-minify-uglify-0.64.0.tgz", - "integrity": "sha512-DRwRstqXR5qfte9Nuwoov5dRXxL7fJeVlO5fGyOajWeO3+AgPjvjXh/UcLJqftkMWTPGUFuzAD5/7JC5v5FLWw==", + "version": "0.66.2", + "resolved": "https://registry.npmjs.org/metro-minify-uglify/-/metro-minify-uglify-0.66.2.tgz", + "integrity": "sha512-7TUK+L5CmB5x1PVnFbgmjzHW4CUadq9H5jgp0HfFoWT1skXAyEsx0DHkKDXwnot0khnNhBOEfl62ctQOnE110Q==", "requires": { "uglify-es": "^3.1.9" + }, + "dependencies": { + "commander": { + "version": "2.13.0", + "resolved": "https://registry.npmjs.org/commander/-/commander-2.13.0.tgz", + "integrity": "sha512-MVuS359B+YzaWqjCL/c+22gfryv+mCBPHAv3zyVI2GN8EY6IRP8VwtasXn8jyyhvvq84R4ImN1OKRtcbIasjYA==" + }, + "source-map": { + "version": "0.6.1", + "resolved": "https://registry.npmjs.org/source-map/-/source-map-0.6.1.tgz", + "integrity": "sha512-UjgapumWlbMhkBgzT7Ykc5YXUT46F0iKu8SGXq0bcwP5dz/h0Plj6enJqjz1Zbq2l5WaqYnrVbwWOWMyF3F47g==" + }, + "uglify-es": { + "version": "3.3.9", + "resolved": "https://registry.npmjs.org/uglify-es/-/uglify-es-3.3.9.tgz", + "integrity": "sha512-r+MU0rfv4L/0eeW3xZrd16t4NZfK8Ld4SWVglYBb7ez5uXFWHuVRs6xCTrf1yirs9a4j4Y27nn7SRfO6v67XsQ==", + "requires": { + "commander": "~2.13.0", + "source-map": "~0.6.1" + } + } } }, "metro-react-native-babel-preset": { - "version": "0.64.0", - "resolved": "https://registry.npmjs.org/metro-react-native-babel-preset/-/metro-react-native-babel-preset-0.64.0.tgz", - "integrity": "sha512-HcZ0RWQRuJfpPiaHyFQJzcym+/dDIVUPwUAXWoub/C4GkGu+mPjp8vqK6g0FxokCnnI2TK0gZTza2IDfiNNscQ==", + "version": "0.66.2", + "resolved": "https://registry.npmjs.org/metro-react-native-babel-preset/-/metro-react-native-babel-preset-0.66.2.tgz", + "integrity": "sha512-H/nLBAz0MgfDloSe1FjyH4EnbokHFdncyERvLPXDACY3ROVRCeUyFNo70ywRGXW2NMbrV4H7KUyU4zkfWhC2HQ==", "dev": true, "requires": { - "@babel/core": "^7.0.0", + "@babel/core": "^7.14.0", "@babel/plugin-proposal-class-properties": "^7.0.0", "@babel/plugin-proposal-export-default-from": "^7.0.0", "@babel/plugin-proposal-nullish-coalescing-operator": "^7.0.0", @@ -45208,6 +45947,7 @@ "@babel/plugin-syntax-nullish-coalescing-operator": "^7.0.0", "@babel/plugin-syntax-optional-chaining": "^7.0.0", "@babel/plugin-transform-arrow-functions": "^7.0.0", + "@babel/plugin-transform-async-to-generator": "^7.0.0", "@babel/plugin-transform-block-scoping": "^7.0.0", "@babel/plugin-transform-classes": "^7.0.0", "@babel/plugin-transform-computed-properties": "^7.0.0", @@ -45245,34 +45985,36 @@ } }, "metro-react-native-babel-transformer": { - "version": "0.64.0", - "resolved": "https://registry.npmjs.org/metro-react-native-babel-transformer/-/metro-react-native-babel-transformer-0.64.0.tgz", - "integrity": "sha512-K1sHO3ODBFCr7uEiCQ4RvVr+cQg0EHQF8ChVPnecGh/WDD8udrTq9ECwB0dRfMjAvlsHtRUlJm6ZSI8UPgum2w==", - "requires": { - "@babel/core": "^7.0.0", - "babel-preset-fbjs": "^3.3.0", - "metro-babel-transformer": "0.64.0", - "metro-react-native-babel-preset": "0.64.0", - "metro-source-map": "0.64.0", + "version": "0.66.2", + "resolved": "https://registry.npmjs.org/metro-react-native-babel-transformer/-/metro-react-native-babel-transformer-0.66.2.tgz", + "integrity": "sha512-z1ab7ihIT0pJrwgi9q2IH+LcW/xUWMQ0hH+Mrk7wbKQB0RnJdXFoxphrfoVHBHMUu+TBPetUcEkKawkK1e7Cng==", + "requires": { + "@babel/core": "^7.14.0", + "babel-preset-fbjs": "^3.4.0", + "hermes-parser": "0.4.7", + "metro-babel-transformer": "0.66.2", + "metro-react-native-babel-preset": "0.66.2", + "metro-source-map": "0.66.2", "nullthrows": "^1.1.1" }, "dependencies": { "metro-babel-transformer": { - "version": "0.64.0", - "resolved": "https://registry.npmjs.org/metro-babel-transformer/-/metro-babel-transformer-0.64.0.tgz", - "integrity": "sha512-itZaxKTgmKGEZWxNzbSZBc22NngrMZzoUNuU92aHSTGkYi2WH4XlvzEHsstmIKHMsRVKl75cA+mNmgk4gBFJKw==", + "version": "0.66.2", + "resolved": "https://registry.npmjs.org/metro-babel-transformer/-/metro-babel-transformer-0.66.2.tgz", + "integrity": "sha512-aJ/7fc/Xkofw8Fqa51OTDhBzBz26mmpIWrXAZcPdQ8MSTt883EWncxeCEjasc79NJ89BRi7sOkkaWZo2sXlKvw==", "requires": { - "@babel/core": "^7.0.0", - "metro-source-map": "0.64.0", + "@babel/core": "^7.14.0", + "hermes-parser": "0.4.7", + "metro-source-map": "0.66.2", "nullthrows": "^1.1.1" } }, "metro-react-native-babel-preset": { - "version": "0.64.0", - "resolved": "https://registry.npmjs.org/metro-react-native-babel-preset/-/metro-react-native-babel-preset-0.64.0.tgz", - "integrity": "sha512-HcZ0RWQRuJfpPiaHyFQJzcym+/dDIVUPwUAXWoub/C4GkGu+mPjp8vqK6g0FxokCnnI2TK0gZTza2IDfiNNscQ==", + "version": "0.66.2", + "resolved": "https://registry.npmjs.org/metro-react-native-babel-preset/-/metro-react-native-babel-preset-0.66.2.tgz", + "integrity": "sha512-H/nLBAz0MgfDloSe1FjyH4EnbokHFdncyERvLPXDACY3ROVRCeUyFNo70ywRGXW2NMbrV4H7KUyU4zkfWhC2HQ==", "requires": { - "@babel/core": "^7.0.0", + "@babel/core": "^7.14.0", "@babel/plugin-proposal-class-properties": "^7.0.0", "@babel/plugin-proposal-export-default-from": "^7.0.0", "@babel/plugin-proposal-nullish-coalescing-operator": "^7.0.0", @@ -45285,6 +46027,7 @@ "@babel/plugin-syntax-nullish-coalescing-operator": "^7.0.0", "@babel/plugin-syntax-optional-chaining": "^7.0.0", "@babel/plugin-transform-arrow-functions": "^7.0.0", + "@babel/plugin-transform-async-to-generator": "^7.0.0", "@babel/plugin-transform-block-scoping": "^7.0.0", "@babel/plugin-transform-classes": "^7.0.0", "@babel/plugin-transform-computed-properties": "^7.0.0", @@ -45314,16 +46057,16 @@ } }, "metro-source-map": { - "version": "0.64.0", - "resolved": "https://registry.npmjs.org/metro-source-map/-/metro-source-map-0.64.0.tgz", - "integrity": "sha512-OCG2rtcp5cLEGYvAbfkl6mEc0J2FPRP4/UCEly+juBk7hawS9bCBMBfhJm/HIsvY1frk6nT2Vsl1O8YBbwyx2g==", + "version": "0.66.2", + "resolved": "https://registry.npmjs.org/metro-source-map/-/metro-source-map-0.66.2.tgz", + "integrity": "sha512-038tFmB7vSh73VQcDWIbr5O1m+WXWyYafDaOy+1A/2K308YP0oj33gbEgDnZsLZDwcJ+xt1x6KUEBIzlX4YGeQ==", "requires": { - "@babel/traverse": "^7.0.0", + "@babel/traverse": "^7.14.0", "@babel/types": "^7.0.0", "invariant": "^2.2.4", - "metro-symbolicate": "0.64.0", + "metro-symbolicate": "0.66.2", "nullthrows": "^1.1.1", - "ob1": "0.64.0", + "ob1": "0.66.2", "source-map": "^0.5.6", "vlq": "^1.0.0" } @@ -45336,40 +46079,40 @@ } }, "metro-resolver": { - "version": "0.64.0", - "resolved": "https://registry.npmjs.org/metro-resolver/-/metro-resolver-0.64.0.tgz", - "integrity": "sha512-cJ26Id8Zf+HmS/1vFwu71K3u7ep/+HeXXAJIeVDYf+niE7AWB9FijyMtAlQgbD8elWqv1leJCnQ/xHRFBfGKYA==", + "version": "0.66.2", + "resolved": "https://registry.npmjs.org/metro-resolver/-/metro-resolver-0.66.2.tgz", + "integrity": "sha512-pXQAJR/xauRf4kWFj2/hN5a77B4jLl0Fom5I3PHp6Arw/KxSBp0cnguXpGLwNQ6zQC0nxKCoYGL9gQpzMnN7Hw==", "requires": { "absolute-path": "^0.0.0" } }, "metro-runtime": { - "version": "0.64.0", - "resolved": "https://registry.npmjs.org/metro-runtime/-/metro-runtime-0.64.0.tgz", - "integrity": "sha512-m7XbWOaIOeFX7YcxUhmnOi6Pg8EaeL89xyZ+quZyZVF1aNoTr4w8FfbKxvijpjsytKHIZtd+43m2Wt5JrqyQmQ==" + "version": "0.66.2", + "resolved": "https://registry.npmjs.org/metro-runtime/-/metro-runtime-0.66.2.tgz", + "integrity": "sha512-vFhKBk2ot9FS4b+2v0OTa/guCF/QDAOJubY0CNg7PzCS5+w4y3IvZIcPX4SSS1t8pYEZBLvtdtTDarlDl81xmg==" }, "metro-source-map": { - "version": "0.64.0", - "resolved": "https://registry.npmjs.org/metro-source-map/-/metro-source-map-0.64.0.tgz", - "integrity": "sha512-OCG2rtcp5cLEGYvAbfkl6mEc0J2FPRP4/UCEly+juBk7hawS9bCBMBfhJm/HIsvY1frk6nT2Vsl1O8YBbwyx2g==", + "version": "0.66.2", + "resolved": "https://registry.npmjs.org/metro-source-map/-/metro-source-map-0.66.2.tgz", + "integrity": "sha512-038tFmB7vSh73VQcDWIbr5O1m+WXWyYafDaOy+1A/2K308YP0oj33gbEgDnZsLZDwcJ+xt1x6KUEBIzlX4YGeQ==", "requires": { - "@babel/traverse": "^7.0.0", + "@babel/traverse": "^7.14.0", "@babel/types": "^7.0.0", "invariant": "^2.2.4", - "metro-symbolicate": "0.64.0", + "metro-symbolicate": "0.66.2", "nullthrows": "^1.1.1", - "ob1": "0.64.0", + "ob1": "0.66.2", "source-map": "^0.5.6", "vlq": "^1.0.0" } }, "metro-symbolicate": { - "version": "0.64.0", - "resolved": "https://registry.npmjs.org/metro-symbolicate/-/metro-symbolicate-0.64.0.tgz", - "integrity": "sha512-qIi+YRrDWnLVmydj6gwidYLPaBsakZRibGWSspuXgHAxOI3UuLwlo4dpQ73Et0gyHjI7ZvRMRY8JPiOntf9AQQ==", + "version": "0.66.2", + "resolved": "https://registry.npmjs.org/metro-symbolicate/-/metro-symbolicate-0.66.2.tgz", + "integrity": "sha512-u+DeQHyAFXVD7mVP+GST/894WHJ3i/U8oEJFnT7U3P52ZuLgX8n4tMNxhqZU12RcLR6etF8143aP0Ktx1gFLEQ==", "requires": { "invariant": "^2.2.4", - "metro-source-map": "0.64.0", + "metro-source-map": "0.66.2", "nullthrows": "^1.1.1", "source-map": "^0.5.6", "through2": "^2.0.1", @@ -45377,34 +46120,34 @@ } }, "metro-transform-plugins": { - "version": "0.64.0", - "resolved": "https://registry.npmjs.org/metro-transform-plugins/-/metro-transform-plugins-0.64.0.tgz", - "integrity": "sha512-iTIRBD/wBI98plfxj8jAoNUUXfXLNlyvcjPtshhpGvdwu9pzQilGfnDnOaaK+vbITcOk9w5oQectXyJwAqTr1A==", + "version": "0.66.2", + "resolved": "https://registry.npmjs.org/metro-transform-plugins/-/metro-transform-plugins-0.66.2.tgz", + "integrity": "sha512-KTvqplh0ut7oDKovvDG6yzXM02R6X+9b2oVG+qYq8Zd3aCGTi51ASx4ThCNkAHyEvCuJdYg9fxXTL+j+wvhB5w==", "requires": { - "@babel/core": "^7.0.0", - "@babel/generator": "^7.5.0", + "@babel/core": "^7.14.0", + "@babel/generator": "^7.14.0", "@babel/template": "^7.0.0", - "@babel/traverse": "^7.0.0", + "@babel/traverse": "^7.14.0", "nullthrows": "^1.1.1" } }, "metro-transform-worker": { - "version": "0.64.0", - "resolved": "https://registry.npmjs.org/metro-transform-worker/-/metro-transform-worker-0.64.0.tgz", - "integrity": "sha512-wegRtK8GyLF6IPZRBJp+zsORgA4iX0h1DRpknyAMDCtSbJ4VU2xV/AojteOgAsDvY3ucAGsvfuZLNDJHUdUNHQ==", + "version": "0.66.2", + "resolved": "https://registry.npmjs.org/metro-transform-worker/-/metro-transform-worker-0.66.2.tgz", + "integrity": "sha512-dO4PtYOMGB7Vzte8aIzX39xytODhmbJrBYPu+zYzlDjyefJZT7BkZ0LkPIThtyJi96xWcGqi9JBSo0CeRupAHw==", "requires": { - "@babel/core": "^7.0.0", - "@babel/generator": "^7.5.0", - "@babel/parser": "^7.0.0", + "@babel/core": "^7.14.0", + "@babel/generator": "^7.14.0", + "@babel/parser": "^7.14.0", "@babel/types": "^7.0.0", - "babel-preset-fbjs": "^3.3.0", - "metro": "0.64.0", - "metro-babel-transformer": "0.64.0", - "metro-cache": "0.64.0", - "metro-cache-key": "0.64.0", - "metro-hermes-compiler": "0.64.0", - "metro-source-map": "0.64.0", - "metro-transform-plugins": "0.64.0", + "babel-preset-fbjs": "^3.4.0", + "metro": "0.66.2", + "metro-babel-transformer": "0.66.2", + "metro-cache": "0.66.2", + "metro-cache-key": "0.66.2", + "metro-hermes-compiler": "0.66.2", + "metro-source-map": "0.66.2", + "metro-transform-plugins": "0.66.2", "nullthrows": "^1.1.1" } }, @@ -46166,9 +46909,9 @@ "dev": true }, "node-stream-zip": { - "version": "1.13.4", - "resolved": "https://registry.npmjs.org/node-stream-zip/-/node-stream-zip-1.13.4.tgz", - "integrity": "sha512-M2nPvnSWFFH+fgLIRZDqmhshmuzXcr+ce9BsHQX/30pXR+cEz/USMYmx9ZAFYy837W2QoDoNzhFtbZhfzaMk9A==" + "version": "1.15.0", + "resolved": "https://registry.npmjs.org/node-stream-zip/-/node-stream-zip-1.15.0.tgz", + "integrity": "sha512-LN4fydt9TqhZhThkZIVQnF9cwjU3qmUH9h78Mx/K7d3VvfRqqwthLwJEUOEL0QPZ0XQmNN7be5Ggit5+4dq3Bw==" }, "node-watch": { "version": "0.7.0", @@ -46850,9 +47593,9 @@ "dev": true }, "ob1": { - "version": "0.64.0", - "resolved": "https://registry.npmjs.org/ob1/-/ob1-0.64.0.tgz", - "integrity": "sha512-CO1N+5dhvy+MoAwxz8+fymEUcwsT4a+wHhrHFb02LppcJdHxgcBWviwEhUwKOD2kLMQ7ijrrzybOqpGcqEtvpQ==" + "version": "0.66.2", + "resolved": "https://registry.npmjs.org/ob1/-/ob1-0.66.2.tgz", + "integrity": "sha512-RFewnL/RjE0qQBOuM+2bbY96zmJPIge/aDtsiDbLSb+MOiK8CReAhBHDgL+zrA3F1hQk00lMWpUwYcep750plA==" }, "object-assign": { "version": "4.1.1", @@ -47926,8 +48669,7 @@ "parseurl": { "version": "1.3.3", "resolved": "https://registry.npmjs.org/parseurl/-/parseurl-1.3.3.tgz", - "integrity": "sha512-CiyeOxFT/JZyN5m0z9PfXw4SCBJ6Sygz1Dpl0wqjlhDEGGBP1GnsUVEL0p63hoG1fcj3fHynXi9NYO4nWOL+qQ==", - "dev": true + "integrity": "sha512-CiyeOxFT/JZyN5m0z9PfXw4SCBJ6Sygz1Dpl0wqjlhDEGGBP1GnsUVEL0p63hoG1fcj3fHynXi9NYO4nWOL+qQ==" }, "pascal-case": { "version": "3.1.2", @@ -48072,7 +48814,8 @@ "path-parse": { "version": "1.0.5", "resolved": "https://registry.npmjs.org/path-parse/-/path-parse-1.0.5.tgz", - "integrity": "sha1-PBrfhx6pzWyUMbbqK9dKD/BVxME=" + "integrity": "sha1-PBrfhx6pzWyUMbbqK9dKD/BVxME=", + "dev": true }, "path-to-regexp": { "version": "0.1.7", @@ -48256,13 +48999,12 @@ } }, "plist": { - "version": "3.0.2", - "resolved": "https://registry.npmjs.org/plist/-/plist-3.0.2.tgz", - "integrity": "sha512-MSrkwZBdQ6YapHy87/8hDU8MnIcyxBKjeF+McXnr5A9MtffPewTs7G3hlpodT5TacyfIyFTaJEhh3GGcmasTgQ==", + "version": "3.0.4", + "resolved": "https://registry.npmjs.org/plist/-/plist-3.0.4.tgz", + "integrity": "sha512-ksrr8y9+nXOxQB2osVNqrgvX/XQPOXaU4BQMKjYq8PvaY1U18mo+fKgBSwzK+luSyinOuPae956lSVcBwxlAMg==", "requires": { "base64-js": "^1.5.1", - "xmlbuilder": "^9.0.7", - "xmldom": "^0.5.0" + "xmlbuilder": "^9.0.7" }, "dependencies": { "base64-js": { @@ -49402,17 +50144,17 @@ } }, "@types/istanbul-reports": { - "version": "3.0.0", - "resolved": "https://registry.npmjs.org/@types/istanbul-reports/-/istanbul-reports-3.0.0.tgz", - "integrity": "sha512-nwKNbvnwJ2/mndE9ItP/zc2TCzw6uuodnF4EHYWD+gCQDVBuRQL5UzbZD0/ezy1iKsFU2ZQiDqg4M9dN4+wZgA==", + "version": "3.0.1", + "resolved": "https://registry.npmjs.org/@types/istanbul-reports/-/istanbul-reports-3.0.1.tgz", + "integrity": "sha512-c3mAZEuK0lvBp8tmuL74XRKn1+y2dcwOUpH7x4WrF6gk1GIgiluDRgMYQtw2OFcBvAJWlt6ASU3tSqxp0Uu0Aw==", "requires": { "@types/istanbul-lib-report": "*" } }, "ansi-regex": { - "version": "5.0.0", - "resolved": "https://registry.npmjs.org/ansi-regex/-/ansi-regex-5.0.0.tgz", - "integrity": "sha512-bY6fj56OUQ0hU1KjFNDQuJFezqKdrAyFdIevADiqrWHwSlbmBNMHp5ak2f40Pm8JTFyM2mqxkG6ngkHO11f/lg==" + "version": "5.0.1", + "resolved": "https://registry.npmjs.org/ansi-regex/-/ansi-regex-5.0.1.tgz", + "integrity": "sha512-quJQXlTSUGL2LH9SUXo8VwsY4soanhgo6LNSm84E1LBcE8s3O0wpdiRzyR9z/ZZJMlMWv37qOOb9pdJlMUEKFQ==" }, "ansi-styles": { "version": "4.3.0", @@ -50415,9 +51157,9 @@ } }, "react": { - "version": "17.0.1", - "resolved": "https://registry.npmjs.org/react/-/react-17.0.1.tgz", - "integrity": "sha512-lG9c9UuMHdcAexXtigOZLX8exLWkW0Ku29qPRU8uhF2R9BN96dLCt0psvzPLlHc5OWkgymP3qwTRgbnw5BKx3w==", + "version": "17.0.2", + "resolved": "https://registry.npmjs.org/react/-/react-17.0.2.tgz", + "integrity": "sha512-gnhPt75i/dq/z3/6q/0asP78D0u592D5L1pd7M8P+dck6Fu/jJeL6iVVK23fptSUZj8Vjf++7wXA8UNclGQcbA==", "requires": { "loose-envify": "^1.1.0", "object-assign": "^4.1.1" @@ -50740,9 +51482,9 @@ } }, "react-devtools-core": { - "version": "4.13.5", - "resolved": "https://registry.npmjs.org/react-devtools-core/-/react-devtools-core-4.13.5.tgz", - "integrity": "sha512-k+P5VSKM6P22Go9IQ8dJmjj9fbztvKt1iRDI/4wS5oTvd1EnytIJMYB59wZt+D3kgp64jklNX/MRmY42xAQ08g==", + "version": "4.21.0", + "resolved": "https://registry.npmjs.org/react-devtools-core/-/react-devtools-core-4.21.0.tgz", + "integrity": "sha512-clGWwJHV5MHwTwYyKc+7FZHwzdbzrD2/AoZSkicUcr6YLc3Za9a9FaLhccWDHfjQ+ron9yzNhDT6Tv+FiPkD3g==", "requires": { "shell-quote": "^1.6.1", "ws": "^7" @@ -50799,13 +51541,13 @@ "dev": true }, "react-dom": { - "version": "17.0.1", - "resolved": "https://registry.npmjs.org/react-dom/-/react-dom-17.0.1.tgz", - "integrity": "sha512-6eV150oJZ9U2t9svnsspTMrWNyHc6chX0KzDeAOXftRa8bNeOKTTfCJ7KorIwenkHd2xqVTBTCZd79yk/lx/Ug==", + "version": "17.0.2", + "resolved": "https://registry.npmjs.org/react-dom/-/react-dom-17.0.2.tgz", + "integrity": "sha512-s4h96KtLDUQlsENhMn1ar8t2bEa+q/YAtj8pPPdIjPDGBDIVNsrD9aXNWqspUe6AzKCIG0C1HZZLqLV7qpOBGA==", "requires": { "loose-envify": "^1.1.0", "object-assign": "^4.1.1", - "scheduler": "^0.20.1" + "scheduler": "^0.20.2" } }, "react-draggable": { @@ -50912,415 +51654,43 @@ } }, "react-native": { - "version": "0.64.0", - "resolved": "https://registry.npmjs.org/react-native/-/react-native-0.64.0.tgz", - "integrity": "sha512-8dhSHBthgGwAjU+OjqUEA49229ThPMQH7URH0u8L0xoQFCnZO2sZ9Wc6KcbxI0x9KSmjCMFFZqRe3w3QsRv64g==", - "requires": { - "@jest/create-cache-key-function": "^26.5.0", - "@react-native-community/cli": "^5.0.1-alpha.0", - "@react-native-community/cli-platform-android": "^5.0.1-alpha.0", - "@react-native-community/cli-platform-ios": "^5.0.1-alpha.0", + "version": "0.66.2", + "resolved": "https://registry.npmjs.org/react-native/-/react-native-0.66.2.tgz", + "integrity": "sha512-d5Kp23kqAH0EmcyxyfjAr4rhVVzyK/J0cZ/JuopX16CBD4Nkad65KcJi1pyOpbhpP9L1aUUs+mRyK5kg0uLqJQ==", + "requires": { + "@jest/create-cache-key-function": "^27.0.1", + "@react-native-community/cli": "^6.0.0", + "@react-native-community/cli-platform-android": "^6.0.0", + "@react-native-community/cli-platform-ios": "^6.0.0", "@react-native/assets": "1.0.0", "@react-native/normalize-color": "1.0.0", - "@react-native/polyfills": "1.0.0", + "@react-native/polyfills": "2.0.0", "abort-controller": "^3.0.0", "anser": "^1.4.9", "base64-js": "^1.1.2", "event-target-shim": "^5.0.1", - "hermes-engine": "~0.7.0", + "hermes-engine": "~0.9.0", "invariant": "^2.2.4", - "jsc-android": "^245459.0.0", - "metro-babel-register": "0.64.0", - "metro-react-native-babel-transformer": "0.64.0", - "metro-runtime": "0.64.0", - "metro-source-map": "0.64.0", + "jsc-android": "^250230.2.1", + "metro-babel-register": "0.66.2", + "metro-react-native-babel-transformer": "0.66.2", + "metro-runtime": "0.66.2", + "metro-source-map": "0.66.2", "nullthrows": "^1.1.1", "pretty-format": "^26.5.2", "promise": "^8.0.3", "prop-types": "^15.7.2", - "react-devtools-core": "^4.6.0", - "react-native-codegen": "^0.0.6", + "react-devtools-core": "^4.13.0", + "react-native-codegen": "^0.0.7", "react-refresh": "^0.4.0", "regenerator-runtime": "^0.13.2", - "scheduler": "^0.20.1", - "shelljs": "^0.8.4", + "scheduler": "^0.20.2", "stacktrace-parser": "^0.1.3", "use-subscription": "^1.0.0", "whatwg-fetch": "^3.0.0", "ws": "^6.1.4" }, "dependencies": { - "@react-native-community/cli": { - "version": "5.0.1", - "resolved": "https://registry.npmjs.org/@react-native-community/cli/-/cli-5.0.1.tgz", - "integrity": "sha512-9VzSYUYSEqxEH5Ib2UNSdn2eyPiYZ4T7Y79o9DKtRBuSaUIwbCUdZtIm+UUjBpLS1XYBkW26FqL8/UdZDmQvXw==", - "requires": { - "@react-native-community/cli-debugger-ui": "^5.0.1", - "@react-native-community/cli-hermes": "^5.0.1", - "@react-native-community/cli-server-api": "^5.0.1", - "@react-native-community/cli-tools": "^5.0.1", - "@react-native-community/cli-types": "^5.0.1", - "appdirsjs": "^1.2.4", - "chalk": "^3.0.0", - "command-exists": "^1.2.8", - "commander": "^2.19.0", - "cosmiconfig": "^5.1.0", - "deepmerge": "^3.2.0", - "envinfo": "^7.7.2", - "execa": "^1.0.0", - "find-up": "^4.1.0", - "fs-extra": "^8.1.0", - "glob": "^7.1.3", - "graceful-fs": "^4.1.3", - "joi": "^17.2.1", - "leven": "^3.1.0", - "lodash": "^4.17.15", - "metro": "^0.64.0", - "metro-config": "^0.64.0", - "metro-core": "^0.64.0", - "metro-react-native-babel-transformer": "^0.64.0", - "metro-resolver": "^0.64.0", - "metro-runtime": "^0.64.0", - "minimist": "^1.2.0", - "mkdirp": "^0.5.1", - "node-stream-zip": "^1.9.1", - "ora": "^3.4.0", - "pretty-format": "^26.6.2", - "prompts": "^2.4.0", - "semver": "^6.3.0", - "serve-static": "^1.13.1", - "strip-ansi": "^5.2.0", - "sudo-prompt": "^9.0.0", - "wcwidth": "^1.0.1" - } - }, - "@react-native-community/cli-debugger-ui": { - "version": "5.0.1", - "resolved": "https://registry.npmjs.org/@react-native-community/cli-debugger-ui/-/cli-debugger-ui-5.0.1.tgz", - "integrity": "sha512-5gGKaaXYOVE423BUqxIfvfAVSj5Cg1cU/TpGbeg/iqpy2CfqyWqJB3tTuVUbOOiOvR5wbU8tti6pIi1pchJ+oA==", - "requires": { - "serve-static": "^1.13.1" - } - }, - "@react-native-community/cli-hermes": { - "version": "5.0.1", - "resolved": "https://registry.npmjs.org/@react-native-community/cli-hermes/-/cli-hermes-5.0.1.tgz", - "integrity": "sha512-nD+ZOFvu5MfjLB18eDJ01MNiFrzj8SDtENjGpf0ZRFndOWASDAmU54/UlU/wj8OzTToK1+S1KY7j2P2M1gleww==", - "requires": { - "@react-native-community/cli-platform-android": "^5.0.1", - "@react-native-community/cli-tools": "^5.0.1", - "chalk": "^3.0.0", - "hermes-profile-transformer": "^0.0.6", - "ip": "^1.1.5" - }, - "dependencies": { - "@react-native-community/cli-platform-android": { - "version": "5.0.1", - "resolved": "https://registry.npmjs.org/@react-native-community/cli-platform-android/-/cli-platform-android-5.0.1.tgz", - "integrity": "sha512-qv9GJX6BJ+Y4qvV34vgxKwwN1cnveXUdP6y2YmTW7XoAYs5YUzKqHajpY58EyucAL2y++6+573t5y4U/9IIoww==", - "requires": { - "@react-native-community/cli-tools": "^5.0.1", - "chalk": "^3.0.0", - "execa": "^1.0.0", - "fs-extra": "^8.1.0", - "glob": "^7.1.3", - "jetifier": "^1.6.2", - "lodash": "^4.17.15", - "logkitty": "^0.7.1", - "slash": "^3.0.0", - "xmldoc": "^1.1.2" - } - } - } - }, - "@react-native-community/cli-server-api": { - "version": "5.0.1", - "resolved": "https://registry.npmjs.org/@react-native-community/cli-server-api/-/cli-server-api-5.0.1.tgz", - "integrity": "sha512-OOxL+y9AOZayQzmSW+h5T54wQe+QBc/f67Y9QlWzzJhkKJdYx+S4VOooHoD5PFJzGbYaxhu2YF17p517pcEIIA==", - "requires": { - "@react-native-community/cli-debugger-ui": "^5.0.1", - "@react-native-community/cli-tools": "^5.0.1", - "compression": "^1.7.1", - "connect": "^3.6.5", - "errorhandler": "^1.5.0", - "nocache": "^2.1.0", - "pretty-format": "^26.6.2", - "serve-static": "^1.13.1", - "ws": "^1.1.0" - }, - "dependencies": { - "ws": { - "version": "1.1.5", - "resolved": "https://registry.npmjs.org/ws/-/ws-1.1.5.tgz", - "integrity": "sha512-o3KqipXNUdS7wpQzBHSe180lBGO60SoK0yVo3CYJgb2MkobuWuBX6dhkYP5ORCLd55y+SaflMOV5fqAB53ux4w==", - "requires": { - "options": ">=0.0.5", - "ultron": "1.0.x" - } - } - } - }, - "@react-native-community/cli-tools": { - "version": "5.0.1", - "resolved": "https://registry.npmjs.org/@react-native-community/cli-tools/-/cli-tools-5.0.1.tgz", - "integrity": "sha512-XOX5w98oSE8+KnkMZZPMRT7I5TaP8fLbDl0tCu40S7Epz+Zz924n80fmdu6nUDIfPT1nV6yH1hmHmWAWTDOR+Q==", - "requires": { - "chalk": "^3.0.0", - "lodash": "^4.17.15", - "mime": "^2.4.1", - "node-fetch": "^2.6.0", - "open": "^6.2.0", - "shell-quote": "1.6.1" - } - }, - "@react-native-community/cli-types": { - "version": "5.0.1", - "resolved": "https://registry.npmjs.org/@react-native-community/cli-types/-/cli-types-5.0.1.tgz", - "integrity": "sha512-BesXnuFFlU/d1F3+sHhvKt8fUxbQlAbZ3hhMEImp9A6sopl8TEtryUGJ1dbazGjRXcADutxvjwT/i3LJVTIQug==", - "requires": { - "ora": "^3.4.0" - } - }, - "ansi-regex": { - "version": "4.1.0", - "resolved": "https://registry.npmjs.org/ansi-regex/-/ansi-regex-4.1.0.tgz", - "integrity": "sha512-1apePfXM1UOSqw0o9IiFAovVz9M5S1Dg+4TrDwfMewQ6p/rmMueb7tWZjQ1rx4Loy1ArBggoqGpfqqdI4rondg==" - }, - "ansi-styles": { - "version": "4.3.0", - "resolved": "https://registry.npmjs.org/ansi-styles/-/ansi-styles-4.3.0.tgz", - "integrity": "sha512-zbB9rCJAT1rbjiVDb2hqKFHNYLxgtk8NURxZ3IZwD3F6NtxbXZQCnnSi1Lkx+IDohdPlFp222wVALIheZJQSEg==", - "requires": { - "color-convert": "^2.0.1" - } - }, - "chalk": { - "version": "3.0.0", - "resolved": "https://registry.npmjs.org/chalk/-/chalk-3.0.0.tgz", - "integrity": "sha512-4D3B6Wf41KOYRFdszmDqMCGq5VV/uMAB273JILmO+3jAlh8X4qDtdtgCR3fxtbLEMzSx22QdhnDcJvu2u1fVwg==", - "requires": { - "ansi-styles": "^4.1.0", - "supports-color": "^7.1.0" - } - }, - "color-convert": { - "version": "2.0.1", - "resolved": "https://registry.npmjs.org/color-convert/-/color-convert-2.0.1.tgz", - "integrity": "sha512-RRECPsj7iu/xb5oKYcsFHSppFNnsj/52OVTRKb4zP5onXwVF3zVmmToNcOfGC+CRDpfK/U584fMg38ZHCaElKQ==", - "requires": { - "color-name": "~1.1.4" - } - }, - "color-name": { - "version": "1.1.4", - "resolved": "https://registry.npmjs.org/color-name/-/color-name-1.1.4.tgz", - "integrity": "sha512-dOy+3AuW3a2wNbZHIuMZpTcgjGuLU/uBL/ubcZF9OXbDo8ff4O8yVp5Bf0efS8uEoYo5q4Fx7dY9OgQGXgAsQA==" - }, - "commander": { - "version": "2.20.3", - "resolved": "https://registry.npmjs.org/commander/-/commander-2.20.3.tgz", - "integrity": "sha512-GpVkmM8vF2vQUkj2LvZmD35JxeJOLCwJ9cUkugyk2nuhbv3+mJvpLYYt+0+USMxE+oj+ey/lJEnhZw75x/OMcQ==" - }, - "cosmiconfig": { - "version": "5.2.1", - "resolved": "https://registry.npmjs.org/cosmiconfig/-/cosmiconfig-5.2.1.tgz", - "integrity": "sha512-H65gsXo1SKjf8zmrJ67eJk8aIRKV5ff2D4uKZIBZShbhGSpEmsQOPW/SKMKYhSTrqR7ufy6RP69rPogdaPh/kA==", - "requires": { - "import-fresh": "^2.0.0", - "is-directory": "^0.3.1", - "js-yaml": "^3.13.1", - "parse-json": "^4.0.0" - } - }, - "cross-spawn": { - "version": "6.0.5", - "resolved": "https://registry.npmjs.org/cross-spawn/-/cross-spawn-6.0.5.tgz", - "integrity": "sha512-eTVLrBSt7fjbDygz805pMnstIs2VTBNkRm0qxZd+M7A5XDdxVRWO5MxGBXZhjY4cqLYLdtrGqRf8mBPmzwSpWQ==", - "requires": { - "nice-try": "^1.0.4", - "path-key": "^2.0.1", - "semver": "^5.5.0", - "shebang-command": "^1.2.0", - "which": "^1.2.9" - }, - "dependencies": { - "semver": { - "version": "5.7.1", - "resolved": "https://registry.npmjs.org/semver/-/semver-5.7.1.tgz", - "integrity": "sha512-sauaDf/PZdVgrLTNYHRtpXa1iRiKcaebiKQ1BJdpQlWH2lCvexQdX55snPFyK7QzpudqbCI0qXFfOasHdyNDGQ==" - } - } - }, - "deepmerge": { - "version": "3.3.0", - "resolved": "https://registry.npmjs.org/deepmerge/-/deepmerge-3.3.0.tgz", - "integrity": "sha512-GRQOafGHwMHpjPx9iCvTgpu9NojZ49q794EEL94JVEw6VaeA8XTUyBKvAkOOjBX9oJNiV6G3P+T+tihFjo2TqA==" - }, - "envinfo": { - "version": "7.8.1", - "resolved": "https://registry.npmjs.org/envinfo/-/envinfo-7.8.1.tgz", - "integrity": "sha512-/o+BXHmB7ocbHEAs6F2EnG0ogybVVUdkRunTT2glZU9XAaGmhqskrvKwqXuDfNjEO0LZKWdejEEpnq8aM0tOaw==" - }, - "execa": { - "version": "1.0.0", - "resolved": "https://registry.npmjs.org/execa/-/execa-1.0.0.tgz", - "integrity": "sha512-adbxcyWV46qiHyvSp50TKt05tB4tK3HcmF7/nxfAdhnox83seTDbwnaqKO4sXRy7roHAIFqJP/Rw/AuEbX61LA==", - "requires": { - "cross-spawn": "^6.0.0", - "get-stream": "^4.0.0", - "is-stream": "^1.1.0", - "npm-run-path": "^2.0.0", - "p-finally": "^1.0.0", - "signal-exit": "^3.0.0", - "strip-eof": "^1.0.0" - } - }, - "find-up": { - "version": "4.1.0", - "resolved": "https://registry.npmjs.org/find-up/-/find-up-4.1.0.tgz", - "integrity": "sha512-PpOwAdQ/YlXQ2vj8a3h8IipDuYRi3wceVQQGYWxNINccq40Anw7BlsEXCMbt1Zt+OLA6Fq9suIpIWD0OsnISlw==", - "requires": { - "locate-path": "^5.0.0", - "path-exists": "^4.0.0" - } - }, - "get-stream": { - "version": "4.1.0", - "resolved": "https://registry.npmjs.org/get-stream/-/get-stream-4.1.0.tgz", - "integrity": "sha512-GMat4EJ5161kIy2HevLlr4luNjBgvmj413KaQA7jt4V8B4RDsfpHk7WQ9GVqfYyyx8OS/L66Kox+rJRNklLK7w==", - "requires": { - "pump": "^3.0.0" - } - }, - "glob": { - "version": "7.1.7", - "resolved": "https://registry.npmjs.org/glob/-/glob-7.1.7.tgz", - "integrity": "sha512-OvD9ENzPLbegENnYP5UUfJIirTg4+XwMWGaQfQTY0JenxNvvIKP3U3/tAQSPIu/lHxXYSZmpXlUHeqAIdKzBLQ==", - "requires": { - "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" - } - }, - "has-flag": { - "version": "4.0.0", - "resolved": "https://registry.npmjs.org/has-flag/-/has-flag-4.0.0.tgz", - "integrity": "sha512-EykJT/Q1KjTWctppgIAgfSO0tKVuZUjhgMr17kqTumMl6Afv3EISleU7qZUzoXDFTAHTDC4NOoG/ZxU3EvlMPQ==" - }, - "import-fresh": { - "version": "2.0.0", - "resolved": "https://registry.npmjs.org/import-fresh/-/import-fresh-2.0.0.tgz", - "integrity": "sha1-2BNVwVYS04bGH53dOSLUMEgipUY=", - "requires": { - "caller-path": "^2.0.0", - "resolve-from": "^3.0.0" - } - }, - "locate-path": { - "version": "5.0.0", - "resolved": "https://registry.npmjs.org/locate-path/-/locate-path-5.0.0.tgz", - "integrity": "sha512-t7hw9pI+WvuwNJXwk5zVHpyhIqzg2qTlklJOf0mVxGSbe3Fp2VieZcduNYjaLDoy6p9uGpQEGWG87WpMKlNq8g==", - "requires": { - "p-locate": "^4.1.0" - } - }, - "ora": { - "version": "3.4.0", - "resolved": "https://registry.npmjs.org/ora/-/ora-3.4.0.tgz", - "integrity": "sha512-eNwHudNbO1folBP3JsZ19v9azXWtQZjICdr3Q0TDPIaeBQ3mXLrh54wM+er0+hSp+dWKf+Z8KM58CYzEyIYxYg==", - "requires": { - "chalk": "^2.4.2", - "cli-cursor": "^2.1.0", - "cli-spinners": "^2.0.0", - "log-symbols": "^2.2.0", - "strip-ansi": "^5.2.0", - "wcwidth": "^1.0.1" - }, - "dependencies": { - "ansi-styles": { - "version": "3.2.1", - "resolved": "https://registry.npmjs.org/ansi-styles/-/ansi-styles-3.2.1.tgz", - "integrity": "sha512-VT0ZI6kZRdTh8YyJw3SMbYm/u+NqfsAxEpWO0Pf9sq8/e94WxxOpPKx9FR1FlyCtOVDNOQ+8ntlqFxiRc+r5qA==", - "requires": { - "color-convert": "^1.9.0" - } - }, - "chalk": { - "version": "2.4.2", - "resolved": "https://registry.npmjs.org/chalk/-/chalk-2.4.2.tgz", - "integrity": "sha512-Mti+f9lpJNcwF4tWV8/OrTTtF1gZi+f8FqlyAdouralcFWFQWF2+NgCHShjkCb+IFBLq9buZwE1xckQU4peSuQ==", - "requires": { - "ansi-styles": "^3.2.1", - "escape-string-regexp": "^1.0.5", - "supports-color": "^5.3.0" - } - }, - "color-convert": { - "version": "1.9.3", - "resolved": "https://registry.npmjs.org/color-convert/-/color-convert-1.9.3.tgz", - "integrity": "sha512-QfAUtd+vFdAtFQcC8CCyYt1fYWxSqAiK2cSD6zDB8N3cpsEBAvRxp9zOGg6G/SHHJYAT88/az/IuDGALsNVbGg==", - "requires": { - "color-name": "1.1.3" - } - }, - "color-name": { - "version": "1.1.3", - "resolved": "https://registry.npmjs.org/color-name/-/color-name-1.1.3.tgz", - "integrity": "sha1-p9BVi9icQveV3UIyj3QIMcpTvCU=" - }, - "has-flag": { - "version": "3.0.0", - "resolved": "https://registry.npmjs.org/has-flag/-/has-flag-3.0.0.tgz", - "integrity": "sha1-tdRU3CGZriJWmfNGfloH87lVuv0=" - }, - "supports-color": { - "version": "5.5.0", - "resolved": "https://registry.npmjs.org/supports-color/-/supports-color-5.5.0.tgz", - "integrity": "sha512-QjVjwdXIt408MIiAqCX4oUKsgU2EqAGzs2Ppkm4aQYbjm+ZEWEcW4SfFNTr4uMNZma0ey4f5lgLrkB0aX0QMow==", - "requires": { - "has-flag": "^3.0.0" - } - } - } - }, - "p-limit": { - "version": "2.3.0", - "resolved": "https://registry.npmjs.org/p-limit/-/p-limit-2.3.0.tgz", - "integrity": "sha512-//88mFWSJx8lxCzwdAABTJL2MyWB12+eIY7MDL2SqLmAkeKU9qxRvWuSyTjm3FUmpBEMuFfckAIqEaVGUDxb6w==", - "requires": { - "p-try": "^2.0.0" - } - }, - "p-locate": { - "version": "4.1.0", - "resolved": "https://registry.npmjs.org/p-locate/-/p-locate-4.1.0.tgz", - "integrity": "sha512-R79ZZ/0wAxKGu3oYMlz8jy/kbhsNrS7SKZ7PxEHBgJ5+F2mtFW2fK2cOtBh1cHYkQsbzFV7I+EoRKe6Yt0oK7A==", - "requires": { - "p-limit": "^2.2.0" - } - }, - "p-try": { - "version": "2.2.0", - "resolved": "https://registry.npmjs.org/p-try/-/p-try-2.2.0.tgz", - "integrity": "sha512-R4nPAVTAU0B9D35/Gk3uJf/7XYbQcyohSKdvAxIRSNghFl4e71hVoGnBNQz9cWaXxO2I10KTC+3jMdvvoKw6dQ==" - }, - "parse-json": { - "version": "4.0.0", - "resolved": "https://registry.npmjs.org/parse-json/-/parse-json-4.0.0.tgz", - "integrity": "sha1-vjX1Qlvh9/bHRxhPmKeIy5lHfuA=", - "requires": { - "error-ex": "^1.3.1", - "json-parse-better-errors": "^1.0.1" - } - }, - "path-exists": { - "version": "4.0.0", - "resolved": "https://registry.npmjs.org/path-exists/-/path-exists-4.0.0.tgz", - "integrity": "sha512-ak9Qy5Q7jYb2Wwcey5Fpvg2KoAc/ZIhLSLOSBmRmygPsGwkVVt0fZa0qrtMz+m6tJTAHfZQ8FnmB4MG4LWy7/w==" - }, "promise": { "version": "8.1.0", "resolved": "https://registry.npmjs.org/promise/-/promise-8.1.0.tgz", @@ -51329,55 +51699,11 @@ "asap": "~2.0.6" } }, - "prompts": { - "version": "2.4.1", - "resolved": "https://registry.npmjs.org/prompts/-/prompts-2.4.1.tgz", - "integrity": "sha512-EQyfIuO2hPDsX1L/blblV+H7I0knhgAd82cVneCwcdND9B8AuCDuRcBH6yIcG4dFzlOUqbazQqwGjx5xmsNLuQ==", - "requires": { - "kleur": "^3.0.3", - "sisteransi": "^1.0.5" - } - }, - "pump": { - "version": "3.0.0", - "resolved": "https://registry.npmjs.org/pump/-/pump-3.0.0.tgz", - "integrity": "sha512-LwZy+p3SFs1Pytd/jYct4wpv49HiYCqd9Rlc5ZVdk0V+8Yzv6jR5Blk3TRmPL1ft69TxP0IMZGJ+WPFU2BFhww==", - "requires": { - "end-of-stream": "^1.1.0", - "once": "^1.3.1" - } - }, "react-refresh": { "version": "0.4.3", "resolved": "https://registry.npmjs.org/react-refresh/-/react-refresh-0.4.3.tgz", "integrity": "sha512-Hwln1VNuGl/6bVwnd0Xdn1e84gT/8T9aYNL+HAKDArLCS7LWjwr7StE30IEYbIkx0Vi3vs+coQxe+SQDbGbbpA==" }, - "semver": { - "version": "6.3.0", - "resolved": "https://registry.npmjs.org/semver/-/semver-6.3.0.tgz", - "integrity": "sha512-b39TBaTSfV6yBrapU89p5fKekE2m/NwnDocOVruQFS1/veMgdzuPcnOM34M6CwxW8jH/lxEa5rBoDeUwu5HHTw==" - }, - "sisteransi": { - "version": "1.0.5", - "resolved": "https://registry.npmjs.org/sisteransi/-/sisteransi-1.0.5.tgz", - "integrity": "sha512-bLGGlR1QxBcynn2d5YmDX4MGjlZvy2MRBDRNHLJ8VI6l6+9FUiyTFNJ0IveOSP0bcXgVDPRcfGqA0pjaqUpfVg==" - }, - "strip-ansi": { - "version": "5.2.0", - "resolved": "https://registry.npmjs.org/strip-ansi/-/strip-ansi-5.2.0.tgz", - "integrity": "sha512-DuRs1gKbBqsMKIZlrffwlug8MHkcnpjs5VPmL1PAh+mA30U0DTotfDZ0d2UUsXpPmPmMMJ6W773MaA3J+lbiWA==", - "requires": { - "ansi-regex": "^4.1.0" - } - }, - "supports-color": { - "version": "7.2.0", - "resolved": "https://registry.npmjs.org/supports-color/-/supports-color-7.2.0.tgz", - "integrity": "sha512-qpCAvRl9stuOHveKsn7HncJRvv501qIacKzQlO/+Lwxc9+0q2wLyv4Dfvt80/DPn2pqOBsJdDiogXGR9+OvwRw==", - "requires": { - "has-flag": "^4.0.0" - } - }, "ws": { "version": "6.2.2", "resolved": "https://registry.npmjs.org/ws/-/ws-6.2.2.tgz", @@ -51397,9 +51723,9 @@ } }, "react-native-codegen": { - "version": "0.0.6", - "resolved": "https://registry.npmjs.org/react-native-codegen/-/react-native-codegen-0.0.6.tgz", - "integrity": "sha512-cMvrUelD81wiPitEPiwE/TCNscIVauXxmt4NTGcy18HrUd0WRWXfYzAQGXm0eI87u3NMudNhqFj2NISJenxQHg==", + "version": "0.0.7", + "resolved": "https://registry.npmjs.org/react-native-codegen/-/react-native-codegen-0.0.7.tgz", + "integrity": "sha512-dwNgR8zJ3ALr480QnAmpTiqvFo+rDtq6V5oCggKhYFlRjzOmVSFn3YD41u8ltvKS5G2nQ8gCs2vReFFnRGLYng==", "requires": { "flow-parser": "^0.121.0", "jscodeshift": "^0.11.0", @@ -51407,8 +51733,8 @@ } }, "react-native-gesture-handler": { - "version": "https://raw.githubusercontent.com/wordpress-mobile/react-native-gesture-handler/e20fb879b029dc2da92ff06e059cc8b1bd1cee26/react-native-gesture-handler-1.10.1-wp-3.tgz", - "integrity": "sha512-Q6gZ+YBFsQqpwcA649skk0TT+gUG/Rbe1tGZRXxEAB7nEqG0IMWH/uXDpKp7T0IcUIWJRdP0uxBcngMeoksRWA==", + "version": "https://raw.githubusercontent.com/wordpress-mobile/react-native-gesture-handler/1.10.1-wp-4/react-native-gesture-handler-1.10.1-wp-4.tgz", + "integrity": "sha512-tNgFUEeinmj6N6DMx+J0KmELvI7Aneqyd9k8bx1BFQG1+u+r9qbe4Opk5TAhGirUVbISgsQ0E2qooPXKjPl0vQ==", "requires": { "@egjs/hammerjs": "^2.0.17", "fbjs": "^3.0.0", @@ -51418,8 +51744,8 @@ } }, "react-native-get-random-values": { - "version": "https://raw.githubusercontent.com/wordpress-mobile/react-native-get-random-values/f3f5e2a04078e4b00f6a3ca38ac1c73be942a2c9/react-native-get-random-values-1.4.0-wp-1.tgz", - "integrity": "sha512-Xx4R4rAxuklqI6LupyGi8wD/KXMEVhdXUXQAjPs019zZO0luZri4OR1L6fdZs8mSU3p0R/zgYc4hpwV8kdImqw==", + "version": "https://raw.githubusercontent.com/wordpress-mobile/react-native-get-random-values/v1.4.0-wp-2/react-native-get-random-values-1.4.0-wp-2.tgz", + "integrity": "sha512-beH/tqiGq+l5flu28aIf5cgJSMFnDcxtFGBTQ3J9GcNe1S7NwvA/a26dKOO1BbXQ6z7DgAuTwQut/gGrremX9g==", "requires": { "fast-base64-decode": "^1.0.0" } @@ -51429,10 +51755,10 @@ "from": "git+https://github.com/Riglerr/react-native-hr.git#2d01a5cf77212d100e8b99e0310cce5234f977b3" }, "react-native-hsv-color-picker": { - "version": "https://raw.githubusercontent.com/wordpress-mobile/react-native-hsv-color-picker/03c0038419326fb86120560cdc3ce958d52cee37/react-native-hsv-color-picker-1.0.1-wp-1.tgz", - "integrity": "sha512-XeP3aYFAxuJBKiQACHjOfEa/jVw+9RHLmIM7T4AtUoz9PuOmXvN7B1dAq7eAczIjNy5ndG+Jec9NTQuBYnb4lw==", + "version": "https://raw.githubusercontent.com/wordpress-mobile/react-native-hsv-color-picker/v1.0.1-wp-2/react-native-hsv-color-picker-1.0.1-wp-2.tgz", + "integrity": "sha512-IBbGVHgHCTOX/qCo92aVHuWciDA0gFLsSK5ErosviTlI/qVXI/JeBFBCu2hdaNhKKwf3IqkgPwwdSZDlPiQBqQ==", "requires": { - "react-native-linear-gradient": "https://raw.githubusercontent.com/wordpress-mobile/react-native-linear-gradient/8bfaf806ee2d4c0c3b4f001f653825522529e51a/react-native-linear-gradient-2.5.6-wp-1.tgz", + "react-native-linear-gradient": "https://raw.githubusercontent.com/wordpress-mobile/react-native-linear-gradient/v2.5.6-wp-2/react-native-linear-gradient-2.5.6-wp-2.tgz", "tinycolor2": "^1.4.1" } }, @@ -51450,8 +51776,8 @@ } }, "react-native-linear-gradient": { - "version": "https://raw.githubusercontent.com/wordpress-mobile/react-native-linear-gradient/8bfaf806ee2d4c0c3b4f001f653825522529e51a/react-native-linear-gradient-2.5.6-wp-1.tgz", - "integrity": "sha512-nSL2OcwYnMXmP3r4V7D3xP2GGxkh8P8k36KPfV4CTZEsMmWjk9tdVzco3i0IrM4LHUFmNd+W2XfPJa9+mT9faQ==" + "version": "https://raw.githubusercontent.com/wordpress-mobile/react-native-linear-gradient/v2.5.6-wp-2/react-native-linear-gradient-2.5.6-wp-2.tgz", + "integrity": "sha512-XD9rsrONXD4TS76hbb5U3na9/8MUcP69sTgFvyrexgOu3ZbRyBlePZRXGWt9KB+7PK9659+jl+3Bu8d8cQ3iVA==" }, "react-native-modal": { "version": "11.10.0", @@ -51463,12 +51789,12 @@ } }, "react-native-prompt-android": { - "version": "https://raw.githubusercontent.com/wordpress-mobile/react-native-prompt-android/a1db6b97989e63490a13c31124de1e3882e6c46c/react-native-prompt-android-1.0.0-wp-1.tgz", - "integrity": "sha512-jgHtpcANkof2w3wKRs3/DQkpDXfSF+rOgwshRlRIblnaU7hBY9eb/K4n+fgYm1sWwo4/q54pmTAgCNwAvH+h6Q==" + "version": "https://raw.githubusercontent.com/wordpress-mobile/react-native-prompt-android/v1.0.0-wp-2/react-native-prompt-android-1.0.0-wp-2.tgz", + "integrity": "sha512-9whL4Kc5OU5Q89Dneq8oT8vpQTA/cEz24EIPXEQ2KGo1Dkf4qzer5+98YXJM2F8yitCP8UKHOL8WIiE7zukXBA==" }, "react-native-reanimated": { - "version": "https://raw.githubusercontent.com/wordpress-mobile/react-native-reanimated/1e8662de5378843e35c2e559d60aeaa729726fc0/react-native-reanimated-1.9.0-wp-1.tgz", - "integrity": "sha512-NRV8KjLvKej6dp2N2vsXbDrUArungVpR17YcnTKUXPVm4TO3GVzqMGKvrKtUY6HM1xRz7AzfudhAs3o1p5tTwA==", + "version": "https://raw.githubusercontent.com/wordpress-mobile/react-native-reanimated/1.9.0-wp-2/react-native-reanimated-1.9.0-wp-2.tgz", + "integrity": "sha512-jkdFVZD8m35GvovPshxT/lB+PA1qTmBtmh6wo/uMmYeXVlvX5xrwUo0RZUknanHzBHbqYxuwqMD9O64qETvyvg==", "requires": { "fbjs": "^1.0.0" }, @@ -51521,8 +51847,8 @@ } }, "react-native-safe-area-context": { - "version": "https://raw.githubusercontent.com/wordpress-mobile/react-native-safe-area-context/3dae92d9c95a253f7cafb7fcde44b77b0ea72789/react-native-safe-area-context-3.2.0-wp-1.tgz", - "integrity": "sha512-OSbQlx19NooFu/gBWCHNq1brGKoG/w6y6GYfXsaZuwYUtJAe9TUyOhnjF25ZD/uQVHjQWm/2MY0sBQtpkI2W5Q==" + "version": "https://raw.githubusercontent.com/wordpress-mobile/react-native-safe-area-context/v3.2.0-wp-2/react-native-safe-area-context-3.2.0-wp-2.tgz", + "integrity": "sha512-G7dzQ1YPfUCJZWKUjFbauyiun6RdMiikfp0/f50RoUa0sbkjmceITcDjp0VUEYCylwIZQStCNMLdago7wbnoOA==" }, "react-native-sass-transformer": { "version": "1.4.0", @@ -51542,12 +51868,12 @@ } }, "react-native-screens": { - "version": "https://raw.githubusercontent.com/wordpress-mobile/react-native-screens/a25c3d81e0838d57c9f9ac77ef726751e329bad1/react-native-screens-2.9.0-wp-1.tgz", - "integrity": "sha512-6u4uqEweGAr/nSEM5FOrQ3TH1YrqGHlystnCu3LSJnvhdbfunxPQMUIRHyvWjukPamHPNzqxSJDzdUTI3D2/CA==" + "version": "https://raw.githubusercontent.com/wordpress-mobile/react-native-screens/2.9.0-wp-2/react-native-screens-2.9.0-wp-2.tgz", + "integrity": "sha512-Vl5ITzj36cMR5hCv5CDEnIabXv5+wASG9ug/NKV8YdLoLAZZIowTmIBBGSivE4WsrePsGvsW5nYiCG5Y0SlbKw==" }, "react-native-svg": { - "version": "https://raw.githubusercontent.com/wordpress-mobile/react-native-svg/99132c9403db6a5709c5c383770547eda8eb25d1/react-native-svg-9.13.7-wp-1.tgz", - "integrity": "sha512-bCy0Vt4KqCacNMLximrRwus+BaNN7KezF4dJZn0pdtXATnjK/RgMRPYbHtNErDDEgkmHuRfsUh9n1mmhItaEpg==", + "version": "https://raw.githubusercontent.com/wordpress-mobile/react-native-svg/v9.13.7-wp-2/react-native-svg-9.13.7-wp-2.tgz", + "integrity": "sha512-t++91zDIUTjcJDRMJXQmf/FbJr7UW++2Qp70o6s/P5KCyHb9t2fsS5zSDdaz/kmqvrOvxM2NfP14jLaeubC++Q==", "requires": { "css-select": "^2.0.2", "css-tree": "^1.0.0-alpha.37" @@ -51609,15 +51935,15 @@ } }, "react-native-video": { - "version": "https://raw.githubusercontent.com/wordpress-mobile/react-native-video/67b5961406c7d6be0916ef69c7a6af69501aad83/react-native-video-5.0.2-wp-1.tgz", - "integrity": "sha512-+6+MBV0keGMDVqLFiYF9IFu9XrZToqLmTTxkoJWoTiD0xfJ+3BJcASiLijoAokiX4gsaqR6rwU0af2YskpTXyQ==", + "version": "https://raw.githubusercontent.com/wordpress-mobile/react-native-video/5.0.2-wp-2/react-native-video-5.0.2-wp-2.tgz", + "integrity": "sha512-JcZKEFDbje8MNEd1sEO5eQDrF7/BUaYMskI2G7rTXd0EwOPGx9rHOdx0uAmmew+NvkMNPmh+H6uKsgiaS891dA==", "requires": { "prop-types": "^15.5.10" } }, "react-native-webview": { - "version": "https://raw.githubusercontent.com/wordpress-mobile/react-native-webview/0c8632f1f4f442574ed3118d8ea35e6f7b4511df/react-native-webview-11.6.5-wp-1.tgz", - "integrity": "sha512-97fKZVwora7a7sdrodMqloOegtCGi/84ig1gBG/uxWWfbzDCzP2HmbJseFXMOe8x2qm85qYKwohOcRh6EhAr1A==", + "version": "https://raw.githubusercontent.com/wordpress-mobile/react-native-webview/v11.6.5-wp-2/react-native-webview-11.6.5-wp-2.tgz", + "integrity": "sha512-roKHRdc3zj5hR+fPhUocJZu+kp4zteIjHy4ykFO0rBMJlBQcaPFE/6Re9gI0nQjkVExL25BaJeDKLLYalj6X0w==", "requires": { "escape-string-regexp": "2.0.0", "invariant": "2.2.4" @@ -51813,15 +52139,15 @@ } }, "react-test-renderer": { - "version": "17.0.1", - "resolved": "https://registry.npmjs.org/react-test-renderer/-/react-test-renderer-17.0.1.tgz", - "integrity": "sha512-/dRae3mj6aObwkjCcxZPlxDFh73XZLgvwhhyON2haZGUEhiaY5EjfAdw+d/rQmlcFwdTpMXCSGVk374QbCTlrA==", + "version": "17.0.2", + "resolved": "https://registry.npmjs.org/react-test-renderer/-/react-test-renderer-17.0.2.tgz", + "integrity": "sha512-yaQ9cB89c17PUb0x6UfWRs7kQCorVdHlutU1boVPEsB8IDZH6n9tHxMacc3y0JoXOJUsZb/t/Mb8FUWMKaM7iQ==", "dev": true, "requires": { "object-assign": "^4.1.1", - "react-is": "^17.0.1", + "react-is": "^17.0.2", "react-shallow-renderer": "^16.13.1", - "scheduler": "^0.20.1" + "scheduler": "^0.20.2" }, "dependencies": { "react-is": { @@ -52126,6 +52452,11 @@ } } }, + "readline": { + "version": "1.3.0", + "resolved": "https://registry.npmjs.org/readline/-/readline-1.3.0.tgz", + "integrity": "sha1-xYDXfvLPyHUrEySYBg3JeTp6wBw=" + }, "reakit": { "version": "1.3.8", "resolved": "https://registry.npmjs.org/reakit/-/reakit-1.3.8.tgz", @@ -52160,9 +52491,9 @@ } }, "recast": { - "version": "0.20.4", - "resolved": "https://registry.npmjs.org/recast/-/recast-0.20.4.tgz", - "integrity": "sha512-6qLIBGGRcwjrTZGIiBpJVC/NeuXpogXNyRQpqU1zWPUigCphvApoCs9KIwDYh1eDuJ6dAFlQoi/QUyE5KQ6RBQ==", + "version": "0.20.5", + "resolved": "https://registry.npmjs.org/recast/-/recast-0.20.5.tgz", + "integrity": "sha512-E5qICoPoNL4yU0H0NoBDntNB0Q5oMSNh9usFctYniLBluTthi3RsQVBXIJNbApOlvSwW/RGxIuokPcAc59J5fQ==", "requires": { "ast-types": "0.14.2", "esprima": "~4.0.0", @@ -52177,14 +52508,6 @@ } } }, - "rechoir": { - "version": "0.6.2", - "resolved": "https://registry.npmjs.org/rechoir/-/rechoir-0.6.2.tgz", - "integrity": "sha1-hSBLVNuoLVdC4oyWdW70OvUOM4Q=", - "requires": { - "resolve": "^1.1.6" - } - }, "recursive-readdir": { "version": "2.2.2", "resolved": "https://registry.npmjs.org/recursive-readdir/-/recursive-readdir-2.2.2.tgz", @@ -53118,6 +53441,7 @@ "version": "1.8.1", "resolved": "https://registry.npmjs.org/resolve/-/resolve-1.8.1.tgz", "integrity": "sha512-AicPrAC7Qu1JxPCZ9ZgCZlY35QgFnNqc+0LtbRNxnVw4TXvjQ72wnuL9JQcEBgXkI9JM8MsT9kaQoHcpCRJOYA==", + "dev": true, "requires": { "path-parse": "^1.0.5" } @@ -53719,9 +54043,9 @@ "dev": true }, "send": { - "version": "0.17.1", - "resolved": "https://registry.npmjs.org/send/-/send-0.17.1.tgz", - "integrity": "sha512-BsVKsiGcQMFwT8UxypobUKyv7irCNRHk1T0G680vk88yf6LBByGcZJOTJCrTP2xVN6yI+XjPJcNuE3V4fT9sAg==", + "version": "0.17.2", + "resolved": "https://registry.npmjs.org/send/-/send-0.17.2.tgz", + "integrity": "sha512-UJYB6wFSJE3G00nEivR5rgWp8c2xXvJ3OPWPhmuteU0IKj8nKbG3DrjiOmLwpnHGYWAVwA69zmTm++YG0Hmwww==", "requires": { "debug": "2.6.9", "depd": "~1.1.2", @@ -53730,9 +54054,9 @@ "escape-html": "~1.0.3", "etag": "~1.8.1", "fresh": "0.5.2", - "http-errors": "~1.7.2", + "http-errors": "1.8.1", "mime": "1.6.0", - "ms": "2.1.1", + "ms": "2.1.3", "on-finished": "~2.3.0", "range-parser": "~1.2.1", "statuses": "~1.5.0" @@ -53759,9 +54083,9 @@ "integrity": "sha512-x0Vn8spI+wuJ1O6S7gnbaQg8Pxh4NNHb7KSINmEWKiPE4RKOplvijn+NkmYmmRgP68mc70j2EbeTFRsrswaQeg==" }, "ms": { - "version": "2.1.1", - "resolved": "https://registry.npmjs.org/ms/-/ms-2.1.1.tgz", - "integrity": "sha512-tgp+dl5cGk28utYktBsrFqA7HKgrhgPsg6Z/EfhWI4gl1Hwq8B/GmY/0oXZ6nF8hDVesS/FpnYaD/kOWhYQvyg==" + "version": "2.1.3", + "resolved": "https://registry.npmjs.org/ms/-/ms-2.1.3.tgz", + "integrity": "sha512-6FlzubTLZG3J2a/NVCAleEhjzq5oxgHyaCU9yYXvcLsvoVaHJq/s5xXI6/XXP6tz7R9xAOtHnSO/tXtF3WRTlA==" } } }, @@ -53851,21 +54175,14 @@ } }, "serve-static": { - "version": "1.14.1", - "resolved": "https://registry.npmjs.org/serve-static/-/serve-static-1.14.1.tgz", - "integrity": "sha512-JMrvUwE54emCYWlTI+hGrGv5I8dEwmco/00EvkzIIsR7MqrHonbD9pO2MOfFnpFntl7ecpZs+3mW+XbQZu9QCg==", + "version": "1.14.2", + "resolved": "https://registry.npmjs.org/serve-static/-/serve-static-1.14.2.tgz", + "integrity": "sha512-+TMNA9AFxUEGuC0z2mevogSnn9MXKb4fa7ngeRMJaaGv8vTwnIEkKi+QGvPt33HSnf8pRS+WGM0EbMtCJLKMBQ==", "requires": { "encodeurl": "~1.0.2", "escape-html": "~1.0.3", "parseurl": "~1.3.3", - "send": "0.17.1" - }, - "dependencies": { - "parseurl": { - "version": "1.3.3", - "resolved": "https://registry.npmjs.org/parseurl/-/parseurl-1.3.3.tgz", - "integrity": "sha512-CiyeOxFT/JZyN5m0z9PfXw4SCBJ6Sygz1Dpl0wqjlhDEGGBP1GnsUVEL0p63hoG1fcj3fHynXi9NYO4nWOL+qQ==" - } + "send": "0.17.2" } }, "set-blocking": { @@ -53905,9 +54222,9 @@ "integrity": "sha1-KQy7Iy4waULX1+qbg3Mqt4VvgoU=" }, "setprototypeof": { - "version": "1.1.1", - "resolved": "https://registry.npmjs.org/setprototypeof/-/setprototypeof-1.1.1.tgz", - "integrity": "sha512-JvdAWfbXeIGaZ9cILp38HntZSFSo3mWg6xGcJJsd+d4aRMOqauag1C63dJfDw7OaMYwEbHMOxEZ1lqVRYP2OAw==" + "version": "1.2.0", + "resolved": "https://registry.npmjs.org/setprototypeof/-/setprototypeof-1.2.0.tgz", + "integrity": "sha512-E5LDX7Wrp85Kil5bhZv46j8jOeboKq5JMmYM3gVGdGH8xFpPWXUMsNrlODCrkoxMEeNi/XZIwuRvY4XNwYMJpw==" }, "sha.js": { "version": "2.4.11", @@ -53964,23 +54281,6 @@ } } }, - "shelljs": { - "version": "0.8.4", - "resolved": "https://registry.npmjs.org/shelljs/-/shelljs-0.8.4.tgz", - "integrity": "sha512-7gk3UZ9kOfPLIAbslLzyWeGiEqx9e3rxwZM0KE6EL8GlGwjym9Mrlx5/p33bWTu9YG6vcS4MBxYZDHYr5lr8BQ==", - "requires": { - "glob": "^7.0.0", - "interpret": "^1.0.0", - "rechoir": "^0.6.2" - }, - "dependencies": { - "interpret": { - "version": "1.4.0", - "resolved": "https://registry.npmjs.org/interpret/-/interpret-1.4.0.tgz", - "integrity": "sha512-agE4QfB2Lkp9uICn7BAqoscw4SZP9kTE2hxiFI3jBPmXJfdqiahTbUuKGsMoN2GtqL9AxhYioAcVvgsb1HvRbA==" - } - } - }, "shellwords": { "version": "0.1.1", "resolved": "https://registry.npmjs.org/shellwords/-/shellwords-0.1.1.tgz", @@ -54176,13 +54476,13 @@ "integrity": "sha512-APW9iYbkJ5cijjX4Ljhf3VG8SwYPUJT5gZrwci/wieMabQxWFiV5VwsrP5c6GMRvXKEQMGkAB1d9dvW66dTqpg==" }, "simple-plist": { - "version": "1.1.1", - "resolved": "https://registry.npmjs.org/simple-plist/-/simple-plist-1.1.1.tgz", - "integrity": "sha512-pKMCVKvZbZTsqYR6RKgLfBHkh2cV89GXcA/0CVPje3sOiNOnXA8+rp/ciAMZ7JRaUdLzlEM6JFfUn+fS6Nt3hg==", + "version": "1.3.0", + "resolved": "https://registry.npmjs.org/simple-plist/-/simple-plist-1.3.0.tgz", + "integrity": "sha512-uYWpeGFtZtVt2NhG4AHgpwx323zxD85x42heMJBan1qAiqqozIlaGrwrEt6kRjXWRWIXsuV1VLCvVmZan2B5dg==", "requires": { - "bplist-creator": "0.0.8", - "bplist-parser": "0.2.0", - "plist": "^3.0.1" + "bplist-creator": "0.1.0", + "bplist-parser": "0.3.0", + "plist": "^3.0.4" } }, "simple-swizzle": { @@ -57639,7 +57939,8 @@ "toidentifier": { "version": "1.0.0", "resolved": "https://registry.npmjs.org/toidentifier/-/toidentifier-1.0.0.tgz", - "integrity": "sha512-yaOH/Pk/VEhBWWTlhI+qXxDFXlejDGcQipMlyxda9nthulaxLZUNcUqFxokp0vcYnvteJln5FNQDRrxj3YcbVw==" + "integrity": "sha512-yaOH/Pk/VEhBWWTlhI+qXxDFXlejDGcQipMlyxda9nthulaxLZUNcUqFxokp0vcYnvteJln5FNQDRrxj3YcbVw==", + "dev": true }, "totalist": { "version": "1.1.0", @@ -57896,9 +58197,9 @@ "dev": true }, "ua-parser-js": { - "version": "0.7.28", - "resolved": "https://registry.npmjs.org/ua-parser-js/-/ua-parser-js-0.7.28.tgz", - "integrity": "sha512-6Gurc1n//gjp9eQNXjD9O3M/sMwVtN5S8Lv9bvOYBfKfDNiIIhqiyi01vMBO45u4zkDE420w/e0se7Vs+sIg+g==" + "version": "0.7.31", + "resolved": "https://registry.npmjs.org/ua-parser-js/-/ua-parser-js-0.7.31.tgz", + "integrity": "sha512-qLK/Xe9E2uzmYI3qLeOmI0tEOt+TBBQyUIAh4aAgU05FVYzeZrKUdkAZfBNVGRaHVgV0TDkdEngJSw/SyQchkQ==" }, "uc.micro": { "version": "1.0.6", @@ -57906,27 +58207,6 @@ "integrity": "sha512-8Y75pvTYkLJW2hWQHXxoqRgV7qb9B+9vFEtidML+7koHUFapnVJAZ6cKs+Qjz5Aw3aZWHMC6u0wJE3At+nSGwA==", "dev": true }, - "uglify-es": { - "version": "3.3.9", - "resolved": "https://registry.npmjs.org/uglify-es/-/uglify-es-3.3.9.tgz", - "integrity": "sha512-r+MU0rfv4L/0eeW3xZrd16t4NZfK8Ld4SWVglYBb7ez5uXFWHuVRs6xCTrf1yirs9a4j4Y27nn7SRfO6v67XsQ==", - "requires": { - "commander": "~2.13.0", - "source-map": "~0.6.1" - }, - "dependencies": { - "commander": { - "version": "2.13.0", - "resolved": "https://registry.npmjs.org/commander/-/commander-2.13.0.tgz", - "integrity": "sha512-MVuS359B+YzaWqjCL/c+22gfryv+mCBPHAv3zyVI2GN8EY6IRP8VwtasXn8jyyhvvq84R4ImN1OKRtcbIasjYA==" - }, - "source-map": { - "version": "0.6.1", - "resolved": "https://registry.npmjs.org/source-map/-/source-map-0.6.1.tgz", - "integrity": "sha512-UjgapumWlbMhkBgzT7Ykc5YXUT46F0iKu8SGXq0bcwP5dz/h0Plj6enJqjz1Zbq2l5WaqYnrVbwWOWMyF3F47g==" - } - } - }, "uglify-js": { "version": "3.13.7", "resolved": "https://registry.npmjs.org/uglify-js/-/uglify-js-3.13.7.tgz", @@ -60216,9 +60496,9 @@ }, "dependencies": { "ansi-regex": { - "version": "5.0.0", - "resolved": "https://registry.npmjs.org/ansi-regex/-/ansi-regex-5.0.0.tgz", - "integrity": "sha512-bY6fj56OUQ0hU1KjFNDQuJFezqKdrAyFdIevADiqrWHwSlbmBNMHp5ak2f40Pm8JTFyM2mqxkG6ngkHO11f/lg==" + "version": "5.0.1", + "resolved": "https://registry.npmjs.org/ansi-regex/-/ansi-regex-5.0.1.tgz", + "integrity": "sha512-quJQXlTSUGL2LH9SUXo8VwsY4soanhgo6LNSm84E1LBcE8s3O0wpdiRzyR9z/ZZJMlMWv37qOOb9pdJlMUEKFQ==" }, "ansi-styles": { "version": "4.3.0", @@ -60252,21 +60532,21 @@ "integrity": "sha512-zymm5+u+sCsSWyD9qNaejV3DFvhCKclKdizYaJUuHA83RLjb7nSuGnddCHGv0hk+KY7BMAlsWeK4Ueg6EV6XQg==" }, "string-width": { - "version": "4.2.2", - "resolved": "https://registry.npmjs.org/string-width/-/string-width-4.2.2.tgz", - "integrity": "sha512-XBJbT3N4JhVumXE0eoLU9DCjcaF92KLNqTmFCnG1pf8duUxFGwtP6AD6nkjw9a3IdiRtL3E2w3JDiE/xi3vOeA==", + "version": "4.2.3", + "resolved": "https://registry.npmjs.org/string-width/-/string-width-4.2.3.tgz", + "integrity": "sha512-wKyQRQpjJ0sIp62ErSZdGsjMJWsap5oRNihHhu6G7JVO/9jIB6UyevL+tXuOqrng8j/cxKTWyWUwvSTriiZz/g==", "requires": { "emoji-regex": "^8.0.0", "is-fullwidth-code-point": "^3.0.0", - "strip-ansi": "^6.0.0" + "strip-ansi": "^6.0.1" } }, "strip-ansi": { - "version": "6.0.0", - "resolved": "https://registry.npmjs.org/strip-ansi/-/strip-ansi-6.0.0.tgz", - "integrity": "sha512-AuvKTrTfQNYNIctbR1K/YGTR1756GycPsg7b9bdV9Duqur4gv6aKqHXah67Z8ImS7WEz5QVcOtlfW2rZEugt6w==", + "version": "6.0.1", + "resolved": "https://registry.npmjs.org/strip-ansi/-/strip-ansi-6.0.1.tgz", + "integrity": "sha512-Y38VPSHcqkFrCpFnQ9vuSXmquuv5oXOKpGeT6aGrr3o3Gc9AlVa6JBfUSOCnbxGGZF+/0ooI7KrPuUSztUdU5A==", "requires": { - "ansi-regex": "^5.0.0" + "ansi-regex": "^5.0.1" } } } @@ -60407,11 +60687,6 @@ "sax": "^1.2.1" } }, - "xmldom": { - "version": "0.5.0", - "resolved": "https://registry.npmjs.org/xmldom/-/xmldom-0.5.0.tgz", - "integrity": "sha512-Foaj5FXVzgn7xFzsKeNIde9g6aFBxTPi37iwsno8QvApmtg7KYrr+OPyRHcJF7dud2a5nGRBXK3n0dL62Gf7PA==" - }, "xtend": { "version": "4.0.1", "resolved": "https://registry.npmjs.org/xtend/-/xtend-4.0.1.tgz", diff --git a/package.json b/package.json index 507f4ff6418330..0f9f62c04c9769 100755 --- a/package.json +++ b/package.json @@ -184,8 +184,8 @@ "lint-staged": "9.2.5", "lodash": "4.17.21", "make-dir": "3.0.0", - "metro-react-native-babel-preset": "0.64.0", - "metro-react-native-babel-transformer": "0.64.0", + "metro-react-native-babel-preset": "0.66.2", + "metro-react-native-babel-transformer": "0.66.2", "mkdirp": "0.5.1", "nock": "12.0.3", "node-watch": "0.7.0", @@ -195,12 +195,12 @@ "postcss-loader": "6.1.1", "prettier": "npm:wp-prettier@2.2.1-beta-1", "progress": "2.0.3", - "react": "17.0.1", - "react-dom": "17.0.1", - "react-native": "0.64.0", + "react": "17.0.2", + "react-dom": "17.0.2", + "react-native": "0.66.2", "react-native-url-polyfill": "1.1.2", "react-refresh": "0.10.0", - "react-test-renderer": "17.0.1", + "react-test-renderer": "17.0.2", "redux": "4.1.2", "rimraf": "3.0.2", "rtlcss": "2.6.2", diff --git a/packages/block-editor/src/components/block-styles/preview.native.js b/packages/block-editor/src/components/block-styles/preview.native.js index 1fce3ddc0acc5e..19781d5981e82e 100644 --- a/packages/block-editor/src/components/block-styles/preview.native.js +++ b/packages/block-editor/src/components/block-styles/preview.native.js @@ -39,10 +39,13 @@ function StylePreview( { onPress, isActive, style, url } ) { useEffect( () => { onLayout(); - Dimensions.addEventListener( 'change', onLayout ); + const dimensionsChangeSubscription = Dimensions.addEventListener( + 'change', + onLayout + ); return () => { - Dimensions.removeEventListener( 'change', onLayout ); + dimensionsChangeSubscription.remove(); }; }, [] ); diff --git a/packages/block-editor/src/components/block-types-list/index.native.js b/packages/block-editor/src/components/block-types-list/index.native.js index 81795d37e87789..a1ee5cef88ab13 100644 --- a/packages/block-editor/src/components/block-types-list/index.native.js +++ b/packages/block-editor/src/components/block-types-list/index.native.js @@ -34,10 +34,13 @@ export default function BlockTypesList( { const [ maxWidth, setMaxWidth ] = useState(); useEffect( () => { - Dimensions.addEventListener( 'change', onLayout ); + const dimensionsChangeSubscription = Dimensions.addEventListener( + 'change', + onLayout + ); onLayout(); return () => { - Dimensions.removeEventListener( 'change', onLayout ); + dimensionsChangeSubscription.remove(); }; }, [] ); diff --git a/packages/block-library/src/audio/test/__snapshots__/edit.native.js.snap b/packages/block-library/src/audio/test/__snapshots__/edit.native.js.snap index da02296f2dc472..11c4a608fbaef9 100644 --- a/packages/block-library/src/audio/test/__snapshots__/edit.native.js.snap +++ b/packages/block-library/src/audio/test/__snapshots__/edit.native.js.snap @@ -2,6 +2,11 @@ exports[`Audio block renders audio block error state without crashing 1`] = ` { isCurrent = false; - AccessibilityInfo.removeEventListener( - 'screenReaderChanged', - setIsScreenReaderEnabled - ); + a11yInfoChangeSubscription.remove(); }; }, [] ); diff --git a/packages/block-library/src/embed/test/index.native.js b/packages/block-library/src/embed/test/index.native.js index 0f6c466004959b..346d88fec35f23 100644 --- a/packages/block-library/src/embed/test/index.native.js +++ b/packages/block-library/src/embed/test/index.native.js @@ -8,7 +8,8 @@ import { waitFor, within, } from 'test/helpers'; -import { Clipboard, Platform } from 'react-native'; +import { Platform } from 'react-native'; +import Clipboard from '@react-native-clipboard/clipboard'; /** * WordPress dependencies diff --git a/packages/block-library/src/file/edit.native.js b/packages/block-library/src/file/edit.native.js index 07d2ecf57a2be7..1d1db7c4922d3a 100644 --- a/packages/block-library/src/file/edit.native.js +++ b/packages/block-library/src/file/edit.native.js @@ -1,7 +1,8 @@ /** * External dependencies */ -import { View, Clipboard, TouchableWithoutFeedback, Text } from 'react-native'; +import { View, TouchableWithoutFeedback, Text } from 'react-native'; +import Clipboard from '@react-native-clipboard/clipboard'; /** * WordPress dependencies diff --git a/packages/block-library/src/file/test/__snapshots__/edit.native.js.snap b/packages/block-library/src/file/test/__snapshots__/edit.native.js.snap index e029bd6e7105fb..17bc2e3da734a1 100644 --- a/packages/block-library/src/file/test/__snapshots__/edit.native.js.snap +++ b/packages/block-library/src/file/test/__snapshots__/edit.native.js.snap @@ -20,6 +20,11 @@ exports[`File block renders file error state without crashing 1`] = ` } /> Svg @@ -223,6 +225,11 @@ exports[`File block renders file without crashing 1`] = ` } /> { }; } ); +/** + * Immediately invoke delayed functions. A better alternative would be using + * fake timers and test the delay itself. However, fake timers does not work + * with our custom waitFor implementation. + */ +jest.mock( 'lodash', () => { + const actual = jest.requireActual( 'lodash' ); + return { ...actual, delay: ( cb ) => cb() }; +} ); + const apiFetchPromise = Promise.resolve( {} ); apiFetch.mockImplementation( () => apiFetchPromise ); diff --git a/packages/block-library/src/missing/test/__snapshots__/edit.native.js.snap b/packages/block-library/src/missing/test/__snapshots__/edit.native.js.snap index 12723e81a79b99..e5c741430bded9 100644 --- a/packages/block-library/src/missing/test/__snapshots__/edit.native.js.snap +++ b/packages/block-library/src/missing/test/__snapshots__/edit.native.js.snap @@ -5,6 +5,11 @@ exports[`Missing block renders without crashing 1`] = ` accessibilityHint="Tap here to show help" accessibilityLabel="Help button" accessibilityRole="button" + accessibilityState={ + Object { + "disabled": true, + } + } accessible={true} focusable={true} onClick={[Function]} diff --git a/packages/block-library/src/search/edit.native.js b/packages/block-library/src/search/edit.native.js index d544393616eb75..9fe12f2642ee97 100644 --- a/packages/block-library/src/search/edit.native.js +++ b/packages/block-library/src/search/edit.native.js @@ -78,7 +78,7 @@ export default function SearchEdit( { * properly creating accessibilityLabel text. */ useEffect( () => { - AccessibilityInfo.addEventListener( + const a11yInfoChangeSubscription = AccessibilityInfo.addEventListener( 'screenReaderChanged', handleScreenReaderToggled ); @@ -90,10 +90,7 @@ export default function SearchEdit( { ); return () => { - AccessibilityInfo.removeEventListener( - 'screenReaderChanged', - handleScreenReaderToggled - ); + a11yInfoChangeSubscription.remove(); }; }, [] ); diff --git a/packages/block-library/src/search/test/__snapshots__/edit.native.js.snap b/packages/block-library/src/search/test/__snapshots__/edit.native.js.snap index 5dab6fdc8e2183..d2bfef07c82737 100644 --- a/packages/block-library/src/search/test/__snapshots__/edit.native.js.snap +++ b/packages/block-library/src/search/test/__snapshots__/edit.native.js.snap @@ -79,7 +79,6 @@ exports[`Search Block renders block with button inside option 1`] = ` accessible={true} > diff --git a/packages/components/src/mobile/bottom-sheet/bottom-sheet-context.native.js b/packages/components/src/mobile/bottom-sheet/bottom-sheet-context.native.js index ebfc384f530694..d77b019327141e 100644 --- a/packages/components/src/mobile/bottom-sheet/bottom-sheet-context.native.js +++ b/packages/components/src/mobile/bottom-sheet/bottom-sheet-context.native.js @@ -32,6 +32,8 @@ export const BottomSheetContext = createContext( { // Android only: Function called to control android hardware back button functionality // Return true if the bottom-sheet default close action shouldn't be called onHandleHardwareButtonPress: () => {}, + // Toggle full-screen styles and dimensions + setIsFullScreen: () => {}, } ); export const { diff --git a/packages/components/src/mobile/bottom-sheet/bottom-sheet-navigation/navigation-container.native.js b/packages/components/src/mobile/bottom-sheet/bottom-sheet-navigation/navigation-container.native.js index 1def0400a1c42f..acec35a58ea5de 100644 --- a/packages/components/src/mobile/bottom-sheet/bottom-sheet-navigation/navigation-container.native.js +++ b/packages/components/src/mobile/bottom-sheet/bottom-sheet-navigation/navigation-container.native.js @@ -16,7 +16,6 @@ import { Children, useRef, cloneElement, - Platform, } from '@wordpress/element'; import { usePreferredColorSchemeStyle } from '@wordpress/compose'; @@ -88,26 +87,21 @@ function BottomSheetNavigationContainer( { const setHeight = useCallback( ( height ) => { - // The screen is fullHeight or changing from fullScreen to the default mode + // The screen is fullHeight if ( - ( typeof currentHeight === 'string' && - typeof height !== 'string' ) || - typeof height === 'string' + typeof height === 'string' && + typeof height !== typeof currentHeight ) { - // Animating the opacity for the initial modal results in the backdrop - // provided by react-native-modal to never transition from transparent - // to partially opaque black. The core issue was not idenfited, but it - // may relate to the experimental state of LayoutAnimation for Android. - // https://reactnative.dev/docs/layoutanimation - if ( ! Platform.isAndroid || currentHeight !== 1 ) { - performLayoutAnimation( ANIMATION_DURATION ); - } + performLayoutAnimation( ANIMATION_DURATION ); setCurrentHeight( height ); return; } - if ( height > 1 ) { + if ( + height > 1 && + Math.round( height ) !== Math.round( currentHeight ) + ) { if ( currentHeight === 1 ) { setCurrentHeight( height ); } else if ( animate ) { diff --git a/packages/components/src/mobile/bottom-sheet/bottom-sheet-navigation/navigation-screen.native.js b/packages/components/src/mobile/bottom-sheet/bottom-sheet-navigation/navigation-screen.native.js index af802a96e0f436..0c35ff8b8b0e2e 100644 --- a/packages/components/src/mobile/bottom-sheet/bottom-sheet-navigation/navigation-screen.native.js +++ b/packages/components/src/mobile/bottom-sheet/bottom-sheet-navigation/navigation-screen.native.js @@ -27,6 +27,7 @@ const BottomSheetNavigationScreen = ( { fullScreen, isScrollable, isNested, + name, } ) => { const navigation = useNavigation(); const heightRef = useRef( { maxHeight: 0 } ); @@ -56,6 +57,25 @@ const BottomSheetNavigationScreen = ( { onHandleHardwareButtonPress( null ); return false; } ); + /** + * TODO: onHandleHardwareButtonPress stores a single value, which means + * future invocations from sibling screens can replace the callback for + * the currently active screen. Currently, the empty dependency array + * passed to useCallback here is what prevents erroneous callback + * replacements, but leveraging memoization to achieve this is brittle and + * explicitly discouraged in the React documentation. + * https://reactjs.org/docs/hooks-reference.html#usememo + * + * Ideally, we refactor onHandleHardwareButtonPress to manage multiple + * callbacks triggered based upon which screen is currently active. + * + * Related: https://git.io/JD2no + */ + }, [] ) + ); + + useFocusEffect( + useCallback( () => { if ( fullScreen ) { setHeight( '100%' ); setIsFullScreen( true ); @@ -64,8 +84,9 @@ const BottomSheetNavigationScreen = ( { setHeight( heightRef.current.maxHeight ); } return () => {}; - }, [] ) + }, [ setHeight ] ) ); + const onLayout = ( { nativeEvent } ) => { if ( fullScreen ) { return; @@ -77,13 +98,22 @@ const BottomSheetNavigationScreen = ( { setHeightDebounce( height ); } }; + return useMemo( () => { return isScrollable || isNested ? ( - { children } + + { children } + ) : ( - + { children } { ! isNested && ( ( { + performLayoutAnimation: jest.fn(), +} ) ); + +const TestScreen = ( { fullScreen, name, navigateTo } ) => { + const navigation = useNavigation(); + return ( + + navigation.navigate( navigateTo ) }> + { name } + + + ); +}; + +jest.useFakeTimers(); + +it( 'animates height transitioning from non-full-screen to full-screen', async () => { + const screen = render( + + + + + ); + + // Await navigation screen to allow async state updates to complete + const navigationScreen = await waitFor( () => + screen.getByTestId( 'navigation-screen-test-screen-1' ) + ); + // Trigger non-full-screen layout event + act( () => { + fireEvent( navigationScreen, 'layout', { + nativeEvent: { + layout: { + height: 123, + }, + }, + } ); + // Trigger debounced setting of height after layout event + jest.advanceTimersByTime( 10 ); + } ); + // Navigate to screen 2 + fireEvent.press( + await waitFor( () => screen.getByText( /test-screen-1/ ) ) + ); + // Await navigation screen to allow async state updates to complete + await waitFor( () => screen.getByText( /test-screen-2/ ) ); + + expect( performLayoutAnimation ).toHaveBeenCalledTimes( 1 ); +} ); + +it( 'animates height transitioning from full-screen to non-full-screen', async () => { + const screen = render( + + + + + ); + + // Await navigation screen to allow async state updates to complete + const navigationScreen = await waitFor( () => + screen.getByTestId( 'navigation-screen-test-screen-1' ) + ); + // Trigger non-full-screen layout event + act( () => { + fireEvent( navigationScreen, 'layout', { + nativeEvent: { + layout: { + height: 123, + }, + }, + } ); + // Trigger debounced setting of height after layout event + jest.advanceTimersByTime( 10 ); + } ); + // Navigate to screen 2 + fireEvent.press( + await waitFor( () => screen.getByText( /test-screen-1/ ) ) + ); + // Navigate to screen 1 + fireEvent.press( + // Use custom waitFor due to https://git.io/JYYGE + await waitFor( () => screen.getByText( /test-screen-2/ ) ) + ); + // Await navigation screen to allow async state updates to complete + await waitFor( () => screen.getByText( /test-screen-1/ ) ); + + expect( performLayoutAnimation ).toHaveBeenCalledTimes( 2 ); +} ); + +it( 'does not animate height transitioning from full-screen to full-screen', async () => { + const screen = render( + + + + + + ); + + // Await navigation screen to allow async state updates to complete + const navigationScreen = await waitFor( () => + screen.getByTestId( 'navigation-screen-test-screen-1' ) + ); + // Trigger non-full-screen layout event + act( () => { + fireEvent( navigationScreen, 'layout', { + nativeEvent: { + layout: { + height: 123, + }, + }, + } ); + // Trigger debounced setting of height after layout event + jest.advanceTimersByTime( 10 ); + } ); + // Navigate to screen 2 + fireEvent.press( + await waitFor( () => screen.getByText( /test-screen-1/ ) ) + ); + // Navigate to screen 3 + fireEvent.press( + await waitFor( () => screen.getByText( /test-screen-2/ ) ) + ); + // Navigate to screen 2 + fireEvent.press( + await waitFor( () => screen.getByText( /test-screen-3/ ) ) + ); + // Await navigation screen to allow async state updates to complete + await waitFor( () => screen.getByText( /test-screen-2/ ) ); + + expect( performLayoutAnimation ).toHaveBeenCalledTimes( 1 ); +} ); diff --git a/packages/components/src/mobile/bottom-sheet/cell.native.js b/packages/components/src/mobile/bottom-sheet/cell.native.js index ac780d9e0f65d5..2c330450615feb 100644 --- a/packages/components/src/mobile/bottom-sheet/cell.native.js +++ b/packages/components/src/mobile/bottom-sheet/cell.native.js @@ -52,7 +52,7 @@ class BottomSheetCell extends Component { componentDidMount() { this.isCurrent = true; - AccessibilityInfo.addEventListener( + this.a11yInfoChangeSubscription = AccessibilityInfo.addEventListener( 'screenReaderChanged', this.handleScreenReaderToggled ); @@ -68,10 +68,7 @@ class BottomSheetCell extends Component { componentWillUnmount() { this.isCurrent = false; - AccessibilityInfo.removeEventListener( - 'screenReaderChanged', - this.handleScreenReaderToggled - ); + this.a11yInfoChangeSubscription.remove(); } handleScreenReaderToggled( isScreenReaderEnabled ) { diff --git a/packages/components/src/mobile/bottom-sheet/index.native.js b/packages/components/src/mobile/bottom-sheet/index.native.js index 777a17ecb25926..f6bfab39dc598c 100644 --- a/packages/components/src/mobile/bottom-sheet/index.native.js +++ b/packages/components/src/mobile/bottom-sheet/index.native.js @@ -145,9 +145,13 @@ class BottomSheet extends Component { } ); this.lastLayoutAnimation = layoutAnimation; } else { - this.performRegularLayoutAnimation( { - useLastLayoutAnimation: false, - } ); + // TODO: Reinstate animations, possibly replacing `LayoutAnimation` with + // more nuanced `Animated` usage or replacing our custom `BottomSheet` + // with `@gorhom/bottom-sheet`. This animation was disabled to avoid a + // preexisting bug: https://git.io/JMPCV + // this.performRegularLayoutAnimation( { + // useLastLayoutAnimation: false, + // } ); } } @@ -185,7 +189,10 @@ class BottomSheet extends Component { ); } - Dimensions.addEventListener( 'change', this.onDimensionsChange ); + this.dimensionsChangeSubscription = Dimensions.addEventListener( + 'change', + this.onDimensionsChange + ); // 'Will' keyboard events are not available on Android. // Reference: https://reactnative.dev/docs/0.61/keyboard#addlistener @@ -206,7 +213,7 @@ class BottomSheet extends Component { } componentWillUnmount() { - Dimensions.removeEventListener( 'change', this.onDimensionsChange ); + this.dimensionsChangeSubscription.remove(); this.keyboardShowListener.remove(); this.keyboardHideListener.remove(); if ( this.androidModalClosedSubscription ) { @@ -217,10 +224,6 @@ class BottomSheet extends Component { } this.safeAreaEventSubscription.remove(); this.safeAreaEventSubscription = null; - SafeArea.removeEventListener( - 'safeAreaInsetsForRootViewDidChange', - this.onSafeAreaInsetsUpdate - ); } onSafeAreaInsetsUpdate( result ) { @@ -254,16 +257,19 @@ class BottomSheet extends Component { statusBarHeight - this.headerHeight ); - // On horizontal mode `maxHeight` has to be set on 90% of width + // In landscape orientation, set `maxHeight` to ~96% of the height if ( width > height ) { this.setState( { - maxHeight: Math.min( 0.9 * height, maxHeightWithOpenKeyboard ), + maxHeight: Math.min( + 0.96 * height - this.headerHeight, + maxHeightWithOpenKeyboard + ), } ); - // On vertical mode `maxHeight` has to be set on 50% of width + // In portrait orientation, set `maxHeight` to ~59% of the height } else { this.setState( { maxHeight: Math.min( - height / 2 - safeAreaBottomInset, + height * 0.59 - safeAreaBottomInset - this.headerHeight, maxHeightWithOpenKeyboard ), } ); diff --git a/packages/components/src/mobile/bottom-sheet/range-text-input.native.js b/packages/components/src/mobile/bottom-sheet/range-text-input.native.js index 91556f3cb834e4..3d56bf70cafa07 100644 --- a/packages/components/src/mobile/bottom-sheet/range-text-input.native.js +++ b/packages/components/src/mobile/bottom-sheet/range-text-input.native.js @@ -56,11 +56,14 @@ class RangeTextInput extends Component { } componentDidMount() { - AppState.addEventListener( 'change', this.handleChangePixelRatio ); + this.appStateChangeSubscription = AppState.addEventListener( + 'change', + this.handleChangePixelRatio + ); } componentWillUnmount() { - AppState.removeEventListener( 'change', this.handleChangePixelRatio ); + this.appStateChangeSubscription.remove(); clearTimeout( this.timeoutAnnounceValue ); } diff --git a/packages/components/src/mobile/keyboard-avoiding-view/index.ios.js b/packages/components/src/mobile/keyboard-avoiding-view/index.ios.js index a9bac190b6d004..6fd716a527ee3b 100644 --- a/packages/components/src/mobile/keyboard-avoiding-view/index.ios.js +++ b/packages/components/src/mobile/keyboard-avoiding-view/index.ios.js @@ -51,20 +51,23 @@ export const KeyboardAvoidingView = ( { setSafeAreaBottomInset( safeAreaInsets.bottom ); } ); - SafeArea.addEventListener( + const safeAreaSubscription = SafeArea.addEventListener( 'safeAreaInsetsForRootViewDidChange', onSafeAreaInsetsUpdate ); - Keyboard.addListener( 'keyboardWillShow', onKeyboardWillShow ); - Keyboard.addListener( 'keyboardWillHide', onKeyboardWillHide ); + const keyboardShowSubscription = Keyboard.addListener( + 'keyboardWillShow', + onKeyboardWillShow + ); + const keyboardHideSubscription = Keyboard.addListener( + 'keyboardWillHide', + onKeyboardWillHide + ); return () => { - SafeArea.removeEventListener( - 'safeAreaInsetsForRootViewDidChange', - onSafeAreaInsetsUpdate - ); - Keyboard.removeListener( 'keyboardWillShow', onKeyboardWillShow ); - Keyboard.removeListener( 'keyboardWillHide', onKeyboardWillHide ); + safeAreaSubscription.remove(); + keyboardShowSubscription.remove(); + keyboardHideSubscription.remove(); }; }, [] ); diff --git a/packages/components/src/mobile/link-picker/index.native.js b/packages/components/src/mobile/link-picker/index.native.js index f27702f3393c24..f200152f9ed2e7 100644 --- a/packages/components/src/mobile/link-picker/index.native.js +++ b/packages/components/src/mobile/link-picker/index.native.js @@ -1,7 +1,8 @@ /** * External dependencies */ -import { Clipboard, SafeAreaView, TouchableOpacity, View } from 'react-native'; +import { SafeAreaView, TouchableOpacity, View } from 'react-native'; +import Clipboard from '@react-native-clipboard/clipboard'; import { lowerCase, startsWith } from 'lodash'; /** diff --git a/packages/components/src/mobile/link-picker/link-picker-screen.native.js b/packages/components/src/mobile/link-picker/link-picker-screen.native.js index 7119fbfe0c322f..feb6b3e2eafb21 100644 --- a/packages/components/src/mobile/link-picker/link-picker-screen.native.js +++ b/packages/components/src/mobile/link-picker/link-picker-screen.native.js @@ -1,7 +1,9 @@ /** * External dependencies */ +import { Keyboard } from 'react-native'; import { useNavigation, useRoute } from '@react-navigation/native'; +import { delay } from 'lodash'; /** * WordPress dependencies @@ -18,14 +20,20 @@ const LinkPickerScreen = ( { returnScreenName } ) => { const route = useRoute(); const onLinkPicked = ( { url, title } ) => { - navigation.navigate( returnScreenName, { - inputValue: url, - text: title, - } ); + Keyboard.dismiss(); + delay( () => { + navigation.navigate( returnScreenName, { + inputValue: url, + text: title, + } ); + }, 100 ); }; const onCancel = () => { - navigation.goBack(); + Keyboard.dismiss(); + delay( () => { + navigation.goBack(); + }, 100 ); }; const { inputValue } = route.params; diff --git a/packages/components/src/mobile/link-settings/index.native.js b/packages/components/src/mobile/link-settings/index.native.js index 0abebbdeb3fad6..15661216f5b082 100644 --- a/packages/components/src/mobile/link-settings/index.native.js +++ b/packages/components/src/mobile/link-settings/index.native.js @@ -1,7 +1,8 @@ /** * External dependencies */ -import { Platform, Clipboard } from 'react-native'; +import { Platform } from 'react-native'; +import Clipboard from '@react-native-clipboard/clipboard'; /** * WordPress dependencies */ diff --git a/packages/components/src/mobile/link-settings/test/edit.native.js b/packages/components/src/mobile/link-settings/test/edit.native.js index 13b8001c388e4a..0b69ac13cf37f6 100644 --- a/packages/components/src/mobile/link-settings/test/edit.native.js +++ b/packages/components/src/mobile/link-settings/test/edit.native.js @@ -3,7 +3,7 @@ /** * External dependencies */ -import { Clipboard } from 'react-native'; +import Clipboard from '@react-native-clipboard/clipboard'; import { fireEvent, initializeEditor, waitFor } from 'test/helpers'; /** * WordPress dependencies diff --git a/packages/components/src/mobile/link-settings/test/link-settings-navigation.native.js b/packages/components/src/mobile/link-settings/test/link-settings-navigation.native.js new file mode 100644 index 00000000000000..7c98462207cf8a --- /dev/null +++ b/packages/components/src/mobile/link-settings/test/link-settings-navigation.native.js @@ -0,0 +1,99 @@ +/** + * External dependencies + */ +import { Keyboard, Platform } from 'react-native'; +import { render, fireEvent, waitFor } from 'test/helpers'; + +/** + * Internal dependencies + */ +import LinkSettingsNavigation from '../link-settings-navigation'; + +beforeAll( () => { + jest.useFakeTimers(); + jest.spyOn( Keyboard, 'dismiss' ); +} ); + +const subject = ( + {} } + hasPicker + options={ { + url: { + label: 'Link URL', + placeholder: 'Add URL', + autoFocus: false, + }, + } } + isVisible + withBottomSheet + /> +); + +describe( 'Android', () => { + it( 'improves back animation performance by dismissing keyboard beforehand', async () => { + const screen = render( subject ); + fireEvent.press( screen.getByText( 'Link to' ) ); + fireEvent.press( + screen.getByA11yLabel( 'Link to, Search or type URL' ) + ); + // Await back button to allow async state updates to complete + const backButton = await waitFor( () => + screen.getByA11yLabel( 'Go back' ) + ); + Keyboard.dismiss.mockClear(); + fireEvent.press( backButton ); + + expect( Keyboard.dismiss ).toHaveBeenCalledTimes( 1 ); + } ); + + it( 'improves apply animation performance by dismissing keyboard beforehand', async () => { + const screen = render( subject ); + fireEvent.press( screen.getByText( 'Link to' ) ); + // Await back button to allow async state updates to complete + const backButton = await waitFor( () => + screen.getByA11yLabel( 'Apply' ) + ); + Keyboard.dismiss.mockClear(); + fireEvent.press( backButton ); + + expect( Keyboard.dismiss ).toHaveBeenCalledTimes( 1 ); + } ); +} ); + +describe( 'iOS', () => { + const originalPlatform = Platform.OS; + beforeAll( () => { + Platform.OS = 'ios'; + } ); + + afterAll( () => { + Platform.OS = originalPlatform; + } ); + + it( 'improves back animation performance by dismissing keyboard beforehand', async () => { + const screen = render( subject ); + fireEvent.press( screen.getByText( 'Link to' ) ); + // Await back button to allow async state updates to complete + const backButton = await waitFor( () => + screen.getByA11yLabel( 'Go back' ) + ); + Keyboard.dismiss.mockClear(); + fireEvent.press( backButton ); + + expect( Keyboard.dismiss ).toHaveBeenCalledTimes( 1 ); + } ); + + it( 'improves apply animation performance by dismissing keyboard beforehand', async () => { + const screen = render( subject ); + fireEvent.press( screen.getByText( 'Link to' ) ); + // Await back button to allow async state updates to complete + const backButton = await waitFor( () => + screen.getByA11yLabel( 'Apply' ) + ); + Keyboard.dismiss.mockClear(); + fireEvent.press( backButton ); + + expect( Keyboard.dismiss ).toHaveBeenCalledTimes( 1 ); + } ); +} ); diff --git a/packages/components/src/mobile/readable-content-view/index.native.js b/packages/components/src/mobile/readable-content-view/index.native.js index 35c7821f48d219..59cdd224c81ca4 100644 --- a/packages/components/src/mobile/readable-content-view/index.native.js +++ b/packages/components/src/mobile/readable-content-view/index.native.js @@ -26,10 +26,13 @@ const ReadableContentView = ( { align, reversed, children, style } ) => { } useEffect( () => { - Dimensions.addEventListener( 'change', onDimensionsChange ); + const dimensionsChangeSubscription = Dimensions.addEventListener( + 'change', + onDimensionsChange + ); return () => { - Dimensions.removeEventListener( 'change', onDimensionsChange ); + dimensionsChangeSubscription.remove(); }; }, [] ); diff --git a/packages/components/src/mobile/utils/use-is-floating-keyboard.native.js b/packages/components/src/mobile/utils/use-is-floating-keyboard.native.js index bf29382212653f..e348558f02de72 100644 --- a/packages/components/src/mobile/utils/use-is-floating-keyboard.native.js +++ b/packages/components/src/mobile/utils/use-is-floating-keyboard.native.js @@ -18,15 +18,12 @@ export default function useIsFloatingKeyboard() { setFloating( event.endCoordinates.width !== windowWidth ); }; - Keyboard.addListener( + const keyboardChangeSubscription = Keyboard.addListener( 'keyboardWillChangeFrame', onKeyboardWillChangeFrame ); return () => { - Keyboard.removeListener( - 'keyboardWillChangeFrame', - onKeyboardWillChangeFrame - ); + keyboardChangeSubscription.remove(); }; }, [ windowWidth ] ); diff --git a/packages/components/src/mobile/utils/use-unit-converter-to-mobile.native.js b/packages/components/src/mobile/utils/use-unit-converter-to-mobile.native.js index 457ab7ae87b0ce..9e08b88f4f1c49 100644 --- a/packages/components/src/mobile/utils/use-unit-converter-to-mobile.native.js +++ b/packages/components/src/mobile/utils/use-unit-converter-to-mobile.native.js @@ -70,10 +70,13 @@ const useConvertUnitToMobile = ( value, unit ) => { ); useEffect( () => { - Dimensions.addEventListener( 'change', onDimensionsChange ); + const dimensionsChangeSubscription = Dimensions.addEventListener( + 'change', + onDimensionsChange + ); return () => { - Dimensions.removeEventListener( 'change', onDimensionsChange ); + dimensionsChangeSubscription.remove(); }; }, [] ); diff --git a/packages/components/src/notice/index.native.js b/packages/components/src/notice/index.native.js index a86881e17eb2c6..9b5b8faa0214fe 100644 --- a/packages/components/src/notice/index.native.js +++ b/packages/components/src/notice/index.native.js @@ -36,9 +36,12 @@ const Notice = ( { onNoticeHidden, content, id, status } ) => { }; useEffect( () => { - Dimensions.addEventListener( 'change', onDimensionsChange ); + const dimensionsChangeSubscription = Dimensions.addEventListener( + 'change', + onDimensionsChange + ); return () => { - Dimensions.removeEventListener( 'change', onDimensionsChange ); + dimensionsChangeSubscription.remove(); }; }, [] ); diff --git a/packages/components/src/sandbox/index.native.js b/packages/components/src/sandbox/index.native.js index 45dec40fe37388..d108d6e8a53ac6 100644 --- a/packages/components/src/sandbox/index.native.js +++ b/packages/components/src/sandbox/index.native.js @@ -32,8 +32,8 @@ const observeAndResizeJS = ` function sendResize() { var clientBoundingRect = document.body.getBoundingClientRect(); - // The function postMessage is exposed by the react-native-webview library - // to communicate between React Native and the WebView, in this case, + // The function postMessage is exposed by the react-native-webview library + // to communicate between React Native and the WebView, in this case, // we use it for notifying resize changes. window.ReactNativeWebView.postMessage(JSON.stringify( { action: 'resize', @@ -109,7 +109,7 @@ const style = ` /** * Add responsiveness to embeds with aspect ratios. - * + * * These styles have been copied from the web version (https://git.io/JEFcX) and * adapted for the native version. */ @@ -270,9 +270,12 @@ function Sandbox( { } useEffect( () => { - Dimensions.addEventListener( 'change', onChangeDimensions ); + const dimensionsChangeSubscription = Dimensions.addEventListener( + 'change', + onChangeDimensions + ); return () => { - Dimensions.removeEventListener( 'change', onChangeDimensions ); + dimensionsChangeSubscription.remove(); }; }, [] ); diff --git a/packages/edit-post/src/components/header/index.native.js b/packages/edit-post/src/components/header/index.native.js index 787c35b527a2ab..aada04e264490a 100644 --- a/packages/edit-post/src/components/header/index.native.js +++ b/packages/edit-post/src/components/header/index.native.js @@ -27,13 +27,19 @@ export default class Header extends Component { } componentDidMount() { - Keyboard.addListener( 'keyboardDidShow', this.keyboardDidShow ); - Keyboard.addListener( 'keyboardDidHide', this.keyboardDidHide ); + this.keyboardShowSubscription = Keyboard.addListener( + 'keyboardDidShow', + this.keyboardDidShow + ); + this.keyboardHideSubscription = Keyboard.addListener( + 'keyboardDidHide', + this.keyboardDidHide + ); } componentWillUnmount() { - Keyboard.removeListener( 'keyboardDidShow', this.keyboardDidShow ); - Keyboard.removeListener( 'keyboardDidHide', this.keyboardDidHide ); + this.keyboardShowSubscription.remove(); + this.keyboardHideSubscription.remove(); } keyboardDidShow() { diff --git a/packages/edit-post/src/components/layout/index.native.js b/packages/edit-post/src/components/layout/index.native.js index 0ae13d2b46a877..c13ff4f116fa8d 100644 --- a/packages/edit-post/src/components/layout/index.native.js +++ b/packages/edit-post/src/components/layout/index.native.js @@ -53,17 +53,14 @@ class Layout extends Component { componentDidMount() { this._isMounted = true; - SafeArea.addEventListener( + this.safeAreaSubscription = SafeArea.addEventListener( 'safeAreaInsetsForRootViewDidChange', this.onSafeAreaInsetsUpdate ); } componentWillUnmount() { - SafeArea.removeEventListener( - 'safeAreaInsetsForRootViewDidChange', - this.onSafeAreaInsetsUpdate - ); + this.safeAreaSubscription?.remove(); this._isMounted = false; } diff --git a/packages/editor/src/components/provider/index.native.js b/packages/editor/src/components/provider/index.native.js index ace8b1f01da136..44c5dc322d4a94 100644 --- a/packages/editor/src/components/provider/index.native.js +++ b/packages/editor/src/components/provider/index.native.js @@ -56,7 +56,10 @@ const postTypeEntities = [ }, rawAttributes: [ 'title', 'excerpt', 'content' ], } ) ); -import { EditorHelpTopics } from '@wordpress/editor'; +import { EditorHelpTopics, store as editorStore } from '@wordpress/editor'; +import { store as noticesStore } from '@wordpress/notices'; +import { store as coreStore } from '@wordpress/core-data'; +import { store as editPostStore } from '@wordpress/edit-post'; /** * Internal dependencies @@ -350,8 +353,8 @@ export default compose( [ getEditorBlocks, getEditedPostAttribute, getEditedPostContent, - } = select( 'core/editor' ); - const { getEditorMode } = select( 'core/edit-post' ); + } = select( editorStore ); + const { getEditorMode } = select( editPostStore ); const { getBlockIndex, @@ -374,16 +377,16 @@ export default compose( [ }; } ), withDispatch( ( dispatch ) => { - const { editPost, resetEditorBlocks } = dispatch( 'core/editor' ); + const { editPost, resetEditorBlocks } = dispatch( editorStore ); const { updateSettings, clearSelectedBlock, insertBlock, replaceBlock, } = dispatch( blockEditorStore ); - const { switchEditorMode } = dispatch( 'core/edit-post' ); - const { addEntities, receiveEntityRecords } = dispatch( 'core' ); - const { createSuccessNotice } = dispatch( 'core/notices' ); + const { switchEditorMode } = dispatch( editPostStore ); + const { addEntities, receiveEntityRecords } = dispatch( coreStore ); + const { createSuccessNotice } = dispatch( noticesStore ); return { updateSettings, diff --git a/packages/element/package.json b/packages/element/package.json index 47cb7a19b2d882..fd7154cff1c1fd 100644 --- a/packages/element/package.json +++ b/packages/element/package.json @@ -33,8 +33,8 @@ "@types/react-dom": "^17.0.11", "@wordpress/escape-html": "file:../escape-html", "lodash": "^4.17.21", - "react": "^17.0.1", - "react-dom": "^17.0.1" + "react": "^17.0.2", + "react-dom": "^17.0.2" }, "publishConfig": { "access": "public" diff --git a/packages/format-library/src/link/index.native.js b/packages/format-library/src/link/index.native.js index e79ed696aea37d..c146f2d18f077f 100644 --- a/packages/format-library/src/link/index.native.js +++ b/packages/format-library/src/link/index.native.js @@ -2,7 +2,7 @@ * External dependencies */ import { find } from 'lodash'; -import { Clipboard } from 'react-native'; +import Clipboard from '@react-native-clipboard/clipboard'; /** * WordPress dependencies diff --git a/packages/format-library/src/link/modal-screens/link-picker-screen.native.js b/packages/format-library/src/link/modal-screens/link-picker-screen.native.js index 21fc37563fbc60..a46eeaa400610b 100644 --- a/packages/format-library/src/link/modal-screens/link-picker-screen.native.js +++ b/packages/format-library/src/link/modal-screens/link-picker-screen.native.js @@ -1,7 +1,7 @@ /** * External dependencies */ -import { Platform, Keyboard } from 'react-native'; +import { Keyboard } from 'react-native'; import { useNavigation, useRoute } from '@react-navigation/native'; import { delay } from 'lodash'; /** @@ -20,31 +20,20 @@ const LinkPickerScreen = () => { const navigation = useNavigation(); const route = useRoute(); const onLinkPicked = ( { url, title } ) => { - if ( Platform.OS === 'android' ) { - Keyboard.dismiss(); - delay( () => { - navigation.navigate( linkSettingsScreens.settings, { - inputValue: url, - text: title, - } ); - }, 100 ); - return; - } - navigation.navigate( linkSettingsScreens.settings, { - inputValue: url, - text: title, - } ); + Keyboard.dismiss(); + delay( () => { + navigation.navigate( linkSettingsScreens.settings, { + inputValue: url, + text: title, + } ); + }, 100 ); }; const onCancel = () => { - if ( Platform.OS === 'android' ) { - Keyboard.dismiss(); - delay( () => { - navigation.goBack(); - }, 100 ); - return; - } - navigation.goBack(); + Keyboard.dismiss(); + delay( () => { + navigation.goBack(); + }, 100 ); }; const { inputValue } = route.params; diff --git a/packages/format-library/src/link/modal-screens/link-settings-screen.native.js b/packages/format-library/src/link/modal-screens/link-settings-screen.native.js index 91590d3862b225..98a60ad9bcfb03 100644 --- a/packages/format-library/src/link/modal-screens/link-settings-screen.native.js +++ b/packages/format-library/src/link/modal-screens/link-settings-screen.native.js @@ -2,13 +2,13 @@ * External dependencies */ import { useNavigation, useRoute } from '@react-navigation/native'; + /** * WordPress dependencies */ import { __ } from '@wordpress/i18n'; import { useState, useContext, useEffect, useMemo } from '@wordpress/element'; import { prependHTTP } from '@wordpress/url'; - import { BottomSheet, BottomSheetContext } from '@wordpress/components'; import { create, @@ -62,16 +62,19 @@ const LinkSettingsScreen = ( { }; useEffect( () => { onHandleClosingBottomSheet( () => { - submit( inputValue ); + submit( inputValue, { skipStateUpdates: true } ); } ); }, [ inputValue, opensInNewWindow, text ] ); useEffect( () => { const { isActiveLink, isRemovingLink } = linkValues; if ( !! inputValue && ! isActiveLink && isVisible ) { - submitLink( false ); - } else if ( ( inputValue === '' && isActiveLink ) || isRemovingLink ) { - removeLink( false ); + submitLink( { shouldCloseBottomSheet: false } ); + } else if ( + ( ( inputValue === '' && isActiveLink ) || isRemovingLink ) && + isVisible + ) { + removeLink( { shouldCloseBottomSheet: false } ); } }, [ inputValue, @@ -80,12 +83,17 @@ const LinkSettingsScreen = ( { linkValues.isRemovingLink, ] ); - const clearFormat = () => { + const clearFormat = ( { skipStateUpdates = false } = {} ) => { onChange( { ...value, activeFormats: [] } ); - setLinkValues( { isActiveLink: false, isRemovingLink: true } ); + if ( ! skipStateUpdates ) { + setLinkValues( { isActiveLink: false, isRemovingLink: true } ); + } }; - const submitLink = ( shouldCloseBottomSheet = true ) => { + const submitLink = ( { + shouldCloseBottomSheet = true, + skipStateUpdates = false, + } = {} ) => { const url = prependHTTP( inputValue ); const linkText = text || inputValue; const format = createLinkFormat( { @@ -127,7 +135,9 @@ const LinkSettingsScreen = ( { } newAttributes.activeFormats = []; onChange( { ...newAttributes, needsSelectionUpdate: true } ); - setLinkValues( { isActiveLink: true, isRemovingLink: false } ); + if ( ! skipStateUpdates ) { + setLinkValues( { isActiveLink: true, isRemovingLink: false } ); + } if ( ! isValidHref( url ) ) { speak( @@ -147,19 +157,22 @@ const LinkSettingsScreen = ( { } }; - const removeLink = ( shouldCloseBottomSheet = true ) => { - clearFormat(); + const removeLink = ( { + shouldCloseBottomSheet = true, + skipStateUpdates = false, + } = {} ) => { + clearFormat( { skipStateUpdates } ); onRemove(); if ( shouldCloseBottomSheet ) { onClose(); } }; - const submit = ( submitValue ) => { + const submit = ( submitValue, { skipStateUpdates = false } = {} ) => { if ( submitValue === '' ) { - removeLink(); + removeLink( { skipStateUpdates } ); } else { - submitLink(); + submitLink( { skipStateUpdates } ); } }; diff --git a/packages/format-library/src/link/test/index.native.js b/packages/format-library/src/link/test/index.native.js new file mode 100644 index 00000000000000..58b270e14d75d1 --- /dev/null +++ b/packages/format-library/src/link/test/index.native.js @@ -0,0 +1,139 @@ +/** + * External dependencies + */ +import { Keyboard, Platform } from 'react-native'; +import { render, fireEvent, waitFor } from 'test/helpers'; + +/** + * WordPress dependencies + */ +import { Slot, SlotFillProvider } from '@wordpress/components'; + +/** + * Internal dependencies + */ +import { link } from '../index'; + +const { edit: LinkEdit } = link; + +// Simplified tree to render link format component +const LinkEditSlot = ( props ) => ( + + + + +); + +beforeAll( () => { + jest.useFakeTimers(); + jest.spyOn( Keyboard, 'dismiss' ); +} ); + +describe( 'Android', () => { + it( 'improves back animation performance by dismissing keyboard beforehand', async () => { + const screen = render( + {} } + value={ { + text: '', + formats: [], + replacements: [], + } } + /> + ); + fireEvent.press( screen.getByA11yLabel( 'Link' ) ); + fireEvent.press( + screen.getByA11yLabel( 'Link to, Search or type URL' ) + ); + // Await back button to allow async state updates to complete + const backButton = await waitFor( () => + screen.getByA11yLabel( 'Go back' ) + ); + Keyboard.dismiss.mockClear(); + fireEvent.press( backButton ); + + expect( Keyboard.dismiss ).toHaveBeenCalledTimes( 1 ); + } ); + + it( 'improves apply animation performance by dismissing keyboard beforehand', async () => { + const { getByA11yLabel } = render( + {} } + value={ { + text: '', + formats: [], + replacements: [], + } } + /> + ); + fireEvent.press( getByA11yLabel( 'Link' ) ); + fireEvent.press( getByA11yLabel( 'Link to, Search or type URL' ) ); + // Await back button to allow async state updates to complete + const backButton = await waitFor( () => getByA11yLabel( 'Apply' ) ); + Keyboard.dismiss.mockClear(); + fireEvent.press( backButton ); + + expect( Keyboard.dismiss ).toHaveBeenCalledTimes( 1 ); + } ); +} ); + +describe( 'iOS', () => { + const originalPlatform = Platform.OS; + beforeAll( () => { + Platform.OS = 'ios'; + } ); + + afterAll( () => { + Platform.OS = originalPlatform; + } ); + + it( 'improves back animation performance by dismissing keyboard beforehand', async () => { + const screen = render( + {} } + value={ { + text: '', + formats: [], + replacements: [], + } } + /> + ); + fireEvent.press( screen.getByA11yLabel( 'Link' ) ); + fireEvent.press( + screen.getByA11yLabel( 'Link to, Search or type URL' ) + ); + // Await back button to allow async state updates to complete + const backButton = await waitFor( () => + screen.getByA11yLabel( 'Go back' ) + ); + Keyboard.dismiss.mockClear(); + fireEvent.press( backButton ); + + expect( Keyboard.dismiss ).toHaveBeenCalledTimes( 1 ); + } ); + + it( 'improves apply animation performance by dismissing keyboard beforehand', async () => { + const { getByA11yLabel } = render( + {} } + value={ { + text: '', + formats: [], + replacements: [], + } } + /> + ); + fireEvent.press( getByA11yLabel( 'Link' ) ); + fireEvent.press( getByA11yLabel( 'Link to, Search or type URL' ) ); + // Await back button to allow async state updates to complete + const backButton = await waitFor( () => getByA11yLabel( 'Apply' ) ); + Keyboard.dismiss.mockClear(); + fireEvent.press( backButton ); + + expect( Keyboard.dismiss ).toHaveBeenCalledTimes( 1 ); + } ); +} ); diff --git a/packages/react-native-aztec/package.json b/packages/react-native-aztec/package.json index cf26a89eb0a894..8dca9b07b2da4a 100644 --- a/packages/react-native-aztec/package.json +++ b/packages/react-native-aztec/package.json @@ -30,8 +30,8 @@ "access": "public" }, "scripts": { - "install-aztec-ios": "cd ./ios && carthage bootstrap --platform iOS --cache-builds", - "update-aztec-ios": "cd ./ios && carthage update --platform iOS --cache-builds", + "install-aztec-ios": "cd ./ios && carthage bootstrap --platform iOS --cache-builds --use-xcframeworks", + "update-aztec-ios": "cd ./ios && carthage update --platform iOS --cache-builds --use-xcframeworks", "clean": "npm run clean-watchman; npm run clean-node; npm run clean-react; npm run clean-metro; npm run clean-jest;", "clean-jest": "rm -rf $TMPDIR/jest_*;", "clean-metro": "rm -rf $TMPDIR/metro-cache-*; rm -rf $TMPDIR/metro-bundler-cache-*;", diff --git a/packages/react-native-bridge/android/react-native-bridge/build.gradle b/packages/react-native-bridge/android/react-native-bridge/build.gradle index b940a8347c5ff6..5d3b6f804a3396 100644 --- a/packages/react-native-bridge/android/react-native-bridge/build.gradle +++ b/packages/react-native-bridge/android/react-native-bridge/build.gradle @@ -96,7 +96,8 @@ dependencies { implementation "com.github.wordpress-mobile:react-native-reanimated:${extractPackageVersion('../../../react-native-editor/package.json', 'react-native-reanimated', 'dependencies')}" implementation "com.github.wordpress-mobile:react-native-prompt-android:${extractPackageVersion('../../../react-native-editor/package.json', 'react-native-prompt-android', 'dependencies')}" implementation "com.github.wordpress-mobile:react-native-webview:${extractPackageVersion('../../../react-native-editor/package.json', 'react-native-webview', 'dependencies')}" - runtimeOnly "org.wordpress-mobile:hermes-release-mirror:0.64.0" + implementation "com.github.wordpress-mobile:react-native-clipboard:${extractPackageVersion('../../../react-native-editor/package.json', '@react-native-clipboard/clipboard', 'dependencies')}" + runtimeOnly "org.wordpress-mobile:hermes-release-mirror:0.66.2" } else { api 'com.facebook.react:react-native:+' api project(':@wordpress_react-native-aztec') @@ -112,8 +113,9 @@ dependencies { api project(':react-native-reanimated') api project(':react-native-prompt-android') api project(':react-native-webview') - debugRuntimeOnly "org.wordpress-mobile:hermes-debug-mirror:0.64.0" - releaseRuntimeOnly "org.wordpress-mobile:hermes-release-mirror:0.64.0" + api project(':@react-native-clipboard_clipboard') + debugRuntimeOnly "org.wordpress-mobile:hermes-debug-mirror:0.66.2" + releaseRuntimeOnly "org.wordpress-mobile:hermes-release-mirror:0.66.2" } } diff --git a/packages/react-native-bridge/android/react-native-bridge/src/main/java/org/wordpress/mobile/ReactNativeGutenbergBridge/RNReactNativeGutenbergBridgeModule.java b/packages/react-native-bridge/android/react-native-bridge/src/main/java/org/wordpress/mobile/ReactNativeGutenbergBridge/RNReactNativeGutenbergBridgeModule.java index 860a68419dcb3a..5f4bea5a6c6d6a 100644 --- a/packages/react-native-bridge/android/react-native-bridge/src/main/java/org/wordpress/mobile/ReactNativeGutenbergBridge/RNReactNativeGutenbergBridgeModule.java +++ b/packages/react-native-bridge/android/react-native-bridge/src/main/java/org/wordpress/mobile/ReactNativeGutenbergBridge/RNReactNativeGutenbergBridgeModule.java @@ -180,6 +180,16 @@ public void showEditorHelp() { emitToJS(EVENT_NAME_SHOW_EDITOR_HELP, null); } + @ReactMethod + public void addListener(String eventName) { + // Keep: Required for RN built in Event Emitter Calls. + } + + @ReactMethod + public void removeListeners(Integer count) { + // Keep: Required for RN built in Event Emitter Calls. + } + @ReactMethod public void provideToNative_Html(String html, String title, boolean changed, ReadableMap contentInfo) { mGutenbergBridgeJS2Parent.responseHtml(title, html, changed, contentInfo); diff --git a/packages/react-native-bridge/android/react-native-bridge/src/main/java/org/wordpress/mobile/WPAndroidGlue/WPAndroidGlueCode.java b/packages/react-native-bridge/android/react-native-bridge/src/main/java/org/wordpress/mobile/WPAndroidGlue/WPAndroidGlueCode.java index b00d92db2bd8c2..fa418e9091a2e2 100644 --- a/packages/react-native-bridge/android/react-native-bridge/src/main/java/org/wordpress/mobile/WPAndroidGlue/WPAndroidGlueCode.java +++ b/packages/react-native-bridge/android/react-native-bridge/src/main/java/org/wordpress/mobile/WPAndroidGlue/WPAndroidGlueCode.java @@ -39,6 +39,7 @@ import com.facebook.soloader.SoLoader; import com.horcrux.svg.SvgPackage; import com.BV.LinearGradient.LinearGradientPackage; +import com.reactnativecommunity.clipboard.ClipboardPackage; import com.reactnativecommunity.slider.ReactSliderPackage; import org.linusu.RNGetRandomValuesPackage; import com.reactnativecommunity.webview.RNCWebViewPackage; @@ -572,6 +573,7 @@ public void sendEventToHost(String eventName, ReadableMap properties) { new ReanimatedPackage(), new RNPromptPackage(), new RNCWebViewPackage(), + new ClipboardPackage(), mRnReactNativeGutenbergBridgePackage); } diff --git a/packages/react-native-bridge/android/settings.gradle b/packages/react-native-bridge/android/settings.gradle index e9bc99dfa08a1a..0502d4779dbe58 100644 --- a/packages/react-native-bridge/android/settings.gradle +++ b/packages/react-native-bridge/android/settings.gradle @@ -56,4 +56,6 @@ if (hasProperty("willPublishReactNativeBridgeBinary")) { project(':react-native-prompt-android').projectDir = new File(rootProject.projectDir, '../../../node_modules/react-native-prompt-android/android') include ':react-native-webview' project(':react-native-webview').projectDir = new File(rootProject.projectDir, '../../../node_modules/react-native-webview/android') + include ':@react-native-clipboard_clipboard' + project(':@react-native-clipboard_clipboard').projectDir = new File(rootProject.projectDir, '../../../node_modules/@react-native-clipboard/clipboard/android') } diff --git a/packages/react-native-editor/.gitignore b/packages/react-native-editor/.gitignore index 5ec8884e0d751d..ff41241cdc867d 100644 --- a/packages/react-native-editor/.gitignore +++ b/packages/react-native-editor/.gitignore @@ -69,6 +69,7 @@ build/ .gradle local.properties *.iml +*.hprof # node.js # diff --git a/packages/react-native-editor/android/app/build.gradle b/packages/react-native-editor/android/app/build.gradle index 33374ba6837292..37251a52b5b793 100644 --- a/packages/react-native-editor/android/app/build.gradle +++ b/packages/react-native-editor/android/app/build.gradle @@ -79,6 +79,7 @@ import com.android.build.OutputFile project.ext.react = [ enableHermes: true, // clean and rebuild if changing + cliPath: "../../../../node_modules/.bin/react-native", ] apply from: "../../../../node_modules/react-native/react.gradle" @@ -107,7 +108,13 @@ def enableProguardInReleaseBuilds = false */ def enableHermes = project.ext.react.get("enableHermes", false); +/** + * Architectures to build native code for in debug. + */ +def nativeArchitectures = project.getProperties().get("reactNativeDebugArchitectures") + android { + ndkVersion rootProject.ext.ndkVersion compileSdkVersion rootProject.ext.compileSdkVersion @@ -146,11 +153,12 @@ android { variant.outputs.each { output -> // For each separate APK per architecture, set a unique version code as described here: // https://developer.android.com/studio/build/configure-apk-splits.html + // Example: versionCode 1 will generate 1001 for armeabi-v7a, 1002 for x86, etc. def versionCodes = ["armeabi-v7a": 1, "x86": 2, "arm64-v8a": 3, "x86_64": 4] def abi = output.getFilter(OutputFile.ABI) if (abi != null) { // null for the universal-debug, universal-release variants output.versionCodeOverride = - versionCodes.get(abi) * 1048576 + defaultConfig.versionCode + defaultConfig.versionCode * 1000 + versionCodes.get(abi) } } } @@ -174,13 +182,15 @@ dependencies { exclude group: 'com.android.support' }) implementation 'androidx.appcompat:appcompat:1.2.0' + //noinspection GradleDynamicVersion implementation "com.facebook.react:react-native:+" // From node_modules + implementation "androidx.swiperefreshlayout:swiperefreshlayout:1.0.0" } // Run this once to be able to run the application with BUCK // puts all compile dependencies into folder libs for BUCK to use task copyDownloadableDepsToLibs(type: Copy) { - from configurations.compile + from configurations.implementation into 'libs' } diff --git a/packages/react-native-editor/android/app/src/debug/AndroidManifest.xml b/packages/react-native-editor/android/app/src/debug/AndroidManifest.xml index 1fce564881ff37..179354e4c747ae 100644 --- a/packages/react-native-editor/android/app/src/debug/AndroidManifest.xml +++ b/packages/react-native-editor/android/app/src/debug/AndroidManifest.xml @@ -1,5 +1,10 @@ - + + + \ No newline at end of file diff --git a/packages/react-native-editor/android/app/src/main/AndroidManifest.xml b/packages/react-native-editor/android/app/src/main/AndroidManifest.xml index a17ac1a08abfa8..59178922a493f3 100644 --- a/packages/react-native-editor/android/app/src/main/AndroidManifest.xml +++ b/packages/react-native-editor/android/app/src/main/AndroidManifest.xml @@ -15,14 +15,13 @@ - - diff --git a/packages/react-native-editor/android/app/src/main/java/com/gutenberg/MainApplication.java b/packages/react-native-editor/android/app/src/main/java/com/gutenberg/MainApplication.java index f6a3b7f0fe2b60..c6c1c6e749b0cd 100644 --- a/packages/react-native-editor/android/app/src/main/java/com/gutenberg/MainApplication.java +++ b/packages/react-native-editor/android/app/src/main/java/com/gutenberg/MainApplication.java @@ -14,6 +14,7 @@ import com.facebook.react.bridge.Arguments; import com.facebook.react.bridge.ReadableMap; import com.facebook.react.bridge.WritableMap; +import com.reactnativecommunity.clipboard.ClipboardPackage; import com.reactnativecommunity.slider.ReactSliderPackage; import com.brentvatne.react.ReactVideoPackage; import com.facebook.react.bridge.ReadableArray; @@ -299,6 +300,7 @@ protected List getPackages() { new RNScreensPackage(), new RNPromptPackage(), new RNCWebViewPackage(), + new ClipboardPackage(), mRnReactNativeGutenbergBridgePackage); } diff --git a/packages/react-native-editor/android/build.gradle b/packages/react-native-editor/android/build.gradle index dc92e7a54d7634..8116b05d567ad5 100644 --- a/packages/react-native-editor/android/build.gradle +++ b/packages/react-native-editor/android/build.gradle @@ -2,17 +2,17 @@ buildscript { ext { gradlePluginVersion = '4.2.2' kotlinVersion = '1.5.20' - buildToolsVersion = "29.0.3" + buildToolsVersion = "30.0.2" minSdkVersion = 21 - compileSdkVersion = 29 - targetSdkVersion = 29 + compileSdkVersion = 30 + targetSdkVersion = 30 supportLibVersion = '28.0.0' wordpressUtilsVersion = '1.22' - ndkVersion = "20.1.5948944" + ndkVersion = "21.4.7075529" } repositories { google() - jcenter() + mavenCentral() } dependencies { classpath "com.android.tools.build:gradle:$gradlePluginVersion" @@ -22,6 +22,7 @@ buildscript { allprojects { repositories { + mavenCentral() mavenLocal() maven { // All of React Native (JS, Obj-C sources, Android binaries) is installed from npm @@ -36,8 +37,7 @@ allprojects { } } maven { url "https://a8c-libs.s3.amazonaws.com/android/hermes-mirror" } - maven { url 'https://jitpack.io' } + maven { url 'https://www.jitpack.io' } google() - jcenter() } } diff --git a/packages/react-native-editor/android/gradle.properties b/packages/react-native-editor/android/gradle.properties index 440302680cdea1..55c4a78617574b 100644 --- a/packages/react-native-editor/android/gradle.properties +++ b/packages/react-native-editor/android/gradle.properties @@ -24,4 +24,4 @@ android.useAndroidX=true # Automatically convert third-party libraries to use AndroidX android.enableJetifier=true android.useDeprecatedNdk=true -FLIPPER_VERSION=0.54.0 \ No newline at end of file +FLIPPER_VERSION=0.99.0 \ No newline at end of file diff --git a/packages/react-native-editor/ios/Gemfile b/packages/react-native-editor/ios/Gemfile index a9f19edcd13d55..9536eabf7d5262 100644 --- a/packages/react-native-editor/ios/Gemfile +++ b/packages/react-native-editor/ios/Gemfile @@ -1,3 +1,3 @@ -source 'https://rubygems.org' do - gem 'cocoapods', '~> 1.10.0' -end +source 'https://rubygems.org' + +gem 'cocoapods', '~> 1.10.0' diff --git a/packages/react-native-editor/ios/Gemfile.lock b/packages/react-native-editor/ios/Gemfile.lock index 4bc064a3c23134..7aed3547974b1b 100644 --- a/packages/react-native-editor/ios/Gemfile.lock +++ b/packages/react-native-editor/ios/Gemfile.lock @@ -1,6 +1,3 @@ -GEM - specs: - GEM remote: https://rubygems.org/ specs: @@ -90,7 +87,7 @@ PLATFORMS ruby DEPENDENCIES - cocoapods (~> 1.10.0)! + cocoapods (~> 1.10.0) BUNDLED WITH - 2.2.15 + 2.2.27 diff --git a/packages/react-native-editor/ios/GutenbergDemo.xcodeproj/project.pbxproj b/packages/react-native-editor/ios/GutenbergDemo.xcodeproj/project.pbxproj index c04522f8808aa2..65506b8af1e287 100644 --- a/packages/react-native-editor/ios/GutenbergDemo.xcodeproj/project.pbxproj +++ b/packages/react-native-editor/ios/GutenbergDemo.xcodeproj/project.pbxproj @@ -8,13 +8,13 @@ /* Begin PBXBuildFile section */ 00E356F31AD99517003FC87E /* gutenbergTests.m in Sources */ = {isa = PBXBuildFile; fileRef = 00E356F21AD99517003FC87E /* gutenbergTests.m */; }; - 13B07FBD1A68108700A75B9A /* LaunchScreen.xib in Resources */ = {isa = PBXBuildFile; fileRef = 13B07FB11A68108700A75B9A /* LaunchScreen.xib */; }; 13B07FBF1A68108700A75B9A /* Images.xcassets in Resources */ = {isa = PBXBuildFile; fileRef = 13B07FB51A68108700A75B9A /* Images.xcassets */; }; 1E4F2E752459E6F200EB73E7 /* WebViewController.swift in Sources */ = {isa = PBXBuildFile; fileRef = 1E85944D2449D85A006CC6A0 /* WebViewController.swift */; }; 1EFFAB71253EF6580062051E /* DocumentsMediaSource.swift in Sources */ = {isa = PBXBuildFile; fileRef = 1EFFAB70253EF6580062051E /* DocumentsMediaSource.swift */; }; + 2F634FA02731D5ED00310CC3 /* LaunchScreen.storyboard in Resources */ = {isa = PBXBuildFile; fileRef = 2F634F9F2731D5ED00310CC3 /* LaunchScreen.storyboard */; }; 6EBC6CA237E4D4B00D5AC79F /* Pods_GutenbergDemo.framework in Frameworks */ = {isa = PBXBuildFile; fileRef = AB79EC55FB340834C8D3BAB6 /* Pods_GutenbergDemo.framework */; }; 7EC7328F21907E3F00FED2E6 /* GutenbergViewController.swift in Sources */ = {isa = PBXBuildFile; fileRef = 7EC7328E21907E3F00FED2E6 /* GutenbergViewController.swift */; }; - 950B7A8B00E7FAB67173E517 /* Pods_GutenbergDemoTests.framework in Frameworks */ = {isa = PBXBuildFile; fileRef = D550F9EC8C63C5F836281628 /* Pods_GutenbergDemoTests.framework */; }; + E8649334C74E9AB9AF90B020 /* Pods_GutenbergDemo_GutenbergDemoTests.framework in Frameworks */ = {isa = PBXBuildFile; fileRef = 6C4D4EB8326260FEFE8844CC /* Pods_GutenbergDemo_GutenbergDemoTests.framework */; }; F151983C2100DC3D000F6E97 /* AppDelegate.swift in Sources */ = {isa = PBXBuildFile; fileRef = F15198392100DC3D000F6E97 /* AppDelegate.swift */; }; F151983D2100DC3D000F6E97 /* MediaProvider.swift in Sources */ = {isa = PBXBuildFile; fileRef = F151983A2100DC3D000F6E97 /* MediaProvider.swift */; }; F1EE6F7821E7F0A500241744 /* NotoSerif-BoldItalic.ttf in Resources */ = {isa = PBXBuildFile; fileRef = F1EE6F7421E7F0A500241744 /* NotoSerif-BoldItalic.ttf */; }; @@ -43,12 +43,14 @@ 00E356F11AD99517003FC87E /* Info.plist */ = {isa = PBXFileReference; lastKnownFileType = text.plist.xml; path = Info.plist; sourceTree = ""; }; 00E356F21AD99517003FC87E /* gutenbergTests.m */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.objc; path = gutenbergTests.m; sourceTree = ""; }; 13B07F961A680F5B00A75B9A /* GutenbergDemo.app */ = {isa = PBXFileReference; explicitFileType = wrapper.application; includeInIndex = 0; path = GutenbergDemo.app; sourceTree = BUILT_PRODUCTS_DIR; }; - 13B07FB21A68108700A75B9A /* Base */ = {isa = PBXFileReference; lastKnownFileType = file.xib; name = Base; path = Base.lproj/LaunchScreen.xib; sourceTree = ""; }; 13B07FB51A68108700A75B9A /* Images.xcassets */ = {isa = PBXFileReference; lastKnownFileType = folder.assetcatalog; name = Images.xcassets; path = GutenbergDemo/Images.xcassets; sourceTree = ""; }; 13B07FB61A68108700A75B9A /* Info.plist */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = text.plist.xml; name = Info.plist; path = GutenbergDemo/Info.plist; sourceTree = ""; }; 1E85944D2449D85A006CC6A0 /* WebViewController.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; name = WebViewController.swift; path = GutenbergDemo/WebViewController.swift; sourceTree = ""; }; 1EFFAB70253EF6580062051E /* DocumentsMediaSource.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = DocumentsMediaSource.swift; sourceTree = ""; }; + 2F634F9F2731D5ED00310CC3 /* LaunchScreen.storyboard */ = {isa = PBXFileReference; lastKnownFileType = file.storyboard; path = LaunchScreen.storyboard; sourceTree = ""; }; + 4EC14D7D4E04A462CB8AC230 /* Pods-GutenbergDemo-GutenbergDemoTests.release.xcconfig */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = text.xcconfig; name = "Pods-GutenbergDemo-GutenbergDemoTests.release.xcconfig"; path = "Target Support Files/Pods-GutenbergDemo-GutenbergDemoTests/Pods-GutenbergDemo-GutenbergDemoTests.release.xcconfig"; sourceTree = ""; }; 66F6B74F51BD6921D3AF25F6 /* Pods-GutenbergDemoTests.debug.xcconfig */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = text.xcconfig; name = "Pods-GutenbergDemoTests.debug.xcconfig"; path = "Target Support Files/Pods-GutenbergDemoTests/Pods-GutenbergDemoTests.debug.xcconfig"; sourceTree = ""; }; + 6C4D4EB8326260FEFE8844CC /* Pods_GutenbergDemo_GutenbergDemoTests.framework */ = {isa = PBXFileReference; explicitFileType = wrapper.framework; includeInIndex = 0; path = Pods_GutenbergDemo_GutenbergDemoTests.framework; sourceTree = BUILT_PRODUCTS_DIR; }; 71AC74DFA49CB3BF62D440DB /* Pods-GutenbergDemoTests.release.xcconfig */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = text.xcconfig; name = "Pods-GutenbergDemoTests.release.xcconfig"; path = "Target Support Files/Pods-GutenbergDemoTests/Pods-GutenbergDemoTests.release.xcconfig"; sourceTree = ""; }; 7EA30CF021AC8CDA0092F894 /* libxml2.tbd */ = {isa = PBXFileReference; lastKnownFileType = "sourcecode.text-based-dylib-definition"; name = libxml2.tbd; path = usr/lib/libxml2.tbd; sourceTree = SDKROOT; }; 7EC7328E21907E3F00FED2E6 /* GutenbergViewController.swift */ = {isa = PBXFileReference; indentWidth = 4; lastKnownFileType = sourcecode.swift; name = GutenbergViewController.swift; path = GutenbergDemo/GutenbergViewController.swift; sourceTree = ""; tabWidth = 1; }; @@ -56,7 +58,6 @@ 9193873C2260BA7800E4FBD6 /* CoreServices.framework */ = {isa = PBXFileReference; lastKnownFileType = wrapper.framework; name = CoreServices.framework; path = System/Library/Frameworks/CoreServices.framework; sourceTree = SDKROOT; }; AB79EC55FB340834C8D3BAB6 /* Pods_GutenbergDemo.framework */ = {isa = PBXFileReference; explicitFileType = wrapper.framework; includeInIndex = 0; path = Pods_GutenbergDemo.framework; sourceTree = BUILT_PRODUCTS_DIR; }; AC045626571B657FA384BB16 /* Pods-GutenbergDemo.release.xcconfig */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = text.xcconfig; name = "Pods-GutenbergDemo.release.xcconfig"; path = "Target Support Files/Pods-GutenbergDemo/Pods-GutenbergDemo.release.xcconfig"; sourceTree = ""; }; - D550F9EC8C63C5F836281628 /* Pods_GutenbergDemoTests.framework */ = {isa = PBXFileReference; explicitFileType = wrapper.framework; includeInIndex = 0; path = Pods_GutenbergDemoTests.framework; sourceTree = BUILT_PRODUCTS_DIR; }; F15198372100DC3C000F6E97 /* gutenberg-Bridging-Header.h */ = {isa = PBXFileReference; indentWidth = 4; lastKnownFileType = sourcecode.c.h; path = "gutenberg-Bridging-Header.h"; sourceTree = ""; tabWidth = 1; }; F15198392100DC3D000F6E97 /* AppDelegate.swift */ = {isa = PBXFileReference; fileEncoding = 4; indentWidth = 4; lastKnownFileType = sourcecode.swift; name = AppDelegate.swift; path = GutenbergDemo/AppDelegate.swift; sourceTree = ""; tabWidth = 1; }; F151983A2100DC3D000F6E97 /* MediaProvider.swift */ = {isa = PBXFileReference; fileEncoding = 4; indentWidth = 4; lastKnownFileType = sourcecode.swift; name = MediaProvider.swift; path = GutenbergDemo/MediaProvider.swift; sourceTree = ""; tabWidth = 1; usesTabs = 0; }; @@ -65,6 +66,7 @@ F1EE6F7621E7F0A500241744 /* NotoSerif-Italic.ttf */ = {isa = PBXFileReference; lastKnownFileType = file; path = "NotoSerif-Italic.ttf"; sourceTree = ""; }; F1EE6F7721E7F0A500241744 /* NotoSerif-Bold.ttf */ = {isa = PBXFileReference; lastKnownFileType = file; path = "NotoSerif-Bold.ttf"; sourceTree = ""; }; F2F167661C7FE694D2639A72 /* Pods-GutenbergDemo.debug.xcconfig */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = text.xcconfig; name = "Pods-GutenbergDemo.debug.xcconfig"; path = "Target Support Files/Pods-GutenbergDemo/Pods-GutenbergDemo.debug.xcconfig"; sourceTree = ""; }; + FC32E740B1F0D56A0F2971E7 /* Pods-GutenbergDemo-GutenbergDemoTests.debug.xcconfig */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = text.xcconfig; name = "Pods-GutenbergDemo-GutenbergDemoTests.debug.xcconfig"; path = "Target Support Files/Pods-GutenbergDemo-GutenbergDemoTests/Pods-GutenbergDemo-GutenbergDemoTests.debug.xcconfig"; sourceTree = ""; }; FF37F8D0223819FA00AFA3DB /* JavaScriptCore.framework */ = {isa = PBXFileReference; lastKnownFileType = wrapper.framework; name = JavaScriptCore.framework; path = System/Library/Frameworks/JavaScriptCore.framework; sourceTree = SDKROOT; }; FF6836C722035EAB00A0C562 /* MediaUploadCoordinator.swift */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.swift; name = MediaUploadCoordinator.swift; path = GutenbergDemo/MediaUploadCoordinator.swift; sourceTree = ""; }; FF83DAA82226905A00A34C93 /* CustomImageLoader.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = CustomImageLoader.swift; sourceTree = ""; }; @@ -76,7 +78,7 @@ isa = PBXFrameworksBuildPhase; buildActionMask = 2147483647; files = ( - 950B7A8B00E7FAB67173E517 /* Pods_GutenbergDemoTests.framework in Frameworks */, + E8649334C74E9AB9AF90B020 /* Pods_GutenbergDemo_GutenbergDemoTests.framework in Frameworks */, ); runOnlyForDeploymentPostprocessing = 0; }; @@ -123,8 +125,8 @@ F151983A2100DC3D000F6E97 /* MediaProvider.swift */, 13B07FB51A68108700A75B9A /* Images.xcassets */, 13B07FB61A68108700A75B9A /* Info.plist */, - 13B07FB11A68108700A75B9A /* LaunchScreen.xib */, FF83DAA82226905A00A34C93 /* CustomImageLoader.swift */, + 2F634F9F2731D5ED00310CC3 /* LaunchScreen.storyboard */, ); name = GutenbergDemo; sourceTree = ""; @@ -137,7 +139,7 @@ FF37F8D0223819FA00AFA3DB /* JavaScriptCore.framework */, 7EA30CF021AC8CDA0092F894 /* libxml2.tbd */, AB79EC55FB340834C8D3BAB6 /* Pods_GutenbergDemo.framework */, - D550F9EC8C63C5F836281628 /* Pods_GutenbergDemoTests.framework */, + 6C4D4EB8326260FEFE8844CC /* Pods_GutenbergDemo_GutenbergDemoTests.framework */, ); name = Frameworks; sourceTree = ""; @@ -173,6 +175,8 @@ AC045626571B657FA384BB16 /* Pods-GutenbergDemo.release.xcconfig */, 66F6B74F51BD6921D3AF25F6 /* Pods-GutenbergDemoTests.debug.xcconfig */, 71AC74DFA49CB3BF62D440DB /* Pods-GutenbergDemoTests.release.xcconfig */, + FC32E740B1F0D56A0F2971E7 /* Pods-GutenbergDemo-GutenbergDemoTests.debug.xcconfig */, + 4EC14D7D4E04A462CB8AC230 /* Pods-GutenbergDemo-GutenbergDemoTests.release.xcconfig */, ); path = Pods; sourceTree = ""; @@ -208,6 +212,7 @@ 00E356EA1AD99517003FC87E /* Sources */, 00E356EB1AD99517003FC87E /* Frameworks */, 00E356EC1AD99517003FC87E /* Resources */, + 71C0B5FDA891DD4D469D2DFB /* [CP] Embed Pods Frameworks */, ); buildRules = ( ); @@ -295,7 +300,7 @@ F1EE6F7B21E7F0A500241744 /* NotoSerif-Bold.ttf in Resources */, F1EE6F7921E7F0A500241744 /* NotoSerif-Regular.ttf in Resources */, F1EE6F7A21E7F0A500241744 /* NotoSerif-Italic.ttf in Resources */, - 13B07FBD1A68108700A75B9A /* LaunchScreen.xib in Resources */, + 2F634FA02731D5ED00310CC3 /* LaunchScreen.storyboard in Resources */, F1EE6F7821E7F0A500241744 /* NotoSerif-BoldItalic.ttf in Resources */, ); runOnlyForDeploymentPostprocessing = 0; @@ -330,6 +335,7 @@ "${BUILT_PRODUCTS_DIR}/Gutenberg/Gutenberg.framework", "${BUILT_PRODUCTS_DIR}/RCT-Folly/folly.framework", "${BUILT_PRODUCTS_DIR}/RCTTypeSafety/RCTTypeSafety.framework", + "${BUILT_PRODUCTS_DIR}/RNCClipboard/RNCClipboard.framework", "${BUILT_PRODUCTS_DIR}/RNCMaskedView/RNCMaskedView.framework", "${BUILT_PRODUCTS_DIR}/RNGestureHandler/RNGestureHandler.framework", "${BUILT_PRODUCTS_DIR}/RNReanimated/RNReanimated.framework", @@ -350,10 +356,12 @@ "${BUILT_PRODUCTS_DIR}/React-jsi/jsi.framework", "${BUILT_PRODUCTS_DIR}/React-jsiexecutor/jsireact.framework", "${BUILT_PRODUCTS_DIR}/React-jsinspector/jsinspector.framework", + "${BUILT_PRODUCTS_DIR}/React-logger/logger.framework", "${BUILT_PRODUCTS_DIR}/React-perflogger/reactperflogger.framework", "${BUILT_PRODUCTS_DIR}/ReactCommon/ReactCommon.framework", "${BUILT_PRODUCTS_DIR}/WordPress-Aztec-iOS/Aztec.framework", "${BUILT_PRODUCTS_DIR}/Yoga/yoga.framework", + "${BUILT_PRODUCTS_DIR}/fmt/fmt.framework", "${BUILT_PRODUCTS_DIR}/glog/glog.framework", "${BUILT_PRODUCTS_DIR}/react-native-blur/react_native_blur.framework", "${BUILT_PRODUCTS_DIR}/react-native-get-random-values/react_native_get_random_values.framework", @@ -371,6 +379,7 @@ "${TARGET_BUILD_DIR}/${FRAMEWORKS_FOLDER_PATH}/Gutenberg.framework", "${TARGET_BUILD_DIR}/${FRAMEWORKS_FOLDER_PATH}/folly.framework", "${TARGET_BUILD_DIR}/${FRAMEWORKS_FOLDER_PATH}/RCTTypeSafety.framework", + "${TARGET_BUILD_DIR}/${FRAMEWORKS_FOLDER_PATH}/RNCClipboard.framework", "${TARGET_BUILD_DIR}/${FRAMEWORKS_FOLDER_PATH}/RNCMaskedView.framework", "${TARGET_BUILD_DIR}/${FRAMEWORKS_FOLDER_PATH}/RNGestureHandler.framework", "${TARGET_BUILD_DIR}/${FRAMEWORKS_FOLDER_PATH}/RNReanimated.framework", @@ -391,10 +400,12 @@ "${TARGET_BUILD_DIR}/${FRAMEWORKS_FOLDER_PATH}/jsi.framework", "${TARGET_BUILD_DIR}/${FRAMEWORKS_FOLDER_PATH}/jsireact.framework", "${TARGET_BUILD_DIR}/${FRAMEWORKS_FOLDER_PATH}/jsinspector.framework", + "${TARGET_BUILD_DIR}/${FRAMEWORKS_FOLDER_PATH}/logger.framework", "${TARGET_BUILD_DIR}/${FRAMEWORKS_FOLDER_PATH}/reactperflogger.framework", "${TARGET_BUILD_DIR}/${FRAMEWORKS_FOLDER_PATH}/ReactCommon.framework", "${TARGET_BUILD_DIR}/${FRAMEWORKS_FOLDER_PATH}/Aztec.framework", "${TARGET_BUILD_DIR}/${FRAMEWORKS_FOLDER_PATH}/yoga.framework", + "${TARGET_BUILD_DIR}/${FRAMEWORKS_FOLDER_PATH}/fmt.framework", "${TARGET_BUILD_DIR}/${FRAMEWORKS_FOLDER_PATH}/glog.framework", "${TARGET_BUILD_DIR}/${FRAMEWORKS_FOLDER_PATH}/react_native_blur.framework", "${TARGET_BUILD_DIR}/${FRAMEWORKS_FOLDER_PATH}/react_native_get_random_values.framework", @@ -424,13 +435,111 @@ outputFileListPaths = ( ); outputPaths = ( - "$(DERIVED_FILE_DIR)/Pods-GutenbergDemoTests-checkManifestLockResult.txt", + "$(DERIVED_FILE_DIR)/Pods-GutenbergDemo-GutenbergDemoTests-checkManifestLockResult.txt", ); runOnlyForDeploymentPostprocessing = 0; shellPath = /bin/sh; shellScript = "diff \"${PODS_PODFILE_DIR_PATH}/Podfile.lock\" \"${PODS_ROOT}/Manifest.lock\" > /dev/null\nif [ $? != 0 ] ; then\n # print error to STDERR\n echo \"error: The sandbox is not in sync with the Podfile.lock. Run 'pod install' or update your CocoaPods installation.\" >&2\n exit 1\nfi\n# This output is used by Xcode 'outputs' to avoid re-running this script phase.\necho \"SUCCESS\" > \"${SCRIPT_OUTPUT_FILE_0}\"\n"; showEnvVarsInLog = 0; }; + 71C0B5FDA891DD4D469D2DFB /* [CP] Embed Pods Frameworks */ = { + isa = PBXShellScriptBuildPhase; + buildActionMask = 2147483647; + files = ( + ); + inputPaths = ( + "${PODS_ROOT}/Target Support Files/Pods-GutenbergDemo-GutenbergDemoTests/Pods-GutenbergDemo-GutenbergDemoTests-frameworks.sh", + "${BUILT_PRODUCTS_DIR}/BVLinearGradient/BVLinearGradient.framework", + "${BUILT_PRODUCTS_DIR}/DoubleConversion/DoubleConversion.framework", + "${BUILT_PRODUCTS_DIR}/FBReactNativeSpec/FBReactNativeSpec.framework", + "${BUILT_PRODUCTS_DIR}/Gutenberg/Gutenberg.framework", + "${BUILT_PRODUCTS_DIR}/RCT-Folly/folly.framework", + "${BUILT_PRODUCTS_DIR}/RCTTypeSafety/RCTTypeSafety.framework", + "${BUILT_PRODUCTS_DIR}/RNCClipboard/RNCClipboard.framework", + "${BUILT_PRODUCTS_DIR}/RNCMaskedView/RNCMaskedView.framework", + "${BUILT_PRODUCTS_DIR}/RNGestureHandler/RNGestureHandler.framework", + "${BUILT_PRODUCTS_DIR}/RNReanimated/RNReanimated.framework", + "${BUILT_PRODUCTS_DIR}/RNSVG/RNSVG.framework", + "${BUILT_PRODUCTS_DIR}/RNScreens/RNScreens.framework", + "${BUILT_PRODUCTS_DIR}/RNTAztecView/RNTAztecView.framework", + "${BUILT_PRODUCTS_DIR}/React-Core/React.framework", + "${BUILT_PRODUCTS_DIR}/React-CoreModules/CoreModules.framework", + "${BUILT_PRODUCTS_DIR}/React-RCTAnimation/RCTAnimation.framework", + "${BUILT_PRODUCTS_DIR}/React-RCTBlob/RCTBlob.framework", + "${BUILT_PRODUCTS_DIR}/React-RCTImage/RCTImage.framework", + "${BUILT_PRODUCTS_DIR}/React-RCTLinking/RCTLinking.framework", + "${BUILT_PRODUCTS_DIR}/React-RCTNetwork/RCTNetwork.framework", + "${BUILT_PRODUCTS_DIR}/React-RCTSettings/RCTSettings.framework", + "${BUILT_PRODUCTS_DIR}/React-RCTText/RCTText.framework", + "${BUILT_PRODUCTS_DIR}/React-RCTVibration/RCTVibration.framework", + "${BUILT_PRODUCTS_DIR}/React-cxxreact/cxxreact.framework", + "${BUILT_PRODUCTS_DIR}/React-jsi/jsi.framework", + "${BUILT_PRODUCTS_DIR}/React-jsiexecutor/jsireact.framework", + "${BUILT_PRODUCTS_DIR}/React-jsinspector/jsinspector.framework", + "${BUILT_PRODUCTS_DIR}/React-logger/logger.framework", + "${BUILT_PRODUCTS_DIR}/React-perflogger/reactperflogger.framework", + "${BUILT_PRODUCTS_DIR}/ReactCommon/ReactCommon.framework", + "${BUILT_PRODUCTS_DIR}/WordPress-Aztec-iOS/Aztec.framework", + "${BUILT_PRODUCTS_DIR}/Yoga/yoga.framework", + "${BUILT_PRODUCTS_DIR}/fmt/fmt.framework", + "${BUILT_PRODUCTS_DIR}/glog/glog.framework", + "${BUILT_PRODUCTS_DIR}/react-native-blur/react_native_blur.framework", + "${BUILT_PRODUCTS_DIR}/react-native-get-random-values/react_native_get_random_values.framework", + "${BUILT_PRODUCTS_DIR}/react-native-keyboard-aware-scroll-view/react_native_keyboard_aware_scroll_view.framework", + "${BUILT_PRODUCTS_DIR}/react-native-safe-area/react_native_safe_area.framework", + "${BUILT_PRODUCTS_DIR}/react-native-safe-area-context/react_native_safe_area_context.framework", + "${BUILT_PRODUCTS_DIR}/react-native-slider/react_native_slider.framework", + "${BUILT_PRODUCTS_DIR}/react-native-webview/react_native_webview.framework", + ); + name = "[CP] Embed Pods Frameworks"; + outputPaths = ( + "${TARGET_BUILD_DIR}/${FRAMEWORKS_FOLDER_PATH}/BVLinearGradient.framework", + "${TARGET_BUILD_DIR}/${FRAMEWORKS_FOLDER_PATH}/DoubleConversion.framework", + "${TARGET_BUILD_DIR}/${FRAMEWORKS_FOLDER_PATH}/FBReactNativeSpec.framework", + "${TARGET_BUILD_DIR}/${FRAMEWORKS_FOLDER_PATH}/Gutenberg.framework", + "${TARGET_BUILD_DIR}/${FRAMEWORKS_FOLDER_PATH}/folly.framework", + "${TARGET_BUILD_DIR}/${FRAMEWORKS_FOLDER_PATH}/RCTTypeSafety.framework", + "${TARGET_BUILD_DIR}/${FRAMEWORKS_FOLDER_PATH}/RNCClipboard.framework", + "${TARGET_BUILD_DIR}/${FRAMEWORKS_FOLDER_PATH}/RNCMaskedView.framework", + "${TARGET_BUILD_DIR}/${FRAMEWORKS_FOLDER_PATH}/RNGestureHandler.framework", + "${TARGET_BUILD_DIR}/${FRAMEWORKS_FOLDER_PATH}/RNReanimated.framework", + "${TARGET_BUILD_DIR}/${FRAMEWORKS_FOLDER_PATH}/RNSVG.framework", + "${TARGET_BUILD_DIR}/${FRAMEWORKS_FOLDER_PATH}/RNScreens.framework", + "${TARGET_BUILD_DIR}/${FRAMEWORKS_FOLDER_PATH}/RNTAztecView.framework", + "${TARGET_BUILD_DIR}/${FRAMEWORKS_FOLDER_PATH}/React.framework", + "${TARGET_BUILD_DIR}/${FRAMEWORKS_FOLDER_PATH}/CoreModules.framework", + "${TARGET_BUILD_DIR}/${FRAMEWORKS_FOLDER_PATH}/RCTAnimation.framework", + "${TARGET_BUILD_DIR}/${FRAMEWORKS_FOLDER_PATH}/RCTBlob.framework", + "${TARGET_BUILD_DIR}/${FRAMEWORKS_FOLDER_PATH}/RCTImage.framework", + "${TARGET_BUILD_DIR}/${FRAMEWORKS_FOLDER_PATH}/RCTLinking.framework", + "${TARGET_BUILD_DIR}/${FRAMEWORKS_FOLDER_PATH}/RCTNetwork.framework", + "${TARGET_BUILD_DIR}/${FRAMEWORKS_FOLDER_PATH}/RCTSettings.framework", + "${TARGET_BUILD_DIR}/${FRAMEWORKS_FOLDER_PATH}/RCTText.framework", + "${TARGET_BUILD_DIR}/${FRAMEWORKS_FOLDER_PATH}/RCTVibration.framework", + "${TARGET_BUILD_DIR}/${FRAMEWORKS_FOLDER_PATH}/cxxreact.framework", + "${TARGET_BUILD_DIR}/${FRAMEWORKS_FOLDER_PATH}/jsi.framework", + "${TARGET_BUILD_DIR}/${FRAMEWORKS_FOLDER_PATH}/jsireact.framework", + "${TARGET_BUILD_DIR}/${FRAMEWORKS_FOLDER_PATH}/jsinspector.framework", + "${TARGET_BUILD_DIR}/${FRAMEWORKS_FOLDER_PATH}/logger.framework", + "${TARGET_BUILD_DIR}/${FRAMEWORKS_FOLDER_PATH}/reactperflogger.framework", + "${TARGET_BUILD_DIR}/${FRAMEWORKS_FOLDER_PATH}/ReactCommon.framework", + "${TARGET_BUILD_DIR}/${FRAMEWORKS_FOLDER_PATH}/Aztec.framework", + "${TARGET_BUILD_DIR}/${FRAMEWORKS_FOLDER_PATH}/yoga.framework", + "${TARGET_BUILD_DIR}/${FRAMEWORKS_FOLDER_PATH}/fmt.framework", + "${TARGET_BUILD_DIR}/${FRAMEWORKS_FOLDER_PATH}/glog.framework", + "${TARGET_BUILD_DIR}/${FRAMEWORKS_FOLDER_PATH}/react_native_blur.framework", + "${TARGET_BUILD_DIR}/${FRAMEWORKS_FOLDER_PATH}/react_native_get_random_values.framework", + "${TARGET_BUILD_DIR}/${FRAMEWORKS_FOLDER_PATH}/react_native_keyboard_aware_scroll_view.framework", + "${TARGET_BUILD_DIR}/${FRAMEWORKS_FOLDER_PATH}/react_native_safe_area.framework", + "${TARGET_BUILD_DIR}/${FRAMEWORKS_FOLDER_PATH}/react_native_safe_area_context.framework", + "${TARGET_BUILD_DIR}/${FRAMEWORKS_FOLDER_PATH}/react_native_slider.framework", + "${TARGET_BUILD_DIR}/${FRAMEWORKS_FOLDER_PATH}/react_native_webview.framework", + ); + runOnlyForDeploymentPostprocessing = 0; + shellPath = /bin/sh; + shellScript = "\"${PODS_ROOT}/Target Support Files/Pods-GutenbergDemo-GutenbergDemoTests/Pods-GutenbergDemo-GutenbergDemoTests-frameworks.sh\"\n"; + showEnvVarsInLog = 0; + }; 74E4D376F06BC61DB863CCC7 /* [CP] Check Pods Manifest.lock */ = { isa = PBXShellScriptBuildPhase; buildActionMask = 2147483647; @@ -489,24 +598,11 @@ }; /* End PBXTargetDependency section */ -/* Begin PBXVariantGroup section */ - 13B07FB11A68108700A75B9A /* LaunchScreen.xib */ = { - isa = PBXVariantGroup; - children = ( - 13B07FB21A68108700A75B9A /* Base */, - ); - name = LaunchScreen.xib; - path = GutenbergDemo; - sourceTree = ""; - }; -/* End PBXVariantGroup section */ - /* Begin XCBuildConfiguration section */ 00E356F61AD99517003FC87E /* Debug */ = { isa = XCBuildConfiguration; - baseConfigurationReference = 66F6B74F51BD6921D3AF25F6 /* Pods-GutenbergDemoTests.debug.xcconfig */; + baseConfigurationReference = FC32E740B1F0D56A0F2971E7 /* Pods-GutenbergDemo-GutenbergDemoTests.debug.xcconfig */; buildSettings = { - ALWAYS_EMBED_SWIFT_STANDARD_LIBRARIES = YES; BUNDLE_LOADER = "$(TEST_HOST)"; GCC_PREPROCESSOR_DEFINITIONS = ( "DEBUG=1", @@ -542,9 +638,8 @@ }; 00E356F71AD99517003FC87E /* Release */ = { isa = XCBuildConfiguration; - baseConfigurationReference = 71AC74DFA49CB3BF62D440DB /* Pods-GutenbergDemoTests.release.xcconfig */; + baseConfigurationReference = 4EC14D7D4E04A462CB8AC230 /* Pods-GutenbergDemo-GutenbergDemoTests.release.xcconfig */; buildSettings = { - ALWAYS_EMBED_SWIFT_STANDARD_LIBRARIES = YES; BUNDLE_LOADER = "$(TEST_HOST)"; COPY_PHASE_STRIP = NO; HEADER_SEARCH_PATHS = ( diff --git a/packages/react-native-editor/ios/GutenbergDemo/Base.lproj/LaunchScreen.xib b/packages/react-native-editor/ios/GutenbergDemo/Base.lproj/LaunchScreen.xib deleted file mode 100644 index ff4d2c90f49cfb..00000000000000 --- a/packages/react-native-editor/ios/GutenbergDemo/Base.lproj/LaunchScreen.xib +++ /dev/null @@ -1,41 +0,0 @@ - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - diff --git a/packages/react-native-editor/ios/GutenbergDemo/GutenbergViewController.swift b/packages/react-native-editor/ios/GutenbergDemo/GutenbergViewController.swift index 5d391ec6aa8431..1aea9b5770ac91 100644 --- a/packages/react-native-editor/ios/GutenbergDemo/GutenbergViewController.swift +++ b/packages/react-native-editor/ios/GutenbergDemo/GutenbergViewController.swift @@ -27,7 +27,6 @@ class GutenbergViewController: UIViewController { super.viewDidLoad() configureNavigationBar() gutenberg.delegate = self - navigationController?.navigationBar.isTranslucent = false registerLongPressGestureRecognizer() _ = try! FallbackJavascriptInjection(blockHTML: "Hello", userId: "1") diff --git a/packages/react-native-editor/ios/LaunchScreen.storyboard b/packages/react-native-editor/ios/LaunchScreen.storyboard new file mode 100644 index 00000000000000..8306f30bc23285 --- /dev/null +++ b/packages/react-native-editor/ios/LaunchScreen.storyboard @@ -0,0 +1,48 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + diff --git a/packages/react-native-editor/ios/Podfile b/packages/react-native-editor/ios/Podfile index ecf582c8cd8fae..88d0963b5d5235 100644 --- a/packages/react-native-editor/ios/Podfile +++ b/packages/react-native-editor/ios/Podfile @@ -1,39 +1,57 @@ project 'GutenbergDemo.xcodeproj' -# Uncomment the next line to define a global platform for your project -platform :ios, '13.0' require_relative '../../../node_modules/react-native/scripts/react_native_pods' require_relative '../../../node_modules/@react-native-community/cli-platform-ios/native_modules' +# Uncomment the next line to define a global platform for your project +app_ios_deployment_target = Gem::Version.new('13.0') +platform :ios, app_ios_deployment_target.version + target 'GutenbergDemo' do # Comment the next line if you don't want to use dynamic frameworks use_frameworks! config = use_native_modules! - use_react_native!(:path => "../../../node_modules/react-native") + use_react_native!( + :path => config[:reactNativePath], + # to enable hermes on iOS, change `false` to `true` and then install pods + :hermes_enabled => false + ) target 'GutenbergDemoTests' do - inherit! :search_paths + inherit! :complete # Pods for testing end - ### Begin workaround for https://github.com/facebook/react-native/issues/31034 - # Can be removed when this issue is resolved. post_install do |installer| - react_native_post_install(installer) - + __apply_Xcode_12_5_M1_post_install_workaround(installer) + + # Let Pods targets inherit deployment target from the app + # This solution is suggested here: https://github.com/CocoaPods/CocoaPods/issues/4859 + installer.pods_project.targets.each do |target| + # Exclude RCT-Folly as it requires explicit deployment target https://git.io/JPb73 + if (target.name != 'RCT-Folly') + target.build_configurations.each do |configuration| + pod_ios_deployment_target = Gem::Version.new(configuration.build_settings['IPHONEOS_DEPLOYMENT_TARGET']) + configuration.build_settings.delete 'IPHONEOS_DEPLOYMENT_TARGET' if pod_ios_deployment_target <= app_ios_deployment_target + end + end + end + + ### Begin workaround for https://github.com/facebook/react-native/issues/31034 + # Can be removed when this issue is resolved. installer.pods_project.targets.each do |target| target.build_configurations.each do |config| config.build_settings['BUILD_LIBRARY_FOR_DISTRIBUTION'] = 'YES' end - + if (target.name&.eql?('FBReactNativeSpec')) target.build_phases.each do |build_phase| if (build_phase.respond_to?(:name) && build_phase.name.eql?('[CP-User] Generate Specs')) ## Begin workaround for https://stackoverflow.com/questions/66627590/phasescriptexecution-error-in-react-native-app # Can be removed when this issue is resolved. - build_phase.shell_script.prepend("unset npm_config_prefix \n") + build_phase.shell_script.prepend("unset npm_config_prefix \n") ## End workaround for https://stackoverflow.com/questions/66627590/phasescriptexecution-error-in-react-native-app target.build_phases.move(build_phase, 0) end diff --git a/packages/react-native-editor/ios/Podfile.lock b/packages/react-native-editor/ios/Podfile.lock index 5eead50f70d4c6..cc44a6376278a4 100644 --- a/packages/react-native-editor/ios/Podfile.lock +++ b/packages/react-native-editor/ios/Podfile.lock @@ -1,307 +1,316 @@ PODS: - - boost-for-react-native (1.63.0) - - BVLinearGradient (2.5.6-wp-1): + - boost (1.76.0) + - BVLinearGradient (2.5.6-wp-2): - React-Core - DoubleConversion (1.1.6) - - FBLazyVector (0.64.0) - - FBReactNativeSpec (0.64.0): - - RCT-Folly (= 2020.01.13.00) - - RCTRequired (= 0.64.0) - - RCTTypeSafety (= 0.64.0) - - React-Core (= 0.64.0) - - React-jsi (= 0.64.0) - - ReactCommon/turbomodule/core (= 0.64.0) + - FBLazyVector (0.66.2) + - FBReactNativeSpec (0.66.2): + - RCT-Folly (= 2021.06.28.00-v2) + - RCTRequired (= 0.66.2) + - RCTTypeSafety (= 0.66.2) + - React-Core (= 0.66.2) + - React-jsi (= 0.66.2) + - ReactCommon/turbomodule/core (= 0.66.2) + - fmt (6.2.1) - glog (0.3.5) - Gutenberg (1.68.0): - - React-Core (= 0.64.0) - - React-CoreModules (= 0.64.0) - - React-RCTImage (= 0.64.0) + - React-Core (= 0.66.2) + - React-CoreModules (= 0.66.2) + - React-RCTImage (= 0.66.2) - RNTAztecView - - RCT-Folly (2020.01.13.00): - - boost-for-react-native + - RCT-Folly (2021.06.28.00-v2): + - boost - DoubleConversion + - fmt (~> 6.2.1) - glog - - RCT-Folly/Default (= 2020.01.13.00) - - RCT-Folly/Default (2020.01.13.00): - - boost-for-react-native + - RCT-Folly/Default (= 2021.06.28.00-v2) + - RCT-Folly/Default (2021.06.28.00-v2): + - boost - DoubleConversion + - fmt (~> 6.2.1) - glog - - RCTRequired (0.64.0) - - RCTTypeSafety (0.64.0): - - FBLazyVector (= 0.64.0) - - RCT-Folly (= 2020.01.13.00) - - RCTRequired (= 0.64.0) - - React-Core (= 0.64.0) - - React (0.64.0): - - React-Core (= 0.64.0) - - React-Core/DevSupport (= 0.64.0) - - React-Core/RCTWebSocket (= 0.64.0) - - React-RCTActionSheet (= 0.64.0) - - React-RCTAnimation (= 0.64.0) - - React-RCTBlob (= 0.64.0) - - React-RCTImage (= 0.64.0) - - React-RCTLinking (= 0.64.0) - - React-RCTNetwork (= 0.64.0) - - React-RCTSettings (= 0.64.0) - - React-RCTText (= 0.64.0) - - React-RCTVibration (= 0.64.0) - - React-callinvoker (0.64.0) - - React-Core (0.64.0): + - RCTRequired (0.66.2) + - RCTTypeSafety (0.66.2): + - FBLazyVector (= 0.66.2) + - RCT-Folly (= 2021.06.28.00-v2) + - RCTRequired (= 0.66.2) + - React-Core (= 0.66.2) + - React (0.66.2): + - React-Core (= 0.66.2) + - React-Core/DevSupport (= 0.66.2) + - React-Core/RCTWebSocket (= 0.66.2) + - React-RCTActionSheet (= 0.66.2) + - React-RCTAnimation (= 0.66.2) + - React-RCTBlob (= 0.66.2) + - React-RCTImage (= 0.66.2) + - React-RCTLinking (= 0.66.2) + - React-RCTNetwork (= 0.66.2) + - React-RCTSettings (= 0.66.2) + - React-RCTText (= 0.66.2) + - React-RCTVibration (= 0.66.2) + - React-callinvoker (0.66.2) + - React-Core (0.66.2): - glog - - RCT-Folly (= 2020.01.13.00) - - React-Core/Default (= 0.64.0) - - React-cxxreact (= 0.64.0) - - React-jsi (= 0.64.0) - - React-jsiexecutor (= 0.64.0) - - React-perflogger (= 0.64.0) + - RCT-Folly (= 2021.06.28.00-v2) + - React-Core/Default (= 0.66.2) + - React-cxxreact (= 0.66.2) + - React-jsi (= 0.66.2) + - React-jsiexecutor (= 0.66.2) + - React-perflogger (= 0.66.2) - Yoga - - React-Core/CoreModulesHeaders (0.64.0): + - React-Core/CoreModulesHeaders (0.66.2): - glog - - RCT-Folly (= 2020.01.13.00) + - RCT-Folly (= 2021.06.28.00-v2) - React-Core/Default - - React-cxxreact (= 0.64.0) - - React-jsi (= 0.64.0) - - React-jsiexecutor (= 0.64.0) - - React-perflogger (= 0.64.0) + - React-cxxreact (= 0.66.2) + - React-jsi (= 0.66.2) + - React-jsiexecutor (= 0.66.2) + - React-perflogger (= 0.66.2) - Yoga - - React-Core/Default (0.64.0): + - React-Core/Default (0.66.2): - glog - - RCT-Folly (= 2020.01.13.00) - - React-cxxreact (= 0.64.0) - - React-jsi (= 0.64.0) - - React-jsiexecutor (= 0.64.0) - - React-perflogger (= 0.64.0) + - RCT-Folly (= 2021.06.28.00-v2) + - React-cxxreact (= 0.66.2) + - React-jsi (= 0.66.2) + - React-jsiexecutor (= 0.66.2) + - React-perflogger (= 0.66.2) - Yoga - - React-Core/DevSupport (0.64.0): + - React-Core/DevSupport (0.66.2): - glog - - RCT-Folly (= 2020.01.13.00) - - React-Core/Default (= 0.64.0) - - React-Core/RCTWebSocket (= 0.64.0) - - React-cxxreact (= 0.64.0) - - React-jsi (= 0.64.0) - - React-jsiexecutor (= 0.64.0) - - React-jsinspector (= 0.64.0) - - React-perflogger (= 0.64.0) + - RCT-Folly (= 2021.06.28.00-v2) + - React-Core/Default (= 0.66.2) + - React-Core/RCTWebSocket (= 0.66.2) + - React-cxxreact (= 0.66.2) + - React-jsi (= 0.66.2) + - React-jsiexecutor (= 0.66.2) + - React-jsinspector (= 0.66.2) + - React-perflogger (= 0.66.2) - Yoga - - React-Core/RCTActionSheetHeaders (0.64.0): + - React-Core/RCTActionSheetHeaders (0.66.2): - glog - - RCT-Folly (= 2020.01.13.00) + - RCT-Folly (= 2021.06.28.00-v2) - React-Core/Default - - React-cxxreact (= 0.64.0) - - React-jsi (= 0.64.0) - - React-jsiexecutor (= 0.64.0) - - React-perflogger (= 0.64.0) + - React-cxxreact (= 0.66.2) + - React-jsi (= 0.66.2) + - React-jsiexecutor (= 0.66.2) + - React-perflogger (= 0.66.2) - Yoga - - React-Core/RCTAnimationHeaders (0.64.0): + - React-Core/RCTAnimationHeaders (0.66.2): - glog - - RCT-Folly (= 2020.01.13.00) + - RCT-Folly (= 2021.06.28.00-v2) - React-Core/Default - - React-cxxreact (= 0.64.0) - - React-jsi (= 0.64.0) - - React-jsiexecutor (= 0.64.0) - - React-perflogger (= 0.64.0) + - React-cxxreact (= 0.66.2) + - React-jsi (= 0.66.2) + - React-jsiexecutor (= 0.66.2) + - React-perflogger (= 0.66.2) - Yoga - - React-Core/RCTBlobHeaders (0.64.0): + - React-Core/RCTBlobHeaders (0.66.2): - glog - - RCT-Folly (= 2020.01.13.00) + - RCT-Folly (= 2021.06.28.00-v2) - React-Core/Default - - React-cxxreact (= 0.64.0) - - React-jsi (= 0.64.0) - - React-jsiexecutor (= 0.64.0) - - React-perflogger (= 0.64.0) + - React-cxxreact (= 0.66.2) + - React-jsi (= 0.66.2) + - React-jsiexecutor (= 0.66.2) + - React-perflogger (= 0.66.2) - Yoga - - React-Core/RCTImageHeaders (0.64.0): + - React-Core/RCTImageHeaders (0.66.2): - glog - - RCT-Folly (= 2020.01.13.00) + - RCT-Folly (= 2021.06.28.00-v2) - React-Core/Default - - React-cxxreact (= 0.64.0) - - React-jsi (= 0.64.0) - - React-jsiexecutor (= 0.64.0) - - React-perflogger (= 0.64.0) + - React-cxxreact (= 0.66.2) + - React-jsi (= 0.66.2) + - React-jsiexecutor (= 0.66.2) + - React-perflogger (= 0.66.2) - Yoga - - React-Core/RCTLinkingHeaders (0.64.0): + - React-Core/RCTLinkingHeaders (0.66.2): - glog - - RCT-Folly (= 2020.01.13.00) + - RCT-Folly (= 2021.06.28.00-v2) - React-Core/Default - - React-cxxreact (= 0.64.0) - - React-jsi (= 0.64.0) - - React-jsiexecutor (= 0.64.0) - - React-perflogger (= 0.64.0) + - React-cxxreact (= 0.66.2) + - React-jsi (= 0.66.2) + - React-jsiexecutor (= 0.66.2) + - React-perflogger (= 0.66.2) - Yoga - - React-Core/RCTNetworkHeaders (0.64.0): + - React-Core/RCTNetworkHeaders (0.66.2): - glog - - RCT-Folly (= 2020.01.13.00) + - RCT-Folly (= 2021.06.28.00-v2) - React-Core/Default - - React-cxxreact (= 0.64.0) - - React-jsi (= 0.64.0) - - React-jsiexecutor (= 0.64.0) - - React-perflogger (= 0.64.0) + - React-cxxreact (= 0.66.2) + - React-jsi (= 0.66.2) + - React-jsiexecutor (= 0.66.2) + - React-perflogger (= 0.66.2) - Yoga - - React-Core/RCTSettingsHeaders (0.64.0): + - React-Core/RCTSettingsHeaders (0.66.2): - glog - - RCT-Folly (= 2020.01.13.00) + - RCT-Folly (= 2021.06.28.00-v2) - React-Core/Default - - React-cxxreact (= 0.64.0) - - React-jsi (= 0.64.0) - - React-jsiexecutor (= 0.64.0) - - React-perflogger (= 0.64.0) + - React-cxxreact (= 0.66.2) + - React-jsi (= 0.66.2) + - React-jsiexecutor (= 0.66.2) + - React-perflogger (= 0.66.2) - Yoga - - React-Core/RCTTextHeaders (0.64.0): + - React-Core/RCTTextHeaders (0.66.2): - glog - - RCT-Folly (= 2020.01.13.00) + - RCT-Folly (= 2021.06.28.00-v2) - React-Core/Default - - React-cxxreact (= 0.64.0) - - React-jsi (= 0.64.0) - - React-jsiexecutor (= 0.64.0) - - React-perflogger (= 0.64.0) + - React-cxxreact (= 0.66.2) + - React-jsi (= 0.66.2) + - React-jsiexecutor (= 0.66.2) + - React-perflogger (= 0.66.2) - Yoga - - React-Core/RCTVibrationHeaders (0.64.0): + - React-Core/RCTVibrationHeaders (0.66.2): - glog - - RCT-Folly (= 2020.01.13.00) + - RCT-Folly (= 2021.06.28.00-v2) - React-Core/Default - - React-cxxreact (= 0.64.0) - - React-jsi (= 0.64.0) - - React-jsiexecutor (= 0.64.0) - - React-perflogger (= 0.64.0) + - React-cxxreact (= 0.66.2) + - React-jsi (= 0.66.2) + - React-jsiexecutor (= 0.66.2) + - React-perflogger (= 0.66.2) - Yoga - - React-Core/RCTWebSocket (0.64.0): + - React-Core/RCTWebSocket (0.66.2): - glog - - RCT-Folly (= 2020.01.13.00) - - React-Core/Default (= 0.64.0) - - React-cxxreact (= 0.64.0) - - React-jsi (= 0.64.0) - - React-jsiexecutor (= 0.64.0) - - React-perflogger (= 0.64.0) + - RCT-Folly (= 2021.06.28.00-v2) + - React-Core/Default (= 0.66.2) + - React-cxxreact (= 0.66.2) + - React-jsi (= 0.66.2) + - React-jsiexecutor (= 0.66.2) + - React-perflogger (= 0.66.2) - Yoga - - React-CoreModules (0.64.0): - - FBReactNativeSpec (= 0.64.0) - - RCT-Folly (= 2020.01.13.00) - - RCTTypeSafety (= 0.64.0) - - React-Core/CoreModulesHeaders (= 0.64.0) - - React-jsi (= 0.64.0) - - React-RCTImage (= 0.64.0) - - ReactCommon/turbomodule/core (= 0.64.0) - - React-cxxreact (0.64.0): - - boost-for-react-native (= 1.63.0) + - React-CoreModules (0.66.2): + - FBReactNativeSpec (= 0.66.2) + - RCT-Folly (= 2021.06.28.00-v2) + - RCTTypeSafety (= 0.66.2) + - React-Core/CoreModulesHeaders (= 0.66.2) + - React-jsi (= 0.66.2) + - React-RCTImage (= 0.66.2) + - ReactCommon/turbomodule/core (= 0.66.2) + - React-cxxreact (0.66.2): + - boost (= 1.76.0) - DoubleConversion - glog - - RCT-Folly (= 2020.01.13.00) - - React-callinvoker (= 0.64.0) - - React-jsi (= 0.64.0) - - React-jsinspector (= 0.64.0) - - React-perflogger (= 0.64.0) - - React-runtimeexecutor (= 0.64.0) - - React-jsi (0.64.0): - - boost-for-react-native (= 1.63.0) + - RCT-Folly (= 2021.06.28.00-v2) + - React-callinvoker (= 0.66.2) + - React-jsi (= 0.66.2) + - React-jsinspector (= 0.66.2) + - React-logger (= 0.66.2) + - React-perflogger (= 0.66.2) + - React-runtimeexecutor (= 0.66.2) + - React-jsi (0.66.2): + - boost (= 1.76.0) - DoubleConversion - glog - - RCT-Folly (= 2020.01.13.00) - - React-jsi/Default (= 0.64.0) - - React-jsi/Default (0.64.0): - - boost-for-react-native (= 1.63.0) + - RCT-Folly (= 2021.06.28.00-v2) + - React-jsi/Default (= 0.66.2) + - React-jsi/Default (0.66.2): + - boost (= 1.76.0) - DoubleConversion - glog - - RCT-Folly (= 2020.01.13.00) - - React-jsiexecutor (0.64.0): + - RCT-Folly (= 2021.06.28.00-v2) + - React-jsiexecutor (0.66.2): - DoubleConversion - glog - - RCT-Folly (= 2020.01.13.00) - - React-cxxreact (= 0.64.0) - - React-jsi (= 0.64.0) - - React-perflogger (= 0.64.0) - - React-jsinspector (0.64.0) + - RCT-Folly (= 2021.06.28.00-v2) + - React-cxxreact (= 0.66.2) + - React-jsi (= 0.66.2) + - React-perflogger (= 0.66.2) + - React-jsinspector (0.66.2) + - React-logger (0.66.2): + - glog - react-native-blur (0.8.0): - React-Core - - react-native-get-random-values (1.4.0-wp-1): + - react-native-get-random-values (1.4.0-wp-2): - React-Core - react-native-keyboard-aware-scroll-view (0.8.8-wp-1): - React-Core - react-native-safe-area (0.5.1): - React-Core - - react-native-safe-area-context (3.2.0-wp-1): + - react-native-safe-area-context (3.2.0-wp-2): - React-Core - - react-native-slider (3.0.2-wp-1): + - react-native-slider (3.0.2-wp-2): - React-Core - - react-native-video (5.0.2-wp-1): + - react-native-video (5.0.2-wp-2): - React-Core - - react-native-video/Video (= 5.0.2-wp-1) - - react-native-video/Video (5.0.2-wp-1): + - react-native-video/Video (= 5.0.2-wp-2) + - react-native-video/Video (5.0.2-wp-2): - React-Core - - react-native-webview (11.6.5-wp-1): + - react-native-webview (11.6.5-wp-2): - React-Core - - React-perflogger (0.64.0) - - React-RCTActionSheet (0.64.0): - - React-Core/RCTActionSheetHeaders (= 0.64.0) - - React-RCTAnimation (0.64.0): - - FBReactNativeSpec (= 0.64.0) - - RCT-Folly (= 2020.01.13.00) - - RCTTypeSafety (= 0.64.0) - - React-Core/RCTAnimationHeaders (= 0.64.0) - - React-jsi (= 0.64.0) - - ReactCommon/turbomodule/core (= 0.64.0) - - React-RCTBlob (0.64.0): - - FBReactNativeSpec (= 0.64.0) - - RCT-Folly (= 2020.01.13.00) - - React-Core/RCTBlobHeaders (= 0.64.0) - - React-Core/RCTWebSocket (= 0.64.0) - - React-jsi (= 0.64.0) - - React-RCTNetwork (= 0.64.0) - - ReactCommon/turbomodule/core (= 0.64.0) - - React-RCTImage (0.64.0): - - FBReactNativeSpec (= 0.64.0) - - RCT-Folly (= 2020.01.13.00) - - RCTTypeSafety (= 0.64.0) - - React-Core/RCTImageHeaders (= 0.64.0) - - React-jsi (= 0.64.0) - - React-RCTNetwork (= 0.64.0) - - ReactCommon/turbomodule/core (= 0.64.0) - - React-RCTLinking (0.64.0): - - FBReactNativeSpec (= 0.64.0) - - React-Core/RCTLinkingHeaders (= 0.64.0) - - React-jsi (= 0.64.0) - - ReactCommon/turbomodule/core (= 0.64.0) - - React-RCTNetwork (0.64.0): - - FBReactNativeSpec (= 0.64.0) - - RCT-Folly (= 2020.01.13.00) - - RCTTypeSafety (= 0.64.0) - - React-Core/RCTNetworkHeaders (= 0.64.0) - - React-jsi (= 0.64.0) - - ReactCommon/turbomodule/core (= 0.64.0) - - React-RCTSettings (0.64.0): - - FBReactNativeSpec (= 0.64.0) - - RCT-Folly (= 2020.01.13.00) - - RCTTypeSafety (= 0.64.0) - - React-Core/RCTSettingsHeaders (= 0.64.0) - - React-jsi (= 0.64.0) - - ReactCommon/turbomodule/core (= 0.64.0) - - React-RCTText (0.64.0): - - React-Core/RCTTextHeaders (= 0.64.0) - - React-RCTVibration (0.64.0): - - FBReactNativeSpec (= 0.64.0) - - RCT-Folly (= 2020.01.13.00) - - React-Core/RCTVibrationHeaders (= 0.64.0) - - React-jsi (= 0.64.0) - - ReactCommon/turbomodule/core (= 0.64.0) - - React-runtimeexecutor (0.64.0): - - React-jsi (= 0.64.0) - - ReactCommon/turbomodule/core (0.64.0): + - React-perflogger (0.66.2) + - React-RCTActionSheet (0.66.2): + - React-Core/RCTActionSheetHeaders (= 0.66.2) + - React-RCTAnimation (0.66.2): + - FBReactNativeSpec (= 0.66.2) + - RCT-Folly (= 2021.06.28.00-v2) + - RCTTypeSafety (= 0.66.2) + - React-Core/RCTAnimationHeaders (= 0.66.2) + - React-jsi (= 0.66.2) + - ReactCommon/turbomodule/core (= 0.66.2) + - React-RCTBlob (0.66.2): + - FBReactNativeSpec (= 0.66.2) + - RCT-Folly (= 2021.06.28.00-v2) + - React-Core/RCTBlobHeaders (= 0.66.2) + - React-Core/RCTWebSocket (= 0.66.2) + - React-jsi (= 0.66.2) + - React-RCTNetwork (= 0.66.2) + - ReactCommon/turbomodule/core (= 0.66.2) + - React-RCTImage (0.66.2): + - FBReactNativeSpec (= 0.66.2) + - RCT-Folly (= 2021.06.28.00-v2) + - RCTTypeSafety (= 0.66.2) + - React-Core/RCTImageHeaders (= 0.66.2) + - React-jsi (= 0.66.2) + - React-RCTNetwork (= 0.66.2) + - ReactCommon/turbomodule/core (= 0.66.2) + - React-RCTLinking (0.66.2): + - FBReactNativeSpec (= 0.66.2) + - React-Core/RCTLinkingHeaders (= 0.66.2) + - React-jsi (= 0.66.2) + - ReactCommon/turbomodule/core (= 0.66.2) + - React-RCTNetwork (0.66.2): + - FBReactNativeSpec (= 0.66.2) + - RCT-Folly (= 2021.06.28.00-v2) + - RCTTypeSafety (= 0.66.2) + - React-Core/RCTNetworkHeaders (= 0.66.2) + - React-jsi (= 0.66.2) + - ReactCommon/turbomodule/core (= 0.66.2) + - React-RCTSettings (0.66.2): + - FBReactNativeSpec (= 0.66.2) + - RCT-Folly (= 2021.06.28.00-v2) + - RCTTypeSafety (= 0.66.2) + - React-Core/RCTSettingsHeaders (= 0.66.2) + - React-jsi (= 0.66.2) + - ReactCommon/turbomodule/core (= 0.66.2) + - React-RCTText (0.66.2): + - React-Core/RCTTextHeaders (= 0.66.2) + - React-RCTVibration (0.66.2): + - FBReactNativeSpec (= 0.66.2) + - RCT-Folly (= 2021.06.28.00-v2) + - React-Core/RCTVibrationHeaders (= 0.66.2) + - React-jsi (= 0.66.2) + - ReactCommon/turbomodule/core (= 0.66.2) + - React-runtimeexecutor (0.66.2): + - React-jsi (= 0.66.2) + - ReactCommon/turbomodule/core (0.66.2): - DoubleConversion - glog - - RCT-Folly (= 2020.01.13.00) - - React-callinvoker (= 0.64.0) - - React-Core (= 0.64.0) - - React-cxxreact (= 0.64.0) - - React-jsi (= 0.64.0) - - React-perflogger (= 0.64.0) - - RNCMaskedView (0.1.11-wp-1): + - RCT-Folly (= 2021.06.28.00-v2) + - React-callinvoker (= 0.66.2) + - React-Core (= 0.66.2) + - React-cxxreact (= 0.66.2) + - React-jsi (= 0.66.2) + - React-logger (= 0.66.2) + - React-perflogger (= 0.66.2) + - RNCClipboard (1.9.0-wp-1): + - React-Core + - RNCMaskedView (0.1.11-wp-2): - React-Core - - RNGestureHandler (1.10.1-wp-3): + - RNGestureHandler (1.10.1-wp-4): - React-Core - - RNReanimated (1.9.0-wp-1): + - RNReanimated (1.9.0-wp-2): - React-Core - - RNScreens (2.9.0-wp-1): + - RNScreens (2.9.0-wp-2): - React-Core - - RNSVG (9.13.7-wp-1): + - RNSVG (9.13.7-wp-2): - React-Core - RNTAztecView (1.68.0): - React-Core @@ -310,6 +319,7 @@ PODS: - Yoga (1.14.0) DEPENDENCIES: + - boost (from `../../../node_modules/react-native/third-party-podspecs/boost.podspec`) - BVLinearGradient (from `../../../node_modules/react-native-linear-gradient`) - DoubleConversion (from `../../../node_modules/react-native/third-party-podspecs/DoubleConversion.podspec`) - FBLazyVector (from `../../../node_modules/react-native/Libraries/FBLazyVector`) @@ -329,6 +339,7 @@ DEPENDENCIES: - React-jsi (from `../../../node_modules/react-native/ReactCommon/jsi`) - React-jsiexecutor (from `../../../node_modules/react-native/ReactCommon/jsiexecutor`) - React-jsinspector (from `../../../node_modules/react-native/ReactCommon/jsinspector`) + - React-logger (from `../../../node_modules/react-native/ReactCommon/logger`) - "react-native-blur (from `../../../node_modules/@react-native-community/blur`)" - react-native-get-random-values (from `../../../node_modules/react-native-get-random-values`) - react-native-keyboard-aware-scroll-view (from `../../../node_modules/react-native-keyboard-aware-scroll-view`) @@ -349,6 +360,7 @@ DEPENDENCIES: - React-RCTVibration (from `../../../node_modules/react-native/Libraries/Vibration`) - React-runtimeexecutor (from `../../../node_modules/react-native/ReactCommon/runtimeexecutor`) - ReactCommon/turbomodule/core (from `../../../node_modules/react-native/ReactCommon`) + - "RNCClipboard (from `../../../node_modules/@react-native-clipboard/clipboard`)" - "RNCMaskedView (from `../../../node_modules/@react-native-community/masked-view`)" - RNGestureHandler (from `../../../node_modules/react-native-gesture-handler`) - RNReanimated (from `../../../node_modules/react-native-reanimated`) @@ -359,10 +371,12 @@ DEPENDENCIES: SPEC REPOS: trunk: - - boost-for-react-native + - fmt - WordPress-Aztec-iOS EXTERNAL SOURCES: + boost: + :podspec: "../../../node_modules/react-native/third-party-podspecs/boost.podspec" BVLinearGradient: :path: "../../../node_modules/react-native-linear-gradient" DoubleConversion: @@ -397,6 +411,8 @@ EXTERNAL SOURCES: :path: "../../../node_modules/react-native/ReactCommon/jsiexecutor" React-jsinspector: :path: "../../../node_modules/react-native/ReactCommon/jsinspector" + React-logger: + :path: "../../../node_modules/react-native/ReactCommon/logger" react-native-blur: :path: "../../../node_modules/@react-native-community/blur" react-native-get-random-values: @@ -437,6 +453,8 @@ EXTERNAL SOURCES: :path: "../../../node_modules/react-native/ReactCommon/runtimeexecutor" ReactCommon: :path: "../../../node_modules/react-native/ReactCommon" + RNCClipboard: + :path: "../../../node_modules/@react-native-clipboard/clipboard" RNCMaskedView: :path: "../../../node_modules/@react-native-community/masked-view" RNGestureHandler: @@ -453,53 +471,56 @@ EXTERNAL SOURCES: :path: "../../../node_modules/react-native/ReactCommon/yoga" SPEC CHECKSUMS: - boost-for-react-native: 39c7adb57c4e60d6c5479dd8623128eb5b3f0f2c - BVLinearGradient: 1e5474c982efcfcaed47f368a61431bb38a4faf8 - DoubleConversion: cf9b38bf0b2d048436d9a82ad2abe1404f11e7de - FBLazyVector: 49cbe4b43e445b06bf29199b6ad2057649e4c8f5 - FBReactNativeSpec: 483e4a3c2982c1ce57d08e90fea6be852dd5f691 - glog: 73c2498ac6884b13ede40eda8228cb1eee9d9d62 - Gutenberg: c60e4e43b9cba783fd2e65aad912d1b6cf2f0098 - RCT-Folly: ec7a233ccc97cc556cf7237f0db1ff65b986f27c - RCTRequired: 2f8cb5b7533219bf4218a045f92768129cf7050a - RCTTypeSafety: 512728b73549e72ad7330b92f3d42936f2a4de5b - React: 98eac01574128a790f0bbbafe2d1a8607291ac24 - React-callinvoker: def3f7fae16192df68d9b69fd4bbb59092ee36bc - React-Core: 70a52aa5dbe9b83befae82038451a7df9fd54c5a - React-CoreModules: 052edef46117862e2570eb3a0f06d81c61d2c4b8 - React-cxxreact: c1dc71b30653cfb4770efdafcbdc0ad6d388baab - React-jsi: 74341196d9547cbcbcfa4b3bbbf03af56431d5a1 - React-jsiexecutor: 06a9c77b56902ae7ffcdd7a4905f664adc5d237b - React-jsinspector: 0ae35a37b20d5e031eb020a69cc5afdbd6406301 + boost: a7c83b31436843459a1961bfd74b96033dc77234 + BVLinearGradient: f6eff3552b842aac99ff6f21197e57f87cfd956d + DoubleConversion: 831926d9b8bf8166fd87886c4abab286c2422662 + FBLazyVector: 57a8b34460679fb69e1ce7d625b04dbd1596b1f1 + FBReactNativeSpec: 18438b1c04ce502ed681cd19db3f4508964c082a + fmt: ff9d55029c625d3757ed641535fd4a75fedc7ce9 + glog: 5337263514dd6f09803962437687240c5dc39aa4 + Gutenberg: 5db4fee03946ebc20f35a38f99cab2c42a8d753d + RCT-Folly: a21c126816d8025b547704b777a2ba552f3d9fa9 + RCTRequired: 5e9e85f48da8dd447f5834ce14c6799ea8c7f41a + RCTTypeSafety: aba333d04d88d1f954e93666a08d7ae57a87ab30 + React: a8f119296b97812f73af5ae0eb1f26cf262ae4b4 + React-callinvoker: ce22372414af68085a32174d5dfbd41ea03799e6 + React-Core: 9fb6365464ecc235d7023ee7f868dc643ca20f41 + React-CoreModules: 9874a32779eadf7492fb85e71fbc5eeab733df32 + React-cxxreact: e562a15aba33752febb3125bad4e329e8d024252 + React-jsi: 78f1c0eb3f9054d15745e89e06f9dc17de4d07da + React-jsiexecutor: 573adf0d6ce5e05c55872dfde5b1589acb88a96f + React-jsinspector: b08b2d5e86cef9dc4bb69f0aa0bbe6d210fb7da5 + React-logger: faee236598b0f7e1a5e3b68577016ac451f1f993 react-native-blur: ef741a08d020010ba65e411be0ab82d1d325e7ad - react-native-get-random-values: b3910975884a214fde519ccc0ad060b96d8f4720 - react-native-keyboard-aware-scroll-view: 0bc6c2dfe9056935a40dc1a70e764b7a1bbf6568 + react-native-get-random-values: 6296ac9e84928625ffb34ca74ab684bbda8747a8 + react-native-keyboard-aware-scroll-view: 374b637c8684d7de50bd930df1a2d2b8fd49daa5 react-native-safe-area: c9cf765aa2dd96159476a99633e7d462ce5bb94f - react-native-safe-area-context: 2bcfa0394571ebd9b70ecb87d5befe820bad2778 - react-native-slider: 31130ff825e659fcb1b4e77d24862d6eb11e6fe1 - react-native-video: 7468eb0a48e7b0bb87d0802b47323de5f1b73697 - react-native-webview: d316be87c0b8064745a45f76ee7f134e72b2c4e8 - React-perflogger: 9c547d8f06b9bf00cb447f2b75e8d7f19b7e02af - React-RCTActionSheet: 3080b6e12e0e1a5b313c8c0050699b5c794a1b11 - React-RCTAnimation: 3f96f21a497ae7dabf4d2f150ee43f906aaf516f - React-RCTBlob: 283b8e5025e7f954176bc48164f846909002f3ed - React-RCTImage: 5088a484faac78f2d877e1b79125d3bb1ea94a16 - React-RCTLinking: 5e8fbb3e9a8bc2e4e3eb15b1eb8bda5fcac27b8c - React-RCTNetwork: 38ec277217b1e841d5e6a1fa78da65b9212ccb28 - React-RCTSettings: 242d6e692108c3de4f3bb74b7586a8799e9ab070 - React-RCTText: 8746736ac8eb5a4a74719aa695b7a236a93a83d2 - React-RCTVibration: 0fd6b21751a33cb72fce1a4a33ab9678416d307a - React-runtimeexecutor: cad74a1eaa53ee6e7a3620231939d8fe2c6afcf0 - ReactCommon: cfe2b7fd20e0dbd2d1185cd7d8f99633fbc5ff05 - RNCMaskedView: a181e39d197c0bfdc7bf353633b8379e63daa1f9 - RNGestureHandler: a9e943d7058aa16347895e32c9734e22f09e74a7 - RNReanimated: 39a9478eb635667c9a4da08ac906add9901b145e - RNScreens: 185dcb481fab2f3dc77413f62b43dc3df826029c - RNSVG: 9c0db12736608e32841e90fe9773db70ea40de20 + react-native-safe-area-context: 12756eb7af017b6ff6b4f50dc5a55eab299c62fd + react-native-slider: d4c3367c5db5d2bec3ac0ab9d15ebb73d896034c + react-native-video: 7ebeec33e4e00837563d7315b633b00337079217 + react-native-webview: 5189276d033e3d3c5292d22e5a66ec48c9b2b04b + React-perflogger: 5ab487cacfe6ec19bfe3d3f8072bf71eb07d63da + React-RCTActionSheet: 03f25695e095fb5aa003828620943c74cc281fec + React-RCTAnimation: eaf82da39f0c36fb0ef2a28df797c5f73a2a98ea + React-RCTBlob: c8b58e70faa2ff482a8eb99491c8b12c4477bc74 + React-RCTImage: 92a0471a03c55d445ede02516176d852120280bf + React-RCTLinking: 9a4482710586877671e19f0a564c2a745153f26f + React-RCTNetwork: 3801dd1ce7873db828a2d824ee2d4f25a0abf7d0 + React-RCTSettings: a5d35733c27853177935185b76a3a0f7aa594dc9 + React-RCTText: 6d8d3bc93c4595caf1f681198271cd4630759a74 + React-RCTVibration: 3e815c3d2dd2e0e931b68595b5b92d23ba38b3fb + React-runtimeexecutor: 393e26602c1b248683372051e34db63e359e3b01 + ReactCommon: c0263c1a41509aeb94be3214fa7bc3b71eae5ef6 + RNCClipboard: 6e20baf63bfe3515c2b719a8c3d6797718098663 + RNCMaskedView: 579fdb1e0abb33cc0d38ee8d4942df9976a0533e + RNGestureHandler: 0c0e58f463a725fa37d8643d50da6abf300f7844 + RNReanimated: 7d8459391b2f3e1dc6dea919307db4adf4c1d254 + RNScreens: ec0e85d1babdd61d7ec78c98072d9e6b62d96ff6 + RNSVG: b3b9c40381636e5116894398d72a830be15b7258 RNTAztecView: bdcd4b1b309ed88241779868bfbba05ca8432795 WordPress-Aztec-iOS: 129276e7d1391acb08157641a54394668bb0d7f8 - Yoga: 8c8436d4171c87504c648ae23b1d81242bdf3bbf + Yoga: 9a08effa851c1d8cc1647691895540bc168ea65f -PODFILE CHECKSUM: db5f67a29ecba75541dad181ff59246b6da2fb09 +PODFILE CHECKSUM: 563423e4045de5607d9ba4dd3a53595bb1a8c8cc COCOAPODS: 1.10.1 diff --git a/packages/react-native-editor/metro.config.js b/packages/react-native-editor/metro.config.js index d95f8834720d50..77bc68ec663d52 100644 --- a/packages/react-native-editor/metro.config.js +++ b/packages/react-native-editor/metro.config.js @@ -21,6 +21,9 @@ module.exports = { getTransformOptions: async () => ( { transform: { experimentalImportSupport: false, + // `inlineRequires` is disabled as it is incompatible with some of the + // import side effects utilize in the Gutenberg source. + // E.g. `import './hooks'` inlineRequires: false, }, } ), diff --git a/packages/react-native-editor/package.json b/packages/react-native-editor/package.json index 2cbb5b205c7794..461766840d327a 100644 --- a/packages/react-native-editor/package.json +++ b/packages/react-native-editor/package.json @@ -30,9 +30,10 @@ "react-native": "src/index", "dependencies": { "@babel/runtime": "^7.16.0", + "@react-native-clipboard/clipboard": "https://raw.githubusercontent.com/wordpress-mobile/react-native-clipboard/b9f44e935c7a1aac26d92e46e45cd92cd9da18c5/react-native-clipboard-clipboard-1.9.0-wp-1.tgz", "@react-native-community/blur": "3.6.0", - "@react-native-community/masked-view": "https://raw.githubusercontent.com/wordpress-mobile/react-native-masked-view/f204c270ecd7c63ddea3449ba829d2415076faa2/react-native-community-masked-view-0.1.11-wp-1.tgz", - "@react-native-community/slider": "https://raw.githubusercontent.com/wordpress-mobile/react-native-slider/851dbc78d015afa55ad1e526c6d14bb86399722b/react-native-community-slider-3.0.2-wp-1.tgz", + "@react-native-community/masked-view": "https://raw.githubusercontent.com/wordpress-mobile/react-native-masked-view/v0.1.11-wp-2/react-native-community-masked-view-0.1.11-wp-2.tgz", + "@react-native-community/slider": "https://raw.githubusercontent.com/wordpress-mobile/react-native-slider/v3.0.2-wp-2/react-native-community-slider-3.0.2-wp-2.tgz", "@react-navigation/core": "5.12.0", "@react-navigation/native": "5.7.0", "@react-navigation/routers": "5.4.9", @@ -54,24 +55,24 @@ "jed": "^1.1.1", "jsdom-jscore-rn": "git+https://github.com/iamcco/jsdom-jscore-rn.git#a562f3d57c27c13e5bfc8cf82d496e69a3ba2800", "node-fetch": "^2.6.0", - "react-native": "0.64.0", - "react-native-gesture-handler": "https://raw.githubusercontent.com/wordpress-mobile/react-native-gesture-handler/e20fb879b029dc2da92ff06e059cc8b1bd1cee26/react-native-gesture-handler-1.10.1-wp-3.tgz", - "react-native-get-random-values": "https://raw.githubusercontent.com/wordpress-mobile/react-native-get-random-values/f3f5e2a04078e4b00f6a3ca38ac1c73be942a2c9/react-native-get-random-values-1.4.0-wp-1.tgz", + "react-native": "0.66.2", + "react-native-gesture-handler": "https://raw.githubusercontent.com/wordpress-mobile/react-native-gesture-handler/1.10.1-wp-4/react-native-gesture-handler-1.10.1-wp-4.tgz", + "react-native-get-random-values": "https://raw.githubusercontent.com/wordpress-mobile/react-native-get-random-values/v1.4.0-wp-2/react-native-get-random-values-1.4.0-wp-2.tgz", "react-native-hr": "git+https://github.com/Riglerr/react-native-hr.git#2d01a5cf77212d100e8b99e0310cce5234f977b3", - "react-native-hsv-color-picker": "https://raw.githubusercontent.com/wordpress-mobile/react-native-hsv-color-picker/03c0038419326fb86120560cdc3ce958d52cee37/react-native-hsv-color-picker-1.0.1-wp-1.tgz", + "react-native-hsv-color-picker": "https://raw.githubusercontent.com/wordpress-mobile/react-native-hsv-color-picker/v1.0.1-wp-2/react-native-hsv-color-picker-1.0.1-wp-2.tgz", "react-native-keyboard-aware-scroll-view": "https://raw.githubusercontent.com/wordpress-mobile/react-native-keyboard-aware-scroll-view/v0.8.8-wp-1/react-native-keyboard-aware-scroll-view-0.8.8-wp-1.tgz", - "react-native-linear-gradient": "https://raw.githubusercontent.com/wordpress-mobile/react-native-linear-gradient/8bfaf806ee2d4c0c3b4f001f653825522529e51a/react-native-linear-gradient-2.5.6-wp-1.tgz", + "react-native-linear-gradient": "https://raw.githubusercontent.com/wordpress-mobile/react-native-linear-gradient/v2.5.6-wp-2/react-native-linear-gradient-2.5.6-wp-2.tgz", "react-native-modal": "^11.10.0", - "react-native-prompt-android": "https://raw.githubusercontent.com/wordpress-mobile/react-native-prompt-android/a1db6b97989e63490a13c31124de1e3882e6c46c/react-native-prompt-android-1.0.0-wp-1.tgz", - "react-native-reanimated": "https://raw.githubusercontent.com/wordpress-mobile/react-native-reanimated/1e8662de5378843e35c2e559d60aeaa729726fc0/react-native-reanimated-1.9.0-wp-1.tgz", + "react-native-prompt-android": "https://raw.githubusercontent.com/wordpress-mobile/react-native-prompt-android/v1.0.0-wp-2/react-native-prompt-android-1.0.0-wp-2.tgz", + "react-native-reanimated": "https://raw.githubusercontent.com/wordpress-mobile/react-native-reanimated/1.9.0-wp-2/react-native-reanimated-1.9.0-wp-2.tgz", "react-native-safe-area": "^0.5.0", - "react-native-safe-area-context": "https://raw.githubusercontent.com/wordpress-mobile/react-native-safe-area-context/3dae92d9c95a253f7cafb7fcde44b77b0ea72789/react-native-safe-area-context-3.2.0-wp-1.tgz", + "react-native-safe-area-context": "https://raw.githubusercontent.com/wordpress-mobile/react-native-safe-area-context/v3.2.0-wp-2/react-native-safe-area-context-3.2.0-wp-2.tgz", "react-native-sass-transformer": "^1.1.1", - "react-native-screens": "https://raw.githubusercontent.com/wordpress-mobile/react-native-screens/a25c3d81e0838d57c9f9ac77ef726751e329bad1/react-native-screens-2.9.0-wp-1.tgz", - "react-native-svg": "https://raw.githubusercontent.com/wordpress-mobile/react-native-svg/99132c9403db6a5709c5c383770547eda8eb25d1/react-native-svg-9.13.7-wp-1.tgz", + "react-native-screens": "https://raw.githubusercontent.com/wordpress-mobile/react-native-screens/2.9.0-wp-2/react-native-screens-2.9.0-wp-2.tgz", + "react-native-svg": "https://raw.githubusercontent.com/wordpress-mobile/react-native-svg/v9.13.7-wp-2/react-native-svg-9.13.7-wp-2.tgz", "react-native-url-polyfill": "^1.1.2", - "react-native-video": "https://raw.githubusercontent.com/wordpress-mobile/react-native-video/67b5961406c7d6be0916ef69c7a6af69501aad83/react-native-video-5.0.2-wp-1.tgz", - "react-native-webview": "https://raw.githubusercontent.com/wordpress-mobile/react-native-webview/0c8632f1f4f442574ed3118d8ea35e6f7b4511df/react-native-webview-11.6.5-wp-1.tgz" + "react-native-video": "https://raw.githubusercontent.com/wordpress-mobile/react-native-video/5.0.2-wp-2/react-native-video-5.0.2-wp-2.tgz", + "react-native-webview": "https://raw.githubusercontent.com/wordpress-mobile/react-native-webview/v11.6.5-wp-2/react-native-webview-11.6.5-wp-2.tgz" }, "publishConfig": { "access": "public" @@ -94,7 +95,7 @@ "android": "react-native run-android --no-packager --no-jetifier", "prewpandroid": "rm -Rf $TMPDIR/gbmobile-wpandroidfakernroot && mkdir $TMPDIR/gbmobile-wpandroidfakernroot && ln -s $(cd \"$(dirname \"../../../../../\")\"; pwd) $TMPDIR/gbmobile-wpandroidfakernroot/android", "wpandroid": "npm run android -- --root $TMPDIR/gbmobile-wpandroidfakernroot --variant wasabiDebug --appIdSuffix beta --appFolder WordPress --main-activity=ui.WPLaunchActivity", - "preios": "cd ios && (bundle check --path=vendor/bundle > /dev/null || bundle install) && bundle exec pod install --repo-update", + "preios": "cd ios && (bundle check > /dev/null || bundle install) && bundle exec pod install --repo-update", "preios:carthage": "cd ../react-native-aztec && npm run install-aztec-ios", "preios:carthage:update": "cd ../react-native-aztec && npm run update-aztec-ios", "preios:xcode10": "cd ../../node_modules/react-native && ./scripts/ios-install-third-party.sh && cd third-party/glog-0.3.5 && [ -f libglog.pc ] || ../../scripts/ios-configure-glog.sh", diff --git a/packages/react-native-editor/src/index.js b/packages/react-native-editor/src/index.js index a0fbf482154752..bc8825c7113be5 100644 --- a/packages/react-native-editor/src/index.js +++ b/packages/react-native-editor/src/index.js @@ -1,7 +1,7 @@ /** * External dependencies */ -import { I18nManager } from 'react-native'; +import { I18nManager, LogBox } from 'react-native'; /** * Internal dependencies @@ -21,9 +21,18 @@ import { import { unregisterBlockType, getBlockType } from '@wordpress/blocks'; const reactNativeSetup = () => { - // Disable warnings as they disrupt the user experience in dev mode - // eslint-disable-next-line no-console - console.disableYellowBox = true; + LogBox.ignoreLogs( [ + 'Require cycle:', // TODO: Refactor to remove require cycles + 'lineHeight', // TODO: Remove lineHeight warning from Aztec + /** + * TODO: Migrate to @gorhom/bottom-sheet or replace usage of + * LayoutAnimation to Animated. KeyboardAvoidingView's usage of + * LayoutAnimation collides with both BottomSheet and NavigationContainer + * usage of LayoutAnimation simultaneously https://git.io/J1lZv, + * https://git.io/J1lZY + */ + 'Overriding previous layout animation', + ] ); I18nManager.forceRTL( false ); // Change to `true` to debug RTL layout easily. }; diff --git a/packages/rich-text/src/component/index.native.js b/packages/rich-text/src/component/index.native.js index b55ad2572fd0f7..452c47aff2d93a 100644 --- a/packages/rich-text/src/component/index.native.js +++ b/packages/rich-text/src/component/index.native.js @@ -714,11 +714,8 @@ export class RichText extends Component { if ( typeof this.lastEventCount !== 'undefined' ) { this.lastEventCount += 100; // bump by a hundred, hopefully native hasn't bombarded the JS side in the meantime. - } else { - window.console.warn( - "Tried to bump the RichText native event counter but was 'undefined'. Aborting bump." - ); - } + } // no need to bump when 'undefined' as native side won't receive the key when the value is undefined, and that will cause force updating anyway, + // see https://github.com/WordPress/gutenberg/blob/82e578dcc75e67891c750a41a04c1e31994192fc/packages/react-native-aztec/android/src/main/java/org/wordpress/mobile/ReactNativeAztec/ReactAztecManager.java#L213-L215 } shouldComponentUpdate( nextProps ) { diff --git a/patches/@react-navigation+native+5.7.0.patch b/patches/@react-navigation+native+5.7.0.patch new file mode 100644 index 00000000000000..8f7cc19c1f9489 --- /dev/null +++ b/patches/@react-navigation+native+5.7.0.patch @@ -0,0 +1,19 @@ +diff --git a/node_modules/@react-navigation/native/src/useLinking.native.tsx b/node_modules/@react-navigation/native/src/useLinking.native.tsx +index 22274f1..acc95f5 100644 +--- a/node_modules/@react-navigation/native/src/useLinking.native.tsx ++++ b/node_modules/@react-navigation/native/src/useLinking.native.tsx +@@ -113,9 +113,12 @@ export default function useLinking( + } + }; + +- Linking.addEventListener('url', listener); ++ // The following `linkingSubscription` changes were added via ++ // patch-package. The patch can be removed once we upgrade to ++ // react-navigation@^6.0.0. https://git.io/JP7OG ++ const linkingSubscription = Linking.addEventListener('url', listener); + +- return () => Linking.removeEventListener('url', listener); ++ return () => linkingSubscription.remove(); + }, [enabled, extractPathFromURL, ref]); + + return { diff --git a/patches/metro+0.64.0.patch b/patches/metro+0.64.0.patch deleted file mode 100644 index 249ae5cecd324b..00000000000000 --- a/patches/metro+0.64.0.patch +++ /dev/null @@ -1,13 +0,0 @@ -diff --git a/node_modules/metro/src/node-haste/DependencyGraph/ModuleResolution.js b/node_modules/metro/src/node-haste/DependencyGraph/ModuleResolution.js -index 5f32fc5..2b80fda 100644 ---- a/node_modules/metro/src/node-haste/DependencyGraph/ModuleResolution.js -+++ b/node_modules/metro/src/node-haste/DependencyGraph/ModuleResolution.js -@@ -346,7 +346,7 @@ class UnableToResolveError extends Error { - try { - file = fs.readFileSync(this.originModulePath, "utf8"); - } catch (error) { -- if (error.code === "ENOENT") { -+ if (error.code === "ENOENT" || error.code === 'EISDIR') { - // We're probably dealing with a virtualised file system where - // `this.originModulePath` doesn't actually exist on disk. - // We can't show a code frame, but there's no need to let this I/O diff --git a/patches/react-native+0.64.0.patch b/patches/react-native+0.64.0.patch deleted file mode 100644 index a7ec48a1d341fc..00000000000000 --- a/patches/react-native+0.64.0.patch +++ /dev/null @@ -1,25 +0,0 @@ -diff --git a/node_modules/react-native/Libraries/Components/ActivityIndicator/ActivityIndicator.js b/node_modules/react-native/Libraries/Components/ActivityIndicator/ActivityIndicator.js -index 52cbda4..3e3b71e 100644 ---- a/node_modules/react-native/Libraries/Components/ActivityIndicator/ActivityIndicator.js -+++ b/node_modules/react-native/Libraries/Components/ActivityIndicator/ActivityIndicator.js -@@ -14,6 +14,7 @@ - const Platform = require('../../Utilities/Platform'); - const React = require('react'); - const StyleSheet = require('../../StyleSheet/StyleSheet'); -+const {PlatformColor} = require('../../StyleSheet/PlatformColorValueTypes'); - const View = require('../View/View'); - import type {HostComponent} from '../../Renderer/shims/ReactNativeTypes'; - import type {ViewProps} from '../View/ViewPropTypes'; -@@ -183,7 +184,11 @@ ActivityIndicatorWithRef.displayName = 'ActivityIndicator'; - * and run Flow. */ - ActivityIndicatorWithRef.defaultProps = { - animating: true, -- color: Platform.OS === 'ios' ? GRAY : null, -+ color: Platform.select({ -+ ios: GRAY, -+ android: PlatformColor('?attr/colorControlActivated'), -+ default: null, -+ }), - hidesWhenStopped: true, - size: 'small', - }; diff --git a/patches/react-native-keyboard-aware-scroll-view+0.8.8-wp-1.patch b/patches/react-native-keyboard-aware-scroll-view+0.8.8-wp-1.patch new file mode 100644 index 00000000000000..fab58b9d3157d9 --- /dev/null +++ b/patches/react-native-keyboard-aware-scroll-view+0.8.8-wp-1.patch @@ -0,0 +1,76 @@ +diff --git a/node_modules/react-native-keyboard-aware-scroll-view/lib/KeyboardAwareHOC.js b/node_modules/react-native-keyboard-aware-scroll-view/lib/KeyboardAwareHOC.js +index 30f62c9..83a6920 100644 +--- a/node_modules/react-native-keyboard-aware-scroll-view/lib/KeyboardAwareHOC.js ++++ b/node_modules/react-native-keyboard-aware-scroll-view/lib/KeyboardAwareHOC.js +@@ -264,9 +264,13 @@ function KeyboardAwareHOC( + }) + } + +- componentWillReceiveProps(nextProps: KeyboardAwareHOCProps) { +- if (nextProps.viewIsInsideTabBar !== this.props.viewIsInsideTabBar) { +- const keyboardSpace: number = nextProps.viewIsInsideTabBar ++ // This patch changed from the deprecated `componentWillReceiveProps` to ++ // `componentDidUpdate`. We can remove this patch when we upgrade to ++ // `react-native-keyboard-aware-scroll-view@^0.9.2` ++ // https://git.io/JPbOK ++ componentDidUpdate(prevProps: KeyboardAwareHOCProps) { ++ if (this.props.viewIsInsideTabBar !== prevProps.viewIsInsideTabBar) { ++ const keyboardSpace: number = this.props.viewIsInsideTabBar + ? _KAM_DEFAULT_TAB_BAR_HEIGHT + : 0 + if (this.state.keyboardSpace !== keyboardSpace) { +@@ -293,12 +297,33 @@ function KeyboardAwareHOC( + + scrollToPosition = (x: number, y: number, animated: boolean = true) => { + const responder = this.getScrollResponder() +- responder && responder.scrollResponderScrollTo({ x, y, animated }) ++ // Patch applied to avoid invoking the removed `scrollResponderScrollTo` ++ // method. This patch could be removed if we upgrade to ++ // `react-native-keyboard-aware-view@^0.9.5` https://git.io/JPb6a ++ if (!responder) return; ++ if (responder.scrollResponderScrollTo) { ++ // React Native < 0.65 ++ responder.scrollResponderScrollTo({ x, y, animated }) ++ } else if (responder.scrollTo) { ++ // React Native >= 0.65 ++ responder.scrollTo({ x, y, animated }) ++ } + } + + scrollToEnd = (animated?: boolean = true) => { + const responder = this.getScrollResponder() +- responder && responder.scrollResponderScrollToEnd({ animated }) ++ // Patch applied to avoid invoking the removed ++ // `scrollResponderScrollToEnd` method. This patch could be removed if we ++ // upgrade to `react-native-keyboard-aware-view@^0.9.5` ++ // https://git.io/JPb6a ++ if (!responder) return; ++ if (responder.scrollResponderScrollToEnd) { ++ // React Native < 0.65 ++ responder.scrollResponderScrollToEnd({ animated }) ++ } else if (responder.scrollToEnd) { ++ // React Native >= 0.65 ++ responder.scrollToEnd({ animated }) ++ } + } + + scrollForExtraHeightOnAndroid = (extraHeight: number) => { +@@ -553,7 +578,17 @@ function KeyboardAwareHOC( + + scrollOffsetY = Math.max(0, scrollOffsetY); //prevent negative scroll offset + const responder = this.getScrollResponder(); +- responder && responder.scrollResponderScrollTo( { x: 0, y: scrollOffsetY, animated: true } ); ++ // Patch applied to avoid invoking the removed `scrollResponderScrollTo` ++ // method. This patch could be removed if we upgrade to ++ // `react-native-keyboard-aware-view@^0.9.5` https://git.io/JPb6a ++ if (!responder) return; ++ if (responder.scrollResponderScrollTo) { ++ // React Native < 0.65 ++ responder.scrollResponderScrollTo( { x: 0, y: scrollOffsetY, animated: true } ) ++ } else if (responder.scrollTo) { ++ // React Native >= 0.65 ++ responder.scrollTo( { x: 0, y: scrollOffsetY, animated: true } ) ++ } + } + + const measureLayoutErrorHandler = ( e: Object ) => { diff --git a/patches/react-native-modal+11.10.0.patch b/patches/react-native-modal+11.10.0.patch new file mode 100644 index 00000000000000..0f94cc513322f4 --- /dev/null +++ b/patches/react-native-modal+11.10.0.patch @@ -0,0 +1,33 @@ +diff --git a/node_modules/react-native-modal/dist/modal.js b/node_modules/react-native-modal/dist/modal.js +index 165cd55..85f820c 100644 +--- a/node_modules/react-native-modal/dist/modal.js ++++ b/node_modules/react-native-modal/dist/modal.js +@@ -403,7 +403,13 @@ export class ReactNativeModal extends React.Component { + if (this.props.onSwipe) { + console.warn('`` is deprecated and will be removed starting from 13.0.0. Use `` instead.'); + } +- DeviceEventEmitter.addListener('didUpdateDimensions', this.handleDimensionsUpdate); ++ // The following `didUpdateDimensionsEmitter` changes were added via ++ // patch-package. The patch can be removed once we upgrade to ++ // react-native-modal@^13.0.0. https://git.io/JPQgq ++ this.didUpdateDimensionsEmitter = DeviceEventEmitter.addListener( ++ 'didUpdateDimensions', ++ this.handleDimensionsUpdate ++ ); + if (this.state.isVisible) { + this.open(); + } +@@ -411,7 +417,12 @@ export class ReactNativeModal extends React.Component { + } + componentWillUnmount() { + BackHandler.removeEventListener('hardwareBackPress', this.onBackButtonPress); +- DeviceEventEmitter.removeListener('didUpdateDimensions', this.handleDimensionsUpdate); ++ // The following `didUpdateDimensionsEmitter` changes were added via ++ // patch-package. The patch can be removed once we upgrade to ++ // react-native-modal@^13.0.0. https://git.io/JPQgq ++ if ( this.didUpdateDimensionsEmitter ) { ++ this.didUpdateDimensionsEmitter.remove(); ++ } + } + componentDidUpdate(prevProps) { + // If the animations have been changed then rebuild them to make sure we're diff --git a/test/native/setup.js b/test/native/setup.js index 9e0bbdc3c1faae..86a01a2535370d 100644 --- a/test/native/setup.js +++ b/test/native/setup.js @@ -154,17 +154,6 @@ jest.mock( 'react-native-reanimated', () => { // https://reactnavigation.org/docs/testing/#mocking-native-modules jest.mock( 'react-native/Libraries/Animated/NativeAnimatedHelper' ); -/** - * Note: Clipboard has been extracted from react-native core and will be removed in a future release. - * It can now be installed and imported from @react-native-community/clipboard instead of 'react-native'. - * - * @see node_modules/react-native/Libraries/Components/Clipboard/Clipboard.js - */ -jest.mock( 'react-native/Libraries/Components/Clipboard/Clipboard', () => ( { - getString: jest.fn( () => Promise.resolve( '' ) ), - setString: jest.fn(), -} ) ); - // We currently reference TextStateInput (a private module) within // react-native-aztec/src/AztecView. Doing so requires that we mock it via its // internal path to avoid "TypeError: Cannot read property 'Commands' of @@ -177,16 +166,28 @@ jest.mock( 'react-native/Libraries/LayoutAnimation/LayoutAnimation' ); jest.mock( 'react-native/Libraries/Components/AccessibilityInfo/AccessibilityInfo', () => ( { - addEventListener: jest.fn(), - announceForAccessibility: jest.fn(), - removeEventListener: jest.fn(), - isScreenReaderEnabled: jest.fn( () => Promise.resolve( false ) ), - fetch: jest.fn( () => ( { - done: jest.fn(), - } ) ), + __esModule: true, + default: { + addEventListener: jest.fn( () => ( { remove: jest.fn() } ) ), + announceForAccessibility: jest.fn(), + isBoldTextEnabled: jest.fn(), + isGrayscaleEnabled: jest.fn(), + isInvertColorsEnabled: jest.fn(), + isReduceMotionEnabled: jest.fn(), + isReduceTransparencyEnabled: jest.fn(), + isScreenReaderEnabled: jest.fn( () => Promise.resolve( false ) ), + removeEventListener: jest.fn(), + setAccessibilityFocus: jest.fn(), + sendAccessibilityEvent_unstable: jest.fn(), + getRecommendedTimeoutMillis: jest.fn(), + }, } ) ); -jest.mock( 'react-native/Libraries/Components/Clipboard/Clipboard', () => ( { + +// The mock provided by the package itself does not appear to work correctly. +// Specifically, the mock provides a named export, where the module itself uses +// a default export. +jest.mock( '@react-native-clipboard/clipboard', () => ( { getString: jest.fn( () => Promise.resolve( '' ) ), setString: jest.fn(), } ) ); @@ -197,9 +198,12 @@ jest.mock( 'react-native/Libraries/Components/Clipboard/Clipboard', () => ( { // https://github.com/callstack/react-native-testing-library/issues/329#issuecomment-737307473 jest.mock( 'react-native/Libraries/Components/Switch/Switch', () => { const jestMockComponent = require( 'react-native/jest/mockComponent' ); - return jestMockComponent( - 'react-native/Libraries/Components/Switch/Switch' - ); + return { + __esModule: true, + default: jestMockComponent( + 'react-native/Libraries/Components/Switch/Switch' + ), + }; } ); jest.mock( '@wordpress/compose', () => {