diff --git a/.alexrc.js b/.alexrc.js
index 7b4df1dddea..d87dcaad46a 100644
--- a/.alexrc.js
+++ b/.alexrc.js
@@ -1,5 +1,5 @@
/**
- * Copyright (c) Facebook, Inc. and its affiliates.
+ * Copyright (c) Meta Platforms, Inc. and affiliates.
*
* This source code is licensed under the MIT license found in the
* LICENSE file in the root directory of this source tree.
diff --git a/.eslintrc.json b/.eslintrc.json
index ff6320b5297..7eb64a72542 100644
--- a/.eslintrc.json
+++ b/.eslintrc.json
@@ -4,8 +4,8 @@
"overrides": [
{
"files": ["*.yaml", "*.yml"],
- "plugins": ["yaml"],
- "extends": ["plugin:yaml/recommended"]
+ "plugins": ["yml"],
+ "extends": ["plugin:yml/standard"]
},
{
"files": ["*.md", "*.mdx"],
diff --git a/.github/ISSUE_TEMPLATE/config.yml b/.github/ISSUE_TEMPLATE/config.yml
index f26515f17bd..87bd9df2ea2 100644
--- a/.github/ISSUE_TEMPLATE/config.yml
+++ b/.github/ISSUE_TEMPLATE/config.yml
@@ -7,7 +7,7 @@ contact_links:
url: https://github.com/react-native-community/upgrade-support
about: Need help upgrading to a newer React Native version? Visit the Upgrade Support repository.
- name: 🤔 Questions and Help
- url: https://reactnative.dev/help
+ url: https://reactnative.dev/community/support
about: Looking for help with your app? Please refer to the React Native community's support resources.
- name: 🚀 React Native Discussions and Feature Proposals
url: https://github.com/react-native-community/discussions-and-proposals
diff --git a/CODE_OF_CONDUCT.md b/CODE_OF_CONDUCT.md
index 6c7645b5d66..c4a3c1d16b2 100644
--- a/CODE_OF_CONDUCT.md
+++ b/CODE_OF_CONDUCT.md
@@ -1,100 +1,80 @@
-# [Open Source Code of Conduct](https://code.facebook.com/codeofconduct)
-
-This code of conduct outlines our expectations for participants within the
-**Facebook Open Source** community, as well as steps to reporting unacceptable
-behavior. We are committed to providing a welcoming and inspiring community for
-all and expect our code of conduct to be honored. Anyone who violates this code
-of conduct may be banned from the community.
-
-Our open source community strives to:
-
-* **Be friendly and patient.**
-* **Be welcoming:** We strive to be a community that welcomes and supports
- people of all backgrounds and identities. This includes, but is not limited to
- members of any race, ethnicity, culture, national origin, colour, immigration
- status, social and economic class, educational level, sex, sexual orientation,
- gender identity and expression, age, size, family status, political belief,
- religion, and mental and physical ability.
-* **Be considerate:** Your work will be used by other people, and you in turn
- will depend on the work of others. Any decision you take will affect users and
- colleagues, and you should take those consequences into account when making
- decisions. Remember that we’re a world-wide community, so you might not be
- communicating in someone else’s primary language.
-* **Be respectful:** Not all of us will agree all the time, but disagreement is
- no excuse for poor behavior and poor manners. We might all experience some
- frustration now and then, but we cannot allow that frustration to turn into a
- personal attack. It’s important to remember that a community where people feel
- uncomfortable or threatened is not a productive one.
-* **Be careful in the words that you choose:** we are a community of
- professionals, and we conduct ourselves professionally. Be kind to others. Do
- not insult or put down other participants. Harassment and other exclusionary
- behavior aren’t acceptable. This includes, but is not limited to:
- * Violent threats or language directed against another person.
- * Discriminatory jokes and language.
- * Posting sexually explicit or violent material.
- * Posting (or threatening to post) other people’s personally identifying
- information (“doxing”).
- * Personal insults, especially those using racist or sexist terms.
- * Unwelcome sexual attention.
- * Advocating for, or encouraging, any of the above behavior.
- * Repeated harassment of others. In general, if someone asks you to stop, then
- stop.
-* **When we disagree, try to understand why:** Disagreements, both social and
- technical, happen all the time. It is important that we resolve disagreements
- and differing views constructively.
-* **Remember that we’re different.** The strength of our community comes from
- its diversity, people from a wide range of backgrounds. Different people have
- different perspectives on issues. Being unable to understand why someone holds
- a viewpoint doesn’t mean that they’re wrong. Don’t forget that it is human to
- err and blaming each other doesn’t get us anywhere. Instead, focus on helping
- to resolve issues and learning from mistakes.
-
-This code is not exhaustive or complete. It serves to distill our common
-understanding of a collaborative, shared environment, and goals. We expect it to
-be followed in spirit as much as in the letter.
-
-## Diversity Statement
-
-We encourage everyone to participate and are committed to building a community
-for all. Although we may not be able to satisfy everyone, we all agree that
-everyone is equal. Whenever a participant has made a mistake, we expect them to
-take responsibility for it. If someone has been harmed or offended, it is our
-responsibility to listen carefully and respectfully, and do our best to right
-the wrong.
-
-Although this list cannot be exhaustive, we explicitly honor diversity in age,
-gender, gender identity or expression, culture, ethnicity, language, national
-origin, political beliefs, profession, race, religion, sexual orientation,
-socioeconomic status, and technical ability. We will not tolerate discrimination
-based on any of the protected characteristics above, including participants with
-disabilities.
-
-## Reporting Issues
-
-If you experience or witness unacceptable behavior—or have any other
-concerns—please report it by contacting us via opensource@fb.com. All reports
-will be handled with discretion. In your report please include:
-
-* Your contact information.
-* Names (real, nicknames, or pseudonyms) of any individuals involved. If there
- are additional witnesses, please include them as well. Your account of what
- occurred, and if you believe the incident is ongoing. If there is a publicly
- available record (e.g. a mailing list archive or a public IRC logger), please
- include a link.
-* Any additional information that may be helpful.
-
-After filing a report, a representative will contact you personally. If the
-person who is harassing you is part of the response team, they will recuse
-themselves from handling your incident. A representative will then review the
-incident, follow up with any additional questions, and make a decision as to how
-to respond. We will respect confidentiality requests for the purpose of
-protecting victims of abuse.
-
-Anyone asked to stop unacceptable behavior is expected to comply immediately. If
-an individual engages in unacceptable behavior, the representative may take any
-action they deem appropriate, up to and including a permanent ban from our
-community without warning.
-
-_This Code Of Conduct follows the
-[template](http://todogroup.org/opencodeofconduct/) established by the
-[TODO Group](http://todogroup.org/)._
+# Code of Conduct
+
+## Our Pledge
+
+In the interest of fostering an open and welcoming environment, we as
+contributors and maintainers pledge to make participation in our project and
+our community a harassment-free experience for everyone, regardless of age, body
+size, disability, ethnicity, sex characteristics, gender identity and expression,
+level of experience, education, socio-economic status, nationality, personal
+appearance, race, religion, or sexual identity and orientation.
+
+## Our Standards
+
+Examples of behavior that contributes to creating a positive environment
+include:
+
+- Using welcoming and inclusive language
+- Being respectful of differing viewpoints and experiences
+- Gracefully accepting constructive criticism
+- Focusing on what is best for the community
+- Showing empathy towards other community members
+
+Examples of unacceptable behavior by participants include:
+
+- The use of sexualized language or imagery and unwelcome sexual attention or
+ advances
+- Trolling, insulting/derogatory comments, and personal or political attacks
+- Public or private harassment
+- Publishing others' private information, such as a physical or electronic
+ address, without explicit permission
+- Other conduct which could reasonably be considered inappropriate in a
+ professional setting
+
+## Our Responsibilities
+
+Project maintainers are responsible for clarifying the standards of acceptable
+behavior and are expected to take appropriate and fair corrective action in
+response to any instances of unacceptable behavior.
+
+Project maintainers have the right and responsibility to remove, edit, or
+reject comments, commits, code, wiki edits, issues, and other contributions
+that are not aligned to this Code of Conduct, or to ban temporarily or
+permanently any contributor for other behaviors that they deem inappropriate,
+threatening, offensive, or harmful.
+
+## Scope
+
+This Code of Conduct applies within all project spaces, and it also applies when
+an individual is representing the project or its community in public spaces.
+Examples of representing a project or community include using an official
+project e-mail address, posting via an official social media account, or acting
+as an appointed representative at an online or offline event. Representation of
+a project may be further defined and clarified by project maintainers.
+
+This Code of Conduct also applies outside the project spaces when there is a
+reasonable belief that an individual's behavior may have a negative impact on
+the project or its community.
+
+## Enforcement
+
+Instances of abusive, harassing, or otherwise unacceptable behavior may be
+reported by contacting the project team at . All
+complaints will be reviewed and investigated and will result in a response that
+is deemed necessary and appropriate to the circumstances. The project team is
+obligated to maintain confidentiality with regard to the reporter of an incident.
+Further details of specific enforcement policies may be posted separately.
+
+Project maintainers who do not follow or enforce the Code of Conduct in good
+faith may face temporary or permanent repercussions as determined by other
+members of the project's leadership.
+
+## Attribution
+
+This Code of Conduct is adapted from the [Contributor Covenant][homepage], version 1.4,
+available at https://www.contributor-covenant.org/version/1/4/code-of-conduct.html
+
+[homepage]: https://www.contributor-covenant.org
+
+For answers to common questions about this code of conduct, see
+https://www.contributor-covenant.org/faq
diff --git a/LICENSE b/LICENSE
index b96dcb0480a..b93be90515c 100644
--- a/LICENSE
+++ b/LICENSE
@@ -1,6 +1,6 @@
MIT License
-Copyright (c) Facebook, Inc. and its affiliates.
+Copyright (c) Meta Platforms, Inc. and affiliates.
Permission is hereby granted, free of charge, to any person obtaining a copy
of this software and associated documentation files (the "Software"), to deal
diff --git a/docs/_getting-started-macos-android.md b/docs/_getting-started-macos-android.md
index fd52291bab0..eada9f7e420 100644
--- a/docs/_getting-started-macos-android.md
+++ b/docs/_getting-started-macos-android.md
@@ -73,7 +73,7 @@ Finally, click "Apply" to download and install the Android SDK and related build
The React Native tools require some environment variables to be set up in order to build apps with native code.
-Add the following lines to your `$HOME/.bash_profile` or `$HOME/.bashrc` (if you are using `zsh` then `~/.zprofile` or `~/.zshrc`) config file:
+Add the following lines to your `~/.zprofile` or `~/.zshrc` (if you are using `bash`, then `~/.bash_profile` or `~/.bashrc`) config file:
```shell
export ANDROID_SDK_ROOT=$HOME/Library/Android/sdk
@@ -81,9 +81,7 @@ export PATH=$PATH:$ANDROID_SDK_ROOT/emulator
export PATH=$PATH:$ANDROID_SDK_ROOT/platform-tools
```
-> `.bash_profile` is specific to `bash`. If you're using another shell, you will need to edit the appropriate shell-specific config file.
-
-Type `source $HOME/.bash_profile` for `bash` or `source $HOME/.zprofile` to load the config into your current shell. Verify that ANDROID_SDK_ROOT has been set by running `echo $ANDROID_SDK_ROOT` and the appropriate directories have been added to your path by running `echo $PATH`.
+Run `source ~/.zprofile` (or `source ~/.bash_profile` for `bash`) to load the config into your current shell. Verify that ANDROID_SDK_ROOT has been set by running `echo $ANDROID_SDK_ROOT` and the appropriate directories have been added to your path by running `echo $PATH`.
> Please make sure you use the correct Android SDK path. You can find the actual location of the SDK in the Android Studio "Preferences" dialog, under **Appearance & Behavior** → **System Settings** → **Android SDK**.
diff --git a/docs/_getting-started-macos-ios.md b/docs/_getting-started-macos-ios.md
index 9860a4cc4ba..7359e734983 100644
--- a/docs/_getting-started-macos-ios.md
+++ b/docs/_getting-started-macos-ios.md
@@ -2,7 +2,7 @@ import M1Cocoapods from './\_markdown-m1-cocoapods.mdx'; import RemoveGlobalCLI
## Installing dependencies
-You will need Node, Watchman, the React Native command line interface, Xcode and CocoaPods.
+You will need Node, Watchman, the React Native command line interface, a Ruby version manager, Xcode and CocoaPods.
While you can use any editor of your choice to develop your app, you will need to install Xcode in order to set up the necessary tooling to build your React Native app for iOS.
@@ -19,6 +19,35 @@ If you have already installed Node on your system, make sure it is Node 14 or ne
[Watchman](https://facebook.github.io/watchman) is a tool by Facebook for watching changes in the filesystem. It is highly recommended you install it for better performance.
+### Ruby
+
+[Ruby](https://www.ruby-lang.org/en/) is a general-purpose programming language. React Native uses in some scripts related to the iOS dependency management. As every programming language, there are different versions of Ruby that have been developed during the years.
+
+React Native uses a `.ruby-version` file to make sure that your version of Ruby is aligned with what is needed. Currently, macOS 12.5.1 is shipped with Ruby 2.6.8, which is **not** what is required by React Native. Our suggestion is to install a Ruby version manager and to install the proper version of Ruby in your system.
+
+Some common Ruby version manager are:
+
+- [rbenv](https://github.com/rbenv/rbenv)
+- [RVM](https://rvm.io/)
+- [chruby](https://github.com/postmodern/chruby)
+- [asdf-vm](https://github.com/asdf-vm) with the [asdf-ruby](https://github.com/asdf-vm/asdf-ruby) plugin
+
+To check what is your current version of Ruby, you can run this command:
+
+```
+ruby --version
+```
+
+React Native uses [this version](https://github.com/facebook/react-native/blob/main/template/_ruby-version) of Ruby. You can also find which version your specific project needs in the `.ruby-version` file at root of your RN project.
+
+### Ruby's Bundler
+
+Ruby uses the concept of **gems** to handle its own dependencies. You can think of a gem as a package in NPM, a formula in Homebrew or a single pod in Cocoapods.
+
+Ruby's [Bundler](https://bundler.io/) is a Ruby gem that helps managing the Ruby dependencies of your project. We need Ruby to install Cocoapods and using Bundler will make sure that all the dependencies are aligned and that the project works properly.
+
+If you want to learn more about why we need this tool, you can read [this article](https://bundler.io/guides/rationale.html#bundlers-purpose-and-rationale).
+
### Xcode
The easiest way to install Xcode is via the [Mac App Store](https://itunes.apple.com/us/app/xcode/id497799835?mt=12). Installing Xcode will also install the iOS Simulator and all the necessary tools to build your iOS app.
@@ -37,15 +66,7 @@ To install a simulator, open Xcode > Preferences... and select
#### CocoaPods
-[CocoaPods](https://cocoapods.org/) is built with Ruby and it will be installable with the default Ruby available on macOS.
-
-Using the default Ruby available on macOS will require you to use `sudo` when installing gems. (This is only an issue for the duration of the gem installation, though.)
-
-```shell
-sudo gem install cocoapods
-```
-
-Otherwise you can use a Ruby version manager, such as `rbenv`. Apps created with the command `npx react-native init` described below are configured to work well with `rbenv` and will pick the correct Ruby version requested by the template.
+[CocoaPods](https://cocoapods.org/) is one of the dependency management system available for iOS. It is built with Ruby and you can install it using the version of Ruby you configured with in the previous steps.
For more information, please visit [CocoaPods Getting Started guide](https://guides.cocoapods.org/using/getting-started.html).
@@ -67,6 +88,17 @@ npx react-native init AwesomeProject
This is not necessary if you are integrating React Native into an existing application, if you "ejected" from Expo, or if you're adding iOS support to an existing React Native project (see [Integration with Existing Apps](integration-with-existing-apps.md)). You can also use a third-party CLI to init your React Native app, such as [Ignite CLI](https://github.com/infinitered/ignite).
+:::info
+
+If you are having trouble with iOS, try to reinstall the dependencies by running:
+
+1. `cd ios` to navigate to the
+2. `bundle install` to install Bundler
+ 1. If needed: install a [Ruby Version Manager](#ruby) and update the Ruby version
+3. `bundle exec pod install` to install the iOS dependencies.
+
+:::
+
### [Optional] Using a specific version or template
If you want to start a new project with a specific React Native version, you can use the `--version` argument:
diff --git a/docs/_getting-started-windows-android.md b/docs/_getting-started-windows-android.md
index 038a898e240..1ae3a3c9c21 100644
--- a/docs/_getting-started-windows-android.md
+++ b/docs/_getting-started-windows-android.md
@@ -17,14 +17,14 @@ React Native also requires [Java SE Development Kit (JDK)](https://openjdk.java.
Open an Administrator Command Prompt (right click Command Prompt and select "Run as Administrator"), then run the following command:
```powershell
-choco install -y nodejs-lts openjdk11
+choco install -y nodejs-lts microsoft-openjdk11
```
If you have already installed Node on your system, make sure it is Node 14 or newer. If you already have a JDK on your system, we recommend JDK11. You may encounter problems using higher JDK versions.
> You can find additional installation options on [Node's Downloads page](https://nodejs.org/en/download/).
-> If you're using the latest version of Java Development Kit, you'll need to change the Gradle version of your project so it can recognize the JDK. You can do that by going to `{project root folder}\android\gradle\wrapper\gradle-wrapper.properties` and changing the `distributionUrl` value to upgrade the Gradle version. You can check out [here the lastest releases of Gradle](https://gradle.org/releases/).
+> If you're using the latest version of Java Development Kit, you'll need to change the Gradle version of your project so it can recognize the JDK. You can do that by going to `{project root folder}\android\gradle\wrapper\gradle-wrapper.properties` and changing the `distributionUrl` value to upgrade the Gradle version. You can check out [here the latest releases of Gradle](https://gradle.org/releases/).
Android development environment
diff --git a/docs/accessibility.md b/docs/accessibility.md
index 17f444c3552..de91a016c42 100644
--- a/docs/accessibility.md
+++ b/docs/accessibility.md
@@ -161,6 +161,7 @@ In the above example method `addOne` changes the state variable `count`. As soon
- **timer** Used to represent a timer.
- **togglebutton** Used to represent a toggle button. Should be used with accessibilityState checked to indicate if the button is toggled on or off.
- **toolbar** Used to represent a tool bar (a container of action buttons or components).
+- **grid** Used with ScrollView, VirtualizedList, FlatList, or SectionList to represent a grid. Adds the in/out of grid announcements to the android GridView.
### `accessibilityState`
@@ -203,6 +204,111 @@ A Boolean value indicating whether the accessibility elements contained within t
For example, in a window that contains sibling views `A` and `B`, setting `accessibilityElementsHidden` to `true` on view `B` causes VoiceOver to ignore the elements in the view `B`. This is similar to the Android property `importantForAccessibility="no-hide-descendants"`.
+### `aria-valuemax`
+
+Represents the maximum value for range-based components, such as sliders and progress bars.
+
+### `aria-valuemin`
+
+Represents the maximum value for range-based components, such as sliders and progress bars.
+
+### `aria-valuenow`
+
+Represents the current value for range-based components, such as sliders and progress bars.
+
+### `aria-valuetext`
+
+Represents the textual description of the component.
+
+### `aria-busy`
+
+Indicates an element is being modified and that assistive technologies may want to wait until the changes are complete before informing the user about the update.
+
+| Type | Default |
+| ------- | ------- |
+| boolean | false |
+
+### `aria-checked`
+
+Indicates the state of a checkable element. This field can either take a boolean or the "mixed" string to represent mixed checkboxes.
+
+| Type | Default |
+| ---------------- | ------- |
+| boolean, 'mixed' | false |
+
+### `aria-disabled`
+
+Indicates that the element is perceivable but disabled, so it is not editable or otherwise operable.
+
+| Type | Default |
+| ------- | ------- |
+| boolean | false |
+
+### `aria-expanded`
+
+Indicates whether an expandable element is currently expanded or collapsed.
+
+| Type | Default |
+| ------- | ------- |
+| boolean | false |
+
+### `aria-hidden`
+
+Indicates whether the accessibility elements contained within this accessibility element are hidden.
+
+For example, in a window that contains sibling views `A` and `B`, setting `aria-hidden` to `true` on view `B` causes VoiceOver to ignore the elements in the view `B`.
+
+| Type | Default |
+| ------- | ------- |
+| boolean | false |
+
+### `aria-label`
+
+Defines a string value that labels an interactive element.
+
+| Type |
+| ------ |
+| string |
+
+### `aria-labelledby`
Android
+
+Identifies the element that labels the element it is applied to. The value of `aria-labelledby` should match the [`nativeID`](view.md#nativeid) of the related element:
+
+```jsx
+
+ Label for Input Field
+
+
+```
+
+| Type |
+| ------ |
+| string |
+
+### `aria-live`
Android
+
+Indicates that an element will be updated, and describes the types of updates the user agents, assistive technologies, and user can expect from the live region.
+
+- **off** Accessibility services should not announce changes to this view.
+- **polite** Accessibility services should announce changes to this view.
+- **assertive** Accessibility services should interrupt ongoing speech to immediately announce changes to this view.
+
+### `aria-modal`
iOS
+
+Boolean value indicating whether VoiceOver should ignore the elements within views that are siblings of the receiver.
+
+| Type | Default |
+| ------- | ------- |
+| boolean | false |
+
+### `aria-selected`
+
+Indicates whether a selectable element is currently selected or not.
+
+| Type |
+| ------- |
+| boolean |
+
### `importantForAccessibility`
Android
In the case of two overlapping UI components with the same parent, default accessibility focus can have unpredictable behavior. The `importantForAccessibility` property will resolve this by controlling if a view fires accessibility events and if it is reported to accessibility services. It can be set to `auto`, `yes`, `no` and `no-hide-descendants` (the last value will force accessibility services to ignore the component and all of its children).
diff --git a/docs/accessibilityinfo.md b/docs/accessibilityinfo.md
index 3d0555520b1..39fe88bcf58 100644
--- a/docs/accessibilityinfo.md
+++ b/docs/accessibilityinfo.md
@@ -210,7 +210,7 @@ Post a string to be announced by the screen reader with modification options. By
static getRecommendedTimeoutMillis(originalTimeout)
```
-Gets the timeout in millisecond that the user needs.
+Gets the timeout in millisecond that the user needs.
This value is set in "Time to take action (Accessibility timeout)" of "Accessibility" settings.
**Parameters:**
@@ -293,6 +293,16 @@ Query whether a screen reader is currently enabled. Returns a promise which reso
---
+### `prefersCrossFadeTransitions()`
iOS
+
+```jsx
+static prefersCrossFadeTransitions()
+```
+
+Query whether reduce motion and prefer cross-fade transitions settings are currently enabled. Returns a promise which resolves to a boolean. The result is `true` when prefer cross-fade transitions is enabled and `false` otherwise.
+
+---
+
### `removeEventListener()`
```jsx
diff --git a/docs/alert.md b/docs/alert.md
index cd332863c3b..a347205a57c 100644
--- a/docs/alert.md
+++ b/docs/alert.md
@@ -142,7 +142,7 @@ export default App;
## iOS
-On iOS you can specify any number of buttons. Each button can optionally specify a style, available options are represented by the [AlertButtonStyle](#alertbuttonstyle-ios) enum.
+On iOS you can specify any number of buttons. Each button can optionally specify a style or be emphasized, available options are represented by the [AlertButtonStyle](#alertbuttonstyle-ios) enum and the `isPreferred` field on [Buttons](alert#buttons).
## Android
@@ -293,11 +293,12 @@ Array of objects containing Alert buttons configuration.
**Objects properties:**
-| Name | Type | Description |
-| -------------------------------------- | ---------------------------------------------- | ------------------------------------------------------- |
-| text | string | Button label. |
-| onPress | function | Callback function when button is pressed. |
-| style
iOS
| [AlertButtonStyle](alert#alertbuttonstyle-ios) | Button style, on Android this property will be ignored. |
+| Name | Type | Description |
+| -------------------------------------------- | ---------------------------------------------- | ------------------------------------------------------------------------------ |
+| text | string | Button label. |
+| onPress | function | Callback function when button is pressed. |
+| style
iOS
| [AlertButtonStyle](alert#alertbuttonstyle-ios) | Button style, on Android this property will be ignored. |
+| isPreferred
iOS
| boolean | Whether button should be emphasized, on Android this property will be ignored. |
---
diff --git a/docs/build-speed.md b/docs/build-speed.md
index 7cbcacb390c..e1ed3ec0031 100644
--- a/docs/build-speed.md
+++ b/docs/build-speed.md
@@ -6,7 +6,7 @@ title: Speeding up your Build phase
Building your React Native app could be **expensive** and take several minutes of developers time.
This can be problematic as your project grows and generally in bigger organizations with multiple React Native developers.
-With [the New React Native Architecture](/docs/next/new-architecture-app-modules-android), this problem is becoming more critical
+With [the New React Native Architecture](new-architecture-app-intro), this problem is becoming more critical
as you might have to compile some native C++ code in your project with the Android NDK in addition to the native code already necessary for the iOS and Android platforms.
To mitigate this performance hit, this page shares some suggestions on how to **improve your build time**.
@@ -79,12 +79,12 @@ On Mac OS, we can install ccache with `brew install ccache`.
Once installed you can configure it as follows to cache NDK compile results:
```
-ln -s ccache /usr/local/bin/gcc
-ln -s ccache /usr/local/bin/g++
-ln -s ccache /usr/local/bin/cc
-ln -s ccache /usr/local/bin/c++
-ln -s ccache /usr/local/bin/clang
-ln -s ccache /usr/local/bin/clang++
+ln -s $(which ccache) /usr/local/bin/gcc
+ln -s $(which ccache) /usr/local/bin/g++
+ln -s $(which ccache) /usr/local/bin/cc
+ln -s $(which ccache) /usr/local/bin/c++
+ln -s $(which ccache) /usr/local/bin/clang
+ln -s $(which ccache) /usr/local/bin/clang++
```
This will create symbolic links to `ccache` inside the `/usr/local/bin/` which are called `gcc`, `g++`, and so on.
diff --git a/docs/colors.md b/docs/colors.md
index b396bfbfb38..835f8a897cf 100644
--- a/docs/colors.md
+++ b/docs/colors.md
@@ -26,14 +26,27 @@ React Native supports `rgb()` and `rgba()` in both hexadecimal and functional no
- `'#f0ff'` (#rgba)
- `'#ff00ff00'` (#rrggbbaa)
- `'rgb(255, 0, 255)'`
+- `'rgb(255 0 255)'`
- `'rgba(255, 0, 255, 1.0)'`
+- `'rgba(255 0 255 / 1.0)'`
### Hue Saturation Lightness (HSL)
React Native supports `hsl()` and `hsla()` in functional notation:
- `'hsl(360, 100%, 100%)'`
+- `'hsl(360 100% 100%)'`
- `'hsla(360, 100%, 100%, 1.0)'`
+- `'hsla(360 100% 100% / 1.0)'`
+
+### Hue Whiteness Blackness (HWB)
+
+React Native supports `hwb()` in functional notation:
+
+- `'hwb(0, 0%, 100%)'`
+- `'hwb(360, 100%, 100%)'`
+- `'hwb(0 0% 0%)'`
+- `'hwb(70 50% 0%)'`
### Color ints
diff --git a/docs/flatlist.md b/docs/flatlist.md
index 0398e1181c3..9314678a537 100644
--- a/docs/flatlist.md
+++ b/docs/flatlist.md
@@ -245,11 +245,11 @@ For simplicity, data is a plain array. If you want to use something else, like a
### `ItemSeparatorComponent`
-Rendered in between each item, but not at the top or bottom. By default, `highlighted` and `leadingItem` props are provided. `renderItem` provides `separators.highlight`/`unhighlight` which will update the `highlighted` prop, but you can also add custom props with `separators.updateProps`.
+Rendered in between each item, but not at the top or bottom. By default, `highlighted` and `leadingItem` props are provided. `renderItem` provides `separators.highlight`/`unhighlight` which will update the `highlighted` prop, but you can also add custom props with `separators.updateProps`. Can be a React Component (e.g. `SomeComponent`), or a React element (e.g. ``).
-| Type |
-| --------- |
-| component |
+| Type |
+| ---------------------------- |
+| component, function, element |
---
diff --git a/docs/flexbox.md b/docs/flexbox.md
index 4ba10df006b..f4b44da084c 100644
--- a/docs/flexbox.md
+++ b/docs/flexbox.md
@@ -16,7 +16,7 @@ The defaults are different, with `flexDirection` defaulting to `column` instead
[`flex`](layout-props#flex) will define how your items are going to **“fill”** over the available space along your main axis. Space will be divided according to each element's flex property.
-In the following example, the red, yellow, and green views are all children in the container view that has `flex: 1` set. The red view uses `flex: 1` , the yellow view uses `flex: 2`, and the green view uses `flex: 3` . **1+2+3 = 6**, which means that the red view will get `1/6` of the space, the yellow `2/6` of the space, and the green `3/6` of the space.
+In the following example, the red, orange, and green views are all children in the container view that has `flex: 1` set. The red view uses `flex: 1` , the orange view uses `flex: 2`, and the green view uses `flex: 3` . **1+2+3 = 6**, which means that the red view will get `1/6` of the space, the orange `2/6` of the space, and the green `3/6` of the space.
```SnackPlayer name=Flex%20Example
import React from "react";
diff --git a/docs/headless-js-android.md b/docs/headless-js-android.md
index 61bf1181e3b..10c712c4a55 100644
--- a/docs/headless-js-android.md
+++ b/docs/headless-js-android.md
@@ -56,7 +56,7 @@ public class MyTaskService extends HeadlessJsTaskService {
"SomeTaskName",
Arguments.fromBundle(extras),
5000, // timeout for the task
- false // optional: defines whether or not the task is allowed in foreground. Default is false
+ false // optional: defines whether or not the task is allowed in foreground. Default is false
);
}
return null;
@@ -79,10 +79,10 @@ class MyTaskService : HeadlessJsTaskService() {
override fun getTaskConfig(intent: Intent): HeadlessJsTaskConfig? {
return intent.extras?.let {
HeadlessJsTaskConfig(
- "SomeT askName",
+ "SomeTaskName",
Arguments.fromBundle(it),
5000, // timeout for the task
- false // optional: defines whether or not the task is allowed in foreground.
+ false // optional: defines whether or not the task is allowed in foreground.
// Default is false
)
}
diff --git a/docs/hermes.md b/docs/hermes.md
index cd6b6c9eaf4..553e74e803d 100644
--- a/docs/hermes.md
+++ b/docs/hermes.md
@@ -9,9 +9,78 @@ import M1Cocoapods from './\_markdown-m1-cocoapods.mdx';
-[Hermes](https://hermesengine.dev) is an open-source JavaScript engine optimized for React Native. For many apps, enabling Hermes will result in improved start-up time, decreased memory usage, and smaller app size. At this time Hermes is an **opt-in** React Native feature, and this guide explains how to enable it.
+[Hermes](https://hermesengine.dev) is an open-source JavaScript engine optimized for React Native. For many apps, enabling Hermes will result in improved start-up time, decreased memory usage, and smaller app size.
+As of React Native 0.70, Hermes is the default engine and no additional configuration is required to enable it.
-First, ensure you're using at least version 0.60.4 of React Native.
+## Bundled Hermes
+
+Starting with React Native 0.69.0, every version of React Native will come with a **bundled version** of Hermes.
+We will be building a version of Hermes for you whenever we release a new version of React Native. This will make sure you're consuming a version of Hermes which is fully compatible with the version of React Native you're using.
+
+Historically, we had problems with matching versions of Hermes with versions of React Native. This fully eliminates this problem, and offers users a JS engine that is compatible with the specific React Native version.
+
+This change is fully transparent to users of React Native. You can still enable/disable Hermes using the command described in this page.
+You can [read more about the technical implementation on this page](/architecture/bundled-hermes).
+
+## Confirming Hermes is in use
+
+If you've recently created a new app from scratch, you should see if Hermes is enabled in the welcome view:
+
+![Where to find JS engine status in AwesomeProject](/docs/assets/HermesApp.jpg)
+
+A `HermesInternal` global variable will be available in JavaScript that can be used to verify that Hermes is in use:
+
+```jsx
+const isHermes = () => !!global.HermesInternal;
+```
+
+:::caution
+If you are using a non-standard way of loading the JS bundle, it is possible that the `HermesInternal` variable is available but you aren't using the highly optimised pre-compiled bytecode.
+Confirm that you are using the `.hbc` file and also benchmark the before/after as detailed below.
+:::
+
+To see the benefits of Hermes, try making a release build/deployment of your app to compare. For example:
+
+```shell
+$ npx react-native run-android --variant release
+```
+
+or for iOS:
+
+```shell
+$ npx react-native run-ios --configuration Release
+```
+
+This will compile JavaScript to bytecode during build time which will improve your app's startup speed on device.
+
+## Debugging JS on Hermes using Google Chrome's DevTools
+
+Hermes supports the Chrome debugger by implementing the Chrome inspector protocol. This means Chrome's tools can be used to directly debug JavaScript running on Hermes, on an emulator or on a real, physical, device.
+
+:::info
+Note that this is very different with the "Remote JS Debugging" from the In-App Developer Menu documented in the [Debugging](debugging#debugging-using-a-custom-javascript-debugger) section, which actually runs the JS code on Chrome's V8 on your development machine (laptop or desktop).
+:::
+
+Chrome connects to Hermes running on device via Metro, so you'll need to know where Metro is listening. Typically this will be on `localhost:8081`, but this is [configurable](https://facebook.github.io/metro/docs/configuration). When running `yarn start` the address is written to stdout on startup.
+
+Once you know where the Metro server is listening, you can connect with Chrome using the following steps:
+
+1. Navigate to `chrome://inspect` in a Chrome browser instance.
+
+2. Use the `Configure...` button to add the Metro server address (typically `localhost:8081` as described above).
+
+![Configure button in Chrome DevTools devices page](/docs/assets/HermesDebugChromeConfig.png)
+
+![Dialog for adding Chrome DevTools network targets](/docs/assets/HermesDebugChromeMetroAddress.png)
+
+3. You should now see a "Hermes React Native" target with an "inspect" link which can be used to bring up debugger. If you don't see the "inspect" link, make sure the Metro server is running. ![Target inspect link](/docs/assets/HermesDebugChromeInspect.png)
+
+4. You can now use the Chrome debug tools. For example, to breakpoint the next time some JavaScript is run, click on the pause button and trigger an action in your app which would cause JavaScript to execute. ![Pause button in debug tools](/docs/assets/HermesDebugChromePause.png)
+
+## Enabling Hermes on Older Versions of React Native
+
+Hermes is the default engine as of React Native 0.70. This section explains how to enable Hermes on older versions of React Native.
+First, ensure you're using at least version 0.60.4 of React Native to enable Hermes on Android or 0.64 of React Native to enable Hermes on iOS.
If you have an existing app based on an earlier version of React Native, you will have to upgrade it first. See [Upgrading to new React Native Versions](/docs/upgrading) for how to do this. After upgrading the app, make sure everything works before trying to switch to Hermes.
@@ -24,8 +93,6 @@ Version mismatch can result in instant crash of your apps in the worst case scen
Hermes requires [Microsoft Visual C++ 2015 Redistributable](https://www.microsoft.com/en-us/download/details.aspx?id=48145).
:::
-## Enabling Hermes
-
### Android
Edit your `android/app/build.gradle` file and make the change illustrated below:
@@ -36,6 +103,18 @@ Edit your `android/app/build.gradle` file and make the change illustrated below:
- enableHermes: false // clean and rebuild if changing
+ enableHermes: true // clean and rebuild if changing
]
+
+// ...
+
+if (enableHermes) {
+- def hermesPath = "../../node_modules/hermes-engine/android/";
+- debugImplementation files(hermesPath + "hermes-debug.aar")
+- releaseImplementation files(hermesPath + "hermes-release.aar")
++ //noinspection GradleDynamicVersion
++ implementation("com.facebook.react:hermes-engine:+") { // From node_modules
++ exclude group:'com.facebook.fbjni'
++ }
+} else {
```
Also, if you're using ProGuard, you will need to add these rules in `proguard-rules.pro` :
@@ -93,67 +172,32 @@ That's it! You should now be able to develop and deploy your app as usual:
$ npx react-native run-ios
```
-## Confirming Hermes is in use
+## Switching back to JavaScriptCore
-If you've recently created a new app from scratch, you should see if Hermes is enabled in the welcome view:
+React Native also supports using JavaScriptCore as the JS engine. Follow these instructions to opt-out of Hermes.
-![Where to find JS engine status in AwesomeProject](/docs/assets/HermesApp.jpg)
+### Android
-A `HermesInternal` global variable will be available in JavaScript that can be used to verify that Hermes is in use:
+Edit your `android/app/build.gradle` file and make the change illustrated below:
-```jsx
-const isHermes = () => !!global.HermesInternal;
+```diff
+ project.ext.react = [
+- enableHermes: true, // clean and rebuild if changing
++ enableHermes: false, // clean and rebuild if changing
+ ]
```
-:::caution
-If you are using a non-standard way of loading the JS bundle, it is possible that the `HermesInternal` variable is available but you aren't using the highly optimised pre-compiled bytecode.
-Confirm that you are using the `.hbc` file and also benchmark the before/after as detailed below.
-:::
-
-To see the benefits of Hermes, try making a release build/deployment of your app to compare. For example:
-
-```shell
-$ npx react-native run-android --variant release
-```
+### iOS
-or for iOS:
+Edit your `ios/Podfile` file and make the change illustrated below:
-```shell
-$ npx react-native run-ios --configuration Release
+```diff
+ use_react_native!(
+ :path => config[:reactNativePath],
+ # Hermes is now enabled by default. Disable by setting this flag to false.
+ # Upcoming versions of React Native may rely on get_default_flags(), but
+ # we make it explicit here to aid in the React Native upgrade process.
+- :hermes_enabled => flags[:hermes_enabled],
++ :hermes_enabled => false,
+ )
```
-
-This will compile JavaScript to bytecode during build time which will improve your app's startup speed on device.
-
-## Bundled Hermes
-
-Starting with React Native 0.69.0, every version of React Native will come with a **bundled version** of Hermes.
-We will be building a version of Hermes for you whenever we release a new version of React Native. This will make sure you're consuming a version of Hermes which is fully compatible with the version of React Native you're using.
-
-Historically, we had problems with matching versions of Hermes with versions of React Native. This fully eliminates this problem, and offers users a JS engine that is compatible with the specific React Native version.
-
-This change is fully transparent to users of React Native. You can still enable/disable Hermes using the command described in this page.
-You can [read more about the technical implementation on this page](/architecture/bundled-hermes).
-
-## Debugging JS on Hermes using Google Chrome's DevTools
-
-Hermes supports the Chrome debugger by implementing the Chrome inspector protocol. This means Chrome's tools can be used to directly debug JavaScript running on Hermes, on an emulator or on a real, physical, device.
-
-:::info
-Note that this is very different with the "Remote JS Debugging" from the In-App Developer Menu documented in the [Debugging](debugging#debugging-using-a-custom-javascript-debugger) section, which actually runs the JS code on Chrome's V8 on your development machine (laptop or desktop).
-:::
-
-Chrome connects to Hermes running on device via Metro, so you'll need to know where Metro is listening. Typically this will be on `localhost:8081`, but this is [configurable](https://facebook.github.io/metro/docs/configuration). When running `yarn start` the address is written to stdout on startup.
-
-Once you know where the Metro server is listening, you can connect with Chrome using the following steps:
-
-1. Navigate to `chrome://inspect` in a Chrome browser instance.
-
-2. Use the `Configure...` button to add the Metro server address (typically `localhost:8081` as described above).
-
-![Configure button in Chrome DevTools devices page](/docs/assets/HermesDebugChromeConfig.png)
-
-![Dialog for adding Chrome DevTools network targets](/docs/assets/HermesDebugChromeMetroAddress.png)
-
-3. You should now see a "Hermes React Native" target with an "inspect" link which can be used to bring up debugger. If you don't see the "inspect" link, make sure the Metro server is running. ![Target inspect link](/docs/assets/HermesDebugChromeInspect.png)
-
-4. You can now use the Chrome debug tools. For example, to breakpoint the next time some JavaScript is run, click on the pause button and trigger an action in your app which would cause JavaScript to execute. ![Pause button in debug tools](/docs/assets/HermesDebugChromePause.png)
diff --git a/docs/image.md b/docs/image.md
index 82c8349770f..ad09cb513e1 100644
--- a/docs/image.md
+++ b/docs/image.md
@@ -259,6 +259,19 @@ When the image is resized, the corners of the size specified by `capInsets` will
---
+### `crossOrigin`
+
+A string of a keyword specifying the CORS mode to use when fetching the image resource. It works similar to crossorigin attribute in HTML.
+
+- `anonymous`: No exchange of user credentials in the image request.
+- `use-credentials`: Sets `Access-Control-Allow-Credentials` header value to `true` in the image request.
+
+| Type | Default |
+| ---------------------------------------- | ------------- |
+| enum(`'anonymous'`, `'use-credentials'`) | `'anonymous'` |
+
+---
+
### `defaultSource`
A static image to display while loading the image source.
@@ -273,7 +286,7 @@ A static image to display while loading the image source.
### `fadeDuration`
Android
-Fade animation duration in miliseconds.
+Fade animation duration in milliseconds.
| Type | Default |
| ------ | ------- |
@@ -281,6 +294,16 @@ Fade animation duration in miliseconds.
---
+### `height`
+
+Height of the image component.
+
+| Type |
+| ------ |
+| number |
+
+---
+
### `loadingIndicatorSource`
Similarly to `source`, this property represents the resource used to render the loading indicator for the image. The loading indicator is displayed until image is ready to be displayed, typically after the image is downloaded.
@@ -393,6 +416,16 @@ More details about `resize` and `scale` can be found at http://frescolib.org/doc
---
+### `referrerPolicy`
+
+A string indicating which referrer to use when fetching the resource. Sets the value for `Referrer-Policy` header in the image request. Works similar to `referrerpolicy` attribute in HTML.
+
+| Type | Default |
+| ---------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- | ----------------------------------- |
+| enum(`'no-referrer'`, `'no-referrer-when-downgrade'`, `'origin'`, `'origin-when-cross-origin'`, `'same-origin'`, `'strict-origin'`, `'strict-origin-when-cross-origin'`, `'unsafe-url'`) | `'strict-origin-when-cross-origin'` |
+
+---
+
### `resizeMode`
Determines how to resize the image when the frame doesn't match the raw image dimensions. Defaults to `cover`.
@@ -430,6 +463,34 @@ The currently supported formats are `png`, `jpg`, `jpeg`, `bmp`, `gif`, `webp`,
---
+### `src`
+
+A string representing the remote URL of the image. This prop has precedence over `source` prop.
+
+**Example:** `src={'https://reactnative.dev/img/tiny_logo.png'}`
+
+| Type |
+| ------ |
+| string |
+
+---
+
+### `srcSet`
+
+A string representing comma separated list of possible candidate image source. Each image source contains a URL of an image and a pixel density descriptor. If no descriptor is specified, it defaults to descriptor of `1x`.
+
+If `srcSet` does not contain a `1x` descriptor, the value in `src` is used as image source with `1x` descriptor (if provided).
+
+This prop has precedence over both the `src` and `source` props.
+
+**Example:** `srcSet={'https://reactnative.dev/img/tiny_logo.png 1x, https://reactnative.dev/img/header_logo.svg 2x'}`
+
+| Type |
+| ------ |
+| string |
+
+---
+
### `style`
| Type |
@@ -446,6 +507,26 @@ A unique identifier for this element to be used in UI Automation testing scripts
| ------ |
| string |
+---
+
+### `tintColor`
+
+Changes the color of all non-transparent pixels to the `tintColor`.
+
+| Type |
+| ------------------ |
+| [color](colors.md) |
+
+---
+
+### `width`
+
+Width of the image component.
+
+| Type |
+| ------ |
+| number |
+
## Methods
### `abortPrefetch()`
Android
diff --git a/docs/intro-react-native-components.md b/docs/intro-react-native-components.md
index 00d22878aad..54eb7f69311 100644
--- a/docs/intro-react-native-components.md
+++ b/docs/intro-react-native-components.md
@@ -1,7 +1,7 @@
---
id: intro-react-native-components
-title: Core Components and Fabric Components
-description: 'React Native lets you compose app interfaces using Fabric Components. Conveniently, it comes with a set of these components for you to get started with right now—the Core Components!'
+title: Core Components and Native Components
+description: 'React Native lets you compose app interfaces using Native Components. Conveniently, it comes with a set of these components for you to get started with right now—the Core Components!'
---
import ThemedImage from '@theme/ThemedImage';
@@ -17,17 +17,17 @@ In Android and iOS development, a **view** is the basic building block of UI: a
Just a sampling of the many views used in Android and iOS apps.
-## Fabric Components
+## Native Components
-In Android development, you write views in Kotlin or Java; in iOS development, you use Swift or Objective-C. With React Native, you can invoke these views with JavaScript using React components. At runtime, React Native creates the corresponding Android and iOS views for those components. Because React Native components are backed by the same views as Android and iOS, React Native apps look, feel, and perform like any other apps. We call these platform-backed components **Fabric Components.** [_Fabric_](architecture/fabric-renderer) is the name of the React Native renderer, therefore components that are rendered via Fabric are called Fabric Components.
+In Android development, you write views in Kotlin or Java; in iOS development, you use Swift or Objective-C. With React Native, you can invoke these views with JavaScript using React components. At runtime, React Native creates the corresponding Android and iOS views for those components. Because React Native components are backed by the same views as Android and iOS, React Native apps look, feel, and perform like any other apps. We call these platform-backed components **Native Components.**
-React Native comes with a set of essential, ready-to-use Fabric Components you can use to start building your app today. These are React Native's **Core Components**.
+React Native comes with a set of essential, ready-to-use Native Components you can use to start building your app today. These are React Native's **Core Components**.
-React Native also lets you build your own [Fabric Components](the-new-architecture/pillars-fabric-components) to suit your app’s unique needs. We also have a thriving ecosystem of these **community-contributed components.** Check out [Native Directory](https://reactnative.directory) to find what the community has been creating.
+React Native also lets you build your own Native Components for [Android](native-components-android.md) and [iOS](native-components-ios.md) to suit your app’s unique needs. We also have a thriving ecosystem of these **community-contributed components.** Check out [Native Directory](https://reactnative.directory) to find what the community has been creating.
## Core Components
-React Native has many Core Components for everything form controls to activity indicators. You can find them all [documented in the API section](components-and-apis). You will mostly work with the following Core Components:
+React Native has many Core Components for everything from controls to activity indicators. You can find them all [documented in the API section](components-and-apis). You will mostly work with the following Core Components:
| React Native UI Component | Android View | iOS View | Web Analog | Description |
| ------------------------- | -------------- | ---------------- | ----------------------- | ----------------------------------------------------------------------------------------------------- |
diff --git a/docs/introduction.md b/docs/introduction.md
index 1e4c9abbdbe..f77b91adf9b 100644
--- a/docs/introduction.md
+++ b/docs/introduction.md
@@ -8,7 +8,7 @@ import Tabs from '@theme/Tabs'; import TabItem from '@theme/TabItem'; import con
- Welcome to the very start of your React Native journey! If you're looking for environment setup instructions, they've moved to their own section. Continue reading for an introduction to the documentation, Fabric Components, React, and more!
+ Welcome to the very start of your React Native journey! If you're looking for environment setup instructions, they've moved to their own section. Continue reading for an introduction to the documentation, Native Components, React, and more!
@@ -136,4 +136,4 @@ Menu paths are written in bold and use carets to navigate submenus. Example: **A
---
-Now that you know how this guide works, it's time to get to know the foundation of React Native: [Fabric Components](intro-react-native-components.md).
+Now that you know how this guide works, it's time to get to know the foundation of React Native: [Native Components](intro-react-native-components.md).
diff --git a/docs/layout-props.md b/docs/layout-props.md
index 3f92f1af490..c39be8674cb 100644
--- a/docs/layout-props.md
+++ b/docs/layout-props.md
@@ -60,8 +60,8 @@ const App = () => {
{squares.map(elem => elem)}
-
-
+
+
{shopify.map(renderApp)}
+
+
+
+
+
+ With one of the largest React Native code bases in the world, Wix
+ has a long history with the development community and maintains a
+ variety of open source projects. Wix is an early adopter of React
+ Native and uses it for its entire suite of applications.
+
+
{wix.map(renderApp)}
+
Users Showcase
diff --git a/website/src/pages/versions.js b/website/src/pages/versions.js
index dddd45a2eb5..ad2f2485e74 100644
--- a/website/src/pages/versions.js
+++ b/website/src/pages/versions.js
@@ -1,5 +1,5 @@
/**
- * Copyright (c) Facebook, Inc. and its affiliates.
+ * Copyright (c) Meta Platforms, Inc. and affiliates.
*
* This source code is licensed under the MIT license found in the
* LICENSE file in the root directory of this source tree.
@@ -60,21 +60,18 @@ const Versions = () => {
-Fade animation duration in miliseconds.
+Fade animation duration in milliseconds.
| Type | Default |
| ------ | ------- |
diff --git a/website/versioned_docs/version-0.69/more-resources.md b/website/versioned_docs/version-0.69/more-resources.md
index 2c5234e0167..6065677fc11 100644
--- a/website/versioned_docs/version-0.69/more-resources.md
+++ b/website/versioned_docs/version-0.69/more-resources.md
@@ -12,7 +12,7 @@ There’s always more to learn: developer workflows, shipping to app stores, int
- [Design and layout your app](flexbox)
- [Debug your app](debugging)
- [Make your app cross platform](platform-specific-code)
-- [Get involved in the React Native community](/help)
+- [Get involved in the React Native community](/community/overview)
## Dive deep
diff --git a/website/versioned_docs/version-0.69/react-18-and-react-native.md b/website/versioned_docs/version-0.69/react-18-and-react-native.md
index 6fe75cf445e..2755ab0b0da 100644
--- a/website/versioned_docs/version-0.69/react-18-and-react-native.md
+++ b/website/versioned_docs/version-0.69/react-18-and-react-native.md
@@ -104,7 +104,7 @@ On iOS, you'll have access to the `concurrentRootEnabled` method on your `AppDel
///
/// @see: https://reactjs.org/blog/2022/03/29/react-v18.html
/// @note: This requires to be rendering on Fabric (i.e. on the New Architecture).
-/// @return: `true` if the `concurrentRoot` feture is enabled. Otherwise, it returns `false`.
+/// @return: `true` if the `concurrentRoot` feature is enabled. Otherwise, it returns `false`.
- (BOOL)concurrentRootEnabled
{
// Switch this bool to turn on and off the concurrent root
diff --git a/website/versioned_docs/version-0.69/typescript.md b/website/versioned_docs/version-0.69/typescript.md
index b62a4a2dc5a..b882d9a69ed 100644
--- a/website/versioned_docs/version-0.69/typescript.md
+++ b/website/versioned_docs/version-0.69/typescript.md
@@ -78,14 +78,14 @@ ignite new MyTSProject
```shell
-npm install -D typescript @types/jest @types/react @types/react-native @types/react-test-renderer
+npm install -D typescript @types/jest @types/react @types/react-native @types/react-test-renderer @tsconfig/react-native
```
```shell
-yarn add -D typescript @types/jest @types/react @types/react-native @types/react-test-renderer
+yarn add -D typescript @types/jest @types/react @types/react-native @types/react-test-renderer @tsconfig/react-native
```
@@ -95,24 +95,7 @@ yarn add -D typescript @types/jest @types/react @types/react-native @types/react
```json
{
- "compilerOptions": {
- "allowJs": true,
- "allowSyntheticDefaultImports": true,
- "esModuleInterop": true,
- "isolatedModules": true,
- "jsx": "react-native",
- "lib": ["es2017"],
- "moduleResolution": "node",
- "noEmit": true,
- "strict": true,
- "target": "esnext"
- },
- "exclude": [
- "node_modules",
- "babel.config.js",
- "metro.config.js",
- "jest.config.js"
- ]
+ "extends": "@tsconfig/react-native/tsconfig.json"
}
```
diff --git a/website/versioned_docs/version-0.70/_getting-started-macos-ios.md b/website/versioned_docs/version-0.70/_getting-started-macos-ios.md
index 9860a4cc4ba..840b38b5803 100644
--- a/website/versioned_docs/version-0.70/_getting-started-macos-ios.md
+++ b/website/versioned_docs/version-0.70/_getting-started-macos-ios.md
@@ -2,7 +2,7 @@ import M1Cocoapods from './\_markdown-m1-cocoapods.mdx'; import RemoveGlobalCLI
## Installing dependencies
-You will need Node, Watchman, the React Native command line interface, Xcode and CocoaPods.
+You will need Node, Watchman, the React Native command line interface, a Ruby version manager, Xcode and CocoaPods.
While you can use any editor of your choice to develop your app, you will need to install Xcode in order to set up the necessary tooling to build your React Native app for iOS.
@@ -19,6 +19,31 @@ If you have already installed Node on your system, make sure it is Node 14 or ne
[Watchman](https://facebook.github.io/watchman) is a tool by Facebook for watching changes in the filesystem. It is highly recommended you install it for better performance.
+### Ruby
+
+React Native uses a `.ruby-version` file to make sure that your version of Ruby is aligned with what is needed. Currently, macOS 12.5.1 is shipped with Ruby 2.6.8, which is **not** what is required by React Native. Our suggestion is to install a Ruby version manager and to install the proper version of Ruby in your system.
+
+Some common Ruby version manager are:
+
+- [rbenv](https://github.com/rbenv/rbenv)
+- [RVM](https://rvm.io/)
+- [chruby](https://github.com/postmodern/chruby)
+- [asdf-vm](https://github.com/asdf-vm) with the [asdf-ruby](https://github.com/asdf-vm/asdf-ruby) plugin
+
+To check what is your current version of Ruby, you can run this command:
+
+```
+ruby --version
+```
+
+React Native uses [this version](https://github.com/facebook/react-native/blob/main/template/_ruby-version) of Ruby. You can also find which version your specific project needs in the `.ruby-version` file at root of your RN project.
+
+### Bundler
+
+[Bundler](https://bundler.io/) is a Ruby gem that helps managing the Ruby dependencies of your project. We need Ruby to install Cocoapods and using Bundler will make sure that all the dependencies are aligned and that the project works properly.
+
+If you want to learn more about why we need this tool, you can read [this article](https://bundler.io/guides/rationale.html#bundlers-purpose-and-rationale).
+
### Xcode
The easiest way to install Xcode is via the [Mac App Store](https://itunes.apple.com/us/app/xcode/id497799835?mt=12). Installing Xcode will also install the iOS Simulator and all the necessary tools to build your iOS app.
@@ -39,14 +64,6 @@ To install a simulator, open Xcode > Preferences... and select
[CocoaPods](https://cocoapods.org/) is built with Ruby and it will be installable with the default Ruby available on macOS.
-Using the default Ruby available on macOS will require you to use `sudo` when installing gems. (This is only an issue for the duration of the gem installation, though.)
-
-```shell
-sudo gem install cocoapods
-```
-
-Otherwise you can use a Ruby version manager, such as `rbenv`. Apps created with the command `npx react-native init` described below are configured to work well with `rbenv` and will pick the correct Ruby version requested by the template.
-
For more information, please visit [CocoaPods Getting Started guide](https://guides.cocoapods.org/using/getting-started.html).
@@ -67,6 +84,17 @@ npx react-native init AwesomeProject
This is not necessary if you are integrating React Native into an existing application, if you "ejected" from Expo, or if you're adding iOS support to an existing React Native project (see [Integration with Existing Apps](integration-with-existing-apps.md)). You can also use a third-party CLI to init your React Native app, such as [Ignite CLI](https://github.com/infinitered/ignite).
+:::info
+
+If you are having trouble with iOS, try to reinstall the dependencies by running:
+
+1. `cd ios` to navigate to the
+2. `bundle install` to install Bundler
+ 1. If needed: install a [Ruby Version Manager](#ruby) and update the Ruby version
+3. `bundle exec pod install` to install the iOS dependencies.
+
+:::
+
### [Optional] Using a specific version or template
If you want to start a new project with a specific React Native version, you can use the `--version` argument:
diff --git a/website/versioned_docs/version-0.70/_getting-started-windows-android.md b/website/versioned_docs/version-0.70/_getting-started-windows-android.md
index 038a898e240..ce03181e4ab 100644
--- a/website/versioned_docs/version-0.70/_getting-started-windows-android.md
+++ b/website/versioned_docs/version-0.70/_getting-started-windows-android.md
@@ -24,7 +24,7 @@ If you have already installed Node on your system, make sure it is Node 14 or ne
> You can find additional installation options on [Node's Downloads page](https://nodejs.org/en/download/).
-> If you're using the latest version of Java Development Kit, you'll need to change the Gradle version of your project so it can recognize the JDK. You can do that by going to `{project root folder}\android\gradle\wrapper\gradle-wrapper.properties` and changing the `distributionUrl` value to upgrade the Gradle version. You can check out [here the lastest releases of Gradle](https://gradle.org/releases/).
+> If you're using the latest version of Java Development Kit, you'll need to change the Gradle version of your project so it can recognize the JDK. You can do that by going to `{project root folder}\android\gradle\wrapper\gradle-wrapper.properties` and changing the `distributionUrl` value to upgrade the Gradle version. You can check out [here the latest releases of Gradle](https://gradle.org/releases/).
Android development environment
diff --git a/website/versioned_docs/version-0.70/build-speed.md b/website/versioned_docs/version-0.70/build-speed.md
index 7cbcacb390c..129423924d4 100644
--- a/website/versioned_docs/version-0.70/build-speed.md
+++ b/website/versioned_docs/version-0.70/build-speed.md
@@ -6,7 +6,7 @@ title: Speeding up your Build phase
Building your React Native app could be **expensive** and take several minutes of developers time.
This can be problematic as your project grows and generally in bigger organizations with multiple React Native developers.
-With [the New React Native Architecture](/docs/next/new-architecture-app-modules-android), this problem is becoming more critical
+With [the New React Native Architecture](new-architecture-app-modules-android), this problem is becoming more critical
as you might have to compile some native C++ code in your project with the Android NDK in addition to the native code already necessary for the iOS and Android platforms.
To mitigate this performance hit, this page shares some suggestions on how to **improve your build time**.
diff --git a/website/versioned_docs/version-0.70/flatlist.md b/website/versioned_docs/version-0.70/flatlist.md
index 0398e1181c3..9314678a537 100644
--- a/website/versioned_docs/version-0.70/flatlist.md
+++ b/website/versioned_docs/version-0.70/flatlist.md
@@ -245,11 +245,11 @@ For simplicity, data is a plain array. If you want to use something else, like a
### `ItemSeparatorComponent`
-Rendered in between each item, but not at the top or bottom. By default, `highlighted` and `leadingItem` props are provided. `renderItem` provides `separators.highlight`/`unhighlight` which will update the `highlighted` prop, but you can also add custom props with `separators.updateProps`.
+Rendered in between each item, but not at the top or bottom. By default, `highlighted` and `leadingItem` props are provided. `renderItem` provides `separators.highlight`/`unhighlight` which will update the `highlighted` prop, but you can also add custom props with `separators.updateProps`. Can be a React Component (e.g. `SomeComponent`), or a React element (e.g. ``).
-| Type |
-| --------- |
-| component |
+| Type |
+| ---------------------------- |
+| component, function, element |
---
diff --git a/website/versioned_docs/version-0.70/headless-js-android.md b/website/versioned_docs/version-0.70/headless-js-android.md
index 61bf1181e3b..10c712c4a55 100644
--- a/website/versioned_docs/version-0.70/headless-js-android.md
+++ b/website/versioned_docs/version-0.70/headless-js-android.md
@@ -56,7 +56,7 @@ public class MyTaskService extends HeadlessJsTaskService {
"SomeTaskName",
Arguments.fromBundle(extras),
5000, // timeout for the task
- false // optional: defines whether or not the task is allowed in foreground. Default is false
+ false // optional: defines whether or not the task is allowed in foreground. Default is false
);
}
return null;
@@ -79,10 +79,10 @@ class MyTaskService : HeadlessJsTaskService() {
override fun getTaskConfig(intent: Intent): HeadlessJsTaskConfig? {
return intent.extras?.let {
HeadlessJsTaskConfig(
- "SomeT askName",
+ "SomeTaskName",
Arguments.fromBundle(it),
5000, // timeout for the task
- false // optional: defines whether or not the task is allowed in foreground.
+ false // optional: defines whether or not the task is allowed in foreground.
// Default is false
)
}
diff --git a/website/versioned_docs/version-0.70/hermes.md b/website/versioned_docs/version-0.70/hermes.md
index cd6b6c9eaf4..553e74e803d 100644
--- a/website/versioned_docs/version-0.70/hermes.md
+++ b/website/versioned_docs/version-0.70/hermes.md
@@ -9,9 +9,78 @@ import M1Cocoapods from './\_markdown-m1-cocoapods.mdx';
-[Hermes](https://hermesengine.dev) is an open-source JavaScript engine optimized for React Native. For many apps, enabling Hermes will result in improved start-up time, decreased memory usage, and smaller app size. At this time Hermes is an **opt-in** React Native feature, and this guide explains how to enable it.
+[Hermes](https://hermesengine.dev) is an open-source JavaScript engine optimized for React Native. For many apps, enabling Hermes will result in improved start-up time, decreased memory usage, and smaller app size.
+As of React Native 0.70, Hermes is the default engine and no additional configuration is required to enable it.
-First, ensure you're using at least version 0.60.4 of React Native.
+## Bundled Hermes
+
+Starting with React Native 0.69.0, every version of React Native will come with a **bundled version** of Hermes.
+We will be building a version of Hermes for you whenever we release a new version of React Native. This will make sure you're consuming a version of Hermes which is fully compatible with the version of React Native you're using.
+
+Historically, we had problems with matching versions of Hermes with versions of React Native. This fully eliminates this problem, and offers users a JS engine that is compatible with the specific React Native version.
+
+This change is fully transparent to users of React Native. You can still enable/disable Hermes using the command described in this page.
+You can [read more about the technical implementation on this page](/architecture/bundled-hermes).
+
+## Confirming Hermes is in use
+
+If you've recently created a new app from scratch, you should see if Hermes is enabled in the welcome view:
+
+![Where to find JS engine status in AwesomeProject](/docs/assets/HermesApp.jpg)
+
+A `HermesInternal` global variable will be available in JavaScript that can be used to verify that Hermes is in use:
+
+```jsx
+const isHermes = () => !!global.HermesInternal;
+```
+
+:::caution
+If you are using a non-standard way of loading the JS bundle, it is possible that the `HermesInternal` variable is available but you aren't using the highly optimised pre-compiled bytecode.
+Confirm that you are using the `.hbc` file and also benchmark the before/after as detailed below.
+:::
+
+To see the benefits of Hermes, try making a release build/deployment of your app to compare. For example:
+
+```shell
+$ npx react-native run-android --variant release
+```
+
+or for iOS:
+
+```shell
+$ npx react-native run-ios --configuration Release
+```
+
+This will compile JavaScript to bytecode during build time which will improve your app's startup speed on device.
+
+## Debugging JS on Hermes using Google Chrome's DevTools
+
+Hermes supports the Chrome debugger by implementing the Chrome inspector protocol. This means Chrome's tools can be used to directly debug JavaScript running on Hermes, on an emulator or on a real, physical, device.
+
+:::info
+Note that this is very different with the "Remote JS Debugging" from the In-App Developer Menu documented in the [Debugging](debugging#debugging-using-a-custom-javascript-debugger) section, which actually runs the JS code on Chrome's V8 on your development machine (laptop or desktop).
+:::
+
+Chrome connects to Hermes running on device via Metro, so you'll need to know where Metro is listening. Typically this will be on `localhost:8081`, but this is [configurable](https://facebook.github.io/metro/docs/configuration). When running `yarn start` the address is written to stdout on startup.
+
+Once you know where the Metro server is listening, you can connect with Chrome using the following steps:
+
+1. Navigate to `chrome://inspect` in a Chrome browser instance.
+
+2. Use the `Configure...` button to add the Metro server address (typically `localhost:8081` as described above).
+
+![Configure button in Chrome DevTools devices page](/docs/assets/HermesDebugChromeConfig.png)
+
+![Dialog for adding Chrome DevTools network targets](/docs/assets/HermesDebugChromeMetroAddress.png)
+
+3. You should now see a "Hermes React Native" target with an "inspect" link which can be used to bring up debugger. If you don't see the "inspect" link, make sure the Metro server is running. ![Target inspect link](/docs/assets/HermesDebugChromeInspect.png)
+
+4. You can now use the Chrome debug tools. For example, to breakpoint the next time some JavaScript is run, click on the pause button and trigger an action in your app which would cause JavaScript to execute. ![Pause button in debug tools](/docs/assets/HermesDebugChromePause.png)
+
+## Enabling Hermes on Older Versions of React Native
+
+Hermes is the default engine as of React Native 0.70. This section explains how to enable Hermes on older versions of React Native.
+First, ensure you're using at least version 0.60.4 of React Native to enable Hermes on Android or 0.64 of React Native to enable Hermes on iOS.
If you have an existing app based on an earlier version of React Native, you will have to upgrade it first. See [Upgrading to new React Native Versions](/docs/upgrading) for how to do this. After upgrading the app, make sure everything works before trying to switch to Hermes.
@@ -24,8 +93,6 @@ Version mismatch can result in instant crash of your apps in the worst case scen
Hermes requires [Microsoft Visual C++ 2015 Redistributable](https://www.microsoft.com/en-us/download/details.aspx?id=48145).
:::
-## Enabling Hermes
-
### Android
Edit your `android/app/build.gradle` file and make the change illustrated below:
@@ -36,6 +103,18 @@ Edit your `android/app/build.gradle` file and make the change illustrated below:
- enableHermes: false // clean and rebuild if changing
+ enableHermes: true // clean and rebuild if changing
]
+
+// ...
+
+if (enableHermes) {
+- def hermesPath = "../../node_modules/hermes-engine/android/";
+- debugImplementation files(hermesPath + "hermes-debug.aar")
+- releaseImplementation files(hermesPath + "hermes-release.aar")
++ //noinspection GradleDynamicVersion
++ implementation("com.facebook.react:hermes-engine:+") { // From node_modules
++ exclude group:'com.facebook.fbjni'
++ }
+} else {
```
Also, if you're using ProGuard, you will need to add these rules in `proguard-rules.pro` :
@@ -93,67 +172,32 @@ That's it! You should now be able to develop and deploy your app as usual:
$ npx react-native run-ios
```
-## Confirming Hermes is in use
+## Switching back to JavaScriptCore
-If you've recently created a new app from scratch, you should see if Hermes is enabled in the welcome view:
+React Native also supports using JavaScriptCore as the JS engine. Follow these instructions to opt-out of Hermes.
-![Where to find JS engine status in AwesomeProject](/docs/assets/HermesApp.jpg)
+### Android
-A `HermesInternal` global variable will be available in JavaScript that can be used to verify that Hermes is in use:
+Edit your `android/app/build.gradle` file and make the change illustrated below:
-```jsx
-const isHermes = () => !!global.HermesInternal;
+```diff
+ project.ext.react = [
+- enableHermes: true, // clean and rebuild if changing
++ enableHermes: false, // clean and rebuild if changing
+ ]
```
-:::caution
-If you are using a non-standard way of loading the JS bundle, it is possible that the `HermesInternal` variable is available but you aren't using the highly optimised pre-compiled bytecode.
-Confirm that you are using the `.hbc` file and also benchmark the before/after as detailed below.
-:::
-
-To see the benefits of Hermes, try making a release build/deployment of your app to compare. For example:
-
-```shell
-$ npx react-native run-android --variant release
-```
+### iOS
-or for iOS:
+Edit your `ios/Podfile` file and make the change illustrated below:
-```shell
-$ npx react-native run-ios --configuration Release
+```diff
+ use_react_native!(
+ :path => config[:reactNativePath],
+ # Hermes is now enabled by default. Disable by setting this flag to false.
+ # Upcoming versions of React Native may rely on get_default_flags(), but
+ # we make it explicit here to aid in the React Native upgrade process.
+- :hermes_enabled => flags[:hermes_enabled],
++ :hermes_enabled => false,
+ )
```
-
-This will compile JavaScript to bytecode during build time which will improve your app's startup speed on device.
-
-## Bundled Hermes
-
-Starting with React Native 0.69.0, every version of React Native will come with a **bundled version** of Hermes.
-We will be building a version of Hermes for you whenever we release a new version of React Native. This will make sure you're consuming a version of Hermes which is fully compatible with the version of React Native you're using.
-
-Historically, we had problems with matching versions of Hermes with versions of React Native. This fully eliminates this problem, and offers users a JS engine that is compatible with the specific React Native version.
-
-This change is fully transparent to users of React Native. You can still enable/disable Hermes using the command described in this page.
-You can [read more about the technical implementation on this page](/architecture/bundled-hermes).
-
-## Debugging JS on Hermes using Google Chrome's DevTools
-
-Hermes supports the Chrome debugger by implementing the Chrome inspector protocol. This means Chrome's tools can be used to directly debug JavaScript running on Hermes, on an emulator or on a real, physical, device.
-
-:::info
-Note that this is very different with the "Remote JS Debugging" from the In-App Developer Menu documented in the [Debugging](debugging#debugging-using-a-custom-javascript-debugger) section, which actually runs the JS code on Chrome's V8 on your development machine (laptop or desktop).
-:::
-
-Chrome connects to Hermes running on device via Metro, so you'll need to know where Metro is listening. Typically this will be on `localhost:8081`, but this is [configurable](https://facebook.github.io/metro/docs/configuration). When running `yarn start` the address is written to stdout on startup.
-
-Once you know where the Metro server is listening, you can connect with Chrome using the following steps:
-
-1. Navigate to `chrome://inspect` in a Chrome browser instance.
-
-2. Use the `Configure...` button to add the Metro server address (typically `localhost:8081` as described above).
-
-![Configure button in Chrome DevTools devices page](/docs/assets/HermesDebugChromeConfig.png)
-
-![Dialog for adding Chrome DevTools network targets](/docs/assets/HermesDebugChromeMetroAddress.png)
-
-3. You should now see a "Hermes React Native" target with an "inspect" link which can be used to bring up debugger. If you don't see the "inspect" link, make sure the Metro server is running. ![Target inspect link](/docs/assets/HermesDebugChromeInspect.png)
-
-4. You can now use the Chrome debug tools. For example, to breakpoint the next time some JavaScript is run, click on the pause button and trigger an action in your app which would cause JavaScript to execute. ![Pause button in debug tools](/docs/assets/HermesDebugChromePause.png)
diff --git a/website/versioned_docs/version-0.70/image.md b/website/versioned_docs/version-0.70/image.md
index 82c8349770f..a34361b0e1b 100644
--- a/website/versioned_docs/version-0.70/image.md
+++ b/website/versioned_docs/version-0.70/image.md
@@ -273,7 +273,7 @@ A static image to display while loading the image source.
### `fadeDuration`
Android
-Fade animation duration in miliseconds.
+Fade animation duration in milliseconds.
| Type | Default |
| ------ | ------- |
diff --git a/website/versioned_docs/version-0.70/intro-react-native-components.md b/website/versioned_docs/version-0.70/intro-react-native-components.md
index 00d22878aad..54eb7f69311 100644
--- a/website/versioned_docs/version-0.70/intro-react-native-components.md
+++ b/website/versioned_docs/version-0.70/intro-react-native-components.md
@@ -1,7 +1,7 @@
---
id: intro-react-native-components
-title: Core Components and Fabric Components
-description: 'React Native lets you compose app interfaces using Fabric Components. Conveniently, it comes with a set of these components for you to get started with right now—the Core Components!'
+title: Core Components and Native Components
+description: 'React Native lets you compose app interfaces using Native Components. Conveniently, it comes with a set of these components for you to get started with right now—the Core Components!'
---
import ThemedImage from '@theme/ThemedImage';
@@ -17,17 +17,17 @@ In Android and iOS development, a **view** is the basic building block of UI: a
Just a sampling of the many views used in Android and iOS apps.
-## Fabric Components
+## Native Components
-In Android development, you write views in Kotlin or Java; in iOS development, you use Swift or Objective-C. With React Native, you can invoke these views with JavaScript using React components. At runtime, React Native creates the corresponding Android and iOS views for those components. Because React Native components are backed by the same views as Android and iOS, React Native apps look, feel, and perform like any other apps. We call these platform-backed components **Fabric Components.** [_Fabric_](architecture/fabric-renderer) is the name of the React Native renderer, therefore components that are rendered via Fabric are called Fabric Components.
+In Android development, you write views in Kotlin or Java; in iOS development, you use Swift or Objective-C. With React Native, you can invoke these views with JavaScript using React components. At runtime, React Native creates the corresponding Android and iOS views for those components. Because React Native components are backed by the same views as Android and iOS, React Native apps look, feel, and perform like any other apps. We call these platform-backed components **Native Components.**
-React Native comes with a set of essential, ready-to-use Fabric Components you can use to start building your app today. These are React Native's **Core Components**.
+React Native comes with a set of essential, ready-to-use Native Components you can use to start building your app today. These are React Native's **Core Components**.
-React Native also lets you build your own [Fabric Components](the-new-architecture/pillars-fabric-components) to suit your app’s unique needs. We also have a thriving ecosystem of these **community-contributed components.** Check out [Native Directory](https://reactnative.directory) to find what the community has been creating.
+React Native also lets you build your own Native Components for [Android](native-components-android.md) and [iOS](native-components-ios.md) to suit your app’s unique needs. We also have a thriving ecosystem of these **community-contributed components.** Check out [Native Directory](https://reactnative.directory) to find what the community has been creating.
## Core Components
-React Native has many Core Components for everything form controls to activity indicators. You can find them all [documented in the API section](components-and-apis). You will mostly work with the following Core Components:
+React Native has many Core Components for everything from controls to activity indicators. You can find them all [documented in the API section](components-and-apis). You will mostly work with the following Core Components:
| React Native UI Component | Android View | iOS View | Web Analog | Description |
| ------------------------- | -------------- | ---------------- | ----------------------- | ----------------------------------------------------------------------------------------------------- |
diff --git a/website/versioned_docs/version-0.70/introduction.md b/website/versioned_docs/version-0.70/introduction.md
index 1e4c9abbdbe..f77b91adf9b 100644
--- a/website/versioned_docs/version-0.70/introduction.md
+++ b/website/versioned_docs/version-0.70/introduction.md
@@ -8,7 +8,7 @@ import Tabs from '@theme/Tabs'; import TabItem from '@theme/TabItem'; import con
- Welcome to the very start of your React Native journey! If you're looking for environment setup instructions, they've moved to their own section. Continue reading for an introduction to the documentation, Fabric Components, React, and more!
+ Welcome to the very start of your React Native journey! If you're looking for environment setup instructions, they've moved to their own section. Continue reading for an introduction to the documentation, Native Components, React, and more!
@@ -136,4 +136,4 @@ Menu paths are written in bold and use carets to navigate submenus. Example: **A
---
-Now that you know how this guide works, it's time to get to know the foundation of React Native: [Fabric Components](intro-react-native-components.md).
+Now that you know how this guide works, it's time to get to know the foundation of React Native: [Native Components](intro-react-native-components.md).
diff --git a/website/versioned_docs/version-0.70/more-resources.md b/website/versioned_docs/version-0.70/more-resources.md
index 2f775cee371..4f99b29bdaa 100644
--- a/website/versioned_docs/version-0.70/more-resources.md
+++ b/website/versioned_docs/version-0.70/more-resources.md
@@ -12,7 +12,7 @@ There’s always more to learn: developer workflows, shipping to app stores, int
- [Design and layout your app](flexbox)
- [Debug your app](debugging)
- [Make your app cross platform](platform-specific-code)
-- [Get involved in the React Native community](/help)
+- [Get involved in the React Native community](/community/overview)
## Dive deep
diff --git a/website/versioned_docs/version-0.70/native-modules-android.md b/website/versioned_docs/version-0.70/native-modules-android.md
index df5066d7e2c..3596e0038f9 100644
--- a/website/versioned_docs/version-0.70/native-modules-android.md
+++ b/website/versioned_docs/version-0.70/native-modules-android.md
@@ -14,8 +14,6 @@ Welcome to Native Modules for Android. Please start by reading the [Native Modul
In the following guide you will create a native module, `CalendarModule`, that will allow you to access Android’s calendar APIs from JavaScript. By the end, you will be able to call `CalendarModule.createCalendarEvent('Dinner Party', 'My House');` from JavaScript, invoking a Java/Kotlin method that creates a calendar event.
-> The React Native team is currently working on a re-architecture of the Native Module system. This new system is called TurboModules, and it will help facilitate more efficient type-safe communication between JavaScript and native, without relying on the React Native bridge. It will also enable new extensions that weren't possible with the legacy Native Module system. You can read more about it [here](https://github.com/react-native-community/discussions-and-proposals/issues/40). Throughout these docs we have added notes around parts of Native Modules that will change in the TurboModules release and how you can best prepare for a smooth upgrade to TurboModules.
-
### Setup
To get started, open up the Android project within your React Native application in Android Studio. You can find your Android project here within a React Native app:
diff --git a/website/versioned_docs/version-0.70/native-modules-ios.md b/website/versioned_docs/version-0.70/native-modules-ios.md
index 433acc37cd0..ae590ad6cd2 100644
--- a/website/versioned_docs/version-0.70/native-modules-ios.md
+++ b/website/versioned_docs/version-0.70/native-modules-ios.md
@@ -13,8 +13,6 @@ Welcome to Native Modules for iOS. Please start by reading the [Native Modules I
In the following guide you will create a native module, `CalendarModule`, that will allow you to access Apple's calendar APIs from JavaScript. By the end you will be able to call `CalendarModule.createCalendarEvent('Dinner Party', 'My House');` from JavaScript, invoking a native method that creates a calendar event.
-> The React Native team is currently working on a re-architecture of the Native Module system. This new system is called TurboModules, and it will help facilitate more efficient type-safe communication between JavaScript and native, without relying on the React Native bridge. It will also enable new extensions that weren't possible with the legacy Native Module system. You can read more about it [here](https://github.com/react-native-community/discussions-and-proposals/issues/40). Throughout these docs we have added notes around parts of Native Modules that will change in the TurboModules release and how you can best prepare for a smooth upgrade to TurboModules.
-
### Setup
To get started, open up the iOS project within your React Native application in Xcode. You can find your iOS project here within a React Native app:
diff --git a/website/versioned_docs/version-0.70/new-architecture-app-intro.md b/website/versioned_docs/version-0.70/new-architecture-app-intro.md
index dc7948d4dff..5b38ab5073e 100644
--- a/website/versioned_docs/version-0.70/new-architecture-app-intro.md
+++ b/website/versioned_docs/version-0.70/new-architecture-app-intro.md
@@ -18,13 +18,7 @@ This guide is written with the expectation that you’re using the latest React
To update to the most recent version of React Native, you can run this command:
```bash
-yarn add react-native@0.70.0
-```
-
-Starting from React Native `0.69.0`, you may also need to update the version of React to 18. You can do so by using this command:
-
-```bash
-yarn add react@18.0.0
+npx react-native upgrade
```
### Android specifics
@@ -232,7 +226,7 @@ React Native supports also a local version of this file `.xcode.env.local`. This
## iOS: Use Objective-C++ (`.mm` extension)
-TurboModules can be written using Objective-C or C++. In order to support both cases, any source files that include C++ code should use the `.mm` file extension. This extension corresponds to Objective-C++, a language variant that allows for the use of a combination of C++ and Objective-C in source files.
+Turbo Native Modules can be written using Objective-C or C++. In order to support both cases, any source files that include C++ code should use the `.mm` file extension. This extension corresponds to Objective-C++, a language variant that allows for the use of a combination of C++ and Objective-C in source files.
:::info
diff --git a/website/versioned_docs/version-0.70/new-architecture-app-modules-android.md b/website/versioned_docs/version-0.70/new-architecture-app-modules-android.md
index d6dd904f477..02069ffac51 100644
--- a/website/versioned_docs/version-0.70/new-architecture-app-modules-android.md
+++ b/website/versioned_docs/version-0.70/new-architecture-app-modules-android.md
@@ -32,30 +32,20 @@ android {
// Add this block
externalNativeBuild {
- ndkBuild {
- arguments "APP_PLATFORM=android-21",
- "APP_STL=c++_shared",
- "NDK_TOOLCHAIN_VERSION=clang",
- "GENERATED_SRC_DIR=$buildDir/generated/source",
- "PROJECT_BUILD_DIR=$buildDir",
- "REACT_ANDROID_DIR=$rootDir/../node_modules/react-native/ReactAndroid",
- "REACT_ANDROID_BUILD_DIR=$rootDir/../node_modules/react-native/ReactAndroid/build",
- "NODE_MODULES_DIR=$rootDir/../node_modules"
- cFlags "-Wall", "-Werror", "-fexceptions", "-frtti", "-DWITH_INSPECTOR=1"
- cppFlags "-std=c++17"
- targets "myapplication_appmodules"
- // Fix for windows limit on number of character in file paths and in command lines
- if (Os.isFamily(Os.FAMILY_WINDOWS)) {
- arguments "NDK_APP_SHORT_COMMANDS=true"
- }
+ cmake {
+ arguments "-DPROJECT_BUILD_DIR=$buildDir",
+ "-DREACT_ANDROID_DIR=$rootDir/../node_modules/react-native/ReactAndroid",
+ "-DREACT_ANDROID_BUILD_DIR=$rootDir/../node_modules/react-native/ReactAndroid/build",
+ "-DNODE_MODULES_DIR=$rootDir/../node_modules",
+ "-DANDROID_STL=c++_shared"
}
}
}
// Add this block
externalNativeBuild {
- ndkBuild {
- path "$projectDir/src/main/jni/Android.mk"
+ cmake {
+ path "$projectDir/src/main/jni/CMakeLists.txt"
}
}
}
@@ -77,8 +67,8 @@ android {
afterEvaluate {
preBuild.dependsOn(packageReactNdkLibs)
- configureNdkBuildDebug.dependsOn(preBuild)
- configureNdkBuildRelease.dependsOn(preBuild)
+ configureCMakeRelWithDebInfo.dependsOn(preReleaseBuild)
+ configureCMakeDebug.dependsOn(preDebugBuild)
}
packagingOptions {
@@ -88,64 +78,16 @@ android {
}
```
-Finally, we need to create a Makefile inside the `src/main/jni` folder called `Android.mk` with the following content:
+Finally, we need to create a CMake file inside the `src/main/jni` folder called `CMakeLists.txt` with the following content:
-```makefile
-THIS_DIR := $(call my-dir)
+```cmake
+cmake_minimum_required(VERSION 3.13)
-include $(REACT_ANDROID_DIR)/Android-prebuilt.mk
+# Define the library name here.
+project(myapplication_appmodules)
-# If you wish to add a custom TurboModule or Fabric component in your app you
-# will have to include the following autogenerated makefile.
-# include $(GENERATED_SRC_DIR)/codegen/jni/Android.mk
-
-# Includes the MK file for autolinked libraries
-include $(PROJECT_BUILD_DIR)/generated/rncli/src/main/jni/Android-rncli.mk
-
-include $(CLEAR_VARS)
-
-LOCAL_PATH := $(THIS_DIR)
-
-# You can customize the name of your application .so file here.
-LOCAL_MODULE := awesomeapp_appmodules
-
-LOCAL_C_INCLUDES := $(LOCAL_PATH) $(PROJECT_BUILD_DIR)/generated/rncli/src/main/jni
-LOCAL_SRC_FILES := $(wildcard $(LOCAL_PATH)/*.cpp) $(wildcard $(PROJECT_BUILD_DIR)/generated/rncli/src/main/jni/*.cpp)
-LOCAL_EXPORT_C_INCLUDES := $(LOCAL_PATH) $(PROJECT_BUILD_DIR)/generated/rncli/src/main/jni
-
-# If you wish to add a custom TurboModule or Fabric component in your app you
-# will have to uncomment those lines to include the generated source
-# files from the codegen (placed in $(GENERATED_SRC_DIR)/codegen/jni)
-#
-# LOCAL_C_INCLUDES += $(GENERATED_SRC_DIR)/codegen/jni
-# LOCAL_SRC_FILES += $(wildcard $(GENERATED_SRC_DIR)/codegen/jni/*.cpp)
-# LOCAL_EXPORT_C_INCLUDES += $(GENERATED_SRC_DIR)/codegen/jni
-
-# Here you should add any native library you wish to depend on.
-LOCAL_SHARED_LIBRARIES := \
-libfabricjni \
-libfbjni \
-libfolly_runtime \
-libglog \
-libjsi \
-libreact_codegen_rncore \
-libreact_debug \
-libreact_nativemodule_core \
-libreact_render_componentregistry \
-libreact_render_core \
-libreact_render_debug \
-libreact_render_graphics \
-librrc_view \
-libruntimeexecutor \
-libturbomodulejsijni \
-libyoga
-
-# Autolinked libraries
-LOCAL_SHARED_LIBRARIES += $(call import-codegen-modules)
-
-LOCAL_CFLAGS := -DLOG_TAG=\"ReactNative\" -fexceptions -frtti -std=c++17
-
-include $(BUILD_SHARED_LIBRARY)
+# This file includes all the necessary to let you build your application with the New Architecture.
+include(${REACT_ANDROID_DIR}/cmake-utils/ReactNative-application.cmake)
```
This setup will run a native build on your project and will compile the C++ files that have been generated by the codegen. You will see the native build running with the Gradle task `:app:externalNativeBuildDebug`
@@ -158,7 +100,7 @@ yarn react-native run-android
## 2. Java/Kotlin - Provide a `ReactPackageTurboModuleManagerDelegate`
-Now is time to actually use the TurboModule.
+Now is time to actually use the Turbo Native Module.
First, we will need to create a `ReactPackageTurboModuleManagerDelegate` subclass, like the following:
@@ -249,9 +191,9 @@ protected constructor(
-Please note that the `SoLoader.loadLibrary` parameter (in this case `"myapplication_appmodules")` should be the same as the one specified for `LOCAL_MODULE :=` inside the `Android.mk` file you created before.
+Please note that the `SoLoader.loadLibrary` parameter (in this case `"myapplication_appmodules")` should be the same as the one specified for `project()` inside the `CMakeLists.txt` file you created before.
-This class will then be responsible of loading the TurboModules and will take care of loading the native library build with the NDK at runtime.
+This class will then be responsible of loading the Turbo Native Modules and will take care of loading the native library build with the NDK at runtime.
## 3. Adapt your `ReactNativeHost` to use the `ReactPackageTurboModuleManagerDelegate`
@@ -317,7 +259,7 @@ class MyApplication : Application(), ReactApplication {
## 4. Extend the `getPackages()` from your `ReactNativeHost` to use the TurboModule
-Still on the `ReactNativeHost` , we need to extend the the `getPackages()` method to include the newly created TurboModule. Update the method to include the following:
+Still on the `ReactNativeHost` , we need to extend the the `getPackages()` method to include the newly created Turbo Native Module. Update the method to include the following:
@@ -551,7 +493,7 @@ std::shared_ptr MyApplicationModuleProvider(const std::string modul
Please adapt the `samplelibrary.h` import to match the same library name you provided when building the apps.
This is the C++ generated file that is created by the codegen.
-Here you can also specify more than one provider, should you have more than one TurboModule. Specifically in this example we look for a TurboModule from `samplelibrary` (the one we specified) and we fallback to the `rncore` Module Provider (containing all the Core modules).
+Here you can also specify more than one provider, should you have more than one Turbo Native Module. Specifically in this example we look for a Turbo Native Module from `samplelibrary` (the one we specified) and we fallback to the `rncore` Module Provider (containing all the Core modules).
```cpp
#include "MyApplicationModuleProvider.h"
@@ -590,7 +532,7 @@ JNIEXPORT jint JNICALL JNI_OnLoad(JavaVM *vm, void *) {
## 6. Enable the `useTurboModules` flag in your Application `onCreate`
-Now you can finally enable the `TurboModule `support in your Application. To do so, you need to turn on the `useTurboModule` flag inside your Application `onCreate` method.
+Now you can finally enable the `Turbo Native Module` support in your Application. To do so, you need to turn on the `useTurboModule` flag inside your Application `onCreate` method.
diff --git a/website/versioned_docs/version-0.70/new-architecture-app-modules-ios.md b/website/versioned_docs/version-0.70/new-architecture-app-modules-ios.md
index ca6f9306a1c..345171166fb 100644
--- a/website/versioned_docs/version-0.70/new-architecture-app-modules-ios.md
+++ b/website/versioned_docs/version-0.70/new-architecture-app-modules-ios.md
@@ -18,7 +18,7 @@ Add the following imports at the top of your bridge delegate (e.g. `AppDelegate.
#import
```
-You will also need to declare that your AppDelegate conforms to the `RCTTurboModuleManagerDelegate` protocol, as well as create an instance variable for our Turbo Module manager:
+You will also need to declare that your AppDelegate conforms to the `RCTTurboModuleManagerDelegate` protocol, as well as create an instance variable for our Turbo Native Module manager:
```objc
@interface AppDelegate () {
@@ -31,8 +31,8 @@ You will also need to declare that your AppDelegate conforms to the `RCTTurboMod
To conform to the `RCTTurboModuleManagerDelegate` protocol, you will implement these three methods:
- `getModuleClassFromName:` - This method should return the Class for a native module. You may use the `RCTCoreModulesClassProvider()` method to handle the default, core modules.
-- `getTurboModule:jsInvoker:` - This should return `nullptr`. This method may be used later to support C++ TurboModules.
-- `getModuleInstanceFromClass:moduleClass:` - This method allows you to perform any side-effects when your TurboModules are initialized. This is the TurboModule analogue to your bridge delegate’s `extraModulesForBridge` method. At this time, you’ll need to initialize the default RCTNetworking and RCTImageLoader modules as indicated below.
+- `getTurboModule:jsInvoker:` - This should return `nullptr`. This method may be used later to support C++ Turbo Native Modules.
+- `getModuleInstanceFromClass:moduleClass:` - This method allows you to perform any side-effects when your Turbo Native Modules are initialized. This is the Turbo Native Module analogue to your bridge delegate’s `extraModulesForBridge` method. At this time, you’ll need to initialize the default RCTNetworking and RCTImageLoader modules as indicated below.
#### TurboModuleManagerDelegate Example
@@ -147,9 +147,9 @@ Next, you will create a `RCTTurboModuleManager` in your bridge delegate’s `jsE
}
```
-## 3. Enable TurboModule System
+## 3. Enable Turbo Native Module System
-Finally, enable TurboModules in your app by executing the following statement before React Native is initialized in your app delegate (e.g. within `didFinishLaunchingWithOptions:`):
+Finally, enable Turbo Native Modules in your app by executing the following statement before React Native is initialized in your app delegate (e.g. within `didFinishLaunchingWithOptions:`):
```objc
RCTEnableTurboModule(YES);
diff --git a/website/versioned_docs/version-0.70/new-architecture-app-renderer-android.md b/website/versioned_docs/version-0.70/new-architecture-app-renderer-android.md
index 4b7bbe88b04..8dce0ad936d 100644
--- a/website/versioned_docs/version-0.70/new-architecture-app-renderer-android.md
+++ b/website/versioned_docs/version-0.70/new-architecture-app-renderer-android.md
@@ -11,7 +11,7 @@ Make sure your application meets all the [prerequisites](new-architecture-app-in
## 1. Provide a `JSIModulePackage` inside your `ReactNativeHost`
-In order to enable Fabric in your app, you would need to add a `JSIModulePackage` inside your `ReactNativeHost`. If you followed the TurboModule section of this guide, you probably already know where to find your `ReactNativeHost`. If not, you can locate your `ReactNativeHost` by searching for the `getReactNativeHost()`. The `ReactNativeHost` is usually located inside your `Application` class.
+In order to enable Fabric in your app, you would need to add a `JSIModulePackage` inside your `ReactNativeHost`. If you followed the Turbo Native Module section of this guide, you probably already know where to find your `ReactNativeHost`. If not, you can locate your `ReactNativeHost` by searching for the `getReactNativeHost()`. The `ReactNativeHost` is usually located inside your `Application` class.
Once you located it, you need to add the `getJSIModulePackage` method as from the snippet below:
@@ -113,12 +113,12 @@ LOG Running "App" with {"fabric":true,"initialProps":{},"rootTag":1}
## Migrating Android ViewManagers
-First, make sure you followed the instructions to [Enabling the New Renderer (Fabric) in Your Android Application](#enabling-the-new-renderer-fabric-in-your-android-application). Plus we will also assume that you followed the instructions from [Enabling the New NativeModule System (TurboModule) in Your Android Application](#enabling-the-new-nativemodule-system-turbomodule-in-your-android-application) as the Makefile (`Android.mk`) and other native builds setup steps are presented over there and won’t be repeated here.
+First, make sure you followed the instructions to [Enabling the New Renderer (Fabric) in Your Android Application](#enabling-the-new-renderer-fabric-in-your-android-application). Plus we will also assume that you followed the instructions from [Enabling the New Native Module System (Turbo Module) in Your Android Application](#enabling-the-new-nativemodule-system-turbomodule-in-your-android-application) as the native builds setup steps are presented over there and won’t be repeated here.
### JavaScript changes
1. Make sure your other JS changes are ready to go by following Preparing your JavaScript codebase for the new React Native Renderer (Fabric)
-2. Replace the call to `requireNativeComponent` with `codegenNativeComponent`. This tells the JS codegen to start generating the native implementation of the component, consisting of C++ and Java classes. This is how it looks for the WebView component:
+2. Replace the call to `requireNativeComponent` with `codegenNativeComponent`. This tells the JS codegen to start generating the native implementation of the Native Component, consisting of C++ and Java classes. This is how it looks for the WebView component:
```ts
import codegenNativeComponent from 'react-native/Libraries/Utilities/codegenNativeComponent';
@@ -131,7 +131,7 @@ export default (codegenNativeComponent(
): HostComponent);
```
-4. **[Flow users]** Make sure your native component has Flow types for its props, since the JS codegen uses these types to generate the type-safe native implementation of the component. The codegen generates C++ classes during the build time, which guarantees that the native implementation is always up-to-date with its JS interface. Use [these c++ compatible types](https://github.com/facebook/react-native/blob/main/Libraries/Types/CodegenTypes.js#L28-L30).
+4. **[Flow users]** Make sure your Native Component has Flow types for its props, since the JS codegen uses these types to generate the type-safe native implementation of the Component. The codegen generates C++ classes during the build time, which guarantees that the native implementation is always up-to-date with its JS interface. Use [these c++ compatible types](https://github.com/facebook/react-native/blob/main/Libraries/Types/CodegenTypes.js#L28-L30).
```ts title="RNTMyNativeViewNativeComponent.js"
import type {Int32} from 'react-native/Libraries/Types/CodegenTypes';
@@ -428,7 +428,7 @@ void MyComponentsRegistry::registerNatives() {
4. **Load your file in the OnLoad.cpp**
-If you followed the TurboModule instructions, you should have a `OnLoad.cpp` file inside the `src/main/jni` folder. There you should add a line to load the `MyComponentsRegistry` class:
+If you followed the Turbo Native Module instructions, you should have a `OnLoad.cpp` file inside the `src/main/jni` folder. There you should add a line to load the `MyComponentsRegistry` class:
```cpp title="OnLoad.cpp"
#include
diff --git a/website/versioned_docs/version-0.70/new-architecture-appendix.md b/website/versioned_docs/version-0.70/new-architecture-appendix.md
index 56b3301423b..61bbc1377e3 100644
--- a/website/versioned_docs/version-0.70/new-architecture-appendix.md
+++ b/website/versioned_docs/version-0.70/new-architecture-appendix.md
@@ -7,7 +7,16 @@ import NewArchitectureWarning from './\_markdown-new-architecture-warning.mdx';
-## I. Flow Type to Native Type Mapping
+## I. Terminology
+
+The whole New Architecture related guides will stick to the following **terminology**:
+
+- **Legacy Native Components** - To refer to Components which are running on the old React Native architecture.
+- **Legacy Native Modules** - To refer to Modules which are running on the old React Native architecture.
+- **Fabric Native Components** - To refer to Components which have been adapted to work well with the New Architecture, namely the new renderer. For brevity you might find them referred as **Fabric Components**.
+- **Turbo Native Modules** - To refer to Modules which have been adapted to work well with the New Architecture, namely the new Native Module System. For brevity you might find them referred as **Turbo Modules**
+
+## II. Flow Type to Native Type Mapping
You may use the following table as a reference for which types are supported and what they map to in each platform:
@@ -85,7 +94,7 @@ Callback functions are not type checked, and are generalized as `Object`s.
You may also find it useful to refer to the JavaScript specifications for the core modules in React Native. These are located inside the `Libraries/` directory in the React Native repository.
:::
-## II. TypeScript to Native Type Mapping
+## III. TypeScript to Native Type Mapping
You may use the following table as a reference for which types are supported and what they map to in each platform:
@@ -105,7 +114,7 @@ You may use the following table as a reference for which types are supported and
You may also find it useful to refer to the JavaScript specifications for the core modules in React Native. These are located inside the `Libraries/` directory in the React Native repository.
-## III. Invoking the code-gen during development
+## IV. Invoking the code-gen during development
> This section contains information specific to v0.66 of React Native.
@@ -182,7 +191,7 @@ node node_modules/react-native/scripts/generate-specs-cli.js \
In the above example, the code-gen script will generate several files: `MyLibSpecs.h` and `MyLibSpecs-generated.mm`, as well as a handful of `.h` and `.cpp` files, all located in the `ios` directory.
-## IV. Note on Existing Apps
+## V. Note on Existing Apps
This guide provides instructions for migrating an application that is based on the default app template that is provided by React Native. If your app has deviated from the template, or you are working with an application that was never based off the template, then the following sections might help.
diff --git a/website/versioned_docs/version-0.70/new-architecture-intro.md b/website/versioned_docs/version-0.70/new-architecture-intro.md
index fa88aeb9e8d..511c4053fd1 100644
--- a/website/versioned_docs/version-0.70/new-architecture-intro.md
+++ b/website/versioned_docs/version-0.70/new-architecture-intro.md
@@ -9,7 +9,7 @@ import NewArchitectureWarning from './\_markdown-new-architecture-warning.mdx';
# Getting Started with the New Architecture
-This migration guide is designed for React Native **library authors** and **application developers**. It outlines the steps you need to follow to roll out the new Architecture, composed by the **new NativeModule system (TurboModule) and the new Renderer (Fabric)** to your **Android** and **iOS** libraries and apps.
+This migration guide is designed for React Native **library authors** and **application developers**. It outlines the steps you need to follow to roll out the new Architecture, composed by the **New Native Module system (Turbo Module) and the new Renderer (Fabric)** to your **Android** and **iOS** libraries and apps.
## Table of Contents
@@ -22,7 +22,7 @@ The guide is divided into five sections:
- [iOS](new-architecture-library-ios)
- **Supporting the New Architecture in your App**
- [Prerequisites for Supporting the New Architecture in your App](new-architecture-app-intro)
- - Enabling the New NativeModule System (TurboModule) in your App
+ - Enabling the New Native Module System (Turbo Module) in your App
- [Android](new-architecture-app-modules-android)
- [iOS](new-architecture-app-modules-ios)
- Enabling the New Renderer (Fabric) in your App
diff --git a/website/versioned_docs/version-0.70/new-architecture-library-android.md b/website/versioned_docs/version-0.70/new-architecture-library-android.md
index 565546a12d0..09f1ee2fb7f 100644
--- a/website/versioned_docs/version-0.70/new-architecture-library-android.md
+++ b/website/versioned_docs/version-0.70/new-architecture-library-android.md
@@ -34,6 +34,7 @@ app/build/generated/source/codegen
│ └── NativeAwesomeManagerSpec.java
├── jni
│ ├── Android.mk
+│ ├── CMakeLists.txt
│ ├── react
│ │ └── renderer
│ │ └── components
diff --git a/website/versioned_docs/version-0.70/new-architecture-library-intro.md b/website/versioned_docs/version-0.70/new-architecture-library-intro.md
index b0eaaca055a..ae5a05371e7 100644
--- a/website/versioned_docs/version-0.70/new-architecture-library-intro.md
+++ b/website/versioned_docs/version-0.70/new-architecture-library-intro.md
@@ -23,7 +23,7 @@ Currently, this guide is written under the assumption that you will be using [Fl
To adopt the New Architecture, you start by creating these specs for your native modules and native components. You can do this prior to actually migrating to the New Architecture: the specs will be used later on to generate native interface code for all the supported platforms, as a way to enforce uniform APIs across platforms.
-#### Turbomodules
+#### Turbo Native Modules
JavaScript spec files **must** be named `Native.js` and they export a `TurboModuleRegistry` `Spec` object. The name convention is important because the Codegen process looks for modules whose `js` (`jsx`, `ts`, or `tsx`) spec file starts with the keyword `Native`.
@@ -70,7 +70,7 @@ export default TurboModuleRegistry.get('');
-#### Fabric Components
+#### Fabric Native Components
JavaScript spec files **must** be named `NativeComponent.js` (for TypeScript use extension `.ts` or `.tsx`) and they export a `HostComponent` object. The name convention is important: the Codegen process looks for components whose spec file (either JavaScript or TypeScript) ends with the suffix `NativeComponent`.
@@ -214,7 +214,7 @@ Codegen can be configured in the `package.json` file of your Library. Add the fo
- The `codegenConfig` is the key used by the Codegen to verify that there is some code to generate.
- The `name` field, is the name of the library.
-- The `type` field is used to identify the type of module we want to create. Our suggestions is to keep `all` to support libraries that contains both TurboModule and Fabric Components.
+- The `type` field is used to identify the type of module we want to create. Our suggestion is to keep `all` to support libraries that contain both Turbo Native Module and Fabric Native Components.
- The `jsSrcsDir` is the directory where the codegen will start looking for JavaScript specs.
- The `android.javaPackageName` is the name of the package where the generated code wil end up.
diff --git a/website/versioned_docs/version-0.70/new-architecture-library-ios.md b/website/versioned_docs/version-0.70/new-architecture-library-ios.md
index c5054bd6e8e..6b6955ff020 100644
--- a/website/versioned_docs/version-0.70/new-architecture-library-ios.md
+++ b/website/versioned_docs/version-0.70/new-architecture-library-ios.md
@@ -32,7 +32,7 @@ Pod::Spec.new do |s|
}
s.dependency "React-Core"
- s.dependency "React-RCTFabric" # This is for Fabric Component
+ s.dependency "React-RCTFabric" # This is for Fabric Native Component
s.dependency "React-Codegen"
s.dependency "RCT-Folly"
s.dependency "RCTRequired"
diff --git a/website/versioned_docs/version-0.70/react-18-and-react-native.md b/website/versioned_docs/version-0.70/react-18-and-react-native.md
index ed4a5d09eb6..bfd04f7c5c0 100644
--- a/website/versioned_docs/version-0.70/react-18-and-react-native.md
+++ b/website/versioned_docs/version-0.70/react-18-and-react-native.md
@@ -31,7 +31,7 @@ The concurrent features in React 18 are built on top of the new concurrent rende
Previous versions of React Native built on the old architecture **cannot** support concurrent rendering or concurrent features. This is because the old architecture relied on mutating the native trees, which doesn’t allow for React to prepare multiple versions of the tree at the same time.
-Fortunately, the New Architecture was written bottom-up with concurrent rendering in mind, and is fully compatible with React 18. This means, in order to upgrade to React 18 in your React Native app, your application needs to be migrated to the React Native's New Architecture including Fabric and TurboModules.
+Fortunately, the New Architecture was written bottom-up with concurrent rendering in mind, and is fully compatible with React 18. This means, in order to upgrade to React 18 in your React Native app, your application needs to be migrated to the React Native's New Architecture including Fabric Native Components and Turbo Native Modules.
## React 18 enabled by default
@@ -107,7 +107,7 @@ On iOS, you'll have access to the `concurrentRootEnabled` method on your `AppDel
///
/// @see: https://reactjs.org/blog/2022/03/29/react-v18.html
/// @note: This requires to be rendering on Fabric (i.e. on the New Architecture).
-/// @return: `true` if the `concurrentRoot` feture is enabled. Otherwise, it returns `false`.
+/// @return: `true` if the `concurrentRoot` feature is enabled. Otherwise, it returns `false`.
- (BOOL)concurrentRootEnabled
{
// Switch this bool to turn on and off the concurrent root
diff --git a/website/versioned_docs/version-0.70/sectionlist.md b/website/versioned_docs/version-0.70/sectionlist.md
index 2469a8c3167..5b28b31c62d 100644
--- a/website/versioned_docs/version-0.70/sectionlist.md
+++ b/website/versioned_docs/version-0.70/sectionlist.md
@@ -248,11 +248,11 @@ Reverses the direction of scroll. Uses scale transforms of -1.
### `ItemSeparatorComponent`
-Rendered in between each item, but not at the top or bottom. By default, `highlighted`, `section`, and `[leading/trailing][Item/Section]` props are provided. `renderItem` provides `separators.highlight`/`unhighlight` which will update the `highlighted` prop, but you can also add custom props with `separators.updateProps`.
+Rendered in between each item, but not at the top or bottom. By default, `highlighted`, `section`, and `[leading/trailing][Item/Section]` props are provided. `renderItem` provides `separators.highlight`/`unhighlight` which will update the `highlighted` prop, but you can also add custom props with `separators.updateProps`. Can be a React Component (e.g. `SomeComponent`), or a React element (e.g. ``).
-| Type |
-| ------------------ |
-| component, element |
+| Type |
+| ---------------------------- |
+| component, function, element |
---
diff --git a/website/versioned_docs/version-0.70/the-new-architecture/_markdown_native_deprecation.mdx b/website/versioned_docs/version-0.70/the-new-architecture/_markdown_native_deprecation.mdx
index 569a078d147..390bfcdc3de 100644
--- a/website/versioned_docs/version-0.70/the-new-architecture/_markdown_native_deprecation.mdx
+++ b/website/versioned_docs/version-0.70/the-new-architecture/_markdown_native_deprecation.mdx
@@ -1,4 +1,4 @@
:::info
Native Module and Native Components are our stable technologies used by the legacy architecture.
-They will be deprecated in the future when the New Architecture will be stable. The New Architecture uses [TurboModule](./the-new-architecture/pillars-turbomodules) and [Fabric Components](./the-new-architecture/pillars-fabric-components) to achieve similar results.
+They will be deprecated in the future when the New Architecture will be stable. The New Architecture uses [Turbo Native Module](./the-new-architecture/pillars-turbomodules) and [Fabric Native Components](./the-new-architecture/pillars-fabric-components) to achieve similar results.
:::
diff --git a/website/versioned_docs/version-0.70/the-new-architecture/backward-compatibility-fabric-components.md b/website/versioned_docs/version-0.70/the-new-architecture/backward-compatibility-fabric-components.md
index 8226a24730f..e081e9e2f00 100644
--- a/website/versioned_docs/version-0.70/the-new-architecture/backward-compatibility-fabric-components.md
+++ b/website/versioned_docs/version-0.70/the-new-architecture/backward-compatibility-fabric-components.md
@@ -1,6 +1,6 @@
---
id: backward-compatibility-fabric-components
-title: Fabric Components as Native Components
+title: Fabric Components as Legacy Native Components
---
import Tabs from '@theme/Tabs';
@@ -12,28 +12,35 @@ import NewArchitectureWarning from '../\_markdown-new-architecture-warning.mdx';
:::info
-The creation of a backward compatible Fabric Component requires the knowledge of how to create a Fabric Component. To recall these concepts, have a look at this [guide](pillars-fabric-components).
+Creating a backward compatible Fabric Native Component requires the knowledge of how to create a Legacy Native Component. To recall these concepts, have a look at this [guide](pillars-fabric-components).
-Fabric Components only work when the New Architecture is properly setup. If you already have a library that you want to migrate to the New Architecture, have a look at the [migration guide](../new-architecture-intro) as well.
+Fabric Native Components only work when the New Architecture is properly set up. If you already have a library that you want to migrate to the New Architecture, have a look at the [migration guide](../new-architecture-intro) as well.
:::
-Creating a backward compatible Fabric Component lets your users continue leverage your library, independently from the architecture they use. The creation of such a component requires a few steps:
+Creating a backward compatible Fabric Native Component lets your users continue to leverage your library independently from the architecture they use. The creation of such a component requires a few steps:
1. Configure the library so that dependencies are prepared set up properly for both the Old and the New Architecture.
1. Update the codebase so that the New Architecture types are not compiled when not available.
1. Uniform the JavaScript API so that your user code won't need changes.
+:::info
+For the sake of this guide we're going to use the following **terminology**:
+
+- **Legacy Native Components** - To refer to Components which are running on the old React Native architecture.
+- **Fabric Native Components** - To refer to Components which have been adapted to work well with the New Native Renderer, Fabric. For brevity you might find them referred as **Fabric Components**.
+ :::
+
While the last step is the same for all the platforms, the first two steps are different for iOS and Android.
-## Configure the Fabric Component Dependencies
+## Configure the Fabric Native Component Dependencies
### iOS
-The Apple platform installs Fabric Components using [Cocoapods](https://cocoapods.org) as dependency manager.
+The Apple platform installs Fabric Native Components using [Cocoapods](https://cocoapods.org) as a dependency manager.
-Every Fabric Component defines a `podspec` that looks like this:
+Every Fabric Native Component defines a `podspec` that looks like this:
```ruby
require "json"
@@ -104,13 +111,13 @@ This `if` guard prevents the dependencies from being installed when the environm
### Android
-To create a module that can work with both architectures, you need to configure Gradle to choose which files need to be compiled depending on the chosen architecture. This can be achieved by using **different source sets** in the Gradle configuration.
+To create a Native Component that can work with both architectures, you need to configure Gradle to choose which files need to be compiled depending on the chosen architecture. This can be achieved by using **different source sets** in the Gradle configuration.
:::note
Please note that this is currently the suggested approach. While it might lead to some code duplication, it will ensure the maximum compatibility with both architectures. You will see how to reduce the duplication in the next section.
:::
-To configure the Fabric Component so that it picks the proper sourceset, you have to update the `build.gradle` file in the following way:
+To configure the Fabric Native Component so that it picks the proper sourceset, you have to update the `build.gradle` file in the following way:
```diff title="build.gradle"
+// Add this function in case you don't have it already
@@ -148,7 +155,7 @@ This changes do three main things:
The second step is to instruct Xcode to avoid compiling all the lines using the New Architecture types and files when we are building an app with the Old Architecture.
-A Fabric Component requires an header file and an implementation file to add the actual `View` to the module.
+A Fabric Native Component requires an header file and an implementation file to add the actual `View` to the module.
For example, the `RNMyComponentView.h` header file could look like this:
@@ -236,15 +243,15 @@ As we can't use conditional compilation blocks on Android, we will define two di
Therefore, you have to:
-1. Create a Native Component in the `src/oldarch` path. See [this guide](../native-components-android) to learn how to create a Native Component.
-2. Create a Fabric Component in the `src/newarch` path. See [this guide](pillars-fabric-components) to learn how to create a Fabric Component.
+1. Create a Legacy Native Component in the `src/oldarch` path. See [this guide](../native-components-android) to learn how to create a Legacy Native Component.
+2. Create a Fabric Native Component in the `src/newarch` path. See [this guide](pillars-fabric-components) to learn how to create a Fabric Native Component.
and then instruct Gradle to decide which implementation to pick.
-Some files can be shared between a Native and a Fabric Component: these should be created or moved into a folder that is loaded by both the architectures. These files are:
+Some files can be shared between a Legacy and a Fabric Component: these should be created or moved into a folder that is loaded by both the architectures. These files are:
- the `.java` that instantiate and configure the Android View for both the components.
-- the `ManagerImpl.java` file where which contains the logic of the ViewManager that can be shared between the Native and the Fabric Component.
+- the `ManagerImpl.java` file where which contains the logic of the ViewManager that can be shared between the Legacy and the Fabric Component.
- the `Package.java` file used to load the component.
The final folder structure looks like this:
@@ -275,7 +282,7 @@ my-component
└── package.json
```
-The code that should go in the `MyComponentViewManagerImpl.java` and that can be shared between the Native Component and the Fabric Component is, for example:
+The code that should go in the `MyComponentViewManagerImpl.java` and that can be shared between the Native Component and the Fabric Native Component is, for example:
```java title="example of MyComponentViewManager.java"
package com.MyComponent;
@@ -296,7 +303,7 @@ public class MyComponentViewManagerImpl {
}
```
-Then, the Native Component and the Fabric Component can be updated using the function declared in the shared manager.
+Then, the Native Component and the Fabric Native Component can be updated using the function declared in the shared manager.
For example, for a Native Component:
@@ -330,7 +337,7 @@ public class MyComponentViewManager extends SimpleViewManager {
}
```
-And, for a Fabric Component:
+And, for a Fabric Native Component:
```java title="Fabric Component using the ViewManagerImpl"
// Use the static NAME property from the shared implementation
@@ -381,13 +388,13 @@ For a step-by-step example on how to achieve this, have a look at [this repo](ht
The last step makes sure that the JavaScript behaves transparently to chosen architecture.
-For a Fabric Component, the source of truth is the `NativeComponent.js` (or `.ts`) spec file. The app accesses the spec file like this:
+For a Fabric Native Component, the source of truth is the `NativeComponent.js` (or `.ts`) spec file. The app accesses the spec file like this:
```ts
import MyComponent from 'your-component/src/index';
```
-The **goal** is to conditionally `export` from the `index` file the proper object, given the architecture chosen by the user. We can achieve this with a code that looks like this:
+Since `codegenNativeComponent` is calling the `requireNativeComponent` under the hood, we need to re-export our component, to avoid registering it multiple times.
```ts
-import requireNativeComponent from 'react-native/Libraries/ReactNative/requireNativeComponent';
-
-const isFabricEnabled = global.nativeFabricUIManager != null;
-
-const myComponent = isFabricEnabled
- ? require('./MyComponentNativeComponent').default
- : requireNativeComponent('MyComponent');
-
-export default myComponent;
+export default require('./MyComponentNativeComponent').default;
```
-
-Whether you are using Flow or TypeScript for your specs, we understand which architecture is running by checking if the `global.nativeFabricUIManager` object has been set or not.
-
-:::caution
-Please note that the New Architecture is still experimental. The `global.nativeFabricUIManager` API might change in the future for a function that encapsulate this check.
-:::
-
-- If that object is `null`, the app has not enabled the Fabric feature. It's running on the Old Architecture, and the fallback is to use the default Native Components implementation ([iOS](../native-components-ios) or [Android](../native-components-android)).
-- If that object is set, the app is running with Fabric enabled and it should use the `NativeComponent` spec to access the Fabric Component.
diff --git a/website/versioned_docs/version-0.70/the-new-architecture/backward-compatibility-turbomodules.md b/website/versioned_docs/version-0.70/the-new-architecture/backward-compatibility-turbomodules.md
index 42d8a1cbc87..c533176e9d5 100644
--- a/website/versioned_docs/version-0.70/the-new-architecture/backward-compatibility-turbomodules.md
+++ b/website/versioned_docs/version-0.70/the-new-architecture/backward-compatibility-turbomodules.md
@@ -1,6 +1,6 @@
---
id: backward-compatibility-turbomodules
-title: TurboModules as Native Modules
+title: Turbo Modules as Legacy Native Modules
---
import Tabs from '@theme/Tabs';
@@ -12,7 +12,7 @@ import NewArchitectureWarning from '../\_markdown-new-architecture-warning.mdx';
:::info
-The creation of a backward compatible TurboModule requires the knowledge of how to create a TurboModule. To recall these concepts, have a look at this [guide](pillars-turbomodules).
+Creating a backward compatible Turbo Native Module requires the knowledge of how to create a Legacy Native Module. To recall these concepts, have a look at this [guide](pillars-turbomodules).
TurboModules only works when the New Architecture is properly setup. If you already have a library that you want to migrate to the New Architecture, have a look at the [migration guide](../new-architecture-intro) as well.
:::
@@ -23,11 +23,24 @@ Creating a backward compatible TurboModule lets your users continue leverage you
1. Update the codebase so that the New Architecture types are not compiled when not available.
1. Uniform the JavaScript API so that your user code won't need changes.
+:::info
+For the sake of this guide we're going to use the following **terminology**:
+
+- **Legacy Native Modules** - To refer to Modules which are running on the old React Native architecture.
+- **Turbo Native Modules** - To refer to Modules which have been adapted to work well with the New Native Module System. For brevity you might find them referred as **Turbo Modules**.
+ :::
+
While the last step is the same for all the platforms, the first two steps are different for iOS and Android.
-## Configure the TurboModule Dependencies
+## Configure the Turbo Native Module Dependencies
+
+### iOS
+
+The Apple platform installs Turbo Native Modules using [Cocoapods](https://cocoapods.org) as a dependency manager.
+
+Every Turbo Native Module defines a `podspec` that looks like this:
### iOS
@@ -109,7 +122,7 @@ To create a module that can work with both architectures, you need to configure
Please note that this is currently the suggested approach. While it might lead to some code duplication, it will ensure the maximum compatibility with both architectures. You will see how to reduce the duplication in the next section.
:::
-To configure the TurboModule so that it picks the proper sourceset, you have to update the `build.gradle` file in the following way:
+To configure the Turbo Native Module so that it picks the proper sourceset, you have to update the `build.gradle` file in the following way:
```diff title="build.gradle"
+// Add this function in case you don't have it already
@@ -150,13 +163,15 @@ This changes do three main things:
The second step is to instruct Xcode to avoid compiling all the lines using the New Architecture types and files when we are building an app with the Old Architecture.
-The file to change is the module implementation file, which is usually a `.mm` file. That file is structured as follow:
+There are two files to change. The module implementation file, which is usually a `.mm` file, and the module header, which is usually a `.h` file.
+
+That implementation file is structured as follows:
- Some `#import` statements, among which there is a `.h` file.
- The module implementation, using the various `RCT_EXPORT_xxx` and `RCT_REMAP_xxx` macros.
- The `getTurboModule:` function, which uses the `` type, generated by The New Architecture.
-The **goal** is to make sure that the `TurboModule` still builds with the Old Architecture. To achieve that, we can wrap the `#import ".h"` and the `getTurboModule:` function into an `#ifdef RCT_NEW_ARCH_ENABLED` compilation directive, as shown in the following example:
+The **goal** is to make sure that the `Turbo Native Module` still builds with the Old Architecture. To achieve that, we can wrap the `#import ".h"` and the `getTurboModule:` function into an `#ifdef RCT_NEW_ARCH_ENABLED` compilation directive, as shown in the following example:
```diff
#import ".h"
@@ -177,23 +192,43 @@ The **goal** is to make sure that the `TurboModule` still builds with the Old Ar
@end
```
-This snippet uses the same `RCT_NEW_ARCH_ENABLED` flag used in the previous [section](#dependencies-ios). When this flag is not set, Xcode skips the lines within the `#ifdef` during compilation and it does not include them into the compiled binary.
+A similar thing needs to be done for the header file. Add the following lines at the bottom of your module header. You need to first import the header and then, if the New Architecture is enabled, make it conform to the Spec protocol.
+
+```diff
+#import
++ #ifdef RCT_NEW_ARCH_ENABLED
++ #import
++ #endif
+
+@interface YourModule: NSObject
+
+@end
+
++ #ifdef RCT_NEW_ARCH_ENABLED
++ @interface YourModule ()
+
++ @end
++ #endif
+
+```
+
+This snippets uses the same `RCT_NEW_ARCH_ENABLED` flag used in the previous [section](#dependencies-ios). When this flag is not set, Xcode skips the lines within the `#ifdef` during compilation and it does not include them into the compiled binary.
### Android
-As we can't use conditional compilation blocks on Android, we will define two different source sets. This will allow to create a backward compatible TurboModule with the proper source that is loaded and compiled depending on the used architecture.
+As we can't use conditional compilation blocks on Android, we will define two different source sets. This will allow to create a backward compatible Turbo Native Module with the proper source that is loaded and compiled depending on the used architecture.
Therefore, you have to:
-1. Create a Native Module in the `src/oldarch` path. See [this guide](../native-modules-intro) to learn how to create a Native Module.
-2. Create a TurboModule in the `src/newarch` path. See [this guide](./pillars-turbomodules) to learn how to create a TurboModule
+1. Create a Legacy Native Module in the `src/oldarch` path. See [this guide](../native-modules-intro) to learn how to create a Legacy Native Module.
+2. Create a Turbo Native Module in the `src/newarch` path. See [this guide](./pillars-turbomodules) to learn how to create a Turbo Native Module
and then instruct Gradle to decide which implementation to pick.
-Some files can be shared between a Native Module and a TurboModule: these should be created or moved into a folder that is loaded by both the architectures. These files are:
+Some files can be shared between a Legacy Native Module and a Turbo Native Module: these should be created or moved into a folder that is loaded by both the architectures. These files are:
- the `Package.java` file used to load the module.
-- a `Impl.java` file where we can put the code that both the Native Module and the TurboModule has to execute.
+- a `Impl.java` file where we can put the code that both the Legacy Native Module and the Turbo Native Module has to execute.
The final folder structure looks like this:
@@ -222,7 +257,7 @@ my-module
└── package.json
```
-The code that should go in the `MyModuleImpl.java` and that can be shared by the Native Module and the TurboModule is, for example:
+The code that should go in the `MyModuleImpl.java`, and that can be shared by the Legacy Native Module and the Turbo Native Module is, for example:
```java title="example of MyModuleImple.java"
package com.MyModule;
@@ -243,13 +278,13 @@ public class MyModuleImpl {
}
```
-Then, the Native Module and the TurboModule can be updated with the following steps:
+Then, the Legacy Native Module and the Turbo Native Module can be updated with the following steps:
1. Create a private instance of the `MyModuleImpl` class.
2. Initialize the instance in the module constructor.
3. Use the private instance in the modules methods.
-For example, for a Native Module:
+For example, for a Legacy Native Module:
```java title="Native Module using the Impl module"
public class MyModule extends ReactContextBaseJavaModule {
@@ -277,7 +312,7 @@ public class MyModule extends ReactContextBaseJavaModule {
}
```
-And, for a TurboModule:
+And, for a Turbo Native Module:
```java title="TurboModule using the Impl module"
public class MyModule extends MyModuleSpec {
@@ -313,13 +348,13 @@ For a step-by-step example on how to achieve this, have a look at [this repo](ht
The last step makes sure that the JavaScript behaves transparently to chosen architecture.
-For a TurboModule, the source of truth is the `Native.js` (or `.ts`) spec file. The app accesses the spec file like this:
+For a Turbo Native Module, the source of truth is the `Native.js` (or `.ts`) spec file. The app accesses the spec file like this:
```ts
import MyModule from 'your-module/src/index';
```
-The **goal** is to conditionally `export` from the `index` file the proper object, given the architecture chosen by the user. We can achieve this with a code that looks like this:
+Since `TurboModuleRegistry.get` taps into the old Native Modules API under the hood, we need to re-export our module, to avoid registering it multiple times.
').default :
- NativeModules.;
-
-export default myModule;
+export default require('./Native').default;
```
```ts
-const isTurboModuleEnabled = global.__turboModuleProxy != null;
-
-const myModule = isTurboModuleEnabled
- ? require('./Native').default
- : require('./').default;
-
-export default myModule;
+export default require('./Native').default;
```
-
-:::note
-If you are using TypeScript and you want to follow the example, make sure to `export` the `NativeModule` in a separate `ts` file called `.ts`.
-:::
-
-Whether you are using Flow or TypeScript for your specs, we understand which architecture is running by checking whether the `global.__turboModuleProxy` object has been set or not.
-
-:::caution
-The `global.__turboModuleProxy` API may change in the future for a function that encapsulate this check.
-:::
-
-- If that object is `null`, the app has not enabled the TurboModule feature. It's running on the Old Architecture, and the fallback is to use the default [`NativeModule` implementation](../native-modules-intro).
-- If that object is set, the app is running with the TurboModules enabled and it should use the `Native` spec to access the TurboModule.
diff --git a/website/versioned_docs/version-0.70/the-new-architecture/backward-compatibility.md b/website/versioned_docs/version-0.70/the-new-architecture/backward-compatibility.md
index 89c1f3ac73f..879e6100da4 100644
--- a/website/versioned_docs/version-0.70/the-new-architecture/backward-compatibility.md
+++ b/website/versioned_docs/version-0.70/the-new-architecture/backward-compatibility.md
@@ -9,17 +9,17 @@ import NewArchitectureWarning from '../\_markdown-new-architecture-warning.mdx';
Creating a backward compatible module is important to provide a library that works in both the **Old Architecture** and the **New Architecture**. Not all the users of your library will immediately jump on the New Architecture ship: it is a good thing that they will be able to use your library even if they are still using the old architecture.
-The trick to create a good backward compatible module is to minimize the changes required to adopt the new version. In that way, users of the module can smoothly move to the new version and migrate to the New Architecture when they are ready, ideally by issueing one different command.
+The trick to create a good backward compatible module is to minimize the changes required to adopt the new version. In that way, users of the module can smoothly move to the new version and migrate to the New Architecture when they are ready, ideally by issuing one different command.
-To achieve this result, we have to perform few changes in our **TurboModule** and **Fabric Component** configurations. The steps we have to follow are:
+To achieve this result, we have to perform few changes in our **Turbo Native Module** and **Fabric Native Component** configurations. The steps we have to follow are:
1. **Update the installation configuration** to avoid using code that is not needed by the Old Architecture.
1. **Update the code** to support both architectures. Both Android and iOS build pipelines gives you mechanism to provide a library that will compile with the correct React Native Architecture.
-1. **Configure the specs to load the proper implementation**, so that the JavaScript layer leverages the New Architecture whan it is available.
+1. **Configure the specs to load the proper implementation**, so that the JavaScript layer leverages the New Architecture when it is available.
:::info
The next sections requires that you are familiar with the [Pillars](pillars) of the **New Architecture**.
:::
-- To create a backward compatible **TurboModule**, follow [this guide](backward-compatibility-turbomodules).
-- To create a backward compatible **Fabric Component**, follow [this guide](backward-compatibility-fabric-components).
+- To create a backward compatible **Turbo Native Module**, follow [this guide](backward-compatibility-turbomodules).
+- To create a backward compatible **Fabric Native Component**, follow [this guide](backward-compatibility-fabric-components).
diff --git a/website/versioned_docs/version-0.70/the-new-architecture/landing-page.md b/website/versioned_docs/version-0.70/the-new-architecture/landing-page.md
index 403a1dee659..c7bebdfcafc 100644
--- a/website/versioned_docs/version-0.70/the-new-architecture/landing-page.md
+++ b/website/versioned_docs/version-0.70/the-new-architecture/landing-page.md
@@ -11,9 +11,9 @@ Starting from version 0.68, React Native provides the New Architecture, which of
In order to achieve these benefits, we had to rethink how Native Modules and Native Components work. This led us to develop the [Pillars of the New Architecture](pillars):
-- [TurboModules](pillars-turbomodules), a framework to support efficient and flexible integration with native code
-- [Fabric renderer and components](pillars-fabric-components), which offer improved capabilities, cross-platform consistency, and performance in rendering
-- [Codegen](pillars-codegen), which generates boilerplate C++ required by the New Architecture, via static typing in JavaScript
+- [The New Native Module System - Turbo Modules](pillars-turbomodules), a framework to support efficient and flexible integration with native code
+- [The New Native Renderer - Fabric](pillars-fabric-components), which offer improved capabilities, cross-platform consistency, and performance in rendering
+- [The Codegen](pillars-codegen), which generates boilerplate C++ required by the New Architecture via static typing in JavaScript
## Get started with the New Architecture
diff --git a/website/versioned_docs/version-0.70/the-new-architecture/pillars-codegen.md b/website/versioned_docs/version-0.70/the-new-architecture/pillars-codegen.md
index c55db88d267..03262058d95 100644
--- a/website/versioned_docs/version-0.70/the-new-architecture/pillars-codegen.md
+++ b/website/versioned_docs/version-0.70/the-new-architecture/pillars-codegen.md
@@ -11,7 +11,7 @@ import Tabs from '@theme/Tabs'; import TabItem from '@theme/TabItem'; import con
The **Codegen** is not a proper pillar, but it is a tool that can be used to avoid writing of a lot of repetitive code. Using the **Codegen** is not mandatory: all the code that is generated by it can also be written manually. However, it generates scaffolding code that could save you a lot of time.
-The **Codegen** is invoked automatically by React Native every time an iOS or an Android app is built. Occasionally, you would like to run the scripts that generate the code manually to know which types and files are actually generated: this is a common scenario when developing [**TurboModules**](./pillars-turbomodules) and [**Fabric Components**](./pillars-fabric-components), for example.
+The **Codegen** is invoked automatically by React Native every time an iOS or Android app is built. Occasionally, you would like to run the scripts that generate the code manually to know which types and files are actually generated: this is a common scenario when developing [**Turbo Native Modules**](./pillars-turbomodules) and [**Fabric Native Components**](./pillars-fabric-components), for example.
This guide teaches how to configure the **Codegen**, how to invoke it manually for each platform, and it describes the generated code.
@@ -35,12 +35,12 @@ Previous versions of React Native uses a version of **Codegen** that requires a
Then, add the module that requires the **Codegen** as an NPM dependency of the app:
```sh
-yarn add
+yarn add
```
-See how to create a [TurboModule](pillars-turbomodules) or a [Fabric Component](pillars-fabric-components) to get more information on how to configure them.
+See how to create a [Turbo Native Module](pillars-turbomodules) or a [Fabric Native Component](pillars-fabric-components) to get more information on how to configure them.
-The rest of this guide assumes that you have a `TurboModule` and/or a `Fabric Component` properly set up.
+The rest of this guide assumes that you have a `Turbo Native Module` and/or a `Fabric Native Component` properly set up.
# iOS
@@ -58,7 +58,7 @@ node node_modules/react_native/scripts/generate-artifacts.js \
--outputPath \
```
-Given that the app has `TurboModules` and/or `Fabric Components` configured as a dependency, the **Codegen** will look for all of them and it will generate the code in the path you provided.
+Given that the app has `Turbo Native Modules` and/or `Fabric Native Components` configured as a dependency, **Codegen** looks for all of them and generates the code in the path you provided.
## The Generated Code
@@ -106,29 +106,29 @@ Then, there is an `ios` folder which contains:
- A custom folder for each TurboModule.
- The header (`.h`) and implementation (`.mm`) files for the `RCTThirdPartyFabricComponentsProvider`.
-- A base `react/renderer/components` folder which contains a custom folder for each `Fabric Component`.
+- A base `react/renderer/components` folder which contains a custom folder for each `Fabric Native Component`.
-In the example above, there are both a TurboModule and a set of Fabric Components. These are generated by React Native itself: `FBReactNativeSpec` and `rncore`. These modules will always appear even if you don't have any extra TurboModule or Fabric Component: React Native requires them in order to work properly.
+In the example above, there are both a TurboModule and a set of Fabric Native Components. These are generated by React Native itself: `FBReactNativeSpec` and `rncore`. These modules will always appear even if you don't have any extra TurboModule or Fabric Native Component: React Native requires them in order to work properly.
-### TurboModules
+### Turbo Native Modules
-Each TurboModule's folder contains two files: an interface file and an implementation file.
+Each folder contains two files: an interface file and an implementation file.
-The interface files have the same name of the TurboModule and they contain methods to initialize the JSI interface.
+The interface files have the same name as that of the Turbo Native Module and contain methods to initialize the JSI interface.
The implementation files, instead, have the `-generated` suffix and they contains the logic to invoke the native methods from JS and viceversa.
-### Fabric Components
+### Fabric Native Components
-The content of each Fabric Component folder contains several files. The basic element for a Fabric Componenent is the `ShadowNode`: it represents a node in the React absract tree. The `ShadowNode` represents a React entity, therefore it could need some props, which are defined in the `Props` files and, sometimes, an `EventEmitter`, defined in the corresponding file.
+The content of each Fabric Native Component folder contains several files. The basic element for a Fabric Native Component is the `ShadowNode`: it represents a node in the React abstract tree. The `ShadowNode` represents a React entity; therefore, it could need some props, which are defined in the `Props` files and, sometimes, an `EventEmitter`, defined in the corresponding file.
-Additionally, the **Codegen** also creates a `ComponentDescriptor.h` and an `RCTComponentViewHelpers.h` files: the first one is used by React Native and Fabric to properly get a reference to the Component, while the latter contains some helper methods and protocols that can be implemented by the Native View to properly respond to JSI invocations.
+Additionally, the **Codegen** also creates a `ComponentDescriptor.h` and an `RCTComponentViewHelpers.h` files: the first one is used by React Native and Fabric to properly get a reference to the Native Component, while the latter contains some helper methods and protocols that can be implemented by the Native View to properly respond to JSI invocations.
For further details about how Fabric works, have a look at the [Renderer](/architecture/fabric-renderer) section.
### RCTThirdPartyFabricComponentsProvider
-These are an interface and an implementation files for a registry. React Native uses this registry at runtime to retrieve the right class for a required Fabric Component. Once React Native has an handle to that class, it can instantiate it.
+These are an interface and an implementation files for a registry. React Native uses this registry at runtime to retrieve the right class for a required Fabric Native Component. Once React Native has an handle to that class, it can instantiate it.
# Android
@@ -145,11 +145,11 @@ After that, you can navigate into the `SampleApp/android` folder and run:
./gradlew generateCodegenArtifactsFromSchema
```
-This tasks invokes the `generateCodegenArtifactsFromSchema` on all the the imported projects of the app (the app and all the node modules which are linked to it). It generates the code in the corresponding `node_modules/` folder. So, for example, if you have a Fabric Component whose node module is called `my-fabric-component`, the generated code is located in the `SampleApp/node_modules/my-fabric-component/android/build/generated/source/codegen` path.
+This tasks invokes the `generateCodegenArtifactsFromSchema` on all the the imported projects of the app (the app and all the node modules which are linked to it). It generates the code in the corresponding `node_modules/` folder. So, for example, if you have a Fabric Native Component whose node module is called `my-fabric-component`, the generated code is located in the `SampleApp/node_modules/my-fabric-component/android/build/generated/source/codegen` path.
## The Generated Code
-Once the Gradle task completes, you can see different structures for a TurboModule or for a Fabric Component. The following tab shows how they appear:
+Once the Gradle task completes, you can see different structures for a Turbo Native Module or for a Fabric Native Component. The following tab shows how they appear:
@@ -162,6 +162,7 @@ codegen
│ └── MyTurbomodule.java
├── jni
│ ├── Android.mk
+│ ├── CMakeLists.txt
│ ├── MyTurbomodule-generated.cpp
│ ├── MyTurbomodule.h
│ └── react
@@ -214,18 +215,18 @@ codegen
Java can't interoperate seamlessly with C++ as Objective-C++ does. To work properly, the **Codegen** creates some bridging between the Java and the C++ world in the `jni` folder, where the Java Native Interfaces are defined.
-Notice that both TurboModules and Fabric Components comes with two build file descriptors: the `Android.mk` and the `CMakeLists.txt`. These are used by the Android app to actually build the external modules.
+Notice that both Turbo Native Modules and Fabric Native Components comes with two build file descriptors: the `Android.mk` and the `CMakeLists.txt`. These are used by the Android app to actually build the external modules.
-### TurboModule
+### Turbo Native Module
The **Codegen** generates a Java abstract class in the `java` package with the same name of the TurboModule. This abstract class has to be implemented by the JNI C++ implementation.
Then, it generates the C++ files in the `jni` folder. They follow the same iOS convention: there is an interface called `MyTurbomodule.h` and an implementation file called `MyTurbomodule-generated.cpp`. The former is an interface that allows React Natvie to initialize the JSI interface for the TurboModule. The latter is the implementation file which contains the logic to invoke the native method from JS and viceversa.
-### Fabric Component
+### Fabric Native Component
-The **Codegen** for a Fabric Component contains a `MyFabricComponentManagerInterface.java` and a `MyFabricComponentManagerDelegate.java` in the `java` package. They are implemented and used by the native `MyFabricComponentManager` required to properly load the component at runtime (See the guide on how to create a [Fabric Component](./pillars-fabric-components) for details).
+The **Codegen** for a Fabric Native Component contains a `MyFabricComponentManagerInterface.java` and a `MyFabricComponentManagerDelegate.java` in the `java` package. They are implemented and used by the native `MyFabricComponentManager` required to properly load the component at runtime (See the guide on how to create a [Fabric Native Component](./pillars-fabric-components) for details).
Then, there is a layer of JNI C++ files that are used by Fabric to render the components. The basic element for a Fabric Componenent is the `ShadowNode`: it represents a node in the React absract tree. The `ShadowNode` represents a React entity, therefore it could need some props, which are defined in the `Props` files and, sometimes, an `EventEmitter`, defined in the corresponding file.
-The **Codegen** also creates a `ComponentDescriptor.h` which is required to get a proper handle to the Fabric Component.
+The **Codegen** also creates a `ComponentDescriptor.h` which is required to get a proper handle to the Fabric Native Component.
diff --git a/website/versioned_docs/version-0.70/the-new-architecture/pillars-fabric-components.md b/website/versioned_docs/version-0.70/the-new-architecture/pillars-fabric-components.md
index a4271e49985..c5c174c1d24 100644
--- a/website/versioned_docs/version-0.70/the-new-architecture/pillars-fabric-components.md
+++ b/website/versioned_docs/version-0.70/the-new-architecture/pillars-fabric-components.md
@@ -1,6 +1,6 @@
---
id: pillars-fabric-components
-title: Fabric Components
+title: Fabric Native Components
---
import NewArchitectureWarning from '../\_markdown-new-architecture-warning.mdx';
@@ -119,7 +119,7 @@ Finally, the spec file exports the returned value of the `codegenNativeComponent
:::caution
The JavaScript files imports types from libraries, without setting up a proper node module and installing its dependencies. The outcome of this is that the IDE may have troubles resolving the import statements and it can output errors and warnings.
-These will disappear as soon as the Fabric Component is added as a dependency of a React Native app.
+These will disappear as soon as the Fabric Native Component is added as a dependency of a React Native app.
:::
## 3. Component Configuration
@@ -136,7 +136,7 @@ The shared configuration is a `package.json` file that will be used by yarn when
{
"name": "rtn-centered-text",
"version": "0.0.1",
- "description": "Showcase a Fabric Component with a centered text",
+ "description": "Showcase a Fabric Native Component with a centered text",
"react-native": "js/index",
"source": "js/index",
"files": [
@@ -178,7 +178,7 @@ Then there are the dependencies for this package. For this guide, you need `reac
Finally, the **Codegen** configuration is specified by the `codegenConfig` field. It contains an array of libraries, each of which is defined by three other fields:
- `name`: The name of the library. By convention, you should add the `Spec` suffix.
-- `type`: The type of module contained by this package. In this case, it is a Fabric Component, thus the value to use is `components`.
+- `type`: The type of module contained by this package. In this case, it is a Fabric Native Component, thus the value to use is `components`.
- `jsSrcsDir`: the relative path to access the `js` specification that is parsed by **Codegen**.
### iOS: Create the `.podspec` file
@@ -576,7 +576,7 @@ The `updateProps` method is invoked by Fabric every time a prop changes in JavaS
Finally, the `RTNCenteredTextCls` is another static method used to retrieve the correct instance of the class at runtime.
:::caution
-Differently from Native Components, Fabric requires to manually implement the `updateProps` method. It's not enough to export properties with the `RCT_EXPORT_XXX` and `RCT_REMAP_XXX` macros.
+Differently from Legacy Native Components, Fabric requires to manually implement the `updateProps` method. It's not enough to export properties with the `RCT_EXPORT_XXX` and `RCT_REMAP_XXX` macros.
:::
### Android
@@ -630,13 +630,13 @@ codegen
└── schema.json
```
-You can see that the content of the `codegen/jni/react/renderer/components/RTNCenteredTextSpecs` looks similar to the files created by the iOS counterpart. The `Android.mk` and `CMakeList.txt` files configure the Fabric Component in the app, while the `RTNCenteredTextManagerDelegate.java` and `RTNCenteredTextManagerInterface.java` files are meant use in your manager.
+You can see that the content of the `codegen/jni/react/renderer/components/RTNCenteredTextSpecs` looks similar to the files created by the iOS counterpart. The `Android.mk` and `CMakeList.txt` files configure the Fabric Native Component in the app, while the `RTNCenteredTextManagerDelegate.java` and `RTNCenteredTextManagerInterface.java` files are meant use in your manager.
See the [Codegen](./pillars-codegen) section for further details on the generated files.
#### Write the Native Android Code
-The native code for the Android side of a Fabric Components requires three pieces:
+The native code for the Android side of a Fabric Native Components requires three pieces:
1. A `RTNCenteredText.java` that represents the actual view.
2. A `RTNCenteredTextManager.java` to instantiate the view.
@@ -788,11 +788,11 @@ public class RTNCenteredTextPackage implements ReactPackage {
}
```
-The added lines instantiate a new `RTNCenteredTextManager` object so that the React Native runtime can use it to render our Fabric Component.
+The added lines instantiate a new `RTNCenteredTextManager` object so that the React Native runtime can use it to render our Fabric Native Component.
-## 5. Adding the Fabric Component To Your App
+## 5. Adding the Fabric Native Component To Your App
-This is the last step to finally see your Fabric Component running on your app.
+This is the last step to finally see your Fabric Native Component running on your app.
### Shared
diff --git a/website/versioned_docs/version-0.70/the-new-architecture/pillars-turbomodule.md b/website/versioned_docs/version-0.70/the-new-architecture/pillars-turbomodule.md
index 9ccd7a9820f..4533a2f3b40 100644
--- a/website/versioned_docs/version-0.70/the-new-architecture/pillars-turbomodule.md
+++ b/website/versioned_docs/version-0.70/the-new-architecture/pillars-turbomodule.md
@@ -1,6 +1,6 @@
---
id: pillars-turbomodules
-title: TurboModules
+title: Turbo Native Modules
---
import Tabs from '@theme/Tabs'; import TabItem from '@theme/TabItem'; import constants from '@site/core/TabsConstants';
@@ -10,23 +10,23 @@ import NewArchitectureWarning from '../\_markdown-new-architecture-warning.mdx';
If you've worked with React Native, you may be familiar with the concept of [Native Modules](../native-modules-intro.md), which allow JavaScript and platform-native code to communicate over the React Native "bridge", which handles cross-platform serialization via JSON.
-TurboModules are the next iteration on Native Modules that provide a few extra [benefits](./why):
+Turbo Native Modules are the next iteration on Native Modules that provide a few extra [benefits](./why):
- Strongly typed interfaces that are consistent across platforms
- The ability to write your code in C++, either exclusively or integrated with another native platform language, reducing the need to duplicate implementations across platforms
- Lazy loading of modules, allowing for faster app startup
- The use of JSI, a JavaScript interface for native code, which allows for more efficient communication between native and JavaScript code than the bridge
-This guide will show you how to create a basic TurboModule.
+This guide will show you how to create a basic Turbo Native Module compatible with React Native 0.70.0.
:::caution
-TurboModules only work with the **New Architecture** enabled.
+Turbo Native Modules only work with the **New Architecture** enabled.
To migrate to the **New Architecture**, follow the [Migration guide](../new-architecture-intro)
:::
-## How to Create a TurboModule
+## How to Create a Turbo Native Module
-To create a TurboModule, we need to:
+To create a Turbo Native Module, we need to:
1. Define the JavaScript specification.
2. Configure the module so that Codegen can generate the scaffolding.
@@ -34,7 +34,7 @@ To create a TurboModule, we need to:
## 1. Folder Setup
-In order to keep the module decoupled from the app, it's a good idea to define the module separately from the app, and then add it as a dependency to your app later. This is also what you'll do for writing TurboModules that can be released as open-source libraries later.
+In order to keep the module decoupled from the app, it's a good idea to define the module separately from the app and then add it as a dependency to your app later. This is also what you'll do for writing Turbo Native Modules that can be released as open-source libraries later.
Next to your application, create a folder called `RTNCalculator`. **RTN** stands for "**R**eac**t** **N**ative", and is a recommended prefix for React Native modules.
@@ -97,12 +97,12 @@ export default TurboModuleRegistry.get(
At the beginning of the spec files are the imports:
-- The `TurboModule` type, which defines the base interface for all TurboModules
-- The `TurboModuleRegistry` JavaScript module, which contains functions for loading TurboModules
+- The `TurboModule` type, which defines the base interface for all Turbo Native Modules
+- The `TurboModuleRegistry` JavaScript module, which contains functions for loading Turbo Native Modules
-The second section of the file contains the interface specification for the TurboModule. In this case, the interface defines the `add` function which takes two numbers and returns a promise that resolves to a number. This interface type **must** be named `Spec` for a TurboModule.
+The second section of the file contains the interface specification for the Turbo Native Module. In this case, the interface defines the `add` function, which takes two numbers and returns a promise that resolves to a number. This interface type **must** be named `Spec` for a Turbo Native Module.
-Finally, we invoke `TurboModuleRegistry.get`, passing the module's name, which will load the TurboModule if it's available.
+Finally, we invoke `TurboModuleRegistry.get`, passing the module's name, which will load the Turbo Native Module if it's available.
:::caution
We are writing JavaScript files importing types from libraries, without setting up a proper node module and installing its dependencies. Your IDE will not be able to resolve the import statements and you may see errors and warnings. This is expected and will not cause problems when you add the module to your app.
@@ -122,7 +122,7 @@ The shared configuration is a `package.json` file that will be used by yarn when
{
"name": "rtn-calculator",
"version": "0.0.1",
- "description": "Add numbers with TurboModules",
+ "description": "Add numbers with Turbo Native Modules",
"react-native": "js/index",
"source": "js/index",
"files": [
@@ -167,7 +167,7 @@ Then there are the dependencies for this package. For this guide, you need `reac
Finally, the **Codegen** configuration is specified by the `codegenConfig` field. It contains an array of libraries, each of which is defined by three other fields:
- `name`: The name of the library. By convention, you should add the `Spec` suffix.
-- `type`: The type of module contained by this package. In this case, it is a TurboModule, thus the value to use is `modules`.
+- `type`: The type of module contained by this package. In this case, it is a Turbo Native Module; thus, the value to use is `modules`.
- `jsSrcsDir`: the relative path to access the `js` specification that is parsed by **Codegen**.
- `android.javaPackageName`: the package to use in the Java files generated by **Codegen**.
@@ -182,7 +182,6 @@ require "json"
package = JSON.parse(File.read(File.join(__dir__, "package.json")))
-folly_version = '2021.07.22.00'
folly_compiler_flags = '-DFOLLY_NO_CONFIG -DFOLLY_MOBILE=1 -DFOLLY_USE_LIBCPP=1 -Wno-comma -Wno-shorten-64-to-32'
Pod::Spec.new do |s|
@@ -208,7 +207,7 @@ Pod::Spec.new do |s|
}
s.dependency "React-Codegen"
- s.dependency "RCT-Folly", folly_version
+ s.dependency "RCT-Folly"
s.dependency "RCTRequired"
s.dependency "RCTTypeSafety"
s.dependency "ReactCommon/turbomodule/core"
@@ -329,12 +328,12 @@ The `ReactPackage` interface is used by React Native to understand what native c
## 4. Native Code
-For the final step in getting your TurboModule ready to go, you'll need to write some native code to connect the JavaScript side to the native platforms. This process requires two main steps:
+For the final step in getting your Turbo Native Module ready to go, you'll need to write some native code to connect the JavaScript side to the native platforms. This process requires two main steps:
- Run **Codegen** to see what it generates.
- Write your native code, implementing the generated interfaces.
-When developing a React Native app that uses a TurboModule, it is responsibility of the app to actually generate the code using **Codegen**. However, when developing a TurboModule as a library, we need to reference the generated code, and it is therefore useful to see what the app will generate.
+When developing a React Native app that uses a Turbo Native Module, it is the responsibility of the app to actually generate the code using **Codegen**. However, when developing a TurboModule as a library, we need to reference the generated code, and it is therefore, useful to see what the app will generate.
As first step for both iOS and Android, this guide shows how to execute manually the scripts used by **Codegen** to generate the required code. Further information on **Codegen** can be found [here](pillars-codegen.md)
@@ -390,7 +389,7 @@ generated
└── ShadowNodes.h
```
-The relevant path for the TurboModule interface is `generated/build/generated/ios/RTNCalculatorSpec`.
+The relevant path for the Turbo Native Module interface is `generated/build/generated/ios/RTNCalculatorSpec`.
See the [Codegen](./pillars-codegen) section for further details on the generated files.
@@ -407,7 +406,7 @@ rm -rf build
#### Write the Native iOS Code
-Now add the Native code for your TurboModule. Create two files in the `RTNCalculator/ios` folder:
+Now add the Native code for your Turbo Native Module. Create two files in the `RTNCalculator/ios` folder:
1. The `RTNCalculator.h`, a header file for the module.
2. The `RTNCalculator.mm`, the implementation of the module.
@@ -415,11 +414,11 @@ Now add the Native code for your TurboModule. Create two files in the `RTNCalcul
##### RTNCalculator.h
```objc title="RTNCalculator.h"
-#import
+#import
NS_ASSUME_NONNULL_BEGIN
-@interface RTNCalculator : NSObject
+@interface RTNCalculator : NSObject
@end
@@ -436,13 +435,9 @@ This file defines the interface for the `RTNCalculator` module. Here, we can add
@implementation RTNCalculator
-RCT_EXPORT_MODULE(RTNCalculator)
+RCT_EXPORT_MODULE()
-RCT_REMAP_METHOD(add, addA:(NSInteger)a
- andB:(NSInteger)b
- withResolver:(RCTPromiseResolveBlock) resolve
- withRejecter:(RCTPromiseRejectBlock) reject)
-{
+- (void)add:(double)a b:(double)b resolve:(RCTPromiseResolveBlock)resolve reject:(RCTPromiseRejectBlock)reject {
NSNumber *result = [[NSNumber alloc] initWithInteger:a+b];
resolve(result);
}
@@ -456,11 +451,11 @@ RCT_REMAP_METHOD(add, addA:(NSInteger)a
@end
```
-The most important call is to the `RCT_EXPORT_MODULE`, which is required to export the module so that React Native can load the TurboModule.
+The most important call is to the `RCT_EXPORT_MODULE`, which is required to export the module so that React Native can load the Turbo Native Module.
-Then the `RCT_REMAP_METHOD` macro is used to expose the `add` method.
+Then the `add` method, whose signature must match the one specified by the Codegen in the `RTNCalculatorSpec.h`.
-Finally, the `getTurboModule` method gets an instance of the TurboModule so that the JavaScript side can invoke its methods. The function is defined in (and requested by) the `RTNCalculatorSpec.h` file that was generated earlier by Codegen.
+Finally, the `getTurboModule` method gets an instance of the Turbo Native Module so that the JavaScript side can invoke its methods. The function is defined in (and requested by) the `RTNCalculatorSpec.h` file that was generated earlier by Codegen.
:::info
There are other macros that can be used to export modules and methods. You view the code that specifies them [here](https://github.com/facebook/react-native/blob/main/React/Base/RCTBridgeModule.h).
@@ -497,6 +492,7 @@ codegen
│ └── NativeCalculatorSpec.java
├── jni
│ ├── Android.mk
+│ ├── CMakeLists.txt
│ ├── RTNCalculator-generated.cpp
│ ├── RTNCalculator.h
│ └── react
@@ -515,7 +511,7 @@ codegen
#### Write the Native Android Code
-The native code for the Android side of a TurboModule requires:
+The native code for the Android side of a Turbo Native Module requires:
1. to create a `RTNCalculatorModule.java` that implements the module.
2. to update the `RTNCalculatorPackage.java` created in the previous step.
@@ -627,9 +623,9 @@ public class CalculatorPackage extends TurboReactPackage {
This is the last piece of Native Code for Android. It defines the `TurboReactPackage` object that will be used by the app to load the module.
-## 5. Adding the TurboModule to your App
+## 5. Adding the Turbo Native Module to your App
-Now you can install and use the TurboModule in your app.
+Now you can install and use the Turbo Native Module in your app.
### Shared
@@ -666,7 +662,7 @@ Android configuration requires to enable the **New Architecture**:
### JavaScript
-Now you can use your TurboModule calculator in your app!
+Now you can use your Turbo Native Module calculator in your app!
Here's an example App.js file using the `add` method:
@@ -710,4 +706,4 @@ const App: () => Node = () => {
export default App;
```
-Try this out to see your TurboModule in action!
+Try this out to see your Turbo Native Module in action!
diff --git a/website/versioned_docs/version-0.70/the-new-architecture/pillars.md b/website/versioned_docs/version-0.70/the-new-architecture/pillars.md
index 8a0841c1eff..24db249ce43 100644
--- a/website/versioned_docs/version-0.70/the-new-architecture/pillars.md
+++ b/website/versioned_docs/version-0.70/the-new-architecture/pillars.md
@@ -7,14 +7,23 @@ import NewArchitectureWarning from '../\_markdown-new-architecture-warning.mdx';
-The New Architecture is composed mainly by two pillars:
+The New Architecture is composed mainly of two pillars:
-- [TurboModules](pillars-turbomodules)
-- [Fabric Components](pillars-fabric-components).
+- [The New Native Module System - Turbo Modules](pillars-turbomodules)
+- [The New Renderer - Fabric](pillars-fabric-components).
+
+The core concepts of React Native still holds true in the New Architecture: Native Modules are the preferred way to create libraries that leverage some platform-specific API. Native Components are the preferred way to create reusable UI components, providing a native experience to the users.
TurboModules are the preferred way to create libraries that leverage some platform specific API. Fabric Components are the preferred way to create reusable UI components, providing a native experience to the users.
-The main goal of this section is to drive the reader through a step-by-step guide to create their first TurboModule or Fabric Component.
+The main goal of this section is to drive the reader through a step-by-step guide to create their first Native Module or Component which is compatible with the New Architecture.
+
+:::info
+For the sake of this guide we're going to use the following **terminology**:
+
+- **Legacy Native Components** & **Legacy Native Modules** - To refer to Modules and Components which are running on the old React Native architecture.
+- **Fabric Native Components** & **Turbo Native Modules** - To refer to Modules and Components which have been adapted to work well with the New Architecture, namely the new renderer and the new Native Module System. For brevity you might find them referred as **Fabric Components** and **Turbo Modules**
+ :::
The next sections contain an high-level overview of the pillars, together with the steps to create them. To create one of these pillars, the steps are:
@@ -26,7 +35,7 @@ The next sections contain an high-level overview of the pillars, together with t
Finally, we dive a little deeper into the [Codegen](pillars-codegen) process that is required to create all the C++ types and files used by our components, including some useful steps to work comfortably while developing the component.
:::caution
-To integrate a TurboModule or a Fabric Component in an app, the app has to run with the New Architecture enabled.
+The app has to run with the **New Architecture enabled to integrate a Turbo Native Module or a Fabric Native Component** in an app.
To create a new app adopting the New Architecture, refer to the [Using the App Template](use-app-template) section.
To migrate an existing app to the New Architecture, refer to the [Migration](../new-architecture-intro) guide.
diff --git a/website/versioned_docs/version-0.70/the-new-architecture/use-app-template.md b/website/versioned_docs/version-0.70/the-new-architecture/use-app-template.md
index ca4ed3d3dad..04fcd9b3091 100644
--- a/website/versioned_docs/version-0.70/the-new-architecture/use-app-template.md
+++ b/website/versioned_docs/version-0.70/the-new-architecture/use-app-template.md
@@ -123,10 +123,10 @@ For further explanations of what each file is doing, check out these guides to w
#### Android
-- [Enabling TurboModules on Android](new-architecture-app-modules-android.md)
-- [Enabling Fabric on Android](new-architecture-app-renderer-android.md)
+- [Enabling the New Native Module System (Turbo Module) on Android](new-architecture-app-modules-android.md)
+- [Enabling the New Renderer (Fabric) on Android](new-architecture-app-renderer-android.md)
#### iOS
-- [Enabling TurboModules on iOS](new-architecture-app-modules-ios.md)
-- [Enabling Fabric on iOS](new-architecture-app-renderer-ios.md)
+- [Enabling the New Native Module System (Turbo Module) on iOS](new-architecture-app-modules-ios.md)
+- [Enabling the New Renderer (Fabric) on iOS](new-architecture-app-renderer-ios.md)
diff --git a/website/versioned_docs/version-0.70/the-new-architecture/why.md b/website/versioned_docs/version-0.70/the-new-architecture/why.md
index 47bb4e7dd8e..fb5723d0eb3 100644
--- a/website/versioned_docs/version-0.70/the-new-architecture/why.md
+++ b/website/versioned_docs/version-0.70/the-new-architecture/why.md
@@ -35,7 +35,7 @@ This idea allowed to unlock several benefits:
- **Code sharing:** by introducing C++, it is now possible to abstract all the platform agnostic code and to share it with ease between the plaforms.
- **Type safety:** to make sure that JS can properly invoke methods on C++ objects and viceversa, a layer of code automatically generated has been added. The code is generated starting from some JS specification that must be typed through Flow or TypeScript.
-These advantages are the foundations of the [TurboModule](pillars-turbomodules) system and a jumping stone to further enhancements. For example, it has been possible to develop a new renderer which is faster and more performant: [Fabric](/architecture/fabric-renderer) and its [Fabric Components](pillars-fabric-components).
+These advantages are the foundations of the [New Native Module System](pillars-turbomodules) and a jumping stone to further enhancements. For example, it has been possible to develop a [new renderer](/architecture/fabric-renderer) which offers faster and more performant [Native Components](pillars-fabric-components).
## Further Reading
diff --git a/website/versioned_docs/version-0.70/typescript.md b/website/versioned_docs/version-0.70/typescript.md
index e3e52e66439..b882d9a69ed 100644
--- a/website/versioned_docs/version-0.70/typescript.md
+++ b/website/versioned_docs/version-0.70/typescript.md
@@ -78,14 +78,14 @@ ignite new MyTSProject
```shell
-npm install -D typescript @types/jest @types/react @types/react-native @types/react-test-renderer
+npm install -D typescript @types/jest @types/react @types/react-native @types/react-test-renderer @tsconfig/react-native
```
```shell
-yarn add -D typescript @types/jest @types/react @types/react-native @types/react-test-renderer
+yarn add -D typescript @types/jest @types/react @types/react-native @types/react-test-renderer @tsconfig/react-native
```
@@ -95,25 +95,7 @@ yarn add -D typescript @types/jest @types/react @types/react-native @types/react
```json
{
- "compilerOptions": {
- "allowJs": true,
- "allowSyntheticDefaultImports": true,
- "esModuleInterop": true,
- "isolatedModules": true,
- "jsx": "react-native",
- "lib": ["es2017"],
- "types": ["react-native", "jest"],
- "moduleResolution": "node",
- "noEmit": true,
- "strict": true,
- "target": "esnext"
- },
- "exclude": [
- "node_modules",
- "babel.config.js",
- "metro.config.js",
- "jest.config.js"
- ]
+ "extends": "@tsconfig/react-native/tsconfig.json"
}
```
diff --git a/website/versioned_docs/version-0.70/virtualizedlist.md b/website/versioned_docs/version-0.70/virtualizedlist.md
index b1abd2c3ac0..e99c1cb6827 100644
--- a/website/versioned_docs/version-0.70/virtualizedlist.md
+++ b/website/versioned_docs/version-0.70/virtualizedlist.md
@@ -149,11 +149,11 @@ Each cell is rendered using this element. Can be a React Component Class, or a r
### `ItemSeparatorComponent`
-Rendered in between each item, but not at the top or bottom. By default, `highlighted` and `leadingItem` props are provided. `renderItem` provides `separators.highlight`/`unhighlight` which will update the `highlighted` prop, but you can also add custom props with `separators.updateProps`.
+Rendered in between each item, but not at the top or bottom. By default, `highlighted` and `leadingItem` props are provided. `renderItem` provides `separators.highlight`/`unhighlight` which will update the `highlighted` prop, but you can also add custom props with `separators.updateProps`. Can be a React Component (e.g. `SomeComponent`), or a React element (e.g. ``).
-| Type |
-| ------------------- |
-| component, function |
+| Type |
+| ---------------------------- |
+| component, function, element |
---
diff --git a/yarn.lock b/yarn.lock
index 0750560772a..c55c6466399 100644
--- a/yarn.lock
+++ b/yarn.lock
@@ -1798,6 +1798,21 @@
"@nodelib/fs.scandir" "2.1.4"
fastq "^1.6.0"
+"@pnpm/network.ca-file@^1.0.1":
+ version "1.0.1"
+ resolved "https://registry.yarnpkg.com/@pnpm/network.ca-file/-/network.ca-file-1.0.1.tgz#16f88d057c68cd5419c1ef3dfa281296ea80b047"
+ integrity sha512-gkINruT2KUhZLTaiHxwCOh1O4NVnFT0wLjWFBHmTz9vpKag/C/noIMJXBxFe4F0mYpUVX2puLwAieLYFg2NvoA==
+ dependencies:
+ graceful-fs "4.2.10"
+
+"@pnpm/npm-conf@^1.0.4":
+ version "1.0.5"
+ resolved "https://registry.yarnpkg.com/@pnpm/npm-conf/-/npm-conf-1.0.5.tgz#3475541fb71d7b6ce68acaaa3392eae9fedf3276"
+ integrity sha512-hD8ml183638O3R6/Txrh0L8VzGOrFXgRtRDG4qQC4tONdZ5Z1M+tlUUDUvrjYdmK6G+JTBTeaCLMna11cXzi8A==
+ dependencies:
+ "@pnpm/network.ca-file" "^1.0.1"
+ config-chain "^1.1.11"
+
"@polka/url@^1.0.0-next.9":
version "1.0.0-next.11"
resolved "https://registry.yarnpkg.com/@polka/url/-/url-1.0.0-next.11.tgz#aeb16f50649a91af79dbe36574b66d0f9e4d9f71"
@@ -1857,10 +1872,10 @@
resolved "https://registry.yarnpkg.com/@sideway/pinpoint/-/pinpoint-2.0.0.tgz#cff8ffadc372ad29fd3f78277aeb29e632cc70df"
integrity sha512-RNiOoTPkptFtSVzQevY/yWtZwf/RxyVnPy/OcA9HBM3MlGDnBEYL5B41H0MTn0Uec8Hi+2qUtTfG2WWZBmMejQ==
-"@sindresorhus/is@^0.14.0":
- version "0.14.0"
- resolved "https://registry.yarnpkg.com/@sindresorhus/is/-/is-0.14.0.tgz#9fb3a3cf3132328151f353de4632e01e52102bea"
- integrity sha512-9NET910DNaIPngYnLLPeg+Ogzqsi9uM4mSboU5y6p8S5DzMTVEsJZrawi+BoDNUVBa2DhJqQYUFvMDfgU062LQ==
+"@sindresorhus/is@^5.2.0":
+ version "5.3.0"
+ resolved "https://registry.yarnpkg.com/@sindresorhus/is/-/is-5.3.0.tgz#0ec9264cf54a527671d990eb874e030b55b70dcc"
+ integrity sha512-CX6t4SYQ37lzxicAqsBtxA3OseeoVrh9cSJ5PFYam0GksYlupRfy1A+Q4aYD3zvcfECLc0zO2u+ZnR2UYKvCrw==
"@slorber/static-site-generator-webpack-plugin@^4.0.7":
version "4.0.7"
@@ -1985,12 +2000,12 @@
"@svgr/plugin-jsx" "^6.2.1"
"@svgr/plugin-svgo" "^6.2.0"
-"@szmarczak/http-timer@^1.1.2":
- version "1.1.2"
- resolved "https://registry.yarnpkg.com/@szmarczak/http-timer/-/http-timer-1.1.2.tgz#b1665e2c461a2cd92f4c1bbf50d5454de0d4b421"
- integrity sha512-XIB2XbzHTN6ieIjfIMV9hlVcfPU26s2vafYWQcZHWXHOxiaRZYEDKEwdl129Zyg50+foYV2jCgtrqSA6qNuNSA==
+"@szmarczak/http-timer@^5.0.1":
+ version "5.0.1"
+ resolved "https://registry.yarnpkg.com/@szmarczak/http-timer/-/http-timer-5.0.1.tgz#c7c1bf1141cdd4751b0399c8fc7b8b664cd5be3a"
+ integrity sha512-+PmQX0PiAYPMeVYe237LJAYvOMYW1j2rH5YROyS3b4CTVJum34HfRvKvAzozHAQG0TnHNdUfY9nCeUyRAs//cw==
dependencies:
- defer-to-connect "^1.0.1"
+ defer-to-connect "^2.0.1"
"@trysound/sax@0.2.0":
version "0.2.0"
@@ -2137,6 +2152,11 @@
resolved "https://registry.yarnpkg.com/@types/html-minifier-terser/-/html-minifier-terser-6.0.0.tgz#563c1c6c132cd204e71512f9c0b394ff90d3fae7"
integrity sha512-NZwaaynfs1oIoLAV1vg18e7QMVDvw+6SQrdJc8w3BwUaoroVSf6EBj/Sk4PBWGxsq0dzhA2drbsuMC1/6C6KgQ==
+"@types/http-cache-semantics@^4.0.1":
+ version "4.0.1"
+ resolved "https://registry.yarnpkg.com/@types/http-cache-semantics/-/http-cache-semantics-4.0.1.tgz#0ea7b61496902b95890dc4c3a116b60cb8dae812"
+ integrity sha512-SZs7ekbP8CN0txVG2xVRH6EgKmEm31BOxA07vkFaETzZz1xh+cbt8BcI0slpymvwhx5dlFnQG2rTlPVQn+iRPQ==
+
"@types/http-proxy@^1.17.8":
version "1.17.8"
resolved "https://registry.yarnpkg.com/@types/http-proxy/-/http-proxy-1.17.8.tgz#968c66903e7e42b483608030ee85800f22d03f55"
@@ -2606,7 +2626,7 @@ algoliasearch@^4.0.0, algoliasearch@^4.13.1:
"@algolia/requester-node-http" "4.13.1"
"@algolia/transporter" "4.13.1"
-ansi-align@^3.0.0, ansi-align@^3.0.1:
+ansi-align@^3.0.1:
version "3.0.1"
resolved "https://registry.yarnpkg.com/ansi-align/-/ansi-align-3.0.1.tgz#0cdf12e111ace773a86e9a1fad1225c43cb19a59"
integrity sha512-IOfwwBF5iczOjp/WeY4YxyjqAFMQoZufdQWDd19SEExbVLNXqvpzSJ/M7Za4/sCPmQ0+GRquoA7bGcINcxew6w==
@@ -2618,11 +2638,16 @@ ansi-html-community@^0.0.8:
resolved "https://registry.yarnpkg.com/ansi-html-community/-/ansi-html-community-0.0.8.tgz#69fbc4d6ccbe383f9736934ae34c3f8290f1bf41"
integrity sha512-1APHAyr3+PCamwNw3bXCPp4HFLONZt/yIH0sZp0/469KWNTEy+qN5jQ3GVX6DMZ1UXAi34yVwtTeaG/HpBuuzw==
-ansi-regex@^5.0.1, ansi-regex@^6.0.1:
+ansi-regex@^5.0.1:
version "5.0.1"
resolved "https://registry.yarnpkg.com/ansi-regex/-/ansi-regex-5.0.1.tgz#082cb2c89c9fe8659a311a53bd6a4dc5301db304"
integrity sha512-quJQXlTSUGL2LH9SUXo8VwsY4soanhgo6LNSm84E1LBcE8s3O0wpdiRzyR9z/ZZJMlMWv37qOOb9pdJlMUEKFQ==
+ansi-regex@^6.0.1:
+ version "6.0.1"
+ resolved "https://registry.yarnpkg.com/ansi-regex/-/ansi-regex-6.0.1.tgz#3183e38fae9a65d7cb5e53945cd5897d0260a06a"
+ integrity sha512-n5M855fKb2SsfMIiFFoVrABHJC8QtHwVx+mHWP3QcEqBHYienj5dHSgjbxtC0WEZXYt4wcD6zrQElDPhFuZgfA==
+
ansi-styles@^3.2.1:
version "3.2.1"
resolved "https://registry.yarnpkg.com/ansi-styles/-/ansi-styles-3.2.1.tgz#41fbb20243e50b12be0f04b8dedbf07520ce841d"
@@ -2630,7 +2655,7 @@ ansi-styles@^3.2.1:
dependencies:
color-convert "^1.9.0"
-ansi-styles@^4.0.0, ansi-styles@^4.1.0:
+ansi-styles@^4.1.0:
version "4.3.0"
resolved "https://registry.yarnpkg.com/ansi-styles/-/ansi-styles-4.3.0.tgz#edd803628ae71c04c85ae7a0906edad34b648937"
integrity sha512-zbB9rCJAT1rbjiVDb2hqKFHNYLxgtk8NURxZ3IZwD3F6NtxbXZQCnnSi1Lkx+IDohdPlFp222wVALIheZJQSEg==
@@ -2882,20 +2907,6 @@ boolbase@^1.0.0:
resolved "https://registry.yarnpkg.com/boolbase/-/boolbase-1.0.0.tgz#68dff5fbe60c51eb37725ea9e3ed310dcc1e776e"
integrity sha1-aN/1++YMUes3cl6p4+0xDcwed24=
-boxen@^5.0.0:
- version "5.0.1"
- resolved "https://registry.yarnpkg.com/boxen/-/boxen-5.0.1.tgz#657528bdd3f59a772b8279b831f27ec2c744664b"
- integrity sha512-49VBlw+PrWEF51aCmy7QIteYPIFZxSpvqBdP/2itCPPlJ49kj9zg/XPRFrdkne2W+CfwXUls8exMvu1RysZpKA==
- dependencies:
- ansi-align "^3.0.0"
- camelcase "^6.2.0"
- chalk "^4.1.0"
- cli-boxes "^2.2.1"
- string-width "^4.2.0"
- type-fest "^0.20.2"
- widest-line "^3.1.0"
- wrap-ansi "^7.0.0"
-
boxen@^6.2.1:
version "6.2.1"
resolved "https://registry.yarnpkg.com/boxen/-/boxen-6.2.1.tgz#b098a2278b2cd2845deef2dff2efc38d329b434d"
@@ -2910,6 +2921,20 @@ boxen@^6.2.1:
widest-line "^4.0.1"
wrap-ansi "^8.0.1"
+boxen@^7.0.0:
+ version "7.0.0"
+ resolved "https://registry.yarnpkg.com/boxen/-/boxen-7.0.0.tgz#9e5f8c26e716793fc96edcf7cf754cdf5e3fbf32"
+ integrity sha512-j//dBVuyacJbvW+tvZ9HuH03fZ46QcaKvvhZickZqtB271DxJ7SNRSNxrV/dZX0085m7hISRZWbzWlJvx/rHSg==
+ dependencies:
+ ansi-align "^3.0.1"
+ camelcase "^7.0.0"
+ chalk "^5.0.1"
+ cli-boxes "^3.0.0"
+ string-width "^5.1.2"
+ type-fest "^2.13.0"
+ widest-line "^4.0.1"
+ wrap-ansi "^8.0.1"
+
brace-expansion@^1.1.7:
version "1.1.11"
resolved "https://registry.yarnpkg.com/brace-expansion/-/brace-expansion-1.1.11.tgz#3c7fcbf529d87226f3d2f52b966ff5271eb441dd"
@@ -2983,18 +3008,23 @@ bytes@3.1.2:
resolved "https://registry.yarnpkg.com/bytes/-/bytes-3.1.2.tgz#8b0beeb98605adf1b128fa4386403c009e0221a5"
integrity sha512-/Nf7TyzTx6S3yRJObOAV7956r8cr2+Oj8AC5dt8wSP3BQAoeX58NoHyCU8P8zGkNXStjTSi6fzO6F0pBdcYbEg==
-cacheable-request@^6.0.0:
- version "6.1.0"
- resolved "https://registry.yarnpkg.com/cacheable-request/-/cacheable-request-6.1.0.tgz#20ffb8bd162ba4be11e9567d823db651052ca912"
- integrity sha512-Oj3cAGPCqOZX7Rz64Uny2GYAZNliQSqfbePrgAQ1wKAihYmCUnraBtJtKcGR4xz7wF+LoJC+ssFZvv5BgF9Igg==
- dependencies:
- clone-response "^1.0.2"
- get-stream "^5.1.0"
- http-cache-semantics "^4.0.0"
- keyv "^3.0.0"
- lowercase-keys "^2.0.0"
- normalize-url "^4.1.0"
- responselike "^1.0.2"
+cacheable-lookup@^7.0.0:
+ version "7.0.0"
+ resolved "https://registry.yarnpkg.com/cacheable-lookup/-/cacheable-lookup-7.0.0.tgz#3476a8215d046e5a3202a9209dd13fec1f933a27"
+ integrity sha512-+qJyx4xiKra8mZrcwhjMRMUhD5NR1R8esPkzIYxX96JiecFoxAXFuz/GpR3+ev4PE1WamHip78wV0vcmPQtp8w==
+
+cacheable-request@^10.2.1:
+ version "10.2.1"
+ resolved "https://registry.yarnpkg.com/cacheable-request/-/cacheable-request-10.2.1.tgz#cbc7480bf057fb7bd5bc7520f7e5a43d9c865626"
+ integrity sha512-3tLJyBjGuXw1s5gpKFSG3iS4kaKT4id04dZi98wzHQp/8cqZNweBnrF9J+rrlvrf4M53OdtDGNctNHFias8BEA==
+ dependencies:
+ "@types/http-cache-semantics" "^4.0.1"
+ get-stream "^6.0.1"
+ http-cache-semantics "^4.1.0"
+ keyv "^4.5.0"
+ mimic-response "^4.0.0"
+ normalize-url "^7.1.0"
+ responselike "^3.0.0"
call-bind@^1.0.0, call-bind@^1.0.2:
version "1.0.2"
@@ -3037,6 +3067,11 @@ camelcase@^6.2.0, camelcase@^6.3.0:
resolved "https://registry.yarnpkg.com/camelcase/-/camelcase-6.3.0.tgz#5685b95eb209ac9c0c177467778c9c84df58ba9a"
integrity sha512-Gmy6FhYlCY7uOElZUSbxo2UCDH8owEk996gkbrpsgGtrJLM3J7jGxl9Ic7Qwwj4ivOE5AWZWRMecDdF7hqGjFA==
+camelcase@^7.0.0:
+ version "7.0.0"
+ resolved "https://registry.yarnpkg.com/camelcase/-/camelcase-7.0.0.tgz#fd112621b212126741f998d614cbc2a8623fd174"
+ integrity sha512-JToIvOmz6nhGsUhAYScbo2d6Py5wojjNfoxoc2mEVLUdJ70gJK2gnd+ABY1Tc3sVMyK7QDPtN0T/XdlCQWITyQ==
+
caniuse-api@^3.0.0:
version "3.0.0"
resolved "https://registry.yarnpkg.com/caniuse-api/-/caniuse-api-3.0.0.tgz#5e4d90e2274961d46291997df599e3ed008ee4c0"
@@ -3092,6 +3127,11 @@ chalk@^4.0.0, chalk@^4.0.2, chalk@^4.1.0, chalk@^4.1.2:
ansi-styles "^4.1.0"
supports-color "^7.1.0"
+chalk@^5.0.1:
+ version "5.0.1"
+ resolved "https://registry.yarnpkg.com/chalk/-/chalk-5.0.1.tgz#ca57d71e82bb534a296df63bbacc4a1c22b2a4b6"
+ integrity sha512-Fo07WOYGqMfCWHOzSXOt2CxDbC6skS/jO9ynEcmpANMoPrD+W1r1K6Vx7iNm+AQmETU1Xr2t+n8nzkV9t6xh3w==
+
character-entities-html4@^1.0.0:
version "1.1.4"
resolved "https://registry.yarnpkg.com/character-entities-html4/-/character-entities-html4-1.1.4.tgz#0e64b0a3753ddbf1fdc044c5fd01d0199a02e125"
@@ -3184,6 +3224,11 @@ ci-info@^2.0.0:
resolved "https://registry.yarnpkg.com/ci-info/-/ci-info-2.0.0.tgz#67a9e964be31a51e15e5010d58e6f12834002f46"
integrity sha512-5tK7EtrZ0N+OLFMthtqOj4fI2Jeb88C4CAZPu25LDVUgXJ0A3Js4PMGqrn0JU1W0Mh1/Z8wZzYPxqUrXeBboCQ==
+ci-info@^3.2.0:
+ version "3.4.0"
+ resolved "https://registry.yarnpkg.com/ci-info/-/ci-info-3.4.0.tgz#b28484fd436cbc267900364f096c9dc185efb251"
+ integrity sha512-t5QdPT5jq3o262DOQ8zA6E1tlH2upmUc4Hlvrbx1pGYJuiiHl7O7rvVNI+l8HTVhd/q3Qc9vqimkNk5yiXsAug==
+
clean-css@^5.2.2, clean-css@^5.3.0:
version "5.3.0"
resolved "https://registry.yarnpkg.com/clean-css/-/clean-css-5.3.0.tgz#ad3d8238d5f3549e83d5f87205189494bc7cbb59"
@@ -3196,11 +3241,6 @@ clean-stack@^2.0.0:
resolved "https://registry.yarnpkg.com/clean-stack/-/clean-stack-2.2.0.tgz#ee8472dbb129e727b31e8a10a427dee9dfe4008b"
integrity sha512-4diC9HaTE+KRAMWhDhrGOECgWZxoevMc5TlkObMqNSsVU62PYzXZ/SMTjzyGAFF1YusgxGcSWTEXBhp0CPwQ1A==
-cli-boxes@^2.2.1:
- version "2.2.1"
- resolved "https://registry.yarnpkg.com/cli-boxes/-/cli-boxes-2.2.1.tgz#ddd5035d25094fce220e9cab40a45840a440318f"
- integrity sha512-y4coMcylgSCdVinjiDBuR8PCC2bLjyGTwEmPb9NHR/QaNU6EUOXcTY/s6VjGMD6ENSEaeQYHCY0GNGS5jfMwPw==
-
cli-boxes@^3.0.0:
version "3.0.0"
resolved "https://registry.yarnpkg.com/cli-boxes/-/cli-boxes-3.0.0.tgz#71a10c716feeba005e4504f36329ef0b17cf3145"
@@ -3215,14 +3255,6 @@ cli-table3@^0.6.2:
optionalDependencies:
"@colors/colors" "1.5.0"
-cli@~1.0.0:
- version "1.0.1"
- resolved "https://registry.yarnpkg.com/cli/-/cli-1.0.1.tgz#22817534f24bfa4950c34d532d48ecbc621b8c14"
- integrity sha1-IoF1NPJL+klQw01TLUjsvGIbjBQ=
- dependencies:
- exit "0.1.2"
- glob "^7.1.1"
-
clone-deep@^4.0.1:
version "4.0.1"
resolved "https://registry.yarnpkg.com/clone-deep/-/clone-deep-4.0.1.tgz#c19fd9bdbbf85942b4fd979c84dcf7d5f07c2387"
@@ -3232,13 +3264,6 @@ clone-deep@^4.0.1:
kind-of "^6.0.2"
shallow-clone "^3.0.0"
-clone-response@^1.0.2:
- version "1.0.2"
- resolved "https://registry.yarnpkg.com/clone-response/-/clone-response-1.0.2.tgz#d1dc973920314df67fbeb94223b4ee350239e96b"
- integrity sha1-0dyXOSAxTfZ/vrlCI7TuNQI56Ws=
- dependencies:
- mimic-response "^1.0.0"
-
clsx@^1.2.1:
version "1.2.1"
resolved "https://registry.yarnpkg.com/clsx/-/clsx-1.2.1.tgz#0ddc4a20a549b59c93a4116bb26f5294ca17dc12"
@@ -3373,17 +3398,24 @@ concat-stream@^2.0.0:
readable-stream "^3.0.2"
typedarray "^0.0.6"
-configstore@^5.0.1:
- version "5.0.1"
- resolved "https://registry.yarnpkg.com/configstore/-/configstore-5.0.1.tgz#d365021b5df4b98cdd187d6a3b0e3f6a7cc5ed96"
- integrity sha512-aMKprgk5YhBNyH25hj8wGt2+D52Sw1DRRIzqBwLp2Ya9mFmY8KPvvtvmna8SxVR9JMZ4kzMD68N22vlaRpkeFA==
+config-chain@^1.1.11:
+ version "1.1.13"
+ resolved "https://registry.yarnpkg.com/config-chain/-/config-chain-1.1.13.tgz#fad0795aa6a6cdaff9ed1b68e9dff94372c232f4"
+ integrity sha512-qj+f8APARXHrM0hraqXYb2/bOVSV4PvJQlNZ/DVj0QrmNM2q2euizkeuVckQ57J+W0mRH6Hvi+k50M4Jul2VRQ==
dependencies:
- dot-prop "^5.2.0"
- graceful-fs "^4.1.2"
- make-dir "^3.0.0"
- unique-string "^2.0.0"
- write-file-atomic "^3.0.0"
- xdg-basedir "^4.0.0"
+ ini "^1.3.4"
+ proto-list "~1.2.1"
+
+configstore@^6.0.0:
+ version "6.0.0"
+ resolved "https://registry.yarnpkg.com/configstore/-/configstore-6.0.0.tgz#49eca2ebc80983f77e09394a1a56e0aca8235566"
+ integrity sha512-cD31W1v3GqUlQvbBCGcXmd2Nj9SvLDOP1oQ0YFuLETufzSPaKp11rYBsSOm7rCsW3OnIRAFM3OxRhceaXNYHkA==
+ dependencies:
+ dot-prop "^6.0.1"
+ graceful-fs "^4.2.6"
+ unique-string "^3.0.0"
+ write-file-atomic "^3.0.3"
+ xdg-basedir "^5.0.1"
connect-history-api-fallback@^2.0.0:
version "2.0.0"
@@ -3395,13 +3427,6 @@ consola@^2.15.3:
resolved "https://registry.yarnpkg.com/consola/-/consola-2.15.3.tgz#2e11f98d6a4be71ff72e0bdf07bd23e12cb61550"
integrity sha512-9vAdYbHj6x2fLKC4+oPH0kFzY/orMZyG2Aj+kNylHxKGJ/Ed4dpNyAQYwJOdqO4zdM7XpVHmyejQDcQHrnuXbw==
-console-browserify@1.1.x:
- version "1.1.0"
- resolved "https://registry.yarnpkg.com/console-browserify/-/console-browserify-1.1.0.tgz#f0241c45730a9fc6323b206dbf38edc741d0bb10"
- integrity sha1-8CQcRXMKn8YyOyBtvzjtx0HQuxA=
- dependencies:
- date-now "^0.1.4"
-
content-disposition@0.5.2:
version "0.5.2"
resolved "https://registry.yarnpkg.com/content-disposition/-/content-disposition-0.5.2.tgz#0cf68bb9ddf5f2be7961c3a85178cb85dba78cb4"
@@ -3519,6 +3544,13 @@ crypto-random-string@^2.0.0:
resolved "https://registry.yarnpkg.com/crypto-random-string/-/crypto-random-string-2.0.0.tgz#ef2a7a966ec11083388369baa02ebead229b30d5"
integrity sha512-v1plID3y9r/lPhviJ1wrXpLeyUIGAZ2SHNYTEapm7/8A9nLPoyvVp3RK/EPFqn5kEznyWgYZNsRtYYIWbuG8KA==
+crypto-random-string@^4.0.0:
+ version "4.0.0"
+ resolved "https://registry.yarnpkg.com/crypto-random-string/-/crypto-random-string-4.0.0.tgz#5a3cc53d7dd86183df5da0312816ceeeb5bb1fc2"
+ integrity sha512-x8dy3RnvYdlUcPOjkEHqozhiwzKNSq7GcPuXFbnyMOCHxX8V3OgIg/pYuabl2sbUPfIJaeAQB7PMOK8DFIdoRA==
+ dependencies:
+ type-fest "^1.0.1"
+
css-declaration-sorter@^6.3.0:
version "6.3.0"
resolved "https://registry.yarnpkg.com/css-declaration-sorter/-/css-declaration-sorter-6.3.0.tgz#72ebd995c8f4532ff0036631f7365cce9759df14"
@@ -3668,11 +3700,6 @@ cuss@^2.0.0:
resolved "https://registry.yarnpkg.com/cuss/-/cuss-2.0.0.tgz#7f88210a9dfe3cd60834f1d82af97b62be44f89f"
integrity sha512-EHbh7F4GHvgyuakXeic9wtfeEYves17MxLpgIsljCbaDil6auJVsTTLV/qwkZ58+Gu+NKmMHVQm81J3BcEqwUg==
-date-now@^0.1.4:
- version "0.1.4"
- resolved "https://registry.yarnpkg.com/date-now/-/date-now-0.1.4.tgz#eaf439fd4d4848ad74e5cc7dbef200672b9e345b"
- integrity sha1-6vQ5/U1ISK105cx9vvIAZyueNFs=
-
debug@2.6.9, debug@^2.6.0:
version "2.6.9"
resolved "https://registry.yarnpkg.com/debug/-/debug-2.6.9.tgz#5d128515df134ff327e90a4c93f4e077a536341f"
@@ -3712,12 +3739,12 @@ decode-named-character-reference@^1.0.0:
dependencies:
character-entities "^2.0.0"
-decompress-response@^3.3.0:
- version "3.3.0"
- resolved "https://registry.yarnpkg.com/decompress-response/-/decompress-response-3.3.0.tgz#80a4dd323748384bfa248083622aedec982adff3"
- integrity sha1-gKTdMjdIOEv6JICDYirt7Jgq3/M=
+decompress-response@^6.0.0:
+ version "6.0.0"
+ resolved "https://registry.yarnpkg.com/decompress-response/-/decompress-response-6.0.0.tgz#ca387612ddb7e104bd16d85aab00d5ecf09c66fc"
+ integrity sha512-aW35yZM6Bb/4oJlZncMH2LCoZtJXTRxES17vE3hoRiowU2kWHaJKFkSBDnDR+cm9J+9QhXmREyIfv0pji9ejCQ==
dependencies:
- mimic-response "^1.0.0"
+ mimic-response "^3.1.0"
dedent@^0.7.0:
version "0.7.0"
@@ -3767,10 +3794,10 @@ default-gateway@^6.0.3:
dependencies:
execa "^5.0.0"
-defer-to-connect@^1.0.1:
- version "1.1.3"
- resolved "https://registry.yarnpkg.com/defer-to-connect/-/defer-to-connect-1.1.3.tgz#331ae050c08dcf789f8c83a7b81f0ed94f4ac591"
- integrity sha512-0ISdNousHvZT2EiFlZeZAHBUvSxmKswVCEf8hW7KWgG4a8MVEu/3Vb6uWYozkjylyCxe0JBIiRB1jV45S70WVQ==
+defer-to-connect@^2.0.1:
+ version "2.0.1"
+ resolved "https://registry.yarnpkg.com/defer-to-connect/-/defer-to-connect-2.0.1.tgz#8016bdb4143e4632b77a3449c6236277de520587"
+ integrity sha512-4tvttepXG1VaYGrRibk5EwJd1t4udunSOVMdLSAL6mId1ix438oPwPZMALY41FCijukO1L0twNcGsdzS7dHgDg==
define-lazy-prop@^2.0.0:
version "2.0.0"
@@ -3891,14 +3918,6 @@ dom-converter@^0.2.0:
dependencies:
utila "~0.4"
-dom-serializer@0:
- version "0.2.2"
- resolved "https://registry.yarnpkg.com/dom-serializer/-/dom-serializer-0.2.2.tgz#1afb81f533717175d478655debc5e332d9f9bb51"
- integrity sha512-2/xPb3ORsQ42nHYiSunXkDjPLBaEj/xTwUO4B7XCZQTRk7EBtTOPaygh10YAAh2OI1Qrp6NWfpAhzswj0ydt9g==
- dependencies:
- domelementtype "^2.0.1"
- entities "^2.0.0"
-
dom-serializer@^1.0.1:
version "1.3.2"
resolved "https://registry.yarnpkg.com/dom-serializer/-/dom-serializer-1.3.2.tgz#6206437d32ceefaec7161803230c7a20bc1b4d91"
@@ -3917,23 +3936,11 @@ dom-serializer@^2.0.0:
domhandler "^5.0.2"
entities "^4.2.0"
-domelementtype@1:
- version "1.3.1"
- resolved "https://registry.yarnpkg.com/domelementtype/-/domelementtype-1.3.1.tgz#d048c44b37b0d10a7f2a3d5fee3f4333d790481f"
- integrity sha512-BSKB+TSpMpFI/HOxCNr1O8aMOTZ8hT3pM3GQ0w/mWRmkhEDSFJkkyzz4XQsBV44BChwGkrDfMyjVD0eA2aFV3w==
-
domelementtype@^2.0.1, domelementtype@^2.2.0, domelementtype@^2.3.0:
version "2.3.0"
resolved "https://registry.yarnpkg.com/domelementtype/-/domelementtype-2.3.0.tgz#5c45e8e869952626331d7aab326d01daf65d589d"
integrity sha512-OLETBj6w0OsagBwdXnPdN0cnMfF9opN69co+7ZrbfPGrdpPVNBUj02spi6B1N7wChLQiPn4CSH/zJvXw56gmHw==
-domhandler@2.3:
- version "2.3.0"
- resolved "https://registry.yarnpkg.com/domhandler/-/domhandler-2.3.0.tgz#2de59a0822d5027fabff6f032c2b25a2a8abe738"
- integrity sha1-LeWaCCLVAn+r/28DLCsloqir5zg=
- dependencies:
- domelementtype "1"
-
domhandler@^4.0.0, domhandler@^4.2.0, domhandler@^4.3.1:
version "4.3.1"
resolved "https://registry.yarnpkg.com/domhandler/-/domhandler-4.3.1.tgz#8d792033416f59d68bc03a5aa7b018c1ca89279c"
@@ -3948,14 +3955,6 @@ domhandler@^5.0.1, domhandler@^5.0.2, domhandler@^5.0.3:
dependencies:
domelementtype "^2.3.0"
-domutils@1.5:
- version "1.5.1"
- resolved "https://registry.yarnpkg.com/domutils/-/domutils-1.5.1.tgz#dcd8488a26f563d61079e48c9f7b7e32373682cf"
- integrity sha1-3NhIiib1Y9YQeeSMn3t+Mjc2gs8=
- dependencies:
- dom-serializer "0"
- domelementtype "1"
-
domutils@^2.5.2, domutils@^2.8.0:
version "2.8.0"
resolved "https://registry.yarnpkg.com/domutils/-/domutils-2.8.0.tgz#4437def5db6e2d1f5d6ee859bd95ca7d02048135"
@@ -3982,10 +3981,10 @@ dot-case@^3.0.4:
no-case "^3.0.4"
tslib "^2.0.3"
-dot-prop@^5.2.0:
- version "5.3.0"
- resolved "https://registry.yarnpkg.com/dot-prop/-/dot-prop-5.3.0.tgz#90ccce708cd9cd82cc4dc8c3ddd9abdd55b20e88"
- integrity sha512-QM8q3zDe58hqUqjraQOmzZ1LIH9SWQJTlEKCH4kJ2oQvLZk7RbQXvtDM2XEq3fwkV9CCvvH4LA0AV+ogFsBM2Q==
+dot-prop@^6.0.1:
+ version "6.0.1"
+ resolved "https://registry.yarnpkg.com/dot-prop/-/dot-prop-6.0.1.tgz#fc26b3cf142b9e59b74dbd39ed66ce620c681083"
+ integrity sha512-tE7ztYzXHIeyvc7N+hR3oi7FIbf/NIjVP9hmAt3yMXzrQ072/fpjGLx2GxNxGxUl5V73MEqYzioOMoVhGMJ5cA==
dependencies:
is-obj "^2.0.0"
@@ -3996,11 +3995,6 @@ dotignore@^0.1.2:
dependencies:
minimatch "^3.0.4"
-duplexer3@^0.1.4:
- version "0.1.4"
- resolved "https://registry.yarnpkg.com/duplexer3/-/duplexer3-0.1.4.tgz#ee01dd1cac0ed3cbc7fdbea37dc0a8f1ce002ce2"
- integrity sha1-7gHdHKwO08vH/b6jfcCo8c4ALOI=
-
duplexer@^0.1.2, duplexer@~0.1.1:
version "0.1.2"
resolved "https://registry.yarnpkg.com/duplexer/-/duplexer-0.1.2.tgz#3abe43aef3835f8ae077d136ddce0f276b0400e6"
@@ -4068,11 +4062,6 @@ enhanced-resolve@^5.10.0:
graceful-fs "^4.2.4"
tapable "^2.2.0"
-entities@1.0:
- version "1.0.0"
- resolved "https://registry.yarnpkg.com/entities/-/entities-1.0.0.tgz#b2987aa3821347fcde642b24fdfc9e4fb712bf26"
- integrity sha1-sph6o4ITR/zeZCsk/fyeT7cSvyY=
-
entities@^2.0.0:
version "2.2.0"
resolved "https://registry.yarnpkg.com/entities/-/entities-2.2.0.tgz#098dc90ebb83d8dffa089d55256b351d34c4da55"
@@ -4293,10 +4282,10 @@ escalade@^3.1.1:
resolved "https://registry.yarnpkg.com/escalade/-/escalade-3.1.1.tgz#d8cfdc7000965c5a0174b4a82eaa5c0552742e40"
integrity sha512-k0er2gUkLf8O0zKJiAhmkTnJlTvINGv7ygDNPbeIsX/TJjGJZHuh9B2UxbsaEkmlEo9MfhrSzmhIlhRlI2GXnw==
-escape-goat@^2.0.0:
- version "2.1.1"
- resolved "https://registry.yarnpkg.com/escape-goat/-/escape-goat-2.1.1.tgz#1b2dc77003676c457ec760b2dc68edb648188675"
- integrity sha512-8/uIhbG12Csjy2JEW7D9pHbreaVaS/OpN3ycnyvElTdwM5n6GY6W6e2IPemfvGZeUMqZ9A/3GqIZMgKnBhAw/Q==
+escape-goat@^4.0.0:
+ version "4.0.0"
+ resolved "https://registry.yarnpkg.com/escape-goat/-/escape-goat-4.0.0.tgz#9424820331b510b0666b98f7873fe11ac4aa8081"
+ integrity sha512-2Sd4ShcWxbx6OY1IHyla/CVNwvg7XwZVoXZHcSu9w9SReNP1EzzD5T8NWKIR38fIqEns9kDWKUQTXXAmlDrdPg==
escape-html@^1.0.3, escape-html@~1.0.3:
version "1.0.3"
@@ -4360,13 +4349,15 @@ eslint-plugin-prettier@^4.2.1:
dependencies:
prettier-linter-helpers "^1.0.0"
-eslint-plugin-yaml@^0.5.0:
- version "0.5.0"
- resolved "https://registry.yarnpkg.com/eslint-plugin-yaml/-/eslint-plugin-yaml-0.5.0.tgz#8c79d9d6389b67cbcf58ef6f970c4c086665a63a"
- integrity sha512-Z6km4HEiRptSuvzc96nXBND1Vlg57b7pzRmIJOgb9+3PAE+XpaBaiMx+Dg+3Y15tSrEMKCIZ9WoZMwkwUbPI8A==
+eslint-plugin-yml@^1.2.0:
+ version "1.2.0"
+ resolved "https://registry.yarnpkg.com/eslint-plugin-yml/-/eslint-plugin-yml-1.2.0.tgz#4574e5ab2fbaea5f2b278819b19ea273f8b58af0"
+ integrity sha512-v0jAU/F5SJg28zkpxwGpY04eGZMWFP6os8u2qaEAIRjSH2GqrNl0yBR5+sMHLU/026kAduxVbvLSqmT3Mu3O0g==
dependencies:
- js-yaml "^4.1.0"
- jshint "^2.13.0"
+ debug "^4.3.2"
+ lodash "^4.17.21"
+ natural-compare "^1.4.0"
+ yaml-eslint-parser "^1.1.0"
eslint-scope@5.1.1:
version "5.1.1"
@@ -4401,7 +4392,7 @@ eslint-visitor-keys@^2.0.0:
resolved "https://registry.yarnpkg.com/eslint-visitor-keys/-/eslint-visitor-keys-2.0.0.tgz#21fdc8fbcd9c795cc0321f0563702095751511a8"
integrity sha512-QudtT6av5WXels9WjIM7qz1XD1cWGvX4gGXvp/zBn9nXG02D0utdU3Em2m/QjTnrsk6bBjmCygl3rmj118msQQ==
-eslint-visitor-keys@^3.3.0:
+eslint-visitor-keys@^3.0.0, eslint-visitor-keys@^3.3.0:
version "3.3.0"
resolved "https://registry.yarnpkg.com/eslint-visitor-keys/-/eslint-visitor-keys-3.3.0.tgz#f6480fa6b1f30efe2d1968aa8ac745b862469826"
integrity sha512-mQ+suqKJVyeuwGYHAdjMFqjCyfl8+Ldnxuyp3ldiMBFKkvytrXUZWaiPCEav8qDHKty44bD+qV1IP4T+w+xXRA==
@@ -4583,11 +4574,6 @@ execa@^5.0.0:
signal-exit "^3.0.3"
strip-final-newline "^2.0.0"
-exit@0.1.2, exit@0.1.x:
- version "0.1.2"
- resolved "https://registry.yarnpkg.com/exit/-/exit-0.1.2.tgz#0632638f8d877cc82107d30a0fff1a17cba1cd0c"
- integrity sha1-BjJjj42HfMghB9MKD/8aF8uhzQw=
-
express@^4.17.3:
version "4.17.3"
resolved "https://registry.yarnpkg.com/express/-/express-4.17.3.tgz#f6c7302194a4fb54271b73a1fe7a06478c8f85a1"
@@ -4875,6 +4861,11 @@ fork-ts-checker-webpack-plugin@^6.5.0:
semver "^7.3.2"
tapable "^1.0.0"
+form-data-encoder@^2.1.2:
+ version "2.1.2"
+ resolved "https://registry.yarnpkg.com/form-data-encoder/-/form-data-encoder-2.1.2.tgz#5996b7c236e8c418d08316055a2235226c5e4061"
+ integrity sha512-FCaIOVTRA9E0siY6FeXid7D5yrCqpsErplUkE2a1BEiKj1BE9z6FbKB4ntDTwC4NVLie9p+4E9nX4mWwEOT05A==
+
format@^0.2.0:
version "0.2.2"
resolved "https://registry.yarnpkg.com/format/-/format-0.2.2.tgz#d6170107e9efdc4ed30c9dc39016df942b5cb58b"
@@ -4963,24 +4954,17 @@ get-own-enumerable-property-symbols@^3.0.0:
resolved "https://registry.yarnpkg.com/get-own-enumerable-property-symbols/-/get-own-enumerable-property-symbols-3.0.2.tgz#b5fde77f22cbe35f390b4e089922c50bce6ef664"
integrity sha512-I0UBV/XOz1XkIJHEUDMZAbzCThU/H8DxmSfmdGcKPnVhu2VfFqr34jr9777IyaTYvxjedWhqVIilEDsCdP5G6g==
-get-stream@^4.1.0:
- version "4.1.0"
- resolved "https://registry.yarnpkg.com/get-stream/-/get-stream-4.1.0.tgz#c1b255575f3dc21d59bfc79cd3d2b46b1c3a54b5"
- integrity sha512-GMat4EJ5161kIy2HevLlr4luNjBgvmj413KaQA7jt4V8B4RDsfpHk7WQ9GVqfYyyx8OS/L66Kox+rJRNklLK7w==
- dependencies:
- pump "^3.0.0"
-
-get-stream@^5.0.0, get-stream@^5.1.0:
+get-stream@^5.0.0:
version "5.2.0"
resolved "https://registry.yarnpkg.com/get-stream/-/get-stream-5.2.0.tgz#4966a1795ee5ace65e706c4b7beb71257d6e22d3"
integrity sha512-nBF+F1rAZVCu/p7rjzgA+Yb4lfYXrpl7a6VmJrU8wF9I1CKvP/QwPNZHnOlwbTkY6dvtFIzFMSyQXbLoTQPRpA==
dependencies:
pump "^3.0.0"
-get-stream@^6.0.0:
- version "6.0.0"
- resolved "https://registry.yarnpkg.com/get-stream/-/get-stream-6.0.0.tgz#3e0012cb6827319da2706e601a1583e8629a6718"
- integrity sha512-A1B3Bh1UmL0bidM/YX2NsCOTnGJePL9rO/M+Mw3m9f2gUpfokS0hi5Eah0WSUEWZdZhIZtMjkIYS7mDfOqNHbg==
+get-stream@^6.0.0, get-stream@^6.0.1:
+ version "6.0.1"
+ resolved "https://registry.yarnpkg.com/get-stream/-/get-stream-6.0.1.tgz#a262d8eef67aced57c2852ad6167526a43cbf7b7"
+ integrity sha512-ts6Wi+2j3jQjqi70w5AlN8DFnkSwC+MqmxEzdEALB2qXZYV3X/b1CTfgPLGJNMeAWxdPfU8FO1ms3NUfaHCPYg==
get-symbol-description@^1.0.0:
version "1.0.0"
@@ -5044,7 +5028,7 @@ glob-to-regexp@^0.4.1:
resolved "https://registry.yarnpkg.com/glob-to-regexp/-/glob-to-regexp-0.4.1.tgz#c75297087c851b9a578bd217dd59a92f59fe546e"
integrity sha512-lkX1HJXwyMcprw/5YUZc2s7DrpAiHB21/V+E1rHUrVNokkvB6bqMzT0VfV6/86ZNabt1k14YOIaT7nDvOX3Iiw==
-glob@^7.0.0, glob@^7.1.1, glob@^7.1.3, glob@^7.1.6:
+glob@^7.0.0, glob@^7.1.3, glob@^7.1.6:
version "7.2.0"
resolved "https://registry.yarnpkg.com/glob/-/glob-7.2.0.tgz#d15535af7732e02e948f4c41628bd910293f6023"
integrity sha512-lmLf6gtyrPq8tTjSmrO94wBeQbFR3HbLHbuyD69wuyQkImp2hWqMGB47OX65FBkPffO641IP9jWa1z4ivqG26Q==
@@ -5125,24 +5109,24 @@ globby@^13.1.1:
merge2 "^1.4.1"
slash "^4.0.0"
-got@^9.6.0:
- version "9.6.0"
- resolved "https://registry.yarnpkg.com/got/-/got-9.6.0.tgz#edf45e7d67f99545705de1f7bbeeeb121765ed85"
- integrity sha512-R7eWptXuGYxwijs0eV+v3o6+XH1IqVK8dJOEecQfTmkncw9AV4dcw/Dhxi8MdlqPthxxpZyizMzyg8RTmEsG+Q==
- dependencies:
- "@sindresorhus/is" "^0.14.0"
- "@szmarczak/http-timer" "^1.1.2"
- cacheable-request "^6.0.0"
- decompress-response "^3.3.0"
- duplexer3 "^0.1.4"
- get-stream "^4.1.0"
- lowercase-keys "^1.0.1"
- mimic-response "^1.0.1"
- p-cancelable "^1.0.0"
- to-readable-stream "^1.0.0"
- url-parse-lax "^3.0.0"
-
-graceful-fs@^4.1.2, graceful-fs@^4.1.6, graceful-fs@^4.2.0, graceful-fs@^4.2.4, graceful-fs@^4.2.6, graceful-fs@^4.2.9:
+got@^12.1.0:
+ version "12.5.1"
+ resolved "https://registry.yarnpkg.com/got/-/got-12.5.1.tgz#0796191c61478273f4cdbeb19d358a75a54a008d"
+ integrity sha512-sD16AK8cCyUoPtKr/NMvLTFFa+T3i3S+zoiuvhq0HP2YiqBZA9AtlBjAdsQBsLBK7slPuvmfE0OxhGi7N5dD4w==
+ dependencies:
+ "@sindresorhus/is" "^5.2.0"
+ "@szmarczak/http-timer" "^5.0.1"
+ cacheable-lookup "^7.0.0"
+ cacheable-request "^10.2.1"
+ decompress-response "^6.0.0"
+ form-data-encoder "^2.1.2"
+ get-stream "^6.0.1"
+ http2-wrapper "^2.1.10"
+ lowercase-keys "^3.0.0"
+ p-cancelable "^3.0.0"
+ responselike "^3.0.0"
+
+graceful-fs@4.2.10, graceful-fs@^4.1.2, graceful-fs@^4.1.6, graceful-fs@^4.2.0, graceful-fs@^4.2.4, graceful-fs@^4.2.6, graceful-fs@^4.2.9:
version "4.2.10"
resolved "https://registry.yarnpkg.com/graceful-fs/-/graceful-fs-4.2.10.tgz#147d3a006da4ca3ce14728c7aefc287c367d7a6c"
integrity sha512-9ByhssR2fPVsNZj478qUUbKfmL0+t5BDVyjShtyZZLiK7ZDAArFFfopyOTj0M05wE2tJPisA4iTnnXl2YoPvOA==
@@ -5206,10 +5190,10 @@ has-tostringtag@^1.0.0:
dependencies:
has-symbols "^1.0.2"
-has-yarn@^2.1.0:
- version "2.1.0"
- resolved "https://registry.yarnpkg.com/has-yarn/-/has-yarn-2.1.0.tgz#137e11354a7b5bf11aa5cb649cf0c6f3ff2b2e77"
- integrity sha512-UqBRqi4ju7T+TqGNdqAO0PaSVGsDGJUBQvk9eUWNGRY1CFGDzYhLWoM7JQEemnlvVcv/YEmc2wNW8BC24EnUsw==
+has-yarn@^3.0.0:
+ version "3.0.0"
+ resolved "https://registry.yarnpkg.com/has-yarn/-/has-yarn-3.0.0.tgz#c3c21e559730d1d3b57e28af1f30d06fac38147d"
+ integrity sha512-IrsVwUHhEULx3R8f/aA8AHuEzAorplsab/v8HBzEiIukwq5i/EC+xmOW+HfP1OaDP+2JkgT1yILHN2O3UFIbcA==
has@^1.0.3:
version "1.0.3"
@@ -5467,17 +5451,6 @@ html-webpack-plugin@^5.5.0:
pretty-error "^4.0.0"
tapable "^2.0.0"
-htmlparser2@3.8.x:
- version "3.8.3"
- resolved "https://registry.yarnpkg.com/htmlparser2/-/htmlparser2-3.8.3.tgz#996c28b191516a8be86501a7d79757e5c70c1068"
- integrity sha1-mWwosZFRaovoZQGn15dX5ccMEGg=
- dependencies:
- domelementtype "1"
- domhandler "2.3"
- domutils "1.5"
- entities "1.0"
- readable-stream "1.1"
-
htmlparser2@^6.1.0:
version "6.1.0"
resolved "https://registry.yarnpkg.com/htmlparser2/-/htmlparser2-6.1.0.tgz#c4d762b6c3371a05dbe65e94ae43a9f845fb8fb7"
@@ -5498,7 +5471,7 @@ htmlparser2@^8.0.1:
domutils "^3.0.1"
entities "^4.3.0"
-http-cache-semantics@^4.0.0:
+http-cache-semantics@^4.1.0:
version "4.1.0"
resolved "https://registry.yarnpkg.com/http-cache-semantics/-/http-cache-semantics-4.1.0.tgz#49e91c5cbf36c9b94bcfcd71c23d5249ec74e390"
integrity sha512-carPklcUh7ROWRK7Cv27RPtdhYhUsela/ue5/jKzjegVvXDqM2ILE9Q2BGn9JZJh1g87cp56su/FgQSzcWS8cQ==
@@ -5554,6 +5527,14 @@ http-proxy@^1.18.1:
follow-redirects "^1.0.0"
requires-port "^1.0.0"
+http2-wrapper@^2.1.10:
+ version "2.1.11"
+ resolved "https://registry.yarnpkg.com/http2-wrapper/-/http2-wrapper-2.1.11.tgz#d7c980c7ffb85be3859b6a96c800b2951ae257ef"
+ integrity sha512-aNAk5JzLturWEUiuhAN73Jcbq96R7rTitAoXV54FYMatvihnpD2+6PUgU4ce3D/m5VDbw+F5CsyKSF176ptitQ==
+ dependencies:
+ quick-lru "^5.1.1"
+ resolve-alpn "^1.2.0"
+
human-signals@^1.1.1:
version "1.1.1"
resolved "https://registry.yarnpkg.com/human-signals/-/human-signals-1.1.1.tgz#c5b1cd14f50aeae09ab6c59fe63ba3395fe4dfa3"
@@ -5627,10 +5608,10 @@ import-fresh@^3.0.0, import-fresh@^3.1.0, import-fresh@^3.2.1, import-fresh@^3.3
parent-module "^1.0.0"
resolve-from "^4.0.0"
-import-lazy@^2.1.0:
- version "2.1.0"
- resolved "https://registry.yarnpkg.com/import-lazy/-/import-lazy-2.1.0.tgz#05698e3d45c88e8d7e9d92cb0584e77f096f3e43"
- integrity sha1-BWmOPUXIjo1+nZLLBYTnfwlvPkM=
+import-lazy@^4.0.0:
+ version "4.0.0"
+ resolved "https://registry.yarnpkg.com/import-lazy/-/import-lazy-4.0.0.tgz#e8eb627483a0a43da3c03f3e35548be5cb0cc153"
+ integrity sha512-rKtvo6a868b5Hu3heneU+L4yEQ4jYKLtjpnPeUdK7h0yzXGmyBTypknlkCvHFBqfX9YlorEiMM6Dnq/5atfHkw==
import-meta-resolve@^1.0.0:
version "1.1.1"
@@ -5682,7 +5663,7 @@ ini@2.0.0:
resolved "https://registry.yarnpkg.com/ini/-/ini-2.0.0.tgz#e5fd556ecdd5726be978fa1001862eacb0a94bc5"
integrity sha512-7PnF4oN3CvZF23ADhA5wRaYEQpJ8qygSkbtTXWBeXWXmEVRXK+1ITciHWwHhsjv1TmW0MgacIv6hEi5pX5NQdA==
-ini@^1.3.5, ini@~1.3.0:
+ini@^1.3.4, ini@^1.3.5, ini@~1.3.0:
version "1.3.8"
resolved "https://registry.yarnpkg.com/ini/-/ini-1.3.8.tgz#a29da425b48806f34767a4efce397269af28432c"
integrity sha512-JV/yugV2uzW5iMRSiZAyDtQd+nxtUnjeLt0acNdw98kKLrvuRVyB80tsREOE7yvGVgalhZ6RNXCmEHkUKBKxew==
@@ -5795,12 +5776,12 @@ is-callable@^1.1.3, is-callable@^1.1.4, is-callable@^1.2.4:
resolved "https://registry.yarnpkg.com/is-callable/-/is-callable-1.2.4.tgz#47301d58dd0259407865547853df6d61fe471945"
integrity sha512-nsuwtxZfMX67Oryl9LCQ+upnC0Z0BgpwntpS89m1H/TLF0zNfzfLMV/9Wa/6MZsj0acpEjAO0KF1xT6ZdLl95w==
-is-ci@^2.0.0:
- version "2.0.0"
- resolved "https://registry.yarnpkg.com/is-ci/-/is-ci-2.0.0.tgz#6bc6334181810e04b5c22b3d589fdca55026404c"
- integrity sha512-YfJT7rkpQB0updsdHLGWrvhBJfcfzNNawYDNIyQXJz0IViGf75O8EBPKSdvw2rF+LGCsX4FZ8tcr3b19LcZq4w==
+is-ci@^3.0.1:
+ version "3.0.1"
+ resolved "https://registry.yarnpkg.com/is-ci/-/is-ci-3.0.1.tgz#db6ecbed1bd659c43dac0f45661e7674103d1867"
+ integrity sha512-ZYvCgrefwqoQ6yTyYUbQu64HsITZ3NfKX1lzaEYdkTDcfKzzCI/wthRRYKkdjHKFVgNiXKAKm65Zo1pk2as/QQ==
dependencies:
- ci-info "^2.0.0"
+ ci-info "^3.2.0"
is-core-module@^2.2.0, is-core-module@^2.5.0, is-core-module@^2.8.1:
version "2.10.0"
@@ -5889,10 +5870,10 @@ is-negative-zero@^2.0.2:
resolved "https://registry.yarnpkg.com/is-negative-zero/-/is-negative-zero-2.0.2.tgz#7bf6f03a28003b8b3965de3ac26f664d765f3150"
integrity sha512-dqJvarLawXsFbNDeJW7zAz8ItJ9cd28YufuuFzh0G8pNHjJMnY08Dv7sYX2uF5UpQOwieAeOExEYAWWfu7ZZUA==
-is-npm@^5.0.0:
- version "5.0.0"
- resolved "https://registry.yarnpkg.com/is-npm/-/is-npm-5.0.0.tgz#43e8d65cc56e1b67f8d47262cf667099193f45a8"
- integrity sha512-WW/rQLOazUq+ST/bCAVBp/2oMERWLsR7OrKyt052dNDk4DHcDE0/7QSXITlmi+VBcV13DfIbysG3tZJm5RfdBA==
+is-npm@^6.0.0:
+ version "6.0.0"
+ resolved "https://registry.yarnpkg.com/is-npm/-/is-npm-6.0.0.tgz#b59e75e8915543ca5d881ecff864077cba095261"
+ integrity sha512-JEjxbSmtPSt1c8XTkVrlujcXdKV1/tvuQ7GwKcAlyiVLeYFQ2VHat8xfrDJsIkhCdF/tZ7CiIR3sy141c6+gPQ==
is-number-object@^1.0.4:
version "1.0.4"
@@ -6050,10 +6031,10 @@ is-wsl@^2.2.0:
dependencies:
is-docker "^2.0.0"
-is-yarn-global@^0.3.0:
- version "0.3.0"
- resolved "https://registry.yarnpkg.com/is-yarn-global/-/is-yarn-global-0.3.0.tgz#d502d3382590ea3004893746754c89139973e232"
- integrity sha512-VjSeb/lHmkoyd8ryPVIKvOCn4D1koMqY+vqyjjUfc3xyKtP4dYOxM44sZrnqQSzSds3xyOrUTLTC9LVCVgLngw==
+is-yarn-global@^0.4.0:
+ version "0.4.0"
+ resolved "https://registry.yarnpkg.com/is-yarn-global/-/is-yarn-global-0.4.0.tgz#714d94453327db9ea98fbf1a0c5f2b88f59ddd5c"
+ integrity sha512-HneQBCrXGBy15QnaDfcn6OLoU8AQPAa0Qn0IeJR/QCo4E8dNZaGGwxpCwWyEBQC5QvFonP8d6t60iGpAHVAfNA==
isarray@0.0.1:
version "0.0.1"
@@ -6154,24 +6135,10 @@ jsesc@~0.5.0:
resolved "https://registry.yarnpkg.com/jsesc/-/jsesc-0.5.0.tgz#e7dee66e35d6fc16f710fe91d5cf69f70f08911d"
integrity sha1-597mbjXW/Bb3EP6R1c9p9w8IkR0=
-jshint@^2.13.0:
- version "2.13.1"
- resolved "https://registry.yarnpkg.com/jshint/-/jshint-2.13.1.tgz#16bbbecdbb4564d3758d9de4f24926f8c7f8f835"
- integrity sha512-vymzfR3OysF5P774x6zYv0bD4EpH6NWRxpq54wO9mA9RuY49yb1teKSICkLx2Ryx+mfzlVVNNbTBtsRtg78t7g==
- dependencies:
- cli "~1.0.0"
- console-browserify "1.1.x"
- exit "0.1.x"
- htmlparser2 "3.8.x"
- lodash "~4.17.21"
- minimatch "~3.0.2"
- shelljs "0.3.x"
- strip-json-comments "1.0.x"
-
-json-buffer@3.0.0:
- version "3.0.0"
- resolved "https://registry.yarnpkg.com/json-buffer/-/json-buffer-3.0.0.tgz#5b1f397afc75d677bde8bcfc0e47e1f9a3d9a898"
- integrity sha1-Wx85evx11ne96Lz8Dkfh+aPZqJg=
+json-buffer@3.0.1:
+ version "3.0.1"
+ resolved "https://registry.yarnpkg.com/json-buffer/-/json-buffer-3.0.1.tgz#9338802a30d3b6605fbe0613e094008ca8c05a13"
+ integrity sha512-4bV5BfR2mqfQTJm+V5tPPdf+ZpuhiIvTuAB5g8kcrXOZpTT/QwwVRWBywX1ozr6lEuPdbHxwaJlm9G6mI2sfSQ==
json-parse-even-better-errors@^2.3.0, json-parse-even-better-errors@^2.3.1:
version "2.3.1"
@@ -6217,12 +6184,12 @@ jsonpointer@^5.0.0:
resolved "https://registry.yarnpkg.com/jsonpointer/-/jsonpointer-5.0.0.tgz#f802669a524ec4805fa7389eadbc9921d5dc8072"
integrity sha512-PNYZIdMjVIvVgDSYKTT63Y+KZ6IZvGRNNWcxwD+GNnUz1MKPfv30J8ueCjdwcN0nDx2SlshgyB7Oy0epAzVRRg==
-keyv@^3.0.0:
- version "3.1.0"
- resolved "https://registry.yarnpkg.com/keyv/-/keyv-3.1.0.tgz#ecc228486f69991e49e9476485a5be1e8fc5c4d9"
- integrity sha512-9ykJ/46SN/9KPM/sichzQ7OvXyGDYKGTaDlKMGCAlg2UK8KRy4jb0d8sFc+0Tt0YYnThq8X2RZgCg74RPxgcVA==
+keyv@^4.5.0:
+ version "4.5.0"
+ resolved "https://registry.yarnpkg.com/keyv/-/keyv-4.5.0.tgz#dbce9ade79610b6e641a9a65f2f6499ba06b9bc6"
+ integrity sha512-2YvuMsA+jnFGtBareKqgANOEKe1mk3HKiXu2fRmAfyxG0MJAywNhi5ttWA3PMjl4NmpyjZNbFifR2vNjW1znfA==
dependencies:
- json-buffer "3.0.0"
+ json-buffer "3.0.1"
kind-of@^6.0.0, kind-of@^6.0.2, kind-of@^6.0.3:
version "6.0.3"
@@ -6244,12 +6211,12 @@ klona@^2.0.4, klona@^2.0.5:
resolved "https://registry.yarnpkg.com/klona/-/klona-2.0.5.tgz#d166574d90076395d9963aa7a928fabb8d76afbc"
integrity sha512-pJiBpiXMbt7dkzXe8Ghj/u4FfXOOa98fPW+bihOJ4SjnoijweJrNThJfd3ifXpXhREjpoF2mZVH1GfS9LV3kHQ==
-latest-version@^5.1.0:
- version "5.1.0"
- resolved "https://registry.yarnpkg.com/latest-version/-/latest-version-5.1.0.tgz#119dfe908fe38d15dfa43ecd13fa12ec8832face"
- integrity sha512-weT+r0kTkRQdCdYCNtkMwWXQTMEswKrFBkm4ckQOMVhhqhIMI1UT2hMj+1iigIhgSZm5gTmrRXBNoGUgaTY1xA==
+latest-version@^7.0.0:
+ version "7.0.0"
+ resolved "https://registry.yarnpkg.com/latest-version/-/latest-version-7.0.0.tgz#843201591ea81a4d404932eeb61240fe04e9e5da"
+ integrity sha512-KvNT4XqAMzdcL6ka6Tl3i2lYeFDgXNCuIX+xNx6ZMVR1dFq+idXd9FLKNMOIx0t9mJ9/HudyX4oZWXZQ0UJHeg==
dependencies:
- package-json "^6.3.0"
+ package-json "^8.1.0"
leven@^3.1.0:
version "3.1.0"
@@ -6382,7 +6349,7 @@ lodash.uniq@4.5.0, lodash.uniq@^4.5.0:
resolved "https://registry.yarnpkg.com/lodash.uniq/-/lodash.uniq-4.5.0.tgz#d0225373aeb652adc1bc82e4945339a842754773"
integrity sha1-0CJTc662Uq3BvILklFM5qEJ1R3M=
-lodash@^4.17.19, lodash@^4.17.20, lodash@^4.17.21, lodash@~4.17.21:
+lodash@^4.17.19, lodash@^4.17.20, lodash@^4.17.21:
version "4.17.21"
resolved "https://registry.yarnpkg.com/lodash/-/lodash-4.17.21.tgz#679591c564c3bffaae8454cf0b3df370c3d6911c"
integrity sha512-v2kDEe57lecTulaDIuNTPy3Ry4gLGJ6Z1O3vE1krgXZNrsQ+LFTGHVxVjcXPs17LhbZVGedAJv8XZ1tvj5FvSg==
@@ -6411,15 +6378,10 @@ lower-case@^2.0.2:
dependencies:
tslib "^2.0.3"
-lowercase-keys@^1.0.0, lowercase-keys@^1.0.1:
- version "1.0.1"
- resolved "https://registry.yarnpkg.com/lowercase-keys/-/lowercase-keys-1.0.1.tgz#6f9e30b47084d971a7c820ff15a6c5167b74c26f"
- integrity sha512-G2Lj61tXDnVFFOi8VZds+SoQjtQC3dgokKdDG2mTm1tx4m50NUHBOZSBwQQHyy0V12A0JTG4icfZQH+xPyh8VA==
-
-lowercase-keys@^2.0.0:
- version "2.0.0"
- resolved "https://registry.yarnpkg.com/lowercase-keys/-/lowercase-keys-2.0.0.tgz#2603e78b7b4b0006cbca2fbcc8a3202558ac9479"
- integrity sha512-tqNXrS78oMOE73NMxK4EMLQsQowWf8jKooH9g7xPavRT706R6bkQJ6DY2Te7QukaZsulxa30wQ7bk0pm4XiHmA==
+lowercase-keys@^3.0.0:
+ version "3.0.0"
+ resolved "https://registry.yarnpkg.com/lowercase-keys/-/lowercase-keys-3.0.0.tgz#c5e7d442e37ead247ae9db117a9d0a467c89d4f2"
+ integrity sha512-ozCC6gdQ+glXOQsveKD0YsDy8DSQFjDTz4zyzEHNV5+JP5D62LmfDZ6o1cycFx9ouG940M5dE8C8CTewdj2YWQ==
lru-cache@^6.0.0:
version "6.0.0"
@@ -6435,7 +6397,7 @@ magic-string@^0.25.0, magic-string@^0.25.7:
dependencies:
sourcemap-codec "^1.4.4"
-make-dir@^3.0.0, make-dir@^3.0.2, make-dir@^3.1.0:
+make-dir@^3.0.2, make-dir@^3.1.0:
version "3.1.0"
resolved "https://registry.yarnpkg.com/make-dir/-/make-dir-3.1.0.tgz#415e967046b3a7f1d185277d84aa58203726a13f"
integrity sha512-g3FeP20LNwhALb/6Cz6Dd4F2ngze0jz7tbzrD2wAV+o9FeNHe4rL+yK2md0J/fiSf1sa1ADhXqi5+oVwOM/eGw==
@@ -7188,10 +7150,15 @@ mimic-fn@^2.1.0:
resolved "https://registry.yarnpkg.com/mimic-fn/-/mimic-fn-2.1.0.tgz#7ed2c2ccccaf84d3ffcb7a69b57711fc2083401b"
integrity sha512-OqbOk5oEQeAZ8WXWydlu9HJjz9WVdEIvamMCcXmuqUYjTknH/sqsWvhQ3vgwKFRR1HpjvNBKQ37nbJgYzGqGcg==
-mimic-response@^1.0.0, mimic-response@^1.0.1:
- version "1.0.1"
- resolved "https://registry.yarnpkg.com/mimic-response/-/mimic-response-1.0.1.tgz#4923538878eef42063cb8a3e3b0798781487ab1b"
- integrity sha512-j5EctnkH7amfV/q5Hgmoal1g2QHFJRraOtmx0JpIqkxhBhI/lJSl1nMpQ45hVarwNETOoWEimndZ4QK0RHxuxQ==
+mimic-response@^3.1.0:
+ version "3.1.0"
+ resolved "https://registry.yarnpkg.com/mimic-response/-/mimic-response-3.1.0.tgz#2d1d59af9c1b129815accc2c46a022a5ce1fa3c9"
+ integrity sha512-z0yWI+4FDrrweS8Zmt4Ej5HdJmky15+L2e6Wgn3+iK5fWzb6T3fhNFq2+MeTRb064c6Wr4N/wv0DzQTjNzHNGQ==
+
+mimic-response@^4.0.0:
+ version "4.0.0"
+ resolved "https://registry.yarnpkg.com/mimic-response/-/mimic-response-4.0.0.tgz#35468b19e7c75d10f5165ea25e75a5ceea7cf70f"
+ integrity sha512-e5ISH9xMYU0DzrT+jl8q2ze9D6eWBto+I8CNpe+VI+K2J/F/k3PdkdTdz4wvGVH4NTpo+NRYTVIuMQEMMcsLqg==
min-indent@^1.0.0, min-indent@^1.0.1:
version "1.0.1"
@@ -7218,7 +7185,7 @@ minimalistic-assert@^1.0.0:
resolved "https://registry.yarnpkg.com/minimalistic-assert/-/minimalistic-assert-1.0.1.tgz#2e194de044626d4a10e7f7fbc00ce73e83e4d5c7"
integrity sha512-UtJcAD4yEaGtjPezWuO9wC4nwUnVH/8/Im3yEHQP4b67cXlD/Qr9hdITCU1xDbSEXg2XKNaP8jsReV7vQd00/A==
-minimatch@3.0.4, minimatch@~3.0.2:
+minimatch@3.0.4:
version "3.0.4"
resolved "https://registry.yarnpkg.com/minimatch/-/minimatch-3.0.4.tgz#5166e286457f03306064be5497e8dbb0c3d32083"
integrity sha512-yJHVQEhyqPLUTgt9B83PXu6W3rx4MvvHvSUvToogpwoGDOUQ+yDrR0HRot+yOCdCO7u4hX3pWft6kWBBcqh0UA==
@@ -7416,16 +7383,16 @@ normalize-range@^0.1.2:
resolved "https://registry.yarnpkg.com/normalize-range/-/normalize-range-0.1.2.tgz#2d10c06bdfd312ea9777695a4d28439456b75942"
integrity sha1-LRDAa9/TEuqXd2laTShDlFa3WUI=
-normalize-url@^4.1.0:
- version "4.5.1"
- resolved "https://registry.yarnpkg.com/normalize-url/-/normalize-url-4.5.1.tgz#0dd90cf1288ee1d1313b87081c9a5932ee48518a"
- integrity sha512-9UZCFRHQdNrfTpGg8+1INIg93B6zE0aXMVFkw1WFwvO4SlZywU6aLg5Of0Ap/PgcbSw4LNxvMWXMeugwMCX0AA==
-
normalize-url@^6.0.1:
version "6.1.0"
resolved "https://registry.yarnpkg.com/normalize-url/-/normalize-url-6.1.0.tgz#40d0885b535deffe3f3147bec877d05fe4c5668a"
integrity sha512-DlL+XwOy3NxAQ8xuC0okPgK46iuVNAK01YN7RueYBqqFeGsBjV9XmCAzAdgt+667bCl5kPh9EqKKDwnaPG1I7A==
+normalize-url@^7.1.0:
+ version "7.2.0"
+ resolved "https://registry.yarnpkg.com/normalize-url/-/normalize-url-7.2.0.tgz#5317f78cff95f5fa1e76cc0b5e33245c43781e11"
+ integrity sha512-uhXOdZry0L6M2UIo9BTt7FdpBDiAGN/7oItedQwPKh8jh31ZlvC8U9Xl/EJ3aijDHaywXTW3QbZ6LuCocur1YA==
+
npm-run-path@^4.0.0, npm-run-path@^4.0.1:
version "4.0.1"
resolved "https://registry.yarnpkg.com/npm-run-path/-/npm-run-path-4.0.1.tgz#b7ecd1e5ed53da8e37a55e1c2269e0b97ed748ea"
@@ -7555,10 +7522,10 @@ optionator@^0.9.1:
type-check "^0.4.0"
word-wrap "^1.2.3"
-p-cancelable@^1.0.0:
- version "1.1.0"
- resolved "https://registry.yarnpkg.com/p-cancelable/-/p-cancelable-1.1.0.tgz#d078d15a3af409220c886f1d9a0ca2e441ab26cc"
- integrity sha512-s73XxOZ4zpt1edZYZzvhqFa6uvQc1vwUa0K0BdtIZgQMAJj9IbebH+JkgKZc9h+B05PKHLOTl4ajG1BmNrVZlw==
+p-cancelable@^3.0.0:
+ version "3.0.0"
+ resolved "https://registry.yarnpkg.com/p-cancelable/-/p-cancelable-3.0.0.tgz#63826694b54d61ca1c20ebcb6d3ecf5e14cd8050"
+ integrity sha512-mlVgR3PGuzlo0MmTdk4cXqXWlwQDLnONTAg6sm62XkMJEiRxN3GL3SffkYvqwonbkJBcrI7Uvv5Zh9yjvn2iUw==
p-limit@^2.0.0, p-limit@^2.2.0:
version "2.3.0"
@@ -7615,15 +7582,15 @@ p-try@^2.0.0:
resolved "https://registry.yarnpkg.com/p-try/-/p-try-2.2.0.tgz#cb2868540e313d61de58fafbe35ce9004d5540e6"
integrity sha512-R4nPAVTAU0B9D35/Gk3uJf/7XYbQcyohSKdvAxIRSNghFl4e71hVoGnBNQz9cWaXxO2I10KTC+3jMdvvoKw6dQ==
-package-json@^6.3.0:
- version "6.5.0"
- resolved "https://registry.yarnpkg.com/package-json/-/package-json-6.5.0.tgz#6feedaca35e75725876d0b0e64974697fed145b0"
- integrity sha512-k3bdm2n25tkyxcjSKzB5x8kfVxlMdgsbPr0GkZcwHsLpba6cBjqCt1KlcChKEvxHIcTB1FVMuwoijZ26xex5MQ==
+package-json@^8.1.0:
+ version "8.1.0"
+ resolved "https://registry.yarnpkg.com/package-json/-/package-json-8.1.0.tgz#2a22806f1ed7c786c8e6ff26cfe20003bf4c6850"
+ integrity sha512-hySwcV8RAWeAfPsXb9/HGSPn8lwDnv6fabH+obUZKX169QknRkRhPxd1yMubpKDskLFATkl3jHpNtVtDPFA0Wg==
dependencies:
- got "^9.6.0"
- registry-auth-token "^4.0.0"
- registry-url "^5.0.0"
- semver "^6.2.0"
+ got "^12.1.0"
+ registry-auth-token "^5.0.1"
+ registry-url "^6.0.0"
+ semver "^7.3.7"
param-case@^3.0.4:
version "3.0.4"
@@ -8148,11 +8115,6 @@ prelude-ls@^1.2.1:
resolved "https://registry.yarnpkg.com/prelude-ls/-/prelude-ls-1.2.1.tgz#debc6489d7a6e6b0e7611888cec880337d316396"
integrity sha512-vkcDPrRZo1QZLbn5RLGPpg/WmIQ65qoWWhcGKf/b5eplkkarX0m9z8ppCat4mlOqUsWpyNuYgO3VRyrYHSzX5g==
-prepend-http@^2.0.0:
- version "2.0.0"
- resolved "https://registry.yarnpkg.com/prepend-http/-/prepend-http-2.0.0.tgz#e92434bfa5ea8c19f41cdfd401d741a3c819d897"
- integrity sha1-6SQ0v6XqjBn0HN/UAddBo8gZ2Jc=
-
prettier-linter-helpers@^1.0.0:
version "1.0.0"
resolved "https://registry.yarnpkg.com/prettier-linter-helpers/-/prettier-linter-helpers-1.0.0.tgz#d23d41fe1375646de2d0104d3454a3008802cf7b"
@@ -8256,6 +8218,11 @@ property-information@^6.0.0:
resolved "https://registry.yarnpkg.com/property-information/-/property-information-6.1.1.tgz#5ca85510a3019726cb9afed4197b7b8ac5926a22"
integrity sha512-hrzC564QIl0r0vy4l6MvRLhafmUowhO/O3KgVSoXIbbA2Sz4j8HGpJc6T2cubRVwMwpdiG/vKGfhT4IixmKN9w==
+proto-list@~1.2.1:
+ version "1.2.4"
+ resolved "https://registry.yarnpkg.com/proto-list/-/proto-list-1.2.4.tgz#212d5bfe1318306a420f6402b8e26ff39647a849"
+ integrity sha512-vtK/94akxsTMhe0/cbfpR+syPuszcuwhqVjJq26CuNDgFGj682oRBXOP5MJpv2r7JtE8MsiepGIqvvOTBwn2vA==
+
proxy-addr@~2.0.7:
version "2.0.7"
resolved "https://registry.yarnpkg.com/proxy-addr/-/proxy-addr-2.0.7.tgz#f19fe69ceab311eeb94b42e70e8c2070f9ba1025"
@@ -8299,12 +8266,12 @@ punycode@^2.1.0:
resolved "https://registry.yarnpkg.com/punycode/-/punycode-2.1.1.tgz#b58b010ac40c22c5657616c8d2c2c02c7bf479ec"
integrity sha512-XRsRjdf+j5ml+y/6GKHPZbrF/8p2Yga0JPtdqTIY2Xe5ohJPD9saDJJLPvp9+NSBprVvevdXZybnj2cv8OEd0A==
-pupa@^2.1.1:
- version "2.1.1"
- resolved "https://registry.yarnpkg.com/pupa/-/pupa-2.1.1.tgz#f5e8fd4afc2c5d97828faa523549ed8744a20d62"
- integrity sha512-l1jNAspIBSFqbT+y+5FosojNpVpF94nlI+wDUpqP9enwOTfHx9f0gh5nB96vl+6yTpsJsypeNrwfzPrKuHB41A==
+pupa@^3.1.0:
+ version "3.1.0"
+ resolved "https://registry.yarnpkg.com/pupa/-/pupa-3.1.0.tgz#f15610274376bbcc70c9a3aa8b505ea23f41c579"
+ integrity sha512-FLpr4flz5xZTSJxSeaheeMKN/EDzMdK7b8PTOC6a5PYFKTucWbdqjgqaEyH0shFiSJrVB1+Qqi4Tk19ccU6Aug==
dependencies:
- escape-goat "^2.0.0"
+ escape-goat "^4.0.0"
pure-color@^1.2.0:
version "1.3.0"
@@ -8365,7 +8332,7 @@ raw-body@2.4.3:
iconv-lite "0.4.24"
unpipe "1.0.0"
-rc@^1.2.8:
+rc@1.2.8:
version "1.2.8"
resolved "https://registry.yarnpkg.com/rc/-/rc-1.2.8.tgz#cd924bf5200a075b83c188cd6b9e211b7fc0d3ed"
integrity sha512-y3bGgqKj3QBdxLbLkomlohkvsA8gdAiUQlSBJnBhfn+BPxg4bc62d8TcBW15wavDfgexCgccckhcZvywyQYPOw==
@@ -8563,16 +8530,6 @@ read-pkg@^6.0.0:
parse-json "^5.2.0"
type-fest "^1.0.1"
-readable-stream@1.1:
- version "1.1.13"
- resolved "https://registry.yarnpkg.com/readable-stream/-/readable-stream-1.1.13.tgz#f6eef764f514c89e2b9e23146a75ba106756d23e"
- integrity sha1-9u73ZPUUyJ4rniMUanW6EGdW0j4=
- dependencies:
- core-util-is "~1.0.0"
- inherits "~2.0.1"
- isarray "0.0.1"
- string_decoder "~0.10.x"
-
readable-stream@^2.0.1:
version "2.3.7"
resolved "https://registry.yarnpkg.com/readable-stream/-/readable-stream-2.3.7.tgz#1eca1cf711aef814c04f62252a36a62f6cb23b57"
@@ -8700,19 +8657,19 @@ regexpu-core@^5.1.0:
unicode-match-property-ecmascript "^2.0.0"
unicode-match-property-value-ecmascript "^2.0.0"
-registry-auth-token@^4.0.0:
- version "4.2.1"
- resolved "https://registry.yarnpkg.com/registry-auth-token/-/registry-auth-token-4.2.1.tgz#6d7b4006441918972ccd5fedcd41dc322c79b250"
- integrity sha512-6gkSb4U6aWJB4SF2ZvLb76yCBjcvufXBqvvEx1HbmKPkutswjW1xNVRY0+daljIYRbogN7O0etYSlbiaEQyMyw==
+registry-auth-token@^5.0.1:
+ version "5.0.1"
+ resolved "https://registry.yarnpkg.com/registry-auth-token/-/registry-auth-token-5.0.1.tgz#5e6cd106e6c251135a046650c58476fc03e92833"
+ integrity sha512-UfxVOj8seK1yaIOiieV4FIP01vfBDLsY0H9sQzi9EbbUdJiuuBjJgLa1DpImXMNPnVkBD4eVxTEXcrZA6kfpJA==
dependencies:
- rc "^1.2.8"
+ "@pnpm/npm-conf" "^1.0.4"
-registry-url@^5.0.0:
- version "5.1.0"
- resolved "https://registry.yarnpkg.com/registry-url/-/registry-url-5.1.0.tgz#e98334b50d5434b81136b44ec638d9c2009c5009"
- integrity sha512-8acYXXTI0AkQv6RAOjE3vOaIXZkT9wo4LOFbBKYQEEnnMNBpKqdUrI6S4NT0KPIo/WVvJ5tE/X5LF/TQUf0ekw==
+registry-url@^6.0.0:
+ version "6.0.1"
+ resolved "https://registry.yarnpkg.com/registry-url/-/registry-url-6.0.1.tgz#056d9343680f2f64400032b1e199faa692286c58"
+ integrity sha512-+crtS5QjFRqFCoQmvGduwYWEBng99ZvmFvF+cUJkGYF1L1BfU8C6Zp9T7f5vPAwyLkUExpvK+ANVZmGU49qi4Q==
dependencies:
- rc "^1.2.8"
+ rc "1.2.8"
regjsgen@^0.6.0:
version "0.6.0"
@@ -8926,6 +8883,11 @@ requires-port@^1.0.0:
resolved "https://registry.yarnpkg.com/requires-port/-/requires-port-1.0.0.tgz#925d2601d39ac485e091cf0da5c6e694dc3dcaff"
integrity sha1-kl0mAdOaxIXgkc8NpcbmlNw9yv8=
+resolve-alpn@^1.2.0:
+ version "1.2.1"
+ resolved "https://registry.yarnpkg.com/resolve-alpn/-/resolve-alpn-1.2.1.tgz#b7adbdac3546aaaec20b45e7d8265927072726f9"
+ integrity sha512-0a1F4l73/ZFZOakJnQ3FvkJ2+gSTQWz/r2KE5OdDY0TxPm5h4GkqkWWfM47T7HsbnOtcJVEF4epCVy6u7Q3K+g==
+
resolve-from@^4.0.0:
version "4.0.0"
resolved "https://registry.yarnpkg.com/resolve-from/-/resolve-from-4.0.0.tgz#4abcd852ad32dd7baabfe9b40e00a36db5f392e6"
@@ -8953,12 +8915,12 @@ resolve@^2.0.0-next.3:
is-core-module "^2.2.0"
path-parse "^1.0.6"
-responselike@^1.0.2:
- version "1.0.2"
- resolved "https://registry.yarnpkg.com/responselike/-/responselike-1.0.2.tgz#918720ef3b631c5642be068f15ade5a46f4ba1e7"
- integrity sha1-kYcg7ztjHFZCvgaPFa3lpG9Loec=
+responselike@^3.0.0:
+ version "3.0.0"
+ resolved "https://registry.yarnpkg.com/responselike/-/responselike-3.0.0.tgz#20decb6c298aff0dbee1c355ca95461d42823626"
+ integrity sha512-40yHxbNcl2+rzXvZuVkrYohathsSJlMTXKryG5y8uciHv1+xDLHQpgjG64JUO9nrEq2jGLH6IZ8BcZyw3wrweg==
dependencies:
- lowercase-keys "^1.0.0"
+ lowercase-keys "^3.0.0"
resumer@^0.0.0:
version "0.0.0"
@@ -9187,12 +9149,12 @@ semver-compare@^1.0.0:
resolved "https://registry.yarnpkg.com/semver-compare/-/semver-compare-1.0.0.tgz#0dee216a1c941ab37e9efb1788f6afc5ff5537fc"
integrity sha1-De4hahyUGrN+nvsXiPavxf9VN/w=
-semver-diff@^3.1.1:
- version "3.1.1"
- resolved "https://registry.yarnpkg.com/semver-diff/-/semver-diff-3.1.1.tgz#05f77ce59f325e00e2706afd67bb506ddb1ca32b"
- integrity sha512-GX0Ix/CJcHyB8c4ykpHGIAvLyOwOobtM/8d+TQkAd81/bEjgPHrfba41Vpesr7jX/t8Uh+R3EX9eAS5be+jQYg==
+semver-diff@^4.0.0:
+ version "4.0.0"
+ resolved "https://registry.yarnpkg.com/semver-diff/-/semver-diff-4.0.0.tgz#3afcf5ed6d62259f5c72d0d5d50dffbdc9680df5"
+ integrity sha512-0Ju4+6A8iOnpL/Thra7dZsSlOHYAHIeMxfhWQRI1/VLcT3WDBZKKtQt/QkBOsiIN9ZpuvHE6cGZ0x4glCMmfiA==
dependencies:
- semver "^6.3.0"
+ semver "^7.3.5"
semver-regex@^3.1.2:
version "3.1.4"
@@ -9209,7 +9171,7 @@ semver@^5.4.1:
resolved "https://registry.yarnpkg.com/semver/-/semver-5.7.1.tgz#a954f931aeba508d307bbf069eff0c01c96116f7"
integrity sha512-sauaDf/PZdVgrLTNYHRtpXa1iRiKcaebiKQ1BJdpQlWH2lCvexQdX55snPFyK7QzpudqbCI0qXFfOasHdyNDGQ==
-semver@^6.0.0, semver@^6.1.1, semver@^6.1.2, semver@^6.2.0, semver@^6.3.0:
+semver@^6.0.0, semver@^6.1.1, semver@^6.1.2, semver@^6.3.0:
version "6.3.0"
resolved "https://registry.yarnpkg.com/semver/-/semver-6.3.0.tgz#ee0a64c8af5e8ceea67687b133761e1becbd1d3d"
integrity sha512-b39TBaTSfV6yBrapU89p5fKekE2m/NwnDocOVruQFS1/veMgdzuPcnOM34M6CwxW8jH/lxEa5rBoDeUwu5HHTw==
@@ -9335,11 +9297,6 @@ shell-quote@^1.7.3:
resolved "https://registry.yarnpkg.com/shell-quote/-/shell-quote-1.7.3.tgz#aa40edac170445b9a431e17bb62c0b881b9c4123"
integrity sha512-Vpfqwm4EnqGdlsBFNmHhxhElJYrdfcxPThu+ryKS5J8L/fhAwLazFZtq+S+TWZ9ANj2piSQLGj6NQg+lKPmxrw==
-shelljs@0.3.x:
- version "0.3.0"
- resolved "https://registry.yarnpkg.com/shelljs/-/shelljs-0.3.0.tgz#3596e6307a781544f591f37da618360f31db57b1"
- integrity sha1-NZbmMHp4FUT1kfN9phg2DzHbV7E=
-
shelljs@^0.8.5:
version "0.8.5"
resolved "https://registry.yarnpkg.com/shelljs/-/shelljs-0.8.5.tgz#de055408d8361bed66c669d2f000538ced8ee20c"
@@ -9576,16 +9533,16 @@ stream-combiner@~0.0.4:
dependencies:
duplexer "~0.1.1"
-string-width@^4.0.0, string-width@^4.1.0, string-width@^4.2.0:
- version "4.2.2"
- resolved "https://registry.yarnpkg.com/string-width/-/string-width-4.2.2.tgz#dafd4f9559a7585cfba529c6a0a4f73488ebd4c5"
- integrity sha512-XBJbT3N4JhVumXE0eoLU9DCjcaF92KLNqTmFCnG1pf8duUxFGwtP6AD6nkjw9a3IdiRtL3E2w3JDiE/xi3vOeA==
+string-width@^4.1.0, string-width@^4.2.0:
+ version "4.2.3"
+ resolved "https://registry.yarnpkg.com/string-width/-/string-width-4.2.3.tgz#269c7117d27b05ad2e536830a8ec895ef9c6d010"
+ integrity sha512-wKyQRQpjJ0sIp62ErSZdGsjMJWsap5oRNihHhu6G7JVO/9jIB6UyevL+tXuOqrng8j/cxKTWyWUwvSTriiZz/g==
dependencies:
emoji-regex "^8.0.0"
is-fullwidth-code-point "^3.0.0"
- strip-ansi "^6.0.0"
+ strip-ansi "^6.0.1"
-string-width@^5.0.0, string-width@^5.0.1:
+string-width@^5.0.0, string-width@^5.0.1, string-width@^5.1.2:
version "5.1.2"
resolved "https://registry.yarnpkg.com/string-width/-/string-width-5.1.2.tgz#14f8daec6d81e7221d2a357e668cab73bdbca794"
integrity sha512-HnLOCR3vjcY8beoNLtcjZ5/nxn2afmME6lhrDrebokqMap+XbeW8n9TXpPDOqdGK5qcI3oT0GKTW6wC7EMiVqA==
@@ -9678,7 +9635,7 @@ stringify-object@^3.3.0:
is-obj "^1.0.1"
is-regexp "^1.0.0"
-strip-ansi@^6.0.0, strip-ansi@^6.0.1:
+strip-ansi@^6.0.1:
version "6.0.1"
resolved "https://registry.yarnpkg.com/strip-ansi/-/strip-ansi-6.0.1.tgz#9e26c63d30f53443e9489495b2105d37b67a85d9"
integrity sha512-Y38VPSHcqkFrCpFnQ9vuSXmquuv5oXOKpGeT6aGrr3o3Gc9AlVa6JBfUSOCnbxGGZF+/0ooI7KrPuUSztUdU5A==
@@ -9721,11 +9678,6 @@ strip-indent@^4.0.0:
dependencies:
min-indent "^1.0.1"
-strip-json-comments@1.0.x:
- version "1.0.4"
- resolved "https://registry.yarnpkg.com/strip-json-comments/-/strip-json-comments-1.0.4.tgz#1e15fbcac97d3ee99bf2d73b4c656b082bbafb91"
- integrity sha1-HhX7ysl9Pumb8tc7TGVrCCu6+5E=
-
strip-json-comments@^3.1.0, strip-json-comments@^3.1.1:
version "3.1.1"
resolved "https://registry.yarnpkg.com/strip-json-comments/-/strip-json-comments-3.1.1.tgz#31f1281b3832630434831c310c01cccda8cbe006"
@@ -9923,11 +9875,6 @@ to-fast-properties@^2.0.0:
resolved "https://registry.yarnpkg.com/to-fast-properties/-/to-fast-properties-2.0.0.tgz#dc5e698cbd079265bc73e0377681a4e4e83f616e"
integrity sha1-3F5pjL0HkmW8c+A3doGk5Og/YW4=
-to-readable-stream@^1.0.0:
- version "1.0.0"
- resolved "https://registry.yarnpkg.com/to-readable-stream/-/to-readable-stream-1.0.0.tgz#ce0aa0c2f3df6adf852efb404a783e77c0475771"
- integrity sha512-Iq25XBt6zD5npPhlLVXGFN3/gyR2/qODcKNNyTMd4vbm39HUaOiAM4PMq0eMVC/Tkxz+Zjdsc55g9yyz+Yq00Q==
-
to-regex-range@^5.0.1:
version "5.0.1"
resolved "https://registry.yarnpkg.com/to-regex-range/-/to-regex-range-5.0.1.tgz#1648c44aae7c8d988a326018ed72f5b4dd0392e4"
@@ -10034,10 +9981,10 @@ type-fest@^1.0.1, type-fest@^1.2.1, type-fest@^1.2.2:
resolved "https://registry.yarnpkg.com/type-fest/-/type-fest-1.4.0.tgz#e9fb813fe3bf1744ec359d55d1affefa76f14be1"
integrity sha512-yGSza74xk0UG8k+pLh5oeoYirvIiWo5t0/o3zHHAO2tRDiZcxWP7fywNlXhqb6/r6sWvwi+RsyQMWhVLe4BVuA==
-type-fest@^2.5.0:
- version "2.12.2"
- resolved "https://registry.yarnpkg.com/type-fest/-/type-fest-2.12.2.tgz#80a53614e6b9b475eb9077472fb7498dc7aa51d0"
- integrity sha512-qt6ylCGpLjZ7AaODxbpyBZSs9fCI9SkL3Z9q2oxMBQhs/uyY+VD8jHA8ULCGmWQJlBgqvO3EJeAngOHD8zQCrQ==
+type-fest@^2.13.0, type-fest@^2.5.0:
+ version "2.19.0"
+ resolved "https://registry.yarnpkg.com/type-fest/-/type-fest-2.19.0.tgz#88068015bb33036a598b952e55e9311a60fd3a9b"
+ integrity sha512-RAH822pAdBgcNMAfWnCBU3CFZcfZ/i1eZjwFU/dsLKumyuuP3niueg2UAukXYF0E2AAoc82ZSSf9J0WQBinzHA==
type-is@~1.6.18:
version "1.6.18"
@@ -10203,6 +10150,13 @@ unique-string@^2.0.0:
dependencies:
crypto-random-string "^2.0.0"
+unique-string@^3.0.0:
+ version "3.0.0"
+ resolved "https://registry.yarnpkg.com/unique-string/-/unique-string-3.0.0.tgz#84a1c377aff5fd7a8bc6b55d8244b2bd90d75b9a"
+ integrity sha512-VGXBUVwxKMBUznyffQweQABPRRW1vHZAbadFZud4pLFAqRGvv/96vafgjWFqzourzr8YonlQiPgH0YCJfawoGQ==
+ dependencies:
+ crypto-random-string "^4.0.0"
+
unist-builder@2.0.3, unist-builder@^2.0.0, unist-builder@^2.0.3:
version "2.0.3"
resolved "https://registry.yarnpkg.com/unist-builder/-/unist-builder-2.0.3.tgz#77648711b5d86af0942f334397a33c5e91516436"
@@ -10363,25 +10317,25 @@ upath@^1.2.0:
resolved "https://registry.yarnpkg.com/upath/-/upath-1.2.0.tgz#8f66dbcd55a883acdae4408af8b035a5044c1894"
integrity sha512-aZwGpamFO61g3OlfT7OQCHqhGnW43ieH9WZeP7QxN/G/jS4jfqUkZxoryvJgVPEcrl5NL/ggHsSmLMHuH64Lhg==
-update-notifier@^5.0.0, update-notifier@^5.1.0:
- version "5.1.0"
- resolved "https://registry.yarnpkg.com/update-notifier/-/update-notifier-5.1.0.tgz#4ab0d7c7f36a231dd7316cf7729313f0214d9ad9"
- integrity sha512-ItnICHbeMh9GqUy31hFPrD1kcuZ3rpxDZbf4KUDavXwS0bW5m7SLbDQpGX3UYr072cbrF5hFUs3r5tUsPwjfHw==
- dependencies:
- boxen "^5.0.0"
- chalk "^4.1.0"
- configstore "^5.0.1"
- has-yarn "^2.1.0"
- import-lazy "^2.1.0"
- is-ci "^2.0.0"
+update-notifier@^5.0.0, update-notifier@^5.1.0, update-notifier@^6.0.2:
+ version "6.0.2"
+ resolved "https://registry.yarnpkg.com/update-notifier/-/update-notifier-6.0.2.tgz#a6990253dfe6d5a02bd04fbb6a61543f55026b60"
+ integrity sha512-EDxhTEVPZZRLWYcJ4ZXjGFN0oP7qYvbXWzEgRm/Yql4dHX5wDbvh89YHP6PK1lzZJYrMtXUuZZz8XGK+U6U1og==
+ dependencies:
+ boxen "^7.0.0"
+ chalk "^5.0.1"
+ configstore "^6.0.0"
+ has-yarn "^3.0.0"
+ import-lazy "^4.0.0"
+ is-ci "^3.0.1"
is-installed-globally "^0.4.0"
- is-npm "^5.0.0"
- is-yarn-global "^0.3.0"
- latest-version "^5.1.0"
- pupa "^2.1.1"
- semver "^7.3.4"
- semver-diff "^3.1.1"
- xdg-basedir "^4.0.0"
+ is-npm "^6.0.0"
+ is-yarn-global "^0.4.0"
+ latest-version "^7.0.0"
+ pupa "^3.1.0"
+ semver "^7.3.7"
+ semver-diff "^4.0.0"
+ xdg-basedir "^5.1.0"
uri-js@^4.2.2:
version "4.4.1"
@@ -10399,13 +10353,6 @@ url-loader@^4.1.1:
mime-types "^2.1.27"
schema-utils "^3.0.0"
-url-parse-lax@^3.0.0:
- version "3.0.0"
- resolved "https://registry.yarnpkg.com/url-parse-lax/-/url-parse-lax-3.0.0.tgz#16b5cafc07dbe3676c1b1999177823d6503acb0c"
- integrity sha1-FrXK/Afb42dsGxmZF3gj1lA6yww=
- dependencies:
- prepend-http "^2.0.0"
-
use-composed-ref@^1.0.0:
version "1.1.0"
resolved "https://registry.yarnpkg.com/use-composed-ref/-/use-composed-ref-1.1.0.tgz#9220e4e94a97b7b02d7d27eaeab0b37034438bbc"
@@ -10825,13 +10772,6 @@ which@^2.0.1:
dependencies:
isexe "^2.0.0"
-widest-line@^3.1.0:
- version "3.1.0"
- resolved "https://registry.yarnpkg.com/widest-line/-/widest-line-3.1.0.tgz#8292333bbf66cb45ff0de1603b136b7ae1496eca"
- integrity sha512-NsmoXalsWVDMGupxZ5R08ka9flZjjiLvHVAWYOKtiKM8ujtZWr9cRffak+uSE48+Ob8ObalXpwyeUiyDD6QFgg==
- dependencies:
- string-width "^4.0.0"
-
widest-line@^4.0.1:
version "4.0.1"
resolved "https://registry.yarnpkg.com/widest-line/-/widest-line-4.0.1.tgz#a0fc673aaba1ea6f0a0d35b3c2795c9a9cc2ebf2"
@@ -11007,15 +10947,6 @@ workbox-window@6.5.3, workbox-window@^6.5.3:
"@types/trusted-types" "^2.0.2"
workbox-core "6.5.3"
-wrap-ansi@^7.0.0:
- version "7.0.0"
- resolved "https://registry.yarnpkg.com/wrap-ansi/-/wrap-ansi-7.0.0.tgz#67e145cff510a6a6984bdf1152911d69d2eb9e43"
- integrity sha512-YVGIj2kamLSTxw6NsZjoBxfSwsn0ycdesmc4p+Q21c5zPuZ1pl+NfxVdxPtdHvmNVOQ6XSYG4AUtyt/Fi7D16Q==
- dependencies:
- ansi-styles "^4.0.0"
- string-width "^4.1.0"
- strip-ansi "^6.0.0"
-
wrap-ansi@^8.0.1:
version "8.0.1"
resolved "https://registry.yarnpkg.com/wrap-ansi/-/wrap-ansi-8.0.1.tgz#2101e861777fec527d0ea90c57c6b03aac56a5b3"
@@ -11030,7 +10961,7 @@ wrappy@1:
resolved "https://registry.yarnpkg.com/wrappy/-/wrappy-1.0.2.tgz#b5243d8f3ec1aa35f1364605bc0d1036e30ab69f"
integrity sha1-tSQ9jz7BqjXxNkYFvA0QNuMKtp8=
-write-file-atomic@^3.0.0:
+write-file-atomic@^3.0.3:
version "3.0.3"
resolved "https://registry.yarnpkg.com/write-file-atomic/-/write-file-atomic-3.0.3.tgz#56bd5c5a5c70481cd19c571bd39ab965a5de56e8"
integrity sha512-AvHcyZ5JnSfq3ioSyjrBkH9yW4m7Ayk8/9My/DD9onKeu/94fwrMocemO2QAJFAlnnDN+ZDS+ZjAR5ua1/PV/Q==
@@ -11041,19 +10972,19 @@ write-file-atomic@^3.0.0:
typedarray-to-buffer "^3.1.5"
ws@^7.3.1:
- version "7.4.4"
- resolved "https://registry.yarnpkg.com/ws/-/ws-7.4.4.tgz#383bc9742cb202292c9077ceab6f6047b17f2d59"
- integrity sha512-Qm8k8ojNQIMx7S+Zp8u/uHOx7Qazv3Yv4q68MiWWWOJhiwG5W3x7iqmRtJo8xxrciZUY4vRxUTJCKuRnF28ZZw==
+ version "7.5.9"
+ resolved "https://registry.yarnpkg.com/ws/-/ws-7.5.9.tgz#54fa7db29f4c7cec68b1ddd3a89de099942bb591"
+ integrity sha512-F+P9Jil7UiSKSkppIiD94dN07AwvFixvLIj1Og1Rl9GGMuNipJnV9JzjD6XuqmAeiswGvUmNLjr5cFuXwNS77Q==
ws@^8.4.2:
version "8.5.0"
resolved "https://registry.yarnpkg.com/ws/-/ws-8.5.0.tgz#bfb4be96600757fe5382de12c670dab984a1ed4f"
integrity sha512-BWX0SWVgLPzYwF8lTzEy1egjhS4S4OEAHfsO8o65WOVsrnSRGaSiUaa9e0ggGlkMTtBlmOpEXiie9RUcBO86qg==
-xdg-basedir@^4.0.0:
- version "4.0.0"
- resolved "https://registry.yarnpkg.com/xdg-basedir/-/xdg-basedir-4.0.0.tgz#4bc8d9984403696225ef83a1573cbbcb4e79db13"
- integrity sha512-PSNhEJDejZYV7h50BohL09Er9VaIefr2LMAf3OEmpCkjOi34eYyQYAXUTjEQtZJTKcF0E2UKTh+osDLsgNim9Q==
+xdg-basedir@^5.0.1, xdg-basedir@^5.1.0:
+ version "5.1.0"
+ resolved "https://registry.yarnpkg.com/xdg-basedir/-/xdg-basedir-5.1.0.tgz#1efba19425e73be1bc6f2a6ceb52a3d2c884c0c9"
+ integrity sha512-GCPAHLvrIH13+c0SuacwvRYj2SxJXQ4kaVTT5xgL3kPrz56XxkF21IGhjSE1+W0aw7gpBWRGXLCPnPby6lSpmQ==
xml-js@^1.6.11:
version "1.6.11"
@@ -11079,11 +11010,25 @@ yallist@^4.0.0:
resolved "https://registry.yarnpkg.com/yallist/-/yallist-4.0.0.tgz#9bb92790d9c0effec63be73519e11a35019a3a72"
integrity sha512-3wdGidZyq5PB084XLES5TpOSRA3wjXAlIWMhum2kRcv/41Sn2emQ0dycQW4uZXLejwKvg6EsvbdlVL+FYEct7A==
+yaml-eslint-parser@^1.1.0:
+ version "1.1.0"
+ resolved "https://registry.yarnpkg.com/yaml-eslint-parser/-/yaml-eslint-parser-1.1.0.tgz#62703e2f4afbe5a17d3fe297882740bf89504e78"
+ integrity sha512-b464Q1fYiX1oYx2kE8k4mEp6S9Prk+tfDsY/IPxQ0FCjEuj3AKko5Skf3/yQJeYTTDyjDE+aWIJemnv29HvEWQ==
+ dependencies:
+ eslint-visitor-keys "^3.0.0"
+ lodash "^4.17.21"
+ yaml "^2.0.0"
+
yaml@^1.10.0, yaml@^1.10.2, yaml@^1.7.2:
version "1.10.2"
resolved "https://registry.yarnpkg.com/yaml/-/yaml-1.10.2.tgz#2301c5ffbf12b467de8da2333a459e29e7920e4b"
integrity sha512-r3vXyErRCYJ7wg28yvBY5VSoAF8ZvlcW9/BwUzEtUsjvX/DKs24dIkuwjtuprwJJHsbyUbLApepYTR1BN4uHrg==
+yaml@^2.0.0:
+ version "2.1.1"
+ resolved "https://registry.yarnpkg.com/yaml/-/yaml-2.1.1.tgz#1e06fb4ca46e60d9da07e4f786ea370ed3c3cfec"
+ integrity sha512-o96x3OPo8GjWeSLF+wOAbrPfhFOGY0W00GNaxCDv+9hkcDJEnev1yh8S7pgHF0ik6zc8sQLuL8hjHjJULZp8bw==
+
yargs-parser@^20.2.9:
version "20.2.9"
resolved "https://registry.yarnpkg.com/yargs-parser/-/yargs-parser-20.2.9.tgz#2eb7dc3b0289718fc295f362753845c41a0c94ee"