@multiplayer-app/session-recorder-react-native 1.0.1-beta.2 → 1.0.1-beta.4

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 (465) hide show
  1. package/LICENSE +1 -2
  2. package/README.md +216 -155
  3. package/SessionRecorderNative.podspec +9 -14
  4. package/android/build.gradle +21 -41
  5. package/android/gradle.properties +4 -4
  6. package/android/src/main/AndroidManifest.xml +2 -0
  7. package/android/src/main/java/com/multiplayer/sessionrecordernative/SessionRecorderNativeConfig.kt +52 -0
  8. package/android/src/main/java/com/multiplayer/sessionrecordernative/SessionRecorderNativeModule.kt +860 -0
  9. package/android/src/main/java/com/multiplayer/sessionrecordernative/SessionRecorderNativeModuleSpec.kt +51 -0
  10. package/android/src/main/java/com/multiplayer/sessionrecordernative/SessionRecorderNativePackage.kt +33 -0
  11. package/android/src/main/java/com/multiplayer/sessionrecordernative/model/TargetInfo.kt +9 -0
  12. package/android/src/main/java/com/multiplayer/sessionrecordernative/util/ViewUtils.kt +72 -0
  13. package/android/src/main/java/com/xxx/XxxModule.kt +23 -0
  14. package/ios/GestureTargetFinder.swift +50 -0
  15. package/ios/SessionRecorderNative.podspec +4 -2
  16. package/ios/SessionRecorderNative.swift +10 -1
  17. package/ios/SessionRecorderNativeSpec.swift +55 -0
  18. package/ios/Xxx.h +5 -0
  19. package/ios/Xxx.mm +21 -0
  20. package/lib/module/components/ScreenRecorderView/ScreenRecorderView.js +23 -0
  21. package/lib/module/components/ScreenRecorderView/ScreenRecorderView.js.map +1 -0
  22. package/lib/module/components/ScreenRecorderView/index.js +4 -0
  23. package/lib/module/components/ScreenRecorderView/index.js.map +1 -0
  24. package/lib/module/components/SessionRecorderWidget/ErrorBanner.js +64 -0
  25. package/lib/module/components/SessionRecorderWidget/ErrorBanner.js.map +1 -0
  26. package/lib/module/components/SessionRecorderWidget/FinalPopover.js +74 -0
  27. package/lib/module/components/SessionRecorderWidget/FinalPopover.js.map +1 -0
  28. package/lib/module/components/SessionRecorderWidget/FloatingButton.js +191 -0
  29. package/lib/module/components/SessionRecorderWidget/FloatingButton.js.map +1 -0
  30. package/lib/module/components/SessionRecorderWidget/InitialPopover.js +138 -0
  31. package/lib/module/components/SessionRecorderWidget/InitialPopover.js.map +1 -0
  32. package/lib/module/components/SessionRecorderWidget/ModalContainer.js +177 -0
  33. package/lib/module/components/SessionRecorderWidget/ModalContainer.js.map +1 -0
  34. package/lib/module/components/SessionRecorderWidget/ModalHeader.js +27 -0
  35. package/lib/module/components/SessionRecorderWidget/ModalHeader.js.map +1 -0
  36. package/lib/module/components/SessionRecorderWidget/SessionRecorderWidget.js +133 -0
  37. package/lib/module/components/SessionRecorderWidget/SessionRecorderWidget.js.map +1 -0
  38. package/lib/module/components/SessionRecorderWidget/icons.js +93 -0
  39. package/lib/module/components/SessionRecorderWidget/icons.js.map +1 -0
  40. package/lib/module/components/SessionRecorderWidget/index.js +5 -0
  41. package/lib/module/components/SessionRecorderWidget/index.js.map +1 -0
  42. package/lib/module/components/SessionRecorderWidget/styles.js +173 -0
  43. package/lib/module/components/SessionRecorderWidget/styles.js.map +1 -0
  44. package/lib/module/components/index.js +5 -0
  45. package/lib/module/components/index.js.map +1 -0
  46. package/lib/module/config/constants.js +42 -0
  47. package/lib/module/config/constants.js.map +1 -0
  48. package/lib/module/config/defaults.js +81 -0
  49. package/lib/module/config/defaults.js.map +1 -0
  50. package/lib/module/config/index.js +9 -0
  51. package/lib/module/config/index.js.map +1 -0
  52. package/lib/module/config/masking.js +35 -0
  53. package/lib/module/config/masking.js.map +1 -0
  54. package/lib/module/config/session-recorder.js +44 -0
  55. package/lib/module/config/session-recorder.js.map +1 -0
  56. package/lib/module/config/validators.js +28 -0
  57. package/lib/module/config/validators.js.map +1 -0
  58. package/lib/module/config/widget.js +35 -0
  59. package/lib/module/config/widget.js.map +1 -0
  60. package/lib/module/context/SessionRecorderContext.js +93 -0
  61. package/lib/module/context/SessionRecorderContext.js.map +1 -0
  62. package/lib/module/context/SessionRecorderStore.js +12 -0
  63. package/lib/module/context/SessionRecorderStore.js.map +1 -0
  64. package/lib/module/context/useSessionRecorderStore.js +20 -0
  65. package/lib/module/context/useSessionRecorderStore.js.map +1 -0
  66. package/lib/module/context/useStoreSelector.js +27 -0
  67. package/lib/module/context/useStoreSelector.js.map +1 -0
  68. package/lib/module/index.js +13 -0
  69. package/lib/module/index.js.map +1 -0
  70. package/lib/module/native/SessionRecorderNative.js +74 -0
  71. package/lib/module/native/SessionRecorderNative.js.map +1 -0
  72. package/lib/module/native/index.js +4 -0
  73. package/lib/module/native/index.js.map +1 -0
  74. package/lib/module/otel/helpers.js +218 -0
  75. package/lib/module/otel/helpers.js.map +1 -0
  76. package/lib/module/otel/index.js +95 -0
  77. package/lib/module/otel/index.js.map +1 -0
  78. package/lib/module/otel/instrumentations/index.js +102 -0
  79. package/lib/module/otel/instrumentations/index.js.map +1 -0
  80. package/lib/module/package.json +1 -0
  81. package/lib/module/patch/index.js +4 -0
  82. package/lib/module/patch/index.js.map +1 -0
  83. package/lib/module/patch/xhr.js +116 -0
  84. package/lib/module/patch/xhr.js.map +1 -0
  85. package/lib/module/recorder/eventExporter.js +130 -0
  86. package/lib/module/recorder/eventExporter.js.map +1 -0
  87. package/lib/module/recorder/gestureRecorder.js +641 -0
  88. package/lib/module/recorder/gestureRecorder.js.map +1 -0
  89. package/lib/module/recorder/index.js +168 -0
  90. package/lib/module/recorder/index.js.map +1 -0
  91. package/lib/module/recorder/navigationTracker.js +228 -0
  92. package/lib/module/recorder/navigationTracker.js.map +1 -0
  93. package/lib/module/recorder/screenRecorder.js +495 -0
  94. package/lib/module/recorder/screenRecorder.js.map +1 -0
  95. package/lib/module/services/api.service.js +149 -0
  96. package/lib/module/services/api.service.js.map +1 -0
  97. package/lib/module/services/network.service.js +178 -0
  98. package/lib/module/services/network.service.js.map +1 -0
  99. package/lib/module/services/screenMaskingService.js +107 -0
  100. package/lib/module/services/screenMaskingService.js.map +1 -0
  101. package/lib/module/services/storage.service.js +179 -0
  102. package/lib/module/services/storage.service.js.map +1 -0
  103. package/lib/module/session-recorder.js +541 -0
  104. package/lib/module/session-recorder.js.map +1 -0
  105. package/lib/module/types/configs.js +4 -0
  106. package/lib/module/types/configs.js.map +1 -0
  107. package/lib/module/types/expo-constants.d.js +2 -0
  108. package/lib/module/types/expo-constants.d.js.map +1 -0
  109. package/lib/module/types/index.js +11 -0
  110. package/lib/module/types/index.js.map +1 -0
  111. package/lib/module/types/session-recorder.js +68 -0
  112. package/lib/module/types/session-recorder.js.map +1 -0
  113. package/lib/module/types/session.js +9 -0
  114. package/lib/module/types/session.js.map +1 -0
  115. package/lib/module/utils/app-metadata.js +28 -0
  116. package/lib/module/utils/app-metadata.js.map +1 -0
  117. package/lib/module/utils/constants.optional.expo.js +6 -0
  118. package/lib/module/utils/constants.optional.expo.js.map +1 -0
  119. package/lib/module/utils/constants.optional.js +8 -0
  120. package/lib/module/utils/constants.optional.js.map +1 -0
  121. package/lib/module/utils/createStore.js +27 -0
  122. package/lib/module/utils/createStore.js.map +1 -0
  123. package/lib/module/utils/index.js +11 -0
  124. package/lib/module/utils/index.js.map +1 -0
  125. package/lib/module/utils/logger.js +193 -0
  126. package/lib/module/utils/logger.js.map +1 -0
  127. package/lib/module/utils/platform.js +340 -0
  128. package/lib/module/utils/platform.js.map +1 -0
  129. package/lib/module/utils/request-utils.js +58 -0
  130. package/lib/module/utils/request-utils.js.map +1 -0
  131. package/lib/module/utils/rrweb-events.js +276 -0
  132. package/lib/module/utils/rrweb-events.js.map +1 -0
  133. package/lib/module/utils/session.js +21 -0
  134. package/lib/module/utils/session.js.map +1 -0
  135. package/lib/module/utils/shallowEqual.js +17 -0
  136. package/lib/module/utils/shallowEqual.js.map +1 -0
  137. package/lib/module/utils/time.js +17 -0
  138. package/lib/module/utils/time.js.map +1 -0
  139. package/lib/module/utils/type-utils.js +69 -0
  140. package/lib/module/utils/type-utils.js.map +1 -0
  141. package/lib/module/version.js +4 -0
  142. package/lib/module/version.js.map +1 -0
  143. package/lib/typescript/package.json +1 -0
  144. package/lib/typescript/src/components/ScreenRecorderView/ScreenRecorderView.d.ts +6 -0
  145. package/lib/typescript/src/components/ScreenRecorderView/ScreenRecorderView.d.ts.map +1 -0
  146. package/lib/typescript/src/components/ScreenRecorderView/index.d.ts +2 -0
  147. package/lib/typescript/src/components/ScreenRecorderView/index.d.ts.map +1 -0
  148. package/{dist → lib/typescript/src}/components/SessionRecorderWidget/ErrorBanner.d.ts +1 -0
  149. package/lib/typescript/src/components/SessionRecorderWidget/ErrorBanner.d.ts.map +1 -0
  150. package/{dist → lib/typescript/src}/components/SessionRecorderWidget/FinalPopover.d.ts +2 -1
  151. package/lib/typescript/src/components/SessionRecorderWidget/FinalPopover.d.ts.map +1 -0
  152. package/{dist → lib/typescript/src}/components/SessionRecorderWidget/FloatingButton.d.ts +1 -0
  153. package/lib/typescript/src/components/SessionRecorderWidget/FloatingButton.d.ts.map +1 -0
  154. package/{dist → lib/typescript/src}/components/SessionRecorderWidget/InitialPopover.d.ts +2 -1
  155. package/lib/typescript/src/components/SessionRecorderWidget/InitialPopover.d.ts.map +1 -0
  156. package/{dist → lib/typescript/src}/components/SessionRecorderWidget/ModalContainer.d.ts +1 -0
  157. package/lib/typescript/src/components/SessionRecorderWidget/ModalContainer.d.ts.map +1 -0
  158. package/{dist → lib/typescript/src}/components/SessionRecorderWidget/ModalHeader.d.ts +1 -0
  159. package/lib/typescript/src/components/SessionRecorderWidget/ModalHeader.d.ts.map +1 -0
  160. package/{dist → lib/typescript/src}/components/SessionRecorderWidget/SessionRecorderWidget.d.ts +1 -0
  161. package/lib/typescript/src/components/SessionRecorderWidget/SessionRecorderWidget.d.ts.map +1 -0
  162. package/{dist → lib/typescript/src}/components/SessionRecorderWidget/icons.d.ts +1 -0
  163. package/lib/typescript/src/components/SessionRecorderWidget/icons.d.ts.map +1 -0
  164. package/lib/typescript/src/components/SessionRecorderWidget/index.d.ts +3 -0
  165. package/lib/typescript/src/components/SessionRecorderWidget/index.d.ts.map +1 -0
  166. package/{dist → lib/typescript/src}/components/SessionRecorderWidget/styles.d.ts +4 -3
  167. package/lib/typescript/src/components/SessionRecorderWidget/styles.d.ts.map +1 -0
  168. package/{dist → lib/typescript/src}/components/index.d.ts +1 -0
  169. package/lib/typescript/src/components/index.d.ts.map +1 -0
  170. package/{dist → lib/typescript/src}/config/constants.d.ts +1 -0
  171. package/lib/typescript/src/config/constants.d.ts.map +1 -0
  172. package/{dist → lib/typescript/src}/config/defaults.d.ts +2 -1
  173. package/lib/typescript/src/config/defaults.d.ts.map +1 -0
  174. package/{dist → lib/typescript/src}/config/index.d.ts +1 -0
  175. package/lib/typescript/src/config/index.d.ts.map +1 -0
  176. package/lib/typescript/src/config/masking.d.ts +3 -0
  177. package/lib/typescript/src/config/masking.d.ts.map +1 -0
  178. package/lib/typescript/src/config/session-recorder.d.ts +3 -0
  179. package/lib/typescript/src/config/session-recorder.d.ts.map +1 -0
  180. package/{dist → lib/typescript/src}/config/validators.d.ts +1 -0
  181. package/lib/typescript/src/config/validators.d.ts.map +1 -0
  182. package/{dist → lib/typescript/src}/config/widget.d.ts +2 -1
  183. package/lib/typescript/src/config/widget.d.ts.map +1 -0
  184. package/{dist → lib/typescript/src}/context/SessionRecorderContext.d.ts +3 -2
  185. package/lib/typescript/src/context/SessionRecorderContext.d.ts.map +1 -0
  186. package/{dist → lib/typescript/src}/context/SessionRecorderStore.d.ts +2 -1
  187. package/lib/typescript/src/context/SessionRecorderStore.d.ts.map +1 -0
  188. package/{dist → lib/typescript/src}/context/useSessionRecorderStore.d.ts +2 -1
  189. package/lib/typescript/src/context/useSessionRecorderStore.d.ts.map +1 -0
  190. package/{dist → lib/typescript/src}/context/useStoreSelector.d.ts +2 -1
  191. package/lib/typescript/src/context/useStoreSelector.d.ts.map +1 -0
  192. package/{dist → lib/typescript/src}/index.d.ts +1 -0
  193. package/lib/typescript/src/index.d.ts.map +1 -0
  194. package/{dist → lib/typescript/src}/native/SessionRecorderNative.d.ts +21 -3
  195. package/lib/typescript/src/native/SessionRecorderNative.d.ts.map +1 -0
  196. package/{dist → lib/typescript/src}/native/index.d.ts +1 -0
  197. package/lib/typescript/src/native/index.d.ts.map +1 -0
  198. package/{dist → lib/typescript/src}/otel/helpers.d.ts +3 -2
  199. package/lib/typescript/src/otel/helpers.d.ts.map +1 -0
  200. package/{dist → lib/typescript/src}/otel/index.d.ts +2 -2
  201. package/lib/typescript/src/otel/index.d.ts.map +1 -0
  202. package/{dist → lib/typescript/src}/otel/instrumentations/index.d.ts +2 -1
  203. package/lib/typescript/src/otel/instrumentations/index.d.ts.map +1 -0
  204. package/lib/typescript/src/patch/index.d.ts +2 -0
  205. package/lib/typescript/src/patch/index.d.ts.map +1 -0
  206. package/{dist → lib/typescript/src}/patch/xhr.d.ts +1 -0
  207. package/lib/typescript/src/patch/xhr.d.ts.map +1 -0
  208. package/{dist → lib/typescript/src}/recorder/eventExporter.d.ts +2 -1
  209. package/lib/typescript/src/recorder/eventExporter.d.ts.map +1 -0
  210. package/{dist → lib/typescript/src}/recorder/gestureRecorder.d.ts +3 -2
  211. package/lib/typescript/src/recorder/gestureRecorder.d.ts.map +1 -0
  212. package/{dist → lib/typescript/src}/recorder/index.d.ts +3 -2
  213. package/lib/typescript/src/recorder/index.d.ts.map +1 -0
  214. package/{dist → lib/typescript/src}/recorder/navigationTracker.d.ts +2 -1
  215. package/lib/typescript/src/recorder/navigationTracker.d.ts.map +1 -0
  216. package/{dist → lib/typescript/src}/recorder/screenRecorder.d.ts +4 -4
  217. package/lib/typescript/src/recorder/screenRecorder.d.ts.map +1 -0
  218. package/{dist → lib/typescript/src}/services/api.service.d.ts +2 -1
  219. package/lib/typescript/src/services/api.service.d.ts.map +1 -0
  220. package/{dist → lib/typescript/src}/services/network.service.d.ts +1 -0
  221. package/lib/typescript/src/services/network.service.d.ts.map +1 -0
  222. package/{dist → lib/typescript/src}/services/screenMaskingService.d.ts +2 -1
  223. package/lib/typescript/src/services/screenMaskingService.d.ts.map +1 -0
  224. package/{dist → lib/typescript/src}/services/storage.service.d.ts +2 -1
  225. package/lib/typescript/src/services/storage.service.d.ts.map +1 -0
  226. package/{dist → lib/typescript/src}/session-recorder.d.ts +3 -2
  227. package/lib/typescript/src/session-recorder.d.ts.map +1 -0
  228. package/{dist → lib/typescript/src}/types/configs.d.ts +3 -2
  229. package/lib/typescript/src/types/configs.d.ts.map +1 -0
  230. package/{dist → lib/typescript/src}/types/index.d.ts +1 -0
  231. package/lib/typescript/src/types/index.d.ts.map +1 -0
  232. package/{dist → lib/typescript/src}/types/session-recorder.d.ts +3 -2
  233. package/lib/typescript/src/types/session-recorder.d.ts.map +1 -0
  234. package/{dist → lib/typescript/src}/types/session.d.ts +1 -0
  235. package/lib/typescript/src/types/session.d.ts.map +1 -0
  236. package/{dist → lib/typescript/src}/utils/app-metadata.d.ts +1 -0
  237. package/lib/typescript/src/utils/app-metadata.d.ts.map +1 -0
  238. package/{dist → lib/typescript/src}/utils/constants.optional.d.ts +1 -0
  239. package/lib/typescript/src/utils/constants.optional.d.ts.map +1 -0
  240. package/{dist → lib/typescript/src}/utils/constants.optional.expo.d.ts +1 -0
  241. package/lib/typescript/src/utils/constants.optional.expo.d.ts.map +1 -0
  242. package/{dist → lib/typescript/src}/utils/createStore.d.ts +1 -0
  243. package/lib/typescript/src/utils/createStore.d.ts.map +1 -0
  244. package/{dist → lib/typescript/src}/utils/index.d.ts +1 -0
  245. package/lib/typescript/src/utils/index.d.ts.map +1 -0
  246. package/{dist → lib/typescript/src}/utils/logger.d.ts +1 -0
  247. package/lib/typescript/src/utils/logger.d.ts.map +1 -0
  248. package/{dist → lib/typescript/src}/utils/platform.d.ts +2 -1
  249. package/lib/typescript/src/utils/platform.d.ts.map +1 -0
  250. package/{dist → lib/typescript/src}/utils/request-utils.d.ts +1 -0
  251. package/lib/typescript/src/utils/request-utils.d.ts.map +1 -0
  252. package/{dist → lib/typescript/src}/utils/rrweb-events.d.ts +2 -1
  253. package/lib/typescript/src/utils/rrweb-events.d.ts.map +1 -0
  254. package/{dist → lib/typescript/src}/utils/session.d.ts +1 -0
  255. package/lib/typescript/src/utils/session.d.ts.map +1 -0
  256. package/{dist → lib/typescript/src}/utils/shallowEqual.d.ts +1 -0
  257. package/lib/typescript/src/utils/shallowEqual.d.ts.map +1 -0
  258. package/{dist → lib/typescript/src}/utils/time.d.ts +1 -0
  259. package/lib/typescript/src/utils/time.d.ts.map +1 -0
  260. package/{dist → lib/typescript/src}/utils/type-utils.d.ts +1 -0
  261. package/lib/typescript/src/utils/type-utils.d.ts.map +1 -0
  262. package/lib/typescript/src/version.d.ts +2 -0
  263. package/lib/typescript/src/version.d.ts.map +1 -0
  264. package/package.json +140 -39
  265. package/src/components/ScreenRecorderView/ScreenRecorderView.tsx +20 -0
  266. package/src/components/SessionRecorderWidget/ErrorBanner.tsx +58 -0
  267. package/src/components/SessionRecorderWidget/FinalPopover.tsx +96 -0
  268. package/src/components/SessionRecorderWidget/FloatingButton.tsx +176 -0
  269. package/src/components/SessionRecorderWidget/InitialPopover.tsx +167 -0
  270. package/src/components/SessionRecorderWidget/ModalContainer.tsx +189 -0
  271. package/src/components/SessionRecorderWidget/ModalHeader.tsx +24 -0
  272. package/src/components/SessionRecorderWidget/SessionRecorderWidget.tsx +136 -0
  273. package/src/components/SessionRecorderWidget/icons.tsx +52 -0
  274. package/{dist/components/SessionRecorderWidget/index.d.ts → src/components/SessionRecorderWidget/index.ts} +1 -0
  275. package/src/components/SessionRecorderWidget/styles.ts +169 -0
  276. package/src/components/index.ts +2 -0
  277. package/src/config/constants.ts +68 -0
  278. package/src/config/defaults.ts +101 -0
  279. package/src/config/index.ts +6 -0
  280. package/src/config/masking.ts +34 -0
  281. package/src/config/session-recorder.ts +59 -0
  282. package/src/config/validators.ts +31 -0
  283. package/src/config/widget.ts +38 -0
  284. package/src/context/SessionRecorderContext.tsx +138 -0
  285. package/src/context/SessionRecorderStore.ts +21 -0
  286. package/src/context/useSessionRecorderStore.ts +27 -0
  287. package/src/context/useStoreSelector.ts +34 -0
  288. package/src/index.ts +10 -0
  289. package/src/native/SessionRecorderNative.ts +164 -0
  290. package/src/native/index.ts +1 -0
  291. package/src/otel/helpers.ts +274 -0
  292. package/src/otel/index.ts +135 -0
  293. package/src/otel/instrumentations/index.ts +115 -0
  294. package/src/patch/index.ts +1 -0
  295. package/src/patch/xhr.ts +149 -0
  296. package/src/recorder/eventExporter.ts +155 -0
  297. package/src/recorder/gestureRecorder.ts +681 -0
  298. package/src/recorder/index.ts +190 -0
  299. package/src/recorder/navigationTracker.ts +245 -0
  300. package/src/recorder/screenRecorder.ts +549 -0
  301. package/src/services/api.service.ts +215 -0
  302. package/src/services/network.service.ts +182 -0
  303. package/src/services/screenMaskingService.ts +122 -0
  304. package/src/services/storage.service.ts +219 -0
  305. package/src/session-recorder.ts +591 -0
  306. package/src/types/configs.ts +96 -0
  307. package/src/types/expo-constants.d.ts +7 -0
  308. package/src/types/index.ts +29 -0
  309. package/src/types/session-recorder.ts +386 -0
  310. package/src/types/session.ts +65 -0
  311. package/src/utils/app-metadata.ts +31 -0
  312. package/src/utils/constants.optional.expo.ts +5 -0
  313. package/src/utils/constants.optional.ts +16 -0
  314. package/src/utils/createStore.ts +29 -0
  315. package/src/utils/index.ts +8 -0
  316. package/src/utils/logger.ts +216 -0
  317. package/src/utils/platform.ts +370 -0
  318. package/src/utils/request-utils.ts +61 -0
  319. package/src/utils/rrweb-events.ts +316 -0
  320. package/src/utils/session.ts +19 -0
  321. package/src/utils/shallowEqual.ts +14 -0
  322. package/src/utils/time.ts +17 -0
  323. package/src/utils/type-utils.ts +75 -0
  324. package/src/version.ts +1 -0
  325. package/android/gradle/wrapper/gradle-wrapper.jar +0 -0
  326. package/android/gradle/wrapper/gradle-wrapper.properties +0 -7
  327. package/android/gradlew +0 -249
  328. package/android/gradlew.bat +0 -92
  329. package/copy-react-native-dist.sh +0 -56
  330. package/dist/components/ScreenRecorderView/ScreenRecorderView.d.ts +0 -5
  331. package/dist/components/ScreenRecorderView/ScreenRecorderView.js +0 -1
  332. package/dist/components/ScreenRecorderView/ScreenRecorderView.js.map +0 -1
  333. package/dist/components/ScreenRecorderView/index.js +0 -1
  334. package/dist/components/ScreenRecorderView/index.js.map +0 -1
  335. package/dist/components/SessionRecorderWidget/ErrorBanner.js +0 -1
  336. package/dist/components/SessionRecorderWidget/ErrorBanner.js.map +0 -1
  337. package/dist/components/SessionRecorderWidget/FinalPopover.js +0 -1
  338. package/dist/components/SessionRecorderWidget/FinalPopover.js.map +0 -1
  339. package/dist/components/SessionRecorderWidget/FloatingButton.js +0 -1
  340. package/dist/components/SessionRecorderWidget/FloatingButton.js.map +0 -1
  341. package/dist/components/SessionRecorderWidget/InitialPopover.js +0 -1
  342. package/dist/components/SessionRecorderWidget/InitialPopover.js.map +0 -1
  343. package/dist/components/SessionRecorderWidget/ModalContainer.js +0 -1
  344. package/dist/components/SessionRecorderWidget/ModalContainer.js.map +0 -1
  345. package/dist/components/SessionRecorderWidget/ModalHeader.js +0 -1
  346. package/dist/components/SessionRecorderWidget/ModalHeader.js.map +0 -1
  347. package/dist/components/SessionRecorderWidget/SessionRecorderWidget.js +0 -1
  348. package/dist/components/SessionRecorderWidget/SessionRecorderWidget.js.map +0 -1
  349. package/dist/components/SessionRecorderWidget/icons.js +0 -1
  350. package/dist/components/SessionRecorderWidget/icons.js.map +0 -1
  351. package/dist/components/SessionRecorderWidget/index.js +0 -1
  352. package/dist/components/SessionRecorderWidget/index.js.map +0 -1
  353. package/dist/components/SessionRecorderWidget/styles.js +0 -1
  354. package/dist/components/SessionRecorderWidget/styles.js.map +0 -1
  355. package/dist/components/index.js +0 -1
  356. package/dist/components/index.js.map +0 -1
  357. package/dist/config/constants.js +0 -1
  358. package/dist/config/constants.js.map +0 -1
  359. package/dist/config/defaults.js +0 -1
  360. package/dist/config/defaults.js.map +0 -1
  361. package/dist/config/index.js +0 -1
  362. package/dist/config/index.js.map +0 -1
  363. package/dist/config/masking.d.ts +0 -2
  364. package/dist/config/masking.js +0 -1
  365. package/dist/config/masking.js.map +0 -1
  366. package/dist/config/session-recorder.d.ts +0 -2
  367. package/dist/config/session-recorder.js +0 -1
  368. package/dist/config/session-recorder.js.map +0 -1
  369. package/dist/config/validators.js +0 -1
  370. package/dist/config/validators.js.map +0 -1
  371. package/dist/config/widget.js +0 -1
  372. package/dist/config/widget.js.map +0 -1
  373. package/dist/context/SessionRecorderContext.js +0 -1
  374. package/dist/context/SessionRecorderContext.js.map +0 -1
  375. package/dist/context/SessionRecorderStore.js +0 -1
  376. package/dist/context/SessionRecorderStore.js.map +0 -1
  377. package/dist/context/useSessionRecorderStore.js +0 -1
  378. package/dist/context/useSessionRecorderStore.js.map +0 -1
  379. package/dist/context/useStoreSelector.js +0 -1
  380. package/dist/context/useStoreSelector.js.map +0 -1
  381. package/dist/index.js +0 -1
  382. package/dist/index.js.map +0 -1
  383. package/dist/native/GestureRecorderNative.d.ts +0 -57
  384. package/dist/native/GestureRecorderNative.js +0 -1
  385. package/dist/native/GestureRecorderNative.js.map +0 -1
  386. package/dist/native/GestureRecorderNativeTurboSpec.d.ts +0 -31
  387. package/dist/native/GestureRecorderNativeTurboSpec.js +0 -1
  388. package/dist/native/GestureRecorderNativeTurboSpec.js.map +0 -1
  389. package/dist/native/SessionRecorderNative.js +0 -1
  390. package/dist/native/SessionRecorderNative.js.map +0 -1
  391. package/dist/native/SessionRecorderNativeTurboSpec.d.ts +0 -17
  392. package/dist/native/SessionRecorderNativeTurboSpec.js +0 -1
  393. package/dist/native/SessionRecorderNativeTurboSpec.js.map +0 -1
  394. package/dist/native/index.js +0 -1
  395. package/dist/native/index.js.map +0 -1
  396. package/dist/otel/helpers.js +0 -1
  397. package/dist/otel/helpers.js.map +0 -1
  398. package/dist/otel/index.js +0 -1
  399. package/dist/otel/index.js.map +0 -1
  400. package/dist/otel/instrumentations/index.js +0 -1
  401. package/dist/otel/instrumentations/index.js.map +0 -1
  402. package/dist/patch/index.d.ts +0 -1
  403. package/dist/patch/index.js +0 -1
  404. package/dist/patch/index.js.map +0 -1
  405. package/dist/patch/xhr.js +0 -1
  406. package/dist/patch/xhr.js.map +0 -1
  407. package/dist/recorder/eventExporter.js +0 -1
  408. package/dist/recorder/eventExporter.js.map +0 -1
  409. package/dist/recorder/gestureRecorder.js +0 -1
  410. package/dist/recorder/gestureRecorder.js.map +0 -1
  411. package/dist/recorder/index.js +0 -1
  412. package/dist/recorder/index.js.map +0 -1
  413. package/dist/recorder/navigationTracker.js +0 -1
  414. package/dist/recorder/navigationTracker.js.map +0 -1
  415. package/dist/recorder/screenRecorder.js +0 -1
  416. package/dist/recorder/screenRecorder.js.map +0 -1
  417. package/dist/services/api.service.js +0 -1
  418. package/dist/services/api.service.js.map +0 -1
  419. package/dist/services/network.service.js +0 -1
  420. package/dist/services/network.service.js.map +0 -1
  421. package/dist/services/screenMaskingService.js +0 -1
  422. package/dist/services/screenMaskingService.js.map +0 -1
  423. package/dist/services/storage.service.js +0 -1
  424. package/dist/services/storage.service.js.map +0 -1
  425. package/dist/session-recorder.js +0 -1
  426. package/dist/session-recorder.js.map +0 -1
  427. package/dist/types/configs.js +0 -1
  428. package/dist/types/configs.js.map +0 -1
  429. package/dist/types/index.js +0 -1
  430. package/dist/types/index.js.map +0 -1
  431. package/dist/types/session-recorder.js +0 -1
  432. package/dist/types/session-recorder.js.map +0 -1
  433. package/dist/types/session.js +0 -1
  434. package/dist/types/session.js.map +0 -1
  435. package/dist/utils/app-metadata.js +0 -1
  436. package/dist/utils/app-metadata.js.map +0 -1
  437. package/dist/utils/constants.optional.expo.js +0 -1
  438. package/dist/utils/constants.optional.expo.js.map +0 -1
  439. package/dist/utils/constants.optional.js +0 -1
  440. package/dist/utils/constants.optional.js.map +0 -1
  441. package/dist/utils/createStore.js +0 -1
  442. package/dist/utils/createStore.js.map +0 -1
  443. package/dist/utils/index.js +0 -1
  444. package/dist/utils/index.js.map +0 -1
  445. package/dist/utils/logger.js +0 -1
  446. package/dist/utils/logger.js.map +0 -1
  447. package/dist/utils/platform.js +0 -1
  448. package/dist/utils/platform.js.map +0 -1
  449. package/dist/utils/request-utils.js +0 -1
  450. package/dist/utils/request-utils.js.map +0 -1
  451. package/dist/utils/rrweb-events.js +0 -1
  452. package/dist/utils/rrweb-events.js.map +0 -1
  453. package/dist/utils/session.js +0 -1
  454. package/dist/utils/session.js.map +0 -1
  455. package/dist/utils/shallowEqual.js +0 -1
  456. package/dist/utils/shallowEqual.js.map +0 -1
  457. package/dist/utils/time.js +0 -1
  458. package/dist/utils/time.js.map +0 -1
  459. package/dist/utils/type-utils.js +0 -1
  460. package/dist/utils/type-utils.js.map +0 -1
  461. package/dist/version.d.ts +0 -1
  462. package/dist/version.js +0 -1
  463. package/dist/version.js.map +0 -1
  464. package/docs/AUTO_METADATA_DETECTION.md +0 -108
  465. /package/{dist/components/ScreenRecorderView/index.d.ts → src/components/ScreenRecorderView/index.ts} +0 -0
