@multiplayer-app/session-recorder-react-native 0.0.1-beta.2 → 0.0.1-beta.20

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 (242) hide show
  1. package/README.md +170 -12
  2. package/SessionRecorderNative.podspec +29 -0
  3. package/android/build.gradle +34 -0
  4. package/copy-react-native-dist.sh +34 -16
  5. package/dist/components/GestureCaptureWrapper/GestureCaptureWrapper.d.ts +1 -0
  6. package/dist/components/GestureCaptureWrapper/GestureCaptureWrapper.js +1 -1
  7. package/dist/components/GestureCaptureWrapper/GestureCaptureWrapper.js.map +1 -1
  8. package/dist/components/MaskableComponent.d.ts +22 -0
  9. package/dist/components/MaskableComponent.js +1 -0
  10. package/dist/components/MaskableComponent.js.map +1 -0
  11. package/dist/components/MaskableTextInput.d.ts +14 -0
  12. package/dist/components/MaskableTextInput.js +1 -0
  13. package/dist/components/MaskableTextInput.js.map +1 -0
  14. package/dist/components/ScreenRecorderView/ScreenRecorderView.js +1 -1
  15. package/dist/components/ScreenRecorderView/ScreenRecorderView.js.map +1 -1
  16. package/dist/components/SessionRecorderWidget/FinalPopover.d.ts +11 -0
  17. package/dist/components/SessionRecorderWidget/FinalPopover.js +1 -0
  18. package/dist/components/SessionRecorderWidget/FinalPopover.js.map +1 -0
  19. package/dist/components/SessionRecorderWidget/FloatingButton.d.ts +8 -0
  20. package/dist/components/SessionRecorderWidget/FloatingButton.js +1 -0
  21. package/dist/components/SessionRecorderWidget/FloatingButton.js.map +1 -0
  22. package/dist/components/SessionRecorderWidget/InitialPopover.d.ts +15 -0
  23. package/dist/components/SessionRecorderWidget/InitialPopover.js +1 -0
  24. package/dist/components/SessionRecorderWidget/InitialPopover.js.map +1 -0
  25. package/dist/components/SessionRecorderWidget/ModalContainer.d.ts +8 -0
  26. package/dist/components/SessionRecorderWidget/ModalContainer.js +1 -0
  27. package/dist/components/SessionRecorderWidget/ModalContainer.js.map +1 -0
  28. package/dist/components/SessionRecorderWidget/ModalHeader.d.ts +6 -0
  29. package/dist/components/SessionRecorderWidget/ModalHeader.js +1 -0
  30. package/dist/components/SessionRecorderWidget/ModalHeader.js.map +1 -0
  31. package/dist/components/SessionRecorderWidget/SessionRecorderWidget.d.ts +5 -0
  32. package/dist/components/SessionRecorderWidget/SessionRecorderWidget.js +1 -0
  33. package/dist/components/SessionRecorderWidget/SessionRecorderWidget.js.map +1 -0
  34. package/dist/components/SessionRecorderWidget/icons.d.ts +11 -0
  35. package/dist/components/SessionRecorderWidget/icons.js +1 -0
  36. package/dist/components/SessionRecorderWidget/icons.js.map +1 -0
  37. package/dist/components/SessionRecorderWidget/index.d.ts +2 -0
  38. package/dist/components/SessionRecorderWidget/index.js +1 -0
  39. package/dist/components/SessionRecorderWidget/index.js.map +1 -0
  40. package/dist/components/SessionRecorderWidget/styles.d.ts +165 -0
  41. package/dist/components/SessionRecorderWidget/styles.js +1 -0
  42. package/dist/components/SessionRecorderWidget/styles.js.map +1 -0
  43. package/dist/components/index.d.ts +2 -1
  44. package/dist/components/index.js +1 -1
  45. package/dist/components/index.js.map +1 -1
  46. package/dist/config/defaults.d.ts +4 -4
  47. package/dist/config/defaults.js +1 -1
  48. package/dist/config/defaults.js.map +1 -1
  49. package/dist/config/masking.d.ts +2 -2
  50. package/dist/config/masking.js +1 -1
  51. package/dist/config/masking.js.map +1 -1
  52. package/dist/config/session-recorder.js +1 -1
  53. package/dist/config/session-recorder.js.map +1 -1
  54. package/dist/config/validators.d.ts +1 -1
  55. package/dist/config/validators.js +1 -1
  56. package/dist/config/validators.js.map +1 -1
  57. package/dist/config/widget.d.ts +9 -0
  58. package/dist/config/widget.js +1 -0
  59. package/dist/config/widget.js.map +1 -0
  60. package/dist/context/SessionRecorderContext.d.ts +12 -3
  61. package/dist/context/SessionRecorderContext.js +1 -1
  62. package/dist/context/SessionRecorderContext.js.map +1 -1
  63. package/dist/context/SessionRecorderStore.d.ts +10 -0
  64. package/dist/context/SessionRecorderStore.js +1 -0
  65. package/dist/context/SessionRecorderStore.js.map +1 -0
  66. package/dist/context/useSessionRecorderStore.d.ts +8 -0
  67. package/dist/context/useSessionRecorderStore.js +1 -0
  68. package/dist/context/useSessionRecorderStore.js.map +1 -0
  69. package/dist/context/useStoreSelector.d.ts +4 -0
  70. package/dist/context/useStoreSelector.js +1 -0
  71. package/dist/context/useStoreSelector.js.map +1 -0
  72. package/dist/index.d.ts +1 -1
  73. package/dist/index.js +1 -1
  74. package/dist/index.js.map +1 -1
  75. package/dist/native/GestureRecorderNative.d.ts +57 -0
  76. package/dist/native/GestureRecorderNative.js +1 -0
  77. package/dist/native/GestureRecorderNative.js.map +1 -0
  78. package/dist/native/ScreenMasking.d.ts +21 -0
  79. package/dist/native/ScreenMasking.js +1 -0
  80. package/dist/native/ScreenMasking.js.map +1 -0
  81. package/dist/native/SessionRecorderNative.d.ts +33 -0
  82. package/dist/native/SessionRecorderNative.js +1 -0
  83. package/dist/native/SessionRecorderNative.js.map +1 -0
  84. package/dist/native/index.d.ts +2 -0
  85. package/dist/native/index.js +1 -0
  86. package/dist/native/index.js.map +1 -0
  87. package/dist/otel/index.js +1 -1
  88. package/dist/otel/index.js.map +1 -1
  89. package/dist/patch/xhr.js +1 -1
  90. package/dist/patch/xhr.js.map +1 -1
  91. package/dist/recorder/eventExporter.d.ts +4 -1
  92. package/dist/recorder/eventExporter.js +1 -1
  93. package/dist/recorder/eventExporter.js.map +1 -1
  94. package/dist/recorder/gestureRecorder.d.ts +28 -62
  95. package/dist/recorder/gestureRecorder.js +1 -1
  96. package/dist/recorder/gestureRecorder.js.map +1 -1
  97. package/dist/recorder/index.d.ts +2 -0
  98. package/dist/recorder/index.js +1 -1
  99. package/dist/recorder/index.js.map +1 -1
  100. package/dist/recorder/navigationTracker.d.ts +4 -19
  101. package/dist/recorder/navigationTracker.js +1 -1
  102. package/dist/recorder/navigationTracker.js.map +1 -1
  103. package/dist/recorder/screenRecorder.d.ts +11 -5
  104. package/dist/recorder/screenRecorder.js +1 -1
  105. package/dist/recorder/screenRecorder.js.map +1 -1
  106. package/dist/recorder/screenshotManager.d.ts +10 -0
  107. package/dist/recorder/screenshotManager.js +1 -0
  108. package/dist/recorder/screenshotManager.js.map +1 -0
  109. package/dist/services/api.service.d.ts +12 -3
  110. package/dist/services/api.service.js +1 -1
  111. package/dist/services/api.service.js.map +1 -1
  112. package/dist/services/screenMaskingService.d.ts +47 -0
  113. package/dist/services/screenMaskingService.js +1 -0
  114. package/dist/services/screenMaskingService.js.map +1 -0
  115. package/dist/services/storage.service.d.ts +18 -2
  116. package/dist/services/storage.service.js +1 -1
  117. package/dist/services/storage.service.js.map +1 -1
  118. package/dist/session-recorder.d.ts +10 -34
  119. package/dist/session-recorder.js +1 -1
  120. package/dist/session-recorder.js.map +1 -1
  121. package/dist/types/configs.d.ts +85 -0
  122. package/dist/types/configs.js +1 -0
  123. package/dist/types/configs.js.map +1 -0
  124. package/dist/types/index.d.ts +1 -0
  125. package/dist/types/index.js +1 -1
  126. package/dist/types/index.js.map +1 -1
  127. package/dist/types/session-recorder.d.ts +96 -132
  128. package/dist/types/session-recorder.js +1 -1
  129. package/dist/types/session-recorder.js.map +1 -1
  130. package/dist/utils/componentRegistry.d.ts +64 -0
  131. package/dist/utils/componentRegistry.js +1 -0
  132. package/dist/utils/componentRegistry.js.map +1 -0
  133. package/dist/utils/constants.optional.d.ts +21 -0
  134. package/dist/utils/constants.optional.expo.d.ts +3 -0
  135. package/dist/utils/constants.optional.expo.js +1 -0
  136. package/dist/utils/constants.optional.expo.js.map +1 -0
  137. package/dist/utils/constants.optional.js +1 -0
  138. package/dist/utils/constants.optional.js.map +1 -0
  139. package/dist/utils/createStore.d.ts +8 -0
  140. package/dist/utils/createStore.js +1 -0
  141. package/dist/utils/createStore.js.map +1 -0
  142. package/dist/utils/logger.d.ts +1 -1
  143. package/dist/utils/logger.js +1 -1
  144. package/dist/utils/logger.js.map +1 -1
  145. package/dist/utils/nativeModuleTest.d.ts +8 -0
  146. package/dist/utils/nativeModuleTest.js +1 -0
  147. package/dist/utils/nativeModuleTest.js.map +1 -0
  148. package/dist/utils/platform.d.ts +11 -0
  149. package/dist/utils/platform.js +1 -1
  150. package/dist/utils/platform.js.map +1 -1
  151. package/dist/utils/reactNativeHierarchyExtractor.d.ts +38 -0
  152. package/dist/utils/reactNativeHierarchyExtractor.js +1 -0
  153. package/dist/utils/reactNativeHierarchyExtractor.js.map +1 -0
  154. package/dist/utils/rrweb-events.d.ts +4 -3
  155. package/dist/utils/rrweb-events.js +1 -1
  156. package/dist/utils/rrweb-events.js.map +1 -1
  157. package/dist/utils/screenshotMasker.d.ts +96 -0
  158. package/dist/utils/screenshotMasker.js +1 -0
  159. package/dist/utils/screenshotMasker.js.map +1 -0
  160. package/dist/utils/session.d.ts +2 -1
  161. package/dist/utils/session.js +1 -1
  162. package/dist/utils/session.js.map +1 -1
  163. package/dist/utils/shallowEqual.d.ts +1 -0
  164. package/dist/utils/shallowEqual.js +1 -0
  165. package/dist/utils/shallowEqual.js.map +1 -0
  166. package/dist/utils/viewHierarchyTracker.d.ts +89 -0
  167. package/dist/utils/viewHierarchyTracker.js +1 -0
  168. package/dist/utils/viewHierarchyTracker.js.map +1 -0
  169. package/ios/GestureRecorderNative.m +21 -0
  170. package/ios/GestureRecorderNative.swift +316 -0
  171. package/ios/SessionRecorderNative.m +17 -0
  172. package/ios/SessionRecorderNative.podspec +26 -0
  173. package/ios/SessionRecorderNative.swift +599 -0
  174. package/package.json +13 -12
  175. package/react-native.config.js +12 -0
  176. package/RRWEB_INTEGRATION.md +0 -336
  177. package/VIEWSHOT_INTEGRATION_TEST.md +0 -123
  178. package/babel.config.js +0 -13
  179. package/dist/components/GestureCaptureWrapper.d.ts +0 -6
  180. package/dist/components/GestureCaptureWrapper.js +0 -1
  181. package/dist/components/GestureCaptureWrapper.js.map +0 -1
  182. package/dist/expo.d.ts +0 -7
  183. package/dist/expo.js +0 -1
  184. package/dist/expo.js.map +0 -1
  185. package/dist/otel/instrumentations/gestureInstrumentation.d.ts +0 -15
  186. package/dist/otel/instrumentations/gestureInstrumentation.js +0 -1
  187. package/dist/otel/instrumentations/gestureInstrumentation.js.map +0 -1
  188. package/dist/otel/instrumentations/reactNativeInstrumentation.d.ts +0 -8
  189. package/dist/otel/instrumentations/reactNativeInstrumentation.js +0 -1
  190. package/dist/otel/instrumentations/reactNativeInstrumentation.js.map +0 -1
  191. package/dist/otel/instrumentations/reactNavigationInstrumentation.d.ts +0 -13
  192. package/dist/otel/instrumentations/reactNavigationInstrumentation.js +0 -1
  193. package/dist/otel/instrumentations/reactNavigationInstrumentation.js.map +0 -1
  194. package/dist/recorder/gestureHandlerRecorder.d.ts +0 -19
  195. package/dist/recorder/gestureHandlerRecorder.js +0 -1
  196. package/dist/recorder/gestureHandlerRecorder.js.map +0 -1
  197. package/dist/types/rrweb.d.ts +0 -118
  198. package/dist/types/rrweb.js +0 -1
  199. package/dist/types/rrweb.js.map +0 -1
  200. package/scripts/generate-app-metadata.js +0 -173
  201. package/src/components/GestureCaptureWrapper/GestureCaptureWrapper.tsx +0 -86
  202. package/src/components/GestureCaptureWrapper/index.ts +0 -1
  203. package/src/components/ScreenRecorderView/ScreenRecorderView.tsx +0 -72
  204. package/src/components/ScreenRecorderView/index.ts +0 -1
  205. package/src/components/index.ts +0 -1
  206. package/src/config/constants.ts +0 -60
  207. package/src/config/defaults.ts +0 -82
  208. package/src/config/index.ts +0 -6
  209. package/src/config/masking.ts +0 -27
  210. package/src/config/session-recorder.ts +0 -55
  211. package/src/config/validators.ts +0 -31
  212. package/src/context/SessionRecorderContext.tsx +0 -75
  213. package/src/expo.ts +0 -11
  214. package/src/index.ts +0 -17
  215. package/src/otel/helpers.ts +0 -275
  216. package/src/otel/index.ts +0 -138
  217. package/src/otel/instrumentations/index.ts +0 -115
  218. package/src/patch/index.ts +0 -1
  219. package/src/patch/xhr.ts +0 -142
  220. package/src/recorder/eventExporter.ts +0 -141
  221. package/src/recorder/gestureRecorder.ts +0 -498
  222. package/src/recorder/index.ts +0 -179
  223. package/src/recorder/navigationTracker.ts +0 -449
  224. package/src/recorder/screenRecorder.ts +0 -498
  225. package/src/services/api.service.ts +0 -203
  226. package/src/services/storage.service.ts +0 -158
  227. package/src/session-recorder.ts +0 -600
  228. package/src/types/expo.d.ts +0 -23
  229. package/src/types/index.ts +0 -28
  230. package/src/types/session-recorder.ts +0 -423
  231. package/src/types/session.ts +0 -65
  232. package/src/utils/app-metadata.ts +0 -31
  233. package/src/utils/index.ts +0 -8
  234. package/src/utils/logger.ts +0 -225
  235. package/src/utils/platform.ts +0 -384
  236. package/src/utils/request-utils.ts +0 -61
  237. package/src/utils/rrweb-events.ts +0 -309
  238. package/src/utils/session.ts +0 -18
  239. package/src/utils/time.ts +0 -17
  240. package/src/utils/type-utils.ts +0 -75
  241. package/src/version.ts +0 -1
  242. package/tsconfig.json +0 -24
