@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.
- package/FTMobileReactNativeSDK.podspec +32 -3
- package/android/build.gradle +7 -19
- package/android/src/main/java/com/ft/sdk/reactnative/FTMobileImpl.java +434 -5
- package/android/src/main/java/com/ft/sdk/reactnative/FTRUMImpl.java +12 -0
- package/android/src/newarch/java/com/ft/sdk/reactnative/FTLogModule.java +7 -14
- package/android/src/newarch/java/com/ft/sdk/reactnative/FTMobileModule.java +46 -12
- package/android/src/newarch/java/com/ft/sdk/reactnative/FTRUMModule.java +12 -13
- package/android/src/newarch/java/com/ft/sdk/reactnative/FTTraceModule.java +6 -8
- package/android/src/oldarch/java/com/ft/sdk/reactnative/FTMobileModule.java +34 -2
- package/android/src/rnpost74/java/com/ft/sdk/reactnative/FTMobilePackage.java +14 -3
- package/android/src/rnpre74/java/com/ft/sdk/reactnative/FTMobilePackage.java +0 -3
- package/ios/FTMobileReactNative.h +9 -5
- package/ios/FTMobileReactNative.mm +619 -0
- package/ios/FTReactNativeLog.h +8 -3
- package/ios/FTReactNativeLog.mm +79 -0
- package/ios/FTReactNativeRUM.h +8 -3
- package/ios/{FTReactNativeRUM.m → FTReactNativeRUM.mm} +143 -84
- package/ios/FTReactNativeTrace.h +8 -2
- package/ios/FTReactNativeTrace.mm +74 -0
- package/ios/FtMobileAgent.xcodeproj/project.pbxproj +17 -1
- package/lib/commonjs/ft_logger.js +14 -13
- package/lib/commonjs/ft_logger.js.map +1 -1
- package/lib/commonjs/ft_mobile_agent.js +153 -6
- package/lib/commonjs/ft_mobile_agent.js.map +1 -1
- package/lib/commonjs/ft_rum.js +55 -21
- package/lib/commonjs/ft_rum.js.map +1 -1
- package/lib/commonjs/ft_tracing.js +29 -10
- package/lib/commonjs/ft_tracing.js.map +1 -1
- package/lib/commonjs/index.js +24 -13
- package/lib/commonjs/index.js.map +1 -1
- package/lib/commonjs/rum/FTRumActionTracking.js +10 -4
- package/lib/commonjs/rum/FTRumActionTracking.js.map +1 -1
- package/lib/commonjs/rum/FTRumErrorTracking.js +4 -4
- package/lib/commonjs/rum/FTRumErrorTracking.js.map +1 -1
- package/lib/commonjs/specs/NativeFTMobileReactNative.js +10 -0
- package/lib/commonjs/specs/NativeFTMobileReactNative.js.map +1 -0
- package/lib/commonjs/specs/NativeFTReactNativeLog.js +10 -0
- package/lib/commonjs/specs/NativeFTReactNativeLog.js.map +1 -0
- package/lib/commonjs/specs/NativeFTReactNativeRUM.js +10 -0
- package/lib/commonjs/specs/NativeFTReactNativeRUM.js.map +1 -0
- package/lib/commonjs/specs/NativeFTReactNativeTrace.js +10 -0
- package/lib/commonjs/specs/NativeFTReactNativeTrace.js.map +1 -0
- package/lib/commonjs/version.js +1 -1
- package/lib/commonjs/version.js.map +1 -1
- package/lib/module/ft_logger.js +14 -12
- package/lib/module/ft_logger.js.map +1 -1
- package/lib/module/ft_mobile_agent.js +159 -5
- package/lib/module/ft_mobile_agent.js.map +1 -1
- package/lib/module/ft_rum.js +54 -16
- package/lib/module/ft_rum.js.map +1 -1
- package/lib/module/ft_tracing.js +29 -9
- package/lib/module/ft_tracing.js.map +1 -1
- package/lib/module/index.js +3 -4
- package/lib/module/index.js.map +1 -1
- package/lib/module/rum/FTRumActionTracking.js +10 -4
- package/lib/module/rum/FTRumActionTracking.js.map +1 -1
- package/lib/module/rum/FTRumErrorTracking.js +4 -4
- package/lib/module/rum/FTRumErrorTracking.js.map +1 -1
- package/lib/module/specs/NativeFTMobileReactNative.js +5 -0
- package/lib/module/specs/NativeFTMobileReactNative.js.map +1 -0
- package/lib/module/specs/NativeFTReactNativeLog.js +5 -0
- package/lib/module/specs/NativeFTReactNativeLog.js.map +1 -0
- package/lib/module/specs/NativeFTReactNativeRUM.js +5 -0
- package/lib/module/specs/NativeFTReactNativeRUM.js.map +1 -0
- package/lib/module/specs/NativeFTReactNativeTrace.js +5 -0
- package/lib/module/specs/NativeFTReactNativeTrace.js.map +1 -0
- package/lib/module/version.js +1 -1
- package/lib/module/version.js.map +1 -1
- package/lib/typescript/ft_logger.d.ts +6 -6
- package/lib/typescript/ft_mobile_agent.d.ts +165 -14
- package/lib/typescript/ft_rum.d.ts +32 -8
- package/lib/typescript/ft_tracing.d.ts +6 -6
- package/lib/typescript/index.d.ts +3 -4
- package/lib/typescript/specs/NativeFTMobileReactNative.d.ts +75 -0
- package/lib/typescript/specs/NativeFTReactNativeLog.d.ts +23 -0
- package/lib/typescript/specs/NativeFTReactNativeRUM.d.ts +89 -0
- package/lib/typescript/specs/NativeFTReactNativeTrace.d.ts +24 -0
- package/lib/typescript/version.d.ts +1 -1
- package/package.json +29 -96
- package/scripts/replace-react-require.js +37 -38
- package/src/ft_logger.tsx +72 -40
- package/src/ft_mobile_agent.tsx +374 -91
- package/src/ft_rum.tsx +227 -121
- package/src/ft_tracing.tsx +58 -37
- package/src/index.tsx +58 -18
- package/src/rum/FTRumActionTracking.tsx +212 -204
- package/src/rum/FTRumErrorTracking.tsx +70 -71
- package/src/specs/NativeFTMobileReactNative.ts +83 -0
- package/src/specs/NativeFTReactNativeLog.ts +29 -0
- package/src/specs/NativeFTReactNativeRUM.ts +104 -0
- package/src/specs/NativeFTReactNativeTrace.ts +26 -0
- package/src/version.ts +1 -1
- package/LICENSE +0 -201
- package/android/.project +0 -17
- package/android/.settings/org.eclipse.buildship.core.prefs +0 -13
- package/android/gradlew +0 -185
- package/android/local.properties +0 -8
- package/android/src/main/java/com/ft/sdk/InnerClassProxy.java +0 -8
- package/android/src/main/java/com/ft/sdk/reactnative/FTSessionReplayImpl.java +0 -60
- package/android/src/main/java/com/ft/sdk/reactnative/extensions/ReactDrawablesExt.java +0 -155
- package/android/src/main/java/com/ft/sdk/reactnative/sessionreplay/NoopTextPropertiesResolver.java +0 -23
- package/android/src/main/java/com/ft/sdk/reactnative/sessionreplay/ReactNativeSessionReplayExtensionSupport.java +0 -57
- package/android/src/main/java/com/ft/sdk/reactnative/sessionreplay/ShadowNodeWrapper.java +0 -84
- package/android/src/main/java/com/ft/sdk/reactnative/sessionreplay/TextPropertiesResolver.java +0 -20
- package/android/src/main/java/com/ft/sdk/reactnative/sessionreplay/mappers/DefaultMapper.java +0 -78
- package/android/src/main/java/com/ft/sdk/reactnative/sessionreplay/mappers/Pair.java +0 -11
- package/android/src/main/java/com/ft/sdk/reactnative/sessionreplay/mappers/ReactEditTextMapper.java +0 -136
- package/android/src/main/java/com/ft/sdk/reactnative/sessionreplay/mappers/ReactNativeImageViewMapper.java +0 -117
- package/android/src/main/java/com/ft/sdk/reactnative/sessionreplay/mappers/ReactTextMapper.java +0 -57
- package/android/src/main/java/com/ft/sdk/reactnative/sessionreplay/mappers/ReactViewGroupMapper.java +0 -22
- package/android/src/main/java/com/ft/sdk/reactnative/sessionreplay/mappers/ReactViewModalMapper.java +0 -21
- package/android/src/main/java/com/ft/sdk/reactnative/sessionreplay/resources/ReactDrawableCopier.java +0 -35
- package/android/src/main/java/com/ft/sdk/reactnative/sessionreplay/utils/DrawableUtils.java +0 -34
- package/android/src/main/java/com/ft/sdk/reactnative/sessionreplay/utils/ReflectionUtils.java +0 -43
- package/android/src/main/java/com/ft/sdk/reactnative/sessionreplay/utils/text/FabricTextViewUtils.java +0 -69
- package/android/src/main/java/com/ft/sdk/reactnative/sessionreplay/utils/text/LegacyTextViewUtils.java +0 -97
- package/android/src/main/java/com/ft/sdk/reactnative/sessionreplay/utils/text/TextViewUtils.java +0 -184
- package/android/src/main/java/com/ft/sdk/reactnative/utils/ColorUtils.java +0 -24
- package/android/src/newarch/java/com/ft/sdk/reactnative/FTSessionReplayModule.java +0 -30
- package/android/src/oldarch/java/com/ft/sdk/reactnative/FTSessionReplayModule.java +0 -25
- package/android/src/rn69/java/com/ft/sdk/reactnative/sessionreplay/utils/ReactViewBackgroundDrawableUtils.java +0 -100
- package/android/src/rn75/java/com/ft/sdk/reactnative/sessionreplay/extensions/LengthPercentageExt.java +0 -27
- package/android/src/rn75/java/com/ft/sdk/reactnative/sessionreplay/utils/ReactViewBackgroundDrawableUtils.java +0 -116
- package/android/src/rn76/java/com/ft/sdk/reactnative/sessionreplay/extensions/LengthPercentageExt.java +0 -38
- package/android/src/rn76/java/com/ft/sdk/reactnative/sessionreplay/utils/ReactViewBackgroundDrawableUtils.java +0 -117
- package/android/src/rn79/java/com/ft/sdk/reactnative/sessionreplay/extensions/LengthPercentageExt.java +0 -38
- package/android/src/rn79/java/com/ft/sdk/reactnative/sessionreplay/utils/ReactViewBackgroundDrawableUtils.java +0 -132
- package/android/src/rn80/java/com/ft/sdk/reactnative/sessionreplay/extensions/ComputedBorderRadiusExt.java +0 -58
- package/android/src/rn80/java/com/ft/sdk/reactnative/sessionreplay/utils/ReactViewBackgroundDrawableUtils.java +0 -190
- package/android/src/rnlegacy/java/com/ft/sdk/reactnative/sessionreplay/utils/ReactViewBackgroundDrawableUtils.java +0 -120
- package/ios/.idea/.name +0 -1
- package/ios/.idea/ios.iml +0 -2
- package/ios/.idea/modules.xml +0 -8
- package/ios/.idea/vcs.xml +0 -6
- package/ios/.idea/xcode.xml +0 -4
- package/ios/FTMobileReactNative.m +0 -184
- package/ios/FTRCTTextViewRecorder.h +0 -33
- package/ios/FTRCTTextViewRecorder.m +0 -120
- package/ios/FTReactNativeLog.m +0 -60
- package/ios/FTReactNativeSessionReplay.h +0 -6
- package/ios/FTReactNativeSessionReplay.mm +0 -44
- package/ios/FTReactNativeTrace.m +0 -56
- package/ios/FtMobileAgent.xcodeproj/project.xcworkspace/contents.xcworkspacedata +0 -4
- package/ios/FtMobileAgent.xcodeproj/project.xcworkspace/xcuserdata/Brandon.xcuserdatad/UserInterfaceState.xcuserstate +0 -0
- package/ios/FtMobileAgent.xcodeproj/project.xcworkspace/xcuserdata/Brandon.xcuserdatad/xcschemes/xcschememanagement.plist +0 -5
- package/ios/FtMobileAgent.xcodeproj/xcuserdata/Brandon.xcuserdatad/xcschemes/FtMobileAgent.xcscheme +0 -56
- package/ios/FtMobileAgent.xcodeproj/xcuserdata/Brandon.xcuserdatad/xcschemes/xcschememanagement.plist +0 -14
- package/ios/RCTVersion.h +0 -8
- package/lib/commonjs/ft_session_replay.js +0 -34
- package/lib/commonjs/ft_session_replay.js.map +0 -1
- package/lib/module/ft_session_replay.js +0 -29
- package/lib/module/ft_session_replay.js.map +0 -1
- package/lib/typescript/ft_session_replay.d.ts +0 -27
- 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
|
+
|
package/ios/FTReactNativeRUM.h
CHANGED
|
@@ -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
|
-
|
|
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
|
-
|
|
82
|
-
|
|
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
|
-
|
|
89
|
-
|
|
90
|
-
|
|
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
|
-
|
|
96
|
-
|
|
97
|
-
|
|
98
|
-
|
|
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
|
-
|
|
138
|
-
|
|
139
|
-
|
|
140
|
-
|
|
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
|
-
|
|
171
|
-
|
|
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
|
package/ios/FTReactNativeTrace.h
CHANGED
|
@@ -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
|
-
|
|
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
|
-
|
|
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
|
|
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
|
-
|
|
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
|
-
|
|
57
|
-
|
|
58
|
-
|
|
59
|
-
|
|
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(),
|
|
64
|
+
return this.logger.logWithStatusString(content, logStatus.toString(), mergedProperties);
|
|
64
65
|
}
|
|
65
66
|
let enumLogStatus = logStatus;
|
|
66
|
-
return this.logger.logging(content, enumLogStatus,
|
|
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":["
|
|
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":[]}
|