diff --git a/packages/react-native-codegen/e2e/deep_imports/__tests__/modules/__snapshots__/GenerateModuleH-test.js.snap b/packages/react-native-codegen/e2e/deep_imports/__tests__/modules/__snapshots__/GenerateModuleH-test.js.snap index fcb1757cafcd..949adb2e9789 100644 --- a/packages/react-native-codegen/e2e/deep_imports/__tests__/modules/__snapshots__/GenerateModuleH-test.js.snap +++ b/packages/react-native-codegen/e2e/deep_imports/__tests__/modules/__snapshots__/GenerateModuleH-test.js.snap @@ -13,7 +13,7 @@ exports[`GenerateModuleH can generate a header file NativeModule specs 1`] = ` #pragma once #include -#include +#include namespace facebook::react { @@ -1610,7 +1610,7 @@ exports[`GenerateModuleH can generate a header file NativeModule specs with assu #pragma once #include -#include +#include namespace facebook::react { diff --git a/packages/react-native-codegen/src/generators/modules/GenerateModuleH.js b/packages/react-native-codegen/src/generators/modules/GenerateModuleH.js index d2395dd297cf..dc5de4d4b2ee 100644 --- a/packages/react-native-codegen/src/generators/modules/GenerateModuleH.js +++ b/packages/react-native-codegen/src/generators/modules/GenerateModuleH.js @@ -213,7 +213,7 @@ const FileTemplate = ({ #pragma once #include -#include +#include namespace facebook::react { diff --git a/packages/react-native-codegen/src/generators/modules/__tests__/__snapshots__/GenerateModuleH-test.js.snap b/packages/react-native-codegen/src/generators/modules/__tests__/__snapshots__/GenerateModuleH-test.js.snap index 466e7e67626e..0dfa992b6b84 100644 --- a/packages/react-native-codegen/src/generators/modules/__tests__/__snapshots__/GenerateModuleH-test.js.snap +++ b/packages/react-native-codegen/src/generators/modules/__tests__/__snapshots__/GenerateModuleH-test.js.snap @@ -14,7 +14,7 @@ Map { #pragma once #include -#include +#include namespace facebook::react { @@ -52,7 +52,7 @@ Map { #pragma once #include -#include +#include namespace facebook::react { @@ -113,7 +113,7 @@ Map { #pragma once #include -#include +#include namespace facebook::react { @@ -156,7 +156,7 @@ Map { #pragma once #include -#include +#include namespace facebook::react { @@ -253,7 +253,7 @@ Map { #pragma once #include -#include +#include namespace facebook::react { @@ -972,7 +972,7 @@ Map { #pragma once #include -#include +#include namespace facebook::react { @@ -1010,7 +1010,7 @@ Map { #pragma once #include -#include +#include namespace facebook::react { @@ -1175,7 +1175,7 @@ Map { #pragma once #include -#include +#include namespace facebook::react { @@ -1297,7 +1297,7 @@ Map { #pragma once #include -#include +#include namespace facebook::react { @@ -1834,7 +1834,7 @@ Map { #pragma once #include -#include +#include namespace facebook::react { @@ -2050,7 +2050,7 @@ Map { #pragma once #include -#include +#include namespace facebook::react { @@ -2101,7 +2101,7 @@ Map { #pragma once #include -#include +#include namespace facebook::react { @@ -2172,7 +2172,7 @@ Map { #pragma once #include -#include +#include namespace facebook::react { diff --git a/packages/react-native/ReactAndroid/build.gradle.kts b/packages/react-native/ReactAndroid/build.gradle.kts index 8a27e3e4f470..13623dd81c06 100644 --- a/packages/react-native/ReactAndroid/build.gradle.kts +++ b/packages/react-native/ReactAndroid/build.gradle.kts @@ -231,6 +231,7 @@ val preparePrefab by // Exported because the public cxxreact/ErrorUtils.h includes it Pair("../ReactCommon/jserrorhandler/", "jserrorhandler/"), Pair("../ReactCommon/react/bridging/", "react/bridging/"), + Pair("../ReactCommon/react/bridging/React/", "React/"), Pair("../ReactCommon/react/nativemodule/core/", ""), Pair("../ReactCommon/react/nativemodule/core/platform/android/", ""), Pair( diff --git a/packages/react-native/ReactCommon/react/bridging/AString.h b/packages/react-native/ReactCommon/react/bridging/AString.h index b5d48354ef20..1b0cd92ce042 100644 --- a/packages/react-native/ReactCommon/react/bridging/AString.h +++ b/packages/react-native/ReactCommon/react/bridging/AString.h @@ -7,6 +7,8 @@ #pragma once +#include + #include #include diff --git a/packages/react-native/ReactCommon/react/bridging/Array.h b/packages/react-native/ReactCommon/react/bridging/Array.h index 03ee6e464df4..afe605decf92 100644 --- a/packages/react-native/ReactCommon/react/bridging/Array.h +++ b/packages/react-native/ReactCommon/react/bridging/Array.h @@ -7,6 +7,8 @@ #pragma once +#include + #include #include diff --git a/packages/react-native/ReactCommon/react/bridging/ArrayBuffer.h b/packages/react-native/ReactCommon/react/bridging/ArrayBuffer.h index 8739fb2881c1..02c4f466d6c6 100644 --- a/packages/react-native/ReactCommon/react/bridging/ArrayBuffer.h +++ b/packages/react-native/ReactCommon/react/bridging/ArrayBuffer.h @@ -7,6 +7,8 @@ #pragma once +#include + #include #include diff --git a/packages/react-native/ReactCommon/react/bridging/Base.h b/packages/react-native/ReactCommon/react/bridging/Base.h index fcae10f42de0..972ab07c8251 100644 --- a/packages/react-native/ReactCommon/react/bridging/Base.h +++ b/packages/react-native/ReactCommon/react/bridging/Base.h @@ -7,6 +7,8 @@ #pragma once +#include + #include #include diff --git a/packages/react-native/ReactCommon/react/bridging/Bool.h b/packages/react-native/ReactCommon/react/bridging/Bool.h index 10bb7500abd4..06e0c54d87f5 100644 --- a/packages/react-native/ReactCommon/react/bridging/Bool.h +++ b/packages/react-native/ReactCommon/react/bridging/Bool.h @@ -7,6 +7,8 @@ #pragma once +#include + #include namespace facebook::react { diff --git a/packages/react-native/ReactCommon/react/bridging/Bridging.h b/packages/react-native/ReactCommon/react/bridging/Bridging.h index 7507c8ae3048..203769c6e4ca 100644 --- a/packages/react-native/ReactCommon/react/bridging/Bridging.h +++ b/packages/react-native/ReactCommon/react/bridging/Bridging.h @@ -7,6 +7,8 @@ #pragma once +#include + #include #include #include diff --git a/packages/react-native/ReactCommon/react/bridging/CMakeLists.txt b/packages/react-native/ReactCommon/react/bridging/CMakeLists.txt index 3e5fc47830b8..0f48f499c6f7 100644 --- a/packages/react-native/ReactCommon/react/bridging/CMakeLists.txt +++ b/packages/react-native/ReactCommon/react/bridging/CMakeLists.txt @@ -14,6 +14,6 @@ add_library(react_bridging OBJECT ${react_bridging_SRC}) target_include_directories(react_bridging PUBLIC ${REACT_COMMON_DIR}) -target_link_libraries(react_bridging jsi callinvoker react_timing) +target_link_libraries(react_bridging jsi callinvoker react_cxxstableapi react_timing) target_compile_reactnative_options(react_bridging PRIVATE) target_compile_options(react_bridging PRIVATE -Wpedantic) diff --git a/packages/react-native/ReactCommon/react/bridging/CallbackWrapper.h b/packages/react-native/ReactCommon/react/bridging/CallbackWrapper.h index a6c5083ef267..445b4a0dccf4 100644 --- a/packages/react-native/ReactCommon/react/bridging/CallbackWrapper.h +++ b/packages/react-native/ReactCommon/react/bridging/CallbackWrapper.h @@ -7,6 +7,8 @@ #pragma once +#include + #include #include diff --git a/packages/react-native/ReactCommon/react/bridging/Class.h b/packages/react-native/ReactCommon/react/bridging/Class.h index 16bc0cf0abaa..c54e611c11e4 100644 --- a/packages/react-native/ReactCommon/react/bridging/Class.h +++ b/packages/react-native/ReactCommon/react/bridging/Class.h @@ -7,6 +7,8 @@ #pragma once +#include + #include namespace facebook::react::bridging { diff --git a/packages/react-native/ReactCommon/react/bridging/Convert.h b/packages/react-native/ReactCommon/react/bridging/Convert.h index a34a22ea9ac6..52b07a754e10 100644 --- a/packages/react-native/ReactCommon/react/bridging/Convert.h +++ b/packages/react-native/ReactCommon/react/bridging/Convert.h @@ -7,6 +7,8 @@ #pragma once +#include + #include #include diff --git a/packages/react-native/ReactCommon/react/bridging/Dynamic.h b/packages/react-native/ReactCommon/react/bridging/Dynamic.h index b06266325921..812d451d534f 100644 --- a/packages/react-native/ReactCommon/react/bridging/Dynamic.h +++ b/packages/react-native/ReactCommon/react/bridging/Dynamic.h @@ -7,6 +7,8 @@ #pragma once +#include + #include #include diff --git a/packages/react-native/ReactCommon/react/bridging/Error.h b/packages/react-native/ReactCommon/react/bridging/Error.h index 621fd0bfb083..56003f17f20b 100644 --- a/packages/react-native/ReactCommon/react/bridging/Error.h +++ b/packages/react-native/ReactCommon/react/bridging/Error.h @@ -7,6 +7,8 @@ #pragma once +#include + #include namespace facebook::react { diff --git a/packages/react-native/ReactCommon/react/bridging/EventEmitter.h b/packages/react-native/ReactCommon/react/bridging/EventEmitter.h index 3a76abcc36cd..7fedcff60bda 100644 --- a/packages/react-native/ReactCommon/react/bridging/EventEmitter.h +++ b/packages/react-native/ReactCommon/react/bridging/EventEmitter.h @@ -7,6 +7,8 @@ #pragma once +#include + #include #include #include diff --git a/packages/react-native/ReactCommon/react/bridging/Function.h b/packages/react-native/ReactCommon/react/bridging/Function.h index eb5d08749b5b..19aaec53c006 100644 --- a/packages/react-native/ReactCommon/react/bridging/Function.h +++ b/packages/react-native/ReactCommon/react/bridging/Function.h @@ -7,6 +7,8 @@ #pragma once +#include + #include #include diff --git a/packages/react-native/ReactCommon/react/bridging/HighResTimeStamp.h b/packages/react-native/ReactCommon/react/bridging/HighResTimeStamp.h index 83807d54e87c..bd988c4e2606 100644 --- a/packages/react-native/ReactCommon/react/bridging/HighResTimeStamp.h +++ b/packages/react-native/ReactCommon/react/bridging/HighResTimeStamp.h @@ -7,6 +7,8 @@ #pragma once +#include + #include #include diff --git a/packages/react-native/ReactCommon/react/bridging/LongLivedObject.h b/packages/react-native/ReactCommon/react/bridging/LongLivedObject.h index 1e3ff3f97bcc..9af43f4598e7 100644 --- a/packages/react-native/ReactCommon/react/bridging/LongLivedObject.h +++ b/packages/react-native/ReactCommon/react/bridging/LongLivedObject.h @@ -7,6 +7,8 @@ #pragma once +#include + #include #include #include diff --git a/packages/react-native/ReactCommon/react/bridging/Number.h b/packages/react-native/ReactCommon/react/bridging/Number.h index 2fb0c8a9b0d4..b1710a11ccb0 100644 --- a/packages/react-native/ReactCommon/react/bridging/Number.h +++ b/packages/react-native/ReactCommon/react/bridging/Number.h @@ -7,6 +7,8 @@ #pragma once +#include + #include namespace facebook::react { diff --git a/packages/react-native/ReactCommon/react/bridging/Object.h b/packages/react-native/ReactCommon/react/bridging/Object.h index 0ccd3a24e1e2..a24de14cafc6 100644 --- a/packages/react-native/ReactCommon/react/bridging/Object.h +++ b/packages/react-native/ReactCommon/react/bridging/Object.h @@ -7,6 +7,8 @@ #pragma once +#include + #include #include diff --git a/packages/react-native/ReactCommon/react/bridging/Promise.h b/packages/react-native/ReactCommon/react/bridging/Promise.h index a1f17f813adf..cdd023ad9549 100644 --- a/packages/react-native/ReactCommon/react/bridging/Promise.h +++ b/packages/react-native/ReactCommon/react/bridging/Promise.h @@ -7,6 +7,8 @@ #pragma once +#include + #include #include #include diff --git a/packages/react-native/ReactCommon/react/bridging/React-bridging.podspec b/packages/react-native/ReactCommon/react/bridging/React-bridging.podspec index 3a47aa4d2915..8fd5130253ab 100644 --- a/packages/react-native/ReactCommon/react/bridging/React-bridging.podspec +++ b/packages/react-native/ReactCommon/react/bridging/React-bridging.podspec @@ -26,6 +26,7 @@ Pod::Spec.new do |s| s.platforms = min_supported_versions s.source = source s.source_files = podspec_sources("*.{cpp,h}", "*.h") + s.exclude_files = "React" s.header_dir = "react/bridging" s.pod_target_xcconfig = { "USE_HEADERMAP" => "YES", @@ -35,8 +36,15 @@ Pod::Spec.new do |s| resolve_use_frameworks(s, header_mappings_dir: "../..", module_name: "React_bridging") + s.subspec "bridgingUmbrella" do |ss| + ss.source_files = "React/*.h" + ss.header_dir = "" + ss.header_mappings_dir = "." + end + s.dependency "React-jsi" s.dependency "React-callinvoker" + s.dependency "React-cxxstableapi" s.dependency "React-timing" add_rn_third_party_dependencies(s) diff --git a/packages/react-native/ReactCommon/react/bridging/React/Bridging.h b/packages/react-native/ReactCommon/react/bridging/React/Bridging.h new file mode 100644 index 000000000000..99b50b4ffbcf --- /dev/null +++ b/packages/react-native/ReactCommon/react/bridging/React/Bridging.h @@ -0,0 +1,41 @@ +/* + * 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. + */ + +#pragma once + +// ============================================================================= +// Umbrella header for the `react/bridging` module - public entry point. +// +// #include +// ============================================================================= + +#pragma push_macro("RN_UMBRELLA_CONTEXT") +#undef RN_UMBRELLA_CONTEXT +#define RN_UMBRELLA_CONTEXT 1 + +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include + +#undef RN_UMBRELLA_CONTEXT +#pragma pop_macro("RN_UMBRELLA_CONTEXT") diff --git a/packages/react-native/ReactCommon/react/bridging/Value.h b/packages/react-native/ReactCommon/react/bridging/Value.h index deb99ad5d394..ab81cfca644f 100644 --- a/packages/react-native/ReactCommon/react/bridging/Value.h +++ b/packages/react-native/ReactCommon/react/bridging/Value.h @@ -7,6 +7,8 @@ #pragma once +#include + #include #include diff --git a/packages/react-native/scripts/ios-prebuild/headers-config.js b/packages/react-native/scripts/ios-prebuild/headers-config.js index f61e1de8bbef..c88adeb8f95c 100644 --- a/packages/react-native/scripts/ios-prebuild/headers-config.js +++ b/packages/react-native/scripts/ios-prebuild/headers-config.js @@ -26,6 +26,19 @@ const PodspecExceptions /*: {[key: string]: PodSpecConfiguration} */ = { headerDir: 'jsi', excludePatterns: ['**/test/*'], }, + 'ReactCommon/react/bridging/React-bridging.podspec': { + name: 'React-bridging', + headerPatterns: ['**/*.h'], + excludePatterns: ['React/**'], + headerDir: 'react/bridging', + subSpecs: [ + { + name: 'bridgingUmbrella', + headerPatterns: ['React/*.h'], + headerDir: 'React', + }, + ], + }, 'ReactCommon/hermes/React-hermes.podspec': { name: 'React-hermes', headerPatterns: [ @@ -247,8 +260,15 @@ const PodspecExceptions /*: {[key: string]: PodSpecConfiguration} */ = { { name: 'bridging', headerPatterns: ['react/bridging/**/*.h'], - excludePatterns: ['react/bridging/tests/**'], + excludePatterns: ['react/bridging/React/**', 'react/bridging/tests/**'], headerDir: 'react/bridging', + subSpecs: [ + { + name: 'bridgingUmbrella', + headerPatterns: ['react/bridging/React/*.h'], + headerDir: 'React', + }, + ], }, { name: 'core',