@@ -1,13 +1,25 @@
1
+ import { Span } from '@opentelemetry/api';
1
2
  import { SessionType } from '@multiplayer-app/session-recorder-common';
2
3
  import { PropagateTraceHeaderCorsUrls } from '@opentelemetry/sdk-trace-web';
3
- import { Span } from '@opentelemetry/api';
4
4
  import type { ISession } from './session';
5
+ export declare enum SessionState {
6
+ started = "2",
7
+ paused = "1",
8
+ stopped = "0"
9
+ }
10
+ /**
11
+ * Enumeration for widget button placement positions
12
+ */
5
13
  export declare enum WidgetButtonPlacement {
6
14
  topLeft = "top-left",
7
15
  topRight = "top-right",
8
16
  bottomLeft = "bottom-left",
9
17
  bottomRight = "bottom-right"
10
18
  }
19
+ /**
20
+ * Main configuration interface for the Session Recorder
21
+ * Contains all configurable options for session recording, tracing, and UI
22
+ */
11
23
  export interface SessionRecorderOptions {
12
24
  /**
13
25
  * The API key used to authenticate with the session debugger service.
@@ -40,15 +52,6 @@ export interface SessionRecorderOptions {
40
52
  * Additionally, URLs that exactly match any string in the array will also be ignored.
41
53
  */
42
54
  ignoreUrls?: Array<string | RegExp>;
43
- /**
44
- * (Optional) Determines where the record button should be placed on the screen.
45
- * Possible values:
46
- * - 'top-left'
47
- * - 'top-right'
48
- * - 'bottom-left'
49
- * - 'bottom-right'
50
- */
51
- widgetButtonPlacement?: WidgetButtonPlacement;
52
55
  /**
53
56
  * (Optional) Enables the continuous recording feature and UI.
54
57
  * If false, the UI toggle is hidden and attempts to start a continuous
@@ -57,11 +60,26 @@ export interface SessionRecorderOptions {
57
60
  */
58
61
  showContinuousRecording?: boolean;
59
62
  /**
60
- * (Optional) If false, the session recording widget will be hidden from the UI.
61
- * Use this option if you want to enable session recording without a visible UI element.
62
- * @default showWidget = true
63
- */
64
- showWidget?: boolean;
63
+ * Optional widget configuration
64
+ */
65
+ widget?: {
66
+ /** Enables/disables the widget entirely
67
+ * @default true
68
+ */
69
+ enabled?: boolean;
70
+ /** Floating button config
71
+ * @default visible: true, placement: 'bottom-right'
72
+ */
73
+ button?: {
74
+ visible?: boolean;
75
+ placement?: WidgetButtonPlacement;
76
+ };
77
+ /**
78
+ * (Optional) Configuration for customizable UI text and labels
79
+ * @default See PopoverTextConfig defaults
80
+ */
81
+ textOverrides?: TextOverridesOptions;
82
+ };
65
83
  /**
66
84
  * (Optional) Trace ID Ratio for sampling
67
85
  * @default 0.15
@@ -81,11 +99,6 @@ export interface SessionRecorderOptions {
81
99
  * @default 100000
82
100
  */
83
101
  maxCapturingHttpPayloadSize?: number;
84
- /**
85
- * (Optional) If true, uses post message fallback
86
- * @default false
87
- */
88
- usePostMessageFallback?: boolean;
89
102
  /** If true, captures body in traces
90
103
  * @default true
91
104
  */
@@ -98,113 +111,27 @@ export interface SessionRecorderOptions {
98
111
  * (Optional) Configuration for masking sensitive data in session recordings
99
112
  * @default { maskAllInputs: true, isContentMaskingEnabled: true }
100
113
  */
101
- masking?: MaskingConfig;
102
- /**
103
- * (Optional) Configuration for customizable UI text and labels
104
- * @default See PopoverTextConfig defaults
105
- */
106
- widgetTextOverrides?: WidgetTextOverridesConfig;
107
- /** Whether to record gestures */
108
- recordGestures?: boolean;
109
- /** Whether to record navigation */
110
- recordNavigation?: boolean;
111
- /** Whether to record screen */
112
- recordScreen?: boolean;
113
- }
114
- /**
115
- * Interface for masking configuration
116
- */
117
- export interface MaskingConfig {
118
- /** If true, enables masking for debug span payload in traces
119
- * @default true
120
- */
121
- isContentMaskingEnabled?: boolean;
122
- /** Custom function for masking body in traces */
123
- maskBody?: (payload: any, span: Span) => any;
124
- /** Custom function for masking headers in traces */
125
- maskHeaders?: (headers: any, span: any) => any;
126
- /** List of body fields to mask in traces */
127
- maskBodyFieldsList?: string[];
128
- /** List of headers to mask in traces */
129
- maskHeadersList?: string[];
130
- /** List of headers to include in traces (if specified, only these headers will be captured) */
131
- headersToInclude?: string[];
132
- /** List of headers to exclude from traces */
133
- headersToExclude?: string[];
134
- }
135
- /**
136
- * Base configuration interface with common properties
137
- */
138
- export interface BaseConfig {
139
- /** API key for authentication */
140
- apiKey: string;
141
- /** Base URL for the API calls */
142
- apiBaseUrl: string;
143
- /** Base URL for the API calls */
144
- exporterEndpoint: string;
145
- /** Whether to use post message fallback */
146
- usePostMessageFallback?: boolean;
147
- }
148
- /**
149
- * Configuration interface for the Tracer class
150
- */
151
- export type TracerReactNativeMasking = Pick<MaskingConfig, 'isContentMaskingEnabled' | 'maskBody' | 'maskHeaders' | 'maskBodyFieldsList' | 'maskHeadersList' | 'headersToInclude' | 'headersToExclude'>;
152
- export interface TracerReactNativeConfig extends BaseConfig {
153
- /** Application name */
154
- application: string;
155
- /** Application version */
156
- version: string;
157
- /** Environment (e.g., 'production', 'staging') */
158
- environment: string;
159
- /** URLs to ignore during tracing */
160
- ignoreUrls: Array<string | RegExp>;
161
- /** Trace ID ratio for sampling */
162
- sampleTraceRatio: number;
163
- /** URLs for CORS trace header propagation */
164
- propagateTraceHeaderCorsUrls: PropagateTraceHeaderCorsUrls;
165
- /** Whether to schematize document span payload */
166
- schemifyDocSpanPayload: boolean;
167
- /** Maximum size for capturing HTTP payload */
168
- maxCapturingHttpPayloadSize: number;
169
- /** If true, captures body in traces
170
- * @default true
171
- */
172
- captureBody: boolean;
173
- /** If true, captures headers in traces
174
- * @default true
175
- */
176
- captureHeaders: boolean;
177
- /** Configuration for masking sensitive data in session recordings */
178
- masking: TracerReactNativeMasking;
179
- }
180
- /**
181
- * Configuration interface for the Recorder class
182
- */
183
- export interface RecorderConfig extends BaseConfig {
114
+ masking?: MaskingOptions;
184
115
  /** Whether to record gestures */
185
116
  recordGestures?: boolean;
186
117
  /** Whether to record navigation */
187
118
  recordNavigation?: boolean;
188
119
  /** Whether to record screen */
189
120
  recordScreen?: boolean;
190
- }
191
- /**
192
- * Configuration interface for the SessionWidget class
193
- */
194
- export interface SessionWidgetConfig {
195
- /** Whether to show the widget */
196
- showWidget: boolean;
197
- /** Placement of the widget button */
198
- widgetButtonPlacement: 'top-left' | 'top-right' | 'bottom-left' | 'bottom-right';
199
- /** Whether continuous recording feature is enabled */
200
- showContinuousRecording: boolean;
201
- /** Configuration for customizable UI text and labels */
202
- widgetTextOverrides: WidgetTextOverridesConfig;
121
+ /**
122
+ * (Optional) Logger configuration overrides
123
+ * Allows setting log level, console enabling, and prefix customizations
124
+ */
125
+ logger?: {
126
+ level?: number;
127
+ enabled?: boolean;
128
+ };
203
129
  }
204
130
  /**
205
131
  * Interface for customizable widget text configuration
132
+ * Allows overriding default text labels and messages in the UI
206
133
  */
207
- export interface WidgetTextOverridesConfig {
134
+ export interface TextOverridesOptions {
208
135
  /** Title for the initial popover when continuous recording is enabled */
209
136
  initialTitleWithContinuous?: string;
210
137
  /** Title for the initial popover when continuous recording is disabled */
@@ -247,17 +174,41 @@ export interface WidgetTextOverridesConfig {
247
174
  submitDialogCancelText?: string;
248
175
  }
249
176
  /**
250
- * Configuration interface for the ApiService class
177
+ * Interface for masking configuration options
178
+ * Controls what data is masked in both traces and screen recordings
251
179
  */
252
- export interface ApiServiceConfig extends BaseConfig {
253
- }
254
- export interface SessionRecorderConfigs extends Required<SessionRecorderOptions> {
255
- }
256
- export declare enum SessionState {
257
- started = "2",
258
- paused = "1",
259
- stopped = "0"
180
+ export interface MaskingOptions {
181
+ /** If true, enables masking for debug span payload in traces */
182
+ isContentMaskingEnabled?: boolean;
183
+ /** Custom function for masking body in traces */
184
+ maskBody?: (payload: any, span: Span) => any;
185
+ /** Custom function for masking headers in traces */
186
+ maskHeaders?: (headers: any, span: any) => any;
187
+ /** List of body fields to mask in traces */
188
+ maskBodyFieldsList?: string[];
189
+ /** List of headers to mask in traces */
190
+ maskHeadersList?: string[];
191
+ /** List of headers to include in traces (if specified, only these headers will be captured) */
192
+ headersToInclude?: string[];
193
+ /** List of headers to exclude from traces */
194
+ headersToExclude?: string[];
195
+ /** Whether to mask text inputs (UITextField, UITextView, React Native text components) */
196
+ maskTextInputs?: boolean;
197
+ /** Whether to mask images (UIImageView, React Native Image components) */
198
+ maskImages?: boolean;
199
+ /** Whether to mask buttons (UIButton) */
200
+ maskButtons?: boolean;
201
+ /** Whether to mask labels (UILabel) */
202
+ maskLabels?: boolean;
203
+ /** Whether to mask web views (WKWebView) */
204
+ maskWebViews?: boolean;
205
+ /** Whether to mask sandboxed views (system views that don't belong to current process) */
206
+ maskSandboxedViews?: boolean;
260
207
  }
208
+ /**
209
+ * Main interface for the Session Recorder
210
+ * Defines the public API for session recording functionality
211
+ */
261
212
  export interface ISessionRecorder {
262
213
  /**
263
214
  * The current session ID
@@ -329,13 +280,11 @@ export interface ISessionRecorder {
329
280
  * @param attributes - the attributes to set
330
281
  */
331
282
  setSessionAttributes(attributes: Record<string, any>): void;
332
- /**
333
- * Set a custom click handler for the recording button
334
- * @param handler - function that will be invoked when the button is clicked
335
- */
336
- set recordingButtonClickHandler(handler: () => boolean | void);
337
283
  }
338
- export type Breaker = {};
284
+ /**
285
+ * Interface representing screen capture events
286
+ * Contains metadata about screen recordings
287
+ */
339
288
  export interface ScreenEvent {
340
289
  screenName: string;
341
290
  timestamp: number;
@@ -344,6 +293,10 @@ export interface ScreenEvent {
344
293
  metadata?: Record<string, any>;
345
294
  dataUrl?: string;
346
295
  }
296
+ /**
297
+ * Interface representing gesture/touch events
298
+ * Contains information about user interactions with the screen
299
+ */
347
300
  export interface GestureEvent {
348
301
  type: string;
349
302
  timestamp: number;
@@ -355,8 +308,19 @@ export interface GestureEvent {
355
308
  x: number;
356
309
  y: number;
357
310
  };
311
+ targetInfo?: {
312
+ identifier: string;
313
+ label?: string;
314
+ role?: string;
315
+ testId?: string;
316
+ text?: string;
317
+ };
358
318
  metadata?: Record<string, any>;
359
319
  }
320
+ /**
321
+ * Interface representing navigation events
322
+ * Contains information about screen/route changes
323
+ */
360
324
  export interface NavigationEvent {
361
325
  type: string;
362
326
  timestamp: number;
@@ -1 +1 @@
1
- "use strict";Object.defineProperty(exports,"__esModule",{value:true});exports.WidgetButtonPlacement=exports.SessionState=void 0;var WidgetButtonPlacement;(function(WidgetButtonPlacement){WidgetButtonPlacement["topLeft"]="top-left";WidgetButtonPlacement["topRight"]="top-right";WidgetButtonPlacement["bottomLeft"]="bottom-left";WidgetButtonPlacement["bottomRight"]="bottom-right";})(WidgetButtonPlacement||(exports.WidgetButtonPlacement=WidgetButtonPlacement={}));var SessionState;(function(SessionState){SessionState["started"]="2";SessionState["paused"]="1";SessionState["stopped"]="0";})(SessionState||(exports.SessionState=SessionState={}));
1
+ "use strict";Object.defineProperty(exports,"__esModule",{value:true});exports.WidgetButtonPlacement=exports.SessionState=void 0;var SessionState;(function(SessionState){SessionState["started"]="2";SessionState["paused"]="1";SessionState["stopped"]="0";})(SessionState||(exports.SessionState=SessionState={}));var WidgetButtonPlacement;(function(WidgetButtonPlacement){WidgetButtonPlacement["topLeft"]="top-left";WidgetButtonPlacement["topRight"]="top-right";WidgetButtonPlacement["bottomLeft"]="bottom-left";WidgetButtonPlacement["bottomRight"]="bottom-right";})(WidgetButtonPlacement||(exports.WidgetButtonPlacement=WidgetButtonPlacement={}));
@@ -1 +1 @@
1
- {"version":3,"file":"session-recorder.js","sourceRoot":"","sources":["../../src/types/session-recorder.ts"],"names":[],"mappings":"AAMA,MAAM,CAAN,IAAY,qBAKX;AALD,WAAY,qBAAqB;IAC/B,6CAAoB,CAAA;IACpB,+CAAsB,CAAA;IACtB,mDAA0B,CAAA;IAC1B,qDAA4B,CAAA;AAC9B,CAAC,EALW,qBAAqB,KAArB,qBAAqB,QAKhC;AA0RD,MAAM,CAAN,IAAY,YAIX;AAJD,WAAY,YAAY;IACtB,6BAAa,CAAA;IACb,4BAAY,CAAA;IACZ,6BAAa,CAAA;AACf,CAAC,EAJW,YAAY,KAAZ,YAAY,QAIvB"}
1
+ {"version":3,"file":"session-recorder.js","sourceRoot":"","sources":["../../src/types/session-recorder.ts"],"names":[],"mappings":"AAOA,4CAA4C;AAE5C,MAAM,CAAN,IAAY,YAIX;AAJD,WAAY,YAAY;IACtB,6BAAa,CAAA;IACb,4BAAY,CAAA;IACZ,6BAAa,CAAA;AACf,CAAC,EAJW,YAAY,KAAZ,YAAY,QAIvB;AAED;;GAEG;AACH,MAAM,CAAN,IAAY,qBAKX;AALD,WAAY,qBAAqB;IAC/B,6CAAoB,CAAA;IACpB,+CAAsB,CAAA;IACtB,mDAA0B,CAAA;IAC1B,qDAA4B,CAAA;AAC9B,CAAC,EALW,qBAAqB,KAArB,qBAAqB,QAKhC"}
@@ -0,0 +1,64 @@
1
+ import { ViewHierarchyNode } from '../types';
2
+ /**
3
+ * Global registry for components that should be masked
4
+ * This is a practical solution for React Native input masking
5
+ */
6
+ declare class ComponentRegistry {
7
+ private components;
8
+ private static instance;
9
+ static getInstance(): ComponentRegistry;
10
+ /**
11
+ * Register a component for masking
12
+ * @param id - Unique identifier for the component
13
+ * @param component - Component information
14
+ */
15
+ registerComponent(id: string, component: ViewHierarchyNode): void;
16
+ /**
17
+ * Unregister a component
18
+ * @param id - Component identifier
19
+ */
20
+ unregisterComponent(id: string): void;
21
+ /**
22
+ * Get all registered components
23
+ * @returns Array of registered components
24
+ */
25
+ getAllComponents(): ViewHierarchyNode[];
26
+ /**
27
+ * Get a specific component
28
+ * @param id - Component identifier
29
+ * @returns Component or undefined
30
+ */
31
+ getComponent(id: string): ViewHierarchyNode | undefined;
32
+ /**
33
+ * Clear all registered components
34
+ */
35
+ clearAll(): void;
36
+ /**
37
+ * Get components that should be masked
38
+ * @returns Array of components that need masking
39
+ */
40
+ getMaskableComponents(): ViewHierarchyNode[];
41
+ }
42
+ export declare const componentRegistry: ComponentRegistry;
43
+ /**
44
+ * Helper function to register a TextInput for masking
45
+ * @param id - Unique identifier
46
+ * @param ref - React Native ref
47
+ * @param props - Component props
48
+ */
49
+ export declare function registerTextInput(id: string, ref: any, props?: any): void;
50
+ /**
51
+ * Helper function to register any component for masking
52
+ * @param id - Unique identifier
53
+ * @param type - Component type
54
+ * @param ref - React Native ref
55
+ * @param props - Component props
56
+ * @param shouldMask - Whether this component should be masked
57
+ */
58
+ export declare function registerComponent(id: string, type: string, ref: any, props?: any, shouldMask?: boolean): void;
59
+ /**
60
+ * Unregister a component
61
+ * @param id - Component identifier
62
+ */
63
+ export declare function unregisterComponent(id: string): void;
64
+ export default componentRegistry;
@@ -0,0 +1 @@
1
+ "use strict";var _interopRequireDefault=require("@babel/runtime/helpers/interopRequireDefault");Object.defineProperty(exports,"__esModule",{value:true});exports["default"]=exports.componentRegistry=void 0;exports.registerComponent=registerComponent;exports.registerTextInput=registerTextInput;exports.unregisterComponent=unregisterComponent;var _defineProperty2=_interopRequireDefault(require("@babel/runtime/helpers/defineProperty"));var _classCallCheck2=_interopRequireDefault(require("@babel/runtime/helpers/classCallCheck"));var _createClass2=_interopRequireDefault(require("@babel/runtime/helpers/createClass"));var _index=require("./index");function ownKeys(e,r){var t=Object.keys(e);if(Object.getOwnPropertySymbols){var o=Object.getOwnPropertySymbols(e);r&&(o=o.filter(function(r){return Object.getOwnPropertyDescriptor(e,r).enumerable;})),t.push.apply(t,o);}return t;}function _objectSpread(e){for(var r=1;r<arguments.length;r++){var t=null!=arguments[r]?arguments[r]:{};r%2?ownKeys(Object(t),!0).forEach(function(r){(0,_defineProperty2["default"])(e,r,t[r]);}):Object.getOwnPropertyDescriptors?Object.defineProperties(e,Object.getOwnPropertyDescriptors(t)):ownKeys(Object(t)).forEach(function(r){Object.defineProperty(e,r,Object.getOwnPropertyDescriptor(t,r));});}return e;}var ComponentRegistry=function(){function ComponentRegistry(){(0,_classCallCheck2["default"])(this,ComponentRegistry);this.components=new Map();}return(0,_createClass2["default"])(ComponentRegistry,[{key:"registerComponent",value:function registerComponent(id,component){this.components.set(id,component);_index.logger.debug('ComponentRegistry',"Registered component: ".concat(id));}},{key:"unregisterComponent",value:function unregisterComponent(id){this.components["delete"](id);_index.logger.debug('ComponentRegistry',"Unregistered component: ".concat(id));}},{key:"getAllComponents",value:function getAllComponents(){return Array.from(this.components.values());}},{key:"getComponent",value:function getComponent(id){return this.components.get(id);}},{key:"clearAll",value:function clearAll(){this.components.clear();_index.logger.debug('ComponentRegistry','Cleared all components');}},{key:"getMaskableComponents",value:function getMaskableComponents(){return this.getAllComponents().filter(function(component){return component.masked;});}}],[{key:"getInstance",value:function getInstance(){if(!ComponentRegistry.instance){ComponentRegistry.instance=new ComponentRegistry();}return ComponentRegistry.instance;}}]);}();var componentRegistry=exports.componentRegistry=ComponentRegistry.getInstance();function registerTextInput(id,ref){var props=arguments.length>2&&arguments[2]!==undefined?arguments[2]:{};if(!ref){_index.logger.warn('ComponentRegistry',"Cannot register TextInput ".concat(id,": ref is null"));return;}ref.measure(function(x,y,width,height,pageX,pageY){var component={type:'TextInput',props:_objectSpread(_objectSpread({},props),{},{accessibilityLabel:props.accessibilityLabel||id}),bounds:{x:pageX,y:pageY,width:width,height:height},id:id,masked:true};componentRegistry.registerComponent(id,component);});}function registerComponent(id,type,ref){var props=arguments.length>3&&arguments[3]!==undefined?arguments[3]:{};var shouldMask=arguments.length>4&&arguments[4]!==undefined?arguments[4]:true;if(!ref){_index.logger.warn('ComponentRegistry',"Cannot register ".concat(type," ").concat(id,": ref is null"));return;}ref.measure(function(x,y,width,height,pageX,pageY){var component={type:type,props:_objectSpread(_objectSpread({},props),{},{accessibilityLabel:props.accessibilityLabel||id}),bounds:{x:pageX,y:pageY,width:width,height:height},id:id,masked:shouldMask};componentRegistry.registerComponent(id,component);});}function unregisterComponent(id){componentRegistry.unregisterComponent(id);}var _default=exports["default"]=componentRegistry;
@@ -0,0 +1 @@
1
+ {"version":3,"file":"componentRegistry.js","sourceRoot":"","sources":["../../src/utils/componentRegistry.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,21 @@
1
+ export type OptionalExpoConstants = {
2
+ expoVersion?: string;
3
+ platform?: {
4
+ ios?: unknown;
5
+ android?: unknown;
6
+ };
7
+ expoConfig?: {
8
+ name?: string;
9
+ version?: string;
10
+ ios?: {
11
+ buildNumber?: string | number;
12
+ bundleIdentifier?: string;
13
+ };
14
+ android?: {
15
+ versionCode?: string | number;
16
+ package?: string;
17
+ };
18
+ };
19
+ } | undefined;
20
+ declare const OptionalConstants: OptionalExpoConstants;
21
+ export default OptionalConstants;
@@ -0,0 +1,3 @@
1
+ import type { OptionalExpoConstants } from './constants.optional';
2
+ declare const _default: OptionalExpoConstants;
3
+ export default _default;
@@ -0,0 +1 @@
1
+ "use strict";var _interopRequireDefault=require("@babel/runtime/helpers/interopRequireDefault");Object.defineProperty(exports,"__esModule",{value:true});exports["default"]=void 0;var _expoConstants=_interopRequireDefault(require("expo-constants"));var _default=exports["default"]=_expoConstants["default"];
@@ -0,0 +1 @@
1
+ {"version":3,"file":"constants.optional.expo.js","sourceRoot":"","sources":["../../src/utils/constants.optional.expo.ts"],"names":[],"mappings":"AAAA,2FAA2F;AAC3F,OAAO,SAAS,MAAM,gBAAgB,CAAA;AAGtC,eAAe,SAAkC,CAAA"}
@@ -0,0 +1 @@
1
+ "use strict";Object.defineProperty(exports,"__esModule",{value:true});exports["default"]=void 0;var OptionalConstants=undefined;var _default=exports["default"]=OptionalConstants;
@@ -0,0 +1 @@
1
+ {"version":3,"file":"constants.optional.js","sourceRoot":"","sources":["../../src/utils/constants.optional.ts"],"names":[],"mappings":"AAaA,MAAM,iBAAiB,GAA0B,SAAS,CAAA;AAE1D,eAAe,iBAAiB,CAAA"}
@@ -0,0 +1,8 @@
1
+ type Listener<T> = (state: T, prevState: T) => void;
2
+ export type Store<T> = {
3
+ getState: () => T;
4
+ setState: (partial: Partial<T> | ((prev: T) => T), action?: string) => void;
5
+ subscribe: (listener: Listener<T>) => () => void;
6
+ };
7
+ export declare function createStore<T extends object>(initialState: T): Store<T>;
8
+ export {};
@@ -0,0 +1 @@
1
+ "use strict";var _interopRequireDefault=require("@babel/runtime/helpers/interopRequireDefault");Object.defineProperty(exports,"__esModule",{value:true});exports.createStore=createStore;var _defineProperty2=_interopRequireDefault(require("@babel/runtime/helpers/defineProperty"));function ownKeys(e,r){var t=Object.keys(e);if(Object.getOwnPropertySymbols){var o=Object.getOwnPropertySymbols(e);r&&(o=o.filter(function(r){return Object.getOwnPropertyDescriptor(e,r).enumerable;})),t.push.apply(t,o);}return t;}function _objectSpread(e){for(var r=1;r<arguments.length;r++){var t=null!=arguments[r]?arguments[r]:{};r%2?ownKeys(Object(t),!0).forEach(function(r){(0,_defineProperty2["default"])(e,r,t[r]);}):Object.getOwnPropertyDescriptors?Object.defineProperties(e,Object.getOwnPropertyDescriptors(t)):ownKeys(Object(t)).forEach(function(r){Object.defineProperty(e,r,Object.getOwnPropertyDescriptor(t,r));});}return e;}function createStore(initialState){var state=initialState;var listeners=new Set();var getState=function getState(){return state;};var setState=function setState(partial){var prevState=state;var nextState=typeof partial==='function'?partial(prevState):_objectSpread(_objectSpread({},prevState),partial);if(Object.is(nextState,prevState))return;state=nextState;listeners.forEach(function(l){return l(state,prevState);});};var subscribe=function subscribe(listener){listeners.add(listener);return function(){return listeners["delete"](listener);};};return{getState:getState,setState:setState,subscribe:subscribe};}
@@ -0,0 +1 @@
1
+ {"version":3,"file":"createStore.js","sourceRoot":"","sources":["../../src/utils/createStore.ts"],"names":[],"mappings":"AAQA,MAAM,UAAU,WAAW,CAAmB,YAAe;IAC3D,IAAI,KAAK,GAAM,YAAY,CAAA;IAC3B,MAAM,SAAS,GAAG,IAAI,GAAG,EAAe,CAAA;IAExC,MAAM,QAAQ,GAAG,GAAG,EAAE,CAAC,KAAK,CAAA;IAE5B,MAAM,QAAQ,GAAyB,CAAC,OAAO,EAAE,EAAE;QACjD,MAAM,SAAS,GAAG,KAAK,CAAA;QACvB,MAAM,SAAS,GAAG,OAAO,OAAO,KAAK,UAAU,CAAC,CAAC,CAAE,OAA0B,CAAC,SAAS,CAAC,CAAC,CAAC,CAAC,EAAE,GAAG,SAAS,EAAE,GAAG,OAAO,EAAO,CAAA;QAC5H,IAAI,MAAM,CAAC,EAAE,CAAC,SAAS,EAAE,SAAS,CAAC;YAAE,OAAM;QAC3C,KAAK,GAAG,SAAS,CAAA;QACjB,SAAS,CAAC,OAAO,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC,CAAC,KAAK,EAAE,SAAS,CAAC,CAAC,CAAA;IAC/C,CAAC,CAAA;IAED,MAAM,SAAS,GAA0B,CAAC,QAAQ,EAAE,EAAE;QACpD,SAAS,CAAC,GAAG,CAAC,QAAQ,CAAC,CAAA;QACvB,OAAO,GAAG,EAAE,CAAC,SAAS,CAAC,MAAM,CAAC,QAAQ,CAAC,CAAA;IACzC,CAAC,CAAA;IAED,OAAO,EAAE,QAAQ,EAAE,QAAQ,EAAE,SAAS,EAAE,CAAA;AAC1C,CAAC"}
@@ -10,7 +10,7 @@ export declare enum LogLevel {
10
10
  }
11
11
  export interface LoggerConfig {
12
12
  level: LogLevel;
13
- enableConsole: boolean;
13
+ enabled: boolean;
14
14
  enablePrefix: boolean;
15
15
  prefix: string;
16
16
  }
@@ -1 +1 @@
1
- "use strict";var _interopRequireDefault=require("@babel/runtime/helpers/interopRequireDefault");Object.defineProperty(exports,"__esModule",{value:true});exports.logger=exports.logWarn=exports.logSuccess=exports.logInfo=exports.logFailure=exports.logError=exports.logDebug=exports.LogLevel=void 0;var _defineProperty2=_interopRequireDefault(require("@babel/runtime/helpers/defineProperty"));var _classCallCheck2=_interopRequireDefault(require("@babel/runtime/helpers/classCallCheck"));var _createClass2=_interopRequireDefault(require("@babel/runtime/helpers/createClass"));function ownKeys(e,r){var t=Object.keys(e);if(Object.getOwnPropertySymbols){var o=Object.getOwnPropertySymbols(e);r&&(o=o.filter(function(r){return Object.getOwnPropertyDescriptor(e,r).enumerable;})),t.push.apply(t,o);}return t;}function _objectSpread(e){for(var r=1;r<arguments.length;r++){var t=null!=arguments[r]?arguments[r]:{};r%2?ownKeys(Object(t),!0).forEach(function(r){(0,_defineProperty2["default"])(e,r,t[r]);}):Object.getOwnPropertyDescriptors?Object.defineProperties(e,Object.getOwnPropertyDescriptors(t)):ownKeys(Object(t)).forEach(function(r){Object.defineProperty(e,r,Object.getOwnPropertyDescriptor(t,r));});}return e;}var LogLevel;(function(LogLevel){LogLevel[LogLevel["DEBUG"]=0]="DEBUG";LogLevel[LogLevel["INFO"]=1]="INFO";LogLevel[LogLevel["WARN"]=2]="WARN";LogLevel[LogLevel["ERROR"]=3]="ERROR";})(LogLevel||(exports.LogLevel=LogLevel={}));var Logger=function(){function Logger(){(0,_classCallCheck2["default"])(this,Logger);this.config={level:LogLevel.INFO,enableConsole:true,enablePrefix:true,prefix:'[SessionRecorder]'};this.componentPrefixes=new Map([['ScreenRecorder','📸'],['GestureRecorder','👆'],['GestureCaptureWrapper','📸'],['SessionRecorderContext','🎯'],['EventExporter','📤'],['NavigationTracker','📸'],['RecorderReactNativeSDK','📤'],['DEBUGGER_LIB','🔍']]);}return(0,_createClass2["default"])(Logger,[{key:"configure",value:function configure(config){this.config=_objectSpread(_objectSpread({},this.config),config);}},{key:"setLevel",value:function setLevel(level){this.config.level=level;}},{key:"setConsoleEnabled",value:function setConsoleEnabled(enabled){this.config.enableConsole=enabled;}},{key:"setComponentPrefix",value:function setComponentPrefix(component,emoji){this.componentPrefixes.set(component,emoji);}},{key:"getPrefix",value:function getPrefix(component){if(!this.config.enablePrefix)return'';var emoji=this.componentPrefixes.get(component)||'📝';return"".concat(this.config.prefix," ").concat(emoji," [").concat(component,"]");}},{key:"shouldLog",value:function shouldLog(level){return level>=this.config.level&&this.config.enableConsole;}},{key:"formatMessage",value:function formatMessage(component,level,message,data){var prefix=this.getPrefix(component);var timestamp=new Date().toISOString();var levelName=LogLevel[level];var formattedMessage="".concat(prefix," ").concat(levelName," ").concat(message);if(data!==undefined){formattedMessage+=" ".concat(JSON.stringify(data));}return formattedMessage;}},{key:"debug",value:function debug(component,message,data){if(!this.shouldLog(LogLevel.DEBUG))return;var formattedMessage=this.formatMessage(component,LogLevel.DEBUG,message,data);console.log(formattedMessage);}},{key:"info",value:function info(component,message,data){if(!this.shouldLog(LogLevel.INFO))return;var formattedMessage=this.formatMessage(component,LogLevel.INFO,message,data);console.log(formattedMessage);}},{key:"warn",value:function warn(component,message,data){if(!this.shouldLog(LogLevel.WARN))return;var formattedMessage=this.formatMessage(component,LogLevel.WARN,message,data);console.warn(formattedMessage);}},{key:"error",value:function error(component,message,data){if(!this.shouldLog(LogLevel.ERROR))return;var formattedMessage=this.formatMessage(component,LogLevel.ERROR,message,data);console.error(formattedMessage);}},{key:"success",value:function success(component,message,data){if(!this.shouldLog(LogLevel.INFO))return;var prefix=this.getPrefix(component);var timestamp=new Date().toISOString();var formattedMessage="".concat(prefix," \u2705 ").concat(message);var fullMessage=formattedMessage;if(data!==undefined){fullMessage+=" ".concat(JSON.stringify(data));}console.log(fullMessage);}},{key:"failure",value:function failure(component,message,data){if(!this.shouldLog(LogLevel.ERROR))return;var prefix=this.getPrefix(component);var timestamp=new Date().toISOString();var formattedMessage="".concat(prefix," \u274C ").concat(message);var fullMessage=formattedMessage;if(data!==undefined){fullMessage+=" ".concat(JSON.stringify(data));}console.error(fullMessage);}}]);}();var logger=exports.logger=new Logger();var logDebug=exports.logDebug=function logDebug(component,message,data){return logger.debug(component,message,data);};var logInfo=exports.logInfo=function logInfo(component,message,data){return logger.info(component,message,data);};var logWarn=exports.logWarn=function logWarn(component,message,data){return logger.warn(component,message,data);};var logError=exports.logError=function logError(component,message,data){return logger.error(component,message,data);};var logSuccess=exports.logSuccess=function logSuccess(component,message,data){return logger.success(component,message,data);};var logFailure=exports.logFailure=function logFailure(component,message,data){return logger.failure(component,message,data);};
1
+ "use strict";var _interopRequireDefault=require("@babel/runtime/helpers/interopRequireDefault");Object.defineProperty(exports,"__esModule",{value:true});exports.logger=exports.logWarn=exports.logSuccess=exports.logInfo=exports.logFailure=exports.logError=exports.logDebug=exports.LogLevel=void 0;var _defineProperty2=_interopRequireDefault(require("@babel/runtime/helpers/defineProperty"));var _classCallCheck2=_interopRequireDefault(require("@babel/runtime/helpers/classCallCheck"));var _createClass2=_interopRequireDefault(require("@babel/runtime/helpers/createClass"));function ownKeys(e,r){var t=Object.keys(e);if(Object.getOwnPropertySymbols){var o=Object.getOwnPropertySymbols(e);r&&(o=o.filter(function(r){return Object.getOwnPropertyDescriptor(e,r).enumerable;})),t.push.apply(t,o);}return t;}function _objectSpread(e){for(var r=1;r<arguments.length;r++){var t=null!=arguments[r]?arguments[r]:{};r%2?ownKeys(Object(t),!0).forEach(function(r){(0,_defineProperty2["default"])(e,r,t[r]);}):Object.getOwnPropertyDescriptors?Object.defineProperties(e,Object.getOwnPropertyDescriptors(t)):ownKeys(Object(t)).forEach(function(r){Object.defineProperty(e,r,Object.getOwnPropertyDescriptor(t,r));});}return e;}var LogLevel;(function(LogLevel){LogLevel[LogLevel["DEBUG"]=0]="DEBUG";LogLevel[LogLevel["INFO"]=1]="INFO";LogLevel[LogLevel["WARN"]=2]="WARN";LogLevel[LogLevel["ERROR"]=3]="ERROR";})(LogLevel||(exports.LogLevel=LogLevel={}));var Logger=function(){function Logger(){(0,_classCallCheck2["default"])(this,Logger);this.config={level:LogLevel.INFO,enabled:true,enablePrefix:true,prefix:'[SessionRecorder]'};this.componentPrefixes=new Map([['ScreenRecorder','📸'],['NativeGestureRecorder','👆'],['SessionRecorderContext','🎯'],['EventExporter','📤'],['NavigationTracker','📸'],['RecorderReactNativeSDK','📤'],['DEBUGGER_LIB','🔍']]);}return(0,_createClass2["default"])(Logger,[{key:"configure",value:function configure(config){this.config=_objectSpread(_objectSpread({},this.config),config);}},{key:"setLevel",value:function setLevel(level){this.config.level=level;}},{key:"setConsoleEnabled",value:function setConsoleEnabled(enabled){this.config.enabled=enabled;}},{key:"setComponentPrefix",value:function setComponentPrefix(component,emoji){this.componentPrefixes.set(component,emoji);}},{key:"getPrefix",value:function getPrefix(component){if(!this.config.enablePrefix)return'';var emoji=this.componentPrefixes.get(component)||'📝';return"".concat(this.config.prefix," ").concat(emoji," [").concat(component,"]");}},{key:"shouldLog",value:function shouldLog(level){return level>=this.config.level&&this.config.enabled;}},{key:"formatMessage",value:function formatMessage(component,level,message,data){var prefix=this.getPrefix(component);var levelName=LogLevel[level];var formattedMessage="".concat(prefix," ").concat(levelName," ").concat(message);if(data!==undefined){formattedMessage+=" ".concat(JSON.stringify(data));}return formattedMessage;}},{key:"debug",value:function debug(component,message,data){if(!this.shouldLog(LogLevel.DEBUG))return;var formattedMessage=this.formatMessage(component,LogLevel.DEBUG,message,data);console.log(formattedMessage);}},{key:"info",value:function info(component,message,data){if(!this.shouldLog(LogLevel.INFO))return;var formattedMessage=this.formatMessage(component,LogLevel.INFO,message,data);console.log(formattedMessage);}},{key:"warn",value:function warn(component,message,data){if(!this.shouldLog(LogLevel.WARN))return;var formattedMessage=this.formatMessage(component,LogLevel.WARN,message,data);console.warn(formattedMessage);}},{key:"error",value:function error(component,message,data){if(!this.shouldLog(LogLevel.ERROR))return;var formattedMessage=this.formatMessage(component,LogLevel.ERROR,message,data);console.error(formattedMessage);}},{key:"success",value:function success(component,message,data){if(!this.shouldLog(LogLevel.INFO))return;var prefix=this.getPrefix(component);var formattedMessage="".concat(prefix," \u2705 ").concat(message);var fullMessage=formattedMessage;if(data!==undefined){fullMessage+=" ".concat(JSON.stringify(data));}console.log(fullMessage);}},{key:"failure",value:function failure(component,message,data){if(!this.shouldLog(LogLevel.ERROR))return;var prefix=this.getPrefix(component);var formattedMessage="".concat(prefix," \u274C ").concat(message);var fullMessage=formattedMessage;if(data!==undefined){fullMessage+=" ".concat(JSON.stringify(data));}console.error(fullMessage);}}]);}();var logger=exports.logger=new Logger();var logDebug=exports.logDebug=function logDebug(component,message,data){return logger.debug(component,message,data);};var logInfo=exports.logInfo=function logInfo(component,message,data){return logger.info(component,message,data);};var logWarn=exports.logWarn=function logWarn(component,message,data){return logger.warn(component,message,data);};var logError=exports.logError=function logError(component,message,data){return logger.error(component,message,data);};var logSuccess=exports.logSuccess=function logSuccess(component,message,data){return logger.success(component,message,data);};var logFailure=exports.logFailure=function logFailure(component,message,data){return logger.failure(component,message,data);};
@@ -1 +1 @@
1
- {"version":3,"file":"logger.js","sourceRoot":"","sources":["../../src/utils/logger.ts"],"names":[],"mappings":"AAAA;;;GAGG;AAEH,MAAM,CAAN,IAAY,QAKX;AALD,WAAY,QAAQ;IAClB,yCAAS,CAAA;IACT,uCAAQ,CAAA;IACR,uCAAQ,CAAA;IACR,yCAAS,CAAA;AACX,CAAC,EALW,QAAQ,KAAR,QAAQ,QAKnB;AASD,MAAM,MAAM;IAAZ;QACU,WAAM,GAAiB;YAC7B,KAAK,EAAE,QAAQ,CAAC,IAAI;YACpB,aAAa,EAAE,IAAI;YACnB,YAAY,EAAE,IAAI;YAClB,MAAM,EAAE,mBAAmB;SAC5B,CAAA;QAEO,sBAAiB,GAAwB,IAAI,GAAG,CAAC;YACvD,CAAC,gBAAgB,EAAE,IAAI,CAAC;YACxB,CAAC,iBAAiB,EAAE,IAAI,CAAC;YACzB,CAAC,uBAAuB,EAAE,IAAI,CAAC;YAC/B,CAAC,wBAAwB,EAAE,IAAI,CAAC;YAChC,CAAC,eAAe,EAAE,IAAI,CAAC;YACvB,CAAC,mBAAmB,EAAE,IAAI,CAAC;YAC3B,CAAC,wBAAwB,EAAE,IAAI,CAAC;YAChC,CAAC,cAAc,EAAE,IAAI,CAAC;SACvB,CAAC,CAAA;IAiLJ,CAAC;IA/KC;;;OAGG;IACH,SAAS,CAAC,MAA6B;QACrC,IAAI,CAAC,MAAM,GAAG,EAAE,GAAG,IAAI,CAAC,MAAM,EAAE,GAAG,MAAM,EAAE,CAAA;IAC7C,CAAC;IAED;;;OAGG;IACH,QAAQ,CAAC,KAAe;QACtB,IAAI,CAAC,MAAM,CAAC,KAAK,GAAG,KAAK,CAAA;IAC3B,CAAC;IAED;;;OAGG;IACH,iBAAiB,CAAC,OAAgB;QAChC,IAAI,CAAC,MAAM,CAAC,aAAa,GAAG,OAAO,CAAA;IACrC,CAAC;IAED;;;;OAIG;IACH,kBAAkB,CAAC,SAAiB,EAAE,KAAa;QACjD,IAAI,CAAC,iBAAiB,CAAC,GAAG,CAAC,SAAS,EAAE,KAAK,CAAC,CAAA;IAC9C,CAAC;IAED;;;;OAIG;IACK,SAAS,CAAC,SAAiB;QACjC,IAAI,CAAC,IAAI,CAAC,MAAM,CAAC,YAAY;YAAE,OAAO,EAAE,CAAA;QAExC,MAAM,KAAK,GAAG,IAAI,CAAC,iBAAiB,CAAC,GAAG,CAAC,SAAS,CAAC,IAAI,IAAI,CAAA;QAC3D,OAAO,GAAG,IAAI,CAAC,MAAM,CAAC,MAAM,IAAI,KAAK,KAAK,SAAS,GAAG,CAAA;IACxD,CAAC;IAED;;;;OAIG;IACK,SAAS,CAAC,KAAe;QAC/B,OAAO,KAAK,IAAI,IAAI,CAAC,MAAM,CAAC,KAAK,IAAI,IAAI,CAAC,MAAM,CAAC,aAAa,CAAA;IAChE,CAAC;IAED;;;;;;;OAOG;IACK,aAAa,CAAC,SAAiB,EAAE,KAAe,EAAE,OAAe,EAAE,IAAU;QACnF,MAAM,MAAM,GAAG,IAAI,CAAC,SAAS,CAAC,SAAS,CAAC,CAAA;QACxC,MAAM,SAAS,GAAG,IAAI,IAAI,EAAE,CAAC,WAAW,EAAE,CAAA;QAC1C,MAAM,SAAS,GAAG,QAAQ,CAAC,KAAK,CAAC,CAAA;QAEjC,IAAI,gBAAgB,GAAG,GAAG,MAAM,IAAI,SAAS,IAAI,OAAO,EAAE,CAAA;QAE1D,IAAI,IAAI,KAAK,SAAS,EAAE,CAAC;YACvB,gBAAgB,IAAI,IAAI,IAAI,CAAC,SAAS,CAAC,IAAI,CAAC,EAAE,CAAA;QAChD,CAAC;QAED,OAAO,gBAAgB,CAAA;IACzB,CAAC;IAED;;;;;OAKG;IACH,KAAK,CAAC,SAAiB,EAAE,OAAe,EAAE,IAAU;QAClD,IAAI,CAAC,IAAI,CAAC,SAAS,CAAC,QAAQ,CAAC,KAAK,CAAC;YAAE,OAAM;QAE3C,MAAM,gBAAgB,GAAG,IAAI,CAAC,aAAa,CAAC,SAAS,EAAE,QAAQ,CAAC,KAAK,EAAE,OAAO,EAAE,IAAI,CAAC,CAAA;QACrF,sCAAsC;QACtC,OAAO,CAAC,GAAG,CAAC,gBAAgB,CAAC,CAAA;IAC/B,CAAC;IAED;;;;;OAKG;IACH,IAAI,CAAC,SAAiB,EAAE,OAAe,EAAE,IAAU;QACjD,IAAI,CAAC,IAAI,CAAC,SAAS,CAAC,QAAQ,CAAC,IAAI,CAAC;YAAE,OAAM;QAE1C,MAAM,gBAAgB,GAAG,IAAI,CAAC,aAAa,CAAC,SAAS,EAAE,QAAQ,CAAC,IAAI,EAAE,OAAO,EAAE,IAAI,CAAC,CAAA;QACpF,sCAAsC;QACtC,OAAO,CAAC,GAAG,CAAC,gBAAgB,CAAC,CAAA;IAC/B,CAAC;IAED;;;;;OAKG;IACH,IAAI,CAAC,SAAiB,EAAE,OAAe,EAAE,IAAU;QACjD,IAAI,CAAC,IAAI,CAAC,SAAS,CAAC,QAAQ,CAAC,IAAI,CAAC;YAAE,OAAM;QAE1C,MAAM,gBAAgB,GAAG,IAAI,CAAC,aAAa,CAAC,SAAS,EAAE,QAAQ,CAAC,IAAI,EAAE,OAAO,EAAE,IAAI,CAAC,CAAA;QACpF,sCAAsC;QACtC,OAAO,CAAC,IAAI,CAAC,gBAAgB,CAAC,CAAA;IAChC,CAAC;IAED;;;;;OAKG;IACH,KAAK,CAAC,SAAiB,EAAE,OAAe,EAAE,IAAU;QAClD,IAAI,CAAC,IAAI,CAAC,SAAS,CAAC,QAAQ,CAAC,KAAK,CAAC;YAAE,OAAM;QAE3C,MAAM,gBAAgB,GAAG,IAAI,CAAC,aAAa,CAAC,SAAS,EAAE,QAAQ,CAAC,KAAK,EAAE,OAAO,EAAE,IAAI,CAAC,CAAA;QACrF,sCAAsC;QACtC,OAAO,CAAC,KAAK,CAAC,gBAAgB,CAAC,CAAA;IACjC,CAAC;IAED;;;;;OAKG;IACH,OAAO,CAAC,SAAiB,EAAE,OAAe,EAAE,IAAU;QACpD,IAAI,CAAC,IAAI,CAAC,SAAS,CAAC,QAAQ,CAAC,IAAI,CAAC;YAAE,OAAM;QAE1C,MAAM,MAAM,GAAG,IAAI,CAAC,SAAS,CAAC,SAAS,CAAC,CAAA;QACxC,MAAM,SAAS,GAAG,IAAI,IAAI,EAAE,CAAC,WAAW,EAAE,CAAA;QAC1C,MAAM,gBAAgB,GAAG,GAAG,MAAM,MAAM,OAAO,EAAE,CAAA;QAEjD,IAAI,WAAW,GAAG,gBAAgB,CAAA;QAClC,IAAI,IAAI,KAAK,SAAS,EAAE,CAAC;YACvB,WAAW,IAAI,IAAI,IAAI,CAAC,SAAS,CAAC,IAAI,CAAC,EAAE,CAAA;QAC3C,CAAC;QAED,sCAAsC;QACtC,OAAO,CAAC,GAAG,CAAC,WAAW,CAAC,CAAA;IAC1B,CAAC;IAED;;;;;OAKG;IACH,OAAO,CAAC,SAAiB,EAAE,OAAe,EAAE,IAAU;QACpD,IAAI,CAAC,IAAI,CAAC,SAAS,CAAC,QAAQ,CAAC,KAAK,CAAC;YAAE,OAAM;QAE3C,MAAM,MAAM,GAAG,IAAI,CAAC,SAAS,CAAC,SAAS,CAAC,CAAA;QACxC,MAAM,SAAS,GAAG,IAAI,IAAI,EAAE,CAAC,WAAW,EAAE,CAAA;QAC1C,MAAM,gBAAgB,GAAG,GAAG,MAAM,MAAM,OAAO,EAAE,CAAA;QAEjD,IAAI,WAAW,GAAG,gBAAgB,CAAA;QAClC,IAAI,IAAI,KAAK,SAAS,EAAE,CAAC;YACvB,WAAW,IAAI,IAAI,IAAI,CAAC,SAAS,CAAC,IAAI,CAAC,EAAE,CAAA;QAC3C,CAAC;QAED,sCAAsC;QACtC,OAAO,CAAC,KAAK,CAAC,WAAW,CAAC,CAAA;IAC5B,CAAC;CACF;AAED,8BAA8B;AAC9B,MAAM,CAAC,MAAM,MAAM,GAAG,IAAI,MAAM,EAAE,CAAA;AAElC,oDAAoD;AACpD,MAAM,CAAC,MAAM,QAAQ,GAAG,CAAC,SAAiB,EAAE,OAAe,EAAE,IAAU,EAAE,EAAE,CAAC,MAAM,CAAC,KAAK,CAAC,SAAS,EAAE,OAAO,EAAE,IAAI,CAAC,CAAA;AAClH,MAAM,CAAC,MAAM,OAAO,GAAG,CAAC,SAAiB,EAAE,OAAe,EAAE,IAAU,EAAE,EAAE,CAAC,MAAM,CAAC,IAAI,CAAC,SAAS,EAAE,OAAO,EAAE,IAAI,CAAC,CAAA;AAChH,MAAM,CAAC,MAAM,OAAO,GAAG,CAAC,SAAiB,EAAE,OAAe,EAAE,IAAU,EAAE,EAAE,CAAC,MAAM,CAAC,IAAI,CAAC,SAAS,EAAE,OAAO,EAAE,IAAI,CAAC,CAAA;AAChH,MAAM,CAAC,MAAM,QAAQ,GAAG,CAAC,SAAiB,EAAE,OAAe,EAAE,IAAU,EAAE,EAAE,CAAC,MAAM,CAAC,KAAK,CAAC,SAAS,EAAE,OAAO,EAAE,IAAI,CAAC,CAAA;AAClH,MAAM,CAAC,MAAM,UAAU,GAAG,CAAC,SAAiB,EAAE,OAAe,EAAE,IAAU,EAAE,EAAE,CAAC,MAAM,CAAC,OAAO,CAAC,SAAS,EAAE,OAAO,EAAE,IAAI,CAAC,CAAA;AACtH,MAAM,CAAC,MAAM,UAAU,GAAG,CAAC,SAAiB,EAAE,OAAe,EAAE,IAAU,EAAE,EAAE,CAAC,MAAM,CAAC,OAAO,CAAC,SAAS,EAAE,OAAO,EAAE,IAAI,CAAC,CAAA"}
1
+ {"version":3,"file":"logger.js","sourceRoot":"","sources":["../../src/utils/logger.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,8 @@
1
+ /**
2
+ * Test function to verify native module availability
3
+ */
4
+ export declare function testNativeModuleAvailability(): void;
5
+ /**
6
+ * Test function to verify auto-linking configuration
7
+ */
8
+ export declare function testAutoLinkingConfig(): void;
@@ -0,0 +1 @@
1
+ "use strict";Object.defineProperty(exports,"__esModule",{value:true});exports.testAutoLinkingConfig=testAutoLinkingConfig;exports.testNativeModuleAvailability=testNativeModuleAvailability;var _reactNative=require("react-native");var _logger=require("./logger");function testNativeModuleAvailability(){_logger.logger.info('NativeModuleTest','Testing native module availability...');var availableModules=Object.keys(_reactNative.NativeModules);_logger.logger.info('NativeModuleTest',"Available native modules: ".concat(availableModules.join(', ')));var SessionRecorderNative=_reactNative.NativeModules.SessionRecorderNative;if(SessionRecorderNative){_logger.logger.info('NativeModuleTest','✅ SessionRecorderNative module is available!');if(typeof SessionRecorderNative.captureAndMask==='function'){_logger.logger.info('NativeModuleTest','✅ captureAndMask method is available!');}else{_logger.logger.warn('NativeModuleTest','❌ captureAndMask method is not available');}if(typeof SessionRecorderNative.captureAndMaskWithOptions==='function'){_logger.logger.info('NativeModuleTest','✅ captureAndMaskWithOptions method is available!');}else{_logger.logger.warn('NativeModuleTest','❌ captureAndMaskWithOptions method is not available');}}else{_logger.logger.error('NativeModuleTest','❌ SessionRecorderNative module is not available');_logger.logger.info('NativeModuleTest','This could mean:');_logger.logger.info('NativeModuleTest','1. Auto-linking has not completed yet');_logger.logger.info('NativeModuleTest','2. The native module was not properly built');_logger.logger.info('NativeModuleTest','3. The module name does not match');}}function testAutoLinkingConfig(){_logger.logger.info('NativeModuleTest','Testing auto-linking configuration...');try{var config=require('../../react-native.config.js');_logger.logger.info('NativeModuleTest','✅ react-native.config.js found');if(config.dependencies&&config.dependencies['react-native-session-recorder']){_logger.logger.info('NativeModuleTest','✅ Auto-linking configuration found for react-native-session-recorder');}else{_logger.logger.warn('NativeModuleTest','❌ Auto-linking configuration not found for react-native-session-recorder');}}catch(error){_logger.logger.warn('NativeModuleTest','❌ react-native.config.js not found or invalid');}}
@@ -0,0 +1 @@
1
+ {"version":3,"file":"nativeModuleTest.js","sourceRoot":"","sources":["../../src/utils/nativeModuleTest.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,aAAa,EAAE,MAAM,cAAc,CAAA;AAC5C,OAAO,EAAE,MAAM,EAAE,MAAM,UAAU,CAAA;AAEjC;;GAEG;AACH,MAAM,UAAU,4BAA4B;IAC1C,MAAM,CAAC,IAAI,CAAC,kBAAkB,EAAE,uCAAuC,CAAC,CAAA;IAExE,mCAAmC;IACnC,MAAM,gBAAgB,GAAG,MAAM,CAAC,IAAI,CAAC,aAAa,CAAC,CAAA;IACnD,MAAM,CAAC,IAAI,CAAC,kBAAkB,EAAE,6BAA6B,gBAAgB,CAAC,IAAI,CAAC,IAAI,CAAC,EAAE,CAAC,CAAA;IAE3F,+CAA+C;IAC/C,MAAM,EAAE,qBAAqB,EAAE,GAAG,aAAa,CAAA;IAE/C,IAAI,qBAAqB,EAAE,CAAC;QAC1B,MAAM,CAAC,IAAI,CAAC,kBAAkB,EAAE,8CAA8C,CAAC,CAAA;QAE/E,4BAA4B;QAC5B,IAAI,OAAO,qBAAqB,CAAC,cAAc,KAAK,UAAU,EAAE,CAAC;YAC/D,MAAM,CAAC,IAAI,CAAC,kBAAkB,EAAE,uCAAuC,CAAC,CAAA;QAC1E,CAAC;aAAM,CAAC;YACN,MAAM,CAAC,IAAI,CAAC,kBAAkB,EAAE,0CAA0C,CAAC,CAAA;QAC7E,CAAC;QAED,IAAI,OAAO,qBAAqB,CAAC,yBAAyB,KAAK,UAAU,EAAE,CAAC;YAC1E,MAAM,CAAC,IAAI,CAAC,kBAAkB,EAAE,kDAAkD,CAAC,CAAA;QACrF,CAAC;aAAM,CAAC;YACN,MAAM,CAAC,IAAI,CAAC,kBAAkB,EAAE,qDAAqD,CAAC,CAAA;QACxF,CAAC;IACH,CAAC;SAAM,CAAC;QACN,MAAM,CAAC,KAAK,CAAC,kBAAkB,EAAE,iDAAiD,CAAC,CAAA;QACnF,MAAM,CAAC,IAAI,CAAC,kBAAkB,EAAE,kBAAkB,CAAC,CAAA;QACnD,MAAM,CAAC,IAAI,CAAC,kBAAkB,EAAE,uCAAuC,CAAC,CAAA;QACxE,MAAM,CAAC,IAAI,CAAC,kBAAkB,EAAE,6CAA6C,CAAC,CAAA;QAC9E,MAAM,CAAC,IAAI,CAAC,kBAAkB,EAAE,mCAAmC,CAAC,CAAA;IACtE,CAAC;AACH,CAAC;AAED;;GAEG;AACH,MAAM,UAAU,qBAAqB;IACnC,MAAM,CAAC,IAAI,CAAC,kBAAkB,EAAE,uCAAuC,CAAC,CAAA;IAExE,oEAAoE;IACpE,IAAI,CAAC;QACH,MAAM,MAAM,GAAG,OAAO,CAAC,8BAA8B,CAAC,CAAA;QACtD,MAAM,CAAC,IAAI,CAAC,kBAAkB,EAAE,gCAAgC,CAAC,CAAA;QAEjE,IAAI,MAAM,CAAC,YAAY,IAAI,MAAM,CAAC,YAAY,CAAC,+BAA+B,CAAC,EAAE,CAAC;YAChF,MAAM,CAAC,IAAI,CAAC,kBAAkB,EAAE,sEAAsE,CAAC,CAAA;QACzG,CAAC;aAAM,CAAC;YACN,MAAM,CAAC,IAAI,CAAC,kBAAkB,EAAE,0EAA0E,CAAC,CAAA;QAC7G,CAAC;IACH,CAAC;IAAC,OAAO,KAAK,EAAE,CAAC;QACf,MAAM,CAAC,IAAI,CAAC,kBAAkB,EAAE,+CAA+C,CAAC,CAAA;IAClF,CAAC;AACH,CAAC"}
@@ -7,6 +7,9 @@ export interface PlatformInfo {
7
7
  expoVersion?: string;
8
8
  deviceType: string;
9
9
  }
10
+ export declare function detectPlatform(): PlatformInfo;
11
+ export declare function getPlatformAttributes(): Record<string, any>;
12
+ export declare function isExpoEnvironment(): boolean;
10
13
  export declare function isReactNativeEnvironment(): boolean;
11
14
  /**
12
15
  * Configure app metadata for non-Expo React Native apps
@@ -43,4 +46,12 @@ export declare function getConfiguredAppMetadata(): {
43
46
  buildNumber?: string;
44
47
  displayName?: string;
45
48
  };
49
+ /**
50
+ * Enhanced app metadata detection with automatic fallbacks
51
+ */
52
+ export declare function getAppMetadata(): {
53
+ name?: string;
54
+ version?: string;
55
+ bundleId?: string;
56
+ };
46
57
  export declare const getNavigatorInfo: () => IResourceAttributes;
@@ -1 +1 @@
1
- "use strict";var _interopRequireDefault=require("@babel/runtime/helpers/interopRequireDefault");Object.defineProperty(exports,"__esModule",{value:true});exports.configureAppMetadata=configureAppMetadata;exports.detectPlatform=detectPlatform;exports.getConfiguredAppMetadata=getConfiguredAppMetadata;exports.getNavigatorInfo=void 0;exports.getPlatformAttributes=getPlatformAttributes;exports.isExpoEnvironment=isExpoEnvironment;exports.isReactNativeEnvironment=isReactNativeEnvironment;var _defineProperty2=_interopRequireDefault(require("@babel/runtime/helpers/defineProperty"));var _expoConstants=_interopRequireDefault(require("expo-constants"));var _reactNative=require("react-native");var _version=require("../version");var _appMetadata=require("./app-metadata");function ownKeys(e,r){var t=Object.keys(e);if(Object.getOwnPropertySymbols){var o=Object.getOwnPropertySymbols(e);r&&(o=o.filter(function(r){return Object.getOwnPropertyDescriptor(e,r).enumerable;})),t.push.apply(t,o);}return t;}function _objectSpread(e){for(var r=1;r<arguments.length;r++){var t=null!=arguments[r]?arguments[r]:{};r%2?ownKeys(Object(t),!0).forEach(function(r){(0,_defineProperty2["default"])(e,r,t[r]);}):Object.getOwnPropertyDescriptors?Object.defineProperties(e,Object.getOwnPropertyDescriptors(t)):ownKeys(Object(t)).forEach(function(r){Object.defineProperty(e,r,Object.getOwnPropertyDescriptor(t,r));});}return e;}var globalAppMetadata={};var autoDetectedMetadata=null;function detectPlatform(){var _a,_b,_c,_d;try{var isExpo=!!((_a=_expoConstants["default"]["default"])===null||_a===void 0?void 0:_a.expoVersion)||!!_expoConstants["default"].expoVersion;if(isExpo){var expoVersion=((_b=_expoConstants["default"]["default"])===null||_b===void 0?void 0:_b.expoVersion)||_expoConstants["default"].expoVersion;var platform=((_c=_expoConstants["default"]["default"])===null||_c===void 0?void 0:_c.platform)||_expoConstants["default"].platform;return{isExpo:true,isReactNative:true,platform:(platform===null||platform===void 0?void 0:platform.ios)?'ios':(platform===null||platform===void 0?void 0:platform.android)?'android':'unknown',expoVersion:expoVersion,deviceType:'expo'};}return{isExpo:false,isReactNative:true,platform:_reactNative.Platform.OS,platformVersion:(_d=_reactNative.Platform.Version)===null||_d===void 0?void 0:_d.toString(),deviceType:_reactNative.Platform.OS};}catch(error){return{isExpo:false,isReactNative:false,platform:'unknown',deviceType:'unknown'};}}function getPlatformAttributes(){var platformInfo=detectPlatform();var attributes={platform:platformInfo.isExpo?'expo':'react-native','device.type':platformInfo.deviceType};if(platformInfo.platformVersion){attributes['platform.version']=platformInfo.platformVersion;}if(platformInfo.expoVersion){attributes['expo.version']=platformInfo.expoVersion;}return attributes;}function isExpoEnvironment(){return detectPlatform().isExpo;}function isReactNativeEnvironment(){return detectPlatform().isReactNative;}function configureAppMetadata(metadata){globalAppMetadata=_objectSpread(_objectSpread({},globalAppMetadata),metadata);}function getConfiguredAppMetadata(){return _objectSpread({},globalAppMetadata);}function autoDetectAppMetadata(){if(autoDetectedMetadata){return autoDetectedMetadata;}try{var autoMetadata=(0,_appMetadata.getAutoDetectedAppMetadata)();var metadata={};if(autoMetadata.name)metadata.name=autoMetadata.name;if(autoMetadata.version)metadata.version=autoMetadata.version;if(autoMetadata.bundleId)metadata.bundleId=autoMetadata.bundleId;autoDetectedMetadata=metadata;return metadata;}catch(error){autoDetectedMetadata={};return{};}}function getAppMetadata(){var expoMetadata=getExpoMetadata();var configuredMetadata=getConfiguredAppMetadata();var autoMetadata=autoDetectAppMetadata();return{name:expoMetadata.name||configuredMetadata.name||autoMetadata.name,version:expoMetadata.version||configuredMetadata.version||autoMetadata.version,bundleId:expoMetadata.bundleId||configuredMetadata.bundleId||autoMetadata.bundleId};}function getExpoMetadata(){var _a,_b,_c;var expoConfig=((_a=_expoConstants["default"]["default"])===null||_a===void 0?void 0:_a.expoConfig)||_expoConstants["default"].expoConfig;if(!expoConfig)return{};return{name:expoConfig.name,version:expoConfig.version,bundleId:((_b=expoConfig.ios)===null||_b===void 0?void 0:_b.bundleIdentifier)||((_c=expoConfig.android)===null||_c===void 0?void 0:_c["package"])};}var getNavigatorInfo=exports.getNavigatorInfo=function getNavigatorInfo(){var platformInfo=detectPlatform();var screenData=_reactNative.Dimensions.get('window');var screenDataScreen=_reactNative.Dimensions.get('screen');var pixelRatio=_reactNative.PixelRatio.get();var getDeviceType=function getDeviceType(){var width=screenData.width,height=screenData.height;var minDimension=Math.min(width,height);var maxDimension=Math.max(width,height);if(maxDimension>=1024){return'Tablet';}else if(minDimension>=600){return'Large Phone';}else{return'Phone';}};var getOrientation=function getOrientation(){var width=screenData.width,height=screenData.height;return width>height?'Landscape':'Portrait';};var getOSInfo=function getOSInfo(){var _a;if(platformInfo.isExpo){var platform=((_a=_expoConstants["default"]["default"])===null||_a===void 0?void 0:_a.platform)||_expoConstants["default"].platform;if(platform===null||platform===void 0?void 0:platform.ios){return"iOS ".concat(_reactNative.Platform.Version);}else if(platform===null||platform===void 0?void 0:platform.android){return"Android ".concat(_reactNative.Platform.Version);}}if(_reactNative.Platform.OS==='ios'){return"iOS ".concat(_reactNative.Platform.Version);}else if(_reactNative.Platform.OS==='android'){return"Android ".concat(_reactNative.Platform.Version);}return"".concat(_reactNative.Platform.OS," ").concat(_reactNative.Platform.Version||'Unknown');};var getDeviceInfo=function getDeviceInfo(){var deviceType=getDeviceType();var osInfo=getOSInfo();return"".concat(deviceType," - ").concat(osInfo);};var getBrowserInfo=function getBrowserInfo(){if(platformInfo.isExpo){return"Expo ".concat(platformInfo.expoVersion||'Unknown'," - React Native");}return'React Native';};var getScreenSize=function getScreenSize(){return"".concat(Math.round(screenData.width),"x").concat(Math.round(screenData.height));};var getAppInfo=function getAppInfo(){var appName=getAppName();var appVersion=getAppVersion();return"".concat(appName," v").concat(appVersion);};var getAppName=function getAppName(){var metadata=getAppMetadata();if(metadata.name)return metadata.name;var configuredMetadata=getConfiguredAppMetadata();if(configuredMetadata.displayName)return configuredMetadata.displayName;return'React Native App';};var getAppVersion=function getAppVersion(){var metadata=getAppMetadata();if(metadata.version)return metadata.version;return'Unknown';};var getBundleId=function getBundleId(){var metadata=getAppMetadata();if(metadata.bundleId)return metadata.bundleId;return'com.reactnative.app';};var getBuildNumber=function getBuildNumber(){var _a,_b,_c,_d,_e,_f,_g,_h,_j,_k;var expoBuildNumber=((_c=(_b=(_a=_expoConstants["default"]["default"])===null||_a===void 0?void 0:_a.expoConfig)===null||_b===void 0?void 0:_b.ios)===null||_c===void 0?void 0:_c.buildNumber)||((_e=(_d=_expoConstants["default"].expoConfig)===null||_d===void 0?void 0:_d.ios)===null||_e===void 0?void 0:_e.buildNumber)||((_h=(_g=(_f=_expoConstants["default"]["default"])===null||_f===void 0?void 0:_f.expoConfig)===null||_g===void 0?void 0:_g.android)===null||_h===void 0?void 0:_h.versionCode)||((_k=(_j=_expoConstants["default"].expoConfig)===null||_j===void 0?void 0:_j.android)===null||_k===void 0?void 0:_k.versionCode);if(expoBuildNumber)return expoBuildNumber.toString();var configuredMetadata=getConfiguredAppMetadata();if(configuredMetadata.buildNumber)return configuredMetadata.buildNumber;return'1';};var getNetworkInfo=function getNetworkInfo(){return'Unknown';};var getHardwareInfo=function getHardwareInfo(){var pixelRatioInfo="Pixel Ratio: ".concat(pixelRatio);var screenDensity=_reactNative.PixelRatio.getFontScale();return"".concat(pixelRatioInfo,", Font Scale: ").concat(screenDensity);};return _objectSpread({platform:platformInfo.isExpo?'expo':'react-native',userAgent:getBrowserInfo(),language:'en',timestamp:new Date().toISOString(),deviceInfo:getDeviceInfo(),osInfo:getOSInfo(),browserInfo:getBrowserInfo(),screenSize:getScreenSize(),pixelRatio:pixelRatio,orientation:getOrientation(),screenWidth:Math.round(screenData.width),screenHeight:Math.round(screenData.height),screenScale:pixelRatio,hardwareConcurrency:1,cookiesEnabled:'N/A',packageVersion:_version.version,appInfo:getAppInfo(),appName:getAppName(),appVersion:getAppVersion(),bundleId:getBundleId(),buildNumber:getBuildNumber(),platformType:platformInfo.platform,platformVersion:platformInfo.platformVersion,expoVersion:platformInfo.expoVersion,deviceType:getDeviceType(),deviceModel:_reactNative.Platform.OS==='ios'?'iOS Device':'Android Device',deviceManufacturer:_reactNative.Platform.OS==='ios'?'Apple':'Android Manufacturer',deviceBrand:_reactNative.Platform.OS==='ios'?'Apple':'Android Brand',hardwareInfo:getHardwareInfo(),networkInfo:getNetworkInfo(),screenDensity:_reactNative.PixelRatio.getFontScale(),screenScaleFactor:pixelRatio,windowWidth:Math.round(screenData.width),windowHeight:Math.round(screenData.height),fullScreenWidth:Math.round(screenDataScreen.width),fullScreenHeight:Math.round(screenDataScreen.height),isExpo:platformInfo.isExpo,isReactNative:platformInfo.isReactNative,environment:platformInfo.isExpo?'expo':'react-native'},getPlatformAttributes());};
1
+ "use strict";var _interopRequireDefault=require("@babel/runtime/helpers/interopRequireDefault");Object.defineProperty(exports,"__esModule",{value:true});exports.configureAppMetadata=configureAppMetadata;exports.detectPlatform=detectPlatform;exports.getAppMetadata=getAppMetadata;exports.getConfiguredAppMetadata=getConfiguredAppMetadata;exports.getNavigatorInfo=void 0;exports.getPlatformAttributes=getPlatformAttributes;exports.isExpoEnvironment=isExpoEnvironment;exports.isReactNativeEnvironment=isReactNativeEnvironment;var _defineProperty2=_interopRequireDefault(require("@babel/runtime/helpers/defineProperty"));var _constants=_interopRequireDefault(require("./constants.optional"));var _reactNative=require("react-native");var _version=require("../version");var _appMetadata=require("./app-metadata");function ownKeys(e,r){var t=Object.keys(e);if(Object.getOwnPropertySymbols){var o=Object.getOwnPropertySymbols(e);r&&(o=o.filter(function(r){return Object.getOwnPropertyDescriptor(e,r).enumerable;})),t.push.apply(t,o);}return t;}function _objectSpread(e){for(var r=1;r<arguments.length;r++){var t=null!=arguments[r]?arguments[r]:{};r%2?ownKeys(Object(t),!0).forEach(function(r){(0,_defineProperty2["default"])(e,r,t[r]);}):Object.getOwnPropertyDescriptors?Object.defineProperties(e,Object.getOwnPropertyDescriptors(t)):ownKeys(Object(t)).forEach(function(r){Object.defineProperty(e,r,Object.getOwnPropertyDescriptor(t,r));});}return e;}var globalAppMetadata={};var autoDetectedMetadata=null;function detectPlatform(){var _a;try{var isExpo=!!(_constants["default"]===null||_constants["default"]===void 0?void 0:_constants["default"].expoVersion);if(isExpo){var expoVersion=_constants["default"]===null||_constants["default"]===void 0?void 0:_constants["default"].expoVersion;var platform=_constants["default"]===null||_constants["default"]===void 0?void 0:_constants["default"].platform;return{isExpo:true,isReactNative:true,platform:(platform===null||platform===void 0?void 0:platform.ios)?'ios':(platform===null||platform===void 0?void 0:platform.android)?'android':'unknown',expoVersion:expoVersion,deviceType:'expo'};}return{isExpo:false,isReactNative:true,platform:_reactNative.Platform.OS,platformVersion:(_a=_reactNative.Platform.Version)===null||_a===void 0?void 0:_a.toString(),deviceType:_reactNative.Platform.OS};}catch(error){return{isExpo:false,isReactNative:false,platform:'unknown',deviceType:'unknown'};}}function getPlatformAttributes(){var platformInfo=detectPlatform();var attributes={platform:platformInfo.isExpo?'expo':'react-native','device.type':platformInfo.deviceType};if(platformInfo.platformVersion){attributes['platform.version']=platformInfo.platformVersion;}if(platformInfo.expoVersion){attributes['expo.version']=platformInfo.expoVersion;}return attributes;}function isExpoEnvironment(){return detectPlatform().isExpo;}function isReactNativeEnvironment(){return detectPlatform().isReactNative;}function configureAppMetadata(metadata){globalAppMetadata=_objectSpread(_objectSpread({},globalAppMetadata),metadata);}function getConfiguredAppMetadata(){return _objectSpread({},globalAppMetadata);}function autoDetectAppMetadata(){if(autoDetectedMetadata){return autoDetectedMetadata;}try{var autoMetadata=(0,_appMetadata.getAutoDetectedAppMetadata)();var metadata={};if(autoMetadata.name)metadata.name=autoMetadata.name;if(autoMetadata.version)metadata.version=autoMetadata.version;if(autoMetadata.bundleId)metadata.bundleId=autoMetadata.bundleId;autoDetectedMetadata=metadata;return metadata;}catch(error){autoDetectedMetadata={};return{};}}function getAppMetadata(){var expoMetadata=getExpoMetadata();var configuredMetadata=getConfiguredAppMetadata();var autoMetadata=autoDetectAppMetadata();return{name:expoMetadata.name||configuredMetadata.name||autoMetadata.name,version:expoMetadata.version||configuredMetadata.version||autoMetadata.version,bundleId:expoMetadata.bundleId||configuredMetadata.bundleId||autoMetadata.bundleId};}function getExpoMetadata(){var _a,_b;var expoConfig=_constants["default"]===null||_constants["default"]===void 0?void 0:_constants["default"].expoConfig;if(!expoConfig)return{};return{name:expoConfig.name,version:expoConfig.version,bundleId:((_a=expoConfig.ios)===null||_a===void 0?void 0:_a.bundleIdentifier)||((_b=expoConfig.android)===null||_b===void 0?void 0:_b["package"])};}var getNavigatorInfo=exports.getNavigatorInfo=function getNavigatorInfo(){var platformInfo=detectPlatform();var screenData=_reactNative.Dimensions.get('window');var screenDataScreen=_reactNative.Dimensions.get('screen');var pixelRatio=_reactNative.PixelRatio.get();var getDeviceType=function getDeviceType(){var width=screenData.width,height=screenData.height;var minDimension=Math.min(width,height);var maxDimension=Math.max(width,height);if(maxDimension>=1024){return'Tablet';}else if(minDimension>=600){return'Large Phone';}else{return'Phone';}};var getOrientation=function getOrientation(){var width=screenData.width,height=screenData.height;return width>height?'Landscape':'Portrait';};var getOSInfo=function getOSInfo(){if(platformInfo.isExpo){var platform=_constants["default"]===null||_constants["default"]===void 0?void 0:_constants["default"].platform;if(platform===null||platform===void 0?void 0:platform.ios){return"iOS ".concat(_reactNative.Platform.Version);}else if(platform===null||platform===void 0?void 0:platform.android){return"Android ".concat(_reactNative.Platform.Version);}}if(_reactNative.Platform.OS==='ios'){return"iOS ".concat(_reactNative.Platform.Version);}else if(_reactNative.Platform.OS==='android'){return"Android ".concat(_reactNative.Platform.Version);}return"".concat(_reactNative.Platform.OS," ").concat(_reactNative.Platform.Version||'Unknown');};var getDeviceInfo=function getDeviceInfo(){var deviceType=getDeviceType();var osInfo=getOSInfo();return"".concat(deviceType," - ").concat(osInfo);};var getBrowserInfo=function getBrowserInfo(){if(platformInfo.isExpo){return"Expo ".concat(platformInfo.expoVersion||'Unknown'," - React Native");}return'React Native';};var getScreenSize=function getScreenSize(){return"".concat(Math.round(screenData.width),"x").concat(Math.round(screenData.height));};var metadata=getAppMetadata();var getAppInfo=function getAppInfo(){var appName=getAppName();var appVersion=getAppVersion();return"".concat(appName," v").concat(appVersion);};var getAppName=function getAppName(){if(metadata.name)return metadata.name;var configuredMetadata=getConfiguredAppMetadata();if(configuredMetadata.displayName)return configuredMetadata.displayName;return'React Native App';};var getAppVersion=function getAppVersion(){if(metadata.version)return metadata.version;return'Unknown';};var getBundleId=function getBundleId(){if(metadata.bundleId)return metadata.bundleId;return'com.reactnative.app';};var getBuildNumber=function getBuildNumber(){var _a,_b,_c,_d;var expoBuildNumber=((_b=(_a=_constants["default"]===null||_constants["default"]===void 0?void 0:_constants["default"].expoConfig)===null||_a===void 0?void 0:_a.ios)===null||_b===void 0?void 0:_b.buildNumber)||((_d=(_c=_constants["default"]===null||_constants["default"]===void 0?void 0:_constants["default"].expoConfig)===null||_c===void 0?void 0:_c.android)===null||_d===void 0?void 0:_d.versionCode);if(expoBuildNumber)return expoBuildNumber.toString();var configuredMetadata=getConfiguredAppMetadata();if(configuredMetadata.buildNumber)return configuredMetadata.buildNumber;return'1';};var getHardwareInfo=function getHardwareInfo(){var pixelRatioInfo="Pixel Ratio: ".concat(pixelRatio);var screenDensity=_reactNative.PixelRatio.getFontScale();return"".concat(pixelRatioInfo,", Font Scale: ").concat(screenDensity);};return{platform:platformInfo.isExpo?'expo':'react-native',userAgent:getBrowserInfo(),timestamp:new Date().toISOString(),deviceInfo:getDeviceInfo(),osInfo:getOSInfo(),browserInfo:getBrowserInfo(),screenSize:getScreenSize(),pixelRatio:pixelRatio,orientation:getOrientation(),screenWidth:Math.round(screenData.width),screenHeight:Math.round(screenData.height),screenScale:pixelRatio,hardwareConcurrency:1,cookiesEnabled:'N/A',packageVersion:_version.version,appInfo:getAppInfo(),appName:getAppName(),appVersion:getAppVersion(),bundleId:getBundleId(),buildNumber:getBuildNumber(),platformType:platformInfo.platform,platformVersion:platformInfo.platformVersion,expoVersion:platformInfo.expoVersion,deviceType:getDeviceType(),hardwareInfo:getHardwareInfo(),screenDensity:_reactNative.PixelRatio.getFontScale(),screenScaleFactor:pixelRatio,windowWidth:Math.round(screenData.width),windowHeight:Math.round(screenData.height),fullScreenWidth:Math.round(screenDataScreen.width),fullScreenHeight:Math.round(screenDataScreen.height),isExpo:platformInfo.isExpo,isReactNative:platformInfo.isReactNative,environment:platformInfo.isExpo?'expo':'react-native',systemType:'mobile'};};