@scalebun-release/react-native 2.5.0

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 (1203) hide show
  1. package/LICENSE +21 -0
  2. package/README.md +154 -0
  3. package/android/build.gradle +94 -0
  4. package/android/consumer-rules.pro +28 -0
  5. package/android/src/androidTest/java/com/scalebun/rn/ota/ScaleBunOtaVerifierInstrumentedTest.kt +112 -0
  6. package/android/src/main/AndroidManifest.xml +14 -0
  7. package/android/src/main/java/com/scalebun/core/crash/CrashStorage.kt +155 -0
  8. package/android/src/main/java/com/scalebun/core/crash/NativeCrashHandler.kt +93 -0
  9. package/android/src/main/java/com/scalebun/core/performance/ANRWatchdog.kt +100 -0
  10. package/android/src/main/java/com/scalebun/core/performance/AppStartCollector.kt +180 -0
  11. package/android/src/main/java/com/scalebun/core/performance/FrameMetricsCollector.kt +230 -0
  12. package/android/src/main/java/com/scalebun/core/performance/PerformanceCore.kt +165 -0
  13. package/android/src/main/java/com/scalebun/profiler/ProfilerModule.kt +398 -0
  14. package/android/src/main/java/com/scalebun/profiler/ProfilerPackage.kt +24 -0
  15. package/android/src/main/java/com/scalebun/profiler/collectors/CpuCollector.kt +161 -0
  16. package/android/src/main/java/com/scalebun/profiler/collectors/IncidentDetector.kt +223 -0
  17. package/android/src/main/java/com/scalebun/profiler/collectors/MemoryCollector.kt +157 -0
  18. package/android/src/main/java/com/scalebun/profiler/collectors/RenderCollector.kt +194 -0
  19. package/android/src/main/java/com/scalebun/profiler/collectors/SamplerScheduler.kt +218 -0
  20. package/android/src/main/java/com/scalebun/profiler/collectors/ThreadCollector.kt +142 -0
  21. package/android/src/main/java/com/scalebun/replaysdk/ReplaySdkModule.kt +1117 -0
  22. package/android/src/main/java/com/scalebun/replaysdk/ReplaySdkPackage.kt +24 -0
  23. package/android/src/main/java/com/scalebun/replaysdk/capture/CaptureReason.kt +47 -0
  24. package/android/src/main/java/com/scalebun/replaysdk/capture/FrameCaptureManager.kt +574 -0
  25. package/android/src/main/java/com/scalebun/replaysdk/capture/FrameCaptureScheduler.kt +187 -0
  26. package/android/src/main/java/com/scalebun/replaysdk/capture/UiStabilityDetector.kt +214 -0
  27. package/android/src/main/java/com/scalebun/replaysdk/core/ReplayConfig.kt +144 -0
  28. package/android/src/main/java/com/scalebun/replaysdk/core/ReplayLogger.kt +31 -0
  29. package/android/src/main/java/com/scalebun/replaysdk/core/SessionIdGenerator.kt +15 -0
  30. package/android/src/main/java/com/scalebun/replaysdk/models/ReplayModels.kt +94 -0
  31. package/android/src/main/java/com/scalebun/replaysdk/outbox/NativeOutbox.kt +574 -0
  32. package/android/src/main/java/com/scalebun/replaysdk/outbox/OutboxUploader.kt +559 -0
  33. package/android/src/main/java/com/scalebun/replaysdk/privacy/PrivacyMaskProcessor.kt +126 -0
  34. package/android/src/main/java/com/scalebun/replaysdk/session/SessionManager.kt +322 -0
  35. package/android/src/main/java/com/scalebun/replaysdk/storage/ReplayStorage.kt +136 -0
  36. package/android/src/main/java/com/scalebun/replaysdk/timeline/TimelineCollector.kt +28 -0
  37. package/android/src/main/java/com/scalebun/replaysdk/tracking/InteractionTracker.kt +470 -0
  38. package/android/src/main/java/com/scalebun/replaysdk/tracking/ScreenTracker.kt +20 -0
  39. package/android/src/main/java/com/scalebun/replaysdk/tracking/ScrollContextProbe.kt +188 -0
  40. package/android/src/main/java/com/scalebun/replaysdk/transport/ReplayTransport.kt +99 -0
  41. package/android/src/main/java/com/scalebun/replaysdk/voice/VoiceRecorder.kt +121 -0
  42. package/android/src/main/java/com/scalebun/replaysdk/voice/VoiceTranscriber.kt +170 -0
  43. package/android/src/main/java/com/scalebun/rn/ScaleBunPackage.kt +113 -0
  44. package/android/src/main/java/com/scalebun/rn/crash/ScaleBunCrashModule.kt +188 -0
  45. package/android/src/main/java/com/scalebun/rn/crash/ScaleBunCrashPackage.kt +22 -0
  46. package/android/src/main/java/com/scalebun/rn/engage/ScaleBunEngageModule.kt +579 -0
  47. package/android/src/main/java/com/scalebun/rn/engage/ScaleBunEngagePackage.kt +22 -0
  48. package/android/src/main/java/com/scalebun/rn/engage/ScaleBunNotificationPresenter.kt +110 -0
  49. package/android/src/main/java/com/scalebun/rn/ota/BsPatch.kt +240 -0
  50. package/android/src/main/java/com/scalebun/rn/ota/BundleDownloader.kt +195 -0
  51. package/android/src/main/java/com/scalebun/rn/ota/DeviceIntegrity.kt +81 -0
  52. package/android/src/main/java/com/scalebun/rn/ota/DownloadFailure.kt +55 -0
  53. package/android/src/main/java/com/scalebun/rn/ota/OtaProtocol.kt +244 -0
  54. package/android/src/main/java/com/scalebun/rn/ota/ScaleBunOtaKeyRegistry.kt +100 -0
  55. package/android/src/main/java/com/scalebun/rn/ota/ScaleBunOtaModule.kt +683 -0
  56. package/android/src/main/java/com/scalebun/rn/ota/ScaleBunOtaReleaseVerifier.kt +136 -0
  57. package/android/src/main/java/com/scalebun/rn/ota/SlotManager.kt +578 -0
  58. package/android/src/main/java/com/scalebun/rn/ota/TlsPinning.kt +118 -0
  59. package/android/src/main/java/com/scalebun/rn/performance/PerformanceModule.kt +217 -0
  60. package/android/src/main/java/com/scalebun/rn/referrer/ScaleBunInstallReferrerModule.kt +77 -0
  61. package/android/src/main/java/com/scalebun/rn/storage/ScaleBunStorageModule.kt +68 -0
  62. package/android/src/main/java/com/scalebun/storage/KvFileStore.kt +174 -0
  63. package/android/src/newarch/java/com/scalebun/profiler/ProfilerSpec.kt +12 -0
  64. package/android/src/newarch/java/com/scalebun/replaysdk/ReplaySdkSpec.kt +12 -0
  65. package/android/src/newarch/java/com/scalebun/rn/crash/ScaleBunCrashSpec.kt +15 -0
  66. package/android/src/newarch/java/com/scalebun/rn/ota/ScaleBunOtaSpec.kt +16 -0
  67. package/android/src/newarch/java/com/scalebun/rn/performance/PerformanceSpec.kt +12 -0
  68. package/android/src/newarch/java/com/scalebun/rn/referrer/ScaleBunInstallReferrerSpec.kt +14 -0
  69. package/android/src/newarch/java/com/scalebun/rn/storage/ScaleBunStorageSpec.kt +16 -0
  70. package/android/src/oldarch/java/com/scalebun/profiler/ProfilerSpec.kt +34 -0
  71. package/android/src/oldarch/java/com/scalebun/replaysdk/ReplaySdkSpec.kt +77 -0
  72. package/android/src/oldarch/java/com/scalebun/rn/crash/ScaleBunCrashSpec.kt +40 -0
  73. package/android/src/oldarch/java/com/scalebun/rn/ota/ScaleBunOtaSpec.kt +42 -0
  74. package/android/src/oldarch/java/com/scalebun/rn/performance/PerformanceSpec.kt +27 -0
  75. package/android/src/oldarch/java/com/scalebun/rn/referrer/ScaleBunInstallReferrerSpec.kt +18 -0
  76. package/android/src/oldarch/java/com/scalebun/rn/storage/ScaleBunStorageSpec.kt +26 -0
  77. package/bin/lib/androidCodemod.js +370 -0
  78. package/bin/lib/iosCodemod.js +343 -0
  79. package/bin/scalebun.js +1004 -0
  80. package/dist/scalebun.full.js +37348 -0
  81. package/dist/scalebun.slim.js +34137 -0
  82. package/ios/Capture/InteractionTracker.swift +237 -0
  83. package/ios/Capture/PrivacyMaskProcessor.swift +158 -0
  84. package/ios/Capture/ScreenshotCaptureManager.swift +398 -0
  85. package/ios/Capture/WindowResolver.swift +63 -0
  86. package/ios/Core/DeviceIdentity.swift +50 -0
  87. package/ios/Core/ReplayConfig.swift +100 -0
  88. package/ios/Core/ReplayLogger.swift +22 -0
  89. package/ios/Core/SessionIdGenerator.swift +18 -0
  90. package/ios/Crash/ScaleBunCrashBridge.mm +74 -0
  91. package/ios/Crash/ScaleBunCrashHandler.swift +84 -0
  92. package/ios/Crash/ScaleBunCrashModule.swift +98 -0
  93. package/ios/Crash/ScaleBunCrashSignalBridge.h +49 -0
  94. package/ios/Crash/ScaleBunCrashSignalBridge.m +296 -0
  95. package/ios/Crash/ScaleBunCrashSignalStress.c +137 -0
  96. package/ios/Crash/ScaleBunCrashStorage.swift +121 -0
  97. package/ios/Crash/ScaleBunExceptionChain.swift +71 -0
  98. package/ios/CrashTests/ScaleBunExceptionChainTests.swift +144 -0
  99. package/ios/Engage/ScaleBunEngageBridge.m +32 -0
  100. package/ios/Engage/ScaleBunEngageModule.swift +250 -0
  101. package/ios/Engage/ScaleBunPushNotificationCenter.swift +185 -0
  102. package/ios/Ota/BsPatch.swift +203 -0
  103. package/ios/Ota/BundleDownloader.swift +249 -0
  104. package/ios/Ota/DeviceIntegrity.swift +112 -0
  105. package/ios/Ota/DownloadFailure.swift +56 -0
  106. package/ios/Ota/OtaProtocol.swift +246 -0
  107. package/ios/Ota/OtaSlotManager.swift +613 -0
  108. package/ios/Ota/ScaleBunOtaBridge.mm +92 -0
  109. package/ios/Ota/ScaleBunOtaEventsModule.swift +61 -0
  110. package/ios/Ota/ScaleBunOtaKeyRegistry.swift +147 -0
  111. package/ios/Ota/ScaleBunOtaModule.swift +587 -0
  112. package/ios/Ota/ScaleBunOtaReleaseVerifier.swift +119 -0
  113. package/ios/Ota/TlsPinning.swift +222 -0
  114. package/ios/OtaTests/DownloadFailureTests.swift +78 -0
  115. package/ios/OtaTests/ScaleBunOtaVerifierTests.swift +548 -0
  116. package/ios/Outbox/NativeOutbox.swift +632 -0
  117. package/ios/Outbox/OutboxUploader.swift +578 -0
  118. package/ios/Performance/ScaleBunPerformanceBridge.m +32 -0
  119. package/ios/Performance/ScaleBunPerformanceModule.swift +290 -0
  120. package/ios/PrivacyInfo.xcprivacy +97 -0
  121. package/ios/Profiler/ScaleBunProfilerBridge.m +55 -0
  122. package/ios/Profiler/ScaleBunProfilerModule.swift +966 -0
  123. package/ios/ReplaySdk-Bridging-Header.h +2 -0
  124. package/ios/ReplaySdk.swift +793 -0
  125. package/ios/ReplaySdkBridge.m +97 -0
  126. package/ios/Session/SessionManager.swift +273 -0
  127. package/ios/Skan/ScaleBunSkanBridge.m +14 -0
  128. package/ios/Skan/ScaleBunSkanModule.swift +61 -0
  129. package/ios/Storage/ReplayStorage.swift +61 -0
  130. package/ios/Storage/ScaleBunKvFileStore.swift +125 -0
  131. package/ios/Storage/ScaleBunStorageBridge.mm +72 -0
  132. package/ios/Storage/ScaleBunStorageModule.swift +57 -0
  133. package/ios/Transport/ReplayTransport.swift +70 -0
  134. package/ios/VoiceRecorder.swift +145 -0
  135. package/lib/commonjs/analytics/EventTracker.js +598 -0
  136. package/lib/commonjs/analytics/automaticEvents.js +71 -0
  137. package/lib/commonjs/analytics/batching.js +64 -0
  138. package/lib/commonjs/analytics/eventLane.js +55 -0
  139. package/lib/commonjs/analytics/revenue.js +125 -0
  140. package/lib/commonjs/analytics/subscription.js +94 -0
  141. package/lib/commonjs/bootstrap/FeatureRegistry.js +86 -0
  142. package/lib/commonjs/bootstrap/SDKBootstrapper.js +748 -0
  143. package/lib/commonjs/bucketing/fnv1a32.js +45 -0
  144. package/lib/commonjs/compat/codepush.js +153 -0
  145. package/lib/commonjs/config/ConfigManager.js +238 -0
  146. package/lib/commonjs/config/configTypes.js +16 -0
  147. package/lib/commonjs/config/otaPolicyState.js +85 -0
  148. package/lib/commonjs/config/quotaState.js +435 -0
  149. package/lib/commonjs/core/architecture.js +45 -0
  150. package/lib/commonjs/core/clock/now.js +13 -0
  151. package/lib/commonjs/core/config/defaults.js +2 -0
  152. package/lib/commonjs/core/config/schema.js +512 -0
  153. package/lib/commonjs/core/constants/endpoints.js +19 -0
  154. package/lib/commonjs/core/constants/protocol.js +31 -0
  155. package/lib/commonjs/core/constants/timings.js +39 -0
  156. package/lib/commonjs/core/constants/version.js +18 -0
  157. package/lib/commonjs/core/context/app.js +2 -0
  158. package/lib/commonjs/core/context/device.js +155 -0
  159. package/lib/commonjs/core/context/session.js +2 -0
  160. package/lib/commonjs/core/context/user.js +2 -0
  161. package/lib/commonjs/core/contracts/IFeature.js +2 -0
  162. package/lib/commonjs/core/di/container.js +29 -0
  163. package/lib/commonjs/core/encoding/base64.js +50 -0
  164. package/lib/commonjs/core/id/deviceId.js +52 -0
  165. package/lib/commonjs/core/id/installationId.js +55 -0
  166. package/lib/commonjs/core/id/sessionId.js +2 -0
  167. package/lib/commonjs/core/lifecycle/appLifecycle.js +31 -0
  168. package/lib/commonjs/core/lifecycle/crashSafe.js +33 -0
  169. package/lib/commonjs/core/logger/errorClassification.js +107 -0
  170. package/lib/commonjs/core/logger/internalLogger.js +63 -0
  171. package/lib/commonjs/core/logger/levels.js +2 -0
  172. package/lib/commonjs/crypto/hmacSha256.js +132 -0
  173. package/lib/commonjs/debug/bootstrap.js +429 -0
  174. package/lib/commonjs/debug/commands.js +732 -0
  175. package/lib/commonjs/debug/configBuilder.js +70 -0
  176. package/lib/commonjs/debug/exportBridge.js +155 -0
  177. package/lib/commonjs/debug/hostResolver.js +42 -0
  178. package/lib/commonjs/debug/index.js +141 -0
  179. package/lib/commonjs/debug/metrics.js +39 -0
  180. package/lib/commonjs/debug/perf.js +186 -0
  181. package/lib/commonjs/debug/perfWiring.js +109 -0
  182. package/lib/commonjs/debug/protocol.js +121 -0
  183. package/lib/commonjs/debug/redaction.js +422 -0
  184. package/lib/commonjs/debug/replayWiring.js +149 -0
  185. package/lib/commonjs/debug/screenTracking.js +60 -0
  186. package/lib/commonjs/debug/sessionWiring.js +48 -0
  187. package/lib/commonjs/debug/stream.js +542 -0
  188. package/lib/commonjs/debug/transport.js +368 -0
  189. package/lib/commonjs/features/bugreport/BugReportFeature.js +112 -0
  190. package/lib/commonjs/features/bugreport/buildPayload.js +97 -0
  191. package/lib/commonjs/features/bugreport/index.js +2 -0
  192. package/lib/commonjs/features/crash/CrashFeature.js +86 -0
  193. package/lib/commonjs/features/crash/CrashReporter.js +160 -0
  194. package/lib/commonjs/features/crash/NativeCrashFeature.js +42 -0
  195. package/lib/commonjs/features/crash/capture.js +48 -0
  196. package/lib/commonjs/features/crash/globalHandler.js +41 -0
  197. package/lib/commonjs/features/crash/index.js +14 -0
  198. package/lib/commonjs/features/crash/nativeCrashBridge.js +361 -0
  199. package/lib/commonjs/features/crash/rejectionHandler.js +180 -0
  200. package/lib/commonjs/features/crash/scrubCrash.js +158 -0
  201. package/lib/commonjs/features/engage/EngageAnchor.js +132 -0
  202. package/lib/commonjs/features/engage/EngageArchetypeRenderers.js +4292 -0
  203. package/lib/commonjs/features/engage/EngageInAppView.js +2670 -0
  204. package/lib/commonjs/features/engage/EngageInlinePlacement.js +133 -0
  205. package/lib/commonjs/features/engage/EngagePromptProvider.js +1063 -0
  206. package/lib/commonjs/features/engage/EngagePromptView.js +1252 -0
  207. package/lib/commonjs/features/engage/EngageTransport.js +608 -0
  208. package/lib/commonjs/features/engage/EngageVariantContent.js +1778 -0
  209. package/lib/commonjs/features/engage/__test-support__/reactNativeStub.js +54 -0
  210. package/lib/commonjs/features/engage/attachmentCapture.js +48 -0
  211. package/lib/commonjs/features/engage/captureVoiceAttachment.js +88 -0
  212. package/lib/commonjs/features/engage/engageCoachmarkTour.js +106 -0
  213. package/lib/commonjs/features/engage/engageGameLogic.js +308 -0
  214. package/lib/commonjs/features/engage/engageMediaSizing.js +60 -0
  215. package/lib/commonjs/features/engage/engageMultiStepSheet.js +43 -0
  216. package/lib/commonjs/features/engage/engageOutcome.js +118 -0
  217. package/lib/commonjs/features/engage/engagePushTokenBridge.js +72 -0
  218. package/lib/commonjs/features/engage/engageShakeBridge.js +62 -0
  219. package/lib/commonjs/features/engage/engageSignals.js +39 -0
  220. package/lib/commonjs/features/engage/engageStoreReviewBridge.js +49 -0
  221. package/lib/commonjs/features/engage/engageTestSeenStore.js +99 -0
  222. package/lib/commonjs/features/engage/engageThrottle.js +404 -0
  223. package/lib/commonjs/features/engage/engageTriggerEngine.js +365 -0
  224. package/lib/commonjs/features/engage/engageTypes.js +116 -0
  225. package/lib/commonjs/features/engage/engageVariantResolver.js +143 -0
  226. package/lib/commonjs/features/engage/engageWindowInsets.js +98 -0
  227. package/lib/commonjs/features/engage/gestureTriggerDetector.js +85 -0
  228. package/lib/commonjs/features/engage/transcription/TranscriptionProvider.js +55 -0
  229. package/lib/commonjs/features/install-referrer/installReferrer.js +113 -0
  230. package/lib/commonjs/features/journey/ScaleBunDebugRoot.js +1038 -0
  231. package/lib/commonjs/features/journey/ScaleBunFlatList.js +39 -0
  232. package/lib/commonjs/features/journey/ScaleBunImpression.js +113 -0
  233. package/lib/commonjs/features/journey/ScaleBunScrollView.js +102 -0
  234. package/lib/commonjs/features/journey/ScaleBunSectionList.js +39 -0
  235. package/lib/commonjs/features/journey/autoInstrumentScroll.js +161 -0
  236. package/lib/commonjs/features/journey/calibrationContext.js +42 -0
  237. package/lib/commonjs/features/journey/gestureBuffer.js +63 -0
  238. package/lib/commonjs/features/journey/gestureDetector.js +176 -0
  239. package/lib/commonjs/features/journey/impression.js +93 -0
  240. package/lib/commonjs/features/journey/interactionProtocol.js +168 -0
  241. package/lib/commonjs/features/journey/journeyManager.js +466 -0
  242. package/lib/commonjs/features/journey/journeyTypes.js +55 -0
  243. package/lib/commonjs/features/journey/nativeScroll.js +85 -0
  244. package/lib/commonjs/features/journey/navDetector.js +161 -0
  245. package/lib/commonjs/features/journey/screenshotHelper.js +136 -0
  246. package/lib/commonjs/features/journey/scrollContext.js +154 -0
  247. package/lib/commonjs/features/journey/targetGeometry.js +185 -0
  248. package/lib/commonjs/features/journey/targetRegistry.js +53 -0
  249. package/lib/commonjs/features/journey/touchTarget.js +249 -0
  250. package/lib/commonjs/features/journey/uiState.js +188 -0
  251. package/lib/commonjs/features/navigation/AutoScreenDetector.js +607 -0
  252. package/lib/commonjs/features/network/NetworkFeature.js +216 -0
  253. package/lib/commonjs/features/network/index.js +23 -0
  254. package/lib/commonjs/features/network/thirdParty.js +151 -0
  255. package/lib/commonjs/features/ota/OtaEventEmitter.js +129 -0
  256. package/lib/commonjs/features/ota/OtaOrchestrator.js +1309 -0
  257. package/lib/commonjs/features/ota/OtaTypes.js +6 -0
  258. package/lib/commonjs/features/ota/deviceAttributes.js +48 -0
  259. package/lib/commonjs/features/ota/environment.js +172 -0
  260. package/lib/commonjs/features/ota/geoCountry.js +93 -0
  261. package/lib/commonjs/features/ota/retry.js +96 -0
  262. package/lib/commonjs/features/ota/signedDownload.js +187 -0
  263. package/lib/commonjs/features/ota/useOtaUpdate.js +106 -0
  264. package/lib/commonjs/features/performance/PerformanceFeature.js +649 -0
  265. package/lib/commonjs/features/performance/collectors/AppLaunchCollector.js +122 -0
  266. package/lib/commonjs/features/performance/collectors/AutoScreenLoadCollector.js +232 -0
  267. package/lib/commonjs/features/performance/collectors/CustomTraceCollector.js +99 -0
  268. package/lib/commonjs/features/performance/collectors/FrameMetricsCollector.js +184 -0
  269. package/lib/commonjs/features/performance/collectors/JsStallCollector.js +165 -0
  270. package/lib/commonjs/features/performance/collectors/NetworkPerfCollector.js +59 -0
  271. package/lib/commonjs/features/performance/collectors/ScreenLoadCollector.js +78 -0
  272. package/lib/commonjs/features/performance/collectors/UiHangCollector.js +78 -0
  273. package/lib/commonjs/features/performance/config.js +58 -0
  274. package/lib/commonjs/features/performance/getNativePerformanceModule.js +44 -0
  275. package/lib/commonjs/features/performance/index.js +58 -0
  276. package/lib/commonjs/features/performance/metrics/MetricsEngine.js +148 -0
  277. package/lib/commonjs/features/performance/models.js +48 -0
  278. package/lib/commonjs/features/performance/transport/PerformanceTransport.js +168 -0
  279. package/lib/commonjs/features/profiler/ProfilerFeature.js +600 -0
  280. package/lib/commonjs/features/profiler/config.js +151 -0
  281. package/lib/commonjs/features/profiler/contracts.js +62 -0
  282. package/lib/commonjs/features/profiler/index.js +40 -0
  283. package/lib/commonjs/features/profiler/models.js +112 -0
  284. package/lib/commonjs/features/profiler/transport/ProfilerTransport.js +94 -0
  285. package/lib/commonjs/features/replay/bridge/adapters/bridgeAdapter.js +203 -0
  286. package/lib/commonjs/features/replay/bridge/eventEmitter.js +128 -0
  287. package/lib/commonjs/features/replay/bridge/nativeModule.js +95 -0
  288. package/lib/commonjs/features/replay/bridge/nativeQuota.js +121 -0
  289. package/lib/commonjs/features/replay/core/clock/clock.js +47 -0
  290. package/lib/commonjs/features/replay/core/config/defaults.js +88 -0
  291. package/lib/commonjs/features/replay/core/config/validator.js +109 -0
  292. package/lib/commonjs/features/replay/core/env/environmentDetector.js +28 -0
  293. package/lib/commonjs/features/replay/core/errors/safeCall.js +42 -0
  294. package/lib/commonjs/features/replay/core/ids/sessionId.js +53 -0
  295. package/lib/commonjs/features/replay/core/logger/logger.js +36 -0
  296. package/lib/commonjs/features/replay/core/privacy/privacyTypes.js +34 -0
  297. package/lib/commonjs/features/replay/core/queue/boundedQueue.js +71 -0
  298. package/lib/commonjs/features/replay/integrations/alert/alertInstrumentation.js +259 -0
  299. package/lib/commonjs/features/replay/integrations/logs/consoleIntegration.js +139 -0
  300. package/lib/commonjs/features/replay/integrations/network/networkAdapter.js +77 -0
  301. package/lib/commonjs/features/replay/integrations/react-navigation/navigationIntegration.js +88 -0
  302. package/lib/commonjs/features/replay/integrations/touch/ReplayRoot.js +103 -0
  303. package/lib/commonjs/features/replay/pipeline/batching/batchManager.js +119 -0
  304. package/lib/commonjs/features/replay/pipeline/envelope/envelopeBuilder.js +52 -0
  305. package/lib/commonjs/features/replay/pipeline/retry/retryPolicy.js +53 -0
  306. package/lib/commonjs/features/replay/pipeline/transport/transportTypes.js +67 -0
  307. package/lib/commonjs/features/replay/public/api.js +336 -0
  308. package/lib/commonjs/features/replay/public/enums.js +85 -0
  309. package/lib/commonjs/features/replay/public/types.js +6 -0
  310. package/lib/commonjs/features/replay/replay/breadcrumbs/breadcrumbCollector.js +119 -0
  311. package/lib/commonjs/features/replay/replay/frames/frameModels.js +40 -0
  312. package/lib/commonjs/features/replay/replay/session/sessionOrchestrator.js +279 -0
  313. package/lib/commonjs/features/replay/replay/timeline/timelineModels.js +120 -0
  314. package/lib/commonjs/features/replay/transport/BackendReplayTransport.js +175 -0
  315. package/lib/commonjs/features/replay/transport/CompositeReplayTransport.js +75 -0
  316. package/lib/commonjs/features/replay/transport/DesktopReplayTransport.js +124 -0
  317. package/lib/commonjs/features/replay/transport/ReplayTransport.js +2 -0
  318. package/lib/commonjs/features/session/BackendSessionAdapter.js +1915 -0
  319. package/lib/commonjs/features/session/DesktopSessionTransport.js +124 -0
  320. package/lib/commonjs/features/session/JourneyEventPipeline.js +244 -0
  321. package/lib/commonjs/features/session/ReplayCaptureManager.js +1253 -0
  322. package/lib/commonjs/features/session/ScrollTracker.js +147 -0
  323. package/lib/commonjs/features/session/SessionManager.js +1448 -0
  324. package/lib/commonjs/features/session/SyncDecisionEngine.js +95 -0
  325. package/lib/commonjs/features/session/frameLink.js +36 -0
  326. package/lib/commonjs/features/session/frameScrollState.js +41 -0
  327. package/lib/commonjs/features/session/index.js +84 -0
  328. package/lib/commonjs/features/session/nativeCapture.js +53 -0
  329. package/lib/commonjs/features/session/outboxFrameCapture.js +83 -0
  330. package/lib/commonjs/features/session/sessionTypes.js +230 -0
  331. package/lib/commonjs/features/session/viewportPlausibility.js +143 -0
  332. package/lib/commonjs/features/skan/skanBridge.js +54 -0
  333. package/lib/commonjs/features/skan/skanConversionManager.js +134 -0
  334. package/lib/commonjs/index.js +267 -0
  335. package/lib/commonjs/integrations/fetch/fetchInterceptor.js +174 -0
  336. package/lib/commonjs/integrations/navigation/screenTracker.js +2 -0
  337. package/lib/commonjs/integrations/network/bodyCapture.js +336 -0
  338. package/lib/commonjs/integrations/xhr/xhrInterceptor.js +224 -0
  339. package/lib/commonjs/metro/composeSourceMap.js +105 -0
  340. package/lib/commonjs/metro/featureModules.js +131 -0
  341. package/lib/commonjs/metro/index.js +230 -0
  342. package/lib/commonjs/metro/optionalDependencyStub.js +6 -0
  343. package/lib/commonjs/metro/optionalModules.js +31 -0
  344. package/lib/commonjs/metro/serializerCompose.js +161 -0
  345. package/lib/commonjs/pipeline/dispatcher/dispatcher.js +28 -0
  346. package/lib/commonjs/pipeline/envelope/envelope.js +17 -0
  347. package/lib/commonjs/pipeline/envelope/serializer.js +14 -0
  348. package/lib/commonjs/pipeline/processors/dedupe.js +2 -0
  349. package/lib/commonjs/pipeline/processors/enrich.js +16 -0
  350. package/lib/commonjs/pipeline/processors/sampling.js +2 -0
  351. package/lib/commonjs/pipeline/processors/sanitize.js +28 -0
  352. package/lib/commonjs/pipeline/queue/flushQueue.js +107 -0
  353. package/lib/commonjs/pipeline/queue/memoryQueue.js +31 -0
  354. package/lib/commonjs/pipeline/queue/persistentQueue.js +342 -0
  355. package/lib/commonjs/pipeline/queue/queuePolicy.js +2 -0
  356. package/lib/commonjs/pipeline/scheduler/flushScheduler.js +45 -0
  357. package/lib/commonjs/pipeline/scheduler/retryPolicy.js +15 -0
  358. package/lib/commonjs/public/ScaleBunErrorBoundary.js +91 -0
  359. package/lib/commonjs/public/ScaleBunFacade.js +2044 -0
  360. package/lib/commonjs/public/ScaleBunProvider.js +62 -0
  361. package/lib/commonjs/public/typedTracker.js +79 -0
  362. package/lib/commonjs/public/types.js +6 -0
  363. package/lib/commonjs/push/PushManager.js +270 -0
  364. package/lib/commonjs/push/adapters/ManualAdapter.js +86 -0
  365. package/lib/commonjs/push/adapters/NativeBridgeAdapter.js +131 -0
  366. package/lib/commonjs/push/adapters/NoopAdapter.js +45 -0
  367. package/lib/commonjs/push/adapters/RNFirebaseMessagingAdapter.js +248 -0
  368. package/lib/commonjs/push/adapters/loadMessaging.js +29 -0
  369. package/lib/commonjs/push/adapters/loadNotifee.js +36 -0
  370. package/lib/commonjs/push/adapters/selectAdapter.js +153 -0
  371. package/lib/commonjs/push/detect/capabilities.js +136 -0
  372. package/lib/commonjs/push/index.js +33 -0
  373. package/lib/commonjs/push/native/nativeNotifications.js +168 -0
  374. package/lib/commonjs/push/types.js +2 -0
  375. package/lib/commonjs/specs/NativeReplaySdk.js +28 -0
  376. package/lib/commonjs/specs/NativeScaleBunCrash.js +30 -0
  377. package/lib/commonjs/specs/NativeScaleBunInstallReferrer.js +24 -0
  378. package/lib/commonjs/specs/NativeScaleBunOta.js +32 -0
  379. package/lib/commonjs/specs/NativeScaleBunPerformance.js +25 -0
  380. package/lib/commonjs/specs/NativeScaleBunProfiler.js +26 -0
  381. package/lib/commonjs/specs/NativeScaleBunStorage.js +40 -0
  382. package/lib/commonjs/storage/StorageBackend.js +240 -0
  383. package/lib/commonjs/storage/db/sqlite.js +2 -0
  384. package/lib/commonjs/storage/files/fileStore.js +2 -0
  385. package/lib/commonjs/transport/auth/sdkSession.js +28 -0
  386. package/lib/commonjs/transport/backoff/exponentialJitter.js +16 -0
  387. package/lib/commonjs/transport/http/endpoints.js +46 -0
  388. package/lib/commonjs/transport/http/httpClient.js +72 -0
  389. package/lib/commonjs/transport/rateLimit/retryAfter.js +2 -0
  390. package/lib/commonjs/transport/signing/requestSigner.js +2 -0
  391. package/lib/commonjs/vendor/protocol/index.js +327 -0
  392. package/lib/commonjs/vendor/protocol/internal/validation.js +429 -0
  393. package/lib/commonjs/vendor/sdk-contracts/bridge.js +2 -0
  394. package/lib/commonjs/vendor/sdk-contracts/config.js +2 -0
  395. package/lib/commonjs/vendor/sdk-contracts/events.js +2 -0
  396. package/lib/commonjs/vendor/sdk-contracts/features.js +2 -0
  397. package/lib/commonjs/vendor/sdk-contracts/index.js +2 -0
  398. package/lib/commonjs/vendor/sdk-contracts/platform.js +2 -0
  399. package/lib/commonjs/vendor/sdk-contracts/session-boundary.js +6 -0
  400. package/lib/commonjs/vendor/sdk-contracts/session.js +2 -0
  401. package/lib/commonjs/vendor/vendor.manifest +10 -0
  402. package/lib/module/analytics/EventTracker.js +592 -0
  403. package/lib/module/analytics/automaticEvents.js +63 -0
  404. package/lib/module/analytics/batching.js +55 -0
  405. package/lib/module/analytics/eventLane.js +47 -0
  406. package/lib/module/analytics/revenue.js +117 -0
  407. package/lib/module/analytics/subscription.js +86 -0
  408. package/lib/module/bootstrap/FeatureRegistry.js +79 -0
  409. package/lib/module/bootstrap/SDKBootstrapper.js +742 -0
  410. package/lib/module/bucketing/fnv1a32.js +37 -0
  411. package/lib/module/compat/codepush.js +147 -0
  412. package/lib/module/config/ConfigManager.js +230 -0
  413. package/lib/module/config/configTypes.js +10 -0
  414. package/lib/module/config/otaPolicyState.js +76 -0
  415. package/lib/module/config/quotaState.js +423 -0
  416. package/lib/module/core/architecture.js +38 -0
  417. package/lib/module/core/clock/now.js +7 -0
  418. package/lib/module/core/config/defaults.js +2 -0
  419. package/lib/module/core/config/schema.js +506 -0
  420. package/lib/module/core/constants/endpoints.js +13 -0
  421. package/lib/module/core/constants/protocol.js +25 -0
  422. package/lib/module/core/constants/timings.js +26 -0
  423. package/lib/module/core/constants/version.js +12 -0
  424. package/lib/module/core/context/app.js +2 -0
  425. package/lib/module/core/context/device.js +143 -0
  426. package/lib/module/core/context/session.js +2 -0
  427. package/lib/module/core/context/user.js +2 -0
  428. package/lib/module/core/contracts/IFeature.js +2 -0
  429. package/lib/module/core/di/container.js +22 -0
  430. package/lib/module/core/encoding/base64.js +44 -0
  431. package/lib/module/core/id/deviceId.js +45 -0
  432. package/lib/module/core/id/installationId.js +50 -0
  433. package/lib/module/core/id/sessionId.js +2 -0
  434. package/lib/module/core/lifecycle/appLifecycle.js +25 -0
  435. package/lib/module/core/lifecycle/crashSafe.js +26 -0
  436. package/lib/module/core/logger/errorClassification.js +96 -0
  437. package/lib/module/core/logger/internalLogger.js +59 -0
  438. package/lib/module/core/logger/levels.js +2 -0
  439. package/lib/module/crypto/hmacSha256.js +126 -0
  440. package/lib/module/debug/bootstrap.js +393 -0
  441. package/lib/module/debug/commands.js +726 -0
  442. package/lib/module/debug/configBuilder.js +63 -0
  443. package/lib/module/debug/exportBridge.js +148 -0
  444. package/lib/module/debug/hostResolver.js +37 -0
  445. package/lib/module/debug/index.js +13 -0
  446. package/lib/module/debug/metrics.js +33 -0
  447. package/lib/module/debug/perf.js +180 -0
  448. package/lib/module/debug/perfWiring.js +102 -0
  449. package/lib/module/debug/protocol.js +19 -0
  450. package/lib/module/debug/redaction.js +411 -0
  451. package/lib/module/debug/replayWiring.js +139 -0
  452. package/lib/module/debug/screenTracking.js +53 -0
  453. package/lib/module/debug/sessionWiring.js +43 -0
  454. package/lib/module/debug/stream.js +536 -0
  455. package/lib/module/debug/transport.js +362 -0
  456. package/lib/module/features/bugreport/BugReportFeature.js +105 -0
  457. package/lib/module/features/bugreport/buildPayload.js +91 -0
  458. package/lib/module/features/bugreport/index.js +2 -0
  459. package/lib/module/features/crash/CrashFeature.js +79 -0
  460. package/lib/module/features/crash/CrashReporter.js +151 -0
  461. package/lib/module/features/crash/NativeCrashFeature.js +36 -0
  462. package/lib/module/features/crash/capture.js +42 -0
  463. package/lib/module/features/crash/globalHandler.js +36 -0
  464. package/lib/module/features/crash/index.js +8 -0
  465. package/lib/module/features/crash/nativeCrashBridge.js +350 -0
  466. package/lib/module/features/crash/rejectionHandler.js +171 -0
  467. package/lib/module/features/crash/scrubCrash.js +149 -0
  468. package/lib/module/features/engage/EngageAnchor.js +121 -0
  469. package/lib/module/features/engage/EngageArchetypeRenderers.js +4264 -0
  470. package/lib/module/features/engage/EngageInAppView.js +2656 -0
  471. package/lib/module/features/engage/EngageInlinePlacement.js +123 -0
  472. package/lib/module/features/engage/EngagePromptProvider.js +1054 -0
  473. package/lib/module/features/engage/EngagePromptView.js +1243 -0
  474. package/lib/module/features/engage/EngageTransport.js +602 -0
  475. package/lib/module/features/engage/EngageVariantContent.js +1771 -0
  476. package/lib/module/features/engage/__test-support__/reactNativeStub.js +52 -0
  477. package/lib/module/features/engage/attachmentCapture.js +42 -0
  478. package/lib/module/features/engage/captureVoiceAttachment.js +80 -0
  479. package/lib/module/features/engage/engageCoachmarkTour.js +94 -0
  480. package/lib/module/features/engage/engageGameLogic.js +287 -0
  481. package/lib/module/features/engage/engageMediaSizing.js +51 -0
  482. package/lib/module/features/engage/engageMultiStepSheet.js +35 -0
  483. package/lib/module/features/engage/engageOutcome.js +108 -0
  484. package/lib/module/features/engage/engagePushTokenBridge.js +65 -0
  485. package/lib/module/features/engage/engageShakeBridge.js +56 -0
  486. package/lib/module/features/engage/engageSignals.js +34 -0
  487. package/lib/module/features/engage/engageStoreReviewBridge.js +43 -0
  488. package/lib/module/features/engage/engageTestSeenStore.js +92 -0
  489. package/lib/module/features/engage/engageThrottle.js +390 -0
  490. package/lib/module/features/engage/engageTriggerEngine.js +360 -0
  491. package/lib/module/features/engage/engageTypes.js +110 -0
  492. package/lib/module/features/engage/engageVariantResolver.js +135 -0
  493. package/lib/module/features/engage/engageWindowInsets.js +89 -0
  494. package/lib/module/features/engage/gestureTriggerDetector.js +80 -0
  495. package/lib/module/features/engage/transcription/TranscriptionProvider.js +46 -0
  496. package/lib/module/features/install-referrer/installReferrer.js +104 -0
  497. package/lib/module/features/journey/ScaleBunDebugRoot.js +1030 -0
  498. package/lib/module/features/journey/ScaleBunFlatList.js +32 -0
  499. package/lib/module/features/journey/ScaleBunImpression.js +105 -0
  500. package/lib/module/features/journey/ScaleBunScrollView.js +95 -0
  501. package/lib/module/features/journey/ScaleBunSectionList.js +32 -0
  502. package/lib/module/features/journey/autoInstrumentScroll.js +155 -0
  503. package/lib/module/features/journey/calibrationContext.js +35 -0
  504. package/lib/module/features/journey/gestureBuffer.js +56 -0
  505. package/lib/module/features/journey/gestureDetector.js +169 -0
  506. package/lib/module/features/journey/impression.js +84 -0
  507. package/lib/module/features/journey/interactionProtocol.js +158 -0
  508. package/lib/module/features/journey/journeyManager.js +459 -0
  509. package/lib/module/features/journey/journeyTypes.js +49 -0
  510. package/lib/module/features/journey/nativeScroll.js +77 -0
  511. package/lib/module/features/journey/navDetector.js +154 -0
  512. package/lib/module/features/journey/screenshotHelper.js +129 -0
  513. package/lib/module/features/journey/scrollContext.js +142 -0
  514. package/lib/module/features/journey/targetGeometry.js +175 -0
  515. package/lib/module/features/journey/targetRegistry.js +44 -0
  516. package/lib/module/features/journey/touchTarget.js +241 -0
  517. package/lib/module/features/journey/uiState.js +176 -0
  518. package/lib/module/features/navigation/AutoScreenDetector.js +601 -0
  519. package/lib/module/features/network/NetworkFeature.js +209 -0
  520. package/lib/module/features/network/index.js +17 -0
  521. package/lib/module/features/network/thirdParty.js +142 -0
  522. package/lib/module/features/ota/OtaEventEmitter.js +123 -0
  523. package/lib/module/features/ota/OtaOrchestrator.js +1302 -0
  524. package/lib/module/features/ota/OtaTypes.js +2 -0
  525. package/lib/module/features/ota/deviceAttributes.js +43 -0
  526. package/lib/module/features/ota/environment.js +165 -0
  527. package/lib/module/features/ota/geoCountry.js +86 -0
  528. package/lib/module/features/ota/retry.js +87 -0
  529. package/lib/module/features/ota/signedDownload.js +174 -0
  530. package/lib/module/features/ota/useOtaUpdate.js +100 -0
  531. package/lib/module/features/performance/PerformanceFeature.js +643 -0
  532. package/lib/module/features/performance/collectors/AppLaunchCollector.js +115 -0
  533. package/lib/module/features/performance/collectors/AutoScreenLoadCollector.js +225 -0
  534. package/lib/module/features/performance/collectors/CustomTraceCollector.js +92 -0
  535. package/lib/module/features/performance/collectors/FrameMetricsCollector.js +177 -0
  536. package/lib/module/features/performance/collectors/JsStallCollector.js +158 -0
  537. package/lib/module/features/performance/collectors/NetworkPerfCollector.js +52 -0
  538. package/lib/module/features/performance/collectors/ScreenLoadCollector.js +71 -0
  539. package/lib/module/features/performance/collectors/UiHangCollector.js +71 -0
  540. package/lib/module/features/performance/config.js +51 -0
  541. package/lib/module/features/performance/getNativePerformanceModule.js +39 -0
  542. package/lib/module/features/performance/index.js +9 -0
  543. package/lib/module/features/performance/metrics/MetricsEngine.js +139 -0
  544. package/lib/module/features/performance/models.js +42 -0
  545. package/lib/module/features/performance/transport/PerformanceTransport.js +162 -0
  546. package/lib/module/features/profiler/ProfilerFeature.js +594 -0
  547. package/lib/module/features/profiler/config.js +143 -0
  548. package/lib/module/features/profiler/contracts.js +56 -0
  549. package/lib/module/features/profiler/index.js +11 -0
  550. package/lib/module/features/profiler/models.js +106 -0
  551. package/lib/module/features/profiler/transport/ProfilerTransport.js +87 -0
  552. package/lib/module/features/replay/bridge/adapters/bridgeAdapter.js +198 -0
  553. package/lib/module/features/replay/bridge/eventEmitter.js +122 -0
  554. package/lib/module/features/replay/bridge/nativeModule.js +89 -0
  555. package/lib/module/features/replay/bridge/nativeQuota.js +109 -0
  556. package/lib/module/features/replay/core/clock/clock.js +37 -0
  557. package/lib/module/features/replay/core/config/defaults.js +82 -0
  558. package/lib/module/features/replay/core/config/validator.js +103 -0
  559. package/lib/module/features/replay/core/env/environmentDetector.js +22 -0
  560. package/lib/module/features/replay/core/errors/safeCall.js +35 -0
  561. package/lib/module/features/replay/core/ids/sessionId.js +44 -0
  562. package/lib/module/features/replay/core/logger/logger.js +29 -0
  563. package/lib/module/features/replay/core/privacy/privacyTypes.js +27 -0
  564. package/lib/module/features/replay/core/queue/boundedQueue.js +64 -0
  565. package/lib/module/features/replay/integrations/alert/alertInstrumentation.js +252 -0
  566. package/lib/module/features/replay/integrations/logs/consoleIntegration.js +131 -0
  567. package/lib/module/features/replay/integrations/network/networkAdapter.js +70 -0
  568. package/lib/module/features/replay/integrations/react-navigation/navigationIntegration.js +82 -0
  569. package/lib/module/features/replay/integrations/touch/ReplayRoot.js +96 -0
  570. package/lib/module/features/replay/pipeline/batching/batchManager.js +113 -0
  571. package/lib/module/features/replay/pipeline/envelope/envelopeBuilder.js +43 -0
  572. package/lib/module/features/replay/pipeline/retry/retryPolicy.js +45 -0
  573. package/lib/module/features/replay/pipeline/transport/transportTypes.js +60 -0
  574. package/lib/module/features/replay/public/api.js +332 -0
  575. package/lib/module/features/replay/public/enums.js +85 -0
  576. package/lib/module/features/replay/public/types.js +2 -0
  577. package/lib/module/features/replay/replay/breadcrumbs/breadcrumbCollector.js +113 -0
  578. package/lib/module/features/replay/replay/frames/frameModels.js +33 -0
  579. package/lib/module/features/replay/replay/session/sessionOrchestrator.js +272 -0
  580. package/lib/module/features/replay/replay/timeline/timelineModels.js +108 -0
  581. package/lib/module/features/replay/transport/BackendReplayTransport.js +169 -0
  582. package/lib/module/features/replay/transport/CompositeReplayTransport.js +68 -0
  583. package/lib/module/features/replay/transport/DesktopReplayTransport.js +119 -0
  584. package/lib/module/features/replay/transport/ReplayTransport.js +2 -0
  585. package/lib/module/features/session/BackendSessionAdapter.js +1908 -0
  586. package/lib/module/features/session/DesktopSessionTransport.js +118 -0
  587. package/lib/module/features/session/JourneyEventPipeline.js +239 -0
  588. package/lib/module/features/session/ReplayCaptureManager.js +1248 -0
  589. package/lib/module/features/session/ScrollTracker.js +141 -0
  590. package/lib/module/features/session/SessionManager.js +1443 -0
  591. package/lib/module/features/session/SyncDecisionEngine.js +88 -0
  592. package/lib/module/features/session/frameLink.js +29 -0
  593. package/lib/module/features/session/frameScrollState.js +34 -0
  594. package/lib/module/features/session/index.js +35 -0
  595. package/lib/module/features/session/nativeCapture.js +45 -0
  596. package/lib/module/features/session/outboxFrameCapture.js +77 -0
  597. package/lib/module/features/session/sessionTypes.js +226 -0
  598. package/lib/module/features/session/viewportPlausibility.js +137 -0
  599. package/lib/module/features/skan/skanBridge.js +48 -0
  600. package/lib/module/features/skan/skanConversionManager.js +128 -0
  601. package/lib/module/index.js +80 -0
  602. package/lib/module/integrations/fetch/fetchInterceptor.js +169 -0
  603. package/lib/module/integrations/navigation/screenTracker.js +2 -0
  604. package/lib/module/integrations/network/bodyCapture.js +320 -0
  605. package/lib/module/integrations/xhr/xhrInterceptor.js +219 -0
  606. package/lib/module/metro/composeSourceMap.js +97 -0
  607. package/lib/module/metro/featureModules.js +123 -0
  608. package/lib/module/metro/index.js +218 -0
  609. package/lib/module/metro/optionalDependencyStub.js +14 -0
  610. package/lib/module/metro/optionalModules.js +25 -0
  611. package/lib/module/metro/serializerCompose.js +152 -0
  612. package/lib/module/pipeline/dispatcher/dispatcher.js +21 -0
  613. package/lib/module/pipeline/envelope/envelope.js +11 -0
  614. package/lib/module/pipeline/envelope/serializer.js +8 -0
  615. package/lib/module/pipeline/processors/dedupe.js +2 -0
  616. package/lib/module/pipeline/processors/enrich.js +10 -0
  617. package/lib/module/pipeline/processors/sampling.js +2 -0
  618. package/lib/module/pipeline/processors/sanitize.js +22 -0
  619. package/lib/module/pipeline/queue/flushQueue.js +102 -0
  620. package/lib/module/pipeline/queue/memoryQueue.js +24 -0
  621. package/lib/module/pipeline/queue/persistentQueue.js +336 -0
  622. package/lib/module/pipeline/queue/queuePolicy.js +2 -0
  623. package/lib/module/pipeline/scheduler/flushScheduler.js +38 -0
  624. package/lib/module/pipeline/scheduler/retryPolicy.js +9 -0
  625. package/lib/module/public/ScaleBunErrorBoundary.js +82 -0
  626. package/lib/module/public/ScaleBunFacade.js +2038 -0
  627. package/lib/module/public/ScaleBunProvider.js +54 -0
  628. package/lib/module/public/typedTracker.js +72 -0
  629. package/lib/module/public/types.js +2 -0
  630. package/lib/module/push/PushManager.js +263 -0
  631. package/lib/module/push/adapters/ManualAdapter.js +79 -0
  632. package/lib/module/push/adapters/NativeBridgeAdapter.js +124 -0
  633. package/lib/module/push/adapters/NoopAdapter.js +38 -0
  634. package/lib/module/push/adapters/RNFirebaseMessagingAdapter.js +241 -0
  635. package/lib/module/push/adapters/loadMessaging.js +23 -0
  636. package/lib/module/push/adapters/loadNotifee.js +30 -0
  637. package/lib/module/push/adapters/selectAdapter.js +147 -0
  638. package/lib/module/push/detect/capabilities.js +130 -0
  639. package/lib/module/push/index.js +9 -0
  640. package/lib/module/push/native/nativeNotifications.js +155 -0
  641. package/lib/module/push/types.js +2 -0
  642. package/lib/module/specs/NativeReplaySdk.js +24 -0
  643. package/lib/module/specs/NativeScaleBunCrash.js +26 -0
  644. package/lib/module/specs/NativeScaleBunInstallReferrer.js +20 -0
  645. package/lib/module/specs/NativeScaleBunOta.js +28 -0
  646. package/lib/module/specs/NativeScaleBunPerformance.js +21 -0
  647. package/lib/module/specs/NativeScaleBunProfiler.js +22 -0
  648. package/lib/module/specs/NativeScaleBunStorage.js +36 -0
  649. package/lib/module/storage/StorageBackend.js +231 -0
  650. package/lib/module/storage/db/sqlite.js +2 -0
  651. package/lib/module/storage/files/fileStore.js +2 -0
  652. package/lib/module/transport/auth/sdkSession.js +21 -0
  653. package/lib/module/transport/backoff/exponentialJitter.js +10 -0
  654. package/lib/module/transport/http/endpoints.js +40 -0
  655. package/lib/module/transport/http/httpClient.js +64 -0
  656. package/lib/module/transport/rateLimit/retryAfter.js +2 -0
  657. package/lib/module/transport/signing/requestSigner.js +2 -0
  658. package/lib/module/vendor/protocol/index.js +312 -0
  659. package/lib/module/vendor/protocol/internal/validation.js +423 -0
  660. package/lib/module/vendor/sdk-contracts/bridge.js +2 -0
  661. package/lib/module/vendor/sdk-contracts/config.js +2 -0
  662. package/lib/module/vendor/sdk-contracts/events.js +2 -0
  663. package/lib/module/vendor/sdk-contracts/features.js +2 -0
  664. package/lib/module/vendor/sdk-contracts/index.js +2 -0
  665. package/lib/module/vendor/sdk-contracts/platform.js +2 -0
  666. package/lib/module/vendor/sdk-contracts/session-boundary.js +2 -0
  667. package/lib/module/vendor/sdk-contracts/session.js +2 -0
  668. package/lib/module/vendor/vendor.manifest +10 -0
  669. package/lib/typescript/analytics/EventTracker.d.ts +197 -0
  670. package/lib/typescript/analytics/automaticEvents.d.ts +30 -0
  671. package/lib/typescript/analytics/batching.d.ts +33 -0
  672. package/lib/typescript/analytics/eventLane.d.ts +22 -0
  673. package/lib/typescript/analytics/revenue.d.ts +94 -0
  674. package/lib/typescript/analytics/subscription.d.ts +35 -0
  675. package/lib/typescript/bootstrap/FeatureRegistry.d.ts +36 -0
  676. package/lib/typescript/bootstrap/SDKBootstrapper.d.ts +82 -0
  677. package/lib/typescript/bucketing/fnv1a32.d.ts +20 -0
  678. package/lib/typescript/compat/codepush.d.ts +76 -0
  679. package/lib/typescript/config/ConfigManager.d.ts +82 -0
  680. package/lib/typescript/config/configTypes.d.ts +73 -0
  681. package/lib/typescript/config/otaPolicyState.d.ts +55 -0
  682. package/lib/typescript/config/quotaState.d.ts +155 -0
  683. package/lib/typescript/core/architecture.d.ts +29 -0
  684. package/lib/typescript/core/clock/now.d.ts +5 -0
  685. package/lib/typescript/core/config/defaults.d.ts +1 -0
  686. package/lib/typescript/core/config/schema.d.ts +107 -0
  687. package/lib/typescript/core/constants/endpoints.d.ts +13 -0
  688. package/lib/typescript/core/constants/protocol.d.ts +23 -0
  689. package/lib/typescript/core/constants/timings.d.ts +22 -0
  690. package/lib/typescript/core/constants/version.d.ts +12 -0
  691. package/lib/typescript/core/context/app.d.ts +1 -0
  692. package/lib/typescript/core/context/device.d.ts +61 -0
  693. package/lib/typescript/core/context/session.d.ts +1 -0
  694. package/lib/typescript/core/context/user.d.ts +24 -0
  695. package/lib/typescript/core/contracts/IFeature.d.ts +44 -0
  696. package/lib/typescript/core/di/container.d.ts +9 -0
  697. package/lib/typescript/core/encoding/base64.d.ts +13 -0
  698. package/lib/typescript/core/id/deviceId.d.ts +9 -0
  699. package/lib/typescript/core/id/installationId.d.ts +20 -0
  700. package/lib/typescript/core/id/sessionId.d.ts +1 -0
  701. package/lib/typescript/core/lifecycle/appLifecycle.d.ts +14 -0
  702. package/lib/typescript/core/lifecycle/crashSafe.d.ts +7 -0
  703. package/lib/typescript/core/logger/errorClassification.d.ts +46 -0
  704. package/lib/typescript/core/logger/internalLogger.d.ts +24 -0
  705. package/lib/typescript/core/logger/levels.d.ts +1 -0
  706. package/lib/typescript/crypto/hmacSha256.d.ts +10 -0
  707. package/lib/typescript/debug/bootstrap.d.ts +148 -0
  708. package/lib/typescript/debug/commands.d.ts +77 -0
  709. package/lib/typescript/debug/configBuilder.d.ts +13 -0
  710. package/lib/typescript/debug/exportBridge.d.ts +27 -0
  711. package/lib/typescript/debug/hostResolver.d.ts +14 -0
  712. package/lib/typescript/debug/index.d.ts +12 -0
  713. package/lib/typescript/debug/metrics.d.ts +2 -0
  714. package/lib/typescript/debug/perf.d.ts +43 -0
  715. package/lib/typescript/debug/perfWiring.d.ts +33 -0
  716. package/lib/typescript/debug/protocol.d.ts +15 -0
  717. package/lib/typescript/debug/redaction.d.ts +69 -0
  718. package/lib/typescript/debug/replayWiring.d.ts +25 -0
  719. package/lib/typescript/debug/screenTracking.d.ts +16 -0
  720. package/lib/typescript/debug/sessionWiring.d.ts +16 -0
  721. package/lib/typescript/debug/stream.d.ts +77 -0
  722. package/lib/typescript/debug/transport.d.ts +110 -0
  723. package/lib/typescript/features/bugreport/BugReportFeature.d.ts +59 -0
  724. package/lib/typescript/features/bugreport/buildPayload.d.ts +51 -0
  725. package/lib/typescript/features/bugreport/index.d.ts +1 -0
  726. package/lib/typescript/features/crash/CrashFeature.d.ts +21 -0
  727. package/lib/typescript/features/crash/CrashReporter.d.ts +107 -0
  728. package/lib/typescript/features/crash/NativeCrashFeature.d.ts +17 -0
  729. package/lib/typescript/features/crash/capture.d.ts +22 -0
  730. package/lib/typescript/features/crash/globalHandler.d.ts +14 -0
  731. package/lib/typescript/features/crash/index.d.ts +2 -0
  732. package/lib/typescript/features/crash/nativeCrashBridge.d.ts +43 -0
  733. package/lib/typescript/features/crash/rejectionHandler.d.ts +65 -0
  734. package/lib/typescript/features/crash/scrubCrash.d.ts +35 -0
  735. package/lib/typescript/features/engage/EngageAnchor.d.ts +36 -0
  736. package/lib/typescript/features/engage/EngageArchetypeRenderers.d.ts +66 -0
  737. package/lib/typescript/features/engage/EngageInAppView.d.ts +164 -0
  738. package/lib/typescript/features/engage/EngageInlinePlacement.d.ts +42 -0
  739. package/lib/typescript/features/engage/EngagePromptProvider.d.ts +233 -0
  740. package/lib/typescript/features/engage/EngagePromptView.d.ts +97 -0
  741. package/lib/typescript/features/engage/EngageTransport.d.ts +158 -0
  742. package/lib/typescript/features/engage/EngageVariantContent.d.ts +12 -0
  743. package/lib/typescript/features/engage/attachmentCapture.d.ts +17 -0
  744. package/lib/typescript/features/engage/captureVoiceAttachment.d.ts +31 -0
  745. package/lib/typescript/features/engage/engageCoachmarkTour.d.ts +18 -0
  746. package/lib/typescript/features/engage/engageGameLogic.d.ts +34 -0
  747. package/lib/typescript/features/engage/engageMediaSizing.d.ts +23 -0
  748. package/lib/typescript/features/engage/engageMultiStepSheet.d.ts +25 -0
  749. package/lib/typescript/features/engage/engageOutcome.d.ts +38 -0
  750. package/lib/typescript/features/engage/engagePushTokenBridge.d.ts +30 -0
  751. package/lib/typescript/features/engage/engageShakeBridge.d.ts +20 -0
  752. package/lib/typescript/features/engage/engageSignals.d.ts +13 -0
  753. package/lib/typescript/features/engage/engageStoreReviewBridge.d.ts +23 -0
  754. package/lib/typescript/features/engage/engageTestSeenStore.d.ts +46 -0
  755. package/lib/typescript/features/engage/engageThrottle.d.ts +180 -0
  756. package/lib/typescript/features/engage/engageTriggerEngine.d.ts +16 -0
  757. package/lib/typescript/features/engage/engageTypes.d.ts +576 -0
  758. package/lib/typescript/features/engage/engageVariantResolver.d.ts +46 -0
  759. package/lib/typescript/features/engage/engageWindowInsets.d.ts +25 -0
  760. package/lib/typescript/features/engage/gestureTriggerDetector.d.ts +20 -0
  761. package/lib/typescript/features/engage/transcription/TranscriptionProvider.d.ts +51 -0
  762. package/lib/typescript/features/install-referrer/installReferrer.d.ts +39 -0
  763. package/lib/typescript/features/journey/ScaleBunDebugRoot.d.ts +49 -0
  764. package/lib/typescript/features/journey/ScaleBunFlatList.d.ts +20 -0
  765. package/lib/typescript/features/journey/ScaleBunImpression.d.ts +30 -0
  766. package/lib/typescript/features/journey/ScaleBunScrollView.d.ts +25 -0
  767. package/lib/typescript/features/journey/ScaleBunSectionList.d.ts +20 -0
  768. package/lib/typescript/features/journey/autoInstrumentScroll.d.ts +46 -0
  769. package/lib/typescript/features/journey/calibrationContext.d.ts +26 -0
  770. package/lib/typescript/features/journey/gestureBuffer.d.ts +27 -0
  771. package/lib/typescript/features/journey/gestureDetector.d.ts +40 -0
  772. package/lib/typescript/features/journey/impression.d.ts +48 -0
  773. package/lib/typescript/features/journey/interactionProtocol.d.ts +159 -0
  774. package/lib/typescript/features/journey/journeyManager.d.ts +62 -0
  775. package/lib/typescript/features/journey/journeyTypes.d.ts +161 -0
  776. package/lib/typescript/features/journey/nativeScroll.d.ts +47 -0
  777. package/lib/typescript/features/journey/navDetector.d.ts +42 -0
  778. package/lib/typescript/features/journey/screenshotHelper.d.ts +33 -0
  779. package/lib/typescript/features/journey/scrollContext.d.ts +49 -0
  780. package/lib/typescript/features/journey/targetGeometry.d.ts +126 -0
  781. package/lib/typescript/features/journey/targetRegistry.d.ts +28 -0
  782. package/lib/typescript/features/journey/touchTarget.d.ts +174 -0
  783. package/lib/typescript/features/journey/uiState.d.ts +93 -0
  784. package/lib/typescript/features/navigation/AutoScreenDetector.d.ts +196 -0
  785. package/lib/typescript/features/network/NetworkFeature.d.ts +43 -0
  786. package/lib/typescript/features/network/index.d.ts +46 -0
  787. package/lib/typescript/features/network/thirdParty.d.ts +95 -0
  788. package/lib/typescript/features/ota/OtaEventEmitter.d.ts +93 -0
  789. package/lib/typescript/features/ota/OtaOrchestrator.d.ts +287 -0
  790. package/lib/typescript/features/ota/OtaTypes.d.ts +193 -0
  791. package/lib/typescript/features/ota/deviceAttributes.d.ts +18 -0
  792. package/lib/typescript/features/ota/environment.d.ts +99 -0
  793. package/lib/typescript/features/ota/geoCountry.d.ts +14 -0
  794. package/lib/typescript/features/ota/retry.d.ts +53 -0
  795. package/lib/typescript/features/ota/signedDownload.d.ts +81 -0
  796. package/lib/typescript/features/ota/useOtaUpdate.d.ts +72 -0
  797. package/lib/typescript/features/performance/PerformanceFeature.d.ts +132 -0
  798. package/lib/typescript/features/performance/collectors/AppLaunchCollector.d.ts +27 -0
  799. package/lib/typescript/features/performance/collectors/AutoScreenLoadCollector.d.ts +70 -0
  800. package/lib/typescript/features/performance/collectors/CustomTraceCollector.d.ts +35 -0
  801. package/lib/typescript/features/performance/collectors/FrameMetricsCollector.d.ts +74 -0
  802. package/lib/typescript/features/performance/collectors/JsStallCollector.d.ts +45 -0
  803. package/lib/typescript/features/performance/collectors/NetworkPerfCollector.d.ts +23 -0
  804. package/lib/typescript/features/performance/collectors/ScreenLoadCollector.d.ts +30 -0
  805. package/lib/typescript/features/performance/collectors/UiHangCollector.d.ts +21 -0
  806. package/lib/typescript/features/performance/config.d.ts +73 -0
  807. package/lib/typescript/features/performance/getNativePerformanceModule.d.ts +2 -0
  808. package/lib/typescript/features/performance/index.d.ts +10 -0
  809. package/lib/typescript/features/performance/metrics/MetricsEngine.d.ts +69 -0
  810. package/lib/typescript/features/performance/models.d.ts +169 -0
  811. package/lib/typescript/features/performance/transport/PerformanceTransport.d.ts +40 -0
  812. package/lib/typescript/features/profiler/ProfilerFeature.d.ts +92 -0
  813. package/lib/typescript/features/profiler/config.d.ts +85 -0
  814. package/lib/typescript/features/profiler/contracts.d.ts +142 -0
  815. package/lib/typescript/features/profiler/index.d.ts +13 -0
  816. package/lib/typescript/features/profiler/models.d.ts +332 -0
  817. package/lib/typescript/features/profiler/transport/ProfilerTransport.d.ts +30 -0
  818. package/lib/typescript/features/replay/bridge/adapters/bridgeAdapter.d.ts +52 -0
  819. package/lib/typescript/features/replay/bridge/eventEmitter.d.ts +100 -0
  820. package/lib/typescript/features/replay/bridge/nativeModule.d.ts +166 -0
  821. package/lib/typescript/features/replay/bridge/nativeQuota.d.ts +26 -0
  822. package/lib/typescript/features/replay/core/clock/clock.d.ts +16 -0
  823. package/lib/typescript/features/replay/core/config/defaults.d.ts +28 -0
  824. package/lib/typescript/features/replay/core/config/validator.d.ts +13 -0
  825. package/lib/typescript/features/replay/core/env/environmentDetector.d.ts +14 -0
  826. package/lib/typescript/features/replay/core/errors/safeCall.d.ts +12 -0
  827. package/lib/typescript/features/replay/core/ids/sessionId.d.ts +15 -0
  828. package/lib/typescript/features/replay/core/logger/logger.d.ts +15 -0
  829. package/lib/typescript/features/replay/core/privacy/privacyTypes.d.ts +24 -0
  830. package/lib/typescript/features/replay/core/queue/boundedQueue.d.ts +29 -0
  831. package/lib/typescript/features/replay/integrations/alert/alertInstrumentation.d.ts +48 -0
  832. package/lib/typescript/features/replay/integrations/logs/consoleIntegration.d.ts +18 -0
  833. package/lib/typescript/features/replay/integrations/network/networkAdapter.d.ts +31 -0
  834. package/lib/typescript/features/replay/integrations/react-navigation/navigationIntegration.d.ts +25 -0
  835. package/lib/typescript/features/replay/integrations/touch/ReplayRoot.d.ts +26 -0
  836. package/lib/typescript/features/replay/pipeline/batching/batchManager.d.ts +47 -0
  837. package/lib/typescript/features/replay/pipeline/envelope/envelopeBuilder.d.ts +12 -0
  838. package/lib/typescript/features/replay/pipeline/retry/retryPolicy.d.ts +17 -0
  839. package/lib/typescript/features/replay/pipeline/transport/transportTypes.d.ts +40 -0
  840. package/lib/typescript/features/replay/public/api.d.ts +83 -0
  841. package/lib/typescript/features/replay/public/enums.d.ts +73 -0
  842. package/lib/typescript/features/replay/public/types.d.ts +249 -0
  843. package/lib/typescript/features/replay/replay/breadcrumbs/breadcrumbCollector.d.ts +26 -0
  844. package/lib/typescript/features/replay/replay/frames/frameModels.d.ts +23 -0
  845. package/lib/typescript/features/replay/replay/session/sessionOrchestrator.d.ts +53 -0
  846. package/lib/typescript/features/replay/replay/timeline/timelineModels.d.ts +29 -0
  847. package/lib/typescript/features/replay/transport/BackendReplayTransport.d.ts +45 -0
  848. package/lib/typescript/features/replay/transport/CompositeReplayTransport.d.ts +22 -0
  849. package/lib/typescript/features/replay/transport/DesktopReplayTransport.d.ts +35 -0
  850. package/lib/typescript/features/replay/transport/ReplayTransport.d.ts +72 -0
  851. package/lib/typescript/features/session/BackendSessionAdapter.d.ts +528 -0
  852. package/lib/typescript/features/session/DesktopSessionTransport.d.ts +28 -0
  853. package/lib/typescript/features/session/JourneyEventPipeline.d.ts +74 -0
  854. package/lib/typescript/features/session/ReplayCaptureManager.d.ts +391 -0
  855. package/lib/typescript/features/session/ScrollTracker.d.ts +48 -0
  856. package/lib/typescript/features/session/SessionManager.d.ts +414 -0
  857. package/lib/typescript/features/session/SyncDecisionEngine.d.ts +33 -0
  858. package/lib/typescript/features/session/frameLink.d.ts +27 -0
  859. package/lib/typescript/features/session/frameScrollState.d.ts +27 -0
  860. package/lib/typescript/features/session/index.d.ts +23 -0
  861. package/lib/typescript/features/session/nativeCapture.d.ts +18 -0
  862. package/lib/typescript/features/session/outboxFrameCapture.d.ts +20 -0
  863. package/lib/typescript/features/session/sessionTypes.d.ts +362 -0
  864. package/lib/typescript/features/session/viewportPlausibility.d.ts +72 -0
  865. package/lib/typescript/features/skan/skanBridge.d.ts +18 -0
  866. package/lib/typescript/features/skan/skanConversionManager.d.ts +69 -0
  867. package/lib/typescript/index.d.ts +59 -0
  868. package/lib/typescript/integrations/fetch/fetchInterceptor.d.ts +41 -0
  869. package/lib/typescript/integrations/navigation/screenTracker.d.ts +1 -0
  870. package/lib/typescript/integrations/network/bodyCapture.d.ts +101 -0
  871. package/lib/typescript/integrations/xhr/xhrInterceptor.d.ts +46 -0
  872. package/lib/typescript/metro/composeSourceMap.d.ts +26 -0
  873. package/lib/typescript/metro/featureModules.d.ts +49 -0
  874. package/lib/typescript/metro/index.d.ts +99 -0
  875. package/lib/typescript/metro/optionalDependencyStub.d.ts +14 -0
  876. package/lib/typescript/metro/optionalModules.d.ts +20 -0
  877. package/lib/typescript/metro/serializerCompose.d.ts +46 -0
  878. package/lib/typescript/pipeline/dispatcher/dispatcher.d.ts +7 -0
  879. package/lib/typescript/pipeline/envelope/envelope.d.ts +16 -0
  880. package/lib/typescript/pipeline/envelope/serializer.d.ts +7 -0
  881. package/lib/typescript/pipeline/processors/dedupe.d.ts +1 -0
  882. package/lib/typescript/pipeline/processors/enrich.d.ts +3 -0
  883. package/lib/typescript/pipeline/processors/sampling.d.ts +1 -0
  884. package/lib/typescript/pipeline/processors/sanitize.d.ts +3 -0
  885. package/lib/typescript/pipeline/queue/flushQueue.d.ts +12 -0
  886. package/lib/typescript/pipeline/queue/memoryQueue.d.ts +12 -0
  887. package/lib/typescript/pipeline/queue/persistentQueue.d.ts +120 -0
  888. package/lib/typescript/pipeline/queue/queuePolicy.d.ts +1 -0
  889. package/lib/typescript/pipeline/scheduler/flushScheduler.d.ts +9 -0
  890. package/lib/typescript/pipeline/scheduler/retryPolicy.d.ts +5 -0
  891. package/lib/typescript/public/ScaleBunErrorBoundary.d.ts +44 -0
  892. package/lib/typescript/public/ScaleBunFacade.d.ts +800 -0
  893. package/lib/typescript/public/ScaleBunProvider.d.ts +23 -0
  894. package/lib/typescript/public/typedTracker.d.ts +88 -0
  895. package/lib/typescript/public/types.d.ts +316 -0
  896. package/lib/typescript/push/PushManager.d.ts +69 -0
  897. package/lib/typescript/push/adapters/ManualAdapter.d.ts +40 -0
  898. package/lib/typescript/push/adapters/NativeBridgeAdapter.d.ts +37 -0
  899. package/lib/typescript/push/adapters/NoopAdapter.d.ts +21 -0
  900. package/lib/typescript/push/adapters/RNFirebaseMessagingAdapter.d.ts +39 -0
  901. package/lib/typescript/push/adapters/loadMessaging.d.ts +17 -0
  902. package/lib/typescript/push/adapters/loadNotifee.d.ts +15 -0
  903. package/lib/typescript/push/adapters/selectAdapter.d.ts +20 -0
  904. package/lib/typescript/push/detect/capabilities.d.ts +15 -0
  905. package/lib/typescript/push/index.d.ts +10 -0
  906. package/lib/typescript/push/native/nativeNotifications.d.ts +65 -0
  907. package/lib/typescript/push/types.d.ts +143 -0
  908. package/lib/typescript/specs/NativeReplaySdk.d.ts +69 -0
  909. package/lib/typescript/specs/NativeScaleBunCrash.d.ts +58 -0
  910. package/lib/typescript/specs/NativeScaleBunInstallReferrer.d.ts +28 -0
  911. package/lib/typescript/specs/NativeScaleBunOta.d.ts +141 -0
  912. package/lib/typescript/specs/NativeScaleBunPerformance.d.ts +31 -0
  913. package/lib/typescript/specs/NativeScaleBunProfiler.d.ts +38 -0
  914. package/lib/typescript/specs/NativeScaleBunStorage.d.ts +55 -0
  915. package/lib/typescript/storage/StorageBackend.d.ts +131 -0
  916. package/lib/typescript/storage/db/sqlite.d.ts +1 -0
  917. package/lib/typescript/storage/files/fileStore.d.ts +1 -0
  918. package/lib/typescript/transport/auth/sdkSession.d.ts +10 -0
  919. package/lib/typescript/transport/backoff/exponentialJitter.d.ts +5 -0
  920. package/lib/typescript/transport/http/endpoints.d.ts +26 -0
  921. package/lib/typescript/transport/http/httpClient.d.ts +23 -0
  922. package/lib/typescript/transport/rateLimit/retryAfter.d.ts +1 -0
  923. package/lib/typescript/transport/signing/requestSigner.d.ts +1 -0
  924. package/lib/typescript/vendor/protocol/index.d.ts +345 -0
  925. package/lib/typescript/vendor/protocol/internal/validation.d.ts +114 -0
  926. package/lib/typescript/vendor/sdk-contracts/bridge.d.ts +104 -0
  927. package/lib/typescript/vendor/sdk-contracts/config.d.ts +156 -0
  928. package/lib/typescript/vendor/sdk-contracts/events.d.ts +42 -0
  929. package/lib/typescript/vendor/sdk-contracts/features.d.ts +38 -0
  930. package/lib/typescript/vendor/sdk-contracts/index.d.ts +15 -0
  931. package/lib/typescript/vendor/sdk-contracts/platform.d.ts +35 -0
  932. package/lib/typescript/vendor/sdk-contracts/session-boundary.d.ts +42 -0
  933. package/lib/typescript/vendor/sdk-contracts/session.d.ts +157 -0
  934. package/package.json +153 -0
  935. package/react-native.config.js +24 -0
  936. package/scalebun-react-native.podspec +44 -0
  937. package/src/analytics/EventTracker.ts +654 -0
  938. package/src/analytics/automaticEvents.ts +109 -0
  939. package/src/analytics/batching.ts +54 -0
  940. package/src/analytics/eventLane.ts +48 -0
  941. package/src/analytics/revenue.ts +143 -0
  942. package/src/analytics/subscription.ts +145 -0
  943. package/src/bootstrap/FeatureRegistry.ts +81 -0
  944. package/src/bootstrap/SDKBootstrapper.ts +769 -0
  945. package/src/bucketing/fnv1a32.ts +40 -0
  946. package/src/compat/codepush.ts +189 -0
  947. package/src/config/ConfigManager.ts +233 -0
  948. package/src/config/configTypes.ts +62 -0
  949. package/src/config/otaPolicyState.ts +79 -0
  950. package/src/config/quotaState.ts +484 -0
  951. package/src/core/architecture.ts +39 -0
  952. package/src/core/clock/now.ts +6 -0
  953. package/src/core/config/defaults.ts +0 -0
  954. package/src/core/config/schema.ts +455 -0
  955. package/src/core/constants/endpoints.ts +12 -0
  956. package/src/core/constants/protocol.ts +24 -0
  957. package/src/core/constants/timings.ts +25 -0
  958. package/src/core/constants/version.ts +11 -0
  959. package/src/core/context/app.ts +0 -0
  960. package/src/core/context/device.ts +169 -0
  961. package/src/core/context/session.ts +0 -0
  962. package/src/core/context/user.ts +26 -0
  963. package/src/core/contracts/IFeature.ts +53 -0
  964. package/src/core/di/container.ts +26 -0
  965. package/src/core/encoding/base64.ts +46 -0
  966. package/src/core/id/deviceId.ts +51 -0
  967. package/src/core/id/installationId.ts +52 -0
  968. package/src/core/id/sessionId.ts +0 -0
  969. package/src/core/lifecycle/appLifecycle.ts +33 -0
  970. package/src/core/lifecycle/crashSafe.ts +29 -0
  971. package/src/core/logger/errorClassification.ts +108 -0
  972. package/src/core/logger/internalLogger.ts +65 -0
  973. package/src/core/logger/levels.ts +0 -0
  974. package/src/crypto/hmacSha256.ts +106 -0
  975. package/src/debug/bootstrap.ts +436 -0
  976. package/src/debug/commands.ts +597 -0
  977. package/src/debug/configBuilder.ts +56 -0
  978. package/src/debug/exportBridge.ts +155 -0
  979. package/src/debug/hostResolver.ts +34 -0
  980. package/src/debug/index.ts +25 -0
  981. package/src/debug/metrics.ts +29 -0
  982. package/src/debug/perf.ts +212 -0
  983. package/src/debug/perfWiring.ts +119 -0
  984. package/src/debug/protocol.ts +58 -0
  985. package/src/debug/redaction.ts +483 -0
  986. package/src/debug/replayWiring.ts +148 -0
  987. package/src/debug/screenTracking.ts +55 -0
  988. package/src/debug/sessionWiring.ts +59 -0
  989. package/src/debug/stream.ts +561 -0
  990. package/src/debug/transport.ts +440 -0
  991. package/src/features/bugreport/BugReportFeature.ts +128 -0
  992. package/src/features/bugreport/buildPayload.ts +116 -0
  993. package/src/features/bugreport/index.ts +0 -0
  994. package/src/features/crash/CrashFeature.ts +87 -0
  995. package/src/features/crash/CrashReporter.ts +189 -0
  996. package/src/features/crash/NativeCrashFeature.ts +42 -0
  997. package/src/features/crash/capture.ts +48 -0
  998. package/src/features/crash/globalHandler.ts +39 -0
  999. package/src/features/crash/index.ts +8 -0
  1000. package/src/features/crash/nativeCrashBridge.ts +352 -0
  1001. package/src/features/crash/rejectionHandler.ts +196 -0
  1002. package/src/features/crash/scrubCrash.ts +175 -0
  1003. package/src/features/engage/EngageAnchor.tsx +159 -0
  1004. package/src/features/engage/EngageArchetypeRenderers.tsx +3705 -0
  1005. package/src/features/engage/EngageInAppView.tsx +2678 -0
  1006. package/src/features/engage/EngageInlinePlacement.tsx +169 -0
  1007. package/src/features/engage/EngagePromptProvider.tsx +1318 -0
  1008. package/src/features/engage/EngagePromptView.tsx +1400 -0
  1009. package/src/features/engage/EngageTransport.ts +668 -0
  1010. package/src/features/engage/EngageVariantContent.tsx +1483 -0
  1011. package/src/features/engage/__test-support__/reactNativeStub.js +40 -0
  1012. package/src/features/engage/attachmentCapture.ts +45 -0
  1013. package/src/features/engage/captureVoiceAttachment.ts +81 -0
  1014. package/src/features/engage/engageCoachmarkTour.ts +120 -0
  1015. package/src/features/engage/engageGameLogic.ts +347 -0
  1016. package/src/features/engage/engageMediaSizing.ts +76 -0
  1017. package/src/features/engage/engageMultiStepSheet.ts +53 -0
  1018. package/src/features/engage/engageOutcome.ts +157 -0
  1019. package/src/features/engage/engagePushTokenBridge.ts +84 -0
  1020. package/src/features/engage/engageShakeBridge.ts +67 -0
  1021. package/src/features/engage/engageSignals.ts +40 -0
  1022. package/src/features/engage/engageStoreReviewBridge.ts +48 -0
  1023. package/src/features/engage/engageTestSeenStore.ts +95 -0
  1024. package/src/features/engage/engageThrottle.ts +478 -0
  1025. package/src/features/engage/engageTriggerEngine.ts +350 -0
  1026. package/src/features/engage/engageTypes.ts +712 -0
  1027. package/src/features/engage/engageVariantResolver.ts +364 -0
  1028. package/src/features/engage/engageWindowInsets.ts +108 -0
  1029. package/src/features/engage/gestureTriggerDetector.ts +83 -0
  1030. package/src/features/engage/transcription/TranscriptionProvider.ts +68 -0
  1031. package/src/features/install-referrer/installReferrer.ts +112 -0
  1032. package/src/features/journey/ScaleBunDebugRoot.tsx +1045 -0
  1033. package/src/features/journey/ScaleBunFlatList.tsx +39 -0
  1034. package/src/features/journey/ScaleBunImpression.tsx +109 -0
  1035. package/src/features/journey/ScaleBunScrollView.tsx +101 -0
  1036. package/src/features/journey/ScaleBunSectionList.tsx +39 -0
  1037. package/src/features/journey/autoInstrumentScroll.ts +155 -0
  1038. package/src/features/journey/calibrationContext.ts +44 -0
  1039. package/src/features/journey/gestureBuffer.ts +59 -0
  1040. package/src/features/journey/gestureDetector.ts +162 -0
  1041. package/src/features/journey/impression.ts +92 -0
  1042. package/src/features/journey/interactionProtocol.ts +243 -0
  1043. package/src/features/journey/journeyManager.ts +469 -0
  1044. package/src/features/journey/journeyTypes.ts +215 -0
  1045. package/src/features/journey/nativeScroll.ts +94 -0
  1046. package/src/features/journey/navDetector.ts +149 -0
  1047. package/src/features/journey/screenshotHelper.ts +137 -0
  1048. package/src/features/journey/scrollContext.ts +146 -0
  1049. package/src/features/journey/targetGeometry.ts +197 -0
  1050. package/src/features/journey/targetRegistry.ts +43 -0
  1051. package/src/features/journey/touchTarget.ts +339 -0
  1052. package/src/features/journey/uiState.ts +182 -0
  1053. package/src/features/navigation/AutoScreenDetector.ts +617 -0
  1054. package/src/features/network/NetworkFeature.ts +232 -0
  1055. package/src/features/network/index.ts +59 -0
  1056. package/src/features/network/thirdParty.ts +160 -0
  1057. package/src/features/ota/OtaEventEmitter.ts +187 -0
  1058. package/src/features/ota/OtaOrchestrator.ts +1513 -0
  1059. package/src/features/ota/OtaTypes.ts +230 -0
  1060. package/src/features/ota/deviceAttributes.ts +46 -0
  1061. package/src/features/ota/environment.ts +199 -0
  1062. package/src/features/ota/geoCountry.ts +85 -0
  1063. package/src/features/ota/retry.ts +123 -0
  1064. package/src/features/ota/signedDownload.ts +202 -0
  1065. package/src/features/ota/useOtaUpdate.ts +161 -0
  1066. package/src/features/performance/PerformanceFeature.ts +729 -0
  1067. package/src/features/performance/collectors/AppLaunchCollector.ts +131 -0
  1068. package/src/features/performance/collectors/AutoScreenLoadCollector.ts +258 -0
  1069. package/src/features/performance/collectors/CustomTraceCollector.ts +116 -0
  1070. package/src/features/performance/collectors/FrameMetricsCollector.ts +210 -0
  1071. package/src/features/performance/collectors/JsStallCollector.ts +184 -0
  1072. package/src/features/performance/collectors/NetworkPerfCollector.ts +69 -0
  1073. package/src/features/performance/collectors/ScreenLoadCollector.ts +95 -0
  1074. package/src/features/performance/collectors/UiHangCollector.ts +98 -0
  1075. package/src/features/performance/config.ts +136 -0
  1076. package/src/features/performance/getNativePerformanceModule.ts +38 -0
  1077. package/src/features/performance/index.ts +28 -0
  1078. package/src/features/performance/metrics/MetricsEngine.ts +152 -0
  1079. package/src/features/performance/models.ts +235 -0
  1080. package/src/features/performance/transport/PerformanceTransport.ts +161 -0
  1081. package/src/features/profiler/ProfilerFeature.ts +661 -0
  1082. package/src/features/profiler/config.ts +230 -0
  1083. package/src/features/profiler/contracts.ts +176 -0
  1084. package/src/features/profiler/index.ts +45 -0
  1085. package/src/features/profiler/models.ts +430 -0
  1086. package/src/features/profiler/transport/ProfilerTransport.ts +93 -0
  1087. package/src/features/replay/bridge/adapters/bridgeAdapter.ts +235 -0
  1088. package/src/features/replay/bridge/eventEmitter.ts +176 -0
  1089. package/src/features/replay/bridge/nativeModule.ts +252 -0
  1090. package/src/features/replay/bridge/nativeQuota.ts +111 -0
  1091. package/src/features/replay/core/clock/clock.ts +38 -0
  1092. package/src/features/replay/core/config/defaults.ts +66 -0
  1093. package/src/features/replay/core/config/validator.ts +113 -0
  1094. package/src/features/replay/core/env/environmentDetector.ts +21 -0
  1095. package/src/features/replay/core/errors/safeCall.ts +34 -0
  1096. package/src/features/replay/core/ids/sessionId.ts +44 -0
  1097. package/src/features/replay/core/logger/logger.ts +36 -0
  1098. package/src/features/replay/core/privacy/privacyTypes.ts +41 -0
  1099. package/src/features/replay/core/queue/boundedQueue.ts +71 -0
  1100. package/src/features/replay/integrations/alert/alertInstrumentation.ts +277 -0
  1101. package/src/features/replay/integrations/logs/consoleIntegration.ts +136 -0
  1102. package/src/features/replay/integrations/network/networkAdapter.ts +73 -0
  1103. package/src/features/replay/integrations/react-navigation/navigationIntegration.ts +89 -0
  1104. package/src/features/replay/integrations/touch/ReplayRoot.tsx +114 -0
  1105. package/src/features/replay/pipeline/batching/batchManager.ts +133 -0
  1106. package/src/features/replay/pipeline/envelope/envelopeBuilder.ts +66 -0
  1107. package/src/features/replay/pipeline/retry/retryPolicy.ts +62 -0
  1108. package/src/features/replay/pipeline/transport/transportTypes.ts +85 -0
  1109. package/src/features/replay/public/api.ts +364 -0
  1110. package/src/features/replay/public/enums.ts +78 -0
  1111. package/src/features/replay/public/types.ts +297 -0
  1112. package/src/features/replay/replay/breadcrumbs/breadcrumbCollector.ts +115 -0
  1113. package/src/features/replay/replay/frames/frameModels.ts +45 -0
  1114. package/src/features/replay/replay/session/sessionOrchestrator.ts +286 -0
  1115. package/src/features/replay/replay/timeline/timelineModels.ts +129 -0
  1116. package/src/features/replay/transport/BackendReplayTransport.ts +215 -0
  1117. package/src/features/replay/transport/CompositeReplayTransport.ts +82 -0
  1118. package/src/features/replay/transport/DesktopReplayTransport.ts +140 -0
  1119. package/src/features/replay/transport/ReplayTransport.ts +84 -0
  1120. package/src/features/session/BackendSessionAdapter.ts +1977 -0
  1121. package/src/features/session/DesktopSessionTransport.ts +130 -0
  1122. package/src/features/session/JourneyEventPipeline.ts +278 -0
  1123. package/src/features/session/ReplayCaptureManager.ts +1401 -0
  1124. package/src/features/session/ScrollTracker.ts +166 -0
  1125. package/src/features/session/SessionManager.ts +1687 -0
  1126. package/src/features/session/SyncDecisionEngine.ts +117 -0
  1127. package/src/features/session/frameLink.ts +41 -0
  1128. package/src/features/session/frameScrollState.ts +36 -0
  1129. package/src/features/session/index.ts +88 -0
  1130. package/src/features/session/nativeCapture.ts +43 -0
  1131. package/src/features/session/outboxFrameCapture.ts +79 -0
  1132. package/src/features/session/sessionTypes.ts +528 -0
  1133. package/src/features/session/viewportPlausibility.ts +134 -0
  1134. package/src/features/skan/skanBridge.ts +53 -0
  1135. package/src/features/skan/skanConversionManager.ts +173 -0
  1136. package/src/index.ts +206 -0
  1137. package/src/integrations/fetch/fetchInterceptor.ts +201 -0
  1138. package/src/integrations/navigation/screenTracker.ts +0 -0
  1139. package/src/integrations/network/bodyCapture.ts +328 -0
  1140. package/src/integrations/xhr/xhrInterceptor.ts +259 -0
  1141. package/src/metro/composeSourceMap.ts +104 -0
  1142. package/src/metro/featureModules.ts +143 -0
  1143. package/src/metro/index.ts +336 -0
  1144. package/src/metro/optionalDependencyStub.ts +13 -0
  1145. package/src/metro/optionalModules.ts +27 -0
  1146. package/src/metro/serializerCompose.ts +193 -0
  1147. package/src/pipeline/dispatcher/dispatcher.ts +22 -0
  1148. package/src/pipeline/envelope/envelope.ts +31 -0
  1149. package/src/pipeline/envelope/serializer.ts +14 -0
  1150. package/src/pipeline/processors/dedupe.ts +0 -0
  1151. package/src/pipeline/processors/enrich.ts +11 -0
  1152. package/src/pipeline/processors/sampling.ts +0 -0
  1153. package/src/pipeline/processors/sanitize.ts +23 -0
  1154. package/src/pipeline/queue/flushQueue.ts +144 -0
  1155. package/src/pipeline/queue/memoryQueue.ts +31 -0
  1156. package/src/pipeline/queue/persistentQueue.ts +385 -0
  1157. package/src/pipeline/queue/queuePolicy.ts +0 -0
  1158. package/src/pipeline/scheduler/flushScheduler.ts +47 -0
  1159. package/src/pipeline/scheduler/retryPolicy.ts +8 -0
  1160. package/src/public/ScaleBunErrorBoundary.tsx +91 -0
  1161. package/src/public/ScaleBunFacade.ts +2129 -0
  1162. package/src/public/ScaleBunProvider.tsx +91 -0
  1163. package/src/public/typedTracker.ts +123 -0
  1164. package/src/public/types.ts +362 -0
  1165. package/src/push/PushManager.ts +318 -0
  1166. package/src/push/adapters/ManualAdapter.ts +100 -0
  1167. package/src/push/adapters/NativeBridgeAdapter.ts +142 -0
  1168. package/src/push/adapters/NoopAdapter.ts +46 -0
  1169. package/src/push/adapters/RNFirebaseMessagingAdapter.ts +271 -0
  1170. package/src/push/adapters/loadMessaging.ts +24 -0
  1171. package/src/push/adapters/loadNotifee.ts +29 -0
  1172. package/src/push/adapters/selectAdapter.ts +176 -0
  1173. package/src/push/detect/capabilities.ts +124 -0
  1174. package/src/push/index.ts +22 -0
  1175. package/src/push/native/nativeNotifications.ts +207 -0
  1176. package/src/push/types.ts +159 -0
  1177. package/src/specs/NativeReplaySdk.ts +101 -0
  1178. package/src/specs/NativeScaleBunCrash.ts +64 -0
  1179. package/src/specs/NativeScaleBunInstallReferrer.ts +29 -0
  1180. package/src/specs/NativeScaleBunOta.ts +154 -0
  1181. package/src/specs/NativeScaleBunPerformance.ts +34 -0
  1182. package/src/specs/NativeScaleBunProfiler.ts +41 -0
  1183. package/src/specs/NativeScaleBunStorage.ts +59 -0
  1184. package/src/storage/StorageBackend.ts +272 -0
  1185. package/src/storage/db/sqlite.ts +0 -0
  1186. package/src/storage/files/fileStore.ts +0 -0
  1187. package/src/transport/auth/sdkSession.ts +27 -0
  1188. package/src/transport/backoff/exponentialJitter.ts +9 -0
  1189. package/src/transport/http/endpoints.ts +33 -0
  1190. package/src/transport/http/httpClient.ts +73 -0
  1191. package/src/transport/rateLimit/retryAfter.ts +0 -0
  1192. package/src/transport/signing/requestSigner.ts +0 -0
  1193. package/src/vendor/protocol/index.ts +391 -0
  1194. package/src/vendor/protocol/internal/validation.ts +497 -0
  1195. package/src/vendor/sdk-contracts/bridge.ts +162 -0
  1196. package/src/vendor/sdk-contracts/config.ts +192 -0
  1197. package/src/vendor/sdk-contracts/events.ts +50 -0
  1198. package/src/vendor/sdk-contracts/features.ts +42 -0
  1199. package/src/vendor/sdk-contracts/index.ts +98 -0
  1200. package/src/vendor/sdk-contracts/platform.ts +42 -0
  1201. package/src/vendor/sdk-contracts/session-boundary.ts +55 -0
  1202. package/src/vendor/sdk-contracts/session.ts +225 -0
  1203. package/src/vendor/vendor.manifest +10 -0
