@scalebun/react-native 1.0.2 → 1.0.3

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 (1622) hide show
  1. package/LICENSE +21 -21
  2. package/README.md +65 -65
  3. package/android/build.gradle +86 -86
  4. package/android/consumer-rules.pro +28 -28
  5. package/android/src/main/AndroidManifest.xml +14 -14
  6. package/android/src/main/java/com/scalebun/core/crash/CrashStorage.kt +41 -41
  7. package/android/src/main/java/com/scalebun/core/crash/NativeCrashHandler.kt +79 -79
  8. package/android/src/main/java/com/scalebun/core/performance/ANRWatchdog.kt +100 -100
  9. package/android/src/main/java/com/scalebun/core/performance/AppStartCollector.kt +132 -132
  10. package/android/src/main/java/com/scalebun/core/performance/FrameMetricsCollector.kt +230 -230
  11. package/android/src/main/java/com/scalebun/core/performance/PerformanceCore.kt +165 -165
  12. package/android/src/main/java/com/scalebun/profiler/ProfilerModule.kt +398 -398
  13. package/android/src/main/java/com/scalebun/profiler/ProfilerPackage.kt +24 -24
  14. package/android/src/main/java/com/scalebun/profiler/collectors/CpuCollector.kt +161 -161
  15. package/android/src/main/java/com/scalebun/profiler/collectors/IncidentDetector.kt +223 -223
  16. package/android/src/main/java/com/scalebun/profiler/collectors/MemoryCollector.kt +157 -157
  17. package/android/src/main/java/com/scalebun/profiler/collectors/RenderCollector.kt +194 -194
  18. package/android/src/main/java/com/scalebun/profiler/collectors/SamplerScheduler.kt +218 -218
  19. package/android/src/main/java/com/scalebun/profiler/collectors/ThreadCollector.kt +142 -142
  20. package/android/src/main/java/com/scalebun/replaysdk/ReplaySdkModule.kt +966 -966
  21. package/android/src/main/java/com/scalebun/replaysdk/ReplaySdkPackage.kt +24 -24
  22. package/android/src/main/java/com/scalebun/replaysdk/capture/CaptureReason.kt +47 -47
  23. package/android/src/main/java/com/scalebun/replaysdk/capture/FrameCaptureManager.kt +508 -508
  24. package/android/src/main/java/com/scalebun/replaysdk/capture/FrameCaptureScheduler.kt +187 -187
  25. package/android/src/main/java/com/scalebun/replaysdk/capture/UiStabilityDetector.kt +214 -214
  26. package/android/src/main/java/com/scalebun/replaysdk/core/ReplayConfig.kt +144 -144
  27. package/android/src/main/java/com/scalebun/replaysdk/core/ReplayLogger.kt +31 -31
  28. package/android/src/main/java/com/scalebun/replaysdk/core/SessionIdGenerator.kt +15 -15
  29. package/android/src/main/java/com/scalebun/replaysdk/models/ReplayModels.kt +88 -88
  30. package/android/src/main/java/com/scalebun/replaysdk/outbox/NativeOutbox.kt +541 -541
  31. package/android/src/main/java/com/scalebun/replaysdk/outbox/OutboxUploader.kt +407 -407
  32. package/android/src/main/java/com/scalebun/replaysdk/privacy/PrivacyMaskProcessor.kt +126 -126
  33. package/android/src/main/java/com/scalebun/replaysdk/session/SessionManager.kt +281 -281
  34. package/android/src/main/java/com/scalebun/replaysdk/storage/ReplayStorage.kt +136 -136
  35. package/android/src/main/java/com/scalebun/replaysdk/timeline/TimelineCollector.kt +28 -28
  36. package/android/src/main/java/com/scalebun/replaysdk/tracking/InteractionTracker.kt +419 -419
  37. package/android/src/main/java/com/scalebun/replaysdk/tracking/ScreenTracker.kt +20 -20
  38. package/android/src/main/java/com/scalebun/replaysdk/transport/ReplayTransport.kt +99 -99
  39. package/android/src/main/java/com/scalebun/replaysdk/voice/VoiceRecorder.kt +121 -121
  40. package/android/src/main/java/com/scalebun/replaysdk/voice/VoiceTranscriber.kt +104 -104
  41. package/android/src/main/java/com/scalebun/rn/ScaleBunPackage.kt +113 -113
  42. package/android/src/main/java/com/scalebun/rn/crash/ScaleBunCrashModule.kt +100 -100
  43. package/android/src/main/java/com/scalebun/rn/crash/ScaleBunCrashPackage.kt +22 -22
  44. package/android/src/main/java/com/scalebun/rn/engage/ScaleBunEngageModule.kt +579 -579
  45. package/android/src/main/java/com/scalebun/rn/engage/ScaleBunEngagePackage.kt +22 -22
  46. package/android/src/main/java/com/scalebun/rn/engage/ScaleBunNotificationPresenter.kt +110 -110
  47. package/android/src/main/java/com/scalebun/rn/ota/BundleDownloader.kt +170 -0
  48. package/android/src/main/java/com/scalebun/rn/ota/ScaleBunOtaModule.kt +284 -136
  49. package/android/src/main/java/com/scalebun/rn/ota/SlotManager.kt +311 -285
  50. package/android/src/main/java/com/scalebun/rn/performance/PerformanceModule.kt +206 -206
  51. package/android/src/main/java/com/scalebun/rn/referrer/ScaleBunInstallReferrerModule.kt +77 -77
  52. package/android/src/main/java/com/scalebun/rn/storage/ScaleBunStorageModule.kt +68 -68
  53. package/android/src/main/java/com/scalebun/storage/KvFileStore.kt +174 -174
  54. package/android/src/newarch/java/com/scalebun/profiler/ProfilerSpec.kt +12 -12
  55. package/android/src/newarch/java/com/scalebun/replaysdk/ReplaySdkSpec.kt +12 -12
  56. package/android/src/newarch/java/com/scalebun/rn/crash/ScaleBunCrashSpec.kt +15 -15
  57. package/android/src/newarch/java/com/scalebun/rn/ota/ScaleBunOtaSpec.kt +16 -16
  58. package/android/src/newarch/java/com/scalebun/rn/performance/PerformanceSpec.kt +12 -12
  59. package/android/src/newarch/java/com/scalebun/rn/referrer/ScaleBunInstallReferrerSpec.kt +14 -14
  60. package/android/src/newarch/java/com/scalebun/rn/storage/ScaleBunStorageSpec.kt +16 -16
  61. package/android/src/oldarch/java/com/scalebun/profiler/ProfilerSpec.kt +34 -34
  62. package/android/src/oldarch/java/com/scalebun/replaysdk/ReplaySdkSpec.kt +76 -76
  63. package/android/src/oldarch/java/com/scalebun/rn/crash/ScaleBunCrashSpec.kt +21 -21
  64. package/android/src/oldarch/java/com/scalebun/rn/ota/ScaleBunOtaSpec.kt +31 -25
  65. package/android/src/oldarch/java/com/scalebun/rn/performance/PerformanceSpec.kt +27 -27
  66. package/android/src/oldarch/java/com/scalebun/rn/referrer/ScaleBunInstallReferrerSpec.kt +18 -18
  67. package/android/src/oldarch/java/com/scalebun/rn/storage/ScaleBunStorageSpec.kt +26 -26
  68. package/bin/lib/iosCodemod.js +266 -266
  69. package/bin/scalebun.js +640 -640
  70. package/ios/Capture/InteractionTracker.swift +191 -191
  71. package/ios/Capture/PrivacyMaskProcessor.swift +158 -158
  72. package/ios/Capture/ScreenshotCaptureManager.swift +315 -315
  73. package/ios/Capture/WindowResolver.swift +63 -63
  74. package/ios/Core/ReplayConfig.swift +100 -100
  75. package/ios/Core/ReplayLogger.swift +22 -22
  76. package/ios/Core/SessionIdGenerator.swift +18 -18
  77. package/ios/Crash/ScaleBunCrashBridge.mm +63 -63
  78. package/ios/Crash/ScaleBunCrashHandler.swift +67 -67
  79. package/ios/Crash/ScaleBunCrashModule.swift +69 -69
  80. package/ios/Crash/ScaleBunCrashSignalBridge.h +18 -18
  81. package/ios/Crash/ScaleBunCrashSignalBridge.m +131 -131
  82. package/ios/Crash/ScaleBunCrashStorage.swift +46 -46
  83. package/ios/Engage/ScaleBunEngageBridge.m +32 -32
  84. package/ios/Engage/ScaleBunEngageModule.swift +250 -250
  85. package/ios/Engage/ScaleBunPushNotificationCenter.swift +185 -185
  86. package/ios/Ota/BundleDownloader.swift +182 -0
  87. package/ios/Ota/OtaSlotManager.swift +290 -264
  88. package/ios/Ota/ScaleBunOtaBridge.mm +77 -68
  89. package/ios/Ota/ScaleBunOtaEventsModule.swift +61 -0
  90. package/ios/Ota/ScaleBunOtaModule.swift +176 -123
  91. package/ios/Outbox/NativeOutbox.swift +598 -598
  92. package/ios/Outbox/OutboxUploader.swift +431 -431
  93. package/ios/Performance/ScaleBunPerformanceBridge.m +32 -32
  94. package/ios/Performance/ScaleBunPerformanceModule.swift +290 -290
  95. package/ios/PrivacyInfo.xcprivacy +97 -97
  96. package/ios/Profiler/ScaleBunProfilerBridge.m +55 -55
  97. package/ios/Profiler/ScaleBunProfilerModule.swift +972 -972
  98. package/ios/ReplaySdk-Bridging-Header.h +2 -2
  99. package/ios/ReplaySdk.swift +608 -608
  100. package/ios/ReplaySdkBridge.m +94 -94
  101. package/ios/Session/SessionManager.swift +203 -203
  102. package/ios/Skan/ScaleBunSkanBridge.m +14 -14
  103. package/ios/Skan/ScaleBunSkanModule.swift +61 -61
  104. package/ios/Storage/ReplayStorage.swift +61 -61
  105. package/ios/Storage/ScaleBunKvFileStore.swift +125 -125
  106. package/ios/Storage/ScaleBunStorageBridge.mm +72 -72
  107. package/ios/Storage/ScaleBunStorageModule.swift +57 -57
  108. package/ios/Transport/ReplayTransport.swift +70 -70
  109. package/ios/VoiceRecorder.swift +145 -145
  110. package/lib/commonjs/analytics/EventTracker.js +34 -34
  111. package/lib/commonjs/analytics/EventTracker.js.map +1 -1
  112. package/lib/commonjs/analytics/automaticEvents.js +7 -7
  113. package/lib/commonjs/analytics/automaticEvents.js.map +1 -1
  114. package/lib/commonjs/analytics/batching.js +24 -24
  115. package/lib/commonjs/analytics/batching.js.map +1 -1
  116. package/lib/commonjs/analytics/eventLane.js +13 -13
  117. package/lib/commonjs/analytics/eventLane.js.map +1 -1
  118. package/lib/commonjs/bootstrap/FeatureRegistry.js +17 -17
  119. package/lib/commonjs/bootstrap/FeatureRegistry.js.map +1 -1
  120. package/lib/commonjs/bootstrap/SDKBootstrapper.js +64 -42
  121. package/lib/commonjs/bootstrap/SDKBootstrapper.js.map +1 -1
  122. package/lib/commonjs/bucketing/fnv1a32.js +10 -10
  123. package/lib/commonjs/bucketing/fnv1a32.js.map +1 -1
  124. package/lib/commonjs/compat/codepush.js +6 -6
  125. package/lib/commonjs/compat/codepush.js.map +1 -1
  126. package/lib/commonjs/config/ConfigManager.js +20 -20
  127. package/lib/commonjs/config/ConfigManager.js.map +1 -1
  128. package/lib/commonjs/config/configTypes.js.map +1 -1
  129. package/lib/commonjs/core/architecture.js +23 -23
  130. package/lib/commonjs/core/architecture.js.map +1 -1
  131. package/lib/commonjs/core/clock/now.js +2 -2
  132. package/lib/commonjs/core/clock/now.js.map +1 -1
  133. package/lib/commonjs/core/config/defaults.js.map +1 -1
  134. package/lib/commonjs/core/config/schema.js +102 -102
  135. package/lib/commonjs/core/config/schema.js.map +1 -1
  136. package/lib/commonjs/core/constants/endpoints.js +7 -7
  137. package/lib/commonjs/core/constants/endpoints.js.map +1 -1
  138. package/lib/commonjs/core/constants/timings.js +5 -5
  139. package/lib/commonjs/core/constants/timings.js.map +1 -1
  140. package/lib/commonjs/core/constants/version.js +4 -4
  141. package/lib/commonjs/core/constants/version.js.map +1 -1
  142. package/lib/commonjs/core/context/app.js.map +1 -1
  143. package/lib/commonjs/core/context/device.js.map +1 -1
  144. package/lib/commonjs/core/context/session.js.map +1 -1
  145. package/lib/commonjs/core/context/user.js.map +1 -1
  146. package/lib/commonjs/core/contracts/IFeature.js.map +1 -1
  147. package/lib/commonjs/core/di/container.js.map +1 -1
  148. package/lib/commonjs/core/encoding/base64.js +9 -9
  149. package/lib/commonjs/core/encoding/base64.js.map +1 -1
  150. package/lib/commonjs/core/id/deviceId.js +4 -4
  151. package/lib/commonjs/core/id/deviceId.js.map +1 -1
  152. package/lib/commonjs/core/id/sessionId.js.map +1 -1
  153. package/lib/commonjs/core/lifecycle/appLifecycle.js.map +1 -1
  154. package/lib/commonjs/core/lifecycle/crashSafe.js +3 -3
  155. package/lib/commonjs/core/lifecycle/crashSafe.js.map +1 -1
  156. package/lib/commonjs/core/logger/errorClassification.js +30 -30
  157. package/lib/commonjs/core/logger/errorClassification.js.map +1 -1
  158. package/lib/commonjs/core/logger/internalLogger.js.map +1 -1
  159. package/lib/commonjs/core/logger/levels.js.map +1 -1
  160. package/lib/commonjs/crypto/hmacSha256.js +6 -6
  161. package/lib/commonjs/crypto/hmacSha256.js.map +1 -1
  162. package/lib/commonjs/debug/bootstrap.js +26 -26
  163. package/lib/commonjs/debug/bootstrap.js.map +1 -1
  164. package/lib/commonjs/debug/commands.js +10 -10
  165. package/lib/commonjs/debug/commands.js.map +1 -1
  166. package/lib/commonjs/debug/configBuilder.js +6 -6
  167. package/lib/commonjs/debug/configBuilder.js.map +1 -1
  168. package/lib/commonjs/debug/exportBridge.js +17 -17
  169. package/lib/commonjs/debug/exportBridge.js.map +1 -1
  170. package/lib/commonjs/debug/hostResolver.js +10 -10
  171. package/lib/commonjs/debug/hostResolver.js.map +1 -1
  172. package/lib/commonjs/debug/index.js.map +1 -1
  173. package/lib/commonjs/debug/metrics.js.map +1 -1
  174. package/lib/commonjs/debug/perf.js +11 -11
  175. package/lib/commonjs/debug/perf.js.map +1 -1
  176. package/lib/commonjs/debug/perfWiring.js +10 -10
  177. package/lib/commonjs/debug/perfWiring.js.map +1 -1
  178. package/lib/commonjs/debug/protocol.js.map +1 -1
  179. package/lib/commonjs/debug/redaction.js +26 -26
  180. package/lib/commonjs/debug/redaction.js.map +1 -1
  181. package/lib/commonjs/debug/replayWiring.js +11 -11
  182. package/lib/commonjs/debug/replayWiring.js.map +1 -1
  183. package/lib/commonjs/debug/screenTracking.js +7 -7
  184. package/lib/commonjs/debug/screenTracking.js.map +1 -1
  185. package/lib/commonjs/debug/sessionWiring.js +8 -8
  186. package/lib/commonjs/debug/sessionWiring.js.map +1 -1
  187. package/lib/commonjs/debug/stream.js +26 -26
  188. package/lib/commonjs/debug/stream.js.map +1 -1
  189. package/lib/commonjs/debug/transport.js +24 -24
  190. package/lib/commonjs/debug/transport.js.map +1 -1
  191. package/lib/commonjs/features/bugreport/index.js.map +1 -1
  192. package/lib/commonjs/features/crash/CrashFeature.js +27 -9
  193. package/lib/commonjs/features/crash/CrashFeature.js.map +1 -1
  194. package/lib/commonjs/features/crash/CrashReporter.js +28 -28
  195. package/lib/commonjs/features/crash/CrashReporter.js.map +1 -1
  196. package/lib/commonjs/features/crash/NativeCrashFeature.js +7 -7
  197. package/lib/commonjs/features/crash/NativeCrashFeature.js.map +1 -1
  198. package/lib/commonjs/features/crash/capture.js.map +1 -1
  199. package/lib/commonjs/features/crash/globalHandler.js +11 -11
  200. package/lib/commonjs/features/crash/globalHandler.js.map +1 -1
  201. package/lib/commonjs/features/crash/index.js.map +1 -1
  202. package/lib/commonjs/features/crash/nativeCrashBridge.js +19 -19
  203. package/lib/commonjs/features/crash/nativeCrashBridge.js.map +1 -1
  204. package/lib/commonjs/features/crash/rejectionHandler.js +123 -0
  205. package/lib/commonjs/features/crash/rejectionHandler.js.map +1 -0
  206. package/lib/commonjs/features/engage/EngageAnchor.js +3 -3
  207. package/lib/commonjs/features/engage/EngageAnchor.js.map +1 -1
  208. package/lib/commonjs/features/engage/EngageArchetypeRenderers.js +19 -19
  209. package/lib/commonjs/features/engage/EngageArchetypeRenderers.js.map +1 -1
  210. package/lib/commonjs/features/engage/EngageInAppView.js +35 -35
  211. package/lib/commonjs/features/engage/EngageInAppView.js.map +1 -1
  212. package/lib/commonjs/features/engage/EngageInlinePlacement.js +7 -7
  213. package/lib/commonjs/features/engage/EngageInlinePlacement.js.map +1 -1
  214. package/lib/commonjs/features/engage/EngagePromptProvider.js +88 -86
  215. package/lib/commonjs/features/engage/EngagePromptProvider.js.map +1 -1
  216. package/lib/commonjs/features/engage/EngagePromptView.js +18 -18
  217. package/lib/commonjs/features/engage/EngagePromptView.js.map +1 -1
  218. package/lib/commonjs/features/engage/EngageTransport.js +79 -79
  219. package/lib/commonjs/features/engage/EngageTransport.js.map +1 -1
  220. package/lib/commonjs/features/engage/EngageVariantContent.js +10 -10
  221. package/lib/commonjs/features/engage/EngageVariantContent.js.map +1 -1
  222. package/lib/commonjs/features/engage/__test-support__/reactNativeStub.js +7 -7
  223. package/lib/commonjs/features/engage/__test-support__/reactNativeStub.js.map +1 -1
  224. package/lib/commonjs/features/engage/attachmentCapture.js +12 -12
  225. package/lib/commonjs/features/engage/attachmentCapture.js.map +1 -1
  226. package/lib/commonjs/features/engage/captureVoiceAttachment.js +20 -20
  227. package/lib/commonjs/features/engage/captureVoiceAttachment.js.map +1 -1
  228. package/lib/commonjs/features/engage/engageCoachmarkTour.js +4 -4
  229. package/lib/commonjs/features/engage/engageCoachmarkTour.js.map +1 -1
  230. package/lib/commonjs/features/engage/engageGameLogic.js.map +1 -1
  231. package/lib/commonjs/features/engage/engageMediaSizing.js +15 -15
  232. package/lib/commonjs/features/engage/engageMediaSizing.js.map +1 -1
  233. package/lib/commonjs/features/engage/engageMultiStepSheet.js +6 -6
  234. package/lib/commonjs/features/engage/engageMultiStepSheet.js.map +1 -1
  235. package/lib/commonjs/features/engage/engageOutcome.js +6 -6
  236. package/lib/commonjs/features/engage/engageOutcome.js.map +1 -1
  237. package/lib/commonjs/features/engage/engagePushTokenBridge.js +20 -20
  238. package/lib/commonjs/features/engage/engagePushTokenBridge.js.map +1 -1
  239. package/lib/commonjs/features/engage/engageShakeBridge.js +16 -16
  240. package/lib/commonjs/features/engage/engageShakeBridge.js.map +1 -1
  241. package/lib/commonjs/features/engage/engageSignals.js.map +1 -1
  242. package/lib/commonjs/features/engage/engageStoreReviewBridge.js +19 -19
  243. package/lib/commonjs/features/engage/engageStoreReviewBridge.js.map +1 -1
  244. package/lib/commonjs/features/engage/engageTestSeenStore.js +29 -29
  245. package/lib/commonjs/features/engage/engageTestSeenStore.js.map +1 -1
  246. package/lib/commonjs/features/engage/engageThrottle.js +117 -86
  247. package/lib/commonjs/features/engage/engageThrottle.js.map +1 -1
  248. package/lib/commonjs/features/engage/engageTriggerEngine.js +7 -7
  249. package/lib/commonjs/features/engage/engageTriggerEngine.js.map +1 -1
  250. package/lib/commonjs/features/engage/engageTypes.js +33 -33
  251. package/lib/commonjs/features/engage/engageTypes.js.map +1 -1
  252. package/lib/commonjs/features/engage/engageVariantResolver.js +13 -13
  253. package/lib/commonjs/features/engage/engageVariantResolver.js.map +1 -1
  254. package/lib/commonjs/features/engage/engageWindowInsets.js +10 -10
  255. package/lib/commonjs/features/engage/engageWindowInsets.js.map +1 -1
  256. package/lib/commonjs/features/engage/gestureTriggerDetector.js.map +1 -1
  257. package/lib/commonjs/features/engage/transcription/TranscriptionProvider.js +16 -16
  258. package/lib/commonjs/features/engage/transcription/TranscriptionProvider.js.map +1 -1
  259. package/lib/commonjs/features/install-referrer/installReferrer.js +26 -26
  260. package/lib/commonjs/features/install-referrer/installReferrer.js.map +1 -1
  261. package/lib/commonjs/features/journey/ScaleBunDebugRoot.js +28 -28
  262. package/lib/commonjs/features/journey/ScaleBunDebugRoot.js.map +1 -1
  263. package/lib/commonjs/features/journey/ScaleBunFlatList.js +15 -15
  264. package/lib/commonjs/features/journey/ScaleBunFlatList.js.map +1 -1
  265. package/lib/commonjs/features/journey/ScaleBunImpression.js +22 -22
  266. package/lib/commonjs/features/journey/ScaleBunImpression.js.map +1 -1
  267. package/lib/commonjs/features/journey/ScaleBunScrollView.js +20 -20
  268. package/lib/commonjs/features/journey/ScaleBunScrollView.js.map +1 -1
  269. package/lib/commonjs/features/journey/ScaleBunSectionList.js +15 -15
  270. package/lib/commonjs/features/journey/ScaleBunSectionList.js.map +1 -1
  271. package/lib/commonjs/features/journey/calibrationContext.js +12 -12
  272. package/lib/commonjs/features/journey/calibrationContext.js.map +1 -1
  273. package/lib/commonjs/features/journey/gestureBuffer.js +9 -9
  274. package/lib/commonjs/features/journey/gestureBuffer.js.map +1 -1
  275. package/lib/commonjs/features/journey/gestureDetector.js +10 -10
  276. package/lib/commonjs/features/journey/gestureDetector.js.map +1 -1
  277. package/lib/commonjs/features/journey/impression.js +18 -18
  278. package/lib/commonjs/features/journey/impression.js.map +1 -1
  279. package/lib/commonjs/features/journey/journeyManager.js +6 -6
  280. package/lib/commonjs/features/journey/journeyManager.js.map +1 -1
  281. package/lib/commonjs/features/journey/journeyTypes.js +5 -5
  282. package/lib/commonjs/features/journey/journeyTypes.js.map +1 -1
  283. package/lib/commonjs/features/journey/navDetector.js +7 -7
  284. package/lib/commonjs/features/journey/navDetector.js.map +1 -1
  285. package/lib/commonjs/features/journey/screenshotHelper.js +7 -7
  286. package/lib/commonjs/features/journey/screenshotHelper.js.map +1 -1
  287. package/lib/commonjs/features/journey/targetRegistry.js +17 -17
  288. package/lib/commonjs/features/journey/targetRegistry.js.map +1 -1
  289. package/lib/commonjs/features/journey/touchTarget.js +29 -29
  290. package/lib/commonjs/features/journey/touchTarget.js.map +1 -1
  291. package/lib/commonjs/features/navigation/AutoScreenDetector.js +114 -71
  292. package/lib/commonjs/features/navigation/AutoScreenDetector.js.map +1 -1
  293. package/lib/commonjs/features/network/NetworkFeature.js +23 -23
  294. package/lib/commonjs/features/network/NetworkFeature.js.map +1 -1
  295. package/lib/commonjs/features/network/index.js +5 -5
  296. package/lib/commonjs/features/network/index.js.map +1 -1
  297. package/lib/commonjs/features/ota/OtaEventEmitter.js +21 -21
  298. package/lib/commonjs/features/ota/OtaEventEmitter.js.map +1 -1
  299. package/lib/commonjs/features/ota/OtaOrchestrator.js +535 -40
  300. package/lib/commonjs/features/ota/OtaOrchestrator.js.map +1 -1
  301. package/lib/commonjs/features/ota/OtaTypes.js.map +1 -1
  302. package/lib/commonjs/features/ota/environment.js +172 -0
  303. package/lib/commonjs/features/ota/environment.js.map +1 -0
  304. package/lib/commonjs/features/ota/retry.js +96 -0
  305. package/lib/commonjs/features/ota/retry.js.map +1 -0
  306. package/lib/commonjs/features/ota/signature.js +115 -0
  307. package/lib/commonjs/features/ota/signature.js.map +1 -0
  308. package/lib/commonjs/features/ota/useOtaUpdate.js +15 -15
  309. package/lib/commonjs/features/ota/useOtaUpdate.js.map +1 -1
  310. package/lib/commonjs/features/performance/PerformanceFeature.js +26 -26
  311. package/lib/commonjs/features/performance/PerformanceFeature.js.map +1 -1
  312. package/lib/commonjs/features/performance/collectors/AppLaunchCollector.js +13 -13
  313. package/lib/commonjs/features/performance/collectors/AppLaunchCollector.js.map +1 -1
  314. package/lib/commonjs/features/performance/collectors/AutoScreenLoadCollector.js +32 -32
  315. package/lib/commonjs/features/performance/collectors/AutoScreenLoadCollector.js.map +1 -1
  316. package/lib/commonjs/features/performance/collectors/CustomTraceCollector.js +13 -13
  317. package/lib/commonjs/features/performance/collectors/CustomTraceCollector.js.map +1 -1
  318. package/lib/commonjs/features/performance/collectors/FrameMetricsCollector.js +11 -11
  319. package/lib/commonjs/features/performance/collectors/FrameMetricsCollector.js.map +1 -1
  320. package/lib/commonjs/features/performance/collectors/JsStallCollector.js +12 -12
  321. package/lib/commonjs/features/performance/collectors/JsStallCollector.js.map +1 -1
  322. package/lib/commonjs/features/performance/collectors/NetworkPerfCollector.js +10 -10
  323. package/lib/commonjs/features/performance/collectors/NetworkPerfCollector.js.map +1 -1
  324. package/lib/commonjs/features/performance/collectors/ScreenLoadCollector.js +11 -11
  325. package/lib/commonjs/features/performance/collectors/ScreenLoadCollector.js.map +1 -1
  326. package/lib/commonjs/features/performance/collectors/UiHangCollector.js +5 -5
  327. package/lib/commonjs/features/performance/collectors/UiHangCollector.js.map +1 -1
  328. package/lib/commonjs/features/performance/config.js +11 -11
  329. package/lib/commonjs/features/performance/config.js.map +1 -1
  330. package/lib/commonjs/features/performance/getNativePerformanceModule.js +11 -11
  331. package/lib/commonjs/features/performance/getNativePerformanceModule.js.map +1 -1
  332. package/lib/commonjs/features/performance/index.js.map +1 -1
  333. package/lib/commonjs/features/performance/metrics/MetricsEngine.js +13 -13
  334. package/lib/commonjs/features/performance/metrics/MetricsEngine.js.map +1 -1
  335. package/lib/commonjs/features/performance/models.js +8 -8
  336. package/lib/commonjs/features/performance/models.js.map +1 -1
  337. package/lib/commonjs/features/performance/transport/PerformanceTransport.js +6 -6
  338. package/lib/commonjs/features/performance/transport/PerformanceTransport.js.map +1 -1
  339. package/lib/commonjs/features/profiler/ProfilerFeature.js +53 -53
  340. package/lib/commonjs/features/profiler/ProfilerFeature.js.map +1 -1
  341. package/lib/commonjs/features/profiler/config.js +15 -15
  342. package/lib/commonjs/features/profiler/config.js.map +1 -1
  343. package/lib/commonjs/features/profiler/contracts.js +22 -22
  344. package/lib/commonjs/features/profiler/contracts.js.map +1 -1
  345. package/lib/commonjs/features/profiler/index.js.map +1 -1
  346. package/lib/commonjs/features/profiler/models.js +44 -44
  347. package/lib/commonjs/features/profiler/models.js.map +1 -1
  348. package/lib/commonjs/features/profiler/transport/ProfilerTransport.js +9 -9
  349. package/lib/commonjs/features/profiler/transport/ProfilerTransport.js.map +1 -1
  350. package/lib/commonjs/features/replay/bridge/adapters/bridgeAdapter.js +17 -17
  351. package/lib/commonjs/features/replay/bridge/adapters/bridgeAdapter.js.map +1 -1
  352. package/lib/commonjs/features/replay/bridge/eventEmitter.js +8 -8
  353. package/lib/commonjs/features/replay/bridge/eventEmitter.js.map +1 -1
  354. package/lib/commonjs/features/replay/bridge/nativeModule.js +20 -20
  355. package/lib/commonjs/features/replay/bridge/nativeModule.js.map +1 -1
  356. package/lib/commonjs/features/replay/core/clock/clock.js +6 -6
  357. package/lib/commonjs/features/replay/core/clock/clock.js.map +1 -1
  358. package/lib/commonjs/features/replay/core/config/defaults.js +2 -2
  359. package/lib/commonjs/features/replay/core/config/defaults.js.map +1 -1
  360. package/lib/commonjs/features/replay/core/config/validator.js +5 -5
  361. package/lib/commonjs/features/replay/core/config/validator.js.map +1 -1
  362. package/lib/commonjs/features/replay/core/env/environmentDetector.js +10 -10
  363. package/lib/commonjs/features/replay/core/env/environmentDetector.js.map +1 -1
  364. package/lib/commonjs/features/replay/core/errors/safeCall.js +4 -4
  365. package/lib/commonjs/features/replay/core/errors/safeCall.js.map +1 -1
  366. package/lib/commonjs/features/replay/core/ids/sessionId.js +5 -5
  367. package/lib/commonjs/features/replay/core/ids/sessionId.js.map +1 -1
  368. package/lib/commonjs/features/replay/core/logger/logger.js +5 -5
  369. package/lib/commonjs/features/replay/core/logger/logger.js.map +1 -1
  370. package/lib/commonjs/features/replay/core/privacy/privacyTypes.js +4 -4
  371. package/lib/commonjs/features/replay/core/privacy/privacyTypes.js.map +1 -1
  372. package/lib/commonjs/features/replay/core/queue/boundedQueue.js +5 -5
  373. package/lib/commonjs/features/replay/core/queue/boundedQueue.js.map +1 -1
  374. package/lib/commonjs/features/replay/integrations/alert/alertInstrumentation.js +59 -59
  375. package/lib/commonjs/features/replay/integrations/alert/alertInstrumentation.js.map +1 -1
  376. package/lib/commonjs/features/replay/integrations/logs/consoleIntegration.js +19 -19
  377. package/lib/commonjs/features/replay/integrations/logs/consoleIntegration.js.map +1 -1
  378. package/lib/commonjs/features/replay/integrations/network/networkAdapter.js +30 -30
  379. package/lib/commonjs/features/replay/integrations/network/networkAdapter.js.map +1 -1
  380. package/lib/commonjs/features/replay/integrations/react-navigation/navigationIntegration.js +19 -19
  381. package/lib/commonjs/features/replay/integrations/react-navigation/navigationIntegration.js.map +1 -1
  382. package/lib/commonjs/features/replay/integrations/touch/ReplayRoot.js +16 -16
  383. package/lib/commonjs/features/replay/integrations/touch/ReplayRoot.js.map +1 -1
  384. package/lib/commonjs/features/replay/pipeline/batching/batchManager.js +5 -5
  385. package/lib/commonjs/features/replay/pipeline/batching/batchManager.js.map +1 -1
  386. package/lib/commonjs/features/replay/pipeline/envelope/envelopeBuilder.js +5 -5
  387. package/lib/commonjs/features/replay/pipeline/envelope/envelopeBuilder.js.map +1 -1
  388. package/lib/commonjs/features/replay/pipeline/retry/retryPolicy.js +4 -4
  389. package/lib/commonjs/features/replay/pipeline/retry/retryPolicy.js.map +1 -1
  390. package/lib/commonjs/features/replay/pipeline/transport/transportTypes.js +7 -7
  391. package/lib/commonjs/features/replay/pipeline/transport/transportTypes.js.map +1 -1
  392. package/lib/commonjs/features/replay/public/api.js +21 -21
  393. package/lib/commonjs/features/replay/public/api.js.map +1 -1
  394. package/lib/commonjs/features/replay/public/enums.js +5 -5
  395. package/lib/commonjs/features/replay/public/enums.js.map +1 -1
  396. package/lib/commonjs/features/replay/public/types.js.map +1 -1
  397. package/lib/commonjs/features/replay/replay/breadcrumbs/breadcrumbCollector.js +5 -5
  398. package/lib/commonjs/features/replay/replay/breadcrumbs/breadcrumbCollector.js.map +1 -1
  399. package/lib/commonjs/features/replay/replay/frames/frameModels.js +4 -4
  400. package/lib/commonjs/features/replay/replay/frames/frameModels.js.map +1 -1
  401. package/lib/commonjs/features/replay/replay/session/sessionOrchestrator.js +10 -10
  402. package/lib/commonjs/features/replay/replay/session/sessionOrchestrator.js.map +1 -1
  403. package/lib/commonjs/features/replay/replay/timeline/timelineModels.js +4 -4
  404. package/lib/commonjs/features/replay/replay/timeline/timelineModels.js.map +1 -1
  405. package/lib/commonjs/features/replay/transport/BackendReplayTransport.js +13 -13
  406. package/lib/commonjs/features/replay/transport/BackendReplayTransport.js.map +1 -1
  407. package/lib/commonjs/features/replay/transport/CompositeReplayTransport.js +8 -8
  408. package/lib/commonjs/features/replay/transport/CompositeReplayTransport.js.map +1 -1
  409. package/lib/commonjs/features/replay/transport/DesktopReplayTransport.js +14 -14
  410. package/lib/commonjs/features/replay/transport/DesktopReplayTransport.js.map +1 -1
  411. package/lib/commonjs/features/replay/transport/ReplayTransport.js.map +1 -1
  412. package/lib/commonjs/features/session/BackendSessionAdapter.js +358 -153
  413. package/lib/commonjs/features/session/BackendSessionAdapter.js.map +1 -1
  414. package/lib/commonjs/features/session/DesktopSessionTransport.js +14 -14
  415. package/lib/commonjs/features/session/DesktopSessionTransport.js.map +1 -1
  416. package/lib/commonjs/features/session/JourneyEventPipeline.js +19 -19
  417. package/lib/commonjs/features/session/JourneyEventPipeline.js.map +1 -1
  418. package/lib/commonjs/features/session/ReplayCaptureManager.js +123 -123
  419. package/lib/commonjs/features/session/ReplayCaptureManager.js.map +1 -1
  420. package/lib/commonjs/features/session/ScrollTracker.js +17 -17
  421. package/lib/commonjs/features/session/ScrollTracker.js.map +1 -1
  422. package/lib/commonjs/features/session/SessionManager.js +143 -143
  423. package/lib/commonjs/features/session/SessionManager.js.map +1 -1
  424. package/lib/commonjs/features/session/SyncDecisionEngine.js +23 -23
  425. package/lib/commonjs/features/session/SyncDecisionEngine.js.map +1 -1
  426. package/lib/commonjs/features/session/index.js.map +1 -1
  427. package/lib/commonjs/features/session/nativeCapture.js +5 -5
  428. package/lib/commonjs/features/session/nativeCapture.js.map +1 -1
  429. package/lib/commonjs/features/session/outboxFrameCapture.js +15 -15
  430. package/lib/commonjs/features/session/outboxFrameCapture.js.map +1 -1
  431. package/lib/commonjs/features/session/sessionTypes.js +44 -44
  432. package/lib/commonjs/features/session/sessionTypes.js.map +1 -1
  433. package/lib/commonjs/features/skan/skanBridge.js +11 -11
  434. package/lib/commonjs/features/skan/skanBridge.js.map +1 -1
  435. package/lib/commonjs/features/skan/skanConversionManager.js +23 -23
  436. package/lib/commonjs/features/skan/skanConversionManager.js.map +1 -1
  437. package/lib/commonjs/index.js +7 -0
  438. package/lib/commonjs/index.js.map +1 -1
  439. package/lib/commonjs/integrations/fetch/fetchInterceptor.js +21 -21
  440. package/lib/commonjs/integrations/fetch/fetchInterceptor.js.map +1 -1
  441. package/lib/commonjs/integrations/navigation/screenTracker.js.map +1 -1
  442. package/lib/commonjs/integrations/network/bodyCapture.js +69 -69
  443. package/lib/commonjs/integrations/network/bodyCapture.js.map +1 -1
  444. package/lib/commonjs/integrations/xhr/xhrInterceptor.js +24 -24
  445. package/lib/commonjs/integrations/xhr/xhrInterceptor.js.map +1 -1
  446. package/lib/commonjs/metro/index.js +37 -37
  447. package/lib/commonjs/metro/index.js.map +1 -1
  448. package/lib/commonjs/metro/optionalDependencyStub.js.map +1 -1
  449. package/lib/commonjs/metro/optionalModules.js +16 -16
  450. package/lib/commonjs/metro/optionalModules.js.map +1 -1
  451. package/lib/commonjs/pipeline/dispatcher/dispatcher.js.map +1 -1
  452. package/lib/commonjs/pipeline/envelope/envelope.js.map +1 -1
  453. package/lib/commonjs/pipeline/envelope/serializer.js.map +1 -1
  454. package/lib/commonjs/pipeline/processors/dedupe.js.map +1 -1
  455. package/lib/commonjs/pipeline/processors/enrich.js.map +1 -1
  456. package/lib/commonjs/pipeline/processors/sampling.js.map +1 -1
  457. package/lib/commonjs/pipeline/processors/sanitize.js.map +1 -1
  458. package/lib/commonjs/pipeline/queue/flushQueue.js +4 -4
  459. package/lib/commonjs/pipeline/queue/flushQueue.js.map +1 -1
  460. package/lib/commonjs/pipeline/queue/memoryQueue.js.map +1 -1
  461. package/lib/commonjs/pipeline/queue/persistentQueue.js +80 -80
  462. package/lib/commonjs/pipeline/queue/persistentQueue.js.map +1 -1
  463. package/lib/commonjs/pipeline/queue/queuePolicy.js.map +1 -1
  464. package/lib/commonjs/pipeline/scheduler/flushScheduler.js.map +1 -1
  465. package/lib/commonjs/pipeline/scheduler/retryPolicy.js +2 -2
  466. package/lib/commonjs/pipeline/scheduler/retryPolicy.js.map +1 -1
  467. package/lib/commonjs/public/ScaleBunErrorBoundary.js +79 -0
  468. package/lib/commonjs/public/ScaleBunErrorBoundary.js.map +1 -0
  469. package/lib/commonjs/public/ScaleBunFacade.js +274 -274
  470. package/lib/commonjs/public/ScaleBunFacade.js.map +1 -1
  471. package/lib/commonjs/public/ScaleBunProvider.js +3 -3
  472. package/lib/commonjs/public/ScaleBunProvider.js.map +1 -1
  473. package/lib/commonjs/public/typedTracker.js +36 -36
  474. package/lib/commonjs/public/typedTracker.js.map +1 -1
  475. package/lib/commonjs/public/types.js.map +1 -1
  476. package/lib/commonjs/push/PushManager.js +21 -21
  477. package/lib/commonjs/push/PushManager.js.map +1 -1
  478. package/lib/commonjs/push/adapters/ManualAdapter.js +14 -14
  479. package/lib/commonjs/push/adapters/ManualAdapter.js.map +1 -1
  480. package/lib/commonjs/push/adapters/NativeBridgeAdapter.js +17 -17
  481. package/lib/commonjs/push/adapters/NativeBridgeAdapter.js.map +1 -1
  482. package/lib/commonjs/push/adapters/NoopAdapter.js +5 -5
  483. package/lib/commonjs/push/adapters/NoopAdapter.js.map +1 -1
  484. package/lib/commonjs/push/adapters/RNFirebaseMessagingAdapter.js +17 -17
  485. package/lib/commonjs/push/adapters/RNFirebaseMessagingAdapter.js.map +1 -1
  486. package/lib/commonjs/push/adapters/loadMessaging.js +12 -12
  487. package/lib/commonjs/push/adapters/loadMessaging.js.map +1 -1
  488. package/lib/commonjs/push/adapters/loadNotifee.js +12 -12
  489. package/lib/commonjs/push/adapters/loadNotifee.js.map +1 -1
  490. package/lib/commonjs/push/adapters/selectAdapter.js +14 -14
  491. package/lib/commonjs/push/adapters/selectAdapter.js.map +1 -1
  492. package/lib/commonjs/push/detect/capabilities.js +19 -19
  493. package/lib/commonjs/push/detect/capabilities.js.map +1 -1
  494. package/lib/commonjs/push/index.js.map +1 -1
  495. package/lib/commonjs/push/native/nativeNotifications.js +32 -32
  496. package/lib/commonjs/push/native/nativeNotifications.js.map +1 -1
  497. package/lib/commonjs/push/types.js.map +1 -1
  498. package/lib/commonjs/specs/NativeReplaySdk.js +18 -18
  499. package/lib/commonjs/specs/NativeReplaySdk.js.map +1 -1
  500. package/lib/commonjs/specs/NativeScaleBunCrash.js +19 -19
  501. package/lib/commonjs/specs/NativeScaleBunCrash.js.map +1 -1
  502. package/lib/commonjs/specs/NativeScaleBunInstallReferrer.js +14 -14
  503. package/lib/commonjs/specs/NativeScaleBunInstallReferrer.js.map +1 -1
  504. package/lib/commonjs/specs/NativeScaleBunOta.js +21 -21
  505. package/lib/commonjs/specs/NativeScaleBunOta.js.map +1 -1
  506. package/lib/commonjs/specs/NativeScaleBunPerformance.js +15 -15
  507. package/lib/commonjs/specs/NativeScaleBunPerformance.js.map +1 -1
  508. package/lib/commonjs/specs/NativeScaleBunProfiler.js +16 -16
  509. package/lib/commonjs/specs/NativeScaleBunProfiler.js.map +1 -1
  510. package/lib/commonjs/specs/NativeScaleBunStorage.js +29 -29
  511. package/lib/commonjs/specs/NativeScaleBunStorage.js.map +1 -1
  512. package/lib/commonjs/storage/StorageBackend.js +83 -83
  513. package/lib/commonjs/storage/StorageBackend.js.map +1 -1
  514. package/lib/commonjs/storage/db/sqlite.js.map +1 -1
  515. package/lib/commonjs/storage/files/fileStore.js.map +1 -1
  516. package/lib/commonjs/transport/auth/sdkSession.js.map +1 -1
  517. package/lib/commonjs/transport/backoff/exponentialJitter.js +2 -2
  518. package/lib/commonjs/transport/backoff/exponentialJitter.js.map +1 -1
  519. package/lib/commonjs/transport/http/endpoints.js.map +1 -1
  520. package/lib/commonjs/transport/http/httpClient.js +3 -3
  521. package/lib/commonjs/transport/http/httpClient.js.map +1 -1
  522. package/lib/commonjs/transport/rateLimit/retryAfter.js.map +1 -1
  523. package/lib/commonjs/transport/signing/requestSigner.js.map +1 -1
  524. package/lib/commonjs/vendor/protocol/index.js +74 -74
  525. package/lib/commonjs/vendor/protocol/index.js.map +1 -1
  526. package/lib/commonjs/vendor/protocol/internal/validation.js +23 -23
  527. package/lib/commonjs/vendor/protocol/internal/validation.js.map +1 -1
  528. package/lib/commonjs/vendor/sdk-contracts/bridge.js.map +1 -1
  529. package/lib/commonjs/vendor/sdk-contracts/config.js.map +1 -1
  530. package/lib/commonjs/vendor/sdk-contracts/events.js.map +1 -1
  531. package/lib/commonjs/vendor/sdk-contracts/features.js.map +1 -1
  532. package/lib/commonjs/vendor/sdk-contracts/index.js.map +1 -1
  533. package/lib/commonjs/vendor/sdk-contracts/platform.js.map +1 -1
  534. package/lib/commonjs/vendor/sdk-contracts/session-boundary.js.map +1 -1
  535. package/lib/commonjs/vendor/sdk-contracts/session.js.map +1 -1
  536. package/lib/commonjs/vendor/vendor.manifest +10 -10
  537. package/lib/module/analytics/EventTracker.js +34 -34
  538. package/lib/module/analytics/EventTracker.js.map +1 -1
  539. package/lib/module/analytics/automaticEvents.js +7 -7
  540. package/lib/module/analytics/automaticEvents.js.map +1 -1
  541. package/lib/module/analytics/batching.js +24 -24
  542. package/lib/module/analytics/batching.js.map +1 -1
  543. package/lib/module/analytics/eventLane.js +13 -13
  544. package/lib/module/analytics/eventLane.js.map +1 -1
  545. package/lib/module/bootstrap/FeatureRegistry.js +17 -17
  546. package/lib/module/bootstrap/FeatureRegistry.js.map +1 -1
  547. package/lib/module/bootstrap/SDKBootstrapper.js +64 -42
  548. package/lib/module/bootstrap/SDKBootstrapper.js.map +1 -1
  549. package/lib/module/bucketing/fnv1a32.js +10 -10
  550. package/lib/module/bucketing/fnv1a32.js.map +1 -1
  551. package/lib/module/compat/codepush.js +6 -6
  552. package/lib/module/compat/codepush.js.map +1 -1
  553. package/lib/module/config/ConfigManager.js +20 -20
  554. package/lib/module/config/ConfigManager.js.map +1 -1
  555. package/lib/module/config/configTypes.js.map +1 -1
  556. package/lib/module/core/architecture.js +23 -23
  557. package/lib/module/core/architecture.js.map +1 -1
  558. package/lib/module/core/clock/now.js +2 -2
  559. package/lib/module/core/clock/now.js.map +1 -1
  560. package/lib/module/core/config/defaults.js.map +1 -1
  561. package/lib/module/core/config/schema.js +102 -102
  562. package/lib/module/core/config/schema.js.map +1 -1
  563. package/lib/module/core/constants/endpoints.js +7 -7
  564. package/lib/module/core/constants/endpoints.js.map +1 -1
  565. package/lib/module/core/constants/timings.js +5 -5
  566. package/lib/module/core/constants/timings.js.map +1 -1
  567. package/lib/module/core/constants/version.js +4 -4
  568. package/lib/module/core/constants/version.js.map +1 -1
  569. package/lib/module/core/context/app.js.map +1 -1
  570. package/lib/module/core/context/device.js.map +1 -1
  571. package/lib/module/core/context/session.js.map +1 -1
  572. package/lib/module/core/context/user.js.map +1 -1
  573. package/lib/module/core/contracts/IFeature.js.map +1 -1
  574. package/lib/module/core/di/container.js.map +1 -1
  575. package/lib/module/core/encoding/base64.js +9 -9
  576. package/lib/module/core/encoding/base64.js.map +1 -1
  577. package/lib/module/core/id/deviceId.js +4 -4
  578. package/lib/module/core/id/deviceId.js.map +1 -1
  579. package/lib/module/core/id/sessionId.js.map +1 -1
  580. package/lib/module/core/lifecycle/appLifecycle.js.map +1 -1
  581. package/lib/module/core/lifecycle/crashSafe.js +3 -3
  582. package/lib/module/core/lifecycle/crashSafe.js.map +1 -1
  583. package/lib/module/core/logger/errorClassification.js +30 -30
  584. package/lib/module/core/logger/errorClassification.js.map +1 -1
  585. package/lib/module/core/logger/internalLogger.js.map +1 -1
  586. package/lib/module/core/logger/levels.js.map +1 -1
  587. package/lib/module/crypto/hmacSha256.js +6 -6
  588. package/lib/module/crypto/hmacSha256.js.map +1 -1
  589. package/lib/module/debug/bootstrap.js +26 -26
  590. package/lib/module/debug/bootstrap.js.map +1 -1
  591. package/lib/module/debug/commands.js +10 -10
  592. package/lib/module/debug/commands.js.map +1 -1
  593. package/lib/module/debug/configBuilder.js +6 -6
  594. package/lib/module/debug/configBuilder.js.map +1 -1
  595. package/lib/module/debug/exportBridge.js +17 -17
  596. package/lib/module/debug/exportBridge.js.map +1 -1
  597. package/lib/module/debug/hostResolver.js +10 -10
  598. package/lib/module/debug/hostResolver.js.map +1 -1
  599. package/lib/module/debug/index.js +5 -5
  600. package/lib/module/debug/index.js.map +1 -1
  601. package/lib/module/debug/metrics.js.map +1 -1
  602. package/lib/module/debug/perf.js +11 -11
  603. package/lib/module/debug/perf.js.map +1 -1
  604. package/lib/module/debug/perfWiring.js +10 -10
  605. package/lib/module/debug/perfWiring.js.map +1 -1
  606. package/lib/module/debug/protocol.js +11 -11
  607. package/lib/module/debug/protocol.js.map +1 -1
  608. package/lib/module/debug/redaction.js +26 -26
  609. package/lib/module/debug/redaction.js.map +1 -1
  610. package/lib/module/debug/replayWiring.js +11 -11
  611. package/lib/module/debug/replayWiring.js.map +1 -1
  612. package/lib/module/debug/screenTracking.js +7 -7
  613. package/lib/module/debug/screenTracking.js.map +1 -1
  614. package/lib/module/debug/sessionWiring.js +8 -8
  615. package/lib/module/debug/sessionWiring.js.map +1 -1
  616. package/lib/module/debug/stream.js +26 -26
  617. package/lib/module/debug/stream.js.map +1 -1
  618. package/lib/module/debug/transport.js +24 -24
  619. package/lib/module/debug/transport.js.map +1 -1
  620. package/lib/module/features/bugreport/index.js.map +1 -1
  621. package/lib/module/features/crash/CrashFeature.js +27 -9
  622. package/lib/module/features/crash/CrashFeature.js.map +1 -1
  623. package/lib/module/features/crash/CrashReporter.js +28 -28
  624. package/lib/module/features/crash/CrashReporter.js.map +1 -1
  625. package/lib/module/features/crash/NativeCrashFeature.js +7 -7
  626. package/lib/module/features/crash/NativeCrashFeature.js.map +1 -1
  627. package/lib/module/features/crash/capture.js.map +1 -1
  628. package/lib/module/features/crash/globalHandler.js +11 -11
  629. package/lib/module/features/crash/globalHandler.js.map +1 -1
  630. package/lib/module/features/crash/index.js.map +1 -1
  631. package/lib/module/features/crash/nativeCrashBridge.js +19 -19
  632. package/lib/module/features/crash/nativeCrashBridge.js.map +1 -1
  633. package/lib/module/features/crash/rejectionHandler.js +116 -0
  634. package/lib/module/features/crash/rejectionHandler.js.map +1 -0
  635. package/lib/module/features/engage/EngageAnchor.js +3 -3
  636. package/lib/module/features/engage/EngageAnchor.js.map +1 -1
  637. package/lib/module/features/engage/EngageArchetypeRenderers.js +19 -19
  638. package/lib/module/features/engage/EngageArchetypeRenderers.js.map +1 -1
  639. package/lib/module/features/engage/EngageInAppView.js +35 -35
  640. package/lib/module/features/engage/EngageInAppView.js.map +1 -1
  641. package/lib/module/features/engage/EngageInlinePlacement.js +7 -7
  642. package/lib/module/features/engage/EngageInlinePlacement.js.map +1 -1
  643. package/lib/module/features/engage/EngagePromptProvider.js +88 -86
  644. package/lib/module/features/engage/EngagePromptProvider.js.map +1 -1
  645. package/lib/module/features/engage/EngagePromptView.js +18 -18
  646. package/lib/module/features/engage/EngagePromptView.js.map +1 -1
  647. package/lib/module/features/engage/EngageTransport.js +79 -79
  648. package/lib/module/features/engage/EngageTransport.js.map +1 -1
  649. package/lib/module/features/engage/EngageVariantContent.js +10 -10
  650. package/lib/module/features/engage/EngageVariantContent.js.map +1 -1
  651. package/lib/module/features/engage/__test-support__/reactNativeStub.js +7 -7
  652. package/lib/module/features/engage/__test-support__/reactNativeStub.js.map +1 -1
  653. package/lib/module/features/engage/attachmentCapture.js +12 -12
  654. package/lib/module/features/engage/attachmentCapture.js.map +1 -1
  655. package/lib/module/features/engage/captureVoiceAttachment.js +20 -20
  656. package/lib/module/features/engage/captureVoiceAttachment.js.map +1 -1
  657. package/lib/module/features/engage/engageCoachmarkTour.js +4 -4
  658. package/lib/module/features/engage/engageCoachmarkTour.js.map +1 -1
  659. package/lib/module/features/engage/engageGameLogic.js.map +1 -1
  660. package/lib/module/features/engage/engageMediaSizing.js +15 -15
  661. package/lib/module/features/engage/engageMediaSizing.js.map +1 -1
  662. package/lib/module/features/engage/engageMultiStepSheet.js +6 -6
  663. package/lib/module/features/engage/engageMultiStepSheet.js.map +1 -1
  664. package/lib/module/features/engage/engageOutcome.js +6 -6
  665. package/lib/module/features/engage/engageOutcome.js.map +1 -1
  666. package/lib/module/features/engage/engagePushTokenBridge.js +20 -20
  667. package/lib/module/features/engage/engagePushTokenBridge.js.map +1 -1
  668. package/lib/module/features/engage/engageShakeBridge.js +16 -16
  669. package/lib/module/features/engage/engageShakeBridge.js.map +1 -1
  670. package/lib/module/features/engage/engageSignals.js.map +1 -1
  671. package/lib/module/features/engage/engageStoreReviewBridge.js +19 -19
  672. package/lib/module/features/engage/engageStoreReviewBridge.js.map +1 -1
  673. package/lib/module/features/engage/engageTestSeenStore.js +29 -29
  674. package/lib/module/features/engage/engageTestSeenStore.js.map +1 -1
  675. package/lib/module/features/engage/engageThrottle.js +117 -86
  676. package/lib/module/features/engage/engageThrottle.js.map +1 -1
  677. package/lib/module/features/engage/engageTriggerEngine.js +7 -7
  678. package/lib/module/features/engage/engageTriggerEngine.js.map +1 -1
  679. package/lib/module/features/engage/engageTypes.js +33 -33
  680. package/lib/module/features/engage/engageTypes.js.map +1 -1
  681. package/lib/module/features/engage/engageVariantResolver.js +13 -13
  682. package/lib/module/features/engage/engageVariantResolver.js.map +1 -1
  683. package/lib/module/features/engage/engageWindowInsets.js +10 -10
  684. package/lib/module/features/engage/engageWindowInsets.js.map +1 -1
  685. package/lib/module/features/engage/gestureTriggerDetector.js.map +1 -1
  686. package/lib/module/features/engage/transcription/TranscriptionProvider.js +16 -16
  687. package/lib/module/features/engage/transcription/TranscriptionProvider.js.map +1 -1
  688. package/lib/module/features/install-referrer/installReferrer.js +26 -26
  689. package/lib/module/features/install-referrer/installReferrer.js.map +1 -1
  690. package/lib/module/features/journey/ScaleBunDebugRoot.js +28 -28
  691. package/lib/module/features/journey/ScaleBunDebugRoot.js.map +1 -1
  692. package/lib/module/features/journey/ScaleBunFlatList.js +15 -15
  693. package/lib/module/features/journey/ScaleBunFlatList.js.map +1 -1
  694. package/lib/module/features/journey/ScaleBunImpression.js +22 -22
  695. package/lib/module/features/journey/ScaleBunImpression.js.map +1 -1
  696. package/lib/module/features/journey/ScaleBunScrollView.js +20 -20
  697. package/lib/module/features/journey/ScaleBunScrollView.js.map +1 -1
  698. package/lib/module/features/journey/ScaleBunSectionList.js +15 -15
  699. package/lib/module/features/journey/ScaleBunSectionList.js.map +1 -1
  700. package/lib/module/features/journey/calibrationContext.js +12 -12
  701. package/lib/module/features/journey/calibrationContext.js.map +1 -1
  702. package/lib/module/features/journey/gestureBuffer.js +9 -9
  703. package/lib/module/features/journey/gestureBuffer.js.map +1 -1
  704. package/lib/module/features/journey/gestureDetector.js +10 -10
  705. package/lib/module/features/journey/gestureDetector.js.map +1 -1
  706. package/lib/module/features/journey/impression.js +18 -18
  707. package/lib/module/features/journey/impression.js.map +1 -1
  708. package/lib/module/features/journey/journeyManager.js +6 -6
  709. package/lib/module/features/journey/journeyManager.js.map +1 -1
  710. package/lib/module/features/journey/journeyTypes.js +5 -5
  711. package/lib/module/features/journey/journeyTypes.js.map +1 -1
  712. package/lib/module/features/journey/navDetector.js +7 -7
  713. package/lib/module/features/journey/navDetector.js.map +1 -1
  714. package/lib/module/features/journey/screenshotHelper.js +7 -7
  715. package/lib/module/features/journey/screenshotHelper.js.map +1 -1
  716. package/lib/module/features/journey/targetRegistry.js +17 -17
  717. package/lib/module/features/journey/targetRegistry.js.map +1 -1
  718. package/lib/module/features/journey/touchTarget.js +29 -29
  719. package/lib/module/features/journey/touchTarget.js.map +1 -1
  720. package/lib/module/features/navigation/AutoScreenDetector.js +114 -71
  721. package/lib/module/features/navigation/AutoScreenDetector.js.map +1 -1
  722. package/lib/module/features/network/NetworkFeature.js +23 -23
  723. package/lib/module/features/network/NetworkFeature.js.map +1 -1
  724. package/lib/module/features/network/index.js +5 -5
  725. package/lib/module/features/network/index.js.map +1 -1
  726. package/lib/module/features/ota/OtaEventEmitter.js +21 -21
  727. package/lib/module/features/ota/OtaEventEmitter.js.map +1 -1
  728. package/lib/module/features/ota/OtaOrchestrator.js +536 -41
  729. package/lib/module/features/ota/OtaOrchestrator.js.map +1 -1
  730. package/lib/module/features/ota/OtaTypes.js.map +1 -1
  731. package/lib/module/features/ota/environment.js +165 -0
  732. package/lib/module/features/ota/environment.js.map +1 -0
  733. package/lib/module/features/ota/retry.js +87 -0
  734. package/lib/module/features/ota/retry.js.map +1 -0
  735. package/lib/module/features/ota/signature.js +109 -0
  736. package/lib/module/features/ota/signature.js.map +1 -0
  737. package/lib/module/features/ota/useOtaUpdate.js +15 -15
  738. package/lib/module/features/ota/useOtaUpdate.js.map +1 -1
  739. package/lib/module/features/performance/PerformanceFeature.js +26 -26
  740. package/lib/module/features/performance/PerformanceFeature.js.map +1 -1
  741. package/lib/module/features/performance/collectors/AppLaunchCollector.js +13 -13
  742. package/lib/module/features/performance/collectors/AppLaunchCollector.js.map +1 -1
  743. package/lib/module/features/performance/collectors/AutoScreenLoadCollector.js +32 -32
  744. package/lib/module/features/performance/collectors/AutoScreenLoadCollector.js.map +1 -1
  745. package/lib/module/features/performance/collectors/CustomTraceCollector.js +13 -13
  746. package/lib/module/features/performance/collectors/CustomTraceCollector.js.map +1 -1
  747. package/lib/module/features/performance/collectors/FrameMetricsCollector.js +11 -11
  748. package/lib/module/features/performance/collectors/FrameMetricsCollector.js.map +1 -1
  749. package/lib/module/features/performance/collectors/JsStallCollector.js +12 -12
  750. package/lib/module/features/performance/collectors/JsStallCollector.js.map +1 -1
  751. package/lib/module/features/performance/collectors/NetworkPerfCollector.js +10 -10
  752. package/lib/module/features/performance/collectors/NetworkPerfCollector.js.map +1 -1
  753. package/lib/module/features/performance/collectors/ScreenLoadCollector.js +11 -11
  754. package/lib/module/features/performance/collectors/ScreenLoadCollector.js.map +1 -1
  755. package/lib/module/features/performance/collectors/UiHangCollector.js +5 -5
  756. package/lib/module/features/performance/collectors/UiHangCollector.js.map +1 -1
  757. package/lib/module/features/performance/config.js +11 -11
  758. package/lib/module/features/performance/config.js.map +1 -1
  759. package/lib/module/features/performance/getNativePerformanceModule.js +11 -11
  760. package/lib/module/features/performance/getNativePerformanceModule.js.map +1 -1
  761. package/lib/module/features/performance/index.js +2 -2
  762. package/lib/module/features/performance/index.js.map +1 -1
  763. package/lib/module/features/performance/metrics/MetricsEngine.js +13 -13
  764. package/lib/module/features/performance/metrics/MetricsEngine.js.map +1 -1
  765. package/lib/module/features/performance/models.js +8 -8
  766. package/lib/module/features/performance/models.js.map +1 -1
  767. package/lib/module/features/performance/transport/PerformanceTransport.js +6 -6
  768. package/lib/module/features/performance/transport/PerformanceTransport.js.map +1 -1
  769. package/lib/module/features/profiler/ProfilerFeature.js +53 -53
  770. package/lib/module/features/profiler/ProfilerFeature.js.map +1 -1
  771. package/lib/module/features/profiler/config.js +15 -15
  772. package/lib/module/features/profiler/config.js.map +1 -1
  773. package/lib/module/features/profiler/contracts.js +22 -22
  774. package/lib/module/features/profiler/contracts.js.map +1 -1
  775. package/lib/module/features/profiler/index.js +4 -4
  776. package/lib/module/features/profiler/index.js.map +1 -1
  777. package/lib/module/features/profiler/models.js +44 -44
  778. package/lib/module/features/profiler/models.js.map +1 -1
  779. package/lib/module/features/profiler/transport/ProfilerTransport.js +9 -9
  780. package/lib/module/features/profiler/transport/ProfilerTransport.js.map +1 -1
  781. package/lib/module/features/replay/bridge/adapters/bridgeAdapter.js +17 -17
  782. package/lib/module/features/replay/bridge/adapters/bridgeAdapter.js.map +1 -1
  783. package/lib/module/features/replay/bridge/eventEmitter.js +8 -8
  784. package/lib/module/features/replay/bridge/eventEmitter.js.map +1 -1
  785. package/lib/module/features/replay/bridge/nativeModule.js +20 -20
  786. package/lib/module/features/replay/bridge/nativeModule.js.map +1 -1
  787. package/lib/module/features/replay/core/clock/clock.js +6 -6
  788. package/lib/module/features/replay/core/clock/clock.js.map +1 -1
  789. package/lib/module/features/replay/core/config/defaults.js +2 -2
  790. package/lib/module/features/replay/core/config/defaults.js.map +1 -1
  791. package/lib/module/features/replay/core/config/validator.js +5 -5
  792. package/lib/module/features/replay/core/config/validator.js.map +1 -1
  793. package/lib/module/features/replay/core/env/environmentDetector.js +10 -10
  794. package/lib/module/features/replay/core/env/environmentDetector.js.map +1 -1
  795. package/lib/module/features/replay/core/errors/safeCall.js +4 -4
  796. package/lib/module/features/replay/core/errors/safeCall.js.map +1 -1
  797. package/lib/module/features/replay/core/ids/sessionId.js +5 -5
  798. package/lib/module/features/replay/core/ids/sessionId.js.map +1 -1
  799. package/lib/module/features/replay/core/logger/logger.js +5 -5
  800. package/lib/module/features/replay/core/logger/logger.js.map +1 -1
  801. package/lib/module/features/replay/core/privacy/privacyTypes.js +4 -4
  802. package/lib/module/features/replay/core/privacy/privacyTypes.js.map +1 -1
  803. package/lib/module/features/replay/core/queue/boundedQueue.js +5 -5
  804. package/lib/module/features/replay/core/queue/boundedQueue.js.map +1 -1
  805. package/lib/module/features/replay/integrations/alert/alertInstrumentation.js +59 -59
  806. package/lib/module/features/replay/integrations/alert/alertInstrumentation.js.map +1 -1
  807. package/lib/module/features/replay/integrations/logs/consoleIntegration.js +19 -19
  808. package/lib/module/features/replay/integrations/logs/consoleIntegration.js.map +1 -1
  809. package/lib/module/features/replay/integrations/network/networkAdapter.js +30 -30
  810. package/lib/module/features/replay/integrations/network/networkAdapter.js.map +1 -1
  811. package/lib/module/features/replay/integrations/react-navigation/navigationIntegration.js +19 -19
  812. package/lib/module/features/replay/integrations/react-navigation/navigationIntegration.js.map +1 -1
  813. package/lib/module/features/replay/integrations/touch/ReplayRoot.js +16 -16
  814. package/lib/module/features/replay/integrations/touch/ReplayRoot.js.map +1 -1
  815. package/lib/module/features/replay/pipeline/batching/batchManager.js +5 -5
  816. package/lib/module/features/replay/pipeline/batching/batchManager.js.map +1 -1
  817. package/lib/module/features/replay/pipeline/envelope/envelopeBuilder.js +5 -5
  818. package/lib/module/features/replay/pipeline/envelope/envelopeBuilder.js.map +1 -1
  819. package/lib/module/features/replay/pipeline/retry/retryPolicy.js +4 -4
  820. package/lib/module/features/replay/pipeline/retry/retryPolicy.js.map +1 -1
  821. package/lib/module/features/replay/pipeline/transport/transportTypes.js +7 -7
  822. package/lib/module/features/replay/pipeline/transport/transportTypes.js.map +1 -1
  823. package/lib/module/features/replay/public/api.js +21 -21
  824. package/lib/module/features/replay/public/api.js.map +1 -1
  825. package/lib/module/features/replay/public/enums.js +5 -5
  826. package/lib/module/features/replay/public/enums.js.map +1 -1
  827. package/lib/module/features/replay/public/types.js.map +1 -1
  828. package/lib/module/features/replay/replay/breadcrumbs/breadcrumbCollector.js +5 -5
  829. package/lib/module/features/replay/replay/breadcrumbs/breadcrumbCollector.js.map +1 -1
  830. package/lib/module/features/replay/replay/frames/frameModels.js +4 -4
  831. package/lib/module/features/replay/replay/frames/frameModels.js.map +1 -1
  832. package/lib/module/features/replay/replay/session/sessionOrchestrator.js +10 -10
  833. package/lib/module/features/replay/replay/session/sessionOrchestrator.js.map +1 -1
  834. package/lib/module/features/replay/replay/timeline/timelineModels.js +4 -4
  835. package/lib/module/features/replay/replay/timeline/timelineModels.js.map +1 -1
  836. package/lib/module/features/replay/transport/BackendReplayTransport.js +13 -13
  837. package/lib/module/features/replay/transport/BackendReplayTransport.js.map +1 -1
  838. package/lib/module/features/replay/transport/CompositeReplayTransport.js +8 -8
  839. package/lib/module/features/replay/transport/CompositeReplayTransport.js.map +1 -1
  840. package/lib/module/features/replay/transport/DesktopReplayTransport.js +14 -14
  841. package/lib/module/features/replay/transport/DesktopReplayTransport.js.map +1 -1
  842. package/lib/module/features/replay/transport/ReplayTransport.js.map +1 -1
  843. package/lib/module/features/session/BackendSessionAdapter.js +357 -153
  844. package/lib/module/features/session/BackendSessionAdapter.js.map +1 -1
  845. package/lib/module/features/session/DesktopSessionTransport.js +14 -14
  846. package/lib/module/features/session/DesktopSessionTransport.js.map +1 -1
  847. package/lib/module/features/session/JourneyEventPipeline.js +19 -19
  848. package/lib/module/features/session/JourneyEventPipeline.js.map +1 -1
  849. package/lib/module/features/session/ReplayCaptureManager.js +123 -123
  850. package/lib/module/features/session/ReplayCaptureManager.js.map +1 -1
  851. package/lib/module/features/session/ScrollTracker.js +17 -17
  852. package/lib/module/features/session/ScrollTracker.js.map +1 -1
  853. package/lib/module/features/session/SessionManager.js +143 -143
  854. package/lib/module/features/session/SessionManager.js.map +1 -1
  855. package/lib/module/features/session/SyncDecisionEngine.js +23 -23
  856. package/lib/module/features/session/SyncDecisionEngine.js.map +1 -1
  857. package/lib/module/features/session/index.js +5 -5
  858. package/lib/module/features/session/index.js.map +1 -1
  859. package/lib/module/features/session/nativeCapture.js +5 -5
  860. package/lib/module/features/session/nativeCapture.js.map +1 -1
  861. package/lib/module/features/session/outboxFrameCapture.js +15 -15
  862. package/lib/module/features/session/outboxFrameCapture.js.map +1 -1
  863. package/lib/module/features/session/sessionTypes.js +44 -44
  864. package/lib/module/features/session/sessionTypes.js.map +1 -1
  865. package/lib/module/features/skan/skanBridge.js +11 -11
  866. package/lib/module/features/skan/skanBridge.js.map +1 -1
  867. package/lib/module/features/skan/skanConversionManager.js +23 -23
  868. package/lib/module/features/skan/skanConversionManager.js.map +1 -1
  869. package/lib/module/index.js +16 -10
  870. package/lib/module/index.js.map +1 -1
  871. package/lib/module/integrations/fetch/fetchInterceptor.js +21 -21
  872. package/lib/module/integrations/fetch/fetchInterceptor.js.map +1 -1
  873. package/lib/module/integrations/navigation/screenTracker.js.map +1 -1
  874. package/lib/module/integrations/network/bodyCapture.js +69 -69
  875. package/lib/module/integrations/network/bodyCapture.js.map +1 -1
  876. package/lib/module/integrations/xhr/xhrInterceptor.js +24 -24
  877. package/lib/module/integrations/xhr/xhrInterceptor.js.map +1 -1
  878. package/lib/module/metro/index.js +37 -37
  879. package/lib/module/metro/index.js.map +1 -1
  880. package/lib/module/metro/optionalDependencyStub.js +11 -11
  881. package/lib/module/metro/optionalDependencyStub.js.map +1 -1
  882. package/lib/module/metro/optionalModules.js +16 -16
  883. package/lib/module/metro/optionalModules.js.map +1 -1
  884. package/lib/module/pipeline/dispatcher/dispatcher.js.map +1 -1
  885. package/lib/module/pipeline/envelope/envelope.js.map +1 -1
  886. package/lib/module/pipeline/envelope/serializer.js.map +1 -1
  887. package/lib/module/pipeline/processors/dedupe.js.map +1 -1
  888. package/lib/module/pipeline/processors/enrich.js.map +1 -1
  889. package/lib/module/pipeline/processors/sampling.js.map +1 -1
  890. package/lib/module/pipeline/processors/sanitize.js.map +1 -1
  891. package/lib/module/pipeline/queue/flushQueue.js +4 -4
  892. package/lib/module/pipeline/queue/flushQueue.js.map +1 -1
  893. package/lib/module/pipeline/queue/memoryQueue.js.map +1 -1
  894. package/lib/module/pipeline/queue/persistentQueue.js +80 -80
  895. package/lib/module/pipeline/queue/persistentQueue.js.map +1 -1
  896. package/lib/module/pipeline/queue/queuePolicy.js.map +1 -1
  897. package/lib/module/pipeline/scheduler/flushScheduler.js.map +1 -1
  898. package/lib/module/pipeline/scheduler/retryPolicy.js +2 -2
  899. package/lib/module/pipeline/scheduler/retryPolicy.js.map +1 -1
  900. package/lib/module/public/ScaleBunErrorBoundary.js +70 -0
  901. package/lib/module/public/ScaleBunErrorBoundary.js.map +1 -0
  902. package/lib/module/public/ScaleBunFacade.js +274 -274
  903. package/lib/module/public/ScaleBunFacade.js.map +1 -1
  904. package/lib/module/public/ScaleBunProvider.js +3 -3
  905. package/lib/module/public/ScaleBunProvider.js.map +1 -1
  906. package/lib/module/public/typedTracker.js +36 -36
  907. package/lib/module/public/typedTracker.js.map +1 -1
  908. package/lib/module/public/types.js.map +1 -1
  909. package/lib/module/push/PushManager.js +21 -21
  910. package/lib/module/push/PushManager.js.map +1 -1
  911. package/lib/module/push/adapters/ManualAdapter.js +14 -14
  912. package/lib/module/push/adapters/ManualAdapter.js.map +1 -1
  913. package/lib/module/push/adapters/NativeBridgeAdapter.js +17 -17
  914. package/lib/module/push/adapters/NativeBridgeAdapter.js.map +1 -1
  915. package/lib/module/push/adapters/NoopAdapter.js +5 -5
  916. package/lib/module/push/adapters/NoopAdapter.js.map +1 -1
  917. package/lib/module/push/adapters/RNFirebaseMessagingAdapter.js +17 -17
  918. package/lib/module/push/adapters/RNFirebaseMessagingAdapter.js.map +1 -1
  919. package/lib/module/push/adapters/loadMessaging.js +12 -12
  920. package/lib/module/push/adapters/loadMessaging.js.map +1 -1
  921. package/lib/module/push/adapters/loadNotifee.js +12 -12
  922. package/lib/module/push/adapters/loadNotifee.js.map +1 -1
  923. package/lib/module/push/adapters/selectAdapter.js +14 -14
  924. package/lib/module/push/adapters/selectAdapter.js.map +1 -1
  925. package/lib/module/push/detect/capabilities.js +19 -19
  926. package/lib/module/push/detect/capabilities.js.map +1 -1
  927. package/lib/module/push/index.js +3 -3
  928. package/lib/module/push/index.js.map +1 -1
  929. package/lib/module/push/native/nativeNotifications.js +32 -32
  930. package/lib/module/push/native/nativeNotifications.js.map +1 -1
  931. package/lib/module/push/types.js.map +1 -1
  932. package/lib/module/specs/NativeReplaySdk.js +18 -18
  933. package/lib/module/specs/NativeReplaySdk.js.map +1 -1
  934. package/lib/module/specs/NativeScaleBunCrash.js +19 -19
  935. package/lib/module/specs/NativeScaleBunCrash.js.map +1 -1
  936. package/lib/module/specs/NativeScaleBunInstallReferrer.js +14 -14
  937. package/lib/module/specs/NativeScaleBunInstallReferrer.js.map +1 -1
  938. package/lib/module/specs/NativeScaleBunOta.js +21 -21
  939. package/lib/module/specs/NativeScaleBunOta.js.map +1 -1
  940. package/lib/module/specs/NativeScaleBunPerformance.js +15 -15
  941. package/lib/module/specs/NativeScaleBunPerformance.js.map +1 -1
  942. package/lib/module/specs/NativeScaleBunProfiler.js +16 -16
  943. package/lib/module/specs/NativeScaleBunProfiler.js.map +1 -1
  944. package/lib/module/specs/NativeScaleBunStorage.js +29 -29
  945. package/lib/module/specs/NativeScaleBunStorage.js.map +1 -1
  946. package/lib/module/storage/StorageBackend.js +83 -83
  947. package/lib/module/storage/StorageBackend.js.map +1 -1
  948. package/lib/module/storage/db/sqlite.js.map +1 -1
  949. package/lib/module/storage/files/fileStore.js.map +1 -1
  950. package/lib/module/transport/auth/sdkSession.js.map +1 -1
  951. package/lib/module/transport/backoff/exponentialJitter.js +2 -2
  952. package/lib/module/transport/backoff/exponentialJitter.js.map +1 -1
  953. package/lib/module/transport/http/endpoints.js.map +1 -1
  954. package/lib/module/transport/http/httpClient.js +3 -3
  955. package/lib/module/transport/http/httpClient.js.map +1 -1
  956. package/lib/module/transport/rateLimit/retryAfter.js.map +1 -1
  957. package/lib/module/transport/signing/requestSigner.js.map +1 -1
  958. package/lib/module/vendor/protocol/index.js +74 -74
  959. package/lib/module/vendor/protocol/index.js.map +1 -1
  960. package/lib/module/vendor/protocol/internal/validation.js +23 -23
  961. package/lib/module/vendor/protocol/internal/validation.js.map +1 -1
  962. package/lib/module/vendor/sdk-contracts/bridge.js.map +1 -1
  963. package/lib/module/vendor/sdk-contracts/config.js.map +1 -1
  964. package/lib/module/vendor/sdk-contracts/events.js.map +1 -1
  965. package/lib/module/vendor/sdk-contracts/features.js.map +1 -1
  966. package/lib/module/vendor/sdk-contracts/index.js.map +1 -1
  967. package/lib/module/vendor/sdk-contracts/platform.js.map +1 -1
  968. package/lib/module/vendor/sdk-contracts/session-boundary.js.map +1 -1
  969. package/lib/module/vendor/sdk-contracts/session.js.map +1 -1
  970. package/lib/module/vendor/vendor.manifest +10 -10
  971. package/lib/typescript/bootstrap/SDKBootstrapper.d.ts.map +1 -1
  972. package/lib/typescript/features/crash/CrashFeature.d.ts.map +1 -1
  973. package/lib/typescript/features/crash/rejectionHandler.d.ts +46 -0
  974. package/lib/typescript/features/crash/rejectionHandler.d.ts.map +1 -0
  975. package/lib/typescript/features/engage/EngagePromptProvider.d.ts.map +1 -1
  976. package/lib/typescript/features/engage/engageThrottle.d.ts +24 -4
  977. package/lib/typescript/features/engage/engageThrottle.d.ts.map +1 -1
  978. package/lib/typescript/features/engage/engageTypes.d.ts +6 -0
  979. package/lib/typescript/features/engage/engageTypes.d.ts.map +1 -1
  980. package/lib/typescript/features/navigation/AutoScreenDetector.d.ts +9 -0
  981. package/lib/typescript/features/navigation/AutoScreenDetector.d.ts.map +1 -1
  982. package/lib/typescript/features/ota/OtaOrchestrator.d.ts +67 -1
  983. package/lib/typescript/features/ota/OtaOrchestrator.d.ts.map +1 -1
  984. package/lib/typescript/features/ota/OtaTypes.d.ts +42 -0
  985. package/lib/typescript/features/ota/OtaTypes.d.ts.map +1 -1
  986. package/lib/typescript/features/ota/environment.d.ts +99 -0
  987. package/lib/typescript/features/ota/environment.d.ts.map +1 -0
  988. package/lib/typescript/features/ota/retry.d.ts +53 -0
  989. package/lib/typescript/features/ota/retry.d.ts.map +1 -0
  990. package/lib/typescript/features/ota/signature.d.ts +66 -0
  991. package/lib/typescript/features/ota/signature.d.ts.map +1 -0
  992. package/lib/typescript/features/session/BackendSessionAdapter.d.ts +93 -2
  993. package/lib/typescript/features/session/BackendSessionAdapter.d.ts.map +1 -1
  994. package/lib/typescript/index.d.ts +6 -0
  995. package/lib/typescript/index.d.ts.map +1 -1
  996. package/lib/typescript/public/ScaleBunErrorBoundary.d.ts +44 -0
  997. package/lib/typescript/public/ScaleBunErrorBoundary.d.ts.map +1 -0
  998. package/lib/typescript/specs/NativeScaleBunOta.d.ts +11 -0
  999. package/lib/typescript/specs/NativeScaleBunOta.d.ts.map +1 -1
  1000. package/package.json +12 -14
  1001. package/react-native.config.js +24 -24
  1002. package/scalebun-react-native.podspec +37 -37
  1003. package/src/analytics/EventTracker.ts +462 -462
  1004. package/src/analytics/automaticEvents.ts +105 -105
  1005. package/src/analytics/batching.ts +54 -54
  1006. package/src/analytics/eventLane.ts +26 -26
  1007. package/src/bootstrap/FeatureRegistry.ts +81 -81
  1008. package/src/bootstrap/SDKBootstrapper.ts +609 -585
  1009. package/src/bucketing/fnv1a32.ts +40 -40
  1010. package/src/compat/codepush.ts +118 -118
  1011. package/src/config/ConfigManager.ts +167 -167
  1012. package/src/config/configTypes.ts +32 -32
  1013. package/src/core/architecture.ts +39 -39
  1014. package/src/core/clock/now.ts +6 -6
  1015. package/src/core/config/schema.ts +231 -231
  1016. package/src/core/constants/endpoints.ts +9 -9
  1017. package/src/core/constants/timings.ts +23 -23
  1018. package/src/core/constants/version.ts +6 -6
  1019. package/src/core/context/user.ts +26 -26
  1020. package/src/core/contracts/IFeature.ts +53 -53
  1021. package/src/core/di/container.ts +26 -26
  1022. package/src/core/encoding/base64.ts +46 -46
  1023. package/src/core/id/deviceId.ts +51 -51
  1024. package/src/core/lifecycle/appLifecycle.ts +33 -33
  1025. package/src/core/lifecycle/crashSafe.ts +29 -29
  1026. package/src/core/logger/errorClassification.ts +108 -108
  1027. package/src/core/logger/internalLogger.ts +65 -65
  1028. package/src/crypto/hmacSha256.ts +106 -106
  1029. package/src/debug/bootstrap.ts +366 -366
  1030. package/src/debug/commands.ts +597 -597
  1031. package/src/debug/configBuilder.ts +56 -56
  1032. package/src/debug/exportBridge.ts +153 -153
  1033. package/src/debug/hostResolver.ts +34 -34
  1034. package/src/debug/index.ts +25 -25
  1035. package/src/debug/metrics.ts +29 -29
  1036. package/src/debug/perf.ts +212 -212
  1037. package/src/debug/perfWiring.ts +119 -119
  1038. package/src/debug/protocol.ts +58 -58
  1039. package/src/debug/redaction.ts +290 -290
  1040. package/src/debug/replayWiring.ts +147 -147
  1041. package/src/debug/screenTracking.ts +55 -55
  1042. package/src/debug/sessionWiring.ts +59 -59
  1043. package/src/debug/stream.ts +561 -561
  1044. package/src/debug/transport.ts +439 -439
  1045. package/src/features/crash/CrashFeature.ts +71 -52
  1046. package/src/features/crash/CrashReporter.ts +140 -140
  1047. package/src/features/crash/NativeCrashFeature.ts +42 -42
  1048. package/src/features/crash/capture.ts +21 -21
  1049. package/src/features/crash/globalHandler.ts +39 -39
  1050. package/src/features/crash/index.ts +8 -8
  1051. package/src/features/crash/nativeCrashBridge.ts +132 -132
  1052. package/src/features/crash/rejectionHandler.ts +134 -0
  1053. package/src/features/engage/EngageAnchor.tsx +159 -159
  1054. package/src/features/engage/EngageArchetypeRenderers.tsx +3716 -3716
  1055. package/src/features/engage/EngageInAppView.tsx +2678 -2678
  1056. package/src/features/engage/EngageInlinePlacement.tsx +169 -169
  1057. package/src/features/engage/EngagePromptProvider.tsx +1272 -1270
  1058. package/src/features/engage/EngagePromptView.tsx +1364 -1364
  1059. package/src/features/engage/EngageTransport.ts +668 -668
  1060. package/src/features/engage/EngageVariantContent.tsx +1483 -1483
  1061. package/src/features/engage/__test-support__/reactNativeStub.js +40 -40
  1062. package/src/features/engage/attachmentCapture.ts +45 -45
  1063. package/src/features/engage/captureVoiceAttachment.ts +81 -81
  1064. package/src/features/engage/engageCoachmarkTour.ts +120 -120
  1065. package/src/features/engage/engageGameLogic.ts +347 -347
  1066. package/src/features/engage/engageMediaSizing.ts +76 -76
  1067. package/src/features/engage/engageMultiStepSheet.ts +53 -53
  1068. package/src/features/engage/engageOutcome.ts +157 -157
  1069. package/src/features/engage/engagePushTokenBridge.ts +84 -84
  1070. package/src/features/engage/engageShakeBridge.ts +67 -67
  1071. package/src/features/engage/engageSignals.ts +40 -40
  1072. package/src/features/engage/engageStoreReviewBridge.ts +48 -48
  1073. package/src/features/engage/engageTestSeenStore.ts +95 -95
  1074. package/src/features/engage/engageThrottle.ts +478 -440
  1075. package/src/features/engage/engageTriggerEngine.ts +335 -335
  1076. package/src/features/engage/engageTypes.ts +697 -691
  1077. package/src/features/engage/engageVariantResolver.ts +364 -364
  1078. package/src/features/engage/engageWindowInsets.ts +108 -108
  1079. package/src/features/engage/gestureTriggerDetector.ts +83 -83
  1080. package/src/features/engage/transcription/TranscriptionProvider.ts +68 -68
  1081. package/src/features/install-referrer/installReferrer.ts +112 -112
  1082. package/src/features/journey/ScaleBunDebugRoot.tsx +726 -726
  1083. package/src/features/journey/ScaleBunFlatList.tsx +39 -39
  1084. package/src/features/journey/ScaleBunImpression.tsx +109 -109
  1085. package/src/features/journey/ScaleBunScrollView.tsx +72 -72
  1086. package/src/features/journey/ScaleBunSectionList.tsx +39 -39
  1087. package/src/features/journey/calibrationContext.ts +53 -53
  1088. package/src/features/journey/gestureBuffer.ts +59 -59
  1089. package/src/features/journey/gestureDetector.ts +162 -162
  1090. package/src/features/journey/impression.ts +92 -92
  1091. package/src/features/journey/journeyManager.ts +466 -466
  1092. package/src/features/journey/journeyTypes.ts +215 -215
  1093. package/src/features/journey/navDetector.ts +149 -149
  1094. package/src/features/journey/screenshotHelper.ts +137 -137
  1095. package/src/features/journey/targetRegistry.ts +43 -43
  1096. package/src/features/journey/touchTarget.ts +128 -128
  1097. package/src/features/navigation/AutoScreenDetector.ts +503 -448
  1098. package/src/features/network/NetworkFeature.ts +144 -144
  1099. package/src/features/network/index.ts +31 -31
  1100. package/src/features/ota/OtaEventEmitter.ts +128 -128
  1101. package/src/features/ota/OtaOrchestrator.ts +894 -323
  1102. package/src/features/ota/OtaTypes.ts +118 -62
  1103. package/src/features/ota/environment.ts +199 -0
  1104. package/src/features/ota/retry.ts +123 -0
  1105. package/src/features/ota/signature.ts +123 -0
  1106. package/src/features/ota/useOtaUpdate.ts +134 -134
  1107. package/src/features/performance/PerformanceFeature.ts +584 -584
  1108. package/src/features/performance/collectors/AppLaunchCollector.ts +117 -117
  1109. package/src/features/performance/collectors/AutoScreenLoadCollector.ts +258 -258
  1110. package/src/features/performance/collectors/CustomTraceCollector.ts +116 -116
  1111. package/src/features/performance/collectors/FrameMetricsCollector.ts +119 -119
  1112. package/src/features/performance/collectors/JsStallCollector.ts +165 -165
  1113. package/src/features/performance/collectors/NetworkPerfCollector.ts +69 -69
  1114. package/src/features/performance/collectors/ScreenLoadCollector.ts +95 -95
  1115. package/src/features/performance/collectors/UiHangCollector.ts +98 -98
  1116. package/src/features/performance/config.ts +136 -136
  1117. package/src/features/performance/getNativePerformanceModule.ts +38 -38
  1118. package/src/features/performance/index.ts +28 -28
  1119. package/src/features/performance/metrics/MetricsEngine.ts +152 -152
  1120. package/src/features/performance/models.ts +235 -235
  1121. package/src/features/performance/transport/PerformanceTransport.ts +143 -143
  1122. package/src/features/profiler/ProfilerFeature.ts +661 -661
  1123. package/src/features/profiler/config.ts +230 -230
  1124. package/src/features/profiler/contracts.ts +176 -176
  1125. package/src/features/profiler/index.ts +45 -45
  1126. package/src/features/profiler/models.ts +430 -430
  1127. package/src/features/profiler/transport/ProfilerTransport.ts +93 -93
  1128. package/src/features/replay/bridge/adapters/bridgeAdapter.ts +230 -230
  1129. package/src/features/replay/bridge/eventEmitter.ts +176 -176
  1130. package/src/features/replay/bridge/nativeModule.ts +241 -241
  1131. package/src/features/replay/core/clock/clock.ts +38 -38
  1132. package/src/features/replay/core/config/defaults.ts +66 -66
  1133. package/src/features/replay/core/config/validator.ts +113 -113
  1134. package/src/features/replay/core/env/environmentDetector.ts +21 -21
  1135. package/src/features/replay/core/errors/safeCall.ts +34 -34
  1136. package/src/features/replay/core/ids/sessionId.ts +44 -44
  1137. package/src/features/replay/core/logger/logger.ts +40 -40
  1138. package/src/features/replay/core/privacy/privacyTypes.ts +41 -41
  1139. package/src/features/replay/core/queue/boundedQueue.ts +71 -71
  1140. package/src/features/replay/integrations/alert/alertInstrumentation.ts +277 -277
  1141. package/src/features/replay/integrations/logs/consoleIntegration.ts +116 -116
  1142. package/src/features/replay/integrations/network/networkAdapter.ts +128 -128
  1143. package/src/features/replay/integrations/react-navigation/navigationIntegration.ts +89 -89
  1144. package/src/features/replay/integrations/touch/ReplayRoot.tsx +114 -114
  1145. package/src/features/replay/pipeline/batching/batchManager.ts +133 -133
  1146. package/src/features/replay/pipeline/envelope/envelopeBuilder.ts +66 -66
  1147. package/src/features/replay/pipeline/retry/retryPolicy.ts +62 -62
  1148. package/src/features/replay/pipeline/transport/transportTypes.ts +85 -85
  1149. package/src/features/replay/public/api.ts +364 -364
  1150. package/src/features/replay/public/enums.ts +78 -78
  1151. package/src/features/replay/public/types.ts +297 -297
  1152. package/src/features/replay/replay/breadcrumbs/breadcrumbCollector.ts +115 -115
  1153. package/src/features/replay/replay/frames/frameModels.ts +45 -45
  1154. package/src/features/replay/replay/session/sessionOrchestrator.ts +286 -286
  1155. package/src/features/replay/replay/timeline/timelineModels.ts +129 -129
  1156. package/src/features/replay/transport/BackendReplayTransport.ts +215 -215
  1157. package/src/features/replay/transport/CompositeReplayTransport.ts +82 -82
  1158. package/src/features/replay/transport/DesktopReplayTransport.ts +140 -140
  1159. package/src/features/replay/transport/ReplayTransport.ts +84 -84
  1160. package/src/features/session/BackendSessionAdapter.ts +1441 -1233
  1161. package/src/features/session/DesktopSessionTransport.ts +128 -128
  1162. package/src/features/session/JourneyEventPipeline.ts +273 -273
  1163. package/src/features/session/ReplayCaptureManager.ts +946 -946
  1164. package/src/features/session/ScrollTracker.ts +166 -166
  1165. package/src/features/session/SessionManager.ts +1209 -1209
  1166. package/src/features/session/SyncDecisionEngine.ts +117 -117
  1167. package/src/features/session/index.ts +88 -88
  1168. package/src/features/session/nativeCapture.ts +38 -38
  1169. package/src/features/session/outboxFrameCapture.ts +74 -74
  1170. package/src/features/session/sessionTypes.ts +491 -491
  1171. package/src/features/skan/skanBridge.ts +61 -61
  1172. package/src/features/skan/skanConversionManager.ts +173 -173
  1173. package/src/index.ts +197 -191
  1174. package/src/integrations/fetch/fetchInterceptor.ts +182 -182
  1175. package/src/integrations/network/bodyCapture.ts +328 -328
  1176. package/src/integrations/xhr/xhrInterceptor.ts +231 -231
  1177. package/src/metro/index.ts +164 -164
  1178. package/src/metro/optionalDependencyStub.ts +13 -13
  1179. package/src/metro/optionalModules.ts +27 -27
  1180. package/src/pipeline/dispatcher/dispatcher.ts +22 -22
  1181. package/src/pipeline/envelope/envelope.ts +31 -31
  1182. package/src/pipeline/envelope/serializer.ts +14 -14
  1183. package/src/pipeline/processors/enrich.ts +11 -11
  1184. package/src/pipeline/processors/sanitize.ts +23 -23
  1185. package/src/pipeline/queue/flushQueue.ts +144 -144
  1186. package/src/pipeline/queue/memoryQueue.ts +31 -31
  1187. package/src/pipeline/queue/persistentQueue.ts +414 -414
  1188. package/src/pipeline/scheduler/flushScheduler.ts +47 -47
  1189. package/src/pipeline/scheduler/retryPolicy.ts +8 -8
  1190. package/src/public/ScaleBunErrorBoundary.tsx +79 -0
  1191. package/src/public/ScaleBunFacade.ts +1479 -1479
  1192. package/src/public/ScaleBunProvider.tsx +91 -91
  1193. package/src/public/typedTracker.ts +123 -123
  1194. package/src/public/types.ts +312 -312
  1195. package/src/push/PushManager.ts +318 -318
  1196. package/src/push/adapters/ManualAdapter.ts +100 -100
  1197. package/src/push/adapters/NativeBridgeAdapter.ts +142 -142
  1198. package/src/push/adapters/NoopAdapter.ts +46 -46
  1199. package/src/push/adapters/RNFirebaseMessagingAdapter.ts +271 -271
  1200. package/src/push/adapters/loadMessaging.ts +24 -24
  1201. package/src/push/adapters/loadNotifee.ts +29 -29
  1202. package/src/push/adapters/selectAdapter.ts +176 -176
  1203. package/src/push/detect/capabilities.ts +124 -124
  1204. package/src/push/index.ts +22 -22
  1205. package/src/push/native/nativeNotifications.ts +216 -216
  1206. package/src/push/types.ts +159 -159
  1207. package/src/specs/NativeReplaySdk.ts +99 -99
  1208. package/src/specs/NativeScaleBunCrash.ts +36 -36
  1209. package/src/specs/NativeScaleBunInstallReferrer.ts +29 -29
  1210. package/src/specs/NativeScaleBunOta.ts +97 -85
  1211. package/src/specs/NativeScaleBunPerformance.ts +34 -34
  1212. package/src/specs/NativeScaleBunProfiler.ts +41 -41
  1213. package/src/specs/NativeScaleBunStorage.ts +59 -59
  1214. package/src/storage/StorageBackend.ts +272 -272
  1215. package/src/transport/auth/sdkSession.ts +27 -27
  1216. package/src/transport/backoff/exponentialJitter.ts +9 -9
  1217. package/src/transport/http/endpoints.ts +33 -33
  1218. package/src/transport/http/httpClient.ts +73 -73
  1219. package/src/vendor/protocol/index.ts +391 -391
  1220. package/src/vendor/protocol/internal/validation.ts +497 -497
  1221. package/src/vendor/sdk-contracts/bridge.ts +162 -162
  1222. package/src/vendor/sdk-contracts/config.ts +192 -192
  1223. package/src/vendor/sdk-contracts/events.ts +50 -50
  1224. package/src/vendor/sdk-contracts/features.ts +42 -42
  1225. package/src/vendor/sdk-contracts/index.ts +98 -98
  1226. package/src/vendor/sdk-contracts/platform.ts +42 -42
  1227. package/src/vendor/sdk-contracts/session-boundary.ts +55 -55
  1228. package/src/vendor/sdk-contracts/session.ts +225 -225
  1229. package/src/vendor/vendor.manifest +10 -10
  1230. package/android/build/generated/source/buildConfig/debug/com/scalebun/sdk/BuildConfig.java +0 -12
  1231. package/android/build/generated/source/codegen/java/com/scalebun/spec/NativeReplaySdkSpec.java +0 -208
  1232. package/android/build/generated/source/codegen/java/com/scalebun/spec/NativeScaleBunCrashSpec.java +0 -46
  1233. package/android/build/generated/source/codegen/java/com/scalebun/spec/NativeScaleBunInstallReferrerSpec.java +0 -38
  1234. package/android/build/generated/source/codegen/java/com/scalebun/spec/NativeScaleBunOtaSpec.java +0 -63
  1235. package/android/build/generated/source/codegen/java/com/scalebun/spec/NativeScaleBunPerformanceSpec.java +0 -70
  1236. package/android/build/generated/source/codegen/java/com/scalebun/spec/NativeScaleBunProfilerSpec.java +0 -96
  1237. package/android/build/generated/source/codegen/java/com/scalebun/spec/NativeScaleBunStorageSpec.java +0 -50
  1238. package/android/build/generated/source/codegen/jni/CMakeLists.txt +0 -28
  1239. package/android/build/generated/source/codegen/jni/ScaleBunSpec-generated.cpp +0 -554
  1240. package/android/build/generated/source/codegen/jni/ScaleBunSpec.h +0 -79
  1241. package/android/build/generated/source/codegen/jni/react/renderer/components/ScaleBunSpec/ComponentDescriptors.cpp +0 -22
  1242. package/android/build/generated/source/codegen/jni/react/renderer/components/ScaleBunSpec/ComponentDescriptors.h +0 -24
  1243. package/android/build/generated/source/codegen/jni/react/renderer/components/ScaleBunSpec/EventEmitters.cpp +0 -16
  1244. package/android/build/generated/source/codegen/jni/react/renderer/components/ScaleBunSpec/EventEmitters.h +0 -17
  1245. package/android/build/generated/source/codegen/jni/react/renderer/components/ScaleBunSpec/Props.cpp +0 -19
  1246. package/android/build/generated/source/codegen/jni/react/renderer/components/ScaleBunSpec/Props.h +0 -18
  1247. package/android/build/generated/source/codegen/jni/react/renderer/components/ScaleBunSpec/ScaleBunSpecJSI-generated.cpp +0 -595
  1248. package/android/build/generated/source/codegen/jni/react/renderer/components/ScaleBunSpec/ScaleBunSpecJSI.h +0 -1070
  1249. package/android/build/generated/source/codegen/jni/react/renderer/components/ScaleBunSpec/ShadowNodes.cpp +0 -17
  1250. package/android/build/generated/source/codegen/jni/react/renderer/components/ScaleBunSpec/ShadowNodes.h +0 -23
  1251. package/android/build/generated/source/codegen/jni/react/renderer/components/ScaleBunSpec/States.cpp +0 -16
  1252. package/android/build/generated/source/codegen/jni/react/renderer/components/ScaleBunSpec/States.h +0 -20
  1253. package/android/build/generated/source/codegen/schema.json +0 -1
  1254. package/android/build/intermediates/aapt_friendly_merged_manifests/debug/processDebugManifest/aapt/AndroidManifest.xml +0 -20
  1255. package/android/build/intermediates/aapt_friendly_merged_manifests/debug/processDebugManifest/aapt/output-metadata.json +0 -18
  1256. package/android/build/intermediates/aar_metadata/debug/writeDebugAarMetadata/aar-metadata.properties +0 -6
  1257. package/android/build/intermediates/annotation_processor_list/debug/javaPreCompileDebug/annotationProcessors.json +0 -1
  1258. package/android/build/intermediates/compile_library_classes_jar/debug/bundleLibCompileToJarDebug/classes.jar +0 -0
  1259. package/android/build/intermediates/compile_r_class_jar/debug/generateDebugRFile/R.jar +0 -0
  1260. package/android/build/intermediates/compile_symbol_list/debug/generateDebugRFile/R.txt +0 -0
  1261. package/android/build/intermediates/incremental/debug/packageDebugResources/compile-file-map.properties +0 -1
  1262. package/android/build/intermediates/incremental/debug/packageDebugResources/merger.xml +0 -2
  1263. package/android/build/intermediates/incremental/mergeDebugAssets/merger.xml +0 -2
  1264. package/android/build/intermediates/incremental/mergeDebugJniLibFolders/merger.xml +0 -2
  1265. package/android/build/intermediates/incremental/mergeDebugShaders/merger.xml +0 -2
  1266. package/android/build/intermediates/java_res/debug/processDebugJavaRes/out/META-INF/scalebun_react-native_debug.kotlin_module +0 -0
  1267. package/android/build/intermediates/javac/debug/compileDebugJavaWithJavac/classes/com/scalebun/sdk/BuildConfig.class +0 -0
  1268. package/android/build/intermediates/javac/debug/compileDebugJavaWithJavac/classes/com/scalebun/spec/NativeReplaySdkSpec.class +0 -0
  1269. package/android/build/intermediates/javac/debug/compileDebugJavaWithJavac/classes/com/scalebun/spec/NativeScaleBunCrashSpec.class +0 -0
  1270. package/android/build/intermediates/javac/debug/compileDebugJavaWithJavac/classes/com/scalebun/spec/NativeScaleBunInstallReferrerSpec.class +0 -0
  1271. package/android/build/intermediates/javac/debug/compileDebugJavaWithJavac/classes/com/scalebun/spec/NativeScaleBunOtaSpec.class +0 -0
  1272. package/android/build/intermediates/javac/debug/compileDebugJavaWithJavac/classes/com/scalebun/spec/NativeScaleBunPerformanceSpec.class +0 -0
  1273. package/android/build/intermediates/javac/debug/compileDebugJavaWithJavac/classes/com/scalebun/spec/NativeScaleBunProfilerSpec.class +0 -0
  1274. package/android/build/intermediates/javac/debug/compileDebugJavaWithJavac/classes/com/scalebun/spec/NativeScaleBunStorageSpec.class +0 -0
  1275. package/android/build/intermediates/local_only_symbol_list/debug/parseDebugLocalResources/R-def.txt +0 -2
  1276. package/android/build/intermediates/manifest_merge_blame_file/debug/processDebugManifest/manifest-merger-blame-debug-report.txt +0 -24
  1277. package/android/build/intermediates/merged_manifest/debug/processDebugManifest/AndroidManifest.xml +0 -20
  1278. package/android/build/intermediates/navigation_json/debug/extractDeepLinksDebug/navigation.json +0 -1
  1279. package/android/build/intermediates/nested_resources_validation_report/debug/generateDebugResources/nestedResourcesValidationReport.txt +0 -1
  1280. package/android/build/intermediates/runtime_library_classes_dir/debug/bundleLibRuntimeToDirDebug/META-INF/scalebun_react-native_debug.kotlin_module +0 -0
  1281. package/android/build/intermediates/runtime_library_classes_dir/debug/bundleLibRuntimeToDirDebug/com/scalebun/core/crash/CrashStorage.class +0 -0
  1282. package/android/build/intermediates/runtime_library_classes_dir/debug/bundleLibRuntimeToDirDebug/com/scalebun/core/crash/NativeCrashHandler$Companion.class +0 -0
  1283. package/android/build/intermediates/runtime_library_classes_dir/debug/bundleLibRuntimeToDirDebug/com/scalebun/core/crash/NativeCrashHandler.class +0 -0
  1284. package/android/build/intermediates/runtime_library_classes_dir/debug/bundleLibRuntimeToDirDebug/com/scalebun/core/performance/ANRWatchdog$HangInfo.class +0 -0
  1285. package/android/build/intermediates/runtime_library_classes_dir/debug/bundleLibRuntimeToDirDebug/com/scalebun/core/performance/ANRWatchdog.class +0 -0
  1286. package/android/build/intermediates/runtime_library_classes_dir/debug/bundleLibRuntimeToDirDebug/com/scalebun/core/performance/AppStartCollector$AppStartInfo.class +0 -0
  1287. package/android/build/intermediates/runtime_library_classes_dir/debug/bundleLibRuntimeToDirDebug/com/scalebun/core/performance/AppStartCollector$Breakdown.class +0 -0
  1288. package/android/build/intermediates/runtime_library_classes_dir/debug/bundleLibRuntimeToDirDebug/com/scalebun/core/performance/AppStartCollector$start$1.class +0 -0
  1289. package/android/build/intermediates/runtime_library_classes_dir/debug/bundleLibRuntimeToDirDebug/com/scalebun/core/performance/AppStartCollector.class +0 -0
  1290. package/android/build/intermediates/runtime_library_classes_dir/debug/bundleLibRuntimeToDirDebug/com/scalebun/core/performance/FrameMetricsCollector$Companion.class +0 -0
  1291. package/android/build/intermediates/runtime_library_classes_dir/debug/bundleLibRuntimeToDirDebug/com/scalebun/core/performance/FrameMetricsCollector$FrameMetricsSnapshot.class +0 -0
  1292. package/android/build/intermediates/runtime_library_classes_dir/debug/bundleLibRuntimeToDirDebug/com/scalebun/core/performance/FrameMetricsCollector$start$1.class +0 -0
  1293. package/android/build/intermediates/runtime_library_classes_dir/debug/bundleLibRuntimeToDirDebug/com/scalebun/core/performance/FrameMetricsCollector$startChoreographerFallback$1.class +0 -0
  1294. package/android/build/intermediates/runtime_library_classes_dir/debug/bundleLibRuntimeToDirDebug/com/scalebun/core/performance/FrameMetricsCollector.class +0 -0
  1295. package/android/build/intermediates/runtime_library_classes_dir/debug/bundleLibRuntimeToDirDebug/com/scalebun/core/performance/PerformanceCore$Listener.class +0 -0
  1296. package/android/build/intermediates/runtime_library_classes_dir/debug/bundleLibRuntimeToDirDebug/com/scalebun/core/performance/PerformanceCore.class +0 -0
  1297. package/android/build/intermediates/runtime_library_classes_dir/debug/bundleLibRuntimeToDirDebug/com/scalebun/profiler/ProfilerModule$Companion.class +0 -0
  1298. package/android/build/intermediates/runtime_library_classes_dir/debug/bundleLibRuntimeToDirDebug/com/scalebun/profiler/ProfilerModule.class +0 -0
  1299. package/android/build/intermediates/runtime_library_classes_dir/debug/bundleLibRuntimeToDirDebug/com/scalebun/profiler/ProfilerPackage.class +0 -0
  1300. package/android/build/intermediates/runtime_library_classes_dir/debug/bundleLibRuntimeToDirDebug/com/scalebun/profiler/ProfilerSpec.class +0 -0
  1301. package/android/build/intermediates/runtime_library_classes_dir/debug/bundleLibRuntimeToDirDebug/com/scalebun/profiler/collectors/CpuCollector.class +0 -0
  1302. package/android/build/intermediates/runtime_library_classes_dir/debug/bundleLibRuntimeToDirDebug/com/scalebun/profiler/collectors/IncidentDetector.class +0 -0
  1303. package/android/build/intermediates/runtime_library_classes_dir/debug/bundleLibRuntimeToDirDebug/com/scalebun/profiler/collectors/MemoryCollector.class +0 -0
  1304. package/android/build/intermediates/runtime_library_classes_dir/debug/bundleLibRuntimeToDirDebug/com/scalebun/profiler/collectors/RenderCollector$frameCallback$1.class +0 -0
  1305. package/android/build/intermediates/runtime_library_classes_dir/debug/bundleLibRuntimeToDirDebug/com/scalebun/profiler/collectors/RenderCollector.class +0 -0
  1306. package/android/build/intermediates/runtime_library_classes_dir/debug/bundleLibRuntimeToDirDebug/com/scalebun/profiler/collectors/SamplerScheduler.class +0 -0
  1307. package/android/build/intermediates/runtime_library_classes_dir/debug/bundleLibRuntimeToDirDebug/com/scalebun/profiler/collectors/SamplerSchedulerKt.class +0 -0
  1308. package/android/build/intermediates/runtime_library_classes_dir/debug/bundleLibRuntimeToDirDebug/com/scalebun/profiler/collectors/ThreadCollector$WhenMappings.class +0 -0
  1309. package/android/build/intermediates/runtime_library_classes_dir/debug/bundleLibRuntimeToDirDebug/com/scalebun/profiler/collectors/ThreadCollector.class +0 -0
  1310. package/android/build/intermediates/runtime_library_classes_dir/debug/bundleLibRuntimeToDirDebug/com/scalebun/replaysdk/ReplaySdkModule$Companion.class +0 -0
  1311. package/android/build/intermediates/runtime_library_classes_dir/debug/bundleLibRuntimeToDirDebug/com/scalebun/replaysdk/ReplaySdkModule$registerConnectivity$cb$1.class +0 -0
  1312. package/android/build/intermediates/runtime_library_classes_dir/debug/bundleLibRuntimeToDirDebug/com/scalebun/replaysdk/ReplaySdkModule.class +0 -0
  1313. package/android/build/intermediates/runtime_library_classes_dir/debug/bundleLibRuntimeToDirDebug/com/scalebun/replaysdk/ReplaySdkPackage.class +0 -0
  1314. package/android/build/intermediates/runtime_library_classes_dir/debug/bundleLibRuntimeToDirDebug/com/scalebun/replaysdk/ReplaySdkSpec.class +0 -0
  1315. package/android/build/intermediates/runtime_library_classes_dir/debug/bundleLibRuntimeToDirDebug/com/scalebun/replaysdk/capture/CaptureReason$Companion.class +0 -0
  1316. package/android/build/intermediates/runtime_library_classes_dir/debug/bundleLibRuntimeToDirDebug/com/scalebun/replaysdk/capture/CaptureReason.class +0 -0
  1317. package/android/build/intermediates/runtime_library_classes_dir/debug/bundleLibRuntimeToDirDebug/com/scalebun/replaysdk/capture/FrameCaptureManager$startFrequencyTimer$1.class +0 -0
  1318. package/android/build/intermediates/runtime_library_classes_dir/debug/bundleLibRuntimeToDirDebug/com/scalebun/replaysdk/capture/FrameCaptureManager.class +0 -0
  1319. package/android/build/intermediates/runtime_library_classes_dir/debug/bundleLibRuntimeToDirDebug/com/scalebun/replaysdk/capture/FrameCaptureScheduler$Companion.class +0 -0
  1320. package/android/build/intermediates/runtime_library_classes_dir/debug/bundleLibRuntimeToDirDebug/com/scalebun/replaysdk/capture/FrameCaptureScheduler$FrameRequest.class +0 -0
  1321. package/android/build/intermediates/runtime_library_classes_dir/debug/bundleLibRuntimeToDirDebug/com/scalebun/replaysdk/capture/FrameCaptureScheduler.class +0 -0
  1322. package/android/build/intermediates/runtime_library_classes_dir/debug/bundleLibRuntimeToDirDebug/com/scalebun/replaysdk/capture/UiStabilityDetector$Companion.class +0 -0
  1323. package/android/build/intermediates/runtime_library_classes_dir/debug/bundleLibRuntimeToDirDebug/com/scalebun/replaysdk/capture/UiStabilityDetector$SettleWatch.class +0 -0
  1324. package/android/build/intermediates/runtime_library_classes_dir/debug/bundleLibRuntimeToDirDebug/com/scalebun/replaysdk/capture/UiStabilityDetector$StabilityWatch.class +0 -0
  1325. package/android/build/intermediates/runtime_library_classes_dir/debug/bundleLibRuntimeToDirDebug/com/scalebun/replaysdk/capture/UiStabilityDetector.class +0 -0
  1326. package/android/build/intermediates/runtime_library_classes_dir/debug/bundleLibRuntimeToDirDebug/com/scalebun/replaysdk/core/CaptureMode$Companion.class +0 -0
  1327. package/android/build/intermediates/runtime_library_classes_dir/debug/bundleLibRuntimeToDirDebug/com/scalebun/replaysdk/core/CaptureMode.class +0 -0
  1328. package/android/build/intermediates/runtime_library_classes_dir/debug/bundleLibRuntimeToDirDebug/com/scalebun/replaysdk/core/ReplayConfig$Companion.class +0 -0
  1329. package/android/build/intermediates/runtime_library_classes_dir/debug/bundleLibRuntimeToDirDebug/com/scalebun/replaysdk/core/ReplayConfig.class +0 -0
  1330. package/android/build/intermediates/runtime_library_classes_dir/debug/bundleLibRuntimeToDirDebug/com/scalebun/replaysdk/core/ReplayLogger.class +0 -0
  1331. package/android/build/intermediates/runtime_library_classes_dir/debug/bundleLibRuntimeToDirDebug/com/scalebun/replaysdk/core/ScreenshotQuality$Companion.class +0 -0
  1332. package/android/build/intermediates/runtime_library_classes_dir/debug/bundleLibRuntimeToDirDebug/com/scalebun/replaysdk/core/ScreenshotQuality.class +0 -0
  1333. package/android/build/intermediates/runtime_library_classes_dir/debug/bundleLibRuntimeToDirDebug/com/scalebun/replaysdk/core/SessionIdGenerator.class +0 -0
  1334. package/android/build/intermediates/runtime_library_classes_dir/debug/bundleLibRuntimeToDirDebug/com/scalebun/replaysdk/core/SessionState.class +0 -0
  1335. package/android/build/intermediates/runtime_library_classes_dir/debug/bundleLibRuntimeToDirDebug/com/scalebun/replaysdk/models/ReplayFrame.class +0 -0
  1336. package/android/build/intermediates/runtime_library_classes_dir/debug/bundleLibRuntimeToDirDebug/com/scalebun/replaysdk/models/ReplaySession.class +0 -0
  1337. package/android/build/intermediates/runtime_library_classes_dir/debug/bundleLibRuntimeToDirDebug/com/scalebun/replaysdk/models/TimelineEvent.class +0 -0
  1338. package/android/build/intermediates/runtime_library_classes_dir/debug/bundleLibRuntimeToDirDebug/com/scalebun/replaysdk/outbox/NativeOutbox$Companion.class +0 -0
  1339. package/android/build/intermediates/runtime_library_classes_dir/debug/bundleLibRuntimeToDirDebug/com/scalebun/replaysdk/outbox/NativeOutbox$enforceLimits$lambda$37$$inlined$sortedBy$1.class +0 -0
  1340. package/android/build/intermediates/runtime_library_classes_dir/debug/bundleLibRuntimeToDirDebug/com/scalebun/replaysdk/outbox/NativeOutbox.class +0 -0
  1341. package/android/build/intermediates/runtime_library_classes_dir/debug/bundleLibRuntimeToDirDebug/com/scalebun/replaysdk/outbox/OutboxUploader$NetResult$NetworkError.class +0 -0
  1342. package/android/build/intermediates/runtime_library_classes_dir/debug/bundleLibRuntimeToDirDebug/com/scalebun/replaysdk/outbox/OutboxUploader$NetResult$Response.class +0 -0
  1343. package/android/build/intermediates/runtime_library_classes_dir/debug/bundleLibRuntimeToDirDebug/com/scalebun/replaysdk/outbox/OutboxUploader$NetResult.class +0 -0
  1344. package/android/build/intermediates/runtime_library_classes_dir/debug/bundleLibRuntimeToDirDebug/com/scalebun/replaysdk/outbox/OutboxUploader$Outcome.class +0 -0
  1345. package/android/build/intermediates/runtime_library_classes_dir/debug/bundleLibRuntimeToDirDebug/com/scalebun/replaysdk/outbox/OutboxUploader$WhenMappings.class +0 -0
  1346. package/android/build/intermediates/runtime_library_classes_dir/debug/bundleLibRuntimeToDirDebug/com/scalebun/replaysdk/outbox/OutboxUploader.class +0 -0
  1347. package/android/build/intermediates/runtime_library_classes_dir/debug/bundleLibRuntimeToDirDebug/com/scalebun/replaysdk/privacy/PrivacyMaskProcessor.class +0 -0
  1348. package/android/build/intermediates/runtime_library_classes_dir/debug/bundleLibRuntimeToDirDebug/com/scalebun/replaysdk/session/SessionManager.class +0 -0
  1349. package/android/build/intermediates/runtime_library_classes_dir/debug/bundleLibRuntimeToDirDebug/com/scalebun/replaysdk/storage/ReplayStorage$enforceStorageLimit$$inlined$sortedBy$1.class +0 -0
  1350. package/android/build/intermediates/runtime_library_classes_dir/debug/bundleLibRuntimeToDirDebug/com/scalebun/replaysdk/storage/ReplayStorage.class +0 -0
  1351. package/android/build/intermediates/runtime_library_classes_dir/debug/bundleLibRuntimeToDirDebug/com/scalebun/replaysdk/timeline/TimelineCollector.class +0 -0
  1352. package/android/build/intermediates/runtime_library_classes_dir/debug/bundleLibRuntimeToDirDebug/com/scalebun/replaysdk/tracking/DialogTouchObserver$start$runnable$1.class +0 -0
  1353. package/android/build/intermediates/runtime_library_classes_dir/debug/bundleLibRuntimeToDirDebug/com/scalebun/replaysdk/tracking/DialogTouchObserver.class +0 -0
  1354. package/android/build/intermediates/runtime_library_classes_dir/debug/bundleLibRuntimeToDirDebug/com/scalebun/replaysdk/tracking/InteractionTracker.class +0 -0
  1355. package/android/build/intermediates/runtime_library_classes_dir/debug/bundleLibRuntimeToDirDebug/com/scalebun/replaysdk/tracking/NativeTouchInterceptor.class +0 -0
  1356. package/android/build/intermediates/runtime_library_classes_dir/debug/bundleLibRuntimeToDirDebug/com/scalebun/replaysdk/tracking/ScreenTracker.class +0 -0
  1357. package/android/build/intermediates/runtime_library_classes_dir/debug/bundleLibRuntimeToDirDebug/com/scalebun/replaysdk/transport/ReplayTransport$UploadResult.class +0 -0
  1358. package/android/build/intermediates/runtime_library_classes_dir/debug/bundleLibRuntimeToDirDebug/com/scalebun/replaysdk/transport/ReplayTransport$upload$2.class +0 -0
  1359. package/android/build/intermediates/runtime_library_classes_dir/debug/bundleLibRuntimeToDirDebug/com/scalebun/replaysdk/transport/ReplayTransport.class +0 -0
  1360. package/android/build/intermediates/runtime_library_classes_dir/debug/bundleLibRuntimeToDirDebug/com/scalebun/replaysdk/voice/VoiceRecorder$Companion.class +0 -0
  1361. package/android/build/intermediates/runtime_library_classes_dir/debug/bundleLibRuntimeToDirDebug/com/scalebun/replaysdk/voice/VoiceRecorder$Result.class +0 -0
  1362. package/android/build/intermediates/runtime_library_classes_dir/debug/bundleLibRuntimeToDirDebug/com/scalebun/replaysdk/voice/VoiceRecorder.class +0 -0
  1363. package/android/build/intermediates/runtime_library_classes_dir/debug/bundleLibRuntimeToDirDebug/com/scalebun/replaysdk/voice/VoiceTranscriber$TranscriptResult.class +0 -0
  1364. package/android/build/intermediates/runtime_library_classes_dir/debug/bundleLibRuntimeToDirDebug/com/scalebun/replaysdk/voice/VoiceTranscriber$listener$1.class +0 -0
  1365. package/android/build/intermediates/runtime_library_classes_dir/debug/bundleLibRuntimeToDirDebug/com/scalebun/replaysdk/voice/VoiceTranscriber.class +0 -0
  1366. package/android/build/intermediates/runtime_library_classes_dir/debug/bundleLibRuntimeToDirDebug/com/scalebun/rn/ScaleBunPackage$Companion.class +0 -0
  1367. package/android/build/intermediates/runtime_library_classes_dir/debug/bundleLibRuntimeToDirDebug/com/scalebun/rn/ScaleBunPackage.class +0 -0
  1368. package/android/build/intermediates/runtime_library_classes_dir/debug/bundleLibRuntimeToDirDebug/com/scalebun/rn/crash/ScaleBunCrashModule$Companion.class +0 -0
  1369. package/android/build/intermediates/runtime_library_classes_dir/debug/bundleLibRuntimeToDirDebug/com/scalebun/rn/crash/ScaleBunCrashModule.class +0 -0
  1370. package/android/build/intermediates/runtime_library_classes_dir/debug/bundleLibRuntimeToDirDebug/com/scalebun/rn/crash/ScaleBunCrashPackage.class +0 -0
  1371. package/android/build/intermediates/runtime_library_classes_dir/debug/bundleLibRuntimeToDirDebug/com/scalebun/rn/crash/ScaleBunCrashSpec.class +0 -0
  1372. package/android/build/intermediates/runtime_library_classes_dir/debug/bundleLibRuntimeToDirDebug/com/scalebun/rn/engage/ScaleBunEngageModule$Companion.class +0 -0
  1373. package/android/build/intermediates/runtime_library_classes_dir/debug/bundleLibRuntimeToDirDebug/com/scalebun/rn/engage/ScaleBunEngageModule$WindowInsetEdges.class +0 -0
  1374. package/android/build/intermediates/runtime_library_classes_dir/debug/bundleLibRuntimeToDirDebug/com/scalebun/rn/engage/ScaleBunEngageModule$shakeListener$1.class +0 -0
  1375. package/android/build/intermediates/runtime_library_classes_dir/debug/bundleLibRuntimeToDirDebug/com/scalebun/rn/engage/ScaleBunEngageModule.class +0 -0
  1376. package/android/build/intermediates/runtime_library_classes_dir/debug/bundleLibRuntimeToDirDebug/com/scalebun/rn/engage/ScaleBunEngagePackage.class +0 -0
  1377. package/android/build/intermediates/runtime_library_classes_dir/debug/bundleLibRuntimeToDirDebug/com/scalebun/rn/engage/ScaleBunNotificationPresenter.class +0 -0
  1378. package/android/build/intermediates/runtime_library_classes_dir/debug/bundleLibRuntimeToDirDebug/com/scalebun/rn/ota/ScaleBunOtaModule$Companion.class +0 -0
  1379. package/android/build/intermediates/runtime_library_classes_dir/debug/bundleLibRuntimeToDirDebug/com/scalebun/rn/ota/ScaleBunOtaModule.class +0 -0
  1380. package/android/build/intermediates/runtime_library_classes_dir/debug/bundleLibRuntimeToDirDebug/com/scalebun/rn/ota/ScaleBunOtaSpec.class +0 -0
  1381. package/android/build/intermediates/runtime_library_classes_dir/debug/bundleLibRuntimeToDirDebug/com/scalebun/rn/ota/SlotManager$Companion.class +0 -0
  1382. package/android/build/intermediates/runtime_library_classes_dir/debug/bundleLibRuntimeToDirDebug/com/scalebun/rn/ota/SlotManager.class +0 -0
  1383. package/android/build/intermediates/runtime_library_classes_dir/debug/bundleLibRuntimeToDirDebug/com/scalebun/rn/performance/PerformanceModule$Companion.class +0 -0
  1384. package/android/build/intermediates/runtime_library_classes_dir/debug/bundleLibRuntimeToDirDebug/com/scalebun/rn/performance/PerformanceModule$coreListener$1.class +0 -0
  1385. package/android/build/intermediates/runtime_library_classes_dir/debug/bundleLibRuntimeToDirDebug/com/scalebun/rn/performance/PerformanceModule.class +0 -0
  1386. package/android/build/intermediates/runtime_library_classes_dir/debug/bundleLibRuntimeToDirDebug/com/scalebun/rn/performance/PerformanceSpec.class +0 -0
  1387. package/android/build/intermediates/runtime_library_classes_dir/debug/bundleLibRuntimeToDirDebug/com/scalebun/rn/referrer/ScaleBunInstallReferrerModule$Companion.class +0 -0
  1388. package/android/build/intermediates/runtime_library_classes_dir/debug/bundleLibRuntimeToDirDebug/com/scalebun/rn/referrer/ScaleBunInstallReferrerModule$getInstallReferrer$1.class +0 -0
  1389. package/android/build/intermediates/runtime_library_classes_dir/debug/bundleLibRuntimeToDirDebug/com/scalebun/rn/referrer/ScaleBunInstallReferrerModule.class +0 -0
  1390. package/android/build/intermediates/runtime_library_classes_dir/debug/bundleLibRuntimeToDirDebug/com/scalebun/rn/referrer/ScaleBunInstallReferrerSpec.class +0 -0
  1391. package/android/build/intermediates/runtime_library_classes_dir/debug/bundleLibRuntimeToDirDebug/com/scalebun/rn/storage/ScaleBunStorageModule$Companion.class +0 -0
  1392. package/android/build/intermediates/runtime_library_classes_dir/debug/bundleLibRuntimeToDirDebug/com/scalebun/rn/storage/ScaleBunStorageModule.class +0 -0
  1393. package/android/build/intermediates/runtime_library_classes_dir/debug/bundleLibRuntimeToDirDebug/com/scalebun/rn/storage/ScaleBunStorageSpec.class +0 -0
  1394. package/android/build/intermediates/runtime_library_classes_dir/debug/bundleLibRuntimeToDirDebug/com/scalebun/sdk/BuildConfig.class +0 -0
  1395. package/android/build/intermediates/runtime_library_classes_dir/debug/bundleLibRuntimeToDirDebug/com/scalebun/spec/NativeReplaySdkSpec.class +0 -0
  1396. package/android/build/intermediates/runtime_library_classes_dir/debug/bundleLibRuntimeToDirDebug/com/scalebun/spec/NativeScaleBunCrashSpec.class +0 -0
  1397. package/android/build/intermediates/runtime_library_classes_dir/debug/bundleLibRuntimeToDirDebug/com/scalebun/spec/NativeScaleBunInstallReferrerSpec.class +0 -0
  1398. package/android/build/intermediates/runtime_library_classes_dir/debug/bundleLibRuntimeToDirDebug/com/scalebun/spec/NativeScaleBunOtaSpec.class +0 -0
  1399. package/android/build/intermediates/runtime_library_classes_dir/debug/bundleLibRuntimeToDirDebug/com/scalebun/spec/NativeScaleBunPerformanceSpec.class +0 -0
  1400. package/android/build/intermediates/runtime_library_classes_dir/debug/bundleLibRuntimeToDirDebug/com/scalebun/spec/NativeScaleBunProfilerSpec.class +0 -0
  1401. package/android/build/intermediates/runtime_library_classes_dir/debug/bundleLibRuntimeToDirDebug/com/scalebun/spec/NativeScaleBunStorageSpec.class +0 -0
  1402. package/android/build/intermediates/runtime_library_classes_dir/debug/bundleLibRuntimeToDirDebug/com/scalebun/storage/KvFileStore$Companion.class +0 -0
  1403. package/android/build/intermediates/runtime_library_classes_dir/debug/bundleLibRuntimeToDirDebug/com/scalebun/storage/KvFileStore.class +0 -0
  1404. package/android/build/intermediates/runtime_library_classes_jar/debug/bundleLibRuntimeToJarDebug/classes.jar +0 -0
  1405. package/android/build/intermediates/symbol_list_with_package_name/debug/generateDebugRFile/package-aware-r.txt +0 -1
  1406. package/android/build/kotlin/compileDebugKotlin/cacheable/caches-jvm/inputs/source-to-output.tab +0 -0
  1407. package/android/build/kotlin/compileDebugKotlin/cacheable/caches-jvm/inputs/source-to-output.tab.keystream +0 -0
  1408. package/android/build/kotlin/compileDebugKotlin/cacheable/caches-jvm/inputs/source-to-output.tab.keystream.len +0 -0
  1409. package/android/build/kotlin/compileDebugKotlin/cacheable/caches-jvm/inputs/source-to-output.tab.len +0 -0
  1410. package/android/build/kotlin/compileDebugKotlin/cacheable/caches-jvm/inputs/source-to-output.tab.values.at +0 -0
  1411. package/android/build/kotlin/compileDebugKotlin/cacheable/caches-jvm/inputs/source-to-output.tab_i +0 -0
  1412. package/android/build/kotlin/compileDebugKotlin/cacheable/caches-jvm/inputs/source-to-output.tab_i.len +0 -0
  1413. package/android/build/kotlin/compileDebugKotlin/cacheable/caches-jvm/jvm/kotlin/class-attributes.tab +0 -0
  1414. package/android/build/kotlin/compileDebugKotlin/cacheable/caches-jvm/jvm/kotlin/class-attributes.tab.keystream +0 -0
  1415. package/android/build/kotlin/compileDebugKotlin/cacheable/caches-jvm/jvm/kotlin/class-attributes.tab.keystream.len +0 -0
  1416. package/android/build/kotlin/compileDebugKotlin/cacheable/caches-jvm/jvm/kotlin/class-attributes.tab.len +0 -0
  1417. package/android/build/kotlin/compileDebugKotlin/cacheable/caches-jvm/jvm/kotlin/class-attributes.tab.values.at +0 -0
  1418. package/android/build/kotlin/compileDebugKotlin/cacheable/caches-jvm/jvm/kotlin/class-attributes.tab_i +0 -0
  1419. package/android/build/kotlin/compileDebugKotlin/cacheable/caches-jvm/jvm/kotlin/class-attributes.tab_i.len +0 -0
  1420. package/android/build/kotlin/compileDebugKotlin/cacheable/caches-jvm/jvm/kotlin/class-fq-name-to-source.tab +0 -0
  1421. package/android/build/kotlin/compileDebugKotlin/cacheable/caches-jvm/jvm/kotlin/class-fq-name-to-source.tab.keystream +0 -0
  1422. package/android/build/kotlin/compileDebugKotlin/cacheable/caches-jvm/jvm/kotlin/class-fq-name-to-source.tab.keystream.len +0 -0
  1423. package/android/build/kotlin/compileDebugKotlin/cacheable/caches-jvm/jvm/kotlin/class-fq-name-to-source.tab.len +0 -0
  1424. package/android/build/kotlin/compileDebugKotlin/cacheable/caches-jvm/jvm/kotlin/class-fq-name-to-source.tab.values.at +0 -0
  1425. package/android/build/kotlin/compileDebugKotlin/cacheable/caches-jvm/jvm/kotlin/class-fq-name-to-source.tab_i +0 -0
  1426. package/android/build/kotlin/compileDebugKotlin/cacheable/caches-jvm/jvm/kotlin/class-fq-name-to-source.tab_i.len +0 -0
  1427. package/android/build/kotlin/compileDebugKotlin/cacheable/caches-jvm/jvm/kotlin/constants.tab +0 -0
  1428. package/android/build/kotlin/compileDebugKotlin/cacheable/caches-jvm/jvm/kotlin/constants.tab.keystream +0 -0
  1429. package/android/build/kotlin/compileDebugKotlin/cacheable/caches-jvm/jvm/kotlin/constants.tab.keystream.len +0 -0
  1430. package/android/build/kotlin/compileDebugKotlin/cacheable/caches-jvm/jvm/kotlin/constants.tab.len +0 -0
  1431. package/android/build/kotlin/compileDebugKotlin/cacheable/caches-jvm/jvm/kotlin/constants.tab.values.at +0 -0
  1432. package/android/build/kotlin/compileDebugKotlin/cacheable/caches-jvm/jvm/kotlin/constants.tab_i +0 -0
  1433. package/android/build/kotlin/compileDebugKotlin/cacheable/caches-jvm/jvm/kotlin/constants.tab_i.len +0 -0
  1434. package/android/build/kotlin/compileDebugKotlin/cacheable/caches-jvm/jvm/kotlin/internal-name-to-source.tab +0 -0
  1435. package/android/build/kotlin/compileDebugKotlin/cacheable/caches-jvm/jvm/kotlin/internal-name-to-source.tab.keystream +0 -0
  1436. package/android/build/kotlin/compileDebugKotlin/cacheable/caches-jvm/jvm/kotlin/internal-name-to-source.tab.keystream.len +0 -0
  1437. package/android/build/kotlin/compileDebugKotlin/cacheable/caches-jvm/jvm/kotlin/internal-name-to-source.tab.len +0 -0
  1438. package/android/build/kotlin/compileDebugKotlin/cacheable/caches-jvm/jvm/kotlin/internal-name-to-source.tab.values.at +0 -0
  1439. package/android/build/kotlin/compileDebugKotlin/cacheable/caches-jvm/jvm/kotlin/internal-name-to-source.tab_i +0 -0
  1440. package/android/build/kotlin/compileDebugKotlin/cacheable/caches-jvm/jvm/kotlin/internal-name-to-source.tab_i.len +0 -0
  1441. package/android/build/kotlin/compileDebugKotlin/cacheable/caches-jvm/jvm/kotlin/package-parts.tab +0 -0
  1442. package/android/build/kotlin/compileDebugKotlin/cacheable/caches-jvm/jvm/kotlin/package-parts.tab.keystream +0 -0
  1443. package/android/build/kotlin/compileDebugKotlin/cacheable/caches-jvm/jvm/kotlin/package-parts.tab.keystream.len +0 -0
  1444. package/android/build/kotlin/compileDebugKotlin/cacheable/caches-jvm/jvm/kotlin/package-parts.tab.len +0 -0
  1445. package/android/build/kotlin/compileDebugKotlin/cacheable/caches-jvm/jvm/kotlin/package-parts.tab.values.at +0 -0
  1446. package/android/build/kotlin/compileDebugKotlin/cacheable/caches-jvm/jvm/kotlin/package-parts.tab_i +0 -0
  1447. package/android/build/kotlin/compileDebugKotlin/cacheable/caches-jvm/jvm/kotlin/package-parts.tab_i.len +0 -0
  1448. package/android/build/kotlin/compileDebugKotlin/cacheable/caches-jvm/jvm/kotlin/proto.tab +0 -0
  1449. package/android/build/kotlin/compileDebugKotlin/cacheable/caches-jvm/jvm/kotlin/proto.tab.keystream +0 -0
  1450. package/android/build/kotlin/compileDebugKotlin/cacheable/caches-jvm/jvm/kotlin/proto.tab.keystream.len +0 -0
  1451. package/android/build/kotlin/compileDebugKotlin/cacheable/caches-jvm/jvm/kotlin/proto.tab.len +0 -0
  1452. package/android/build/kotlin/compileDebugKotlin/cacheable/caches-jvm/jvm/kotlin/proto.tab.values +0 -0
  1453. package/android/build/kotlin/compileDebugKotlin/cacheable/caches-jvm/jvm/kotlin/proto.tab.values.at +0 -0
  1454. package/android/build/kotlin/compileDebugKotlin/cacheable/caches-jvm/jvm/kotlin/proto.tab.values.s +0 -1
  1455. package/android/build/kotlin/compileDebugKotlin/cacheable/caches-jvm/jvm/kotlin/proto.tab_i +0 -0
  1456. package/android/build/kotlin/compileDebugKotlin/cacheable/caches-jvm/jvm/kotlin/proto.tab_i.len +0 -0
  1457. package/android/build/kotlin/compileDebugKotlin/cacheable/caches-jvm/jvm/kotlin/source-to-classes.tab +0 -0
  1458. package/android/build/kotlin/compileDebugKotlin/cacheable/caches-jvm/jvm/kotlin/source-to-classes.tab.keystream +0 -0
  1459. package/android/build/kotlin/compileDebugKotlin/cacheable/caches-jvm/jvm/kotlin/source-to-classes.tab.keystream.len +0 -0
  1460. package/android/build/kotlin/compileDebugKotlin/cacheable/caches-jvm/jvm/kotlin/source-to-classes.tab.len +0 -0
  1461. package/android/build/kotlin/compileDebugKotlin/cacheable/caches-jvm/jvm/kotlin/source-to-classes.tab.values.at +0 -0
  1462. package/android/build/kotlin/compileDebugKotlin/cacheable/caches-jvm/jvm/kotlin/source-to-classes.tab_i +0 -0
  1463. package/android/build/kotlin/compileDebugKotlin/cacheable/caches-jvm/jvm/kotlin/source-to-classes.tab_i.len +0 -0
  1464. package/android/build/kotlin/compileDebugKotlin/cacheable/caches-jvm/jvm/kotlin/subtypes.tab +0 -0
  1465. package/android/build/kotlin/compileDebugKotlin/cacheable/caches-jvm/jvm/kotlin/subtypes.tab.keystream +0 -0
  1466. package/android/build/kotlin/compileDebugKotlin/cacheable/caches-jvm/jvm/kotlin/subtypes.tab.keystream.len +0 -0
  1467. package/android/build/kotlin/compileDebugKotlin/cacheable/caches-jvm/jvm/kotlin/subtypes.tab.len +0 -0
  1468. package/android/build/kotlin/compileDebugKotlin/cacheable/caches-jvm/jvm/kotlin/subtypes.tab.values.at +0 -0
  1469. package/android/build/kotlin/compileDebugKotlin/cacheable/caches-jvm/jvm/kotlin/subtypes.tab_i +0 -0
  1470. package/android/build/kotlin/compileDebugKotlin/cacheable/caches-jvm/jvm/kotlin/subtypes.tab_i.len +0 -0
  1471. package/android/build/kotlin/compileDebugKotlin/cacheable/caches-jvm/jvm/kotlin/supertypes.tab +0 -0
  1472. package/android/build/kotlin/compileDebugKotlin/cacheable/caches-jvm/jvm/kotlin/supertypes.tab.keystream +0 -0
  1473. package/android/build/kotlin/compileDebugKotlin/cacheable/caches-jvm/jvm/kotlin/supertypes.tab.keystream.len +0 -0
  1474. package/android/build/kotlin/compileDebugKotlin/cacheable/caches-jvm/jvm/kotlin/supertypes.tab.len +0 -0
  1475. package/android/build/kotlin/compileDebugKotlin/cacheable/caches-jvm/jvm/kotlin/supertypes.tab.values.at +0 -0
  1476. package/android/build/kotlin/compileDebugKotlin/cacheable/caches-jvm/jvm/kotlin/supertypes.tab_i +0 -0
  1477. package/android/build/kotlin/compileDebugKotlin/cacheable/caches-jvm/jvm/kotlin/supertypes.tab_i.len +0 -0
  1478. package/android/build/kotlin/compileDebugKotlin/cacheable/caches-jvm/lookups/counters.tab +0 -2
  1479. package/android/build/kotlin/compileDebugKotlin/cacheable/caches-jvm/lookups/file-to-id.tab +0 -0
  1480. package/android/build/kotlin/compileDebugKotlin/cacheable/caches-jvm/lookups/file-to-id.tab.keystream +0 -0
  1481. package/android/build/kotlin/compileDebugKotlin/cacheable/caches-jvm/lookups/file-to-id.tab.keystream.len +0 -0
  1482. package/android/build/kotlin/compileDebugKotlin/cacheable/caches-jvm/lookups/file-to-id.tab.len +0 -0
  1483. package/android/build/kotlin/compileDebugKotlin/cacheable/caches-jvm/lookups/file-to-id.tab.values.at +0 -0
  1484. package/android/build/kotlin/compileDebugKotlin/cacheable/caches-jvm/lookups/file-to-id.tab_i +0 -0
  1485. package/android/build/kotlin/compileDebugKotlin/cacheable/caches-jvm/lookups/file-to-id.tab_i.len +0 -0
  1486. package/android/build/kotlin/compileDebugKotlin/cacheable/caches-jvm/lookups/id-to-file.tab +0 -0
  1487. package/android/build/kotlin/compileDebugKotlin/cacheable/caches-jvm/lookups/id-to-file.tab.keystream +0 -0
  1488. package/android/build/kotlin/compileDebugKotlin/cacheable/caches-jvm/lookups/id-to-file.tab.keystream.len +0 -0
  1489. package/android/build/kotlin/compileDebugKotlin/cacheable/caches-jvm/lookups/id-to-file.tab.len +0 -0
  1490. package/android/build/kotlin/compileDebugKotlin/cacheable/caches-jvm/lookups/id-to-file.tab.values.at +0 -0
  1491. package/android/build/kotlin/compileDebugKotlin/cacheable/caches-jvm/lookups/id-to-file.tab_i +0 -0
  1492. package/android/build/kotlin/compileDebugKotlin/cacheable/caches-jvm/lookups/id-to-file.tab_i.len +0 -0
  1493. package/android/build/kotlin/compileDebugKotlin/cacheable/caches-jvm/lookups/lookups.tab +0 -0
  1494. package/android/build/kotlin/compileDebugKotlin/cacheable/caches-jvm/lookups/lookups.tab.keystream +0 -0
  1495. package/android/build/kotlin/compileDebugKotlin/cacheable/caches-jvm/lookups/lookups.tab.keystream.len +0 -0
  1496. package/android/build/kotlin/compileDebugKotlin/cacheable/caches-jvm/lookups/lookups.tab.len +0 -0
  1497. package/android/build/kotlin/compileDebugKotlin/cacheable/caches-jvm/lookups/lookups.tab.values +0 -0
  1498. package/android/build/kotlin/compileDebugKotlin/cacheable/caches-jvm/lookups/lookups.tab.values.at +0 -0
  1499. package/android/build/kotlin/compileDebugKotlin/cacheable/caches-jvm/lookups/lookups.tab.values.s +0 -1
  1500. package/android/build/kotlin/compileDebugKotlin/cacheable/caches-jvm/lookups/lookups.tab_i +0 -0
  1501. package/android/build/kotlin/compileDebugKotlin/cacheable/caches-jvm/lookups/lookups.tab_i.len +0 -0
  1502. package/android/build/kotlin/compileDebugKotlin/cacheable/last-build.bin +0 -0
  1503. package/android/build/kotlin/compileDebugKotlin/classpath-snapshot/shrunk-classpath-snapshot.bin +0 -0
  1504. package/android/build/kotlin/compileDebugKotlin/local-state/build-history.bin +0 -0
  1505. package/android/build/outputs/logs/manifest-merger-debug-report.txt +0 -25
  1506. package/android/build/tmp/compileDebugJavaWithJavac/previous-compilation-data.bin +0 -0
  1507. package/android/build/tmp/kotlin-classes/debug/META-INF/scalebun_react-native_debug.kotlin_module +0 -0
  1508. package/android/build/tmp/kotlin-classes/debug/com/scalebun/core/crash/CrashStorage.class +0 -0
  1509. package/android/build/tmp/kotlin-classes/debug/com/scalebun/core/crash/NativeCrashHandler$Companion.class +0 -0
  1510. package/android/build/tmp/kotlin-classes/debug/com/scalebun/core/crash/NativeCrashHandler.class +0 -0
  1511. package/android/build/tmp/kotlin-classes/debug/com/scalebun/core/performance/ANRWatchdog$HangInfo.class +0 -0
  1512. package/android/build/tmp/kotlin-classes/debug/com/scalebun/core/performance/ANRWatchdog.class +0 -0
  1513. package/android/build/tmp/kotlin-classes/debug/com/scalebun/core/performance/AppStartCollector$AppStartInfo.class +0 -0
  1514. package/android/build/tmp/kotlin-classes/debug/com/scalebun/core/performance/AppStartCollector$Breakdown.class +0 -0
  1515. package/android/build/tmp/kotlin-classes/debug/com/scalebun/core/performance/AppStartCollector$start$1.class +0 -0
  1516. package/android/build/tmp/kotlin-classes/debug/com/scalebun/core/performance/AppStartCollector.class +0 -0
  1517. package/android/build/tmp/kotlin-classes/debug/com/scalebun/core/performance/FrameMetricsCollector$Companion.class +0 -0
  1518. package/android/build/tmp/kotlin-classes/debug/com/scalebun/core/performance/FrameMetricsCollector$FrameMetricsSnapshot.class +0 -0
  1519. package/android/build/tmp/kotlin-classes/debug/com/scalebun/core/performance/FrameMetricsCollector$start$1.class +0 -0
  1520. package/android/build/tmp/kotlin-classes/debug/com/scalebun/core/performance/FrameMetricsCollector$startChoreographerFallback$1.class +0 -0
  1521. package/android/build/tmp/kotlin-classes/debug/com/scalebun/core/performance/FrameMetricsCollector.class +0 -0
  1522. package/android/build/tmp/kotlin-classes/debug/com/scalebun/core/performance/PerformanceCore$Listener.class +0 -0
  1523. package/android/build/tmp/kotlin-classes/debug/com/scalebun/core/performance/PerformanceCore.class +0 -0
  1524. package/android/build/tmp/kotlin-classes/debug/com/scalebun/profiler/ProfilerModule$Companion.class +0 -0
  1525. package/android/build/tmp/kotlin-classes/debug/com/scalebun/profiler/ProfilerModule.class +0 -0
  1526. package/android/build/tmp/kotlin-classes/debug/com/scalebun/profiler/ProfilerPackage.class +0 -0
  1527. package/android/build/tmp/kotlin-classes/debug/com/scalebun/profiler/ProfilerSpec.class +0 -0
  1528. package/android/build/tmp/kotlin-classes/debug/com/scalebun/profiler/collectors/CpuCollector.class +0 -0
  1529. package/android/build/tmp/kotlin-classes/debug/com/scalebun/profiler/collectors/IncidentDetector.class +0 -0
  1530. package/android/build/tmp/kotlin-classes/debug/com/scalebun/profiler/collectors/MemoryCollector.class +0 -0
  1531. package/android/build/tmp/kotlin-classes/debug/com/scalebun/profiler/collectors/RenderCollector$frameCallback$1.class +0 -0
  1532. package/android/build/tmp/kotlin-classes/debug/com/scalebun/profiler/collectors/RenderCollector.class +0 -0
  1533. package/android/build/tmp/kotlin-classes/debug/com/scalebun/profiler/collectors/SamplerScheduler.class +0 -0
  1534. package/android/build/tmp/kotlin-classes/debug/com/scalebun/profiler/collectors/SamplerSchedulerKt.class +0 -0
  1535. package/android/build/tmp/kotlin-classes/debug/com/scalebun/profiler/collectors/ThreadCollector$WhenMappings.class +0 -0
  1536. package/android/build/tmp/kotlin-classes/debug/com/scalebun/profiler/collectors/ThreadCollector.class +0 -0
  1537. package/android/build/tmp/kotlin-classes/debug/com/scalebun/replaysdk/ReplaySdkModule$Companion.class +0 -0
  1538. package/android/build/tmp/kotlin-classes/debug/com/scalebun/replaysdk/ReplaySdkModule$registerConnectivity$cb$1.class +0 -0
  1539. package/android/build/tmp/kotlin-classes/debug/com/scalebun/replaysdk/ReplaySdkModule.class +0 -0
  1540. package/android/build/tmp/kotlin-classes/debug/com/scalebun/replaysdk/ReplaySdkPackage.class +0 -0
  1541. package/android/build/tmp/kotlin-classes/debug/com/scalebun/replaysdk/ReplaySdkSpec.class +0 -0
  1542. package/android/build/tmp/kotlin-classes/debug/com/scalebun/replaysdk/capture/CaptureReason$Companion.class +0 -0
  1543. package/android/build/tmp/kotlin-classes/debug/com/scalebun/replaysdk/capture/CaptureReason.class +0 -0
  1544. package/android/build/tmp/kotlin-classes/debug/com/scalebun/replaysdk/capture/FrameCaptureManager$startFrequencyTimer$1.class +0 -0
  1545. package/android/build/tmp/kotlin-classes/debug/com/scalebun/replaysdk/capture/FrameCaptureManager.class +0 -0
  1546. package/android/build/tmp/kotlin-classes/debug/com/scalebun/replaysdk/capture/FrameCaptureScheduler$Companion.class +0 -0
  1547. package/android/build/tmp/kotlin-classes/debug/com/scalebun/replaysdk/capture/FrameCaptureScheduler$FrameRequest.class +0 -0
  1548. package/android/build/tmp/kotlin-classes/debug/com/scalebun/replaysdk/capture/FrameCaptureScheduler.class +0 -0
  1549. package/android/build/tmp/kotlin-classes/debug/com/scalebun/replaysdk/capture/UiStabilityDetector$Companion.class +0 -0
  1550. package/android/build/tmp/kotlin-classes/debug/com/scalebun/replaysdk/capture/UiStabilityDetector$SettleWatch.class +0 -0
  1551. package/android/build/tmp/kotlin-classes/debug/com/scalebun/replaysdk/capture/UiStabilityDetector$StabilityWatch.class +0 -0
  1552. package/android/build/tmp/kotlin-classes/debug/com/scalebun/replaysdk/capture/UiStabilityDetector.class +0 -0
  1553. package/android/build/tmp/kotlin-classes/debug/com/scalebun/replaysdk/core/CaptureMode$Companion.class +0 -0
  1554. package/android/build/tmp/kotlin-classes/debug/com/scalebun/replaysdk/core/CaptureMode.class +0 -0
  1555. package/android/build/tmp/kotlin-classes/debug/com/scalebun/replaysdk/core/ReplayConfig$Companion.class +0 -0
  1556. package/android/build/tmp/kotlin-classes/debug/com/scalebun/replaysdk/core/ReplayConfig.class +0 -0
  1557. package/android/build/tmp/kotlin-classes/debug/com/scalebun/replaysdk/core/ReplayLogger.class +0 -0
  1558. package/android/build/tmp/kotlin-classes/debug/com/scalebun/replaysdk/core/ScreenshotQuality$Companion.class +0 -0
  1559. package/android/build/tmp/kotlin-classes/debug/com/scalebun/replaysdk/core/ScreenshotQuality.class +0 -0
  1560. package/android/build/tmp/kotlin-classes/debug/com/scalebun/replaysdk/core/SessionIdGenerator.class +0 -0
  1561. package/android/build/tmp/kotlin-classes/debug/com/scalebun/replaysdk/core/SessionState.class +0 -0
  1562. package/android/build/tmp/kotlin-classes/debug/com/scalebun/replaysdk/models/ReplayFrame.class +0 -0
  1563. package/android/build/tmp/kotlin-classes/debug/com/scalebun/replaysdk/models/ReplaySession.class +0 -0
  1564. package/android/build/tmp/kotlin-classes/debug/com/scalebun/replaysdk/models/TimelineEvent.class +0 -0
  1565. package/android/build/tmp/kotlin-classes/debug/com/scalebun/replaysdk/outbox/NativeOutbox$Companion.class +0 -0
  1566. package/android/build/tmp/kotlin-classes/debug/com/scalebun/replaysdk/outbox/NativeOutbox$enforceLimits$lambda$37$$inlined$sortedBy$1.class +0 -0
  1567. package/android/build/tmp/kotlin-classes/debug/com/scalebun/replaysdk/outbox/NativeOutbox.class +0 -0
  1568. package/android/build/tmp/kotlin-classes/debug/com/scalebun/replaysdk/outbox/OutboxUploader$NetResult$NetworkError.class +0 -0
  1569. package/android/build/tmp/kotlin-classes/debug/com/scalebun/replaysdk/outbox/OutboxUploader$NetResult$Response.class +0 -0
  1570. package/android/build/tmp/kotlin-classes/debug/com/scalebun/replaysdk/outbox/OutboxUploader$NetResult.class +0 -0
  1571. package/android/build/tmp/kotlin-classes/debug/com/scalebun/replaysdk/outbox/OutboxUploader$Outcome.class +0 -0
  1572. package/android/build/tmp/kotlin-classes/debug/com/scalebun/replaysdk/outbox/OutboxUploader$WhenMappings.class +0 -0
  1573. package/android/build/tmp/kotlin-classes/debug/com/scalebun/replaysdk/outbox/OutboxUploader.class +0 -0
  1574. package/android/build/tmp/kotlin-classes/debug/com/scalebun/replaysdk/privacy/PrivacyMaskProcessor.class +0 -0
  1575. package/android/build/tmp/kotlin-classes/debug/com/scalebun/replaysdk/session/SessionManager.class +0 -0
  1576. package/android/build/tmp/kotlin-classes/debug/com/scalebun/replaysdk/storage/ReplayStorage$enforceStorageLimit$$inlined$sortedBy$1.class +0 -0
  1577. package/android/build/tmp/kotlin-classes/debug/com/scalebun/replaysdk/storage/ReplayStorage.class +0 -0
  1578. package/android/build/tmp/kotlin-classes/debug/com/scalebun/replaysdk/timeline/TimelineCollector.class +0 -0
  1579. package/android/build/tmp/kotlin-classes/debug/com/scalebun/replaysdk/tracking/DialogTouchObserver$start$runnable$1.class +0 -0
  1580. package/android/build/tmp/kotlin-classes/debug/com/scalebun/replaysdk/tracking/DialogTouchObserver.class +0 -0
  1581. package/android/build/tmp/kotlin-classes/debug/com/scalebun/replaysdk/tracking/InteractionTracker.class +0 -0
  1582. package/android/build/tmp/kotlin-classes/debug/com/scalebun/replaysdk/tracking/NativeTouchInterceptor.class +0 -0
  1583. package/android/build/tmp/kotlin-classes/debug/com/scalebun/replaysdk/tracking/ScreenTracker.class +0 -0
  1584. package/android/build/tmp/kotlin-classes/debug/com/scalebun/replaysdk/transport/ReplayTransport$UploadResult.class +0 -0
  1585. package/android/build/tmp/kotlin-classes/debug/com/scalebun/replaysdk/transport/ReplayTransport$upload$2.class +0 -0
  1586. package/android/build/tmp/kotlin-classes/debug/com/scalebun/replaysdk/transport/ReplayTransport.class +0 -0
  1587. package/android/build/tmp/kotlin-classes/debug/com/scalebun/replaysdk/voice/VoiceRecorder$Companion.class +0 -0
  1588. package/android/build/tmp/kotlin-classes/debug/com/scalebun/replaysdk/voice/VoiceRecorder$Result.class +0 -0
  1589. package/android/build/tmp/kotlin-classes/debug/com/scalebun/replaysdk/voice/VoiceRecorder.class +0 -0
  1590. package/android/build/tmp/kotlin-classes/debug/com/scalebun/replaysdk/voice/VoiceTranscriber$TranscriptResult.class +0 -0
  1591. package/android/build/tmp/kotlin-classes/debug/com/scalebun/replaysdk/voice/VoiceTranscriber$listener$1.class +0 -0
  1592. package/android/build/tmp/kotlin-classes/debug/com/scalebun/replaysdk/voice/VoiceTranscriber.class +0 -0
  1593. package/android/build/tmp/kotlin-classes/debug/com/scalebun/rn/ScaleBunPackage$Companion.class +0 -0
  1594. package/android/build/tmp/kotlin-classes/debug/com/scalebun/rn/ScaleBunPackage.class +0 -0
  1595. package/android/build/tmp/kotlin-classes/debug/com/scalebun/rn/crash/ScaleBunCrashModule$Companion.class +0 -0
  1596. package/android/build/tmp/kotlin-classes/debug/com/scalebun/rn/crash/ScaleBunCrashModule.class +0 -0
  1597. package/android/build/tmp/kotlin-classes/debug/com/scalebun/rn/crash/ScaleBunCrashPackage.class +0 -0
  1598. package/android/build/tmp/kotlin-classes/debug/com/scalebun/rn/crash/ScaleBunCrashSpec.class +0 -0
  1599. package/android/build/tmp/kotlin-classes/debug/com/scalebun/rn/engage/ScaleBunEngageModule$Companion.class +0 -0
  1600. package/android/build/tmp/kotlin-classes/debug/com/scalebun/rn/engage/ScaleBunEngageModule$WindowInsetEdges.class +0 -0
  1601. package/android/build/tmp/kotlin-classes/debug/com/scalebun/rn/engage/ScaleBunEngageModule$shakeListener$1.class +0 -0
  1602. package/android/build/tmp/kotlin-classes/debug/com/scalebun/rn/engage/ScaleBunEngageModule.class +0 -0
  1603. package/android/build/tmp/kotlin-classes/debug/com/scalebun/rn/engage/ScaleBunEngagePackage.class +0 -0
  1604. package/android/build/tmp/kotlin-classes/debug/com/scalebun/rn/engage/ScaleBunNotificationPresenter.class +0 -0
  1605. package/android/build/tmp/kotlin-classes/debug/com/scalebun/rn/ota/ScaleBunOtaModule$Companion.class +0 -0
  1606. package/android/build/tmp/kotlin-classes/debug/com/scalebun/rn/ota/ScaleBunOtaModule.class +0 -0
  1607. package/android/build/tmp/kotlin-classes/debug/com/scalebun/rn/ota/ScaleBunOtaSpec.class +0 -0
  1608. package/android/build/tmp/kotlin-classes/debug/com/scalebun/rn/ota/SlotManager$Companion.class +0 -0
  1609. package/android/build/tmp/kotlin-classes/debug/com/scalebun/rn/ota/SlotManager.class +0 -0
  1610. package/android/build/tmp/kotlin-classes/debug/com/scalebun/rn/performance/PerformanceModule$Companion.class +0 -0
  1611. package/android/build/tmp/kotlin-classes/debug/com/scalebun/rn/performance/PerformanceModule$coreListener$1.class +0 -0
  1612. package/android/build/tmp/kotlin-classes/debug/com/scalebun/rn/performance/PerformanceModule.class +0 -0
  1613. package/android/build/tmp/kotlin-classes/debug/com/scalebun/rn/performance/PerformanceSpec.class +0 -0
  1614. package/android/build/tmp/kotlin-classes/debug/com/scalebun/rn/referrer/ScaleBunInstallReferrerModule$Companion.class +0 -0
  1615. package/android/build/tmp/kotlin-classes/debug/com/scalebun/rn/referrer/ScaleBunInstallReferrerModule$getInstallReferrer$1.class +0 -0
  1616. package/android/build/tmp/kotlin-classes/debug/com/scalebun/rn/referrer/ScaleBunInstallReferrerModule.class +0 -0
  1617. package/android/build/tmp/kotlin-classes/debug/com/scalebun/rn/referrer/ScaleBunInstallReferrerSpec.class +0 -0
  1618. package/android/build/tmp/kotlin-classes/debug/com/scalebun/rn/storage/ScaleBunStorageModule$Companion.class +0 -0
  1619. package/android/build/tmp/kotlin-classes/debug/com/scalebun/rn/storage/ScaleBunStorageModule.class +0 -0
  1620. package/android/build/tmp/kotlin-classes/debug/com/scalebun/rn/storage/ScaleBunStorageSpec.class +0 -0
  1621. package/android/build/tmp/kotlin-classes/debug/com/scalebun/storage/KvFileStore$Companion.class +0 -0
  1622. package/android/build/tmp/kotlin-classes/debug/com/scalebun/storage/KvFileStore.class +0 -0
