From 4a3ea46d3127e451ed6b4b0996b60d254b323ddd Mon Sep 17 00:00:00 2001 From: "github-actions[bot]" <41898282+github-actions[bot]@users.noreply.github.com> Date: Sat, 31 Aug 2024 06:01:08 +0000 Subject: [PATCH] deploy: 03e22c78e2337f301af017e9614c1ab4daa09a57 --- 404.html | 2 +- assets/js/9feee6f9.4d131f70.js | 1 + assets/js/9feee6f9.835eec66.js | 1 - .../js/{runtime~main.7d5d8c82.js => runtime~main.40e52095.js} | 2 +- blog.html | 2 +- blog/archive.html | 2 +- blog/authors.html | 2 +- blog/react-native-developer-tools.html | 2 +- blog/tags.html | 2 +- blog/tags/launch.html | 2 +- blog/tags/social.html | 2 +- docs/architecture/dependency-management.html | 2 +- docs/architecture/overview.html | 2 +- docs/community.html | 2 +- docs/contributing.html | 2 +- docs/dependencies.html | 2 +- docs/guides/bundling.html | 2 +- docs/guides/dependency-management.html | 2 +- docs/guides/getting-started.html | 2 +- docs/introduction.html | 2 +- docs/tools/align-deps.html | 4 ++-- docs/tools/babel-plugin-import-path-remapper.html | 2 +- docs/tools/babel-preset-metro-react-native.html | 2 +- docs/tools/bundle-diff.html | 2 +- docs/tools/cli.html | 2 +- docs/tools/config.html | 2 +- docs/tools/console.html | 2 +- docs/tools/esbuild-plugin-import-path-remapper.html | 2 +- docs/tools/eslint-plugin.html | 2 +- docs/tools/jest-preset.html | 2 +- docs/tools/metro-config.html | 2 +- docs/tools/metro-plugin-cyclic-dependencies-detector.html | 2 +- docs/tools/metro-plugin-duplicates-checker.html | 2 +- docs/tools/metro-plugin-typescript.html | 2 +- docs/tools/metro-resolver-symlinks.html | 2 +- docs/tools/metro-serializer-esbuild.html | 2 +- docs/tools/metro-serializer.html | 2 +- docs/tools/overview.html | 2 +- docs/tools/react-native-auth.html | 2 +- docs/tools/react-native-host.html | 2 +- docs/tools/react-native-lazy-index.html | 2 +- docs/tools/third-party-notices.html | 2 +- docs/tools/tools-android.html | 2 +- docs/tools/tools-apple.html | 2 +- docs/tools/tools-language.html | 2 +- docs/tools/tools-node.html | 2 +- docs/tools/tools-react-native.html | 2 +- docs/tools/tools-shell.html | 2 +- docs/tools/tools-windows.html | 2 +- docs/tools/tools-workspaces.html | 2 +- docs/tools/tsconfig.html | 2 +- docs/tools/typescript-service.html | 2 +- docs/type-safety.html | 2 +- index.html | 2 +- search.html | 2 +- 55 files changed, 55 insertions(+), 55 deletions(-) create mode 100644 assets/js/9feee6f9.4d131f70.js delete mode 100644 assets/js/9feee6f9.835eec66.js rename assets/js/{runtime~main.7d5d8c82.js => runtime~main.40e52095.js} (99%) diff --git a/404.html b/404.html index d216daa34..877db097b 100644 --- a/404.html +++ b/404.html @@ -13,7 +13,7 @@ - + diff --git a/assets/js/9feee6f9.4d131f70.js b/assets/js/9feee6f9.4d131f70.js new file mode 100644 index 000000000..d6f470cf5 --- /dev/null +++ b/assets/js/9feee6f9.4d131f70.js @@ -0,0 +1 @@ +"use strict";(self.webpackChunk_rnx_kit_docsite=self.webpackChunk_rnx_kit_docsite||[]).push([[6258],{4339:(e,t,n)=>{n.r(t),n.d(t,{assets:()=>s,contentTitle:()=>d,default:()=>h,frontMatter:()=>c,metadata:()=>a,toc:()=>l});var r=n(4848),i=n(8453);const c={},d="align-deps",a={id:"tools/align-deps",title:"align-deps",description:"@rnx-kit/align-deps is a tool for managing dependencies within a repository",source:"@site/docs/tools/align-deps.md",sourceDirName:"tools",slug:"/tools/align-deps",permalink:"/rnx-kit/docs/tools/align-deps",draft:!1,unlisted:!1,editUrl:"https://github.com/microsoft/rnx-kit/tree/main/docsite/docs/tools/align-deps.md",tags:[],version:"current",frontMatter:{},sidebar:"toolsSidebar",previous:{title:"Tools Overview",permalink:"/rnx-kit/docs/tools/overview"},next:{title:"babel-plugin-import-path-remapper",permalink:"/rnx-kit/docs/tools/babel-plugin-import-path-remapper"}},s={},l=[{value:"Installation",id:"installation",level:2},{value:"Usage",id:"usage",level:2},{value:"--diff-mode",id:"--diff-mode",level:3},{value:"--exclude-packages",id:"--exclude-packages",level:3},{value:"--init <app | library>",id:"--init-app--library",level:3},{value:"--loose",id:"--loose",level:3},{value:"--no-unmanaged",id:"--no-unmanaged",level:3},{value:"--presets",id:"--presets",level:3},{value:"--requirements",id:"--requirements",level:3},{value:"--set-version",id:"--set-version",level:3},{value:"--verbose",id:"--verbose",level:3},{value:"--write",id:"--write",level:3},{value:"Configure",id:"configure",level:2},{value:"Capabilities",id:"capabilities",level:2},{value:"Presets",id:"presets",level:2},{value:"Extending Built-in Presets",id:"extending-built-in-presets",level:3},{value:"Custom Capabilities",id:"custom-capabilities",level:3},{value:"Requirements",id:"requirements",level:2},{value:"Migrating From dep-check",id:"migrating-from-dep-check",level:2},{value:"Terminology",id:"terminology",level:2},{value:"Contribution",id:"contribution",level:2},{value:"Updating an Existing Profile",id:"updating-an-existing-profile",level:3},{value:"Adding a Profile for a New Version of react-native",id:"adding-a-profile-for-a-new-version-of-react-native",level:3}];function o(e){const t={a:"a",blockquote:"blockquote",code:"code",em:"em",h1:"h1",h2:"h2",h3:"h3",header:"header",li:"li",p:"p",pre:"pre",strong:"strong",table:"table",tbody:"tbody",td:"td",th:"th",thead:"thead",tr:"tr",ul:"ul",...(0,i.R)(),...e.components},{Details:n}=t;return n||function(e,t){throw new Error("Expected "+(t?"component":"object")+" `"+e+"` to be defined: you likely forgot to import, pass, or provide it.")}("Details",!0),(0,r.jsxs)(r.Fragment,{children:[(0,r.jsx)(t.header,{children:(0,r.jsx)(t.h1,{id:"align-deps",children:"align-deps"})}),"\n",(0,r.jsxs)(t.p,{children:[(0,r.jsx)(t.code,{children:"@rnx-kit/align-deps"})," is a tool for managing dependencies within a repository\nand across many repositories. It ensures that your packages are using compatible\ndependencies and versions, given a set of ",(0,r.jsx)(t.a,{href:"#requirements",children:"requirements"}),", based\non ",(0,r.jsx)(t.a,{href:"#presets",children:"customizable presets"})," with known good packages and versions that\nare curated from real apps. You can even bring your own presets that are\ntailored to your needs."]}),"\n",(0,r.jsxs)(t.p,{children:["Note that this tool was previously known as ",(0,r.jsx)(t.code,{children:"dep-check"}),", but it was renamed to\navoid name clashes and other reasons. For more details, you can read the RFC:\n",(0,r.jsxs)(t.a,{href:"https://github.com/microsoft/rnx-kit/blob/rfcs/text/0001-dep-check-v2.md",children:[(0,r.jsx)(t.code,{children:"dep-check"})," v2"]}),"."]}),"\n",(0,r.jsxs)(t.p,{children:["If you want to learn how ",(0,r.jsx)(t.code,{children:"align-deps"})," is used at Microsoft, and see a demo of\nhow it works in a monorepo, you can watch the\n",(0,r.jsx)(t.a,{href:"https://youtu.be/DAEnPV78rQc?t=1085",children:'"Improve all the repos \u2013 exploring Microsoft\u2019s DevExp"'}),"\ntalk by ",(0,r.jsx)(t.a,{href:"https://github.com/kelset",children:"@kelset"})," and\n",(0,r.jsx)(t.a,{href:"https://github.com/tido64",children:"@tido64"})," at React Native Europe 2021."]}),"\n",(0,r.jsxs)(t.p,{children:["To learn more about how ",(0,r.jsx)(t.code,{children:"align-deps"})," works, please read the\n",(0,r.jsx)(t.a,{href:"https://microsoft.github.io/rnx-kit/docs/architecture/dependency-management",children:"design document"}),"."]}),"\n",(0,r.jsx)(t.h2,{id:"installation",children:"Installation"}),"\n",(0,r.jsx)(t.pre,{children:(0,r.jsx)(t.code,{className:"language-sh",children:"yarn add @rnx-kit/align-deps --dev\n"})}),"\n",(0,r.jsx)(t.p,{children:"or if you're using npm"}),"\n",(0,r.jsx)(t.pre,{children:(0,r.jsx)(t.code,{className:"language-sh",children:"npm add --save-dev @rnx-kit/align-deps\n"})}),"\n",(0,r.jsxs)(t.p,{children:["You can also run this tool using ",(0,r.jsx)(t.code,{children:"npx"})]}),"\n",(0,r.jsx)(t.pre,{children:(0,r.jsx)(t.code,{className:"language-sh",children:"npx @rnx-kit/align-deps@latest [options] [packages...]\n"})}),"\n",(0,r.jsxs)(t.p,{children:["but note that profiles may change between each run. We therefore don't recommend\nthat you use ",(0,r.jsx)(t.code,{children:"npx"})," if you intend to run this tool on CI or as part of\npost-install. It should be fine if you run it manually."]}),"\n",(0,r.jsx)(t.h2,{id:"usage",children:"Usage"}),"\n",(0,r.jsx)(t.pre,{children:(0,r.jsx)(t.code,{className:"language-sh",children:"yarn rnx-align-deps [options] [packages...]\n"})}),"\n",(0,r.jsxs)(t.p,{children:["Listing paths to packages that should be checked is optional. If omitted,\n",(0,r.jsx)(t.code,{children:"align-deps"})," will look for the closest ",(0,r.jsx)(t.code,{children:"package.json"})," using Node module\nresolution. If the target package is a root package defining workspaces, they\nwill all be included."]}),"\n",(0,r.jsx)(t.p,{children:"Examples:"}),"\n",(0,r.jsxs)(t.ul,{children:["\n",(0,r.jsxs)(t.li,{children:["\n",(0,r.jsx)(t.p,{children:"Ensure dependencies are compatible with react-native 0.70 without a config:"}),"\n",(0,r.jsx)(t.pre,{children:(0,r.jsx)(t.code,{className:"language-sh",children:"yarn rnx-align-deps --requirements react-native@0.70\n"})}),"\n"]}),"\n",(0,r.jsxs)(t.li,{children:["\n",(0,r.jsx)(t.p,{children:"Initialize a config for your app (or library):"}),"\n",(0,r.jsx)(t.pre,{children:(0,r.jsx)(t.code,{className:"language-sh",children:"yarn rnx-align-deps --init app\n# or specify `library` for a library\n"})}),"\n"]}),"\n",(0,r.jsxs)(t.li,{children:["\n",(0,r.jsxs)(t.p,{children:["Apply changes suggested by ",(0,r.jsx)(t.code,{children:"align-deps"}),":"]}),"\n",(0,r.jsx)(t.pre,{children:(0,r.jsx)(t.code,{className:"language-sh",children:"yarn rnx-align-deps --write\n"})}),"\n"]}),"\n",(0,r.jsxs)(t.li,{children:["\n",(0,r.jsx)(t.p,{children:"Interactively update supported react-native versions (or bump version used for\ndevelopment):"}),"\n",(0,r.jsx)(t.pre,{children:(0,r.jsx)(t.code,{className:"language-sh",children:"yarn rnx-align-deps --set-version\n"})}),"\n"]}),"\n"]}),"\n",(0,r.jsx)(t.h3,{id:"--diff-mode",children:(0,r.jsx)(t.code,{children:"--diff-mode"})}),"\n",(0,r.jsx)(t.p,{children:"Sets the algorithm used to determine if versions differ."}),"\n",(0,r.jsx)(t.p,{children:"Valid values:"}),"\n",(0,r.jsxs)(t.ul,{children:["\n",(0,r.jsxs)(t.li,{children:[(0,r.jsx)(t.code,{children:"strict"})," \u2014 version strings must be equal"]}),"\n",(0,r.jsxs)(t.li,{children:[(0,r.jsx)(t.code,{children:"allow-subset"})," \u2014 allow ranges that are entirely contained by the target\nversion range","\n",(0,r.jsxs)(t.ul,{children:["\n",(0,r.jsxs)(t.li,{children:[(0,r.jsx)(t.strong,{children:"OK:"})," ",(0,r.jsx)(t.code,{children:"0.74.0"})," is a subset of ",(0,r.jsx)(t.code,{children:"^0.74.0"})]}),"\n",(0,r.jsxs)(t.li,{children:[(0,r.jsx)(t.strong,{children:"OK:"})," ",(0,r.jsx)(t.code,{children:"^0.74.0"})," is a subset of ",(0,r.jsx)(t.code,{children:"^0.74.0"})]}),"\n",(0,r.jsxs)(t.li,{children:[(0,r.jsx)(t.strong,{children:"OK:"})," ",(0,r.jsx)(t.code,{children:"^0.74.2"})," is a subset of ",(0,r.jsx)(t.code,{children:"^0.74.0"})]}),"\n",(0,r.jsxs)(t.li,{children:[(0,r.jsx)(t.strong,{children:"NOT OK:"})," ",(0,r.jsx)(t.code,{children:"^0.74.0"})," is ",(0,r.jsx)(t.strong,{children:"not"})," a subset of ",(0,r.jsx)(t.code,{children:"0.74.0"})]}),"\n"]}),"\n"]}),"\n"]}),"\n",(0,r.jsxs)(t.blockquote,{children:["\n",(0,r.jsx)(t.p,{children:"[!WARNING]"}),"\n",(0,r.jsxs)(t.p,{children:["While algorithms other than ",(0,r.jsx)(t.code,{children:"strict"})," allow you to use exact version or version\nrange subsets, they will also increase the risk of introducing duplicate\npackages within your repository. You will have to be more vigilant and rely on\ntooling (such as ",(0,r.jsx)(t.a,{href:"https://yarnpkg.com/cli/dedupe",children:(0,r.jsx)(t.code,{children:"yarn dedupe"})}),") to reduce\nthe risk."]}),"\n"]}),"\n",(0,r.jsxs)(t.p,{children:["Default: ",(0,r.jsx)(t.code,{children:"strict"})]}),"\n",(0,r.jsx)(t.h3,{id:"--exclude-packages",children:(0,r.jsx)(t.code,{children:"--exclude-packages"})}),"\n",(0,r.jsx)(t.p,{children:"Comma-separated list of package names to exclude from inspection."}),"\n",(0,r.jsxs)(t.blockquote,{children:["\n",(0,r.jsx)(t.p,{children:"[!NOTE]"}),"\n",(0,r.jsxs)(t.p,{children:[(0,r.jsx)(t.code,{children:"--exclude-packages"})," will only exclude packages that do not have a\nconfiguration. Packages that have a configuration, will still be checked."]}),"\n"]}),"\n",(0,r.jsx)(t.h3,{id:"--init-app--library",children:(0,r.jsx)(t.code,{children:"--init "})}),"\n",(0,r.jsxs)(t.p,{children:["When integrating ",(0,r.jsx)(t.code,{children:"@rnx-kit/align-deps"})," for the first time, it may be a\ncumbersome to manually add all capabilities yourself. You can run this tool with\n",(0,r.jsx)(t.code,{children:"--init"}),", and it will try to add a sensible configuration based on what is\ncurrently defined in the specified ",(0,r.jsx)(t.code,{children:"package.json"}),"."]}),"\n",(0,r.jsx)(t.h3,{id:"--loose",children:(0,r.jsx)(t.code,{children:"--loose"})}),"\n",(0,r.jsx)(t.p,{children:"Determines how strict the React Native version requirement should be. Useful for\napps that depend on a newer React Native version than their dependencies declare\nsupport for."}),"\n",(0,r.jsxs)(t.p,{children:["Default: ",(0,r.jsx)(t.code,{children:"false"})]}),"\n",(0,r.jsx)(t.h3,{id:"--no-unmanaged",children:(0,r.jsx)(t.code,{children:"--no-unmanaged"})}),"\n",(0,r.jsx)(t.p,{children:"Whether unmanaged capabilities should be treated as errors."}),"\n",(0,r.jsxs)(t.p,{children:["Default: ",(0,r.jsx)(t.code,{children:"false"})]}),"\n",(0,r.jsx)(t.h3,{id:"--presets",children:(0,r.jsx)(t.code,{children:"--presets"})}),"\n",(0,r.jsxs)(t.p,{children:["Comma-separated list of presets. This can be names to built-in presets, or paths\nto external presets. Paths can point to a JSON file, a ",(0,r.jsx)(t.code,{children:".js"})," file, or a module\nname. The module must default export an object similar to the one below:"]}),"\n",(0,r.jsx)(t.pre,{children:(0,r.jsx)(t.code,{className:"language-js",children:'module.exports = {\n 0.69: {\n "my-capability": {\n name: "my-module",\n version: "1.0.0",\n },\n },\n "0.70": {\n "my-capability": {\n name: "my-module",\n version: "1.1.0",\n },\n },\n};\n'})}),"\n",(0,r.jsxs)(t.p,{children:["For a more complete example, have a look at the\n",(0,r.jsx)(t.a,{href:"https://github.com/microsoft/rnx-kit/blob/e1d4b2484303cac04e0ec6a4e79d854c694b96b4/packages/align-deps/src/presets/microsoft/react-native.ts",children:"default preset"}),"."]}),"\n",(0,r.jsxs)(t.p,{children:["See ",(0,r.jsx)(t.a,{href:"#presets",children:"Presets"})," for more details."]}),"\n",(0,r.jsxs)(t.blockquote,{children:["\n",(0,r.jsx)(t.p,{children:"[!NOTE]"}),"\n",(0,r.jsxs)(t.p,{children:["This flag is only be considered when a package is not configured. The presets\nspecified in the ",(0,r.jsx)(t.a,{href:"#configure",children:"configuration"})," will always take precedence."]}),"\n"]}),"\n",(0,r.jsx)(t.h3,{id:"--requirements",children:(0,r.jsx)(t.code,{children:"--requirements"})}),"\n",(0,r.jsxs)(t.p,{children:["Comma-separated list of requirements to apply if a package is ",(0,r.jsx)(t.em,{children:"not configured"}),"."]}),"\n",(0,r.jsxs)(t.p,{children:["For example, ",(0,r.jsx)(t.code,{children:"--requirements react-native@0.70"})," will make sure your packages are\ncompatible with ",(0,r.jsx)(t.code,{children:"react-native"})," 0.70."]}),"\n",(0,r.jsxs)(t.p,{children:["See ",(0,r.jsx)(t.a,{href:"#requirements",children:"Requirements"})," for more details."]}),"\n",(0,r.jsx)(t.h3,{id:"--set-version",children:(0,r.jsx)(t.code,{children:"--set-version"})}),"\n",(0,r.jsxs)(t.p,{children:["Sets production and development ",(0,r.jsx)(t.code,{children:"react-native"})," version requirements for any\nconfigured package. The value should be a comma-separated list of ",(0,r.jsx)(t.code,{children:"react-native"}),"\nversions to set. The first number specifies the development version. For\nexample, ",(0,r.jsx)(t.code,{children:"--set-version 0.70,0.69"})," will set the following values:"]}),"\n",(0,r.jsx)(t.pre,{children:(0,r.jsx)(t.code,{className:"language-json",children:'{\n "rnx-kit": {\n "alignDeps": {\n "requirements": {\n "development": ["react-native@0.70"],\n "production": ["react-native@0.69 || 0.70"]\n }\n }\n }\n}\n'})}),"\n",(0,r.jsxs)(t.p,{children:["If the version numbers are omitted, an ",(0,r.jsx)(t.em,{children:"interactive prompt"})," will appear."]}),"\n",(0,r.jsxs)(t.blockquote,{children:["\n",(0,r.jsx)(t.p,{children:"[!NOTE]"}),"\n",(0,r.jsxs)(t.p,{children:["A ",(0,r.jsx)(t.code,{children:"rnx-align-deps --write"})," run will be invoked right after changes have been\nmade. As such, this flag will fail if changes are needed before making any\nmodifications."]}),"\n"]}),"\n",(0,r.jsx)(t.h3,{id:"--verbose",children:(0,r.jsx)(t.code,{children:"--verbose"})}),"\n",(0,r.jsx)(t.p,{children:"Specify to increase logging verbosity."}),"\n",(0,r.jsxs)(t.p,{children:["Default: ",(0,r.jsx)(t.code,{children:"false"})]}),"\n",(0,r.jsx)(t.h3,{id:"--write",children:(0,r.jsx)(t.code,{children:"--write"})}),"\n",(0,r.jsxs)(t.p,{children:["Writes all proposed changes to the specified ",(0,r.jsx)(t.code,{children:"package.json"}),"."]}),"\n",(0,r.jsxs)(t.p,{children:["Default: ",(0,r.jsx)(t.code,{children:"false"})]}),"\n",(0,r.jsx)(t.h2,{id:"configure",children:"Configure"}),"\n",(0,r.jsxs)(t.p,{children:["While ",(0,r.jsx)(t.code,{children:"@rnx-kit/align-deps"})," can ensure your dependencies are aligned without a\nconfiguration, you can only get the more advanced features, such as dependencies\nsection re-ordering (",(0,r.jsx)(t.code,{children:"dependencies"})," vs ",(0,r.jsx)(t.code,{children:"peerDependencies"}),") and transitive\ndependency detection (A -> B -> C), by adding a configuration. Your\nconfiguration must be in an ",(0,r.jsx)(t.code,{children:'"rnx-kit"'})," section of your ",(0,r.jsx)(t.code,{children:"package.json"}),", and have\nthe following shapes depending on the package type:"]}),"\n",(0,r.jsx)(t.pre,{children:(0,r.jsx)(t.code,{className:"language-ts",children:'export type AppConfig = {\n kitType: "app";\n alignDeps: {\n /**\n * Presets to use for aligning dependencies.\n * @default ["microsoft/react-native"]\n */\n presets?: string[];\n\n /**\n * Requirements for this package, e.g.\n * `react-native@>=0.70`.\n */\n requirements: string[];\n\n /**\n * Capabilities used by the kit.\n */\n capabilities: Capability[];\n };\n};\n\nexport type LibraryConfig = {\n kitType: "library";\n alignDeps: {\n /**\n * Presets to use for aligning dependencies.\n * @default ["microsoft/react-native"]\n */\n presets?: string[];\n\n /**\n * Requirements for this package, e.g.\n * `react-native@>=0.70`. `development` is for\n * package authors, and `production` is for\n * consumers.\n */\n requirements: { development: string[]; production: string[] };\n\n /**\n * Capabilities used by the kit.\n */\n capabilities: Capability[];\n };\n};\n'})}),"\n",(0,r.jsxs)(t.p,{children:["For example, this is a config for a library that supports ",(0,r.jsx)(t.code,{children:"react-native"})," 0.69\nand 0.70, and uses 0.70 internally:"]}),"\n",(0,r.jsx)(t.pre,{children:(0,r.jsx)(t.code,{className:"language-js",children:'{\n "name": "useful-library",\n "version": "1.0",\n ...\n "rnx-kit": {\n "kitType": "library",\n "alignDeps": {\n "requirements": {\n "development": ["react-native@0.70"],\n "production": ["react-native@0.69 || 0.70"]\n }\n "capabilities": [\n "core-android",\n "core-ios"\n ]\n }\n }\n}\n'})}),"\n",(0,r.jsx)(t.h2,{id:"capabilities",children:"Capabilities"}),"\n",(0,r.jsx)(t.p,{children:"The following table contains the currently supported capabilities and what they\nresolve to:"}),"\n",(0,r.jsxs)(n,{children:[(0,r.jsx)("summary",{children:"Capabilities Table"}),(0,r.jsxs)(t.table,{children:[(0,r.jsx)(t.thead,{children:(0,r.jsxs)(t.tr,{children:[(0,r.jsx)(t.th,{children:"Capability"}),(0,r.jsx)(t.th,{children:"0.75"}),(0,r.jsx)(t.th,{children:"0.74"}),(0,r.jsx)(t.th,{children:"0.73"}),(0,r.jsx)(t.th,{children:"0.72"}),(0,r.jsx)(t.th,{children:"0.71"}),(0,r.jsx)(t.th,{children:"0.70"}),(0,r.jsx)(t.th,{children:"0.69"}),(0,r.jsx)(t.th,{children:"0.68"}),(0,r.jsx)(t.th,{children:"0.67"}),(0,r.jsx)(t.th,{children:"0.66"}),(0,r.jsx)(t.th,{children:"0.65"}),(0,r.jsx)(t.th,{children:"0.64"}),(0,r.jsx)(t.th,{children:"0.63"}),(0,r.jsx)(t.th,{children:"0.62"}),(0,r.jsx)(t.th,{children:"0.61"})]})}),(0,r.jsxs)(t.tbody,{children:[(0,r.jsxs)(t.tr,{children:[(0,r.jsx)(t.td,{children:"core"}),(0,r.jsx)(t.td,{children:"react-native@^0.75.0"}),(0,r.jsx)(t.td,{children:"react-native@^0.74.0"}),(0,r.jsx)(t.td,{children:"react-native@^0.73.0"}),(0,r.jsx)(t.td,{children:"react-native@^0.72.0"}),(0,r.jsx)(t.td,{children:"react-native@^0.71.0"}),(0,r.jsx)(t.td,{children:"react-native@^0.70.0"}),(0,r.jsx)(t.td,{children:"react-native@^0.69.0"}),(0,r.jsx)(t.td,{children:"react-native@^0.68.0"}),(0,r.jsx)(t.td,{children:"react-native@^0.67.0"}),(0,r.jsx)(t.td,{children:"react-native@^0.66.0"}),(0,r.jsx)(t.td,{children:"react-native@^0.65.0"}),(0,r.jsx)(t.td,{children:"react-native@^0.64.2"}),(0,r.jsx)(t.td,{children:"react-native@^0.63.2"}),(0,r.jsx)(t.td,{children:"react-native@^0.62.3"}),(0,r.jsx)(t.td,{children:"react-native@^0.61.5"})]}),(0,r.jsxs)(t.tr,{children:[(0,r.jsx)(t.td,{children:"core-android"}),(0,r.jsx)(t.td,{children:"react-native@^0.75.0"}),(0,r.jsx)(t.td,{children:"react-native@^0.74.0"}),(0,r.jsx)(t.td,{children:"react-native@^0.73.0"}),(0,r.jsx)(t.td,{children:"react-native@^0.72.0"}),(0,r.jsx)(t.td,{children:"react-native@^0.71.0"}),(0,r.jsx)(t.td,{children:"react-native@^0.70.0"}),(0,r.jsx)(t.td,{children:"react-native@^0.69.0"}),(0,r.jsx)(t.td,{children:"react-native@^0.68.0"}),(0,r.jsx)(t.td,{children:"react-native@^0.67.0"}),(0,r.jsx)(t.td,{children:"react-native@^0.66.0"}),(0,r.jsx)(t.td,{children:"react-native@^0.65.0"}),(0,r.jsx)(t.td,{children:"react-native@^0.64.2"}),(0,r.jsx)(t.td,{children:"react-native@^0.63.2"}),(0,r.jsx)(t.td,{children:"react-native@^0.62.3"}),(0,r.jsx)(t.td,{children:"react-native@^0.61.5"})]}),(0,r.jsxs)(t.tr,{children:[(0,r.jsx)(t.td,{children:"core-ios"}),(0,r.jsx)(t.td,{children:"react-native@^0.75.0"}),(0,r.jsx)(t.td,{children:"react-native@^0.74.0"}),(0,r.jsx)(t.td,{children:"react-native@^0.73.0"}),(0,r.jsx)(t.td,{children:"react-native@^0.72.0"}),(0,r.jsx)(t.td,{children:"react-native@^0.71.0"}),(0,r.jsx)(t.td,{children:"react-native@^0.70.0"}),(0,r.jsx)(t.td,{children:"react-native@^0.69.0"}),(0,r.jsx)(t.td,{children:"react-native@^0.68.0"}),(0,r.jsx)(t.td,{children:"react-native@^0.67.0"}),(0,r.jsx)(t.td,{children:"react-native@^0.66.0"}),(0,r.jsx)(t.td,{children:"react-native@^0.65.0"}),(0,r.jsx)(t.td,{children:"react-native@^0.64.2"}),(0,r.jsx)(t.td,{children:"react-native@^0.63.2"}),(0,r.jsx)(t.td,{children:"react-native@^0.62.3"}),(0,r.jsx)(t.td,{children:"react-native@^0.61.5"})]}),(0,r.jsxs)(t.tr,{children:[(0,r.jsx)(t.td,{children:"core-macos"}),(0,r.jsx)(t.td,{children:"react-native-macos@^0.75.0"}),(0,r.jsx)(t.td,{children:"react-native-macos@^0.74.0"}),(0,r.jsx)(t.td,{children:"react-native-macos@^0.73.0"}),(0,r.jsx)(t.td,{children:"react-native-macos@^0.72.0"}),(0,r.jsx)(t.td,{children:"react-native-macos@^0.71.0"}),(0,r.jsx)(t.td,{children:"react-native-macos@^0.70.0"}),(0,r.jsx)(t.td,{children:"react-native-macos@^0.69.0"}),(0,r.jsx)(t.td,{children:"react-native-macos@^0.68.0"}),(0,r.jsx)(t.td,{children:"react-native-macos@^0.67.0"}),(0,r.jsx)(t.td,{children:"react-native-macos@^0.66.0"}),(0,r.jsx)(t.td,{children:"react-native-macos@^0.65.0"}),(0,r.jsx)(t.td,{children:"react-native-macos@^0.64.0"}),(0,r.jsx)(t.td,{children:"react-native-macos@^0.63.0"}),(0,r.jsx)(t.td,{children:"react-native-macos@^0.62.0"}),(0,r.jsx)(t.td,{children:"react-native-macos@^0.61.0"})]}),(0,r.jsxs)(t.tr,{children:[(0,r.jsx)(t.td,{children:"core-visionos"}),(0,r.jsx)(t.td,{children:"@callstack/react-native-visionos@^0.75.0"}),(0,r.jsx)(t.td,{children:"@callstack/react-native-visionos@^0.74.0"}),(0,r.jsx)(t.td,{children:"@callstack/react-native-visionos@^0.73.0"}),(0,r.jsxs)(t.td,{children:["Meta package for installing ",(0,r.jsx)(t.code,{children:"react"})]}),(0,r.jsxs)(t.td,{children:["Meta package for installing ",(0,r.jsx)(t.code,{children:"react"})]}),(0,r.jsxs)(t.td,{children:["Meta package for installing ",(0,r.jsx)(t.code,{children:"react"})]}),(0,r.jsxs)(t.td,{children:["Meta package for installing ",(0,r.jsx)(t.code,{children:"react"})]}),(0,r.jsxs)(t.td,{children:["Meta package for installing ",(0,r.jsx)(t.code,{children:"react"})]}),(0,r.jsxs)(t.td,{children:["Meta package for installing ",(0,r.jsx)(t.code,{children:"react"})]}),(0,r.jsxs)(t.td,{children:["Meta package for installing ",(0,r.jsx)(t.code,{children:"react"})]}),(0,r.jsxs)(t.td,{children:["Meta package for installing ",(0,r.jsx)(t.code,{children:"react"})]}),(0,r.jsxs)(t.td,{children:["Meta package for installing ",(0,r.jsx)(t.code,{children:"react"})]}),(0,r.jsxs)(t.td,{children:["Meta package for installing ",(0,r.jsx)(t.code,{children:"react"})]}),(0,r.jsxs)(t.td,{children:["Meta package for installing ",(0,r.jsx)(t.code,{children:"react"})]}),(0,r.jsxs)(t.td,{children:["Meta package for installing ",(0,r.jsx)(t.code,{children:"react"})]})]}),(0,r.jsxs)(t.tr,{children:[(0,r.jsx)(t.td,{children:"core-windows"}),(0,r.jsx)(t.td,{children:"react-native-windows@^0.75.0"}),(0,r.jsx)(t.td,{children:"react-native-windows@^0.74.0"}),(0,r.jsx)(t.td,{children:"react-native-windows@^0.73.0"}),(0,r.jsx)(t.td,{children:"react-native-windows@^0.72.0"}),(0,r.jsx)(t.td,{children:"react-native-windows@^0.71.0"}),(0,r.jsx)(t.td,{children:"react-native-windows@^0.70.0"}),(0,r.jsx)(t.td,{children:"react-native-windows@^0.69.0"}),(0,r.jsx)(t.td,{children:"react-native-windows@^0.68.0"}),(0,r.jsx)(t.td,{children:"react-native-windows@^0.67.0"}),(0,r.jsx)(t.td,{children:"react-native-windows@^0.66.0"}),(0,r.jsx)(t.td,{children:"react-native-windows@^0.65.0"}),(0,r.jsx)(t.td,{children:"react-native-windows@^0.64.0"}),(0,r.jsx)(t.td,{children:"react-native-windows@^0.63.0"}),(0,r.jsx)(t.td,{children:"react-native-windows@^0.62.0"}),(0,r.jsx)(t.td,{children:"react-native-windows@^0.61.0"})]}),(0,r.jsxs)(t.tr,{children:[(0,r.jsx)(t.td,{children:"animation"}),(0,r.jsx)(t.td,{children:"react-native-reanimated@^3.15.0"}),(0,r.jsx)(t.td,{children:"react-native-reanimated@^3.9.0"}),(0,r.jsx)(t.td,{children:"react-native-reanimated@^3.6.0"}),(0,r.jsx)(t.td,{children:"react-native-reanimated@^3.3.0"}),(0,r.jsx)(t.td,{children:"react-native-reanimated@^2.14.1"}),(0,r.jsx)(t.td,{children:"react-native-reanimated@^2.10.0"}),(0,r.jsx)(t.td,{children:"react-native-reanimated@^2.9.0"}),(0,r.jsx)(t.td,{children:"react-native-reanimated@^2.5.0"}),(0,r.jsx)(t.td,{children:"react-native-reanimated@^2.2.4"}),(0,r.jsx)(t.td,{children:"react-native-reanimated@^2.2.3"}),(0,r.jsx)(t.td,{children:"react-native-reanimated@^2.2.1"}),(0,r.jsx)(t.td,{children:"react-native-reanimated@^2.1.0"}),(0,r.jsx)(t.td,{children:"react-native-reanimated@^1.13.3"}),(0,r.jsx)(t.td,{children:"react-native-reanimated@^1.13.3"}),(0,r.jsx)(t.td,{children:"react-native-reanimated@^1.13.3"})]}),(0,r.jsxs)(t.tr,{children:[(0,r.jsx)(t.td,{children:"babel-preset-react-native"}),(0,r.jsx)(t.td,{children:"@react-native/babel-preset@^0.75.0"}),(0,r.jsx)(t.td,{children:"@react-native/babel-preset@^0.74.0"}),(0,r.jsx)(t.td,{children:"@react-native/babel-preset@^0.73.0"}),(0,r.jsx)(t.td,{children:"metro-react-native-babel-preset@^0.76.5"}),(0,r.jsx)(t.td,{children:"metro-react-native-babel-preset@^0.73.7"}),(0,r.jsx)(t.td,{children:"metro-react-native-babel-preset@^0.72.1"}),(0,r.jsx)(t.td,{children:"metro-react-native-babel-preset@^0.70.3"}),(0,r.jsx)(t.td,{children:"metro-react-native-babel-preset@^0.67.0"}),(0,r.jsx)(t.td,{children:"metro-react-native-babel-preset@^0.66.2"}),(0,r.jsx)(t.td,{children:"metro-react-native-babel-preset@^0.66.2"}),(0,r.jsx)(t.td,{children:"metro-react-native-babel-preset@^0.66.0"}),(0,r.jsx)(t.td,{children:"metro-react-native-babel-preset@^0.64.0"}),(0,r.jsx)(t.td,{children:"metro-react-native-babel-preset@^0.59.0"}),(0,r.jsx)(t.td,{children:"metro-react-native-babel-preset@^0.58.0"}),(0,r.jsx)(t.td,{children:"metro-react-native-babel-preset@^0.56.0"})]}),(0,r.jsxs)(t.tr,{children:[(0,r.jsx)(t.td,{children:"base64"}),(0,r.jsx)(t.td,{children:"react-native-base64@^0.2.1"}),(0,r.jsx)(t.td,{children:"react-native-base64@^0.2.1"}),(0,r.jsx)(t.td,{children:"react-native-base64@^0.2.1"}),(0,r.jsx)(t.td,{children:"react-native-base64@^0.2.1"}),(0,r.jsx)(t.td,{children:"react-native-base64@^0.2.1"}),(0,r.jsx)(t.td,{children:"react-native-base64@^0.2.1"}),(0,r.jsx)(t.td,{children:"react-native-base64@^0.2.1"}),(0,r.jsx)(t.td,{children:"react-native-base64@^0.2.1"}),(0,r.jsx)(t.td,{children:"react-native-base64@^0.2.1"}),(0,r.jsx)(t.td,{children:"react-native-base64@^0.2.1"}),(0,r.jsx)(t.td,{children:"react-native-base64@^0.2.1"}),(0,r.jsx)(t.td,{children:"react-native-base64@^0.2.1"}),(0,r.jsx)(t.td,{children:"react-native-base64@^0.2.1"}),(0,r.jsx)(t.td,{children:"react-native-base64@^0.2.1"}),(0,r.jsx)(t.td,{children:"react-native-base64@^0.2.1"})]}),(0,r.jsxs)(t.tr,{children:[(0,r.jsx)(t.td,{children:"checkbox"}),(0,r.jsx)(t.td,{children:"@react-native-community/checkbox@^0.5.15"}),(0,r.jsx)(t.td,{children:"@react-native-community/checkbox@^0.5.15"}),(0,r.jsx)(t.td,{children:"@react-native-community/checkbox@^0.5.15"}),(0,r.jsx)(t.td,{children:"@react-native-community/checkbox@^0.5.15"}),(0,r.jsx)(t.td,{children:"@react-native-community/checkbox@^0.5.15"}),(0,r.jsx)(t.td,{children:"@react-native-community/checkbox@^0.5.8"}),(0,r.jsx)(t.td,{children:"@react-native-community/checkbox@^0.5.8"}),(0,r.jsx)(t.td,{children:"@react-native-community/checkbox@^0.5.8"}),(0,r.jsx)(t.td,{children:"@react-native-community/checkbox@^0.5.8"}),(0,r.jsx)(t.td,{children:"@react-native-community/checkbox@^0.5.8"}),(0,r.jsx)(t.td,{children:"@react-native-community/checkbox@^0.5.8"}),(0,r.jsx)(t.td,{children:"@react-native-community/checkbox@^0.5.8"}),(0,r.jsx)(t.td,{children:"@react-native-community/checkbox@^0.5.7"}),(0,r.jsx)(t.td,{children:"@react-native-community/checkbox@^0.5.7"}),(0,r.jsx)(t.td,{children:"@react-native-community/checkbox@^0.5.7"})]}),(0,r.jsxs)(t.tr,{children:[(0,r.jsx)(t.td,{children:"clipboard"}),(0,r.jsx)(t.td,{children:"@react-native-clipboard/clipboard@^1.14.0"}),(0,r.jsx)(t.td,{children:"@react-native-clipboard/clipboard@^1.14.0"}),(0,r.jsx)(t.td,{children:"@react-native-clipboard/clipboard@^1.14.0"}),(0,r.jsx)(t.td,{children:"@react-native-clipboard/clipboard@^1.10.0"}),(0,r.jsx)(t.td,{children:"@react-native-clipboard/clipboard@^1.10.0"}),(0,r.jsx)(t.td,{children:"@react-native-clipboard/clipboard@^1.10.0"}),(0,r.jsx)(t.td,{children:"@react-native-clipboard/clipboard@^1.10.0"}),(0,r.jsx)(t.td,{children:"@react-native-clipboard/clipboard@^1.10.0"}),(0,r.jsx)(t.td,{children:"@react-native-clipboard/clipboard@^1.9.0"}),(0,r.jsx)(t.td,{children:"@react-native-clipboard/clipboard@^1.9.0"}),(0,r.jsx)(t.td,{children:"@react-native-clipboard/clipboard@^1.9.0"}),(0,r.jsx)(t.td,{children:"@react-native-clipboard/clipboard@^1.8.3"}),(0,r.jsx)(t.td,{children:"@react-native-community/clipboard@^1.5.1"}),(0,r.jsx)(t.td,{children:"@react-native-community/clipboard@^1.5.1"}),(0,r.jsx)(t.td,{children:"@react-native-community/clipboard@^1.5.1"})]}),(0,r.jsxs)(t.tr,{children:[(0,r.jsx)(t.td,{children:"community/cli"}),(0,r.jsx)(t.td,{children:"@react-native-community/cli@^14.0.0"}),(0,r.jsx)(t.td,{children:"@react-native-community/cli@^13.6.4"}),(0,r.jsx)(t.td,{children:"@react-native-community/cli@^12.1.1"}),(0,r.jsx)(t.td,{children:"@react-native-community/cli@^11.3.2"}),(0,r.jsx)(t.td,{children:"@react-native-community/cli@^10.0.0"}),(0,r.jsx)(t.td,{children:"@react-native-community/cli@^9.0.0"}),(0,r.jsx)(t.td,{children:"@react-native-community/cli@^8.0.4"}),(0,r.jsx)(t.td,{children:"@react-native-community/cli@^7.0.3"}),(0,r.jsx)(t.td,{children:"@react-native-community/cli@^6.0.0"}),(0,r.jsx)(t.td,{children:"@react-native-community/cli@^6.0.0"}),(0,r.jsx)(t.td,{children:"@react-native-community/cli@^6.0.0"}),(0,r.jsx)(t.td,{children:"@react-native-community/cli@^5.0.1"}),(0,r.jsx)(t.td,{children:"@react-native-community/cli@^4.10.0"}),(0,r.jsx)(t.td,{children:"@react-native-community/cli@^4.5.1"}),(0,r.jsx)(t.td,{children:"@react-native-community/cli@^3.0.0"})]}),(0,r.jsxs)(t.tr,{children:[(0,r.jsx)(t.td,{children:"community/cli-android"}),(0,r.jsx)(t.td,{children:"@react-native-community/cli-platform-android@^14.0.0"}),(0,r.jsx)(t.td,{children:"@react-native-community/cli-platform-android@^13.6.4"}),(0,r.jsx)(t.td,{children:"@react-native-community/cli-platform-android@^12.1.1"}),(0,r.jsx)(t.td,{children:"@react-native-community/cli-platform-android@^11.3.2"}),(0,r.jsx)(t.td,{children:"@react-native-community/cli-platform-android@^10.0.0"}),(0,r.jsx)(t.td,{children:"@react-native-community/cli-platform-android@^9.0.0"}),(0,r.jsx)(t.td,{children:"@react-native-community/cli-platform-android@^8.0.4"}),(0,r.jsx)(t.td,{children:"@react-native-community/cli-platform-android@^7.0.1"}),(0,r.jsx)(t.td,{children:"@react-native-community/cli-platform-android@^6.0.0"}),(0,r.jsx)(t.td,{children:"@react-native-community/cli-platform-android@^6.0.0"}),(0,r.jsx)(t.td,{children:"@react-native-community/cli-platform-android@^6.0.0"}),(0,r.jsx)(t.td,{children:"@react-native-community/cli-platform-android@^5.0.1"}),(0,r.jsx)(t.td,{children:"@react-native-community/cli-platform-android@^4.10.0"}),(0,r.jsx)(t.td,{children:"@react-native-community/cli-platform-android@^4.5.1"}),(0,r.jsx)(t.td,{children:"@react-native-community/cli-platform-android@^3.0.0"})]}),(0,r.jsxs)(t.tr,{children:[(0,r.jsx)(t.td,{children:"community/cli-ios"}),(0,r.jsx)(t.td,{children:"@react-native-community/cli-platform-ios@^14.0.0"}),(0,r.jsx)(t.td,{children:"@react-native-community/cli-platform-ios@^13.6.4"}),(0,r.jsx)(t.td,{children:"@react-native-community/cli-platform-ios@^12.1.1"}),(0,r.jsx)(t.td,{children:"@react-native-community/cli-platform-ios@^11.3.2"}),(0,r.jsx)(t.td,{children:"@react-native-community/cli-platform-ios@^10.0.0"}),(0,r.jsx)(t.td,{children:"@react-native-community/cli-platform-ios@^9.0.0"}),(0,r.jsx)(t.td,{children:"@react-native-community/cli-platform-ios@^8.0.4"}),(0,r.jsx)(t.td,{children:"@react-native-community/cli-platform-ios@^7.0.1"}),(0,r.jsx)(t.td,{children:"@react-native-community/cli-platform-ios@^6.0.0"}),(0,r.jsx)(t.td,{children:"@react-native-community/cli-platform-ios@^6.0.0"}),(0,r.jsx)(t.td,{children:"@react-native-community/cli-platform-ios@^6.0.0"}),(0,r.jsx)(t.td,{children:"@react-native-community/cli-platform-ios@^5.0.1"}),(0,r.jsx)(t.td,{children:"@react-native-community/cli-platform-ios@^4.10.0"}),(0,r.jsx)(t.td,{children:"@react-native-community/cli-platform-ios@^4.5.0"}),(0,r.jsx)(t.td,{children:"@react-native-community/cli-platform-ios@^3.0.0"})]}),(0,r.jsxs)(t.tr,{children:[(0,r.jsx)(t.td,{children:"core/metro-config"}),(0,r.jsx)(t.td,{children:"@react-native/metro-config@^0.75.0"}),(0,r.jsx)(t.td,{children:"@react-native/metro-config@^0.74.0"}),(0,r.jsx)(t.td,{children:"@react-native/metro-config@^0.73.0"}),(0,r.jsx)(t.td,{children:"@react-native/metro-config@^0.72.0"}),(0,r.jsx)(t.td,{children:"-"}),(0,r.jsx)(t.td,{children:"-"}),(0,r.jsx)(t.td,{children:"-"}),(0,r.jsx)(t.td,{children:"-"}),(0,r.jsx)(t.td,{children:"-"}),(0,r.jsx)(t.td,{children:"-"}),(0,r.jsx)(t.td,{children:"-"}),(0,r.jsx)(t.td,{children:"-"}),(0,r.jsx)(t.td,{children:"-"}),(0,r.jsx)(t.td,{children:"-"}),(0,r.jsx)(t.td,{children:"-"})]}),(0,r.jsxs)(t.tr,{children:[(0,r.jsx)(t.td,{children:"core/testing"}),(0,r.jsxs)(t.td,{children:["Meta package for installing ",(0,r.jsx)(t.code,{children:"core"}),", ",(0,r.jsx)(t.code,{children:"jest"}),", ",(0,r.jsx)(t.code,{children:"react-test-renderer"})]}),(0,r.jsxs)(t.td,{children:["Meta package for installing ",(0,r.jsx)(t.code,{children:"core"}),", ",(0,r.jsx)(t.code,{children:"jest"}),", ",(0,r.jsx)(t.code,{children:"react-test-renderer"})]}),(0,r.jsxs)(t.td,{children:["Meta package for installing ",(0,r.jsx)(t.code,{children:"core"}),", ",(0,r.jsx)(t.code,{children:"jest"}),", ",(0,r.jsx)(t.code,{children:"react-test-renderer"})]}),(0,r.jsxs)(t.td,{children:["Meta package for installing ",(0,r.jsx)(t.code,{children:"core"}),", ",(0,r.jsx)(t.code,{children:"jest"}),", ",(0,r.jsx)(t.code,{children:"react-test-renderer"})]}),(0,r.jsxs)(t.td,{children:["Meta package for installing ",(0,r.jsx)(t.code,{children:"core"}),", ",(0,r.jsx)(t.code,{children:"jest"}),", ",(0,r.jsx)(t.code,{children:"react-test-renderer"})]}),(0,r.jsxs)(t.td,{children:["Meta package for installing ",(0,r.jsx)(t.code,{children:"core"}),", ",(0,r.jsx)(t.code,{children:"jest"}),", ",(0,r.jsx)(t.code,{children:"react-test-renderer"})]}),(0,r.jsxs)(t.td,{children:["Meta package for installing ",(0,r.jsx)(t.code,{children:"core"}),", ",(0,r.jsx)(t.code,{children:"jest"}),", ",(0,r.jsx)(t.code,{children:"react-test-renderer"})]}),(0,r.jsxs)(t.td,{children:["Meta package for installing ",(0,r.jsx)(t.code,{children:"core"}),", ",(0,r.jsx)(t.code,{children:"jest"}),", ",(0,r.jsx)(t.code,{children:"react-test-renderer"})]}),(0,r.jsxs)(t.td,{children:["Meta package for installing ",(0,r.jsx)(t.code,{children:"core"}),", ",(0,r.jsx)(t.code,{children:"jest"}),", ",(0,r.jsx)(t.code,{children:"react-test-renderer"})]}),(0,r.jsxs)(t.td,{children:["Meta package for installing ",(0,r.jsx)(t.code,{children:"core"}),", ",(0,r.jsx)(t.code,{children:"jest"}),", ",(0,r.jsx)(t.code,{children:"react-test-renderer"})]}),(0,r.jsxs)(t.td,{children:["Meta package for installing ",(0,r.jsx)(t.code,{children:"core"}),", ",(0,r.jsx)(t.code,{children:"jest"}),", ",(0,r.jsx)(t.code,{children:"react-test-renderer"})]}),(0,r.jsxs)(t.td,{children:["Meta package for installing ",(0,r.jsx)(t.code,{children:"core"}),", ",(0,r.jsx)(t.code,{children:"jest"}),", ",(0,r.jsx)(t.code,{children:"react-test-renderer"})]}),(0,r.jsxs)(t.td,{children:["Meta package for installing ",(0,r.jsx)(t.code,{children:"core"}),", ",(0,r.jsx)(t.code,{children:"jest"}),", ",(0,r.jsx)(t.code,{children:"react-test-renderer"})]}),(0,r.jsxs)(t.td,{children:["Meta package for installing ",(0,r.jsx)(t.code,{children:"core"}),", ",(0,r.jsx)(t.code,{children:"jest"}),", ",(0,r.jsx)(t.code,{children:"react-test-renderer"})]}),(0,r.jsxs)(t.td,{children:["Meta package for installing ",(0,r.jsx)(t.code,{children:"core"}),", ",(0,r.jsx)(t.code,{children:"jest"}),", ",(0,r.jsx)(t.code,{children:"react-test-renderer"})]})]}),(0,r.jsxs)(t.tr,{children:[(0,r.jsx)(t.td,{children:"datetime-picker"}),(0,r.jsx)(t.td,{children:"@react-native-community/datetimepicker@^8.0.0"}),(0,r.jsx)(t.td,{children:"@react-native-community/datetimepicker@^8.0.0"}),(0,r.jsx)(t.td,{children:"@react-native-community/datetimepicker@^8.0.0"}),(0,r.jsx)(t.td,{children:"@react-native-community/datetimepicker@^7.6.2"}),(0,r.jsx)(t.td,{children:"@react-native-community/datetimepicker@^6.4.2"}),(0,r.jsx)(t.td,{children:"@react-native-community/datetimepicker@^6.3.3"}),(0,r.jsx)(t.td,{children:"@react-native-community/datetimepicker@^6.0.2"}),(0,r.jsx)(t.td,{children:"@react-native-community/datetimepicker@^6.0.2"}),(0,r.jsx)(t.td,{children:"@react-native-community/datetimepicker@^3.5.2"}),(0,r.jsx)(t.td,{children:"@react-native-community/datetimepicker@^3.5.2"}),(0,r.jsx)(t.td,{children:"@react-native-community/datetimepicker@^3.5.2"}),(0,r.jsx)(t.td,{children:"@react-native-community/datetimepicker@^3.4.6"}),(0,r.jsx)(t.td,{children:"@react-native-community/datetimepicker@^3.0.9"}),(0,r.jsx)(t.td,{children:"@react-native-community/datetimepicker@^3.0.9"}),(0,r.jsx)(t.td,{children:"@react-native-community/datetimepicker@^3.0.9"})]}),(0,r.jsxs)(t.tr,{children:[(0,r.jsx)(t.td,{children:"filesystem"}),(0,r.jsx)(t.td,{children:"react-native-fs@^2.18.0"}),(0,r.jsx)(t.td,{children:"react-native-fs@^2.18.0"}),(0,r.jsx)(t.td,{children:"react-native-fs@^2.18.0"}),(0,r.jsx)(t.td,{children:"react-native-fs@^2.18.0"}),(0,r.jsx)(t.td,{children:"react-native-fs@^2.18.0"}),(0,r.jsx)(t.td,{children:"react-native-fs@^2.18.0"}),(0,r.jsx)(t.td,{children:"react-native-fs@^2.18.0"}),(0,r.jsx)(t.td,{children:"react-native-fs@^2.18.0"}),(0,r.jsx)(t.td,{children:"react-native-fs@^2.18.0"}),(0,r.jsx)(t.td,{children:"react-native-fs@^2.18.0"}),(0,r.jsx)(t.td,{children:"react-native-fs@^2.18.0"}),(0,r.jsx)(t.td,{children:"react-native-fs@^2.17.0"}),(0,r.jsx)(t.td,{children:"react-native-fs@^2.16.6"}),(0,r.jsx)(t.td,{children:"react-native-fs@^2.16.6"}),(0,r.jsx)(t.td,{children:"react-native-fs@^2.16.6"})]}),(0,r.jsxs)(t.tr,{children:[(0,r.jsx)(t.td,{children:"floating-action"}),(0,r.jsx)(t.td,{children:"react-native-floating-action@^1.22.0"}),(0,r.jsx)(t.td,{children:"react-native-floating-action@^1.22.0"}),(0,r.jsx)(t.td,{children:"react-native-floating-action@^1.22.0"}),(0,r.jsx)(t.td,{children:"react-native-floating-action@^1.22.0"}),(0,r.jsx)(t.td,{children:"react-native-floating-action@^1.22.0"}),(0,r.jsx)(t.td,{children:"react-native-floating-action@^1.22.0"}),(0,r.jsx)(t.td,{children:"react-native-floating-action@^1.22.0"}),(0,r.jsx)(t.td,{children:"react-native-floating-action@^1.22.0"}),(0,r.jsx)(t.td,{children:"react-native-floating-action@^1.22.0"}),(0,r.jsx)(t.td,{children:"react-native-floating-action@^1.22.0"}),(0,r.jsx)(t.td,{children:"react-native-floating-action@^1.22.0"}),(0,r.jsx)(t.td,{children:"react-native-floating-action@^1.21.0"}),(0,r.jsx)(t.td,{children:"react-native-floating-action@^1.21.0"}),(0,r.jsx)(t.td,{children:"react-native-floating-action@^1.18.0"}),(0,r.jsx)(t.td,{children:"react-native-floating-action@^1.18.0"})]}),(0,r.jsxs)(t.tr,{children:[(0,r.jsx)(t.td,{children:"gestures"}),(0,r.jsx)(t.td,{children:"react-native-gesture-handler@^2.18.1"}),(0,r.jsx)(t.td,{children:"react-native-gesture-handler@^2.18.1"}),(0,r.jsx)(t.td,{children:"react-native-gesture-handler@^2.14.0"}),(0,r.jsx)(t.td,{children:"react-native-gesture-handler@^2.12.0"}),(0,r.jsx)(t.td,{children:"react-native-gesture-handler@^2.9.0"}),(0,r.jsx)(t.td,{children:"react-native-gesture-handler@^2.6.0"}),(0,r.jsx)(t.td,{children:"react-native-gesture-handler@^2.5.0"}),(0,r.jsx)(t.td,{children:"react-native-gesture-handler@^2.3.2"}),(0,r.jsx)(t.td,{children:"react-native-gesture-handler@^1.10.3"}),(0,r.jsx)(t.td,{children:"react-native-gesture-handler@^1.10.3"}),(0,r.jsx)(t.td,{children:"react-native-gesture-handler@^1.10.3"}),(0,r.jsx)(t.td,{children:"react-native-gesture-handler@^1.10.3"}),(0,r.jsx)(t.td,{children:"react-native-gesture-handler@^1.10.3"}),(0,r.jsx)(t.td,{children:"react-native-gesture-handler@^1.9.0"}),(0,r.jsx)(t.td,{children:"react-native-gesture-handler@^1.9.0"})]}),(0,r.jsxs)(t.tr,{children:[(0,r.jsx)(t.td,{children:"hermes"}),(0,r.jsx)(t.td,{children:"-"}),(0,r.jsx)(t.td,{children:"-"}),(0,r.jsx)(t.td,{children:"-"}),(0,r.jsx)(t.td,{children:"-"}),(0,r.jsx)(t.td,{children:"-"}),(0,r.jsx)(t.td,{children:"-"}),(0,r.jsx)(t.td,{children:"hermes-engine@~0.11.0"}),(0,r.jsx)(t.td,{children:"hermes-engine@~0.11.0"}),(0,r.jsx)(t.td,{children:"hermes-engine@~0.9.0"}),(0,r.jsx)(t.td,{children:"hermes-engine@~0.9.0"}),(0,r.jsx)(t.td,{children:"hermes-engine@~0.8.1"}),(0,r.jsx)(t.td,{children:"hermes-engine@~0.7.0"}),(0,r.jsx)(t.td,{children:"hermes-engine@~0.5.0"}),(0,r.jsx)(t.td,{children:"hermes-engine@~0.4.0"}),(0,r.jsx)(t.td,{children:"hermes-engine@^0.2.1"})]}),(0,r.jsxs)(t.tr,{children:[(0,r.jsx)(t.td,{children:"hooks"}),(0,r.jsx)(t.td,{children:"@react-native-community/hooks@^2.8.0"}),(0,r.jsx)(t.td,{children:"@react-native-community/hooks@^2.8.0"}),(0,r.jsx)(t.td,{children:"@react-native-community/hooks@^2.8.0"}),(0,r.jsx)(t.td,{children:"@react-native-community/hooks@^2.8.0"}),(0,r.jsx)(t.td,{children:"@react-native-community/hooks@^2.8.0"}),(0,r.jsx)(t.td,{children:"@react-native-community/hooks@^2.8.0"}),(0,r.jsx)(t.td,{children:"@react-native-community/hooks@^2.8.0"}),(0,r.jsx)(t.td,{children:"@react-native-community/hooks@^2.8.0"}),(0,r.jsx)(t.td,{children:"@react-native-community/hooks@^2.8.0"}),(0,r.jsx)(t.td,{children:"@react-native-community/hooks@^2.8.0"}),(0,r.jsx)(t.td,{children:"@react-native-community/hooks@^2.8.0"}),(0,r.jsx)(t.td,{children:"@react-native-community/hooks@^2.6.0"}),(0,r.jsx)(t.td,{children:"@react-native-community/hooks@^2.6.0"}),(0,r.jsx)(t.td,{children:"@react-native-community/hooks@^2.6.0"}),(0,r.jsx)(t.td,{children:"@react-native-community/hooks@^2.6.0"})]}),(0,r.jsxs)(t.tr,{children:[(0,r.jsx)(t.td,{children:"html"}),(0,r.jsx)(t.td,{children:"react-native-render-html@^6.1.0"}),(0,r.jsx)(t.td,{children:"react-native-render-html@^6.1.0"}),(0,r.jsx)(t.td,{children:"react-native-render-html@^6.1.0"}),(0,r.jsx)(t.td,{children:"react-native-render-html@^6.1.0"}),(0,r.jsx)(t.td,{children:"react-native-render-html@^6.1.0"}),(0,r.jsx)(t.td,{children:"react-native-render-html@^6.1.0"}),(0,r.jsx)(t.td,{children:"react-native-render-html@^6.1.0"}),(0,r.jsx)(t.td,{children:"react-native-render-html@^6.1.0"}),(0,r.jsx)(t.td,{children:"react-native-render-html@^6.1.0"}),(0,r.jsx)(t.td,{children:"react-native-render-html@^6.1.0"}),(0,r.jsx)(t.td,{children:"react-native-render-html@^5.1.1"}),(0,r.jsx)(t.td,{children:"react-native-render-html@^5.1.1"}),(0,r.jsx)(t.td,{children:"react-native-render-html@^5.1.0"}),(0,r.jsx)(t.td,{children:"react-native-render-html@^5.1.0"}),(0,r.jsx)(t.td,{children:"react-native-render-html@^5.1.0"})]}),(0,r.jsxs)(t.tr,{children:[(0,r.jsx)(t.td,{children:"jest"}),(0,r.jsx)(t.td,{children:"jest@^29.2.1"}),(0,r.jsx)(t.td,{children:"jest@^29.2.1"}),(0,r.jsx)(t.td,{children:"jest@^29.2.1"}),(0,r.jsx)(t.td,{children:"jest@^29.2.1"}),(0,r.jsx)(t.td,{children:"jest@^29.2.1"}),(0,r.jsx)(t.td,{children:"jest@^26.6.3"}),(0,r.jsx)(t.td,{children:"jest@^26.6.3"}),(0,r.jsx)(t.td,{children:"jest@^26.6.3"}),(0,r.jsx)(t.td,{children:"jest@^26.6.3"}),(0,r.jsx)(t.td,{children:"jest@^26.6.3"}),(0,r.jsx)(t.td,{children:"jest@^26.6.3"}),(0,r.jsx)(t.td,{children:"jest@^26.5.2"}),(0,r.jsx)(t.td,{children:"jest@^24.9.0"}),(0,r.jsx)(t.td,{children:"jest@^24.8.0"}),(0,r.jsx)(t.td,{children:"jest@^24.8.0"})]}),(0,r.jsxs)(t.tr,{children:[(0,r.jsx)(t.td,{children:"lazy-index"}),(0,r.jsx)(t.td,{children:"@rnx-kit/react-native-lazy-index@^2.1.7"}),(0,r.jsx)(t.td,{children:"@rnx-kit/react-native-lazy-index@^2.1.7"}),(0,r.jsx)(t.td,{children:"@rnx-kit/react-native-lazy-index@^2.1.7"}),(0,r.jsx)(t.td,{children:"@rnx-kit/react-native-lazy-index@^2.1.7"}),(0,r.jsx)(t.td,{children:"@rnx-kit/react-native-lazy-index@^2.1.7"}),(0,r.jsx)(t.td,{children:"@rnx-kit/react-native-lazy-index@^2.1.7"}),(0,r.jsx)(t.td,{children:"@rnx-kit/react-native-lazy-index@^2.1.7"}),(0,r.jsx)(t.td,{children:"@rnx-kit/react-native-lazy-index@^2.1.7"}),(0,r.jsx)(t.td,{children:"@rnx-kit/react-native-lazy-index@^2.1.7"}),(0,r.jsx)(t.td,{children:"@rnx-kit/react-native-lazy-index@^2.1.7"}),(0,r.jsx)(t.td,{children:"react-native-lazy-index@^2.1.1"}),(0,r.jsx)(t.td,{children:"react-native-lazy-index@^2.1.1"}),(0,r.jsx)(t.td,{children:"react-native-lazy-index@^2.1.1"}),(0,r.jsx)(t.td,{children:"react-native-lazy-index@^2.1.1"}),(0,r.jsx)(t.td,{children:"react-native-lazy-index@^2.1.1"})]}),(0,r.jsxs)(t.tr,{children:[(0,r.jsx)(t.td,{children:"masked-view"}),(0,r.jsx)(t.td,{children:"@react-native-masked-view/masked-view@^0.3.0"}),(0,r.jsx)(t.td,{children:"@react-native-masked-view/masked-view@^0.3.0"}),(0,r.jsx)(t.td,{children:"@react-native-masked-view/masked-view@^0.3.0"}),(0,r.jsx)(t.td,{children:"@react-native-masked-view/masked-view@^0.2.9"}),(0,r.jsx)(t.td,{children:"@react-native-masked-view/masked-view@^0.2.9"}),(0,r.jsx)(t.td,{children:"@react-native-masked-view/masked-view@^0.2.7"}),(0,r.jsx)(t.td,{children:"@react-native-masked-view/masked-view@^0.2.7"}),(0,r.jsx)(t.td,{children:"@react-native-masked-view/masked-view@^0.2.6"}),(0,r.jsx)(t.td,{children:"@react-native-masked-view/masked-view@^0.2.6"}),(0,r.jsx)(t.td,{children:"@react-native-masked-view/masked-view@^0.2.6"}),(0,r.jsx)(t.td,{children:"@react-native-masked-view/masked-view@^0.2.6"}),(0,r.jsx)(t.td,{children:"@react-native-masked-view/masked-view@^0.2.4"}),(0,r.jsx)(t.td,{children:"@react-native-masked-view/masked-view@^0.2.4"}),(0,r.jsx)(t.td,{children:"@react-native-masked-view/masked-view@^0.2.4"}),(0,r.jsx)(t.td,{children:"@react-native-masked-view/masked-view@^0.2.4"})]}),(0,r.jsxs)(t.tr,{children:[(0,r.jsx)(t.td,{children:"metro"}),(0,r.jsx)(t.td,{children:"metro@^0.80.3"}),(0,r.jsx)(t.td,{children:"metro@^0.80.3"}),(0,r.jsx)(t.td,{children:"metro@^0.80.0"}),(0,r.jsx)(t.td,{children:"metro@^0.76.5"}),(0,r.jsx)(t.td,{children:"metro@^0.73.7"}),(0,r.jsx)(t.td,{children:"metro@^0.72.1"}),(0,r.jsx)(t.td,{children:"metro@^0.70.1"}),(0,r.jsx)(t.td,{children:"metro@^0.67.0"}),(0,r.jsx)(t.td,{children:"metro@^0.66.2"}),(0,r.jsx)(t.td,{children:"metro@^0.66.2"}),(0,r.jsx)(t.td,{children:"metro@^0.66.0"}),(0,r.jsx)(t.td,{children:"metro@^0.64.0"}),(0,r.jsx)(t.td,{children:"metro@^0.59.0"}),(0,r.jsx)(t.td,{children:"metro@^0.58.0"}),(0,r.jsx)(t.td,{children:"metro@^0.56.0"})]}),(0,r.jsxs)(t.tr,{children:[(0,r.jsx)(t.td,{children:"metro-config"}),(0,r.jsx)(t.td,{children:"metro-config@^0.80.3"}),(0,r.jsx)(t.td,{children:"metro-config@^0.80.3"}),(0,r.jsx)(t.td,{children:"metro-config@^0.80.0"}),(0,r.jsx)(t.td,{children:"metro-config@^0.76.5"}),(0,r.jsx)(t.td,{children:"metro-config@^0.73.7"}),(0,r.jsx)(t.td,{children:"metro-config@^0.72.1"}),(0,r.jsx)(t.td,{children:"metro-config@^0.70.1"}),(0,r.jsx)(t.td,{children:"metro-config@^0.67.0"}),(0,r.jsx)(t.td,{children:"metro-config@^0.66.2"}),(0,r.jsx)(t.td,{children:"metro-config@^0.66.2"}),(0,r.jsx)(t.td,{children:"metro-config@^0.66.0"}),(0,r.jsx)(t.td,{children:"metro-config@^0.64.0"}),(0,r.jsx)(t.td,{children:"metro-config@^0.59.0"}),(0,r.jsx)(t.td,{children:"metro-config@^0.58.0"}),(0,r.jsx)(t.td,{children:"metro-config@^0.56.0"})]}),(0,r.jsxs)(t.tr,{children:[(0,r.jsx)(t.td,{children:"metro-core"}),(0,r.jsx)(t.td,{children:"metro-core@^0.80.3"}),(0,r.jsx)(t.td,{children:"metro-core@^0.80.3"}),(0,r.jsx)(t.td,{children:"metro-core@^0.80.0"}),(0,r.jsx)(t.td,{children:"metro-core@^0.76.5"}),(0,r.jsx)(t.td,{children:"metro-core@^0.73.7"}),(0,r.jsx)(t.td,{children:"metro-core@^0.72.1"}),(0,r.jsx)(t.td,{children:"metro-core@^0.70.1"}),(0,r.jsx)(t.td,{children:"metro-core@^0.67.0"}),(0,r.jsx)(t.td,{children:"metro-core@^0.66.2"}),(0,r.jsx)(t.td,{children:"metro-core@^0.66.2"}),(0,r.jsx)(t.td,{children:"metro-core@^0.66.0"}),(0,r.jsx)(t.td,{children:"metro-core@^0.64.0"}),(0,r.jsx)(t.td,{children:"metro-core@^0.59.0"}),(0,r.jsx)(t.td,{children:"metro-core@^0.58.0"}),(0,r.jsx)(t.td,{children:"metro-core@^0.56.0"})]}),(0,r.jsxs)(t.tr,{children:[(0,r.jsx)(t.td,{children:"metro-react-native-babel-transformer"}),(0,r.jsx)(t.td,{children:"@react-native/metro-babel-transformer@^0.75.0"}),(0,r.jsx)(t.td,{children:"@react-native/metro-babel-transformer@^0.74.0"}),(0,r.jsx)(t.td,{children:"@react-native/metro-babel-transformer@^0.73.0"}),(0,r.jsx)(t.td,{children:"metro-react-native-babel-transformer@^0.76.5"}),(0,r.jsx)(t.td,{children:"metro-react-native-babel-transformer@^0.73.7"}),(0,r.jsx)(t.td,{children:"metro-react-native-babel-transformer@^0.72.1"}),(0,r.jsx)(t.td,{children:"metro-react-native-babel-transformer@^0.70.1"}),(0,r.jsx)(t.td,{children:"metro-react-native-babel-transformer@^0.67.0"}),(0,r.jsx)(t.td,{children:"metro-react-native-babel-transformer@^0.66.2"}),(0,r.jsx)(t.td,{children:"metro-react-native-babel-transformer@^0.66.2"}),(0,r.jsx)(t.td,{children:"metro-react-native-babel-transformer@^0.66.0"}),(0,r.jsx)(t.td,{children:"metro-react-native-babel-transformer@^0.64.0"}),(0,r.jsx)(t.td,{children:"metro-react-native-babel-transformer@^0.59.0"}),(0,r.jsx)(t.td,{children:"metro-react-native-babel-transformer@^0.58.0"}),(0,r.jsx)(t.td,{children:"metro-react-native-babel-transformer@^0.56.0"})]}),(0,r.jsxs)(t.tr,{children:[(0,r.jsx)(t.td,{children:"metro-resolver"}),(0,r.jsx)(t.td,{children:"metro-resolver@^0.80.3"}),(0,r.jsx)(t.td,{children:"metro-resolver@^0.80.3"}),(0,r.jsx)(t.td,{children:"metro-resolver@^0.80.0"}),(0,r.jsx)(t.td,{children:"metro-resolver@^0.76.5"}),(0,r.jsx)(t.td,{children:"metro-resolver@^0.73.7"}),(0,r.jsx)(t.td,{children:"metro-resolver@^0.72.1"}),(0,r.jsx)(t.td,{children:"metro-resolver@^0.70.1"}),(0,r.jsx)(t.td,{children:"metro-resolver@^0.67.0"}),(0,r.jsx)(t.td,{children:"metro-resolver@^0.66.2"}),(0,r.jsx)(t.td,{children:"metro-resolver@^0.66.2"}),(0,r.jsx)(t.td,{children:"metro-resolver@^0.66.0"}),(0,r.jsx)(t.td,{children:"metro-resolver@^0.64.0"}),(0,r.jsx)(t.td,{children:"metro-resolver@^0.59.0"}),(0,r.jsx)(t.td,{children:"metro-resolver@^0.58.0"}),(0,r.jsx)(t.td,{children:"metro-resolver@^0.56.0"})]}),(0,r.jsxs)(t.tr,{children:[(0,r.jsx)(t.td,{children:"metro-runtime"}),(0,r.jsx)(t.td,{children:"metro-runtime@^0.80.3"}),(0,r.jsx)(t.td,{children:"metro-runtime@^0.80.3"}),(0,r.jsx)(t.td,{children:"metro-runtime@^0.80.0"}),(0,r.jsx)(t.td,{children:"metro-runtime@^0.76.5"}),(0,r.jsx)(t.td,{children:"metro-runtime@^0.73.7"}),(0,r.jsx)(t.td,{children:"metro-runtime@^0.72.1"}),(0,r.jsx)(t.td,{children:"metro-runtime@^0.70.1"}),(0,r.jsx)(t.td,{children:"metro-runtime@^0.67.0"}),(0,r.jsx)(t.td,{children:"metro-runtime@^0.66.2"}),(0,r.jsx)(t.td,{children:"metro-runtime@^0.66.2"}),(0,r.jsx)(t.td,{children:"metro-runtime@^0.66.0"}),(0,r.jsx)(t.td,{children:"metro-runtime@^0.64.0"}),(0,r.jsx)(t.td,{children:"metro-runtime@^0.59.0"}),(0,r.jsx)(t.td,{children:"metro-runtime@^0.58.0"}),(0,r.jsx)(t.td,{children:"metro-runtime@^0.56.0"})]}),(0,r.jsxs)(t.tr,{children:[(0,r.jsx)(t.td,{children:"modal"}),(0,r.jsx)(t.td,{children:"react-native-modal@^13.0.0"}),(0,r.jsx)(t.td,{children:"react-native-modal@^13.0.0"}),(0,r.jsx)(t.td,{children:"react-native-modal@^13.0.0"}),(0,r.jsx)(t.td,{children:"react-native-modal@^13.0.0"}),(0,r.jsx)(t.td,{children:"react-native-modal@^13.0.0"}),(0,r.jsx)(t.td,{children:"react-native-modal@^13.0.0"}),(0,r.jsx)(t.td,{children:"react-native-modal@^13.0.0"}),(0,r.jsx)(t.td,{children:"react-native-modal@^13.0.0"}),(0,r.jsx)(t.td,{children:"react-native-modal@^13.0.0"}),(0,r.jsx)(t.td,{children:"react-native-modal@^13.0.0"}),(0,r.jsx)(t.td,{children:"react-native-modal@^13.0.0"}),(0,r.jsx)(t.td,{children:"react-native-modal@^11.10.0"}),(0,r.jsx)(t.td,{children:"react-native-modal@^11.5.6"}),(0,r.jsx)(t.td,{children:"react-native-modal@^11.5.6"}),(0,r.jsx)(t.td,{children:"react-native-modal@^11.5.6"})]}),(0,r.jsxs)(t.tr,{children:[(0,r.jsx)(t.td,{children:"navigation/native"}),(0,r.jsx)(t.td,{children:"@react-navigation/native@^6.0.8"}),(0,r.jsx)(t.td,{children:"@react-navigation/native@^6.0.8"}),(0,r.jsx)(t.td,{children:"@react-navigation/native@^6.0.8"}),(0,r.jsx)(t.td,{children:"@react-navigation/native@^6.0.8"}),(0,r.jsx)(t.td,{children:"@react-navigation/native@^6.0.8"}),(0,r.jsx)(t.td,{children:"@react-navigation/native@^6.0.8"}),(0,r.jsx)(t.td,{children:"@react-navigation/native@^6.0.8"}),(0,r.jsx)(t.td,{children:"@react-navigation/native@^6.0.8"}),(0,r.jsx)(t.td,{children:"@react-navigation/native@^6.0.8"}),(0,r.jsx)(t.td,{children:"@react-navigation/native@^6.0.8"}),(0,r.jsx)(t.td,{children:"@react-navigation/native@^5.9.8"}),(0,r.jsx)(t.td,{children:"@react-navigation/native@^5.9.8"}),(0,r.jsx)(t.td,{children:"@react-navigation/native@^5.9.4"}),(0,r.jsx)(t.td,{children:"@react-navigation/native@^5.7.6"}),(0,r.jsx)(t.td,{children:"@react-navigation/native@^5.7.6"})]}),(0,r.jsxs)(t.tr,{children:[(0,r.jsx)(t.td,{children:"navigation/stack"}),(0,r.jsx)(t.td,{children:"@react-navigation/stack@^6.3.21"}),(0,r.jsx)(t.td,{children:"@react-navigation/stack@^6.3.21"}),(0,r.jsx)(t.td,{children:"@react-navigation/stack@^6.3.21"}),(0,r.jsx)(t.td,{children:"@react-navigation/stack@^6.2.0"}),(0,r.jsx)(t.td,{children:"@react-navigation/stack@^6.2.0"}),(0,r.jsx)(t.td,{children:"@react-navigation/stack@^6.2.0"}),(0,r.jsx)(t.td,{children:"@react-navigation/stack@^6.2.0"}),(0,r.jsx)(t.td,{children:"@react-navigation/stack@^6.2.0"}),(0,r.jsx)(t.td,{children:"@react-navigation/stack@^6.2.0"}),(0,r.jsx)(t.td,{children:"@react-navigation/stack@^6.2.0"}),(0,r.jsx)(t.td,{children:"@react-navigation/stack@^5.14.9"}),(0,r.jsx)(t.td,{children:"@react-navigation/stack@^5.14.9"}),(0,r.jsx)(t.td,{children:"@react-navigation/stack@^5.14.4"}),(0,r.jsx)(t.td,{children:"@react-navigation/stack@^5.9.3"}),(0,r.jsx)(t.td,{children:"@react-navigation/stack@^5.9.3"})]}),(0,r.jsxs)(t.tr,{children:[(0,r.jsx)(t.td,{children:"netinfo"}),(0,r.jsx)(t.td,{children:"@react-native-community/netinfo@^11.3.1"}),(0,r.jsx)(t.td,{children:"@react-native-community/netinfo@^11.3.1"}),(0,r.jsx)(t.td,{children:"@react-native-community/netinfo@^11.3.0"}),(0,r.jsx)(t.td,{children:"@react-native-community/netinfo@^9.0.0"}),(0,r.jsx)(t.td,{children:"@react-native-community/netinfo@^9.0.0"}),(0,r.jsx)(t.td,{children:"@react-native-community/netinfo@^9.0.0"}),(0,r.jsx)(t.td,{children:"@react-native-community/netinfo@^8.0.0"}),(0,r.jsx)(t.td,{children:"@react-native-community/netinfo@^7.0.0"}),(0,r.jsx)(t.td,{children:"@react-native-community/netinfo@^7.0.0"}),(0,r.jsx)(t.td,{children:"@react-native-community/netinfo@^7.0.0"}),(0,r.jsx)(t.td,{children:"@react-native-community/netinfo@^7.0.0"}),(0,r.jsx)(t.td,{children:"@react-native-community/netinfo@^6.0.2"}),(0,r.jsx)(t.td,{children:"@react-native-community/netinfo@^5.9.10"}),(0,r.jsx)(t.td,{children:"@react-native-community/netinfo@^5.9.10"}),(0,r.jsx)(t.td,{children:"@react-native-community/netinfo@^5.7.1"})]}),(0,r.jsxs)(t.tr,{children:[(0,r.jsx)(t.td,{children:"popover"}),(0,r.jsx)(t.td,{children:"react-native-popover-view@^5.1.8"}),(0,r.jsx)(t.td,{children:"react-native-popover-view@^5.1.8"}),(0,r.jsx)(t.td,{children:"react-native-popover-view@^5.1.8"}),(0,r.jsx)(t.td,{children:"react-native-popover-view@^5.1.8"}),(0,r.jsx)(t.td,{children:"react-native-popover-view@^5.0.0"}),(0,r.jsx)(t.td,{children:"react-native-popover-view@^5.0.0"}),(0,r.jsx)(t.td,{children:"react-native-popover-view@^5.0.0"}),(0,r.jsx)(t.td,{children:"react-native-popover-view@^4.0.3"}),(0,r.jsx)(t.td,{children:"react-native-popover-view@^4.0.3"}),(0,r.jsx)(t.td,{children:"react-native-popover-view@^4.0.3"}),(0,r.jsx)(t.td,{children:"react-native-popover-view@^4.0.3"}),(0,r.jsx)(t.td,{children:"react-native-popover-view@^4.0.3"}),(0,r.jsx)(t.td,{children:"react-native-popover-view@^3.1.1"}),(0,r.jsx)(t.td,{children:"react-native-popover-view@^3.1.1"}),(0,r.jsx)(t.td,{children:"react-native-popover-view@^3.1.1"})]}),(0,r.jsxs)(t.tr,{children:[(0,r.jsx)(t.td,{children:"react"}),(0,r.jsx)(t.td,{children:"react@^18.2.0"}),(0,r.jsx)(t.td,{children:"react@18.2.0"}),(0,r.jsx)(t.td,{children:"react@18.2.0"}),(0,r.jsx)(t.td,{children:"react@18.2.0"}),(0,r.jsx)(t.td,{children:"react@18.2.0"}),(0,r.jsx)(t.td,{children:"react@18.1.0"}),(0,r.jsx)(t.td,{children:"react@18.0.0"}),(0,r.jsx)(t.td,{children:"react@17.0.2"}),(0,r.jsx)(t.td,{children:"react@17.0.2"}),(0,r.jsx)(t.td,{children:"react@17.0.2"}),(0,r.jsx)(t.td,{children:"react@17.0.2"}),(0,r.jsx)(t.td,{children:"react@17.0.1"}),(0,r.jsx)(t.td,{children:"react@16.13.1"}),(0,r.jsx)(t.td,{children:"react@16.11.0"}),(0,r.jsx)(t.td,{children:"react@16.9.0"})]}),(0,r.jsxs)(t.tr,{children:[(0,r.jsx)(t.td,{children:"react-dom"}),(0,r.jsx)(t.td,{children:"react-dom@^18.2.0"}),(0,r.jsx)(t.td,{children:"react-dom@^18.2.0"}),(0,r.jsx)(t.td,{children:"react-dom@^18.2.0"}),(0,r.jsx)(t.td,{children:"react-dom@^18.2.0"}),(0,r.jsx)(t.td,{children:"react-dom@^18.2.0"}),(0,r.jsx)(t.td,{children:"react-dom@^18.1.0"}),(0,r.jsx)(t.td,{children:"react-dom@^18.0.0"}),(0,r.jsx)(t.td,{children:"react-dom@17.0.2"}),(0,r.jsx)(t.td,{children:"react-dom@17.0.2"}),(0,r.jsx)(t.td,{children:"react-dom@17.0.2"}),(0,r.jsx)(t.td,{children:"react-dom@17.0.2"}),(0,r.jsx)(t.td,{children:"react-dom@17.0.1"}),(0,r.jsx)(t.td,{children:"react-dom@16.13.1"}),(0,r.jsx)(t.td,{children:"react-dom@16.11.0"}),(0,r.jsx)(t.td,{children:"react-dom@16.9.0"})]}),(0,r.jsxs)(t.tr,{children:[(0,r.jsx)(t.td,{children:"react-test-renderer"}),(0,r.jsx)(t.td,{children:"react-test-renderer@^18.2.0"}),(0,r.jsx)(t.td,{children:"react-test-renderer@18.2.0"}),(0,r.jsx)(t.td,{children:"react-test-renderer@18.2.0"}),(0,r.jsx)(t.td,{children:"react-test-renderer@18.2.0"}),(0,r.jsx)(t.td,{children:"react-test-renderer@18.2.0"}),(0,r.jsx)(t.td,{children:"react-test-renderer@18.1.0"}),(0,r.jsx)(t.td,{children:"react-test-renderer@18.0.0"}),(0,r.jsx)(t.td,{children:"react-test-renderer@17.0.2"}),(0,r.jsx)(t.td,{children:"react-test-renderer@17.0.2"}),(0,r.jsx)(t.td,{children:"react-test-renderer@17.0.2"}),(0,r.jsx)(t.td,{children:"react-test-renderer@17.0.2"}),(0,r.jsx)(t.td,{children:"react-test-renderer@17.0.1"}),(0,r.jsx)(t.td,{children:"react-test-renderer@16.13.1"}),(0,r.jsx)(t.td,{children:"react-test-renderer@16.11.0"}),(0,r.jsx)(t.td,{children:"react-test-renderer@16.9.0"})]}),(0,r.jsxs)(t.tr,{children:[(0,r.jsx)(t.td,{children:"safe-area"}),(0,r.jsx)(t.td,{children:"react-native-safe-area-context@^4.10.5"}),(0,r.jsx)(t.td,{children:"react-native-safe-area-context@^4.10.5"}),(0,r.jsx)(t.td,{children:"react-native-safe-area-context@^4.8.2"}),(0,r.jsx)(t.td,{children:"react-native-safe-area-context@>=4.5.3 <4.8"}),(0,r.jsx)(t.td,{children:"react-native-safe-area-context@^4.5.1"}),(0,r.jsx)(t.td,{children:"react-native-safe-area-context@^4.4.1"}),(0,r.jsx)(t.td,{children:"react-native-safe-area-context@^4.3.1"}),(0,r.jsx)(t.td,{children:"react-native-safe-area-context@^3.2.0"}),(0,r.jsx)(t.td,{children:"react-native-safe-area-context@^3.2.0"}),(0,r.jsx)(t.td,{children:"react-native-safe-area-context@^3.2.0"}),(0,r.jsx)(t.td,{children:"react-native-safe-area-context@^3.2.0"}),(0,r.jsx)(t.td,{children:"react-native-safe-area-context@^3.2.0"}),(0,r.jsx)(t.td,{children:"react-native-safe-area-context@^3.2.0"}),(0,r.jsx)(t.td,{children:"react-native-safe-area-context@^3.1.9"}),(0,r.jsx)(t.td,{children:"react-native-safe-area-context@^3.1.9"})]}),(0,r.jsxs)(t.tr,{children:[(0,r.jsx)(t.td,{children:"screens"}),(0,r.jsx)(t.td,{children:"react-native-screens@^3.34.0"}),(0,r.jsx)(t.td,{children:"react-native-screens@^3.31.0"}),(0,r.jsx)(t.td,{children:"react-native-screens@^3.28.0"}),(0,r.jsx)(t.td,{children:"react-native-screens@>=3.21.0 <3.28.0"}),(0,r.jsx)(t.td,{children:"react-native-screens@^3.19.0"}),(0,r.jsx)(t.td,{children:"react-native-screens@^3.18.2"}),(0,r.jsx)(t.td,{children:"react-native-screens@^3.14.1"}),(0,r.jsx)(t.td,{children:"react-native-screens@^3.13.1"}),(0,r.jsx)(t.td,{children:"react-native-screens@^3.9.0"}),(0,r.jsx)(t.td,{children:"react-native-screens@^3.9.0"}),(0,r.jsx)(t.td,{children:"react-native-screens@^3.7.0"}),(0,r.jsx)(t.td,{children:"react-native-screens@^3.1.1"}),(0,r.jsx)(t.td,{children:"react-native-screens@^2.18.1"}),(0,r.jsx)(t.td,{children:"react-native-screens@^2.10.1"}),(0,r.jsx)(t.td,{children:"react-native-screens@^2.10.1"})]}),(0,r.jsxs)(t.tr,{children:[(0,r.jsx)(t.td,{children:"shimmer"}),(0,r.jsx)(t.td,{children:"react-native-shimmer@^0.6.0"}),(0,r.jsx)(t.td,{children:"react-native-shimmer@^0.6.0"}),(0,r.jsx)(t.td,{children:"react-native-shimmer@^0.6.0"}),(0,r.jsx)(t.td,{children:"react-native-shimmer@^0.6.0"}),(0,r.jsx)(t.td,{children:"react-native-shimmer@^0.6.0"}),(0,r.jsx)(t.td,{children:"react-native-shimmer@^0.5.0"}),(0,r.jsx)(t.td,{children:"react-native-shimmer@^0.5.0"}),(0,r.jsx)(t.td,{children:"react-native-shimmer@^0.5.0"}),(0,r.jsx)(t.td,{children:"react-native-shimmer@^0.5.0"}),(0,r.jsx)(t.td,{children:"react-native-shimmer@^0.5.0"}),(0,r.jsx)(t.td,{children:"react-native-shimmer@^0.5.0"}),(0,r.jsx)(t.td,{children:"react-native-shimmer@^0.5.0"}),(0,r.jsx)(t.td,{children:"react-native-shimmer@^0.5.0"}),(0,r.jsx)(t.td,{children:"react-native-shimmer@^0.5.0"}),(0,r.jsx)(t.td,{children:"react-native-shimmer@^0.5.0"})]}),(0,r.jsxs)(t.tr,{children:[(0,r.jsx)(t.td,{children:"sqlite"}),(0,r.jsx)(t.td,{children:"react-native-sqlite-storage@^6.0.1"}),(0,r.jsx)(t.td,{children:"react-native-sqlite-storage@^6.0.1"}),(0,r.jsx)(t.td,{children:"react-native-sqlite-storage@^6.0.1"}),(0,r.jsx)(t.td,{children:"react-native-sqlite-storage@^6.0.1"}),(0,r.jsx)(t.td,{children:"react-native-sqlite-storage@^6.0.1"}),(0,r.jsx)(t.td,{children:"react-native-sqlite-storage@^6.0.1"}),(0,r.jsx)(t.td,{children:"react-native-sqlite-storage@^6.0.1"}),(0,r.jsx)(t.td,{children:"react-native-sqlite-storage@^5.0.0"}),(0,r.jsx)(t.td,{children:"react-native-sqlite-storage@^5.0.0"}),(0,r.jsx)(t.td,{children:"react-native-sqlite-storage@^5.0.0"}),(0,r.jsx)(t.td,{children:"react-native-sqlite-storage@^5.0.0"}),(0,r.jsx)(t.td,{children:"react-native-sqlite-storage@^5.0.0"}),(0,r.jsx)(t.td,{children:"react-native-sqlite-storage@^3.3.11"}),(0,r.jsx)(t.td,{children:"react-native-sqlite-storage@^3.3.11"}),(0,r.jsx)(t.td,{children:"react-native-sqlite-storage@^3.3.11"})]}),(0,r.jsxs)(t.tr,{children:[(0,r.jsx)(t.td,{children:"storage"}),(0,r.jsx)(t.td,{children:"@react-native-async-storage/async-storage@^2.0.0"}),(0,r.jsx)(t.td,{children:"@react-native-async-storage/async-storage@^2.0.0"}),(0,r.jsx)(t.td,{children:"@react-native-async-storage/async-storage@^1.22.0"}),(0,r.jsx)(t.td,{children:"@react-native-async-storage/async-storage@^1.18.2"}),(0,r.jsx)(t.td,{children:"@react-native-async-storage/async-storage@^1.17.11"}),(0,r.jsx)(t.td,{children:"@react-native-async-storage/async-storage@^1.17.10"}),(0,r.jsx)(t.td,{children:"@react-native-async-storage/async-storage@^1.17.7"}),(0,r.jsx)(t.td,{children:"@react-native-async-storage/async-storage@^1.17.3"}),(0,r.jsx)(t.td,{children:"@react-native-async-storage/async-storage@^1.15.16"}),(0,r.jsx)(t.td,{children:"@react-native-async-storage/async-storage@^1.15.9"}),(0,r.jsx)(t.td,{children:"@react-native-async-storage/async-storage@^1.15.8"}),(0,r.jsx)(t.td,{children:"@react-native-async-storage/async-storage@^1.15.8"}),(0,r.jsx)(t.td,{children:"@react-native-community/async-storage@^1.12.1"}),(0,r.jsx)(t.td,{children:"@react-native-community/async-storage@^1.12.1"}),(0,r.jsx)(t.td,{children:"@react-native-community/async-storage@^1.12.1"})]}),(0,r.jsxs)(t.tr,{children:[(0,r.jsx)(t.td,{children:"svg"}),(0,r.jsx)(t.td,{children:"react-native-svg@^15.6.0"}),(0,r.jsx)(t.td,{children:"react-native-svg@^15.4.0"}),(0,r.jsx)(t.td,{children:"react-native-svg@^15.0.0"}),(0,r.jsx)(t.td,{children:"react-native-svg@^13.14.0"}),(0,r.jsx)(t.td,{children:"react-native-svg@^13.14.0"}),(0,r.jsx)(t.td,{children:"react-native-svg@^12.3.0"}),(0,r.jsx)(t.td,{children:"react-native-svg@^12.3.0"}),(0,r.jsx)(t.td,{children:"react-native-svg@^12.3.0"}),(0,r.jsx)(t.td,{children:"react-native-svg@^12.1.1"}),(0,r.jsx)(t.td,{children:"react-native-svg@^12.1.1"}),(0,r.jsx)(t.td,{children:"react-native-svg@^12.1.1"}),(0,r.jsx)(t.td,{children:"react-native-svg@^12.1.1"}),(0,r.jsx)(t.td,{children:"react-native-svg@^12.1.1"}),(0,r.jsx)(t.td,{children:"react-native-svg@^12.1.1"}),(0,r.jsx)(t.td,{children:"react-native-svg@^12.1.1"})]}),(0,r.jsxs)(t.tr,{children:[(0,r.jsx)(t.td,{children:"test-app"}),(0,r.jsx)(t.td,{children:"react-native-test-app@^3.9.2"}),(0,r.jsx)(t.td,{children:"react-native-test-app@^3.9.2"}),(0,r.jsx)(t.td,{children:"react-native-test-app@^2.5.34"}),(0,r.jsx)(t.td,{children:"react-native-test-app@^2.5.5"}),(0,r.jsx)(t.td,{children:"react-native-test-app@^2.2.1"}),(0,r.jsx)(t.td,{children:"react-native-test-app@^1.6.9"}),(0,r.jsx)(t.td,{children:"react-native-test-app@^1.3.10"}),(0,r.jsx)(t.td,{children:"react-native-test-app@^1.3.5"}),(0,r.jsx)(t.td,{children:"react-native-test-app@^1.1.7"}),(0,r.jsx)(t.td,{children:"react-native-test-app@^1.0.6"}),(0,r.jsx)(t.td,{children:"react-native-test-app@^0.11.4"}),(0,r.jsx)(t.td,{children:"react-native-test-app@^0.11.4"}),(0,r.jsx)(t.td,{children:"react-native-test-app@^0.11.4"}),(0,r.jsx)(t.td,{children:"react-native-test-app@^0.11.4"}),(0,r.jsx)(t.td,{children:"react-native-test-app@^0.11.4"})]}),(0,r.jsxs)(t.tr,{children:[(0,r.jsx)(t.td,{children:"webview"}),(0,r.jsx)(t.td,{children:"react-native-webview@^13.10.5"}),(0,r.jsx)(t.td,{children:"react-native-webview@^13.10.5"}),(0,r.jsx)(t.td,{children:"react-native-webview@^13.10.0"}),(0,r.jsx)(t.td,{children:"react-native-webview@^13.2.2"}),(0,r.jsx)(t.td,{children:"react-native-webview@^12.0.2"}),(0,r.jsx)(t.td,{children:"react-native-webview@^11.23.0"}),(0,r.jsx)(t.td,{children:"react-native-webview@^11.23.0"}),(0,r.jsx)(t.td,{children:"react-native-webview@^11.22.6"}),(0,r.jsx)(t.td,{children:"react-native-webview@^11.13.0"}),(0,r.jsx)(t.td,{children:"react-native-webview@^11.13.0"}),(0,r.jsx)(t.td,{children:"react-native-webview@^11.13.0"}),(0,r.jsx)(t.td,{children:"react-native-webview@^11.4.2"}),(0,r.jsx)(t.td,{children:"react-native-webview@^11.4.2"}),(0,r.jsx)(t.td,{children:"react-native-webview@^11.0.3"}),(0,r.jsx)(t.td,{children:"react-native-webview@^11.0.3"})]})]})]})]}),"\n",(0,r.jsxs)(t.p,{children:["To add new capabilities, first add it to\n",(0,r.jsx)(t.a,{href:"https://github.com/microsoft/rnx-kit/blob/e1d4b2484303cac04e0ec6a4e79d854c694b96b4/packages/config/src/kitConfig.ts#L6",children:(0,r.jsx)(t.code,{children:"packages/config/src/kitConfig.ts"})}),",\nthen update the\n",(0,r.jsx)(t.a,{href:"https://github.com/microsoft/rnx-kit/blob/e1d4b2484303cac04e0ec6a4e79d854c694b96b4/packages/align-deps/src/presets/microsoft/react-native.ts",children:"preset"}),".\nFor an example, have a look at how the\n",(0,r.jsxs)(t.a,{href:"https://github.com/microsoft/rnx-kit/commit/c79828791a6ac5cf19b4abfff6347542af49eaec",children:[(0,r.jsx)(t.code,{children:"hermes"})," capability was added"]}),"."]}),"\n",(0,r.jsxs)(t.p,{children:["If you're looking to update capabilities to a more recent version, run\n",(0,r.jsx)(t.code,{children:"yarn update-profile"})," to help determine whether we need to bump any packages."]}),"\n",(0,r.jsx)(t.h2,{id:"presets",children:"Presets"}),"\n",(0,r.jsxs)(t.p,{children:["A profile is a list of capabilities that map to specific versions of packages. A\npreset is a collection of such profiles. It can be a JSON file, or a JS file\nthat default exports it. Presets are consumed via the ",(0,r.jsx)(t.code,{children:"presets"})," key in your\n",(0,r.jsx)(t.a,{href:"#configure",children:"configuration"}),", or the ",(0,r.jsx)(t.a,{href:"#--presets",children:(0,r.jsx)(t.code,{children:"--presets"})})," flag."]}),"\n",(0,r.jsx)(t.h3,{id:"extending-built-in-presets",children:"Extending Built-in Presets"}),"\n",(0,r.jsxs)(t.p,{children:["The built-in preset, ",(0,r.jsx)(t.code,{children:"microsoft/react-native"}),", contains a profile for every\nsupported version of react-native. The profiles are named after every minor\nrelease, e.g. ",(0,r.jsx)(t.code,{children:"0.69"})," or ",(0,r.jsx)(t.code,{children:"0.70"}),"."]}),"\n",(0,r.jsxs)(t.p,{children:["To add a new capability, e.g. ",(0,r.jsx)(t.code,{children:"my-capability"}),", to the built-in profiles ",(0,r.jsx)(t.code,{children:"0.69"}),"\nand ",(0,r.jsx)(t.code,{children:"0.70"}),", create a custom preset like below:"]}),"\n",(0,r.jsx)(t.pre,{children:(0,r.jsx)(t.code,{className:"language-js",children:'// my-preset/index.js\nmodule.exports = {\n 0.69: {\n "my-capability": {\n name: "my-module",\n version: "1.0.0",\n },\n },\n "0.70": {\n "my-capability": {\n name: "my-module",\n version: "1.1.0",\n },\n },\n};\n'})}),"\n",(0,r.jsx)(t.p,{children:"Then add it to your configuration:"}),"\n",(0,r.jsx)(t.pre,{children:(0,r.jsx)(t.code,{className:"language-diff",children:' {\n "name": "my-package",\n ...\n "rnx-kit": {\n "alignDeps": {\n "presets": [\n "microsoft/react-native",\n+ "my-preset"\n ],\n "requirements": ["react-native@0.70"],\n "capabilities": [\n ...\n ]\n }\n }\n }\n'})}),"\n",(0,r.jsxs)(t.p,{children:["Or if you need to align unconfigured packages, specify\n",(0,r.jsx)(t.code,{children:"--presets microsoft/react-native,my-preset"}),"."]}),"\n",(0,r.jsxs)(t.p,{children:["Make sure that ",(0,r.jsx)(t.code,{children:"microsoft/react-native"})," is declared before your custom preset.\nThis will tell ",(0,r.jsx)(t.code,{children:"align-deps"})," to append capabilities when the profile names match."]}),"\n",(0,r.jsxs)(t.p,{children:["You can also use this feature to ",(0,r.jsx)(t.em,{children:"override"})," capabilities. For instance:"]}),"\n",(0,r.jsx)(t.pre,{children:(0,r.jsx)(t.code,{className:"language-js",children:'// my-preset/index.js\nmodule.exports = {\n "0.70": {\n core: {\n name: "react-native",\n version: "^0.70.3-myCustomFork.1",\n },\n },\n};\n'})}),"\n",(0,r.jsxs)(t.p,{children:["With this preset, ",(0,r.jsx)(t.code,{children:"core"})," will be resolved to your custom fork of ",(0,r.jsx)(t.code,{children:"react-native"}),"\ninstead of the official version."]}),"\n",(0,r.jsx)(t.p,{children:"Note that profile names are only needed when you want to extend or override\npresets. Otherwise, you can name your profiles whatever you want."}),"\n",(0,r.jsxs)(t.p,{children:["For a complete example of a preset, have a look at\n",(0,r.jsx)(t.a,{href:"https://github.com/microsoft/rnx-kit/blob/e1d4b2484303cac04e0ec6a4e79d854c694b96b4/packages/align-deps/src/presets/microsoft/react-native.ts",children:(0,r.jsx)(t.code,{children:"microsoft/react-native"})}),"."]}),"\n",(0,r.jsx)(t.h3,{id:"custom-capabilities",children:"Custom Capabilities"}),"\n",(0,r.jsxs)(t.p,{children:["Normally, a capability resolves to a version of a package. For instance, ",(0,r.jsx)(t.code,{children:"core"}),"\nis a capability that resolves to ",(0,r.jsx)(t.code,{children:"react-native"}),":"]}),"\n",(0,r.jsx)(t.pre,{children:(0,r.jsx)(t.code,{className:"language-js",children:'{\n "core": {\n name: "react-native",\n version: "0.0.0",\n },\n}\n'})}),"\n",(0,r.jsxs)(t.p,{children:["A capability can depend on other capabilities. For example, we can ensure that\n",(0,r.jsx)(t.code,{children:"react-native"})," gets installed along with ",(0,r.jsx)(t.code,{children:"react-native-windows"})," by declaring\nthat ",(0,r.jsx)(t.code,{children:"core-windows"})," depends on ",(0,r.jsx)(t.code,{children:"core"}),":"]}),"\n",(0,r.jsx)(t.pre,{children:(0,r.jsx)(t.code,{className:"language-js",children:'{\n "core-windows": {\n name: "react-native-windows",\n version: "0.0.0",\n capabilities: ["core"],\n },\n}\n'})}),"\n",(0,r.jsx)(t.p,{children:"You can also create capabilities that don't resolve to a package, but to a list\nof capabilities instead:"}),"\n",(0,r.jsx)(t.pre,{children:(0,r.jsx)(t.code,{className:"language-js",children:'{\n "core/all": {\n name: "#meta",\n capabilities: [\n "core-android",\n "core-ios",\n "core-macos",\n "core-windows",\n ],\n },\n}\n'})}),"\n",(0,r.jsxs)(t.p,{children:["We call these ",(0,r.jsx)(t.strong,{children:"meta"})," capabilities. To make it easier to identify them (both\nfor humans and machines), the ",(0,r.jsx)(t.code,{children:"name"})," field must be set to ",(0,r.jsx)(t.code,{children:"#meta"}),", and the\n",(0,r.jsx)(t.code,{children:"capabilities"})," field must be a non-empty array of other capabilities. The\n",(0,r.jsx)(t.code,{children:"version"})," field is no longer used and can be dropped. To use a meta capability\nin your rnx-kit configuration, there's nothing specific to be done \u2014 for\ninstance:"]}),"\n",(0,r.jsx)(t.pre,{children:(0,r.jsx)(t.code,{className:"language-diff",children:' {\n "name": "my-package",\n ...\n "rnx-kit": {\n "alignDeps": {\n "presets": ["microsoft/react-native", "my-preset"],\n "requirements": ["react-native@0.70"],\n "capabilities": [\n+ "core/all"\n ]\n }\n }\n }\n'})}),"\n",(0,r.jsx)(t.h2,{id:"requirements",children:"Requirements"}),"\n",(0,r.jsx)(t.p,{children:"Requirements are what determines which profiles should be used. This is how it\nroughly works:"}),"\n",(0,r.jsxs)(t.ul,{children:["\n",(0,r.jsxs)(t.li,{children:["The list of presets are loaded and ",(0,r.jsx)(t.em,{children:"merged"})," into a giant preset"]}),"\n",(0,r.jsxs)(t.li,{children:["For each profile in the ",(0,r.jsx)(t.em,{children:"merged"})," preset, check whether they fulfill the\nrequirements","\n",(0,r.jsxs)(t.ul,{children:["\n",(0,r.jsx)(t.li,{children:"Profiles that do not fulfill the requirements are discarded"}),"\n"]}),"\n"]}),"\n",(0,r.jsx)(t.li,{children:"Use the remaining profiles to align the target package"}),"\n"]}),"\n",(0,r.jsx)(t.p,{children:"For example, given the following configuration:"}),"\n",(0,r.jsx)(t.pre,{children:(0,r.jsx)(t.code,{className:"language-js",children:'{\n "name": "useful-library",\n "version": "1.0",\n ...\n "rnx-kit": {\n "kitType": "library",\n "alignDeps": {\n "requirements": {\n "development": ["react-native@0.70"],\n "production": ["react-native@0.69 || 0.70"]\n }\n "capabilities": [\n "core-android", // `core-android` resolves to `react-native`\n "core-ios" // `core-ios` also resolves to `react-native`\n ]\n }\n }\n}\n'})}),"\n",(0,r.jsxs)(t.p,{children:[(0,r.jsx)(t.code,{children:"microsoft/react-native/0.70"})," will be used for development since it is the only\nprofile that fulfills the requirement, ",(0,r.jsx)(t.code,{children:"react-native@0.70"}),". ",(0,r.jsx)(t.code,{children:"align-deps"})," ensures\nthat ",(0,r.jsx)(t.code,{children:"react-native"})," is correctly declared under ",(0,r.jsx)(t.code,{children:"devDependencies"}),"."]}),"\n",(0,r.jsx)(t.pre,{children:(0,r.jsx)(t.code,{className:"language-diff",children:' {\n "name": "useful-library",\n "version": "1.0",\n+ "devDependencies" {\n+ "react-native": "^0.70.0"\n+ }\n ...\n }\n'})}),"\n",(0,r.jsxs)(t.p,{children:["For production, there are two profiles that fulfill the requirements,\n",(0,r.jsx)(t.code,{children:"microsoft/react-native/0.69"})," and ",(0,r.jsx)(t.code,{children:"microsoft/react-native/0.70"}),". Since this\npackage is a library, ",(0,r.jsx)(t.code,{children:"align-deps"})," ensures that ",(0,r.jsx)(t.code,{children:"react-native"})," is correctly\ndeclared under ",(0,r.jsx)(t.code,{children:"peerDependencies"}),":"]}),"\n",(0,r.jsx)(t.pre,{children:(0,r.jsx)(t.code,{className:"language-diff",children:' {\n "name": "useful-library",\n "version": "1.0",\n+ "peerDependencies": {\n+ "react-native": "^0.69.0 || ^0.70.0"\n+ },\n "devDependencies" {\n "react-native": "^0.70.0"\n }\n ...\n }\n'})}),"\n",(0,r.jsxs)(t.p,{children:["If the package was an app, ",(0,r.jsx)(t.code,{children:"align-deps"})," would've ensured that ",(0,r.jsx)(t.code,{children:"react-native"})," is\nonly declared under ",(0,r.jsx)(t.code,{children:"dependencies"}),"."]}),"\n",(0,r.jsxs)(t.p,{children:["You can read more about the usage of the different dependencies sections in\n",(0,r.jsx)(t.a,{href:"https://microsoft.github.io/rnx-kit/docs/architecture/dependency-management",children:"Dependency Management"}),"."]}),"\n",(0,r.jsx)(t.p,{children:"One important thing to note here is that if there are multiple capabilities\nresolving to the same package, only the first occurrence of the package is\nchecked. To illustrate this scenario, consider the following:"}),"\n",(0,r.jsx)(t.pre,{children:(0,r.jsx)(t.code,{className:"language-ts",children:'const builtInPreset = {\n "0.69": {\n core: {\n name: "react-native",\n version: "^0.69.0",\n },\n },\n "0.70": {\n core: {\n name: "react-native",\n version: "^0.70.0",\n },\n },\n};\n\nconst customPreset = {\n "0.69": {\n "custom-capability": {\n name: "react-native",\n version: "^0.70.0-fork.1",\n },\n },\n};\n\nconst megaPreset = mergePresets([builtInPreset, customPreset]);\n/*\n{\n "0.69": {\n core: {\n name: "react-native",\n version: "^0.69.0",\n },\n "custom-capability": {\n name: "react-native",\n version: "^0.70.0-fork.1",\n },\n },\n "0.70": {\n core: {\n name: "react-native",\n version: "^0.70.0",\n },\n },\n}\n */\n\nconst filteredPreset = filterPreset(megaPreset, ["react-native@0.70"]);\n/* ??? */\n'})}),"\n",(0,r.jsxs)(t.p,{children:["If ",(0,r.jsx)(t.code,{children:"filterPreset"})," checked all capabilities in the profiles, it would return both\n",(0,r.jsx)(t.code,{children:"0.69"})," and ",(0,r.jsx)(t.code,{children:"0.70"})," here because ",(0,r.jsx)(t.code,{children:"custom-capability"})," would satisfy\n",(0,r.jsx)(t.code,{children:"react-native@0.70"}),". This is unexpected behaviour. Instead, ",(0,r.jsx)(t.code,{children:"align-deps"})," looks\nfor the first package matching the name and ",(0,r.jsx)(t.em,{children:"then"})," checks whether it fulfills\nthe requirement. With this algorithm, only ",(0,r.jsx)(t.code,{children:"0.70"})," is returned."]}),"\n",(0,r.jsxs)(t.h2,{id:"migrating-from-dep-check",children:["Migrating From ",(0,r.jsx)(t.code,{children:"dep-check"})]}),"\n",(0,r.jsxs)(t.p,{children:["Changes from ",(0,r.jsx)(t.code,{children:"dep-check"})," to ",(0,r.jsx)(t.code,{children:"align-deps"})," mostly surrounds the configuration\nschema, and renaming of a couple of flags:"]}),"\n",(0,r.jsxs)(t.ul,{children:["\n",(0,r.jsxs)(t.li,{children:["\n",(0,r.jsxs)(t.p,{children:["In most cases, your old configuration will still work as before. ",(0,r.jsx)(t.code,{children:"align-deps"}),"\nwill tell you how to convert the old config, but you can also specify\n",(0,r.jsx)(t.code,{children:"--migrate-config"})," to let ",(0,r.jsx)(t.code,{children:"align-deps"})," do it for you."]}),"\n"]}),"\n",(0,r.jsxs)(t.li,{children:["\n",(0,r.jsx)(t.p,{children:"The following flags were renamed:"}),"\n",(0,r.jsxs)(t.table,{children:[(0,r.jsx)(t.thead,{children:(0,r.jsxs)(t.tr,{children:[(0,r.jsx)(t.th,{children:"Old"}),(0,r.jsx)(t.th,{children:"New"})]})}),(0,r.jsxs)(t.tbody,{children:[(0,r.jsxs)(t.tr,{children:[(0,r.jsx)(t.td,{children:(0,r.jsx)(t.code,{children:"--custom-profiles"})}),(0,r.jsx)(t.td,{children:(0,r.jsx)(t.a,{href:"#--presets",children:(0,r.jsx)(t.code,{children:"--presets"})})})]}),(0,r.jsxs)(t.tr,{children:[(0,r.jsx)(t.td,{children:(0,r.jsx)(t.code,{children:"--exclude-packages"})}),(0,r.jsx)(t.td,{children:(0,r.jsx)(t.em,{children:"no change"})})]}),(0,r.jsxs)(t.tr,{children:[(0,r.jsx)(t.td,{children:(0,r.jsx)(t.code,{children:"--init"})}),(0,r.jsx)(t.td,{children:(0,r.jsx)(t.em,{children:"no change"})})]}),(0,r.jsxs)(t.tr,{children:[(0,r.jsx)(t.td,{children:(0,r.jsx)(t.code,{children:"--vigilant"})}),(0,r.jsx)(t.td,{children:(0,r.jsx)(t.a,{href:"#--requirements",children:(0,r.jsx)(t.code,{children:"--requirements"})})})]}),(0,r.jsxs)(t.tr,{children:[(0,r.jsx)(t.td,{children:(0,r.jsx)(t.code,{children:"--set-version"})}),(0,r.jsx)(t.td,{children:(0,r.jsx)(t.em,{children:"no change"})})]}),(0,r.jsxs)(t.tr,{children:[(0,r.jsx)(t.td,{children:(0,r.jsx)(t.code,{children:"--write"})}),(0,r.jsx)(t.td,{children:(0,r.jsx)(t.em,{children:"no change"})})]})]})]}),"\n"]}),"\n",(0,r.jsxs)(t.li,{children:["\n",(0,r.jsxs)(t.p,{children:["Because the new config schema no longer relies on profile names to determine a\nprofile, we had to ",(0,r.jsx)(t.em,{children:"drop support"})," for declaring capabilities at the root level\nbecause we cannot reliably detect whether an entry is a package or a profile.\nYou will have to add those capabilities to all the profiles you want them\nadded to."]}),"\n"]}),"\n"]}),"\n",(0,r.jsx)(t.h2,{id:"terminology",children:"Terminology"}),"\n",(0,r.jsxs)(t.table,{children:[(0,r.jsx)(t.thead,{children:(0,r.jsxs)(t.tr,{children:[(0,r.jsx)(t.th,{style:{textAlign:"left"},children:"Terminology"}),(0,r.jsxs)(t.th,{style:{textAlign:"left"},children:["Definition (as used in ",(0,r.jsx)(t.code,{children:"align-deps"}),"'s context)"]})]})}),(0,r.jsxs)(t.tbody,{children:[(0,r.jsxs)(t.tr,{children:[(0,r.jsx)(t.td,{style:{textAlign:"left"},children:"capability"}),(0,r.jsx)(t.td,{style:{textAlign:"left"},children:"A capability is in essence a feature that the kit uses. A capability is usually mapped to an npm package. Which versions of the package is determined by a profile (see below)."})]}),(0,r.jsxs)(t.tr,{children:[(0,r.jsx)(t.td,{style:{textAlign:"left"},children:"package manifest"}),(0,r.jsxs)(t.td,{style:{textAlign:"left"},children:["This normally refers to a package's ",(0,r.jsx)(t.code,{children:"package.json"}),"."]})]}),(0,r.jsxs)(t.tr,{children:[(0,r.jsx)(t.td,{style:{textAlign:"left"},children:"preset"}),(0,r.jsx)(t.td,{style:{textAlign:"left"},children:"A collection of profiles."})]}),(0,r.jsxs)(t.tr,{children:[(0,r.jsx)(t.td,{style:{textAlign:"left"},children:"profile"}),(0,r.jsx)(t.td,{style:{textAlign:"left"},children:"A profile is a mapping of capabilities to npm packages at a specific version or version range."})]})]})]}),"\n",(0,r.jsx)(t.h2,{id:"contribution",children:"Contribution"}),"\n",(0,r.jsx)(t.h3,{id:"updating-an-existing-profile",children:"Updating an Existing Profile"}),"\n",(0,r.jsx)(t.p,{children:"Updating an existing profile is unfortunately a manual process."}),"\n",(0,r.jsx)(t.p,{children:"We have a script that fetches the latest version of all capabilities and\npresents them in a table together with the current versions."}),"\n",(0,r.jsx)(t.pre,{children:(0,r.jsx)(t.code,{className:"language-sh",children:"yarn update-profile\n"})}),"\n",(0,r.jsx)(t.p,{children:"Outputs something like:"}),"\n",(0,r.jsx)(t.pre,{children:(0,r.jsx)(t.code,{children:"| Capability | Name | Version | Latest | Homepage |\n| ------------ | ------------- | --------- | ------ | ----------------------------------------------- |\n| core | react-native | ^0.68.0-0 | 0.68.2 | https://github.com/facebook/react-native#readme |\n| core-android | react-native | ^0.68.0-0 | 0.68.2 | https://github.com/facebook/react-native#readme |\n| core-ios | react-native | ^0.68.0-0 | 0.68.2 | https://github.com/facebook/react-native#readme |\n| hermes | hermes-engine | ~0.11.0 | = | |\n| react | react | 17.0.2 | 18.1.0 | https://reactjs.org/ |\n| ... |\n"})}),"\n",(0,r.jsx)(t.p,{children:"With this information, we can see which packages have been updated since the\nlast profile, and scan their change logs for interesting changes that may affect\ncompatibility."}),"\n",(0,r.jsxs)(t.h3,{id:"adding-a-profile-for-a-new-version-of-react-native",children:["Adding a Profile for a New Version of ",(0,r.jsx)(t.code,{children:"react-native"})]}),"\n",(0,r.jsxs)(t.p,{children:["The ",(0,r.jsx)(t.code,{children:"update-profile"})," script can also be used to add a profile. For instance, to\nadd a profile for ",(0,r.jsx)(t.code,{children:"react-native"})," 0.69, run:"]}),"\n",(0,r.jsx)(t.pre,{children:(0,r.jsx)(t.code,{className:"language-sh",children:"yarn update-profile 0.69\n"})}),"\n",(0,r.jsxs)(t.p,{children:["The script will try to figure out what version of ",(0,r.jsx)(t.code,{children:"react"}),", ",(0,r.jsx)(t.code,{children:"metro"}),", etc. should\nbe set to, and write to ",(0,r.jsx)(t.code,{children:"src/presets/microsoft/react-native/profile-0.69.ts"}),".\nPlease verify that this profile looks correct before checking it in."]})]})}function h(e={}){const{wrapper:t}={...(0,i.R)(),...e.components};return t?(0,r.jsx)(t,{...e,children:(0,r.jsx)(o,{...e})}):o(e)}},8453:(e,t,n)=>{n.d(t,{R:()=>d,x:()=>a});var r=n(6540);const i={},c=r.createContext(i);function d(e){const t=r.useContext(c);return r.useMemo((function(){return"function"==typeof e?e(t):{...t,...e}}),[t,e])}function a(e){let t;return t=e.disableParentContext?"function"==typeof e.components?e.components(i):e.components||i:d(e.components),r.createElement(c.Provider,{value:t},e.children)}}}]); \ No newline at end of file diff --git a/assets/js/9feee6f9.835eec66.js b/assets/js/9feee6f9.835eec66.js deleted file mode 100644 index 94f197d45..000000000 --- a/assets/js/9feee6f9.835eec66.js +++ /dev/null @@ -1 +0,0 @@ -"use strict";(self.webpackChunk_rnx_kit_docsite=self.webpackChunk_rnx_kit_docsite||[]).push([[6258],{4339:(e,t,n)=>{n.r(t),n.d(t,{assets:()=>s,contentTitle:()=>d,default:()=>h,frontMatter:()=>c,metadata:()=>a,toc:()=>l});var r=n(4848),i=n(8453);const c={},d="align-deps",a={id:"tools/align-deps",title:"align-deps",description:"@rnx-kit/align-deps is a tool for managing dependencies within a repository",source:"@site/docs/tools/align-deps.md",sourceDirName:"tools",slug:"/tools/align-deps",permalink:"/rnx-kit/docs/tools/align-deps",draft:!1,unlisted:!1,editUrl:"https://github.com/microsoft/rnx-kit/tree/main/docsite/docs/tools/align-deps.md",tags:[],version:"current",frontMatter:{},sidebar:"toolsSidebar",previous:{title:"Tools Overview",permalink:"/rnx-kit/docs/tools/overview"},next:{title:"babel-plugin-import-path-remapper",permalink:"/rnx-kit/docs/tools/babel-plugin-import-path-remapper"}},s={},l=[{value:"Installation",id:"installation",level:2},{value:"Usage",id:"usage",level:2},{value:"--diff-mode",id:"--diff-mode",level:3},{value:"--exclude-packages",id:"--exclude-packages",level:3},{value:"--init <app | library>",id:"--init-app--library",level:3},{value:"--loose",id:"--loose",level:3},{value:"--no-unmanaged",id:"--no-unmanaged",level:3},{value:"--presets",id:"--presets",level:3},{value:"--requirements",id:"--requirements",level:3},{value:"--set-version",id:"--set-version",level:3},{value:"--verbose",id:"--verbose",level:3},{value:"--write",id:"--write",level:3},{value:"Configure",id:"configure",level:2},{value:"Capabilities",id:"capabilities",level:2},{value:"Presets",id:"presets",level:2},{value:"Extending Built-in Presets",id:"extending-built-in-presets",level:3},{value:"Custom Capabilities",id:"custom-capabilities",level:3},{value:"Requirements",id:"requirements",level:2},{value:"Migrating From dep-check",id:"migrating-from-dep-check",level:2},{value:"Terminology",id:"terminology",level:2},{value:"Contribution",id:"contribution",level:2},{value:"Updating an Existing Profile",id:"updating-an-existing-profile",level:3},{value:"Adding a Profile for a New Version of react-native",id:"adding-a-profile-for-a-new-version-of-react-native",level:3}];function o(e){const t={a:"a",blockquote:"blockquote",code:"code",em:"em",h1:"h1",h2:"h2",h3:"h3",header:"header",li:"li",p:"p",pre:"pre",strong:"strong",table:"table",tbody:"tbody",td:"td",th:"th",thead:"thead",tr:"tr",ul:"ul",...(0,i.R)(),...e.components},{Details:n}=t;return n||function(e,t){throw new Error("Expected "+(t?"component":"object")+" `"+e+"` to be defined: you likely forgot to import, pass, or provide it.")}("Details",!0),(0,r.jsxs)(r.Fragment,{children:[(0,r.jsx)(t.header,{children:(0,r.jsx)(t.h1,{id:"align-deps",children:"align-deps"})}),"\n",(0,r.jsxs)(t.p,{children:[(0,r.jsx)(t.code,{children:"@rnx-kit/align-deps"})," is a tool for managing dependencies within a repository\nand across many repositories. It ensures that your packages are using compatible\ndependencies and versions, given a set of ",(0,r.jsx)(t.a,{href:"#requirements",children:"requirements"}),", based\non ",(0,r.jsx)(t.a,{href:"#presets",children:"customizable presets"})," with known good packages and versions that\nare curated from real apps. You can even bring your own presets that are\ntailored to your needs."]}),"\n",(0,r.jsxs)(t.p,{children:["Note that this tool was previously known as ",(0,r.jsx)(t.code,{children:"dep-check"}),", but it was renamed to\navoid name clashes and other reasons. For more details, you can read the RFC:\n",(0,r.jsxs)(t.a,{href:"https://github.com/microsoft/rnx-kit/blob/rfcs/text/0001-dep-check-v2.md",children:[(0,r.jsx)(t.code,{children:"dep-check"})," v2"]}),"."]}),"\n",(0,r.jsxs)(t.p,{children:["If you want to learn how ",(0,r.jsx)(t.code,{children:"align-deps"})," is used at Microsoft, and see a demo of\nhow it works in a monorepo, you can watch the\n",(0,r.jsx)(t.a,{href:"https://youtu.be/DAEnPV78rQc?t=1085",children:'"Improve all the repos \u2013 exploring Microsoft\u2019s DevExp"'}),"\ntalk by ",(0,r.jsx)(t.a,{href:"https://github.com/kelset",children:"@kelset"})," and\n",(0,r.jsx)(t.a,{href:"https://github.com/tido64",children:"@tido64"})," at React Native Europe 2021."]}),"\n",(0,r.jsxs)(t.p,{children:["To learn more about how ",(0,r.jsx)(t.code,{children:"align-deps"})," works, please read the\n",(0,r.jsx)(t.a,{href:"https://microsoft.github.io/rnx-kit/docs/architecture/dependency-management",children:"design document"}),"."]}),"\n",(0,r.jsx)(t.h2,{id:"installation",children:"Installation"}),"\n",(0,r.jsx)(t.pre,{children:(0,r.jsx)(t.code,{className:"language-sh",children:"yarn add @rnx-kit/align-deps --dev\n"})}),"\n",(0,r.jsx)(t.p,{children:"or if you're using npm"}),"\n",(0,r.jsx)(t.pre,{children:(0,r.jsx)(t.code,{className:"language-sh",children:"npm add --save-dev @rnx-kit/align-deps\n"})}),"\n",(0,r.jsxs)(t.p,{children:["You can also run this tool using ",(0,r.jsx)(t.code,{children:"npx"})]}),"\n",(0,r.jsx)(t.pre,{children:(0,r.jsx)(t.code,{className:"language-sh",children:"npx @rnx-kit/align-deps@latest [options] [packages...]\n"})}),"\n",(0,r.jsxs)(t.p,{children:["but note that profiles may change between each run. We therefore don't recommend\nthat you use ",(0,r.jsx)(t.code,{children:"npx"})," if you intend to run this tool on CI or as part of\npost-install. It should be fine if you run it manually."]}),"\n",(0,r.jsx)(t.h2,{id:"usage",children:"Usage"}),"\n",(0,r.jsx)(t.pre,{children:(0,r.jsx)(t.code,{className:"language-sh",children:"yarn rnx-align-deps [options] [packages...]\n"})}),"\n",(0,r.jsxs)(t.p,{children:["Listing paths to packages that should be checked is optional. If omitted,\n",(0,r.jsx)(t.code,{children:"align-deps"})," will look for the closest ",(0,r.jsx)(t.code,{children:"package.json"})," using Node module\nresolution. If the target package is a root package defining workspaces, they\nwill all be included."]}),"\n",(0,r.jsx)(t.p,{children:"Examples:"}),"\n",(0,r.jsxs)(t.ul,{children:["\n",(0,r.jsxs)(t.li,{children:["\n",(0,r.jsx)(t.p,{children:"Ensure dependencies are compatible with react-native 0.70 without a config:"}),"\n",(0,r.jsx)(t.pre,{children:(0,r.jsx)(t.code,{className:"language-sh",children:"yarn rnx-align-deps --requirements react-native@0.70\n"})}),"\n"]}),"\n",(0,r.jsxs)(t.li,{children:["\n",(0,r.jsx)(t.p,{children:"Initialize a config for your app (or library):"}),"\n",(0,r.jsx)(t.pre,{children:(0,r.jsx)(t.code,{className:"language-sh",children:"yarn rnx-align-deps --init app\n# or specify `library` for a library\n"})}),"\n"]}),"\n",(0,r.jsxs)(t.li,{children:["\n",(0,r.jsxs)(t.p,{children:["Apply changes suggested by ",(0,r.jsx)(t.code,{children:"align-deps"}),":"]}),"\n",(0,r.jsx)(t.pre,{children:(0,r.jsx)(t.code,{className:"language-sh",children:"yarn rnx-align-deps --write\n"})}),"\n"]}),"\n",(0,r.jsxs)(t.li,{children:["\n",(0,r.jsx)(t.p,{children:"Interactively update supported react-native versions (or bump version used for\ndevelopment):"}),"\n",(0,r.jsx)(t.pre,{children:(0,r.jsx)(t.code,{className:"language-sh",children:"yarn rnx-align-deps --set-version\n"})}),"\n"]}),"\n"]}),"\n",(0,r.jsx)(t.h3,{id:"--diff-mode",children:(0,r.jsx)(t.code,{children:"--diff-mode"})}),"\n",(0,r.jsx)(t.p,{children:"Sets the algorithm used to determine if versions differ."}),"\n",(0,r.jsx)(t.p,{children:"Valid values:"}),"\n",(0,r.jsxs)(t.ul,{children:["\n",(0,r.jsxs)(t.li,{children:[(0,r.jsx)(t.code,{children:"strict"})," \u2014 version strings must be equal"]}),"\n",(0,r.jsxs)(t.li,{children:[(0,r.jsx)(t.code,{children:"allow-subset"})," \u2014 allow ranges that are entirely contained by the target\nversion range","\n",(0,r.jsxs)(t.ul,{children:["\n",(0,r.jsxs)(t.li,{children:[(0,r.jsx)(t.strong,{children:"OK:"})," ",(0,r.jsx)(t.code,{children:"0.74.0"})," is a subset of ",(0,r.jsx)(t.code,{children:"^0.74.0"})]}),"\n",(0,r.jsxs)(t.li,{children:[(0,r.jsx)(t.strong,{children:"OK:"})," ",(0,r.jsx)(t.code,{children:"^0.74.0"})," is a subset of ",(0,r.jsx)(t.code,{children:"^0.74.0"})]}),"\n",(0,r.jsxs)(t.li,{children:[(0,r.jsx)(t.strong,{children:"OK:"})," ",(0,r.jsx)(t.code,{children:"^0.74.2"})," is a subset of ",(0,r.jsx)(t.code,{children:"^0.74.0"})]}),"\n",(0,r.jsxs)(t.li,{children:[(0,r.jsx)(t.strong,{children:"NOT OK:"})," ",(0,r.jsx)(t.code,{children:"^0.74.0"})," is ",(0,r.jsx)(t.strong,{children:"not"})," a subset of ",(0,r.jsx)(t.code,{children:"0.74.0"})]}),"\n"]}),"\n"]}),"\n"]}),"\n",(0,r.jsxs)(t.blockquote,{children:["\n",(0,r.jsx)(t.p,{children:"[!WARNING]"}),"\n",(0,r.jsxs)(t.p,{children:["While algorithms other than ",(0,r.jsx)(t.code,{children:"strict"})," allow you to use exact version or version\nrange subsets, they will also increase the risk of introducing duplicate\npackages within your repository. You will have to be more vigilant and rely on\ntooling (such as ",(0,r.jsx)(t.a,{href:"https://yarnpkg.com/cli/dedupe",children:(0,r.jsx)(t.code,{children:"yarn dedupe"})}),") to reduce\nthe risk."]}),"\n"]}),"\n",(0,r.jsxs)(t.p,{children:["Default: ",(0,r.jsx)(t.code,{children:"strict"})]}),"\n",(0,r.jsx)(t.h3,{id:"--exclude-packages",children:(0,r.jsx)(t.code,{children:"--exclude-packages"})}),"\n",(0,r.jsx)(t.p,{children:"Comma-separated list of package names to exclude from inspection."}),"\n",(0,r.jsxs)(t.blockquote,{children:["\n",(0,r.jsx)(t.p,{children:"[!NOTE]"}),"\n",(0,r.jsxs)(t.p,{children:[(0,r.jsx)(t.code,{children:"--exclude-packages"})," will only exclude packages that do not have a\nconfiguration. Packages that have a configuration, will still be checked."]}),"\n"]}),"\n",(0,r.jsx)(t.h3,{id:"--init-app--library",children:(0,r.jsx)(t.code,{children:"--init "})}),"\n",(0,r.jsxs)(t.p,{children:["When integrating ",(0,r.jsx)(t.code,{children:"@rnx-kit/align-deps"})," for the first time, it may be a\ncumbersome to manually add all capabilities yourself. You can run this tool with\n",(0,r.jsx)(t.code,{children:"--init"}),", and it will try to add a sensible configuration based on what is\ncurrently defined in the specified ",(0,r.jsx)(t.code,{children:"package.json"}),"."]}),"\n",(0,r.jsx)(t.h3,{id:"--loose",children:(0,r.jsx)(t.code,{children:"--loose"})}),"\n",(0,r.jsx)(t.p,{children:"Determines how strict the React Native version requirement should be. Useful for\napps that depend on a newer React Native version than their dependencies declare\nsupport for."}),"\n",(0,r.jsxs)(t.p,{children:["Default: ",(0,r.jsx)(t.code,{children:"false"})]}),"\n",(0,r.jsx)(t.h3,{id:"--no-unmanaged",children:(0,r.jsx)(t.code,{children:"--no-unmanaged"})}),"\n",(0,r.jsx)(t.p,{children:"Whether unmanaged capabilities should be treated as errors."}),"\n",(0,r.jsxs)(t.p,{children:["Default: ",(0,r.jsx)(t.code,{children:"false"})]}),"\n",(0,r.jsx)(t.h3,{id:"--presets",children:(0,r.jsx)(t.code,{children:"--presets"})}),"\n",(0,r.jsxs)(t.p,{children:["Comma-separated list of presets. This can be names to built-in presets, or paths\nto external presets. Paths can point to a JSON file, a ",(0,r.jsx)(t.code,{children:".js"})," file, or a module\nname. The module must default export an object similar to the one below:"]}),"\n",(0,r.jsx)(t.pre,{children:(0,r.jsx)(t.code,{className:"language-js",children:'module.exports = {\n 0.69: {\n "my-capability": {\n name: "my-module",\n version: "1.0.0",\n },\n },\n "0.70": {\n "my-capability": {\n name: "my-module",\n version: "1.1.0",\n },\n },\n};\n'})}),"\n",(0,r.jsxs)(t.p,{children:["For a more complete example, have a look at the\n",(0,r.jsx)(t.a,{href:"https://github.com/microsoft/rnx-kit/blob/e1d4b2484303cac04e0ec6a4e79d854c694b96b4/packages/align-deps/src/presets/microsoft/react-native.ts",children:"default preset"}),"."]}),"\n",(0,r.jsxs)(t.p,{children:["See ",(0,r.jsx)(t.a,{href:"#presets",children:"Presets"})," for more details."]}),"\n",(0,r.jsxs)(t.blockquote,{children:["\n",(0,r.jsx)(t.p,{children:"[!NOTE]"}),"\n",(0,r.jsxs)(t.p,{children:["This flag is only be considered when a package is not configured. The presets\nspecified in the ",(0,r.jsx)(t.a,{href:"#configure",children:"configuration"})," will always take precedence."]}),"\n"]}),"\n",(0,r.jsx)(t.h3,{id:"--requirements",children:(0,r.jsx)(t.code,{children:"--requirements"})}),"\n",(0,r.jsxs)(t.p,{children:["Comma-separated list of requirements to apply if a package is ",(0,r.jsx)(t.em,{children:"not configured"}),"."]}),"\n",(0,r.jsxs)(t.p,{children:["For example, ",(0,r.jsx)(t.code,{children:"--requirements react-native@0.70"})," will make sure your packages are\ncompatible with ",(0,r.jsx)(t.code,{children:"react-native"})," 0.70."]}),"\n",(0,r.jsxs)(t.p,{children:["See ",(0,r.jsx)(t.a,{href:"#requirements",children:"Requirements"})," for more details."]}),"\n",(0,r.jsx)(t.h3,{id:"--set-version",children:(0,r.jsx)(t.code,{children:"--set-version"})}),"\n",(0,r.jsxs)(t.p,{children:["Sets production and development ",(0,r.jsx)(t.code,{children:"react-native"})," version requirements for any\nconfigured package. The value should be a comma-separated list of ",(0,r.jsx)(t.code,{children:"react-native"}),"\nversions to set. The first number specifies the development version. For\nexample, ",(0,r.jsx)(t.code,{children:"--set-version 0.70,0.69"})," will set the following values:"]}),"\n",(0,r.jsx)(t.pre,{children:(0,r.jsx)(t.code,{className:"language-json",children:'{\n "rnx-kit": {\n "alignDeps": {\n "requirements": {\n "development": ["react-native@0.70"],\n "production": ["react-native@0.69 || 0.70"]\n }\n }\n }\n}\n'})}),"\n",(0,r.jsxs)(t.p,{children:["If the version numbers are omitted, an ",(0,r.jsx)(t.em,{children:"interactive prompt"})," will appear."]}),"\n",(0,r.jsxs)(t.blockquote,{children:["\n",(0,r.jsx)(t.p,{children:"[!NOTE]"}),"\n",(0,r.jsxs)(t.p,{children:["A ",(0,r.jsx)(t.code,{children:"rnx-align-deps --write"})," run will be invoked right after changes have been\nmade. As such, this flag will fail if changes are needed before making any\nmodifications."]}),"\n"]}),"\n",(0,r.jsx)(t.h3,{id:"--verbose",children:(0,r.jsx)(t.code,{children:"--verbose"})}),"\n",(0,r.jsx)(t.p,{children:"Specify to increase logging verbosity."}),"\n",(0,r.jsxs)(t.p,{children:["Default: ",(0,r.jsx)(t.code,{children:"false"})]}),"\n",(0,r.jsx)(t.h3,{id:"--write",children:(0,r.jsx)(t.code,{children:"--write"})}),"\n",(0,r.jsxs)(t.p,{children:["Writes all proposed changes to the specified ",(0,r.jsx)(t.code,{children:"package.json"}),"."]}),"\n",(0,r.jsxs)(t.p,{children:["Default: ",(0,r.jsx)(t.code,{children:"false"})]}),"\n",(0,r.jsx)(t.h2,{id:"configure",children:"Configure"}),"\n",(0,r.jsxs)(t.p,{children:["While ",(0,r.jsx)(t.code,{children:"@rnx-kit/align-deps"})," can ensure your dependencies are aligned without a\nconfiguration, you can only get the more advanced features, such as dependencies\nsection re-ordering (",(0,r.jsx)(t.code,{children:"dependencies"})," vs ",(0,r.jsx)(t.code,{children:"peerDependencies"}),") and transitive\ndependency detection (A -> B -> C), by adding a configuration. Your\nconfiguration must be in an ",(0,r.jsx)(t.code,{children:'"rnx-kit"'})," section of your ",(0,r.jsx)(t.code,{children:"package.json"}),", and have\nthe following shapes depending on the package type:"]}),"\n",(0,r.jsx)(t.pre,{children:(0,r.jsx)(t.code,{className:"language-ts",children:'export type AppConfig = {\n kitType: "app";\n alignDeps: {\n /**\n * Presets to use for aligning dependencies.\n * @default ["microsoft/react-native"]\n */\n presets?: string[];\n\n /**\n * Requirements for this package, e.g.\n * `react-native@>=0.70`.\n */\n requirements: string[];\n\n /**\n * Capabilities used by the kit.\n */\n capabilities: Capability[];\n };\n};\n\nexport type LibraryConfig = {\n kitType: "library";\n alignDeps: {\n /**\n * Presets to use for aligning dependencies.\n * @default ["microsoft/react-native"]\n */\n presets?: string[];\n\n /**\n * Requirements for this package, e.g.\n * `react-native@>=0.70`. `development` is for\n * package authors, and `production` is for\n * consumers.\n */\n requirements: { development: string[]; production: string[] };\n\n /**\n * Capabilities used by the kit.\n */\n capabilities: Capability[];\n };\n};\n'})}),"\n",(0,r.jsxs)(t.p,{children:["For example, this is a config for a library that supports ",(0,r.jsx)(t.code,{children:"react-native"})," 0.69\nand 0.70, and uses 0.70 internally:"]}),"\n",(0,r.jsx)(t.pre,{children:(0,r.jsx)(t.code,{className:"language-js",children:'{\n "name": "useful-library",\n "version": "1.0",\n ...\n "rnx-kit": {\n "kitType": "library",\n "alignDeps": {\n "requirements": {\n "development": ["react-native@0.70"],\n "production": ["react-native@0.69 || 0.70"]\n }\n "capabilities": [\n "core-android",\n "core-ios"\n ]\n }\n }\n}\n'})}),"\n",(0,r.jsx)(t.h2,{id:"capabilities",children:"Capabilities"}),"\n",(0,r.jsx)(t.p,{children:"The following table contains the currently supported capabilities and what they\nresolve to:"}),"\n",(0,r.jsxs)(n,{children:[(0,r.jsx)("summary",{children:"Capabilities Table"}),(0,r.jsxs)(t.table,{children:[(0,r.jsx)(t.thead,{children:(0,r.jsxs)(t.tr,{children:[(0,r.jsx)(t.th,{children:"Capability"}),(0,r.jsx)(t.th,{children:"0.75"}),(0,r.jsx)(t.th,{children:"0.74"}),(0,r.jsx)(t.th,{children:"0.73"}),(0,r.jsx)(t.th,{children:"0.72"}),(0,r.jsx)(t.th,{children:"0.71"}),(0,r.jsx)(t.th,{children:"0.70"}),(0,r.jsx)(t.th,{children:"0.69"}),(0,r.jsx)(t.th,{children:"0.68"}),(0,r.jsx)(t.th,{children:"0.67"}),(0,r.jsx)(t.th,{children:"0.66"}),(0,r.jsx)(t.th,{children:"0.65"}),(0,r.jsx)(t.th,{children:"0.64"}),(0,r.jsx)(t.th,{children:"0.63"}),(0,r.jsx)(t.th,{children:"0.62"}),(0,r.jsx)(t.th,{children:"0.61"})]})}),(0,r.jsxs)(t.tbody,{children:[(0,r.jsxs)(t.tr,{children:[(0,r.jsx)(t.td,{children:"core"}),(0,r.jsx)(t.td,{children:"react-native@^0.75.0"}),(0,r.jsx)(t.td,{children:"react-native@^0.74.0"}),(0,r.jsx)(t.td,{children:"react-native@^0.73.0"}),(0,r.jsx)(t.td,{children:"react-native@^0.72.0"}),(0,r.jsx)(t.td,{children:"react-native@^0.71.0"}),(0,r.jsx)(t.td,{children:"react-native@^0.70.0"}),(0,r.jsx)(t.td,{children:"react-native@^0.69.0"}),(0,r.jsx)(t.td,{children:"react-native@^0.68.0"}),(0,r.jsx)(t.td,{children:"react-native@^0.67.0"}),(0,r.jsx)(t.td,{children:"react-native@^0.66.0"}),(0,r.jsx)(t.td,{children:"react-native@^0.65.0"}),(0,r.jsx)(t.td,{children:"react-native@^0.64.2"}),(0,r.jsx)(t.td,{children:"react-native@^0.63.2"}),(0,r.jsx)(t.td,{children:"react-native@^0.62.3"}),(0,r.jsx)(t.td,{children:"react-native@^0.61.5"})]}),(0,r.jsxs)(t.tr,{children:[(0,r.jsx)(t.td,{children:"core-android"}),(0,r.jsx)(t.td,{children:"react-native@^0.75.0"}),(0,r.jsx)(t.td,{children:"react-native@^0.74.0"}),(0,r.jsx)(t.td,{children:"react-native@^0.73.0"}),(0,r.jsx)(t.td,{children:"react-native@^0.72.0"}),(0,r.jsx)(t.td,{children:"react-native@^0.71.0"}),(0,r.jsx)(t.td,{children:"react-native@^0.70.0"}),(0,r.jsx)(t.td,{children:"react-native@^0.69.0"}),(0,r.jsx)(t.td,{children:"react-native@^0.68.0"}),(0,r.jsx)(t.td,{children:"react-native@^0.67.0"}),(0,r.jsx)(t.td,{children:"react-native@^0.66.0"}),(0,r.jsx)(t.td,{children:"react-native@^0.65.0"}),(0,r.jsx)(t.td,{children:"react-native@^0.64.2"}),(0,r.jsx)(t.td,{children:"react-native@^0.63.2"}),(0,r.jsx)(t.td,{children:"react-native@^0.62.3"}),(0,r.jsx)(t.td,{children:"react-native@^0.61.5"})]}),(0,r.jsxs)(t.tr,{children:[(0,r.jsx)(t.td,{children:"core-ios"}),(0,r.jsx)(t.td,{children:"react-native@^0.75.0"}),(0,r.jsx)(t.td,{children:"react-native@^0.74.0"}),(0,r.jsx)(t.td,{children:"react-native@^0.73.0"}),(0,r.jsx)(t.td,{children:"react-native@^0.72.0"}),(0,r.jsx)(t.td,{children:"react-native@^0.71.0"}),(0,r.jsx)(t.td,{children:"react-native@^0.70.0"}),(0,r.jsx)(t.td,{children:"react-native@^0.69.0"}),(0,r.jsx)(t.td,{children:"react-native@^0.68.0"}),(0,r.jsx)(t.td,{children:"react-native@^0.67.0"}),(0,r.jsx)(t.td,{children:"react-native@^0.66.0"}),(0,r.jsx)(t.td,{children:"react-native@^0.65.0"}),(0,r.jsx)(t.td,{children:"react-native@^0.64.2"}),(0,r.jsx)(t.td,{children:"react-native@^0.63.2"}),(0,r.jsx)(t.td,{children:"react-native@^0.62.3"}),(0,r.jsx)(t.td,{children:"react-native@^0.61.5"})]}),(0,r.jsxs)(t.tr,{children:[(0,r.jsx)(t.td,{children:"core-macos"}),(0,r.jsx)(t.td,{children:"react-native-macos@^0.75.0"}),(0,r.jsx)(t.td,{children:"react-native-macos@^0.74.0"}),(0,r.jsx)(t.td,{children:"react-native-macos@^0.73.0"}),(0,r.jsx)(t.td,{children:"react-native-macos@^0.72.0"}),(0,r.jsx)(t.td,{children:"react-native-macos@^0.71.0"}),(0,r.jsx)(t.td,{children:"react-native-macos@^0.70.0"}),(0,r.jsx)(t.td,{children:"react-native-macos@^0.69.0"}),(0,r.jsx)(t.td,{children:"react-native-macos@^0.68.0"}),(0,r.jsx)(t.td,{children:"react-native-macos@^0.67.0"}),(0,r.jsx)(t.td,{children:"react-native-macos@^0.66.0"}),(0,r.jsx)(t.td,{children:"react-native-macos@^0.65.0"}),(0,r.jsx)(t.td,{children:"react-native-macos@^0.64.0"}),(0,r.jsx)(t.td,{children:"react-native-macos@^0.63.0"}),(0,r.jsx)(t.td,{children:"react-native-macos@^0.62.0"}),(0,r.jsx)(t.td,{children:"react-native-macos@^0.61.0"})]}),(0,r.jsxs)(t.tr,{children:[(0,r.jsx)(t.td,{children:"core-visionos"}),(0,r.jsx)(t.td,{children:"@callstack/react-native-visionos@^0.75.0"}),(0,r.jsx)(t.td,{children:"@callstack/react-native-visionos@^0.74.0"}),(0,r.jsx)(t.td,{children:"@callstack/react-native-visionos@^0.73.0"}),(0,r.jsxs)(t.td,{children:["Meta package for installing ",(0,r.jsx)(t.code,{children:"react"})]}),(0,r.jsxs)(t.td,{children:["Meta package for installing ",(0,r.jsx)(t.code,{children:"react"})]}),(0,r.jsxs)(t.td,{children:["Meta package for installing ",(0,r.jsx)(t.code,{children:"react"})]}),(0,r.jsxs)(t.td,{children:["Meta package for installing ",(0,r.jsx)(t.code,{children:"react"})]}),(0,r.jsxs)(t.td,{children:["Meta package for installing ",(0,r.jsx)(t.code,{children:"react"})]}),(0,r.jsxs)(t.td,{children:["Meta package for installing ",(0,r.jsx)(t.code,{children:"react"})]}),(0,r.jsxs)(t.td,{children:["Meta package for installing ",(0,r.jsx)(t.code,{children:"react"})]}),(0,r.jsxs)(t.td,{children:["Meta package for installing ",(0,r.jsx)(t.code,{children:"react"})]}),(0,r.jsxs)(t.td,{children:["Meta package for installing ",(0,r.jsx)(t.code,{children:"react"})]}),(0,r.jsxs)(t.td,{children:["Meta package for installing ",(0,r.jsx)(t.code,{children:"react"})]}),(0,r.jsxs)(t.td,{children:["Meta package for installing ",(0,r.jsx)(t.code,{children:"react"})]}),(0,r.jsxs)(t.td,{children:["Meta package for installing ",(0,r.jsx)(t.code,{children:"react"})]})]}),(0,r.jsxs)(t.tr,{children:[(0,r.jsx)(t.td,{children:"core-windows"}),(0,r.jsx)(t.td,{children:"react-native-windows@^0.75.0"}),(0,r.jsx)(t.td,{children:"react-native-windows@^0.74.0"}),(0,r.jsx)(t.td,{children:"react-native-windows@^0.73.0"}),(0,r.jsx)(t.td,{children:"react-native-windows@^0.72.0"}),(0,r.jsx)(t.td,{children:"react-native-windows@^0.71.0"}),(0,r.jsx)(t.td,{children:"react-native-windows@^0.70.0"}),(0,r.jsx)(t.td,{children:"react-native-windows@^0.69.0"}),(0,r.jsx)(t.td,{children:"react-native-windows@^0.68.0"}),(0,r.jsx)(t.td,{children:"react-native-windows@^0.67.0"}),(0,r.jsx)(t.td,{children:"react-native-windows@^0.66.0"}),(0,r.jsx)(t.td,{children:"react-native-windows@^0.65.0"}),(0,r.jsx)(t.td,{children:"react-native-windows@^0.64.0"}),(0,r.jsx)(t.td,{children:"react-native-windows@^0.63.0"}),(0,r.jsx)(t.td,{children:"react-native-windows@^0.62.0"}),(0,r.jsx)(t.td,{children:"react-native-windows@^0.61.0"})]}),(0,r.jsxs)(t.tr,{children:[(0,r.jsx)(t.td,{children:"animation"}),(0,r.jsx)(t.td,{children:"react-native-reanimated@^3.6.0"}),(0,r.jsx)(t.td,{children:"react-native-reanimated@^3.6.0"}),(0,r.jsx)(t.td,{children:"react-native-reanimated@^3.6.0"}),(0,r.jsx)(t.td,{children:"react-native-reanimated@^3.3.0"}),(0,r.jsx)(t.td,{children:"react-native-reanimated@^2.14.1"}),(0,r.jsx)(t.td,{children:"react-native-reanimated@^2.10.0"}),(0,r.jsx)(t.td,{children:"react-native-reanimated@^2.9.0"}),(0,r.jsx)(t.td,{children:"react-native-reanimated@^2.5.0"}),(0,r.jsx)(t.td,{children:"react-native-reanimated@^2.2.4"}),(0,r.jsx)(t.td,{children:"react-native-reanimated@^2.2.3"}),(0,r.jsx)(t.td,{children:"react-native-reanimated@^2.2.1"}),(0,r.jsx)(t.td,{children:"react-native-reanimated@^2.1.0"}),(0,r.jsx)(t.td,{children:"react-native-reanimated@^1.13.3"}),(0,r.jsx)(t.td,{children:"react-native-reanimated@^1.13.3"}),(0,r.jsx)(t.td,{children:"react-native-reanimated@^1.13.3"})]}),(0,r.jsxs)(t.tr,{children:[(0,r.jsx)(t.td,{children:"babel-preset-react-native"}),(0,r.jsx)(t.td,{children:"@react-native/babel-preset@^0.75.0"}),(0,r.jsx)(t.td,{children:"@react-native/babel-preset@^0.74.0"}),(0,r.jsx)(t.td,{children:"@react-native/babel-preset@^0.73.0"}),(0,r.jsx)(t.td,{children:"metro-react-native-babel-preset@^0.76.5"}),(0,r.jsx)(t.td,{children:"metro-react-native-babel-preset@^0.73.7"}),(0,r.jsx)(t.td,{children:"metro-react-native-babel-preset@^0.72.1"}),(0,r.jsx)(t.td,{children:"metro-react-native-babel-preset@^0.70.3"}),(0,r.jsx)(t.td,{children:"metro-react-native-babel-preset@^0.67.0"}),(0,r.jsx)(t.td,{children:"metro-react-native-babel-preset@^0.66.2"}),(0,r.jsx)(t.td,{children:"metro-react-native-babel-preset@^0.66.2"}),(0,r.jsx)(t.td,{children:"metro-react-native-babel-preset@^0.66.0"}),(0,r.jsx)(t.td,{children:"metro-react-native-babel-preset@^0.64.0"}),(0,r.jsx)(t.td,{children:"metro-react-native-babel-preset@^0.59.0"}),(0,r.jsx)(t.td,{children:"metro-react-native-babel-preset@^0.58.0"}),(0,r.jsx)(t.td,{children:"metro-react-native-babel-preset@^0.56.0"})]}),(0,r.jsxs)(t.tr,{children:[(0,r.jsx)(t.td,{children:"base64"}),(0,r.jsx)(t.td,{children:"react-native-base64@^0.2.1"}),(0,r.jsx)(t.td,{children:"react-native-base64@^0.2.1"}),(0,r.jsx)(t.td,{children:"react-native-base64@^0.2.1"}),(0,r.jsx)(t.td,{children:"react-native-base64@^0.2.1"}),(0,r.jsx)(t.td,{children:"react-native-base64@^0.2.1"}),(0,r.jsx)(t.td,{children:"react-native-base64@^0.2.1"}),(0,r.jsx)(t.td,{children:"react-native-base64@^0.2.1"}),(0,r.jsx)(t.td,{children:"react-native-base64@^0.2.1"}),(0,r.jsx)(t.td,{children:"react-native-base64@^0.2.1"}),(0,r.jsx)(t.td,{children:"react-native-base64@^0.2.1"}),(0,r.jsx)(t.td,{children:"react-native-base64@^0.2.1"}),(0,r.jsx)(t.td,{children:"react-native-base64@^0.2.1"}),(0,r.jsx)(t.td,{children:"react-native-base64@^0.2.1"}),(0,r.jsx)(t.td,{children:"react-native-base64@^0.2.1"}),(0,r.jsx)(t.td,{children:"react-native-base64@^0.2.1"})]}),(0,r.jsxs)(t.tr,{children:[(0,r.jsx)(t.td,{children:"checkbox"}),(0,r.jsx)(t.td,{children:"@react-native-community/checkbox@^0.5.15"}),(0,r.jsx)(t.td,{children:"@react-native-community/checkbox@^0.5.15"}),(0,r.jsx)(t.td,{children:"@react-native-community/checkbox@^0.5.15"}),(0,r.jsx)(t.td,{children:"@react-native-community/checkbox@^0.5.15"}),(0,r.jsx)(t.td,{children:"@react-native-community/checkbox@^0.5.15"}),(0,r.jsx)(t.td,{children:"@react-native-community/checkbox@^0.5.8"}),(0,r.jsx)(t.td,{children:"@react-native-community/checkbox@^0.5.8"}),(0,r.jsx)(t.td,{children:"@react-native-community/checkbox@^0.5.8"}),(0,r.jsx)(t.td,{children:"@react-native-community/checkbox@^0.5.8"}),(0,r.jsx)(t.td,{children:"@react-native-community/checkbox@^0.5.8"}),(0,r.jsx)(t.td,{children:"@react-native-community/checkbox@^0.5.8"}),(0,r.jsx)(t.td,{children:"@react-native-community/checkbox@^0.5.8"}),(0,r.jsx)(t.td,{children:"@react-native-community/checkbox@^0.5.7"}),(0,r.jsx)(t.td,{children:"@react-native-community/checkbox@^0.5.7"}),(0,r.jsx)(t.td,{children:"@react-native-community/checkbox@^0.5.7"})]}),(0,r.jsxs)(t.tr,{children:[(0,r.jsx)(t.td,{children:"clipboard"}),(0,r.jsx)(t.td,{children:"@react-native-clipboard/clipboard@^1.14.0"}),(0,r.jsx)(t.td,{children:"@react-native-clipboard/clipboard@^1.14.0"}),(0,r.jsx)(t.td,{children:"@react-native-clipboard/clipboard@^1.14.0"}),(0,r.jsx)(t.td,{children:"@react-native-clipboard/clipboard@^1.10.0"}),(0,r.jsx)(t.td,{children:"@react-native-clipboard/clipboard@^1.10.0"}),(0,r.jsx)(t.td,{children:"@react-native-clipboard/clipboard@^1.10.0"}),(0,r.jsx)(t.td,{children:"@react-native-clipboard/clipboard@^1.10.0"}),(0,r.jsx)(t.td,{children:"@react-native-clipboard/clipboard@^1.10.0"}),(0,r.jsx)(t.td,{children:"@react-native-clipboard/clipboard@^1.9.0"}),(0,r.jsx)(t.td,{children:"@react-native-clipboard/clipboard@^1.9.0"}),(0,r.jsx)(t.td,{children:"@react-native-clipboard/clipboard@^1.9.0"}),(0,r.jsx)(t.td,{children:"@react-native-clipboard/clipboard@^1.8.3"}),(0,r.jsx)(t.td,{children:"@react-native-community/clipboard@^1.5.1"}),(0,r.jsx)(t.td,{children:"@react-native-community/clipboard@^1.5.1"}),(0,r.jsx)(t.td,{children:"@react-native-community/clipboard@^1.5.1"})]}),(0,r.jsxs)(t.tr,{children:[(0,r.jsx)(t.td,{children:"community/cli"}),(0,r.jsx)(t.td,{children:"@react-native-community/cli@^14.0.0"}),(0,r.jsx)(t.td,{children:"@react-native-community/cli@^13.6.4"}),(0,r.jsx)(t.td,{children:"@react-native-community/cli@^12.1.1"}),(0,r.jsx)(t.td,{children:"@react-native-community/cli@^11.3.2"}),(0,r.jsx)(t.td,{children:"@react-native-community/cli@^10.0.0"}),(0,r.jsx)(t.td,{children:"@react-native-community/cli@^9.0.0"}),(0,r.jsx)(t.td,{children:"@react-native-community/cli@^8.0.4"}),(0,r.jsx)(t.td,{children:"@react-native-community/cli@^7.0.3"}),(0,r.jsx)(t.td,{children:"@react-native-community/cli@^6.0.0"}),(0,r.jsx)(t.td,{children:"@react-native-community/cli@^6.0.0"}),(0,r.jsx)(t.td,{children:"@react-native-community/cli@^6.0.0"}),(0,r.jsx)(t.td,{children:"@react-native-community/cli@^5.0.1"}),(0,r.jsx)(t.td,{children:"@react-native-community/cli@^4.10.0"}),(0,r.jsx)(t.td,{children:"@react-native-community/cli@^4.5.1"}),(0,r.jsx)(t.td,{children:"@react-native-community/cli@^3.0.0"})]}),(0,r.jsxs)(t.tr,{children:[(0,r.jsx)(t.td,{children:"community/cli-android"}),(0,r.jsx)(t.td,{children:"@react-native-community/cli-platform-android@^14.0.0"}),(0,r.jsx)(t.td,{children:"@react-native-community/cli-platform-android@^13.6.4"}),(0,r.jsx)(t.td,{children:"@react-native-community/cli-platform-android@^12.1.1"}),(0,r.jsx)(t.td,{children:"@react-native-community/cli-platform-android@^11.3.2"}),(0,r.jsx)(t.td,{children:"@react-native-community/cli-platform-android@^10.0.0"}),(0,r.jsx)(t.td,{children:"@react-native-community/cli-platform-android@^9.0.0"}),(0,r.jsx)(t.td,{children:"@react-native-community/cli-platform-android@^8.0.4"}),(0,r.jsx)(t.td,{children:"@react-native-community/cli-platform-android@^7.0.1"}),(0,r.jsx)(t.td,{children:"@react-native-community/cli-platform-android@^6.0.0"}),(0,r.jsx)(t.td,{children:"@react-native-community/cli-platform-android@^6.0.0"}),(0,r.jsx)(t.td,{children:"@react-native-community/cli-platform-android@^6.0.0"}),(0,r.jsx)(t.td,{children:"@react-native-community/cli-platform-android@^5.0.1"}),(0,r.jsx)(t.td,{children:"@react-native-community/cli-platform-android@^4.10.0"}),(0,r.jsx)(t.td,{children:"@react-native-community/cli-platform-android@^4.5.1"}),(0,r.jsx)(t.td,{children:"@react-native-community/cli-platform-android@^3.0.0"})]}),(0,r.jsxs)(t.tr,{children:[(0,r.jsx)(t.td,{children:"community/cli-ios"}),(0,r.jsx)(t.td,{children:"@react-native-community/cli-platform-ios@^14.0.0"}),(0,r.jsx)(t.td,{children:"@react-native-community/cli-platform-ios@^13.6.4"}),(0,r.jsx)(t.td,{children:"@react-native-community/cli-platform-ios@^12.1.1"}),(0,r.jsx)(t.td,{children:"@react-native-community/cli-platform-ios@^11.3.2"}),(0,r.jsx)(t.td,{children:"@react-native-community/cli-platform-ios@^10.0.0"}),(0,r.jsx)(t.td,{children:"@react-native-community/cli-platform-ios@^9.0.0"}),(0,r.jsx)(t.td,{children:"@react-native-community/cli-platform-ios@^8.0.4"}),(0,r.jsx)(t.td,{children:"@react-native-community/cli-platform-ios@^7.0.1"}),(0,r.jsx)(t.td,{children:"@react-native-community/cli-platform-ios@^6.0.0"}),(0,r.jsx)(t.td,{children:"@react-native-community/cli-platform-ios@^6.0.0"}),(0,r.jsx)(t.td,{children:"@react-native-community/cli-platform-ios@^6.0.0"}),(0,r.jsx)(t.td,{children:"@react-native-community/cli-platform-ios@^5.0.1"}),(0,r.jsx)(t.td,{children:"@react-native-community/cli-platform-ios@^4.10.0"}),(0,r.jsx)(t.td,{children:"@react-native-community/cli-platform-ios@^4.5.0"}),(0,r.jsx)(t.td,{children:"@react-native-community/cli-platform-ios@^3.0.0"})]}),(0,r.jsxs)(t.tr,{children:[(0,r.jsx)(t.td,{children:"core/metro-config"}),(0,r.jsx)(t.td,{children:"@react-native/metro-config@^0.75.0"}),(0,r.jsx)(t.td,{children:"@react-native/metro-config@^0.74.0"}),(0,r.jsx)(t.td,{children:"@react-native/metro-config@^0.73.0"}),(0,r.jsx)(t.td,{children:"@react-native/metro-config@^0.72.0"}),(0,r.jsx)(t.td,{children:"-"}),(0,r.jsx)(t.td,{children:"-"}),(0,r.jsx)(t.td,{children:"-"}),(0,r.jsx)(t.td,{children:"-"}),(0,r.jsx)(t.td,{children:"-"}),(0,r.jsx)(t.td,{children:"-"}),(0,r.jsx)(t.td,{children:"-"}),(0,r.jsx)(t.td,{children:"-"}),(0,r.jsx)(t.td,{children:"-"}),(0,r.jsx)(t.td,{children:"-"}),(0,r.jsx)(t.td,{children:"-"})]}),(0,r.jsxs)(t.tr,{children:[(0,r.jsx)(t.td,{children:"core/testing"}),(0,r.jsxs)(t.td,{children:["Meta package for installing ",(0,r.jsx)(t.code,{children:"core"}),", ",(0,r.jsx)(t.code,{children:"jest"}),", ",(0,r.jsx)(t.code,{children:"react-test-renderer"})]}),(0,r.jsxs)(t.td,{children:["Meta package for installing ",(0,r.jsx)(t.code,{children:"core"}),", ",(0,r.jsx)(t.code,{children:"jest"}),", ",(0,r.jsx)(t.code,{children:"react-test-renderer"})]}),(0,r.jsxs)(t.td,{children:["Meta package for installing ",(0,r.jsx)(t.code,{children:"core"}),", ",(0,r.jsx)(t.code,{children:"jest"}),", ",(0,r.jsx)(t.code,{children:"react-test-renderer"})]}),(0,r.jsxs)(t.td,{children:["Meta package for installing ",(0,r.jsx)(t.code,{children:"core"}),", ",(0,r.jsx)(t.code,{children:"jest"}),", ",(0,r.jsx)(t.code,{children:"react-test-renderer"})]}),(0,r.jsxs)(t.td,{children:["Meta package for installing ",(0,r.jsx)(t.code,{children:"core"}),", ",(0,r.jsx)(t.code,{children:"jest"}),", ",(0,r.jsx)(t.code,{children:"react-test-renderer"})]}),(0,r.jsxs)(t.td,{children:["Meta package for installing ",(0,r.jsx)(t.code,{children:"core"}),", ",(0,r.jsx)(t.code,{children:"jest"}),", ",(0,r.jsx)(t.code,{children:"react-test-renderer"})]}),(0,r.jsxs)(t.td,{children:["Meta package for installing ",(0,r.jsx)(t.code,{children:"core"}),", ",(0,r.jsx)(t.code,{children:"jest"}),", ",(0,r.jsx)(t.code,{children:"react-test-renderer"})]}),(0,r.jsxs)(t.td,{children:["Meta package for installing ",(0,r.jsx)(t.code,{children:"core"}),", ",(0,r.jsx)(t.code,{children:"jest"}),", ",(0,r.jsx)(t.code,{children:"react-test-renderer"})]}),(0,r.jsxs)(t.td,{children:["Meta package for installing ",(0,r.jsx)(t.code,{children:"core"}),", ",(0,r.jsx)(t.code,{children:"jest"}),", ",(0,r.jsx)(t.code,{children:"react-test-renderer"})]}),(0,r.jsxs)(t.td,{children:["Meta package for installing ",(0,r.jsx)(t.code,{children:"core"}),", ",(0,r.jsx)(t.code,{children:"jest"}),", ",(0,r.jsx)(t.code,{children:"react-test-renderer"})]}),(0,r.jsxs)(t.td,{children:["Meta package for installing ",(0,r.jsx)(t.code,{children:"core"}),", ",(0,r.jsx)(t.code,{children:"jest"}),", ",(0,r.jsx)(t.code,{children:"react-test-renderer"})]}),(0,r.jsxs)(t.td,{children:["Meta package for installing ",(0,r.jsx)(t.code,{children:"core"}),", ",(0,r.jsx)(t.code,{children:"jest"}),", ",(0,r.jsx)(t.code,{children:"react-test-renderer"})]}),(0,r.jsxs)(t.td,{children:["Meta package for installing ",(0,r.jsx)(t.code,{children:"core"}),", ",(0,r.jsx)(t.code,{children:"jest"}),", ",(0,r.jsx)(t.code,{children:"react-test-renderer"})]}),(0,r.jsxs)(t.td,{children:["Meta package for installing ",(0,r.jsx)(t.code,{children:"core"}),", ",(0,r.jsx)(t.code,{children:"jest"}),", ",(0,r.jsx)(t.code,{children:"react-test-renderer"})]}),(0,r.jsxs)(t.td,{children:["Meta package for installing ",(0,r.jsx)(t.code,{children:"core"}),", ",(0,r.jsx)(t.code,{children:"jest"}),", ",(0,r.jsx)(t.code,{children:"react-test-renderer"})]})]}),(0,r.jsxs)(t.tr,{children:[(0,r.jsx)(t.td,{children:"datetime-picker"}),(0,r.jsx)(t.td,{children:"@react-native-community/datetimepicker@^8.0.0"}),(0,r.jsx)(t.td,{children:"@react-native-community/datetimepicker@^8.0.0"}),(0,r.jsx)(t.td,{children:"@react-native-community/datetimepicker@^8.0.0"}),(0,r.jsx)(t.td,{children:"@react-native-community/datetimepicker@^7.6.2"}),(0,r.jsx)(t.td,{children:"@react-native-community/datetimepicker@^6.4.2"}),(0,r.jsx)(t.td,{children:"@react-native-community/datetimepicker@^6.3.3"}),(0,r.jsx)(t.td,{children:"@react-native-community/datetimepicker@^6.0.2"}),(0,r.jsx)(t.td,{children:"@react-native-community/datetimepicker@^6.0.2"}),(0,r.jsx)(t.td,{children:"@react-native-community/datetimepicker@^3.5.2"}),(0,r.jsx)(t.td,{children:"@react-native-community/datetimepicker@^3.5.2"}),(0,r.jsx)(t.td,{children:"@react-native-community/datetimepicker@^3.5.2"}),(0,r.jsx)(t.td,{children:"@react-native-community/datetimepicker@^3.4.6"}),(0,r.jsx)(t.td,{children:"@react-native-community/datetimepicker@^3.0.9"}),(0,r.jsx)(t.td,{children:"@react-native-community/datetimepicker@^3.0.9"}),(0,r.jsx)(t.td,{children:"@react-native-community/datetimepicker@^3.0.9"})]}),(0,r.jsxs)(t.tr,{children:[(0,r.jsx)(t.td,{children:"filesystem"}),(0,r.jsx)(t.td,{children:"react-native-fs@^2.18.0"}),(0,r.jsx)(t.td,{children:"react-native-fs@^2.18.0"}),(0,r.jsx)(t.td,{children:"react-native-fs@^2.18.0"}),(0,r.jsx)(t.td,{children:"react-native-fs@^2.18.0"}),(0,r.jsx)(t.td,{children:"react-native-fs@^2.18.0"}),(0,r.jsx)(t.td,{children:"react-native-fs@^2.18.0"}),(0,r.jsx)(t.td,{children:"react-native-fs@^2.18.0"}),(0,r.jsx)(t.td,{children:"react-native-fs@^2.18.0"}),(0,r.jsx)(t.td,{children:"react-native-fs@^2.18.0"}),(0,r.jsx)(t.td,{children:"react-native-fs@^2.18.0"}),(0,r.jsx)(t.td,{children:"react-native-fs@^2.18.0"}),(0,r.jsx)(t.td,{children:"react-native-fs@^2.17.0"}),(0,r.jsx)(t.td,{children:"react-native-fs@^2.16.6"}),(0,r.jsx)(t.td,{children:"react-native-fs@^2.16.6"}),(0,r.jsx)(t.td,{children:"react-native-fs@^2.16.6"})]}),(0,r.jsxs)(t.tr,{children:[(0,r.jsx)(t.td,{children:"floating-action"}),(0,r.jsx)(t.td,{children:"react-native-floating-action@^1.22.0"}),(0,r.jsx)(t.td,{children:"react-native-floating-action@^1.22.0"}),(0,r.jsx)(t.td,{children:"react-native-floating-action@^1.22.0"}),(0,r.jsx)(t.td,{children:"react-native-floating-action@^1.22.0"}),(0,r.jsx)(t.td,{children:"react-native-floating-action@^1.22.0"}),(0,r.jsx)(t.td,{children:"react-native-floating-action@^1.22.0"}),(0,r.jsx)(t.td,{children:"react-native-floating-action@^1.22.0"}),(0,r.jsx)(t.td,{children:"react-native-floating-action@^1.22.0"}),(0,r.jsx)(t.td,{children:"react-native-floating-action@^1.22.0"}),(0,r.jsx)(t.td,{children:"react-native-floating-action@^1.22.0"}),(0,r.jsx)(t.td,{children:"react-native-floating-action@^1.22.0"}),(0,r.jsx)(t.td,{children:"react-native-floating-action@^1.21.0"}),(0,r.jsx)(t.td,{children:"react-native-floating-action@^1.21.0"}),(0,r.jsx)(t.td,{children:"react-native-floating-action@^1.18.0"}),(0,r.jsx)(t.td,{children:"react-native-floating-action@^1.18.0"})]}),(0,r.jsxs)(t.tr,{children:[(0,r.jsx)(t.td,{children:"gestures"}),(0,r.jsx)(t.td,{children:"react-native-gesture-handler@^2.18.1"}),(0,r.jsx)(t.td,{children:"react-native-gesture-handler@^2.18.1"}),(0,r.jsx)(t.td,{children:"react-native-gesture-handler@^2.14.0"}),(0,r.jsx)(t.td,{children:"react-native-gesture-handler@^2.12.0"}),(0,r.jsx)(t.td,{children:"react-native-gesture-handler@^2.9.0"}),(0,r.jsx)(t.td,{children:"react-native-gesture-handler@^2.6.0"}),(0,r.jsx)(t.td,{children:"react-native-gesture-handler@^2.5.0"}),(0,r.jsx)(t.td,{children:"react-native-gesture-handler@^2.3.2"}),(0,r.jsx)(t.td,{children:"react-native-gesture-handler@^1.10.3"}),(0,r.jsx)(t.td,{children:"react-native-gesture-handler@^1.10.3"}),(0,r.jsx)(t.td,{children:"react-native-gesture-handler@^1.10.3"}),(0,r.jsx)(t.td,{children:"react-native-gesture-handler@^1.10.3"}),(0,r.jsx)(t.td,{children:"react-native-gesture-handler@^1.10.3"}),(0,r.jsx)(t.td,{children:"react-native-gesture-handler@^1.9.0"}),(0,r.jsx)(t.td,{children:"react-native-gesture-handler@^1.9.0"})]}),(0,r.jsxs)(t.tr,{children:[(0,r.jsx)(t.td,{children:"hermes"}),(0,r.jsx)(t.td,{children:"-"}),(0,r.jsx)(t.td,{children:"-"}),(0,r.jsx)(t.td,{children:"-"}),(0,r.jsx)(t.td,{children:"-"}),(0,r.jsx)(t.td,{children:"-"}),(0,r.jsx)(t.td,{children:"-"}),(0,r.jsx)(t.td,{children:"hermes-engine@~0.11.0"}),(0,r.jsx)(t.td,{children:"hermes-engine@~0.11.0"}),(0,r.jsx)(t.td,{children:"hermes-engine@~0.9.0"}),(0,r.jsx)(t.td,{children:"hermes-engine@~0.9.0"}),(0,r.jsx)(t.td,{children:"hermes-engine@~0.8.1"}),(0,r.jsx)(t.td,{children:"hermes-engine@~0.7.0"}),(0,r.jsx)(t.td,{children:"hermes-engine@~0.5.0"}),(0,r.jsx)(t.td,{children:"hermes-engine@~0.4.0"}),(0,r.jsx)(t.td,{children:"hermes-engine@^0.2.1"})]}),(0,r.jsxs)(t.tr,{children:[(0,r.jsx)(t.td,{children:"hooks"}),(0,r.jsx)(t.td,{children:"@react-native-community/hooks@^2.8.0"}),(0,r.jsx)(t.td,{children:"@react-native-community/hooks@^2.8.0"}),(0,r.jsx)(t.td,{children:"@react-native-community/hooks@^2.8.0"}),(0,r.jsx)(t.td,{children:"@react-native-community/hooks@^2.8.0"}),(0,r.jsx)(t.td,{children:"@react-native-community/hooks@^2.8.0"}),(0,r.jsx)(t.td,{children:"@react-native-community/hooks@^2.8.0"}),(0,r.jsx)(t.td,{children:"@react-native-community/hooks@^2.8.0"}),(0,r.jsx)(t.td,{children:"@react-native-community/hooks@^2.8.0"}),(0,r.jsx)(t.td,{children:"@react-native-community/hooks@^2.8.0"}),(0,r.jsx)(t.td,{children:"@react-native-community/hooks@^2.8.0"}),(0,r.jsx)(t.td,{children:"@react-native-community/hooks@^2.8.0"}),(0,r.jsx)(t.td,{children:"@react-native-community/hooks@^2.6.0"}),(0,r.jsx)(t.td,{children:"@react-native-community/hooks@^2.6.0"}),(0,r.jsx)(t.td,{children:"@react-native-community/hooks@^2.6.0"}),(0,r.jsx)(t.td,{children:"@react-native-community/hooks@^2.6.0"})]}),(0,r.jsxs)(t.tr,{children:[(0,r.jsx)(t.td,{children:"html"}),(0,r.jsx)(t.td,{children:"react-native-render-html@^6.1.0"}),(0,r.jsx)(t.td,{children:"react-native-render-html@^6.1.0"}),(0,r.jsx)(t.td,{children:"react-native-render-html@^6.1.0"}),(0,r.jsx)(t.td,{children:"react-native-render-html@^6.1.0"}),(0,r.jsx)(t.td,{children:"react-native-render-html@^6.1.0"}),(0,r.jsx)(t.td,{children:"react-native-render-html@^6.1.0"}),(0,r.jsx)(t.td,{children:"react-native-render-html@^6.1.0"}),(0,r.jsx)(t.td,{children:"react-native-render-html@^6.1.0"}),(0,r.jsx)(t.td,{children:"react-native-render-html@^6.1.0"}),(0,r.jsx)(t.td,{children:"react-native-render-html@^6.1.0"}),(0,r.jsx)(t.td,{children:"react-native-render-html@^5.1.1"}),(0,r.jsx)(t.td,{children:"react-native-render-html@^5.1.1"}),(0,r.jsx)(t.td,{children:"react-native-render-html@^5.1.0"}),(0,r.jsx)(t.td,{children:"react-native-render-html@^5.1.0"}),(0,r.jsx)(t.td,{children:"react-native-render-html@^5.1.0"})]}),(0,r.jsxs)(t.tr,{children:[(0,r.jsx)(t.td,{children:"jest"}),(0,r.jsx)(t.td,{children:"jest@^29.2.1"}),(0,r.jsx)(t.td,{children:"jest@^29.2.1"}),(0,r.jsx)(t.td,{children:"jest@^29.2.1"}),(0,r.jsx)(t.td,{children:"jest@^29.2.1"}),(0,r.jsx)(t.td,{children:"jest@^29.2.1"}),(0,r.jsx)(t.td,{children:"jest@^26.6.3"}),(0,r.jsx)(t.td,{children:"jest@^26.6.3"}),(0,r.jsx)(t.td,{children:"jest@^26.6.3"}),(0,r.jsx)(t.td,{children:"jest@^26.6.3"}),(0,r.jsx)(t.td,{children:"jest@^26.6.3"}),(0,r.jsx)(t.td,{children:"jest@^26.6.3"}),(0,r.jsx)(t.td,{children:"jest@^26.5.2"}),(0,r.jsx)(t.td,{children:"jest@^24.9.0"}),(0,r.jsx)(t.td,{children:"jest@^24.8.0"}),(0,r.jsx)(t.td,{children:"jest@^24.8.0"})]}),(0,r.jsxs)(t.tr,{children:[(0,r.jsx)(t.td,{children:"lazy-index"}),(0,r.jsx)(t.td,{children:"@rnx-kit/react-native-lazy-index@^2.1.7"}),(0,r.jsx)(t.td,{children:"@rnx-kit/react-native-lazy-index@^2.1.7"}),(0,r.jsx)(t.td,{children:"@rnx-kit/react-native-lazy-index@^2.1.7"}),(0,r.jsx)(t.td,{children:"@rnx-kit/react-native-lazy-index@^2.1.7"}),(0,r.jsx)(t.td,{children:"@rnx-kit/react-native-lazy-index@^2.1.7"}),(0,r.jsx)(t.td,{children:"@rnx-kit/react-native-lazy-index@^2.1.7"}),(0,r.jsx)(t.td,{children:"@rnx-kit/react-native-lazy-index@^2.1.7"}),(0,r.jsx)(t.td,{children:"@rnx-kit/react-native-lazy-index@^2.1.7"}),(0,r.jsx)(t.td,{children:"@rnx-kit/react-native-lazy-index@^2.1.7"}),(0,r.jsx)(t.td,{children:"@rnx-kit/react-native-lazy-index@^2.1.7"}),(0,r.jsx)(t.td,{children:"react-native-lazy-index@^2.1.1"}),(0,r.jsx)(t.td,{children:"react-native-lazy-index@^2.1.1"}),(0,r.jsx)(t.td,{children:"react-native-lazy-index@^2.1.1"}),(0,r.jsx)(t.td,{children:"react-native-lazy-index@^2.1.1"}),(0,r.jsx)(t.td,{children:"react-native-lazy-index@^2.1.1"})]}),(0,r.jsxs)(t.tr,{children:[(0,r.jsx)(t.td,{children:"masked-view"}),(0,r.jsx)(t.td,{children:"@react-native-masked-view/masked-view@^0.3.0"}),(0,r.jsx)(t.td,{children:"@react-native-masked-view/masked-view@^0.3.0"}),(0,r.jsx)(t.td,{children:"@react-native-masked-view/masked-view@^0.3.0"}),(0,r.jsx)(t.td,{children:"@react-native-masked-view/masked-view@^0.2.9"}),(0,r.jsx)(t.td,{children:"@react-native-masked-view/masked-view@^0.2.9"}),(0,r.jsx)(t.td,{children:"@react-native-masked-view/masked-view@^0.2.7"}),(0,r.jsx)(t.td,{children:"@react-native-masked-view/masked-view@^0.2.7"}),(0,r.jsx)(t.td,{children:"@react-native-masked-view/masked-view@^0.2.6"}),(0,r.jsx)(t.td,{children:"@react-native-masked-view/masked-view@^0.2.6"}),(0,r.jsx)(t.td,{children:"@react-native-masked-view/masked-view@^0.2.6"}),(0,r.jsx)(t.td,{children:"@react-native-masked-view/masked-view@^0.2.6"}),(0,r.jsx)(t.td,{children:"@react-native-masked-view/masked-view@^0.2.4"}),(0,r.jsx)(t.td,{children:"@react-native-masked-view/masked-view@^0.2.4"}),(0,r.jsx)(t.td,{children:"@react-native-masked-view/masked-view@^0.2.4"}),(0,r.jsx)(t.td,{children:"@react-native-masked-view/masked-view@^0.2.4"})]}),(0,r.jsxs)(t.tr,{children:[(0,r.jsx)(t.td,{children:"metro"}),(0,r.jsx)(t.td,{children:"metro@^0.80.3"}),(0,r.jsx)(t.td,{children:"metro@^0.80.3"}),(0,r.jsx)(t.td,{children:"metro@^0.80.0"}),(0,r.jsx)(t.td,{children:"metro@^0.76.5"}),(0,r.jsx)(t.td,{children:"metro@^0.73.7"}),(0,r.jsx)(t.td,{children:"metro@^0.72.1"}),(0,r.jsx)(t.td,{children:"metro@^0.70.1"}),(0,r.jsx)(t.td,{children:"metro@^0.67.0"}),(0,r.jsx)(t.td,{children:"metro@^0.66.2"}),(0,r.jsx)(t.td,{children:"metro@^0.66.2"}),(0,r.jsx)(t.td,{children:"metro@^0.66.0"}),(0,r.jsx)(t.td,{children:"metro@^0.64.0"}),(0,r.jsx)(t.td,{children:"metro@^0.59.0"}),(0,r.jsx)(t.td,{children:"metro@^0.58.0"}),(0,r.jsx)(t.td,{children:"metro@^0.56.0"})]}),(0,r.jsxs)(t.tr,{children:[(0,r.jsx)(t.td,{children:"metro-config"}),(0,r.jsx)(t.td,{children:"metro-config@^0.80.3"}),(0,r.jsx)(t.td,{children:"metro-config@^0.80.3"}),(0,r.jsx)(t.td,{children:"metro-config@^0.80.0"}),(0,r.jsx)(t.td,{children:"metro-config@^0.76.5"}),(0,r.jsx)(t.td,{children:"metro-config@^0.73.7"}),(0,r.jsx)(t.td,{children:"metro-config@^0.72.1"}),(0,r.jsx)(t.td,{children:"metro-config@^0.70.1"}),(0,r.jsx)(t.td,{children:"metro-config@^0.67.0"}),(0,r.jsx)(t.td,{children:"metro-config@^0.66.2"}),(0,r.jsx)(t.td,{children:"metro-config@^0.66.2"}),(0,r.jsx)(t.td,{children:"metro-config@^0.66.0"}),(0,r.jsx)(t.td,{children:"metro-config@^0.64.0"}),(0,r.jsx)(t.td,{children:"metro-config@^0.59.0"}),(0,r.jsx)(t.td,{children:"metro-config@^0.58.0"}),(0,r.jsx)(t.td,{children:"metro-config@^0.56.0"})]}),(0,r.jsxs)(t.tr,{children:[(0,r.jsx)(t.td,{children:"metro-core"}),(0,r.jsx)(t.td,{children:"metro-core@^0.80.3"}),(0,r.jsx)(t.td,{children:"metro-core@^0.80.3"}),(0,r.jsx)(t.td,{children:"metro-core@^0.80.0"}),(0,r.jsx)(t.td,{children:"metro-core@^0.76.5"}),(0,r.jsx)(t.td,{children:"metro-core@^0.73.7"}),(0,r.jsx)(t.td,{children:"metro-core@^0.72.1"}),(0,r.jsx)(t.td,{children:"metro-core@^0.70.1"}),(0,r.jsx)(t.td,{children:"metro-core@^0.67.0"}),(0,r.jsx)(t.td,{children:"metro-core@^0.66.2"}),(0,r.jsx)(t.td,{children:"metro-core@^0.66.2"}),(0,r.jsx)(t.td,{children:"metro-core@^0.66.0"}),(0,r.jsx)(t.td,{children:"metro-core@^0.64.0"}),(0,r.jsx)(t.td,{children:"metro-core@^0.59.0"}),(0,r.jsx)(t.td,{children:"metro-core@^0.58.0"}),(0,r.jsx)(t.td,{children:"metro-core@^0.56.0"})]}),(0,r.jsxs)(t.tr,{children:[(0,r.jsx)(t.td,{children:"metro-react-native-babel-transformer"}),(0,r.jsx)(t.td,{children:"@react-native/metro-babel-transformer@^0.75.0"}),(0,r.jsx)(t.td,{children:"@react-native/metro-babel-transformer@^0.74.0"}),(0,r.jsx)(t.td,{children:"@react-native/metro-babel-transformer@^0.73.0"}),(0,r.jsx)(t.td,{children:"metro-react-native-babel-transformer@^0.76.5"}),(0,r.jsx)(t.td,{children:"metro-react-native-babel-transformer@^0.73.7"}),(0,r.jsx)(t.td,{children:"metro-react-native-babel-transformer@^0.72.1"}),(0,r.jsx)(t.td,{children:"metro-react-native-babel-transformer@^0.70.1"}),(0,r.jsx)(t.td,{children:"metro-react-native-babel-transformer@^0.67.0"}),(0,r.jsx)(t.td,{children:"metro-react-native-babel-transformer@^0.66.2"}),(0,r.jsx)(t.td,{children:"metro-react-native-babel-transformer@^0.66.2"}),(0,r.jsx)(t.td,{children:"metro-react-native-babel-transformer@^0.66.0"}),(0,r.jsx)(t.td,{children:"metro-react-native-babel-transformer@^0.64.0"}),(0,r.jsx)(t.td,{children:"metro-react-native-babel-transformer@^0.59.0"}),(0,r.jsx)(t.td,{children:"metro-react-native-babel-transformer@^0.58.0"}),(0,r.jsx)(t.td,{children:"metro-react-native-babel-transformer@^0.56.0"})]}),(0,r.jsxs)(t.tr,{children:[(0,r.jsx)(t.td,{children:"metro-resolver"}),(0,r.jsx)(t.td,{children:"metro-resolver@^0.80.3"}),(0,r.jsx)(t.td,{children:"metro-resolver@^0.80.3"}),(0,r.jsx)(t.td,{children:"metro-resolver@^0.80.0"}),(0,r.jsx)(t.td,{children:"metro-resolver@^0.76.5"}),(0,r.jsx)(t.td,{children:"metro-resolver@^0.73.7"}),(0,r.jsx)(t.td,{children:"metro-resolver@^0.72.1"}),(0,r.jsx)(t.td,{children:"metro-resolver@^0.70.1"}),(0,r.jsx)(t.td,{children:"metro-resolver@^0.67.0"}),(0,r.jsx)(t.td,{children:"metro-resolver@^0.66.2"}),(0,r.jsx)(t.td,{children:"metro-resolver@^0.66.2"}),(0,r.jsx)(t.td,{children:"metro-resolver@^0.66.0"}),(0,r.jsx)(t.td,{children:"metro-resolver@^0.64.0"}),(0,r.jsx)(t.td,{children:"metro-resolver@^0.59.0"}),(0,r.jsx)(t.td,{children:"metro-resolver@^0.58.0"}),(0,r.jsx)(t.td,{children:"metro-resolver@^0.56.0"})]}),(0,r.jsxs)(t.tr,{children:[(0,r.jsx)(t.td,{children:"metro-runtime"}),(0,r.jsx)(t.td,{children:"metro-runtime@^0.80.3"}),(0,r.jsx)(t.td,{children:"metro-runtime@^0.80.3"}),(0,r.jsx)(t.td,{children:"metro-runtime@^0.80.0"}),(0,r.jsx)(t.td,{children:"metro-runtime@^0.76.5"}),(0,r.jsx)(t.td,{children:"metro-runtime@^0.73.7"}),(0,r.jsx)(t.td,{children:"metro-runtime@^0.72.1"}),(0,r.jsx)(t.td,{children:"metro-runtime@^0.70.1"}),(0,r.jsx)(t.td,{children:"metro-runtime@^0.67.0"}),(0,r.jsx)(t.td,{children:"metro-runtime@^0.66.2"}),(0,r.jsx)(t.td,{children:"metro-runtime@^0.66.2"}),(0,r.jsx)(t.td,{children:"metro-runtime@^0.66.0"}),(0,r.jsx)(t.td,{children:"metro-runtime@^0.64.0"}),(0,r.jsx)(t.td,{children:"metro-runtime@^0.59.0"}),(0,r.jsx)(t.td,{children:"metro-runtime@^0.58.0"}),(0,r.jsx)(t.td,{children:"metro-runtime@^0.56.0"})]}),(0,r.jsxs)(t.tr,{children:[(0,r.jsx)(t.td,{children:"modal"}),(0,r.jsx)(t.td,{children:"react-native-modal@^13.0.0"}),(0,r.jsx)(t.td,{children:"react-native-modal@^13.0.0"}),(0,r.jsx)(t.td,{children:"react-native-modal@^13.0.0"}),(0,r.jsx)(t.td,{children:"react-native-modal@^13.0.0"}),(0,r.jsx)(t.td,{children:"react-native-modal@^13.0.0"}),(0,r.jsx)(t.td,{children:"react-native-modal@^13.0.0"}),(0,r.jsx)(t.td,{children:"react-native-modal@^13.0.0"}),(0,r.jsx)(t.td,{children:"react-native-modal@^13.0.0"}),(0,r.jsx)(t.td,{children:"react-native-modal@^13.0.0"}),(0,r.jsx)(t.td,{children:"react-native-modal@^13.0.0"}),(0,r.jsx)(t.td,{children:"react-native-modal@^13.0.0"}),(0,r.jsx)(t.td,{children:"react-native-modal@^11.10.0"}),(0,r.jsx)(t.td,{children:"react-native-modal@^11.5.6"}),(0,r.jsx)(t.td,{children:"react-native-modal@^11.5.6"}),(0,r.jsx)(t.td,{children:"react-native-modal@^11.5.6"})]}),(0,r.jsxs)(t.tr,{children:[(0,r.jsx)(t.td,{children:"navigation/native"}),(0,r.jsx)(t.td,{children:"@react-navigation/native@^6.0.8"}),(0,r.jsx)(t.td,{children:"@react-navigation/native@^6.0.8"}),(0,r.jsx)(t.td,{children:"@react-navigation/native@^6.0.8"}),(0,r.jsx)(t.td,{children:"@react-navigation/native@^6.0.8"}),(0,r.jsx)(t.td,{children:"@react-navigation/native@^6.0.8"}),(0,r.jsx)(t.td,{children:"@react-navigation/native@^6.0.8"}),(0,r.jsx)(t.td,{children:"@react-navigation/native@^6.0.8"}),(0,r.jsx)(t.td,{children:"@react-navigation/native@^6.0.8"}),(0,r.jsx)(t.td,{children:"@react-navigation/native@^6.0.8"}),(0,r.jsx)(t.td,{children:"@react-navigation/native@^6.0.8"}),(0,r.jsx)(t.td,{children:"@react-navigation/native@^5.9.8"}),(0,r.jsx)(t.td,{children:"@react-navigation/native@^5.9.8"}),(0,r.jsx)(t.td,{children:"@react-navigation/native@^5.9.4"}),(0,r.jsx)(t.td,{children:"@react-navigation/native@^5.7.6"}),(0,r.jsx)(t.td,{children:"@react-navigation/native@^5.7.6"})]}),(0,r.jsxs)(t.tr,{children:[(0,r.jsx)(t.td,{children:"navigation/stack"}),(0,r.jsx)(t.td,{children:"@react-navigation/stack@^6.3.21"}),(0,r.jsx)(t.td,{children:"@react-navigation/stack@^6.3.21"}),(0,r.jsx)(t.td,{children:"@react-navigation/stack@^6.3.21"}),(0,r.jsx)(t.td,{children:"@react-navigation/stack@^6.2.0"}),(0,r.jsx)(t.td,{children:"@react-navigation/stack@^6.2.0"}),(0,r.jsx)(t.td,{children:"@react-navigation/stack@^6.2.0"}),(0,r.jsx)(t.td,{children:"@react-navigation/stack@^6.2.0"}),(0,r.jsx)(t.td,{children:"@react-navigation/stack@^6.2.0"}),(0,r.jsx)(t.td,{children:"@react-navigation/stack@^6.2.0"}),(0,r.jsx)(t.td,{children:"@react-navigation/stack@^6.2.0"}),(0,r.jsx)(t.td,{children:"@react-navigation/stack@^5.14.9"}),(0,r.jsx)(t.td,{children:"@react-navigation/stack@^5.14.9"}),(0,r.jsx)(t.td,{children:"@react-navigation/stack@^5.14.4"}),(0,r.jsx)(t.td,{children:"@react-navigation/stack@^5.9.3"}),(0,r.jsx)(t.td,{children:"@react-navigation/stack@^5.9.3"})]}),(0,r.jsxs)(t.tr,{children:[(0,r.jsx)(t.td,{children:"netinfo"}),(0,r.jsx)(t.td,{children:"@react-native-community/netinfo@^11.3.1"}),(0,r.jsx)(t.td,{children:"@react-native-community/netinfo@^11.3.1"}),(0,r.jsx)(t.td,{children:"@react-native-community/netinfo@^11.3.0"}),(0,r.jsx)(t.td,{children:"@react-native-community/netinfo@^9.0.0"}),(0,r.jsx)(t.td,{children:"@react-native-community/netinfo@^9.0.0"}),(0,r.jsx)(t.td,{children:"@react-native-community/netinfo@^9.0.0"}),(0,r.jsx)(t.td,{children:"@react-native-community/netinfo@^8.0.0"}),(0,r.jsx)(t.td,{children:"@react-native-community/netinfo@^7.0.0"}),(0,r.jsx)(t.td,{children:"@react-native-community/netinfo@^7.0.0"}),(0,r.jsx)(t.td,{children:"@react-native-community/netinfo@^7.0.0"}),(0,r.jsx)(t.td,{children:"@react-native-community/netinfo@^7.0.0"}),(0,r.jsx)(t.td,{children:"@react-native-community/netinfo@^6.0.2"}),(0,r.jsx)(t.td,{children:"@react-native-community/netinfo@^5.9.10"}),(0,r.jsx)(t.td,{children:"@react-native-community/netinfo@^5.9.10"}),(0,r.jsx)(t.td,{children:"@react-native-community/netinfo@^5.7.1"})]}),(0,r.jsxs)(t.tr,{children:[(0,r.jsx)(t.td,{children:"popover"}),(0,r.jsx)(t.td,{children:"react-native-popover-view@^5.1.8"}),(0,r.jsx)(t.td,{children:"react-native-popover-view@^5.1.8"}),(0,r.jsx)(t.td,{children:"react-native-popover-view@^5.1.8"}),(0,r.jsx)(t.td,{children:"react-native-popover-view@^5.1.8"}),(0,r.jsx)(t.td,{children:"react-native-popover-view@^5.0.0"}),(0,r.jsx)(t.td,{children:"react-native-popover-view@^5.0.0"}),(0,r.jsx)(t.td,{children:"react-native-popover-view@^5.0.0"}),(0,r.jsx)(t.td,{children:"react-native-popover-view@^4.0.3"}),(0,r.jsx)(t.td,{children:"react-native-popover-view@^4.0.3"}),(0,r.jsx)(t.td,{children:"react-native-popover-view@^4.0.3"}),(0,r.jsx)(t.td,{children:"react-native-popover-view@^4.0.3"}),(0,r.jsx)(t.td,{children:"react-native-popover-view@^4.0.3"}),(0,r.jsx)(t.td,{children:"react-native-popover-view@^3.1.1"}),(0,r.jsx)(t.td,{children:"react-native-popover-view@^3.1.1"}),(0,r.jsx)(t.td,{children:"react-native-popover-view@^3.1.1"})]}),(0,r.jsxs)(t.tr,{children:[(0,r.jsx)(t.td,{children:"react"}),(0,r.jsx)(t.td,{children:"react@^18.2.0"}),(0,r.jsx)(t.td,{children:"react@18.2.0"}),(0,r.jsx)(t.td,{children:"react@18.2.0"}),(0,r.jsx)(t.td,{children:"react@18.2.0"}),(0,r.jsx)(t.td,{children:"react@18.2.0"}),(0,r.jsx)(t.td,{children:"react@18.1.0"}),(0,r.jsx)(t.td,{children:"react@18.0.0"}),(0,r.jsx)(t.td,{children:"react@17.0.2"}),(0,r.jsx)(t.td,{children:"react@17.0.2"}),(0,r.jsx)(t.td,{children:"react@17.0.2"}),(0,r.jsx)(t.td,{children:"react@17.0.2"}),(0,r.jsx)(t.td,{children:"react@17.0.1"}),(0,r.jsx)(t.td,{children:"react@16.13.1"}),(0,r.jsx)(t.td,{children:"react@16.11.0"}),(0,r.jsx)(t.td,{children:"react@16.9.0"})]}),(0,r.jsxs)(t.tr,{children:[(0,r.jsx)(t.td,{children:"react-dom"}),(0,r.jsx)(t.td,{children:"react-dom@^18.2.0"}),(0,r.jsx)(t.td,{children:"react-dom@^18.2.0"}),(0,r.jsx)(t.td,{children:"react-dom@^18.2.0"}),(0,r.jsx)(t.td,{children:"react-dom@^18.2.0"}),(0,r.jsx)(t.td,{children:"react-dom@^18.2.0"}),(0,r.jsx)(t.td,{children:"react-dom@^18.1.0"}),(0,r.jsx)(t.td,{children:"react-dom@^18.0.0"}),(0,r.jsx)(t.td,{children:"react-dom@17.0.2"}),(0,r.jsx)(t.td,{children:"react-dom@17.0.2"}),(0,r.jsx)(t.td,{children:"react-dom@17.0.2"}),(0,r.jsx)(t.td,{children:"react-dom@17.0.2"}),(0,r.jsx)(t.td,{children:"react-dom@17.0.1"}),(0,r.jsx)(t.td,{children:"react-dom@16.13.1"}),(0,r.jsx)(t.td,{children:"react-dom@16.11.0"}),(0,r.jsx)(t.td,{children:"react-dom@16.9.0"})]}),(0,r.jsxs)(t.tr,{children:[(0,r.jsx)(t.td,{children:"react-test-renderer"}),(0,r.jsx)(t.td,{children:"react-test-renderer@^18.2.0"}),(0,r.jsx)(t.td,{children:"react-test-renderer@18.2.0"}),(0,r.jsx)(t.td,{children:"react-test-renderer@18.2.0"}),(0,r.jsx)(t.td,{children:"react-test-renderer@18.2.0"}),(0,r.jsx)(t.td,{children:"react-test-renderer@18.2.0"}),(0,r.jsx)(t.td,{children:"react-test-renderer@18.1.0"}),(0,r.jsx)(t.td,{children:"react-test-renderer@18.0.0"}),(0,r.jsx)(t.td,{children:"react-test-renderer@17.0.2"}),(0,r.jsx)(t.td,{children:"react-test-renderer@17.0.2"}),(0,r.jsx)(t.td,{children:"react-test-renderer@17.0.2"}),(0,r.jsx)(t.td,{children:"react-test-renderer@17.0.2"}),(0,r.jsx)(t.td,{children:"react-test-renderer@17.0.1"}),(0,r.jsx)(t.td,{children:"react-test-renderer@16.13.1"}),(0,r.jsx)(t.td,{children:"react-test-renderer@16.11.0"}),(0,r.jsx)(t.td,{children:"react-test-renderer@16.9.0"})]}),(0,r.jsxs)(t.tr,{children:[(0,r.jsx)(t.td,{children:"safe-area"}),(0,r.jsx)(t.td,{children:"react-native-safe-area-context@^4.10.5"}),(0,r.jsx)(t.td,{children:"react-native-safe-area-context@^4.10.5"}),(0,r.jsx)(t.td,{children:"react-native-safe-area-context@^4.8.2"}),(0,r.jsx)(t.td,{children:"react-native-safe-area-context@>=4.5.3 <4.8"}),(0,r.jsx)(t.td,{children:"react-native-safe-area-context@^4.5.1"}),(0,r.jsx)(t.td,{children:"react-native-safe-area-context@^4.4.1"}),(0,r.jsx)(t.td,{children:"react-native-safe-area-context@^4.3.1"}),(0,r.jsx)(t.td,{children:"react-native-safe-area-context@^3.2.0"}),(0,r.jsx)(t.td,{children:"react-native-safe-area-context@^3.2.0"}),(0,r.jsx)(t.td,{children:"react-native-safe-area-context@^3.2.0"}),(0,r.jsx)(t.td,{children:"react-native-safe-area-context@^3.2.0"}),(0,r.jsx)(t.td,{children:"react-native-safe-area-context@^3.2.0"}),(0,r.jsx)(t.td,{children:"react-native-safe-area-context@^3.2.0"}),(0,r.jsx)(t.td,{children:"react-native-safe-area-context@^3.1.9"}),(0,r.jsx)(t.td,{children:"react-native-safe-area-context@^3.1.9"})]}),(0,r.jsxs)(t.tr,{children:[(0,r.jsx)(t.td,{children:"screens"}),(0,r.jsx)(t.td,{children:"react-native-screens@^3.34.0"}),(0,r.jsx)(t.td,{children:"react-native-screens@^3.31.0"}),(0,r.jsx)(t.td,{children:"react-native-screens@^3.28.0"}),(0,r.jsx)(t.td,{children:"react-native-screens@>=3.21.0 <3.28.0"}),(0,r.jsx)(t.td,{children:"react-native-screens@^3.19.0"}),(0,r.jsx)(t.td,{children:"react-native-screens@^3.18.2"}),(0,r.jsx)(t.td,{children:"react-native-screens@^3.14.1"}),(0,r.jsx)(t.td,{children:"react-native-screens@^3.13.1"}),(0,r.jsx)(t.td,{children:"react-native-screens@^3.9.0"}),(0,r.jsx)(t.td,{children:"react-native-screens@^3.9.0"}),(0,r.jsx)(t.td,{children:"react-native-screens@^3.7.0"}),(0,r.jsx)(t.td,{children:"react-native-screens@^3.1.1"}),(0,r.jsx)(t.td,{children:"react-native-screens@^2.18.1"}),(0,r.jsx)(t.td,{children:"react-native-screens@^2.10.1"}),(0,r.jsx)(t.td,{children:"react-native-screens@^2.10.1"})]}),(0,r.jsxs)(t.tr,{children:[(0,r.jsx)(t.td,{children:"shimmer"}),(0,r.jsx)(t.td,{children:"react-native-shimmer@^0.6.0"}),(0,r.jsx)(t.td,{children:"react-native-shimmer@^0.6.0"}),(0,r.jsx)(t.td,{children:"react-native-shimmer@^0.6.0"}),(0,r.jsx)(t.td,{children:"react-native-shimmer@^0.6.0"}),(0,r.jsx)(t.td,{children:"react-native-shimmer@^0.6.0"}),(0,r.jsx)(t.td,{children:"react-native-shimmer@^0.5.0"}),(0,r.jsx)(t.td,{children:"react-native-shimmer@^0.5.0"}),(0,r.jsx)(t.td,{children:"react-native-shimmer@^0.5.0"}),(0,r.jsx)(t.td,{children:"react-native-shimmer@^0.5.0"}),(0,r.jsx)(t.td,{children:"react-native-shimmer@^0.5.0"}),(0,r.jsx)(t.td,{children:"react-native-shimmer@^0.5.0"}),(0,r.jsx)(t.td,{children:"react-native-shimmer@^0.5.0"}),(0,r.jsx)(t.td,{children:"react-native-shimmer@^0.5.0"}),(0,r.jsx)(t.td,{children:"react-native-shimmer@^0.5.0"}),(0,r.jsx)(t.td,{children:"react-native-shimmer@^0.5.0"})]}),(0,r.jsxs)(t.tr,{children:[(0,r.jsx)(t.td,{children:"sqlite"}),(0,r.jsx)(t.td,{children:"react-native-sqlite-storage@^6.0.1"}),(0,r.jsx)(t.td,{children:"react-native-sqlite-storage@^6.0.1"}),(0,r.jsx)(t.td,{children:"react-native-sqlite-storage@^6.0.1"}),(0,r.jsx)(t.td,{children:"react-native-sqlite-storage@^6.0.1"}),(0,r.jsx)(t.td,{children:"react-native-sqlite-storage@^6.0.1"}),(0,r.jsx)(t.td,{children:"react-native-sqlite-storage@^6.0.1"}),(0,r.jsx)(t.td,{children:"react-native-sqlite-storage@^6.0.1"}),(0,r.jsx)(t.td,{children:"react-native-sqlite-storage@^5.0.0"}),(0,r.jsx)(t.td,{children:"react-native-sqlite-storage@^5.0.0"}),(0,r.jsx)(t.td,{children:"react-native-sqlite-storage@^5.0.0"}),(0,r.jsx)(t.td,{children:"react-native-sqlite-storage@^5.0.0"}),(0,r.jsx)(t.td,{children:"react-native-sqlite-storage@^5.0.0"}),(0,r.jsx)(t.td,{children:"react-native-sqlite-storage@^3.3.11"}),(0,r.jsx)(t.td,{children:"react-native-sqlite-storage@^3.3.11"}),(0,r.jsx)(t.td,{children:"react-native-sqlite-storage@^3.3.11"})]}),(0,r.jsxs)(t.tr,{children:[(0,r.jsx)(t.td,{children:"storage"}),(0,r.jsx)(t.td,{children:"@react-native-async-storage/async-storage@^1.22.3"}),(0,r.jsx)(t.td,{children:"@react-native-async-storage/async-storage@^1.22.3"}),(0,r.jsx)(t.td,{children:"@react-native-async-storage/async-storage@^1.22.0"}),(0,r.jsx)(t.td,{children:"@react-native-async-storage/async-storage@^1.18.2"}),(0,r.jsx)(t.td,{children:"@react-native-async-storage/async-storage@^1.17.11"}),(0,r.jsx)(t.td,{children:"@react-native-async-storage/async-storage@^1.17.10"}),(0,r.jsx)(t.td,{children:"@react-native-async-storage/async-storage@^1.17.7"}),(0,r.jsx)(t.td,{children:"@react-native-async-storage/async-storage@^1.17.3"}),(0,r.jsx)(t.td,{children:"@react-native-async-storage/async-storage@^1.15.16"}),(0,r.jsx)(t.td,{children:"@react-native-async-storage/async-storage@^1.15.9"}),(0,r.jsx)(t.td,{children:"@react-native-async-storage/async-storage@^1.15.8"}),(0,r.jsx)(t.td,{children:"@react-native-async-storage/async-storage@^1.15.8"}),(0,r.jsx)(t.td,{children:"@react-native-community/async-storage@^1.12.1"}),(0,r.jsx)(t.td,{children:"@react-native-community/async-storage@^1.12.1"}),(0,r.jsx)(t.td,{children:"@react-native-community/async-storage@^1.12.1"})]}),(0,r.jsxs)(t.tr,{children:[(0,r.jsx)(t.td,{children:"svg"}),(0,r.jsx)(t.td,{children:"react-native-svg@^15.4.0"}),(0,r.jsx)(t.td,{children:"react-native-svg@^15.4.0"}),(0,r.jsx)(t.td,{children:"react-native-svg@^15.0.0"}),(0,r.jsx)(t.td,{children:"react-native-svg@^13.14.0"}),(0,r.jsx)(t.td,{children:"react-native-svg@^13.14.0"}),(0,r.jsx)(t.td,{children:"react-native-svg@^12.3.0"}),(0,r.jsx)(t.td,{children:"react-native-svg@^12.3.0"}),(0,r.jsx)(t.td,{children:"react-native-svg@^12.3.0"}),(0,r.jsx)(t.td,{children:"react-native-svg@^12.1.1"}),(0,r.jsx)(t.td,{children:"react-native-svg@^12.1.1"}),(0,r.jsx)(t.td,{children:"react-native-svg@^12.1.1"}),(0,r.jsx)(t.td,{children:"react-native-svg@^12.1.1"}),(0,r.jsx)(t.td,{children:"react-native-svg@^12.1.1"}),(0,r.jsx)(t.td,{children:"react-native-svg@^12.1.1"}),(0,r.jsx)(t.td,{children:"react-native-svg@^12.1.1"})]}),(0,r.jsxs)(t.tr,{children:[(0,r.jsx)(t.td,{children:"test-app"}),(0,r.jsx)(t.td,{children:"react-native-test-app@^3.9.2"}),(0,r.jsx)(t.td,{children:"react-native-test-app@^3.9.2"}),(0,r.jsx)(t.td,{children:"react-native-test-app@^2.5.34"}),(0,r.jsx)(t.td,{children:"react-native-test-app@^2.5.5"}),(0,r.jsx)(t.td,{children:"react-native-test-app@^2.2.1"}),(0,r.jsx)(t.td,{children:"react-native-test-app@^1.6.9"}),(0,r.jsx)(t.td,{children:"react-native-test-app@^1.3.10"}),(0,r.jsx)(t.td,{children:"react-native-test-app@^1.3.5"}),(0,r.jsx)(t.td,{children:"react-native-test-app@^1.1.7"}),(0,r.jsx)(t.td,{children:"react-native-test-app@^1.0.6"}),(0,r.jsx)(t.td,{children:"react-native-test-app@^0.11.4"}),(0,r.jsx)(t.td,{children:"react-native-test-app@^0.11.4"}),(0,r.jsx)(t.td,{children:"react-native-test-app@^0.11.4"}),(0,r.jsx)(t.td,{children:"react-native-test-app@^0.11.4"}),(0,r.jsx)(t.td,{children:"react-native-test-app@^0.11.4"})]}),(0,r.jsxs)(t.tr,{children:[(0,r.jsx)(t.td,{children:"webview"}),(0,r.jsx)(t.td,{children:"react-native-webview@^13.10.5"}),(0,r.jsx)(t.td,{children:"react-native-webview@^13.10.5"}),(0,r.jsx)(t.td,{children:"react-native-webview@^13.10.0"}),(0,r.jsx)(t.td,{children:"react-native-webview@^13.2.2"}),(0,r.jsx)(t.td,{children:"react-native-webview@^12.0.2"}),(0,r.jsx)(t.td,{children:"react-native-webview@^11.23.0"}),(0,r.jsx)(t.td,{children:"react-native-webview@^11.23.0"}),(0,r.jsx)(t.td,{children:"react-native-webview@^11.22.6"}),(0,r.jsx)(t.td,{children:"react-native-webview@^11.13.0"}),(0,r.jsx)(t.td,{children:"react-native-webview@^11.13.0"}),(0,r.jsx)(t.td,{children:"react-native-webview@^11.13.0"}),(0,r.jsx)(t.td,{children:"react-native-webview@^11.4.2"}),(0,r.jsx)(t.td,{children:"react-native-webview@^11.4.2"}),(0,r.jsx)(t.td,{children:"react-native-webview@^11.0.3"}),(0,r.jsx)(t.td,{children:"react-native-webview@^11.0.3"})]})]})]})]}),"\n",(0,r.jsxs)(t.p,{children:["To add new capabilities, first add it to\n",(0,r.jsx)(t.a,{href:"https://github.com/microsoft/rnx-kit/blob/e1d4b2484303cac04e0ec6a4e79d854c694b96b4/packages/config/src/kitConfig.ts#L6",children:(0,r.jsx)(t.code,{children:"packages/config/src/kitConfig.ts"})}),",\nthen update the\n",(0,r.jsx)(t.a,{href:"https://github.com/microsoft/rnx-kit/blob/e1d4b2484303cac04e0ec6a4e79d854c694b96b4/packages/align-deps/src/presets/microsoft/react-native.ts",children:"preset"}),".\nFor an example, have a look at how the\n",(0,r.jsxs)(t.a,{href:"https://github.com/microsoft/rnx-kit/commit/c79828791a6ac5cf19b4abfff6347542af49eaec",children:[(0,r.jsx)(t.code,{children:"hermes"})," capability was added"]}),"."]}),"\n",(0,r.jsxs)(t.p,{children:["If you're looking to update capabilities to a more recent version, run\n",(0,r.jsx)(t.code,{children:"yarn update-profile"})," to help determine whether we need to bump any packages."]}),"\n",(0,r.jsx)(t.h2,{id:"presets",children:"Presets"}),"\n",(0,r.jsxs)(t.p,{children:["A profile is a list of capabilities that map to specific versions of packages. A\npreset is a collection of such profiles. It can be a JSON file, or a JS file\nthat default exports it. Presets are consumed via the ",(0,r.jsx)(t.code,{children:"presets"})," key in your\n",(0,r.jsx)(t.a,{href:"#configure",children:"configuration"}),", or the ",(0,r.jsx)(t.a,{href:"#--presets",children:(0,r.jsx)(t.code,{children:"--presets"})})," flag."]}),"\n",(0,r.jsx)(t.h3,{id:"extending-built-in-presets",children:"Extending Built-in Presets"}),"\n",(0,r.jsxs)(t.p,{children:["The built-in preset, ",(0,r.jsx)(t.code,{children:"microsoft/react-native"}),", contains a profile for every\nsupported version of react-native. The profiles are named after every minor\nrelease, e.g. ",(0,r.jsx)(t.code,{children:"0.69"})," or ",(0,r.jsx)(t.code,{children:"0.70"}),"."]}),"\n",(0,r.jsxs)(t.p,{children:["To add a new capability, e.g. ",(0,r.jsx)(t.code,{children:"my-capability"}),", to the built-in profiles ",(0,r.jsx)(t.code,{children:"0.69"}),"\nand ",(0,r.jsx)(t.code,{children:"0.70"}),", create a custom preset like below:"]}),"\n",(0,r.jsx)(t.pre,{children:(0,r.jsx)(t.code,{className:"language-js",children:'// my-preset/index.js\nmodule.exports = {\n 0.69: {\n "my-capability": {\n name: "my-module",\n version: "1.0.0",\n },\n },\n "0.70": {\n "my-capability": {\n name: "my-module",\n version: "1.1.0",\n },\n },\n};\n'})}),"\n",(0,r.jsx)(t.p,{children:"Then add it to your configuration:"}),"\n",(0,r.jsx)(t.pre,{children:(0,r.jsx)(t.code,{className:"language-diff",children:' {\n "name": "my-package",\n ...\n "rnx-kit": {\n "alignDeps": {\n "presets": [\n "microsoft/react-native",\n+ "my-preset"\n ],\n "requirements": ["react-native@0.70"],\n "capabilities": [\n ...\n ]\n }\n }\n }\n'})}),"\n",(0,r.jsxs)(t.p,{children:["Or if you need to align unconfigured packages, specify\n",(0,r.jsx)(t.code,{children:"--presets microsoft/react-native,my-preset"}),"."]}),"\n",(0,r.jsxs)(t.p,{children:["Make sure that ",(0,r.jsx)(t.code,{children:"microsoft/react-native"})," is declared before your custom preset.\nThis will tell ",(0,r.jsx)(t.code,{children:"align-deps"})," to append capabilities when the profile names match."]}),"\n",(0,r.jsxs)(t.p,{children:["You can also use this feature to ",(0,r.jsx)(t.em,{children:"override"})," capabilities. For instance:"]}),"\n",(0,r.jsx)(t.pre,{children:(0,r.jsx)(t.code,{className:"language-js",children:'// my-preset/index.js\nmodule.exports = {\n "0.70": {\n core: {\n name: "react-native",\n version: "^0.70.3-myCustomFork.1",\n },\n },\n};\n'})}),"\n",(0,r.jsxs)(t.p,{children:["With this preset, ",(0,r.jsx)(t.code,{children:"core"})," will be resolved to your custom fork of ",(0,r.jsx)(t.code,{children:"react-native"}),"\ninstead of the official version."]}),"\n",(0,r.jsx)(t.p,{children:"Note that profile names are only needed when you want to extend or override\npresets. Otherwise, you can name your profiles whatever you want."}),"\n",(0,r.jsxs)(t.p,{children:["For a complete example of a preset, have a look at\n",(0,r.jsx)(t.a,{href:"https://github.com/microsoft/rnx-kit/blob/e1d4b2484303cac04e0ec6a4e79d854c694b96b4/packages/align-deps/src/presets/microsoft/react-native.ts",children:(0,r.jsx)(t.code,{children:"microsoft/react-native"})}),"."]}),"\n",(0,r.jsx)(t.h3,{id:"custom-capabilities",children:"Custom Capabilities"}),"\n",(0,r.jsxs)(t.p,{children:["Normally, a capability resolves to a version of a package. For instance, ",(0,r.jsx)(t.code,{children:"core"}),"\nis a capability that resolves to ",(0,r.jsx)(t.code,{children:"react-native"}),":"]}),"\n",(0,r.jsx)(t.pre,{children:(0,r.jsx)(t.code,{className:"language-js",children:'{\n "core": {\n name: "react-native",\n version: "0.0.0",\n },\n}\n'})}),"\n",(0,r.jsxs)(t.p,{children:["A capability can depend on other capabilities. For example, we can ensure that\n",(0,r.jsx)(t.code,{children:"react-native"})," gets installed along with ",(0,r.jsx)(t.code,{children:"react-native-windows"})," by declaring\nthat ",(0,r.jsx)(t.code,{children:"core-windows"})," depends on ",(0,r.jsx)(t.code,{children:"core"}),":"]}),"\n",(0,r.jsx)(t.pre,{children:(0,r.jsx)(t.code,{className:"language-js",children:'{\n "core-windows": {\n name: "react-native-windows",\n version: "0.0.0",\n capabilities: ["core"],\n },\n}\n'})}),"\n",(0,r.jsx)(t.p,{children:"You can also create capabilities that don't resolve to a package, but to a list\nof capabilities instead:"}),"\n",(0,r.jsx)(t.pre,{children:(0,r.jsx)(t.code,{className:"language-js",children:'{\n "core/all": {\n name: "#meta",\n capabilities: [\n "core-android",\n "core-ios",\n "core-macos",\n "core-windows",\n ],\n },\n}\n'})}),"\n",(0,r.jsxs)(t.p,{children:["We call these ",(0,r.jsx)(t.strong,{children:"meta"})," capabilities. To make it easier to identify them (both\nfor humans and machines), the ",(0,r.jsx)(t.code,{children:"name"})," field must be set to ",(0,r.jsx)(t.code,{children:"#meta"}),", and the\n",(0,r.jsx)(t.code,{children:"capabilities"})," field must be a non-empty array of other capabilities. The\n",(0,r.jsx)(t.code,{children:"version"})," field is no longer used and can be dropped. To use a meta capability\nin your rnx-kit configuration, there's nothing specific to be done \u2014 for\ninstance:"]}),"\n",(0,r.jsx)(t.pre,{children:(0,r.jsx)(t.code,{className:"language-diff",children:' {\n "name": "my-package",\n ...\n "rnx-kit": {\n "alignDeps": {\n "presets": ["microsoft/react-native", "my-preset"],\n "requirements": ["react-native@0.70"],\n "capabilities": [\n+ "core/all"\n ]\n }\n }\n }\n'})}),"\n",(0,r.jsx)(t.h2,{id:"requirements",children:"Requirements"}),"\n",(0,r.jsx)(t.p,{children:"Requirements are what determines which profiles should be used. This is how it\nroughly works:"}),"\n",(0,r.jsxs)(t.ul,{children:["\n",(0,r.jsxs)(t.li,{children:["The list of presets are loaded and ",(0,r.jsx)(t.em,{children:"merged"})," into a giant preset"]}),"\n",(0,r.jsxs)(t.li,{children:["For each profile in the ",(0,r.jsx)(t.em,{children:"merged"})," preset, check whether they fulfill the\nrequirements","\n",(0,r.jsxs)(t.ul,{children:["\n",(0,r.jsx)(t.li,{children:"Profiles that do not fulfill the requirements are discarded"}),"\n"]}),"\n"]}),"\n",(0,r.jsx)(t.li,{children:"Use the remaining profiles to align the target package"}),"\n"]}),"\n",(0,r.jsx)(t.p,{children:"For example, given the following configuration:"}),"\n",(0,r.jsx)(t.pre,{children:(0,r.jsx)(t.code,{className:"language-js",children:'{\n "name": "useful-library",\n "version": "1.0",\n ...\n "rnx-kit": {\n "kitType": "library",\n "alignDeps": {\n "requirements": {\n "development": ["react-native@0.70"],\n "production": ["react-native@0.69 || 0.70"]\n }\n "capabilities": [\n "core-android", // `core-android` resolves to `react-native`\n "core-ios" // `core-ios` also resolves to `react-native`\n ]\n }\n }\n}\n'})}),"\n",(0,r.jsxs)(t.p,{children:[(0,r.jsx)(t.code,{children:"microsoft/react-native/0.70"})," will be used for development since it is the only\nprofile that fulfills the requirement, ",(0,r.jsx)(t.code,{children:"react-native@0.70"}),". ",(0,r.jsx)(t.code,{children:"align-deps"})," ensures\nthat ",(0,r.jsx)(t.code,{children:"react-native"})," is correctly declared under ",(0,r.jsx)(t.code,{children:"devDependencies"}),"."]}),"\n",(0,r.jsx)(t.pre,{children:(0,r.jsx)(t.code,{className:"language-diff",children:' {\n "name": "useful-library",\n "version": "1.0",\n+ "devDependencies" {\n+ "react-native": "^0.70.0"\n+ }\n ...\n }\n'})}),"\n",(0,r.jsxs)(t.p,{children:["For production, there are two profiles that fulfill the requirements,\n",(0,r.jsx)(t.code,{children:"microsoft/react-native/0.69"})," and ",(0,r.jsx)(t.code,{children:"microsoft/react-native/0.70"}),". Since this\npackage is a library, ",(0,r.jsx)(t.code,{children:"align-deps"})," ensures that ",(0,r.jsx)(t.code,{children:"react-native"})," is correctly\ndeclared under ",(0,r.jsx)(t.code,{children:"peerDependencies"}),":"]}),"\n",(0,r.jsx)(t.pre,{children:(0,r.jsx)(t.code,{className:"language-diff",children:' {\n "name": "useful-library",\n "version": "1.0",\n+ "peerDependencies": {\n+ "react-native": "^0.69.0 || ^0.70.0"\n+ },\n "devDependencies" {\n "react-native": "^0.70.0"\n }\n ...\n }\n'})}),"\n",(0,r.jsxs)(t.p,{children:["If the package was an app, ",(0,r.jsx)(t.code,{children:"align-deps"})," would've ensured that ",(0,r.jsx)(t.code,{children:"react-native"})," is\nonly declared under ",(0,r.jsx)(t.code,{children:"dependencies"}),"."]}),"\n",(0,r.jsxs)(t.p,{children:["You can read more about the usage of the different dependencies sections in\n",(0,r.jsx)(t.a,{href:"https://microsoft.github.io/rnx-kit/docs/architecture/dependency-management",children:"Dependency Management"}),"."]}),"\n",(0,r.jsx)(t.p,{children:"One important thing to note here is that if there are multiple capabilities\nresolving to the same package, only the first occurrence of the package is\nchecked. To illustrate this scenario, consider the following:"}),"\n",(0,r.jsx)(t.pre,{children:(0,r.jsx)(t.code,{className:"language-ts",children:'const builtInPreset = {\n "0.69": {\n core: {\n name: "react-native",\n version: "^0.69.0",\n },\n },\n "0.70": {\n core: {\n name: "react-native",\n version: "^0.70.0",\n },\n },\n};\n\nconst customPreset = {\n "0.69": {\n "custom-capability": {\n name: "react-native",\n version: "^0.70.0-fork.1",\n },\n },\n};\n\nconst megaPreset = mergePresets([builtInPreset, customPreset]);\n/*\n{\n "0.69": {\n core: {\n name: "react-native",\n version: "^0.69.0",\n },\n "custom-capability": {\n name: "react-native",\n version: "^0.70.0-fork.1",\n },\n },\n "0.70": {\n core: {\n name: "react-native",\n version: "^0.70.0",\n },\n },\n}\n */\n\nconst filteredPreset = filterPreset(megaPreset, ["react-native@0.70"]);\n/* ??? */\n'})}),"\n",(0,r.jsxs)(t.p,{children:["If ",(0,r.jsx)(t.code,{children:"filterPreset"})," checked all capabilities in the profiles, it would return both\n",(0,r.jsx)(t.code,{children:"0.69"})," and ",(0,r.jsx)(t.code,{children:"0.70"})," here because ",(0,r.jsx)(t.code,{children:"custom-capability"})," would satisfy\n",(0,r.jsx)(t.code,{children:"react-native@0.70"}),". This is unexpected behaviour. Instead, ",(0,r.jsx)(t.code,{children:"align-deps"})," looks\nfor the first package matching the name and ",(0,r.jsx)(t.em,{children:"then"})," checks whether it fulfills\nthe requirement. With this algorithm, only ",(0,r.jsx)(t.code,{children:"0.70"})," is returned."]}),"\n",(0,r.jsxs)(t.h2,{id:"migrating-from-dep-check",children:["Migrating From ",(0,r.jsx)(t.code,{children:"dep-check"})]}),"\n",(0,r.jsxs)(t.p,{children:["Changes from ",(0,r.jsx)(t.code,{children:"dep-check"})," to ",(0,r.jsx)(t.code,{children:"align-deps"})," mostly surrounds the configuration\nschema, and renaming of a couple of flags:"]}),"\n",(0,r.jsxs)(t.ul,{children:["\n",(0,r.jsxs)(t.li,{children:["\n",(0,r.jsxs)(t.p,{children:["In most cases, your old configuration will still work as before. ",(0,r.jsx)(t.code,{children:"align-deps"}),"\nwill tell you how to convert the old config, but you can also specify\n",(0,r.jsx)(t.code,{children:"--migrate-config"})," to let ",(0,r.jsx)(t.code,{children:"align-deps"})," do it for you."]}),"\n"]}),"\n",(0,r.jsxs)(t.li,{children:["\n",(0,r.jsx)(t.p,{children:"The following flags were renamed:"}),"\n",(0,r.jsxs)(t.table,{children:[(0,r.jsx)(t.thead,{children:(0,r.jsxs)(t.tr,{children:[(0,r.jsx)(t.th,{children:"Old"}),(0,r.jsx)(t.th,{children:"New"})]})}),(0,r.jsxs)(t.tbody,{children:[(0,r.jsxs)(t.tr,{children:[(0,r.jsx)(t.td,{children:(0,r.jsx)(t.code,{children:"--custom-profiles"})}),(0,r.jsx)(t.td,{children:(0,r.jsx)(t.a,{href:"#--presets",children:(0,r.jsx)(t.code,{children:"--presets"})})})]}),(0,r.jsxs)(t.tr,{children:[(0,r.jsx)(t.td,{children:(0,r.jsx)(t.code,{children:"--exclude-packages"})}),(0,r.jsx)(t.td,{children:(0,r.jsx)(t.em,{children:"no change"})})]}),(0,r.jsxs)(t.tr,{children:[(0,r.jsx)(t.td,{children:(0,r.jsx)(t.code,{children:"--init"})}),(0,r.jsx)(t.td,{children:(0,r.jsx)(t.em,{children:"no change"})})]}),(0,r.jsxs)(t.tr,{children:[(0,r.jsx)(t.td,{children:(0,r.jsx)(t.code,{children:"--vigilant"})}),(0,r.jsx)(t.td,{children:(0,r.jsx)(t.a,{href:"#--requirements",children:(0,r.jsx)(t.code,{children:"--requirements"})})})]}),(0,r.jsxs)(t.tr,{children:[(0,r.jsx)(t.td,{children:(0,r.jsx)(t.code,{children:"--set-version"})}),(0,r.jsx)(t.td,{children:(0,r.jsx)(t.em,{children:"no change"})})]}),(0,r.jsxs)(t.tr,{children:[(0,r.jsx)(t.td,{children:(0,r.jsx)(t.code,{children:"--write"})}),(0,r.jsx)(t.td,{children:(0,r.jsx)(t.em,{children:"no change"})})]})]})]}),"\n"]}),"\n",(0,r.jsxs)(t.li,{children:["\n",(0,r.jsxs)(t.p,{children:["Because the new config schema no longer relies on profile names to determine a\nprofile, we had to ",(0,r.jsx)(t.em,{children:"drop support"})," for declaring capabilities at the root level\nbecause we cannot reliably detect whether an entry is a package or a profile.\nYou will have to add those capabilities to all the profiles you want them\nadded to."]}),"\n"]}),"\n"]}),"\n",(0,r.jsx)(t.h2,{id:"terminology",children:"Terminology"}),"\n",(0,r.jsxs)(t.table,{children:[(0,r.jsx)(t.thead,{children:(0,r.jsxs)(t.tr,{children:[(0,r.jsx)(t.th,{style:{textAlign:"left"},children:"Terminology"}),(0,r.jsxs)(t.th,{style:{textAlign:"left"},children:["Definition (as used in ",(0,r.jsx)(t.code,{children:"align-deps"}),"'s context)"]})]})}),(0,r.jsxs)(t.tbody,{children:[(0,r.jsxs)(t.tr,{children:[(0,r.jsx)(t.td,{style:{textAlign:"left"},children:"capability"}),(0,r.jsx)(t.td,{style:{textAlign:"left"},children:"A capability is in essence a feature that the kit uses. A capability is usually mapped to an npm package. Which versions of the package is determined by a profile (see below)."})]}),(0,r.jsxs)(t.tr,{children:[(0,r.jsx)(t.td,{style:{textAlign:"left"},children:"package manifest"}),(0,r.jsxs)(t.td,{style:{textAlign:"left"},children:["This normally refers to a package's ",(0,r.jsx)(t.code,{children:"package.json"}),"."]})]}),(0,r.jsxs)(t.tr,{children:[(0,r.jsx)(t.td,{style:{textAlign:"left"},children:"preset"}),(0,r.jsx)(t.td,{style:{textAlign:"left"},children:"A collection of profiles."})]}),(0,r.jsxs)(t.tr,{children:[(0,r.jsx)(t.td,{style:{textAlign:"left"},children:"profile"}),(0,r.jsx)(t.td,{style:{textAlign:"left"},children:"A profile is a mapping of capabilities to npm packages at a specific version or version range."})]})]})]}),"\n",(0,r.jsx)(t.h2,{id:"contribution",children:"Contribution"}),"\n",(0,r.jsx)(t.h3,{id:"updating-an-existing-profile",children:"Updating an Existing Profile"}),"\n",(0,r.jsx)(t.p,{children:"Updating an existing profile is unfortunately a manual process."}),"\n",(0,r.jsx)(t.p,{children:"We have a script that fetches the latest version of all capabilities and\npresents them in a table together with the current versions."}),"\n",(0,r.jsx)(t.pre,{children:(0,r.jsx)(t.code,{className:"language-sh",children:"yarn update-profile\n"})}),"\n",(0,r.jsx)(t.p,{children:"Outputs something like:"}),"\n",(0,r.jsx)(t.pre,{children:(0,r.jsx)(t.code,{children:"| Capability | Name | Version | Latest | Homepage |\n| ------------ | ------------- | --------- | ------ | ----------------------------------------------- |\n| core | react-native | ^0.68.0-0 | 0.68.2 | https://github.com/facebook/react-native#readme |\n| core-android | react-native | ^0.68.0-0 | 0.68.2 | https://github.com/facebook/react-native#readme |\n| core-ios | react-native | ^0.68.0-0 | 0.68.2 | https://github.com/facebook/react-native#readme |\n| hermes | hermes-engine | ~0.11.0 | = | |\n| react | react | 17.0.2 | 18.1.0 | https://reactjs.org/ |\n| ... |\n"})}),"\n",(0,r.jsx)(t.p,{children:"With this information, we can see which packages have been updated since the\nlast profile, and scan their change logs for interesting changes that may affect\ncompatibility."}),"\n",(0,r.jsxs)(t.h3,{id:"adding-a-profile-for-a-new-version-of-react-native",children:["Adding a Profile for a New Version of ",(0,r.jsx)(t.code,{children:"react-native"})]}),"\n",(0,r.jsxs)(t.p,{children:["The ",(0,r.jsx)(t.code,{children:"update-profile"})," script can also be used to add a profile. For instance, to\nadd a profile for ",(0,r.jsx)(t.code,{children:"react-native"})," 0.69, run:"]}),"\n",(0,r.jsx)(t.pre,{children:(0,r.jsx)(t.code,{className:"language-sh",children:"yarn update-profile 0.69\n"})}),"\n",(0,r.jsxs)(t.p,{children:["The script will try to figure out what version of ",(0,r.jsx)(t.code,{children:"react"}),", ",(0,r.jsx)(t.code,{children:"metro"}),", etc. should\nbe set to, and write to ",(0,r.jsx)(t.code,{children:"src/presets/microsoft/react-native/profile-0.69.ts"}),".\nPlease verify that this profile looks correct before checking it in."]})]})}function h(e={}){const{wrapper:t}={...(0,i.R)(),...e.components};return t?(0,r.jsx)(t,{...e,children:(0,r.jsx)(o,{...e})}):o(e)}},8453:(e,t,n)=>{n.d(t,{R:()=>d,x:()=>a});var r=n(6540);const i={},c=r.createContext(i);function d(e){const t=r.useContext(c);return r.useMemo((function(){return"function"==typeof e?e(t):{...t,...e}}),[t,e])}function a(e){let t;return t=e.disableParentContext?"function"==typeof e.components?e.components(i):e.components||i:d(e.components),r.createElement(c.Provider,{value:t},e.children)}}}]); \ No newline at end of file diff --git a/assets/js/runtime~main.7d5d8c82.js b/assets/js/runtime~main.40e52095.js similarity index 99% rename from assets/js/runtime~main.7d5d8c82.js rename to assets/js/runtime~main.40e52095.js index 5fc52a6a1..8c063fe8c 100644 --- a/assets/js/runtime~main.7d5d8c82.js +++ b/assets/js/runtime~main.40e52095.js @@ -1 +1 @@ -(()=>{"use strict";var e,a,c,d,f,t={},r={};function b(e){var a=r[e];if(void 0!==a)return a.exports;var c=r[e]={id:e,loaded:!1,exports:{}};return t[e].call(c.exports,c,c.exports,b),c.loaded=!0,c.exports}b.m=t,b.c=r,e=[],b.O=(a,c,d,f)=>{if(!c){var t=1/0;for(i=0;i=f)&&Object.keys(b.O).every((e=>b.O[e](c[o])))?c.splice(o--,1):(r=!1,f0&&e[i-1][2]>f;i--)e[i]=e[i-1];e[i]=[c,d,f]},b.n=e=>{var a=e&&e.__esModule?()=>e.default:()=>e;return b.d(a,{a:a}),a},c=Object.getPrototypeOf?e=>Object.getPrototypeOf(e):e=>e.__proto__,b.t=function(e,d){if(1&d&&(e=this(e)),8&d)return e;if("object"==typeof e&&e){if(4&d&&e.__esModule)return e;if(16&d&&"function"==typeof e.then)return e}var f=Object.create(null);b.r(f);var t={};a=a||[null,c({}),c([]),c(c)];for(var r=2&d&&e;"object"==typeof r&&!~a.indexOf(r);r=c(r))Object.getOwnPropertyNames(r).forEach((a=>t[a]=()=>e[a]));return t.default=()=>e,b.d(f,t),f},b.d=(e,a)=>{for(var c in a)b.o(a,c)&&!b.o(e,c)&&Object.defineProperty(e,c,{enumerable:!0,get:a[c]})},b.f={},b.e=e=>Promise.all(Object.keys(b.f).reduce(((a,c)=>(b.f[c](e,a),a)),[])),b.u=e=>"assets/js/"+({114:"7f85490b",141:"cc36e6db",201:"c989d7c1",326:"757ddfc3",765:"105d6813",929:"9c9b1718",957:"c141421f",1044:"41550cb9",1235:"a7456010",1302:"b0106d33",1333:"b4876012",1459:"4d54d076",1652:"2a85ae07",1903:"acecf23e",2031:"d2cad9cb",2056:"695aef2a",2138:"1a4e3797",2698:"4dcb0ee4",2711:"9e4087bc",2717:"31025942",2726:"9d66f9e6",2794:"634079bb",2854:"4a31450a",2872:"f2654b33",3150:"68b584ac",3249:"ccc49370",3331:"a9ffda76",3478:"15890acf",3487:"fd339388",3646:"3208cee5",3737:"269efc9b",3803:"1e1b9479",4002:"ff54fc36",4212:"621db11d",4423:"afe26507",4436:"acf66b6a",4583:"1df93b7f",4619:"9361eb19",4699:"78fb6c04",4813:"6875c492",5304:"32799f74",5315:"ab1884bd",5430:"0a64acae",5715:"c7678df9",5732:"f6d27347",5742:"aba21aa0",5848:"8440c6e3",5863:"0b1ac180",5873:"af44de46",5899:"a09c2993",5969:"3ce6c040",6176:"5501d831",6258:"9feee6f9",7098:"a7bd4aaa",7111:"1023933c",7288:"65d6cbf7",7472:"814f3328",7643:"a6aa9e1f",8059:"fdef232d",8209:"01a85c17",8401:"17896441",8431:"2c2dd814",8515:"d138d6ee",9048:"a94703ab",9259:"0bfed4bc",9647:"5e95c892",9666:"ae9eeff2",9858:"36994c47",9963:"23da673d"}[e]||e)+"."+{114:"be29bb80",141:"08d6f788",201:"aca2d9a8",326:"68cc9903",416:"69f9aedf",765:"9530c27e",929:"92b72b27",957:"b1b52a8f",1044:"41a5f3b3",1235:"3ed8118a",1302:"433a6395",1333:"464a15d9",1459:"8a3e3466",1652:"001003c9",1903:"3cf711e1",2031:"e3c86049",2056:"f960c409",2138:"a8a41693",2237:"ab3fcbc9",2698:"d25492f1",2711:"2acc7777",2717:"def2709f",2726:"da51c917",2794:"3e44a621",2854:"209106ea",2872:"af9ca887",3150:"3aeb6cb4",3249:"04ddb4ab",3331:"558a0627",3347:"d0bd84c2",3478:"99db78a6",3487:"0266e9e9",3646:"5d51c941",3737:"00bdefc6",3803:"6d9bca45",4002:"b61bf393",4212:"b11f8ee3",4423:"8680fafb",4436:"5fe31333",4583:"88b1acd1",4619:"5d868049",4699:"1a3745f6",4813:"e5f81c47",5304:"cda0433b",5315:"5db3faa6",5394:"dc2db95a",5430:"ac4297c0",5715:"6d457003",5732:"9f251f07",5742:"d3e226a7",5848:"289fec10",5863:"b2989e19",5873:"780f0a6b",5899:"1d0aa617",5969:"c6a88904",6176:"151cf863",6258:"835eec66",6369:"902e28dc",7098:"219649ee",7111:"6bab218a",7288:"b2ba4855",7472:"48aeef7f",7643:"20f2fc9c",8059:"542540e9",8209:"2d49317c",8401:"1980a055",8431:"d57f915e",8515:"f9509cd0",8913:"83036ae7",9048:"875cd64f",9259:"d37d8852",9462:"f0bbb864",9647:"9460faba",9666:"f669aabc",9858:"a932c04b",9963:"88af9ec1"}[e]+".js",b.miniCssF=e=>{},b.g=function(){if("object"==typeof globalThis)return globalThis;try{return this||new Function("return this")()}catch(e){if("object"==typeof window)return window}}(),b.o=(e,a)=>Object.prototype.hasOwnProperty.call(e,a),d={},f="@rnx-kit/docsite:",b.l=(e,a,c,t)=>{if(d[e])d[e].push(a);else{var r,o;if(void 0!==c)for(var n=document.getElementsByTagName("script"),i=0;i{r.onerror=r.onload=null,clearTimeout(s);var f=d[e];if(delete d[e],r.parentNode&&r.parentNode.removeChild(r),f&&f.forEach((e=>e(c))),a)return a(c)},s=setTimeout(l.bind(null,void 0,{type:"timeout",target:r}),12e4);r.onerror=l.bind(null,r.onerror),r.onload=l.bind(null,r.onload),o&&document.head.appendChild(r)}},b.r=e=>{"undefined"!=typeof Symbol&&Symbol.toStringTag&&Object.defineProperty(e,Symbol.toStringTag,{value:"Module"}),Object.defineProperty(e,"__esModule",{value:!0})},b.p="/rnx-kit/",b.gca=function(e){return e={17896441:"8401",31025942:"2717","7f85490b":"114",cc36e6db:"141",c989d7c1:"201","757ddfc3":"326","105d6813":"765","9c9b1718":"929",c141421f:"957","41550cb9":"1044",a7456010:"1235",b0106d33:"1302",b4876012:"1333","4d54d076":"1459","2a85ae07":"1652",acecf23e:"1903",d2cad9cb:"2031","695aef2a":"2056","1a4e3797":"2138","4dcb0ee4":"2698","9e4087bc":"2711","9d66f9e6":"2726","634079bb":"2794","4a31450a":"2854",f2654b33:"2872","68b584ac":"3150",ccc49370:"3249",a9ffda76:"3331","15890acf":"3478",fd339388:"3487","3208cee5":"3646","269efc9b":"3737","1e1b9479":"3803",ff54fc36:"4002","621db11d":"4212",afe26507:"4423",acf66b6a:"4436","1df93b7f":"4583","9361eb19":"4619","78fb6c04":"4699","6875c492":"4813","32799f74":"5304",ab1884bd:"5315","0a64acae":"5430",c7678df9:"5715",f6d27347:"5732",aba21aa0:"5742","8440c6e3":"5848","0b1ac180":"5863",af44de46:"5873",a09c2993:"5899","3ce6c040":"5969","5501d831":"6176","9feee6f9":"6258",a7bd4aaa:"7098","1023933c":"7111","65d6cbf7":"7288","814f3328":"7472",a6aa9e1f:"7643",fdef232d:"8059","01a85c17":"8209","2c2dd814":"8431",d138d6ee:"8515",a94703ab:"9048","0bfed4bc":"9259","5e95c892":"9647",ae9eeff2:"9666","36994c47":"9858","23da673d":"9963"}[e]||e,b.p+b.u(e)},(()=>{var e={5354:0,1869:0};b.f.j=(a,c)=>{var d=b.o(e,a)?e[a]:void 0;if(0!==d)if(d)c.push(d[2]);else if(/^(1869|5354)$/.test(a))e[a]=0;else{var f=new Promise(((c,f)=>d=e[a]=[c,f]));c.push(d[2]=f);var t=b.p+b.u(a),r=new Error;b.l(t,(c=>{if(b.o(e,a)&&(0!==(d=e[a])&&(e[a]=void 0),d)){var f=c&&("load"===c.type?"missing":c.type),t=c&&c.target&&c.target.src;r.message="Loading chunk "+a+" failed.\n("+f+": "+t+")",r.name="ChunkLoadError",r.type=f,r.request=t,d[1](r)}}),"chunk-"+a,a)}},b.O.j=a=>0===e[a];var a=(a,c)=>{var d,f,t=c[0],r=c[1],o=c[2],n=0;if(t.some((a=>0!==e[a]))){for(d in r)b.o(r,d)&&(b.m[d]=r[d]);if(o)var i=o(b)}for(a&&a(c);n{"use strict";var e,a,c,d,f,t={},r={};function b(e){var a=r[e];if(void 0!==a)return a.exports;var c=r[e]={id:e,loaded:!1,exports:{}};return t[e].call(c.exports,c,c.exports,b),c.loaded=!0,c.exports}b.m=t,b.c=r,e=[],b.O=(a,c,d,f)=>{if(!c){var t=1/0;for(i=0;i=f)&&Object.keys(b.O).every((e=>b.O[e](c[o])))?c.splice(o--,1):(r=!1,f0&&e[i-1][2]>f;i--)e[i]=e[i-1];e[i]=[c,d,f]},b.n=e=>{var a=e&&e.__esModule?()=>e.default:()=>e;return b.d(a,{a:a}),a},c=Object.getPrototypeOf?e=>Object.getPrototypeOf(e):e=>e.__proto__,b.t=function(e,d){if(1&d&&(e=this(e)),8&d)return e;if("object"==typeof e&&e){if(4&d&&e.__esModule)return e;if(16&d&&"function"==typeof e.then)return e}var f=Object.create(null);b.r(f);var t={};a=a||[null,c({}),c([]),c(c)];for(var r=2&d&&e;"object"==typeof r&&!~a.indexOf(r);r=c(r))Object.getOwnPropertyNames(r).forEach((a=>t[a]=()=>e[a]));return t.default=()=>e,b.d(f,t),f},b.d=(e,a)=>{for(var c in a)b.o(a,c)&&!b.o(e,c)&&Object.defineProperty(e,c,{enumerable:!0,get:a[c]})},b.f={},b.e=e=>Promise.all(Object.keys(b.f).reduce(((a,c)=>(b.f[c](e,a),a)),[])),b.u=e=>"assets/js/"+({114:"7f85490b",141:"cc36e6db",201:"c989d7c1",326:"757ddfc3",765:"105d6813",929:"9c9b1718",957:"c141421f",1044:"41550cb9",1235:"a7456010",1302:"b0106d33",1333:"b4876012",1459:"4d54d076",1652:"2a85ae07",1903:"acecf23e",2031:"d2cad9cb",2056:"695aef2a",2138:"1a4e3797",2698:"4dcb0ee4",2711:"9e4087bc",2717:"31025942",2726:"9d66f9e6",2794:"634079bb",2854:"4a31450a",2872:"f2654b33",3150:"68b584ac",3249:"ccc49370",3331:"a9ffda76",3478:"15890acf",3487:"fd339388",3646:"3208cee5",3737:"269efc9b",3803:"1e1b9479",4002:"ff54fc36",4212:"621db11d",4423:"afe26507",4436:"acf66b6a",4583:"1df93b7f",4619:"9361eb19",4699:"78fb6c04",4813:"6875c492",5304:"32799f74",5315:"ab1884bd",5430:"0a64acae",5715:"c7678df9",5732:"f6d27347",5742:"aba21aa0",5848:"8440c6e3",5863:"0b1ac180",5873:"af44de46",5899:"a09c2993",5969:"3ce6c040",6176:"5501d831",6258:"9feee6f9",7098:"a7bd4aaa",7111:"1023933c",7288:"65d6cbf7",7472:"814f3328",7643:"a6aa9e1f",8059:"fdef232d",8209:"01a85c17",8401:"17896441",8431:"2c2dd814",8515:"d138d6ee",9048:"a94703ab",9259:"0bfed4bc",9647:"5e95c892",9666:"ae9eeff2",9858:"36994c47",9963:"23da673d"}[e]||e)+"."+{114:"be29bb80",141:"08d6f788",201:"aca2d9a8",326:"68cc9903",416:"69f9aedf",765:"9530c27e",929:"92b72b27",957:"b1b52a8f",1044:"41a5f3b3",1235:"3ed8118a",1302:"433a6395",1333:"464a15d9",1459:"8a3e3466",1652:"001003c9",1903:"3cf711e1",2031:"e3c86049",2056:"f960c409",2138:"a8a41693",2237:"ab3fcbc9",2698:"d25492f1",2711:"2acc7777",2717:"def2709f",2726:"da51c917",2794:"3e44a621",2854:"209106ea",2872:"af9ca887",3150:"3aeb6cb4",3249:"04ddb4ab",3331:"558a0627",3347:"d0bd84c2",3478:"99db78a6",3487:"0266e9e9",3646:"5d51c941",3737:"00bdefc6",3803:"6d9bca45",4002:"b61bf393",4212:"b11f8ee3",4423:"8680fafb",4436:"5fe31333",4583:"88b1acd1",4619:"5d868049",4699:"1a3745f6",4813:"e5f81c47",5304:"cda0433b",5315:"5db3faa6",5394:"dc2db95a",5430:"ac4297c0",5715:"6d457003",5732:"9f251f07",5742:"d3e226a7",5848:"289fec10",5863:"b2989e19",5873:"780f0a6b",5899:"1d0aa617",5969:"c6a88904",6176:"151cf863",6258:"4d131f70",6369:"902e28dc",7098:"219649ee",7111:"6bab218a",7288:"b2ba4855",7472:"48aeef7f",7643:"20f2fc9c",8059:"542540e9",8209:"2d49317c",8401:"1980a055",8431:"d57f915e",8515:"f9509cd0",8913:"83036ae7",9048:"875cd64f",9259:"d37d8852",9462:"f0bbb864",9647:"9460faba",9666:"f669aabc",9858:"a932c04b",9963:"88af9ec1"}[e]+".js",b.miniCssF=e=>{},b.g=function(){if("object"==typeof globalThis)return globalThis;try{return this||new Function("return this")()}catch(e){if("object"==typeof window)return window}}(),b.o=(e,a)=>Object.prototype.hasOwnProperty.call(e,a),d={},f="@rnx-kit/docsite:",b.l=(e,a,c,t)=>{if(d[e])d[e].push(a);else{var r,o;if(void 0!==c)for(var n=document.getElementsByTagName("script"),i=0;i{r.onerror=r.onload=null,clearTimeout(s);var f=d[e];if(delete d[e],r.parentNode&&r.parentNode.removeChild(r),f&&f.forEach((e=>e(c))),a)return a(c)},s=setTimeout(l.bind(null,void 0,{type:"timeout",target:r}),12e4);r.onerror=l.bind(null,r.onerror),r.onload=l.bind(null,r.onload),o&&document.head.appendChild(r)}},b.r=e=>{"undefined"!=typeof Symbol&&Symbol.toStringTag&&Object.defineProperty(e,Symbol.toStringTag,{value:"Module"}),Object.defineProperty(e,"__esModule",{value:!0})},b.p="/rnx-kit/",b.gca=function(e){return e={17896441:"8401",31025942:"2717","7f85490b":"114",cc36e6db:"141",c989d7c1:"201","757ddfc3":"326","105d6813":"765","9c9b1718":"929",c141421f:"957","41550cb9":"1044",a7456010:"1235",b0106d33:"1302",b4876012:"1333","4d54d076":"1459","2a85ae07":"1652",acecf23e:"1903",d2cad9cb:"2031","695aef2a":"2056","1a4e3797":"2138","4dcb0ee4":"2698","9e4087bc":"2711","9d66f9e6":"2726","634079bb":"2794","4a31450a":"2854",f2654b33:"2872","68b584ac":"3150",ccc49370:"3249",a9ffda76:"3331","15890acf":"3478",fd339388:"3487","3208cee5":"3646","269efc9b":"3737","1e1b9479":"3803",ff54fc36:"4002","621db11d":"4212",afe26507:"4423",acf66b6a:"4436","1df93b7f":"4583","9361eb19":"4619","78fb6c04":"4699","6875c492":"4813","32799f74":"5304",ab1884bd:"5315","0a64acae":"5430",c7678df9:"5715",f6d27347:"5732",aba21aa0:"5742","8440c6e3":"5848","0b1ac180":"5863",af44de46:"5873",a09c2993:"5899","3ce6c040":"5969","5501d831":"6176","9feee6f9":"6258",a7bd4aaa:"7098","1023933c":"7111","65d6cbf7":"7288","814f3328":"7472",a6aa9e1f:"7643",fdef232d:"8059","01a85c17":"8209","2c2dd814":"8431",d138d6ee:"8515",a94703ab:"9048","0bfed4bc":"9259","5e95c892":"9647",ae9eeff2:"9666","36994c47":"9858","23da673d":"9963"}[e]||e,b.p+b.u(e)},(()=>{var e={5354:0,1869:0};b.f.j=(a,c)=>{var d=b.o(e,a)?e[a]:void 0;if(0!==d)if(d)c.push(d[2]);else if(/^(1869|5354)$/.test(a))e[a]=0;else{var f=new Promise(((c,f)=>d=e[a]=[c,f]));c.push(d[2]=f);var t=b.p+b.u(a),r=new Error;b.l(t,(c=>{if(b.o(e,a)&&(0!==(d=e[a])&&(e[a]=void 0),d)){var f=c&&("load"===c.type?"missing":c.type),t=c&&c.target&&c.target.src;r.message="Loading chunk "+a+" failed.\n("+f+": "+t+")",r.name="ChunkLoadError",r.type=f,r.request=t,d[1](r)}}),"chunk-"+a,a)}},b.O.j=a=>0===e[a];var a=(a,c)=>{var d,f,t=c[0],r=c[1],o=c[2],n=0;if(t.some((a=>0!==e[a]))){for(d in r)b.o(r,d)&&(b.m[d]=r[d]);if(o)var i=o(b)}for(a&&a(c);n