diff --git a/example-new-architecture/ios/DdSdkReactNativeExample.xcodeproj/project.pbxproj b/example-new-architecture/ios/DdSdkReactNativeExample.xcodeproj/project.pbxproj index 715219cbb..4efb58968 100644 --- a/example-new-architecture/ios/DdSdkReactNativeExample.xcodeproj/project.pbxproj +++ b/example-new-architecture/ios/DdSdkReactNativeExample.xcodeproj/project.pbxproj @@ -11,9 +11,9 @@ 13B07FBC1A68108700A75B9A /* AppDelegate.mm in Sources */ = {isa = PBXBuildFile; fileRef = 13B07FB01A68108700A75B9A /* AppDelegate.mm */; }; 13B07FBF1A68108700A75B9A /* Images.xcassets in Resources */ = {isa = PBXBuildFile; fileRef = 13B07FB51A68108700A75B9A /* Images.xcassets */; }; 13B07FC11A68108700A75B9A /* main.m in Sources */ = {isa = PBXBuildFile; fileRef = 13B07FB71A68108700A75B9A /* main.m */; }; - 4B3DE818A35AD231F6C6DB4D /* libPods-DdSdkReactNativeExample-DdSdkReactNativeExampleTests.a in Frameworks */ = {isa = PBXBuildFile; fileRef = 23F13554288C38B6E40C40C0 /* libPods-DdSdkReactNativeExample-DdSdkReactNativeExampleTests.a */; }; + 38FDA727C2ADFB612BC59CAF /* libPods-DdSdkReactNativeExample.a in Frameworks */ = {isa = PBXBuildFile; fileRef = 392B93CDAA416A9B63770F89 /* libPods-DdSdkReactNativeExample.a */; }; + 43609140DA01D72B0EC361A9 /* libPods-DdSdkReactNativeExample-DdSdkReactNativeExampleTests.a in Frameworks */ = {isa = PBXBuildFile; fileRef = 8DA13F6EB04383E0F02E999D /* libPods-DdSdkReactNativeExample-DdSdkReactNativeExampleTests.a */; }; 81AB9BB82411601600AC10FF /* LaunchScreen.storyboard in Resources */ = {isa = PBXBuildFile; fileRef = 81AB9BB72411601600AC10FF /* LaunchScreen.storyboard */; }; - D9F1E7F5DF2BC57E774FB608 /* libPods-DdSdkReactNativeExample.a in Frameworks */ = {isa = PBXBuildFile; fileRef = 107736FD8F6F9B881BBFD056 /* libPods-DdSdkReactNativeExample.a */; }; E05973ABEC106467505BAF84 /* PrivacyInfo.xcprivacy in Resources */ = {isa = PBXBuildFile; fileRef = 91A6167299744A7A5E90FD00 /* PrivacyInfo.xcprivacy */; }; /* End PBXBuildFile section */ @@ -31,20 +31,20 @@ 00E356EE1AD99517003FC87E /* DdSdkReactNativeExampleTests.xctest */ = {isa = PBXFileReference; explicitFileType = wrapper.cfbundle; includeInIndex = 0; path = DdSdkReactNativeExampleTests.xctest; sourceTree = BUILT_PRODUCTS_DIR; }; 00E356F11AD99517003FC87E /* Info.plist */ = {isa = PBXFileReference; lastKnownFileType = text.plist.xml; path = Info.plist; sourceTree = ""; }; 00E356F21AD99517003FC87E /* DdSdkReactNativeExampleTests.m */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.objc; path = DdSdkReactNativeExampleTests.m; sourceTree = ""; }; - 0493692174A5FD4C9D08B43C /* Pods-DdSdkReactNativeExample-DdSdkReactNativeExampleTests.release.xcconfig */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = text.xcconfig; name = "Pods-DdSdkReactNativeExample-DdSdkReactNativeExampleTests.release.xcconfig"; path = "Target Support Files/Pods-DdSdkReactNativeExample-DdSdkReactNativeExampleTests/Pods-DdSdkReactNativeExample-DdSdkReactNativeExampleTests.release.xcconfig"; sourceTree = ""; }; - 107736FD8F6F9B881BBFD056 /* libPods-DdSdkReactNativeExample.a */ = {isa = PBXFileReference; explicitFileType = archive.ar; includeInIndex = 0; path = "libPods-DdSdkReactNativeExample.a"; sourceTree = BUILT_PRODUCTS_DIR; }; 13B07F961A680F5B00A75B9A /* DdSdkReactNativeExample.app */ = {isa = PBXFileReference; explicitFileType = wrapper.application; includeInIndex = 0; path = DdSdkReactNativeExample.app; sourceTree = BUILT_PRODUCTS_DIR; }; 13B07FAF1A68108700A75B9A /* AppDelegate.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; name = AppDelegate.h; path = DdSdkReactNativeExample/AppDelegate.h; sourceTree = ""; }; 13B07FB01A68108700A75B9A /* AppDelegate.mm */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.cpp.objcpp; name = AppDelegate.mm; path = DdSdkReactNativeExample/AppDelegate.mm; sourceTree = ""; }; 13B07FB51A68108700A75B9A /* Images.xcassets */ = {isa = PBXFileReference; lastKnownFileType = folder.assetcatalog; name = Images.xcassets; path = DdSdkReactNativeExample/Images.xcassets; sourceTree = ""; }; 13B07FB61A68108700A75B9A /* Info.plist */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = text.plist.xml; name = Info.plist; path = DdSdkReactNativeExample/Info.plist; sourceTree = ""; }; 13B07FB71A68108700A75B9A /* main.m */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.objc; name = main.m; path = DdSdkReactNativeExample/main.m; sourceTree = ""; }; - 23F13554288C38B6E40C40C0 /* libPods-DdSdkReactNativeExample-DdSdkReactNativeExampleTests.a */ = {isa = PBXFileReference; explicitFileType = archive.ar; includeInIndex = 0; path = "libPods-DdSdkReactNativeExample-DdSdkReactNativeExampleTests.a"; sourceTree = BUILT_PRODUCTS_DIR; }; - 3A045849E2D62641D5E118BF /* Pods-DdSdkReactNativeExample.debug.xcconfig */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = text.xcconfig; name = "Pods-DdSdkReactNativeExample.debug.xcconfig"; path = "Target Support Files/Pods-DdSdkReactNativeExample/Pods-DdSdkReactNativeExample.debug.xcconfig"; sourceTree = ""; }; - 48F47EEDC40CB6913734A751 /* Pods-DdSdkReactNativeExample-DdSdkReactNativeExampleTests.debug.xcconfig */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = text.xcconfig; name = "Pods-DdSdkReactNativeExample-DdSdkReactNativeExampleTests.debug.xcconfig"; path = "Target Support Files/Pods-DdSdkReactNativeExample-DdSdkReactNativeExampleTests/Pods-DdSdkReactNativeExample-DdSdkReactNativeExampleTests.debug.xcconfig"; sourceTree = ""; }; + 29DBB4C2B328032C15BC6F6D /* Pods-DdSdkReactNativeExample-DdSdkReactNativeExampleTests.release.xcconfig */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = text.xcconfig; name = "Pods-DdSdkReactNativeExample-DdSdkReactNativeExampleTests.release.xcconfig"; path = "Target Support Files/Pods-DdSdkReactNativeExample-DdSdkReactNativeExampleTests/Pods-DdSdkReactNativeExample-DdSdkReactNativeExampleTests.release.xcconfig"; sourceTree = ""; }; + 392B93CDAA416A9B63770F89 /* libPods-DdSdkReactNativeExample.a */ = {isa = PBXFileReference; explicitFileType = archive.ar; includeInIndex = 0; path = "libPods-DdSdkReactNativeExample.a"; sourceTree = BUILT_PRODUCTS_DIR; }; + 6F4909953279AC89EEC11F97 /* Pods-DdSdkReactNativeExample.debug.xcconfig */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = text.xcconfig; name = "Pods-DdSdkReactNativeExample.debug.xcconfig"; path = "Target Support Files/Pods-DdSdkReactNativeExample/Pods-DdSdkReactNativeExample.debug.xcconfig"; sourceTree = ""; }; 81AB9BB72411601600AC10FF /* LaunchScreen.storyboard */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = file.storyboard; name = LaunchScreen.storyboard; path = DdSdkReactNativeExample/LaunchScreen.storyboard; sourceTree = ""; }; + 82767EEEA8B17AE9E7964826 /* Pods-DdSdkReactNativeExample.release.xcconfig */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = text.xcconfig; name = "Pods-DdSdkReactNativeExample.release.xcconfig"; path = "Target Support Files/Pods-DdSdkReactNativeExample/Pods-DdSdkReactNativeExample.release.xcconfig"; sourceTree = ""; }; + 8DA13F6EB04383E0F02E999D /* libPods-DdSdkReactNativeExample-DdSdkReactNativeExampleTests.a */ = {isa = PBXFileReference; explicitFileType = archive.ar; includeInIndex = 0; path = "libPods-DdSdkReactNativeExample-DdSdkReactNativeExampleTests.a"; sourceTree = BUILT_PRODUCTS_DIR; }; 91A6167299744A7A5E90FD00 /* PrivacyInfo.xcprivacy */ = {isa = PBXFileReference; includeInIndex = 1; name = PrivacyInfo.xcprivacy; path = DdSdkReactNativeExample/PrivacyInfo.xcprivacy; sourceTree = ""; }; - E38CF60556E63BB3723F029E /* Pods-DdSdkReactNativeExample.release.xcconfig */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = text.xcconfig; name = "Pods-DdSdkReactNativeExample.release.xcconfig"; path = "Target Support Files/Pods-DdSdkReactNativeExample/Pods-DdSdkReactNativeExample.release.xcconfig"; sourceTree = ""; }; + BFF31B86FD0DF57194AA0AF8 /* Pods-DdSdkReactNativeExample-DdSdkReactNativeExampleTests.debug.xcconfig */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = text.xcconfig; name = "Pods-DdSdkReactNativeExample-DdSdkReactNativeExampleTests.debug.xcconfig"; path = "Target Support Files/Pods-DdSdkReactNativeExample-DdSdkReactNativeExampleTests/Pods-DdSdkReactNativeExample-DdSdkReactNativeExampleTests.debug.xcconfig"; sourceTree = ""; }; ED297162215061F000B7C4FE /* JavaScriptCore.framework */ = {isa = PBXFileReference; lastKnownFileType = wrapper.framework; name = JavaScriptCore.framework; path = System/Library/Frameworks/JavaScriptCore.framework; sourceTree = SDKROOT; }; /* End PBXFileReference section */ @@ -53,7 +53,7 @@ isa = PBXFrameworksBuildPhase; buildActionMask = 2147483647; files = ( - 4B3DE818A35AD231F6C6DB4D /* libPods-DdSdkReactNativeExample-DdSdkReactNativeExampleTests.a in Frameworks */, + 43609140DA01D72B0EC361A9 /* libPods-DdSdkReactNativeExample-DdSdkReactNativeExampleTests.a in Frameworks */, ); runOnlyForDeploymentPostprocessing = 0; }; @@ -61,7 +61,7 @@ isa = PBXFrameworksBuildPhase; buildActionMask = 2147483647; files = ( - D9F1E7F5DF2BC57E774FB608 /* libPods-DdSdkReactNativeExample.a in Frameworks */, + 38FDA727C2ADFB612BC59CAF /* libPods-DdSdkReactNativeExample.a in Frameworks */, ); runOnlyForDeploymentPostprocessing = 0; }; @@ -103,8 +103,8 @@ isa = PBXGroup; children = ( ED297162215061F000B7C4FE /* JavaScriptCore.framework */, - 107736FD8F6F9B881BBFD056 /* libPods-DdSdkReactNativeExample.a */, - 23F13554288C38B6E40C40C0 /* libPods-DdSdkReactNativeExample-DdSdkReactNativeExampleTests.a */, + 392B93CDAA416A9B63770F89 /* libPods-DdSdkReactNativeExample.a */, + 8DA13F6EB04383E0F02E999D /* libPods-DdSdkReactNativeExample-DdSdkReactNativeExampleTests.a */, ); name = Frameworks; sourceTree = ""; @@ -143,10 +143,10 @@ BBD78D7AC51CEA395F1C20DB /* Pods */ = { isa = PBXGroup; children = ( - 3A045849E2D62641D5E118BF /* Pods-DdSdkReactNativeExample.debug.xcconfig */, - E38CF60556E63BB3723F029E /* Pods-DdSdkReactNativeExample.release.xcconfig */, - 48F47EEDC40CB6913734A751 /* Pods-DdSdkReactNativeExample-DdSdkReactNativeExampleTests.debug.xcconfig */, - 0493692174A5FD4C9D08B43C /* Pods-DdSdkReactNativeExample-DdSdkReactNativeExampleTests.release.xcconfig */, + 6F4909953279AC89EEC11F97 /* Pods-DdSdkReactNativeExample.debug.xcconfig */, + 82767EEEA8B17AE9E7964826 /* Pods-DdSdkReactNativeExample.release.xcconfig */, + BFF31B86FD0DF57194AA0AF8 /* Pods-DdSdkReactNativeExample-DdSdkReactNativeExampleTests.debug.xcconfig */, + 29DBB4C2B328032C15BC6F6D /* Pods-DdSdkReactNativeExample-DdSdkReactNativeExampleTests.release.xcconfig */, ); path = Pods; sourceTree = ""; @@ -158,12 +158,12 @@ isa = PBXNativeTarget; buildConfigurationList = 00E357021AD99517003FC87E /* Build configuration list for PBXNativeTarget "DdSdkReactNativeExampleTests" */; buildPhases = ( - 6D4F6FA52C55C1F159F1616C /* [CP] Check Pods Manifest.lock */, + D1A3CC694B1E963BF31887BB /* [CP] Check Pods Manifest.lock */, 00E356EA1AD99517003FC87E /* Sources */, 00E356EB1AD99517003FC87E /* Frameworks */, 00E356EC1AD99517003FC87E /* Resources */, - AB23B805FDD1DBED22BCB39E /* [CP] Embed Pods Frameworks */, - 405DABE0165091D35C38FA37 /* [CP] Copy Pods Resources */, + BC3C0DB0431D1E5422DAA913 /* [CP] Embed Pods Frameworks */, + E0783DBC9D1C73BD4A2C2E27 /* [CP] Copy Pods Resources */, ); buildRules = ( ); @@ -179,14 +179,14 @@ isa = PBXNativeTarget; buildConfigurationList = 13B07F931A680F5B00A75B9A /* Build configuration list for PBXNativeTarget "DdSdkReactNativeExample" */; buildPhases = ( - 826647C68D074940F107999B /* [CP] Check Pods Manifest.lock */, + E7FEDEC891CFB376C01E3757 /* [CP] Check Pods Manifest.lock */, FD10A7F022414F080027D42C /* Start Packager */, 13B07F871A680F5B00A75B9A /* Sources */, 13B07F8C1A680F5B00A75B9A /* Frameworks */, 13B07F8E1A680F5B00A75B9A /* Resources */, 00DD1BFF1BD5951E006B06BC /* Bundle React Native code and images */, - 726D869294208BDE5D03F2C5 /* [CP] Embed Pods Frameworks */, - E0C0EC9BE76051F3B3E475F6 /* [CP] Copy Pods Resources */, + 24FCB8A28DAC48C3D46EDEDA /* [CP] Embed Pods Frameworks */, + 883B42E77DC977535F0A70C3 /* [CP] Copy Pods Resources */, ); buildRules = ( ); @@ -270,63 +270,58 @@ shellPath = /bin/sh; shellScript = "set -e\n\nWITH_ENVIRONMENT=\"../node_modules/react-native/scripts/xcode/with-environment.sh\"\nREACT_NATIVE_XCODE=\"../node_modules/react-native/scripts/react-native-xcode.sh\"\n\n/bin/sh -c \"$WITH_ENVIRONMENT $REACT_NATIVE_XCODE\"\n"; }; - 405DABE0165091D35C38FA37 /* [CP] Copy Pods Resources */ = { + 24FCB8A28DAC48C3D46EDEDA /* [CP] Embed Pods Frameworks */ = { isa = PBXShellScriptBuildPhase; buildActionMask = 2147483647; files = ( ); inputFileListPaths = ( - "${PODS_ROOT}/Target Support Files/Pods-DdSdkReactNativeExample-DdSdkReactNativeExampleTests/Pods-DdSdkReactNativeExample-DdSdkReactNativeExampleTests-resources-${CONFIGURATION}-input-files.xcfilelist", + "${PODS_ROOT}/Target Support Files/Pods-DdSdkReactNativeExample/Pods-DdSdkReactNativeExample-frameworks-${CONFIGURATION}-input-files.xcfilelist", ); - name = "[CP] Copy Pods Resources"; + name = "[CP] Embed Pods Frameworks"; outputFileListPaths = ( - "${PODS_ROOT}/Target Support Files/Pods-DdSdkReactNativeExample-DdSdkReactNativeExampleTests/Pods-DdSdkReactNativeExample-DdSdkReactNativeExampleTests-resources-${CONFIGURATION}-output-files.xcfilelist", + "${PODS_ROOT}/Target Support Files/Pods-DdSdkReactNativeExample/Pods-DdSdkReactNativeExample-frameworks-${CONFIGURATION}-output-files.xcfilelist", ); runOnlyForDeploymentPostprocessing = 0; shellPath = /bin/sh; - shellScript = "\"${PODS_ROOT}/Target Support Files/Pods-DdSdkReactNativeExample-DdSdkReactNativeExampleTests/Pods-DdSdkReactNativeExample-DdSdkReactNativeExampleTests-resources.sh\"\n"; + shellScript = "\"${PODS_ROOT}/Target Support Files/Pods-DdSdkReactNativeExample/Pods-DdSdkReactNativeExample-frameworks.sh\"\n"; showEnvVarsInLog = 0; }; - 6D4F6FA52C55C1F159F1616C /* [CP] Check Pods Manifest.lock */ = { + 883B42E77DC977535F0A70C3 /* [CP] Copy Pods Resources */ = { isa = PBXShellScriptBuildPhase; buildActionMask = 2147483647; files = ( ); inputFileListPaths = ( + "${PODS_ROOT}/Target Support Files/Pods-DdSdkReactNativeExample/Pods-DdSdkReactNativeExample-resources-${CONFIGURATION}-input-files.xcfilelist", ); - inputPaths = ( - "${PODS_PODFILE_DIR_PATH}/Podfile.lock", - "${PODS_ROOT}/Manifest.lock", - ); - name = "[CP] Check Pods Manifest.lock"; + name = "[CP] Copy Pods Resources"; outputFileListPaths = ( - ); - outputPaths = ( - "$(DERIVED_FILE_DIR)/Pods-DdSdkReactNativeExample-DdSdkReactNativeExampleTests-checkManifestLockResult.txt", + "${PODS_ROOT}/Target Support Files/Pods-DdSdkReactNativeExample/Pods-DdSdkReactNativeExample-resources-${CONFIGURATION}-output-files.xcfilelist", ); runOnlyForDeploymentPostprocessing = 0; shellPath = /bin/sh; - shellScript = "diff \"${PODS_PODFILE_DIR_PATH}/Podfile.lock\" \"${PODS_ROOT}/Manifest.lock\" > /dev/null\nif [ $? != 0 ] ; then\n # print error to STDERR\n echo \"error: The sandbox is not in sync with the Podfile.lock. Run 'pod install' or update your CocoaPods installation.\" >&2\n exit 1\nfi\n# This output is used by Xcode 'outputs' to avoid re-running this script phase.\necho \"SUCCESS\" > \"${SCRIPT_OUTPUT_FILE_0}\"\n"; + shellScript = "\"${PODS_ROOT}/Target Support Files/Pods-DdSdkReactNativeExample/Pods-DdSdkReactNativeExample-resources.sh\"\n"; showEnvVarsInLog = 0; }; - 726D869294208BDE5D03F2C5 /* [CP] Embed Pods Frameworks */ = { + BC3C0DB0431D1E5422DAA913 /* [CP] Embed Pods Frameworks */ = { isa = PBXShellScriptBuildPhase; buildActionMask = 2147483647; files = ( ); inputFileListPaths = ( - "${PODS_ROOT}/Target Support Files/Pods-DdSdkReactNativeExample/Pods-DdSdkReactNativeExample-frameworks-${CONFIGURATION}-input-files.xcfilelist", + "${PODS_ROOT}/Target Support Files/Pods-DdSdkReactNativeExample-DdSdkReactNativeExampleTests/Pods-DdSdkReactNativeExample-DdSdkReactNativeExampleTests-frameworks-${CONFIGURATION}-input-files.xcfilelist", ); name = "[CP] Embed Pods Frameworks"; outputFileListPaths = ( - "${PODS_ROOT}/Target Support Files/Pods-DdSdkReactNativeExample/Pods-DdSdkReactNativeExample-frameworks-${CONFIGURATION}-output-files.xcfilelist", + "${PODS_ROOT}/Target Support Files/Pods-DdSdkReactNativeExample-DdSdkReactNativeExampleTests/Pods-DdSdkReactNativeExample-DdSdkReactNativeExampleTests-frameworks-${CONFIGURATION}-output-files.xcfilelist", ); runOnlyForDeploymentPostprocessing = 0; shellPath = /bin/sh; - shellScript = "\"${PODS_ROOT}/Target Support Files/Pods-DdSdkReactNativeExample/Pods-DdSdkReactNativeExample-frameworks.sh\"\n"; + shellScript = "\"${PODS_ROOT}/Target Support Files/Pods-DdSdkReactNativeExample-DdSdkReactNativeExampleTests/Pods-DdSdkReactNativeExample-DdSdkReactNativeExampleTests-frameworks.sh\"\n"; showEnvVarsInLog = 0; }; - 826647C68D074940F107999B /* [CP] Check Pods Manifest.lock */ = { + D1A3CC694B1E963BF31887BB /* [CP] Check Pods Manifest.lock */ = { isa = PBXShellScriptBuildPhase; buildActionMask = 2147483647; files = ( @@ -341,45 +336,50 @@ outputFileListPaths = ( ); outputPaths = ( - "$(DERIVED_FILE_DIR)/Pods-DdSdkReactNativeExample-checkManifestLockResult.txt", + "$(DERIVED_FILE_DIR)/Pods-DdSdkReactNativeExample-DdSdkReactNativeExampleTests-checkManifestLockResult.txt", ); runOnlyForDeploymentPostprocessing = 0; shellPath = /bin/sh; shellScript = "diff \"${PODS_PODFILE_DIR_PATH}/Podfile.lock\" \"${PODS_ROOT}/Manifest.lock\" > /dev/null\nif [ $? != 0 ] ; then\n # print error to STDERR\n echo \"error: The sandbox is not in sync with the Podfile.lock. Run 'pod install' or update your CocoaPods installation.\" >&2\n exit 1\nfi\n# This output is used by Xcode 'outputs' to avoid re-running this script phase.\necho \"SUCCESS\" > \"${SCRIPT_OUTPUT_FILE_0}\"\n"; showEnvVarsInLog = 0; }; - AB23B805FDD1DBED22BCB39E /* [CP] Embed Pods Frameworks */ = { + E0783DBC9D1C73BD4A2C2E27 /* [CP] Copy Pods Resources */ = { isa = PBXShellScriptBuildPhase; buildActionMask = 2147483647; files = ( ); inputFileListPaths = ( - "${PODS_ROOT}/Target Support Files/Pods-DdSdkReactNativeExample-DdSdkReactNativeExampleTests/Pods-DdSdkReactNativeExample-DdSdkReactNativeExampleTests-frameworks-${CONFIGURATION}-input-files.xcfilelist", + "${PODS_ROOT}/Target Support Files/Pods-DdSdkReactNativeExample-DdSdkReactNativeExampleTests/Pods-DdSdkReactNativeExample-DdSdkReactNativeExampleTests-resources-${CONFIGURATION}-input-files.xcfilelist", ); - name = "[CP] Embed Pods Frameworks"; + name = "[CP] Copy Pods Resources"; outputFileListPaths = ( - "${PODS_ROOT}/Target Support Files/Pods-DdSdkReactNativeExample-DdSdkReactNativeExampleTests/Pods-DdSdkReactNativeExample-DdSdkReactNativeExampleTests-frameworks-${CONFIGURATION}-output-files.xcfilelist", + "${PODS_ROOT}/Target Support Files/Pods-DdSdkReactNativeExample-DdSdkReactNativeExampleTests/Pods-DdSdkReactNativeExample-DdSdkReactNativeExampleTests-resources-${CONFIGURATION}-output-files.xcfilelist", ); runOnlyForDeploymentPostprocessing = 0; shellPath = /bin/sh; - shellScript = "\"${PODS_ROOT}/Target Support Files/Pods-DdSdkReactNativeExample-DdSdkReactNativeExampleTests/Pods-DdSdkReactNativeExample-DdSdkReactNativeExampleTests-frameworks.sh\"\n"; + shellScript = "\"${PODS_ROOT}/Target Support Files/Pods-DdSdkReactNativeExample-DdSdkReactNativeExampleTests/Pods-DdSdkReactNativeExample-DdSdkReactNativeExampleTests-resources.sh\"\n"; showEnvVarsInLog = 0; }; - E0C0EC9BE76051F3B3E475F6 /* [CP] Copy Pods Resources */ = { + E7FEDEC891CFB376C01E3757 /* [CP] Check Pods Manifest.lock */ = { isa = PBXShellScriptBuildPhase; buildActionMask = 2147483647; files = ( ); inputFileListPaths = ( - "${PODS_ROOT}/Target Support Files/Pods-DdSdkReactNativeExample/Pods-DdSdkReactNativeExample-resources-${CONFIGURATION}-input-files.xcfilelist", ); - name = "[CP] Copy Pods Resources"; + inputPaths = ( + "${PODS_PODFILE_DIR_PATH}/Podfile.lock", + "${PODS_ROOT}/Manifest.lock", + ); + name = "[CP] Check Pods Manifest.lock"; outputFileListPaths = ( - "${PODS_ROOT}/Target Support Files/Pods-DdSdkReactNativeExample/Pods-DdSdkReactNativeExample-resources-${CONFIGURATION}-output-files.xcfilelist", + ); + outputPaths = ( + "$(DERIVED_FILE_DIR)/Pods-DdSdkReactNativeExample-checkManifestLockResult.txt", ); runOnlyForDeploymentPostprocessing = 0; shellPath = /bin/sh; - shellScript = "\"${PODS_ROOT}/Target Support Files/Pods-DdSdkReactNativeExample/Pods-DdSdkReactNativeExample-resources.sh\"\n"; + shellScript = "diff \"${PODS_PODFILE_DIR_PATH}/Podfile.lock\" \"${PODS_ROOT}/Manifest.lock\" > /dev/null\nif [ $? != 0 ] ; then\n # print error to STDERR\n echo \"error: The sandbox is not in sync with the Podfile.lock. Run 'pod install' or update your CocoaPods installation.\" >&2\n exit 1\nfi\n# This output is used by Xcode 'outputs' to avoid re-running this script phase.\necho \"SUCCESS\" > \"${SCRIPT_OUTPUT_FILE_0}\"\n"; showEnvVarsInLog = 0; }; FD10A7F022414F080027D42C /* Start Packager */ = { @@ -434,7 +434,7 @@ /* Begin XCBuildConfiguration section */ 00E356F61AD99517003FC87E /* Debug */ = { isa = XCBuildConfiguration; - baseConfigurationReference = 48F47EEDC40CB6913734A751 /* Pods-DdSdkReactNativeExample-DdSdkReactNativeExampleTests.debug.xcconfig */; + baseConfigurationReference = BFF31B86FD0DF57194AA0AF8 /* Pods-DdSdkReactNativeExample-DdSdkReactNativeExampleTests.debug.xcconfig */; buildSettings = { BUNDLE_LOADER = "$(TEST_HOST)"; GCC_PREPROCESSOR_DEFINITIONS = ( @@ -461,7 +461,7 @@ }; 00E356F71AD99517003FC87E /* Release */ = { isa = XCBuildConfiguration; - baseConfigurationReference = 0493692174A5FD4C9D08B43C /* Pods-DdSdkReactNativeExample-DdSdkReactNativeExampleTests.release.xcconfig */; + baseConfigurationReference = 29DBB4C2B328032C15BC6F6D /* Pods-DdSdkReactNativeExample-DdSdkReactNativeExampleTests.release.xcconfig */; buildSettings = { BUNDLE_LOADER = "$(TEST_HOST)"; COPY_PHASE_STRIP = NO; @@ -485,7 +485,7 @@ }; 13B07F941A680F5B00A75B9A /* Debug */ = { isa = XCBuildConfiguration; - baseConfigurationReference = 3A045849E2D62641D5E118BF /* Pods-DdSdkReactNativeExample.debug.xcconfig */; + baseConfigurationReference = 6F4909953279AC89EEC11F97 /* Pods-DdSdkReactNativeExample.debug.xcconfig */; buildSettings = { ASSETCATALOG_COMPILER_APPICON_NAME = AppIcon; CLANG_ENABLE_MODULES = YES; @@ -512,7 +512,7 @@ }; 13B07F951A680F5B00A75B9A /* Release */ = { isa = XCBuildConfiguration; - baseConfigurationReference = E38CF60556E63BB3723F029E /* Pods-DdSdkReactNativeExample.release.xcconfig */; + baseConfigurationReference = 82767EEEA8B17AE9E7964826 /* Pods-DdSdkReactNativeExample.release.xcconfig */; buildSettings = { ASSETCATALOG_COMPILER_APPICON_NAME = AppIcon; CLANG_ENABLE_MODULES = YES; diff --git a/example-new-architecture/ios/Podfile.lock b/example-new-architecture/ios/Podfile.lock index b9f6bcde6..7f4ce83d6 100644 --- a/example-new-architecture/ios/Podfile.lock +++ b/example-new-architecture/ios/Podfile.lock @@ -1,22 +1,22 @@ PODS: - boost (1.84.0) - - DatadogCore (2.25.0): - - DatadogInternal (= 2.25.0) - - DatadogCrashReporting (2.25.0): - - DatadogInternal (= 2.25.0) + - DatadogCore (2.27.0): + - DatadogInternal (= 2.27.0) + - DatadogCrashReporting (2.27.0): + - DatadogInternal (= 2.27.0) - PLCrashReporter (~> 1.12.0) - - DatadogInternal (2.25.0) - - DatadogLogs (2.25.0): - - DatadogInternal (= 2.25.0) - - DatadogRUM (2.25.0): - - DatadogInternal (= 2.25.0) + - DatadogInternal (2.27.0) + - DatadogLogs (2.27.0): + - DatadogInternal (= 2.27.0) + - DatadogRUM (2.27.0): + - DatadogInternal (= 2.27.0) - DatadogSDKReactNative (2.7.1): - - DatadogCore (~> 2.25.0) - - DatadogCrashReporting (~> 2.25.0) - - DatadogLogs (~> 2.25.0) - - DatadogRUM (~> 2.25.0) - - DatadogTrace (~> 2.25.0) - - DatadogWebViewTracking (~> 2.25.0) + - DatadogCore (~> 2.27.0) + - DatadogCrashReporting (~> 2.27.0) + - DatadogLogs (~> 2.27.0) + - DatadogRUM (~> 2.27.0) + - DatadogTrace (~> 2.27.0) + - DatadogWebViewTracking (~> 2.27.0) - DoubleConversion - glog - hermes-engine @@ -37,11 +37,11 @@ PODS: - ReactCommon/turbomodule/bridging - ReactCommon/turbomodule/core - Yoga - - DatadogTrace (2.25.0): - - DatadogInternal (= 2.25.0) + - DatadogTrace (2.27.0): + - DatadogInternal (= 2.27.0) - OpenTelemetrySwiftApi (= 1.13.1) - - DatadogWebViewTracking (2.25.0): - - DatadogInternal (= 2.25.0) + - DatadogWebViewTracking (2.27.0): + - DatadogInternal (= 2.27.0) - DoubleConversion (1.1.6) - FBLazyVector (0.75.4) - fmt (9.1.0) @@ -1755,14 +1755,14 @@ EXTERNAL SOURCES: SPEC CHECKSUMS: boost: 4cb898d0bf20404aab1850c656dcea009429d6c1 - DatadogCore: a068d264191f687d00125aafa8042110cf886cd7 - DatadogCrashReporting: b19d80a98b1eb51bdb3ec5b1a7f339769fb70b95 - DatadogInternal: e9b6cef84448ee32f73bc9b37646708a65c1b8ae - DatadogLogs: 623d89158ef3a4a7545a8fbce9afa4cedc576324 - DatadogRUM: ff0661b42124d90c9ff2538c3cc1b806ddf7620c - DatadogSDKReactNative: 1b6ae87f28418855aa2a52972dab50f057b817d7 - DatadogTrace: 4e1aac322eafd8568fd4a966b02e58fbb5af0612 - DatadogWebViewTracking: 3b2465b5a5bf10f187807e490678a2e0a3c2daae + DatadogCore: 68aee4ffcc3ea17a3b0aa527907757883fc72c84 + DatadogCrashReporting: e6a83b143394e28c9c1cb48c5cfb18eff507b3be + DatadogInternal: 3c5cae6772295fd175a9de11e4747a9322aaa4e7 + DatadogLogs: 09d6358dc7682f9d3eaea85dd418f82d2db3560c + DatadogRUM: 0f267df8c9c8579a291870c2bce4549587391a07 + DatadogSDKReactNative: ff7557644bf022e65cd0e25f85b496c3f675dcf8 + DatadogTrace: f46c8220c73463d09741013f385a6e27cd39185b + DatadogWebViewTracking: dc8376420c8686efd09d00752bc1034b639d180b DoubleConversion: 76ab83afb40bddeeee456813d9c04f67f78771b5 FBLazyVector: 430e10366de01d1e3d57374500b1b150fe482e6d fmt: 4c2741a687cc09f0634a2e2c72a838b99f1ff120 @@ -1770,61 +1770,61 @@ SPEC CHECKSUMS: hermes-engine: ea92f60f37dba025e293cbe4b4a548fd26b610a0 OpenTelemetrySwiftApi: aaee576ed961e0c348af78df58b61300e95bd104 PLCrashReporter: db59ef96fa3d25f3650040d02ec2798cffee75f2 - RCT-Folly: 34124ae2e667a0e5f0ea378db071d27548124321 + RCT-Folly: 4464f4d875961fce86008d45f4ecf6cef6de0740 RCTDeprecation: 726d24248aeab6d7180dac71a936bbca6a994ed1 RCTRequired: a94e7febda6db0345d207e854323c37e3a31d93b RCTTypeSafety: 28e24a6e44f5cbf912c66dde6ab7e07d1059a205 React: c2830fa483b0334bda284e46a8579ebbe0c5447e React-callinvoker: 4aecde929540c26b841a4493f70ebf6016691eb8 - React-Core: 32a581847d74ce9b5f51d9d11a4e4d132ad61553 - React-CoreModules: f53e0674e1747fa41c83bc970e82add97b14ad87 - React-cxxreact: 86f3b1692081fd954a0cb27cc90d14674645b64b + React-Core: 9c059899f00d46b5cec3ed79251f77d9c469553d + React-CoreModules: 9fac2d31803c0ed03e4ddaa17f1481714f8633a5 + React-cxxreact: a979810a3ca4045ceb09407a17563046a7f71494 React-debug: 3d21f69d8def0656f8b8ec25c0f05954f4d862c5 - React-defaultsnativemodule: 63cb78c593c87b36eadcc998c1b3ad703633effa - React-domnativemodule: 44d361eee205330c7826c619513feac2df9d782c - React-Fabric: cbf38ceefb1ac6236897abdb538130228e126695 - React-FabricComponents: dd4b01c4a60920d8dc15f3b5594c6fe9e7648a38 - React-FabricImage: 8b13aedfbd20f349b9b3314baf993c71c02995d9 + React-defaultsnativemodule: 5bb91842d2bd91c5e9d23f67f5913a1226e8d1f2 + React-domnativemodule: a8ff57705d8372d7182e9277110ad290d50ffeed + React-Fabric: 3bc7be9e3a6b7581fc828dc2aa041e107fc8ffb8 + React-FabricComponents: 668e0cb02344c2942e4c8921a643648faa6dc364 + React-FabricImage: 3f44dd25a2b020ed5215d4438a1bb1f3461cd4f1 React-featureflags: ee1abd6f71555604a36cda6476e3c502ca9a48e5 - React-featureflagsnativemodule: 59749d488917d6fbffe7c94cb622e2c96a7e9e00 - React-graphics: f5c4cf3abc5aa083e28fe7a866bd95fb3bbbc1e0 - React-hermes: cad69ee9a53870cc38e5386889aa7ea81c75b6a1 - React-idlecallbacksnativemodule: 0de9d2f5f1214852120cc28ade8fef18436cb5ee - React-ImageManager: cb78d7a24f45f8f9a5a1640b52fce4c9f637f98d - React-jserrorhandler: dfe9b96e99a93d4f4858bad66d5bc4813a87a21a - React-jsi: bc1f6073e203fb540edd6d26f926ad041809b443 - React-jsiexecutor: 1e8fc70dd9614c3e9d5c3c876b2ea3cd1d931ee4 - React-jsinspector: 7544a20e9beac390f1b65d9f0040d97cd55dc198 - React-jsitracing: cac972ccc097db399df8044e49add8e5b25cb34a - React-logger: 80d87daf2f98bf95ab668b79062c1e0c3f0c2f8a - React-Mapbuffer: acffb35a53a5f474ede09f082ac609b41aafab2e - React-microtasksnativemodule: a397fa9431e377a7e3acacc7be68e4fcc89c3d0e + React-featureflagsnativemodule: d91903b8ad0e82b1eee3e7845d08024fbd6c758f + React-graphics: d7dd9c8d75cad5af19e19911fa370f78f2febd96 + React-hermes: 2069b08e965e48b7f8aa2c0ca0a2f383349ed55d + React-idlecallbacksnativemodule: 568f7db5c625852e3eac25a5686760da152f0225 + React-ImageManager: ab7a7d17dd0ff1ef1d4e1e88197d1119da9957ce + React-jserrorhandler: d9e867bb83b868472f3f7601883f0403b3e3942d + React-jsi: d68f1d516e5120a510afe356647a6a1e1f98f2db + React-jsiexecutor: 6366a08a0fc01c9b65736f8deacd47c4a397912a + React-jsinspector: 0ac947411f0c73b34908800cc7a6a31d8f93e1a8 + React-jsitracing: 0e8c0aadb1fcec6b1e4f2a66ee3b0da80f0f8615 + React-logger: d79b704bf215af194f5213a6b7deec50ba8e6a9b + React-Mapbuffer: b982d5bba94a8bc073bda48f0d27c9b28417fae3 + React-microtasksnativemodule: 2cec1d6e126598df0f165268afa231174dd1a611 React-nativeconfig: 8c83d992b9cc7d75b5abe262069eaeea4349f794 - React-NativeModulesApple: 97f606f09fd9840b3868333984d6a0e7bcc425b5 + React-NativeModulesApple: 9f7920224a3b0c7d04d77990067ded14cee3c614 React-perflogger: 59e1a3182dca2cee7b9f1f7aab204018d46d1914 - React-performancetimeline: 3e3f5c5576fe1cc2dd5fcfb1ae2046d5dceda3d7 + React-performancetimeline: a9d05533ff834c6aa1f532e05e571f3fd2e3c1ed React-RCTActionSheet: d80e68d3baa163e4012a47c1f42ddd8bcd9672cc - React-RCTAnimation: 051f0781709c5ed80ba8aa2b421dfb1d72a03162 - React-RCTAppDelegate: 6bc8e8a3fc051ea502e5680689c18b061c965ef3 - React-RCTBlob: 895eaf8bca2e76ee1c95b479235c6ccebe586fc6 - React-RCTFabric: 8ad8f8ae5be968efab02e95b3471054eb7f2c918 - React-RCTImage: b73149c0cd54b641dba2d6250aaf168fee784d9f - React-RCTLinking: 23e519712285427e50372fbc6e0265d422abf462 - React-RCTNetwork: a5d06d122588031989115f293654b13353753630 - React-RCTSettings: 87d03b5d94e6eadd1e8c1d16a62f790751aafb55 - React-RCTText: 75e9dd39684f4bcd1836134ac2348efaca7437b3 - React-RCTVibration: 033c161fe875e6fa096d0d9733c2e2501682e3d4 + React-RCTAnimation: bde981f6bd7f8493696564da9b3bd05721d3b3cc + React-RCTAppDelegate: b21d50ec42f18fedae765629d56850538a8c98d7 + React-RCTBlob: 520a0382bf8e89b9153d60e3c6293e51615834e9 + React-RCTFabric: a083f6c78c6084a0ac332934fc5cfc4271bab61f + React-RCTImage: 90448d2882464af6015ed57c98f463f8748be465 + React-RCTLinking: 1bd95d0a704c271d21d758e0f0388cced768d77d + React-RCTNetwork: 218af6e63eb9b47935cc5a775b7a1396cf10ff91 + React-RCTSettings: e10b8e42b0fce8a70fbf169de32a2ae03243ef6b + React-RCTText: e7bf9f4997a1a0b45c052d4ad9a0fe653061cf29 + React-RCTVibration: 5b70b7f11e48d1c57e0d4832c2097478adbabe93 React-rendererconsistency: f620c6e003e3c4593e6349d8242b8aeb3d4633f0 - React-rendererdebug: 5be7b834677b2a7a263f4d2545f0d4966cafad82 + React-rendererdebug: e697680f4dd117becc5daf9ea9800067abcee91c React-rncore: c22bd84cc2f38947f0414fab6646db22ff4f80cd - React-RuntimeApple: 71160e6c02efa07d198b84ef5c3a52a7d9d0399d - React-RuntimeCore: f88f79ec995c12af56a265d7505c7630733d9d82 + React-RuntimeApple: de0976836b90b484305638616898cbc665c67c13 + React-RuntimeCore: 3c4a5aa63d9e7a3c17b7fb23f32a72a8bcfccf57 React-runtimeexecutor: ea90d8e3a9e0f4326939858dafc6ab17c031a5d3 - React-RuntimeHermes: 49f86328914021f50fd5a5b9756685f5f6d8b4da - React-runtimescheduler: fed70991b942c6df752a59a22081e45fc811b11c - React-utils: 02526ea15628a768b8db9517b6017a1785c734d2 - ReactCodegen: 8b5341ecb61898b8bd40a73ebc443c6bf2d14423 - ReactCommon: 36d48f542b4010786d6b2bcee615fe5f906b7105 + React-RuntimeHermes: c6b0afdf1f493621214eeb6517fb859ce7b21b81 + React-runtimescheduler: 84f0d876d254bce6917a277b3930eb9bc29df6c7 + React-utils: cbe8b8b3d7b2ac282e018e46f0e7b25cdc87c5a0 + ReactCodegen: 4bcb34e6b5ebf6eef5cee34f55aa39991ea1c1f1 + ReactCommon: 6a952e50c2a4b694731d7682aaa6c79bc156e4ad SocketRocket: abac6f5de4d4d62d24e11868d7a2f427e0ef940d Yoga: 055f92ad73f8c8600a93f0e25ac0b2344c3b07e6 diff --git a/example/ios/DdSdkReactNativeExample.xcodeproj/project.pbxproj b/example/ios/DdSdkReactNativeExample.xcodeproj/project.pbxproj index d6b24e097..6de001f48 100644 --- a/example/ios/DdSdkReactNativeExample.xcodeproj/project.pbxproj +++ b/example/ios/DdSdkReactNativeExample.xcodeproj/project.pbxproj @@ -7,12 +7,12 @@ objects = { /* Begin PBXBuildFile section */ + 08326E502C270355238BADFB /* libPods-ddSdkReactnativeExample.a in Frameworks */ = {isa = PBXBuildFile; fileRef = 795EB73841F14DCF7EB8E5FC /* libPods-ddSdkReactnativeExample.a */; }; 13B07FBC1A68108700A75B9A /* AppDelegate.mm in Sources */ = {isa = PBXBuildFile; fileRef = 13B07FB01A68108700A75B9A /* AppDelegate.mm */; }; 13B07FBF1A68108700A75B9A /* Images.xcassets in Resources */ = {isa = PBXBuildFile; fileRef = 13B07FB51A68108700A75B9A /* Images.xcassets */; }; 13B07FC11A68108700A75B9A /* main.m in Sources */ = {isa = PBXBuildFile; fileRef = 13B07FB71A68108700A75B9A /* main.m */; }; 7115D38EB0DCB0BDB39D62A2 /* PrivacyInfo.xcprivacy in Resources */ = {isa = PBXBuildFile; fileRef = A54EC6889135AAF4EFAD7EF0 /* PrivacyInfo.xcprivacy */; }; 81AB9BB82411601600AC10FF /* LaunchScreen.storyboard in Resources */ = {isa = PBXBuildFile; fileRef = 81AB9BB72411601600AC10FF /* LaunchScreen.storyboard */; }; - 9535939DC34C118DCA3512D8 /* libPods-ddSdkReactnativeExample.a in Frameworks */ = {isa = PBXBuildFile; fileRef = 5EB72F57A8699EA38B88C5B7 /* libPods-ddSdkReactnativeExample.a */; }; /* End PBXBuildFile section */ /* Begin PBXFileReference section */ @@ -22,12 +22,12 @@ 13B07FB51A68108700A75B9A /* Images.xcassets */ = {isa = PBXFileReference; lastKnownFileType = folder.assetcatalog; name = Images.xcassets; path = ddSdkReactnativeExample/Images.xcassets; sourceTree = ""; }; 13B07FB61A68108700A75B9A /* Info.plist */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = text.plist.xml; name = Info.plist; path = ddSdkReactnativeExample/Info.plist; sourceTree = ""; }; 13B07FB71A68108700A75B9A /* main.m */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.objc; name = main.m; path = ddSdkReactnativeExample/main.m; sourceTree = ""; }; - 5EB72F57A8699EA38B88C5B7 /* libPods-ddSdkReactnativeExample.a */ = {isa = PBXFileReference; explicitFileType = archive.ar; includeInIndex = 0; path = "libPods-ddSdkReactnativeExample.a"; sourceTree = BUILT_PRODUCTS_DIR; }; + 508824AAB7B5E7CA505CE25A /* Pods-ddSdkReactnativeExample.debug.xcconfig */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = text.xcconfig; name = "Pods-ddSdkReactnativeExample.debug.xcconfig"; path = "Target Support Files/Pods-ddSdkReactnativeExample/Pods-ddSdkReactnativeExample.debug.xcconfig"; sourceTree = ""; }; + 795EB73841F14DCF7EB8E5FC /* libPods-ddSdkReactnativeExample.a */ = {isa = PBXFileReference; explicitFileType = archive.ar; includeInIndex = 0; path = "libPods-ddSdkReactnativeExample.a"; sourceTree = BUILT_PRODUCTS_DIR; }; 81AB9BB72411601600AC10FF /* LaunchScreen.storyboard */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = file.storyboard; name = LaunchScreen.storyboard; path = ddSdkReactnativeExample/LaunchScreen.storyboard; sourceTree = ""; }; - A141D195C842A30B5E492167 /* Pods-ddSdkReactnativeExample.release.xcconfig */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = text.xcconfig; name = "Pods-ddSdkReactnativeExample.release.xcconfig"; path = "Target Support Files/Pods-ddSdkReactnativeExample/Pods-ddSdkReactnativeExample.release.xcconfig"; sourceTree = ""; }; A54EC6889135AAF4EFAD7EF0 /* PrivacyInfo.xcprivacy */ = {isa = PBXFileReference; includeInIndex = 1; name = PrivacyInfo.xcprivacy; path = ddSdkReactnativeExample/PrivacyInfo.xcprivacy; sourceTree = ""; }; + D0DD831AA1F9F22C6DC43876 /* Pods-ddSdkReactnativeExample.release.xcconfig */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = text.xcconfig; name = "Pods-ddSdkReactnativeExample.release.xcconfig"; path = "Target Support Files/Pods-ddSdkReactnativeExample/Pods-ddSdkReactnativeExample.release.xcconfig"; sourceTree = ""; }; ED297162215061F000B7C4FE /* JavaScriptCore.framework */ = {isa = PBXFileReference; lastKnownFileType = wrapper.framework; name = JavaScriptCore.framework; path = System/Library/Frameworks/JavaScriptCore.framework; sourceTree = SDKROOT; }; - EE54EA8A24584CAA02AEF5B6 /* Pods-ddSdkReactnativeExample.debug.xcconfig */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = text.xcconfig; name = "Pods-ddSdkReactnativeExample.debug.xcconfig"; path = "Target Support Files/Pods-ddSdkReactnativeExample/Pods-ddSdkReactnativeExample.debug.xcconfig"; sourceTree = ""; }; /* End PBXFileReference section */ /* Begin PBXFrameworksBuildPhase section */ @@ -35,7 +35,7 @@ isa = PBXFrameworksBuildPhase; buildActionMask = 2147483647; files = ( - 9535939DC34C118DCA3512D8 /* libPods-ddSdkReactnativeExample.a in Frameworks */, + 08326E502C270355238BADFB /* libPods-ddSdkReactnativeExample.a in Frameworks */, ); runOnlyForDeploymentPostprocessing = 0; }; @@ -60,7 +60,7 @@ isa = PBXGroup; children = ( ED297162215061F000B7C4FE /* JavaScriptCore.framework */, - 5EB72F57A8699EA38B88C5B7 /* libPods-ddSdkReactnativeExample.a */, + 795EB73841F14DCF7EB8E5FC /* libPods-ddSdkReactnativeExample.a */, ); name = Frameworks; sourceTree = ""; @@ -97,8 +97,8 @@ BBD78D7AC51CEA395F1C20DB /* Pods */ = { isa = PBXGroup; children = ( - EE54EA8A24584CAA02AEF5B6 /* Pods-ddSdkReactnativeExample.debug.xcconfig */, - A141D195C842A30B5E492167 /* Pods-ddSdkReactnativeExample.release.xcconfig */, + 508824AAB7B5E7CA505CE25A /* Pods-ddSdkReactnativeExample.debug.xcconfig */, + D0DD831AA1F9F22C6DC43876 /* Pods-ddSdkReactnativeExample.release.xcconfig */, ); path = Pods; sourceTree = ""; @@ -110,14 +110,14 @@ isa = PBXNativeTarget; buildConfigurationList = 13B07F931A680F5B00A75B9A /* Build configuration list for PBXNativeTarget "ddSdkReactnativeExample" */; buildPhases = ( - A5ECFD6659BA530DF8825D9A /* [CP] Check Pods Manifest.lock */, + 97595D8806FADE12C01E7C36 /* [CP] Check Pods Manifest.lock */, FD10A7F022414F080027D42C /* Start Packager */, 13B07F871A680F5B00A75B9A /* Sources */, 13B07F8C1A680F5B00A75B9A /* Frameworks */, 13B07F8E1A680F5B00A75B9A /* Resources */, 00DD1BFF1BD5951E006B06BC /* Bundle React Native code and images */, - DA0679F851B89CF5694D38E3 /* [CP] Embed Pods Frameworks */, - A9F9AD52B6628FD1FB27A388 /* [CP] Copy Pods Resources */, + 4BBC65BF3E5A9C842DB0FFC2 /* [CP] Embed Pods Frameworks */, + C6409CB571C56E90B0909863 /* [CP] Copy Pods Resources */, ); buildRules = ( ); @@ -189,7 +189,24 @@ shellPath = /bin/sh; shellScript = "set -e\n\nWITH_ENVIRONMENT=\"../node_modules/react-native/scripts/xcode/with-environment.sh\"\nREACT_NATIVE_XCODE=\"../node_modules/react-native/scripts/react-native-xcode.sh\"\n\n/bin/sh -c \"$WITH_ENVIRONMENT $REACT_NATIVE_XCODE\"\n"; }; - A5ECFD6659BA530DF8825D9A /* [CP] Check Pods Manifest.lock */ = { + 4BBC65BF3E5A9C842DB0FFC2 /* [CP] Embed Pods Frameworks */ = { + isa = PBXShellScriptBuildPhase; + buildActionMask = 2147483647; + files = ( + ); + inputFileListPaths = ( + "${PODS_ROOT}/Target Support Files/Pods-ddSdkReactnativeExample/Pods-ddSdkReactnativeExample-frameworks-${CONFIGURATION}-input-files.xcfilelist", + ); + name = "[CP] Embed Pods Frameworks"; + outputFileListPaths = ( + "${PODS_ROOT}/Target Support Files/Pods-ddSdkReactnativeExample/Pods-ddSdkReactnativeExample-frameworks-${CONFIGURATION}-output-files.xcfilelist", + ); + runOnlyForDeploymentPostprocessing = 0; + shellPath = /bin/sh; + shellScript = "\"${PODS_ROOT}/Target Support Files/Pods-ddSdkReactnativeExample/Pods-ddSdkReactnativeExample-frameworks.sh\"\n"; + showEnvVarsInLog = 0; + }; + 97595D8806FADE12C01E7C36 /* [CP] Check Pods Manifest.lock */ = { isa = PBXShellScriptBuildPhase; buildActionMask = 2147483647; files = ( @@ -211,7 +228,7 @@ shellScript = "diff \"${PODS_PODFILE_DIR_PATH}/Podfile.lock\" \"${PODS_ROOT}/Manifest.lock\" > /dev/null\nif [ $? != 0 ] ; then\n # print error to STDERR\n echo \"error: The sandbox is not in sync with the Podfile.lock. Run 'pod install' or update your CocoaPods installation.\" >&2\n exit 1\nfi\n# This output is used by Xcode 'outputs' to avoid re-running this script phase.\necho \"SUCCESS\" > \"${SCRIPT_OUTPUT_FILE_0}\"\n"; showEnvVarsInLog = 0; }; - A9F9AD52B6628FD1FB27A388 /* [CP] Copy Pods Resources */ = { + C6409CB571C56E90B0909863 /* [CP] Copy Pods Resources */ = { isa = PBXShellScriptBuildPhase; buildActionMask = 2147483647; files = ( @@ -228,23 +245,6 @@ shellScript = "\"${PODS_ROOT}/Target Support Files/Pods-ddSdkReactnativeExample/Pods-ddSdkReactnativeExample-resources.sh\"\n"; showEnvVarsInLog = 0; }; - DA0679F851B89CF5694D38E3 /* [CP] Embed Pods Frameworks */ = { - isa = PBXShellScriptBuildPhase; - buildActionMask = 2147483647; - files = ( - ); - inputFileListPaths = ( - "${PODS_ROOT}/Target Support Files/Pods-ddSdkReactnativeExample/Pods-ddSdkReactnativeExample-frameworks-${CONFIGURATION}-input-files.xcfilelist", - ); - name = "[CP] Embed Pods Frameworks"; - outputFileListPaths = ( - "${PODS_ROOT}/Target Support Files/Pods-ddSdkReactnativeExample/Pods-ddSdkReactnativeExample-frameworks-${CONFIGURATION}-output-files.xcfilelist", - ); - runOnlyForDeploymentPostprocessing = 0; - shellPath = /bin/sh; - shellScript = "\"${PODS_ROOT}/Target Support Files/Pods-ddSdkReactnativeExample/Pods-ddSdkReactnativeExample-frameworks.sh\"\n"; - showEnvVarsInLog = 0; - }; FD10A7F022414F080027D42C /* Start Packager */ = { isa = PBXShellScriptBuildPhase; buildActionMask = 2147483647; @@ -281,7 +281,7 @@ /* Begin XCBuildConfiguration section */ 13B07F941A680F5B00A75B9A /* Debug */ = { isa = XCBuildConfiguration; - baseConfigurationReference = EE54EA8A24584CAA02AEF5B6 /* Pods-ddSdkReactnativeExample.debug.xcconfig */; + baseConfigurationReference = 508824AAB7B5E7CA505CE25A /* Pods-ddSdkReactnativeExample.debug.xcconfig */; buildSettings = { ASSETCATALOG_COMPILER_APPICON_NAME = AppIcon; CLANG_ENABLE_MODULES = YES; @@ -308,7 +308,7 @@ }; 13B07F951A680F5B00A75B9A /* Release */ = { isa = XCBuildConfiguration; - baseConfigurationReference = A141D195C842A30B5E492167 /* Pods-ddSdkReactnativeExample.release.xcconfig */; + baseConfigurationReference = D0DD831AA1F9F22C6DC43876 /* Pods-ddSdkReactnativeExample.release.xcconfig */; buildSettings = { ASSETCATALOG_COMPILER_APPICON_NAME = AppIcon; CLANG_ENABLE_MODULES = YES; diff --git a/example/ios/Podfile.lock b/example/ios/Podfile.lock index f53a8c5c1..576089002 100644 --- a/example/ios/Podfile.lock +++ b/example/ios/Podfile.lock @@ -1,59 +1,97 @@ PODS: - boost (1.84.0) - - DatadogCore (2.25.0): - - DatadogInternal (= 2.25.0) - - DatadogCrashReporting (2.25.0): - - DatadogInternal (= 2.25.0) + - DatadogCore (2.27.0): + - DatadogInternal (= 2.27.0) + - DatadogCrashReporting (2.27.0): + - DatadogInternal (= 2.27.0) - PLCrashReporter (~> 1.12.0) - - DatadogInternal (2.25.0) - - DatadogLogs (2.25.0): - - DatadogInternal (= 2.25.0) - - DatadogRUM (2.25.0): - - DatadogInternal (= 2.25.0) + - DatadogInternal (2.27.0) + - DatadogLogs (2.27.0): + - DatadogInternal (= 2.27.0) + - DatadogRUM (2.27.0): + - DatadogInternal (= 2.27.0) - DatadogSDKReactNative (2.7.1): - - DatadogCore (~> 2.25.0) - - DatadogCrashReporting (~> 2.25.0) - - DatadogLogs (~> 2.25.0) - - DatadogRUM (~> 2.25.0) - - DatadogTrace (~> 2.25.0) - - DatadogWebViewTracking (~> 2.25.0) + - DatadogCore (~> 2.27.0) + - DatadogCrashReporting (~> 2.27.0) + - DatadogLogs (~> 2.27.0) + - DatadogRUM (~> 2.27.0) + - DatadogTrace (~> 2.27.0) + - DatadogWebViewTracking (~> 2.27.0) - React-Core - DatadogSDKReactNative/Tests (2.7.1): - - DatadogCore (~> 2.25.0) - - DatadogCrashReporting (~> 2.25.0) - - DatadogLogs (~> 2.25.0) - - DatadogRUM (~> 2.25.0) - - DatadogTrace (~> 2.25.0) - - DatadogWebViewTracking (~> 2.25.0) + - DatadogCore (~> 2.27.0) + - DatadogCrashReporting (~> 2.27.0) + - DatadogLogs (~> 2.27.0) + - DatadogRUM (~> 2.27.0) + - DatadogTrace (~> 2.27.0) + - DatadogWebViewTracking (~> 2.27.0) - React-Core - DatadogSDKReactNativeSessionReplay (2.7.1): - DatadogSDKReactNative - - DatadogSessionReplay (~> 2.25.0) + - DatadogSessionReplay (~> 2.27.0) + - DoubleConversion + - glog + - hermes-engine + - RCT-Folly (= 2024.01.01.00) + - RCTRequired + - RCTTypeSafety - React-Core + - React-debug + - React-Fabric + - React-featureflags + - React-graphics + - React-ImageManager + - React-NativeModulesApple + - React-RCTFabric + - React-rendererdebug + - React-utils + - ReactCodegen + - ReactCommon/turbomodule/bridging + - ReactCommon/turbomodule/core + - Yoga - DatadogSDKReactNativeSessionReplay/Tests (2.7.1): - DatadogSDKReactNative - - DatadogSessionReplay (~> 2.25.0) + - DatadogSessionReplay (~> 2.27.0) + - DoubleConversion + - glog + - hermes-engine + - RCT-Folly (= 2024.01.01.00) + - RCTRequired + - RCTTypeSafety - React-Core + - React-debug + - React-Fabric + - React-featureflags + - React-graphics + - React-ImageManager + - React-NativeModulesApple + - React-RCTFabric - React-RCTText + - React-rendererdebug + - React-utils + - ReactCodegen + - ReactCommon/turbomodule/bridging + - ReactCommon/turbomodule/core + - Yoga - DatadogSDKReactNativeWebView (2.7.1): - - DatadogInternal (~> 2.25.0) + - DatadogInternal (~> 2.27.0) - DatadogSDKReactNative - - DatadogWebViewTracking (~> 2.25.0) + - DatadogWebViewTracking (~> 2.27.0) - React-Core - DatadogSDKReactNativeWebView/Tests (2.7.1): - - DatadogInternal (~> 2.25.0) + - DatadogInternal (~> 2.27.0) - DatadogSDKReactNative - - DatadogWebViewTracking (~> 2.25.0) + - DatadogWebViewTracking (~> 2.27.0) - React-Core - react-native-webview - React-RCTText - - DatadogSessionReplay (2.25.0): - - DatadogInternal (= 2.25.0) - - DatadogTrace (2.25.0): - - DatadogInternal (= 2.25.0) + - DatadogSessionReplay (2.27.0): + - DatadogInternal (= 2.27.0) + - DatadogTrace (2.27.0): + - DatadogInternal (= 2.27.0) - OpenTelemetrySwiftApi (= 1.13.1) - - DatadogWebViewTracking (2.25.0): - - DatadogInternal (= 2.25.0) + - DatadogWebViewTracking (2.27.0): + - DatadogInternal (= 2.27.0) - DoubleConversion (1.1.6) - FBLazyVector (0.75.4) - fmt (9.1.0) @@ -1888,17 +1926,17 @@ EXTERNAL SOURCES: SPEC CHECKSUMS: boost: 4cb898d0bf20404aab1850c656dcea009429d6c1 - DatadogCore: a068d264191f687d00125aafa8042110cf886cd7 - DatadogCrashReporting: b19d80a98b1eb51bdb3ec5b1a7f339769fb70b95 - DatadogInternal: e9b6cef84448ee32f73bc9b37646708a65c1b8ae - DatadogLogs: 623d89158ef3a4a7545a8fbce9afa4cedc576324 - DatadogRUM: ff0661b42124d90c9ff2538c3cc1b806ddf7620c - DatadogSDKReactNative: 88fcae92f416fbe3c03fc72711e92102d4c14771 - DatadogSDKReactNativeSessionReplay: 2ac14aaa5268a7263f24c4d57d032aad842af9bf - DatadogSDKReactNativeWebView: 83f9aea11b6ba153d13df8affe0a75c49aeb281a - DatadogSessionReplay: 857b566583a7866869d944eb9929dd655fbd8b01 - DatadogTrace: 4e1aac322eafd8568fd4a966b02e58fbb5af0612 - DatadogWebViewTracking: 3b2465b5a5bf10f187807e490678a2e0a3c2daae + DatadogCore: 68aee4ffcc3ea17a3b0aa527907757883fc72c84 + DatadogCrashReporting: e6a83b143394e28c9c1cb48c5cfb18eff507b3be + DatadogInternal: 3c5cae6772295fd175a9de11e4747a9322aaa4e7 + DatadogLogs: 09d6358dc7682f9d3eaea85dd418f82d2db3560c + DatadogRUM: 0f267df8c9c8579a291870c2bce4549587391a07 + DatadogSDKReactNative: 03b9f82d030b526b4982af01648f26687035baaa + DatadogSDKReactNativeSessionReplay: b5308949cc117f78f060b038a80fb069cfb2fb12 + DatadogSDKReactNativeWebView: 9f635c9668a7760c5266472564393064514d9ebd + DatadogSessionReplay: c23310d576ccfaaca9ecac6afafb0f12e5c480d4 + DatadogTrace: f46c8220c73463d09741013f385a6e27cd39185b + DatadogWebViewTracking: dc8376420c8686efd09d00752bc1034b639d180b DoubleConversion: 76ab83afb40bddeeee456813d9c04f67f78771b5 FBLazyVector: 430e10366de01d1e3d57374500b1b150fe482e6d fmt: 4c2741a687cc09f0634a2e2c72a838b99f1ff120 @@ -1907,69 +1945,69 @@ SPEC CHECKSUMS: HMSegmentedControl: 34c1f54d822d8308e7b24f5d901ec674dfa31352 OpenTelemetrySwiftApi: aaee576ed961e0c348af78df58b61300e95bd104 PLCrashReporter: db59ef96fa3d25f3650040d02ec2798cffee75f2 - RCT-Folly: 34124ae2e667a0e5f0ea378db071d27548124321 + RCT-Folly: 4464f4d875961fce86008d45f4ecf6cef6de0740 RCTDeprecation: 726d24248aeab6d7180dac71a936bbca6a994ed1 RCTRequired: a94e7febda6db0345d207e854323c37e3a31d93b RCTTypeSafety: 28e24a6e44f5cbf912c66dde6ab7e07d1059a205 React: c2830fa483b0334bda284e46a8579ebbe0c5447e React-callinvoker: 4aecde929540c26b841a4493f70ebf6016691eb8 - React-Core: 32a581847d74ce9b5f51d9d11a4e4d132ad61553 - React-CoreModules: f53e0674e1747fa41c83bc970e82add97b14ad87 - React-cxxreact: 86f3b1692081fd954a0cb27cc90d14674645b64b + React-Core: 9c059899f00d46b5cec3ed79251f77d9c469553d + React-CoreModules: 9fac2d31803c0ed03e4ddaa17f1481714f8633a5 + React-cxxreact: a979810a3ca4045ceb09407a17563046a7f71494 React-debug: 3d21f69d8def0656f8b8ec25c0f05954f4d862c5 - React-defaultsnativemodule: 2ed121c5a1edeab09cff382b8d9b538260f07848 - React-domnativemodule: 4393dd5dd7e13dbe42e69ebc791064a616990f91 - React-Fabric: cbf38ceefb1ac6236897abdb538130228e126695 - React-FabricComponents: dd4b01c4a60920d8dc15f3b5594c6fe9e7648a38 - React-FabricImage: 8b13aedfbd20f349b9b3314baf993c71c02995d9 + React-defaultsnativemodule: 2fa2bdb7bd03ff9764facc04aa8520ebf14febae + React-domnativemodule: 986e6fe7569e1383dce452a7b013b6c843a752df + React-Fabric: 3bc7be9e3a6b7581fc828dc2aa041e107fc8ffb8 + React-FabricComponents: 668e0cb02344c2942e4c8921a643648faa6dc364 + React-FabricImage: 3f44dd25a2b020ed5215d4438a1bb1f3461cd4f1 React-featureflags: ee1abd6f71555604a36cda6476e3c502ca9a48e5 - React-featureflagsnativemodule: 87b58caf3cd8eca1e53179453789def019af2a65 - React-graphics: f5c4cf3abc5aa083e28fe7a866bd95fb3bbbc1e0 - React-hermes: cad69ee9a53870cc38e5386889aa7ea81c75b6a1 - React-idlecallbacksnativemodule: 445390be0f533797ace18c419eb57110dbfe90d6 - React-ImageManager: cb78d7a24f45f8f9a5a1640b52fce4c9f637f98d - React-jserrorhandler: dfe9b96e99a93d4f4858bad66d5bc4813a87a21a - React-jsi: bc1f6073e203fb540edd6d26f926ad041809b443 - React-jsiexecutor: 1e8fc70dd9614c3e9d5c3c876b2ea3cd1d931ee4 - React-jsinspector: 7544a20e9beac390f1b65d9f0040d97cd55dc198 - React-jsitracing: cac972ccc097db399df8044e49add8e5b25cb34a - React-logger: 80d87daf2f98bf95ab668b79062c1e0c3f0c2f8a - React-Mapbuffer: acffb35a53a5f474ede09f082ac609b41aafab2e - React-microtasksnativemodule: 71ca9282bce93b319218d75362c0d646b376eb43 - react-native-crash-tester: 48bde9d6f5256c61ef2e0c52dfc74256b26e55eb - react-native-safe-area-context: e134b241010ebe2aacdcea013565963d13826faa - react-native-webview: f38fd87322055d2ce09058cf19f50f708fb174da + React-featureflagsnativemodule: 7ccc0cd666c2a6257401dceb7920818ac2b42803 + React-graphics: d7dd9c8d75cad5af19e19911fa370f78f2febd96 + React-hermes: 2069b08e965e48b7f8aa2c0ca0a2f383349ed55d + React-idlecallbacksnativemodule: e211b2099b6dced97959cb58257bab2b2de4d7ef + React-ImageManager: ab7a7d17dd0ff1ef1d4e1e88197d1119da9957ce + React-jserrorhandler: d9e867bb83b868472f3f7601883f0403b3e3942d + React-jsi: d68f1d516e5120a510afe356647a6a1e1f98f2db + React-jsiexecutor: 6366a08a0fc01c9b65736f8deacd47c4a397912a + React-jsinspector: 0ac947411f0c73b34908800cc7a6a31d8f93e1a8 + React-jsitracing: 0e8c0aadb1fcec6b1e4f2a66ee3b0da80f0f8615 + React-logger: d79b704bf215af194f5213a6b7deec50ba8e6a9b + React-Mapbuffer: b982d5bba94a8bc073bda48f0d27c9b28417fae3 + React-microtasksnativemodule: 2b73e68f0462f3175f98782db08896f8501afd20 + react-native-crash-tester: 3ffaa64141427ca362079cb53559fe9a532487ae + react-native-safe-area-context: 04803a01f39f31cc6605a5531280b477b48f8a88 + react-native-webview: 4cec209f46fca53257d987ac16a6a63974417f8b React-nativeconfig: 8c83d992b9cc7d75b5abe262069eaeea4349f794 - React-NativeModulesApple: 97f606f09fd9840b3868333984d6a0e7bcc425b5 + React-NativeModulesApple: 9f7920224a3b0c7d04d77990067ded14cee3c614 React-perflogger: 59e1a3182dca2cee7b9f1f7aab204018d46d1914 - React-performancetimeline: 3e3f5c5576fe1cc2dd5fcfb1ae2046d5dceda3d7 + React-performancetimeline: a9d05533ff834c6aa1f532e05e571f3fd2e3c1ed React-RCTActionSheet: d80e68d3baa163e4012a47c1f42ddd8bcd9672cc - React-RCTAnimation: 051f0781709c5ed80ba8aa2b421dfb1d72a03162 - React-RCTAppDelegate: 106d225d076988b06aa4834e68d1ab754f40cacf - React-RCTBlob: 895eaf8bca2e76ee1c95b479235c6ccebe586fc6 - React-RCTFabric: 8d01df202ee9e933f9b5dd44b72ec89a7ac6ee01 - React-RCTImage: b73149c0cd54b641dba2d6250aaf168fee784d9f - React-RCTLinking: 23e519712285427e50372fbc6e0265d422abf462 - React-RCTNetwork: a5d06d122588031989115f293654b13353753630 - React-RCTSettings: 87d03b5d94e6eadd1e8c1d16a62f790751aafb55 - React-RCTText: 75e9dd39684f4bcd1836134ac2348efaca7437b3 - React-RCTVibration: 033c161fe875e6fa096d0d9733c2e2501682e3d4 + React-RCTAnimation: bde981f6bd7f8493696564da9b3bd05721d3b3cc + React-RCTAppDelegate: 0176615c51476c88212bf3edbafb840d39ea7631 + React-RCTBlob: 520a0382bf8e89b9153d60e3c6293e51615834e9 + React-RCTFabric: c9da097b19b30017a99498b8c66a69c72f3ce689 + React-RCTImage: 90448d2882464af6015ed57c98f463f8748be465 + React-RCTLinking: 1bd95d0a704c271d21d758e0f0388cced768d77d + React-RCTNetwork: 218af6e63eb9b47935cc5a775b7a1396cf10ff91 + React-RCTSettings: e10b8e42b0fce8a70fbf169de32a2ae03243ef6b + React-RCTText: e7bf9f4997a1a0b45c052d4ad9a0fe653061cf29 + React-RCTVibration: 5b70b7f11e48d1c57e0d4832c2097478adbabe93 React-rendererconsistency: f620c6e003e3c4593e6349d8242b8aeb3d4633f0 - React-rendererdebug: 5be7b834677b2a7a263f4d2545f0d4966cafad82 + React-rendererdebug: e697680f4dd117becc5daf9ea9800067abcee91c React-rncore: c22bd84cc2f38947f0414fab6646db22ff4f80cd - React-RuntimeApple: 71160e6c02efa07d198b84ef5c3a52a7d9d0399d - React-RuntimeCore: f88f79ec995c12af56a265d7505c7630733d9d82 + React-RuntimeApple: de0976836b90b484305638616898cbc665c67c13 + React-RuntimeCore: 3c4a5aa63d9e7a3c17b7fb23f32a72a8bcfccf57 React-runtimeexecutor: ea90d8e3a9e0f4326939858dafc6ab17c031a5d3 - React-RuntimeHermes: 49f86328914021f50fd5a5b9756685f5f6d8b4da - React-runtimescheduler: fed70991b942c6df752a59a22081e45fc811b11c - React-utils: 02526ea15628a768b8db9517b6017a1785c734d2 - ReactCodegen: 8b5341ecb61898b8bd40a73ebc443c6bf2d14423 - ReactCommon: 36d48f542b4010786d6b2bcee615fe5f906b7105 - ReactNativeNavigation: 81b3f87d96a0b963f8bdf1f6fb6ac2abe9f653d1 - RNCAsyncStorage: b9f5f78da5d16a853fe3dc22e8268d932fc45a83 - RNCMaskedView: 4c5ee1c8667d56077246cc6d1977f77393923560 - RNGestureHandler: fc491c834d09b0538618a3f328ab75fe8f90f5b4 - RNScreens: df5b744737987bdfe5f04e05579b53ce1bcdbfa9 + React-RuntimeHermes: c6b0afdf1f493621214eeb6517fb859ce7b21b81 + React-runtimescheduler: 84f0d876d254bce6917a277b3930eb9bc29df6c7 + React-utils: cbe8b8b3d7b2ac282e018e46f0e7b25cdc87c5a0 + ReactCodegen: 4bcb34e6b5ebf6eef5cee34f55aa39991ea1c1f1 + ReactCommon: 6a952e50c2a4b694731d7682aaa6c79bc156e4ad + ReactNativeNavigation: 84cfcceb62947491beda20b96c5999c15ff5b959 + RNCAsyncStorage: addfc2cb6511dbe199c56c6b26ede383b6c38919 + RNCMaskedView: 0e1bc4bfa8365eba5fbbb71e07fbdc0555249489 + RNGestureHandler: 2e4971181218718ab9c5871ea5ef855ec5c389fe + RNScreens: b51f1a8be0dd7bb470b757f6cca8ba878acb2000 SocketRocket: abac6f5de4d4d62d24e11868d7a2f427e0ef940d Yoga: 055f92ad73f8c8600a93f0e25ac0b2344c3b07e6 diff --git a/package.json b/package.json index 9b63cc10a..23332d932 100644 --- a/package.json +++ b/package.json @@ -31,6 +31,7 @@ }, "devDependencies": { "@babel/plugin-transform-runtime": "7.12.15", + "@react-native-community/cli": "15.0.1", "@react-native/babel-preset": "0.73.21", "@react-native/eslint-config": "0.73.2", "@react-native/metro-config": "0.73.5", @@ -64,6 +65,10 @@ "react-test-renderer": "18.1.0", "typescript": "5.0.4" }, + "peerDependencies": { + "react": "*", + "react-native": "*" + }, "engines": { "node": ">=18" }, diff --git a/packages/core/DatadogSDKReactNative.podspec b/packages/core/DatadogSDKReactNative.podspec index 8f28c3fc3..54b39dfa1 100644 --- a/packages/core/DatadogSDKReactNative.podspec +++ b/packages/core/DatadogSDKReactNative.podspec @@ -19,14 +19,14 @@ Pod::Spec.new do |s| s.dependency "React-Core" # /!\ Remember to keep the versions in sync with DatadogSDKReactNativeSessionReplay.podspec - s.dependency 'DatadogCore', '~> 2.25.0' - s.dependency 'DatadogLogs', '~> 2.25.0' - s.dependency 'DatadogTrace', '~> 2.25.0' - s.dependency 'DatadogRUM', '~> 2.25.0' - s.dependency 'DatadogCrashReporting', '~> 2.25.0' + s.dependency 'DatadogCore', '~> 2.27.0' + s.dependency 'DatadogLogs', '~> 2.27.0' + s.dependency 'DatadogTrace', '~> 2.27.0' + s.dependency 'DatadogRUM', '~> 2.27.0' + s.dependency 'DatadogCrashReporting', '~> 2.27.0' # DatadogWebViewTracking is not available for tvOS - s.ios.dependency 'DatadogWebViewTracking', '~> 2.25.0' + s.ios.dependency 'DatadogWebViewTracking', '~> 2.27.0' s.test_spec 'Tests' do |test_spec| test_spec.source_files = 'ios/Tests/**/*.{swift,json}' diff --git a/packages/core/ios/Tests/RUMMocks.swift b/packages/core/ios/Tests/RUMMocks.swift index 5a70bf6f5..6a6fd94e7 100644 --- a/packages/core/ios/Tests/RUMMocks.swift +++ b/packages/core/ios/Tests/RUMMocks.swift @@ -5,6 +5,8 @@ */ @testable import DatadogRUM +@testable import DatadogCore +@testable import DatadogInternal // MARK: - Foundation Mocks protocol RandomMockable { diff --git a/packages/react-native-session-replay/DatadogSDKReactNativeSessionReplay.podspec b/packages/react-native-session-replay/DatadogSDKReactNativeSessionReplay.podspec index ac47a17a0..46943df7d 100644 --- a/packages/react-native-session-replay/DatadogSDKReactNativeSessionReplay.podspec +++ b/packages/react-native-session-replay/DatadogSDKReactNativeSessionReplay.podspec @@ -1,6 +1,7 @@ require "json" package = JSON.parse(File.read(File.join(__dir__, "package.json"))) +folly_compiler_flags = '-DFOLLY_NO_CONFIG -DFOLLY_MOBILE=1 -DFOLLY_USE_LIBCPP=1 -Wno-comma -Wno-shorten-64-to-32' Pod::Spec.new do |s| s.name = "DatadogSDKReactNativeSessionReplay" @@ -13,13 +14,12 @@ Pod::Spec.new do |s| s.platforms = { :ios => "12.0", :tvos => "12.0" } s.source = { :git => "https://github.com/DataDog/dd-sdk-reactnative.git", :tag => "#{s.version}" } - s.source_files = "ios/Sources/*.{h,m,mm,swift}" - + s.dependency "React-Core" # /!\ Remember to keep the version in sync with DatadogSDKReactNative.podspec - s.dependency 'DatadogSessionReplay', '~> 2.25.0' + s.dependency 'DatadogSessionReplay', '~> 2.27.0' s.dependency 'DatadogSDKReactNative' s.test_spec 'Tests' do |test_spec| @@ -28,16 +28,19 @@ Pod::Spec.new do |s| test_spec.platforms = { :ios => "13.4", :tvos => "13.4" } end - - # This guard prevents installing the dependencies when we run `pod install` in the old architecture. - # The `install_modules_dependencies` function is only available from RN 0.71, the new architecture is not - # supported on earlier RN versions. if ENV['RCT_NEW_ARCH_ENABLED'] == '1' then + s.compiler_flags = folly_compiler_flags + " -DRCT_NEW_ARCH_ENABLED=1" + s.pod_target_xcconfig = { "DEFINES_MODULE" => "YES", - "OTHER_CPLUSPLUSFLAGS" => "-DRCT_NEW_ARCH_ENABLED=1" + "CLANG_CXX_LANGUAGE_STANDARD" => "c++17" } + end + if respond_to?(:install_modules_dependencies, true) install_modules_dependencies(s) + # else + # s.dependency "React-Core" end + end diff --git a/packages/react-native-session-replay/android/build.gradle b/packages/react-native-session-replay/android/build.gradle index b6c29ed90..a7e019b1e 100644 --- a/packages/react-native-session-replay/android/build.gradle +++ b/packages/react-native-session-replay/android/build.gradle @@ -146,6 +146,14 @@ android { } else { java.srcDirs += ['src/rnlegacy/kotlin'] } + + + if (reactNativeMinorVersion >= 74) { + java.srcDirs += ['src/rnpost74/kotlin'] + } else { + java.srcDirs += ['src/rnpre74/kotlin'] + } + } test { java.srcDir("src/test/kotlin") diff --git a/packages/react-native-session-replay/android/src/main/kotlin/com/datadog/reactnative/sessionreplay/views/DdPrivacyView.kt b/packages/react-native-session-replay/android/src/main/kotlin/com/datadog/reactnative/sessionreplay/views/DdPrivacyView.kt new file mode 100644 index 000000000..2a98ed9ef --- /dev/null +++ b/packages/react-native-session-replay/android/src/main/kotlin/com/datadog/reactnative/sessionreplay/views/DdPrivacyView.kt @@ -0,0 +1,59 @@ +/* + * Unless explicitly stated otherwise all files in this repository are licensed under the Apache License Version 2.0. + * This product includes software developed at Datadog (https://www.datadoghq.com/). + * Copyright 2016-Present Datadog, Inc. + */ + +package com.datadog.reactnative.sessionreplay.views + +import android.content.Context +import com.datadog.reactnative.sessionreplay.R +import com.facebook.react.views.view.ReactViewGroup + +/** + * Native React Native UI element that inherits from ReactViewGroup and exposes extra properties. + */ +class DdPrivacyView(context: Context) : ReactViewGroup(context) { + /** + * Defines the way text and input should be masked. + */ + var textAndInputPrivacy: String? = null + set(value) { + field = value + this.setTag(R.id.datadog_text_and_input_privacy, value) + } + + /** + * Defines the way images should be masked. + */ + var imagePrivacy: String? = null + set(value) { + field = value + this.setTag(R.id.datadog_image_privacy, value) + } + + /** + * Defines the way user touches should be masked. + */ + var touchPrivacy: String? = null + set(value) { + field = value + this.setTag(R.id.datadog_touch_privacy, value) + } + + /** + * Defines the way certain parts of the UI can be set to hidden. + */ + var hide: Boolean = false + set(value) { + field = value + this.setTag(R.id.datadog_hidden, value) + } + + init { + this.setTag(R.id.datadog_hidden, this.hide) + this.setTag(R.id.datadog_image_privacy, this.imagePrivacy) + this.setTag(R.id.datadog_text_and_input_privacy, this.textAndInputPrivacy) + this.setTag(R.id.datadog_touch_privacy, this.touchPrivacy) + } +} \ No newline at end of file diff --git a/packages/react-native-session-replay/android/src/main/res/values/ids.xml b/packages/react-native-session-replay/android/src/main/res/values/ids.xml new file mode 100644 index 000000000..9aa089d8f --- /dev/null +++ b/packages/react-native-session-replay/android/src/main/res/values/ids.xml @@ -0,0 +1,12 @@ + + + + + + + + diff --git a/packages/react-native-session-replay/android/src/newarch/kotlin/com/datadog/reactnative/sessionreplay/views/DdPrivacyViewManager.kt b/packages/react-native-session-replay/android/src/newarch/kotlin/com/datadog/reactnative/sessionreplay/views/DdPrivacyViewManager.kt new file mode 100644 index 000000000..7e87dce2b --- /dev/null +++ b/packages/react-native-session-replay/android/src/newarch/kotlin/com/datadog/reactnative/sessionreplay/views/DdPrivacyViewManager.kt @@ -0,0 +1,50 @@ +/* + * Unless explicitly stated otherwise all files in this repository are licensed under the Apache License Version 2.0. + * This product includes software developed at Datadog (https://www.datadoghq.com/). + * Copyright 2016-Present Datadog, Inc. + */ + +package com.datadog.reactnative.sessionreplay.views + +import com.facebook.react.bridge.ReactApplicationContext +import com.facebook.react.uimanager.ThemedReactContext +import com.facebook.react.uimanager.ViewGroupManager +import com.facebook.react.uimanager.ViewManagerDelegate +import com.facebook.react.uimanager.annotations.ReactProp +import com.facebook.react.viewmanagers.DdPrivacyViewManagerDelegate +import com.facebook.react.viewmanagers.DdPrivacyViewManagerInterface + +class DdPrivacyViewManager(context: ReactApplicationContext) : ViewGroupManager(), + DdPrivacyViewManagerInterface { + companion object { + const val REACT_CLASS = "DdPrivacyView" + } + + private val delegate: DdPrivacyViewManagerDelegate = DdPrivacyViewManagerDelegate(this) + + override fun getDelegate(): ViewManagerDelegate = delegate + + override fun getName(): String = REACT_CLASS + + override fun createViewInstance(context: ThemedReactContext): DdPrivacyView = DdPrivacyView(context) + + @ReactProp(name = "hide") + override fun setHide(view: DdPrivacyView?, value: Boolean) { + view?.let { view.hide = value } + } + + @ReactProp(name = "textAndInputPrivacy") + override fun setTextAndInputPrivacy(view: DdPrivacyView?, value: String?) { + view?.let { view.textAndInputPrivacy = value } + } + + @ReactProp(name = "imagePrivacy") + override fun setImagePrivacy(view: DdPrivacyView?, value: String?) { + view?.let { view.imagePrivacy = value } + } + + @ReactProp(name = "touchPrivacy") + override fun setTouchPrivacy(view: DdPrivacyView?, value: String?) { + view?.let { view.touchPrivacy = value } + } +} diff --git a/packages/react-native-session-replay/android/src/oldarch/kotlin/com/datadog/reactnative/sessionreplay/views/DdPrivacyViewManager.kt b/packages/react-native-session-replay/android/src/oldarch/kotlin/com/datadog/reactnative/sessionreplay/views/DdPrivacyViewManager.kt new file mode 100644 index 000000000..8d682fba0 --- /dev/null +++ b/packages/react-native-session-replay/android/src/oldarch/kotlin/com/datadog/reactnative/sessionreplay/views/DdPrivacyViewManager.kt @@ -0,0 +1,43 @@ +/* + * Unless explicitly stated otherwise all files in this repository are licensed under the Apache License Version 2.0. + * This product includes software developed at Datadog (https://www.datadoghq.com/). + * Copyright 2016-Present Datadog, Inc. + */ +package com.datadog.reactnative.sessionreplay.views + +import com.facebook.react.bridge.ReactApplicationContext +import com.facebook.react.uimanager.ThemedReactContext +import com.facebook.react.uimanager.ViewGroupManager +import com.facebook.react.uimanager.annotations.ReactProp + +class DdPrivacyViewManager(context: ReactApplicationContext) : ViewGroupManager() { + companion object { + const val REACT_CLASS = "DdPrivacyView" + } + + override fun getName(): String = REACT_CLASS + + override fun createViewInstance(context: ThemedReactContext): DdPrivacyView { + return DdPrivacyView(context) + } + + @ReactProp(name = "hide") + fun setHide(view: DdPrivacyView?, value: Boolean) { + view?.let { view.hide = value } + } + + @ReactProp(name = "textAndInputPrivacy") + fun setTextAndInputPrivacy(view: DdPrivacyView?, value: String?) { + view?.let { view.textAndInputPrivacy = value } + } + + @ReactProp(name = "imagePrivacy") + fun setImagePrivacy(view: DdPrivacyView?, value: String?) { + view?.let { view.imagePrivacy = value } + } + + @ReactProp(name = "touchPrivacy") + fun setTouchPrivacy(view: DdPrivacyView?, value: String?) { + view?.let { view.touchPrivacy = value } + } +} diff --git a/packages/react-native-session-replay/android/src/rn76/kotlin/com/datadog/reactnative/sessionreplay/utils/ReactViewBackgroundDrawableUtils.kt b/packages/react-native-session-replay/android/src/rn76/kotlin/com/datadog/reactnative/sessionreplay/utils/ReactViewBackgroundDrawableUtils.kt index b7a328504..837e5213a 100644 --- a/packages/react-native-session-replay/android/src/rn76/kotlin/com/datadog/reactnative/sessionreplay/utils/ReactViewBackgroundDrawableUtils.kt +++ b/packages/react-native-session-replay/android/src/rn76/kotlin/com/datadog/reactnative/sessionreplay/utils/ReactViewBackgroundDrawableUtils.kt @@ -42,7 +42,7 @@ internal class ReactViewBackgroundDrawableUtils : DrawableUtils() { @OptIn(UnstableReactNativeAPI::class) override fun getReactBackgroundFromDrawable(drawable: Drawable?): Drawable? { - return when(drawable) { + return when (drawable) { is CSSBackgroundDrawable -> drawable is InsetDrawable -> getReactBackgroundFromDrawable(drawable.drawable) is LayerDrawable -> getDrawableFromLayerDrawable(drawable) diff --git a/packages/react-native-session-replay/android/src/main/kotlin/com/datadog/reactnative/sessionreplay/DdSDKReactNativeSessionReplayPackage.kt b/packages/react-native-session-replay/android/src/rnpost74/kotlin/com/datadog/reactnative/sessionreplay/DdSDKReactNativeSessionReplayPackage.kt similarity index 79% rename from packages/react-native-session-replay/android/src/main/kotlin/com/datadog/reactnative/sessionreplay/DdSDKReactNativeSessionReplayPackage.kt rename to packages/react-native-session-replay/android/src/rnpost74/kotlin/com/datadog/reactnative/sessionreplay/DdSDKReactNativeSessionReplayPackage.kt index c1694e61f..b975f5fb9 100644 --- a/packages/react-native-session-replay/android/src/main/kotlin/com/datadog/reactnative/sessionreplay/DdSDKReactNativeSessionReplayPackage.kt +++ b/packages/react-native-session-replay/android/src/rnpost74/kotlin/com/datadog/reactnative/sessionreplay/DdSDKReactNativeSessionReplayPackage.kt @@ -6,16 +6,22 @@ package com.datadog.reactnative.sessionreplay -import com.facebook.react.TurboReactPackage +import com.datadog.reactnative.sessionreplay.views.DdPrivacyViewManager +import com.facebook.react.BaseReactPackage import com.facebook.react.bridge.NativeModule import com.facebook.react.bridge.ReactApplicationContext import com.facebook.react.module.model.ReactModuleInfo import com.facebook.react.module.model.ReactModuleInfoProvider +import com.facebook.react.uimanager.ViewManager /** * Package of native dd-sdk-reactnative native modules. */ -class DdSDKReactNativeSessionReplayPackage : TurboReactPackage() { +class DdSDKReactNativeSessionReplayPackage : BaseReactPackage() { + override fun createViewManagers(reactContext: ReactApplicationContext): List> { + return listOf(DdPrivacyViewManager(reactContext)) + } + override fun getModule(name: String, reactContext: ReactApplicationContext): NativeModule? { return when (name) { DdSessionReplayImplementation.NAME -> DdSessionReplay(reactContext) @@ -43,4 +49,5 @@ class DdSDKReactNativeSessionReplayPackage : TurboReactPackage() { moduleInfos } } + } diff --git a/packages/react-native-session-replay/android/src/rnpre74/kotlin/com/datadog/reactnative/sessionreplay/DdSDKReactNativeSessionReplayPackage.kt b/packages/react-native-session-replay/android/src/rnpre74/kotlin/com/datadog/reactnative/sessionreplay/DdSDKReactNativeSessionReplayPackage.kt new file mode 100644 index 000000000..9e798daba --- /dev/null +++ b/packages/react-native-session-replay/android/src/rnpre74/kotlin/com/datadog/reactnative/sessionreplay/DdSDKReactNativeSessionReplayPackage.kt @@ -0,0 +1,31 @@ +/* + * Unless explicitly stated otherwise all files in this repository are licensed under the Apache License Version 2.0. + * This product includes software developed at Datadog (https://www.datadoghq.com/). + * Copyright 2016-Present Datadog, Inc. + */ + +package com.datadog.reactnative.sessionreplay + +import com.datadog.reactnative.sessionreplay.views.DdPrivacyViewManager +import com.facebook.react.ReactPackage +import com.facebook.react.bridge.NativeModule +import com.facebook.react.bridge.ReactApplicationContext +import com.facebook.react.uimanager.ViewManager + +/** + * Package of native dd-sdk-reactnative native modules. + */ +class DdSDKReactNativeSessionReplayPackage : ReactPackage { + + override fun createViewManagers( + reactContext: ReactApplicationContext + ): List> { + return listOf(DdPrivacyViewManager(reactContext)) + } + + override fun createNativeModules( + reactContext: ReactApplicationContext + ): List { + return listOf(DdSessionReplay(reactContext)) + } +} diff --git a/packages/react-native-session-replay/ios/Sources/DdPrivacyOverrider.swift b/packages/react-native-session-replay/ios/Sources/DdPrivacyOverrider.swift new file mode 100644 index 000000000..8391d919b --- /dev/null +++ b/packages/react-native-session-replay/ios/Sources/DdPrivacyOverrider.swift @@ -0,0 +1,71 @@ +import ObjectiveC +import UIKit +@_spi(objc) import DatadogSessionReplay + +@objc public class DdPrivacyOverrider: NSObject { + @objc public static func setOverrides( + for view: UIView, + textPrivacy: NSString?, + imagePrivacy: NSString?, + touchPrivacy: NSString?, + hide: Bool + ) { + let wrapper = objc_SessionReplayPrivacyOverrides(view: view) + + if let raw = textPrivacy as String?, + let val = mapTextPrivacy(raw) + { + wrapper.textAndInputPrivacy = val + } + + if let raw = imagePrivacy as String?, + let val = mapImagePrivacy(raw) + { + wrapper.imagePrivacy = val + } + + if let raw = touchPrivacy as String?, + let val = mapTouchPrivacy(raw) + { + wrapper.touchPrivacy = val + } + + wrapper.hide = NSNumber(value: hide) + } + + private static func mapTextPrivacy(_ string: String) -> objc_TextAndInputPrivacyLevelOverride? { + switch string.uppercased() { + case "MASK_SENSITIVE_INPUTS": return .maskSensitiveInputs + case "MASK_ALL_INPUTS": return .maskAllInputs + case "MASK_ALL": return .maskAll + default: return objc_TextAndInputPrivacyLevelOverride.none + } + } + + private static func mapImagePrivacy(_ string: String) -> objc_ImagePrivacyLevelOverride? { + switch string.uppercased() { + case "MASK_NONE": return .maskNone + case "MASK_NON_BUNDLED_ONLY": return .maskNonBundledOnly + case "MASK_ALL": return .maskAll + default: return objc_ImagePrivacyLevelOverride.none + } + } + + private static func mapTouchPrivacy(_ string: String) -> objc_TouchPrivacyLevelOverride? { + switch string.uppercased() { + case "SHOW": return .show + case "HIDE": return .hide + default: return objc_TouchPrivacyLevelOverride.none + } + } + + @objc public static func debugPrint(for view: UIView) { + let wrapper = objc_SessionReplayPrivacyOverrides(view: view) + print(""" + - text: \(wrapper.textAndInputPrivacy) + - image: \(wrapper.imagePrivacy) + - touch: \(wrapper.touchPrivacy) + - hide: \(String(describing: wrapper.hide)) + """) + } +} diff --git a/packages/react-native-session-replay/ios/Sources/DdPrivacyViewFabric.mm b/packages/react-native-session-replay/ios/Sources/DdPrivacyViewFabric.mm new file mode 100644 index 000000000..03835b71c --- /dev/null +++ b/packages/react-native-session-replay/ios/Sources/DdPrivacyViewFabric.mm @@ -0,0 +1,54 @@ +/* + * Unless explicitly stated otherwise all files in this repository are licensed under the Apache License Version 2.0. + * This product includes software developed at Datadog (https://www.datadoghq.com/). + * Copyright 2016-Present Datadog, Inc. + */ + +#if RCT_NEW_ARCH_ENABLED +#import +#import +#import +#import +#import +#import +#import "DatadogSDKReactNativeSessionReplay-Swift.h" + +using namespace facebook::react; + +@interface DdPrivacyViewFabric : RCTViewComponentView +@end + +@implementation DdPrivacyViewFabric { + UIView * _view; +} + ++ (ComponentDescriptorProvider)componentDescriptorProvider { + return concreteComponentDescriptorProvider(); +} + +- (instancetype)initWithFrame:(CGRect)frame { + if (self = [super initWithFrame:frame]) { + static const auto defaultProps = std::make_shared(); + _props = defaultProps; + } + return self; +} + +- (void)updateProps:(Props::Shared const &)props oldProps:(Props::Shared const &)oldProps { + const auto &newProps = *std::static_pointer_cast(props); + + NSString *text = [NSString stringWithUTF8String:newProps.textAndInputPrivacy.c_str()]; + NSString *image = [NSString stringWithUTF8String:newProps.imagePrivacy.c_str()]; + NSString *touch = [NSString stringWithUTF8String:newProps.touchPrivacy.c_str()]; + + [DdPrivacyOverrider setOverridesFor:self textPrivacy:text imagePrivacy:image touchPrivacy:touch hide:newProps.hide]; + + [super updateProps:props oldProps:oldProps]; +} + +@end + +Class DdPrivacyViewCls(void) { + return DdPrivacyViewFabric.class; +} +#endif diff --git a/packages/react-native-session-replay/ios/Sources/DdPrivacyViewPaper.m b/packages/react-native-session-replay/ios/Sources/DdPrivacyViewPaper.m new file mode 100644 index 000000000..aba862d39 --- /dev/null +++ b/packages/react-native-session-replay/ios/Sources/DdPrivacyViewPaper.m @@ -0,0 +1,58 @@ +/* + * Unless explicitly stated otherwise all files in this repository are licensed under the Apache License Version 2.0. + * This product includes software developed at Datadog (https://www.datadoghq.com/). + * Copyright 2016-Present Datadog, Inc. + */ + +#import +#import "DatadogSDKReactNativeSessionReplay-Swift.h" + +@interface DdPrivacyView : UIView + +@property (nonatomic, strong) NSString *textPrivacy; +@property (nonatomic, strong) NSString *imagePrivacy; +@property (nonatomic, strong) NSString *touchPrivacy; +@property (nonatomic, assign) BOOL hide; + +@end + +@implementation DdPrivacyView +@end + + +@interface DdPrivacyViewPaper : RCTViewManager +@end + +@implementation DdPrivacyViewPaper + +RCT_EXPORT_MODULE(DdPrivacyView) + +- (UIView *) view { + return [[DdPrivacyView alloc] init]; +} + +RCT_CUSTOM_VIEW_PROPERTY(textAndInputPrivacy, NSString, DdPrivacyView) { + view.textPrivacy = [RCTConvert NSString:json]; + [self setPrivacyOverridesFor:view]; +} + +RCT_CUSTOM_VIEW_PROPERTY(imagePrivacy, NSString, DdPrivacyView) { + view.imagePrivacy = [RCTConvert NSString:json]; + [self setPrivacyOverridesFor:view]; +} + +RCT_CUSTOM_VIEW_PROPERTY(touchPrivacy, NSString, DdPrivacyView) { + view.touchPrivacy = [RCTConvert NSString:json]; + [self setPrivacyOverridesFor:view]; +} + +RCT_CUSTOM_VIEW_PROPERTY(hide, BOOL, DdPrivacyView) { + view.hide = json ? [json boolValue] : NO; + [self setPrivacyOverridesFor:view]; +} + +- (void) setPrivacyOverridesFor:(DdPrivacyView *) view { + [DdPrivacyOverrider setOverridesFor:view textPrivacy:view.textPrivacy imagePrivacy:view.imagePrivacy touchPrivacy:view.touchPrivacy hide:view.hide]; +} + +@end diff --git a/packages/react-native-session-replay/ios/Sources/RCTFabricWrapper.mm b/packages/react-native-session-replay/ios/Sources/RCTFabricWrapper.mm index 8287c83df..eee4308a6 100644 --- a/packages/react-native-session-replay/ios/Sources/RCTFabricWrapper.mm +++ b/packages/react-native-session-replay/ios/Sources/RCTFabricWrapper.mm @@ -12,13 +12,12 @@ #import #import -#if RCT_VERSION_MINOR > 74 +#if __has_include() #import #else #import #endif - namespace rct = facebook::react; #endif diff --git a/packages/react-native-session-replay/ios/Sources/RCTTextViewRecorder.swift b/packages/react-native-session-replay/ios/Sources/RCTTextViewRecorder.swift index c2d354592..ef626f121 100644 --- a/packages/react-native-session-replay/ios/Sources/RCTTextViewRecorder.swift +++ b/packages/react-native-session-replay/ios/Sources/RCTTextViewRecorder.swift @@ -10,8 +10,8 @@ import DatadogSessionReplay import React internal class RCTTextViewRecorder: SessionReplayNodeRecorder { - internal var textObfuscator: (SessionReplayViewTreeRecordingContext) -> SessionReplayTextObfuscating = { context in - return context.recorder.textAndInputPrivacy.staticTextObfuscator + internal var textObfuscator: (SessionReplayViewTreeRecordingContext, SessionReplayViewAttributes) -> SessionReplayTextObfuscating = { context, viewAttributes in + return viewAttributes.resolveTextAndInputPrivacyLevel(in: context).staticTextObfuscator } internal var identifier = UUID() @@ -41,7 +41,7 @@ internal class RCTTextViewRecorder: SessionReplayNodeRecorder { text: textProperties.text, textAlignment: textProperties.alignment, textColor: textProperties.foregroundColor, - textObfuscator: textObfuscator(context), + textObfuscator: textObfuscator(context, attributes), fontSize: textProperties.fontSize, contentRect: textProperties.contentRect ) diff --git a/packages/react-native-session-replay/package.json b/packages/react-native-session-replay/package.json index bfaea009d..939609b17 100644 --- a/packages/react-native-session-replay/package.json +++ b/packages/react-native-session-replay/package.json @@ -84,7 +84,7 @@ }, "codegenConfig": { "name": "DdSDKReactNativeSessionReplay", - "type": "modules", + "type": "all", "jsSrcsDir": "./src/specs", "android": { "javaPackageName": "com.datadog.reactnative.sessionreplay" diff --git a/packages/react-native-session-replay/src/components/SessionReplayView/HideView.tsx b/packages/react-native-session-replay/src/components/SessionReplayView/HideView.tsx new file mode 100644 index 000000000..fc7a5cb88 --- /dev/null +++ b/packages/react-native-session-replay/src/components/SessionReplayView/HideView.tsx @@ -0,0 +1,25 @@ +/* + * Unless explicitly stated otherwise all files in this repository are licensed under the Apache License Version 2.0. + * This product includes software developed at Datadog (https://www.datadoghq.com/). + * Copyright 2016-Present Datadog, Inc. + */ + +import type { ViewProps } from 'react-native'; +import React from 'react'; + +import { PrivacyView } from './PrivacyView'; + +/** + * A wrapper component that hides all of its content from session replays. + * + * When used, none of the children within this view will appear in the replay recording. + * This is useful for UI areas that contain sensitive or confidential information that should + * be completely excluded from visibility, not just masked. + */ +export function HideView({ children, ...props }: ViewProps) { + return ( + + {children} + + ); +} diff --git a/packages/react-native-session-replay/src/components/SessionReplayView/MaskAllView.tsx b/packages/react-native-session-replay/src/components/SessionReplayView/MaskAllView.tsx new file mode 100644 index 000000000..df43c07f3 --- /dev/null +++ b/packages/react-native-session-replay/src/components/SessionReplayView/MaskAllView.tsx @@ -0,0 +1,53 @@ +/* + * Unless explicitly stated otherwise all files in this repository are licensed under the Apache License Version 2.0. + * This product includes software developed at Datadog (https://www.datadoghq.com/). + * Copyright 2016-Present Datadog, Inc. + */ + +import type { ViewProps } from 'react-native'; +import React from 'react'; + +import { + ImagePrivacyLevel, + TextAndInputPrivacyLevel, + TouchPrivacyLevel +} from '../../SessionReplay'; + +import { PrivacyView } from './PrivacyView'; + +type Props = ViewProps & { + /** + * When true, allows touch interactions to be recorded. + * When false (default), touch interactions are hidden. + */ + showTouch?: boolean; +}; + +/** + * A wrapper component that enforces full masking on all content within it. + * + * This includes: + * - Masking all text and input values (e.g., replacing them with asterisks) + * - Masking all images + * - Hiding or optionally showing touch interactions, depending on `showTouch` + * + * This component is useful for marking sensitive UI sections that should not be visible + * in session replays. + */ +export function MaskAllView({ children, showTouch, ...props }: Props) { + const touchPrivacy = showTouch + ? TouchPrivacyLevel.SHOW + : TouchPrivacyLevel.HIDE; + + return ( + + {children} + + ); +} diff --git a/packages/react-native-session-replay/src/components/SessionReplayView/MaskNoneView.tsx b/packages/react-native-session-replay/src/components/SessionReplayView/MaskNoneView.tsx new file mode 100644 index 000000000..1f17961e8 --- /dev/null +++ b/packages/react-native-session-replay/src/components/SessionReplayView/MaskNoneView.tsx @@ -0,0 +1,40 @@ +/* + * Unless explicitly stated otherwise all files in this repository are licensed under the Apache License Version 2.0. + * This product includes software developed at Datadog (https://www.datadoghq.com/). + * Copyright 2016-Present Datadog, Inc. + */ + +import type { ViewProps } from 'react-native'; +import React from 'react'; + +import { + ImagePrivacyLevel, + TextAndInputPrivacyLevel, + TouchPrivacyLevel +} from '../../SessionReplay'; + +import { PrivacyView } from './PrivacyView'; + +/** + * A wrapper component that applies minimal masking, allowing most content to appear as-is in session replays. + * + * Specifically: + * - Text and inputs are shown, except for sensitive fields (e.g., password fields), which are still masked. + * - Images are fully visible. + * - Touch interactions are recorded and visible. + * + * Use this component for UI areas where full visibility is acceptable and privacy concerns are minimal. + */ +export function MaskNoneView({ children, ...props }: ViewProps) { + return ( + + {children} + + ); +} diff --git a/packages/react-native-session-replay/src/components/SessionReplayView/PrivacyView.tsx b/packages/react-native-session-replay/src/components/SessionReplayView/PrivacyView.tsx new file mode 100644 index 000000000..eeccb5df9 --- /dev/null +++ b/packages/react-native-session-replay/src/components/SessionReplayView/PrivacyView.tsx @@ -0,0 +1,67 @@ +/* + * Unless explicitly stated otherwise all files in this repository are licensed under the Apache License Version 2.0. + * This product includes software developed at Datadog (https://www.datadoghq.com/). + * Copyright 2016-Present Datadog, Inc. + */ + +import type { ViewProps } from 'react-native'; +import React from 'react'; + +import type { + ImagePrivacyLevel, + TextAndInputPrivacyLevel, + TouchPrivacyLevel +} from '../../SessionReplay'; +import View from '../../specs/DdPrivacyView'; + +type Props = ViewProps & { + /** + * Controls how text and input fields are masked in session replays. + */ + textAndInputPrivacy?: TextAndInputPrivacyLevel; + /** + * Controls how images are masked in session replays. + */ + imagePrivacy?: ImagePrivacyLevel; + /** + * Controls whether touch interactions are shown or hidden in session replays. + */ + touchPrivacy?: TouchPrivacyLevel; + /** + * When true, completely hides this view and its children from session replays. + */ + hide?: boolean; +}; + +/** + * A low-level component for configuring session replay privacy behavior with more granular control over the properties. + * + * Use this when none of the high-level components (`MaskAllView`, `MaskNoneView`, `HideView`) + * provide the level of customization you need. + * + * You can individually configure: + * - How text and inputs are masked + * - Whether images are shown or masked + * - Whether touch interactions are visible + * - Whether the entire view should be hidden from replays + */ +export function PrivacyView({ + children, + textAndInputPrivacy, + imagePrivacy, + touchPrivacy, + hide = false, + ...props +}: Props) { + return ( + + {children} + + ); +} diff --git a/packages/react-native-session-replay/src/components/SessionReplayView/index.ts b/packages/react-native-session-replay/src/components/SessionReplayView/index.ts new file mode 100644 index 000000000..88105b152 --- /dev/null +++ b/packages/react-native-session-replay/src/components/SessionReplayView/index.ts @@ -0,0 +1,34 @@ +/* + * Unless explicitly stated otherwise all files in this repository are licensed under the Apache License Version 2.0. + * This product includes software developed at Datadog (https://www.datadoghq.com/). + * Copyright 2016-Present Datadog, Inc. + */ + +import { HideView } from './HideView'; +import { MaskAllView } from './MaskAllView'; +import { MaskNoneView } from './MaskNoneView'; +import { PrivacyView } from './PrivacyView'; + +/** + * A collection of preconfigured React components for controlling privacy in Datadog Session Replay. + * + * These components can be used to control how different parts of the UI appear in session recordings: + * + * - `SessionReplayView.MaskAll`: Masks all text, inputs, and images. Hides touch interactions by default. + * Use for highly sensitive sections. + * + * - `SessionReplayView.MaskNone`: Displays most content as-is, except for sensitive inputs which are still masked. + * Use when visibility is safe and desired. + * + * - `SessionReplayView.Hide`: Completely hides the view and its children from session replays. + * Use for content that should not appear at all in recordings. + * + * - `SessionReplayView.Privacy`: A low-level configurable component for fine-tuned privacy control. + * Use this if none of the presets meet your needs. + */ +export const SessionReplayView = { + Privacy: PrivacyView, + MaskAll: MaskAllView, + MaskNone: MaskNoneView, + Hide: HideView +}; diff --git a/packages/react-native-session-replay/src/index.ts b/packages/react-native-session-replay/src/index.ts index 3fce88497..0c02f94ce 100644 --- a/packages/react-native-session-replay/src/index.ts +++ b/packages/react-native-session-replay/src/index.ts @@ -12,6 +12,7 @@ import { TouchPrivacyLevel, TextAndInputPrivacyLevel } from './SessionReplay'; +import { SessionReplayView } from './components/SessionReplayView'; export { SessionReplay, @@ -21,4 +22,6 @@ export { TextAndInputPrivacyLevel }; +export { SessionReplayView }; + export type { SessionReplayConfiguration }; diff --git a/packages/react-native-session-replay/src/specs/DdPrivacyView.ts b/packages/react-native-session-replay/src/specs/DdPrivacyView.ts new file mode 100644 index 000000000..7c5f2b550 --- /dev/null +++ b/packages/react-native-session-replay/src/specs/DdPrivacyView.ts @@ -0,0 +1,17 @@ +/* + * Unless explicitly stated otherwise all files in this repository are licensed under the Apache License Version 2.0. + * This product includes software developed at Datadog (https://www.datadoghq.com/). + * Copyright 2016-Present Datadog, Inc. + */ + +/* eslint-disable @typescript-eslint/no-var-requires */ +import { UIManager } from 'react-native'; + +const isNewArch = + UIManager.getViewManagerConfig?.('DdPrivacyView') === undefined; + +const NativeComponent = isNewArch + ? require('./DdPrivacyViewNativeComponent').default + : require('./DdPrivacyViewPaper').default; + +export default NativeComponent; diff --git a/packages/react-native-session-replay/src/specs/DdPrivacyViewNativeComponent.ts b/packages/react-native-session-replay/src/specs/DdPrivacyViewNativeComponent.ts new file mode 100644 index 000000000..6ce5b03b7 --- /dev/null +++ b/packages/react-native-session-replay/src/specs/DdPrivacyViewNativeComponent.ts @@ -0,0 +1,19 @@ +/* + * Unless explicitly stated otherwise all files in this repository are licensed under the Apache License Version 2.0. + * This product includes software developed at Datadog (https://www.datadoghq.com/). + * Copyright 2016-Present Datadog, Inc. + */ + +import codegenNativeComponent from 'react-native/Libraries/Utilities/codegenNativeComponent'; +import type { HostComponent, ViewProps } from 'react-native'; + +interface DdPrivacyViewProps extends ViewProps { + textAndInputPrivacy: string; + imagePrivacy: string; + touchPrivacy: string; + hide: boolean; +} + +export default codegenNativeComponent('DdPrivacyView', { + paperComponentName: 'DdPrivacyView' +}) as HostComponent; diff --git a/packages/react-native-session-replay/src/specs/DdPrivacyViewPaper.ts b/packages/react-native-session-replay/src/specs/DdPrivacyViewPaper.ts new file mode 100644 index 000000000..5b720d63a --- /dev/null +++ b/packages/react-native-session-replay/src/specs/DdPrivacyViewPaper.ts @@ -0,0 +1,15 @@ +/* + * Unless explicitly stated otherwise all files in this repository are licensed under the Apache License Version 2.0. + * This product includes software developed at Datadog (https://www.datadoghq.com/). + * Copyright 2016-Present Datadog, Inc. + */ + +import { requireNativeComponent } from 'react-native'; + +import type { DdPrivacyViewProps } from '../types/DdPrivacyView'; + +const DdPrivacyView = requireNativeComponent( + 'DdPrivacyView' +); + +export default DdPrivacyView; diff --git a/packages/react-native-session-replay/src/types/DdPrivacyView.ts b/packages/react-native-session-replay/src/types/DdPrivacyView.ts new file mode 100644 index 000000000..4621af0ca --- /dev/null +++ b/packages/react-native-session-replay/src/types/DdPrivacyView.ts @@ -0,0 +1,14 @@ +/* + * Unless explicitly stated otherwise all files in this repository are licensed under the Apache License Version 2.0. + * This product includes software developed at Datadog (https://www.datadoghq.com/). + * Copyright 2016-Present Datadog, Inc. + */ + +import type { ViewProps } from 'react-native'; + +export interface DdPrivacyViewProps extends ViewProps { + textAndInputPrivacy: string; + imagePrivacy: string; + touchPrivacy: string; + hide: boolean; +} diff --git a/packages/react-native-webview/DatadogSDKReactNativeWebView.podspec b/packages/react-native-webview/DatadogSDKReactNativeWebView.podspec index 4b6d1abd9..b5b02d17a 100644 --- a/packages/react-native-webview/DatadogSDKReactNativeWebView.podspec +++ b/packages/react-native-webview/DatadogSDKReactNativeWebView.podspec @@ -19,8 +19,8 @@ Pod::Spec.new do |s| s.dependency "React-Core" # /!\ Remember to keep the version in sync with DatadogSDKReactNative.podspec - s.dependency 'DatadogWebViewTracking', '~> 2.25.0' - s.dependency 'DatadogInternal', '~> 2.25.0' + s.dependency 'DatadogWebViewTracking', '~> 2.27.0' + s.dependency 'DatadogInternal', '~> 2.27.0' s.dependency 'DatadogSDKReactNative' s.test_spec 'Tests' do |test_spec| diff --git a/yarn.lock b/yarn.lock index 0dcfbee34..7d9f4c09c 100644 --- a/yarn.lock +++ b/yarn.lock @@ -3999,6 +3999,30 @@ __metadata: languageName: node linkType: hard +"@react-native-community/cli-clean@npm:15.0.1": + version: 15.0.1 + resolution: "@react-native-community/cli-clean@npm:15.0.1" + dependencies: + "@react-native-community/cli-tools": 15.0.1 + chalk: ^4.1.2 + execa: ^5.0.0 + fast-glob: ^3.3.2 + checksum: ea6c663ec56cfe3a2c4fac7d3f0fec2ac8de9c34458f241b2afdf7f45dfb00d1de9e367fec732f8fef6e2b17046f4ed03c3be2ea4d2075633197dc23c516f986 + languageName: node + linkType: hard + +"@react-native-community/cli-config-apple@npm:15.0.1": + version: 15.0.1 + resolution: "@react-native-community/cli-config-apple@npm:15.0.1" + dependencies: + "@react-native-community/cli-tools": 15.0.1 + chalk: ^4.1.2 + execa: ^5.0.0 + fast-glob: ^3.3.2 + checksum: 67b9be8b6cce14f764a5734b9599eb7d1095c7fb5c06b0b6cd3518cf3a00c90026018c1eb8d497338da092a3cdcaa9b33fec34c5b766a4517c70293e5f1df58d + languageName: node + linkType: hard + "@react-native-community/cli-config@npm:12.3.7": version: 12.3.7 resolution: "@react-native-community/cli-config@npm:12.3.7" @@ -4027,6 +4051,20 @@ __metadata: languageName: node linkType: hard +"@react-native-community/cli-config@npm:15.0.1": + version: 15.0.1 + resolution: "@react-native-community/cli-config@npm:15.0.1" + dependencies: + "@react-native-community/cli-tools": 15.0.1 + chalk: ^4.1.2 + cosmiconfig: ^9.0.0 + deepmerge: ^4.3.0 + fast-glob: ^3.3.2 + joi: ^17.2.1 + checksum: 23314bcdf465974ee71a01792f0a1149ea51eea1dc66416e53aa2bc3a123dba6a8e0654d68211d2b20570bc875145b2e5d4abf923190c685c0021bb280230c3f + languageName: node + linkType: hard + "@react-native-community/cli-debugger-ui@npm:12.3.7": version: 12.3.7 resolution: "@react-native-community/cli-debugger-ui@npm:12.3.7" @@ -4045,6 +4083,15 @@ __metadata: languageName: node linkType: hard +"@react-native-community/cli-debugger-ui@npm:15.0.1": + version: 15.0.1 + resolution: "@react-native-community/cli-debugger-ui@npm:15.0.1" + dependencies: + serve-static: ^1.13.1 + checksum: a97bb195f3722b91e0acf4c63f4e6956d572f5a275a13be01513b6797bd81ad0b838aa4fc8440131e64c39547c8e83feebb6435a34773269355a497122ed2209 + languageName: node + linkType: hard + "@react-native-community/cli-doctor@npm:12.3.7": version: 12.3.7 resolution: "@react-native-community/cli-doctor@npm:12.3.7" @@ -4093,6 +4140,30 @@ __metadata: languageName: node linkType: hard +"@react-native-community/cli-doctor@npm:15.0.1": + version: 15.0.1 + resolution: "@react-native-community/cli-doctor@npm:15.0.1" + dependencies: + "@react-native-community/cli-config": 15.0.1 + "@react-native-community/cli-platform-android": 15.0.1 + "@react-native-community/cli-platform-apple": 15.0.1 + "@react-native-community/cli-platform-ios": 15.0.1 + "@react-native-community/cli-tools": 15.0.1 + chalk: ^4.1.2 + command-exists: ^1.2.8 + deepmerge: ^4.3.0 + envinfo: ^7.13.0 + execa: ^5.0.0 + node-stream-zip: ^1.9.1 + ora: ^5.4.1 + semver: ^7.5.2 + strip-ansi: ^5.2.0 + wcwidth: ^1.0.1 + yaml: ^2.2.1 + checksum: 6df1825df9f563096e48528f16d0bc521aceb2933e864921c8092eeeeeade0893963964897a6145b26a3d4de72ce05259f2d06f873eae64796d8c3815f22f1a5 + languageName: node + linkType: hard + "@react-native-community/cli-hermes@npm:12.3.7": version: 12.3.7 resolution: "@react-native-community/cli-hermes@npm:12.3.7" @@ -4147,6 +4218,20 @@ __metadata: languageName: node linkType: hard +"@react-native-community/cli-platform-android@npm:15.0.1": + version: 15.0.1 + resolution: "@react-native-community/cli-platform-android@npm:15.0.1" + dependencies: + "@react-native-community/cli-tools": 15.0.1 + chalk: ^4.1.2 + execa: ^5.0.0 + fast-glob: ^3.3.2 + fast-xml-parser: ^4.4.1 + logkitty: ^0.7.1 + checksum: 6c5e5912b7c81a6cb9076ae08897470090e1ff20fdaa502d500b4700235f2411942c6e38e3373111efa025dee9a1d3cc71dea6a4c42a89272f0d56b1eeb7b38a + languageName: node + linkType: hard + "@react-native-community/cli-platform-apple@npm:14.1.0": version: 14.1.0 resolution: "@react-native-community/cli-platform-apple@npm:14.1.0" @@ -4161,6 +4246,19 @@ __metadata: languageName: node linkType: hard +"@react-native-community/cli-platform-apple@npm:15.0.1": + version: 15.0.1 + resolution: "@react-native-community/cli-platform-apple@npm:15.0.1" + dependencies: + "@react-native-community/cli-config-apple": 15.0.1 + "@react-native-community/cli-tools": 15.0.1 + chalk: ^4.1.2 + execa: ^5.0.0 + fast-xml-parser: ^4.4.1 + checksum: 27278ff8790fddc220cba9daa4b05cb027403b7c3b81cd3f025b09f52ceccd41f68e86b71d493794eadc2d54fa4a5f6a1032608c4ec7ce928cc1985dce7b9bd2 + languageName: node + linkType: hard + "@react-native-community/cli-platform-ios@npm:12.3.7": version: 12.3.7 resolution: "@react-native-community/cli-platform-ios@npm:12.3.7" @@ -4184,6 +4282,15 @@ __metadata: languageName: node linkType: hard +"@react-native-community/cli-platform-ios@npm:15.0.1": + version: 15.0.1 + resolution: "@react-native-community/cli-platform-ios@npm:15.0.1" + dependencies: + "@react-native-community/cli-platform-apple": 15.0.1 + checksum: 27b4775af43ce06e9315fda54f299e96405975c44d20a495443074d2818fc085dcb85cf2d2e6581990b71ab2e9ffc7d88666337bec8eb9412e80abf8dd793851 + languageName: node + linkType: hard + "@react-native-community/cli-plugin-metro@npm:12.3.7": version: 12.3.7 resolution: "@react-native-community/cli-plugin-metro@npm:12.3.7" @@ -4225,6 +4332,23 @@ __metadata: languageName: node linkType: hard +"@react-native-community/cli-server-api@npm:15.0.1": + version: 15.0.1 + resolution: "@react-native-community/cli-server-api@npm:15.0.1" + dependencies: + "@react-native-community/cli-debugger-ui": 15.0.1 + "@react-native-community/cli-tools": 15.0.1 + compression: ^1.7.1 + connect: ^3.6.5 + errorhandler: ^1.5.1 + nocache: ^3.0.1 + pretty-format: ^26.6.2 + serve-static: ^1.13.1 + ws: ^6.2.3 + checksum: 354eba589433251a56db7edf005886aa3c4886ff70f52b999db7c3718435f01a3f1081bc56cc681a1b7de2fa50ea4891c4ea673fe0a02eb855ecbc001bd86654 + languageName: node + linkType: hard + "@react-native-community/cli-tools@npm:12.3.7": version: 12.3.7 resolution: "@react-native-community/cli-tools@npm:12.3.7" @@ -4280,6 +4404,25 @@ __metadata: languageName: node linkType: hard +"@react-native-community/cli-tools@npm:15.0.1": + version: 15.0.1 + resolution: "@react-native-community/cli-tools@npm:15.0.1" + dependencies: + appdirsjs: ^1.2.4 + chalk: ^4.1.2 + execa: ^5.0.0 + find-up: ^5.0.0 + mime: ^2.4.1 + open: ^6.2.0 + ora: ^5.4.1 + prompts: ^2.4.2 + semver: ^7.5.2 + shell-quote: ^1.7.3 + sudo-prompt: ^9.0.0 + checksum: 0c40d5aa2306a2bfc1ee15362d045b0eff3cb162dd1b070f504508b2bbdd00c791151cf9f8679d248b4480b75b758e60b8d0cf3c19a19a02b4b4ece9928a119c + languageName: node + linkType: hard + "@react-native-community/cli-types@npm:12.3.7": version: 12.3.7 resolution: "@react-native-community/cli-types@npm:12.3.7" @@ -4298,6 +4441,15 @@ __metadata: languageName: node linkType: hard +"@react-native-community/cli-types@npm:15.0.1": + version: 15.0.1 + resolution: "@react-native-community/cli-types@npm:15.0.1" + dependencies: + joi: ^17.2.1 + checksum: 77452486158afcf1f03a3596135b6dba16dba5dd10209dacd5a6a4b176df36d37b8e49af61590d5a64df4907cf0575b6f37e0a3893335f961a9380edaee32152 + languageName: node + linkType: hard + "@react-native-community/cli@npm:12.3.7": version: 12.3.7 resolution: "@react-native-community/cli@npm:12.3.7" @@ -4352,6 +4504,32 @@ __metadata: languageName: node linkType: hard +"@react-native-community/cli@npm:15.0.1": + version: 15.0.1 + resolution: "@react-native-community/cli@npm:15.0.1" + dependencies: + "@react-native-community/cli-clean": 15.0.1 + "@react-native-community/cli-config": 15.0.1 + "@react-native-community/cli-debugger-ui": 15.0.1 + "@react-native-community/cli-doctor": 15.0.1 + "@react-native-community/cli-server-api": 15.0.1 + "@react-native-community/cli-tools": 15.0.1 + "@react-native-community/cli-types": 15.0.1 + chalk: ^4.1.2 + commander: ^9.4.1 + deepmerge: ^4.3.0 + execa: ^5.0.0 + find-up: ^5.0.0 + fs-extra: ^8.1.0 + graceful-fs: ^4.1.3 + prompts: ^2.4.2 + semver: ^7.5.2 + bin: + rnc-cli: build/bin.js + checksum: 26c98ef67b4b89d3af13f2a3b19e51c7b2de5d320ca908cb628ca22b32bff5a17b8a1cc7f4b0ece303c4e53dc10e8ac0e88df9b376e63ebc97acb8d358f78c2e + languageName: node + linkType: hard + "@react-native-community/masked-view@npm:^0.1.10": version: 0.1.11 resolution: "@react-native-community/masked-view@npm:0.1.11" @@ -8506,6 +8684,7 @@ __metadata: resolution: "dd-sdk-reactnative@workspace:." dependencies: "@babel/plugin-transform-runtime": 7.12.15 + "@react-native-community/cli": 15.0.1 "@react-native/babel-preset": 0.73.21 "@react-native/eslint-config": 0.73.2 "@react-native/metro-config": 0.73.5 @@ -8538,6 +8717,9 @@ __metadata: react-native-webview: 13.12.2 react-test-renderer: 18.1.0 typescript: 5.0.4 + peerDependencies: + react: "*" + react-native: "*" languageName: unknown linkType: soft