@@ -0,0 +1,1038 @@
1
+ "use strict";
2
+
3
+ Object.defineProperty(exports, "__esModule", {
4
+ value: true
5
+ });
6
+ exports.ScaleBunDebugRoot = ScaleBunDebugRoot;
7
+ exports.ScaleBunScreen = ScaleBunScreen;
8
+ exports.useScaleBunScreen = useScaleBunScreen;
9
+ var _nativeScroll = require("./nativeScroll");
10
+ var _react = _interopRequireWildcard(require("react"));
11
+ var _reactNative = require("react-native");
12
+ var _touchTarget = require("./touchTarget");
13
+ var _targetGeometry = require("./targetGeometry");
14
+ var _scrollContext = require("./scrollContext");
15
+ var _device = require("../../core/context/device");
16
+ var _interactionProtocol = require("./interactionProtocol");
17
+ var _jsxRuntime = require("react/jsx-runtime");
18
+ function _interopRequireWildcard(e, t) { if ("function" == typeof WeakMap) var r = new WeakMap(), n = new WeakMap(); return (_interopRequireWildcard = function (e, t) { if (!t && e && e.__esModule) return e; var o, i, f = { __proto__: null, default: e }; if (null === e || "object" != typeof e && "function" != typeof e) return f; if (o = t ? n : r) { if (o.has(e)) return o.get(e); o.set(e, f); } for (const t in e) "default" !== t && {}.hasOwnProperty.call(e, t) && ((i = (o = Object.defineProperty) && Object.getOwnPropertyDescriptor(e, t)) && (i.get || i.set) ? o(f, t, i) : f[t] = e[t]); return f; })(e, t); }
19
+ /**
20
+ * ScaleBun SDK — ScaleBunDebugRoot
21
+ *
22
+ * Root wrapper component that provides:
23
+ * 1. Native screenshot capture wiring (via bridgeAdapter)
24
+ * 2. Navigation detection integration
25
+ * 3. Lightweight gesture capture layer
26
+ * 4. Emits EVENT_DEBUG_READY on mount
27
+ *
28
+ * Usage in demo app:
29
+ * <ScaleBunDebugRoot>
30
+ * <App />
31
+ * </ScaleBunDebugRoot>
32
+ *
33
+ * Also provides:
34
+ * <ScaleBunScreen name="..." /> — Screen beacon component
35
+ * useScaleBunScreen("name") — Screen beacon hook
36
+ *
37
+ * IMPORTANT: All heavy imports (JourneyManager, etc.) are LAZY
38
+ * to avoid pulling in native module dependencies at load time.
39
+ */
40
+
41
+ // ─── Lazy imports to avoid native module cascade at load time ────────────────
42
+ // We only import TYPE references at the top level; actual modules are require()'d
43
+ // inside effects or callbacks, which run AFTER the native runtime is initialized.
44
+ let _bootstrap = null;
45
+ function getBootstrap() {
46
+ if (!_bootstrap) {
47
+ _bootstrap = require('../../debug/bootstrap');
48
+ }
49
+ return _bootstrap;
50
+ }
51
+
52
+ // ─── Context for Journey Manager ────────────────────────────────────────────
53
+
54
+ const JourneyContext = /*#__PURE__*/(0, _react.createContext)(null);
55
+
56
+ /**
57
+ * Floor on how often a UI-state change may request a screenshot.
58
+ *
59
+ * One frame per second is far finer than any state a person perceives changing, and far coarser
60
+ * than a render loop — which is the case that matters, because a host may legitimately declare
61
+ * state from inside render and an oscillating dimension would otherwise capture continuously.
62
+ */
63
+ const UI_STATE_CAPTURE_MIN_INTERVAL_MS = 1000;
64
+
65
+ // ─── ScaleBunDebugRoot ───────────────────────────────────────────────────────────
66
+
67
+ function ScaleBunDebugRoot({
68
+ children,
69
+ navigationRef,
70
+ captureAutomaticInteractions = false,
71
+ suppressDeprecationWarning = false
72
+ }) {
73
+ const rootRef = (0, _react.useRef)(null);
74
+ const managerRef = (0, _react.useRef)(null);
75
+ const initializedRef = (0, _react.useRef)(false);
76
+ (0, _react.useEffect)(() => {
77
+ // Guard: only initialize once
78
+ if (initializedRef.current) return;
79
+
80
+ // Deprecation notice (once per mount)
81
+ if (!suppressDeprecationWarning) {
82
+ console.warn('[ScaleBun] <ScaleBunDebugRoot> is no longer required for standard SDK usage. ' + 'Use <ScaleBunProvider> for initialization, Engage, automatic events, ' + 'touch tracking, and journey features in one wrapper. ' + 'See: https://docs.scalebun.com/migration/v2');
83
+ }
84
+
85
+ // LAZY: load bootstrap module only inside effect (after native runtime ready)
86
+ let bs;
87
+ try {
88
+ bs = getBootstrap();
89
+ } catch (e) {
90
+ console.warn('[ScaleBunDebugRoot] Failed to load bootstrap:', e?.message);
91
+ return;
92
+ }
93
+ if (!bs) return;
94
+ const isDebugEnabled = bs.isDebugEnabled();
95
+ let transport = null;
96
+ let journeyConfig = {
97
+ enabled: false
98
+ };
99
+ if (!isDebugEnabled) {
100
+ // This is expected when ScaleBunDebugRoot is composed internally by
101
+ // ScaleBunProvider. Keep the diagnostic for direct legacy usage, but
102
+ // do not surface a LogBox warning in normal application mode.
103
+ if (!suppressDeprecationWarning) {
104
+ console.warn('[ScaleBunDebugRoot] Debug not enabled — running in production mode');
105
+ }
106
+ try {
107
+ bs._setDebugReady(true);
108
+ } catch {/* no-throw */}
109
+ } else {
110
+ transport = bs._getTransport();
111
+ if (!transport) {
112
+ console.warn('[ScaleBunDebugRoot] No transport — skipping journey init');
113
+ } else {
114
+ try {
115
+ journeyConfig = bs._getJourneyConfig();
116
+ } catch {
117
+ journeyConfig = {
118
+ enabled: false
119
+ };
120
+ }
121
+ if (!journeyConfig.enabled) {
122
+ console.warn('[ScaleBunDebugRoot] Journey not enabled — passthrough mode');
123
+ try {
124
+ bs._setDebugReady(true);
125
+ } catch {/* no-throw */}
126
+ }
127
+ }
128
+ }
129
+
130
+ // Wire unified SessionManager (independent of journey)
131
+ // NOTE: We do NOT auto-start the session here. The session stays idle
132
+ // until the desktop user explicitly presses Record (sends startSession command).
133
+ // We only wire the native capture bridge so that when a session IS started,
134
+ // the capture infrastructure is ready.
135
+ try {
136
+ const {
137
+ SessionManager
138
+ } = require('../session/SessionManager');
139
+ const sessionManager = SessionManager.getExistingInstance();
140
+ if (sessionManager) {
141
+ // Wire native bridge capture — uses PixelCopy (Android) / UIGraphicsImageRenderer (iOS)
142
+ // via the shared native module. This replaces the previous ViewShot dependency.
143
+ setTimeout(() => {
144
+ try {
145
+ const {
146
+ bridgeAdapter
147
+ } = require('../replay/bridge/adapters/bridgeAdapter');
148
+ const {
149
+ Dimensions,
150
+ Platform
151
+ } = require('react-native');
152
+ if (bridgeAdapter.isAvailable()) {
153
+ // Create a capture function compatible with NativeCaptureFn
154
+ const nativeBridgeCapture = async (_sessionId, _reason, _quality) => {
155
+ try {
156
+ const result = await bridgeAdapter.captureScreenshot(_reason || 'session');
157
+ if (!result?.base64) return null;
158
+ const {
159
+ width,
160
+ height
161
+ } = Dimensions.get('window');
162
+ return {
163
+ base64: result.base64,
164
+ width: result.width || Math.round(width),
165
+ height: result.height || Math.round(height),
166
+ byteSize: result.sizeBytes || Math.round(result.base64.length * 0.75),
167
+ format: result.format ?? 'jpeg',
168
+ frameHash: result.frameHash,
169
+ platform: (0, _device.resolvePlatformOS)()
170
+ };
171
+ } catch {
172
+ return null;
173
+ }
174
+ };
175
+
176
+ // Inject into SessionManager (hot-swaps if session is active)
177
+ if (typeof sessionManager.setNativeCapture === 'function') {
178
+ sessionManager.setNativeCapture(nativeBridgeCapture);
179
+ console.warn('[ScaleBunDebugRoot] ✅ Native bridge capture wired');
180
+ }
181
+ } else {
182
+ console.warn('[ScaleBunDebugRoot] ⚠️ Native capture module not available');
183
+ }
184
+ } catch (capErr) {
185
+ console.warn('[ScaleBunDebugRoot] ⚠️ Native capture wiring failed:', capErr?.message);
186
+ }
187
+ }, 500);
188
+ console.warn('[ScaleBunDebugRoot] ✅ Session wired');
189
+ }
190
+ } catch {/* SessionManager may not be available — non-fatal */}
191
+
192
+ // Always wire AutoScreenDetector to React Navigation if a ref is provided.
193
+ // Register even when ref.current is still null: at mount the
194
+ // <NavigationContainer> child hasn't attached the ref yet. AutoScreenDetector's
195
+ // poller retries wiring the 'state' listener once the container populates,
196
+ // so gating on `ref.current` here would permanently miss the (common) case
197
+ // where the container mounts after this effect runs.
198
+ if (navigationRef) {
199
+ try {
200
+ const {
201
+ AutoScreenDetector
202
+ } = require('../navigation/AutoScreenDetector');
203
+ AutoScreenDetector.getInstance().setNavigationRef(navigationRef);
204
+ } catch {/* no-throw */}
205
+ }
206
+ if (!journeyConfig.enabled || !transport) {
207
+ return; // Journey disabled — session is wired above independently
208
+ }
209
+
210
+ // LAZY: only now require JourneyManager (which pulls in screenshot/gesture deps)
211
+ let JourneyManager;
212
+ try {
213
+ JourneyManager = require('./journeyManager').JourneyManager;
214
+ } catch (e) {
215
+ console.warn('[ScaleBunDebugRoot] Failed to load JourneyManager:', e?.message);
216
+ try {
217
+ bs._setDebugReady(true);
218
+ } catch {/* no-throw */}
219
+ return;
220
+ }
221
+
222
+ // Create journey manager (idempotent singleton)
223
+ const manager = JourneyManager.getInstance(transport, journeyConfig);
224
+ managerRef.current = manager;
225
+
226
+ // Wire into command registry
227
+ try {
228
+ const commands = bs._getCommands();
229
+ if (commands) {
230
+ commands.setJourneyManager(manager);
231
+ commands.setJourneyEnabled(true);
232
+ commands.setDebugReady(true);
233
+ }
234
+ } catch {/* no-throw */}
235
+
236
+ // Initialize with root ref (slight delay to ensure View is mounted)
237
+ const timer = setTimeout(() => {
238
+ try {
239
+ manager.initialize(rootRef.current);
240
+
241
+ // If React Navigation ref is available, subscribe
242
+ if (navigationRef?.current) {
243
+ try {
244
+ const navContainer = navigationRef.current;
245
+ if (navContainer.addListener) {
246
+ navContainer.addListener('state', () => {
247
+ try {
248
+ const state = navContainer.getRootState();
249
+ manager.nav.handleNavigationStateChange(state);
250
+ } catch {/* no-throw */}
251
+ });
252
+ // Get initial state
253
+ try {
254
+ const state = navContainer.getRootState();
255
+ if (state) {
256
+ manager.nav.handleNavigationStateChange(state);
257
+ }
258
+ } catch {/* no-throw */}
259
+ }
260
+ } catch {/* no-throw */}
261
+ }
262
+ bs._setDebugReady(true);
263
+ initializedRef.current = true;
264
+ console.warn('[ScaleBunDebugRoot] ✅ Journey system initialized');
265
+ } catch (e) {
266
+ console.warn('[ScaleBunDebugRoot] ❌ Initialization error:', e?.message);
267
+ }
268
+ }, 200);
269
+ return () => {
270
+ clearTimeout(timer);
271
+ };
272
+ }, [navigationRef]);
273
+
274
+ /**
275
+ * RN-11 — CAPTURE A FRAME WHEN THE UI CHANGES SHAPE.
276
+ *
277
+ * A declared state used to have no picture of its own. Nothing captured on `setUiState`, so a
278
+ * state's visual existed only if a screenshot happened to be taken for another reason — a
279
+ * navigation, a timer, or the interaction capture that fires AFTER the touch and therefore
280
+ * photographs the outcome. A drawer could be recorded as open with no frame showing it open,
281
+ * or with the frame of the screen that replaced it.
282
+ *
283
+ * The native capture reasons are NAVIGATION, MANUAL, INTERACTION and TIMER; none of them means
284
+ * "the UI changed shape". This routes through the MANUAL path, which is the only one reachable
285
+ * from JS. A dedicated native reason would let the backend tell a state capture from a
286
+ * developer-requested one, and that is a native change on both platforms — worth doing, not
287
+ * doable from here.
288
+ *
289
+ * RATE LIMITED, and the limit is not politeness. A screenshot is expensive, and while
290
+ * `uiState` already collapses redundant declarations, a genuinely oscillating dimension (a
291
+ * spinner toggling, a live-updating badge) would otherwise capture continuously. One frame per
292
+ * second is far finer than any state a person can perceive changing and far coarser than a
293
+ * render loop.
294
+ *
295
+ * Requests only; never awaits and never throws. If the session is not recording,
296
+ * `captureManualFrame` declines and the state simply has no frame — which is the honest
297
+ * outcome and is exactly what the analytics-only lane already reports elsewhere.
298
+ */
299
+ (0, _react.useEffect)(() => {
300
+ let lastCaptureTs = 0;
301
+ const {
302
+ onUiStateChange
303
+ } = require('./uiState');
304
+ const unsubscribe = onUiStateChange(() => {
305
+ const now = Date.now();
306
+ if (now - lastCaptureTs < UI_STATE_CAPTURE_MIN_INTERVAL_MS) return;
307
+ lastCaptureTs = now;
308
+ try {
309
+ const {
310
+ SessionManager
311
+ } = require('../session/SessionManager');
312
+ const sm = SessionManager.getExistingInstance();
313
+ if (sm && typeof sm.captureManualFrame === 'function') {
314
+ /* Fire and forget: the tap that follows must not wait on a screenshot. */
315
+ void sm.captureManualFrame();
316
+ }
317
+ } catch {/* no-throw */}
318
+ });
319
+ return unsubscribe;
320
+ }, []);
321
+
322
+ // ─── Native Interaction Listener ────────────────────────────────────
323
+ // Receives high-confidence ScaleBunNativeInteraction events from the native tracker
324
+ // and forwards them to SessionManager as USER_ACTION events.
325
+ const lastNativeTouchTsRef = (0, _react.useRef)(0);
326
+ const nativeTrackingConfirmedRef = (0, _react.useRef)(false);
327
+ const touchStartRef = (0, _react.useRef)(null);
328
+ const interactionStartsRef = (0, _react.useRef)([]);
329
+ const pendingJsEmitsRef = (0, _react.useRef)(new Map());
330
+ (0, _react.useEffect)(() => {
331
+ let subscription = null;
332
+ try {
333
+ const nativeModule = _reactNative.NativeModules.ReplaySdk;
334
+ if (!nativeModule) return;
335
+ const emitter = new _reactNative.NativeEventEmitter(nativeModule);
336
+ subscription = emitter.addListener('ScaleBunNativeInteraction', event => {
337
+ try {
338
+ // Record timestamp to suppress duplicate JS touch events
339
+ lastNativeTouchTsRef.current = Date.now();
340
+ nativeTrackingConfirmedRef.current = true;
341
+ const nativeOccurredAt = typeof event.occurredAt === 'number' ? event.occurredAt : (typeof event.timestamp === 'number' ? event.timestamp : Date.now()) - (typeof event.durationMs === 'number' ? event.durationMs : 0);
342
+ /**
343
+ * RN-6 — correlate, then CONSUME. See interactionProtocol.ts for why
344
+ * the join is on time at all, and why a refusal is the important part.
345
+ *
346
+ * Pruning first is part of the correctness, not tidying: a start older
347
+ * than the tolerance can never be paired, but while it sits in the list
348
+ * it is still counted by the ambiguity test, so a stale entry can turn a
349
+ * clear pairing into a refusal — and the list only grows.
350
+ */
351
+ (0, _interactionProtocol.pruneInteractionStarts)(interactionStartsRef.current, nativeOccurredAt);
352
+ const correlation = (0, _interactionProtocol.correlateInteraction)(interactionStartsRef.current, nativeOccurredAt);
353
+ const start = correlation.start;
354
+ /**
355
+ * ONE-TO-ONE. Without removing the matched start, a second native event
356
+ * arriving within the window claims the SAME js evidence, so one tap's
357
+ * target is stamped onto another tap that never had one — a duplicate
358
+ * identity that reads as two genuine interactions on the same control.
359
+ */
360
+ if (correlation.index >= 0) {
361
+ interactionStartsRef.current.splice(correlation.index, 1);
362
+ }
363
+
364
+ // Cancel only this physical touch's fallback. A single timer used to cancel a
365
+ // previous rapid tap and silently lose it on devices without native tracking.
366
+ if (start) {
367
+ const pending = pendingJsEmitsRef.current.get(start.interactionId);
368
+ if (pending !== undefined) clearTimeout(pending);
369
+ pendingJsEmitsRef.current.delete(start.interactionId);
370
+ }
371
+ const {
372
+ SessionManager
373
+ } = require('../session/SessionManager');
374
+ const sm = SessionManager.getExistingInstance();
375
+ if (!sm || typeof sm.onGestureDetected !== 'function') return;
376
+
377
+ // Diagnostic: capture window dims at event time. Pure
378
+ // observability — NOT used for normalization (native path
379
+ // already produced normalizedX/Y against the screenshot view).
380
+ let _diagWinW;
381
+ let _diagWinH;
382
+ try {
383
+ const {
384
+ Dimensions
385
+ } = require('react-native');
386
+ const _d = Dimensions.get('window');
387
+ _diagWinW = _d.width;
388
+ _diagWinH = _d.height;
389
+ } catch {/* no-throw */}
390
+ sm.onGestureDetected(event.gestureType || 'tap', {
391
+ interactionId: event.interactionId || start?.interactionId || (0, _interactionProtocol.generateInteractionId)(),
392
+ interactionProtocol: event.interactionProtocol || _interactionProtocol.INTERACTION_PROTOCOL_VERSION,
393
+ occurredAt: nativeOccurredAt,
394
+ /**
395
+ * RN-6 — THESE FIVE FIELDS ARE THE ONLY ONES THE JOIN CARRIES, AND
396
+ * THEREFORE THE ONLY ONES A BAD JOIN CAN FALSIFY.
397
+ *
398
+ * Coordinates below come from native and are right regardless. So a
399
+ * mispairing does not produce visibly broken data: it produces heat
400
+ * in the correct position attributed to the wrong control, in the
401
+ * wrong UI state, on the wrong screen. Every field is individually
402
+ * well-formed and nothing downstream can tell.
403
+ *
404
+ * When the correlation is not 'exact' they are left UNDEFINED rather
405
+ * than filled from a best guess. An interaction with no target is
406
+ * honest and visibly incomplete — the accounting lane can count it as
407
+ * unplaceable and say why. An interaction with the WRONG target is
408
+ * indistinguishable from a correct one and silently corrupts every
409
+ * aggregate it enters. `null` is not `0`, and a guess is not a
410
+ * measurement.
411
+ */
412
+ ui: start?.ui,
413
+ stateStatus: start?.stateStatus ?? 'not_captured',
414
+ target: start?.target,
415
+ targetId: start?.targetId,
416
+ targetSource: start?.targetSource,
417
+ screenName: start?.screenName,
418
+ screenSource: start?.screenSource ?? 'none',
419
+ targetRect: start?.targetRect,
420
+ /**
421
+ * RN-15 — WHERE IN THE CONTROL, computed where both halves exist: the
422
+ * point comes from the native event and the rect was measured at
423
+ * finger-down, in the same capture base. Pairing them here rather than
424
+ * downstream stops anything later reaching for a different rect.
425
+ */
426
+ ...(() => {
427
+ const lp = (0, _targetGeometry.localPoint)(start?.targetRect ?? null, event.normalizedX, event.normalizedY);
428
+ return lp ? {
429
+ localU: lp.u,
430
+ localV: lp.v
431
+ } : {};
432
+ })(),
433
+ /**
434
+ * SCROLL — the JS wrapper's offset when the app uses it, else the NATIVE
435
+ * probe's innermost scroll container (read at ACTION_DOWN, no wrapper
436
+ * needed). The native half comes from this native event, not from the
437
+ * JS join, so it is valid whatever the correlation verdict: it is a
438
+ * measurement of where the finger landed, not an attribution.
439
+ */
440
+ ...(0, _nativeScroll.scrollFields)(start, event),
441
+ itemKey: start?.itemKey,
442
+ itemIndex: start?.itemIndex,
443
+ /**
444
+ * The join's own verdict, shipped with the row so it is auditable
445
+ * rather than a claim made in a comment. 'ambiguous' and 'none' are
446
+ * deliberately distinguished: 'none' means the JS handler never fired
447
+ * (a real capture gap on this platform), 'ambiguous' means it fired
448
+ * more than once too close together to attribute. Those have
449
+ * different fixes, and collapsing them would hide which one is
450
+ * actually happening in production.
451
+ */
452
+ correlation: correlation.outcome,
453
+ correlationDeltaMs: correlation.deltaMs,
454
+ correlationRunnerUpDeltaMs: correlation.runnerUpDeltaMs,
455
+ emitAutomaticAnalytics: start?.emitAutomaticAnalytics ?? captureAutomaticInteractions,
456
+ x: event.rawX,
457
+ y: event.rawY,
458
+ // Use the actual native end coords when present, not the down
459
+ // coords. The previous endX/endY fell back to rawX/rawY which
460
+ // collapsed swipes to a zero-length segment in the dashboard.
461
+ endX: event.rawEndX ?? event.rawX,
462
+ endY: event.rawEndY ?? event.rawY,
463
+ normalizedX: event.normalizedX,
464
+ normalizedY: event.normalizedY,
465
+ normalizedEndX: event.normalizedEndX,
466
+ normalizedEndY: event.normalizedEndY,
467
+ viewportWidth: event.screenshotWidthPx,
468
+ viewportHeight: event.screenshotHeightPx,
469
+ durationMs: event.durationMs,
470
+ confidence: 'high',
471
+ coordinateSpace: event.coordinateSpace,
472
+ safeAreaTop: event.safeAreaTop,
473
+ platform: event.platform,
474
+ source: 'native-interaction-tracker',
475
+ windowWidth: _diagWinW,
476
+ windowHeight: _diagWinH
477
+ });
478
+ } catch {/* no-throw */}
479
+ });
480
+ } catch {/* no-throw */}
481
+ return () => {
482
+ try {
483
+ subscription?.remove();
484
+ } catch {/* no-throw */}
485
+ for (const timer of pendingJsEmitsRef.current.values()) clearTimeout(timer);
486
+ pendingJsEmitsRef.current.clear();
487
+ };
488
+ }, [captureAutomaticInteractions]);
489
+
490
+ // ─── Touch Tracking State ───────────────────────────────────────────
491
+
492
+ // On-screen rect of the root view — the EXACT view the native screenshot
493
+ // captures. Normalizing pageX/pageY against this rect makes JS-fallback taps
494
+ // share the screenshot's coordinate origin (fixes vertical status-bar offset).
495
+ const rootRectRef = (0, _react.useRef)(null);
496
+ const measureRoot = () => {
497
+ try {
498
+ const node = rootRef.current;
499
+ if (node && typeof node.measureInWindow === 'function') {
500
+ node.measureInWindow((x, y, w, h) => {
501
+ if (w > 0 && h > 0) rootRectRef.current = {
502
+ x,
503
+ y,
504
+ w,
505
+ h
506
+ };
507
+ });
508
+ }
509
+ } catch {/* no-throw */}
510
+ };
511
+
512
+ // Eagerly measure the root view on mount AND periodically until we have a
513
+ // non-null reading. measureInWindow is async, so the first tap can otherwise
514
+ // fall back to Dimensions.get('window') — which excludes system insets and
515
+ // is ~status-bar fraction smaller than the screenshot region on Android,
516
+ // pushing the marker upward. Polling stops as soon as the first measurement
517
+ // succeeds; subsequent taps re-measure inline.
518
+ (0, _react.useEffect)(() => {
519
+ let attempts = 0;
520
+ const tryMeasure = () => {
521
+ measureRoot();
522
+ attempts += 1;
523
+ if (rootRectRef.current || attempts >= 10) return;
524
+ setTimeout(tryMeasure, 100);
525
+ };
526
+ const t = setTimeout(tryMeasure, 50);
527
+ return () => clearTimeout(t);
528
+ }, []);
529
+
530
+ // Gesture capture handlers — feed into SessionManager (unified capture)
531
+ const handleTouchStart = e => {
532
+ try {
533
+ const touch = e.nativeEvent;
534
+ const target = (0, _touchTarget.resolveTouchTarget)(e);
535
+ let ui;
536
+ let screenName;
537
+ /**
538
+ * RN-8 — WHERE the screen name came from, carried with the interaction.
539
+ *
540
+ * Production shows 13.8% of Android interactions with a screen and 0.5% on iOS, and
541
+ * those figures cannot distinguish three unrelated causes: nothing was instrumented,
542
+ * a manual beacon was instrumented but never reached interactions, or auto-detection
543
+ * ran and failed. Each has a different owner. Recording the source turns one
544
+ * unactionable percentage into three answerable ones.
545
+ */
546
+ let screenSource = 'none';
547
+ let stateInstrumented = false;
548
+ try {
549
+ const {
550
+ uiStateSignature,
551
+ uiStateInstrumented
552
+ } = require('./uiState');
553
+ ui = uiStateSignature();
554
+ stateInstrumented = uiStateInstrumented();
555
+ } catch {/* no-throw */}
556
+ try {
557
+ const {
558
+ AutoScreenDetector
559
+ } = require('../navigation/AutoScreenDetector');
560
+ const detector = AutoScreenDetector.getInstance();
561
+ screenName = detector.getCurrentScreen() || undefined;
562
+ /* Read from the SAME call site as the name, so the two can never describe
563
+ different moments — the detector is polled and its answer can change between
564
+ two reads a few milliseconds apart. */
565
+ screenSource = screenName ? detector.getCurrentScreenSource() : 'none';
566
+ } catch {/* no-throw */}
567
+ const start = {
568
+ interactionId: (0, _interactionProtocol.generateInteractionId)(),
569
+ occurredAt: Date.now(),
570
+ x: touch.pageX,
571
+ y: touch.pageY,
572
+ locationX: touch.locationX,
573
+ locationY: touch.locationY,
574
+ /**
575
+ * RN-1 + RN-2 — the identity that is persisted, and it is now code-derived.
576
+ *
577
+ * `describeTouchTarget` returns `testID` -> structural path -> component name,
578
+ * and never a caption or an accessibilityLabel. Before RN-2 it preferred free
579
+ * text, so this line was writing user data ("Pay EGP 1,442", an order row
580
+ * labelled with an email address, a contact's name) into the analytics store —
581
+ * and, because `target` is an aggregation key, splitting one button into one
582
+ * bucket per person at the same time.
583
+ *
584
+ * `targetId` used to be `target?.testID` alone, which is `undefined` in the
585
+ * overwhelming majority of apps — no testIDs authored — so the field the
586
+ * backend keys on was empty almost always. It now falls back to the structural
587
+ * path, with `targetSource` recording WHICH it got.
588
+ */
589
+ target: (0, _touchTarget.describeTouchTarget)(target),
590
+ targetId: (0, _touchTarget.targetIdentity)(target).id,
591
+ /**
592
+ * WHICH KIND of identity this is, because they are not equally trustworthy: a
593
+ * `testID` is a promise from the app's authors that this control is this
594
+ * control; a `path` is an inference that breaks when the tree is refactored.
595
+ * Without this the accounting lane cannot distinguish "the control had no
596
+ * identity" from "the identity is a structural guess", and both would render
597
+ * as an equally confident target.
598
+ */
599
+ targetSource: (0, _touchTarget.targetIdentity)(target).source,
600
+ /* RN-4 — row identity from the app's own keyExtractor; see touchTarget.ts. */
601
+ itemKey: target?.itemKey,
602
+ itemIndex: target?.itemIndex,
603
+ /**
604
+ * RN-13 — the control's rectangle, so `heat ∈ target` is decidable.
605
+ *
606
+ * Read SYNCHRONOUSLY here, in the same tick as the touch, and normalized against
607
+ * the SAME measured root the tap's own coordinates use. Both halves matter:
608
+ *
609
+ * - A callback measurement (`measureInWindow`) would resolve after this handler
610
+ * returns, so the rect attached to a tap could be the previous tap's, with
611
+ * nothing afterwards able to tell. `targetGeometry` refuses to guess: it reads
612
+ * now or reports null.
613
+ * - Normalizing against a window size instead of the root view is off by the
614
+ * status bar on most devices, which would read as "the heat is just outside
615
+ * the button" everywhere rather than as a measurement bug.
616
+ *
617
+ * `measureRoot()` is called first because the cached root rect is populated
618
+ * asynchronously at mount; without it the first taps of a session normalize
619
+ * against nothing and get a null rect for a reason that has nothing to do with
620
+ * the control.
621
+ */
622
+ /**
623
+ * RN-3 — WHERE IN THE CONTENT, not just where on the glass.
624
+ *
625
+ * Two taps at the same screen coordinate one viewport apart are two different
626
+ * controls. Without an offset they merge into one hotspot, and the heatmap shows
627
+ * heavy engagement at a position where, in content terms, nothing in particular
628
+ * is. The offset is also a CACHE dimension — two scroll states of one route must
629
+ * not share a backdrop — so its absence corrupts the picture as well as the count.
630
+ *
631
+ * `ancestors` is innermost-first, so this takes the NEAREST scroller that has a
632
+ * recorded position: a tap inside a horizontal carousel belongs to the carousel's
633
+ * content, not to how far the page behind it had scrolled.
634
+ *
635
+ * Null when no ancestor has one — never zero. Zero is a real scroll position (the
636
+ * top of a list), and reporting it for "unknown" would place every unmeasured tap
637
+ * at the top of its content, indistinguishable from a genuine tap there.
638
+ */
639
+ ...(() => {
640
+ const hit = (0, _scrollContext.nearestRecordedOffset)((target?.ancestors ?? []).map(n => (0, _scrollContext.nativeTagOf)(n)));
641
+ return hit ? {
642
+ scrollX: hit.x,
643
+ scrollY: hit.y,
644
+ scrollSource: 'wrapper'
645
+ } : {
646
+ scrollSource: 'none'
647
+ };
648
+ })(),
649
+ targetRect: (() => {
650
+ measureRoot();
651
+ const root = rootRectRef.current;
652
+ /* null -> undefined: the context field is optional, and an explicit null would
653
+ serialise as a JSON null claiming "measured, and it was nothing". */
654
+ return (0, _targetGeometry.normalizeRect)((0, _targetGeometry.readRectSync)(target?.node), root ? {
655
+ w: root.w,
656
+ h: root.h
657
+ } : null) ?? undefined;
658
+ })(),
659
+ screenName,
660
+ screenSource,
661
+ ui,
662
+ stateStatus: ui ? 'captured_nonempty' : stateInstrumented ? 'captured_empty' : 'not_instrumented',
663
+ emitAutomaticAnalytics: captureAutomaticInteractions
664
+ };
665
+ touchStartRef.current = start;
666
+ interactionStartsRef.current = interactionStartsRef.current.filter(candidate => start.occurredAt - candidate.occurredAt < 5000).concat(start).slice(-8);
667
+ } catch {/* no-throw */}
668
+ };
669
+ const handleTouchEnd = e => {
670
+ try {
671
+ const touch = e.nativeEvent;
672
+
673
+ // Classify gesture based on touch movement and duration
674
+ const start = touchStartRef.current;
675
+ let gestureType = 'tap';
676
+
677
+ // Capture window dimensions at touch time for accurate normalization
678
+ let vpW = 0;
679
+ let vpH = 0;
680
+ let screenW = 0;
681
+ let screenH = 0;
682
+ let statusBarHeight = 0;
683
+ try {
684
+ const {
685
+ Dimensions,
686
+ StatusBar,
687
+ Platform
688
+ } = require('react-native');
689
+ const dims = Dimensions.get('window');
690
+ vpW = dims.width;
691
+ vpH = dims.height;
692
+ const scr = Dimensions.get('screen');
693
+ screenW = scr.width;
694
+ screenH = scr.height;
695
+ statusBarHeight = Platform.OS === 'android' ? StatusBar.currentHeight || 0 : 0;
696
+ } catch {/* no-throw */}
697
+
698
+ // Re-measure the root view so its on-screen rect is fresh for this tap.
699
+ measureRoot();
700
+ const rootRect = rootRectRef.current;
701
+
702
+ // WHAT was tapped, resolved from the React fiber on the touch event. Without this the tap
703
+ // carries only coordinates, so every tap in the app groups into one row per gesture type.
704
+ // Defensive by construction — returns undefined rather than throwing (see touchTarget.ts).
705
+ /**
706
+ * Resolved ONCE, so `target` and `targetId` cannot disagree about the same tap.
707
+ *
708
+ * The previous shape called `resolveTouchTarget(e)` inline for `target` while
709
+ * `targetId` came only from `start` — so on the fallback path (no JS start, or a
710
+ * refused correlation) the tap carried a description with NO id, and the two fields
711
+ * were computed from different sources. Anything joining on `targetId` therefore
712
+ * saw nothing for a tap that visibly had a target.
713
+ */
714
+ const freshTarget = start ? null : (0, _touchTarget.resolveTouchTarget)(e);
715
+ const tapped = start?.target ?? (0, _touchTarget.describeTouchTarget)(freshTarget);
716
+ const identity = start ? {
717
+ id: start.targetId,
718
+ source: start.targetSource
719
+ } : (0, _touchTarget.targetIdentity)(freshTarget);
720
+ const gestureDetails = {
721
+ target: tapped,
722
+ interactionId: start?.interactionId ?? (0, _interactionProtocol.generateInteractionId)(),
723
+ interactionProtocol: _interactionProtocol.INTERACTION_PROTOCOL_VERSION,
724
+ occurredAt: start?.occurredAt ?? Date.now(),
725
+ ui: start?.ui,
726
+ stateStatus: start?.stateStatus ?? 'not_captured',
727
+ targetId: identity.id,
728
+ targetSource: identity.source,
729
+ screenName: start?.screenName,
730
+ screenSource: start?.screenSource ?? 'none',
731
+ targetRect: start?.targetRect,
732
+ scrollX: start?.scrollX,
733
+ scrollY: start?.scrollY,
734
+ scrollSource: start?.scrollSource ?? 'none',
735
+ itemKey: start?.itemKey,
736
+ itemIndex: start?.itemIndex,
737
+ emitAutomaticAnalytics: start?.emitAutomaticAnalytics ?? captureAutomaticInteractions,
738
+ x: start?.x ?? touch.pageX,
739
+ y: start?.y ?? touch.pageY,
740
+ pageX: start?.x ?? touch.pageX,
741
+ pageY: start?.y ?? touch.pageY,
742
+ locationX: start?.locationX ?? touch.locationX,
743
+ locationY: start?.locationY ?? touch.locationY,
744
+ viewportWidth: vpW > 0 ? vpW : undefined,
745
+ viewportHeight: vpH > 0 ? vpH : undefined
746
+ };
747
+
748
+ // Normalize against the measured root-view SIZE — the exact view the
749
+ // screenshot captures (Android: R.id.content, iOS: window root).
750
+ // pageX/pageY are ALREADY relative to the RN root view, which shares the
751
+ // screenshot's origin. Do NOT subtract rootRect.x/y: on Android
752
+ // measureInWindow returns rootRect.y = statusBarHeight, so subtracting it
753
+ // double-counts the status bar and pushes every marker upward.
754
+ if (rootRect && rootRect.w > 0 && rootRect.h > 0) {
755
+ const nx = Math.max(0, Math.min(1, (start?.x ?? touch.pageX) / rootRect.w));
756
+ const ny = Math.max(0, Math.min(1, (start?.y ?? touch.pageY) / rootRect.h));
757
+ gestureDetails.normalizedX = nx;
758
+ gestureDetails.normalizedY = ny;
759
+ /**
760
+ * RN-15 on the JS-fallback lane.
761
+ *
762
+ * Computed here rather than in the literal above because that is where nx/ny first
763
+ * exist. The rect is the SAME one the native lane uses, so one physical tap yields
764
+ * the same local position whichever lane captured it — two lanes disagreeing about
765
+ * where in a control a tap landed would be worse than neither reporting it.
766
+ */
767
+ const lp = (0, _targetGeometry.localPoint)(start?.targetRect ?? null, nx, ny);
768
+ if (lp) {
769
+ gestureDetails.localU = lp.u;
770
+ gestureDetails.localV = lp.v;
771
+ }
772
+ gestureDetails.normalizedPrecomputed = true;
773
+ gestureDetails.viewportWidth = rootRect.w;
774
+ gestureDetails.viewportHeight = rootRect.h;
775
+ gestureDetails.coordinateSpace = 'js-root-measured';
776
+ gestureDetails.rootViewTop = rootRect.y;
777
+ gestureDetails.rootViewLeft = rootRect.x;
778
+ }
779
+ gestureDetails.statusBarHeight = statusBarHeight;
780
+ gestureDetails.screenWidth = screenW;
781
+ gestureDetails.screenHeight = screenH;
782
+ // Diagnostic-only: carry root-view & window dims through to the unified
783
+ // [TapDiag] log. NOT used for normalization decisions in SessionManager.
784
+ gestureDetails.windowWidth = vpW > 0 ? vpW : undefined;
785
+ gestureDetails.windowHeight = vpH > 0 ? vpH : undefined;
786
+ if (rootRect && rootRect.w > 0 && rootRect.h > 0) {
787
+ gestureDetails.rootViewWidth = rootRect.w;
788
+ gestureDetails.rootViewHeight = rootRect.h;
789
+ }
790
+ gestureDetails.platform = gestureDetails.platform ?? require('react-native').Platform.OS;
791
+ try {
792
+ const {
793
+ logger
794
+ } = require('../../core/logger/internalLogger');
795
+ logger?.debug?.(`[TapAccuracy] platform=js-path raw=(${Math.round(touch.pageX)},${Math.round(touch.pageY)}) ` + `normalized=(${gestureDetails.normalizedX?.toFixed?.(4)},${gestureDetails.normalizedY?.toFixed?.(4)}) ` + `rootRect=(${rootRect ? `${Math.round(rootRect.x)},${Math.round(rootRect.y)},${Math.round(rootRect.w)}x${Math.round(rootRect.h)}` : 'none'}) ` + `statusBar=${statusBarHeight} window=(${vpW}x${vpH}) screen=(${screenW}x${screenH}) space=js-root-measured`);
796
+ } catch {/* no-throw */}
797
+ if (start) {
798
+ const dx = touch.pageX - start.x;
799
+ const dy = touch.pageY - start.y;
800
+ const dist = Math.sqrt(dx * dx + dy * dy);
801
+ const duration = Date.now() - start.occurredAt;
802
+ gestureDetails.duration = duration;
803
+ if (dist >= 15) {
804
+ // Movement gesture: swipe or scroll
805
+ gestureDetails.endX = touch.pageX;
806
+ gestureDetails.endY = touch.pageY;
807
+ if (Math.abs(dy) > Math.abs(dx)) {
808
+ gestureType = 'scroll';
809
+ gestureDetails.direction = dy > 0 ? 'down' : 'up';
810
+ gestureDetails.distance = Math.abs(dy);
811
+ } else {
812
+ gestureType = 'swipe';
813
+ gestureDetails.direction = dx > 0 ? 'right' : 'left';
814
+ gestureDetails.distance = Math.abs(dx);
815
+ }
816
+ } else if (duration > 500) {
817
+ gestureType = 'long_press';
818
+ }
819
+ }
820
+
821
+ // Feed the Engage gesture detector (rage_tap / dead_tap) — only committed
822
+ // taps, not swipes/scrolls/long-presses. Pure JS, cross-platform; emits the
823
+ // unified `$gesture` signal the engage trigger engine listens for.
824
+ if (gestureType === 'tap') {
825
+ try {
826
+ const {
827
+ gestureTriggerDetector
828
+ } = require('../engage/gestureTriggerDetector');
829
+ gestureTriggerDetector.recordTap({
830
+ x: start?.x ?? touch.pageX,
831
+ y: start?.y ?? touch.pageY,
832
+ hasTarget: !!(start?.targetId || start?.target),
833
+ screen: start?.screenName
834
+ });
835
+ } catch {/* no-throw */}
836
+ }
837
+
838
+ // Emit gesture event to SessionManager for desktop-controlled recording.
839
+ // Native tracker produces high-confidence coords; JS is a fallback only.
840
+ //
841
+ // Race condition fix: the JS onTouchEnd fires BEFORE the native event
842
+ // crosses the bridge. Without guarding, the pipeline's 100ms dedup window
843
+ // drops the native event and keeps the JS-estimated coords (which can be
844
+ // wrong when measureInWindow hasn't resolved or the base differs from the
845
+ // screenshot capture view). Three-tier suppression:
846
+ // 1. Native confirmed active → skip JS entirely (native handles all touches)
847
+ // 2. Native event within 300ms → skip (existing dedup)
848
+ // 3. First touch (native not yet confirmed) → defer 600ms to let native arrive
849
+ const sinceNative = Date.now() - lastNativeTouchTsRef.current;
850
+ if (nativeTrackingConfirmedRef.current) {
851
+ // Native tracker is active — skip JS path entirely
852
+ } else if (sinceNative <= 300) {
853
+ // Native event arrived recently — skip (dedup)
854
+ } else {
855
+ // Native not yet confirmed — defer emission to give native time to arrive.
856
+ // If native fires during the delay, it cancels this pending emit.
857
+ const capturedType = gestureType;
858
+ const capturedDetails = {
859
+ ...gestureDetails
860
+ };
861
+ const interactionId = capturedDetails.interactionId;
862
+ const timer = setTimeout(() => {
863
+ pendingJsEmitsRef.current.delete(interactionId);
864
+ if (nativeTrackingConfirmedRef.current) return;
865
+ try {
866
+ const {
867
+ SessionManager
868
+ } = require('../session/SessionManager');
869
+ const sm = SessionManager.getExistingInstance();
870
+ if (sm && sm.onGestureDetected) {
871
+ sm.onGestureDetected(capturedType, {
872
+ ...capturedDetails,
873
+ confidence: 'medium',
874
+ source: 'js-touch-handler'
875
+ });
876
+ }
877
+ } catch {/* no-throw */}
878
+ // 600ms, was 200ms. The race this defer exists for happens on the FIRST tap of a
879
+ // mount: native isn't confirmed yet, JS emitted at 200ms, then the first native
880
+ // event crossed the bridge at ~300-400ms — recording the same tap TWICE, with the
881
+ // JS copy missing normalizedX/Y whenever the async root-view measure hadn't
882
+ // resolved (an interaction the heatmap cannot place). QA hit exactly this pair.
883
+ // The wider defer lets the first native event cancel the JS emission instead; on
884
+ // devices with no native tracker at all it merely delays a background emission,
885
+ // which nothing user-visible waits on.
886
+ }, 600);
887
+ pendingJsEmitsRef.current.set(interactionId, timer);
888
+ }
889
+ touchStartRef.current = null;
890
+ } catch {/* no-throw */}
891
+ };
892
+ return /*#__PURE__*/(0, _jsxRuntime.jsx)(_reactNative.View, {
893
+ ref: rootRef,
894
+ style: styles.root,
895
+ collapsable: false,
896
+ onStartShouldSetResponderCapture: () => {
897
+ return false; // Don't consume — just observe
898
+ },
899
+ onMoveShouldSetResponderCapture: () => false,
900
+ onTouchStart: handleTouchStart,
901
+ onTouchEnd: handleTouchEnd,
902
+ children: /*#__PURE__*/(0, _jsxRuntime.jsx)(JourneyContext.Provider, {
903
+ value: managerRef.current,
904
+ children: children
905
+ })
906
+ });
907
+ }
908
+
909
+ // ─── ScaleBunScreen Beacon ───────────────────────────────────────────────────────
910
+
911
+ /**
912
+ * Screen beacon component — registers the current screen name.
913
+ * Place it at the top of each screen component:
914
+ * <ScaleBunScreen name="HomeScreen" />
915
+ */
916
+ function ScaleBunScreen({
917
+ name
918
+ }) {
919
+ useScaleBunScreen(name);
920
+ return null; // Invisible beacon
921
+ }
922
+
923
+ /**
924
+ * Screen beacon hook — registers the current screen name.
925
+ * Use in screen components:
926
+ * useScaleBunScreen("HomeScreen");
927
+ */
928
+ function useScaleBunScreen(name) {
929
+ const manager = (0, _react.useContext)(JourneyContext);
930
+ (0, _react.useEffect)(() => {
931
+ // === CANONICAL SCREEN_VIEW SOURCE ===
932
+ // This hook is the SOLE source of SCREEN_VIEW session events.
933
+ // SessionManager.onScreenChange() emits the canonical SCREEN_VIEW
934
+ // event into the unified pipeline. No other code path emits SCREEN_VIEW.
935
+ //
936
+ // JourneyManager.nav.setScreen() is NOT a session event — it only
937
+ // records the current screen name for gesture step labeling context.
938
+
939
+ // Feed SessionManager first (canonical SCREEN_VIEW)
940
+ try {
941
+ const {
942
+ SessionManager
943
+ } = require('../session/SessionManager');
944
+ const sm = SessionManager.getExistingInstance();
945
+ // Always call onScreenChange — SessionManager.onScreenChange() has
946
+ // its own `if (!this.active) return` guard that correctly evaluates
947
+ // at call time. We must NOT gate here because useEffect only runs at
948
+ // mount/name-change, not when isActive changes. Gating here causes
949
+ // Record-after-mount to permanently miss screen registrations.
950
+ if (sm && sm.onScreenChange) {
951
+ sm.onScreenChange(name);
952
+ }
953
+ } catch {/* no-throw */}
954
+
955
+ /**
956
+ * RN-8 — TELL THE DETECTOR TOO, because interactions read their screen from IT.
957
+ *
958
+ * This hook fed SessionManager, PerformanceFeature, ProfilerFeature and JourneyManager
959
+ * — four consumers — and never `AutoScreenDetector`. But `handleTouchStart` resolves an
960
+ * interaction's `screenName` from `AutoScreenDetector.getCurrentScreen()`, so a
961
+ * manually-instrumented app produced perfectly-named SCREEN_VIEW events while every TAP
962
+ * carried no screen at all. `setManualScreen` existed and was called only by tests.
963
+ *
964
+ * That is the whole story for apps the auto-hook cannot help: expo-router, a custom
965
+ * navigator, anything not `@react-navigation/native`. The documented manual escape hatch
966
+ * did not reach the one field that partitions every heatmap.
967
+ *
968
+ * Requires the last-writer-wins fix in `_currentScreen()` to be useful: under the
969
+ * previous rule a manual screen was readable for only 2000 ms, so wiring this alone
970
+ * would have handed interactions a name that expired before most taps happened.
971
+ */
972
+ try {
973
+ const {
974
+ AutoScreenDetector
975
+ } = require('../navigation/AutoScreenDetector');
976
+ AutoScreenDetector.getInstance().setManualScreen(name);
977
+ } catch {/* no-throw */}
978
+
979
+ // Feed PerformanceFeature (screen context for perf metrics)
980
+ // NOTE: Only sets screen identity. Does NOT call markScreenLoadStart/End.
981
+ // AutoScreenLoadCollector handles timing independently via rAF + InteractionManager.
982
+ try {
983
+ const bs = getBootstrap();
984
+ const perfFeature = bs?.getPerformanceFeature?.();
985
+ if (perfFeature) {
986
+ perfFeature.setCurrentScreen(name);
987
+ }
988
+ } catch {/* no-throw */}
989
+
990
+ // Feed ProfilerFeature (screen context for profiler samples)
991
+ // This sets screenKey on all subsequent profiler samples,
992
+ // enabling screen visit extraction and per-screen correlation on desktop.
993
+ try {
994
+ const bs = getBootstrap();
995
+ const profilerFeature = bs?.getProfilerFeature?.();
996
+ if (profilerFeature) {
997
+ profilerFeature.setCurrentScreen(name);
998
+ }
999
+ } catch {/* no-throw */}
1000
+
1001
+ // NOTE: Auto-capture for performance preview is triggered from
1002
+ // PerformanceFeature.autoScreenLoadCollector callback, NOT here.
1003
+ // useScaleBunScreen uses developer-specified names (e.g. 'HomeScreen')
1004
+ // while perf metrics use React Navigation route names (e.g. 'HomeMain').
1005
+ // Triggering capture here would save screenshots under the wrong key.
1006
+
1007
+ // Feed JourneyManager (gesture context only, NOT a session event)
1008
+ if (!manager) {
1009
+ try {
1010
+ const bs = getBootstrap();
1011
+ const transport = bs?._getTransport();
1012
+ if (transport && bs?._isJourneyEnabled()) {
1013
+ const JM = require('./journeyManager').JourneyManager;
1014
+ const fallback = JM.getInstance(transport);
1015
+ fallback.nav.setScreen(name);
1016
+ }
1017
+ } catch {/* no-throw */}
1018
+ return;
1019
+ }
1020
+ try {
1021
+ manager.nav.setScreen(name);
1022
+ } catch {/* no-throw */}
1023
+ }, [name, manager]);
1024
+ }
1025
+
1026
+ // ─── Styles ─────────────────────────────────────────────────────────────────
1027
+ // IMPORTANT: Do NOT use StyleSheet.create() here.
1028
+ // In RN 0.84 bridgeless mode, StyleSheet.create() calls
1029
+ // PixelRatio.roundToNearestPixel() which accesses DeviceInfo TurboModule.
1030
+ // At module-load time, the TurboModule runtime isn't ready yet → crash.
1031
+ // Plain objects work identically for simple styles.
1032
+
1033
+ const styles = {
1034
+ root: {
1035
+ flex: 1
1036
+ }
1037
+ };
1038
+ //# sourceMappingURL=ScaleBunDebugRoot.js.map