From 3ca5dcecd4561c095af918054bc4100444d1fef7 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Mateo=20Guzm=C3=A1n?= Date: Sat, 1 Mar 2025 12:30:21 +0100 Subject: [PATCH 1/4] Migrate ReactNativeVersion to Kotlin --- .../systeminfo/ReactNativeVersion.java | 22 ---------- .../modules/systeminfo/ReactNativeVersion.kt | 19 +++++++++ .../set-rn-artifacts-version-test.js.snap | 42 ++++++++----------- .../__snapshots__/set-version-test.js.snap | 6 +-- scripts/releases/set-rn-artifacts-version.js | 4 +- .../ReactNativeVersion.kt-template.js | 37 ++++++++++++++++ 6 files changed, 79 insertions(+), 51 deletions(-) delete mode 100644 packages/react-native/ReactAndroid/src/main/java/com/facebook/react/modules/systeminfo/ReactNativeVersion.java create mode 100644 packages/react-native/ReactAndroid/src/main/java/com/facebook/react/modules/systeminfo/ReactNativeVersion.kt create mode 100644 scripts/releases/templates/ReactNativeVersion.kt-template.js diff --git a/packages/react-native/ReactAndroid/src/main/java/com/facebook/react/modules/systeminfo/ReactNativeVersion.java b/packages/react-native/ReactAndroid/src/main/java/com/facebook/react/modules/systeminfo/ReactNativeVersion.java deleted file mode 100644 index dd881ce78cac..000000000000 --- a/packages/react-native/ReactAndroid/src/main/java/com/facebook/react/modules/systeminfo/ReactNativeVersion.java +++ /dev/null @@ -1,22 +0,0 @@ -/** - * Copyright (c) Meta Platforms, Inc. and affiliates. - * - * This source code is licensed under the MIT license found in the - * LICENSE file in the root directory of this source tree. - * - * @generated by scripts/releases/set-version.js - */ - -package com.facebook.react.modules.systeminfo; - -import com.facebook.react.common.MapBuilder; - -import java.util.Map; - -public class ReactNativeVersion { - public static final Map VERSION = MapBuilder.of( - "major", 1000, - "minor", 0, - "patch", 0, - "prerelease", null); -} diff --git a/packages/react-native/ReactAndroid/src/main/java/com/facebook/react/modules/systeminfo/ReactNativeVersion.kt b/packages/react-native/ReactAndroid/src/main/java/com/facebook/react/modules/systeminfo/ReactNativeVersion.kt new file mode 100644 index 000000000000..ff6e7dcc8065 --- /dev/null +++ b/packages/react-native/ReactAndroid/src/main/java/com/facebook/react/modules/systeminfo/ReactNativeVersion.kt @@ -0,0 +1,19 @@ +/** + * Copyright (c) Meta Platforms, Inc. and affiliates. + * + * This source code is licensed under the MIT license found in the + * LICENSE file in the root directory of this source tree. + * + * @generated by scripts/releases/set-version.js + */ + +package com.facebook.react.modules.systeminfo + +public object ReactNativeVersion { + public val VERSION: MutableMap = mutableMapOf( + "major" to 1000, + "minor" to 0, + "patch" to 0, + "prerelease" to null + ) +} diff --git a/scripts/releases/__tests__/__snapshots__/set-rn-artifacts-version-test.js.snap b/scripts/releases/__tests__/__snapshots__/set-rn-artifacts-version-test.js.snap index 407c8dc7f8c5..f26bdaae80d4 100644 --- a/scripts/releases/__tests__/__snapshots__/set-rn-artifacts-version-test.js.snap +++ b/scripts/releases/__tests__/__snapshots__/set-rn-artifacts-version-test.js.snap @@ -65,7 +65,7 @@ exports[`updateReactNativeArtifacts should set nightly version: packages/react-n " `; -exports[`updateReactNativeArtifacts should set nightly version: packages/react-native/ReactAndroid/src/main/java/com/facebook/react/modules/systeminfo/ReactNativeVersion.java 1`] = ` +exports[`updateReactNativeArtifacts should set nightly version: packages/react-native/ReactAndroid/src/main/java/com/facebook/react/modules/systeminfo/ReactNativeVersion.kt 1`] = ` "/** * Copyright (c) Meta Platforms, Inc. and affiliates. * @@ -75,18 +75,15 @@ exports[`updateReactNativeArtifacts should set nightly version: packages/react-n * << GENERATED >> */ -package com.facebook.react.modules.systeminfo; +package com.facebook.react.modules.systeminfo -import com.facebook.react.common.MapBuilder; - -import java.util.Map; - -public class ReactNativeVersion { - public static final Map VERSION = MapBuilder.of( - \\"major\\", 0, - \\"minor\\", 81, - \\"patch\\", 0, - \\"prerelease\\", \\"nightly-29282302-abcd1234\\"); +public object ReactNativeVersion { + public val VERSION: MutableMap = mutableMapOf( + \\"major\\" to 0, + \\"minor\\" to 81, + \\"patch\\" to 0, + \\"prerelease\\" to \\"nightly-29282302-abcd1234\\" + ) } " `; @@ -188,7 +185,7 @@ exports[`updateReactNativeArtifacts should set release version: packages/react-n " `; -exports[`updateReactNativeArtifacts should set release version: packages/react-native/ReactAndroid/src/main/java/com/facebook/react/modules/systeminfo/ReactNativeVersion.java 1`] = ` +exports[`updateReactNativeArtifacts should set release version: packages/react-native/ReactAndroid/src/main/java/com/facebook/react/modules/systeminfo/ReactNativeVersion.kt 1`] = ` "/** * Copyright (c) Meta Platforms, Inc. and affiliates. * @@ -198,18 +195,15 @@ exports[`updateReactNativeArtifacts should set release version: packages/react-n * << GENERATED >> */ -package com.facebook.react.modules.systeminfo; - -import com.facebook.react.common.MapBuilder; - -import java.util.Map; +package com.facebook.react.modules.systeminfo -public class ReactNativeVersion { - public static final Map VERSION = MapBuilder.of( - \\"major\\", 0, - \\"minor\\", 81, - \\"patch\\", 0, - \\"prerelease\\", null); +public object ReactNativeVersion { + public val VERSION: MutableMap = mutableMapOf( + \\"major\\" to 0, + \\"minor\\" to 81, + \\"patch\\" to 0, + \\"prerelease\\" to null + ) } " `; diff --git a/scripts/releases/__tests__/__snapshots__/set-version-test.js.snap b/scripts/releases/__tests__/__snapshots__/set-version-test.js.snap index 8bb8f5b58bd3..ac25c8afc57f 100644 --- a/scripts/releases/__tests__/__snapshots__/set-version-test.js.snap +++ b/scripts/releases/__tests__/__snapshots__/set-version-test.js.snap @@ -61,7 +61,7 @@ exports[`setVersion updates monorepo for nightly: set-version/packages/react-nat exports[`setVersion updates monorepo for nightly: set-version/packages/react-native/ReactAndroid/gradle.properties 1`] = `"[omitted]"`; -exports[`setVersion updates monorepo for nightly: set-version/packages/react-native/ReactAndroid/src/main/java/com/facebook/react/modules/systeminfo/ReactNativeVersion.java 1`] = `"[omitted]"`; +exports[`setVersion updates monorepo for nightly: set-version/packages/react-native/ReactAndroid/src/main/java/com/facebook/react/modules/systeminfo/ReactNativeVersion.kt 1`] = `"[omitted]"`; exports[`setVersion updates monorepo for nightly: set-version/packages/react-native/ReactCommon/cxxreact/ReactNativeVersion.h 1`] = `"[omitted]"`; @@ -142,7 +142,7 @@ exports[`setVersion updates monorepo for release-candidate: set-version/packages exports[`setVersion updates monorepo for release-candidate: set-version/packages/react-native/ReactAndroid/gradle.properties 1`] = `"[omitted]"`; -exports[`setVersion updates monorepo for release-candidate: set-version/packages/react-native/ReactAndroid/src/main/java/com/facebook/react/modules/systeminfo/ReactNativeVersion.java 1`] = `"[omitted]"`; +exports[`setVersion updates monorepo for release-candidate: set-version/packages/react-native/ReactAndroid/src/main/java/com/facebook/react/modules/systeminfo/ReactNativeVersion.kt 1`] = `"[omitted]"`; exports[`setVersion updates monorepo for release-candidate: set-version/packages/react-native/ReactCommon/cxxreact/ReactNativeVersion.h 1`] = `"[omitted]"`; @@ -223,7 +223,7 @@ exports[`setVersion updates monorepo for stable version: set-version/packages/re exports[`setVersion updates monorepo for stable version: set-version/packages/react-native/ReactAndroid/gradle.properties 1`] = `"[omitted]"`; -exports[`setVersion updates monorepo for stable version: set-version/packages/react-native/ReactAndroid/src/main/java/com/facebook/react/modules/systeminfo/ReactNativeVersion.java 1`] = `"[omitted]"`; +exports[`setVersion updates monorepo for stable version: set-version/packages/react-native/ReactAndroid/src/main/java/com/facebook/react/modules/systeminfo/ReactNativeVersion.kt 1`] = `"[omitted]"`; exports[`setVersion updates monorepo for stable version: set-version/packages/react-native/ReactCommon/cxxreact/ReactNativeVersion.h 1`] = `"[omitted]"`; diff --git a/scripts/releases/set-rn-artifacts-version.js b/scripts/releases/set-rn-artifacts-version.js index 78b52dc88c6f..58557dbb97ad 100755 --- a/scripts/releases/set-rn-artifacts-version.js +++ b/scripts/releases/set-rn-artifacts-version.js @@ -91,9 +91,9 @@ function updateSourceFiles( fs.writeFile( path.join( REPO_ROOT, - 'packages/react-native/ReactAndroid/src/main/java/com/facebook/react/modules/systeminfo/ReactNativeVersion.java', + 'packages/react-native/ReactAndroid/src/main/java/com/facebook/react/modules/systeminfo/ReactNativeVersion.kt', ), - require('./templates/ReactNativeVersion.java-template')(templateData), + require('./templates/ReactNativeVersion.kt-template')(templateData), ), fs.writeFile( path.join(REPO_ROOT, 'packages/react-native/React/Base/RCTVersion.m'), diff --git a/scripts/releases/templates/ReactNativeVersion.kt-template.js b/scripts/releases/templates/ReactNativeVersion.kt-template.js new file mode 100644 index 000000000000..4e55a29c1975 --- /dev/null +++ b/scripts/releases/templates/ReactNativeVersion.kt-template.js @@ -0,0 +1,37 @@ +/** + * Copyright (c) Meta Platforms, Inc. and affiliates. + * + * This source code is licensed under the MIT license found in the + * LICENSE file in the root directory of this source tree. + * + * @flow + * @format + * @oncall react_native + */ + +/*:: +import type {Version} from '../utils/version-utils'; +*/ + +module.exports = ({version} /*: {version: Version} */) /*: string */ => `/** + * Copyright (c) Meta Platforms, Inc. and affiliates. + * + * This source code is licensed under the MIT license found in the + * LICENSE file in the root directory of this source tree. + * + * ${'@'}generated by scripts/releases/set-version.js + */ + +package com.facebook.react.modules.systeminfo + +public object ReactNativeVersion { + public val VERSION: MutableMap = mutableMapOf( + "major" to ${version.major}, + "minor" to ${version.minor}, + "patch" to ${version.patch}, + "prerelease" to ${ + version.prerelease != null ? `"${version.prerelease}"` : 'null' + } + ) +} +`; From 418235b37e86c65720aac90643be4d43bab6172f Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Mateo=20Guzm=C3=A1n?= Date: Sat, 1 Mar 2025 13:05:51 +0100 Subject: [PATCH 2/4] Use non-mutable map to keep it inline with the Java template --- .../facebook/react/modules/systeminfo/ReactNativeVersion.kt | 2 +- .../__snapshots__/set-rn-artifacts-version-test.js.snap | 4 ++-- scripts/releases/templates/ReactNativeVersion.kt-template.js | 2 +- 3 files changed, 4 insertions(+), 4 deletions(-) diff --git a/packages/react-native/ReactAndroid/src/main/java/com/facebook/react/modules/systeminfo/ReactNativeVersion.kt b/packages/react-native/ReactAndroid/src/main/java/com/facebook/react/modules/systeminfo/ReactNativeVersion.kt index ff6e7dcc8065..e3484a608c66 100644 --- a/packages/react-native/ReactAndroid/src/main/java/com/facebook/react/modules/systeminfo/ReactNativeVersion.kt +++ b/packages/react-native/ReactAndroid/src/main/java/com/facebook/react/modules/systeminfo/ReactNativeVersion.kt @@ -10,7 +10,7 @@ package com.facebook.react.modules.systeminfo public object ReactNativeVersion { - public val VERSION: MutableMap = mutableMapOf( + public val VERSION: Map = mapOf( "major" to 1000, "minor" to 0, "patch" to 0, diff --git a/scripts/releases/__tests__/__snapshots__/set-rn-artifacts-version-test.js.snap b/scripts/releases/__tests__/__snapshots__/set-rn-artifacts-version-test.js.snap index f26bdaae80d4..27d0ad03adb7 100644 --- a/scripts/releases/__tests__/__snapshots__/set-rn-artifacts-version-test.js.snap +++ b/scripts/releases/__tests__/__snapshots__/set-rn-artifacts-version-test.js.snap @@ -78,7 +78,7 @@ exports[`updateReactNativeArtifacts should set nightly version: packages/react-n package com.facebook.react.modules.systeminfo public object ReactNativeVersion { - public val VERSION: MutableMap = mutableMapOf( + public val VERSION: Map = mapOf( \\"major\\" to 0, \\"minor\\" to 81, \\"patch\\" to 0, @@ -198,7 +198,7 @@ exports[`updateReactNativeArtifacts should set release version: packages/react-n package com.facebook.react.modules.systeminfo public object ReactNativeVersion { - public val VERSION: MutableMap = mutableMapOf( + public val VERSION: Map = mapOf( \\"major\\" to 0, \\"minor\\" to 81, \\"patch\\" to 0, diff --git a/scripts/releases/templates/ReactNativeVersion.kt-template.js b/scripts/releases/templates/ReactNativeVersion.kt-template.js index 4e55a29c1975..93ac5d070d5e 100644 --- a/scripts/releases/templates/ReactNativeVersion.kt-template.js +++ b/scripts/releases/templates/ReactNativeVersion.kt-template.js @@ -25,7 +25,7 @@ module.exports = ({version} /*: {version: Version} */) /*: string */ => `/** package com.facebook.react.modules.systeminfo public object ReactNativeVersion { - public val VERSION: MutableMap = mutableMapOf( + public val VERSION: Map = mapOf( "major" to ${version.major}, "minor" to ${version.minor}, "patch" to ${version.patch}, From b3c8528114cad922556a8ece90873569badde4fd Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Mateo=20Guzm=C3=A1n?= Date: Sat, 1 Mar 2025 13:31:06 +0100 Subject: [PATCH 3/4] Add @JvmField to maintain backwards compatibility with Java consumers --- .../com/facebook/react/modules/systeminfo/ReactNativeVersion.kt | 1 + .../__snapshots__/set-rn-artifacts-version-test.js.snap | 2 ++ scripts/releases/templates/ReactNativeVersion.kt-template.js | 1 + 3 files changed, 4 insertions(+) diff --git a/packages/react-native/ReactAndroid/src/main/java/com/facebook/react/modules/systeminfo/ReactNativeVersion.kt b/packages/react-native/ReactAndroid/src/main/java/com/facebook/react/modules/systeminfo/ReactNativeVersion.kt index e3484a608c66..2405d32ce682 100644 --- a/packages/react-native/ReactAndroid/src/main/java/com/facebook/react/modules/systeminfo/ReactNativeVersion.kt +++ b/packages/react-native/ReactAndroid/src/main/java/com/facebook/react/modules/systeminfo/ReactNativeVersion.kt @@ -10,6 +10,7 @@ package com.facebook.react.modules.systeminfo public object ReactNativeVersion { + @JvmField public val VERSION: Map = mapOf( "major" to 1000, "minor" to 0, diff --git a/scripts/releases/__tests__/__snapshots__/set-rn-artifacts-version-test.js.snap b/scripts/releases/__tests__/__snapshots__/set-rn-artifacts-version-test.js.snap index 27d0ad03adb7..9b49b2b57a9b 100644 --- a/scripts/releases/__tests__/__snapshots__/set-rn-artifacts-version-test.js.snap +++ b/scripts/releases/__tests__/__snapshots__/set-rn-artifacts-version-test.js.snap @@ -78,6 +78,7 @@ exports[`updateReactNativeArtifacts should set nightly version: packages/react-n package com.facebook.react.modules.systeminfo public object ReactNativeVersion { + @JvmField public val VERSION: Map = mapOf( \\"major\\" to 0, \\"minor\\" to 81, @@ -198,6 +199,7 @@ exports[`updateReactNativeArtifacts should set release version: packages/react-n package com.facebook.react.modules.systeminfo public object ReactNativeVersion { + @JvmField public val VERSION: Map = mapOf( \\"major\\" to 0, \\"minor\\" to 81, diff --git a/scripts/releases/templates/ReactNativeVersion.kt-template.js b/scripts/releases/templates/ReactNativeVersion.kt-template.js index 93ac5d070d5e..11a950a9c851 100644 --- a/scripts/releases/templates/ReactNativeVersion.kt-template.js +++ b/scripts/releases/templates/ReactNativeVersion.kt-template.js @@ -25,6 +25,7 @@ module.exports = ({version} /*: {version: Version} */) /*: string */ => `/** package com.facebook.react.modules.systeminfo public object ReactNativeVersion { + @JvmField public val VERSION: Map = mapOf( "major" to ${version.major}, "minor" to ${version.minor}, From e4283839d615ecb95ee3de6236119264966467a3 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Mateo=20Guzm=C3=A1n?= Date: Mon, 3 Mar 2025 18:09:23 +0100 Subject: [PATCH 4/4] Delete ReactNativeVersion.java-template.js --- .../ReactNativeVersion.java-template.js | 40 ------------------- 1 file changed, 40 deletions(-) delete mode 100644 scripts/releases/templates/ReactNativeVersion.java-template.js diff --git a/scripts/releases/templates/ReactNativeVersion.java-template.js b/scripts/releases/templates/ReactNativeVersion.java-template.js deleted file mode 100644 index ef2afc04ed40..000000000000 --- a/scripts/releases/templates/ReactNativeVersion.java-template.js +++ /dev/null @@ -1,40 +0,0 @@ -/** - * Copyright (c) Meta Platforms, Inc. and affiliates. - * - * This source code is licensed under the MIT license found in the - * LICENSE file in the root directory of this source tree. - * - * @flow - * @format - * @oncall react_native - */ - -/*:: -import type {Version} from '../utils/version-utils'; -*/ - -module.exports = ({version} /*: {version: Version} */) /*: string */ => `/** - * Copyright (c) Meta Platforms, Inc. and affiliates. - * - * This source code is licensed under the MIT license found in the - * LICENSE file in the root directory of this source tree. - * - * ${'@'}generated by scripts/releases/set-version.js - */ - -package com.facebook.react.modules.systeminfo; - -import com.facebook.react.common.MapBuilder; - -import java.util.Map; - -public class ReactNativeVersion { - public static final Map VERSION = MapBuilder.of( - "major", ${version.major}, - "minor", ${version.minor}, - "patch", ${version.patch}, - "prerelease", ${ - version.prerelease != null ? `"${version.prerelease}"` : 'null' - }); -} -`;