Split out CdpJson into separate library (#50170)

Summary:
Pull Request resolved: https://github.com/facebook/react-native/pull/50170

This is needed in D71470038 and later, where submodules of `jsinspector-modern` need to operate with CDP message payloads. We functionally split out these files as a library to avaoid a dependency cycle.

Changelog: [Internal]

Reviewed By: hoxyq

Differential Revision: D71551561

fbshipit-source-id: 527479399d7563883c1b6599f884b7857e79bd77
This commit is contained in:
Alex Hunt
2025-03-20 20:07:37 -07:00
committed by Facebook GitHub Bot
parent 3a8f51e02e
commit 094a22fa16
29 changed files with 853 additions and 256 deletions
@@ -47,6 +47,7 @@ Pod::Spec.new do |s|
add_dependency(s, "React-RCTFBReactNativeSpec")
add_dependency(s, "React-NativeModulesApple")
add_dependency(s, "React-jsinspector", :framework_name => 'jsinspector_modern')
add_dependency(s, "React-jsinspectorcdp", :framework_name => 'jsinspector_moderncdp')
add_dependency(s, "ReactCommon", :subspec => "turbomodule/core", :additional_framework_paths => ["react/nativemodule/core"])
if ENV["USE_HERMES"] == nil || ENV["USE_HERMES"] == "1"
+1
View File
@@ -127,6 +127,7 @@ Pod::Spec.new do |s|
s.resource_bundles = {'React-Core_privacy' => 'React/Resources/PrivacyInfo.xcprivacy'}
add_dependency(s, "React-jsinspector", :framework_name => 'jsinspector_modern')
add_dependency(s, "React-jsinspectorcdp", :framework_name => 'jsinspector_moderncdp')
add_dependency(s, "React-jsitooling", :framework_name => "JSITooling")
add_dependency(s, "RCTDeprecation")
@@ -53,6 +53,7 @@ Pod::Spec.new do |s|
s.dependency "React-jsi", version
s.dependency 'React-RCTBlob'
add_dependency(s, "React-jsinspector", :framework_name => 'jsinspector_modern')
add_dependency(s, "React-jsinspectorcdp", :framework_name => 'jsinspector_moderncdp')
add_dependency(s, "React-jsinspectortracing", :framework_name => 'jsinspector_moderntracing')
add_dependency(s, "React-RCTFBReactNativeSpec")
@@ -85,6 +85,7 @@ Pod::Spec.new do |s|
add_dependency(s, "React-runtimescheduler")
add_dependency(s, "React-RCTAnimation", :framework_name => 'RCTAnimation')
add_dependency(s, "React-jsinspector", :framework_name => 'jsinspector_modern')
add_dependency(s, "React-jsinspectorcdp", :framework_name => 'jsinspector_moderncdp')
add_dependency(s, "React-jsinspectortracing", :framework_name => 'jsinspector_moderntracing')
add_dependency(s, "React-renderercss")
@@ -51,6 +51,7 @@ Pod::Spec.new do |s|
s.dependency "React-jsi"
add_dependency(s, "React-jsitooling", :framework_name => "JSITooling")
add_dependency(s, "React-jsinspector", :framework_name => 'jsinspector_modern')
add_dependency(s, "React-jsinspectorcdp", :framework_name => 'jsinspector_moderncdp')
add_dependency(s, "React-jsinspectortracing", :framework_name => 'jsinspector_moderntracing')
add_dependency(s, "React-RuntimeCore")
@@ -70,6 +70,7 @@ add_react_common_subdir(jsi)
add_react_common_subdir(callinvoker)
add_react_common_subdir(oscompat)
add_react_common_subdir(jsinspector-modern)
add_react_common_subdir(jsinspector-modern/cdp)
add_react_common_subdir(jsinspector-modern/network)
add_react_common_subdir(jsinspector-modern/tracing)
add_react_common_subdir(hermes/executor)
@@ -168,6 +169,7 @@ add_library(reactnative
$<TARGET_OBJECTS:jserrorhandler>
$<TARGET_OBJECTS:jsinspector>
$<TARGET_OBJECTS:jsitooling>
$<TARGET_OBJECTS:jsinspector_cdp>
$<TARGET_OBJECTS:jsinspector_network>
$<TARGET_OBJECTS:jsinspector_tracing>
$<TARGET_OBJECTS:jsireact>
@@ -256,6 +258,7 @@ target_include_directories(reactnative
$<TARGET_PROPERTY:glog_init,INTERFACE_INCLUDE_DIRECTORIES>
$<TARGET_PROPERTY:jserrorhandler,INTERFACE_INCLUDE_DIRECTORIES>
$<TARGET_PROPERTY:jsinspector,INTERFACE_INCLUDE_DIRECTORIES>
$<TARGET_PROPERTY:jsinspector_cdp,INTERFACE_INCLUDE_DIRECTORIES>
$<TARGET_PROPERTY:jsinspector_network,INTERFACE_INCLUDE_DIRECTORIES>
$<TARGET_PROPERTY:jsinspector_tracing,INTERFACE_INCLUDE_DIRECTORIES>
$<TARGET_PROPERTY:jsireact,INTERFACE_INCLUDE_DIRECTORIES>
@@ -36,6 +36,7 @@ Pod::Spec.new do |s|
s.header_dir = "cxxreact"
add_dependency(s, "React-jsinspector", :framework_name => 'jsinspector_modern')
add_dependency(s, "React-jsinspectorcdp", :framework_name => 'jsinspector_moderncdp')
add_dependency(s, "React-jsinspectortracing", :framework_name => 'jsinspector_moderntracing')
s.dependency "React-callinvoker", version
s.dependency "React-runtimeexecutor", version
@@ -37,6 +37,7 @@ Pod::Spec.new do |s|
s.dependency "React-cxxreact", version
s.dependency "React-jsiexecutor", version
add_dependency(s, "React-jsinspector", :framework_name => 'jsinspector_modern')
add_dependency(s, "React-jsinspectorcdp", :framework_name => 'jsinspector_moderncdp')
add_dependency(s, "React-jsinspectortracing", :framework_name => 'jsinspector_moderntracing')
s.dependency "React-perflogger", version
s.dependency "hermes-engine"
@@ -33,6 +33,7 @@ Pod::Spec.new do |s|
s.dependency "React-jsi", version
s.dependency "React-perflogger", version
add_dependency(s, "React-jsinspector", :framework_name => 'jsinspector_modern')
add_dependency(s, "React-jsinspectorcdp", :framework_name => 'jsinspector_moderncdp')
add_dependency(s, "React-jsinspectortracing", :framework_name => 'jsinspector_moderntracing')
if ENV['USE_HERMES'] == nil || ENV['USE_HERMES'] == "1"
s.dependency 'hermes-engine'
@@ -6,7 +6,6 @@
*/
#include "HostAgent.h"
#include "CdpJson.h"
#include "InstanceAgent.h"
#ifdef REACT_NATIVE_DEBUGGER_ENABLED
@@ -17,6 +16,7 @@
#include <folly/dynamic.h>
#include <folly/json.h>
#include <jsinspector-modern/cdp/CdpJson.h>
#include <chrono>
#include <functional>
@@ -7,11 +7,11 @@
#pragma once
#include "CdpJson.h"
#include "HostTarget.h"
#include <jsinspector-modern/InspectorInterfaces.h>
#include <jsinspector-modern/InstanceAgent.h>
#include <jsinspector-modern/cdp/CdpJson.h>
namespace facebook::react::jsinspector_modern {
@@ -6,7 +6,6 @@
*/
#include "HostTarget.h"
#include "CdpJson.h"
#include "HostAgent.h"
#include "InspectorInterfaces.h"
#include "InspectorUtilities.h"
@@ -14,6 +13,7 @@
#include "SessionState.h"
#include <jsinspector-modern/InspectorFlags.h>
#include <jsinspector-modern/cdp/CdpJson.h>
#include <folly/dynamic.h>
#include <folly/json.h>
@@ -5,10 +5,11 @@
* LICENSE file in the root directory of this source tree.
*/
#include <jsinspector-modern/InstanceAgent.h>
#include "CdpJson.h"
#include "InstanceAgent.h"
#include "RuntimeTarget.h"
#include <jsinspector-modern/cdp/CdpJson.h>
namespace facebook::react::jsinspector_modern {
InstanceAgent::InstanceAgent(
@@ -7,13 +7,13 @@
#pragma once
#include "CdpJson.h"
#include "RuntimeTarget.h"
#include "SessionState.h"
#include <jsinspector-modern/InspectorInterfaces.h>
#include <jsinspector-modern/InstanceTarget.h>
#include <jsinspector-modern/RuntimeAgent.h>
#include <jsinspector-modern/cdp/CdpJson.h>
#include <jsinspector-modern/tracing/InstanceTracingProfile.h>
#include <functional>
@@ -7,11 +7,12 @@
#pragma once
#include "CdpJson.h"
#include "InspectorInterfaces.h"
#include "ScopedExecutor.h"
#include <folly/dynamic.h>
#include <jsinspector-modern/cdp/CdpJson.h>
#include <string>
#include <unordered_map>
#include <utility>
@@ -51,6 +51,7 @@ Pod::Spec.new do |s|
s.dependency "React-featureflags"
s.dependency "React-runtimeexecutor", version
s.dependency "React-jsi"
add_dependency(s, "React-jsinspectorcdp", :framework_name => 'jsinspector_moderncdp')
add_dependency(s, "React-jsinspectornetwork", :framework_name => 'jsinspector_modernnetwork')
add_dependency(s, "React-jsinspectortracing", :framework_name => 'jsinspector_moderntracing')
s.dependency "React-perflogger", version
@@ -7,11 +7,11 @@
#pragma once
#include "CdpJson.h"
#include "InspectorInterfaces.h"
#include "RuntimeAgentDelegate.h"
#include "RuntimeTarget.h"
#include <jsinspector-modern/cdp/CdpJson.h>
#include <jsinspector-modern/tracing/RuntimeSamplingProfile.h>
namespace facebook::react::jsinspector_modern {
@@ -7,7 +7,7 @@
#pragma once
#include "CdpJson.h"
#include <jsinspector-modern/cdp/CdpJson.h>
namespace facebook::react::jsinspector_modern {
@@ -7,10 +7,11 @@
#pragma once
#include "CdpJson.h"
#include "InspectorInterfaces.h"
#include "InstanceAgent.h"
#include <jsinspector-modern/cdp/CdpJson.h>
namespace facebook::react::jsinspector_modern {
/**
@@ -0,0 +1,26 @@
# 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.
cmake_minimum_required(VERSION 3.13)
set(CMAKE_VERBOSE_MAKEFILE on)
include(${REACT_ANDROID_DIR}/src/main/jni/first-party/jni-lib-merge/SoMerging-utils.cmake)
add_compile_options(
-fexceptions
-std=c++20
-Wall
-Wpedantic)
file(GLOB jsinspector_cdp_SRC CONFIGURE_DEPENDS *.cpp)
add_library(jsinspector_cdp OBJECT ${jsinspector_cdp_SRC})
target_merge_so(jsinspector_cdp)
target_include_directories(jsinspector_cdp PUBLIC ${REACT_COMMON_DIR})
target_link_libraries(jsinspector_cdp
folly_runtime
)
@@ -0,0 +1,50 @@
# 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.
require "json"
package = JSON.parse(File.read(File.join(__dir__, "..", "..", "..", "package.json")))
version = package['version']
source = { :git => 'https://github.com/facebook/react-native.git' }
if version == '1000.0.0'
# This is an unpublished version, use the latest commit hash of the react-native repo, which we’re presumably in.
source[:commit] = `git rev-parse HEAD`.strip if system("git rev-parse --git-dir > /dev/null 2>&1")
else
source[:tag] = "v#{version}"
end
header_search_paths = []
if ENV['USE_FRAMEWORKS']
header_search_paths << "\"$(PODS_TARGET_SRCROOT)/../..\""
end
header_dir = 'jsinspector-modern/cdp'
module_name = "jsinspector_moderncdp"
Pod::Spec.new do |s|
s.name = "React-jsinspectorcdp"
s.version = version
s.summary = "Common helper functions for working with CDP messages in jsinspector-modern"
s.homepage = "https://reactnative.dev/"
s.license = package["license"]
s.author = "Meta Platforms, Inc. and its affiliates"
s.platforms = min_supported_versions
s.source = source
s.source_files = "*.{cpp,h}"
s.header_dir = header_dir
s.pod_target_xcconfig = {
"HEADER_SEARCH_PATHS" => header_search_paths.join(' '),
"CLANG_CXX_LANGUAGE_STANDARD" => rct_cxx_language_standard(),
"DEFINES_MODULE" => "YES"}
if ENV['USE_FRAMEWORKS']
s.module_name = module_name
s.header_mappings_dir = "../.."
end
add_rn_third_party_dependencies(s)
end
@@ -38,6 +38,7 @@ Pod::Spec.new do |s|
s.dependency "React-cxxreact", version
s.dependency "React-jsi", version
add_dependency(s, "React-jsinspector", :framework_name => 'jsinspector_modern')
add_dependency(s, "React-jsinspectorcdp", :framework_name => 'jsinspector_moderncdp')
add_dependency(s, "React-jsinspectortracing", :framework_name => 'jsinspector_moderntracing')
add_rn_third_party_dependencies(s)
@@ -47,6 +47,7 @@ Pod::Spec.new do |s|
s.dependency "React-runtimeexecutor"
add_dependency(s, "React-featureflags")
add_dependency(s, "React-jsinspector", :framework_name => 'jsinspector_modern')
add_dependency(s, "React-jsinspectorcdp", :framework_name => 'jsinspector_moderncdp')
depend_on_js_engine(s)
add_rn_third_party_dependencies(s)
@@ -43,6 +43,7 @@ Pod::Spec.new do |s|
s.dependency "React-RuntimeCore"
s.dependency "React-featureflags"
add_dependency(s, "React-jsinspector", :framework_name => 'jsinspector_modern')
add_dependency(s, "React-jsinspectorcdp", :framework_name => 'jsinspector_moderncdp')
add_dependency(s, "React-jsinspectortracing", :framework_name => 'jsinspector_moderntracing')
s.dependency "React-hermes"
@@ -150,6 +150,7 @@ def use_react_native! (
pod 'React-jsiexecutor', :path => "#{prefix}/ReactCommon/jsiexecutor"
pod 'React-jsinspector', :path => "#{prefix}/ReactCommon/jsinspector-modern"
pod 'React-jsitooling', :path => "#{prefix}/ReactCommon/jsitooling"
pod 'React-jsinspectorcdp', :path => "#{prefix}/ReactCommon/jsinspector-modern/cdp"
pod 'React-jsinspectornetwork', :path => "#{prefix}/ReactCommon/jsinspector-modern/network"
pod 'React-jsinspectortracing', :path => "#{prefix}/ReactCommon/jsinspector-modern/tracing"
File diff suppressed because it is too large Load Diff
+2
View File
@@ -46,6 +46,8 @@
<string>You need to add NSLocationWhenInUseUsageDescription key in Info.plist to enable geolocation, otherwise it is going to *fail silently*!</string>
<key>NSPhotoLibraryUsageDescription</key>
<string>You need to add NSPhotoLibraryUsageDescription key in Info.plist to enable photo library usage, otherwise it is going to *fail silently*!</string>
<key>RCTNewArchEnabled</key>
<true/>
<key>UILaunchStoryboardName</key>
<string>LaunchScreen</string>
<key>UIRequiredDeviceCapabilities</key>