@@ -1,323 +1,894 @@
1
- import { DevSettings, NativeModules, Platform } from 'react-native';
2
- import { logger } from '../../core/logger/internalLogger';
3
- import { noThrow } from '../../core/lifecycle/crashSafe';
4
- import NativeScaleBunOta from '../../specs/NativeScaleBunOta';
5
- import type { OtaCheckRequest, OtaCheckResponse, OtaBundlePayload } from './OtaTypes';
6
- import { otaEventEmitter } from './OtaEventEmitter';
7
-
8
- export interface SyncResult {
9
- status: 'UP_TO_DATE' | 'UPDATE_INSTALLED' | 'ROLLED_BACK' | 'ERROR';
10
- bundle?: OtaBundlePayload;
11
- error?: string;
12
- /** True when the server-side release has isMandatory set */
13
- isMandatory?: boolean;
14
- }
15
-
16
- /** Boot-guard configuration */
17
- export interface BootGuardConfig {
18
- /**
19
- * Milliseconds the app must run without crashing after an OTA update
20
- * before the boot-guard marker is cleared. Default: 10_000 (10s).
21
- */
22
- healthyAfterMs?: number;
23
- /**
24
- * Maximum consecutive boot-guard reverts before the SDK stops trying
25
- * OTA bundles and pins to the factory bundle. Default: 2.
26
- */
27
- maxRevertAttempts?: number;
28
- }
29
-
30
- const DEFAULT_HEALTHY_AFTER_MS = 10_000;
31
- const DEFAULT_MAX_REVERT_ATTEMPTS = 2;
32
-
33
- export class OtaOrchestrator {
34
- private enabled = false;
35
- private currentBundle: OtaBundlePayload | null = null;
36
- private isRestartRequiredState = false;
37
- private healthyTimer: ReturnType<typeof setTimeout> | null = null;
38
- private bootGuardConfig: BootGuardConfig = {};
39
-
40
- /**
41
- * Initialize the orchestrator. Checks for boot-guard recovery state.
42
- */
43
- init(config?: BootGuardConfig): void {
44
- noThrow(() => {
45
- if (!NativeScaleBunOta) {
46
- logger.warn('[OTA] NativeScaleBunOta module unavailable — OTA disabled');
47
- return;
48
- }
49
- this.enabled = true;
50
- this.bootGuardConfig = config ?? {};
51
- logger.debug('[OTA] Orchestrator initialized successfully');
52
-
53
- // Check if the boot guard fired on this launch (native reverted before JS loaded)
54
- this.checkBootGuardRecovery();
55
- });
56
- }
57
-
58
- /**
59
- * Sprint 5 (S5-NAT-1): Check if the native boot guard reverted us on this cold start.
60
- * If getSlotState() shows bootMarkerPresent=false but we have a 'previous' slot
61
- * and no 'current' OTA bundle, the native layer already reverted.
62
- */
63
- private checkBootGuardRecovery(): void {
64
- if (!NativeScaleBunOta) return;
65
-
66
- try {
67
- const stateJson = NativeScaleBunOta.getSlotState();
68
- const state = JSON.parse(stateJson);
69
-
70
- if (state.bootGuardReverted) {
71
- logger.warn('[OTA] Boot guard fired app was reverted to previous bundle');
72
- otaEventEmitter.emitSimple('AUTO_ROLLBACK', state.previous?.bundleId ?? 'unknown', {
73
- reason: 'boot_guard_crash_loop_detected',
74
- });
75
- }
76
- } catch {
77
- // Slot state parsing failed non-fatal
78
- }
79
- }
80
-
81
- isEnabled(): boolean {
82
- return this.enabled;
83
- }
84
-
85
- isRestartRequired(): boolean {
86
- return this.isRestartRequiredState;
87
- }
88
-
89
- /**
90
- * Perform an OTA check against the backend endpoint.
91
- */
92
- async checkForUpdate(requestParams: {
93
- apiUrl: string;
94
- clientKey: string;
95
- appVersion: string;
96
- installationId: string;
97
- channelName?: string;
98
- }): Promise<OtaCheckResponse> {
99
- try {
100
- const payload: OtaCheckRequest = {
101
- appVersion: requestParams.appVersion,
102
- platform: Platform.OS === 'ios' ? 'ios' : 'android',
103
- installationId: requestParams.installationId,
104
- currentBundleId: this.currentBundle?.id,
105
- currentBundleHash: this.currentBundle?.sha256,
106
- };
107
-
108
- const url = `${requestParams.apiUrl.replace(/\/+$/, '')}/sdk/ota/check`;
109
- const res = await fetch(url, {
110
- method: 'POST',
111
- headers: {
112
- 'Content-Type': 'application/json',
113
- 'x-scalebun-client-key': requestParams.clientKey,
114
- },
115
- body: JSON.stringify(payload),
116
- });
117
-
118
- if (!res.ok) {
119
- throw new Error(`OTA check failed with status ${res.status}`);
120
- }
121
-
122
- const data: OtaCheckResponse = await res.json();
123
- return data;
124
- } catch (err: any) {
125
- logger.error(`[OTA] checkForUpdate failed: ${err.message}`);
126
- return { action: 'NONE' };
127
- }
128
- }
129
-
130
- /**
131
- * Downloads, stage, and apply an update in one step.
132
- * Sprint 5: emits lifecycle events + starts boot-guard heartbeat.
133
- */
134
- async sync(params: {
135
- apiUrl: string;
136
- clientKey: string;
137
- appVersion: string;
138
- installationId: string;
139
- autoRestart?: boolean;
140
- }): Promise<SyncResult> {
141
- try {
142
- if (!this.enabled || !NativeScaleBunOta) {
143
- return { status: 'ERROR', error: 'OTA native module disabled or missing' };
144
- }
145
-
146
- logger.debug('[OTA] Sync started…');
147
- const checkRes = await this.checkForUpdate(params);
148
-
149
- if (checkRes.action === 'NONE') {
150
- logger.debug('[OTA] App is up to date');
151
- // If we booted from an OTA bundle and it's healthy, clear the boot guard
152
- this.startBootGuardHeartbeat();
153
- return { status: 'UP_TO_DATE' };
154
- }
155
-
156
- // Handle server-initiated rollback (Sprint 4)
157
- if (checkRes.action === 'ROLLBACK') {
158
- logger.warn('[OTA] Server requested ROLLBACK — reverting to previous bundle');
159
- otaEventEmitter.emitSimple('MANUAL_ROLLBACK', this.currentBundle?.id ?? 'unknown');
160
- const reverted = await NativeScaleBunOta.revertToPrevious();
161
- if (reverted) {
162
- this.currentBundle = null;
163
- this.isRestartRequiredState = true;
164
- if (params.autoRestart) {
165
- this.restart();
166
- }
167
- return { status: 'ROLLED_BACK' };
168
- }
169
- return { status: 'ERROR', error: 'Native rollback failed' };
170
- }
171
-
172
- if (!checkRes.bundle) {
173
- return { status: 'UP_TO_DATE' };
174
- }
175
-
176
- const bundle = checkRes.bundle;
177
- let patchUsed = false;
178
-
179
- // ── DOWNLOAD ─────────────────────────────────────────────────────────
180
- otaEventEmitter.emitSimple('DOWNLOAD_STARTED', bundle.id, { version: bundle.version });
181
- const downloadStart = Date.now();
182
- logger.debug(`[OTA] Downloading update v${bundle.version}…`);
183
-
184
- let staged = false;
185
-
186
- // Sprint 7: Try patch first if offered, fall back to full bundle
187
- if (bundle.patch && NativeScaleBunOta.stagePatch) {
188
- logger.debug(
189
- `[OTA] Patch available (${(bundle.patch.size / 1024).toFixed(0)} KB vs ` +
190
- `${(bundle.size / 1024).toFixed(0)} KB full) — trying patch…`,
191
- );
192
- try {
193
- staged = await NativeScaleBunOta.stagePatch(
194
- bundle.patch.url,
195
- bundle.patch.sha256,
196
- bundle.sha256, // expected full-bundle hash after patching
197
- );
198
- if (staged) {
199
- patchUsed = true;
200
- logger.debug('[OTA] Patch applied successfully');
201
- } else {
202
- logger.warn('[OTA] Patch staging returned false falling back to full bundle');
203
- }
204
- } catch (patchErr: any) {
205
- logger.warn(`[OTA] Patch staging failed: ${patchErr.message} falling back to full bundle`);
206
- }
207
- }
208
-
209
- // Full-bundle fallback (or primary path when no patch is available)
210
- if (!staged) {
211
- staged = await NativeScaleBunOta.stageBundle(bundle.url, bundle.sha256);
212
- }
213
-
214
- if (!staged) {
215
- logger.error('[OTA] Staging bundle failed');
216
- otaEventEmitter.emitSimple('APPLY_FAILED', bundle.id, {
217
- error: 'Staging failed — SHA-256 mismatch or download error',
218
- version: bundle.version,
219
- });
220
- return { status: 'ERROR', error: 'Staging bundle failed', bundle };
221
- }
222
-
223
- const downloadDuration = Date.now() - downloadStart;
224
- otaEventEmitter.emitSimple('DOWNLOAD_COMPLETE', bundle.id, {
225
- version: bundle.version,
226
- durationMs: downloadDuration,
227
- patchUsed,
228
- });
229
-
230
- // ── APPLY ────────────────────────────────────────────────────────────
231
- // 2. Apply update atomically (next→current, current→previous, sets boot marker)
232
- const applied = await NativeScaleBunOta.applyUpdate();
233
- if (!applied) {
234
- logger.error('[OTA] Applying update failed');
235
- otaEventEmitter.emitSimple('APPLY_FAILED', bundle.id, {
236
- error: 'Atomic slot swap failed',
237
- version: bundle.version,
238
- });
239
- return { status: 'ERROR', error: 'Applying update failed', bundle };
240
- }
241
-
242
- this.currentBundle = bundle;
243
- this.isRestartRequiredState = true;
244
-
245
- otaEventEmitter.emitSimple('INSTALLED', bundle.id, { version: bundle.version });
246
- logger.debug(`[OTA] Update v${bundle.version} installed successfully!`);
247
-
248
- // Flush telemetry events before restart
249
- otaEventEmitter.flush();
250
-
251
- if (params.autoRestart) {
252
- this.restart();
253
- }
254
-
255
- return {
256
- status: 'UPDATE_INSTALLED',
257
- bundle,
258
- isMandatory: bundle.isMandatory,
259
- };
260
- } catch (err: any) {
261
- logger.error(`[OTA] Sync error: ${err.message}`);
262
- return { status: 'ERROR', error: err.message ?? 'Unexpected sync failure' };
263
- }
264
- }
265
-
266
- /**
267
- * Sprint 5 (S5-NAT-1): Boot-guard heartbeat.
268
- *
269
- * After booting from an OTA bundle, start a timer. If the app survives
270
- * `healthyAfterMs` without crashing, call `markHealthy()` to clear the
271
- * native boot-guard marker. If JS crashes before the timer fires, the
272
- * marker stays set and native code reverts on next cold start.
273
- */
274
- private startBootGuardHeartbeat(): void {
275
- if (!NativeScaleBunOta) return;
276
-
277
- // Cancel any existing timer
278
- if (this.healthyTimer) {
279
- clearTimeout(this.healthyTimer);
280
- this.healthyTimer = null;
281
- }
282
-
283
- try {
284
- const stateJson = NativeScaleBunOta.getSlotState();
285
- const state = JSON.parse(stateJson);
286
-
287
- // Only run the heartbeat if boot-guard marker is present
288
- // (meaning we're running from a freshly-applied OTA bundle)
289
- if (!state.bootMarkerPresent) {
290
- return;
291
- }
292
-
293
- const healthyMs = this.bootGuardConfig.healthyAfterMs ?? DEFAULT_HEALTHY_AFTER_MS;
294
- logger.debug(`[OTA] Boot guard active — marking healthy after ${healthyMs}ms`);
295
-
296
- this.healthyTimer = setTimeout(() => {
297
- noThrow(() => {
298
- NativeScaleBunOta?.markHealthy();
299
- logger.info('[OTA] Boot guard cleared bundle marked healthy ✓');
300
- this.healthyTimer = null;
301
- });
302
- }, healthyMs);
303
- } catch {
304
- // State parsing failed non-fatal, don't block
305
- }
306
- }
307
-
308
- /**
309
- * Reload the JS app bundle to apply the new update immediately.
310
- */
311
- restart(): void {
312
- noThrow(() => {
313
- logger.info('[OTA] Triggering app restart…');
314
- if (DevSettings && typeof DevSettings.reload === 'function') {
315
- DevSettings.reload();
316
- } else if (NativeModules.RNReload) {
317
- NativeModules.RNReload.reload();
318
- }
319
- });
320
- }
321
- }
322
-
323
- export const otaOrchestrator = new OtaOrchestrator();
1
+ import {
2
+ AppState,
3
+ DeviceEventEmitter,
4
+ DevSettings,
5
+ NativeEventEmitter,
6
+ NativeModules,
7
+ Platform,
8
+ } from 'react-native';
9
+ import { logger } from '../../core/logger/internalLogger';
10
+ import { noThrow } from '../../core/lifecycle/crashSafe';
11
+ import NativeScaleBunOta from '../../specs/NativeScaleBunOta';
12
+ import type { OtaCheckRequest, OtaCheckResponse, OtaBundlePayload } from './OtaTypes';
13
+ import { otaEventEmitter } from './OtaEventEmitter';
14
+ import { verifyBundleSignature, type SignatureConfig } from './signature';
15
+ import { detectOtaEnvironment, type OtaEnvironment } from './environment';
16
+ import { retryWithBackoff, isRetryableNetworkError, HttpStatusError } from './retry';
17
+ import { createStorageBackend, type StorageBackend } from '../../storage/StorageBackend';
18
+
19
+ /**
20
+ * Identity marker injected into the bundle by `scalebun ota publish` before
21
+ * Hermes compilation. Lets the SDK prove that the bundle it *installed* is the
22
+ * bundle actually *running* — see `verifyRunningBundleIdentity`.
23
+ */
24
+ function readRunningBundleMarker(): string | null {
25
+ try {
26
+ const id = (globalThis as unknown as { __SCALEBUN_OTA_ID__?: string }).__SCALEBUN_OTA_ID__;
27
+ return typeof id === 'string' && id.length > 0 ? id : null;
28
+ } catch {
29
+ return null;
30
+ }
31
+ }
32
+
33
+ /**
34
+ * Download progress: native → JS → (hook + backend live tracker).
35
+ *
36
+ * Both native downloaders emit throttled `ScaleBunOtaProgress` ticks — Android
37
+ * over `RCTDeviceEventEmitter`, iOS via the `ScaleBunOtaEvents` RCTEventEmitter.
38
+ * This subscribes for the duration of one download. Until this existed, the
39
+ * hook's `downloadProgress` and the backend's `/sdk/ota/progress` +
40
+ * live-downloads dashboard were declared on both ends and connected by
41
+ * NOTHING the tracker had never received a single real row.
42
+ */
43
+ interface NativeProgressTick {
44
+ bytesRead: number;
45
+ /** -1 when the server sent no usable length (chunked / gzip). */
46
+ totalBytes: number;
47
+ }
48
+
49
+ function subscribeNativeProgress(
50
+ onTick: (tick: NativeProgressTick) => void,
51
+ ): () => void {
52
+ try {
53
+ if (Platform.OS === 'ios') {
54
+ const eventsModule = NativeModules.ScaleBunOtaEvents;
55
+ if (!eventsModule) return () => {};
56
+ const emitter = new NativeEventEmitter(eventsModule);
57
+ const sub = emitter.addListener('ScaleBunOtaProgress', onTick);
58
+ return () => sub.remove();
59
+ }
60
+ const sub = DeviceEventEmitter.addListener('ScaleBunOtaProgress', onTick);
61
+ return () => sub.remove();
62
+ } catch {
63
+ return () => {};
64
+ }
65
+ }
66
+
67
+ /** POST at most once per this interval; first and terminal ticks always go. */
68
+ const PROGRESS_POST_INTERVAL_MS = 1_000;
69
+
70
+ /**
71
+ * Deliver queued OTA lifecycle events to the backend's batch endpoint.
72
+ *
73
+ * ── Why the orchestrator owns this ──────────────────────────────────────────
74
+ *
75
+ * `otaEventEmitter.setFlushCallback` documents itself as "called by the SDK
76
+ * core to wire into the existing batch transport" — and nothing, anywhere,
77
+ * ever called it. `flush()` drained the queue into a null callback, so every
78
+ * OTA event the real SDK ever emitted was silently discarded in-process.
79
+ * All 129 ota_events rows in the dev database came from the test app's
80
+ * SIMULATOR; the funnel, adoption charts, and guard thresholds had never seen
81
+ * one byte of real-device telemetry.
82
+ *
83
+ * Owning delivery here (with the params sync() already has) instead of relying
84
+ * on bootstrap wiring means OTA telemetry works in every integration shape —
85
+ * full SDK, standalone orchestrator, CodePush shim — because the component
86
+ * that EMITS the events is the component that delivers them.
87
+ */
88
+ async function deliverOtaEvents(params: {
89
+ apiUrl: string;
90
+ clientKey: string;
91
+ appVersion: string;
92
+ installationId: string;
93
+ }): Promise<void> {
94
+ const events = otaEventEmitter.flush();
95
+ if (!events.length) return;
96
+
97
+ const items = events.map((e) => ({
98
+ kind: 'ota_event' as const,
99
+ type: e.type,
100
+ bundleId: e.bundleId,
101
+ installationId: params.installationId,
102
+ platform: Platform.OS === 'ios' ? 'ios' : 'android',
103
+ appVersion: params.appVersion,
104
+ durationMs: e.durationMs,
105
+ errorCode: e.error ?? e.reason,
106
+ patchUsed: e.patchUsed,
107
+ timestamp: e.timestamp,
108
+ }));
109
+
110
+ try {
111
+ const base = params.apiUrl.replace(/\/+$/, '');
112
+ // The batch lane is session-scoped for replay items; OTA rows carry their
113
+ // own installationId and ignore the session, so a synthetic id is correct.
114
+ const res = await fetch(
115
+ `${base}/ingestion/sessions/ota-${params.installationId}/batch`,
116
+ {
117
+ method: 'POST',
118
+ headers: {
119
+ 'Content-Type': 'application/json',
120
+ 'x-scalebun-client-key': params.clientKey,
121
+ },
122
+ body: JSON.stringify({ items }),
123
+ },
124
+ );
125
+ if (!res.ok) throw new Error(`HTTP ${res.status}`);
126
+ logger.debug(`[OTA] Delivered ${items.length} telemetry event(s)`);
127
+ } catch (err: any) {
128
+ // Failed delivery must not fail the update — but the events must not be
129
+ // lost either: requeue so the next sync retries them.
130
+ for (const e of events) otaEventEmitter.emit(e);
131
+ logger.debug(`[OTA] Telemetry delivery failed (will retry next sync): ${err?.message}`);
132
+ }
133
+ }
134
+
135
+ export interface SyncResult {
136
+ status: 'UP_TO_DATE' | 'UPDATE_INSTALLED' | 'ROLLED_BACK' | 'ERROR';
137
+ bundle?: OtaBundlePayload;
138
+ error?: string;
139
+ /** True when the server-side release has isMandatory set */
140
+ isMandatory?: boolean;
141
+ }
142
+
143
+ /** Boot-guard configuration */
144
+ export interface BootGuardConfig {
145
+ /**
146
+ * Milliseconds the app must run without crashing after an OTA update
147
+ * before the boot-guard marker is cleared. Default: 10_000 (10s).
148
+ */
149
+ healthyAfterMs?: number;
150
+ /**
151
+ * Maximum consecutive boot-guard reverts before the SDK stops trying
152
+ * OTA bundles and pins to the factory bundle. Default: 2.
153
+ */
154
+ maxRevertAttempts?: number;
155
+ }
156
+
157
+ const DEFAULT_HEALTHY_AFTER_MS = 10_000;
158
+ const DEFAULT_MAX_REVERT_ATTEMPTS = 2;
159
+
160
+ export class OtaOrchestrator {
161
+ private enabled = false;
162
+ private currentBundle: OtaBundlePayload | null = null;
163
+ private isRestartRequiredState = false;
164
+ private healthyTimer: ReturnType<typeof setTimeout> | null = null;
165
+ private bootGuardConfig: BootGuardConfig = {};
166
+ private signatureConfig: SignatureConfig | undefined;
167
+ private environment: OtaEnvironment | null = null;
168
+ /** One-time boot checks have run in this process (init is idempotent). */
169
+ private initialized = false;
170
+ private storageBackend: StorageBackend | null = null;
171
+
172
+ /**
173
+ * Initialize the orchestrator. Checks for boot-guard recovery state.
174
+ *
175
+ * `signature` is optional: an app that has not adopted signing keeps working
176
+ * on SHA-256 integrity alone. Once a public key IS configured, a bundle that
177
+ * cannot be verified is refused rather than installed (OTA-03).
178
+ */
179
+ init(config?: BootGuardConfig & { signature?: SignatureConfig }): void {
180
+ noThrow(() => {
181
+ // Idempotent: init() runs its one-time checks ONCE per process. Found
182
+ // live — a host that calls init() again after installing an update (any
183
+ // retry/re-entry path does this) re-runs the identity verification in a
184
+ // process whose running JS legitimately predates the install, producing
185
+ // a false "INSTALL DID NOT TAKE EFFECT" alarm. The boot-time checks are
186
+ // only meaningful in a fresh process; a second init() must not repeat
187
+ // them. Config is still refreshed so late signature setup works.
188
+ if (this.initialized) {
189
+ this.bootGuardConfig = config ?? this.bootGuardConfig;
190
+ this.signatureConfig = config?.signature ?? this.signatureConfig;
191
+ return;
192
+ }
193
+
194
+ if (!NativeScaleBunOta) {
195
+ logger.warn('[OTA] NativeScaleBunOta module unavailable — OTA disabled');
196
+ return;
197
+ }
198
+
199
+ // ── RUNTIME GATE ─────────────────────────────────────────────────────
200
+ // Refuse to run on a runtime where the install would silently no-op.
201
+ // See environment.ts: bridgeless below RN 0.76.1 ignores
202
+ // getJSBundleFile() entirely, so a bundle installs, reports INSTALLED,
203
+ // and the app keeps running the APK asset. Staying loudly disabled is
204
+ // strictly better than reporting success that never happened — those
205
+ // false INSTALLED rows feed adoption metrics and guard thresholds.
206
+ this.environment = detectOtaEnvironment();
207
+ if (!this.environment.supported) {
208
+ logger.error(`[OTA] DISABLED — ${this.environment.blockReason}`);
209
+ this.enabled = false;
210
+ return;
211
+ }
212
+ if (this.environment.bridgeless && !this.environment.rnVersion) {
213
+ logger.warn(
214
+ '[OTA] Running bridgeless but the React Native version could not be determined. ' +
215
+ 'If this app is below RN 0.76.1, OTA updates will install and never load.',
216
+ );
217
+ }
218
+ if (this.environment.requiresReactHostIntegration) {
219
+ // RN 0.82 removed ReactNativeHost, so the legacy
220
+ // `override fun getJSBundleFile()` integration does not exist there.
221
+ // We cannot see which form the host used — the identity check after
222
+ // restart is what proves it — but naming the right fix up front turns
223
+ // a confusing silent failure into a one-line correction.
224
+ logger.debug(
225
+ '[OTA] React Native >= 0.82 detected. The only valid Android integration is ' +
226
+ 'getDefaultReactHost(..., jsBundleFilePath = ScaleBunOtaModule.getJSBundleFile(ctx)) — ' +
227
+ 'ReactNativeHost and its getJSBundleFile() override no longer exist.',
228
+ );
229
+ }
230
+
231
+ this.initialized = true;
232
+ this.enabled = true;
233
+ this.bootGuardConfig = config ?? {};
234
+ this.signatureConfig = config?.signature;
235
+ logger.debug(
236
+ `[OTA] Orchestrator initialized (RN ${this.environment.rnVersionString ?? 'unknown'}` +
237
+ `${this.environment.bridgeless ? ', bridgeless' : ''}` +
238
+ `${this.environment.hermes ? `, Hermes HBC v${this.environment.hermesBytecodeVersion ?? '?'}` : ''})`,
239
+ );
240
+
241
+ // Rehydrate which bundle we are running from the native slot state.
242
+ // Without this `currentBundle` stays null for the whole process after a
243
+ // restart, so every check reported no current bundle and the backend had
244
+ // no way to know what the device was actually on.
245
+ this.hydrateCurrentBundleFromSlots();
246
+
247
+ // Prove the bundle we installed is the bundle that loaded.
248
+ this.verifyRunningBundleIdentity();
249
+
250
+ // Check if the boot guard fired on this launch (native reverted before JS loaded)
251
+ this.checkBootGuardRecovery();
252
+ });
253
+ }
254
+
255
+ /**
256
+ * Read the active slot back into `currentBundle` so the next check reports
257
+ * what this device is genuinely running.
258
+ */
259
+ private hydrateCurrentBundleFromSlots(): void {
260
+ if (!NativeScaleBunOta) return;
261
+ try {
262
+ const state = JSON.parse(NativeScaleBunOta.getSlotState());
263
+ const current = state?.current;
264
+ if (!current?.sha256) return;
265
+
266
+ // Keyed on sha256, NOT bundleId. The native `stageBundle` is never told
267
+ // the bundleId it writes a meta.json containing only `sha256` and
268
+ // `installedAt` — so `current.bundleId` is always absent. Hydrating from
269
+ // it left `currentBundle` null on every launch, which meant the device
270
+ // never told the server what it was running and the server re-offered
271
+ // the same bundle forever. sha256 is the field that is actually there.
272
+ const record = this.readInstallRecord();
273
+ if (record && record.sha256 === current.sha256) {
274
+ this.currentBundle = {
275
+ id: record.bundleId,
276
+ version: record.version,
277
+ sha256: record.sha256,
278
+ } as OtaBundlePayload;
279
+ logger.debug(`[OTA] Running bundle v${record.version} (${record.bundleId})`);
280
+ return;
281
+ }
282
+
283
+ // An OTA bundle is installed but we have no record of installing it —
284
+ // a reinstall of the app, cleared storage, or a bundle staged by an
285
+ // older SDK. Report the hash so the server can still recognise it.
286
+ this.currentBundle = { sha256: current.sha256 } as OtaBundlePayload;
287
+ logger.debug(
288
+ `[OTA] Running an OTA bundle (sha ${String(current.sha256).slice(0, 12)}…) with no local install record.`,
289
+ );
290
+ } catch {
291
+ // Slot state unreadable — treat as factory bundle.
292
+ }
293
+ }
294
+
295
+ /**
296
+ * Compare the bundle the slot manager believes is active against the identity
297
+ * marker compiled into the bundle that actually loaded.
298
+ *
299
+ * A mismatch means the install path reported success while the runtime kept
300
+ * executing different code — the silent no-op this whole guard exists for.
301
+ * It is reported as APPLY_FAILED, because that is what happened, regardless
302
+ * of what the previous session's telemetry claimed.
303
+ *
304
+ * The expectation recorded at install time is what makes this conclusive.
305
+ * Without it, a missing marker is ambiguous — it could be a bundle published
306
+ * before markers existed, or an install that never took effect. Having
307
+ * written down "this bundle definitely carries marker X" before restarting,
308
+ * a missing marker afterwards can only mean the second.
309
+ */
310
+ private verifyRunningBundleIdentity(): void {
311
+ if (!this.currentBundle) return;
312
+
313
+ const running = readRunningBundleMarker();
314
+ const expected = this.readInstallExpectation();
315
+
316
+ // Stale record from an earlier install — the slot has moved on since.
317
+ if (expected && expected.bundleId !== this.currentBundle.id) {
318
+ this.clearInstallExpectation();
319
+ return;
320
+ }
321
+
322
+ if (expected) {
323
+ if (running === expected.identityToken) {
324
+ // Proven: the bundle we installed is the bundle executing.
325
+ logger.debug('[OTA] Install verified — running bundle matches what was installed.');
326
+ this.clearInstallExpectation();
327
+ return;
328
+ }
329
+
330
+ logger.error(
331
+ `[OTA] INSTALL DID NOT TAKE EFFECT — bundle ${this.currentBundle.id} was installed and ` +
332
+ `carries a known identity marker, but the running bundle reports ` +
333
+ `${running ?? 'no marker at all'}. The app is executing different code than the slot ` +
334
+ 'manager believes. Check that the host app resolves the OTA bundle path at launch ' +
335
+ '(see the ScaleBunOta integration for your React Native version).',
336
+ );
337
+ otaEventEmitter.emitSimple('APPLY_FAILED', this.currentBundle.id, {
338
+ error: `install_not_effective — expected ${expected.identityToken}, running ${running ?? 'none'}`,
339
+ });
340
+ // Deliberately NOT cleared: the condition is still true on the next boot
341
+ // and should keep reporting until the integration is fixed. Clearing here
342
+ // would make a permanently broken install look like a one-off.
343
+ return;
344
+ }
345
+
346
+ if (running && running !== this.currentBundle.id) {
347
+ // No recorded expectation (installed by an older SDK), but the running
348
+ // marker disagrees with the active slot outright. Still conclusive.
349
+ logger.error(
350
+ `[OTA] BUNDLE MISMATCH — slot says ${this.currentBundle.id} is active but the ` +
351
+ `running bundle identifies as ${running}.`,
352
+ );
353
+ otaEventEmitter.emitSimple('APPLY_FAILED', this.currentBundle.id, {
354
+ error: `bundle_identity_mismatch — running ${running}`,
355
+ });
356
+ }
357
+ }
358
+
359
+ // ── Install expectation ────────────────────────────────────────────────────
360
+ // Written just before the restart that activates a bundle, read on the next
361
+ // boot. Synchronous, disk-backed, and the same store used for the device id —
362
+ // it has to survive a process death that happens moments after the write.
363
+
364
+ private static readonly INSTALL_EXPECTATION_KEY = 'scalebun.ota.pendingInstall';
365
+
366
+ private recordInstallExpectation(bundle: OtaBundlePayload): void {
367
+ try {
368
+ this.storage().set(
369
+ OtaOrchestrator.INSTALL_EXPECTATION_KEY,
370
+ JSON.stringify({
371
+ bundleId: bundle.id,
372
+ version: bundle.version,
373
+ // The join key back to the native slot, which records sha256 and
374
+ // nothing else identifying.
375
+ sha256: bundle.sha256,
376
+ identityToken: bundle.identityToken ?? null,
377
+ }),
378
+ );
379
+ } catch {
380
+ // Verification is a safety net, never a precondition for installing.
381
+ }
382
+ }
383
+
384
+ private readInstallRecord(): {
385
+ bundleId: string;
386
+ version: number;
387
+ sha256: string;
388
+ identityToken: string | null;
389
+ } | null {
390
+ try {
391
+ const raw = this.storage().get(OtaOrchestrator.INSTALL_EXPECTATION_KEY);
392
+ if (!raw) return null;
393
+ const parsed = JSON.parse(raw);
394
+ return typeof parsed?.bundleId === 'string' && typeof parsed?.sha256 === 'string'
395
+ ? parsed
396
+ : null;
397
+ } catch {
398
+ return null;
399
+ }
400
+ }
401
+
402
+ private readInstallExpectation(): { bundleId: string; identityToken: string } | null {
403
+ const record = this.readInstallRecord();
404
+ return record && record.identityToken
405
+ ? { bundleId: record.bundleId, identityToken: record.identityToken }
406
+ : null;
407
+ }
408
+
409
+ private clearInstallExpectation(): void {
410
+ try {
411
+ this.storage().set(OtaOrchestrator.INSTALL_EXPECTATION_KEY, '');
412
+ } catch {
413
+ /* non-fatal */
414
+ }
415
+ }
416
+
417
+ private storage(): StorageBackend {
418
+ if (!this.storageBackend) this.storageBackend = createStorageBackend();
419
+ return this.storageBackend;
420
+ }
421
+
422
+ /**
423
+ * Sprint 5 (S5-NAT-1): Check if the native boot guard reverted us on this cold start.
424
+ * If getSlotState() shows bootMarkerPresent=false but we have a 'previous' slot
425
+ * and no 'current' OTA bundle, the native layer already reverted.
426
+ */
427
+ private checkBootGuardRecovery(): void {
428
+ if (!NativeScaleBunOta) return;
429
+
430
+ try {
431
+ const stateJson = NativeScaleBunOta.getSlotState();
432
+ const state = JSON.parse(stateJson);
433
+
434
+ if (state.bootGuardReverted) {
435
+ logger.warn('[OTA] Boot guard fired — app was reverted to previous bundle');
436
+ otaEventEmitter.emitSimple('AUTO_ROLLBACK', state.previous?.bundleId ?? 'unknown', {
437
+ reason: 'boot_guard_crash_loop_detected',
438
+ });
439
+ }
440
+ } catch {
441
+ // Slot state parsing failed — non-fatal
442
+ }
443
+ }
444
+
445
+ isEnabled(): boolean {
446
+ return this.enabled;
447
+ }
448
+
449
+ isRestartRequired(): boolean {
450
+ return this.isRestartRequiredState;
451
+ }
452
+
453
+ /**
454
+ * Perform an OTA check against the backend endpoint.
455
+ */
456
+ async checkForUpdate(requestParams: {
457
+ apiUrl: string;
458
+ clientKey: string;
459
+ appVersion: string;
460
+ installationId: string;
461
+ channelName?: string;
462
+ country?: string;
463
+ attributes?: Record<string, string | number>;
464
+ segmentIds?: string[];
465
+ lifecycleStage?: string;
466
+ }): Promise<OtaCheckResponse> {
467
+ try {
468
+ const env = this.environment ?? detectOtaEnvironment();
469
+
470
+ // C1: send the channel and targeting context. `channelName` was already an
471
+ // accepted parameter here and was then dropped on the floor — the payload
472
+ // never carried it — so every device resolved to `default` no matter what
473
+ // the host app asked for. Undefined fields are omitted by JSON.stringify,
474
+ // so an app that supplies nothing behaves exactly as before.
475
+ const payload: OtaCheckRequest = {
476
+ appVersion: requestParams.appVersion,
477
+ platform: Platform.OS === 'ios' ? 'ios' : 'android',
478
+ installationId: requestParams.installationId,
479
+ currentBundleId: this.currentBundle?.id,
480
+ currentBundleHash: this.currentBundle?.sha256,
481
+ channelName: requestParams.channelName,
482
+ country: requestParams.country,
483
+ attributes: requestParams.attributes,
484
+ segmentIds: requestParams.segmentIds,
485
+ lifecycleStage: requestParams.lifecycleStage,
486
+ // Runtime compatibility context. Without these the backend cannot tell
487
+ // whether a bundle is safe for this binary: appVersion is a marketing
488
+ // string, while the RN version and the Hermes bytecode format are the
489
+ // actual runtime contract. A bundle compiled against a different HBC
490
+ // version either fails to load or crashes later on a missing path.
491
+ rnVersion: env.rnVersionString ?? undefined,
492
+ hermes: env.hermes,
493
+ hermesBytecodeVersion: env.hermesBytecodeVersion ?? undefined,
494
+ bridgeless: env.bridgeless,
495
+ };
496
+
497
+ const url = `${requestParams.apiUrl.replace(/\/+$/, '')}/sdk/ota/check`;
498
+
499
+ const data = await retryWithBackoff<OtaCheckResponse>(
500
+ async () => {
501
+ const res = await fetch(url, {
502
+ method: 'POST',
503
+ headers: {
504
+ 'Content-Type': 'application/json',
505
+ 'x-scalebun-client-key': requestParams.clientKey,
506
+ },
507
+ body: JSON.stringify(payload),
508
+ });
509
+
510
+ if (!res.ok) {
511
+ throw new HttpStatusError(
512
+ `OTA check failed with status ${res.status}`,
513
+ res.status,
514
+ );
515
+ }
516
+ return (await res.json()) as OtaCheckResponse;
517
+ },
518
+ { label: 'check', isRetryable: isRetryableNetworkError },
519
+ );
520
+
521
+ return data;
522
+ } catch (err: any) {
523
+ logger.error(`[OTA] checkForUpdate failed: ${err.message}`);
524
+ return { action: 'NONE' };
525
+ }
526
+ }
527
+
528
+ /**
529
+ * Downloads, stage, and apply an update in one step.
530
+ * Sprint 5: emits lifecycle events + starts boot-guard heartbeat.
531
+ */
532
+ async sync(params: {
533
+ apiUrl: string;
534
+ clientKey: string;
535
+ appVersion: string;
536
+ installationId: string;
537
+ autoRestart?: boolean;
538
+ }): Promise<SyncResult> {
539
+ try {
540
+ if (!this.enabled || !NativeScaleBunOta) {
541
+ return { status: 'ERROR', error: 'OTA native module disabled or missing' };
542
+ }
543
+
544
+ logger.debug('[OTA] Sync started…');
545
+ const checkRes = await this.checkForUpdate(params);
546
+
547
+ if (checkRes.action === 'NONE') {
548
+ logger.debug('[OTA] App is up to date');
549
+ // If we booted from an OTA bundle and it's healthy, clear the boot guard
550
+ this.startBootGuardHeartbeat();
551
+ return { status: 'UP_TO_DATE' };
552
+ }
553
+
554
+ // Handle server-initiated rollback (Sprint 4)
555
+ if (checkRes.action === 'ROLLBACK') {
556
+ logger.warn('[OTA] Server requested ROLLBACK — reverting to previous bundle');
557
+ otaEventEmitter.emitSimple('MANUAL_ROLLBACK', this.currentBundle?.id ?? 'unknown');
558
+ const reverted = await NativeScaleBunOta.revertToPrevious();
559
+ if (reverted) {
560
+ this.currentBundle = null;
561
+ this.isRestartRequiredState = true;
562
+ if (params.autoRestart) {
563
+ this.restart();
564
+ }
565
+ return { status: 'ROLLED_BACK' };
566
+ }
567
+ return { status: 'ERROR', error: 'Native rollback failed' };
568
+ }
569
+
570
+ if (!checkRes.bundle) {
571
+ return { status: 'UP_TO_DATE' };
572
+ }
573
+
574
+ const bundle = checkRes.bundle;
575
+ let patchUsed = false;
576
+
577
+ // ── VERIFY AUTHENTICITY (OTA-03) ─────────────────────────────────────
578
+ // Before anything touches the disk. SHA-256 proves the bytes arrived
579
+ // intact; only the signature proves they came from you. Checking after
580
+ // staging would mean writing unverified code to the slot directory first.
581
+ const signatureOutcome = await verifyBundleSignature(
582
+ bundle.sha256,
583
+ bundle.signature,
584
+ this.signatureConfig,
585
+ );
586
+ if (!signatureOutcome.ok) {
587
+ otaEventEmitter.emitSimple('APPLY_FAILED', bundle.id, {
588
+ error: `Signature check failed: ${signatureOutcome.reason}`,
589
+ version: bundle.version,
590
+ });
591
+ return {
592
+ status: 'ERROR',
593
+ error: `Bundle signature check failed (${signatureOutcome.reason})`,
594
+ bundle,
595
+ };
596
+ }
597
+
598
+ // ── DOWNLOAD ─────────────────────────────────────────────────────────
599
+ otaEventEmitter.emitSimple('DOWNLOAD_STARTED', bundle.id, { version: bundle.version });
600
+ const downloadStart = Date.now();
601
+ logger.debug(`[OTA] Downloading update v${bundle.version}…`);
602
+
603
+ // Live progress: native tick → DOWNLOAD_PROGRESS (feeds useOtaUpdate) →
604
+ // throttled POST to the live tracker. `bundle.size` is the authoritative
605
+ // total — the server just told us — so an unknown native total (-1 on
606
+ // chunked/gzip bodies) still yields a truthful percentage.
607
+ let lastPostAt = 0;
608
+ const postProgress = (bytesRead: number, status: string) => {
609
+ const total = bundle.size > 0 ? bundle.size : Math.max(bytesRead, 1);
610
+ const percent = Math.min(100, Math.round((bytesRead / total) * 100));
611
+ const elapsedS = (Date.now() - downloadStart) / 1000;
612
+ const payload = {
613
+ installationId: params.installationId,
614
+ bundleId: bundle.id,
615
+ bytesRead,
616
+ totalBytes: total,
617
+ progressPercent: percent,
618
+ speedKbps: elapsedS > 0 ? Math.round(bytesRead / 1024 / elapsedS) : 0,
619
+ status,
620
+ };
621
+ // Fire-and-forget: progress display must never delay or fail the
622
+ // download it describes.
623
+ fetch(`${params.apiUrl.replace(/\/+$/, '')}/sdk/ota/progress`, {
624
+ method: 'POST',
625
+ headers: {
626
+ 'Content-Type': 'application/json',
627
+ 'x-scalebun-client-key': params.clientKey,
628
+ },
629
+ body: JSON.stringify(payload),
630
+ }).catch(() => {});
631
+ };
632
+
633
+ const unsubscribeProgress = subscribeNativeProgress(({ bytesRead }) => {
634
+ const total = bundle.size > 0 ? bundle.size : bytesRead;
635
+ otaEventEmitter.emit({
636
+ type: 'DOWNLOAD_PROGRESS',
637
+ bundleId: bundle.id,
638
+ timestamp: Date.now(),
639
+ progress: Math.min(100, Math.round((bytesRead / Math.max(total, 1)) * 100)),
640
+ });
641
+ const now = Date.now();
642
+ if (now - lastPostAt >= PROGRESS_POST_INTERVAL_MS) {
643
+ lastPostAt = now;
644
+ postProgress(bytesRead, 'DOWNLOADING');
645
+ }
646
+ });
647
+
648
+ let staged = false;
649
+
650
+ // Sprint 7: Try patch first if offered, fall back to full bundle
651
+ if (bundle.patch && NativeScaleBunOta.stagePatch) {
652
+ logger.debug(
653
+ `[OTA] Patch available (${(bundle.patch.size / 1024).toFixed(0)} KB vs ` +
654
+ `${(bundle.size / 1024).toFixed(0)} KB full) — trying patch…`,
655
+ );
656
+ try {
657
+ staged = await NativeScaleBunOta.stagePatch(
658
+ bundle.patch.url,
659
+ bundle.patch.sha256,
660
+ bundle.sha256, // expected full-bundle hash after patching
661
+ );
662
+ if (staged) {
663
+ patchUsed = true;
664
+ logger.debug('[OTA] Patch applied successfully');
665
+ } else {
666
+ logger.warn('[OTA] Patch staging returned false — falling back to full bundle');
667
+ }
668
+ } catch (patchErr: any) {
669
+ logger.warn(`[OTA] Patch staging failed: ${patchErr.message} — falling back to full bundle`);
670
+ }
671
+ }
672
+
673
+ // Full-bundle fallback (or primary path when no patch is available).
674
+ // Retried with backoff: on a mobile network a transient drop mid-download
675
+ // is the common case, and previously one failure meant waiting for the
676
+ // next cold start — often hours away, sometimes never.
677
+ if (!staged) {
678
+ try {
679
+ staged = await retryWithBackoff(
680
+ async () => {
681
+ const ok = await NativeScaleBunOta!.stageBundle(bundle.url, bundle.sha256);
682
+ if (!ok) {
683
+ // Native returns a bare boolean, so a hash mismatch and a
684
+ // dropped connection are indistinguishable here. Retrying a
685
+ // genuine mismatch a couple of times is cheap; not retrying a
686
+ // dropped connection costs the whole update.
687
+ throw new Error('stageBundle returned false');
688
+ }
689
+ return ok;
690
+ },
691
+ { label: `download v${bundle.version}`, attempts: 3 },
692
+ );
693
+ } catch {
694
+ staged = false;
695
+ }
696
+ }
697
+
698
+ unsubscribeProgress();
699
+
700
+ if (!staged) {
701
+ postProgress(0, 'FAILED');
702
+ logger.error('[OTA] Staging bundle failed after retries');
703
+ otaEventEmitter.emitSimple('APPLY_FAILED', bundle.id, {
704
+ error: 'Staging failed — SHA-256 mismatch or download error',
705
+ version: bundle.version,
706
+ });
707
+ return { status: 'ERROR', error: 'Staging bundle failed', bundle };
708
+ }
709
+
710
+ postProgress(bundle.size, 'COMPLETED');
711
+
712
+ const downloadDuration = Date.now() - downloadStart;
713
+ otaEventEmitter.emitSimple('DOWNLOAD_COMPLETE', bundle.id, {
714
+ version: bundle.version,
715
+ durationMs: downloadDuration,
716
+ patchUsed,
717
+ });
718
+
719
+ // ── APPLY ────────────────────────────────────────────────────────────
720
+ // 2. Apply update atomically (next→current, current→previous, sets boot marker)
721
+ const applied = await NativeScaleBunOta.applyUpdate();
722
+ if (!applied) {
723
+ logger.error('[OTA] Applying update failed');
724
+ otaEventEmitter.emitSimple('APPLY_FAILED', bundle.id, {
725
+ error: 'Atomic slot swap failed',
726
+ version: bundle.version,
727
+ });
728
+ return { status: 'ERROR', error: 'Applying update failed', bundle };
729
+ }
730
+
731
+ this.currentBundle = bundle;
732
+ this.isRestartRequiredState = true;
733
+
734
+ // Written BEFORE the restart, so the next boot can prove whether this
735
+ // install actually took effect. Only recorded when the server told us the
736
+ // bundle carries a marker — otherwise there is nothing to compare against
737
+ // and a recorded expectation would produce a false alarm.
738
+ // Recorded unconditionally, not only when a marker is present: this is
739
+ // also the record that tells the next launch WHICH bundle the slot's
740
+ // sha256 belongs to, without which the device cannot report what it is
741
+ // running. Identity verification is the second job of this record, and
742
+ // it is skipped when there is no marker to compare.
743
+ this.recordInstallExpectation(bundle);
744
+
745
+ otaEventEmitter.emitSimple('INSTALLED', bundle.id, { version: bundle.version });
746
+ logger.debug(`[OTA] Update v${bundle.version} installed successfully!`);
747
+
748
+ // Deliver telemetry BEFORE a restart tears the JS runtime down —
749
+ // an INSTALLED event queued but not sent would vanish with the process.
750
+ await deliverOtaEvents(params);
751
+
752
+ // Activation, per the release's installMode. `params.autoRestart` is the
753
+ // host app's own override and continues to force a restart regardless.
754
+ // These behaviours were documented (docs, CLI help, the CodePush shim's
755
+ // enum) for a year while nothing implemented them — every release
756
+ // behaved as ON_NEXT_RESTART no matter what was published.
757
+ const installMode = bundle.installMode ?? 'ON_NEXT_RESTART';
758
+ if (params.autoRestart || installMode === 'IMMEDIATE') {
759
+ this.restart();
760
+ } else if (installMode === 'ON_NEXT_RESUME') {
761
+ this.armResumeRestart();
762
+ }
763
+
764
+ return {
765
+ status: 'UPDATE_INSTALLED',
766
+ bundle,
767
+ isMandatory: bundle.isMandatory,
768
+ };
769
+ } catch (err: any) {
770
+ logger.error(`[OTA] Sync error: ${err.message}`);
771
+ return { status: 'ERROR', error: err.message ?? 'Unexpected sync failure' };
772
+ } finally {
773
+ // Every other exit (UP_TO_DATE, ROLLBACK, staging failure, throw)
774
+ // delivers here. This also carries events queued at INIT — boot-guard
775
+ // AUTO_ROLLBACKs and identity-check APPLY_FAILEDs fire before any
776
+ // apiUrl/clientKey exist, so they wait in the queue for the first sync.
777
+ // Fire-and-forget: delivery is never allowed to delay a result.
778
+ void deliverOtaEvents(params);
779
+ }
780
+ }
781
+
782
+ /**
783
+ * Sprint 5 (S5-NAT-1): Boot-guard heartbeat.
784
+ *
785
+ * After booting from an OTA bundle, start a timer. If the app survives
786
+ * `healthyAfterMs` without crashing, call `markHealthy()` to clear the
787
+ * native boot-guard marker. If JS crashes before the timer fires, the
788
+ * marker stays set and native code reverts on next cold start.
789
+ */
790
+ private startBootGuardHeartbeat(): void {
791
+ if (!NativeScaleBunOta) return;
792
+
793
+ // Cancel any existing timer
794
+ if (this.healthyTimer) {
795
+ clearTimeout(this.healthyTimer);
796
+ this.healthyTimer = null;
797
+ }
798
+
799
+ try {
800
+ const stateJson = NativeScaleBunOta.getSlotState();
801
+ const state = JSON.parse(stateJson);
802
+
803
+ // Only run the heartbeat if boot-guard marker is present
804
+ // (meaning we're running from a freshly-applied OTA bundle)
805
+ if (!state.bootMarkerPresent) {
806
+ return;
807
+ }
808
+
809
+ const healthyMs = this.bootGuardConfig.healthyAfterMs ?? DEFAULT_HEALTHY_AFTER_MS;
810
+ logger.debug(`[OTA] Boot guard active — marking healthy after ${healthyMs}ms`);
811
+
812
+ this.healthyTimer = setTimeout(() => {
813
+ noThrow(() => {
814
+ NativeScaleBunOta?.markHealthy();
815
+ logger.info('[OTA] Boot guard cleared — bundle marked healthy ✓');
816
+ this.healthyTimer = null;
817
+ });
818
+ }, healthyMs);
819
+ } catch {
820
+ // State parsing failed — non-fatal, don't block
821
+ }
822
+ }
823
+
824
+ /** One-shot guard so repeated syncs cannot stack resume listeners. */
825
+ private resumeRestartArmed = false;
826
+
827
+ /**
828
+ * ON_NEXT_RESUME: restart the JS runtime the next time the app returns to
829
+ * the foreground after genuinely being in the background.
830
+ *
831
+ * The staged bundle is already applied at this point — the restart is purely
832
+ * about WHEN the user experiences the reload. Two deliberate choices:
833
+ *
834
+ * - Armed only after a real background→active transition, never on the
835
+ * initial 'active' state, so installing while the user is mid-session
836
+ * does not instantly yank the screen out from under them.
837
+ * - One-shot. The listener removes itself after firing (or after the
838
+ * restart makes the whole question moot).
839
+ */
840
+ private armResumeRestart(): void {
841
+ if (this.resumeRestartArmed) return;
842
+ this.resumeRestartArmed = true;
843
+
844
+ let wasBackground = false;
845
+ try {
846
+ const sub = AppState.addEventListener('change', (state) => {
847
+ if (state === 'background') {
848
+ wasBackground = true;
849
+ return;
850
+ }
851
+ if (state === 'active' && wasBackground) {
852
+ try {
853
+ sub.remove();
854
+ } catch {
855
+ /* the restart below makes cleanup moot */
856
+ }
857
+ this.resumeRestartArmed = false;
858
+ logger.info('[OTA] App resumed — activating the staged update now');
859
+ this.restart();
860
+ }
861
+ });
862
+ logger.debug('[OTA] Update staged — will activate on next resume (ON_NEXT_RESUME)');
863
+ } catch {
864
+ // AppState unavailable (tests, exotic hosts): the update still activates
865
+ // on the next cold start, which is the documented fallback behaviour.
866
+ this.resumeRestartArmed = false;
867
+ }
868
+ }
869
+
870
+ /**
871
+ * Reload the JS app bundle to apply the new update immediately.
872
+ *
873
+ * Order matters: the native `restartApp()` is the only path that works in
874
+ * RELEASE builds. `DevSettings.reload()` looks callable there too — it
875
+ * logged, returned, and reloaded nothing when tested live on a release APK,
876
+ * which made every "restart" this SDK ever promised a silent no-op in
877
+ * production. DevSettings remains as the dev-build fallback for hosts that
878
+ * have not rebuilt native yet.
879
+ */
880
+ restart(): void {
881
+ noThrow(() => {
882
+ logger.info('[OTA] Triggering app restart…');
883
+ if (NativeScaleBunOta && typeof NativeScaleBunOta.restartApp === 'function') {
884
+ NativeScaleBunOta.restartApp();
885
+ } else if (DevSettings && typeof DevSettings.reload === 'function') {
886
+ DevSettings.reload();
887
+ } else if (NativeModules.RNReload) {
888
+ NativeModules.RNReload.reload();
889
+ }
890
+ });
891
+ }
892
+ }
893
+
894
+ export const otaOrchestrator = new OtaOrchestrator();