@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.
- package/LICENSE +21 -0
- package/README.md +154 -0
- package/android/build.gradle +94 -0
- package/android/consumer-rules.pro +28 -0
- package/android/src/androidTest/java/com/scalebun/rn/ota/ScaleBunOtaVerifierInstrumentedTest.kt +112 -0
- package/android/src/main/AndroidManifest.xml +14 -0
- package/android/src/main/java/com/scalebun/core/crash/CrashStorage.kt +155 -0
- package/android/src/main/java/com/scalebun/core/crash/NativeCrashHandler.kt +93 -0
- package/android/src/main/java/com/scalebun/core/performance/ANRWatchdog.kt +100 -0
- package/android/src/main/java/com/scalebun/core/performance/AppStartCollector.kt +180 -0
- package/android/src/main/java/com/scalebun/core/performance/FrameMetricsCollector.kt +230 -0
- package/android/src/main/java/com/scalebun/core/performance/PerformanceCore.kt +165 -0
- package/android/src/main/java/com/scalebun/profiler/ProfilerModule.kt +398 -0
- package/android/src/main/java/com/scalebun/profiler/ProfilerPackage.kt +24 -0
- package/android/src/main/java/com/scalebun/profiler/collectors/CpuCollector.kt +161 -0
- package/android/src/main/java/com/scalebun/profiler/collectors/IncidentDetector.kt +223 -0
- package/android/src/main/java/com/scalebun/profiler/collectors/MemoryCollector.kt +157 -0
- package/android/src/main/java/com/scalebun/profiler/collectors/RenderCollector.kt +194 -0
- package/android/src/main/java/com/scalebun/profiler/collectors/SamplerScheduler.kt +218 -0
- package/android/src/main/java/com/scalebun/profiler/collectors/ThreadCollector.kt +142 -0
- package/android/src/main/java/com/scalebun/replaysdk/ReplaySdkModule.kt +1117 -0
- package/android/src/main/java/com/scalebun/replaysdk/ReplaySdkPackage.kt +24 -0
- package/android/src/main/java/com/scalebun/replaysdk/capture/CaptureReason.kt +47 -0
- package/android/src/main/java/com/scalebun/replaysdk/capture/FrameCaptureManager.kt +574 -0
- package/android/src/main/java/com/scalebun/replaysdk/capture/FrameCaptureScheduler.kt +187 -0
- package/android/src/main/java/com/scalebun/replaysdk/capture/UiStabilityDetector.kt +214 -0
- package/android/src/main/java/com/scalebun/replaysdk/core/ReplayConfig.kt +144 -0
- package/android/src/main/java/com/scalebun/replaysdk/core/ReplayLogger.kt +31 -0
- package/android/src/main/java/com/scalebun/replaysdk/core/SessionIdGenerator.kt +15 -0
- package/android/src/main/java/com/scalebun/replaysdk/models/ReplayModels.kt +94 -0
- package/android/src/main/java/com/scalebun/replaysdk/outbox/NativeOutbox.kt +574 -0
- package/android/src/main/java/com/scalebun/replaysdk/outbox/OutboxUploader.kt +559 -0
- package/android/src/main/java/com/scalebun/replaysdk/privacy/PrivacyMaskProcessor.kt +126 -0
- package/android/src/main/java/com/scalebun/replaysdk/session/SessionManager.kt +322 -0
- package/android/src/main/java/com/scalebun/replaysdk/storage/ReplayStorage.kt +136 -0
- package/android/src/main/java/com/scalebun/replaysdk/timeline/TimelineCollector.kt +28 -0
- package/android/src/main/java/com/scalebun/replaysdk/tracking/InteractionTracker.kt +470 -0
- package/android/src/main/java/com/scalebun/replaysdk/tracking/ScreenTracker.kt +20 -0
- package/android/src/main/java/com/scalebun/replaysdk/tracking/ScrollContextProbe.kt +188 -0
- package/android/src/main/java/com/scalebun/replaysdk/transport/ReplayTransport.kt +99 -0
- package/android/src/main/java/com/scalebun/replaysdk/voice/VoiceRecorder.kt +121 -0
- package/android/src/main/java/com/scalebun/replaysdk/voice/VoiceTranscriber.kt +170 -0
- package/android/src/main/java/com/scalebun/rn/ScaleBunPackage.kt +113 -0
- package/android/src/main/java/com/scalebun/rn/crash/ScaleBunCrashModule.kt +188 -0
- package/android/src/main/java/com/scalebun/rn/crash/ScaleBunCrashPackage.kt +22 -0
- package/android/src/main/java/com/scalebun/rn/engage/ScaleBunEngageModule.kt +579 -0
- package/android/src/main/java/com/scalebun/rn/engage/ScaleBunEngagePackage.kt +22 -0
- package/android/src/main/java/com/scalebun/rn/engage/ScaleBunNotificationPresenter.kt +110 -0
- package/android/src/main/java/com/scalebun/rn/ota/BsPatch.kt +240 -0
- package/android/src/main/java/com/scalebun/rn/ota/BundleDownloader.kt +195 -0
- package/android/src/main/java/com/scalebun/rn/ota/DeviceIntegrity.kt +81 -0
- package/android/src/main/java/com/scalebun/rn/ota/DownloadFailure.kt +55 -0
- package/android/src/main/java/com/scalebun/rn/ota/OtaProtocol.kt +244 -0
- package/android/src/main/java/com/scalebun/rn/ota/ScaleBunOtaKeyRegistry.kt +100 -0
- package/android/src/main/java/com/scalebun/rn/ota/ScaleBunOtaModule.kt +683 -0
- package/android/src/main/java/com/scalebun/rn/ota/ScaleBunOtaReleaseVerifier.kt +136 -0
- package/android/src/main/java/com/scalebun/rn/ota/SlotManager.kt +578 -0
- package/android/src/main/java/com/scalebun/rn/ota/TlsPinning.kt +118 -0
- package/android/src/main/java/com/scalebun/rn/performance/PerformanceModule.kt +217 -0
- package/android/src/main/java/com/scalebun/rn/referrer/ScaleBunInstallReferrerModule.kt +77 -0
- package/android/src/main/java/com/scalebun/rn/storage/ScaleBunStorageModule.kt +68 -0
- package/android/src/main/java/com/scalebun/storage/KvFileStore.kt +174 -0
- package/android/src/newarch/java/com/scalebun/profiler/ProfilerSpec.kt +12 -0
- package/android/src/newarch/java/com/scalebun/replaysdk/ReplaySdkSpec.kt +12 -0
- package/android/src/newarch/java/com/scalebun/rn/crash/ScaleBunCrashSpec.kt +15 -0
- package/android/src/newarch/java/com/scalebun/rn/ota/ScaleBunOtaSpec.kt +16 -0
- package/android/src/newarch/java/com/scalebun/rn/performance/PerformanceSpec.kt +12 -0
- package/android/src/newarch/java/com/scalebun/rn/referrer/ScaleBunInstallReferrerSpec.kt +14 -0
- package/android/src/newarch/java/com/scalebun/rn/storage/ScaleBunStorageSpec.kt +16 -0
- package/android/src/oldarch/java/com/scalebun/profiler/ProfilerSpec.kt +34 -0
- package/android/src/oldarch/java/com/scalebun/replaysdk/ReplaySdkSpec.kt +77 -0
- package/android/src/oldarch/java/com/scalebun/rn/crash/ScaleBunCrashSpec.kt +40 -0
- package/android/src/oldarch/java/com/scalebun/rn/ota/ScaleBunOtaSpec.kt +42 -0
- package/android/src/oldarch/java/com/scalebun/rn/performance/PerformanceSpec.kt +27 -0
- package/android/src/oldarch/java/com/scalebun/rn/referrer/ScaleBunInstallReferrerSpec.kt +18 -0
- package/android/src/oldarch/java/com/scalebun/rn/storage/ScaleBunStorageSpec.kt +26 -0
- package/bin/lib/androidCodemod.js +370 -0
- package/bin/lib/iosCodemod.js +343 -0
- package/bin/scalebun.js +1004 -0
- package/dist/scalebun.full.js +37348 -0
- package/dist/scalebun.slim.js +34137 -0
- package/ios/Capture/InteractionTracker.swift +237 -0
- package/ios/Capture/PrivacyMaskProcessor.swift +158 -0
- package/ios/Capture/ScreenshotCaptureManager.swift +398 -0
- package/ios/Capture/WindowResolver.swift +63 -0
- package/ios/Core/DeviceIdentity.swift +50 -0
- package/ios/Core/ReplayConfig.swift +100 -0
- package/ios/Core/ReplayLogger.swift +22 -0
- package/ios/Core/SessionIdGenerator.swift +18 -0
- package/ios/Crash/ScaleBunCrashBridge.mm +74 -0
- package/ios/Crash/ScaleBunCrashHandler.swift +84 -0
- package/ios/Crash/ScaleBunCrashModule.swift +98 -0
- package/ios/Crash/ScaleBunCrashSignalBridge.h +49 -0
- package/ios/Crash/ScaleBunCrashSignalBridge.m +296 -0
- package/ios/Crash/ScaleBunCrashSignalStress.c +137 -0
- package/ios/Crash/ScaleBunCrashStorage.swift +121 -0
- package/ios/Crash/ScaleBunExceptionChain.swift +71 -0
- package/ios/CrashTests/ScaleBunExceptionChainTests.swift +144 -0
- package/ios/Engage/ScaleBunEngageBridge.m +32 -0
- package/ios/Engage/ScaleBunEngageModule.swift +250 -0
- package/ios/Engage/ScaleBunPushNotificationCenter.swift +185 -0
- package/ios/Ota/BsPatch.swift +203 -0
- package/ios/Ota/BundleDownloader.swift +249 -0
- package/ios/Ota/DeviceIntegrity.swift +112 -0
- package/ios/Ota/DownloadFailure.swift +56 -0
- package/ios/Ota/OtaProtocol.swift +246 -0
- package/ios/Ota/OtaSlotManager.swift +613 -0
- package/ios/Ota/ScaleBunOtaBridge.mm +92 -0
- package/ios/Ota/ScaleBunOtaEventsModule.swift +61 -0
- package/ios/Ota/ScaleBunOtaKeyRegistry.swift +147 -0
- package/ios/Ota/ScaleBunOtaModule.swift +587 -0
- package/ios/Ota/ScaleBunOtaReleaseVerifier.swift +119 -0
- package/ios/Ota/TlsPinning.swift +222 -0
- package/ios/OtaTests/DownloadFailureTests.swift +78 -0
- package/ios/OtaTests/ScaleBunOtaVerifierTests.swift +548 -0
- package/ios/Outbox/NativeOutbox.swift +632 -0
- package/ios/Outbox/OutboxUploader.swift +578 -0
- package/ios/Performance/ScaleBunPerformanceBridge.m +32 -0
- package/ios/Performance/ScaleBunPerformanceModule.swift +290 -0
- package/ios/PrivacyInfo.xcprivacy +97 -0
- package/ios/Profiler/ScaleBunProfilerBridge.m +55 -0
- package/ios/Profiler/ScaleBunProfilerModule.swift +966 -0
- package/ios/ReplaySdk-Bridging-Header.h +2 -0
- package/ios/ReplaySdk.swift +793 -0
- package/ios/ReplaySdkBridge.m +97 -0
- package/ios/Session/SessionManager.swift +273 -0
- package/ios/Skan/ScaleBunSkanBridge.m +14 -0
- package/ios/Skan/ScaleBunSkanModule.swift +61 -0
- package/ios/Storage/ReplayStorage.swift +61 -0
- package/ios/Storage/ScaleBunKvFileStore.swift +125 -0
- package/ios/Storage/ScaleBunStorageBridge.mm +72 -0
- package/ios/Storage/ScaleBunStorageModule.swift +57 -0
- package/ios/Transport/ReplayTransport.swift +70 -0
- package/ios/VoiceRecorder.swift +145 -0
- package/lib/commonjs/analytics/EventTracker.js +598 -0
- package/lib/commonjs/analytics/automaticEvents.js +71 -0
- package/lib/commonjs/analytics/batching.js +64 -0
- package/lib/commonjs/analytics/eventLane.js +55 -0
- package/lib/commonjs/analytics/revenue.js +125 -0
- package/lib/commonjs/analytics/subscription.js +94 -0
- package/lib/commonjs/bootstrap/FeatureRegistry.js +86 -0
- package/lib/commonjs/bootstrap/SDKBootstrapper.js +748 -0
- package/lib/commonjs/bucketing/fnv1a32.js +45 -0
- package/lib/commonjs/compat/codepush.js +153 -0
- package/lib/commonjs/config/ConfigManager.js +238 -0
- package/lib/commonjs/config/configTypes.js +16 -0
- package/lib/commonjs/config/otaPolicyState.js +85 -0
- package/lib/commonjs/config/quotaState.js +435 -0
- package/lib/commonjs/core/architecture.js +45 -0
- package/lib/commonjs/core/clock/now.js +13 -0
- package/lib/commonjs/core/config/defaults.js +2 -0
- package/lib/commonjs/core/config/schema.js +512 -0
- package/lib/commonjs/core/constants/endpoints.js +19 -0
- package/lib/commonjs/core/constants/protocol.js +31 -0
- package/lib/commonjs/core/constants/timings.js +39 -0
- package/lib/commonjs/core/constants/version.js +18 -0
- package/lib/commonjs/core/context/app.js +2 -0
- package/lib/commonjs/core/context/device.js +155 -0
- package/lib/commonjs/core/context/session.js +2 -0
- package/lib/commonjs/core/context/user.js +2 -0
- package/lib/commonjs/core/contracts/IFeature.js +2 -0
- package/lib/commonjs/core/di/container.js +29 -0
- package/lib/commonjs/core/encoding/base64.js +50 -0
- package/lib/commonjs/core/id/deviceId.js +52 -0
- package/lib/commonjs/core/id/installationId.js +55 -0
- package/lib/commonjs/core/id/sessionId.js +2 -0
- package/lib/commonjs/core/lifecycle/appLifecycle.js +31 -0
- package/lib/commonjs/core/lifecycle/crashSafe.js +33 -0
- package/lib/commonjs/core/logger/errorClassification.js +107 -0
- package/lib/commonjs/core/logger/internalLogger.js +63 -0
- package/lib/commonjs/core/logger/levels.js +2 -0
- package/lib/commonjs/crypto/hmacSha256.js +132 -0
- package/lib/commonjs/debug/bootstrap.js +429 -0
- package/lib/commonjs/debug/commands.js +732 -0
- package/lib/commonjs/debug/configBuilder.js +70 -0
- package/lib/commonjs/debug/exportBridge.js +155 -0
- package/lib/commonjs/debug/hostResolver.js +42 -0
- package/lib/commonjs/debug/index.js +141 -0
- package/lib/commonjs/debug/metrics.js +39 -0
- package/lib/commonjs/debug/perf.js +186 -0
- package/lib/commonjs/debug/perfWiring.js +109 -0
- package/lib/commonjs/debug/protocol.js +121 -0
- package/lib/commonjs/debug/redaction.js +422 -0
- package/lib/commonjs/debug/replayWiring.js +149 -0
- package/lib/commonjs/debug/screenTracking.js +60 -0
- package/lib/commonjs/debug/sessionWiring.js +48 -0
- package/lib/commonjs/debug/stream.js +542 -0
- package/lib/commonjs/debug/transport.js +368 -0
- package/lib/commonjs/features/bugreport/BugReportFeature.js +112 -0
- package/lib/commonjs/features/bugreport/buildPayload.js +97 -0
- package/lib/commonjs/features/bugreport/index.js +2 -0
- package/lib/commonjs/features/crash/CrashFeature.js +86 -0
- package/lib/commonjs/features/crash/CrashReporter.js +160 -0
- package/lib/commonjs/features/crash/NativeCrashFeature.js +42 -0
- package/lib/commonjs/features/crash/capture.js +48 -0
- package/lib/commonjs/features/crash/globalHandler.js +41 -0
- package/lib/commonjs/features/crash/index.js +14 -0
- package/lib/commonjs/features/crash/nativeCrashBridge.js +361 -0
- package/lib/commonjs/features/crash/rejectionHandler.js +180 -0
- package/lib/commonjs/features/crash/scrubCrash.js +158 -0
- package/lib/commonjs/features/engage/EngageAnchor.js +132 -0
- package/lib/commonjs/features/engage/EngageArchetypeRenderers.js +4292 -0
- package/lib/commonjs/features/engage/EngageInAppView.js +2670 -0
- package/lib/commonjs/features/engage/EngageInlinePlacement.js +133 -0
- package/lib/commonjs/features/engage/EngagePromptProvider.js +1063 -0
- package/lib/commonjs/features/engage/EngagePromptView.js +1252 -0
- package/lib/commonjs/features/engage/EngageTransport.js +608 -0
- package/lib/commonjs/features/engage/EngageVariantContent.js +1778 -0
- package/lib/commonjs/features/engage/__test-support__/reactNativeStub.js +54 -0
- package/lib/commonjs/features/engage/attachmentCapture.js +48 -0
- package/lib/commonjs/features/engage/captureVoiceAttachment.js +88 -0
- package/lib/commonjs/features/engage/engageCoachmarkTour.js +106 -0
- package/lib/commonjs/features/engage/engageGameLogic.js +308 -0
- package/lib/commonjs/features/engage/engageMediaSizing.js +60 -0
- package/lib/commonjs/features/engage/engageMultiStepSheet.js +43 -0
- package/lib/commonjs/features/engage/engageOutcome.js +118 -0
- package/lib/commonjs/features/engage/engagePushTokenBridge.js +72 -0
- package/lib/commonjs/features/engage/engageShakeBridge.js +62 -0
- package/lib/commonjs/features/engage/engageSignals.js +39 -0
- package/lib/commonjs/features/engage/engageStoreReviewBridge.js +49 -0
- package/lib/commonjs/features/engage/engageTestSeenStore.js +99 -0
- package/lib/commonjs/features/engage/engageThrottle.js +404 -0
- package/lib/commonjs/features/engage/engageTriggerEngine.js +365 -0
- package/lib/commonjs/features/engage/engageTypes.js +116 -0
- package/lib/commonjs/features/engage/engageVariantResolver.js +143 -0
- package/lib/commonjs/features/engage/engageWindowInsets.js +98 -0
- package/lib/commonjs/features/engage/gestureTriggerDetector.js +85 -0
- package/lib/commonjs/features/engage/transcription/TranscriptionProvider.js +55 -0
- package/lib/commonjs/features/install-referrer/installReferrer.js +113 -0
- package/lib/commonjs/features/journey/ScaleBunDebugRoot.js +1038 -0
- package/lib/commonjs/features/journey/ScaleBunFlatList.js +39 -0
- package/lib/commonjs/features/journey/ScaleBunImpression.js +113 -0
- package/lib/commonjs/features/journey/ScaleBunScrollView.js +102 -0
- package/lib/commonjs/features/journey/ScaleBunSectionList.js +39 -0
- package/lib/commonjs/features/journey/autoInstrumentScroll.js +161 -0
- package/lib/commonjs/features/journey/calibrationContext.js +42 -0
- package/lib/commonjs/features/journey/gestureBuffer.js +63 -0
- package/lib/commonjs/features/journey/gestureDetector.js +176 -0
- package/lib/commonjs/features/journey/impression.js +93 -0
- package/lib/commonjs/features/journey/interactionProtocol.js +168 -0
- package/lib/commonjs/features/journey/journeyManager.js +466 -0
- package/lib/commonjs/features/journey/journeyTypes.js +55 -0
- package/lib/commonjs/features/journey/nativeScroll.js +85 -0
- package/lib/commonjs/features/journey/navDetector.js +161 -0
- package/lib/commonjs/features/journey/screenshotHelper.js +136 -0
- package/lib/commonjs/features/journey/scrollContext.js +154 -0
- package/lib/commonjs/features/journey/targetGeometry.js +185 -0
- package/lib/commonjs/features/journey/targetRegistry.js +53 -0
- package/lib/commonjs/features/journey/touchTarget.js +249 -0
- package/lib/commonjs/features/journey/uiState.js +188 -0
- package/lib/commonjs/features/navigation/AutoScreenDetector.js +607 -0
- package/lib/commonjs/features/network/NetworkFeature.js +216 -0
- package/lib/commonjs/features/network/index.js +23 -0
- package/lib/commonjs/features/network/thirdParty.js +151 -0
- package/lib/commonjs/features/ota/OtaEventEmitter.js +129 -0
- package/lib/commonjs/features/ota/OtaOrchestrator.js +1309 -0
- package/lib/commonjs/features/ota/OtaTypes.js +6 -0
- package/lib/commonjs/features/ota/deviceAttributes.js +48 -0
- package/lib/commonjs/features/ota/environment.js +172 -0
- package/lib/commonjs/features/ota/geoCountry.js +93 -0
- package/lib/commonjs/features/ota/retry.js +96 -0
- package/lib/commonjs/features/ota/signedDownload.js +187 -0
- package/lib/commonjs/features/ota/useOtaUpdate.js +106 -0
- package/lib/commonjs/features/performance/PerformanceFeature.js +649 -0
- package/lib/commonjs/features/performance/collectors/AppLaunchCollector.js +122 -0
- package/lib/commonjs/features/performance/collectors/AutoScreenLoadCollector.js +232 -0
- package/lib/commonjs/features/performance/collectors/CustomTraceCollector.js +99 -0
- package/lib/commonjs/features/performance/collectors/FrameMetricsCollector.js +184 -0
- package/lib/commonjs/features/performance/collectors/JsStallCollector.js +165 -0
- package/lib/commonjs/features/performance/collectors/NetworkPerfCollector.js +59 -0
- package/lib/commonjs/features/performance/collectors/ScreenLoadCollector.js +78 -0
- package/lib/commonjs/features/performance/collectors/UiHangCollector.js +78 -0
- package/lib/commonjs/features/performance/config.js +58 -0
- package/lib/commonjs/features/performance/getNativePerformanceModule.js +44 -0
- package/lib/commonjs/features/performance/index.js +58 -0
- package/lib/commonjs/features/performance/metrics/MetricsEngine.js +148 -0
- package/lib/commonjs/features/performance/models.js +48 -0
- package/lib/commonjs/features/performance/transport/PerformanceTransport.js +168 -0
- package/lib/commonjs/features/profiler/ProfilerFeature.js +600 -0
- package/lib/commonjs/features/profiler/config.js +151 -0
- package/lib/commonjs/features/profiler/contracts.js +62 -0
- package/lib/commonjs/features/profiler/index.js +40 -0
- package/lib/commonjs/features/profiler/models.js +112 -0
- package/lib/commonjs/features/profiler/transport/ProfilerTransport.js +94 -0
- package/lib/commonjs/features/replay/bridge/adapters/bridgeAdapter.js +203 -0
- package/lib/commonjs/features/replay/bridge/eventEmitter.js +128 -0
- package/lib/commonjs/features/replay/bridge/nativeModule.js +95 -0
- package/lib/commonjs/features/replay/bridge/nativeQuota.js +121 -0
- package/lib/commonjs/features/replay/core/clock/clock.js +47 -0
- package/lib/commonjs/features/replay/core/config/defaults.js +88 -0
- package/lib/commonjs/features/replay/core/config/validator.js +109 -0
- package/lib/commonjs/features/replay/core/env/environmentDetector.js +28 -0
- package/lib/commonjs/features/replay/core/errors/safeCall.js +42 -0
- package/lib/commonjs/features/replay/core/ids/sessionId.js +53 -0
- package/lib/commonjs/features/replay/core/logger/logger.js +36 -0
- package/lib/commonjs/features/replay/core/privacy/privacyTypes.js +34 -0
- package/lib/commonjs/features/replay/core/queue/boundedQueue.js +71 -0
- package/lib/commonjs/features/replay/integrations/alert/alertInstrumentation.js +259 -0
- package/lib/commonjs/features/replay/integrations/logs/consoleIntegration.js +139 -0
- package/lib/commonjs/features/replay/integrations/network/networkAdapter.js +77 -0
- package/lib/commonjs/features/replay/integrations/react-navigation/navigationIntegration.js +88 -0
- package/lib/commonjs/features/replay/integrations/touch/ReplayRoot.js +103 -0
- package/lib/commonjs/features/replay/pipeline/batching/batchManager.js +119 -0
- package/lib/commonjs/features/replay/pipeline/envelope/envelopeBuilder.js +52 -0
- package/lib/commonjs/features/replay/pipeline/retry/retryPolicy.js +53 -0
- package/lib/commonjs/features/replay/pipeline/transport/transportTypes.js +67 -0
- package/lib/commonjs/features/replay/public/api.js +336 -0
- package/lib/commonjs/features/replay/public/enums.js +85 -0
- package/lib/commonjs/features/replay/public/types.js +6 -0
- package/lib/commonjs/features/replay/replay/breadcrumbs/breadcrumbCollector.js +119 -0
- package/lib/commonjs/features/replay/replay/frames/frameModels.js +40 -0
- package/lib/commonjs/features/replay/replay/session/sessionOrchestrator.js +279 -0
- package/lib/commonjs/features/replay/replay/timeline/timelineModels.js +120 -0
- package/lib/commonjs/features/replay/transport/BackendReplayTransport.js +175 -0
- package/lib/commonjs/features/replay/transport/CompositeReplayTransport.js +75 -0
- package/lib/commonjs/features/replay/transport/DesktopReplayTransport.js +124 -0
- package/lib/commonjs/features/replay/transport/ReplayTransport.js +2 -0
- package/lib/commonjs/features/session/BackendSessionAdapter.js +1915 -0
- package/lib/commonjs/features/session/DesktopSessionTransport.js +124 -0
- package/lib/commonjs/features/session/JourneyEventPipeline.js +244 -0
- package/lib/commonjs/features/session/ReplayCaptureManager.js +1253 -0
- package/lib/commonjs/features/session/ScrollTracker.js +147 -0
- package/lib/commonjs/features/session/SessionManager.js +1448 -0
- package/lib/commonjs/features/session/SyncDecisionEngine.js +95 -0
- package/lib/commonjs/features/session/frameLink.js +36 -0
- package/lib/commonjs/features/session/frameScrollState.js +41 -0
- package/lib/commonjs/features/session/index.js +84 -0
- package/lib/commonjs/features/session/nativeCapture.js +53 -0
- package/lib/commonjs/features/session/outboxFrameCapture.js +83 -0
- package/lib/commonjs/features/session/sessionTypes.js +230 -0
- package/lib/commonjs/features/session/viewportPlausibility.js +143 -0
- package/lib/commonjs/features/skan/skanBridge.js +54 -0
- package/lib/commonjs/features/skan/skanConversionManager.js +134 -0
- package/lib/commonjs/index.js +267 -0
- package/lib/commonjs/integrations/fetch/fetchInterceptor.js +174 -0
- package/lib/commonjs/integrations/navigation/screenTracker.js +2 -0
- package/lib/commonjs/integrations/network/bodyCapture.js +336 -0
- package/lib/commonjs/integrations/xhr/xhrInterceptor.js +224 -0
- package/lib/commonjs/metro/composeSourceMap.js +105 -0
- package/lib/commonjs/metro/featureModules.js +131 -0
- package/lib/commonjs/metro/index.js +230 -0
- package/lib/commonjs/metro/optionalDependencyStub.js +6 -0
- package/lib/commonjs/metro/optionalModules.js +31 -0
- package/lib/commonjs/metro/serializerCompose.js +161 -0
- package/lib/commonjs/pipeline/dispatcher/dispatcher.js +28 -0
- package/lib/commonjs/pipeline/envelope/envelope.js +17 -0
- package/lib/commonjs/pipeline/envelope/serializer.js +14 -0
- package/lib/commonjs/pipeline/processors/dedupe.js +2 -0
- package/lib/commonjs/pipeline/processors/enrich.js +16 -0
- package/lib/commonjs/pipeline/processors/sampling.js +2 -0
- package/lib/commonjs/pipeline/processors/sanitize.js +28 -0
- package/lib/commonjs/pipeline/queue/flushQueue.js +107 -0
- package/lib/commonjs/pipeline/queue/memoryQueue.js +31 -0
- package/lib/commonjs/pipeline/queue/persistentQueue.js +342 -0
- package/lib/commonjs/pipeline/queue/queuePolicy.js +2 -0
- package/lib/commonjs/pipeline/scheduler/flushScheduler.js +45 -0
- package/lib/commonjs/pipeline/scheduler/retryPolicy.js +15 -0
- package/lib/commonjs/public/ScaleBunErrorBoundary.js +91 -0
- package/lib/commonjs/public/ScaleBunFacade.js +2044 -0
- package/lib/commonjs/public/ScaleBunProvider.js +62 -0
- package/lib/commonjs/public/typedTracker.js +79 -0
- package/lib/commonjs/public/types.js +6 -0
- package/lib/commonjs/push/PushManager.js +270 -0
- package/lib/commonjs/push/adapters/ManualAdapter.js +86 -0
- package/lib/commonjs/push/adapters/NativeBridgeAdapter.js +131 -0
- package/lib/commonjs/push/adapters/NoopAdapter.js +45 -0
- package/lib/commonjs/push/adapters/RNFirebaseMessagingAdapter.js +248 -0
- package/lib/commonjs/push/adapters/loadMessaging.js +29 -0
- package/lib/commonjs/push/adapters/loadNotifee.js +36 -0
- package/lib/commonjs/push/adapters/selectAdapter.js +153 -0
- package/lib/commonjs/push/detect/capabilities.js +136 -0
- package/lib/commonjs/push/index.js +33 -0
- package/lib/commonjs/push/native/nativeNotifications.js +168 -0
- package/lib/commonjs/push/types.js +2 -0
- package/lib/commonjs/specs/NativeReplaySdk.js +28 -0
- package/lib/commonjs/specs/NativeScaleBunCrash.js +30 -0
- package/lib/commonjs/specs/NativeScaleBunInstallReferrer.js +24 -0
- package/lib/commonjs/specs/NativeScaleBunOta.js +32 -0
- package/lib/commonjs/specs/NativeScaleBunPerformance.js +25 -0
- package/lib/commonjs/specs/NativeScaleBunProfiler.js +26 -0
- package/lib/commonjs/specs/NativeScaleBunStorage.js +40 -0
- package/lib/commonjs/storage/StorageBackend.js +240 -0
- package/lib/commonjs/storage/db/sqlite.js +2 -0
- package/lib/commonjs/storage/files/fileStore.js +2 -0
- package/lib/commonjs/transport/auth/sdkSession.js +28 -0
- package/lib/commonjs/transport/backoff/exponentialJitter.js +16 -0
- package/lib/commonjs/transport/http/endpoints.js +46 -0
- package/lib/commonjs/transport/http/httpClient.js +72 -0
- package/lib/commonjs/transport/rateLimit/retryAfter.js +2 -0
- package/lib/commonjs/transport/signing/requestSigner.js +2 -0
- package/lib/commonjs/vendor/protocol/index.js +327 -0
- package/lib/commonjs/vendor/protocol/internal/validation.js +429 -0
- package/lib/commonjs/vendor/sdk-contracts/bridge.js +2 -0
- package/lib/commonjs/vendor/sdk-contracts/config.js +2 -0
- package/lib/commonjs/vendor/sdk-contracts/events.js +2 -0
- package/lib/commonjs/vendor/sdk-contracts/features.js +2 -0
- package/lib/commonjs/vendor/sdk-contracts/index.js +2 -0
- package/lib/commonjs/vendor/sdk-contracts/platform.js +2 -0
- package/lib/commonjs/vendor/sdk-contracts/session-boundary.js +6 -0
- package/lib/commonjs/vendor/sdk-contracts/session.js +2 -0
- package/lib/commonjs/vendor/vendor.manifest +10 -0
- package/lib/module/analytics/EventTracker.js +592 -0
- package/lib/module/analytics/automaticEvents.js +63 -0
- package/lib/module/analytics/batching.js +55 -0
- package/lib/module/analytics/eventLane.js +47 -0
- package/lib/module/analytics/revenue.js +117 -0
- package/lib/module/analytics/subscription.js +86 -0
- package/lib/module/bootstrap/FeatureRegistry.js +79 -0
- package/lib/module/bootstrap/SDKBootstrapper.js +742 -0
- package/lib/module/bucketing/fnv1a32.js +37 -0
- package/lib/module/compat/codepush.js +147 -0
- package/lib/module/config/ConfigManager.js +230 -0
- package/lib/module/config/configTypes.js +10 -0
- package/lib/module/config/otaPolicyState.js +76 -0
- package/lib/module/config/quotaState.js +423 -0
- package/lib/module/core/architecture.js +38 -0
- package/lib/module/core/clock/now.js +7 -0
- package/lib/module/core/config/defaults.js +2 -0
- package/lib/module/core/config/schema.js +506 -0
- package/lib/module/core/constants/endpoints.js +13 -0
- package/lib/module/core/constants/protocol.js +25 -0
- package/lib/module/core/constants/timings.js +26 -0
- package/lib/module/core/constants/version.js +12 -0
- package/lib/module/core/context/app.js +2 -0
- package/lib/module/core/context/device.js +143 -0
- package/lib/module/core/context/session.js +2 -0
- package/lib/module/core/context/user.js +2 -0
- package/lib/module/core/contracts/IFeature.js +2 -0
- package/lib/module/core/di/container.js +22 -0
- package/lib/module/core/encoding/base64.js +44 -0
- package/lib/module/core/id/deviceId.js +45 -0
- package/lib/module/core/id/installationId.js +50 -0
- package/lib/module/core/id/sessionId.js +2 -0
- package/lib/module/core/lifecycle/appLifecycle.js +25 -0
- package/lib/module/core/lifecycle/crashSafe.js +26 -0
- package/lib/module/core/logger/errorClassification.js +96 -0
- package/lib/module/core/logger/internalLogger.js +59 -0
- package/lib/module/core/logger/levels.js +2 -0
- package/lib/module/crypto/hmacSha256.js +126 -0
- package/lib/module/debug/bootstrap.js +393 -0
- package/lib/module/debug/commands.js +726 -0
- package/lib/module/debug/configBuilder.js +63 -0
- package/lib/module/debug/exportBridge.js +148 -0
- package/lib/module/debug/hostResolver.js +37 -0
- package/lib/module/debug/index.js +13 -0
- package/lib/module/debug/metrics.js +33 -0
- package/lib/module/debug/perf.js +180 -0
- package/lib/module/debug/perfWiring.js +102 -0
- package/lib/module/debug/protocol.js +19 -0
- package/lib/module/debug/redaction.js +411 -0
- package/lib/module/debug/replayWiring.js +139 -0
- package/lib/module/debug/screenTracking.js +53 -0
- package/lib/module/debug/sessionWiring.js +43 -0
- package/lib/module/debug/stream.js +536 -0
- package/lib/module/debug/transport.js +362 -0
- package/lib/module/features/bugreport/BugReportFeature.js +105 -0
- package/lib/module/features/bugreport/buildPayload.js +91 -0
- package/lib/module/features/bugreport/index.js +2 -0
- package/lib/module/features/crash/CrashFeature.js +79 -0
- package/lib/module/features/crash/CrashReporter.js +151 -0
- package/lib/module/features/crash/NativeCrashFeature.js +36 -0
- package/lib/module/features/crash/capture.js +42 -0
- package/lib/module/features/crash/globalHandler.js +36 -0
- package/lib/module/features/crash/index.js +8 -0
- package/lib/module/features/crash/nativeCrashBridge.js +350 -0
- package/lib/module/features/crash/rejectionHandler.js +171 -0
- package/lib/module/features/crash/scrubCrash.js +149 -0
- package/lib/module/features/engage/EngageAnchor.js +121 -0
- package/lib/module/features/engage/EngageArchetypeRenderers.js +4264 -0
- package/lib/module/features/engage/EngageInAppView.js +2656 -0
- package/lib/module/features/engage/EngageInlinePlacement.js +123 -0
- package/lib/module/features/engage/EngagePromptProvider.js +1054 -0
- package/lib/module/features/engage/EngagePromptView.js +1243 -0
- package/lib/module/features/engage/EngageTransport.js +602 -0
- package/lib/module/features/engage/EngageVariantContent.js +1771 -0
- package/lib/module/features/engage/__test-support__/reactNativeStub.js +52 -0
- package/lib/module/features/engage/attachmentCapture.js +42 -0
- package/lib/module/features/engage/captureVoiceAttachment.js +80 -0
- package/lib/module/features/engage/engageCoachmarkTour.js +94 -0
- package/lib/module/features/engage/engageGameLogic.js +287 -0
- package/lib/module/features/engage/engageMediaSizing.js +51 -0
- package/lib/module/features/engage/engageMultiStepSheet.js +35 -0
- package/lib/module/features/engage/engageOutcome.js +108 -0
- package/lib/module/features/engage/engagePushTokenBridge.js +65 -0
- package/lib/module/features/engage/engageShakeBridge.js +56 -0
- package/lib/module/features/engage/engageSignals.js +34 -0
- package/lib/module/features/engage/engageStoreReviewBridge.js +43 -0
- package/lib/module/features/engage/engageTestSeenStore.js +92 -0
- package/lib/module/features/engage/engageThrottle.js +390 -0
- package/lib/module/features/engage/engageTriggerEngine.js +360 -0
- package/lib/module/features/engage/engageTypes.js +110 -0
- package/lib/module/features/engage/engageVariantResolver.js +135 -0
- package/lib/module/features/engage/engageWindowInsets.js +89 -0
- package/lib/module/features/engage/gestureTriggerDetector.js +80 -0
- package/lib/module/features/engage/transcription/TranscriptionProvider.js +46 -0
- package/lib/module/features/install-referrer/installReferrer.js +104 -0
- package/lib/module/features/journey/ScaleBunDebugRoot.js +1030 -0
- package/lib/module/features/journey/ScaleBunFlatList.js +32 -0
- package/lib/module/features/journey/ScaleBunImpression.js +105 -0
- package/lib/module/features/journey/ScaleBunScrollView.js +95 -0
- package/lib/module/features/journey/ScaleBunSectionList.js +32 -0
- package/lib/module/features/journey/autoInstrumentScroll.js +155 -0
- package/lib/module/features/journey/calibrationContext.js +35 -0
- package/lib/module/features/journey/gestureBuffer.js +56 -0
- package/lib/module/features/journey/gestureDetector.js +169 -0
- package/lib/module/features/journey/impression.js +84 -0
- package/lib/module/features/journey/interactionProtocol.js +158 -0
- package/lib/module/features/journey/journeyManager.js +459 -0
- package/lib/module/features/journey/journeyTypes.js +49 -0
- package/lib/module/features/journey/nativeScroll.js +77 -0
- package/lib/module/features/journey/navDetector.js +154 -0
- package/lib/module/features/journey/screenshotHelper.js +129 -0
- package/lib/module/features/journey/scrollContext.js +142 -0
- package/lib/module/features/journey/targetGeometry.js +175 -0
- package/lib/module/features/journey/targetRegistry.js +44 -0
- package/lib/module/features/journey/touchTarget.js +241 -0
- package/lib/module/features/journey/uiState.js +176 -0
- package/lib/module/features/navigation/AutoScreenDetector.js +601 -0
- package/lib/module/features/network/NetworkFeature.js +209 -0
- package/lib/module/features/network/index.js +17 -0
- package/lib/module/features/network/thirdParty.js +142 -0
- package/lib/module/features/ota/OtaEventEmitter.js +123 -0
- package/lib/module/features/ota/OtaOrchestrator.js +1302 -0
- package/lib/module/features/ota/OtaTypes.js +2 -0
- package/lib/module/features/ota/deviceAttributes.js +43 -0
- package/lib/module/features/ota/environment.js +165 -0
- package/lib/module/features/ota/geoCountry.js +86 -0
- package/lib/module/features/ota/retry.js +87 -0
- package/lib/module/features/ota/signedDownload.js +174 -0
- package/lib/module/features/ota/useOtaUpdate.js +100 -0
- package/lib/module/features/performance/PerformanceFeature.js +643 -0
- package/lib/module/features/performance/collectors/AppLaunchCollector.js +115 -0
- package/lib/module/features/performance/collectors/AutoScreenLoadCollector.js +225 -0
- package/lib/module/features/performance/collectors/CustomTraceCollector.js +92 -0
- package/lib/module/features/performance/collectors/FrameMetricsCollector.js +177 -0
- package/lib/module/features/performance/collectors/JsStallCollector.js +158 -0
- package/lib/module/features/performance/collectors/NetworkPerfCollector.js +52 -0
- package/lib/module/features/performance/collectors/ScreenLoadCollector.js +71 -0
- package/lib/module/features/performance/collectors/UiHangCollector.js +71 -0
- package/lib/module/features/performance/config.js +51 -0
- package/lib/module/features/performance/getNativePerformanceModule.js +39 -0
- package/lib/module/features/performance/index.js +9 -0
- package/lib/module/features/performance/metrics/MetricsEngine.js +139 -0
- package/lib/module/features/performance/models.js +42 -0
- package/lib/module/features/performance/transport/PerformanceTransport.js +162 -0
- package/lib/module/features/profiler/ProfilerFeature.js +594 -0
- package/lib/module/features/profiler/config.js +143 -0
- package/lib/module/features/profiler/contracts.js +56 -0
- package/lib/module/features/profiler/index.js +11 -0
- package/lib/module/features/profiler/models.js +106 -0
- package/lib/module/features/profiler/transport/ProfilerTransport.js +87 -0
- package/lib/module/features/replay/bridge/adapters/bridgeAdapter.js +198 -0
- package/lib/module/features/replay/bridge/eventEmitter.js +122 -0
- package/lib/module/features/replay/bridge/nativeModule.js +89 -0
- package/lib/module/features/replay/bridge/nativeQuota.js +109 -0
- package/lib/module/features/replay/core/clock/clock.js +37 -0
- package/lib/module/features/replay/core/config/defaults.js +82 -0
- package/lib/module/features/replay/core/config/validator.js +103 -0
- package/lib/module/features/replay/core/env/environmentDetector.js +22 -0
- package/lib/module/features/replay/core/errors/safeCall.js +35 -0
- package/lib/module/features/replay/core/ids/sessionId.js +44 -0
- package/lib/module/features/replay/core/logger/logger.js +29 -0
- package/lib/module/features/replay/core/privacy/privacyTypes.js +27 -0
- package/lib/module/features/replay/core/queue/boundedQueue.js +64 -0
- package/lib/module/features/replay/integrations/alert/alertInstrumentation.js +252 -0
- package/lib/module/features/replay/integrations/logs/consoleIntegration.js +131 -0
- package/lib/module/features/replay/integrations/network/networkAdapter.js +70 -0
- package/lib/module/features/replay/integrations/react-navigation/navigationIntegration.js +82 -0
- package/lib/module/features/replay/integrations/touch/ReplayRoot.js +96 -0
- package/lib/module/features/replay/pipeline/batching/batchManager.js +113 -0
- package/lib/module/features/replay/pipeline/envelope/envelopeBuilder.js +43 -0
- package/lib/module/features/replay/pipeline/retry/retryPolicy.js +45 -0
- package/lib/module/features/replay/pipeline/transport/transportTypes.js +60 -0
- package/lib/module/features/replay/public/api.js +332 -0
- package/lib/module/features/replay/public/enums.js +85 -0
- package/lib/module/features/replay/public/types.js +2 -0
- package/lib/module/features/replay/replay/breadcrumbs/breadcrumbCollector.js +113 -0
- package/lib/module/features/replay/replay/frames/frameModels.js +33 -0
- package/lib/module/features/replay/replay/session/sessionOrchestrator.js +272 -0
- package/lib/module/features/replay/replay/timeline/timelineModels.js +108 -0
- package/lib/module/features/replay/transport/BackendReplayTransport.js +169 -0
- package/lib/module/features/replay/transport/CompositeReplayTransport.js +68 -0
- package/lib/module/features/replay/transport/DesktopReplayTransport.js +119 -0
- package/lib/module/features/replay/transport/ReplayTransport.js +2 -0
- package/lib/module/features/session/BackendSessionAdapter.js +1908 -0
- package/lib/module/features/session/DesktopSessionTransport.js +118 -0
- package/lib/module/features/session/JourneyEventPipeline.js +239 -0
- package/lib/module/features/session/ReplayCaptureManager.js +1248 -0
- package/lib/module/features/session/ScrollTracker.js +141 -0
- package/lib/module/features/session/SessionManager.js +1443 -0
- package/lib/module/features/session/SyncDecisionEngine.js +88 -0
- package/lib/module/features/session/frameLink.js +29 -0
- package/lib/module/features/session/frameScrollState.js +34 -0
- package/lib/module/features/session/index.js +35 -0
- package/lib/module/features/session/nativeCapture.js +45 -0
- package/lib/module/features/session/outboxFrameCapture.js +77 -0
- package/lib/module/features/session/sessionTypes.js +226 -0
- package/lib/module/features/session/viewportPlausibility.js +137 -0
- package/lib/module/features/skan/skanBridge.js +48 -0
- package/lib/module/features/skan/skanConversionManager.js +128 -0
- package/lib/module/index.js +80 -0
- package/lib/module/integrations/fetch/fetchInterceptor.js +169 -0
- package/lib/module/integrations/navigation/screenTracker.js +2 -0
- package/lib/module/integrations/network/bodyCapture.js +320 -0
- package/lib/module/integrations/xhr/xhrInterceptor.js +219 -0
- package/lib/module/metro/composeSourceMap.js +97 -0
- package/lib/module/metro/featureModules.js +123 -0
- package/lib/module/metro/index.js +218 -0
- package/lib/module/metro/optionalDependencyStub.js +14 -0
- package/lib/module/metro/optionalModules.js +25 -0
- package/lib/module/metro/serializerCompose.js +152 -0
- package/lib/module/pipeline/dispatcher/dispatcher.js +21 -0
- package/lib/module/pipeline/envelope/envelope.js +11 -0
- package/lib/module/pipeline/envelope/serializer.js +8 -0
- package/lib/module/pipeline/processors/dedupe.js +2 -0
- package/lib/module/pipeline/processors/enrich.js +10 -0
- package/lib/module/pipeline/processors/sampling.js +2 -0
- package/lib/module/pipeline/processors/sanitize.js +22 -0
- package/lib/module/pipeline/queue/flushQueue.js +102 -0
- package/lib/module/pipeline/queue/memoryQueue.js +24 -0
- package/lib/module/pipeline/queue/persistentQueue.js +336 -0
- package/lib/module/pipeline/queue/queuePolicy.js +2 -0
- package/lib/module/pipeline/scheduler/flushScheduler.js +38 -0
- package/lib/module/pipeline/scheduler/retryPolicy.js +9 -0
- package/lib/module/public/ScaleBunErrorBoundary.js +82 -0
- package/lib/module/public/ScaleBunFacade.js +2038 -0
- package/lib/module/public/ScaleBunProvider.js +54 -0
- package/lib/module/public/typedTracker.js +72 -0
- package/lib/module/public/types.js +2 -0
- package/lib/module/push/PushManager.js +263 -0
- package/lib/module/push/adapters/ManualAdapter.js +79 -0
- package/lib/module/push/adapters/NativeBridgeAdapter.js +124 -0
- package/lib/module/push/adapters/NoopAdapter.js +38 -0
- package/lib/module/push/adapters/RNFirebaseMessagingAdapter.js +241 -0
- package/lib/module/push/adapters/loadMessaging.js +23 -0
- package/lib/module/push/adapters/loadNotifee.js +30 -0
- package/lib/module/push/adapters/selectAdapter.js +147 -0
- package/lib/module/push/detect/capabilities.js +130 -0
- package/lib/module/push/index.js +9 -0
- package/lib/module/push/native/nativeNotifications.js +155 -0
- package/lib/module/push/types.js +2 -0
- package/lib/module/specs/NativeReplaySdk.js +24 -0
- package/lib/module/specs/NativeScaleBunCrash.js +26 -0
- package/lib/module/specs/NativeScaleBunInstallReferrer.js +20 -0
- package/lib/module/specs/NativeScaleBunOta.js +28 -0
- package/lib/module/specs/NativeScaleBunPerformance.js +21 -0
- package/lib/module/specs/NativeScaleBunProfiler.js +22 -0
- package/lib/module/specs/NativeScaleBunStorage.js +36 -0
- package/lib/module/storage/StorageBackend.js +231 -0
- package/lib/module/storage/db/sqlite.js +2 -0
- package/lib/module/storage/files/fileStore.js +2 -0
- package/lib/module/transport/auth/sdkSession.js +21 -0
- package/lib/module/transport/backoff/exponentialJitter.js +10 -0
- package/lib/module/transport/http/endpoints.js +40 -0
- package/lib/module/transport/http/httpClient.js +64 -0
- package/lib/module/transport/rateLimit/retryAfter.js +2 -0
- package/lib/module/transport/signing/requestSigner.js +2 -0
- package/lib/module/vendor/protocol/index.js +312 -0
- package/lib/module/vendor/protocol/internal/validation.js +423 -0
- package/lib/module/vendor/sdk-contracts/bridge.js +2 -0
- package/lib/module/vendor/sdk-contracts/config.js +2 -0
- package/lib/module/vendor/sdk-contracts/events.js +2 -0
- package/lib/module/vendor/sdk-contracts/features.js +2 -0
- package/lib/module/vendor/sdk-contracts/index.js +2 -0
- package/lib/module/vendor/sdk-contracts/platform.js +2 -0
- package/lib/module/vendor/sdk-contracts/session-boundary.js +2 -0
- package/lib/module/vendor/sdk-contracts/session.js +2 -0
- package/lib/module/vendor/vendor.manifest +10 -0
- package/lib/typescript/analytics/EventTracker.d.ts +197 -0
- package/lib/typescript/analytics/automaticEvents.d.ts +30 -0
- package/lib/typescript/analytics/batching.d.ts +33 -0
- package/lib/typescript/analytics/eventLane.d.ts +22 -0
- package/lib/typescript/analytics/revenue.d.ts +94 -0
- package/lib/typescript/analytics/subscription.d.ts +35 -0
- package/lib/typescript/bootstrap/FeatureRegistry.d.ts +36 -0
- package/lib/typescript/bootstrap/SDKBootstrapper.d.ts +82 -0
- package/lib/typescript/bucketing/fnv1a32.d.ts +20 -0
- package/lib/typescript/compat/codepush.d.ts +76 -0
- package/lib/typescript/config/ConfigManager.d.ts +82 -0
- package/lib/typescript/config/configTypes.d.ts +73 -0
- package/lib/typescript/config/otaPolicyState.d.ts +55 -0
- package/lib/typescript/config/quotaState.d.ts +155 -0
- package/lib/typescript/core/architecture.d.ts +29 -0
- package/lib/typescript/core/clock/now.d.ts +5 -0
- package/lib/typescript/core/config/defaults.d.ts +1 -0
- package/lib/typescript/core/config/schema.d.ts +107 -0
- package/lib/typescript/core/constants/endpoints.d.ts +13 -0
- package/lib/typescript/core/constants/protocol.d.ts +23 -0
- package/lib/typescript/core/constants/timings.d.ts +22 -0
- package/lib/typescript/core/constants/version.d.ts +12 -0
- package/lib/typescript/core/context/app.d.ts +1 -0
- package/lib/typescript/core/context/device.d.ts +61 -0
- package/lib/typescript/core/context/session.d.ts +1 -0
- package/lib/typescript/core/context/user.d.ts +24 -0
- package/lib/typescript/core/contracts/IFeature.d.ts +44 -0
- package/lib/typescript/core/di/container.d.ts +9 -0
- package/lib/typescript/core/encoding/base64.d.ts +13 -0
- package/lib/typescript/core/id/deviceId.d.ts +9 -0
- package/lib/typescript/core/id/installationId.d.ts +20 -0
- package/lib/typescript/core/id/sessionId.d.ts +1 -0
- package/lib/typescript/core/lifecycle/appLifecycle.d.ts +14 -0
- package/lib/typescript/core/lifecycle/crashSafe.d.ts +7 -0
- package/lib/typescript/core/logger/errorClassification.d.ts +46 -0
- package/lib/typescript/core/logger/internalLogger.d.ts +24 -0
- package/lib/typescript/core/logger/levels.d.ts +1 -0
- package/lib/typescript/crypto/hmacSha256.d.ts +10 -0
- package/lib/typescript/debug/bootstrap.d.ts +148 -0
- package/lib/typescript/debug/commands.d.ts +77 -0
- package/lib/typescript/debug/configBuilder.d.ts +13 -0
- package/lib/typescript/debug/exportBridge.d.ts +27 -0
- package/lib/typescript/debug/hostResolver.d.ts +14 -0
- package/lib/typescript/debug/index.d.ts +12 -0
- package/lib/typescript/debug/metrics.d.ts +2 -0
- package/lib/typescript/debug/perf.d.ts +43 -0
- package/lib/typescript/debug/perfWiring.d.ts +33 -0
- package/lib/typescript/debug/protocol.d.ts +15 -0
- package/lib/typescript/debug/redaction.d.ts +69 -0
- package/lib/typescript/debug/replayWiring.d.ts +25 -0
- package/lib/typescript/debug/screenTracking.d.ts +16 -0
- package/lib/typescript/debug/sessionWiring.d.ts +16 -0
- package/lib/typescript/debug/stream.d.ts +77 -0
- package/lib/typescript/debug/transport.d.ts +110 -0
- package/lib/typescript/features/bugreport/BugReportFeature.d.ts +59 -0
- package/lib/typescript/features/bugreport/buildPayload.d.ts +51 -0
- package/lib/typescript/features/bugreport/index.d.ts +1 -0
- package/lib/typescript/features/crash/CrashFeature.d.ts +21 -0
- package/lib/typescript/features/crash/CrashReporter.d.ts +107 -0
- package/lib/typescript/features/crash/NativeCrashFeature.d.ts +17 -0
- package/lib/typescript/features/crash/capture.d.ts +22 -0
- package/lib/typescript/features/crash/globalHandler.d.ts +14 -0
- package/lib/typescript/features/crash/index.d.ts +2 -0
- package/lib/typescript/features/crash/nativeCrashBridge.d.ts +43 -0
- package/lib/typescript/features/crash/rejectionHandler.d.ts +65 -0
- package/lib/typescript/features/crash/scrubCrash.d.ts +35 -0
- package/lib/typescript/features/engage/EngageAnchor.d.ts +36 -0
- package/lib/typescript/features/engage/EngageArchetypeRenderers.d.ts +66 -0
- package/lib/typescript/features/engage/EngageInAppView.d.ts +164 -0
- package/lib/typescript/features/engage/EngageInlinePlacement.d.ts +42 -0
- package/lib/typescript/features/engage/EngagePromptProvider.d.ts +233 -0
- package/lib/typescript/features/engage/EngagePromptView.d.ts +97 -0
- package/lib/typescript/features/engage/EngageTransport.d.ts +158 -0
- package/lib/typescript/features/engage/EngageVariantContent.d.ts +12 -0
- package/lib/typescript/features/engage/attachmentCapture.d.ts +17 -0
- package/lib/typescript/features/engage/captureVoiceAttachment.d.ts +31 -0
- package/lib/typescript/features/engage/engageCoachmarkTour.d.ts +18 -0
- package/lib/typescript/features/engage/engageGameLogic.d.ts +34 -0
- package/lib/typescript/features/engage/engageMediaSizing.d.ts +23 -0
- package/lib/typescript/features/engage/engageMultiStepSheet.d.ts +25 -0
- package/lib/typescript/features/engage/engageOutcome.d.ts +38 -0
- package/lib/typescript/features/engage/engagePushTokenBridge.d.ts +30 -0
- package/lib/typescript/features/engage/engageShakeBridge.d.ts +20 -0
- package/lib/typescript/features/engage/engageSignals.d.ts +13 -0
- package/lib/typescript/features/engage/engageStoreReviewBridge.d.ts +23 -0
- package/lib/typescript/features/engage/engageTestSeenStore.d.ts +46 -0
- package/lib/typescript/features/engage/engageThrottle.d.ts +180 -0
- package/lib/typescript/features/engage/engageTriggerEngine.d.ts +16 -0
- package/lib/typescript/features/engage/engageTypes.d.ts +576 -0
- package/lib/typescript/features/engage/engageVariantResolver.d.ts +46 -0
- package/lib/typescript/features/engage/engageWindowInsets.d.ts +25 -0
- package/lib/typescript/features/engage/gestureTriggerDetector.d.ts +20 -0
- package/lib/typescript/features/engage/transcription/TranscriptionProvider.d.ts +51 -0
- package/lib/typescript/features/install-referrer/installReferrer.d.ts +39 -0
- package/lib/typescript/features/journey/ScaleBunDebugRoot.d.ts +49 -0
- package/lib/typescript/features/journey/ScaleBunFlatList.d.ts +20 -0
- package/lib/typescript/features/journey/ScaleBunImpression.d.ts +30 -0
- package/lib/typescript/features/journey/ScaleBunScrollView.d.ts +25 -0
- package/lib/typescript/features/journey/ScaleBunSectionList.d.ts +20 -0
- package/lib/typescript/features/journey/autoInstrumentScroll.d.ts +46 -0
- package/lib/typescript/features/journey/calibrationContext.d.ts +26 -0
- package/lib/typescript/features/journey/gestureBuffer.d.ts +27 -0
- package/lib/typescript/features/journey/gestureDetector.d.ts +40 -0
- package/lib/typescript/features/journey/impression.d.ts +48 -0
- package/lib/typescript/features/journey/interactionProtocol.d.ts +159 -0
- package/lib/typescript/features/journey/journeyManager.d.ts +62 -0
- package/lib/typescript/features/journey/journeyTypes.d.ts +161 -0
- package/lib/typescript/features/journey/nativeScroll.d.ts +47 -0
- package/lib/typescript/features/journey/navDetector.d.ts +42 -0
- package/lib/typescript/features/journey/screenshotHelper.d.ts +33 -0
- package/lib/typescript/features/journey/scrollContext.d.ts +49 -0
- package/lib/typescript/features/journey/targetGeometry.d.ts +126 -0
- package/lib/typescript/features/journey/targetRegistry.d.ts +28 -0
- package/lib/typescript/features/journey/touchTarget.d.ts +174 -0
- package/lib/typescript/features/journey/uiState.d.ts +93 -0
- package/lib/typescript/features/navigation/AutoScreenDetector.d.ts +196 -0
- package/lib/typescript/features/network/NetworkFeature.d.ts +43 -0
- package/lib/typescript/features/network/index.d.ts +46 -0
- package/lib/typescript/features/network/thirdParty.d.ts +95 -0
- package/lib/typescript/features/ota/OtaEventEmitter.d.ts +93 -0
- package/lib/typescript/features/ota/OtaOrchestrator.d.ts +287 -0
- package/lib/typescript/features/ota/OtaTypes.d.ts +193 -0
- package/lib/typescript/features/ota/deviceAttributes.d.ts +18 -0
- package/lib/typescript/features/ota/environment.d.ts +99 -0
- package/lib/typescript/features/ota/geoCountry.d.ts +14 -0
- package/lib/typescript/features/ota/retry.d.ts +53 -0
- package/lib/typescript/features/ota/signedDownload.d.ts +81 -0
- package/lib/typescript/features/ota/useOtaUpdate.d.ts +72 -0
- package/lib/typescript/features/performance/PerformanceFeature.d.ts +132 -0
- package/lib/typescript/features/performance/collectors/AppLaunchCollector.d.ts +27 -0
- package/lib/typescript/features/performance/collectors/AutoScreenLoadCollector.d.ts +70 -0
- package/lib/typescript/features/performance/collectors/CustomTraceCollector.d.ts +35 -0
- package/lib/typescript/features/performance/collectors/FrameMetricsCollector.d.ts +74 -0
- package/lib/typescript/features/performance/collectors/JsStallCollector.d.ts +45 -0
- package/lib/typescript/features/performance/collectors/NetworkPerfCollector.d.ts +23 -0
- package/lib/typescript/features/performance/collectors/ScreenLoadCollector.d.ts +30 -0
- package/lib/typescript/features/performance/collectors/UiHangCollector.d.ts +21 -0
- package/lib/typescript/features/performance/config.d.ts +73 -0
- package/lib/typescript/features/performance/getNativePerformanceModule.d.ts +2 -0
- package/lib/typescript/features/performance/index.d.ts +10 -0
- package/lib/typescript/features/performance/metrics/MetricsEngine.d.ts +69 -0
- package/lib/typescript/features/performance/models.d.ts +169 -0
- package/lib/typescript/features/performance/transport/PerformanceTransport.d.ts +40 -0
- package/lib/typescript/features/profiler/ProfilerFeature.d.ts +92 -0
- package/lib/typescript/features/profiler/config.d.ts +85 -0
- package/lib/typescript/features/profiler/contracts.d.ts +142 -0
- package/lib/typescript/features/profiler/index.d.ts +13 -0
- package/lib/typescript/features/profiler/models.d.ts +332 -0
- package/lib/typescript/features/profiler/transport/ProfilerTransport.d.ts +30 -0
- package/lib/typescript/features/replay/bridge/adapters/bridgeAdapter.d.ts +52 -0
- package/lib/typescript/features/replay/bridge/eventEmitter.d.ts +100 -0
- package/lib/typescript/features/replay/bridge/nativeModule.d.ts +166 -0
- package/lib/typescript/features/replay/bridge/nativeQuota.d.ts +26 -0
- package/lib/typescript/features/replay/core/clock/clock.d.ts +16 -0
- package/lib/typescript/features/replay/core/config/defaults.d.ts +28 -0
- package/lib/typescript/features/replay/core/config/validator.d.ts +13 -0
- package/lib/typescript/features/replay/core/env/environmentDetector.d.ts +14 -0
- package/lib/typescript/features/replay/core/errors/safeCall.d.ts +12 -0
- package/lib/typescript/features/replay/core/ids/sessionId.d.ts +15 -0
- package/lib/typescript/features/replay/core/logger/logger.d.ts +15 -0
- package/lib/typescript/features/replay/core/privacy/privacyTypes.d.ts +24 -0
- package/lib/typescript/features/replay/core/queue/boundedQueue.d.ts +29 -0
- package/lib/typescript/features/replay/integrations/alert/alertInstrumentation.d.ts +48 -0
- package/lib/typescript/features/replay/integrations/logs/consoleIntegration.d.ts +18 -0
- package/lib/typescript/features/replay/integrations/network/networkAdapter.d.ts +31 -0
- package/lib/typescript/features/replay/integrations/react-navigation/navigationIntegration.d.ts +25 -0
- package/lib/typescript/features/replay/integrations/touch/ReplayRoot.d.ts +26 -0
- package/lib/typescript/features/replay/pipeline/batching/batchManager.d.ts +47 -0
- package/lib/typescript/features/replay/pipeline/envelope/envelopeBuilder.d.ts +12 -0
- package/lib/typescript/features/replay/pipeline/retry/retryPolicy.d.ts +17 -0
- package/lib/typescript/features/replay/pipeline/transport/transportTypes.d.ts +40 -0
- package/lib/typescript/features/replay/public/api.d.ts +83 -0
- package/lib/typescript/features/replay/public/enums.d.ts +73 -0
- package/lib/typescript/features/replay/public/types.d.ts +249 -0
- package/lib/typescript/features/replay/replay/breadcrumbs/breadcrumbCollector.d.ts +26 -0
- package/lib/typescript/features/replay/replay/frames/frameModels.d.ts +23 -0
- package/lib/typescript/features/replay/replay/session/sessionOrchestrator.d.ts +53 -0
- package/lib/typescript/features/replay/replay/timeline/timelineModels.d.ts +29 -0
- package/lib/typescript/features/replay/transport/BackendReplayTransport.d.ts +45 -0
- package/lib/typescript/features/replay/transport/CompositeReplayTransport.d.ts +22 -0
- package/lib/typescript/features/replay/transport/DesktopReplayTransport.d.ts +35 -0
- package/lib/typescript/features/replay/transport/ReplayTransport.d.ts +72 -0
- package/lib/typescript/features/session/BackendSessionAdapter.d.ts +528 -0
- package/lib/typescript/features/session/DesktopSessionTransport.d.ts +28 -0
- package/lib/typescript/features/session/JourneyEventPipeline.d.ts +74 -0
- package/lib/typescript/features/session/ReplayCaptureManager.d.ts +391 -0
- package/lib/typescript/features/session/ScrollTracker.d.ts +48 -0
- package/lib/typescript/features/session/SessionManager.d.ts +414 -0
- package/lib/typescript/features/session/SyncDecisionEngine.d.ts +33 -0
- package/lib/typescript/features/session/frameLink.d.ts +27 -0
- package/lib/typescript/features/session/frameScrollState.d.ts +27 -0
- package/lib/typescript/features/session/index.d.ts +23 -0
- package/lib/typescript/features/session/nativeCapture.d.ts +18 -0
- package/lib/typescript/features/session/outboxFrameCapture.d.ts +20 -0
- package/lib/typescript/features/session/sessionTypes.d.ts +362 -0
- package/lib/typescript/features/session/viewportPlausibility.d.ts +72 -0
- package/lib/typescript/features/skan/skanBridge.d.ts +18 -0
- package/lib/typescript/features/skan/skanConversionManager.d.ts +69 -0
- package/lib/typescript/index.d.ts +59 -0
- package/lib/typescript/integrations/fetch/fetchInterceptor.d.ts +41 -0
- package/lib/typescript/integrations/navigation/screenTracker.d.ts +1 -0
- package/lib/typescript/integrations/network/bodyCapture.d.ts +101 -0
- package/lib/typescript/integrations/xhr/xhrInterceptor.d.ts +46 -0
- package/lib/typescript/metro/composeSourceMap.d.ts +26 -0
- package/lib/typescript/metro/featureModules.d.ts +49 -0
- package/lib/typescript/metro/index.d.ts +99 -0
- package/lib/typescript/metro/optionalDependencyStub.d.ts +14 -0
- package/lib/typescript/metro/optionalModules.d.ts +20 -0
- package/lib/typescript/metro/serializerCompose.d.ts +46 -0
- package/lib/typescript/pipeline/dispatcher/dispatcher.d.ts +7 -0
- package/lib/typescript/pipeline/envelope/envelope.d.ts +16 -0
- package/lib/typescript/pipeline/envelope/serializer.d.ts +7 -0
- package/lib/typescript/pipeline/processors/dedupe.d.ts +1 -0
- package/lib/typescript/pipeline/processors/enrich.d.ts +3 -0
- package/lib/typescript/pipeline/processors/sampling.d.ts +1 -0
- package/lib/typescript/pipeline/processors/sanitize.d.ts +3 -0
- package/lib/typescript/pipeline/queue/flushQueue.d.ts +12 -0
- package/lib/typescript/pipeline/queue/memoryQueue.d.ts +12 -0
- package/lib/typescript/pipeline/queue/persistentQueue.d.ts +120 -0
- package/lib/typescript/pipeline/queue/queuePolicy.d.ts +1 -0
- package/lib/typescript/pipeline/scheduler/flushScheduler.d.ts +9 -0
- package/lib/typescript/pipeline/scheduler/retryPolicy.d.ts +5 -0
- package/lib/typescript/public/ScaleBunErrorBoundary.d.ts +44 -0
- package/lib/typescript/public/ScaleBunFacade.d.ts +800 -0
- package/lib/typescript/public/ScaleBunProvider.d.ts +23 -0
- package/lib/typescript/public/typedTracker.d.ts +88 -0
- package/lib/typescript/public/types.d.ts +316 -0
- package/lib/typescript/push/PushManager.d.ts +69 -0
- package/lib/typescript/push/adapters/ManualAdapter.d.ts +40 -0
- package/lib/typescript/push/adapters/NativeBridgeAdapter.d.ts +37 -0
- package/lib/typescript/push/adapters/NoopAdapter.d.ts +21 -0
- package/lib/typescript/push/adapters/RNFirebaseMessagingAdapter.d.ts +39 -0
- package/lib/typescript/push/adapters/loadMessaging.d.ts +17 -0
- package/lib/typescript/push/adapters/loadNotifee.d.ts +15 -0
- package/lib/typescript/push/adapters/selectAdapter.d.ts +20 -0
- package/lib/typescript/push/detect/capabilities.d.ts +15 -0
- package/lib/typescript/push/index.d.ts +10 -0
- package/lib/typescript/push/native/nativeNotifications.d.ts +65 -0
- package/lib/typescript/push/types.d.ts +143 -0
- package/lib/typescript/specs/NativeReplaySdk.d.ts +69 -0
- package/lib/typescript/specs/NativeScaleBunCrash.d.ts +58 -0
- package/lib/typescript/specs/NativeScaleBunInstallReferrer.d.ts +28 -0
- package/lib/typescript/specs/NativeScaleBunOta.d.ts +141 -0
- package/lib/typescript/specs/NativeScaleBunPerformance.d.ts +31 -0
- package/lib/typescript/specs/NativeScaleBunProfiler.d.ts +38 -0
- package/lib/typescript/specs/NativeScaleBunStorage.d.ts +55 -0
- package/lib/typescript/storage/StorageBackend.d.ts +131 -0
- package/lib/typescript/storage/db/sqlite.d.ts +1 -0
- package/lib/typescript/storage/files/fileStore.d.ts +1 -0
- package/lib/typescript/transport/auth/sdkSession.d.ts +10 -0
- package/lib/typescript/transport/backoff/exponentialJitter.d.ts +5 -0
- package/lib/typescript/transport/http/endpoints.d.ts +26 -0
- package/lib/typescript/transport/http/httpClient.d.ts +23 -0
- package/lib/typescript/transport/rateLimit/retryAfter.d.ts +1 -0
- package/lib/typescript/transport/signing/requestSigner.d.ts +1 -0
- package/lib/typescript/vendor/protocol/index.d.ts +345 -0
- package/lib/typescript/vendor/protocol/internal/validation.d.ts +114 -0
- package/lib/typescript/vendor/sdk-contracts/bridge.d.ts +104 -0
- package/lib/typescript/vendor/sdk-contracts/config.d.ts +156 -0
- package/lib/typescript/vendor/sdk-contracts/events.d.ts +42 -0
- package/lib/typescript/vendor/sdk-contracts/features.d.ts +38 -0
- package/lib/typescript/vendor/sdk-contracts/index.d.ts +15 -0
- package/lib/typescript/vendor/sdk-contracts/platform.d.ts +35 -0
- package/lib/typescript/vendor/sdk-contracts/session-boundary.d.ts +42 -0
- package/lib/typescript/vendor/sdk-contracts/session.d.ts +157 -0
- package/package.json +153 -0
- package/react-native.config.js +24 -0
- package/scalebun-react-native.podspec +44 -0
- package/src/analytics/EventTracker.ts +654 -0
- package/src/analytics/automaticEvents.ts +109 -0
- package/src/analytics/batching.ts +54 -0
- package/src/analytics/eventLane.ts +48 -0
- package/src/analytics/revenue.ts +143 -0
- package/src/analytics/subscription.ts +145 -0
- package/src/bootstrap/FeatureRegistry.ts +81 -0
- package/src/bootstrap/SDKBootstrapper.ts +769 -0
- package/src/bucketing/fnv1a32.ts +40 -0
- package/src/compat/codepush.ts +189 -0
- package/src/config/ConfigManager.ts +233 -0
- package/src/config/configTypes.ts +62 -0
- package/src/config/otaPolicyState.ts +79 -0
- package/src/config/quotaState.ts +484 -0
- package/src/core/architecture.ts +39 -0
- package/src/core/clock/now.ts +6 -0
- package/src/core/config/defaults.ts +0 -0
- package/src/core/config/schema.ts +455 -0
- package/src/core/constants/endpoints.ts +12 -0
- package/src/core/constants/protocol.ts +24 -0
- package/src/core/constants/timings.ts +25 -0
- package/src/core/constants/version.ts +11 -0
- package/src/core/context/app.ts +0 -0
- package/src/core/context/device.ts +169 -0
- package/src/core/context/session.ts +0 -0
- package/src/core/context/user.ts +26 -0
- package/src/core/contracts/IFeature.ts +53 -0
- package/src/core/di/container.ts +26 -0
- package/src/core/encoding/base64.ts +46 -0
- package/src/core/id/deviceId.ts +51 -0
- package/src/core/id/installationId.ts +52 -0
- package/src/core/id/sessionId.ts +0 -0
- package/src/core/lifecycle/appLifecycle.ts +33 -0
- package/src/core/lifecycle/crashSafe.ts +29 -0
- package/src/core/logger/errorClassification.ts +108 -0
- package/src/core/logger/internalLogger.ts +65 -0
- package/src/core/logger/levels.ts +0 -0
- package/src/crypto/hmacSha256.ts +106 -0
- package/src/debug/bootstrap.ts +436 -0
- package/src/debug/commands.ts +597 -0
- package/src/debug/configBuilder.ts +56 -0
- package/src/debug/exportBridge.ts +155 -0
- package/src/debug/hostResolver.ts +34 -0
- package/src/debug/index.ts +25 -0
- package/src/debug/metrics.ts +29 -0
- package/src/debug/perf.ts +212 -0
- package/src/debug/perfWiring.ts +119 -0
- package/src/debug/protocol.ts +58 -0
- package/src/debug/redaction.ts +483 -0
- package/src/debug/replayWiring.ts +148 -0
- package/src/debug/screenTracking.ts +55 -0
- package/src/debug/sessionWiring.ts +59 -0
- package/src/debug/stream.ts +561 -0
- package/src/debug/transport.ts +440 -0
- package/src/features/bugreport/BugReportFeature.ts +128 -0
- package/src/features/bugreport/buildPayload.ts +116 -0
- package/src/features/bugreport/index.ts +0 -0
- package/src/features/crash/CrashFeature.ts +87 -0
- package/src/features/crash/CrashReporter.ts +189 -0
- package/src/features/crash/NativeCrashFeature.ts +42 -0
- package/src/features/crash/capture.ts +48 -0
- package/src/features/crash/globalHandler.ts +39 -0
- package/src/features/crash/index.ts +8 -0
- package/src/features/crash/nativeCrashBridge.ts +352 -0
- package/src/features/crash/rejectionHandler.ts +196 -0
- package/src/features/crash/scrubCrash.ts +175 -0
- package/src/features/engage/EngageAnchor.tsx +159 -0
- package/src/features/engage/EngageArchetypeRenderers.tsx +3705 -0
- package/src/features/engage/EngageInAppView.tsx +2678 -0
- package/src/features/engage/EngageInlinePlacement.tsx +169 -0
- package/src/features/engage/EngagePromptProvider.tsx +1318 -0
- package/src/features/engage/EngagePromptView.tsx +1400 -0
- package/src/features/engage/EngageTransport.ts +668 -0
- package/src/features/engage/EngageVariantContent.tsx +1483 -0
- package/src/features/engage/__test-support__/reactNativeStub.js +40 -0
- package/src/features/engage/attachmentCapture.ts +45 -0
- package/src/features/engage/captureVoiceAttachment.ts +81 -0
- package/src/features/engage/engageCoachmarkTour.ts +120 -0
- package/src/features/engage/engageGameLogic.ts +347 -0
- package/src/features/engage/engageMediaSizing.ts +76 -0
- package/src/features/engage/engageMultiStepSheet.ts +53 -0
- package/src/features/engage/engageOutcome.ts +157 -0
- package/src/features/engage/engagePushTokenBridge.ts +84 -0
- package/src/features/engage/engageShakeBridge.ts +67 -0
- package/src/features/engage/engageSignals.ts +40 -0
- package/src/features/engage/engageStoreReviewBridge.ts +48 -0
- package/src/features/engage/engageTestSeenStore.ts +95 -0
- package/src/features/engage/engageThrottle.ts +478 -0
- package/src/features/engage/engageTriggerEngine.ts +350 -0
- package/src/features/engage/engageTypes.ts +712 -0
- package/src/features/engage/engageVariantResolver.ts +364 -0
- package/src/features/engage/engageWindowInsets.ts +108 -0
- package/src/features/engage/gestureTriggerDetector.ts +83 -0
- package/src/features/engage/transcription/TranscriptionProvider.ts +68 -0
- package/src/features/install-referrer/installReferrer.ts +112 -0
- package/src/features/journey/ScaleBunDebugRoot.tsx +1045 -0
- package/src/features/journey/ScaleBunFlatList.tsx +39 -0
- package/src/features/journey/ScaleBunImpression.tsx +109 -0
- package/src/features/journey/ScaleBunScrollView.tsx +101 -0
- package/src/features/journey/ScaleBunSectionList.tsx +39 -0
- package/src/features/journey/autoInstrumentScroll.ts +155 -0
- package/src/features/journey/calibrationContext.ts +44 -0
- package/src/features/journey/gestureBuffer.ts +59 -0
- package/src/features/journey/gestureDetector.ts +162 -0
- package/src/features/journey/impression.ts +92 -0
- package/src/features/journey/interactionProtocol.ts +243 -0
- package/src/features/journey/journeyManager.ts +469 -0
- package/src/features/journey/journeyTypes.ts +215 -0
- package/src/features/journey/nativeScroll.ts +94 -0
- package/src/features/journey/navDetector.ts +149 -0
- package/src/features/journey/screenshotHelper.ts +137 -0
- package/src/features/journey/scrollContext.ts +146 -0
- package/src/features/journey/targetGeometry.ts +197 -0
- package/src/features/journey/targetRegistry.ts +43 -0
- package/src/features/journey/touchTarget.ts +339 -0
- package/src/features/journey/uiState.ts +182 -0
- package/src/features/navigation/AutoScreenDetector.ts +617 -0
- package/src/features/network/NetworkFeature.ts +232 -0
- package/src/features/network/index.ts +59 -0
- package/src/features/network/thirdParty.ts +160 -0
- package/src/features/ota/OtaEventEmitter.ts +187 -0
- package/src/features/ota/OtaOrchestrator.ts +1513 -0
- package/src/features/ota/OtaTypes.ts +230 -0
- package/src/features/ota/deviceAttributes.ts +46 -0
- package/src/features/ota/environment.ts +199 -0
- package/src/features/ota/geoCountry.ts +85 -0
- package/src/features/ota/retry.ts +123 -0
- package/src/features/ota/signedDownload.ts +202 -0
- package/src/features/ota/useOtaUpdate.ts +161 -0
- package/src/features/performance/PerformanceFeature.ts +729 -0
- package/src/features/performance/collectors/AppLaunchCollector.ts +131 -0
- package/src/features/performance/collectors/AutoScreenLoadCollector.ts +258 -0
- package/src/features/performance/collectors/CustomTraceCollector.ts +116 -0
- package/src/features/performance/collectors/FrameMetricsCollector.ts +210 -0
- package/src/features/performance/collectors/JsStallCollector.ts +184 -0
- package/src/features/performance/collectors/NetworkPerfCollector.ts +69 -0
- package/src/features/performance/collectors/ScreenLoadCollector.ts +95 -0
- package/src/features/performance/collectors/UiHangCollector.ts +98 -0
- package/src/features/performance/config.ts +136 -0
- package/src/features/performance/getNativePerformanceModule.ts +38 -0
- package/src/features/performance/index.ts +28 -0
- package/src/features/performance/metrics/MetricsEngine.ts +152 -0
- package/src/features/performance/models.ts +235 -0
- package/src/features/performance/transport/PerformanceTransport.ts +161 -0
- package/src/features/profiler/ProfilerFeature.ts +661 -0
- package/src/features/profiler/config.ts +230 -0
- package/src/features/profiler/contracts.ts +176 -0
- package/src/features/profiler/index.ts +45 -0
- package/src/features/profiler/models.ts +430 -0
- package/src/features/profiler/transport/ProfilerTransport.ts +93 -0
- package/src/features/replay/bridge/adapters/bridgeAdapter.ts +235 -0
- package/src/features/replay/bridge/eventEmitter.ts +176 -0
- package/src/features/replay/bridge/nativeModule.ts +252 -0
- package/src/features/replay/bridge/nativeQuota.ts +111 -0
- package/src/features/replay/core/clock/clock.ts +38 -0
- package/src/features/replay/core/config/defaults.ts +66 -0
- package/src/features/replay/core/config/validator.ts +113 -0
- package/src/features/replay/core/env/environmentDetector.ts +21 -0
- package/src/features/replay/core/errors/safeCall.ts +34 -0
- package/src/features/replay/core/ids/sessionId.ts +44 -0
- package/src/features/replay/core/logger/logger.ts +36 -0
- package/src/features/replay/core/privacy/privacyTypes.ts +41 -0
- package/src/features/replay/core/queue/boundedQueue.ts +71 -0
- package/src/features/replay/integrations/alert/alertInstrumentation.ts +277 -0
- package/src/features/replay/integrations/logs/consoleIntegration.ts +136 -0
- package/src/features/replay/integrations/network/networkAdapter.ts +73 -0
- package/src/features/replay/integrations/react-navigation/navigationIntegration.ts +89 -0
- package/src/features/replay/integrations/touch/ReplayRoot.tsx +114 -0
- package/src/features/replay/pipeline/batching/batchManager.ts +133 -0
- package/src/features/replay/pipeline/envelope/envelopeBuilder.ts +66 -0
- package/src/features/replay/pipeline/retry/retryPolicy.ts +62 -0
- package/src/features/replay/pipeline/transport/transportTypes.ts +85 -0
- package/src/features/replay/public/api.ts +364 -0
- package/src/features/replay/public/enums.ts +78 -0
- package/src/features/replay/public/types.ts +297 -0
- package/src/features/replay/replay/breadcrumbs/breadcrumbCollector.ts +115 -0
- package/src/features/replay/replay/frames/frameModels.ts +45 -0
- package/src/features/replay/replay/session/sessionOrchestrator.ts +286 -0
- package/src/features/replay/replay/timeline/timelineModels.ts +129 -0
- package/src/features/replay/transport/BackendReplayTransport.ts +215 -0
- package/src/features/replay/transport/CompositeReplayTransport.ts +82 -0
- package/src/features/replay/transport/DesktopReplayTransport.ts +140 -0
- package/src/features/replay/transport/ReplayTransport.ts +84 -0
- package/src/features/session/BackendSessionAdapter.ts +1977 -0
- package/src/features/session/DesktopSessionTransport.ts +130 -0
- package/src/features/session/JourneyEventPipeline.ts +278 -0
- package/src/features/session/ReplayCaptureManager.ts +1401 -0
- package/src/features/session/ScrollTracker.ts +166 -0
- package/src/features/session/SessionManager.ts +1687 -0
- package/src/features/session/SyncDecisionEngine.ts +117 -0
- package/src/features/session/frameLink.ts +41 -0
- package/src/features/session/frameScrollState.ts +36 -0
- package/src/features/session/index.ts +88 -0
- package/src/features/session/nativeCapture.ts +43 -0
- package/src/features/session/outboxFrameCapture.ts +79 -0
- package/src/features/session/sessionTypes.ts +528 -0
- package/src/features/session/viewportPlausibility.ts +134 -0
- package/src/features/skan/skanBridge.ts +53 -0
- package/src/features/skan/skanConversionManager.ts +173 -0
- package/src/index.ts +206 -0
- package/src/integrations/fetch/fetchInterceptor.ts +201 -0
- package/src/integrations/navigation/screenTracker.ts +0 -0
- package/src/integrations/network/bodyCapture.ts +328 -0
- package/src/integrations/xhr/xhrInterceptor.ts +259 -0
- package/src/metro/composeSourceMap.ts +104 -0
- package/src/metro/featureModules.ts +143 -0
- package/src/metro/index.ts +336 -0
- package/src/metro/optionalDependencyStub.ts +13 -0
- package/src/metro/optionalModules.ts +27 -0
- package/src/metro/serializerCompose.ts +193 -0
- package/src/pipeline/dispatcher/dispatcher.ts +22 -0
- package/src/pipeline/envelope/envelope.ts +31 -0
- package/src/pipeline/envelope/serializer.ts +14 -0
- package/src/pipeline/processors/dedupe.ts +0 -0
- package/src/pipeline/processors/enrich.ts +11 -0
- package/src/pipeline/processors/sampling.ts +0 -0
- package/src/pipeline/processors/sanitize.ts +23 -0
- package/src/pipeline/queue/flushQueue.ts +144 -0
- package/src/pipeline/queue/memoryQueue.ts +31 -0
- package/src/pipeline/queue/persistentQueue.ts +385 -0
- package/src/pipeline/queue/queuePolicy.ts +0 -0
- package/src/pipeline/scheduler/flushScheduler.ts +47 -0
- package/src/pipeline/scheduler/retryPolicy.ts +8 -0
- package/src/public/ScaleBunErrorBoundary.tsx +91 -0
- package/src/public/ScaleBunFacade.ts +2129 -0
- package/src/public/ScaleBunProvider.tsx +91 -0
- package/src/public/typedTracker.ts +123 -0
- package/src/public/types.ts +362 -0
- package/src/push/PushManager.ts +318 -0
- package/src/push/adapters/ManualAdapter.ts +100 -0
- package/src/push/adapters/NativeBridgeAdapter.ts +142 -0
- package/src/push/adapters/NoopAdapter.ts +46 -0
- package/src/push/adapters/RNFirebaseMessagingAdapter.ts +271 -0
- package/src/push/adapters/loadMessaging.ts +24 -0
- package/src/push/adapters/loadNotifee.ts +29 -0
- package/src/push/adapters/selectAdapter.ts +176 -0
- package/src/push/detect/capabilities.ts +124 -0
- package/src/push/index.ts +22 -0
- package/src/push/native/nativeNotifications.ts +207 -0
- package/src/push/types.ts +159 -0
- package/src/specs/NativeReplaySdk.ts +101 -0
- package/src/specs/NativeScaleBunCrash.ts +64 -0
- package/src/specs/NativeScaleBunInstallReferrer.ts +29 -0
- package/src/specs/NativeScaleBunOta.ts +154 -0
- package/src/specs/NativeScaleBunPerformance.ts +34 -0
- package/src/specs/NativeScaleBunProfiler.ts +41 -0
- package/src/specs/NativeScaleBunStorage.ts +59 -0
- package/src/storage/StorageBackend.ts +272 -0
- package/src/storage/db/sqlite.ts +0 -0
- package/src/storage/files/fileStore.ts +0 -0
- package/src/transport/auth/sdkSession.ts +27 -0
- package/src/transport/backoff/exponentialJitter.ts +9 -0
- package/src/transport/http/endpoints.ts +33 -0
- package/src/transport/http/httpClient.ts +73 -0
- package/src/transport/rateLimit/retryAfter.ts +0 -0
- package/src/transport/signing/requestSigner.ts +0 -0
- package/src/vendor/protocol/index.ts +391 -0
- package/src/vendor/protocol/internal/validation.ts +497 -0
- package/src/vendor/sdk-contracts/bridge.ts +162 -0
- package/src/vendor/sdk-contracts/config.ts +192 -0
- package/src/vendor/sdk-contracts/events.ts +50 -0
- package/src/vendor/sdk-contracts/features.ts +42 -0
- package/src/vendor/sdk-contracts/index.ts +98 -0
- package/src/vendor/sdk-contracts/platform.ts +42 -0
- package/src/vendor/sdk-contracts/session-boundary.ts +55 -0
- package/src/vendor/sdk-contracts/session.ts +225 -0
- package/src/vendor/vendor.manifest +10 -0
|
@@ -0,0 +1,287 @@
|
|
|
1
|
+
import type { OtaCheckResponse, OtaBundlePayload } from './OtaTypes';
|
|
2
|
+
export interface SyncResult {
|
|
3
|
+
/**
|
|
4
|
+
* `WITHHELD` means the device reported root/jailbreak indicators and the host
|
|
5
|
+
* configured `onCompromisedDevice: 'withhold'`. It is NOT `UP_TO_DATE`: the
|
|
6
|
+
* device may well be behind, we simply declined to find out. Collapsing the
|
|
7
|
+
* two would make a withheld fleet indistinguishable from a current one.
|
|
8
|
+
*/
|
|
9
|
+
status: 'UP_TO_DATE' | 'UPDATE_INSTALLED' | 'ROLLED_BACK' | 'ERROR' | 'WITHHELD';
|
|
10
|
+
bundle?: OtaBundlePayload;
|
|
11
|
+
error?: string;
|
|
12
|
+
/** True when the server-side release has isMandatory set */
|
|
13
|
+
isMandatory?: boolean;
|
|
14
|
+
}
|
|
15
|
+
/** Boot-guard configuration */
|
|
16
|
+
export interface BootGuardConfig {
|
|
17
|
+
/**
|
|
18
|
+
* Milliseconds the app must run without crashing after an OTA update
|
|
19
|
+
* before the boot-guard marker is cleared. Default: 10_000 (10s).
|
|
20
|
+
*/
|
|
21
|
+
healthyAfterMs?: number;
|
|
22
|
+
/**
|
|
23
|
+
* @deprecated Not honoured, and never was — nothing in JS reads this field.
|
|
24
|
+
*
|
|
25
|
+
* The boot-attempt limit lives in native code, where the counter it bounds is
|
|
26
|
+
* incremented (`MAX_BOOT_ATTEMPTS` in `SlotManager.kt` / `OtaSlotManager.swift`,
|
|
27
|
+
* both 2). Setting it here has no effect; the field is kept only so existing
|
|
28
|
+
* call sites keep compiling. Change the limit natively, or file a request for
|
|
29
|
+
* it to be plumbed through `initOutbox`-style native config.
|
|
30
|
+
*/
|
|
31
|
+
maxRevertAttempts?: number;
|
|
32
|
+
/**
|
|
33
|
+
* What to do when the device reports root/jailbreak indicators.
|
|
34
|
+
*
|
|
35
|
+
* 'allow' — DEFAULT. Check, download and install as normal. The
|
|
36
|
+
* indicators are still detected, still logged, and still sent
|
|
37
|
+
* with the check request as telemetry.
|
|
38
|
+
* 'withhold' — Do not check for or install updates on this device. The
|
|
39
|
+
* device stays on whatever bundle it is already running.
|
|
40
|
+
*
|
|
41
|
+
* The default is `'allow'` and must stay `'allow'`. Flipping it would
|
|
42
|
+
* silently stop updates for every existing host app — including the ones
|
|
43
|
+
* whose "indicators" are a developer's test-keys build or a false positive —
|
|
44
|
+
* which is a far worse outcome than the risk it mitigates. Withholding is an
|
|
45
|
+
* opt-in a security-sensitive host makes with knowledge of its own users.
|
|
46
|
+
*
|
|
47
|
+
* What this is and is not: root defeats any check made from inside the app,
|
|
48
|
+
* so this is a POLICY, not a security boundary. A rooted device can patch the
|
|
49
|
+
* check out. What it does buy is that the SDK stops handing fresh, signed
|
|
50
|
+
* bundles to a device whose OTA slot other privileged processes can rewrite,
|
|
51
|
+
* and that the decision is auditable — an `UPDATE_WITHHELD` OTA event is
|
|
52
|
+
* emitted every time it fires, so the host never has to infer it from
|
|
53
|
+
* silence.
|
|
54
|
+
*
|
|
55
|
+
* Mobile only by nature. The web SDK ships no OTA lane at all — there is no
|
|
56
|
+
* bundle slot on a device to protect and no web counterpart to this flag.
|
|
57
|
+
*/
|
|
58
|
+
onCompromisedDevice?: 'allow' | 'withhold';
|
|
59
|
+
}
|
|
60
|
+
export declare class OtaOrchestrator {
|
|
61
|
+
private enabled;
|
|
62
|
+
private currentBundle;
|
|
63
|
+
/**
|
|
64
|
+
* The bundle this process is running, once hydrated from the native slots.
|
|
65
|
+
* Read-only view for integrations (e.g. the CodePush shim's
|
|
66
|
+
* getUpdateMetadata) that need to report the running version.
|
|
67
|
+
*/
|
|
68
|
+
getCurrentBundle(): OtaBundlePayload | null;
|
|
69
|
+
private isRestartRequiredState;
|
|
70
|
+
/**
|
|
71
|
+
* The sync currently running, if any. sync() had NO concurrency control:
|
|
72
|
+
* every caller started a full check/download/stage/apply cycle against the
|
|
73
|
+
* SAME slot directories. Two of them overlapping is not a wasted request,
|
|
74
|
+
* it is a corrupted install — native stage() ends with "remove next/,
|
|
75
|
+
* rename tmp -> next/" while apply() is doing "move next/ -> current/", so
|
|
76
|
+
* one racing the other throws and apply() can leave NO current/ slot at
|
|
77
|
+
* all. A host with a screen that syncs on mount and another that syncs on
|
|
78
|
+
* foreground reproduces this in seconds; on 2026-09-21 it cost two devices
|
|
79
|
+
* that could only be recovered by reinstalling.
|
|
80
|
+
*/
|
|
81
|
+
private syncInFlight;
|
|
82
|
+
/** When the last network check actually went out (see MIN_CHECK_INTERVAL_MS). */
|
|
83
|
+
private lastCheckAt;
|
|
84
|
+
/**
|
|
85
|
+
* A bundle that is staged and waiting for its restart.
|
|
86
|
+
*
|
|
87
|
+
* Kept SEPARATE from `currentBundle`, which must keep naming the bundle
|
|
88
|
+
* this process is actually executing. Overwriting `currentBundle` at apply
|
|
89
|
+
* time told the server the device was already running code it had never
|
|
90
|
+
* run, so the next check was answered with the NEXT release instead of
|
|
91
|
+
* "up to date" — which is how a single launch chained three installs. It
|
|
92
|
+
* also mis-attributed every CHECK and BOOT_SUCCESS event to a bundle the
|
|
93
|
+
* device had not booted.
|
|
94
|
+
*/
|
|
95
|
+
private pendingBundle;
|
|
96
|
+
/** Root/jailbreak indicators observed at init; empty when none found. */
|
|
97
|
+
private integrityIndicators;
|
|
98
|
+
/**
|
|
99
|
+
* The native detector was actually asked and answered on this launch.
|
|
100
|
+
*
|
|
101
|
+
* Kept separate from an empty `integrityIndicators` because the two are not
|
|
102
|
+
* the same fact: `false` means never measured (no native module, or the read
|
|
103
|
+
* threw), `true` with an empty list means measured and clean. Reporting the
|
|
104
|
+
* first as the second would show an unmeasured fleet as a clean one.
|
|
105
|
+
*/
|
|
106
|
+
private integrityMeasured;
|
|
107
|
+
private healthyTimer;
|
|
108
|
+
private bootGuardConfig;
|
|
109
|
+
private environment;
|
|
110
|
+
/** One-time boot checks have run in this process (init is idempotent). */
|
|
111
|
+
private initialized;
|
|
112
|
+
private storageBackend;
|
|
113
|
+
/**
|
|
114
|
+
* Initialize the orchestrator. Checks for boot-guard recovery state.
|
|
115
|
+
*
|
|
116
|
+
* Signature enforcement is no longer a JS concern: signed releases are
|
|
117
|
+
* verified and staged in NATIVE code against RSA keys embedded in the app
|
|
118
|
+
* package (SB-OTA-RSA-SHA256-V1), and unsigned releases keep working on
|
|
119
|
+
* SHA-256 integrity alone. There is nothing for the host to configure here.
|
|
120
|
+
*/
|
|
121
|
+
init(config?: BootGuardConfig): void;
|
|
122
|
+
/**
|
|
123
|
+
* Read the active slot back into `currentBundle` so the next check reports
|
|
124
|
+
* what this device is genuinely running.
|
|
125
|
+
*/
|
|
126
|
+
/**
|
|
127
|
+
* Parse the native slot state once. Returns null when the module is absent or
|
|
128
|
+
* the payload is unreadable — every caller treats that as "factory bundle".
|
|
129
|
+
*/
|
|
130
|
+
private readSlotState;
|
|
131
|
+
private hydrateCurrentBundleFromSlots;
|
|
132
|
+
/**
|
|
133
|
+
* Compare the bundle the slot manager believes is active against the identity
|
|
134
|
+
* marker compiled into the bundle that actually loaded.
|
|
135
|
+
*
|
|
136
|
+
* A mismatch means the install path reported success while the runtime kept
|
|
137
|
+
* executing different code — the silent no-op this whole guard exists for.
|
|
138
|
+
* It is reported as APPLY_FAILED, because that is what happened, regardless
|
|
139
|
+
* of what the previous session's telemetry claimed.
|
|
140
|
+
*
|
|
141
|
+
* The expectation recorded at install time is what makes this conclusive.
|
|
142
|
+
* Without it, a missing marker is ambiguous — it could be a bundle published
|
|
143
|
+
* before markers existed, or an install that never took effect. Having
|
|
144
|
+
* written down "this bundle definitely carries marker X" before restarting,
|
|
145
|
+
* a missing marker afterwards can only mean the second.
|
|
146
|
+
*/
|
|
147
|
+
private verifyRunningBundleIdentity;
|
|
148
|
+
private static readonly INSTALL_EXPECTATION_KEY;
|
|
149
|
+
private recordInstallExpectation;
|
|
150
|
+
private readInstallRecord;
|
|
151
|
+
/**
|
|
152
|
+
* Drop the identity token once the install has been proven, keeping the rest
|
|
153
|
+
* of the record.
|
|
154
|
+
*
|
|
155
|
+
* The record does two jobs: it proves an install took effect (once), and it
|
|
156
|
+
* maps the native slot's sha256 back to a bundle id (for the life of that
|
|
157
|
+
* bundle). Only the first job is finished after a successful verification, so
|
|
158
|
+
* only the token is retired.
|
|
159
|
+
*/
|
|
160
|
+
private retireIdentityToken;
|
|
161
|
+
private clearInstallExpectation;
|
|
162
|
+
private storage;
|
|
163
|
+
/**
|
|
164
|
+
* Sprint 5 (S5-NAT-1): Check if the native boot guard reverted us on this cold start.
|
|
165
|
+
* If getSlotState() shows bootMarkerPresent=false but we have a 'previous' slot
|
|
166
|
+
* and no 'current' OTA bundle, the native layer already reverted.
|
|
167
|
+
*/
|
|
168
|
+
private checkBootGuardRecovery;
|
|
169
|
+
isEnabled(): boolean;
|
|
170
|
+
/**
|
|
171
|
+
* Root/jailbreak indicators detected on this device, as stable reason strings.
|
|
172
|
+
* Empty means nothing was detected — not proof the device is clean.
|
|
173
|
+
*/
|
|
174
|
+
deviceIntegrityIndicators(): string[];
|
|
175
|
+
/**
|
|
176
|
+
* Should this device be refused an update?
|
|
177
|
+
*
|
|
178
|
+
* TRUE only when BOTH are so: the host opted into `'withhold'`, and the native
|
|
179
|
+
* detector actually found something. An empty indicator list is never a reason
|
|
180
|
+
* to withhold — "nothing detected" is the normal state of every healthy
|
|
181
|
+
* device, and treating it as a reason would brick updates for the whole fleet
|
|
182
|
+
* the moment a host set the flag.
|
|
183
|
+
*/
|
|
184
|
+
private shouldWithhold;
|
|
185
|
+
/**
|
|
186
|
+
* Announce the refusal, once per decision point.
|
|
187
|
+
*
|
|
188
|
+
* A withheld update must be visible as a decision, not as an absence. The
|
|
189
|
+
* event carries the indicators that drove it so the host can log WHY, and it
|
|
190
|
+
* names the bundle the device stays on (`'unknown'` for a device still on the
|
|
191
|
+
* factory bundle, which owns no OTA bundle id).
|
|
192
|
+
*/
|
|
193
|
+
private emitWithheld;
|
|
194
|
+
isRestartRequired(): boolean;
|
|
195
|
+
/**
|
|
196
|
+
* Perform an OTA check against the backend endpoint.
|
|
197
|
+
*/
|
|
198
|
+
checkForUpdate(requestParams: {
|
|
199
|
+
apiUrl: string;
|
|
200
|
+
clientKey: string;
|
|
201
|
+
appVersion: string;
|
|
202
|
+
installationId: string;
|
|
203
|
+
channelName?: string;
|
|
204
|
+
country?: string;
|
|
205
|
+
attributes?: Record<string, string | number>;
|
|
206
|
+
segmentIds?: string[];
|
|
207
|
+
lifecycleStage?: string;
|
|
208
|
+
}): Promise<OtaCheckResponse>;
|
|
209
|
+
/**
|
|
210
|
+
* Downloads, stage, and apply an update in one step.
|
|
211
|
+
* Sprint 5: emits lifecycle events + starts boot-guard heartbeat.
|
|
212
|
+
*/
|
|
213
|
+
/**
|
|
214
|
+
* Minimum gap between network checks. Not a policy, a stampede guard: an
|
|
215
|
+
* app that syncs on mount AND on every foreground transition can otherwise
|
|
216
|
+
* issue a burst of identical checks. Small enough not to get in the way of
|
|
217
|
+
* publishing and testing a release.
|
|
218
|
+
*/
|
|
219
|
+
private static readonly MIN_CHECK_INTERVAL_MS;
|
|
220
|
+
/**
|
|
221
|
+
* Check, download, stage and apply — at most ONE at a time.
|
|
222
|
+
*
|
|
223
|
+
* Concurrent callers join the sync already running rather than starting a
|
|
224
|
+
* second one, and a call made while an update is already staged returns
|
|
225
|
+
* without touching the slots: the staged bundle has to be activated by a
|
|
226
|
+
* restart before anything else can usefully happen, and re-checking here
|
|
227
|
+
* is what used to chain a second install onto the first.
|
|
228
|
+
*/
|
|
229
|
+
sync(rawParams: Parameters<OtaOrchestrator['runSync']>[0]): Promise<SyncResult>;
|
|
230
|
+
private runSync;
|
|
231
|
+
/**
|
|
232
|
+
* Sprint 5 (S5-NAT-1): Boot-guard heartbeat.
|
|
233
|
+
*
|
|
234
|
+
* After booting from an OTA bundle, start a timer. If the app survives
|
|
235
|
+
* `healthyAfterMs` without crashing, call `markHealthy()` to clear the
|
|
236
|
+
* native boot-guard marker. If JS crashes before the timer fires, the
|
|
237
|
+
* marker stays set and native code reverts on next cold start.
|
|
238
|
+
*/
|
|
239
|
+
private startBootGuardHeartbeat;
|
|
240
|
+
private bootFailedThisLaunch;
|
|
241
|
+
/**
|
|
242
|
+
* A render error was caught while a freshly-applied bundle is still inside its health window.
|
|
243
|
+
*
|
|
244
|
+
* WHY. The boot guard's only evidence of a bad bundle is that the process died before
|
|
245
|
+
* `healthyAfterMs`. An error boundary with a fallback keeps the process ALIVE: the user sees the
|
|
246
|
+
* fallback, the timer fires, `markHealthy()` runs, and a bundle that cannot render its first
|
|
247
|
+
* screen is recorded as healthy and never reverted. ScaleBunErrorBoundary calls this so the
|
|
248
|
+
* marker stays set: the next cold start counts toward the bundle's revert exactly as a crash
|
|
249
|
+
* would have.
|
|
250
|
+
*
|
|
251
|
+
* No-op outside the window (the bundle already proved itself, or this launch is not an OTA
|
|
252
|
+
* bundle's first run), so a boundary catching an ordinary bug later in the session never
|
|
253
|
+
* condemns a healthy release.
|
|
254
|
+
*
|
|
255
|
+
* @returns true when the window was open and `markHealthy` has been withheld.
|
|
256
|
+
*/
|
|
257
|
+
noteBootFailure(): boolean;
|
|
258
|
+
/** One-shot guard so repeated syncs cannot stack resume listeners. */
|
|
259
|
+
private resumeRestartArmed;
|
|
260
|
+
/**
|
|
261
|
+
* ON_NEXT_RESUME: restart the JS runtime the next time the app returns to
|
|
262
|
+
* the foreground after genuinely being in the background.
|
|
263
|
+
*
|
|
264
|
+
* The staged bundle is already applied at this point — the restart is purely
|
|
265
|
+
* about WHEN the user experiences the reload. Two deliberate choices:
|
|
266
|
+
*
|
|
267
|
+
* - Armed only after a real background→active transition, never on the
|
|
268
|
+
* initial 'active' state, so installing while the user is mid-session
|
|
269
|
+
* does not instantly yank the screen out from under them.
|
|
270
|
+
* - One-shot. The listener removes itself after firing (or after the
|
|
271
|
+
* restart makes the whole question moot).
|
|
272
|
+
*/
|
|
273
|
+
private armResumeRestart;
|
|
274
|
+
/**
|
|
275
|
+
* Reload the JS app bundle to apply the new update immediately.
|
|
276
|
+
*
|
|
277
|
+
* Order matters: the native `restartApp()` is the only path that works in
|
|
278
|
+
* RELEASE builds. `DevSettings.reload()` looks callable there too — it
|
|
279
|
+
* logged, returned, and reloaded nothing when tested live on a release APK,
|
|
280
|
+
* which made every "restart" this SDK ever promised a silent no-op in
|
|
281
|
+
* production. DevSettings remains as the dev-build fallback for hosts that
|
|
282
|
+
* have not rebuilt native yet.
|
|
283
|
+
*/
|
|
284
|
+
restart(): void;
|
|
285
|
+
}
|
|
286
|
+
export declare const otaOrchestrator: OtaOrchestrator;
|
|
287
|
+
//# sourceMappingURL=OtaOrchestrator.d.ts.map
|
|
@@ -0,0 +1,193 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* OTA contract types — SDK-side mirror of the backend's ota.contracts.ts.
|
|
3
|
+
*
|
|
4
|
+
* These types are hand-maintained here AND mirrored in the backend.
|
|
5
|
+
* Golden JSON fixtures in packages/protocol/fixtures/ota/ are the SINGLE source
|
|
6
|
+
* of truth; conformance tests in both repos assert against them to prevent drift.
|
|
7
|
+
*/
|
|
8
|
+
/**
|
|
9
|
+
* ═══════════════════════════════════════════════════════════════════════════
|
|
10
|
+
* OTA-TELEMETRY-SPEC — status (spec §84-86)
|
|
11
|
+
* ═══════════════════════════════════════════════════════════════════════════
|
|
12
|
+
* Items 1-3 are DONE. All were additive and backward-compatible: old installed
|
|
13
|
+
* clients simply omit the new fields and never emit the new types, and the
|
|
14
|
+
* backend ingests nullable columns. Because they alter device runtime behaviour,
|
|
15
|
+
* verify against a real RN build + device kill-test before release — Metro
|
|
16
|
+
* cannot exercise the boot guard.
|
|
17
|
+
*
|
|
18
|
+
* 1. releaseId end-to-end — DONE. `recordInstallExpectation` persists the
|
|
19
|
+
* release id (so a rollback reported launches later can still name it),
|
|
20
|
+
* `hydrateCurrentBundleFromSlots` restores it, every emit site passes it, and
|
|
21
|
+
* `deliverOtaEvents` maps it onto the wire item.
|
|
22
|
+
*
|
|
23
|
+
* 2. CHECK + OFFERED — DONE. CHECK is emitted at the top of `sync()` for devices
|
|
24
|
+
* already on an OTA bundle (a device on the factory bundle has no owned
|
|
25
|
+
* bundle id to name, and the server drops rows it cannot resolve — those are
|
|
26
|
+
* counted server-side instead). OFFERED is emitted on `action === 'DOWNLOAD'`
|
|
27
|
+
* before any bytes move.
|
|
28
|
+
*
|
|
29
|
+
* 3. BOOT_SUCCESS — DONE. Emitted from the boot-guard heartbeat once the bundle
|
|
30
|
+
* has actually booted and survived to `healthyAfterMs`. INSTALLED is kept and
|
|
31
|
+
* still means "staged + swapped", but activation should be measured on
|
|
32
|
+
* BOOT_SUCCESS: INSTALLED fires before the bundle has run, so it credits
|
|
33
|
+
* bundles that installed and then crash-reverted.
|
|
34
|
+
*
|
|
35
|
+
* 4. Stamp the running OTA bundle onto session/crash telemetry — NOT DONE.
|
|
36
|
+
* `SessionMetadata.bundleId` is the NATIVE app package id, not the OTA bundle,
|
|
37
|
+
* so crashes cannot currently be attributed to the bundle that produced them
|
|
38
|
+
* (release-health crash impact). Needs optional otaBundleId?/otaBundleVersion?
|
|
39
|
+
* (distinct fields — do NOT overload bundleId) sourced from
|
|
40
|
+
* `otaOrchestrator.getCurrentBundle()` at session start, plus the matching
|
|
41
|
+
* backend columns and a Prisma migration.
|
|
42
|
+
*
|
|
43
|
+
* Do NOT repurpose errorCode (it already collapses failure-error vs rollback-
|
|
44
|
+
* reason); add a new optional field if the two must be distinguished.
|
|
45
|
+
* ═══════════════════════════════════════════════════════════════════════════
|
|
46
|
+
*/
|
|
47
|
+
export interface OtaCheckRequest {
|
|
48
|
+
appVersion: string;
|
|
49
|
+
platform: 'android' | 'ios';
|
|
50
|
+
arch?: string;
|
|
51
|
+
installationId: string;
|
|
52
|
+
currentBundleId?: string;
|
|
53
|
+
currentBundleHash?: string;
|
|
54
|
+
/**
|
|
55
|
+
* What this build can do with an offer. `signed_patch_v1`: the native module
|
|
56
|
+
* has `verifyAndStagePatch`, so a SIGNED release can be applied from a patch.
|
|
57
|
+
* The server offers signed patches only to devices that say so — every older
|
|
58
|
+
* build would download the patch URL for nothing. Absent = no capabilities.
|
|
59
|
+
* Additive and optional (the backend DTO does not whitelist-strip).
|
|
60
|
+
*/
|
|
61
|
+
otaCapabilities?: string[];
|
|
62
|
+
/**
|
|
63
|
+
* Trusted key IDs embedded in this app binary, for SDK trust coverage
|
|
64
|
+
* (CICDPAGE §12). Telemetry only — never a source of server-side trust.
|
|
65
|
+
*/
|
|
66
|
+
trustedKeyIds?: string[];
|
|
67
|
+
/**
|
|
68
|
+
* Root/jailbreak indicator strings observed on this device at init, verbatim
|
|
69
|
+
* from the native detectors (`DeviceIntegrity.kt` / `DeviceIntegrity.swift`).
|
|
70
|
+
* Absent — not `[]` — when the native module could not be asked, so "not
|
|
71
|
+
* measured" stays distinguishable from "measured, nothing found".
|
|
72
|
+
*
|
|
73
|
+
* TELEMETRY ONLY, exactly like `trustedKeyIds`: never a source of server-side
|
|
74
|
+
* trust. Root defeats any check made from inside the app, so a device can
|
|
75
|
+
* always send `[]`; the value of the field is fleet-level ("what share of
|
|
76
|
+
* installs report indicators?"), never per-device enforcement.
|
|
77
|
+
*
|
|
78
|
+
* ADDITIVE AND OPTIONAL, deliberately. As of 2026-09-21 the backend's
|
|
79
|
+
* `OtaCheckDto` declares no such field, and the global ValidationPipe runs
|
|
80
|
+
* with `whitelist: false, forbidNonWhitelisted: false` — so sending it is
|
|
81
|
+
* safe (no 400, no stripping of the fields around it) but the value is
|
|
82
|
+
* IGNORED server-side until the backend adds the property and a column. The
|
|
83
|
+
* withholding decision itself is therefore entirely client-side and does not
|
|
84
|
+
* wait on a backend deploy. Mobile only: the web SDK has no OTA lane at all,
|
|
85
|
+
* so there is no web counterpart to keep in step.
|
|
86
|
+
*/
|
|
87
|
+
integrityIndicators?: string[];
|
|
88
|
+
/** Channel to pull from. Omitted means `default`. */
|
|
89
|
+
channelName?: string;
|
|
90
|
+
/** ISO 3166-1 alpha-2. The server fills this from the edge when absent. */
|
|
91
|
+
country?: string;
|
|
92
|
+
/** Free-form device attributes evaluated by ATTRIBUTE rules. */
|
|
93
|
+
attributes?: Record<string, string | number>;
|
|
94
|
+
/** CDP segment ids this installation belongs to. */
|
|
95
|
+
segmentIds?: string[];
|
|
96
|
+
/** Lifecycle stage (e.g. 'onboarding', 'activated', 'churned'). */
|
|
97
|
+
lifecycleStage?: string;
|
|
98
|
+
/** React Native version of the host binary, e.g. `"0.81.5"`. */
|
|
99
|
+
rnVersion?: string;
|
|
100
|
+
/** True when the JS engine is Hermes. */
|
|
101
|
+
hermes?: boolean;
|
|
102
|
+
/**
|
|
103
|
+
* Hermes bytecode (HBC) format version of the running engine. Independent of
|
|
104
|
+
* the RN release number. A mismatch either fails to load outright ("Wrong
|
|
105
|
+
* bytecode version. Expected 96 but got 98") or — worse — loads and crashes
|
|
106
|
+
* later on a path the older runtime does not expose.
|
|
107
|
+
*/
|
|
108
|
+
hermesBytecodeVersion?: number;
|
|
109
|
+
/** True when running the New Architecture's bridgeless runtime. */
|
|
110
|
+
bridgeless?: boolean;
|
|
111
|
+
}
|
|
112
|
+
export interface OtaCheckResponse {
|
|
113
|
+
action: 'NONE' | 'DOWNLOAD' | 'ROLLBACK';
|
|
114
|
+
bundle?: OtaBundlePayload;
|
|
115
|
+
}
|
|
116
|
+
export interface OtaBundlePayload {
|
|
117
|
+
id: string;
|
|
118
|
+
version: number;
|
|
119
|
+
/**
|
|
120
|
+
* The release this bundle is served AS (the backend now includes it — see
|
|
121
|
+
* ota.contracts.ts / ota-check.service.ts). Optional, for backward-compat with
|
|
122
|
+
* older backends. Carry it onto the emitted OtaEventItem.releaseId so telemetry
|
|
123
|
+
* is attributable by RELEASE, not just bundle. See OTA-TELEMETRY-SPEC below.
|
|
124
|
+
*/
|
|
125
|
+
releaseId?: string;
|
|
126
|
+
url: string;
|
|
127
|
+
size: number;
|
|
128
|
+
sha256: string;
|
|
129
|
+
signature?: string;
|
|
130
|
+
/**
|
|
131
|
+
* SB-OTA-RSA-SHA256-V1 release envelope. Present on signed releases; carries
|
|
132
|
+
* the protocol id, the id of the trusted RSA key the release was signed with,
|
|
133
|
+
* the canonical signed payload, and its signature. When present, the SDK hands
|
|
134
|
+
* the whole envelope to the native module (`verifyAndStageRelease`), which
|
|
135
|
+
* verifies the signature against the RSA public keys EMBEDDED in the app
|
|
136
|
+
* package and then downloads + integrity-checks + stages the artifact — JS
|
|
137
|
+
* never stages bytes it has not proven authentic, and never pins or verifies a
|
|
138
|
+
* key itself. Absent on legacy/unsigned releases, which fall back to
|
|
139
|
+
* `stageBundle` on SHA-256 integrity alone.
|
|
140
|
+
*/
|
|
141
|
+
envelope?: {
|
|
142
|
+
protocol: string;
|
|
143
|
+
keyId: string;
|
|
144
|
+
signedPayload: string;
|
|
145
|
+
signature: string;
|
|
146
|
+
};
|
|
147
|
+
isMandatory: boolean;
|
|
148
|
+
/**
|
|
149
|
+
* How to activate the bundle after install:
|
|
150
|
+
* ON_NEXT_RESTART — nothing to do now; next cold start loads it (default)
|
|
151
|
+
* ON_NEXT_RESUME — restart the JS runtime when the app next returns to
|
|
152
|
+
* the foreground after a background stay
|
|
153
|
+
* IMMEDIATE — restart the JS runtime right after install
|
|
154
|
+
* Absent means ON_NEXT_RESTART, which is what every pre-installMode release
|
|
155
|
+
* actually did.
|
|
156
|
+
*/
|
|
157
|
+
installMode?: 'ON_NEXT_RESTART' | 'ON_NEXT_RESUME' | 'IMMEDIATE';
|
|
158
|
+
releaseNote?: string;
|
|
159
|
+
patch?: OtaPatchPayload;
|
|
160
|
+
/**
|
|
161
|
+
* Identity marker compiled into this bundle at publish time.
|
|
162
|
+
*
|
|
163
|
+
* Recorded at install; compared after restart against the marker the RUNNING
|
|
164
|
+
* bundle carries. Its PRESENCE is the important part — knowing a bundle
|
|
165
|
+
* definitely has a marker is what turns "no marker after restart" from
|
|
166
|
+
* ambiguous into proof that the install never took effect.
|
|
167
|
+
*/
|
|
168
|
+
identityToken?: string;
|
|
169
|
+
}
|
|
170
|
+
export interface OtaPatchPayload {
|
|
171
|
+
url: string;
|
|
172
|
+
size: number;
|
|
173
|
+
sha256: string;
|
|
174
|
+
baseBundleId: string;
|
|
175
|
+
/**
|
|
176
|
+
* SHA-256 of the bundle this patch was made FROM. When present, native refuses
|
|
177
|
+
* the patch unless the installed bundle hashes to it (a bundle id alone does
|
|
178
|
+
* not prove the bytes). Optional: older servers do not send it.
|
|
179
|
+
*/
|
|
180
|
+
baseSha256?: string;
|
|
181
|
+
}
|
|
182
|
+
import type { OtaEventType as EmittedOtaEventType } from './OtaEventEmitter';
|
|
183
|
+
export type OtaEventType = Exclude<EmittedOtaEventType, 'DOWNLOAD_PROGRESS' | 'UPDATE_WITHHELD'>;
|
|
184
|
+
export interface OtaEventItem {
|
|
185
|
+
kind: 'ota_event';
|
|
186
|
+
bundleId: string;
|
|
187
|
+
releaseId?: string;
|
|
188
|
+
type: OtaEventType;
|
|
189
|
+
durationMs?: number;
|
|
190
|
+
errorCode?: string;
|
|
191
|
+
patchUsed?: boolean;
|
|
192
|
+
}
|
|
193
|
+
//# sourceMappingURL=OtaTypes.d.ts.map
|
|
@@ -0,0 +1,18 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Hardware/OS context auto-attached to OTA check payloads so ATTRIBUTE targeting
|
|
3
|
+
* rules can address device classes without any host-app wiring:
|
|
4
|
+
*
|
|
5
|
+
* deviceModel — 'SM-A155F', '23129RAA4G'… (Android; iOS does not expose it in JS)
|
|
6
|
+
* manufacturer — 'samsung', 'xiaomi'… (lowercased: rules shouldn't fail on casing)
|
|
7
|
+
* brand — 'redmi' vs manufacturer 'xiaomi' — sub-brands are real segments
|
|
8
|
+
* osVersion — Android Release ('14') / iOS version ('17.5')
|
|
9
|
+
* formFactor — 'phone' | 'tablet' | 'tv' (Android tablets via the 600dp
|
|
10
|
+
* smallest-width convention — the same line AndroidX draws)
|
|
11
|
+
*
|
|
12
|
+
* Host-supplied attributes always win on key collision: an app that knows better
|
|
13
|
+
* (e.g. its own device tiering) must not be overridden by generic detection.
|
|
14
|
+
* Everything here is best-effort — a missing constant yields a missing key,
|
|
15
|
+
* never a guessed value.
|
|
16
|
+
*/
|
|
17
|
+
export declare function deviceTargetingAttributes(): Record<string, string>;
|
|
18
|
+
//# sourceMappingURL=deviceAttributes.d.ts.map
|
|
@@ -0,0 +1,99 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* OTA runtime environment detection.
|
|
3
|
+
*
|
|
4
|
+
* ── Why this file exists ────────────────────────────────────────────────────
|
|
5
|
+
*
|
|
6
|
+
* Our Android OTA resolves the active bundle through
|
|
7
|
+
* `MainApplication.getJSBundleFile()`. That is a *bridge-mode* API.
|
|
8
|
+
*
|
|
9
|
+
* Under the New Architecture (bridgeless), the app is built by
|
|
10
|
+
* `DefaultReactHost` instead — and until React Native 0.76.1,
|
|
11
|
+
* `DefaultReactNativeHost.toReactHost()` never forwarded `jsBundleFile`:
|
|
12
|
+
*
|
|
13
|
+
* // RN 0.74.1 — DefaultReactNativeHost.kt
|
|
14
|
+
* public fun toReactHost(context: Context): ReactHost =
|
|
15
|
+
* DefaultReactHost.getDefaultReactHost(
|
|
16
|
+
* context, packages, jsMainModuleName,
|
|
17
|
+
* bundleAssetName ?: "index", // <- jsBundleFile is NEVER passed
|
|
18
|
+
* isHermesEnabled ?: true)
|
|
19
|
+
*
|
|
20
|
+
* // RN 0.74.1 — DefaultReactHost.kt
|
|
21
|
+
* val jsBundleLoader =
|
|
22
|
+
* JSBundleLoader.createAssetLoader(context, "assets://$jsBundleAssetPath", true)
|
|
23
|
+
*
|
|
24
|
+
* The loader is hardcoded to the APK asset. `getJSBundleFile()` is never
|
|
25
|
+
* consulted, so an update stages, applies, reports INSTALLED, restarts — and
|
|
26
|
+
* the app loads the bundle baked into the APK. Every signal says success and
|
|
27
|
+
* nothing happened. This is the same failure that killed CodePush on modern RN.
|
|
28
|
+
*
|
|
29
|
+
* Fixed upstream in 0.76.1 (`jsBundleFile` is threaded through). Verified
|
|
30
|
+
* present in 0.81.5.
|
|
31
|
+
*
|
|
32
|
+
* We refuse to run rather than pretend to work. A loud failure at startup is
|
|
33
|
+
* recoverable; a silent no-op that reports success is not — it corrupts the
|
|
34
|
+
* adoption metrics, the guard thresholds, and every rollout decision made
|
|
35
|
+
* from them.
|
|
36
|
+
*/
|
|
37
|
+
/** First React Native version where bridgeless honours `getJSBundleFile()`. */
|
|
38
|
+
export declare const MIN_BRIDGELESS_RN: {
|
|
39
|
+
readonly major: 0;
|
|
40
|
+
readonly minor: 76;
|
|
41
|
+
readonly patch: 1;
|
|
42
|
+
};
|
|
43
|
+
/**
|
|
44
|
+
* React Native 0.82 REMOVED `ReactNativeHost`. The New Architecture became
|
|
45
|
+
* mandatory and `newArchEnabled=false` was withdrawn, so the legacy
|
|
46
|
+
* `override fun getJSBundleFile()` integration does not merely stop working —
|
|
47
|
+
* it does not compile. From 0.82 the only correct integration is passing
|
|
48
|
+
* `jsBundleFilePath` straight to `getDefaultReactHost(...)`.
|
|
49
|
+
*
|
|
50
|
+
* We cannot see which integration a host app used, so this is not a block. It
|
|
51
|
+
* drives a startup hint, and the post-restart identity check is what actually
|
|
52
|
+
* catches a host that got it wrong.
|
|
53
|
+
*/
|
|
54
|
+
export declare const REACT_HOST_ONLY_RN: {
|
|
55
|
+
readonly major: 0;
|
|
56
|
+
readonly minor: 82;
|
|
57
|
+
readonly patch: 0;
|
|
58
|
+
};
|
|
59
|
+
export interface RnVersion {
|
|
60
|
+
major: number;
|
|
61
|
+
minor: number;
|
|
62
|
+
patch: number;
|
|
63
|
+
}
|
|
64
|
+
export interface OtaEnvironment {
|
|
65
|
+
/** Parsed React Native version, or null when it could not be determined. */
|
|
66
|
+
rnVersion: RnVersion | null;
|
|
67
|
+
/** `"0.76.1"`, or null. Sent to the backend for compatibility gating. */
|
|
68
|
+
rnVersionString: string | null;
|
|
69
|
+
/** True when running on the New Architecture's bridgeless runtime. */
|
|
70
|
+
bridgeless: boolean;
|
|
71
|
+
/** True when the JS engine is Hermes. */
|
|
72
|
+
hermes: boolean;
|
|
73
|
+
/**
|
|
74
|
+
* Hermes bytecode (HBC) format version of the *running* engine. This is the
|
|
75
|
+
* file-format compatibility number, NOT a React Native release number — the
|
|
76
|
+
* two move independently. A bundle compiled by a different hermesc can be
|
|
77
|
+
* rejected outright ("Wrong bytecode version. Expected 96 but got 98") or,
|
|
78
|
+
* worse, load fine and crash later on a path the older runtime lacks.
|
|
79
|
+
*/
|
|
80
|
+
hermesBytecodeVersion: number | null;
|
|
81
|
+
/** False when OTA cannot work on this runtime and must not be enabled. */
|
|
82
|
+
supported: boolean;
|
|
83
|
+
/** Human-readable explanation when `supported` is false. */
|
|
84
|
+
blockReason: string | null;
|
|
85
|
+
/**
|
|
86
|
+
* True on RN >= 0.82, where `ReactNativeHost` no longer exists and the only
|
|
87
|
+
* valid integration is `getDefaultReactHost(..., jsBundleFilePath = …)`.
|
|
88
|
+
* Used to make the startup diagnostic name the right fix.
|
|
89
|
+
*/
|
|
90
|
+
requiresReactHostIntegration: boolean;
|
|
91
|
+
}
|
|
92
|
+
/**
|
|
93
|
+
* Detect the runtime environment and decide whether OTA can function at all.
|
|
94
|
+
* Result is cached — none of these values change during a process lifetime.
|
|
95
|
+
*/
|
|
96
|
+
export declare function detectOtaEnvironment(): OtaEnvironment;
|
|
97
|
+
/** Test seam — the detection result is process-lifetime cached. */
|
|
98
|
+
export declare function _resetOtaEnvironmentCache(): void;
|
|
99
|
+
//# sourceMappingURL=environment.d.ts.map
|
|
@@ -0,0 +1,14 @@
|
|
|
1
|
+
/** Override the lookup endpoint (e.g. a self-hosted Worker). */
|
|
2
|
+
export declare function setGeoEndpoint(url: string): void;
|
|
3
|
+
/**
|
|
4
|
+
* Synchronous read of the cached country (uppercase ISO 3166-1 alpha-2), or
|
|
5
|
+
* null when no fresh lookup has ever succeeded. Never triggers network.
|
|
6
|
+
*/
|
|
7
|
+
export declare function getDeviceCountry(): string | null;
|
|
8
|
+
/**
|
|
9
|
+
* Refresh the cache from the Worker if stale. Fire-and-forget: call it at
|
|
10
|
+
* orchestrator init; the first check of a cold install may go out without a
|
|
11
|
+
* country (the server stores the country per device on later checks anyway).
|
|
12
|
+
*/
|
|
13
|
+
export declare function prefetchDeviceCountry(): Promise<void>;
|
|
14
|
+
//# sourceMappingURL=geoCountry.d.ts.map
|
|
@@ -0,0 +1,53 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Retry with exponential backoff and full jitter.
|
|
3
|
+
*
|
|
4
|
+
* ── Why ─────────────────────────────────────────────────────────────────────
|
|
5
|
+
*
|
|
6
|
+
* The OTA path had no retry at all. A download that failed on a flaky mobile
|
|
7
|
+
* connection returned an error and the device then waited for the next cold
|
|
8
|
+
* start to try again — which on a phone is often hours, and on a device that
|
|
9
|
+
* is never fully restarted, effectively never. On mobile networks a single
|
|
10
|
+
* transient failure is the common case, not the exception.
|
|
11
|
+
*
|
|
12
|
+
* Full jitter (`random(0, backoff)` rather than `backoff`) matters more here
|
|
13
|
+
* than in most clients: every device on a release checks in against the same
|
|
14
|
+
* schedule, so a fixed backoff would retry the whole fleet in lockstep and
|
|
15
|
+
* turn one origin blip into a synchronised thundering herd.
|
|
16
|
+
*/
|
|
17
|
+
export interface RetryOptions {
|
|
18
|
+
/** Total attempts including the first. Default 3. */
|
|
19
|
+
attempts?: number;
|
|
20
|
+
/** Base delay in ms for the first backoff. Default 1000. */
|
|
21
|
+
baseDelayMs?: number;
|
|
22
|
+
/** Upper bound on any single delay. Default 30_000. */
|
|
23
|
+
maxDelayMs?: number;
|
|
24
|
+
/** Label used in log lines. */
|
|
25
|
+
label?: string;
|
|
26
|
+
/**
|
|
27
|
+
* Decides whether a given failure is worth retrying. Default: retry
|
|
28
|
+
* everything. Callers should pass a predicate that returns false for
|
|
29
|
+
* failures that will never succeed on a retry (4xx, hash mismatch), so a
|
|
30
|
+
* device does not burn battery re-requesting something already rejected.
|
|
31
|
+
*/
|
|
32
|
+
isRetryable?: (err: unknown) => boolean;
|
|
33
|
+
}
|
|
34
|
+
/** Exposed for tests; `Math.random` is the only nondeterminism in the schedule. */
|
|
35
|
+
export declare function backoffDelay(attemptIndex: number, baseDelayMs: number, maxDelayMs: number, random?: () => number): number;
|
|
36
|
+
/**
|
|
37
|
+
* Run `fn`, retrying on failure with exponential backoff.
|
|
38
|
+
* Rethrows the last error once attempts are exhausted.
|
|
39
|
+
*/
|
|
40
|
+
export declare function retryWithBackoff<T>(fn: (attempt: number) => Promise<T>, options?: RetryOptions): Promise<T>;
|
|
41
|
+
/**
|
|
42
|
+
* True for failures that a later attempt could plausibly survive.
|
|
43
|
+
*
|
|
44
|
+
* Network errors and 5xx/429 are retryable. A 4xx other than 429 is the server
|
|
45
|
+
* telling us the request itself is wrong — retrying it just wastes battery.
|
|
46
|
+
*/
|
|
47
|
+
export declare function isRetryableNetworkError(err: unknown): boolean;
|
|
48
|
+
/** Error carrying an HTTP status so `isRetryableNetworkError` can classify it. */
|
|
49
|
+
export declare class HttpStatusError extends Error {
|
|
50
|
+
readonly status: number;
|
|
51
|
+
constructor(message: string, status: number);
|
|
52
|
+
}
|
|
53
|
+
//# sourceMappingURL=retry.d.ts.map
|