@truewatchtech/react-native-mobile 0.3.15-alpha.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 (102) hide show
  1. package/FTMobileReactNativeSDK.podspec +22 -0
  2. package/LICENSE +201 -0
  3. package/README.md +37 -0
  4. package/android/.project +17 -0
  5. package/android/.settings/org.eclipse.buildship.core.prefs +13 -0
  6. package/android/build.gradle +183 -0
  7. package/android/gradle/wrapper/gradle-wrapper.jar +0 -0
  8. package/android/gradle/wrapper/gradle-wrapper.properties +5 -0
  9. package/android/gradle.properties +5 -0
  10. package/android/gradlew +185 -0
  11. package/android/gradlew.bat +89 -0
  12. package/android/local.properties +8 -0
  13. package/android/src/main/AndroidManifest.xml +4 -0
  14. package/android/src/main/AndroidManifestNew.xml +4 -0
  15. package/android/src/main/java/com/ft/sdk/InnerClassProxy.java +8 -0
  16. package/android/src/main/java/com/ft/sdk/reactnative/FTLogImpl.java +133 -0
  17. package/android/src/main/java/com/ft/sdk/reactnative/FTMobileImpl.java +198 -0
  18. package/android/src/main/java/com/ft/sdk/reactnative/FTRUMImpl.java +267 -0
  19. package/android/src/main/java/com/ft/sdk/reactnative/FTTraceImpl.java +89 -0
  20. package/android/src/main/java/com/ft/sdk/reactnative/utils/ReactNativeUtils.java +59 -0
  21. package/android/src/newarch/java/com/ft/sdk/reactnative/FTLogModule.java +39 -0
  22. package/android/src/newarch/java/com/ft/sdk/reactnative/FTMobileModule.java +69 -0
  23. package/android/src/newarch/java/com/ft/sdk/reactnative/FTRUMModule.java +84 -0
  24. package/android/src/newarch/java/com/ft/sdk/reactnative/FTTraceModule.java +34 -0
  25. package/android/src/oldarch/java/com/ft/sdk/reactnative/FTLogModule.java +36 -0
  26. package/android/src/oldarch/java/com/ft/sdk/reactnative/FTMobileModule.java +69 -0
  27. package/android/src/oldarch/java/com/ft/sdk/reactnative/FTRUMModule.java +70 -0
  28. package/android/src/oldarch/java/com/ft/sdk/reactnative/FTTraceModule.java +30 -0
  29. package/android/src/rnpost74/java/com/ft/sdk/reactnative/FTMobilePackage.java +71 -0
  30. package/android/src/rnpre74/java/com/ft/sdk/reactnative/FTMobilePackage.java +33 -0
  31. package/ios/.idea/.name +1 -0
  32. package/ios/.idea/ios.iml +2 -0
  33. package/ios/.idea/modules.xml +8 -0
  34. package/ios/.idea/vcs.xml +6 -0
  35. package/ios/.idea/xcode.xml +4 -0
  36. package/ios/FTMobileReactNative.h +18 -0
  37. package/ios/FTMobileReactNative.m +183 -0
  38. package/ios/FTReactNativeLog.h +18 -0
  39. package/ios/FTReactNativeLog.m +60 -0
  40. package/ios/FTReactNativeRUM.h +19 -0
  41. package/ios/FTReactNativeRUM.m +173 -0
  42. package/ios/FTReactNativeTrace.h +20 -0
  43. package/ios/FTReactNativeTrace.m +58 -0
  44. package/ios/FTReactNativeUtils.h +16 -0
  45. package/ios/FTReactNativeUtils.m +32 -0
  46. package/ios/FtMobileAgent.xcodeproj/project.pbxproj +293 -0
  47. package/ios/FtMobileAgent.xcodeproj/project.xcworkspace/contents.xcworkspacedata +4 -0
  48. package/ios/FtMobileAgent.xcodeproj/project.xcworkspace/xcuserdata/Brandon.xcuserdatad/UserInterfaceState.xcuserstate +0 -0
  49. package/ios/FtMobileAgent.xcodeproj/project.xcworkspace/xcuserdata/Brandon.xcuserdatad/xcschemes/xcschememanagement.plist +5 -0
  50. package/ios/FtMobileAgent.xcodeproj/xcuserdata/Brandon.xcuserdatad/xcschemes/FtMobileAgent.xcscheme +56 -0
  51. package/ios/FtMobileAgent.xcodeproj/xcuserdata/Brandon.xcuserdatad/xcschemes/xcschememanagement.plist +14 -0
  52. package/ios/RCTVersion.h +8 -0
  53. package/lib/commonjs/ft_logger.js +70 -0
  54. package/lib/commonjs/ft_logger.js.map +1 -0
  55. package/lib/commonjs/ft_mobile_agent.js +93 -0
  56. package/lib/commonjs/ft_mobile_agent.js.map +1 -0
  57. package/lib/commonjs/ft_rum.js +143 -0
  58. package/lib/commonjs/ft_rum.js.map +1 -0
  59. package/lib/commonjs/ft_tracing.js +61 -0
  60. package/lib/commonjs/ft_tracing.js.map +1 -0
  61. package/lib/commonjs/index.js +138 -0
  62. package/lib/commonjs/index.js.map +1 -0
  63. package/lib/commonjs/rum/FTRumActionTracking.js +214 -0
  64. package/lib/commonjs/rum/FTRumActionTracking.js.map +1 -0
  65. package/lib/commonjs/rum/FTRumErrorTracking.js +99 -0
  66. package/lib/commonjs/rum/FTRumErrorTracking.js.map +1 -0
  67. package/lib/commonjs/version.js +9 -0
  68. package/lib/commonjs/version.js.map +1 -0
  69. package/lib/module/ft_logger.js +64 -0
  70. package/lib/module/ft_logger.js.map +1 -0
  71. package/lib/module/ft_mobile_agent.js +88 -0
  72. package/lib/module/ft_mobile_agent.js.map +1 -0
  73. package/lib/module/ft_rum.js +138 -0
  74. package/lib/module/ft_rum.js.map +1 -0
  75. package/lib/module/ft_tracing.js +56 -0
  76. package/lib/module/ft_tracing.js.map +1 -0
  77. package/lib/module/index.js +8 -0
  78. package/lib/module/index.js.map +1 -0
  79. package/lib/module/rum/FTRumActionTracking.js +206 -0
  80. package/lib/module/rum/FTRumActionTracking.js.map +1 -0
  81. package/lib/module/rum/FTRumErrorTracking.js +92 -0
  82. package/lib/module/rum/FTRumErrorTracking.js.map +1 -0
  83. package/lib/module/version.js +3 -0
  84. package/lib/module/version.js.map +1 -0
  85. package/lib/typescript/ft_logger.d.ts +52 -0
  86. package/lib/typescript/ft_mobile_agent.d.ts +123 -0
  87. package/lib/typescript/ft_rum.d.ts +200 -0
  88. package/lib/typescript/ft_tracing.d.ts +47 -0
  89. package/lib/typescript/index.d.ts +7 -0
  90. package/lib/typescript/rum/FTRumActionTracking.d.ts +15 -0
  91. package/lib/typescript/rum/FTRumErrorTracking.d.ts +11 -0
  92. package/lib/typescript/version.d.ts +1 -0
  93. package/package.json +167 -0
  94. package/scripts/replace-react-require.js +52 -0
  95. package/src/ft_logger.tsx +77 -0
  96. package/src/ft_mobile_agent.tsx +162 -0
  97. package/src/ft_rum.tsx +247 -0
  98. package/src/ft_tracing.tsx +79 -0
  99. package/src/index.tsx +17 -0
  100. package/src/rum/FTRumActionTracking.tsx +232 -0
  101. package/src/rum/FTRumErrorTracking.tsx +110 -0
  102. package/src/version.ts +2 -0
