From dd8389bcec14a794858e5c35a136cdfeaa9f5068 Mon Sep 17 00:00:00 2001 From: Tommy Nguyen <4123478+tido64@users.noreply.github.com> Date: Mon, 28 Oct 2024 16:21:34 +0100 Subject: [PATCH] fix(align-deps): add profile for 0.76 (#3391) --- .changeset/forty-shrimps-play.md | 5 + .changeset/wise-pillows-peel.md | 5 + incubator/build-plugin-firebase/src/index.ts | 8 +- packages/align-deps/README.md | 100 +++++------ packages/align-deps/package.json | 1 + .../align-deps/scripts/update-profile.mjs | 160 +++++++++++------- .../src/presets/microsoft/react-native.ts | 2 + .../microsoft/react-native/profile-0.74.ts | 4 +- .../microsoft/react-native/profile-0.76.ts | 142 ++++++++++++++++ packages/align-deps/test/preset.test.ts | 3 + packages/react-native-auth/package.json | 4 +- packages/tools-shell/README.md | 1 + packages/tools-shell/package.json | 5 + packages/tools-shell/src/index.ts | 1 + packages/tools-shell/src/untar.ts | 29 ++++ yarn.lock | 7 +- 16 files changed, 353 insertions(+), 124 deletions(-) create mode 100644 .changeset/forty-shrimps-play.md create mode 100644 .changeset/wise-pillows-peel.md create mode 100644 packages/align-deps/src/presets/microsoft/react-native/profile-0.76.ts create mode 100644 packages/tools-shell/src/untar.ts diff --git a/.changeset/forty-shrimps-play.md b/.changeset/forty-shrimps-play.md new file mode 100644 index 000000000..f27b1403d --- /dev/null +++ b/.changeset/forty-shrimps-play.md @@ -0,0 +1,5 @@ +--- +"@rnx-kit/tools-shell": patch +--- + +Added function for extracting tar files diff --git a/.changeset/wise-pillows-peel.md b/.changeset/wise-pillows-peel.md new file mode 100644 index 000000000..f4521f9f1 --- /dev/null +++ b/.changeset/wise-pillows-peel.md @@ -0,0 +1,5 @@ +--- +"@rnx-kit/align-deps": patch +--- + +Added profile for 0.76 diff --git a/incubator/build-plugin-firebase/src/index.ts b/incubator/build-plugin-firebase/src/index.ts index f9307c58c..d139db638 100644 --- a/incubator/build-plugin-firebase/src/index.ts +++ b/incubator/build-plugin-firebase/src/index.ts @@ -7,7 +7,7 @@ type FirebaseConfig = Partial<{ function validateConfig( config: FirebaseConfig | undefined -): config is FirebaseConfig { +): asserts config is FirebaseConfig { if (!config) { throw new Error("Missing Firebase configuration"); } @@ -31,16 +31,12 @@ function validateConfig( } else if (typeof appId !== "string") { throw new Error(`Invalid Firebase app id: ${appId}`); } - - return true; } export const distribution: PluginInterface["distribution"] = ( config?: FirebaseConfig ) => { - if (!validateConfig(config)) { - throw new Error("Invalid Firebase config"); - } + validateConfig(config); return { deploy: (_context, _artifact, spinner) => { diff --git a/packages/align-deps/README.md b/packages/align-deps/README.md index 399ad498d..0157c644a 100644 --- a/packages/align-deps/README.md +++ b/packages/align-deps/README.md @@ -312,56 +312,56 @@ resolve to: -| Capability | 0.75 | 0.74 | 0.73 | 0.72 | 0.71 | 0.70 | 0.69 | 0.68 | 0.67 | 0.66 | 0.65 | 0.64 | 0.63 | 0.62 | 0.61 | -| ------------------------------------ | ----------------------------------------------------------------- | ----------------------------------------------------------------- | ----------------------------------------------------------------- | ----------------------------------------------------------------- | ----------------------------------------------------------------- | ----------------------------------------------------------------- | ----------------------------------------------------------------- | ----------------------------------------------------------------- | ----------------------------------------------------------------- | ----------------------------------------------------------------- | ----------------------------------------------------------------- | ----------------------------------------------------------------- | ----------------------------------------------------------------- | ----------------------------------------------------------------- | ----------------------------------------------------------------- | -| core | react-native@^0.75.0 | react-native@^0.74.0 | react-native@^0.73.0 | react-native@^0.72.0 | react-native@^0.71.0 | react-native@^0.70.0 | react-native@^0.69.0 | react-native@^0.68.0 | react-native@^0.67.0 | react-native@^0.66.0 | react-native@^0.65.0 | react-native@^0.64.2 | react-native@^0.63.2 | react-native@^0.62.3 | react-native@^0.61.5 | -| core-android | react-native@^0.75.0 | react-native@^0.74.0 | react-native@^0.73.0 | react-native@^0.72.0 | react-native@^0.71.0 | react-native@^0.70.0 | react-native@^0.69.0 | react-native@^0.68.0 | react-native@^0.67.0 | react-native@^0.66.0 | react-native@^0.65.0 | react-native@^0.64.2 | react-native@^0.63.2 | react-native@^0.62.3 | react-native@^0.61.5 | -| core-ios | react-native@^0.75.0 | react-native@^0.74.0 | react-native@^0.73.0 | react-native@^0.72.0 | react-native@^0.71.0 | react-native@^0.70.0 | react-native@^0.69.0 | react-native@^0.68.0 | react-native@^0.67.0 | react-native@^0.66.0 | react-native@^0.65.0 | react-native@^0.64.2 | react-native@^0.63.2 | react-native@^0.62.3 | react-native@^0.61.5 | -| core-macos | react-native-macos@^0.75.0 | react-native-macos@^0.74.0 | react-native-macos@^0.73.0 | react-native-macos@^0.72.0 | react-native-macos@^0.71.0 | react-native-macos@^0.70.0 | react-native-macos@^0.69.0 | react-native-macos@^0.68.0 | react-native-macos@^0.67.0 | react-native-macos@^0.66.0 | react-native-macos@^0.65.0 | react-native-macos@^0.64.0 | react-native-macos@^0.63.0 | react-native-macos@^0.62.0 | react-native-macos@^0.61.0 | -| core-visionos | @callstack/react-native-visionos@^0.75.0 | @callstack/react-native-visionos@^0.74.0 | @callstack/react-native-visionos@^0.73.0 | Meta package for installing `react` | Meta package for installing `react` | Meta package for installing `react` | Meta package for installing `react` | Meta package for installing `react` | Meta package for installing `react` | Meta package for installing `react` | Meta package for installing `react` | Meta package for installing `react` | Meta package for installing `react` | Meta package for installing `react` | Meta package for installing `react` | -| core-windows | react-native-windows@^0.75.0 | react-native-windows@^0.74.0 | react-native-windows@^0.73.0 | react-native-windows@^0.72.0 | react-native-windows@^0.71.0 | react-native-windows@^0.70.0 | react-native-windows@^0.69.0 | react-native-windows@^0.68.0 | react-native-windows@^0.67.0 | react-native-windows@^0.66.0 | react-native-windows@^0.65.0 | react-native-windows@^0.64.0 | react-native-windows@^0.63.0 | react-native-windows@^0.62.0 | react-native-windows@^0.61.0 | -| animation | react-native-reanimated@^3.15.0 | react-native-reanimated@^3.9.0 | react-native-reanimated@^3.6.0 | react-native-reanimated@^3.3.0 | react-native-reanimated@^2.14.1 | react-native-reanimated@^2.10.0 | react-native-reanimated@^2.9.0 | react-native-reanimated@^2.5.0 | react-native-reanimated@^2.2.4 | react-native-reanimated@^2.2.3 | react-native-reanimated@^2.2.1 | react-native-reanimated@^2.1.0 | react-native-reanimated@^1.13.3 | react-native-reanimated@^1.13.3 | react-native-reanimated@^1.13.3 | -| babel-preset-react-native | @react-native/babel-preset@^0.75.0 | @react-native/babel-preset@^0.74.0 | @react-native/babel-preset@^0.73.0 | metro-react-native-babel-preset@^0.76.5 | metro-react-native-babel-preset@^0.73.7 | metro-react-native-babel-preset@^0.72.1 | metro-react-native-babel-preset@^0.70.3 | metro-react-native-babel-preset@^0.67.0 | metro-react-native-babel-preset@^0.66.2 | metro-react-native-babel-preset@^0.66.2 | metro-react-native-babel-preset@^0.66.0 | metro-react-native-babel-preset@^0.64.0 | metro-react-native-babel-preset@^0.59.0 | metro-react-native-babel-preset@^0.58.0 | metro-react-native-babel-preset@^0.56.0 | -| base64 | react-native-base64@^0.2.1 | react-native-base64@^0.2.1 | react-native-base64@^0.2.1 | react-native-base64@^0.2.1 | react-native-base64@^0.2.1 | react-native-base64@^0.2.1 | react-native-base64@^0.2.1 | react-native-base64@^0.2.1 | react-native-base64@^0.2.1 | react-native-base64@^0.2.1 | react-native-base64@^0.2.1 | react-native-base64@^0.2.1 | react-native-base64@^0.2.1 | react-native-base64@^0.2.1 | react-native-base64@^0.2.1 | -| checkbox | @react-native-community/checkbox@^0.5.15 | @react-native-community/checkbox@^0.5.15 | @react-native-community/checkbox@^0.5.15 | @react-native-community/checkbox@^0.5.15 | @react-native-community/checkbox@^0.5.15 | @react-native-community/checkbox@^0.5.8 | @react-native-community/checkbox@^0.5.8 | @react-native-community/checkbox@^0.5.8 | @react-native-community/checkbox@^0.5.8 | @react-native-community/checkbox@^0.5.8 | @react-native-community/checkbox@^0.5.8 | @react-native-community/checkbox@^0.5.8 | @react-native-community/checkbox@^0.5.7 | @react-native-community/checkbox@^0.5.7 | @react-native-community/checkbox@^0.5.7 | -| clipboard | @react-native-clipboard/clipboard@^1.14.0 | @react-native-clipboard/clipboard@^1.14.0 | @react-native-clipboard/clipboard@^1.14.0 | @react-native-clipboard/clipboard@^1.10.0 | @react-native-clipboard/clipboard@^1.10.0 | @react-native-clipboard/clipboard@^1.10.0 | @react-native-clipboard/clipboard@^1.10.0 | @react-native-clipboard/clipboard@^1.10.0 | @react-native-clipboard/clipboard@^1.9.0 | @react-native-clipboard/clipboard@^1.9.0 | @react-native-clipboard/clipboard@^1.9.0 | @react-native-clipboard/clipboard@^1.8.3 | @react-native-community/clipboard@^1.5.1 | @react-native-community/clipboard@^1.5.1 | @react-native-community/clipboard@^1.5.1 | -| community/cli | @react-native-community/cli@^14.0.0 | @react-native-community/cli@^13.6.4 | @react-native-community/cli@^12.1.1 | @react-native-community/cli@^11.3.2 | @react-native-community/cli@^10.0.0 | @react-native-community/cli@^9.0.0 | @react-native-community/cli@^8.0.4 | @react-native-community/cli@^7.0.3 | @react-native-community/cli@^6.0.0 | @react-native-community/cli@^6.0.0 | @react-native-community/cli@^6.0.0 | @react-native-community/cli@^5.0.1 | @react-native-community/cli@^4.10.0 | @react-native-community/cli@^4.5.1 | @react-native-community/cli@^3.0.0 | -| community/cli-android | @react-native-community/cli-platform-android@^14.0.0 | @react-native-community/cli-platform-android@^13.6.4 | @react-native-community/cli-platform-android@^12.1.1 | @react-native-community/cli-platform-android@^11.3.2 | @react-native-community/cli-platform-android@^10.0.0 | @react-native-community/cli-platform-android@^9.0.0 | @react-native-community/cli-platform-android@^8.0.4 | @react-native-community/cli-platform-android@^7.0.1 | @react-native-community/cli-platform-android@^6.0.0 | @react-native-community/cli-platform-android@^6.0.0 | @react-native-community/cli-platform-android@^6.0.0 | @react-native-community/cli-platform-android@^5.0.1 | @react-native-community/cli-platform-android@^4.10.0 | @react-native-community/cli-platform-android@^4.5.1 | @react-native-community/cli-platform-android@^3.0.0 | -| community/cli-ios | @react-native-community/cli-platform-ios@^14.0.0 | @react-native-community/cli-platform-ios@^13.6.4 | @react-native-community/cli-platform-ios@^12.1.1 | @react-native-community/cli-platform-ios@^11.3.2 | @react-native-community/cli-platform-ios@^10.0.0 | @react-native-community/cli-platform-ios@^9.0.0 | @react-native-community/cli-platform-ios@^8.0.4 | @react-native-community/cli-platform-ios@^7.0.1 | @react-native-community/cli-platform-ios@^6.0.0 | @react-native-community/cli-platform-ios@^6.0.0 | @react-native-community/cli-platform-ios@^6.0.0 | @react-native-community/cli-platform-ios@^5.0.1 | @react-native-community/cli-platform-ios@^4.10.0 | @react-native-community/cli-platform-ios@^4.5.0 | @react-native-community/cli-platform-ios@^3.0.0 | -| core/metro-config | @react-native/metro-config@^0.75.0 | @react-native/metro-config@^0.74.0 | @react-native/metro-config@^0.73.0 | @react-native/metro-config@^0.72.0 | - | - | - | - | - | - | - | - | - | - | - | -| core/testing | Meta package for installing `core`, `jest`, `react-test-renderer` | Meta package for installing `core`, `jest`, `react-test-renderer` | Meta package for installing `core`, `jest`, `react-test-renderer` | Meta package for installing `core`, `jest`, `react-test-renderer` | Meta package for installing `core`, `jest`, `react-test-renderer` | Meta package for installing `core`, `jest`, `react-test-renderer` | Meta package for installing `core`, `jest`, `react-test-renderer` | Meta package for installing `core`, `jest`, `react-test-renderer` | Meta package for installing `core`, `jest`, `react-test-renderer` | Meta package for installing `core`, `jest`, `react-test-renderer` | Meta package for installing `core`, `jest`, `react-test-renderer` | Meta package for installing `core`, `jest`, `react-test-renderer` | Meta package for installing `core`, `jest`, `react-test-renderer` | Meta package for installing `core`, `jest`, `react-test-renderer` | Meta package for installing `core`, `jest`, `react-test-renderer` | -| datetime-picker | @react-native-community/datetimepicker@^8.0.0 | @react-native-community/datetimepicker@^8.0.0 | @react-native-community/datetimepicker@^8.0.0 | @react-native-community/datetimepicker@^7.6.2 | @react-native-community/datetimepicker@^6.4.2 | @react-native-community/datetimepicker@^6.3.3 | @react-native-community/datetimepicker@^6.0.2 | @react-native-community/datetimepicker@^6.0.2 | @react-native-community/datetimepicker@^3.5.2 | @react-native-community/datetimepicker@^3.5.2 | @react-native-community/datetimepicker@^3.5.2 | @react-native-community/datetimepicker@^3.4.6 | @react-native-community/datetimepicker@^3.0.9 | @react-native-community/datetimepicker@^3.0.9 | @react-native-community/datetimepicker@^3.0.9 | -| filesystem | react-native-fs@^2.18.0 | react-native-fs@^2.18.0 | react-native-fs@^2.18.0 | react-native-fs@^2.18.0 | react-native-fs@^2.18.0 | react-native-fs@^2.18.0 | react-native-fs@^2.18.0 | react-native-fs@^2.18.0 | react-native-fs@^2.18.0 | react-native-fs@^2.18.0 | react-native-fs@^2.18.0 | react-native-fs@^2.17.0 | react-native-fs@^2.16.6 | react-native-fs@^2.16.6 | react-native-fs@^2.16.6 | -| floating-action | react-native-floating-action@^1.22.0 | react-native-floating-action@^1.22.0 | react-native-floating-action@^1.22.0 | react-native-floating-action@^1.22.0 | react-native-floating-action@^1.22.0 | react-native-floating-action@^1.22.0 | react-native-floating-action@^1.22.0 | react-native-floating-action@^1.22.0 | react-native-floating-action@^1.22.0 | react-native-floating-action@^1.22.0 | react-native-floating-action@^1.22.0 | react-native-floating-action@^1.21.0 | react-native-floating-action@^1.21.0 | react-native-floating-action@^1.18.0 | react-native-floating-action@^1.18.0 | -| gestures | react-native-gesture-handler@^2.18.1 | react-native-gesture-handler@^2.18.1 | react-native-gesture-handler@^2.14.0 | react-native-gesture-handler@^2.12.0 | react-native-gesture-handler@^2.9.0 | react-native-gesture-handler@^2.6.0 | react-native-gesture-handler@^2.5.0 | react-native-gesture-handler@^2.3.2 | react-native-gesture-handler@^1.10.3 | react-native-gesture-handler@^1.10.3 | react-native-gesture-handler@^1.10.3 | react-native-gesture-handler@^1.10.3 | react-native-gesture-handler@^1.10.3 | react-native-gesture-handler@^1.9.0 | react-native-gesture-handler@^1.9.0 | -| hermes | - | - | - | - | - | - | hermes-engine@~0.11.0 | hermes-engine@~0.11.0 | hermes-engine@~0.9.0 | hermes-engine@~0.9.0 | hermes-engine@~0.8.1 | hermes-engine@~0.7.0 | hermes-engine@~0.5.0 | hermes-engine@~0.4.0 | hermes-engine@^0.2.1 | -| hooks | @react-native-community/hooks@^2.8.0 | @react-native-community/hooks@^2.8.0 | @react-native-community/hooks@^2.8.0 | @react-native-community/hooks@^2.8.0 | @react-native-community/hooks@^2.8.0 | @react-native-community/hooks@^2.8.0 | @react-native-community/hooks@^2.8.0 | @react-native-community/hooks@^2.8.0 | @react-native-community/hooks@^2.8.0 | @react-native-community/hooks@^2.8.0 | @react-native-community/hooks@^2.8.0 | @react-native-community/hooks@^2.6.0 | @react-native-community/hooks@^2.6.0 | @react-native-community/hooks@^2.6.0 | @react-native-community/hooks@^2.6.0 | -| html | react-native-render-html@^6.1.0 | react-native-render-html@^6.1.0 | react-native-render-html@^6.1.0 | react-native-render-html@^6.1.0 | react-native-render-html@^6.1.0 | react-native-render-html@^6.1.0 | react-native-render-html@^6.1.0 | react-native-render-html@^6.1.0 | react-native-render-html@^6.1.0 | react-native-render-html@^6.1.0 | react-native-render-html@^5.1.1 | react-native-render-html@^5.1.1 | react-native-render-html@^5.1.0 | react-native-render-html@^5.1.0 | react-native-render-html@^5.1.0 | -| jest | jest@^29.2.1 | jest@^29.2.1 | jest@^29.2.1 | jest@^29.2.1 | jest@^29.2.1 | jest@^26.6.3 | jest@^26.6.3 | jest@^26.6.3 | jest@^26.6.3 | jest@^26.6.3 | jest@^26.6.3 | jest@^26.5.2 | jest@^24.9.0 | jest@^24.8.0 | jest@^24.8.0 | -| lazy-index | @rnx-kit/react-native-lazy-index@^2.1.7 | @rnx-kit/react-native-lazy-index@^2.1.7 | @rnx-kit/react-native-lazy-index@^2.1.7 | @rnx-kit/react-native-lazy-index@^2.1.7 | @rnx-kit/react-native-lazy-index@^2.1.7 | @rnx-kit/react-native-lazy-index@^2.1.7 | @rnx-kit/react-native-lazy-index@^2.1.7 | @rnx-kit/react-native-lazy-index@^2.1.7 | @rnx-kit/react-native-lazy-index@^2.1.7 | @rnx-kit/react-native-lazy-index@^2.1.7 | react-native-lazy-index@^2.1.1 | react-native-lazy-index@^2.1.1 | react-native-lazy-index@^2.1.1 | react-native-lazy-index@^2.1.1 | react-native-lazy-index@^2.1.1 | -| masked-view | @react-native-masked-view/masked-view@^0.3.0 | @react-native-masked-view/masked-view@^0.3.0 | @react-native-masked-view/masked-view@^0.3.0 | @react-native-masked-view/masked-view@^0.2.9 | @react-native-masked-view/masked-view@^0.2.9 | @react-native-masked-view/masked-view@^0.2.7 | @react-native-masked-view/masked-view@^0.2.7 | @react-native-masked-view/masked-view@^0.2.6 | @react-native-masked-view/masked-view@^0.2.6 | @react-native-masked-view/masked-view@^0.2.6 | @react-native-masked-view/masked-view@^0.2.6 | @react-native-masked-view/masked-view@^0.2.4 | @react-native-masked-view/masked-view@^0.2.4 | @react-native-masked-view/masked-view@^0.2.4 | @react-native-masked-view/masked-view@^0.2.4 | -| metro | metro@^0.80.3 | metro@^0.80.3 | metro@^0.80.0 | metro@^0.76.5 | metro@^0.73.7 | metro@^0.72.1 | metro@^0.70.1 | metro@^0.67.0 | metro@^0.66.2 | metro@^0.66.2 | metro@^0.66.0 | metro@^0.64.0 | metro@^0.59.0 | metro@^0.58.0 | metro@^0.56.0 | -| metro-config | metro-config@^0.80.3 | metro-config@^0.80.3 | metro-config@^0.80.0 | metro-config@^0.76.5 | metro-config@^0.73.7 | metro-config@^0.72.1 | metro-config@^0.70.1 | metro-config@^0.67.0 | metro-config@^0.66.2 | metro-config@^0.66.2 | metro-config@^0.66.0 | metro-config@^0.64.0 | metro-config@^0.59.0 | metro-config@^0.58.0 | metro-config@^0.56.0 | -| metro-core | metro-core@^0.80.3 | metro-core@^0.80.3 | metro-core@^0.80.0 | metro-core@^0.76.5 | metro-core@^0.73.7 | metro-core@^0.72.1 | metro-core@^0.70.1 | metro-core@^0.67.0 | metro-core@^0.66.2 | metro-core@^0.66.2 | metro-core@^0.66.0 | metro-core@^0.64.0 | metro-core@^0.59.0 | metro-core@^0.58.0 | metro-core@^0.56.0 | -| metro-react-native-babel-transformer | @react-native/metro-babel-transformer@^0.75.0 | @react-native/metro-babel-transformer@^0.74.0 | @react-native/metro-babel-transformer@^0.73.0 | metro-react-native-babel-transformer@^0.76.5 | metro-react-native-babel-transformer@^0.73.7 | metro-react-native-babel-transformer@^0.72.1 | metro-react-native-babel-transformer@^0.70.1 | metro-react-native-babel-transformer@^0.67.0 | metro-react-native-babel-transformer@^0.66.2 | metro-react-native-babel-transformer@^0.66.2 | metro-react-native-babel-transformer@^0.66.0 | metro-react-native-babel-transformer@^0.64.0 | metro-react-native-babel-transformer@^0.59.0 | metro-react-native-babel-transformer@^0.58.0 | metro-react-native-babel-transformer@^0.56.0 | -| metro-resolver | metro-resolver@^0.80.3 | metro-resolver@^0.80.3 | metro-resolver@^0.80.0 | metro-resolver@^0.76.5 | metro-resolver@^0.73.7 | metro-resolver@^0.72.1 | metro-resolver@^0.70.1 | metro-resolver@^0.67.0 | metro-resolver@^0.66.2 | metro-resolver@^0.66.2 | metro-resolver@^0.66.0 | metro-resolver@^0.64.0 | metro-resolver@^0.59.0 | metro-resolver@^0.58.0 | metro-resolver@^0.56.0 | -| metro-runtime | metro-runtime@^0.80.3 | metro-runtime@^0.80.3 | metro-runtime@^0.80.0 | metro-runtime@^0.76.5 | metro-runtime@^0.73.7 | metro-runtime@^0.72.1 | metro-runtime@^0.70.1 | metro-runtime@^0.67.0 | metro-runtime@^0.66.2 | metro-runtime@^0.66.2 | metro-runtime@^0.66.0 | metro-runtime@^0.64.0 | metro-runtime@^0.59.0 | metro-runtime@^0.58.0 | metro-runtime@^0.56.0 | -| modal | react-native-modal@^13.0.0 | react-native-modal@^13.0.0 | react-native-modal@^13.0.0 | react-native-modal@^13.0.0 | react-native-modal@^13.0.0 | react-native-modal@^13.0.0 | react-native-modal@^13.0.0 | react-native-modal@^13.0.0 | react-native-modal@^13.0.0 | react-native-modal@^13.0.0 | react-native-modal@^13.0.0 | react-native-modal@^11.10.0 | react-native-modal@^11.5.6 | react-native-modal@^11.5.6 | react-native-modal@^11.5.6 | -| navigation/native | @react-navigation/native@^6.0.8 | @react-navigation/native@^6.0.8 | @react-navigation/native@^6.0.8 | @react-navigation/native@^6.0.8 | @react-navigation/native@^6.0.8 | @react-navigation/native@^6.0.8 | @react-navigation/native@^6.0.8 | @react-navigation/native@^6.0.8 | @react-navigation/native@^6.0.8 | @react-navigation/native@^6.0.8 | @react-navigation/native@^5.9.8 | @react-navigation/native@^5.9.8 | @react-navigation/native@^5.9.4 | @react-navigation/native@^5.7.6 | @react-navigation/native@^5.7.6 | -| navigation/stack | @react-navigation/stack@^6.3.21 | @react-navigation/stack@^6.3.21 | @react-navigation/stack@^6.3.21 | @react-navigation/stack@^6.2.0 | @react-navigation/stack@^6.2.0 | @react-navigation/stack@^6.2.0 | @react-navigation/stack@^6.2.0 | @react-navigation/stack@^6.2.0 | @react-navigation/stack@^6.2.0 | @react-navigation/stack@^6.2.0 | @react-navigation/stack@^5.14.9 | @react-navigation/stack@^5.14.9 | @react-navigation/stack@^5.14.4 | @react-navigation/stack@^5.9.3 | @react-navigation/stack@^5.9.3 | -| netinfo | @react-native-community/netinfo@^11.3.1 | @react-native-community/netinfo@^11.3.1 | @react-native-community/netinfo@^11.3.0 | @react-native-community/netinfo@^9.0.0 | @react-native-community/netinfo@^9.0.0 | @react-native-community/netinfo@^9.0.0 | @react-native-community/netinfo@^8.0.0 | @react-native-community/netinfo@^7.0.0 | @react-native-community/netinfo@^7.0.0 | @react-native-community/netinfo@^7.0.0 | @react-native-community/netinfo@^7.0.0 | @react-native-community/netinfo@^6.0.2 | @react-native-community/netinfo@^5.9.10 | @react-native-community/netinfo@^5.9.10 | @react-native-community/netinfo@^5.7.1 | -| popover | react-native-popover-view@^5.1.8 | react-native-popover-view@^5.1.8 | react-native-popover-view@^5.1.8 | react-native-popover-view@^5.1.8 | react-native-popover-view@^5.0.0 | react-native-popover-view@^5.0.0 | react-native-popover-view@^5.0.0 | react-native-popover-view@^4.0.3 | react-native-popover-view@^4.0.3 | react-native-popover-view@^4.0.3 | react-native-popover-view@^4.0.3 | react-native-popover-view@^4.0.3 | react-native-popover-view@^3.1.1 | react-native-popover-view@^3.1.1 | react-native-popover-view@^3.1.1 | -| react | react@^18.2.0 | react@18.2.0 | react@18.2.0 | react@18.2.0 | react@18.2.0 | react@18.1.0 | react@18.0.0 | react@17.0.2 | react@17.0.2 | react@17.0.2 | react@17.0.2 | react@17.0.1 | react@16.13.1 | react@16.11.0 | react@16.9.0 | -| react-dom | react-dom@^18.2.0 | react-dom@^18.2.0 | react-dom@^18.2.0 | react-dom@^18.2.0 | react-dom@^18.2.0 | react-dom@^18.1.0 | react-dom@^18.0.0 | react-dom@17.0.2 | react-dom@17.0.2 | react-dom@17.0.2 | react-dom@17.0.2 | react-dom@17.0.1 | react-dom@16.13.1 | react-dom@16.11.0 | react-dom@16.9.0 | -| react-test-renderer | react-test-renderer@^18.2.0 | react-test-renderer@18.2.0 | react-test-renderer@18.2.0 | react-test-renderer@18.2.0 | react-test-renderer@18.2.0 | react-test-renderer@18.1.0 | react-test-renderer@18.0.0 | react-test-renderer@17.0.2 | react-test-renderer@17.0.2 | react-test-renderer@17.0.2 | react-test-renderer@17.0.2 | react-test-renderer@17.0.1 | react-test-renderer@16.13.1 | react-test-renderer@16.11.0 | react-test-renderer@16.9.0 | -| safe-area | react-native-safe-area-context@^4.10.5 | react-native-safe-area-context@^4.10.5 | react-native-safe-area-context@^4.8.2 | react-native-safe-area-context@>=4.5.3 <4.8 | react-native-safe-area-context@^4.5.1 | react-native-safe-area-context@^4.4.1 | react-native-safe-area-context@^4.3.1 | react-native-safe-area-context@^3.2.0 | react-native-safe-area-context@^3.2.0 | react-native-safe-area-context@^3.2.0 | react-native-safe-area-context@^3.2.0 | react-native-safe-area-context@^3.2.0 | react-native-safe-area-context@^3.2.0 | react-native-safe-area-context@^3.1.9 | react-native-safe-area-context@^3.1.9 | -| screens | react-native-screens@^3.34.0 | react-native-screens@^3.31.0 | react-native-screens@^3.28.0 | react-native-screens@>=3.21.0 <3.28.0 | react-native-screens@^3.19.0 | react-native-screens@^3.18.2 | react-native-screens@^3.14.1 | react-native-screens@^3.13.1 | react-native-screens@^3.9.0 | react-native-screens@^3.9.0 | react-native-screens@^3.7.0 | react-native-screens@^3.1.1 | react-native-screens@^2.18.1 | react-native-screens@^2.10.1 | react-native-screens@^2.10.1 | -| shimmer | react-native-shimmer@^0.6.0 | react-native-shimmer@^0.6.0 | react-native-shimmer@^0.6.0 | react-native-shimmer@^0.6.0 | react-native-shimmer@^0.6.0 | react-native-shimmer@^0.5.0 | react-native-shimmer@^0.5.0 | react-native-shimmer@^0.5.0 | react-native-shimmer@^0.5.0 | react-native-shimmer@^0.5.0 | react-native-shimmer@^0.5.0 | react-native-shimmer@^0.5.0 | react-native-shimmer@^0.5.0 | react-native-shimmer@^0.5.0 | react-native-shimmer@^0.5.0 | -| sqlite | react-native-sqlite-storage@^6.0.1 | react-native-sqlite-storage@^6.0.1 | react-native-sqlite-storage@^6.0.1 | react-native-sqlite-storage@^6.0.1 | react-native-sqlite-storage@^6.0.1 | react-native-sqlite-storage@^6.0.1 | react-native-sqlite-storage@^6.0.1 | react-native-sqlite-storage@^5.0.0 | react-native-sqlite-storage@^5.0.0 | react-native-sqlite-storage@^5.0.0 | react-native-sqlite-storage@^5.0.0 | react-native-sqlite-storage@^5.0.0 | react-native-sqlite-storage@^3.3.11 | react-native-sqlite-storage@^3.3.11 | react-native-sqlite-storage@^3.3.11 | -| storage | @react-native-async-storage/async-storage@^2.0.0 | @react-native-async-storage/async-storage@^2.0.0 | @react-native-async-storage/async-storage@^1.22.0 | @react-native-async-storage/async-storage@^1.18.2 | @react-native-async-storage/async-storage@^1.17.11 | @react-native-async-storage/async-storage@^1.17.10 | @react-native-async-storage/async-storage@^1.17.7 | @react-native-async-storage/async-storage@^1.17.3 | @react-native-async-storage/async-storage@^1.15.16 | @react-native-async-storage/async-storage@^1.15.9 | @react-native-async-storage/async-storage@^1.15.8 | @react-native-async-storage/async-storage@^1.15.8 | @react-native-community/async-storage@^1.12.1 | @react-native-community/async-storage@^1.12.1 | @react-native-community/async-storage@^1.12.1 | -| svg | react-native-svg@^15.6.0 | react-native-svg@^15.4.0 | react-native-svg@^15.0.0 | react-native-svg@^13.14.0 | react-native-svg@^13.14.0 | react-native-svg@^12.3.0 | react-native-svg@^12.3.0 | react-native-svg@^12.3.0 | react-native-svg@^12.1.1 | react-native-svg@^12.1.1 | react-native-svg@^12.1.1 | react-native-svg@^12.1.1 | react-native-svg@^12.1.1 | react-native-svg@^12.1.1 | react-native-svg@^12.1.1 | -| test-app | react-native-test-app@^3.9.2 | react-native-test-app@^3.9.2 | react-native-test-app@^2.5.34 | react-native-test-app@^2.5.5 | react-native-test-app@^2.2.1 | react-native-test-app@^1.6.9 | react-native-test-app@^1.3.10 | react-native-test-app@^1.3.5 | react-native-test-app@^1.1.7 | react-native-test-app@^1.0.6 | react-native-test-app@^0.11.4 | react-native-test-app@^0.11.4 | react-native-test-app@^0.11.4 | react-native-test-app@^0.11.4 | react-native-test-app@^0.11.4 | -| webview | react-native-webview@^13.10.5 | react-native-webview@^13.10.5 | react-native-webview@^13.10.0 | react-native-webview@^13.2.2 | react-native-webview@^12.0.2 | react-native-webview@^11.23.0 | react-native-webview@^11.23.0 | react-native-webview@^11.22.6 | react-native-webview@^11.13.0 | react-native-webview@^11.13.0 | react-native-webview@^11.13.0 | react-native-webview@^11.4.2 | react-native-webview@^11.4.2 | react-native-webview@^11.0.3 | react-native-webview@^11.0.3 | +| Capability | 0.76 | 0.75 | 0.74 | 0.73 | 0.72 | 0.71 | 0.70 | 0.69 | 0.68 | 0.67 | 0.66 | 0.65 | 0.64 | 0.63 | 0.62 | 0.61 | +| ------------------------------------ | ----------------------------------------------------------------- | ----------------------------------------------------------------- | ----------------------------------------------------------------- | ----------------------------------------------------------------- | ----------------------------------------------------------------- | ----------------------------------------------------------------- | ----------------------------------------------------------------- | ----------------------------------------------------------------- | ----------------------------------------------------------------- | ----------------------------------------------------------------- | ----------------------------------------------------------------- | ----------------------------------------------------------------- | ----------------------------------------------------------------- | ----------------------------------------------------------------- | ----------------------------------------------------------------- | ----------------------------------------------------------------- | +| core | react-native@^0.76.0 | react-native@^0.75.0 | react-native@^0.74.0 | react-native@^0.73.0 | react-native@^0.72.0 | react-native@^0.71.0 | react-native@^0.70.0 | react-native@^0.69.0 | react-native@^0.68.0 | react-native@^0.67.0 | react-native@^0.66.0 | react-native@^0.65.0 | react-native@^0.64.2 | react-native@^0.63.2 | react-native@^0.62.3 | react-native@^0.61.5 | +| core-android | react-native@^0.76.0 | react-native@^0.75.0 | react-native@^0.74.0 | react-native@^0.73.0 | react-native@^0.72.0 | react-native@^0.71.0 | react-native@^0.70.0 | react-native@^0.69.0 | react-native@^0.68.0 | react-native@^0.67.0 | react-native@^0.66.0 | react-native@^0.65.0 | react-native@^0.64.2 | react-native@^0.63.2 | react-native@^0.62.3 | react-native@^0.61.5 | +| core-ios | react-native@^0.76.0 | react-native@^0.75.0 | react-native@^0.74.0 | react-native@^0.73.0 | react-native@^0.72.0 | react-native@^0.71.0 | react-native@^0.70.0 | react-native@^0.69.0 | react-native@^0.68.0 | react-native@^0.67.0 | react-native@^0.66.0 | react-native@^0.65.0 | react-native@^0.64.2 | react-native@^0.63.2 | react-native@^0.62.3 | react-native@^0.61.5 | +| core-macos | react-native-macos@^0.76.0 | react-native-macos@^0.75.0 | react-native-macos@^0.74.0 | react-native-macos@^0.73.0 | react-native-macos@^0.72.0 | react-native-macos@^0.71.0 | react-native-macos@^0.70.0 | react-native-macos@^0.69.0 | react-native-macos@^0.68.0 | react-native-macos@^0.67.0 | react-native-macos@^0.66.0 | react-native-macos@^0.65.0 | react-native-macos@^0.64.0 | react-native-macos@^0.63.0 | react-native-macos@^0.62.0 | react-native-macos@^0.61.0 | +| core-visionos | @callstack/react-native-visionos@^0.76.0 | @callstack/react-native-visionos@^0.75.0 | @callstack/react-native-visionos@^0.74.0 | @callstack/react-native-visionos@^0.73.0 | Meta package for installing `react` | Meta package for installing `react` | Meta package for installing `react` | Meta package for installing `react` | Meta package for installing `react` | Meta package for installing `react` | Meta package for installing `react` | Meta package for installing `react` | Meta package for installing `react` | Meta package for installing `react` | Meta package for installing `react` | Meta package for installing `react` | +| core-windows | react-native-windows@^0.76.0 | react-native-windows@^0.75.0 | react-native-windows@^0.74.0 | react-native-windows@^0.73.0 | react-native-windows@^0.72.0 | react-native-windows@^0.71.0 | react-native-windows@^0.70.0 | react-native-windows@^0.69.0 | react-native-windows@^0.68.0 | react-native-windows@^0.67.0 | react-native-windows@^0.66.0 | react-native-windows@^0.65.0 | react-native-windows@^0.64.0 | react-native-windows@^0.63.0 | react-native-windows@^0.62.0 | react-native-windows@^0.61.0 | +| animation | react-native-reanimated@^3.16.1 | react-native-reanimated@^3.15.0 | react-native-reanimated@^3.9.0 | react-native-reanimated@^3.6.0 | react-native-reanimated@^3.3.0 | react-native-reanimated@^2.14.1 | react-native-reanimated@^2.10.0 | react-native-reanimated@^2.9.0 | react-native-reanimated@^2.5.0 | react-native-reanimated@^2.2.4 | react-native-reanimated@^2.2.3 | react-native-reanimated@^2.2.1 | react-native-reanimated@^2.1.0 | react-native-reanimated@^1.13.3 | react-native-reanimated@^1.13.3 | react-native-reanimated@^1.13.3 | +| babel-preset-react-native | @react-native/babel-preset@^0.76.0 | @react-native/babel-preset@^0.75.0 | @react-native/babel-preset@^0.74.0 | @react-native/babel-preset@^0.73.0 | metro-react-native-babel-preset@^0.76.5 | metro-react-native-babel-preset@^0.73.7 | metro-react-native-babel-preset@^0.72.1 | metro-react-native-babel-preset@^0.70.3 | metro-react-native-babel-preset@^0.67.0 | metro-react-native-babel-preset@^0.66.2 | metro-react-native-babel-preset@^0.66.2 | metro-react-native-babel-preset@^0.66.0 | metro-react-native-babel-preset@^0.64.0 | metro-react-native-babel-preset@^0.59.0 | metro-react-native-babel-preset@^0.58.0 | metro-react-native-babel-preset@^0.56.0 | +| base64 | react-native-base64@^0.2.1 | react-native-base64@^0.2.1 | react-native-base64@^0.2.1 | react-native-base64@^0.2.1 | react-native-base64@^0.2.1 | react-native-base64@^0.2.1 | react-native-base64@^0.2.1 | react-native-base64@^0.2.1 | react-native-base64@^0.2.1 | react-native-base64@^0.2.1 | react-native-base64@^0.2.1 | react-native-base64@^0.2.1 | react-native-base64@^0.2.1 | react-native-base64@^0.2.1 | react-native-base64@^0.2.1 | react-native-base64@^0.2.1 | +| checkbox | @react-native-community/checkbox@^0.5.15 | @react-native-community/checkbox@^0.5.15 | @react-native-community/checkbox@^0.5.15 | @react-native-community/checkbox@^0.5.15 | @react-native-community/checkbox@^0.5.15 | @react-native-community/checkbox@^0.5.15 | @react-native-community/checkbox@^0.5.8 | @react-native-community/checkbox@^0.5.8 | @react-native-community/checkbox@^0.5.8 | @react-native-community/checkbox@^0.5.8 | @react-native-community/checkbox@^0.5.8 | @react-native-community/checkbox@^0.5.8 | @react-native-community/checkbox@^0.5.8 | @react-native-community/checkbox@^0.5.7 | @react-native-community/checkbox@^0.5.7 | @react-native-community/checkbox@^0.5.7 | +| clipboard | @react-native-clipboard/clipboard@^1.14.0 | @react-native-clipboard/clipboard@^1.14.0 | @react-native-clipboard/clipboard@^1.14.0 | @react-native-clipboard/clipboard@^1.14.0 | @react-native-clipboard/clipboard@^1.10.0 | @react-native-clipboard/clipboard@^1.10.0 | @react-native-clipboard/clipboard@^1.10.0 | @react-native-clipboard/clipboard@^1.10.0 | @react-native-clipboard/clipboard@^1.10.0 | @react-native-clipboard/clipboard@^1.9.0 | @react-native-clipboard/clipboard@^1.9.0 | @react-native-clipboard/clipboard@^1.9.0 | @react-native-clipboard/clipboard@^1.8.3 | @react-native-community/clipboard@^1.5.1 | @react-native-community/clipboard@^1.5.1 | @react-native-community/clipboard@^1.5.1 | +| community/cli | @react-native-community/cli@^15.0.0 | @react-native-community/cli@^14.0.0 | @react-native-community/cli@^13.6.4 | @react-native-community/cli@^12.1.1 | @react-native-community/cli@^11.3.2 | @react-native-community/cli@^10.0.0 | @react-native-community/cli@^9.0.0 | @react-native-community/cli@^8.0.4 | @react-native-community/cli@^7.0.3 | @react-native-community/cli@^6.0.0 | @react-native-community/cli@^6.0.0 | @react-native-community/cli@^6.0.0 | @react-native-community/cli@^5.0.1 | @react-native-community/cli@^4.10.0 | @react-native-community/cli@^4.5.1 | @react-native-community/cli@^3.0.0 | +| community/cli-android | @react-native-community/cli-platform-android@^15.0.0 | @react-native-community/cli-platform-android@^14.0.0 | @react-native-community/cli-platform-android@^13.6.4 | @react-native-community/cli-platform-android@^12.1.1 | @react-native-community/cli-platform-android@^11.3.2 | @react-native-community/cli-platform-android@^10.0.0 | @react-native-community/cli-platform-android@^9.0.0 | @react-native-community/cli-platform-android@^8.0.4 | @react-native-community/cli-platform-android@^7.0.1 | @react-native-community/cli-platform-android@^6.0.0 | @react-native-community/cli-platform-android@^6.0.0 | @react-native-community/cli-platform-android@^6.0.0 | @react-native-community/cli-platform-android@^5.0.1 | @react-native-community/cli-platform-android@^4.10.0 | @react-native-community/cli-platform-android@^4.5.1 | @react-native-community/cli-platform-android@^3.0.0 | +| community/cli-ios | @react-native-community/cli-platform-ios@^15.0.0 | @react-native-community/cli-platform-ios@^14.0.0 | @react-native-community/cli-platform-ios@^13.6.4 | @react-native-community/cli-platform-ios@^12.1.1 | @react-native-community/cli-platform-ios@^11.3.2 | @react-native-community/cli-platform-ios@^10.0.0 | @react-native-community/cli-platform-ios@^9.0.0 | @react-native-community/cli-platform-ios@^8.0.4 | @react-native-community/cli-platform-ios@^7.0.1 | @react-native-community/cli-platform-ios@^6.0.0 | @react-native-community/cli-platform-ios@^6.0.0 | @react-native-community/cli-platform-ios@^6.0.0 | @react-native-community/cli-platform-ios@^5.0.1 | @react-native-community/cli-platform-ios@^4.10.0 | @react-native-community/cli-platform-ios@^4.5.0 | @react-native-community/cli-platform-ios@^3.0.0 | +| core/metro-config | @react-native/metro-config@^0.76.0 | @react-native/metro-config@^0.75.0 | @react-native/metro-config@^0.74.0 | @react-native/metro-config@^0.73.0 | @react-native/metro-config@^0.72.0 | - | - | - | - | - | - | - | - | - | - | - | +| core/testing | Meta package for installing `core`, `jest`, `react-test-renderer` | Meta package for installing `core`, `jest`, `react-test-renderer` | Meta package for installing `core`, `jest`, `react-test-renderer` | Meta package for installing `core`, `jest`, `react-test-renderer` | Meta package for installing `core`, `jest`, `react-test-renderer` | Meta package for installing `core`, `jest`, `react-test-renderer` | Meta package for installing `core`, `jest`, `react-test-renderer` | Meta package for installing `core`, `jest`, `react-test-renderer` | Meta package for installing `core`, `jest`, `react-test-renderer` | Meta package for installing `core`, `jest`, `react-test-renderer` | Meta package for installing `core`, `jest`, `react-test-renderer` | Meta package for installing `core`, `jest`, `react-test-renderer` | Meta package for installing `core`, `jest`, `react-test-renderer` | Meta package for installing `core`, `jest`, `react-test-renderer` | Meta package for installing `core`, `jest`, `react-test-renderer` | Meta package for installing `core`, `jest`, `react-test-renderer` | +| datetime-picker | @react-native-community/datetimepicker@^8.0.0 | @react-native-community/datetimepicker@^8.0.0 | @react-native-community/datetimepicker@^8.0.0 | @react-native-community/datetimepicker@^8.0.0 | @react-native-community/datetimepicker@^7.6.2 | @react-native-community/datetimepicker@^6.4.2 | @react-native-community/datetimepicker@^6.3.3 | @react-native-community/datetimepicker@^6.0.2 | @react-native-community/datetimepicker@^6.0.2 | @react-native-community/datetimepicker@^3.5.2 | @react-native-community/datetimepicker@^3.5.2 | @react-native-community/datetimepicker@^3.5.2 | @react-native-community/datetimepicker@^3.4.6 | @react-native-community/datetimepicker@^3.0.9 | @react-native-community/datetimepicker@^3.0.9 | @react-native-community/datetimepicker@^3.0.9 | +| filesystem | react-native-fs@^2.18.0 | react-native-fs@^2.18.0 | react-native-fs@^2.18.0 | react-native-fs@^2.18.0 | react-native-fs@^2.18.0 | react-native-fs@^2.18.0 | react-native-fs@^2.18.0 | react-native-fs@^2.18.0 | react-native-fs@^2.18.0 | react-native-fs@^2.18.0 | react-native-fs@^2.18.0 | react-native-fs@^2.18.0 | react-native-fs@^2.17.0 | react-native-fs@^2.16.6 | react-native-fs@^2.16.6 | react-native-fs@^2.16.6 | +| floating-action | react-native-floating-action@^1.22.0 | react-native-floating-action@^1.22.0 | react-native-floating-action@^1.22.0 | react-native-floating-action@^1.22.0 | react-native-floating-action@^1.22.0 | react-native-floating-action@^1.22.0 | react-native-floating-action@^1.22.0 | react-native-floating-action@^1.22.0 | react-native-floating-action@^1.22.0 | react-native-floating-action@^1.22.0 | react-native-floating-action@^1.22.0 | react-native-floating-action@^1.22.0 | react-native-floating-action@^1.21.0 | react-native-floating-action@^1.21.0 | react-native-floating-action@^1.18.0 | react-native-floating-action@^1.18.0 | +| gestures | react-native-gesture-handler@^2.20.0 | react-native-gesture-handler@^2.18.1 | react-native-gesture-handler@^2.18.1 | react-native-gesture-handler@^2.14.0 | react-native-gesture-handler@^2.12.0 | react-native-gesture-handler@^2.9.0 | react-native-gesture-handler@^2.6.0 | react-native-gesture-handler@^2.5.0 | react-native-gesture-handler@^2.3.2 | react-native-gesture-handler@^1.10.3 | react-native-gesture-handler@^1.10.3 | react-native-gesture-handler@^1.10.3 | react-native-gesture-handler@^1.10.3 | react-native-gesture-handler@^1.10.3 | react-native-gesture-handler@^1.9.0 | react-native-gesture-handler@^1.9.0 | +| hermes | - | - | - | - | - | - | - | hermes-engine@~0.11.0 | hermes-engine@~0.11.0 | hermes-engine@~0.9.0 | hermes-engine@~0.9.0 | hermes-engine@~0.8.1 | hermes-engine@~0.7.0 | hermes-engine@~0.5.0 | hermes-engine@~0.4.0 | hermes-engine@^0.2.1 | +| hooks | @react-native-community/hooks@^2.8.0 | @react-native-community/hooks@^2.8.0 | @react-native-community/hooks@^2.8.0 | @react-native-community/hooks@^2.8.0 | @react-native-community/hooks@^2.8.0 | @react-native-community/hooks@^2.8.0 | @react-native-community/hooks@^2.8.0 | @react-native-community/hooks@^2.8.0 | @react-native-community/hooks@^2.8.0 | @react-native-community/hooks@^2.8.0 | @react-native-community/hooks@^2.8.0 | @react-native-community/hooks@^2.8.0 | @react-native-community/hooks@^2.6.0 | @react-native-community/hooks@^2.6.0 | @react-native-community/hooks@^2.6.0 | @react-native-community/hooks@^2.6.0 | +| html | react-native-render-html@^6.1.0 | react-native-render-html@^6.1.0 | react-native-render-html@^6.1.0 | react-native-render-html@^6.1.0 | react-native-render-html@^6.1.0 | react-native-render-html@^6.1.0 | react-native-render-html@^6.1.0 | react-native-render-html@^6.1.0 | react-native-render-html@^6.1.0 | react-native-render-html@^6.1.0 | react-native-render-html@^6.1.0 | react-native-render-html@^5.1.1 | react-native-render-html@^5.1.1 | react-native-render-html@^5.1.0 | react-native-render-html@^5.1.0 | react-native-render-html@^5.1.0 | +| jest | jest@^29.2.1 | jest@^29.2.1 | jest@^29.2.1 | jest@^29.2.1 | jest@^29.2.1 | jest@^29.2.1 | jest@^26.6.3 | jest@^26.6.3 | jest@^26.6.3 | jest@^26.6.3 | jest@^26.6.3 | jest@^26.6.3 | jest@^26.5.2 | jest@^24.9.0 | jest@^24.8.0 | jest@^24.8.0 | +| lazy-index | @rnx-kit/react-native-lazy-index@^2.1.7 | @rnx-kit/react-native-lazy-index@^2.1.7 | @rnx-kit/react-native-lazy-index@^2.1.7 | @rnx-kit/react-native-lazy-index@^2.1.7 | @rnx-kit/react-native-lazy-index@^2.1.7 | @rnx-kit/react-native-lazy-index@^2.1.7 | @rnx-kit/react-native-lazy-index@^2.1.7 | @rnx-kit/react-native-lazy-index@^2.1.7 | @rnx-kit/react-native-lazy-index@^2.1.7 | @rnx-kit/react-native-lazy-index@^2.1.7 | @rnx-kit/react-native-lazy-index@^2.1.7 | react-native-lazy-index@^2.1.1 | react-native-lazy-index@^2.1.1 | react-native-lazy-index@^2.1.1 | react-native-lazy-index@^2.1.1 | react-native-lazy-index@^2.1.1 | +| masked-view | @react-native-masked-view/masked-view@^0.3.0 | @react-native-masked-view/masked-view@^0.3.0 | @react-native-masked-view/masked-view@^0.3.0 | @react-native-masked-view/masked-view@^0.3.0 | @react-native-masked-view/masked-view@^0.2.9 | @react-native-masked-view/masked-view@^0.2.9 | @react-native-masked-view/masked-view@^0.2.7 | @react-native-masked-view/masked-view@^0.2.7 | @react-native-masked-view/masked-view@^0.2.6 | @react-native-masked-view/masked-view@^0.2.6 | @react-native-masked-view/masked-view@^0.2.6 | @react-native-masked-view/masked-view@^0.2.6 | @react-native-masked-view/masked-view@^0.2.4 | @react-native-masked-view/masked-view@^0.2.4 | @react-native-masked-view/masked-view@^0.2.4 | @react-native-masked-view/masked-view@^0.2.4 | +| metro | metro@^0.81.0 | metro@^0.80.3 | metro@^0.80.3 | metro@^0.80.0 | metro@^0.76.5 | metro@^0.73.7 | metro@^0.72.1 | metro@^0.70.1 | metro@^0.67.0 | metro@^0.66.2 | metro@^0.66.2 | metro@^0.66.0 | metro@^0.64.0 | metro@^0.59.0 | metro@^0.58.0 | metro@^0.56.0 | +| metro-config | metro-config@^0.81.0 | metro-config@^0.80.3 | metro-config@^0.80.3 | metro-config@^0.80.0 | metro-config@^0.76.5 | metro-config@^0.73.7 | metro-config@^0.72.1 | metro-config@^0.70.1 | metro-config@^0.67.0 | metro-config@^0.66.2 | metro-config@^0.66.2 | metro-config@^0.66.0 | metro-config@^0.64.0 | metro-config@^0.59.0 | metro-config@^0.58.0 | metro-config@^0.56.0 | +| metro-core | metro-core@^0.81.0 | metro-core@^0.80.3 | metro-core@^0.80.3 | metro-core@^0.80.0 | metro-core@^0.76.5 | metro-core@^0.73.7 | metro-core@^0.72.1 | metro-core@^0.70.1 | metro-core@^0.67.0 | metro-core@^0.66.2 | metro-core@^0.66.2 | metro-core@^0.66.0 | metro-core@^0.64.0 | metro-core@^0.59.0 | metro-core@^0.58.0 | metro-core@^0.56.0 | +| metro-react-native-babel-transformer | @react-native/metro-babel-transformer@^0.76.0 | @react-native/metro-babel-transformer@^0.75.0 | @react-native/metro-babel-transformer@^0.74.0 | @react-native/metro-babel-transformer@^0.73.0 | metro-react-native-babel-transformer@^0.76.5 | metro-react-native-babel-transformer@^0.73.7 | metro-react-native-babel-transformer@^0.72.1 | metro-react-native-babel-transformer@^0.70.1 | metro-react-native-babel-transformer@^0.67.0 | metro-react-native-babel-transformer@^0.66.2 | metro-react-native-babel-transformer@^0.66.2 | metro-react-native-babel-transformer@^0.66.0 | metro-react-native-babel-transformer@^0.64.0 | metro-react-native-babel-transformer@^0.59.0 | metro-react-native-babel-transformer@^0.58.0 | metro-react-native-babel-transformer@^0.56.0 | +| metro-resolver | metro-resolver@^0.81.0 | metro-resolver@^0.80.3 | metro-resolver@^0.80.3 | metro-resolver@^0.80.0 | metro-resolver@^0.76.5 | metro-resolver@^0.73.7 | metro-resolver@^0.72.1 | metro-resolver@^0.70.1 | metro-resolver@^0.67.0 | metro-resolver@^0.66.2 | metro-resolver@^0.66.2 | metro-resolver@^0.66.0 | metro-resolver@^0.64.0 | metro-resolver@^0.59.0 | metro-resolver@^0.58.0 | metro-resolver@^0.56.0 | +| metro-runtime | metro-runtime@^0.81.0 | metro-runtime@^0.80.3 | metro-runtime@^0.80.3 | metro-runtime@^0.80.0 | metro-runtime@^0.76.5 | metro-runtime@^0.73.7 | metro-runtime@^0.72.1 | metro-runtime@^0.70.1 | metro-runtime@^0.67.0 | metro-runtime@^0.66.2 | metro-runtime@^0.66.2 | metro-runtime@^0.66.0 | metro-runtime@^0.64.0 | metro-runtime@^0.59.0 | metro-runtime@^0.58.0 | metro-runtime@^0.56.0 | +| modal | react-native-modal@^13.0.0 | react-native-modal@^13.0.0 | react-native-modal@^13.0.0 | react-native-modal@^13.0.0 | react-native-modal@^13.0.0 | react-native-modal@^13.0.0 | react-native-modal@^13.0.0 | react-native-modal@^13.0.0 | react-native-modal@^13.0.0 | react-native-modal@^13.0.0 | react-native-modal@^13.0.0 | react-native-modal@^13.0.0 | react-native-modal@^11.10.0 | react-native-modal@^11.5.6 | react-native-modal@^11.5.6 | react-native-modal@^11.5.6 | +| navigation/native | @react-navigation/native@^6.0.8 | @react-navigation/native@^6.0.8 | @react-navigation/native@^6.0.8 | @react-navigation/native@^6.0.8 | @react-navigation/native@^6.0.8 | @react-navigation/native@^6.0.8 | @react-navigation/native@^6.0.8 | @react-navigation/native@^6.0.8 | @react-navigation/native@^6.0.8 | @react-navigation/native@^6.0.8 | @react-navigation/native@^6.0.8 | @react-navigation/native@^5.9.8 | @react-navigation/native@^5.9.8 | @react-navigation/native@^5.9.4 | @react-navigation/native@^5.7.6 | @react-navigation/native@^5.7.6 | +| navigation/stack | @react-navigation/stack@^6.3.21 | @react-navigation/stack@^6.3.21 | @react-navigation/stack@^6.3.21 | @react-navigation/stack@^6.3.21 | @react-navigation/stack@^6.2.0 | @react-navigation/stack@^6.2.0 | @react-navigation/stack@^6.2.0 | @react-navigation/stack@^6.2.0 | @react-navigation/stack@^6.2.0 | @react-navigation/stack@^6.2.0 | @react-navigation/stack@^6.2.0 | @react-navigation/stack@^5.14.9 | @react-navigation/stack@^5.14.9 | @react-navigation/stack@^5.14.4 | @react-navigation/stack@^5.9.3 | @react-navigation/stack@^5.9.3 | +| netinfo | @react-native-community/netinfo@^11.3.3 | @react-native-community/netinfo@^11.3.3 | @react-native-community/netinfo@^11.3.3 | @react-native-community/netinfo@^11.3.0 | @react-native-community/netinfo@^9.0.0 | @react-native-community/netinfo@^9.0.0 | @react-native-community/netinfo@^9.0.0 | @react-native-community/netinfo@^8.0.0 | @react-native-community/netinfo@^7.0.0 | @react-native-community/netinfo@^7.0.0 | @react-native-community/netinfo@^7.0.0 | @react-native-community/netinfo@^7.0.0 | @react-native-community/netinfo@^6.0.2 | @react-native-community/netinfo@^5.9.10 | @react-native-community/netinfo@^5.9.10 | @react-native-community/netinfo@^5.7.1 | +| popover | react-native-popover-view@^5.1.8 | react-native-popover-view@^5.1.8 | react-native-popover-view@^5.1.8 | react-native-popover-view@^5.1.8 | react-native-popover-view@^5.1.8 | react-native-popover-view@^5.0.0 | react-native-popover-view@^5.0.0 | react-native-popover-view@^5.0.0 | react-native-popover-view@^4.0.3 | react-native-popover-view@^4.0.3 | react-native-popover-view@^4.0.3 | react-native-popover-view@^4.0.3 | react-native-popover-view@^4.0.3 | react-native-popover-view@^3.1.1 | react-native-popover-view@^3.1.1 | react-native-popover-view@^3.1.1 | +| react | react@18.3.1 | react@^18.2.0 | react@18.2.0 | react@18.2.0 | react@18.2.0 | react@18.2.0 | react@18.1.0 | react@18.0.0 | react@17.0.2 | react@17.0.2 | react@17.0.2 | react@17.0.2 | react@17.0.1 | react@16.13.1 | react@16.11.0 | react@16.9.0 | +| react-dom | react-dom@^18.3.1 | react-dom@^18.2.0 | react-dom@^18.2.0 | react-dom@^18.2.0 | react-dom@^18.2.0 | react-dom@^18.2.0 | react-dom@^18.1.0 | react-dom@^18.0.0 | react-dom@17.0.2 | react-dom@17.0.2 | react-dom@17.0.2 | react-dom@17.0.2 | react-dom@17.0.1 | react-dom@16.13.1 | react-dom@16.11.0 | react-dom@16.9.0 | +| react-test-renderer | react-test-renderer@18.3.1 | react-test-renderer@^18.2.0 | react-test-renderer@18.2.0 | react-test-renderer@18.2.0 | react-test-renderer@18.2.0 | react-test-renderer@18.2.0 | react-test-renderer@18.1.0 | react-test-renderer@18.0.0 | react-test-renderer@17.0.2 | react-test-renderer@17.0.2 | react-test-renderer@17.0.2 | react-test-renderer@17.0.2 | react-test-renderer@17.0.1 | react-test-renderer@16.13.1 | react-test-renderer@16.11.0 | react-test-renderer@16.9.0 | +| safe-area | react-native-safe-area-context@^4.12.0 | react-native-safe-area-context@^4.10.5 | react-native-safe-area-context@^4.10.5 | react-native-safe-area-context@^4.8.2 | react-native-safe-area-context@>=4.5.3 <4.8 | react-native-safe-area-context@^4.5.1 | react-native-safe-area-context@^4.4.1 | react-native-safe-area-context@^4.3.1 | react-native-safe-area-context@^3.2.0 | react-native-safe-area-context@^3.2.0 | react-native-safe-area-context@^3.2.0 | react-native-safe-area-context@^3.2.0 | react-native-safe-area-context@^3.2.0 | react-native-safe-area-context@^3.2.0 | react-native-safe-area-context@^3.1.9 | react-native-safe-area-context@^3.1.9 | +| screens | react-native-screens@^3.34.0 | react-native-screens@^3.34.0 | react-native-screens@^3.31.0 | react-native-screens@^3.28.0 | react-native-screens@>=3.21.0 <3.28.0 | react-native-screens@^3.19.0 | react-native-screens@^3.18.2 | react-native-screens@^3.14.1 | react-native-screens@^3.13.1 | react-native-screens@^3.9.0 | react-native-screens@^3.9.0 | react-native-screens@^3.7.0 | react-native-screens@^3.1.1 | react-native-screens@^2.18.1 | react-native-screens@^2.10.1 | react-native-screens@^2.10.1 | +| shimmer | react-native-shimmer@^0.6.0 | react-native-shimmer@^0.6.0 | react-native-shimmer@^0.6.0 | react-native-shimmer@^0.6.0 | react-native-shimmer@^0.6.0 | react-native-shimmer@^0.6.0 | react-native-shimmer@^0.5.0 | react-native-shimmer@^0.5.0 | react-native-shimmer@^0.5.0 | react-native-shimmer@^0.5.0 | react-native-shimmer@^0.5.0 | react-native-shimmer@^0.5.0 | react-native-shimmer@^0.5.0 | react-native-shimmer@^0.5.0 | react-native-shimmer@^0.5.0 | react-native-shimmer@^0.5.0 | +| sqlite | react-native-sqlite-storage@^6.0.1 | react-native-sqlite-storage@^6.0.1 | react-native-sqlite-storage@^6.0.1 | react-native-sqlite-storage@^6.0.1 | react-native-sqlite-storage@^6.0.1 | react-native-sqlite-storage@^6.0.1 | react-native-sqlite-storage@^6.0.1 | react-native-sqlite-storage@^6.0.1 | react-native-sqlite-storage@^5.0.0 | react-native-sqlite-storage@^5.0.0 | react-native-sqlite-storage@^5.0.0 | react-native-sqlite-storage@^5.0.0 | react-native-sqlite-storage@^5.0.0 | react-native-sqlite-storage@^3.3.11 | react-native-sqlite-storage@^3.3.11 | react-native-sqlite-storage@^3.3.11 | +| storage | @react-native-async-storage/async-storage@^2.0.0 | @react-native-async-storage/async-storage@^2.0.0 | @react-native-async-storage/async-storage@^2.0.0 | @react-native-async-storage/async-storage@^1.22.0 | @react-native-async-storage/async-storage@^1.18.2 | @react-native-async-storage/async-storage@^1.17.11 | @react-native-async-storage/async-storage@^1.17.10 | @react-native-async-storage/async-storage@^1.17.7 | @react-native-async-storage/async-storage@^1.17.3 | @react-native-async-storage/async-storage@^1.15.16 | @react-native-async-storage/async-storage@^1.15.9 | @react-native-async-storage/async-storage@^1.15.8 | @react-native-async-storage/async-storage@^1.15.8 | @react-native-community/async-storage@^1.12.1 | @react-native-community/async-storage@^1.12.1 | @react-native-community/async-storage@^1.12.1 | +| svg | react-native-svg@^15.8.0 | react-native-svg@^15.6.0 | react-native-svg@^15.4.0 | react-native-svg@^15.0.0 | react-native-svg@^13.14.0 | react-native-svg@^13.14.0 | react-native-svg@^12.3.0 | react-native-svg@^12.3.0 | react-native-svg@^12.3.0 | react-native-svg@^12.1.1 | react-native-svg@^12.1.1 | react-native-svg@^12.1.1 | react-native-svg@^12.1.1 | react-native-svg@^12.1.1 | react-native-svg@^12.1.1 | react-native-svg@^12.1.1 | +| test-app | react-native-test-app@^3.10.18 | react-native-test-app@^3.9.2 | react-native-test-app@^3.9.2 | react-native-test-app@^2.5.34 | react-native-test-app@^2.5.5 | react-native-test-app@^2.2.1 | react-native-test-app@^1.6.9 | react-native-test-app@^1.3.10 | react-native-test-app@^1.3.5 | react-native-test-app@^1.1.7 | react-native-test-app@^1.0.6 | react-native-test-app@^0.11.4 | react-native-test-app@^0.11.4 | react-native-test-app@^0.11.4 | react-native-test-app@^0.11.4 | react-native-test-app@^0.11.4 | +| webview | react-native-webview@^13.12.2 | react-native-webview@^13.12.2 | react-native-webview@^13.12.2 | react-native-webview@^13.10.0 | react-native-webview@^13.2.2 | react-native-webview@^12.0.2 | react-native-webview@^11.23.0 | react-native-webview@^11.23.0 | react-native-webview@^11.22.6 | react-native-webview@^11.13.0 | react-native-webview@^11.13.0 | react-native-webview@^11.13.0 | react-native-webview@^11.4.2 | react-native-webview@^11.4.2 | react-native-webview@^11.0.3 | react-native-webview@^11.0.3 | diff --git a/packages/align-deps/package.json b/packages/align-deps/package.json index 2de0c3e86..8fa9c955d 100644 --- a/packages/align-deps/package.json +++ b/packages/align-deps/package.json @@ -40,6 +40,7 @@ "@rnx-kit/scripts": "*", "@rnx-kit/tools-language": "*", "@rnx-kit/tools-node": "*", + "@rnx-kit/tools-shell": "*", "@rnx-kit/tools-workspaces": "*", "@rnx-kit/tsconfig": "*", "@types/jest": "^29.2.1", diff --git a/packages/align-deps/scripts/update-profile.mjs b/packages/align-deps/scripts/update-profile.mjs index 5dbbf97de..09b4fccc2 100755 --- a/packages/align-deps/scripts/update-profile.mjs +++ b/packages/align-deps/scripts/update-profile.mjs @@ -1,9 +1,11 @@ #!/usr/bin/env node // @ts-check +import { untar } from "@rnx-kit/tools-shell"; import * as fs from "node:fs"; +import * as https from "node:https"; import * as path from "node:path"; -import { URL } from "node:url"; +import { URL, fileURLToPath } from "node:url"; import packageJson from "package-json"; import semverCoerce from "semver/functions/coerce.js"; import semverCompare from "semver/functions/compare.js"; @@ -19,6 +21,7 @@ import semverCompare from "semver/functions/compare.js"; * latest: string; * modified: string; * homepage?: string; + * tarball: string; * dependencies?: Record; * peerDependencies?: Record; * }} PackageInfo @@ -59,6 +62,7 @@ async function fetchPackageInfo(pkg, targetVersion = "latest") { const { version: latest, homepage, + dist: { tarball }, dependencies, peerDependencies, time, @@ -76,6 +80,7 @@ async function fetchPackageInfo(pkg, targetVersion = "latest") { homepage, dependencies: Optional(dependencies), peerDependencies: Optional(peerDependencies), + tarball, }; } @@ -193,6 +198,11 @@ const reactNative: Package = { export const profile: Profile = { ...profile_${currentVersionVarName}, + + /********* + * React * + *********/ + react: { name: "react", version: "${reactVersion}", @@ -209,6 +219,10 @@ export const profile: Profile = { devOnly: true, }, + /******** + * Core * + ********/ + core: reactNative, "core-android": reactNative, "core-ios": reactNative, @@ -233,6 +247,10 @@ export const profile: Profile = { devOnly: true, }, + /********* + * Tools * + *********/ + "babel-preset-react-native": { name: "${babelPresetName}", version: "^${babelPresetVersion}", @@ -284,6 +302,10 @@ export const profile: Profile = { version: "^${metroVersion}", devOnly: true, }, + + /********************* + * Community Modules * + *********************/ }; `; } @@ -294,93 +316,115 @@ export const profile: Profile = { * @returns {Promise} */ async function getCurrentMetroVersion(dependencies) { - const metroVersionDependencyChains = [ - // 0.73+ - ["@react-native/community-cli-plugin"], - // 0.65 - 0.72 - ["@react-native-community/cli", "@react-native-community/cli-plugin-metro"], - ]; - - for (const chain of metroVersionDependencyChains) { - const deps = await chain.reduce( - (p, packageName) => - p.then(async (dependencies) => { - if (!dependencies) { - return undefined; - } + const chain = ["react-native", "@react-native/community-cli-plugin"]; + const deps = await chain.reduce( + (p, packageName) => + p.then(async (dependencies) => { + if (!dependencies) { + return undefined; + } - try { + try { + const packageInfo = await packageJson(packageName, { + version: getPackageVersion(packageName, dependencies), + fullMetadata: true, + }); + return Optional(packageInfo.dependencies); + } catch (e) { + if (e.code === "ETARGET" || e.name === "VersionNotFoundError") { + // Some packages, such as `@react-native-community/cli`, are still + // in alpha or beta while react-native is in pre-release. Try + // again with the `next` tag. const packageInfo = await packageJson(packageName, { - version: getPackageVersion(packageName, dependencies), + version: "next", fullMetadata: true, }); return Optional(packageInfo.dependencies); - } catch (e) { - if (e.code === "ETARGET" || e.name === "VersionNotFoundError") { - // Some packages, such as `@react-native-community/cli`, are still - // in alpha or beta while react-native is in pre-release. Try - // again with the `next` tag. - const packageInfo = await packageJson(packageName, { - version: "next", - fullMetadata: true, - }); - return Optional(packageInfo.dependencies); - } else { - return undefined; - } + } else { + return undefined; } - }), - Promise.resolve(Optional(dependencies)) - ); + } + }), + Promise.resolve(Optional(dependencies)) + ); - if (deps) { - return getPackageVersion("metro", deps); - } + if (!deps) { + throw new Error("Failed to get 'metro' version"); } - throw new Error("Failed to get 'metro' version"); + return getPackageVersion("metro", deps); } /** * Fetches package versions for specified react-native version. * @param {string} preset * @param {string} targetVersion - * @param {Profile} latestProfile * @returns {Promise} */ -async function makeProfile(preset, targetVersion, latestProfile) { - const reactNativeInfo = await fetchPackageInfo( - latestProfile["core"], - `^${targetVersion}.0-0` - ); - if (!reactNativeInfo) { - throw new Error(`Failed to get manifest of 'react-native@${targetVersion}`); +async function makeProfile(preset, targetVersion) { + const templatePkg = { + name: "@react-native-community/template", + version: "0.0.0", + }; + const template = await fetchPackageInfo(templatePkg, `^${targetVersion}.0-0`); + if (!template) { + throw new Error( + `Failed to get manifest of '${templatePkg.name}@${targetVersion}` + ); } - const { dependencies, peerDependencies } = reactNativeInfo; + const { tarball } = template; + const templateDir = await new Promise((resolve, reject) => { + https + .get(tarball, (res) => { + const tmpUrl = new URL("../node_modules/.tmp", import.meta.url); + fs.mkdirSync(tmpUrl, { recursive: true }); + + const tmpDir = fileURLToPath(tmpUrl); + const dest = path.join(fileURLToPath(tmpUrl), path.basename(tarball)); + const fh = fs.createWriteStream(dest); + res.pipe(fh); + fh.on("finish", () => { + fh.close(); + untar(dest); + resolve(path.join(tmpDir, "package")); + }); + }) + .on("error", (err) => reject(err)); + }); + + const manifestPath = path.join(templateDir, "template", "package.json"); + const manifest = JSON.parse( + fs.readFileSync(manifestPath, { encoding: "utf-8" }) + ); + + const { dependencies, devDependencies } = manifest; if (!dependencies) { throw new Error( - `Failed to get dependencies of 'react-native@${targetVersion}` + `Failed to get dependencies of '${templatePkg.name}@${targetVersion}` ); } - if (!peerDependencies) { + if (!devDependencies) { throw new Error( - `Failed to get peer dependencies of 'react-native@${targetVersion}` + `Failed to get dev dependencies of '${templatePkg.name}@${targetVersion}` ); } return generateFromTemplate({ preset, targetVersion, - reactVersion: getPackageVersion("react", peerDependencies), - cliVersion: getPackageVersion("@react-native-community/cli", dependencies), + reactVersion: getPackageVersion("react", dependencies), + cliVersion: getPackageVersion( + "@react-native-community/cli", + devDependencies + ), cliAndroidVersion: getPackageVersion( "@react-native-community/cli-platform-android", - dependencies + devDependencies ), cliIOSVersion: getPackageVersion( "@react-native-community/cli-platform-ios", - dependencies + devDependencies ), metroVersion: await getCurrentMetroVersion(dependencies), }); @@ -409,8 +453,6 @@ async function main({ .reverse() ); - const latestProfile = preset[allVersions[0]]; - if (targetVersion) { if (!force && preset[targetVersion]) { console.error( @@ -420,11 +462,7 @@ async function main({ } try { - const newProfile = await makeProfile( - presetName, - targetVersion, - latestProfile - ); + const newProfile = await makeProfile(presetName, targetVersion); if (newProfile) { const [dst, presetFile] = getProfilePath(presetName, targetVersion); fs.writeFile(dst, newProfile, () => { @@ -505,7 +543,7 @@ async function main({ /** @type {[string, TableRow][]} */ const delta = []; await Promise.all( - Object.entries(latestProfile) + Object.entries(preset[allVersions[0]]) .filter(([capability]) => !ignoredCapabilities.includes(capability)) .map(async ([capability, pkg]) => { await fetchPackageInfo(pkg).then((info) => { diff --git a/packages/align-deps/src/presets/microsoft/react-native.ts b/packages/align-deps/src/presets/microsoft/react-native.ts index 093af5358..768a3f05c 100644 --- a/packages/align-deps/src/presets/microsoft/react-native.ts +++ b/packages/align-deps/src/presets/microsoft/react-native.ts @@ -14,6 +14,7 @@ import { profile as profile_0_72 } from "./react-native/profile-0.72"; import { profile as profile_0_73 } from "./react-native/profile-0.73"; import { profile as profile_0_74 } from "./react-native/profile-0.74"; import { profile as profile_0_75 } from "./react-native/profile-0.75"; +import { profile as profile_0_76 } from "./react-native/profile-0.76"; // Also export this by name for scripts to work around a bug where this module // is wrapped twice, i.e. `{ default: { default: preset } }`, when imported as @@ -34,4 +35,5 @@ export const preset: Readonly = { "0.73": profile_0_73, "0.74": profile_0_74, "0.75": profile_0_75, + "0.76": profile_0_76, }; diff --git a/packages/align-deps/src/presets/microsoft/react-native/profile-0.74.ts b/packages/align-deps/src/presets/microsoft/react-native/profile-0.74.ts index 41c393510..6e3a0e5d5 100644 --- a/packages/align-deps/src/presets/microsoft/react-native/profile-0.74.ts +++ b/packages/align-deps/src/presets/microsoft/react-native/profile-0.74.ts @@ -111,7 +111,7 @@ export const profile: Profile = { }, netinfo: { name: "@react-native-community/netinfo", - version: "^11.3.1", + version: "^11.3.3", }, "safe-area": { name: "react-native-safe-area-context", @@ -136,6 +136,6 @@ export const profile: Profile = { }, webview: { name: "react-native-webview", - version: "^13.10.5", + version: "^13.12.2", }, }; diff --git a/packages/align-deps/src/presets/microsoft/react-native/profile-0.76.ts b/packages/align-deps/src/presets/microsoft/react-native/profile-0.76.ts new file mode 100644 index 000000000..21e73ca5b --- /dev/null +++ b/packages/align-deps/src/presets/microsoft/react-native/profile-0.76.ts @@ -0,0 +1,142 @@ +import type { Package, Profile } from "../../../types"; +import { profile as profile_0_75 } from "./profile-0.75"; + +const reactNative: Package = { + name: "react-native", + version: "^0.76.0", + capabilities: ["react", "core/metro-config", "community/cli"], +}; + +export const profile: Profile = { + ...profile_0_75, + + /********* + * React * + *********/ + + react: { + name: "react", + version: "18.3.1", + }, + "react-dom": { + name: "react-dom", + version: "^18.3.1", + capabilities: ["react"], + }, + "react-test-renderer": { + name: "react-test-renderer", + version: "18.3.1", + capabilities: ["react"], + devOnly: true, + }, + + /******** + * Core * + ********/ + + core: reactNative, + "core-android": reactNative, + "core-ios": reactNative, + "core-macos": { + name: "react-native-macos", + version: "^0.76.0", + capabilities: ["react"], + }, + "core-visionos": { + name: "@callstack/react-native-visionos", + version: "^0.76.0", + capabilities: ["react"], + }, + "core-windows": { + name: "react-native-windows", + version: "^0.76.0", + capabilities: ["core"], + }, + "core/metro-config": { + name: "@react-native/metro-config", + version: "^0.76.0", + devOnly: true, + }, + + /********* + * Tools * + *********/ + + "babel-preset-react-native": { + name: "@react-native/babel-preset", + version: "^0.76.0", + devOnly: true, + }, + "community/cli": { + name: "@react-native-community/cli", + version: "^15.0.0", + capabilities: ["community/cli-android", "community/cli-ios"], + devOnly: true, + }, + "community/cli-android": { + name: "@react-native-community/cli-platform-android", + version: "^15.0.0", + devOnly: true, + }, + "community/cli-ios": { + name: "@react-native-community/cli-platform-ios", + version: "^15.0.0", + devOnly: true, + }, + metro: { + name: "metro", + version: "^0.81.0", + devOnly: true, + }, + "metro-config": { + name: "metro-config", + version: "^0.81.0", + devOnly: true, + }, + "metro-core": { + name: "metro-core", + version: "^0.81.0", + devOnly: true, + }, + "metro-react-native-babel-transformer": { + name: "@react-native/metro-babel-transformer", + version: "^0.76.0", + devOnly: true, + }, + "metro-resolver": { + name: "metro-resolver", + version: "^0.81.0", + devOnly: true, + }, + "metro-runtime": { + name: "metro-runtime", + version: "^0.81.0", + devOnly: true, + }, + + /********************* + * Community Modules * + *********************/ + + animation: { + name: "react-native-reanimated", + version: "^3.16.1", + }, + gestures: { + name: "react-native-gesture-handler", + version: "^2.20.0", + }, + "safe-area": { + name: "react-native-safe-area-context", + version: "^4.12.0", + }, + svg: { + name: "react-native-svg", + version: "^15.8.0", + }, + "test-app": { + name: "react-native-test-app", + version: "^3.10.18", + devOnly: true, + }, +}; diff --git a/packages/align-deps/test/preset.test.ts b/packages/align-deps/test/preset.test.ts index cc0cee845..8a1622fb1 100644 --- a/packages/align-deps/test/preset.test.ts +++ b/packages/align-deps/test/preset.test.ts @@ -8,6 +8,7 @@ import { profile as profile_0_72 } from "../src/presets/microsoft/react-native/p import { profile as profile_0_73 } from "../src/presets/microsoft/react-native/profile-0.73"; import { profile as profile_0_74 } from "../src/presets/microsoft/react-native/profile-0.74"; import { profile as profile_0_75 } from "../src/presets/microsoft/react-native/profile-0.75"; +import { profile as profile_0_76 } from "../src/presets/microsoft/react-native/profile-0.76"; describe("filterPreset()", () => { test("returns no profiles if requirements cannot be satisfied", () => { @@ -39,6 +40,7 @@ describe("filterPreset()", () => { "0.73": profile_0_73, "0.74": profile_0_74, "0.75": profile_0_75, + "0.76": profile_0_76, }); }); @@ -52,6 +54,7 @@ describe("filterPreset()", () => { "0.73": profile_0_73, "0.74": profile_0_74, "0.75": profile_0_75, + "0.76": profile_0_76, }); }); diff --git a/packages/react-native-auth/package.json b/packages/react-native-auth/package.json index 3de9e5b08..a2d82ed3e 100644 --- a/packages/react-native-auth/package.json +++ b/packages/react-native-auth/package.json @@ -32,8 +32,8 @@ "update-readme": "rnx-kit-scripts update-api-readme" }, "peerDependencies": { - "react": "16.11.0 || 16.13.1 || 17.0.1 || 17.0.2 || 18.0.0 || 18.1.0 || 18.2.0 || ^18.2.0", - "react-native": "^0.62.3 || ^0.63.2 || ^0.64.2 || ^0.65.0 || ^0.66.0 || ^0.67.0 || ^0.68.0 || ^0.69.0 || ^0.70.0 || ^0.71.0 || ^0.72.0 || ^0.73.0 || ^0.74.0 || ^0.75.0" + "react": "16.11.0 || 16.13.1 || 17.0.1 || 17.0.2 || 18.0.0 || 18.1.0 || 18.2.0 || ^18.2.0 || 18.3.1", + "react-native": "^0.62.3 || ^0.63.2 || ^0.64.2 || ^0.65.0 || ^0.66.0 || ^0.67.0 || ^0.68.0 || ^0.69.0 || ^0.70.0 || ^0.71.0 || ^0.72.0 || ^0.73.0 || ^0.74.0 || ^0.75.0 || ^0.76.0" }, "devDependencies": { "@babel/core": "^7.20.0", diff --git a/packages/tools-shell/README.md b/packages/tools-shell/README.md index dd0bddd76..ce108466f 100644 --- a/packages/tools-shell/README.md +++ b/packages/tools-shell/README.md @@ -29,5 +29,6 @@ import * as commandTools from "@rnx-kit/tools-shell/command"; | command | `ensureInstalled(check, message)` | Throws if the provided command fails. | | command | `makeCommand(command, userOptions)` | Creates an async function for calling the specified command. | | command | `makeCommandSync(command)` | Creates a synchronous function for calling the specified command. | +| untar | `untar(archive)` | Invokes `tar xf`. | diff --git a/packages/tools-shell/package.json b/packages/tools-shell/package.json index 0ecf9d928..fdc79802d 100644 --- a/packages/tools-shell/package.json +++ b/packages/tools-shell/package.json @@ -30,6 +30,11 @@ "typescript": "./src/command.ts", "default": "./lib/command.js" }, + "./untar": { + "types": "./lib/untar.d.ts", + "typescript": "./src/untar.ts", + "default": "./lib/untar.js" + }, "./package.json": "./package.json" }, "repository": { diff --git a/packages/tools-shell/src/index.ts b/packages/tools-shell/src/index.ts index c6b85e312..d667650f4 100644 --- a/packages/tools-shell/src/index.ts +++ b/packages/tools-shell/src/index.ts @@ -5,3 +5,4 @@ export { makeCommand, makeCommandSync, } from "./command.js"; +export { untar } from "./untar.js"; diff --git a/packages/tools-shell/src/untar.ts b/packages/tools-shell/src/untar.ts new file mode 100644 index 000000000..27c26f988 --- /dev/null +++ b/packages/tools-shell/src/untar.ts @@ -0,0 +1,29 @@ +import type { SpawnSyncReturns } from "node:child_process"; +import { spawnSync } from "node:child_process"; +import * as path from "node:path"; + +/** + * Invokes `tar xf`. + */ +export function untar(archive: string): SpawnSyncReturns { + const args = ["xf", archive]; + const options = { cwd: path.dirname(archive) }; + const result = spawnSync("tar", args, options); + + // If we run `tar` from Git Bash with a Windows path, it will fail with: + // + // tar: Cannot connect to C: resolve failed + // + // GNU Tar assumes archives with a colon in the file name are on another + // machine. See also + // https://www.gnu.org/software/tar/manual/html_section/file.html. + if ( + process.platform === "win32" && + result.stderr.toString().includes("tar: Cannot connect to") + ) { + args.push("--force-local"); + return spawnSync("tar", args, options); + } + + return result; +} diff --git a/yarn.lock b/yarn.lock index 4dbc39227..ca278e6e0 100644 --- a/yarn.lock +++ b/yarn.lock @@ -3633,6 +3633,7 @@ __metadata: "@rnx-kit/scripts": "npm:*" "@rnx-kit/tools-language": "npm:*" "@rnx-kit/tools-node": "npm:*" + "@rnx-kit/tools-shell": "npm:*" "@rnx-kit/tools-workspaces": "npm:*" "@rnx-kit/tsconfig": "npm:*" "@types/jest": "npm:^29.2.1" @@ -4298,8 +4299,8 @@ __metadata: react-native: "npm:^0.75.0" typescript: "npm:^5.0.0" peerDependencies: - react: 16.11.0 || 16.13.1 || 17.0.1 || 17.0.2 || 18.0.0 || 18.1.0 || 18.2.0 || ^18.2.0 - react-native: ^0.62.3 || ^0.63.2 || ^0.64.2 || ^0.65.0 || ^0.66.0 || ^0.67.0 || ^0.68.0 || ^0.69.0 || ^0.70.0 || ^0.71.0 || ^0.72.0 || ^0.73.0 || ^0.74.0 || ^0.75.0 + react: 16.11.0 || 16.13.1 || 17.0.1 || 17.0.2 || 18.0.0 || 18.1.0 || 18.2.0 || ^18.2.0 || 18.3.1 + react-native: ^0.62.3 || ^0.63.2 || ^0.64.2 || ^0.65.0 || ^0.66.0 || ^0.67.0 || ^0.68.0 || ^0.69.0 || ^0.70.0 || ^0.71.0 || ^0.72.0 || ^0.73.0 || ^0.74.0 || ^0.75.0 || ^0.76.0 languageName: unknown linkType: soft @@ -4606,7 +4607,7 @@ __metadata: languageName: unknown linkType: soft -"@rnx-kit/tools-shell@npm:^0.2.0, @rnx-kit/tools-shell@workspace:packages/tools-shell": +"@rnx-kit/tools-shell@npm:*, @rnx-kit/tools-shell@npm:^0.2.0, @rnx-kit/tools-shell@workspace:packages/tools-shell": version: 0.0.0-use.local resolution: "@rnx-kit/tools-shell@workspace:packages/tools-shell" dependencies: