@truewatchtech/react-native-mobile 0.4.0-alpha.4 → 0.4.1

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (154) hide show
  1. package/FTMobileReactNativeSDK.podspec +32 -3
  2. package/android/build.gradle +7 -19
  3. package/android/src/main/java/com/ft/sdk/reactnative/FTMobileImpl.java +434 -5
  4. package/android/src/main/java/com/ft/sdk/reactnative/FTRUMImpl.java +12 -0
  5. package/android/src/newarch/java/com/ft/sdk/reactnative/FTLogModule.java +7 -14
  6. package/android/src/newarch/java/com/ft/sdk/reactnative/FTMobileModule.java +46 -12
  7. package/android/src/newarch/java/com/ft/sdk/reactnative/FTRUMModule.java +12 -13
  8. package/android/src/newarch/java/com/ft/sdk/reactnative/FTTraceModule.java +6 -8
  9. package/android/src/oldarch/java/com/ft/sdk/reactnative/FTMobileModule.java +34 -2
  10. package/android/src/rnpost74/java/com/ft/sdk/reactnative/FTMobilePackage.java +14 -3
  11. package/android/src/rnpre74/java/com/ft/sdk/reactnative/FTMobilePackage.java +0 -3
  12. package/ios/FTMobileReactNative.h +9 -5
  13. package/ios/FTMobileReactNative.mm +619 -0
  14. package/ios/FTReactNativeLog.h +8 -3
  15. package/ios/FTReactNativeLog.mm +79 -0
  16. package/ios/FTReactNativeRUM.h +8 -3
  17. package/ios/{FTReactNativeRUM.m → FTReactNativeRUM.mm} +143 -84
  18. package/ios/FTReactNativeTrace.h +8 -2
  19. package/ios/FTReactNativeTrace.mm +74 -0
  20. package/ios/FtMobileAgent.xcodeproj/project.pbxproj +17 -1
  21. package/lib/commonjs/ft_logger.js +14 -13
  22. package/lib/commonjs/ft_logger.js.map +1 -1
  23. package/lib/commonjs/ft_mobile_agent.js +153 -6
  24. package/lib/commonjs/ft_mobile_agent.js.map +1 -1
  25. package/lib/commonjs/ft_rum.js +55 -21
  26. package/lib/commonjs/ft_rum.js.map +1 -1
  27. package/lib/commonjs/ft_tracing.js +29 -10
  28. package/lib/commonjs/ft_tracing.js.map +1 -1
  29. package/lib/commonjs/index.js +24 -13
  30. package/lib/commonjs/index.js.map +1 -1
  31. package/lib/commonjs/rum/FTRumActionTracking.js +10 -4
  32. package/lib/commonjs/rum/FTRumActionTracking.js.map +1 -1
  33. package/lib/commonjs/rum/FTRumErrorTracking.js +4 -4
  34. package/lib/commonjs/rum/FTRumErrorTracking.js.map +1 -1
  35. package/lib/commonjs/specs/NativeFTMobileReactNative.js +10 -0
  36. package/lib/commonjs/specs/NativeFTMobileReactNative.js.map +1 -0
  37. package/lib/commonjs/specs/NativeFTReactNativeLog.js +10 -0
  38. package/lib/commonjs/specs/NativeFTReactNativeLog.js.map +1 -0
  39. package/lib/commonjs/specs/NativeFTReactNativeRUM.js +10 -0
  40. package/lib/commonjs/specs/NativeFTReactNativeRUM.js.map +1 -0
  41. package/lib/commonjs/specs/NativeFTReactNativeTrace.js +10 -0
  42. package/lib/commonjs/specs/NativeFTReactNativeTrace.js.map +1 -0
  43. package/lib/commonjs/version.js +1 -1
  44. package/lib/commonjs/version.js.map +1 -1
  45. package/lib/module/ft_logger.js +14 -12
  46. package/lib/module/ft_logger.js.map +1 -1
  47. package/lib/module/ft_mobile_agent.js +159 -5
  48. package/lib/module/ft_mobile_agent.js.map +1 -1
  49. package/lib/module/ft_rum.js +54 -16
  50. package/lib/module/ft_rum.js.map +1 -1
  51. package/lib/module/ft_tracing.js +29 -9
  52. package/lib/module/ft_tracing.js.map +1 -1
  53. package/lib/module/index.js +3 -4
  54. package/lib/module/index.js.map +1 -1
  55. package/lib/module/rum/FTRumActionTracking.js +10 -4
  56. package/lib/module/rum/FTRumActionTracking.js.map +1 -1
  57. package/lib/module/rum/FTRumErrorTracking.js +4 -4
  58. package/lib/module/rum/FTRumErrorTracking.js.map +1 -1
  59. package/lib/module/specs/NativeFTMobileReactNative.js +5 -0
  60. package/lib/module/specs/NativeFTMobileReactNative.js.map +1 -0
  61. package/lib/module/specs/NativeFTReactNativeLog.js +5 -0
  62. package/lib/module/specs/NativeFTReactNativeLog.js.map +1 -0
  63. package/lib/module/specs/NativeFTReactNativeRUM.js +5 -0
  64. package/lib/module/specs/NativeFTReactNativeRUM.js.map +1 -0
  65. package/lib/module/specs/NativeFTReactNativeTrace.js +5 -0
  66. package/lib/module/specs/NativeFTReactNativeTrace.js.map +1 -0
  67. package/lib/module/version.js +1 -1
  68. package/lib/module/version.js.map +1 -1
  69. package/lib/typescript/ft_logger.d.ts +6 -6
  70. package/lib/typescript/ft_mobile_agent.d.ts +165 -14
  71. package/lib/typescript/ft_rum.d.ts +32 -8
  72. package/lib/typescript/ft_tracing.d.ts +6 -6
  73. package/lib/typescript/index.d.ts +3 -4
  74. package/lib/typescript/specs/NativeFTMobileReactNative.d.ts +75 -0
  75. package/lib/typescript/specs/NativeFTReactNativeLog.d.ts +23 -0
  76. package/lib/typescript/specs/NativeFTReactNativeRUM.d.ts +89 -0
  77. package/lib/typescript/specs/NativeFTReactNativeTrace.d.ts +24 -0
  78. package/lib/typescript/version.d.ts +1 -1
  79. package/package.json +29 -96
  80. package/scripts/replace-react-require.js +37 -38
  81. package/src/ft_logger.tsx +72 -40
  82. package/src/ft_mobile_agent.tsx +374 -91
  83. package/src/ft_rum.tsx +227 -121
  84. package/src/ft_tracing.tsx +58 -37
  85. package/src/index.tsx +58 -18
  86. package/src/rum/FTRumActionTracking.tsx +212 -204
  87. package/src/rum/FTRumErrorTracking.tsx +70 -71
  88. package/src/specs/NativeFTMobileReactNative.ts +83 -0
  89. package/src/specs/NativeFTReactNativeLog.ts +29 -0
  90. package/src/specs/NativeFTReactNativeRUM.ts +104 -0
  91. package/src/specs/NativeFTReactNativeTrace.ts +26 -0
  92. package/src/version.ts +1 -1
  93. package/LICENSE +0 -201
  94. package/android/.project +0 -17
  95. package/android/.settings/org.eclipse.buildship.core.prefs +0 -13
  96. package/android/gradlew +0 -185
  97. package/android/local.properties +0 -8
  98. package/android/src/main/java/com/ft/sdk/InnerClassProxy.java +0 -8
  99. package/android/src/main/java/com/ft/sdk/reactnative/FTSessionReplayImpl.java +0 -60
  100. package/android/src/main/java/com/ft/sdk/reactnative/extensions/ReactDrawablesExt.java +0 -155
  101. package/android/src/main/java/com/ft/sdk/reactnative/sessionreplay/NoopTextPropertiesResolver.java +0 -23
  102. package/android/src/main/java/com/ft/sdk/reactnative/sessionreplay/ReactNativeSessionReplayExtensionSupport.java +0 -57
  103. package/android/src/main/java/com/ft/sdk/reactnative/sessionreplay/ShadowNodeWrapper.java +0 -84
  104. package/android/src/main/java/com/ft/sdk/reactnative/sessionreplay/TextPropertiesResolver.java +0 -20
  105. package/android/src/main/java/com/ft/sdk/reactnative/sessionreplay/mappers/DefaultMapper.java +0 -78
  106. package/android/src/main/java/com/ft/sdk/reactnative/sessionreplay/mappers/Pair.java +0 -11
  107. package/android/src/main/java/com/ft/sdk/reactnative/sessionreplay/mappers/ReactEditTextMapper.java +0 -136
  108. package/android/src/main/java/com/ft/sdk/reactnative/sessionreplay/mappers/ReactNativeImageViewMapper.java +0 -117
  109. package/android/src/main/java/com/ft/sdk/reactnative/sessionreplay/mappers/ReactTextMapper.java +0 -57
  110. package/android/src/main/java/com/ft/sdk/reactnative/sessionreplay/mappers/ReactViewGroupMapper.java +0 -22
  111. package/android/src/main/java/com/ft/sdk/reactnative/sessionreplay/mappers/ReactViewModalMapper.java +0 -21
  112. package/android/src/main/java/com/ft/sdk/reactnative/sessionreplay/resources/ReactDrawableCopier.java +0 -35
  113. package/android/src/main/java/com/ft/sdk/reactnative/sessionreplay/utils/DrawableUtils.java +0 -34
  114. package/android/src/main/java/com/ft/sdk/reactnative/sessionreplay/utils/ReflectionUtils.java +0 -43
  115. package/android/src/main/java/com/ft/sdk/reactnative/sessionreplay/utils/text/FabricTextViewUtils.java +0 -69
  116. package/android/src/main/java/com/ft/sdk/reactnative/sessionreplay/utils/text/LegacyTextViewUtils.java +0 -97
  117. package/android/src/main/java/com/ft/sdk/reactnative/sessionreplay/utils/text/TextViewUtils.java +0 -184
  118. package/android/src/main/java/com/ft/sdk/reactnative/utils/ColorUtils.java +0 -24
  119. package/android/src/newarch/java/com/ft/sdk/reactnative/FTSessionReplayModule.java +0 -30
  120. package/android/src/oldarch/java/com/ft/sdk/reactnative/FTSessionReplayModule.java +0 -25
  121. package/android/src/rn69/java/com/ft/sdk/reactnative/sessionreplay/utils/ReactViewBackgroundDrawableUtils.java +0 -100
  122. package/android/src/rn75/java/com/ft/sdk/reactnative/sessionreplay/extensions/LengthPercentageExt.java +0 -27
  123. package/android/src/rn75/java/com/ft/sdk/reactnative/sessionreplay/utils/ReactViewBackgroundDrawableUtils.java +0 -116
  124. package/android/src/rn76/java/com/ft/sdk/reactnative/sessionreplay/extensions/LengthPercentageExt.java +0 -38
  125. package/android/src/rn76/java/com/ft/sdk/reactnative/sessionreplay/utils/ReactViewBackgroundDrawableUtils.java +0 -117
  126. package/android/src/rn79/java/com/ft/sdk/reactnative/sessionreplay/extensions/LengthPercentageExt.java +0 -38
  127. package/android/src/rn79/java/com/ft/sdk/reactnative/sessionreplay/utils/ReactViewBackgroundDrawableUtils.java +0 -132
  128. package/android/src/rn80/java/com/ft/sdk/reactnative/sessionreplay/extensions/ComputedBorderRadiusExt.java +0 -58
  129. package/android/src/rn80/java/com/ft/sdk/reactnative/sessionreplay/utils/ReactViewBackgroundDrawableUtils.java +0 -190
  130. package/android/src/rnlegacy/java/com/ft/sdk/reactnative/sessionreplay/utils/ReactViewBackgroundDrawableUtils.java +0 -120
  131. package/ios/.idea/.name +0 -1
  132. package/ios/.idea/ios.iml +0 -2
  133. package/ios/.idea/modules.xml +0 -8
  134. package/ios/.idea/vcs.xml +0 -6
  135. package/ios/.idea/xcode.xml +0 -4
  136. package/ios/FTMobileReactNative.m +0 -184
  137. package/ios/FTRCTTextViewRecorder.h +0 -33
  138. package/ios/FTRCTTextViewRecorder.m +0 -120
  139. package/ios/FTReactNativeLog.m +0 -60
  140. package/ios/FTReactNativeSessionReplay.h +0 -6
  141. package/ios/FTReactNativeSessionReplay.mm +0 -44
  142. package/ios/FTReactNativeTrace.m +0 -56
  143. package/ios/FtMobileAgent.xcodeproj/project.xcworkspace/contents.xcworkspacedata +0 -4
  144. package/ios/FtMobileAgent.xcodeproj/project.xcworkspace/xcuserdata/Brandon.xcuserdatad/UserInterfaceState.xcuserstate +0 -0
  145. package/ios/FtMobileAgent.xcodeproj/project.xcworkspace/xcuserdata/Brandon.xcuserdatad/xcschemes/xcschememanagement.plist +0 -5
  146. package/ios/FtMobileAgent.xcodeproj/xcuserdata/Brandon.xcuserdatad/xcschemes/FtMobileAgent.xcscheme +0 -56
  147. package/ios/FtMobileAgent.xcodeproj/xcuserdata/Brandon.xcuserdatad/xcschemes/xcschememanagement.plist +0 -14
  148. package/ios/RCTVersion.h +0 -8
  149. package/lib/commonjs/ft_session_replay.js +0 -34
  150. package/lib/commonjs/ft_session_replay.js.map +0 -1
  151. package/lib/module/ft_session_replay.js +0 -29
  152. package/lib/module/ft_session_replay.js.map +0 -1
  153. package/lib/typescript/ft_session_replay.d.ts +0 -27
  154. package/src/ft_session_replay.tsx +0 -34