@@ -0,0 +1,178 @@
1
+ "use strict";
2
+
3
+ import { Platform } from 'react-native';
4
+ import { logger } from "../utils/index.js";
5
+ import { sessionRecorderStore } from "../context/SessionRecorderStore.js";
6
+
7
+ // Safe import for NetInfo with web fallback
8
+ let NetInfo = null;
9
+ const isWeb = Platform.OS === 'web';
10
+ if (!isWeb) {
11
+ try {
12
+ NetInfo = require('@react-native-community/netinfo').default;
13
+ } catch (error) {
14
+ console.warn('NetInfo not available:', error);
15
+ }
16
+ } else {
17
+ // Web fallback using navigator.onLine
18
+ NetInfo = {
19
+ fetch: () => Promise.resolve({
20
+ isConnected: true,
21
+ // Default to connected for web
22
+ type: 'unknown',
23
+ isInternetReachable: true
24
+ }),
25
+ addEventListener: _callback => {
26
+ // Return a no-op function for web
27
+ return () => {};
28
+ }
29
+ };
30
+ }
31
+ export class NetworkService {
32
+ static instance = null;
33
+ _isOnline = true;
34
+ unsubscribe = null;
35
+ callbacks = [];
36
+ constructor() {
37
+ // Private constructor for singleton
38
+ }
39
+ static getInstance() {
40
+ if (!NetworkService.instance) {
41
+ NetworkService.instance = new NetworkService();
42
+ }
43
+ return NetworkService.instance;
44
+ }
45
+
46
+ /**
47
+ * Initialize network monitoring
48
+ */
49
+ async init() {
50
+ try {
51
+ // Get initial network state
52
+ const initialState = await NetInfo.fetch();
53
+ this._isOnline = initialState.isConnected ?? true;
54
+
55
+ // Update store with initial state
56
+ sessionRecorderStore.setState({
57
+ isOnline: this._isOnline
58
+ });
59
+
60
+ // Notify callbacks
61
+ this.notifyCallbacks({
62
+ isConnected: this._isOnline,
63
+ type: initialState.type,
64
+ isInternetReachable: initialState.isInternetReachable
65
+ });
66
+
67
+ // Listen for network state changes
68
+ this.unsubscribe = NetInfo.addEventListener(state => {
69
+ const wasOnline = this._isOnline;
70
+ this._isOnline = state.isConnected ?? true;
71
+
72
+ // Update store
73
+ sessionRecorderStore.setState({
74
+ isOnline: this._isOnline
75
+ });
76
+
77
+ // Notify callbacks
78
+ this.notifyCallbacks({
79
+ isConnected: this._isOnline,
80
+ type: state.type,
81
+ isInternetReachable: state.isInternetReachable
82
+ });
83
+
84
+ // Log state changes
85
+ if (wasOnline && !this._isOnline) {
86
+ logger.info('NetworkService', 'Network went offline');
87
+ } else if (!wasOnline && this._isOnline) {
88
+ logger.info('NetworkService', 'Network came back online');
89
+ }
90
+ });
91
+ logger.info('NetworkService', 'Network monitoring initialized');
92
+ } catch (error) {
93
+ logger.error('NetworkService', 'Failed to initialize network monitoring', error);
94
+ }
95
+ }
96
+
97
+ /**
98
+ * Get current network state
99
+ */
100
+ getCurrentState() {
101
+ return {
102
+ isConnected: this._isOnline,
103
+ type: null,
104
+ // We don't store this in the service
105
+ isInternetReachable: null // We don't store this in the service
106
+ };
107
+ }
108
+
109
+ /**
110
+ * Check if device is online
111
+ */
112
+ isOnline() {
113
+ return this._isOnline;
114
+ }
115
+
116
+ /**
117
+ * Add callback for network state changes
118
+ */
119
+ addCallback(callback) {
120
+ this.callbacks.push(callback);
121
+ }
122
+
123
+ /**
124
+ * Remove callback for network state changes
125
+ */
126
+ removeCallback(callback) {
127
+ this.callbacks = this.callbacks.filter(cb => cb !== callback);
128
+ }
129
+
130
+ /**
131
+ * Notify all callbacks of network state change
132
+ */
133
+ notifyCallbacks(state) {
134
+ this.callbacks.forEach(callback => {
135
+ try {
136
+ callback(state);
137
+ } catch (error) {
138
+ logger.error('NetworkService', 'Error in network state callback', error);
139
+ }
140
+ });
141
+ }
142
+
143
+ /**
144
+ * Cleanup network monitoring
145
+ */
146
+ cleanup() {
147
+ if (this.unsubscribe) {
148
+ this.unsubscribe();
149
+ this.unsubscribe = null;
150
+ }
151
+ this.callbacks = [];
152
+ logger.info('NetworkService', 'Network monitoring cleaned up');
153
+ }
154
+
155
+ /**
156
+ * Force refresh network state
157
+ */
158
+ async refresh() {
159
+ try {
160
+ const state = await NetInfo.fetch();
161
+ this._isOnline = state.isConnected ?? true;
162
+ sessionRecorderStore.setState({
163
+ isOnline: this._isOnline
164
+ });
165
+ const networkState = {
166
+ isConnected: this._isOnline,
167
+ type: state.type,
168
+ isInternetReachable: state.isInternetReachable
169
+ };
170
+ this.notifyCallbacks(networkState);
171
+ return networkState;
172
+ } catch (error) {
173
+ logger.error('NetworkService', 'Failed to refresh network state', error);
174
+ throw error;
175
+ }
176
+ }
177
+ }
178
+ //# sourceMappingURL=network.service.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"names":["Platform","logger","sessionRecorderStore","NetInfo","isWeb","OS","require","default","error","console","warn","fetch","Promise","resolve","isConnected","type","isInternetReachable","addEventListener","_callback","NetworkService","instance","_isOnline","unsubscribe","callbacks","constructor","getInstance","init","initialState","setState","isOnline","notifyCallbacks","state","wasOnline","info","getCurrentState","addCallback","callback","push","removeCallback","filter","cb","forEach","cleanup","refresh","networkState"],"sourceRoot":"../../../src","sources":["services/network.service.ts"],"mappings":"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","ignoreList":[]}
@@ -0,0 +1,107 @@
1
+ "use strict";
2
+
3
+ import SessionRecorderNative from "../native/SessionRecorderNative.js";
4
+ import { logger } from "../utils/index.js";
5
+ export class ScreenMaskingService {
6
+ isAvailable = false;
7
+ constructor(config = {
8
+ enabled: true,
9
+ maskTextInputs: true,
10
+ maskImages: false,
11
+ maskButtons: false,
12
+ maskLabels: false,
13
+ maskWebViews: false,
14
+ maskSandboxedViews: false
15
+ }) {
16
+ this.config = config;
17
+ this.checkAvailability();
18
+ }
19
+
20
+ /**
21
+ * Check if the native masking module is available
22
+ */
23
+ checkAvailability() {
24
+ try {
25
+ // Try to access the native module to check if it's available
26
+ if (SessionRecorderNative && typeof SessionRecorderNative.captureAndMask === 'function') {
27
+ this.isAvailable = true;
28
+ logger.info('ScreenMaskingService', 'Screen masking native module is available');
29
+ } else {
30
+ this.isAvailable = false;
31
+ logger.warn('ScreenMaskingService', 'Screen masking native module is not available - auto-linking may still be in progress');
32
+ }
33
+ } catch (error) {
34
+ this.isAvailable = false;
35
+ logger.error('ScreenMaskingService', 'Error checking screen masking availability:', error);
36
+ }
37
+ }
38
+
39
+ /**
40
+ * Capture screen with masking applied
41
+ */
42
+ async captureMaskedScreen(options) {
43
+ if (!this.isAvailable || !this.config.enabled) {
44
+ logger.warn('ScreenMaskingService', 'Screen masking is not available or disabled');
45
+ return null;
46
+ }
47
+ try {
48
+ const maskingOptions = {
49
+ ...this.config,
50
+ ...options
51
+ };
52
+ const maskedImageBase64 = await SessionRecorderNative.captureAndMaskWithOptions(maskingOptions);
53
+ return maskedImageBase64;
54
+ } catch (error) {
55
+ logger.error('ScreenMaskingService', 'Failed to capture masked screen:', error);
56
+ return null;
57
+ }
58
+ }
59
+
60
+ /**
61
+ * Capture screen with basic masking (no custom options)
62
+ */
63
+ async captureMaskedScreenBasic() {
64
+ if (!this.isAvailable || !this.config.enabled) {
65
+ logger.warn('ScreenMaskingService', 'Screen masking is not available or disabled');
66
+ return null;
67
+ }
68
+ try {
69
+ const maskedImageBase64 = await SessionRecorderNative.captureAndMask();
70
+ return maskedImageBase64;
71
+ } catch (error) {
72
+ logger.error('ScreenMaskingService', 'Failed to capture masked screen (basic):', error);
73
+ return null;
74
+ }
75
+ }
76
+
77
+ /**
78
+ * Update the masking configuration
79
+ */
80
+ updateConfig(config) {
81
+ this.config = {
82
+ ...this.config,
83
+ ...config
84
+ };
85
+ logger.info('ScreenMaskingService', 'Screen masking configuration updated');
86
+ }
87
+
88
+ /**
89
+ * Check if screen masking is available
90
+ */
91
+ isScreenMaskingAvailable() {
92
+ return this.isAvailable && this.config.enabled;
93
+ }
94
+
95
+ /**
96
+ * Get the current configuration
97
+ */
98
+ getConfig() {
99
+ return {
100
+ ...this.config
101
+ };
102
+ }
103
+ }
104
+
105
+ // Create a singleton instance
106
+ export const screenMaskingService = new ScreenMaskingService();
107
+ //# sourceMappingURL=screenMaskingService.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"names":["SessionRecorderNative","logger","ScreenMaskingService","isAvailable","constructor","config","enabled","maskTextInputs","maskImages","maskButtons","maskLabels","maskWebViews","maskSandboxedViews","checkAvailability","captureAndMask","info","warn","error","captureMaskedScreen","options","maskingOptions","maskedImageBase64","captureAndMaskWithOptions","captureMaskedScreenBasic","updateConfig","isScreenMaskingAvailable","getConfig","screenMaskingService"],"sourceRoot":"../../../src","sources":["services/screenMaskingService.ts"],"mappings":"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","ignoreList":[]}
@@ -0,0 +1,179 @@
1
+ "use strict";
2
+
3
+ import { Platform } from 'react-native';
4
+ import { logger } from "../utils/index.js";
5
+
6
+ // Safe import for AsyncStorage with web fallback
7
+ let AsyncStorage = null;
8
+ const isWeb = Platform.OS === 'web';
9
+ if (!isWeb) {
10
+ try {
11
+ AsyncStorage = require('@react-native-async-storage/async-storage').default;
12
+ } catch (error) {
13
+ console.warn('AsyncStorage not available:', error);
14
+ }
15
+ } else {
16
+ // Web fallback using localStorage
17
+ AsyncStorage = {
18
+ getItem: _key => Promise.resolve(null),
19
+ // Simplified for web
20
+ setItem: (_key, _value) => Promise.resolve(undefined),
21
+ removeItem: _key => Promise.resolve(undefined),
22
+ multiRemove: _keys => Promise.resolve(undefined)
23
+ };
24
+ }
25
+ export class StorageService {
26
+ static SESSION_ID_KEY = 'session_id';
27
+ static SESSION_TYPE_KEY = 'session_type';
28
+ static SESSION_STATE_KEY = 'session_state';
29
+ static SESSION_OBJECT_KEY = 'session_object';
30
+ static FLOATING_BUTTON_POSITION_KEY = 'floating_button_position';
31
+ static cache = {
32
+ sessionId: null,
33
+ sessionType: null,
34
+ sessionState: null,
35
+ sessionObject: null,
36
+ floatingButtonPosition: null
37
+ };
38
+ static cacheInitialized = false;
39
+ static instance = null;
40
+ static positionSaveTimeout = null;
41
+ constructor() {
42
+ // Private constructor for singleton
43
+ }
44
+ static getInstance() {
45
+ if (!StorageService.instance) {
46
+ StorageService.instance = new StorageService();
47
+ StorageService.initialize();
48
+ }
49
+ return StorageService.instance;
50
+ }
51
+ static async initializeCache() {
52
+ if (StorageService.cacheInitialized) return;
53
+ try {
54
+ const [sessionId, sessionType, sessionState, sessionObject, floatingButtonPosition] = await Promise.all([AsyncStorage.getItem(StorageService.SESSION_ID_KEY), AsyncStorage.getItem(StorageService.SESSION_TYPE_KEY), AsyncStorage.getItem(StorageService.SESSION_STATE_KEY), AsyncStorage.getItem(StorageService.SESSION_OBJECT_KEY), AsyncStorage.getItem(StorageService.FLOATING_BUTTON_POSITION_KEY)]);
55
+ StorageService.cache = {
56
+ sessionId,
57
+ sessionType: sessionType,
58
+ sessionState: sessionState,
59
+ sessionObject: sessionObject ? JSON.parse(sessionObject) : null,
60
+ floatingButtonPosition: floatingButtonPosition ? JSON.parse(floatingButtonPosition) : null
61
+ };
62
+ StorageService.cacheInitialized = true;
63
+ } catch (error) {
64
+ // Failed to initialize cache - silently continue
65
+ StorageService.cacheInitialized = true; // Mark as initialized to prevent retries
66
+ }
67
+ }
68
+ saveSessionId(sessionId) {
69
+ try {
70
+ StorageService.cache.sessionId = sessionId;
71
+ AsyncStorage.setItem(StorageService.SESSION_ID_KEY, sessionId).catch(_error => {
72
+ // Failed to persist session ID - silently continue
73
+ });
74
+ } catch (error) {
75
+ // Failed to save session ID - silently continue
76
+ throw error;
77
+ }
78
+ }
79
+ getSessionId() {
80
+ return StorageService.cache.sessionId;
81
+ }
82
+ saveSessionType(sessionType) {
83
+ try {
84
+ StorageService.cache.sessionType = sessionType;
85
+ AsyncStorage.setItem(StorageService.SESSION_TYPE_KEY, sessionType).catch(_error => {
86
+ // Failed to persist session type - silently continue
87
+ });
88
+ } catch (error) {
89
+ // Failed to save session type - silently continue
90
+ throw error;
91
+ }
92
+ }
93
+ getSessionType() {
94
+ return StorageService.cache.sessionType;
95
+ }
96
+ saveSessionState(state) {
97
+ try {
98
+ StorageService.cache.sessionState = state;
99
+ AsyncStorage.setItem(StorageService.SESSION_STATE_KEY, state).catch(_error => {
100
+ // Failed to persist session state - silently continue
101
+ });
102
+ } catch (error) {
103
+ // Failed to save session state - silently continue
104
+ throw error;
105
+ }
106
+ }
107
+ getSessionState() {
108
+ return StorageService.cache.sessionState;
109
+ }
110
+ saveSessionObject(session) {
111
+ try {
112
+ StorageService.cache.sessionObject = session;
113
+ AsyncStorage.setItem(StorageService.SESSION_OBJECT_KEY, JSON.stringify(session)).catch(_error => {
114
+ // Failed to persist session object - silently continue
115
+ });
116
+ } catch (error) {
117
+ // Failed to save session object - silently continue
118
+ throw error;
119
+ }
120
+ }
121
+ getSessionObject() {
122
+ return StorageService.cache.sessionObject;
123
+ }
124
+ clearSessionData() {
125
+ try {
126
+ // Clear cache immediately
127
+ StorageService.cache = {
128
+ ...StorageService.cache,
129
+ sessionId: null,
130
+ sessionType: null,
131
+ sessionState: null,
132
+ sessionObject: null
133
+ };
134
+
135
+ // Clear persistent storage asynchronously
136
+ AsyncStorage.multiRemove([StorageService.SESSION_ID_KEY, StorageService.SESSION_TYPE_KEY, StorageService.SESSION_STATE_KEY, StorageService.SESSION_OBJECT_KEY]).catch(_error => {
137
+ // Failed to clear session data from storage - silently continue
138
+ });
139
+ } catch (error) {
140
+ // Failed to clear session data - silently continue
141
+ throw error;
142
+ }
143
+ }
144
+ getAllSessionData() {
145
+ return {
146
+ sessionId: StorageService.cache.sessionId,
147
+ sessionType: StorageService.cache.sessionType,
148
+ sessionState: StorageService.cache.sessionState,
149
+ sessionObject: StorageService.cache.sessionObject
150
+ };
151
+ }
152
+ saveFloatingButtonPosition(position) {
153
+ try {
154
+ StorageService.cache.floatingButtonPosition = position;
155
+
156
+ // Debounce AsyncStorage writes to avoid excessive I/O
157
+ if (StorageService.positionSaveTimeout) {
158
+ clearTimeout(StorageService.positionSaveTimeout);
159
+ }
160
+ StorageService.positionSaveTimeout = setTimeout(() => {
161
+ AsyncStorage.setItem(StorageService.FLOATING_BUTTON_POSITION_KEY, JSON.stringify(position)).catch(error => {
162
+ logger.error('StorageService', 'Failed to persist floating button position', error);
163
+ });
164
+ }, 100); // 100ms debounce
165
+ } catch (error) {
166
+ logger.error('StorageService', 'Failed to save floating button position', error);
167
+ throw error;
168
+ }
169
+ }
170
+ getFloatingButtonPosition() {
171
+ return StorageService.cache.floatingButtonPosition;
172
+ }
173
+
174
+ // Initialize cache on first use - call this method when the service is first used
175
+ static async initialize() {
176
+ await StorageService.initializeCache();
177
+ }
178
+ }
179
+ //# sourceMappingURL=storage.service.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"names":["Platform","logger","AsyncStorage","isWeb","OS","require","default","error","console","warn","getItem","_key","Promise","resolve","setItem","_value","undefined","removeItem","multiRemove","_keys","StorageService","SESSION_ID_KEY","SESSION_TYPE_KEY","SESSION_STATE_KEY","SESSION_OBJECT_KEY","FLOATING_BUTTON_POSITION_KEY","cache","sessionId","sessionType","sessionState","sessionObject","floatingButtonPosition","cacheInitialized","instance","positionSaveTimeout","constructor","getInstance","initialize","initializeCache","all","JSON","parse","saveSessionId","catch","_error","getSessionId","saveSessionType","getSessionType","saveSessionState","state","getSessionState","saveSessionObject","session","stringify","getSessionObject","clearSessionData","getAllSessionData","saveFloatingButtonPosition","position","clearTimeout","setTimeout","getFloatingButtonPosition"],"sourceRoot":"../../../src","sources":["services/storage.service.ts"],"mappings":"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","ignoreList":[]}