@@ -0,0 +1,214 @@
1
+ "use strict";
2
+
3
+ Object.defineProperty(exports, "__esModule", {
4
+ value: true
5
+ });
6
+ exports.FTRumActionTracking = void 0;
7
+ var _react = _interopRequireDefault(require("react"));
8
+ var _ft_rum = require("../ft_rum");
9
+ var _FTRumActionTracking;
10
+ function _interopRequireDefault(e) { return e && e.__esModule ? e : { default: e }; }
11
+ 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; }
12
+ function _toPropertyKey(t) { var i = _toPrimitive(t, "string"); return "symbol" == typeof i ? i : i + ""; }
13
+ 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); }
14
+ const FT_ENABLE_TRACK = 'ft-enable-track';
15
+ const FT_EXTRA_PROPERTY = 'ft-extra-property';
16
+ class FTRumActionTracking {
17
+ static startTracking() {
18
+ if (FTRumActionTracking.isTracking) {
19
+ return;
20
+ }
21
+ const original = _react.default.createElement;
22
+ _react.default.createElement = (...args) => {
23
+ return this.patchCreateElementFunction(original, args);
24
+ };
25
+ try {
26
+ const jsxRuntime = getJsxRuntime();
27
+ const originaljsx = jsxRuntime.jsx;
28
+ this.originalJsx = originaljsx;
29
+ jsxRuntime.jsx = (...args) => {
30
+ return this.patchCreateElementFunction(originaljsx, args);
31
+ };
32
+ } catch (e) {}
33
+ const originalMemo = _react.default.memo;
34
+ _react.default.memo = (component, propsAreEqual) => {
35
+ return originalMemo(component, (prev, next) => {
36
+ if (!next.onPress || !prev.onPress) {
37
+ return propsAreEqual ? propsAreEqual(prev, next) : areObjectShallowEqual(prev, next);
38
+ }
39
+ const {
40
+ onPress: _prevOnPress,
41
+ ...partialPrevProps
42
+ } = prev;
43
+ const prevProps = {
44
+ ...partialPrevProps,
45
+ onPress: prev.__FT_INTERNAL_ORIGINAL_ON_PRESS__
46
+ };
47
+ const {
48
+ onPress: _nextOnPress,
49
+ ...partialNextProps
50
+ } = next;
51
+ const nextProps = {
52
+ ...partialNextProps,
53
+ onPress: next.__FT_INTERNAL_ORIGINAL_ON_PRESS__
54
+ };
55
+ return propsAreEqual ? propsAreEqual(prevProps, nextProps) : areObjectShallowEqual(nextProps, prevProps);
56
+ });
57
+ };
58
+ FTRumActionTracking.isTracking = true;
59
+ }
60
+ static stopTracking() {
61
+ _react.default.createElement = this.originalCreateElement;
62
+ _react.default.memo = this.originalMemo;
63
+ FTRumActionTracking.isTracking = false;
64
+ if (this.originalJsx) {
65
+ const jsxRuntime = getJsxRuntime();
66
+ jsxRuntime.jsx = this.originalJsx;
67
+ this.originalJsx = null;
68
+ }
69
+ }
70
+ static interceptOnPress(...args) {
71
+ if (args.length > 0 && args[0] && args[0]._targetInst) {
72
+ const currentTime = Date.now();
73
+ const timestampDifference = Math.abs(Date.now() - FTRumActionTracking.preActionTimestamp);
74
+ if (timestampDifference > 10) {
75
+ const targetNode = args[0]._targetInst;
76
+ this.handleTargetEvent(targetNode);
77
+ FTRumActionTracking.preActionTimestamp = currentTime;
78
+ }
79
+ }
80
+ }
81
+ static handleTargetEvent(targetNode) {
82
+ if (targetNode) {
83
+ const enable = FTRumActionTracking.findActionEnableTrack(targetNode);
84
+ if (enable) {
85
+ const extraProperty = FTRumActionTracking.findActionProperty(targetNode);
86
+ const elementTypeName = FTRumActionTracking.resolveActionName(targetNode);
87
+ if (elementTypeName) {
88
+ let jsonObject = null;
89
+ if (extraProperty) {
90
+ try {
91
+ jsonObject = JSON.parse(extraProperty);
92
+ } catch (error) {
93
+ console.warn(`Error parsing JSON string ${extraProperty}:`, error);
94
+ }
95
+ }
96
+ if (jsonObject) {
97
+ _ft_rum.FTReactNativeRUM.startAction(elementTypeName, 'click', jsonObject);
98
+ } else {
99
+ _ft_rum.FTReactNativeRUM.startAction(elementTypeName, 'click');
100
+ }
101
+ }
102
+ }
103
+ }
104
+ }
105
+ static resolveActionName(targetNode) {
106
+ var _targetNode$memoizedP, _targetNode$memoizedP2, _targetNode$memoizedP3;
107
+ const accessibilityLabel = (_targetNode$memoizedP = targetNode.memoizedProps) === null || _targetNode$memoizedP === void 0 ? void 0 : _targetNode$memoizedP.accessibilityLabel;
108
+ if (accessibilityLabel != null) {
109
+ return accessibilityLabel;
110
+ }
111
+ const accessibilityRole = (_targetNode$memoizedP2 = targetNode.memoizedProps) === null || _targetNode$memoizedP2 === void 0 ? void 0 : _targetNode$memoizedP2.accessibilityRole;
112
+ let subTitle = '';
113
+ let children = (_targetNode$memoizedP3 = targetNode.memoizedProps) === null || _targetNode$memoizedP3 === void 0 ? void 0 : _targetNode$memoizedP3.children;
114
+ while (children) {
115
+ if (Array.isArray(children) && children.length > 0 && children[0]) {
116
+ children = children[0];
117
+ } else if (typeof children === 'object' && children.props && children.props.children) {
118
+ children = children.props.children;
119
+ } else if (typeof children === 'string') {
120
+ subTitle = children;
121
+ children = null;
122
+ } else {
123
+ children = null;
124
+ }
125
+ }
126
+ let elementTypeName = accessibilityRole;
127
+ if (!accessibilityRole) {
128
+ let elementType = targetNode.elementType;
129
+ if (typeof elementType === "string") {
130
+ elementTypeName = elementType;
131
+ } else if (elementType && typeof elementType.name === "string") {
132
+ elementTypeName = elementType.name;
133
+ }
134
+ }
135
+ if (elementTypeName) {
136
+ return '[' + elementTypeName + ']' + subTitle;
137
+ }
138
+ return null;
139
+ }
140
+ static findActionProperty(targetNode) {
141
+ let currentNode = targetNode;
142
+ while (currentNode) {
143
+ const props = currentNode.memoizedProps;
144
+ if (props && props[FT_EXTRA_PROPERTY]) {
145
+ return props[FT_EXTRA_PROPERTY];
146
+ }
147
+ currentNode = currentNode.return;
148
+ }
149
+ return null;
150
+ }
151
+ static findActionEnableTrack(targetNode) {
152
+ let currentNode = targetNode;
153
+ let enable = true;
154
+ while (currentNode) {
155
+ const props = currentNode.memoizedProps;
156
+ if (props && props[FT_ENABLE_TRACK]) {
157
+ enable = props[FT_ENABLE_TRACK] == "true";
158
+ break;
159
+ }
160
+ currentNode = currentNode.return;
161
+ }
162
+ return enable;
163
+ }
164
+ }
165
+ exports.FTRumActionTracking = FTRumActionTracking;
166
+ _FTRumActionTracking = FTRumActionTracking;
167
+ _defineProperty(FTRumActionTracking, "isTracking", false);
168
+ _defineProperty(FTRumActionTracking, "preActionTimestamp", Number.MIN_VALUE);
169
+ _defineProperty(FTRumActionTracking, "originalMemo", _react.default.memo);
170
+ _defineProperty(FTRumActionTracking, "originalJsx", null);
171
+ _defineProperty(FTRumActionTracking, "originalCreateElement", _react.default.createElement);
172
+ _defineProperty(FTRumActionTracking, "patchCreateElementFunction", (originalFunction, [element, props, ...rest]) => {
173
+ if (props && typeof props.onPress === 'function') {
174
+ const originalOnPress = props // eslint-disable-next-line @typescript-eslint/ban-types
175
+ .onPress;
176
+ props.onPress = (...args) => {
177
+ _FTRumActionTracking.interceptOnPress(...args);
178
+ return originalOnPress(...args);
179
+ };
180
+ props.__FT_INTERNAL_ORIGINAL_ON_PRESS__ = originalOnPress;
181
+ }
182
+ return originalFunction(element, props, ...rest);
183
+ });
184
+ const areObjectShallowEqual = (objectA, objectB) => {
185
+ if (!objectA || !objectB) {
186
+ return objectA === objectB;
187
+ }
188
+ const keys = Object.keys(objectA);
189
+ if (keys.length !== Object.keys(objectB).length) {
190
+ return false;
191
+ }
192
+ for (const key of keys) {
193
+ if (objectA[key] !== objectB[key]) {
194
+ return false;
195
+ }
196
+ }
197
+ return true;
198
+ };
199
+ const getJsxRuntime = () => {
200
+ // eslint-disable-next-line global-require, @typescript-eslint/no-var-requires
201
+ const [major, minor] = require('react/package.json').version.split('.');
202
+ // JSX Transform applies to > 16.14.0
203
+ if (Number(major) <= 16 && Number(minor) < 14) {
204
+ throw new Error('React version does not support new jsx transform');
205
+ }
206
+
207
+ // eslint-disable-next-line global-require, @typescript-eslint/no-var-requires
208
+ const jsxRuntime = require('react/jsx-runtime');
209
+ if (!jsxRuntime.jsx) {
210
+ throw new Error('React jsx runtime does not export new jsx transform');
211
+ }
212
+ return jsxRuntime;
213
+ };
214
+ //# sourceMappingURL=FTRumActionTracking.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"names":["_react","_interopRequireDefault","require","_ft_rum","_FTRumActionTracking","e","__esModule","default","_defineProperty","r","t","_toPropertyKey","Object","defineProperty","value","enumerable","configurable","writable","i","_toPrimitive","Symbol","toPrimitive","call","TypeError","String","Number","FT_ENABLE_TRACK","FT_EXTRA_PROPERTY","FTRumActionTracking","startTracking","isTracking","original","React","createElement","args","patchCreateElementFunction","jsxRuntime","getJsxRuntime","originaljsx","jsx","originalJsx","originalMemo","memo","component","propsAreEqual","prev","next","onPress","areObjectShallowEqual","_prevOnPress","partialPrevProps","prevProps","__FT_INTERNAL_ORIGINAL_ON_PRESS__","_nextOnPress","partialNextProps","nextProps","stopTracking","originalCreateElement","interceptOnPress","length","_targetInst","currentTime","Date","now","timestampDifference","Math","abs","preActionTimestamp","targetNode","handleTargetEvent","enable","findActionEnableTrack","extraProperty","findActionProperty","elementTypeName","resolveActionName","jsonObject","JSON","parse","error","console","warn","FTReactNativeRUM","startAction","_targetNode$memoizedP","_targetNode$memoizedP2","_targetNode$memoizedP3","accessibilityLabel","memoizedProps","accessibilityRole","subTitle","children","Array","isArray","props","elementType","name","currentNode","return","exports","MIN_VALUE","originalFunction","element","rest","originalOnPress","objectA","objectB","keys","key","major","minor","version","split","Error"],"sources":["FTRumActionTracking.tsx"],"sourcesContent":["import React from 'react'\nimport { FTReactNativeRUM } from '../ft_rum';\nconst FT_ENABLE_TRACK = 'ft-enable-track';\nconst FT_EXTRA_PROPERTY = 'ft-extra-property';\nexport class FTRumActionTracking {\n\tprivate static isTracking = false\n\tprivate static preActionTimestamp = Number.MIN_VALUE;\n\tprivate static originalMemo = React.memo;\n private static originalJsx = null;\n private static originalCreateElement = React.createElement;\n\n\tprivate static patchCreateElementFunction = (\n originalFunction: typeof React.createElement,\n [element, props, ...rest]: Parameters<typeof React.createElement>\n ): ReturnType<typeof React.createElement> => {\n if (\n props &&\n typeof (props as Record<string, unknown>).onPress === 'function'\n ) {\n const originalOnPress = (props as Record<string, unknown>) // eslint-disable-next-line @typescript-eslint/ban-types\n .onPress as Function;\n (props as Record<string, unknown>).onPress = (...args: any[]) => {\n FTRumActionTracking.interceptOnPress(\n ...args\n );\n return originalOnPress(...args);\n };\n \n (props as Record<\n string,\n unknown\n >).__FT_INTERNAL_ORIGINAL_ON_PRESS__ = originalOnPress;\n }\n return originalFunction(element, props, ...rest);\n };\n\tstatic startTracking(): void {\n\t\tif (FTRumActionTracking.isTracking) {\n\t\t\treturn\n\t\t}\n\t\tconst original = React.createElement\n\t\tReact.createElement = (\n ...args: Parameters<typeof React.createElement>\n ): any => {\n return this.patchCreateElementFunction(original, args);\n };\n try {\n const jsxRuntime = getJsxRuntime();\n const originaljsx = jsxRuntime.jsx;\n this.originalJsx = originaljsx;\n jsxRuntime.jsx = (\n ...args: Parameters<typeof React.createElement>\n ): ReturnType<typeof React.createElement> => {\n return this.patchCreateElementFunction(originaljsx, args);\n };\n } catch (e) {\n \n }\n\n const originalMemo = React.memo;\n React.memo = (\n component: any,\n propsAreEqual?: (prevProps: any, newProps: any) => boolean\n ) => {\n return originalMemo(component, (prev, next) => {\n if (!next.onPress || !prev.onPress) {\n return propsAreEqual\n ? propsAreEqual(prev, next)\n : areObjectShallowEqual(prev, next);\n }\n\n\t\t\t\tconst { onPress: _prevOnPress, ...partialPrevProps } = prev;\n const prevProps = {\n ...partialPrevProps,\n onPress: prev.__FT_INTERNAL_ORIGINAL_ON_PRESS__\n };\n\n const { onPress: _nextOnPress, ...partialNextProps } = next;\n const nextProps = {\n ...partialNextProps,\n onPress: next.__FT_INTERNAL_ORIGINAL_ON_PRESS__\n };\n\n return propsAreEqual\n ? propsAreEqual(prevProps, nextProps)\n : areObjectShallowEqual(nextProps, prevProps);\n });\n };\n\t\tFTRumActionTracking.isTracking = true\n\t}\n\tstatic stopTracking() {\n React.createElement = this.originalCreateElement;\n React.memo = this.originalMemo;\n FTRumActionTracking.isTracking = false;\n if (this.originalJsx) {\n const jsxRuntime = getJsxRuntime();\n jsxRuntime.jsx = this.originalJsx;\n this.originalJsx = null;\n }\n }\n\n\tprivate static interceptOnPress(...args: any[]): void {\n\t\tif (args.length > 0 && args[0] && args[0]._targetInst) {\n\t\t\tconst currentTime = Date.now()\n\t\t\tconst timestampDifference = Math.abs(Date.now() - FTRumActionTracking.preActionTimestamp)\n\t\t\tif (timestampDifference > 10) {\n\t\t\t\tconst targetNode = args[0]._targetInst\n\t\t\t\tthis.handleTargetEvent(targetNode)\n\t\t\t\tFTRumActionTracking.preActionTimestamp = currentTime \n\t\t\t}\n\t\t}\n\t}\n\n private static handleTargetEvent(targetNode: any | null) {\n if (targetNode) {\n const enable = FTRumActionTracking.findActionEnableTrack(targetNode);\n if (enable) {\n const extraProperty = FTRumActionTracking.findActionProperty(targetNode);\n const elementTypeName = FTRumActionTracking.resolveActionName(targetNode);\n if (elementTypeName) {\n let jsonObject = null\n if (extraProperty) {\n try {\n jsonObject = JSON.parse(extraProperty)\n } catch (error) {\n console.warn(`Error parsing JSON string ${extraProperty}:`,error);\n }\n }\n if (jsonObject){\n FTReactNativeRUM.startAction(elementTypeName, 'click',jsonObject);\n }else{\n FTReactNativeRUM.startAction(elementTypeName, 'click');\n }\n }\n }\n }\n }\n\n\tprivate static resolveActionName(targetNode:any): string | null {\n\t\tconst accessibilityLabel = targetNode.memoizedProps?.accessibilityLabel\n\t\tif(accessibilityLabel != null){\n\t\t\treturn accessibilityLabel;\n\t\t}\n\t\tconst accessibilityRole = targetNode.memoizedProps?.accessibilityRole;\n\t\t\tlet subTitle = '';\n\t\t\tlet children = targetNode.memoizedProps?.children;\n\t\t\twhile (children){\n\t\t\t\tif(Array.isArray(children) && children.length>0 && children[0]){\n\t\t\t\t\tchildren = children[0];\n\t\t\t\t}else if(typeof children === 'object' && children.props && children.props.children){\n\t\t\t\t\tchildren = children.props.children;\n\t\t\t\t}else if(typeof children === 'string'){\n\t\t\t\t\tsubTitle = children;\n\t\t\t\t\tchildren = null;\n\t\t\t\t}else{\n\t\t\t\t\tchildren = null;\n\t\t\t\t}\n\t\t\t}\n\t\t\tlet elementTypeName = accessibilityRole;\n\t\t\tif(!accessibilityRole){\n\t\t\t\tlet elementType = targetNode.elementType;\n\t\t\t\tif (typeof elementType === \"string\") {\n\t\t\t\t\telementTypeName = elementType\n\t\t\t\t} else if (elementType && typeof elementType.name === \"string\") {\n\t\t\t\t\telementTypeName = elementType.name\n\t\t\t\t}\n\t\t\t}\n\t\t\tif(elementTypeName){\n\t\t\t\treturn '['+elementTypeName+']'+subTitle;\n\t\t\t}\n\t\t\treturn null;\n \n\t}\n private static findActionProperty(targetNode: any): string | null {\n let currentNode = targetNode;\n while (currentNode) {\n const props = currentNode.memoizedProps;\n if (props && props[FT_EXTRA_PROPERTY]) {\n return props[FT_EXTRA_PROPERTY];\n }\n currentNode = currentNode.return;\n }\n return null;\n }\n private static findActionEnableTrack(targetNode: any): boolean {\n let currentNode = targetNode;\n let enable = true\n while (currentNode) {\n const props = currentNode.memoizedProps;\n if (props && props[FT_ENABLE_TRACK]) {\n enable = props[FT_ENABLE_TRACK] == \"true\";\n break;\n }\n currentNode = currentNode.return;\n }\n return enable;\n }\n}\n\nconst areObjectShallowEqual = (\n\tobjectA: Record<string, unknown> | undefined | null,\n\tobjectB: Record<string, unknown> | undefined | null\n): boolean => {\n\tif (!objectA || !objectB) {\n\t\treturn objectA === objectB;\n\t}\n\n\tconst keys = Object.keys(objectA);\n\tif (keys.length !== Object.keys(objectB).length) {\n\t\treturn false;\n\t}\n\tfor (const key of keys) {\n\t\tif (objectA[key] !== objectB[key]) {\n\t\t\treturn false;\n\t\t}\n\t}\n\treturn true;\n};\nconst getJsxRuntime = () => {\n // eslint-disable-next-line global-require, @typescript-eslint/no-var-requires\n const [major, minor] = require('react/package.json').version.split('.');\n\t// JSX Transform applies to > 16.14.0\n if (Number(major)<=16&&Number(minor)<14) {\n throw new Error('React version does not support new jsx transform');\n }\n\n // eslint-disable-next-line global-require, @typescript-eslint/no-var-requires\n const jsxRuntime = require('react/jsx-runtime');\n if (!jsxRuntime.jsx) {\n throw new Error('React jsx runtime does not export new jsx transform');\n }\n return jsxRuntime;\n};\n"],"mappings":"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","ignoreList":[]}
@@ -0,0 +1,99 @@
1
+ "use strict";
2
+
3
+ Object.defineProperty(exports, "__esModule", {
4
+ value: true
5
+ });
6
+ exports.FTRumErrorTracking = void 0;
7
+ var _ft_rum = require("../ft_rum");
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
+ function _toPropertyKey(t) { var i = _toPrimitive(t, "string"); return "symbol" == typeof i ? i : i + ""; }
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); }
11
+ const EMPTY_MESSAGE = 'Unknown Error';
12
+ const CONSOLE_ERROR = "console_error";
13
+ class FTRumErrorTracking {
14
+ static startTracking() {
15
+ if (FTRumErrorTracking.isTracking) {
16
+ return;
17
+ }
18
+ if (ErrorUtils) {
19
+ FTRumErrorTracking.defaultErrorHandler = ErrorUtils.getGlobalHandler;
20
+ FTRumErrorTracking.defaultConsoleError = console.error;
21
+ ErrorUtils.setGlobalHandler(FTRumErrorTracking.onGlobalError);
22
+ console.error = FTRumErrorTracking.onConsoleError;
23
+ FTRumErrorTracking.isTracking = true;
24
+ }
25
+ }
26
+ static onGlobalError(error, isFatal) {
27
+ const message = FTRumErrorTracking.getErrorMessage(error);
28
+ const stacktrace = FTRumErrorTracking.getErrorStackTrace(error);
29
+ _ft_rum.FTReactNativeRUM.addError(stacktrace, message).then(() => {
30
+ try {
31
+ FTRumErrorTracking.isInDefaultErrorHandler = true;
32
+ //Call the original error handler method
33
+ FTRumErrorTracking.defaultErrorHandler(error, isFatal);
34
+ } finally {
35
+ FTRumErrorTracking.isInDefaultErrorHandler = false;
36
+ }
37
+ });
38
+ }
39
+ static onConsoleError(...params) {
40
+ if (FTRumErrorTracking.isInDefaultErrorHandler) {
41
+ return;
42
+ }
43
+ let stack = '';
44
+ for (let i = 0; i < params.length; i += 1) {
45
+ const param = params[i];
46
+ const paramStack = FTRumErrorTracking.getErrorStackTrace(param);
47
+ if (paramStack != undefined && paramStack != '') {
48
+ stack = paramStack;
49
+ break;
50
+ }
51
+ }
52
+ const message = params.map(param => {
53
+ if (typeof param === 'string') {
54
+ return param;
55
+ } else {
56
+ return FTRumErrorTracking.getErrorMessage(param);
57
+ }
58
+ }).join(' ');
59
+ _ft_rum.FTReactNativeRUM.addErrorWithType(CONSOLE_ERROR, stack, message).then(() => {
60
+ FTRumErrorTracking.defaultConsoleError.apply(console, params);
61
+ });
62
+ }
63
+ static getErrorMessage(error) {
64
+ let message = EMPTY_MESSAGE;
65
+ if (error == undefined || error === null) {
66
+ message = EMPTY_MESSAGE;
67
+ } else if (typeof error === 'object' && 'message' in error) {
68
+ message = String(error.message);
69
+ } else {
70
+ message = String(error);
71
+ }
72
+ return message;
73
+ }
74
+ static getErrorStackTrace(error) {
75
+ let stack = '';
76
+ if (error == undefined) {
77
+ stack = '';
78
+ } else if (typeof error === 'string') {
79
+ stack = '';
80
+ } else if ('componentStack' in error) {
81
+ stack = String(error.componentStack);
82
+ } else if ('stacktrace' in error) {
83
+ stack = String(error.stacktrace);
84
+ } else if ('stack' in error) {
85
+ stack = String(error.stack);
86
+ } else if ('sourceURL' in error && 'line' in error && 'column' in error) {
87
+ stack = `at ${error.sourceURL}:${error.line}:${error.column}`;
88
+ }
89
+ return stack;
90
+ }
91
+ }
92
+ exports.FTRumErrorTracking = FTRumErrorTracking;
93
+ _defineProperty(FTRumErrorTracking, "isTracking", false);
94
+ _defineProperty(FTRumErrorTracking, "isInDefaultErrorHandler", false);
95
+ // Original error handler method
96
+ _defineProperty(FTRumErrorTracking, "defaultErrorHandler", (_error, _isFatal) => {});
97
+ // Original console error handler method
98
+ _defineProperty(FTRumErrorTracking, "defaultConsoleError", (..._params) => {});
99
+ //# sourceMappingURL=FTRumErrorTracking.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"names":["_ft_rum","require","_defineProperty","e","r","t","_toPropertyKey","Object","defineProperty","value","enumerable","configurable","writable","i","_toPrimitive","Symbol","toPrimitive","call","TypeError","String","Number","EMPTY_MESSAGE","CONSOLE_ERROR","FTRumErrorTracking","startTracking","isTracking","ErrorUtils","defaultErrorHandler","getGlobalHandler","defaultConsoleError","console","error","setGlobalHandler","onGlobalError","onConsoleError","isFatal","message","getErrorMessage","stacktrace","getErrorStackTrace","FTReactNativeRUM","addError","then","isInDefaultErrorHandler","params","stack","length","param","paramStack","undefined","map","join","addErrorWithType","apply","componentStack","sourceURL","line","column","exports","_error","_isFatal","_params"],"sources":["FTRumErrorTracking.tsx"],"sourcesContent":["import type { ErrorHandlerCallback } from 'react-native';\nimport { FTReactNativeRUM } from '../ft_rum';\nconst EMPTY_MESSAGE = 'Unknown Error';\nconst CONSOLE_ERROR = \"console_error\";\n\nexport class FTRumErrorTracking {\n private static isTracking = false;\n\n private static isInDefaultErrorHandler = false;\n\n // Original error handler method\n private static defaultErrorHandler: ErrorHandlerCallback = (_error: any, _isFatal?: boolean) => { }\n\n // Original console error handler method\n private static defaultConsoleError = (..._params: unknown[]) => { }\n\n static startTracking(): void {\n if(FTRumErrorTracking.isTracking){\n return;\n }\n if (ErrorUtils) {\n FTRumErrorTracking.defaultErrorHandler = ErrorUtils.getGlobalHandler;\n FTRumErrorTracking.defaultConsoleError = console.error;\n ErrorUtils.setGlobalHandler(FTRumErrorTracking.onGlobalError);\n console.error = FTRumErrorTracking.onConsoleError;\n FTRumErrorTracking.isTracking = true;\n }\n }\n static onGlobalError(error: any, isFatal?: boolean): void {\n const message = FTRumErrorTracking.getErrorMessage(error);\n const stacktrace = FTRumErrorTracking.getErrorStackTrace(error);\n FTReactNativeRUM.addError(\n stacktrace,\n message\n ).then(() => {\n try {\n FTRumErrorTracking.isInDefaultErrorHandler = true;\n //Call the original error handler method\n FTRumErrorTracking.defaultErrorHandler(error, isFatal);\n } finally {\n FTRumErrorTracking.isInDefaultErrorHandler = false;\n }\n });\n }\n\n static onConsoleError(...params: unknown[]): void {\n if ( FTRumErrorTracking.isInDefaultErrorHandler) {\n return;\n }\n\n let stack: string = '';\n for (let i = 0; i < params.length; i += 1) {\n const param = params[i];\n const paramStack = FTRumErrorTracking.getErrorStackTrace(param);\n if (paramStack != undefined && paramStack != '') {\n stack = paramStack;\n break;\n }\n }\n\n const message = params.map((param) => {\n if (typeof param === 'string') { return param; }\n else { return FTRumErrorTracking.getErrorMessage(param); }\n }).join(' ');\n\n\n FTReactNativeRUM.addErrorWithType(\n CONSOLE_ERROR,\n stack,\n message,\n ).then(() => {\n FTRumErrorTracking.defaultConsoleError.apply(console, params);\n });\n\n }\n private static getErrorMessage(error: any | undefined): string {\n let message = EMPTY_MESSAGE;\n if (error == undefined || error === null) {\n message = EMPTY_MESSAGE;\n } else if (typeof error === 'object' && 'message' in error){\n message = String(error.message);\n } else {\n message = String(error);\n }\n\n return message\n }\n\n private static getErrorStackTrace(error: any | undefined): string {\n let stack = '';\n\n if (error == undefined) {\n stack = '';\n } else if (typeof error === 'string') {\n stack = '';\n } else if ('componentStack' in error) {\n stack = String(error.componentStack);\n } else if ('stacktrace' in error) {\n stack = String(error.stacktrace);\n } else if ('stack' in error) {\n stack = String(error.stack);\n } else if (('sourceURL' in error) && ('line' in error) && ('column' in error)) {\n stack = `at ${error.sourceURL}:${error.line}:${error.column}`;\n }\n\n return stack\n }\n }\n\n\n"],"mappings":"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","ignoreList":[]}
@@ -0,0 +1,9 @@
1
+ "use strict";
2
+
3
+ Object.defineProperty(exports, "__esModule", {
4
+ value: true
5
+ });
6
+ exports.version = void 0;
7
+ // generated by genversion
8
+ const version = exports.version = '0.3.15-alpha.1';
9
+ //# sourceMappingURL=version.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"names":["version","exports"],"sources":["version.ts"],"sourcesContent":["// generated by genversion\nexport const version = '0.3.15-alpha.1';\n"],"mappings":";;;;;;AAAA;AACO,MAAMA,OAAO,GAAAC,OAAA,CAAAD,OAAA,GAAG,gBAAgB","ignoreList":[]}
@@ -0,0 +1,64 @@
1
+ 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; }
2
+ function _toPropertyKey(t) { var i = _toPrimitive(t, "string"); return "symbol" == typeof i ? i : i + ""; }
3
+ 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); }
4
+ import { NativeModules } from 'react-native';
5
+ /**
6
+ * Set log level.
7
+ */
8
+ export let FTLogStatus = /*#__PURE__*/function (FTLogStatus) {
9
+ FTLogStatus[FTLogStatus["info"] = 0] = "info";
10
+ FTLogStatus[FTLogStatus["warning"] = 1] = "warning";
11
+ FTLogStatus[FTLogStatus["error"] = 2] = "error";
12
+ FTLogStatus[FTLogStatus["critical"] = 3] = "critical";
13
+ FTLogStatus[FTLogStatus["ok"] = 4] = "ok";
14
+ return FTLogStatus;
15
+ }({});
16
+ ;
17
+ /**
18
+ * Log discard method.
19
+ */
20
+ export let FTLogCacheDiscard = /*#__PURE__*/function (FTLogCacheDiscard) {
21
+ FTLogCacheDiscard[FTLogCacheDiscard["discard"] = 0] = "discard";
22
+ FTLogCacheDiscard[FTLogCacheDiscard["discardOldest"] = 1] = "discardOldest";
23
+ return FTLogCacheDiscard;
24
+ }({});
25
+ ;
26
+ /**
27
+ * Configure log output configuration.
28
+ * @param sampleRate sampling rate
29
+ * @param enableLinkRumData whether to link with RUM
30
+ * @param enableCustomLog whether to enable custom logs
31
+ * @param discardStrategy log discard strategy
32
+ * @param logLevelFilters log level filter
33
+ * @param globalContext custom global parameters
34
+ * @param logCacheLimitCount get maximum log entry count limit [1000,), default 5000
35
+ */
36
+
37
+ ;
38
+ class FTReactNativeLogWrapper {
39
+ constructor() {
40
+ _defineProperty(this, "logger", NativeModules.FTReactNativeLog);
41
+ }
42
+ /**
43
+ *Configure log output configuration to enable log collection.
44
+ */
45
+ logConfig(config) {
46
+ return this.logger.logConfig(config);
47
+ }
48
+
49
+ /**
50
+ * Output log.
51
+ * @param content log content
52
+ * @param status log status
53
+ * @param property log context (optional)
54
+ */
55
+ logging(content, logStatus, property) {
56
+ if (typeof logStatus === 'string') {
57
+ return this.logger.logWithStatusString(content, logStatus.toString(), property);
58
+ }
59
+ let enumLogStatus = logStatus;
60
+ return this.logger.logging(content, enumLogStatus, property);
61
+ }
62
+ }
63
+ export const FTReactNativeLog = new FTReactNativeLogWrapper();
64
+ //# sourceMappingURL=ft_logger.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"names":["NativeModules","FTLogStatus","FTLogCacheDiscard","FTReactNativeLogWrapper","constructor","_defineProperty","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 /**\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,SAASA,aAAa,QAAQ,cAAc;AAC5C;AACA;AACA;AACC,WAAYC,WAAW,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;AACC,WAAYC,iBAAiB,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;IAAAC,eAAA,iBACUL,aAAa,CAACM,gBAAgB;EAAA;EAEtE;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;AACA,OAAO,MAAMP,gBAAyC,GAAG,IAAIH,uBAAuB,CAAC,CAAC","ignoreList":[]}
@@ -0,0 +1,88 @@
1
+ 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; }
2
+ function _toPropertyKey(t) { var i = _toPrimitive(t, "string"); return "symbol" == typeof i ? i : i + ""; }
3
+ 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); }
4
+ import { NativeModules } from 'react-native';
5
+ import { version as sdkVersion } from './version';
6
+
7
+ /**
8
+ * Environment.
9
+ */
10
+ export let EnvType = /*#__PURE__*/function (EnvType) {
11
+ EnvType[EnvType["prod"] = 0] = "prod";
12
+ EnvType[EnvType["gray"] = 1] = "gray";
13
+ EnvType[EnvType["pre"] = 2] = "pre";
14
+ EnvType[EnvType["common"] = 3] = "common";
15
+ EnvType[EnvType["local"] = 4] = "local";
16
+ return EnvType;
17
+ }({});
18
+ ;
19
+ export let FTDBCacheDiscard = /*#__PURE__*/function (FTDBCacheDiscard) {
20
+ FTDBCacheDiscard[FTDBCacheDiscard["discard"] = 0] = "discard";
21
+ FTDBCacheDiscard[FTDBCacheDiscard["discardOldest"] = 1] = "discardOldest";
22
+ return FTDBCacheDiscard;
23
+ }({});
24
+ ;
25
+ /**
26
+ * Configure SDK startup parameters.
27
+ * @param serverUrl data reporting address, deprecated, use [datakitUrl] instead
28
+ * @param datakitUrl datakit access URL address, example: http://10.0.0.1:9529, default port 9529. Choose one between datakit and dataway configuration
29
+ * @param datawayUrl dataway access URL address, example: http://10.0.0.1:9528, default port 9528, note: the device installing the SDK needs to be able to access this address. Note: choose one between datakit and dataway configuration
30
+ * @param clientToken dataway authentication token, needs to be configured together with [datawayUrl]
31
+ * @param debug set whether to allow log printing, default false
32
+ * @param env environment, default prod
33
+ * @param service set the name of the business or service it belongs to, default: `df_rum_ios`, `df_rum_android`
34
+ * @param autoSync whether data is automatically synchronized and uploaded, default: true
35
+ * @param syncPageSize number of synchronized items per request during data synchronization, minimum value 5, default: 10
36
+ * @param syncSleepTime interval time between each request during data synchronization, unit milliseconds, 0 < syncSleepTime < 100
37
+ * @param enableDataIntegerCompatible whether to enable data integer compatibility during data synchronization, enabled by default
38
+ * @param compressIntakeRequests whether to compress synchronized data
39
+ * @param globalContext custom global parameters
40
+ * @param groupIdentifiers iOS side sets the AppGroups Identifier array corresponding to the collected Widget Extension
41
+ * @param enableLimitWithDbSize set whether to enable using db to limit data size, after enabling, `FTLogConfig.logCacheLimitCount` and `FTRUMConfig.rumCacheLimitCount` will no longer take effect
42
+ * @param dbCacheLimit db cache limit size, minimum value 30MB, default 100MB, unit byte
43
+ * @param dbDiscardStrategy db data discard strategy
44
+ * @param dataModifier data modifier, modify individual fields {key:value}, after setting, the SDK will replace the original value with the set value according to the key
45
+ * @param lineDataModifier data modifier, modify single data {"measurement":measurement,"data":{key:value}}, after setting, the SDK will replace the original value with the set value according to the key
46
+ */
47
+
48
+ class FTMobileReactNativeWrapper {
49
+ constructor() {
50
+ _defineProperty(this, "sdk", NativeModules.FTMobileReactNative);
51
+ }
52
+ sdkConfig(config) {
53
+ if (config.serverUrl != null && config.serverUrl.length > 0 && config.datakitUrl == null) {
54
+ config.datakitUrl = config.serverUrl;
55
+ }
56
+ config.pkgInfo = sdkVersion;
57
+ return this.sdk.sdkConfig(config);
58
+ }
59
+ bindRUMUserData(userId, userName, userEmail, extra) {
60
+ return this.sdk.bindRUMUserData(userId, userName, userEmail, extra);
61
+ }
62
+ unbindRUMUserData() {
63
+ return this.sdk.unbindRUMUserData();
64
+ }
65
+ appendGlobalContext(context) {
66
+ return this.sdk.appendGlobalContext(context);
67
+ }
68
+ appendLogGlobalContext(context) {
69
+ return this.sdk.appendLogGlobalContext(context);
70
+ }
71
+ appendRUMGlobalContext(context) {
72
+ return this.sdk.appendRUMGlobalContext(context);
73
+ }
74
+ trackEventFromExtension(identifier) {
75
+ return this.sdk.trackEventFromExtension(identifier);
76
+ }
77
+ flushSyncData() {
78
+ return this.sdk.flushSyncData();
79
+ }
80
+ shutDown() {
81
+ return this.sdk.shutDown();
82
+ }
83
+ clearAllData() {
84
+ return this.sdk.clearAllData();
85
+ }
86
+ }
87
+ export const FTMobileReactNative = new FTMobileReactNativeWrapper();
88
+ //# sourceMappingURL=ft_mobile_agent.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"names":["NativeModules","version","sdkVersion","EnvType","FTDBCacheDiscard","FTMobileReactNativeWrapper","constructor","_defineProperty","FTMobileReactNative","sdkConfig","config","serverUrl","length","datakitUrl","pkgInfo","sdk","bindRUMUserData","userId","userName","userEmail","extra","unbindRUMUserData","appendGlobalContext","context","appendLogGlobalContext","appendRUMGlobalContext","trackEventFromExtension","identifier","flushSyncData","shutDown","clearAllData"],"sources":["ft_mobile_agent.tsx"],"sourcesContent":["import { NativeModules } from 'react-native';\nimport { version as sdkVersion } from './version'\n\n/**\n * Environment.\n */\nexport enum EnvType {\n prod, gray, pre, common, local\n};\nexport enum FTDBCacheDiscard { discard, discardOldest };\n/**\n * Configure SDK startup parameters.\n * @param serverUrl data reporting address, deprecated, use [datakitUrl] instead\n * @param datakitUrl datakit access URL address, example: http://10.0.0.1:9529, default port 9529. Choose one between datakit and dataway configuration\n * @param datawayUrl dataway access URL address, example: http://10.0.0.1:9528, default port 9528, note: the device installing the SDK needs to be able to access this address. Note: choose one between datakit and dataway configuration\n * @param clientToken dataway authentication token, needs to be configured together with [datawayUrl]\n * @param debug set whether to allow log printing, default false\n * @param env environment, default prod\n * @param service set the name of the business or service it belongs to, default: `df_rum_ios`, `df_rum_android`\n * @param autoSync whether data is automatically synchronized and uploaded, default: true\n * @param syncPageSize number of synchronized items per request during data synchronization, minimum value 5, default: 10\n * @param syncSleepTime interval time between each request during data synchronization, unit milliseconds, 0 < syncSleepTime < 100\n * @param enableDataIntegerCompatible whether to enable data integer compatibility during data synchronization, enabled by default\n * @param compressIntakeRequests whether to compress synchronized data\n * @param globalContext custom global parameters\n * @param groupIdentifiers iOS side sets the AppGroups Identifier array corresponding to the collected Widget Extension\n * @param enableLimitWithDbSize set whether to enable using db to limit data size, after enabling, `FTLogConfig.logCacheLimitCount` and `FTRUMConfig.rumCacheLimitCount` will no longer take effect\n * @param dbCacheLimit db cache limit size, minimum value 30MB, default 100MB, unit byte\n * @param dbDiscardStrategy db data discard strategy\n * @param dataModifier data modifier, modify individual fields {key:value}, after setting, the SDK will replace the original value with the set value according to the key\n * @param lineDataModifier data modifier, modify single data {\"measurement\":measurement,\"data\":{key:value}}, after setting, the SDK will replace the original value with the set value according to the key\n */\n export interface FTMobileConfig {\n /**\n * @deprecated \"serverUrl\" parameter renamed to \"datakitUrl\"\n */\n serverUrl?: string,\n datakitUrl?: string,\n datawayUrl?: string,\n clientToken?: string,\n debug?:boolean,\n envType?:EnvType,\n env?:string,\n service?:string,\n autoSync?:boolean,\n syncPageSize?:number,\n syncSleepTime?:number,\n enableDataIntegerCompatible?:boolean,\n compressIntakeRequests?:boolean,\n globalContext?:object,\n groupIdentifiers?:Array<string>,\n enableLimitWithDbSize?:boolean,\n dbCacheLimit?:number,\n dbDiscardStrategy?:FTDBCacheDiscard,\n pkgInfo?: string,\n dataModifier?:object,\n lineDataModifier?:object\n }\n\n\ntype FTMobileReactNativeType = {\n\n /**\n * SDK initialization method.\n * @param config SDK initialization configuration items.\n * @returns a Promise.\n */\n sdkConfig(config:FTMobileConfig): Promise<void>;\n /**\n * Bind user.\n * @param userId user ID.\n * @param userName user name.\n * @param userEmail user email\n * @param extra additional user information\n * @returns a Promise.\n */\n bindRUMUserData(userId: string,userName?:string,userEmail?:string,extra?:object): Promise<void>;\n /**\n * Unbind user.\n * @returns a Promise.\n */\n unbindRUMUserData(): Promise<void>;\n /**\n * Add custom global parameters. Applies to RUM and Log data\n * @param context custom global parameters.\n * @returns a Promise.\n */\n appendGlobalContext(context:object):Promise<void>;\n /**\n * Add custom RUM global parameters. Applies to RUM data\n * @param context custom RUM global parameters.\n * @returns a Promise.\n */\n appendRUMGlobalContext(context:object):Promise<void>;\n /**\n * Add custom RUM and Log global parameters. Applies to Log data\n * @param context custom Log global parameters.\n * @returns a Promise.\n */\n appendLogGlobalContext(context:object):Promise<void>;\n /**\n * Actively synchronize data. When `FTMobileConfig.autoSync=false` is configured, you need to actively trigger this method to synchronize data.\n * @returns a Promise.\n */\n flushSyncData():Promise<void>;\n\n /**\n * Synchronize events in iOS Widget Extension, iOS only\n * @param groupIdentifier app groupId\n * @returns {groupIdentifier:string,datas:Array<object>} can be used to view data collected in Extension.\n */\n trackEventFromExtension(identifier:string): Promise<object>\n /**\n * Shut down objects currently running in the SDK\n */\n shutDown():Promise<void>\n /**\n * Clear all data that has not yet been uploaded to the server.\n */\n clearAllData():Promise<void>\n };\n\n class FTMobileReactNativeWrapper implements FTMobileReactNativeType {\n private sdk:FTMobileReactNativeType = NativeModules.FTMobileReactNative;\n\n sdkConfig(config:FTMobileConfig): Promise<void> {\n if(config.serverUrl != null && config.serverUrl.length>0 && config.datakitUrl == null){\n config.datakitUrl = config.serverUrl;\n }\n config.pkgInfo = sdkVersion;\n return this.sdk.sdkConfig(config);\n }\n bindRUMUserData(userId: string,userName?:string,userEmail?:string,extra?:object): Promise<void> {\n return this.sdk.bindRUMUserData(userId,userName,userEmail,extra);\n }\n unbindRUMUserData(): Promise<void> {\n return this.sdk.unbindRUMUserData();\n }\n appendGlobalContext(context: object): Promise<void> {\n return this.sdk.appendGlobalContext(context);\n }\n appendLogGlobalContext(context: object): Promise<void> {\n return this.sdk.appendLogGlobalContext(context);\n }\n appendRUMGlobalContext(context: object): Promise<void> {\n return this.sdk.appendRUMGlobalContext(context);\n }\n trackEventFromExtension(identifier:string) :Promise<object>{\n return this.sdk.trackEventFromExtension(identifier);\n }\n flushSyncData():Promise<void>{\n return this.sdk.flushSyncData();\n }\n shutDown():Promise<void>{\n return this.sdk.shutDown();\n }\n clearAllData():Promise<void>{\n return this.sdk.clearAllData();\n }\n }\nexport const FTMobileReactNative: FTMobileReactNativeType = new FTMobileReactNativeWrapper();\n\n"],"mappings":";;;AAAA,SAASA,aAAa,QAAQ,cAAc;AAC5C,SAASC,OAAO,IAAIC,UAAU,QAAQ,WAAW;;AAEjD;AACA;AACA;AACA,WAAYC,OAAO,0BAAPA,OAAO;EAAPA,OAAO,CAAPA,OAAO;EAAPA,OAAO,CAAPA,OAAO;EAAPA,OAAO,CAAPA,OAAO;EAAPA,OAAO,CAAPA,OAAO;EAAPA,OAAO,CAAPA,OAAO;EAAA,OAAPA,OAAO;AAAA;AAElB;AACD,WAAYC,gBAAgB,0BAAhBA,gBAAgB;EAAhBA,gBAAgB,CAAhBA,gBAAgB;EAAhBA,gBAAgB,CAAhBA,gBAAgB;EAAA,OAAhBA,gBAAgB;AAAA;AAA2B;AACvD;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AA2FC,MAAMC,0BAA0B,CAAoC;EAAAC,YAAA;IAAAC,eAAA,cAC5BP,aAAa,CAACQ,mBAAmB;EAAA;EAEvEC,SAASA,CAACC,MAAqB,EAAiB;IAC9C,IAAGA,MAAM,CAACC,SAAS,IAAI,IAAI,IAAID,MAAM,CAACC,SAAS,CAACC,MAAM,GAAC,CAAC,IAAIF,MAAM,CAACG,UAAU,IAAI,IAAI,EAAC;MACpFH,MAAM,CAACG,UAAU,GAAGH,MAAM,CAACC,SAAS;IACtC;IACAD,MAAM,CAACI,OAAO,GAAGZ,UAAU;IAC3B,OAAO,IAAI,CAACa,GAAG,CAACN,SAAS,CAACC,MAAM,CAAC;EACnC;EACAM,eAAeA,CAACC,MAAc,EAACC,QAAgB,EAACC,SAAiB,EAACC,KAAa,EAAiB;IAC9F,OAAO,IAAI,CAACL,GAAG,CAACC,eAAe,CAACC,MAAM,EAACC,QAAQ,EAACC,SAAS,EAACC,KAAK,CAAC;EAClE;EACAC,iBAAiBA,CAAA,EAAkB;IACjC,OAAO,IAAI,CAACN,GAAG,CAACM,iBAAiB,CAAC,CAAC;EACrC;EACAC,mBAAmBA,CAACC,OAAe,EAAiB;IACnD,OAAO,IAAI,CAACR,GAAG,CAACO,mBAAmB,CAACC,OAAO,CAAC;EAC7C;EACAC,sBAAsBA,CAACD,OAAe,EAAiB;IACnD,OAAO,IAAI,CAACR,GAAG,CAACS,sBAAsB,CAACD,OAAO,CAAC;EACnD;EACAE,sBAAsBA,CAACF,OAAe,EAAiB;IACnD,OAAO,IAAI,CAACR,GAAG,CAACU,sBAAsB,CAACF,OAAO,CAAC;EACnD;EACAG,uBAAuBA,CAACC,UAAiB,EAAkB;IACzD,OAAO,IAAI,CAACZ,GAAG,CAACW,uBAAuB,CAACC,UAAU,CAAC;EACrD;EACAC,aAAaA,CAAA,EAAgB;IAC5B,OAAO,IAAI,CAACb,GAAG,CAACa,aAAa,CAAC,CAAC;EAChC;EACAC,QAAQA,CAAA,EAAgB;IACvB,OAAO,IAAI,CAACd,GAAG,CAACc,QAAQ,CAAC,CAAC;EAC3B;EACAC,YAAYA,CAAA,EAAgB;IAC3B,OAAO,IAAI,CAACf,GAAG,CAACe,YAAY,CAAC,CAAC;EAC/B;AACF;AACD,OAAO,MAAMtB,mBAA4C,GAAG,IAAIH,0BAA0B,CAAC,CAAC","ignoreList":[]}