@@ -0,0 +1,79 @@
1
+ //
2
+ // FTReactNativeLog.m
3
+ // FtMobileAgent
4
+ //
5
+ // Created by Hu Leilei on 2021/12/14.
6
+ // Copyright © 2021 Facebook. All rights reserved.
7
+ //
8
+
9
+ #import "FTReactNativeLog.h"
10
+ #import <FTMobileSDK/FTMobileAgent.h>
11
+ #import <React/RCTConvert.h>
12
+ #import <FTMobileSDK/FTLogger+Private.h>
13
+ @implementation FTReactNativeLog
14
+ RCT_EXPORT_MODULE()
15
+
16
+ RCT_REMAP_METHOD(logConfig,
17
+ context:(NSDictionary *)context
18
+ findEventsWithResolver:(RCTPromiseResolveBlock)resolve
19
+ rejecter:(RCTPromiseRejectBlock)reject){
20
+ [self logConfig:context resolve:resolve reject:reject];
21
+ }
22
+
23
+ RCT_REMAP_METHOD(logging,
24
+ logging:(NSString *)content status:(nonnull NSNumber *)status property:(NSDictionary *)property
25
+ findEventsWithResolver:(RCTPromiseResolveBlock)resolve
26
+ rejecter:(RCTPromiseRejectBlock)reject){
27
+
28
+ [self logging:content logStatus:[status doubleValue] property:property resolve:resolve reject:reject];
29
+
30
+ }
31
+ RCT_REMAP_METHOD(logWithStatusString,
32
+ logWithStatusString:(NSString *)content status:(NSString *)status property:(NSDictionary *)property
33
+ findEventsWithResolver:(RCTPromiseResolveBlock)resolve
34
+ rejecter:(RCTPromiseRejectBlock)reject){
35
+ [self logWithStatusString:content logStatus:status property:property resolve:resolve reject:reject];
36
+ }
37
+ #ifdef RCT_NEW_ARCH_ENABLED
38
+ - (std::shared_ptr<facebook::react::TurboModule>)getTurboModule:(const facebook::react::ObjCTurboModule::InitParams &)params {
39
+ return std::make_shared<facebook::react::NativeFTReactNativeLogSpecJSI>(params);
40
+ }
41
+ #endif
42
+
43
+ - (void)logConfig:(NSDictionary *)context resolve:(RCTPromiseResolveBlock)resolve reject:(RCTPromiseRejectBlock)reject {
44
+ FTLoggerConfig *logger = [[FTLoggerConfig alloc]init];
45
+ if ([context.allKeys containsObject:@"sampleRate"]) {
46
+ logger.samplerate = [RCTConvert double:context[@"sampleRate"]]*100;
47
+ }
48
+ NSArray<NSNumber *>*filters = [RCTConvert NSNumberArray:context[@"logLevelFilters"]];
49
+ if (filters) {
50
+ logger.logLevelFilter = filters;
51
+ }
52
+ if([context.allKeys containsObject:@"discardStrategy"]){
53
+ logger.discardType = (FTLogCacheDiscard)[RCTConvert int:context[@"discardStrategy"]];
54
+ }
55
+ if ([context.allKeys containsObject:@"globalContext"]) {
56
+ logger.globalContext = [RCTConvert NSDictionary:context[@"globalContext"]];
57
+ }
58
+ logger.enableCustomLog = [RCTConvert BOOL:context[@"enableCustomLog"]];
59
+ logger.enableLinkRumData = [RCTConvert BOOL:context[@"enableLinkRumData"]];
60
+ if ([context.allKeys containsObject:@"logCacheLimitCount"]) {
61
+ logger.logCacheLimitCount = [RCTConvert int:context[@"logCacheLimitCount"]];
62
+ }
63
+ [[FTMobileAgent sharedInstance] startLoggerWithConfigOptions:logger];
64
+ resolve(nil);
65
+ }
66
+
67
+ - (void)logWithStatusString:(NSString *)content logStatus:(NSString *)logStatus property:(NSDictionary *)property resolve:(RCTPromiseResolveBlock)resolve reject:(RCTPromiseRejectBlock)reject {
68
+ [[FTLogger sharedInstance] log:content status:logStatus property:property];
69
+ resolve(nil);
70
+ }
71
+
72
+ - (void)logging:(NSString *)content logStatus:(double)logStatus property:(NSDictionary *)property resolve:(RCTPromiseResolveBlock)resolve reject:(RCTPromiseRejectBlock)reject {
73
+ FTLogStatus status =(FTLogStatus)logStatus;
74
+ [[FTLogger sharedInstance] log:content statusType:status property:property];
75
+ resolve(nil);
76
+ }
77
+
78
+ @end
79
+
@@ -9,10 +9,15 @@
9
9
  #import <Foundation/Foundation.h>
10
10
  #import <React/RCTBridgeModule.h>
11
11
 
12
- NS_ASSUME_NONNULL_BEGIN
13
12
 
14
- @interface FTReactNativeRUM : NSObject<RCTBridgeModule>
13
+ #ifdef RCT_NEW_ARCH_ENABLED
14
+ #import <FTSdkReactNative/FTSdkReactNative.h>
15
+ @interface FTReactNativeRUM: NSObject <NativeFTReactNativeRUMSpec>
16
+ #else
17
+
18
+ #import <React/RCTBridgeModule.h>
19
+ @interface FTReactNativeRUM : NSObject <RCTBridgeModule>
20
+ #endif
15
21
 
16
22
  @end
17
23
 
18
- NS_ASSUME_NONNULL_END
@@ -20,6 +20,122 @@ RCT_REMAP_METHOD(setConfig,
20
20
  context:(NSDictionary *)context
21
21
  findEventsWithResolver:(RCTPromiseResolveBlock)resolve
22
22
  rejecter:(RCTPromiseRejectBlock)reject){
23
+ [self setConfig:context resolve:resolve reject:reject];
24
+ }
25
+ RCT_REMAP_METHOD(startAction,
26
+ actionName:(NSString *)actionName actionType:(NSString *)actionType property:(NSDictionary *)property
27
+ findEventsWithResolver:(RCTPromiseResolveBlock)resolve
28
+ rejecter:(RCTPromiseRejectBlock)reject){
29
+ [self startAction:actionName actionType:actionType property:property resolve:resolve reject:reject];
30
+ }
31
+ RCT_REMAP_METHOD(addAction,
32
+ addAction:(NSString *)actionName actionType:(NSString *)actionType property:(NSDictionary *)property
33
+ findEventsWithResolver:(RCTPromiseResolveBlock)resolve
34
+ rejecter:(RCTPromiseRejectBlock)reject){
35
+ [self addAction:actionName actionType:actionType property:property resolve:resolve reject:reject];
36
+ }
37
+ RCT_REMAP_METHOD(onCreateView,
38
+ viewName:(NSString *)viewName loadTime:(double)loadTime
39
+ findEventsWithResolver:(RCTPromiseResolveBlock)resolve
40
+ rejecter:(RCTPromiseRejectBlock)reject){
41
+ [self onCreateView:viewName loadTime:loadTime resolve:resolve reject:reject];
42
+ }
43
+ RCT_REMAP_METHOD(startView,
44
+ viewName:(NSString *)viewName property:(NSDictionary *)property
45
+ findEventsWithResolver:(RCTPromiseResolveBlock)resolve
46
+ rejecter:(RCTPromiseRejectBlock)reject){
47
+ [self startView:viewName property:property resolve:resolve reject:reject];
48
+ }
49
+ RCT_REMAP_METHOD(stopView,
50
+ property:(NSDictionary *)property
51
+ findEventsWithResolver:(RCTPromiseResolveBlock)resolve
52
+ rejecter:(RCTPromiseRejectBlock)reject){
53
+ [self stopView:property resolve:resolve reject:reject];
54
+ }
55
+ RCT_REMAP_METHOD(addError,
56
+ stack:(NSString *)stack message:(NSString *)message property:(NSDictionary *)property
57
+ findEventsWithResolver:(RCTPromiseResolveBlock)resolve
58
+ rejecter:(RCTPromiseRejectBlock)reject){
59
+ [self addError:stack message:message property:property resolve:resolve reject:reject];
60
+ }
61
+ RCT_REMAP_METHOD(addErrorWithType,
62
+ type:(NSString *)type stack:(NSString *)stack message:(NSString *)message property:(NSDictionary *)property
63
+ findEventsWithResolver:(RCTPromiseResolveBlock)resolve
64
+ rejecter:(RCTPromiseRejectBlock)reject){
65
+ [self addErrorWithType:type stack:stack message:message property:property resolve:resolve reject:reject];
66
+ }
67
+ RCT_REMAP_METHOD(startResource,
68
+ startResource:(NSString *)key property:(NSDictionary *)property
69
+ findEventsWithResolver:(RCTPromiseResolveBlock)resolve
70
+ rejecter:(RCTPromiseRejectBlock)reject){
71
+ [self startResource:key property:property resolve:resolve reject:reject];
72
+ }
73
+ RCT_REMAP_METHOD(stopResource,
74
+ stopResource:(NSString *)key property:(NSDictionary *)property
75
+ findEventsWithResolver:(RCTPromiseResolveBlock)resolve
76
+ rejecter:(RCTPromiseRejectBlock)reject){
77
+ [self stopResource:key property:property resolve:resolve reject:reject];
78
+ }
79
+ RCT_REMAP_METHOD(addResource,
80
+ addResource:(NSString *)key content:(NSDictionary *)content metrics:(NSDictionary *)metrics
81
+ findEventsWithResolver:(RCTPromiseResolveBlock)resolve
82
+ rejecter:(RCTPromiseRejectBlock)reject){
83
+ [self addResource:key resource:content metrics:metrics resolve:resolve reject:reject];
84
+ }
85
+ #ifdef RCT_NEW_ARCH_ENABLED
86
+ - (std::shared_ptr<facebook::react::TurboModule>)getTurboModule:(const facebook::react::ObjCTurboModule::InitParams &)params {
87
+ return std::make_shared<facebook::react::NativeFTReactNativeRUMSpecJSI>(params);
88
+ }
89
+ #endif
90
+
91
+ - (void)addAction:(NSString *)actionName actionType:(NSString *)actionType property:(NSDictionary *)property resolve:(RCTPromiseResolveBlock)resolve reject:(RCTPromiseRejectBlock)reject {
92
+ [[FTExternalDataManager sharedManager] addAction:actionName actionType:actionType property:property];
93
+ resolve(nil);
94
+ }
95
+
96
+ - (void)addError:(NSString *)stack message:(NSString *)message property:(NSDictionary *)property resolve:(RCTPromiseResolveBlock)resolve reject:(RCTPromiseRejectBlock)reject {
97
+ [[FTExternalDataManager sharedManager] addErrorWithType:@"reactnative_crash" message:message stack:stack property:property];
98
+ resolve(nil);
99
+ }
100
+
101
+ - (void)addErrorWithType:(NSString *)type stack:(NSString *)stack message:(NSString *)message property:(NSDictionary *)property resolve:(RCTPromiseResolveBlock)resolve reject:(RCTPromiseRejectBlock)reject {
102
+ [[FTExternalDataManager sharedManager] addErrorWithType:type message:message stack:stack property:property];
103
+ resolve(nil);
104
+ }
105
+
106
+ - (void)addResource:(NSString *)key resource:(NSDictionary *)content metrics:(NSDictionary *)metrics resolve:(RCTPromiseResolveBlock)resolve reject:(RCTPromiseRejectBlock)reject {
107
+ if (key.length==0 || content.allKeys.count == 0) {
108
+ return;
109
+ }
110
+ FTResourceMetricsModel *metricsModel = nil;
111
+ if (metrics.allKeys.count>0) {
112
+ metricsModel = [[FTResourceMetricsModel alloc]init];
113
+ metricsModel.duration = [RCTConvert NSNumber:metrics[@"duration"]];
114
+ metricsModel.resource_dns = [RCTConvert NSNumber:metrics[@"resource_dns"]];
115
+ metricsModel.resource_tcp = [RCTConvert NSNumber:metrics[@"resource_tcp"]];
116
+ metricsModel.resource_ssl = [RCTConvert NSNumber:metrics[@"resource_ssl"]];
117
+ metricsModel.resource_ttfb = [RCTConvert NSNumber:metrics[@"resource_ttfb"]];
118
+ metricsModel.resource_trans = [RCTConvert NSNumber:metrics[@"resource_trans"]];
119
+ metricsModel.resource_first_byte = [RCTConvert NSNumber:metrics[@"resource_first_byte"]];
120
+ }
121
+ FTResourceContentModel *contentModel = [[FTResourceContentModel alloc]init];
122
+ contentModel.url = [RCTConvert NSURL:content[@"url"]];
123
+ contentModel.httpMethod = [RCTConvert NSString:content[@"httpMethod"]];
124
+ contentModel.requestHeader = [RCTConvert NSDictionary:content[@"requestHeader"]];
125
+ contentModel.responseHeader = [RCTConvert NSDictionary:content[@"responseHeader"]];
126
+ contentModel.responseBody = [RCTConvert NSString:content[@"responseBody"]];
127
+ contentModel.httpStatusCode = [RCTConvert int:content[@"resourceStatus"]];
128
+
129
+ [[FTExternalDataManager sharedManager] addResourceWithKey:key metrics:metricsModel content:contentModel];
130
+ resolve(nil);
131
+ }
132
+
133
+ - (void)onCreateView:(NSString *)viewName loadTime:(double)loadTime resolve:(RCTPromiseResolveBlock)resolve reject:(RCTPromiseRejectBlock)reject {
134
+ [[FTExternalDataManager sharedManager] onCreateView:viewName loadTime:@(loadTime)];
135
+ resolve(nil);
136
+ }
137
+
138
+ - (void)setConfig:(NSDictionary *)context resolve:(RCTPromiseResolveBlock)resolve reject:(RCTPromiseRejectBlock)reject {
23
139
  NSString *rumAppId = [RCTConvert NSString:context[@"iOSAppId"]];
24
140
  FTRumConfig *rumConfig = [[FTRumConfig alloc]initWithAppid:rumAppId];
25
141
  if ([context.allKeys containsObject:@"sampleRate"]) {
@@ -65,11 +181,20 @@ RCT_REMAP_METHOD(setConfig,
65
181
  rumConfig.globalContext = [RCTConvert NSDictionary:context[@"globalContext"]];
66
182
  }
67
183
  if ([context.allKeys containsObject:@"rumDiscardStrategy"]) {
68
- rumConfig.rumDiscardType = [RCTConvert int:context[@"rumDiscardStrategy"]];
184
+ rumConfig.rumDiscardType = (FTRUMCacheDiscard)[RCTConvert int:context[@"rumDiscardStrategy"]];
69
185
  }
70
186
  if ([context.allKeys containsObject:@"rumCacheLimitCount"]) {
71
187
  rumConfig.rumCacheLimitCount = [RCTConvert int:context[@"rumCacheLimitCount"]];
72
188
  }
189
+ if ([context.allKeys containsObject:@"enableTraceWebView"]) {
190
+ rumConfig.enableTraceWebView = [RCTConvert BOOL:context[@"enableTraceWebView"]];
191
+ }
192
+ if ([context.allKeys containsObject:@"allowWebViewHost"]) {
193
+ rumConfig.allowWebViewHost = [RCTConvert NSArray:context[@"allowWebViewHost"]];
194
+ }
195
+ if ([context.allKeys containsObject:@"iosCrashMonitoringType"]) {
196
+ rumConfig.crashMonitoring = (FTCrashMonitorType)[RCTConvert int:context[@"iosCrashMonitoringType"]];
197
+ }
73
198
  #if DEBUG
74
199
  rumConfig.resourceUrlHandler = ^BOOL(NSURL * _Nonnull url) {
75
200
  return [FTReactNativeUtils filterBlackResource:url];
@@ -78,96 +203,30 @@ RCT_REMAP_METHOD(setConfig,
78
203
  [[FTMobileAgent sharedInstance] startRumWithConfigOptions:rumConfig];
79
204
  resolve(nil);
80
205
  }
81
- RCT_REMAP_METHOD(startAction,
82
- actionName:(NSString *)actionName actionType:(NSString *)actionType property:(NSDictionary *)property
83
- findEventsWithResolver:(RCTPromiseResolveBlock)resolve
84
- rejecter:(RCTPromiseRejectBlock)reject){
206
+
207
+ - (void)startAction:(NSString *)actionName actionType:(NSString *)actionType property:(NSDictionary *)property resolve:(RCTPromiseResolveBlock)resolve reject:(RCTPromiseRejectBlock)reject {
85
208
  [[FTExternalDataManager sharedManager] startAction:actionName actionType:actionType property:property];
86
209
  resolve(nil);
87
210
  }
88
- RCT_REMAP_METHOD(addAction,
89
- addAction:(NSString *)actionName actionType:(NSString *)actionType property:(NSDictionary *)property
90
- findEventsWithResolver:(RCTPromiseResolveBlock)resolve
91
- rejecter:(RCTPromiseRejectBlock)reject){
92
- [[FTExternalDataManager sharedManager] addAction:actionName actionType:actionType property:property];
211
+
212
+ - (void)startResource:(NSString *)key property:(NSDictionary *)property resolve:(RCTPromiseResolveBlock)resolve reject:(RCTPromiseRejectBlock)reject {
213
+ [[FTExternalDataManager sharedManager] startResourceWithKey:key property:property];
93
214
  resolve(nil);
94
215
  }
95
- RCT_REMAP_METHOD(onCreateView,
96
- viewName:(NSString *)viewName loadTime:(double)loadTime
97
- findEventsWithResolver:(RCTPromiseResolveBlock)resolve
98
- rejecter:(RCTPromiseRejectBlock)reject){
99
- [[FTExternalDataManager sharedManager] onCreateView:viewName loadTime:@(loadTime)];
100
- resolve(nil);
101
- }
102
- RCT_REMAP_METHOD(startView,
103
- viewName:(NSString *)viewName property:(NSDictionary *)property
104
- findEventsWithResolver:(RCTPromiseResolveBlock)resolve
105
- rejecter:(RCTPromiseRejectBlock)reject){
106
- [[FTExternalDataManager sharedManager] startViewWithName:viewName property:property];
107
- resolve(nil);
108
- }
109
- RCT_REMAP_METHOD(stopView,
110
- property:(NSDictionary *)property
111
- findEventsWithResolver:(RCTPromiseResolveBlock)resolve
112
- rejecter:(RCTPromiseRejectBlock)reject){
113
- [[FTExternalDataManager sharedManager] stopViewWithProperty:property];
114
- resolve(nil);
115
- }
116
- RCT_REMAP_METHOD(addError,
117
- stack:(NSString *)stack message:(NSString *)message property:(NSDictionary *)property
118
- findEventsWithResolver:(RCTPromiseResolveBlock)resolve
119
- rejecter:(RCTPromiseRejectBlock)reject){
120
- [[FTExternalDataManager sharedManager] addErrorWithType:@"reactnative_crash" message:message stack:stack property:property];
121
- resolve(nil);
122
- }
123
- RCT_REMAP_METHOD(addErrorWithType,
124
- type:(NSString *)type stack:(NSString *)stack message:(NSString *)message property:(NSDictionary *)property
125
- findEventsWithResolver:(RCTPromiseResolveBlock)resolve
126
- rejecter:(RCTPromiseRejectBlock)reject){
127
- [[FTExternalDataManager sharedManager] addErrorWithType:type message:message stack:stack property:property];
128
- resolve(nil);
129
- }
130
- RCT_REMAP_METHOD(startResource,
131
- startResource:(NSString *)key property:(NSDictionary *)property
132
- findEventsWithResolver:(RCTPromiseResolveBlock)resolve
133
- rejecter:(RCTPromiseRejectBlock)reject){
134
- [[FTExternalDataManager sharedManager] startResourceWithKey:key property:property];
135
- resolve(nil);
216
+
217
+ - (void)startView:(NSString *)viewName property:(NSDictionary *)property resolve:(RCTPromiseResolveBlock)resolve reject:(RCTPromiseRejectBlock)reject {
218
+ [[FTExternalDataManager sharedManager] startViewWithName:viewName property:property];
219
+ resolve(nil);
136
220
  }
137
- RCT_REMAP_METHOD(stopResource,
138
- stopResource:(NSString *)key property:(NSDictionary *)property
139
- findEventsWithResolver:(RCTPromiseResolveBlock)resolve
140
- rejecter:(RCTPromiseRejectBlock)reject){
141
- [[FTExternalDataManager sharedManager] stopResourceWithKey:key property:property];
142
- resolve(nil);
221
+
222
+ - (void)stopResource:(NSString *)key property:(NSDictionary *)property resolve:(RCTPromiseResolveBlock)resolve reject:(RCTPromiseRejectBlock)reject {
223
+ [[FTExternalDataManager sharedManager] stopResourceWithKey:key property:property];
224
+ resolve(nil);
143
225
  }
144
- RCT_REMAP_METHOD(addResource,
145
- addResource:(NSString *)key content:(NSDictionary *)content metrics:(NSDictionary *)metrics
146
- findEventsWithResolver:(RCTPromiseResolveBlock)resolve
147
- rejecter:(RCTPromiseRejectBlock)reject){
148
- if (key.length==0 || content.allKeys.count == 0) {
149
- return;
150
- }
151
- FTResourceMetricsModel *metricsModel = nil;
152
- if (metrics.allKeys.count>0) {
153
- metricsModel = [[FTResourceMetricsModel alloc]init];
154
- metricsModel.duration = [RCTConvert NSNumber:metrics[@"duration"]];
155
- metricsModel.resource_dns = [RCTConvert NSNumber:metrics[@"resource_dns"]];
156
- metricsModel.resource_tcp = [RCTConvert NSNumber:metrics[@"resource_tcp"]];
157
- metricsModel.resource_ssl = [RCTConvert NSNumber:metrics[@"resource_ssl"]];
158
- metricsModel.resource_ttfb = [RCTConvert NSNumber:metrics[@"resource_ttfb"]];
159
- metricsModel.resource_trans = [RCTConvert NSNumber:metrics[@"resource_trans"]];
160
- metricsModel.resource_first_byte = [RCTConvert NSNumber:metrics[@"resource_first_byte"]];
161
- }
162
- FTResourceContentModel *contentModel = [[FTResourceContentModel alloc]init];
163
- contentModel.url = [RCTConvert NSURL:content[@"url"]];
164
- contentModel.httpMethod = [RCTConvert NSString:content[@"httpMethod"]];
165
- contentModel.requestHeader = [RCTConvert NSDictionary:content[@"requestHeader"]];
166
- contentModel.responseHeader = [RCTConvert NSDictionary:content[@"responseHeader"]];
167
- contentModel.responseBody = [RCTConvert NSString:content[@"responseBody"]];
168
- contentModel.httpStatusCode = [RCTConvert int:content[@"resourceStatus"]];
169
226
 
170
- [[FTExternalDataManager sharedManager] addResourceWithKey:key metrics:metricsModel content:contentModel];
171
- resolve(nil);
227
+ - (void)stopView:(NSDictionary *)property resolve:(RCTPromiseResolveBlock)resolve reject:(RCTPromiseRejectBlock)reject {
228
+ [[FTExternalDataManager sharedManager] stopViewWithProperty:property];
229
+ resolve(nil);
172
230
  }
231
+
173
232
  @end
@@ -9,10 +9,16 @@
9
9
  #import <Foundation/Foundation.h>
10
10
  #import <React/RCTBridgeModule.h>
11
11
 
12
- NS_ASSUME_NONNULL_BEGIN
13
12
 
13
+ #ifdef RCT_NEW_ARCH_ENABLED
14
+ #import <FTSdkReactNative/FTSdkReactNative.h>
15
+ @interface FTReactNativeTrace: NSObject <NativeFTReactNativeTraceSpec>
16
+ #else
17
+
18
+ #import <React/RCTBridgeModule.h>
14
19
  @interface FTReactNativeTrace : NSObject <RCTBridgeModule>
20
+ #endif
15
21
 
16
22
  @end
17
23
 
18
- NS_ASSUME_NONNULL_END
24
+
@@ -0,0 +1,74 @@
1
+ //
2
+ // FTReactNativeTrace.m
3
+ // FtMobileAgent
4
+ //
5
+ // Created by Hu Leilei on 2021/12/14.
6
+ // Copyright © 2021 Facebook. All rights reserved.
7
+ //
8
+
9
+ #import "FTReactNativeTrace.h"
10
+ #import "FtMobileAgent.h"
11
+ #import <FTMobileSDK/FTMobileAgent.h>
12
+ #import <FTMobileSDK/FTExternalDataManager.h>
13
+ #import <FTMobileSDK/FTResourceMetricsModel.h>
14
+ #import <FTMobileSDK/FTResourceContentModel.h>
15
+ #import <React/RCTConvert.h>
16
+ #import <FTMobileSDK/FTTraceManager.h>
17
+ @implementation FTReactNativeTrace
18
+ RCT_EXPORT_MODULE()
19
+
20
+ RCT_REMAP_METHOD(setConfig,
21
+ context:(NSDictionary *)context
22
+ findEventsWithResolver:(RCTPromiseResolveBlock)resolve
23
+ rejecter:(RCTPromiseRejectBlock)reject){
24
+ [self setConfig:context resolve:resolve reject:reject];
25
+ }
26
+
27
+ RCT_REMAP_METHOD(getTraceHeaderFields,
28
+ url:(NSString *)url
29
+ key:(NSString *)key
30
+ findEventsWithResolver:(RCTPromiseResolveBlock)resolve
31
+ rejecter:(RCTPromiseRejectBlock)reject){
32
+ [self getTraceHeaderFields:url key:key resolve:resolve reject:reject];
33
+ }
34
+
35
+ #ifdef RCT_NEW_ARCH_ENABLED
36
+ - (std::shared_ptr<facebook::react::TurboModule>)getTurboModule:(const facebook::react::ObjCTurboModule::InitParams &)params {
37
+ return std::make_shared<facebook::react::NativeFTReactNativeTraceSpecJSI>(params);
38
+ }
39
+ #endif
40
+ - (void)getTraceHeader:(NSString *)key url:(NSString *)url resolve:(RCTPromiseResolveBlock)resolve reject:(RCTPromiseRejectBlock)reject {
41
+ [self getTraceHeaderFields:url key:key resolve:resolve reject:reject];
42
+ }
43
+
44
+ - (void)getTraceHeaderFields:(NSString *)url key:(NSString *)key resolve:(RCTPromiseResolveBlock)resolve reject:(RCTPromiseRejectBlock)reject {
45
+ NSDictionary *traceHeader = nil;
46
+ if(key&&key.length>0){
47
+ traceHeader = [[FTExternalDataManager sharedManager] getTraceHeaderWithKey:key url:[NSURL URLWithString:url]];
48
+ }else{
49
+ traceHeader = [[FTExternalDataManager sharedManager] getTraceHeaderWithUrl:[NSURL URLWithString:url]];
50
+ }
51
+ if (traceHeader) {
52
+ resolve(traceHeader);
53
+ }else{
54
+ resolve(nil);
55
+ }
56
+ }
57
+
58
+ - (void)setConfig:(NSDictionary *)context resolve:(RCTPromiseResolveBlock)resolve reject:(RCTPromiseRejectBlock)reject {
59
+ FTTraceConfig *trace = [[FTTraceConfig alloc]init];
60
+ if ([context.allKeys containsObject:@"sampleRate"]) {
61
+ trace.samplerate =[RCTConvert double:context[@"sampleRate"]] * 100;
62
+ }
63
+ if ([context.allKeys containsObject:@"traceType"]) {
64
+ int traceType = [RCTConvert int:context[@"traceType"]];
65
+ trace.networkTraceType = (FTNetworkTraceType)traceType;
66
+ }
67
+ trace.enableLinkRumData = [RCTConvert BOOL:context[@"enableLinkRUMData"]];
68
+ trace.enableAutoTrace = [RCTConvert BOOL:context[@"enableNativeAutoTrace"]];
69
+ [[FTMobileAgent sharedInstance] startTraceWithConfigOptions:trace];
70
+ resolve(nil);
71
+ }
72
+
73
+ @end
74
+
@@ -7,8 +7,10 @@
7
7
  objects = {
8
8
 
9
9
  /* Begin PBXBuildFile section */
10
- 17E2407F2CA93E2600E8014B /* FTReactNativeSessionReplay.mm in Sources */ = {isa = PBXBuildFile; fileRef = 17E2407E2CA93E2600E8014B /* FTReactNativeSessionReplay.mm */; };
10
+ 1762EF462F7CEEC200930450 /* FTPrivacyView.mm in Sources */ = {isa = PBXBuildFile; fileRef = 1762EF452F7CEEC200930450 /* FTPrivacyView.mm */; };
11
+ 1762EF492F7CF40900930450 /* FTPrivacyViewFabric.mm in Sources */ = {isa = PBXBuildFile; fileRef = 1762EF482F7CF40900930450 /* FTPrivacyViewFabric.mm */; };
11
12
  17C492802D43B4F900487920 /* FTReactNativeUtils.m in Sources */ = {isa = PBXBuildFile; fileRef = 17C4927F2D43B4F900487920 /* FTReactNativeUtils.m */; };
13
+ 17E2407F2CA93E2600E8014B /* FTReactNativeSessionReplay.mm in Sources */ = {isa = PBXBuildFile; fileRef = 17E2407E2CA93E2600E8014B /* FTReactNativeSessionReplay.mm */; };
12
14
  /* End PBXBuildFile section */
13
15
 
14
16
  /* Begin PBXCopyFilesBuildPhase section */
@@ -25,6 +27,12 @@
25
27
 
26
28
  /* Begin PBXFileReference section */
27
29
  134814201AA4EA6300B7C361 /* libFtMobileAgent.a */ = {isa = PBXFileReference; explicitFileType = archive.ar; includeInIndex = 0; path = libFtMobileAgent.a; sourceTree = BUILT_PRODUCTS_DIR; };
30
+ 1762EF442F7CEEC200930450 /* FTPrivacyView.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; path = FTPrivacyView.h; sourceTree = "<group>"; };
31
+ 1762EF452F7CEEC200930450 /* FTPrivacyView.mm */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.cpp.objcpp; path = FTPrivacyView.mm; sourceTree = "<group>"; };
32
+ 1762EF472F7CF40900930450 /* FTPrivacyViewFabric.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; path = FTPrivacyViewFabric.h; sourceTree = "<group>"; };
33
+ 1762EF482F7CF40900930450 /* FTPrivacyViewFabric.mm */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.cpp.objcpp; path = FTPrivacyViewFabric.mm; sourceTree = "<group>"; };
34
+ 17A8D6132E6FF23800A990A2 /* FTRCTTextViewRecorder.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; path = FTRCTTextViewRecorder.h; sourceTree = "<group>"; };
35
+ 17A8D6142E6FF23800A990A2 /* FTRCTTextViewRecorder.m */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.objc; path = FTRCTTextViewRecorder.m; sourceTree = "<group>"; };
28
36
  17C4927E2D43B4F900487920 /* FTReactNativeUtils.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; path = FTReactNativeUtils.h; sourceTree = "<group>"; };
29
37
  17C4927F2D43B4F900487920 /* FTReactNativeUtils.m */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.objc; path = FTReactNativeUtils.m; sourceTree = "<group>"; };
30
38
  17E2407D2CA93E2600E8014B /* FTReactNativeSessionReplay.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; path = FTReactNativeSessionReplay.h; sourceTree = "<group>"; };
@@ -61,6 +69,12 @@
61
69
  58B511D21A9E6C8500147676 = {
62
70
  isa = PBXGroup;
63
71
  children = (
72
+ 1762EF472F7CF40900930450 /* FTPrivacyViewFabric.h */,
73
+ 1762EF482F7CF40900930450 /* FTPrivacyViewFabric.mm */,
74
+ 1762EF442F7CEEC200930450 /* FTPrivacyView.h */,
75
+ 1762EF452F7CEEC200930450 /* FTPrivacyView.mm */,
76
+ 17A8D6132E6FF23800A990A2 /* FTRCTTextViewRecorder.h */,
77
+ 17A8D6142E6FF23800A990A2 /* FTRCTTextViewRecorder.m */,
64
78
  17E2407D2CA93E2600E8014B /* FTReactNativeSessionReplay.h */,
65
79
  17E2407E2CA93E2600E8014B /* FTReactNativeSessionReplay.mm */,
66
80
  7C3C28AB27684D36009DB8E2 /* FTReactNativeLog.h */,
@@ -134,7 +148,9 @@
134
148
  isa = PBXSourcesBuildPhase;
135
149
  buildActionMask = 2147483647;
136
150
  files = (
151
+ 1762EF462F7CEEC200930450 /* FTPrivacyView.mm in Sources */,
137
152
  17C492802D43B4F900487920 /* FTReactNativeUtils.m in Sources */,
153
+ 1762EF492F7CF40900930450 /* FTPrivacyViewFabric.mm in Sources */,
138
154
  17E2407F2CA93E2600E8014B /* FTReactNativeSessionReplay.mm in Sources */,
139
155
  );
140
156
  runOnlyForDeploymentPostprocessing = 0;
@@ -4,7 +4,7 @@ Object.defineProperty(exports, "__esModule", {
4
4
  value: true
5
5
  });
6
6
  exports.FTReactNativeLog = exports.FTLogStatus = exports.FTLogCacheDiscard = void 0;
7
- var _reactNative = require("react-native");
7
+ var _ft_mobile_agent = require("./ft_mobile_agent");
8
8
  function _defineProperty(e, r, t) { return (r = _toPropertyKey(r)) in e ? Object.defineProperty(e, r, { value: t, enumerable: !0, configurable: !0, writable: !0 }) : e[r] = t, e; }
9
9
  function _toPropertyKey(t) { var i = _toPrimitive(t, "string"); return "symbol" == typeof i ? i : i + ""; }
10
10
  function _toPrimitive(t, r) { if ("object" != typeof t || !t) return t; var e = t[Symbol.toPrimitive]; if (void 0 !== e) { var i = e.call(t, r || "default"); if ("object" != typeof i) return i; throw new TypeError("@@toPrimitive must return a primitive value."); } return ("string" === r ? String : Number)(t); }
@@ -19,7 +19,6 @@ let FTLogStatus = exports.FTLogStatus = /*#__PURE__*/function (FTLogStatus) {
19
19
  FTLogStatus[FTLogStatus["ok"] = 4] = "ok";
20
20
  return FTLogStatus;
21
21
  }({});
22
- ;
23
22
  /**
24
23
  * Log discard method.
25
24
  */
@@ -28,7 +27,6 @@ let FTLogCacheDiscard = exports.FTLogCacheDiscard = /*#__PURE__*/function (FTLog
28
27
  FTLogCacheDiscard[FTLogCacheDiscard["discardOldest"] = 1] = "discardOldest";
29
28
  return FTLogCacheDiscard;
30
29
  }({});
31
- ;
32
30
  /**
33
31
  * Configure log output configuration.
34
32
  * @param sampleRate sampling rate
@@ -39,12 +37,13 @@ let FTLogCacheDiscard = exports.FTLogCacheDiscard = /*#__PURE__*/function (FTLog
39
37
  * @param globalContext custom global parameters
40
38
  * @param logCacheLimitCount get maximum log entry count limit [1000,), default 5000
41
39
  */
42
-
43
- ;
44
40
  class FTReactNativeLogWrapper {
45
41
  constructor() {
46
- _defineProperty(this, "logger", _reactNative.NativeModules.FTReactNativeLog);
42
+ /* eslint-disable @typescript-eslint/no-var-requires */
43
+ _defineProperty(this, "logger", require('./specs/NativeFTReactNativeLog').default);
47
44
  }
45
+ /* eslint-enable @typescript-eslint/no-var-requires */
46
+
48
47
  /**
49
48
  *Configure log output configuration to enable log collection.
50
49
  */
@@ -53,17 +52,19 @@ class FTReactNativeLogWrapper {
53
52
  }
54
53
 
55
54
  /**
56
- * Output log.
57
- * @param content log content
58
- * @param status log status
59
- * @param property log context (optional)
60
- */
55
+ * Output log.
56
+ * @param content log content
57
+ * @param status log status
58
+ * @param property log context (optional)
59
+ */
61
60
  logging(content, logStatus, property) {
61
+ // Automatically merge bridge context properties with local properties
62
+ const mergedProperties = _ft_mobile_agent.bridgeContextManager.mergeWithLocalPropertiesSync(property);
62
63
  if (typeof logStatus === 'string') {
63
- return this.logger.logWithStatusString(content, logStatus.toString(), property);
64
+ return this.logger.logWithStatusString(content, logStatus.toString(), mergedProperties);
64
65
  }
65
66
  let enumLogStatus = logStatus;
66
- return this.logger.logging(content, enumLogStatus, property);
67
+ return this.logger.logging(content, enumLogStatus, mergedProperties);
67
68
  }
68
69
  }
69
70
  const FTReactNativeLog = exports.FTReactNativeLog = new FTReactNativeLogWrapper();
@@ -1 +1 @@
1
- {"version":3,"names":["_reactNative","require","_defineProperty","e","r","t","_toPropertyKey","Object","defineProperty","value","enumerable","configurable","writable","i","_toPrimitive","Symbol","toPrimitive","call","TypeError","String","Number","FTLogStatus","exports","FTLogCacheDiscard","FTReactNativeLogWrapper","constructor","NativeModules","FTReactNativeLog","logConfig","config","logger","logging","content","logStatus","property","logWithStatusString","toString","enumLogStatus"],"sources":["ft_logger.tsx"],"sourcesContent":["import { NativeModules } from 'react-native';\n/**\n * Set log level.\n */\n export enum FTLogStatus {\n info, warning, error, critical, ok,\n };\n/**\n * Log discard method.\n */\n export enum FTLogCacheDiscard { discard, discardOldest };\n/**\n * Configure log output configuration.\n * @param sampleRate sampling rate\n * @param enableLinkRumData whether to link with RUM\n * @param enableCustomLog whether to enable custom logs\n * @param discardStrategy log discard strategy\n * @param logLevelFilters log level filter\n * @param globalContext custom global parameters\n * @param logCacheLimitCount get maximum log entry count limit [1000,), default 5000\n */\n export interface FTLogConfig{\n sampleRate?: number,\n enableLinkRumData?: boolean,\n enableCustomLog?: boolean,\n discardStrategy?: FTLogCacheDiscard,\n logLevelFilters?: Array<FTLogStatus>,\n globalContext?:object,\n logCacheLimitCount?: number\n };\n\n type FTReactNativeLogType = {\n /**\n *Configure log output configuration to enable log collection.\n */\n logConfig(config: FTLogConfig): Promise<void>;\n /**\n * Output log.\n * @param content log content\n * @param status log status\n * @param property log context (optional)\n */\n logging(content:String,logStatus:FTLogStatus,property?:object): Promise<void>;\n /**\n * Output log.\n * @param content log content\n * @param status log status\n * @param property log context (optional)\n */\n logWithStatusString(content:String,logStatus:String,property?:object): Promise<void>;\n };\n\n class FTReactNativeLogWrapper {\n private logger: FTReactNativeLogType = NativeModules.FTReactNativeLog;\n /**\n *Configure log output configuration to enable log collection.\n */\n logConfig(config:FTLogConfig): Promise<void>{\n return this.logger.logConfig(config);\n }\n\n /**\n * Output log.\n * @param content log content\n * @param status log status\n * @param property log context (optional)\n */\n logging(content:String,logStatus:FTLogStatus|String,property?:object): Promise<void>{\n if((typeof logStatus)==='string'){\n return this.logger.logWithStatusString(content,logStatus.toString(),property)\n }\n let enumLogStatus: FTLogStatus = logStatus as FTLogStatus;\n return this.logger.logging(content,enumLogStatus,property);\n }\n }\n export const FTReactNativeLog: FTReactNativeLogWrapper = new FTReactNativeLogWrapper();\n"],"mappings":";;;;;;AAAA,IAAAA,YAAA,GAAAC,OAAA;AAA6C,SAAAC,gBAAAC,CAAA,EAAAC,CAAA,EAAAC,CAAA,YAAAD,CAAA,GAAAE,cAAA,CAAAF,CAAA,MAAAD,CAAA,GAAAI,MAAA,CAAAC,cAAA,CAAAL,CAAA,EAAAC,CAAA,IAAAK,KAAA,EAAAJ,CAAA,EAAAK,UAAA,MAAAC,YAAA,MAAAC,QAAA,UAAAT,CAAA,CAAAC,CAAA,IAAAC,CAAA,EAAAF,CAAA;AAAA,SAAAG,eAAAD,CAAA,QAAAQ,CAAA,GAAAC,YAAA,CAAAT,CAAA,uCAAAQ,CAAA,GAAAA,CAAA,GAAAA,CAAA;AAAA,SAAAC,aAAAT,CAAA,EAAAD,CAAA,2BAAAC,CAAA,KAAAA,CAAA,SAAAA,CAAA,MAAAF,CAAA,GAAAE,CAAA,CAAAU,MAAA,CAAAC,WAAA,kBAAAb,CAAA,QAAAU,CAAA,GAAAV,CAAA,CAAAc,IAAA,CAAAZ,CAAA,EAAAD,CAAA,uCAAAS,CAAA,SAAAA,CAAA,YAAAK,SAAA,yEAAAd,CAAA,GAAAe,MAAA,GAAAC,MAAA,EAAAf,CAAA;AAC7C;AACA;AACA;AAFA,IAGagB,WAAW,GAAAC,OAAA,CAAAD,WAAA,0BAAXA,WAAW;EAAXA,WAAW,CAAXA,WAAW;EAAXA,WAAW,CAAXA,WAAW;EAAXA,WAAW,CAAXA,WAAW;EAAXA,WAAW,CAAXA,WAAW;EAAXA,WAAW,CAAXA,WAAW;EAAA,OAAXA,WAAW;AAAA;AAEtB;AACF;AACA;AACA;AAFA,IAGaE,iBAAiB,GAAAD,OAAA,CAAAC,iBAAA,0BAAjBA,iBAAiB;EAAjBA,iBAAiB,CAAjBA,iBAAiB;EAAjBA,iBAAiB,CAAjBA,iBAAiB;EAAA,OAAjBA,iBAAiB;AAAA;AAA2B;AACzD;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AASE;AAuBD,MAAMC,uBAAuB,CAAE;EAAAC,YAAA;IAAAvB,eAAA,iBACUwB,0BAAa,CAACC,gBAAgB;EAAA;EACtE;AACF;AACA;EACGC,SAASA,CAACC,MAAkB,EAAgB;IAC1C,OAAO,IAAI,CAACC,MAAM,CAACF,SAAS,CAACC,MAAM,CAAC;EACtC;;EAEA;AACH;AACA;AACA;AACA;AACA;EACGE,OAAOA,CAACC,OAAc,EAACC,SAA4B,EAACC,QAAgB,EAAgB;IAClF,IAAI,OAAOD,SAAS,KAAI,QAAQ,EAAC;MAC/B,OAAO,IAAI,CAACH,MAAM,CAACK,mBAAmB,CAACH,OAAO,EAACC,SAAS,CAACG,QAAQ,CAAC,CAAC,EAACF,QAAQ,CAAC;IAC/E;IACA,IAAIG,aAA0B,GAAGJ,SAAwB;IACzD,OAAO,IAAI,CAACH,MAAM,CAACC,OAAO,CAACC,OAAO,EAACK,aAAa,EAACH,QAAQ,CAAC;EAC5D;AACF;AACO,MAAMP,gBAAyC,GAAAL,OAAA,CAAAK,gBAAA,GAAG,IAAIH,uBAAuB,CAAC,CAAC","ignoreList":[]}
1
+ {"version":3,"names":["_ft_mobile_agent","require","_defineProperty","e","r","t","_toPropertyKey","Object","defineProperty","value","enumerable","configurable","writable","i","_toPrimitive","Symbol","toPrimitive","call","TypeError","String","Number","FTLogStatus","exports","FTLogCacheDiscard","FTReactNativeLogWrapper","constructor","default","logConfig","config","logger","logging","content","logStatus","property","mergedProperties","bridgeContextManager","mergeWithLocalPropertiesSync","logWithStatusString","toString","enumLogStatus","FTReactNativeLog"],"sources":["ft_logger.tsx"],"sourcesContent":["import { bridgeContextManager } from './ft_mobile_agent';\n/**\n * Set log level.\n */\nexport enum FTLogStatus {\n info,\n warning,\n error,\n critical,\n ok,\n}\n/**\n * Log discard method.\n */\nexport enum FTLogCacheDiscard {\n discard,\n discardOldest,\n}\n/**\n * Configure log output configuration.\n * @param sampleRate sampling rate\n * @param enableLinkRumData whether to link with RUM\n * @param enableCustomLog whether to enable custom logs\n * @param discardStrategy log discard strategy\n * @param logLevelFilters log level filter\n * @param globalContext custom global parameters\n * @param logCacheLimitCount get maximum log entry count limit [1000,), default 5000\n */\nexport interface FTLogConfig {\n sampleRate?: number;\n enableLinkRumData?: boolean;\n enableCustomLog?: boolean;\n discardStrategy?: FTLogCacheDiscard;\n logLevelFilters?: Array<FTLogStatus>;\n globalContext?: object;\n logCacheLimitCount?: number;\n}\n\ntype FTReactNativeLogType = {\n /**\n *Configure log output configuration to enable log collection.\n */\n logConfig(config: FTLogConfig): Promise<void>;\n /**\n * Output log.\n * @param content log content\n * @param status log status\n * @param property log context (optional)\n */\n logging(\n content: string,\n logStatus: FTLogStatus,\n property?: object\n ): Promise<void>;\n /**\n * Output log.\n * @param content log content\n * @param status log status\n * @param property log context (optional)\n */\n logWithStatusString(\n content: string,\n logStatus: string,\n property?: object\n ): Promise<void>;\n};\n\nclass FTReactNativeLogWrapper {\n /* eslint-disable @typescript-eslint/no-var-requires */\n private logger: FTReactNativeLogType =\n require('./specs/NativeFTReactNativeLog').default;\n /* eslint-enable @typescript-eslint/no-var-requires */\n\n /**\n *Configure log output configuration to enable log collection.\n */\n logConfig(config: FTLogConfig): Promise<void> {\n return this.logger.logConfig(config);\n }\n\n /**\n * Output log.\n * @param content log content\n * @param status log status\n * @param property log context (optional)\n */\n logging(\n content: string,\n logStatus: FTLogStatus | string,\n property?: object\n ): Promise<void> {\n // Automatically merge bridge context properties with local properties\n const mergedProperties =\n bridgeContextManager.mergeWithLocalPropertiesSync(property);\n\n if (typeof logStatus === 'string') {\n return this.logger.logWithStatusString(\n content,\n logStatus.toString(),\n mergedProperties\n );\n }\n let enumLogStatus: FTLogStatus = logStatus as FTLogStatus;\n return this.logger.logging(content, enumLogStatus, mergedProperties);\n }\n}\nexport const FTReactNativeLog: FTReactNativeLogWrapper =\n new FTReactNativeLogWrapper();\n"],"mappings":";;;;;;AAAA,IAAAA,gBAAA,GAAAC,OAAA;AAAyD,SAAAC,gBAAAC,CAAA,EAAAC,CAAA,EAAAC,CAAA,YAAAD,CAAA,GAAAE,cAAA,CAAAF,CAAA,MAAAD,CAAA,GAAAI,MAAA,CAAAC,cAAA,CAAAL,CAAA,EAAAC,CAAA,IAAAK,KAAA,EAAAJ,CAAA,EAAAK,UAAA,MAAAC,YAAA,MAAAC,QAAA,UAAAT,CAAA,CAAAC,CAAA,IAAAC,CAAA,EAAAF,CAAA;AAAA,SAAAG,eAAAD,CAAA,QAAAQ,CAAA,GAAAC,YAAA,CAAAT,CAAA,uCAAAQ,CAAA,GAAAA,CAAA,GAAAA,CAAA;AAAA,SAAAC,aAAAT,CAAA,EAAAD,CAAA,2BAAAC,CAAA,KAAAA,CAAA,SAAAA,CAAA,MAAAF,CAAA,GAAAE,CAAA,CAAAU,MAAA,CAAAC,WAAA,kBAAAb,CAAA,QAAAU,CAAA,GAAAV,CAAA,CAAAc,IAAA,CAAAZ,CAAA,EAAAD,CAAA,uCAAAS,CAAA,SAAAA,CAAA,YAAAK,SAAA,yEAAAd,CAAA,GAAAe,MAAA,GAAAC,MAAA,EAAAf,CAAA;AACzD;AACA;AACA;AAFA,IAGYgB,WAAW,GAAAC,OAAA,CAAAD,WAAA,0BAAXA,WAAW;EAAXA,WAAW,CAAXA,WAAW;EAAXA,WAAW,CAAXA,WAAW;EAAXA,WAAW,CAAXA,WAAW;EAAXA,WAAW,CAAXA,WAAW;EAAXA,WAAW,CAAXA,WAAW;EAAA,OAAXA,WAAW;AAAA;AAOvB;AACA;AACA;AAFA,IAGYE,iBAAiB,GAAAD,OAAA,CAAAC,iBAAA,0BAAjBA,iBAAiB;EAAjBA,iBAAiB,CAAjBA,iBAAiB;EAAjBA,iBAAiB,CAAjBA,iBAAiB;EAAA,OAAjBA,iBAAiB;AAAA;AAI7B;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AAwCA,MAAMC,uBAAuB,CAAC;EAAAC,YAAA;IAC5B;IAAAvB,eAAA,iBAEED,OAAO,CAAC,gCAAgC,CAAC,CAACyB,OAAO;EAAA;EACnD;;EAEA;AACF;AACA;EACEC,SAASA,CAACC,MAAmB,EAAiB;IAC5C,OAAO,IAAI,CAACC,MAAM,CAACF,SAAS,CAACC,MAAM,CAAC;EACtC;;EAEA;AACF;AACA;AACA;AACA;AACA;EACEE,OAAOA,CACLC,OAAe,EACfC,SAA+B,EAC/BC,QAAiB,EACF;IACf;IACA,MAAMC,gBAAgB,GACpBC,qCAAoB,CAACC,4BAA4B,CAACH,QAAQ,CAAC;IAE7D,IAAI,OAAOD,SAAS,KAAK,QAAQ,EAAE;MACjC,OAAO,IAAI,CAACH,MAAM,CAACQ,mBAAmB,CACpCN,OAAO,EACPC,SAAS,CAACM,QAAQ,CAAC,CAAC,EACpBJ,gBACF,CAAC;IACH;IACA,IAAIK,aAA0B,GAAGP,SAAwB;IACzD,OAAO,IAAI,CAACH,MAAM,CAACC,OAAO,CAACC,OAAO,EAAEQ,aAAa,EAAEL,gBAAgB,CAAC;EACtE;AACF;AACO,MAAMM,gBAAyC,GAAAlB,OAAA,CAAAkB,gBAAA,GACpD,IAAIhB,uBAAuB,CAAC,CAAC","ignoreList":[]}