@scalebun/react-native 1.10.4 → 1.10.6
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/android/src/main/java/com/scalebun/replaysdk/tracking/InteractionTracker.kt +19 -0
- package/dist/scalebun.full.js +460 -57
- package/dist/scalebun.slim.js +457 -62
- package/ios/Core/DeviceIdentity.swift +50 -0
- package/ios/Profiler/ScaleBunProfilerModule.swift +2 -8
- package/ios/ReplaySdk.swift +3 -1
- package/lib/commonjs/analytics/EventTracker.js +22 -0
- package/lib/commonjs/bootstrap/SDKBootstrapper.js +17 -3
- package/lib/commonjs/core/config/schema.js +29 -0
- package/lib/commonjs/core/constants/version.js +1 -1
- package/lib/commonjs/core/context/device.js +5 -0
- package/lib/commonjs/debug/redaction.js +227 -41
- package/lib/commonjs/features/journey/ScaleBunDebugRoot.js +9 -1
- package/lib/commonjs/features/navigation/AutoScreenDetector.js +68 -16
- package/lib/commonjs/features/session/BackendSessionAdapter.js +73 -6
- package/lib/commonjs/features/session/SessionManager.js +28 -0
- package/lib/commonjs/public/ScaleBunFacade.js +113 -2
- package/lib/module/analytics/EventTracker.js +22 -0
- package/lib/module/bootstrap/SDKBootstrapper.js +17 -3
- package/lib/module/core/config/schema.js +29 -0
- package/lib/module/core/constants/version.js +1 -1
- package/lib/module/core/context/device.js +5 -0
- package/lib/module/debug/redaction.js +227 -41
- package/lib/module/features/journey/ScaleBunDebugRoot.js +9 -1
- package/lib/module/features/navigation/AutoScreenDetector.js +68 -16
- package/lib/module/features/session/BackendSessionAdapter.js +73 -6
- package/lib/module/features/session/SessionManager.js +28 -0
- package/lib/module/public/ScaleBunFacade.js +114 -3
- package/lib/typescript/analytics/EventTracker.d.ts +15 -0
- package/lib/typescript/core/config/schema.d.ts +8 -0
- package/lib/typescript/core/constants/version.d.ts +1 -1
- package/lib/typescript/core/context/device.d.ts +1 -0
- package/lib/typescript/debug/redaction.d.ts +8 -2
- package/lib/typescript/features/navigation/AutoScreenDetector.d.ts +25 -0
- package/lib/typescript/features/session/BackendSessionAdapter.d.ts +9 -0
- package/lib/typescript/features/session/SessionManager.d.ts +15 -0
- package/lib/typescript/public/ScaleBunFacade.d.ts +44 -2
- package/lib/typescript/public/types.d.ts +1 -1
- package/package.json +6 -2
- package/src/analytics/EventTracker.ts +19 -0
- package/src/bootstrap/SDKBootstrapper.ts +17 -1
- package/src/core/config/schema.ts +22 -0
- package/src/core/constants/version.ts +1 -1
- package/src/core/context/device.ts +6 -0
- package/src/debug/redaction.ts +235 -42
- package/src/features/journey/ScaleBunDebugRoot.tsx +9 -1
- package/src/features/navigation/AutoScreenDetector.ts +70 -16
- package/src/features/session/BackendSessionAdapter.ts +81 -7
- package/src/features/session/SessionManager.ts +31 -0
- package/src/public/ScaleBunFacade.ts +122 -3
- package/src/public/types.ts +1 -1
- package/dist/scalebun.full.js.map +0 -1
- package/dist/scalebun.slim.js.map +0 -1
- package/lib/commonjs/analytics/EventTracker.js.map +0 -1
- package/lib/commonjs/analytics/automaticEvents.js.map +0 -1
- package/lib/commonjs/analytics/batching.js.map +0 -1
- package/lib/commonjs/analytics/eventLane.js.map +0 -1
- package/lib/commonjs/bootstrap/FeatureRegistry.js.map +0 -1
- package/lib/commonjs/bootstrap/SDKBootstrapper.js.map +0 -1
- package/lib/commonjs/bucketing/fnv1a32.js.map +0 -1
- package/lib/commonjs/compat/codepush.js.map +0 -1
- package/lib/commonjs/config/ConfigManager.js.map +0 -1
- package/lib/commonjs/config/configTypes.js.map +0 -1
- package/lib/commonjs/core/architecture.js.map +0 -1
- package/lib/commonjs/core/clock/now.js.map +0 -1
- package/lib/commonjs/core/config/defaults.js.map +0 -1
- package/lib/commonjs/core/config/schema.js.map +0 -1
- package/lib/commonjs/core/constants/endpoints.js.map +0 -1
- package/lib/commonjs/core/constants/protocol.js.map +0 -1
- package/lib/commonjs/core/constants/timings.js.map +0 -1
- package/lib/commonjs/core/constants/version.js.map +0 -1
- package/lib/commonjs/core/context/app.js.map +0 -1
- package/lib/commonjs/core/context/device.js.map +0 -1
- package/lib/commonjs/core/context/session.js.map +0 -1
- package/lib/commonjs/core/context/user.js.map +0 -1
- package/lib/commonjs/core/contracts/IFeature.js.map +0 -1
- package/lib/commonjs/core/di/container.js.map +0 -1
- package/lib/commonjs/core/encoding/base64.js.map +0 -1
- package/lib/commonjs/core/id/deviceId.js.map +0 -1
- package/lib/commonjs/core/id/installationId.js.map +0 -1
- package/lib/commonjs/core/id/sessionId.js.map +0 -1
- package/lib/commonjs/core/lifecycle/appLifecycle.js.map +0 -1
- package/lib/commonjs/core/lifecycle/crashSafe.js.map +0 -1
- package/lib/commonjs/core/logger/errorClassification.js.map +0 -1
- package/lib/commonjs/core/logger/internalLogger.js.map +0 -1
- package/lib/commonjs/core/logger/levels.js.map +0 -1
- package/lib/commonjs/crypto/hmacSha256.js.map +0 -1
- package/lib/commonjs/debug/bootstrap.js.map +0 -1
- package/lib/commonjs/debug/commands.js.map +0 -1
- package/lib/commonjs/debug/configBuilder.js.map +0 -1
- package/lib/commonjs/debug/exportBridge.js.map +0 -1
- package/lib/commonjs/debug/hostResolver.js.map +0 -1
- package/lib/commonjs/debug/index.js.map +0 -1
- package/lib/commonjs/debug/metrics.js.map +0 -1
- package/lib/commonjs/debug/perf.js.map +0 -1
- package/lib/commonjs/debug/perfWiring.js.map +0 -1
- package/lib/commonjs/debug/protocol.js.map +0 -1
- package/lib/commonjs/debug/redaction.js.map +0 -1
- package/lib/commonjs/debug/replayWiring.js.map +0 -1
- package/lib/commonjs/debug/screenTracking.js.map +0 -1
- package/lib/commonjs/debug/sessionWiring.js.map +0 -1
- package/lib/commonjs/debug/stream.js.map +0 -1
- package/lib/commonjs/debug/transport.js.map +0 -1
- package/lib/commonjs/features/bugreport/BugReportFeature.js.map +0 -1
- package/lib/commonjs/features/bugreport/buildPayload.js.map +0 -1
- package/lib/commonjs/features/bugreport/index.js.map +0 -1
- package/lib/commonjs/features/crash/CrashFeature.js.map +0 -1
- package/lib/commonjs/features/crash/CrashReporter.js.map +0 -1
- package/lib/commonjs/features/crash/NativeCrashFeature.js.map +0 -1
- package/lib/commonjs/features/crash/capture.js.map +0 -1
- package/lib/commonjs/features/crash/globalHandler.js.map +0 -1
- package/lib/commonjs/features/crash/index.js.map +0 -1
- package/lib/commonjs/features/crash/nativeCrashBridge.js.map +0 -1
- package/lib/commonjs/features/crash/rejectionHandler.js.map +0 -1
- package/lib/commonjs/features/engage/EngageAnchor.js.map +0 -1
- package/lib/commonjs/features/engage/EngageArchetypeRenderers.js.map +0 -1
- package/lib/commonjs/features/engage/EngageInAppView.js.map +0 -1
- package/lib/commonjs/features/engage/EngageInlinePlacement.js.map +0 -1
- package/lib/commonjs/features/engage/EngagePromptProvider.js.map +0 -1
- package/lib/commonjs/features/engage/EngagePromptView.js.map +0 -1
- package/lib/commonjs/features/engage/EngageTransport.js.map +0 -1
- package/lib/commonjs/features/engage/EngageVariantContent.js.map +0 -1
- package/lib/commonjs/features/engage/__test-support__/reactNativeStub.js.map +0 -1
- package/lib/commonjs/features/engage/attachmentCapture.js.map +0 -1
- package/lib/commonjs/features/engage/captureVoiceAttachment.js.map +0 -1
- package/lib/commonjs/features/engage/engageCoachmarkTour.js.map +0 -1
- package/lib/commonjs/features/engage/engageGameLogic.js.map +0 -1
- package/lib/commonjs/features/engage/engageMediaSizing.js.map +0 -1
- package/lib/commonjs/features/engage/engageMultiStepSheet.js.map +0 -1
- package/lib/commonjs/features/engage/engageOutcome.js.map +0 -1
- package/lib/commonjs/features/engage/engagePushTokenBridge.js.map +0 -1
- package/lib/commonjs/features/engage/engageShakeBridge.js.map +0 -1
- package/lib/commonjs/features/engage/engageSignals.js.map +0 -1
- package/lib/commonjs/features/engage/engageStoreReviewBridge.js.map +0 -1
- package/lib/commonjs/features/engage/engageTestSeenStore.js.map +0 -1
- package/lib/commonjs/features/engage/engageThrottle.js.map +0 -1
- package/lib/commonjs/features/engage/engageTriggerEngine.js.map +0 -1
- package/lib/commonjs/features/engage/engageTypes.js.map +0 -1
- package/lib/commonjs/features/engage/engageVariantResolver.js.map +0 -1
- package/lib/commonjs/features/engage/engageWindowInsets.js.map +0 -1
- package/lib/commonjs/features/engage/gestureTriggerDetector.js.map +0 -1
- package/lib/commonjs/features/engage/transcription/TranscriptionProvider.js.map +0 -1
- package/lib/commonjs/features/install-referrer/installReferrer.js.map +0 -1
- package/lib/commonjs/features/journey/ScaleBunDebugRoot.js.map +0 -1
- package/lib/commonjs/features/journey/ScaleBunFlatList.js.map +0 -1
- package/lib/commonjs/features/journey/ScaleBunImpression.js.map +0 -1
- package/lib/commonjs/features/journey/ScaleBunScrollView.js.map +0 -1
- package/lib/commonjs/features/journey/ScaleBunSectionList.js.map +0 -1
- package/lib/commonjs/features/journey/calibrationContext.js.map +0 -1
- package/lib/commonjs/features/journey/gestureBuffer.js.map +0 -1
- package/lib/commonjs/features/journey/gestureDetector.js.map +0 -1
- package/lib/commonjs/features/journey/impression.js.map +0 -1
- package/lib/commonjs/features/journey/journeyManager.js.map +0 -1
- package/lib/commonjs/features/journey/journeyTypes.js.map +0 -1
- package/lib/commonjs/features/journey/navDetector.js.map +0 -1
- package/lib/commonjs/features/journey/screenshotHelper.js.map +0 -1
- package/lib/commonjs/features/journey/targetRegistry.js.map +0 -1
- package/lib/commonjs/features/journey/touchTarget.js.map +0 -1
- package/lib/commonjs/features/navigation/AutoScreenDetector.js.map +0 -1
- package/lib/commonjs/features/network/NetworkFeature.js.map +0 -1
- package/lib/commonjs/features/network/index.js.map +0 -1
- package/lib/commonjs/features/ota/OtaEventEmitter.js.map +0 -1
- package/lib/commonjs/features/ota/OtaOrchestrator.js.map +0 -1
- package/lib/commonjs/features/ota/OtaTypes.js.map +0 -1
- package/lib/commonjs/features/ota/deviceAttributes.js.map +0 -1
- package/lib/commonjs/features/ota/environment.js.map +0 -1
- package/lib/commonjs/features/ota/geoCountry.js.map +0 -1
- package/lib/commonjs/features/ota/retry.js.map +0 -1
- package/lib/commonjs/features/ota/signature.js.map +0 -1
- package/lib/commonjs/features/ota/useOtaUpdate.js.map +0 -1
- package/lib/commonjs/features/performance/PerformanceFeature.js.map +0 -1
- package/lib/commonjs/features/performance/collectors/AppLaunchCollector.js.map +0 -1
- package/lib/commonjs/features/performance/collectors/AutoScreenLoadCollector.js.map +0 -1
- package/lib/commonjs/features/performance/collectors/CustomTraceCollector.js.map +0 -1
- package/lib/commonjs/features/performance/collectors/FrameMetricsCollector.js.map +0 -1
- package/lib/commonjs/features/performance/collectors/JsStallCollector.js.map +0 -1
- package/lib/commonjs/features/performance/collectors/NetworkPerfCollector.js.map +0 -1
- package/lib/commonjs/features/performance/collectors/ScreenLoadCollector.js.map +0 -1
- package/lib/commonjs/features/performance/collectors/UiHangCollector.js.map +0 -1
- package/lib/commonjs/features/performance/config.js.map +0 -1
- package/lib/commonjs/features/performance/getNativePerformanceModule.js.map +0 -1
- package/lib/commonjs/features/performance/index.js.map +0 -1
- package/lib/commonjs/features/performance/metrics/MetricsEngine.js.map +0 -1
- package/lib/commonjs/features/performance/models.js.map +0 -1
- package/lib/commonjs/features/performance/transport/PerformanceTransport.js.map +0 -1
- package/lib/commonjs/features/profiler/ProfilerFeature.js.map +0 -1
- package/lib/commonjs/features/profiler/config.js.map +0 -1
- package/lib/commonjs/features/profiler/contracts.js.map +0 -1
- package/lib/commonjs/features/profiler/index.js.map +0 -1
- package/lib/commonjs/features/profiler/models.js.map +0 -1
- package/lib/commonjs/features/profiler/transport/ProfilerTransport.js.map +0 -1
- package/lib/commonjs/features/replay/bridge/adapters/bridgeAdapter.js.map +0 -1
- package/lib/commonjs/features/replay/bridge/eventEmitter.js.map +0 -1
- package/lib/commonjs/features/replay/bridge/nativeModule.js.map +0 -1
- package/lib/commonjs/features/replay/core/clock/clock.js.map +0 -1
- package/lib/commonjs/features/replay/core/config/defaults.js.map +0 -1
- package/lib/commonjs/features/replay/core/config/validator.js.map +0 -1
- package/lib/commonjs/features/replay/core/env/environmentDetector.js.map +0 -1
- package/lib/commonjs/features/replay/core/errors/safeCall.js.map +0 -1
- package/lib/commonjs/features/replay/core/ids/sessionId.js.map +0 -1
- package/lib/commonjs/features/replay/core/logger/logger.js.map +0 -1
- package/lib/commonjs/features/replay/core/privacy/privacyTypes.js.map +0 -1
- package/lib/commonjs/features/replay/core/queue/boundedQueue.js.map +0 -1
- package/lib/commonjs/features/replay/integrations/alert/alertInstrumentation.js.map +0 -1
- package/lib/commonjs/features/replay/integrations/logs/consoleIntegration.js.map +0 -1
- package/lib/commonjs/features/replay/integrations/network/networkAdapter.js.map +0 -1
- package/lib/commonjs/features/replay/integrations/react-navigation/navigationIntegration.js.map +0 -1
- package/lib/commonjs/features/replay/integrations/touch/ReplayRoot.js.map +0 -1
- package/lib/commonjs/features/replay/pipeline/batching/batchManager.js.map +0 -1
- package/lib/commonjs/features/replay/pipeline/envelope/envelopeBuilder.js.map +0 -1
- package/lib/commonjs/features/replay/pipeline/retry/retryPolicy.js.map +0 -1
- package/lib/commonjs/features/replay/pipeline/transport/transportTypes.js.map +0 -1
- package/lib/commonjs/features/replay/public/api.js.map +0 -1
- package/lib/commonjs/features/replay/public/enums.js.map +0 -1
- package/lib/commonjs/features/replay/public/types.js.map +0 -1
- package/lib/commonjs/features/replay/replay/breadcrumbs/breadcrumbCollector.js.map +0 -1
- package/lib/commonjs/features/replay/replay/frames/frameModels.js.map +0 -1
- package/lib/commonjs/features/replay/replay/session/sessionOrchestrator.js.map +0 -1
- package/lib/commonjs/features/replay/replay/timeline/timelineModels.js.map +0 -1
- package/lib/commonjs/features/replay/transport/BackendReplayTransport.js.map +0 -1
- package/lib/commonjs/features/replay/transport/CompositeReplayTransport.js.map +0 -1
- package/lib/commonjs/features/replay/transport/DesktopReplayTransport.js.map +0 -1
- package/lib/commonjs/features/replay/transport/ReplayTransport.js.map +0 -1
- package/lib/commonjs/features/session/BackendSessionAdapter.js.map +0 -1
- package/lib/commonjs/features/session/DesktopSessionTransport.js.map +0 -1
- package/lib/commonjs/features/session/JourneyEventPipeline.js.map +0 -1
- package/lib/commonjs/features/session/ReplayCaptureManager.js.map +0 -1
- package/lib/commonjs/features/session/ScrollTracker.js.map +0 -1
- package/lib/commonjs/features/session/SessionManager.js.map +0 -1
- package/lib/commonjs/features/session/SyncDecisionEngine.js.map +0 -1
- package/lib/commonjs/features/session/index.js.map +0 -1
- package/lib/commonjs/features/session/nativeCapture.js.map +0 -1
- package/lib/commonjs/features/session/outboxFrameCapture.js.map +0 -1
- package/lib/commonjs/features/session/sessionTypes.js.map +0 -1
- package/lib/commonjs/features/skan/skanBridge.js.map +0 -1
- package/lib/commonjs/features/skan/skanConversionManager.js.map +0 -1
- package/lib/commonjs/index.js.map +0 -1
- package/lib/commonjs/integrations/fetch/fetchInterceptor.js.map +0 -1
- package/lib/commonjs/integrations/navigation/screenTracker.js.map +0 -1
- package/lib/commonjs/integrations/network/bodyCapture.js.map +0 -1
- package/lib/commonjs/integrations/xhr/xhrInterceptor.js.map +0 -1
- package/lib/commonjs/metro/composeSourceMap.js.map +0 -1
- package/lib/commonjs/metro/featureModules.js.map +0 -1
- package/lib/commonjs/metro/index.js.map +0 -1
- package/lib/commonjs/metro/optionalDependencyStub.js.map +0 -1
- package/lib/commonjs/metro/optionalModules.js.map +0 -1
- package/lib/commonjs/metro/serializerCompose.js.map +0 -1
- package/lib/commonjs/pipeline/dispatcher/dispatcher.js.map +0 -1
- package/lib/commonjs/pipeline/envelope/envelope.js.map +0 -1
- package/lib/commonjs/pipeline/envelope/serializer.js.map +0 -1
- package/lib/commonjs/pipeline/processors/dedupe.js.map +0 -1
- package/lib/commonjs/pipeline/processors/enrich.js.map +0 -1
- package/lib/commonjs/pipeline/processors/sampling.js.map +0 -1
- package/lib/commonjs/pipeline/processors/sanitize.js.map +0 -1
- package/lib/commonjs/pipeline/queue/flushQueue.js.map +0 -1
- package/lib/commonjs/pipeline/queue/memoryQueue.js.map +0 -1
- package/lib/commonjs/pipeline/queue/persistentQueue.js.map +0 -1
- package/lib/commonjs/pipeline/queue/queuePolicy.js.map +0 -1
- package/lib/commonjs/pipeline/scheduler/flushScheduler.js.map +0 -1
- package/lib/commonjs/pipeline/scheduler/retryPolicy.js.map +0 -1
- package/lib/commonjs/public/ScaleBunErrorBoundary.js.map +0 -1
- package/lib/commonjs/public/ScaleBunFacade.js.map +0 -1
- package/lib/commonjs/public/ScaleBunProvider.js.map +0 -1
- package/lib/commonjs/public/typedTracker.js.map +0 -1
- package/lib/commonjs/public/types.js.map +0 -1
- package/lib/commonjs/push/PushManager.js.map +0 -1
- package/lib/commonjs/push/adapters/ManualAdapter.js.map +0 -1
- package/lib/commonjs/push/adapters/NativeBridgeAdapter.js.map +0 -1
- package/lib/commonjs/push/adapters/NoopAdapter.js.map +0 -1
- package/lib/commonjs/push/adapters/RNFirebaseMessagingAdapter.js.map +0 -1
- package/lib/commonjs/push/adapters/loadMessaging.js.map +0 -1
- package/lib/commonjs/push/adapters/loadNotifee.js.map +0 -1
- package/lib/commonjs/push/adapters/selectAdapter.js.map +0 -1
- package/lib/commonjs/push/detect/capabilities.js.map +0 -1
- package/lib/commonjs/push/index.js.map +0 -1
- package/lib/commonjs/push/native/nativeNotifications.js.map +0 -1
- package/lib/commonjs/push/types.js.map +0 -1
- package/lib/commonjs/specs/NativeReplaySdk.js.map +0 -1
- package/lib/commonjs/specs/NativeScaleBunCrash.js.map +0 -1
- package/lib/commonjs/specs/NativeScaleBunInstallReferrer.js.map +0 -1
- package/lib/commonjs/specs/NativeScaleBunOta.js.map +0 -1
- package/lib/commonjs/specs/NativeScaleBunPerformance.js.map +0 -1
- package/lib/commonjs/specs/NativeScaleBunProfiler.js.map +0 -1
- package/lib/commonjs/specs/NativeScaleBunStorage.js.map +0 -1
- package/lib/commonjs/storage/StorageBackend.js.map +0 -1
- package/lib/commonjs/storage/db/sqlite.js.map +0 -1
- package/lib/commonjs/storage/files/fileStore.js.map +0 -1
- package/lib/commonjs/transport/auth/sdkSession.js.map +0 -1
- package/lib/commonjs/transport/backoff/exponentialJitter.js.map +0 -1
- package/lib/commonjs/transport/http/endpoints.js.map +0 -1
- package/lib/commonjs/transport/http/httpClient.js.map +0 -1
- package/lib/commonjs/transport/rateLimit/retryAfter.js.map +0 -1
- package/lib/commonjs/transport/signing/requestSigner.js.map +0 -1
- package/lib/commonjs/vendor/protocol/index.js.map +0 -1
- package/lib/commonjs/vendor/protocol/internal/validation.js.map +0 -1
- package/lib/commonjs/vendor/sdk-contracts/bridge.js.map +0 -1
- package/lib/commonjs/vendor/sdk-contracts/config.js.map +0 -1
- package/lib/commonjs/vendor/sdk-contracts/events.js.map +0 -1
- package/lib/commonjs/vendor/sdk-contracts/features.js.map +0 -1
- package/lib/commonjs/vendor/sdk-contracts/index.js.map +0 -1
- package/lib/commonjs/vendor/sdk-contracts/platform.js.map +0 -1
- package/lib/commonjs/vendor/sdk-contracts/session-boundary.js.map +0 -1
- package/lib/commonjs/vendor/sdk-contracts/session.js.map +0 -1
- package/lib/module/analytics/EventTracker.js.map +0 -1
- package/lib/module/analytics/automaticEvents.js.map +0 -1
- package/lib/module/analytics/batching.js.map +0 -1
- package/lib/module/analytics/eventLane.js.map +0 -1
- package/lib/module/bootstrap/FeatureRegistry.js.map +0 -1
- package/lib/module/bootstrap/SDKBootstrapper.js.map +0 -1
- package/lib/module/bucketing/fnv1a32.js.map +0 -1
- package/lib/module/compat/codepush.js.map +0 -1
- package/lib/module/config/ConfigManager.js.map +0 -1
- package/lib/module/config/configTypes.js.map +0 -1
- package/lib/module/core/architecture.js.map +0 -1
- package/lib/module/core/clock/now.js.map +0 -1
- package/lib/module/core/config/defaults.js.map +0 -1
- package/lib/module/core/config/schema.js.map +0 -1
- package/lib/module/core/constants/endpoints.js.map +0 -1
- package/lib/module/core/constants/protocol.js.map +0 -1
- package/lib/module/core/constants/timings.js.map +0 -1
- package/lib/module/core/constants/version.js.map +0 -1
- package/lib/module/core/context/app.js.map +0 -1
- package/lib/module/core/context/device.js.map +0 -1
- package/lib/module/core/context/session.js.map +0 -1
- package/lib/module/core/context/user.js.map +0 -1
- package/lib/module/core/contracts/IFeature.js.map +0 -1
- package/lib/module/core/di/container.js.map +0 -1
- package/lib/module/core/encoding/base64.js.map +0 -1
- package/lib/module/core/id/deviceId.js.map +0 -1
- package/lib/module/core/id/installationId.js.map +0 -1
- package/lib/module/core/id/sessionId.js.map +0 -1
- package/lib/module/core/lifecycle/appLifecycle.js.map +0 -1
- package/lib/module/core/lifecycle/crashSafe.js.map +0 -1
- package/lib/module/core/logger/errorClassification.js.map +0 -1
- package/lib/module/core/logger/internalLogger.js.map +0 -1
- package/lib/module/core/logger/levels.js.map +0 -1
- package/lib/module/crypto/hmacSha256.js.map +0 -1
- package/lib/module/debug/bootstrap.js.map +0 -1
- package/lib/module/debug/commands.js.map +0 -1
- package/lib/module/debug/configBuilder.js.map +0 -1
- package/lib/module/debug/exportBridge.js.map +0 -1
- package/lib/module/debug/hostResolver.js.map +0 -1
- package/lib/module/debug/index.js.map +0 -1
- package/lib/module/debug/metrics.js.map +0 -1
- package/lib/module/debug/perf.js.map +0 -1
- package/lib/module/debug/perfWiring.js.map +0 -1
- package/lib/module/debug/protocol.js.map +0 -1
- package/lib/module/debug/redaction.js.map +0 -1
- package/lib/module/debug/replayWiring.js.map +0 -1
- package/lib/module/debug/screenTracking.js.map +0 -1
- package/lib/module/debug/sessionWiring.js.map +0 -1
- package/lib/module/debug/stream.js.map +0 -1
- package/lib/module/debug/transport.js.map +0 -1
- package/lib/module/features/bugreport/BugReportFeature.js.map +0 -1
- package/lib/module/features/bugreport/buildPayload.js.map +0 -1
- package/lib/module/features/bugreport/index.js.map +0 -1
- package/lib/module/features/crash/CrashFeature.js.map +0 -1
- package/lib/module/features/crash/CrashReporter.js.map +0 -1
- package/lib/module/features/crash/NativeCrashFeature.js.map +0 -1
- package/lib/module/features/crash/capture.js.map +0 -1
- package/lib/module/features/crash/globalHandler.js.map +0 -1
- package/lib/module/features/crash/index.js.map +0 -1
- package/lib/module/features/crash/nativeCrashBridge.js.map +0 -1
- package/lib/module/features/crash/rejectionHandler.js.map +0 -1
- package/lib/module/features/engage/EngageAnchor.js.map +0 -1
- package/lib/module/features/engage/EngageArchetypeRenderers.js.map +0 -1
- package/lib/module/features/engage/EngageInAppView.js.map +0 -1
- package/lib/module/features/engage/EngageInlinePlacement.js.map +0 -1
- package/lib/module/features/engage/EngagePromptProvider.js.map +0 -1
- package/lib/module/features/engage/EngagePromptView.js.map +0 -1
- package/lib/module/features/engage/EngageTransport.js.map +0 -1
- package/lib/module/features/engage/EngageVariantContent.js.map +0 -1
- package/lib/module/features/engage/__test-support__/reactNativeStub.js.map +0 -1
- package/lib/module/features/engage/attachmentCapture.js.map +0 -1
- package/lib/module/features/engage/captureVoiceAttachment.js.map +0 -1
- package/lib/module/features/engage/engageCoachmarkTour.js.map +0 -1
- package/lib/module/features/engage/engageGameLogic.js.map +0 -1
- package/lib/module/features/engage/engageMediaSizing.js.map +0 -1
- package/lib/module/features/engage/engageMultiStepSheet.js.map +0 -1
- package/lib/module/features/engage/engageOutcome.js.map +0 -1
- package/lib/module/features/engage/engagePushTokenBridge.js.map +0 -1
- package/lib/module/features/engage/engageShakeBridge.js.map +0 -1
- package/lib/module/features/engage/engageSignals.js.map +0 -1
- package/lib/module/features/engage/engageStoreReviewBridge.js.map +0 -1
- package/lib/module/features/engage/engageTestSeenStore.js.map +0 -1
- package/lib/module/features/engage/engageThrottle.js.map +0 -1
- package/lib/module/features/engage/engageTriggerEngine.js.map +0 -1
- package/lib/module/features/engage/engageTypes.js.map +0 -1
- package/lib/module/features/engage/engageVariantResolver.js.map +0 -1
- package/lib/module/features/engage/engageWindowInsets.js.map +0 -1
- package/lib/module/features/engage/gestureTriggerDetector.js.map +0 -1
- package/lib/module/features/engage/transcription/TranscriptionProvider.js.map +0 -1
- package/lib/module/features/install-referrer/installReferrer.js.map +0 -1
- package/lib/module/features/journey/ScaleBunDebugRoot.js.map +0 -1
- package/lib/module/features/journey/ScaleBunFlatList.js.map +0 -1
- package/lib/module/features/journey/ScaleBunImpression.js.map +0 -1
- package/lib/module/features/journey/ScaleBunScrollView.js.map +0 -1
- package/lib/module/features/journey/ScaleBunSectionList.js.map +0 -1
- package/lib/module/features/journey/calibrationContext.js.map +0 -1
- package/lib/module/features/journey/gestureBuffer.js.map +0 -1
- package/lib/module/features/journey/gestureDetector.js.map +0 -1
- package/lib/module/features/journey/impression.js.map +0 -1
- package/lib/module/features/journey/journeyManager.js.map +0 -1
- package/lib/module/features/journey/journeyTypes.js.map +0 -1
- package/lib/module/features/journey/navDetector.js.map +0 -1
- package/lib/module/features/journey/screenshotHelper.js.map +0 -1
- package/lib/module/features/journey/targetRegistry.js.map +0 -1
- package/lib/module/features/journey/touchTarget.js.map +0 -1
- package/lib/module/features/navigation/AutoScreenDetector.js.map +0 -1
- package/lib/module/features/network/NetworkFeature.js.map +0 -1
- package/lib/module/features/network/index.js.map +0 -1
- package/lib/module/features/ota/OtaEventEmitter.js.map +0 -1
- package/lib/module/features/ota/OtaOrchestrator.js.map +0 -1
- package/lib/module/features/ota/OtaTypes.js.map +0 -1
- package/lib/module/features/ota/deviceAttributes.js.map +0 -1
- package/lib/module/features/ota/environment.js.map +0 -1
- package/lib/module/features/ota/geoCountry.js.map +0 -1
- package/lib/module/features/ota/retry.js.map +0 -1
- package/lib/module/features/ota/signature.js.map +0 -1
- package/lib/module/features/ota/useOtaUpdate.js.map +0 -1
- package/lib/module/features/performance/PerformanceFeature.js.map +0 -1
- package/lib/module/features/performance/collectors/AppLaunchCollector.js.map +0 -1
- package/lib/module/features/performance/collectors/AutoScreenLoadCollector.js.map +0 -1
- package/lib/module/features/performance/collectors/CustomTraceCollector.js.map +0 -1
- package/lib/module/features/performance/collectors/FrameMetricsCollector.js.map +0 -1
- package/lib/module/features/performance/collectors/JsStallCollector.js.map +0 -1
- package/lib/module/features/performance/collectors/NetworkPerfCollector.js.map +0 -1
- package/lib/module/features/performance/collectors/ScreenLoadCollector.js.map +0 -1
- package/lib/module/features/performance/collectors/UiHangCollector.js.map +0 -1
- package/lib/module/features/performance/config.js.map +0 -1
- package/lib/module/features/performance/getNativePerformanceModule.js.map +0 -1
- package/lib/module/features/performance/index.js.map +0 -1
- package/lib/module/features/performance/metrics/MetricsEngine.js.map +0 -1
- package/lib/module/features/performance/models.js.map +0 -1
- package/lib/module/features/performance/transport/PerformanceTransport.js.map +0 -1
- package/lib/module/features/profiler/ProfilerFeature.js.map +0 -1
- package/lib/module/features/profiler/config.js.map +0 -1
- package/lib/module/features/profiler/contracts.js.map +0 -1
- package/lib/module/features/profiler/index.js.map +0 -1
- package/lib/module/features/profiler/models.js.map +0 -1
- package/lib/module/features/profiler/transport/ProfilerTransport.js.map +0 -1
- package/lib/module/features/replay/bridge/adapters/bridgeAdapter.js.map +0 -1
- package/lib/module/features/replay/bridge/eventEmitter.js.map +0 -1
- package/lib/module/features/replay/bridge/nativeModule.js.map +0 -1
- package/lib/module/features/replay/core/clock/clock.js.map +0 -1
- package/lib/module/features/replay/core/config/defaults.js.map +0 -1
- package/lib/module/features/replay/core/config/validator.js.map +0 -1
- package/lib/module/features/replay/core/env/environmentDetector.js.map +0 -1
- package/lib/module/features/replay/core/errors/safeCall.js.map +0 -1
- package/lib/module/features/replay/core/ids/sessionId.js.map +0 -1
- package/lib/module/features/replay/core/logger/logger.js.map +0 -1
- package/lib/module/features/replay/core/privacy/privacyTypes.js.map +0 -1
- package/lib/module/features/replay/core/queue/boundedQueue.js.map +0 -1
- package/lib/module/features/replay/integrations/alert/alertInstrumentation.js.map +0 -1
- package/lib/module/features/replay/integrations/logs/consoleIntegration.js.map +0 -1
- package/lib/module/features/replay/integrations/network/networkAdapter.js.map +0 -1
- package/lib/module/features/replay/integrations/react-navigation/navigationIntegration.js.map +0 -1
- package/lib/module/features/replay/integrations/touch/ReplayRoot.js.map +0 -1
- package/lib/module/features/replay/pipeline/batching/batchManager.js.map +0 -1
- package/lib/module/features/replay/pipeline/envelope/envelopeBuilder.js.map +0 -1
- package/lib/module/features/replay/pipeline/retry/retryPolicy.js.map +0 -1
- package/lib/module/features/replay/pipeline/transport/transportTypes.js.map +0 -1
- package/lib/module/features/replay/public/api.js.map +0 -1
- package/lib/module/features/replay/public/enums.js.map +0 -1
- package/lib/module/features/replay/public/types.js.map +0 -1
- package/lib/module/features/replay/replay/breadcrumbs/breadcrumbCollector.js.map +0 -1
- package/lib/module/features/replay/replay/frames/frameModels.js.map +0 -1
- package/lib/module/features/replay/replay/session/sessionOrchestrator.js.map +0 -1
- package/lib/module/features/replay/replay/timeline/timelineModels.js.map +0 -1
- package/lib/module/features/replay/transport/BackendReplayTransport.js.map +0 -1
- package/lib/module/features/replay/transport/CompositeReplayTransport.js.map +0 -1
- package/lib/module/features/replay/transport/DesktopReplayTransport.js.map +0 -1
- package/lib/module/features/replay/transport/ReplayTransport.js.map +0 -1
- package/lib/module/features/session/BackendSessionAdapter.js.map +0 -1
- package/lib/module/features/session/DesktopSessionTransport.js.map +0 -1
- package/lib/module/features/session/JourneyEventPipeline.js.map +0 -1
- package/lib/module/features/session/ReplayCaptureManager.js.map +0 -1
- package/lib/module/features/session/ScrollTracker.js.map +0 -1
- package/lib/module/features/session/SessionManager.js.map +0 -1
- package/lib/module/features/session/SyncDecisionEngine.js.map +0 -1
- package/lib/module/features/session/index.js.map +0 -1
- package/lib/module/features/session/nativeCapture.js.map +0 -1
- package/lib/module/features/session/outboxFrameCapture.js.map +0 -1
- package/lib/module/features/session/sessionTypes.js.map +0 -1
- package/lib/module/features/skan/skanBridge.js.map +0 -1
- package/lib/module/features/skan/skanConversionManager.js.map +0 -1
- package/lib/module/index.js.map +0 -1
- package/lib/module/integrations/fetch/fetchInterceptor.js.map +0 -1
- package/lib/module/integrations/navigation/screenTracker.js.map +0 -1
- package/lib/module/integrations/network/bodyCapture.js.map +0 -1
- package/lib/module/integrations/xhr/xhrInterceptor.js.map +0 -1
- package/lib/module/metro/composeSourceMap.js.map +0 -1
- package/lib/module/metro/featureModules.js.map +0 -1
- package/lib/module/metro/index.js.map +0 -1
- package/lib/module/metro/optionalDependencyStub.js.map +0 -1
- package/lib/module/metro/optionalModules.js.map +0 -1
- package/lib/module/metro/serializerCompose.js.map +0 -1
- package/lib/module/pipeline/dispatcher/dispatcher.js.map +0 -1
- package/lib/module/pipeline/envelope/envelope.js.map +0 -1
- package/lib/module/pipeline/envelope/serializer.js.map +0 -1
- package/lib/module/pipeline/processors/dedupe.js.map +0 -1
- package/lib/module/pipeline/processors/enrich.js.map +0 -1
- package/lib/module/pipeline/processors/sampling.js.map +0 -1
- package/lib/module/pipeline/processors/sanitize.js.map +0 -1
- package/lib/module/pipeline/queue/flushQueue.js.map +0 -1
- package/lib/module/pipeline/queue/memoryQueue.js.map +0 -1
- package/lib/module/pipeline/queue/persistentQueue.js.map +0 -1
- package/lib/module/pipeline/queue/queuePolicy.js.map +0 -1
- package/lib/module/pipeline/scheduler/flushScheduler.js.map +0 -1
- package/lib/module/pipeline/scheduler/retryPolicy.js.map +0 -1
- package/lib/module/public/ScaleBunErrorBoundary.js.map +0 -1
- package/lib/module/public/ScaleBunFacade.js.map +0 -1
- package/lib/module/public/ScaleBunProvider.js.map +0 -1
- package/lib/module/public/typedTracker.js.map +0 -1
- package/lib/module/public/types.js.map +0 -1
- package/lib/module/push/PushManager.js.map +0 -1
- package/lib/module/push/adapters/ManualAdapter.js.map +0 -1
- package/lib/module/push/adapters/NativeBridgeAdapter.js.map +0 -1
- package/lib/module/push/adapters/NoopAdapter.js.map +0 -1
- package/lib/module/push/adapters/RNFirebaseMessagingAdapter.js.map +0 -1
- package/lib/module/push/adapters/loadMessaging.js.map +0 -1
- package/lib/module/push/adapters/loadNotifee.js.map +0 -1
- package/lib/module/push/adapters/selectAdapter.js.map +0 -1
- package/lib/module/push/detect/capabilities.js.map +0 -1
- package/lib/module/push/index.js.map +0 -1
- package/lib/module/push/native/nativeNotifications.js.map +0 -1
- package/lib/module/push/types.js.map +0 -1
- package/lib/module/specs/NativeReplaySdk.js.map +0 -1
- package/lib/module/specs/NativeScaleBunCrash.js.map +0 -1
- package/lib/module/specs/NativeScaleBunInstallReferrer.js.map +0 -1
- package/lib/module/specs/NativeScaleBunOta.js.map +0 -1
- package/lib/module/specs/NativeScaleBunPerformance.js.map +0 -1
- package/lib/module/specs/NativeScaleBunProfiler.js.map +0 -1
- package/lib/module/specs/NativeScaleBunStorage.js.map +0 -1
- package/lib/module/storage/StorageBackend.js.map +0 -1
- package/lib/module/storage/db/sqlite.js.map +0 -1
- package/lib/module/storage/files/fileStore.js.map +0 -1
- package/lib/module/transport/auth/sdkSession.js.map +0 -1
- package/lib/module/transport/backoff/exponentialJitter.js.map +0 -1
- package/lib/module/transport/http/endpoints.js.map +0 -1
- package/lib/module/transport/http/httpClient.js.map +0 -1
- package/lib/module/transport/rateLimit/retryAfter.js.map +0 -1
- package/lib/module/transport/signing/requestSigner.js.map +0 -1
- package/lib/module/vendor/protocol/index.js.map +0 -1
- package/lib/module/vendor/protocol/internal/validation.js.map +0 -1
- package/lib/module/vendor/sdk-contracts/bridge.js.map +0 -1
- package/lib/module/vendor/sdk-contracts/config.js.map +0 -1
- package/lib/module/vendor/sdk-contracts/events.js.map +0 -1
- package/lib/module/vendor/sdk-contracts/features.js.map +0 -1
- package/lib/module/vendor/sdk-contracts/index.js.map +0 -1
- package/lib/module/vendor/sdk-contracts/platform.js.map +0 -1
- package/lib/module/vendor/sdk-contracts/session-boundary.js.map +0 -1
- package/lib/module/vendor/sdk-contracts/session.js.map +0 -1
- package/lib/typescript/analytics/EventTracker.d.ts.map +0 -1
- package/lib/typescript/analytics/automaticEvents.d.ts.map +0 -1
- package/lib/typescript/analytics/batching.d.ts.map +0 -1
- package/lib/typescript/analytics/eventLane.d.ts.map +0 -1
- package/lib/typescript/bootstrap/FeatureRegistry.d.ts.map +0 -1
- package/lib/typescript/bootstrap/SDKBootstrapper.d.ts.map +0 -1
- package/lib/typescript/bucketing/fnv1a32.d.ts.map +0 -1
- package/lib/typescript/compat/codepush.d.ts.map +0 -1
- package/lib/typescript/config/ConfigManager.d.ts.map +0 -1
- package/lib/typescript/config/configTypes.d.ts.map +0 -1
- package/lib/typescript/core/architecture.d.ts.map +0 -1
- package/lib/typescript/core/clock/now.d.ts.map +0 -1
- package/lib/typescript/core/config/defaults.d.ts.map +0 -1
- package/lib/typescript/core/config/schema.d.ts.map +0 -1
- package/lib/typescript/core/constants/endpoints.d.ts.map +0 -1
- package/lib/typescript/core/constants/protocol.d.ts.map +0 -1
- package/lib/typescript/core/constants/timings.d.ts.map +0 -1
- package/lib/typescript/core/constants/version.d.ts.map +0 -1
- package/lib/typescript/core/context/app.d.ts.map +0 -1
- package/lib/typescript/core/context/device.d.ts.map +0 -1
- package/lib/typescript/core/context/session.d.ts.map +0 -1
- package/lib/typescript/core/context/user.d.ts.map +0 -1
- package/lib/typescript/core/contracts/IFeature.d.ts.map +0 -1
- package/lib/typescript/core/di/container.d.ts.map +0 -1
- package/lib/typescript/core/encoding/base64.d.ts.map +0 -1
- package/lib/typescript/core/id/deviceId.d.ts.map +0 -1
- package/lib/typescript/core/id/installationId.d.ts.map +0 -1
- package/lib/typescript/core/id/sessionId.d.ts.map +0 -1
- package/lib/typescript/core/lifecycle/appLifecycle.d.ts.map +0 -1
- package/lib/typescript/core/lifecycle/crashSafe.d.ts.map +0 -1
- package/lib/typescript/core/logger/errorClassification.d.ts.map +0 -1
- package/lib/typescript/core/logger/internalLogger.d.ts.map +0 -1
- package/lib/typescript/core/logger/levels.d.ts.map +0 -1
- package/lib/typescript/crypto/hmacSha256.d.ts.map +0 -1
- package/lib/typescript/debug/bootstrap.d.ts.map +0 -1
- package/lib/typescript/debug/commands.d.ts.map +0 -1
- package/lib/typescript/debug/configBuilder.d.ts.map +0 -1
- package/lib/typescript/debug/exportBridge.d.ts.map +0 -1
- package/lib/typescript/debug/hostResolver.d.ts.map +0 -1
- package/lib/typescript/debug/index.d.ts.map +0 -1
- package/lib/typescript/debug/metrics.d.ts.map +0 -1
- package/lib/typescript/debug/perf.d.ts.map +0 -1
- package/lib/typescript/debug/perfWiring.d.ts.map +0 -1
- package/lib/typescript/debug/protocol.d.ts.map +0 -1
- package/lib/typescript/debug/redaction.d.ts.map +0 -1
- package/lib/typescript/debug/replayWiring.d.ts.map +0 -1
- package/lib/typescript/debug/screenTracking.d.ts.map +0 -1
- package/lib/typescript/debug/sessionWiring.d.ts.map +0 -1
- package/lib/typescript/debug/stream.d.ts.map +0 -1
- package/lib/typescript/debug/transport.d.ts.map +0 -1
- package/lib/typescript/features/bugreport/BugReportFeature.d.ts.map +0 -1
- package/lib/typescript/features/bugreport/buildPayload.d.ts.map +0 -1
- package/lib/typescript/features/bugreport/index.d.ts.map +0 -1
- package/lib/typescript/features/crash/CrashFeature.d.ts.map +0 -1
- package/lib/typescript/features/crash/CrashReporter.d.ts.map +0 -1
- package/lib/typescript/features/crash/NativeCrashFeature.d.ts.map +0 -1
- package/lib/typescript/features/crash/capture.d.ts.map +0 -1
- package/lib/typescript/features/crash/globalHandler.d.ts.map +0 -1
- package/lib/typescript/features/crash/index.d.ts.map +0 -1
- package/lib/typescript/features/crash/nativeCrashBridge.d.ts.map +0 -1
- package/lib/typescript/features/crash/rejectionHandler.d.ts.map +0 -1
- package/lib/typescript/features/engage/EngageAnchor.d.ts.map +0 -1
- package/lib/typescript/features/engage/EngageArchetypeRenderers.d.ts.map +0 -1
- package/lib/typescript/features/engage/EngageInAppView.d.ts.map +0 -1
- package/lib/typescript/features/engage/EngageInlinePlacement.d.ts.map +0 -1
- package/lib/typescript/features/engage/EngagePromptProvider.d.ts.map +0 -1
- package/lib/typescript/features/engage/EngagePromptView.d.ts.map +0 -1
- package/lib/typescript/features/engage/EngageTransport.d.ts.map +0 -1
- package/lib/typescript/features/engage/EngageVariantContent.d.ts.map +0 -1
- package/lib/typescript/features/engage/attachmentCapture.d.ts.map +0 -1
- package/lib/typescript/features/engage/captureVoiceAttachment.d.ts.map +0 -1
- package/lib/typescript/features/engage/engageCoachmarkTour.d.ts.map +0 -1
- package/lib/typescript/features/engage/engageGameLogic.d.ts.map +0 -1
- package/lib/typescript/features/engage/engageMediaSizing.d.ts.map +0 -1
- package/lib/typescript/features/engage/engageMultiStepSheet.d.ts.map +0 -1
- package/lib/typescript/features/engage/engageOutcome.d.ts.map +0 -1
- package/lib/typescript/features/engage/engagePushTokenBridge.d.ts.map +0 -1
- package/lib/typescript/features/engage/engageShakeBridge.d.ts.map +0 -1
- package/lib/typescript/features/engage/engageSignals.d.ts.map +0 -1
- package/lib/typescript/features/engage/engageStoreReviewBridge.d.ts.map +0 -1
- package/lib/typescript/features/engage/engageTestSeenStore.d.ts.map +0 -1
- package/lib/typescript/features/engage/engageThrottle.d.ts.map +0 -1
- package/lib/typescript/features/engage/engageTriggerEngine.d.ts.map +0 -1
- package/lib/typescript/features/engage/engageTypes.d.ts.map +0 -1
- package/lib/typescript/features/engage/engageVariantResolver.d.ts.map +0 -1
- package/lib/typescript/features/engage/engageWindowInsets.d.ts.map +0 -1
- package/lib/typescript/features/engage/gestureTriggerDetector.d.ts.map +0 -1
- package/lib/typescript/features/engage/transcription/TranscriptionProvider.d.ts.map +0 -1
- package/lib/typescript/features/install-referrer/installReferrer.d.ts.map +0 -1
- package/lib/typescript/features/journey/ScaleBunDebugRoot.d.ts.map +0 -1
- package/lib/typescript/features/journey/ScaleBunFlatList.d.ts.map +0 -1
- package/lib/typescript/features/journey/ScaleBunImpression.d.ts.map +0 -1
- package/lib/typescript/features/journey/ScaleBunScrollView.d.ts.map +0 -1
- package/lib/typescript/features/journey/ScaleBunSectionList.d.ts.map +0 -1
- package/lib/typescript/features/journey/calibrationContext.d.ts.map +0 -1
- package/lib/typescript/features/journey/gestureBuffer.d.ts.map +0 -1
- package/lib/typescript/features/journey/gestureDetector.d.ts.map +0 -1
- package/lib/typescript/features/journey/impression.d.ts.map +0 -1
- package/lib/typescript/features/journey/journeyManager.d.ts.map +0 -1
- package/lib/typescript/features/journey/journeyTypes.d.ts.map +0 -1
- package/lib/typescript/features/journey/navDetector.d.ts.map +0 -1
- package/lib/typescript/features/journey/screenshotHelper.d.ts.map +0 -1
- package/lib/typescript/features/journey/targetRegistry.d.ts.map +0 -1
- package/lib/typescript/features/journey/touchTarget.d.ts.map +0 -1
- package/lib/typescript/features/navigation/AutoScreenDetector.d.ts.map +0 -1
- package/lib/typescript/features/network/NetworkFeature.d.ts.map +0 -1
- package/lib/typescript/features/network/index.d.ts.map +0 -1
- package/lib/typescript/features/ota/OtaEventEmitter.d.ts.map +0 -1
- package/lib/typescript/features/ota/OtaOrchestrator.d.ts.map +0 -1
- package/lib/typescript/features/ota/OtaTypes.d.ts.map +0 -1
- package/lib/typescript/features/ota/deviceAttributes.d.ts.map +0 -1
- package/lib/typescript/features/ota/environment.d.ts.map +0 -1
- package/lib/typescript/features/ota/geoCountry.d.ts.map +0 -1
- package/lib/typescript/features/ota/retry.d.ts.map +0 -1
- package/lib/typescript/features/ota/signature.d.ts.map +0 -1
- package/lib/typescript/features/ota/useOtaUpdate.d.ts.map +0 -1
- package/lib/typescript/features/performance/PerformanceFeature.d.ts.map +0 -1
- package/lib/typescript/features/performance/collectors/AppLaunchCollector.d.ts.map +0 -1
- package/lib/typescript/features/performance/collectors/AutoScreenLoadCollector.d.ts.map +0 -1
- package/lib/typescript/features/performance/collectors/CustomTraceCollector.d.ts.map +0 -1
- package/lib/typescript/features/performance/collectors/FrameMetricsCollector.d.ts.map +0 -1
- package/lib/typescript/features/performance/collectors/JsStallCollector.d.ts.map +0 -1
- package/lib/typescript/features/performance/collectors/NetworkPerfCollector.d.ts.map +0 -1
- package/lib/typescript/features/performance/collectors/ScreenLoadCollector.d.ts.map +0 -1
- package/lib/typescript/features/performance/collectors/UiHangCollector.d.ts.map +0 -1
- package/lib/typescript/features/performance/config.d.ts.map +0 -1
- package/lib/typescript/features/performance/getNativePerformanceModule.d.ts.map +0 -1
- package/lib/typescript/features/performance/index.d.ts.map +0 -1
- package/lib/typescript/features/performance/metrics/MetricsEngine.d.ts.map +0 -1
- package/lib/typescript/features/performance/models.d.ts.map +0 -1
- package/lib/typescript/features/performance/transport/PerformanceTransport.d.ts.map +0 -1
- package/lib/typescript/features/profiler/ProfilerFeature.d.ts.map +0 -1
- package/lib/typescript/features/profiler/config.d.ts.map +0 -1
- package/lib/typescript/features/profiler/contracts.d.ts.map +0 -1
- package/lib/typescript/features/profiler/index.d.ts.map +0 -1
- package/lib/typescript/features/profiler/models.d.ts.map +0 -1
- package/lib/typescript/features/profiler/transport/ProfilerTransport.d.ts.map +0 -1
- package/lib/typescript/features/replay/bridge/adapters/bridgeAdapter.d.ts.map +0 -1
- package/lib/typescript/features/replay/bridge/eventEmitter.d.ts.map +0 -1
- package/lib/typescript/features/replay/bridge/nativeModule.d.ts.map +0 -1
- package/lib/typescript/features/replay/core/clock/clock.d.ts.map +0 -1
- package/lib/typescript/features/replay/core/config/defaults.d.ts.map +0 -1
- package/lib/typescript/features/replay/core/config/validator.d.ts.map +0 -1
- package/lib/typescript/features/replay/core/env/environmentDetector.d.ts.map +0 -1
- package/lib/typescript/features/replay/core/errors/safeCall.d.ts.map +0 -1
- package/lib/typescript/features/replay/core/ids/sessionId.d.ts.map +0 -1
- package/lib/typescript/features/replay/core/logger/logger.d.ts.map +0 -1
- package/lib/typescript/features/replay/core/privacy/privacyTypes.d.ts.map +0 -1
- package/lib/typescript/features/replay/core/queue/boundedQueue.d.ts.map +0 -1
- package/lib/typescript/features/replay/integrations/alert/alertInstrumentation.d.ts.map +0 -1
- package/lib/typescript/features/replay/integrations/logs/consoleIntegration.d.ts.map +0 -1
- package/lib/typescript/features/replay/integrations/network/networkAdapter.d.ts.map +0 -1
- package/lib/typescript/features/replay/integrations/react-navigation/navigationIntegration.d.ts.map +0 -1
- package/lib/typescript/features/replay/integrations/touch/ReplayRoot.d.ts.map +0 -1
- package/lib/typescript/features/replay/pipeline/batching/batchManager.d.ts.map +0 -1
- package/lib/typescript/features/replay/pipeline/envelope/envelopeBuilder.d.ts.map +0 -1
- package/lib/typescript/features/replay/pipeline/retry/retryPolicy.d.ts.map +0 -1
- package/lib/typescript/features/replay/pipeline/transport/transportTypes.d.ts.map +0 -1
- package/lib/typescript/features/replay/public/api.d.ts.map +0 -1
- package/lib/typescript/features/replay/public/enums.d.ts.map +0 -1
- package/lib/typescript/features/replay/public/types.d.ts.map +0 -1
- package/lib/typescript/features/replay/replay/breadcrumbs/breadcrumbCollector.d.ts.map +0 -1
- package/lib/typescript/features/replay/replay/frames/frameModels.d.ts.map +0 -1
- package/lib/typescript/features/replay/replay/session/sessionOrchestrator.d.ts.map +0 -1
- package/lib/typescript/features/replay/replay/timeline/timelineModels.d.ts.map +0 -1
- package/lib/typescript/features/replay/transport/BackendReplayTransport.d.ts.map +0 -1
- package/lib/typescript/features/replay/transport/CompositeReplayTransport.d.ts.map +0 -1
- package/lib/typescript/features/replay/transport/DesktopReplayTransport.d.ts.map +0 -1
- package/lib/typescript/features/replay/transport/ReplayTransport.d.ts.map +0 -1
- package/lib/typescript/features/session/BackendSessionAdapter.d.ts.map +0 -1
- package/lib/typescript/features/session/DesktopSessionTransport.d.ts.map +0 -1
- package/lib/typescript/features/session/JourneyEventPipeline.d.ts.map +0 -1
- package/lib/typescript/features/session/ReplayCaptureManager.d.ts.map +0 -1
- package/lib/typescript/features/session/ScrollTracker.d.ts.map +0 -1
- package/lib/typescript/features/session/SessionManager.d.ts.map +0 -1
- package/lib/typescript/features/session/SyncDecisionEngine.d.ts.map +0 -1
- package/lib/typescript/features/session/index.d.ts.map +0 -1
- package/lib/typescript/features/session/nativeCapture.d.ts.map +0 -1
- package/lib/typescript/features/session/outboxFrameCapture.d.ts.map +0 -1
- package/lib/typescript/features/session/sessionTypes.d.ts.map +0 -1
- package/lib/typescript/features/skan/skanBridge.d.ts.map +0 -1
- package/lib/typescript/features/skan/skanConversionManager.d.ts.map +0 -1
- package/lib/typescript/index.d.ts.map +0 -1
- package/lib/typescript/integrations/fetch/fetchInterceptor.d.ts.map +0 -1
- package/lib/typescript/integrations/navigation/screenTracker.d.ts.map +0 -1
- package/lib/typescript/integrations/network/bodyCapture.d.ts.map +0 -1
- package/lib/typescript/integrations/xhr/xhrInterceptor.d.ts.map +0 -1
- package/lib/typescript/metro/composeSourceMap.d.ts.map +0 -1
- package/lib/typescript/metro/featureModules.d.ts.map +0 -1
- package/lib/typescript/metro/index.d.ts.map +0 -1
- package/lib/typescript/metro/optionalDependencyStub.d.ts.map +0 -1
- package/lib/typescript/metro/optionalModules.d.ts.map +0 -1
- package/lib/typescript/metro/serializerCompose.d.ts.map +0 -1
- package/lib/typescript/pipeline/dispatcher/dispatcher.d.ts.map +0 -1
- package/lib/typescript/pipeline/envelope/envelope.d.ts.map +0 -1
- package/lib/typescript/pipeline/envelope/serializer.d.ts.map +0 -1
- package/lib/typescript/pipeline/processors/dedupe.d.ts.map +0 -1
- package/lib/typescript/pipeline/processors/enrich.d.ts.map +0 -1
- package/lib/typescript/pipeline/processors/sampling.d.ts.map +0 -1
- package/lib/typescript/pipeline/processors/sanitize.d.ts.map +0 -1
- package/lib/typescript/pipeline/queue/flushQueue.d.ts.map +0 -1
- package/lib/typescript/pipeline/queue/memoryQueue.d.ts.map +0 -1
- package/lib/typescript/pipeline/queue/persistentQueue.d.ts.map +0 -1
- package/lib/typescript/pipeline/queue/queuePolicy.d.ts.map +0 -1
- package/lib/typescript/pipeline/scheduler/flushScheduler.d.ts.map +0 -1
- package/lib/typescript/pipeline/scheduler/retryPolicy.d.ts.map +0 -1
- package/lib/typescript/public/ScaleBunErrorBoundary.d.ts.map +0 -1
- package/lib/typescript/public/ScaleBunFacade.d.ts.map +0 -1
- package/lib/typescript/public/ScaleBunProvider.d.ts.map +0 -1
- package/lib/typescript/public/typedTracker.d.ts.map +0 -1
- package/lib/typescript/public/types.d.ts.map +0 -1
- package/lib/typescript/push/PushManager.d.ts.map +0 -1
- package/lib/typescript/push/adapters/ManualAdapter.d.ts.map +0 -1
- package/lib/typescript/push/adapters/NativeBridgeAdapter.d.ts.map +0 -1
- package/lib/typescript/push/adapters/NoopAdapter.d.ts.map +0 -1
- package/lib/typescript/push/adapters/RNFirebaseMessagingAdapter.d.ts.map +0 -1
- package/lib/typescript/push/adapters/loadMessaging.d.ts.map +0 -1
- package/lib/typescript/push/adapters/loadNotifee.d.ts.map +0 -1
- package/lib/typescript/push/adapters/selectAdapter.d.ts.map +0 -1
- package/lib/typescript/push/detect/capabilities.d.ts.map +0 -1
- package/lib/typescript/push/index.d.ts.map +0 -1
- package/lib/typescript/push/native/nativeNotifications.d.ts.map +0 -1
- package/lib/typescript/push/types.d.ts.map +0 -1
- package/lib/typescript/specs/NativeReplaySdk.d.ts.map +0 -1
- package/lib/typescript/specs/NativeScaleBunCrash.d.ts.map +0 -1
- package/lib/typescript/specs/NativeScaleBunInstallReferrer.d.ts.map +0 -1
- package/lib/typescript/specs/NativeScaleBunOta.d.ts.map +0 -1
- package/lib/typescript/specs/NativeScaleBunPerformance.d.ts.map +0 -1
- package/lib/typescript/specs/NativeScaleBunProfiler.d.ts.map +0 -1
- package/lib/typescript/specs/NativeScaleBunStorage.d.ts.map +0 -1
- package/lib/typescript/storage/StorageBackend.d.ts.map +0 -1
- package/lib/typescript/storage/db/sqlite.d.ts.map +0 -1
- package/lib/typescript/storage/files/fileStore.d.ts.map +0 -1
- package/lib/typescript/transport/auth/sdkSession.d.ts.map +0 -1
- package/lib/typescript/transport/backoff/exponentialJitter.d.ts.map +0 -1
- package/lib/typescript/transport/http/endpoints.d.ts.map +0 -1
- package/lib/typescript/transport/http/httpClient.d.ts.map +0 -1
- package/lib/typescript/transport/rateLimit/retryAfter.d.ts.map +0 -1
- package/lib/typescript/transport/signing/requestSigner.d.ts.map +0 -1
- package/lib/typescript/vendor/protocol/index.d.ts.map +0 -1
- package/lib/typescript/vendor/protocol/internal/validation.d.ts.map +0 -1
- package/lib/typescript/vendor/sdk-contracts/bridge.d.ts.map +0 -1
- package/lib/typescript/vendor/sdk-contracts/config.d.ts.map +0 -1
- package/lib/typescript/vendor/sdk-contracts/events.d.ts.map +0 -1
- package/lib/typescript/vendor/sdk-contracts/features.d.ts.map +0 -1
- package/lib/typescript/vendor/sdk-contracts/index.d.ts.map +0 -1
- package/lib/typescript/vendor/sdk-contracts/platform.d.ts.map +0 -1
- package/lib/typescript/vendor/sdk-contracts/session-boundary.d.ts.map +0 -1
- package/lib/typescript/vendor/sdk-contracts/session.d.ts.map +0 -1
package/dist/scalebun.slim.js
CHANGED
|
@@ -173,6 +173,45 @@ function redactHeaders(headers) {
|
|
|
173
173
|
}
|
|
174
174
|
return result;
|
|
175
175
|
}
|
|
176
|
+
function _normalizeKey(key) {
|
|
177
|
+
return key.toLowerCase().replace(/[_\-\s]/g, "");
|
|
178
|
+
}
|
|
179
|
+
function _isSensitiveKey(key) {
|
|
180
|
+
return NORMALIZED_SENSITIVE_KEYS.has(_normalizeKey(key));
|
|
181
|
+
}
|
|
182
|
+
function _luhnValid(digits) {
|
|
183
|
+
const s = digits.replace(/[^\d]/g, "");
|
|
184
|
+
if (s.length < 12 || s.length > 19) return false;
|
|
185
|
+
let sum = 0;
|
|
186
|
+
let alt = false;
|
|
187
|
+
for (let i = s.length - 1; i >= 0; i--) {
|
|
188
|
+
let d = s.charCodeAt(i) - 48;
|
|
189
|
+
if (alt) {
|
|
190
|
+
d *= 2;
|
|
191
|
+
if (d > 9) d -= 9;
|
|
192
|
+
}
|
|
193
|
+
sum += d;
|
|
194
|
+
alt = !alt;
|
|
195
|
+
}
|
|
196
|
+
return sum % 10 === 0;
|
|
197
|
+
}
|
|
198
|
+
function _scrubSecretsInString(value) {
|
|
199
|
+
if (value.length > MAX_STRING_SCRUB_CHARS) {
|
|
200
|
+
value = value.slice(0, MAX_STRING_SCRUB_CHARS);
|
|
201
|
+
}
|
|
202
|
+
let out = value;
|
|
203
|
+
try {
|
|
204
|
+
for (const {
|
|
205
|
+
pattern,
|
|
206
|
+
luhn
|
|
207
|
+
} of VALUE_SCRUB_PATTERNS) {
|
|
208
|
+
pattern.lastIndex = 0;
|
|
209
|
+
out = out.replace(pattern, (m) => luhn && !_luhnValid(m) ? m : REDACTED);
|
|
210
|
+
}
|
|
211
|
+
} catch {
|
|
212
|
+
}
|
|
213
|
+
return out;
|
|
214
|
+
}
|
|
176
215
|
function redactBody(body, maxDepth = 10) {
|
|
177
216
|
try {
|
|
178
217
|
return _redactValue(body, 0, maxDepth);
|
|
@@ -184,7 +223,7 @@ function _redactValue(value, depth, maxDepth) {
|
|
|
184
223
|
if (depth > maxDepth) return "[MAX_DEPTH]";
|
|
185
224
|
if (value === null || value === void 0) return value;
|
|
186
225
|
if (typeof value === "string") {
|
|
187
|
-
return value;
|
|
226
|
+
return _redactString(value, depth, maxDepth);
|
|
188
227
|
}
|
|
189
228
|
if (Array.isArray(value)) {
|
|
190
229
|
return value.map((item) => _redactValue(item, depth + 1, maxDepth));
|
|
@@ -192,7 +231,7 @@ function _redactValue(value, depth, maxDepth) {
|
|
|
192
231
|
if (typeof value === "object") {
|
|
193
232
|
const result = {};
|
|
194
233
|
for (const [key, val] of Object.entries(value)) {
|
|
195
|
-
if (
|
|
234
|
+
if (_isSensitiveKey(key)) {
|
|
196
235
|
result[key] = REDACTED;
|
|
197
236
|
} else {
|
|
198
237
|
result[key] = _redactValue(val, depth + 1, maxDepth);
|
|
@@ -202,52 +241,95 @@ function _redactValue(value, depth, maxDepth) {
|
|
|
202
241
|
}
|
|
203
242
|
return value;
|
|
204
243
|
}
|
|
205
|
-
function
|
|
206
|
-
const
|
|
244
|
+
function _redactString(value, depth, maxDepth) {
|
|
245
|
+
const trimmed = value.trimStart();
|
|
246
|
+
if (trimmed.startsWith("{") || trimmed.startsWith("[")) {
|
|
247
|
+
try {
|
|
248
|
+
const parsed = JSON.parse(value);
|
|
249
|
+
if (parsed !== null && typeof parsed === "object") {
|
|
250
|
+
const redacted = _redactValue(parsed, depth + 1, maxDepth);
|
|
251
|
+
return JSON.stringify(redacted);
|
|
252
|
+
}
|
|
253
|
+
} catch {
|
|
254
|
+
}
|
|
255
|
+
}
|
|
256
|
+
return _scrubSecretsInString(value);
|
|
257
|
+
}
|
|
258
|
+
function _newScanContext() {
|
|
259
|
+
return {
|
|
260
|
+
warnings: [],
|
|
261
|
+
byType: {},
|
|
262
|
+
deadline: Date.now() + SCAN_TIME_BUDGET_MS,
|
|
263
|
+
truncated: false,
|
|
264
|
+
total: 0
|
|
265
|
+
};
|
|
266
|
+
}
|
|
267
|
+
function _pushWarning(ctx, type, rawMatch, location) {
|
|
268
|
+
ctx.total += 1;
|
|
269
|
+
ctx.byType[type] = (ctx.byType[type] ?? 0) + 1;
|
|
270
|
+
if (ctx.warnings.length < MAX_PII_WARNINGS) {
|
|
271
|
+
ctx.warnings.push({
|
|
272
|
+
type,
|
|
273
|
+
match: _maskPII(rawMatch),
|
|
274
|
+
location
|
|
275
|
+
});
|
|
276
|
+
} else {
|
|
277
|
+
ctx.truncated = true;
|
|
278
|
+
}
|
|
279
|
+
}
|
|
280
|
+
function _finalizeScan(ctx) {
|
|
281
|
+
if (ctx.truncated) {
|
|
282
|
+
ctx.warnings.push({
|
|
283
|
+
type: "_summary",
|
|
284
|
+
match: `truncated: ${ctx.total} matches`,
|
|
285
|
+
location: `counts:${JSON.stringify(ctx.byType)}`
|
|
286
|
+
});
|
|
287
|
+
}
|
|
288
|
+
return ctx.warnings;
|
|
289
|
+
}
|
|
290
|
+
function _scanTextInto(text2, location, ctx) {
|
|
291
|
+
const input = text2.length > MAX_SCAN_INPUT_CHARS ? text2.slice(0, MAX_SCAN_INPUT_CHARS) : text2;
|
|
207
292
|
try {
|
|
208
293
|
for (const {
|
|
209
294
|
name,
|
|
210
295
|
pattern
|
|
211
296
|
} of PII_PATTERNS) {
|
|
212
297
|
pattern.lastIndex = 0;
|
|
213
|
-
let match = pattern.exec(
|
|
298
|
+
let match = pattern.exec(input);
|
|
214
299
|
while (match) {
|
|
215
|
-
|
|
216
|
-
|
|
217
|
-
|
|
218
|
-
|
|
219
|
-
}
|
|
220
|
-
match
|
|
300
|
+
_pushWarning(ctx, name, match[0], location);
|
|
301
|
+
if (Date.now() > ctx.deadline) {
|
|
302
|
+
ctx.truncated = true;
|
|
303
|
+
return;
|
|
304
|
+
}
|
|
305
|
+
if (pattern.lastIndex === match.index) pattern.lastIndex++;
|
|
306
|
+
match = pattern.exec(input);
|
|
221
307
|
}
|
|
222
308
|
}
|
|
223
309
|
} catch {
|
|
224
310
|
}
|
|
225
|
-
return warnings;
|
|
226
|
-
}
|
|
227
|
-
function scanObjectForPII(obj, basePath = "", maxDepth = 10) {
|
|
228
|
-
const warnings = [];
|
|
229
|
-
try {
|
|
230
|
-
_scanObject(obj, basePath, 0, maxDepth, warnings);
|
|
231
|
-
} catch {
|
|
232
|
-
}
|
|
233
|
-
return warnings;
|
|
234
311
|
}
|
|
235
|
-
function
|
|
312
|
+
function _scanObjectInto(value, path, depth, maxDepth, ctx) {
|
|
236
313
|
if (depth > maxDepth || value === null || value === void 0) return;
|
|
314
|
+
if (ctx.truncated || Date.now() > ctx.deadline) {
|
|
315
|
+
ctx.truncated = true;
|
|
316
|
+
return;
|
|
317
|
+
}
|
|
237
318
|
if (typeof value === "string") {
|
|
238
|
-
|
|
239
|
-
warnings.push(...found);
|
|
319
|
+
_scanTextInto(value, path, ctx);
|
|
240
320
|
return;
|
|
241
321
|
}
|
|
242
322
|
if (Array.isArray(value)) {
|
|
243
|
-
value.
|
|
244
|
-
|
|
245
|
-
|
|
323
|
+
for (let i = 0; i < value.length; i++) {
|
|
324
|
+
if (ctx.truncated) return;
|
|
325
|
+
_scanObjectInto(value[i], `${path}[${i}]`, depth + 1, maxDepth, ctx);
|
|
326
|
+
}
|
|
246
327
|
return;
|
|
247
328
|
}
|
|
248
329
|
if (typeof value === "object") {
|
|
249
330
|
for (const [key, val] of Object.entries(value)) {
|
|
250
|
-
|
|
331
|
+
if (ctx.truncated) return;
|
|
332
|
+
_scanObjectInto(val, path ? `${path}.${key}` : key, depth + 1, maxDepth, ctx);
|
|
251
333
|
}
|
|
252
334
|
}
|
|
253
335
|
}
|
|
@@ -270,16 +352,17 @@ function redactUrl(url) {
|
|
|
270
352
|
}
|
|
271
353
|
}
|
|
272
354
|
function redactNetworkEvent(event) {
|
|
273
|
-
const
|
|
355
|
+
const ctx = _newScanContext();
|
|
274
356
|
if (event.url) {
|
|
275
|
-
|
|
357
|
+
_scanTextInto(event.url, "url", ctx);
|
|
276
358
|
}
|
|
277
359
|
if (event.requestBody) {
|
|
278
|
-
|
|
360
|
+
_scanObjectInto(event.requestBody, "requestBody", 0, 10, ctx);
|
|
279
361
|
}
|
|
280
362
|
if (event.responseBody) {
|
|
281
|
-
|
|
363
|
+
_scanObjectInto(event.responseBody, "responseBody", 0, 10, ctx);
|
|
282
364
|
}
|
|
365
|
+
const piiWarnings = _finalizeScan(ctx);
|
|
283
366
|
return {
|
|
284
367
|
url: event.url ? redactUrl(event.url) : "",
|
|
285
368
|
method: event.method ?? "GET",
|
|
@@ -292,29 +375,54 @@ function redactNetworkEvent(event) {
|
|
|
292
375
|
piiWarnings
|
|
293
376
|
};
|
|
294
377
|
}
|
|
295
|
-
var REDACTED, SENSITIVE_HEADERS, PII_PATTERNS, SENSITIVE_BODY_KEYS;
|
|
378
|
+
var REDACTED, MAX_SCAN_INPUT_CHARS, SCAN_TIME_BUDGET_MS, MAX_PII_WARNINGS, MAX_STRING_SCRUB_CHARS, SENSITIVE_HEADERS, PII_PATTERNS, VALUE_SCRUB_PATTERNS, SENSITIVE_BODY_KEYS, NORMALIZED_SENSITIVE_KEYS;
|
|
296
379
|
var init_redaction = __esm({
|
|
297
380
|
"lib/module/debug/redaction.js"() {
|
|
298
381
|
"use strict";
|
|
299
382
|
REDACTED = "[REDACTED]";
|
|
383
|
+
MAX_SCAN_INPUT_CHARS = 16 * 1024;
|
|
384
|
+
SCAN_TIME_BUDGET_MS = 10;
|
|
385
|
+
MAX_PII_WARNINGS = 20;
|
|
386
|
+
MAX_STRING_SCRUB_CHARS = 64 * 1024;
|
|
300
387
|
SENSITIVE_HEADERS = /* @__PURE__ */ new Set(["authorization", "cookie", "set-cookie", "x-api-key", "x-auth-token", "proxy-authorization"]);
|
|
301
388
|
PII_PATTERNS = [{
|
|
302
389
|
name: "email",
|
|
303
|
-
pattern: /[
|
|
390
|
+
pattern: /[A-Za-z0-9._%+-]{1,64}@[A-Za-z0-9-]{1,63}(?:\.[A-Za-z0-9-]{1,63}){0,8}\.[A-Za-z]{2,24}/g
|
|
304
391
|
}, {
|
|
305
392
|
name: "phone",
|
|
306
|
-
pattern:
|
|
393
|
+
pattern: /\+?\d{1,3}[-.\s]?\(?\d{2,4}\)?[-.\s]?\d{3,4}[-.\s]?\d{3,4}/g
|
|
307
394
|
}, {
|
|
308
395
|
name: "ssn",
|
|
309
396
|
pattern: /\b\d{3}-\d{2}-\d{4}\b/g
|
|
310
397
|
}, {
|
|
311
398
|
name: "credit_card",
|
|
312
399
|
pattern: /\b\d{4}[-\s]?\d{4}[-\s]?\d{4}[-\s]?\d{4}\b/g
|
|
400
|
+
}, {
|
|
401
|
+
name: "iban",
|
|
402
|
+
pattern: /\b[A-Z]{2}\d{2}[A-Z0-9]{10,30}\b/g
|
|
403
|
+
}, {
|
|
404
|
+
name: "jwt",
|
|
405
|
+
pattern: /\beyJ[A-Za-z0-9_-]{5,}\.[A-Za-z0-9_-]{5,}\.[A-Za-z0-9_-]{5,}\b/g
|
|
313
406
|
}, {
|
|
314
407
|
name: "ip_address",
|
|
315
408
|
pattern: /\b(?:\d{1,3}\.){3}\d{1,3}\b/g
|
|
316
409
|
}];
|
|
317
|
-
|
|
410
|
+
VALUE_SCRUB_PATTERNS = [{
|
|
411
|
+
name: "jwt",
|
|
412
|
+
pattern: /eyJ[A-Za-z0-9_-]{5,}\.[A-Za-z0-9_-]{5,}\.[A-Za-z0-9_-]{5,}/g
|
|
413
|
+
}, {
|
|
414
|
+
name: "email",
|
|
415
|
+
pattern: /[A-Za-z0-9._%+-]{1,64}@[A-Za-z0-9-]{1,63}(?:\.[A-Za-z0-9-]{1,63}){0,8}\.[A-Za-z]{2,24}/g
|
|
416
|
+
}, {
|
|
417
|
+
name: "iban",
|
|
418
|
+
pattern: /\b[A-Z]{2}\d{2}[A-Z0-9]{10,30}\b/g
|
|
419
|
+
}, {
|
|
420
|
+
name: "credit_card",
|
|
421
|
+
pattern: /\b\d{4}[-\s]?\d{4}[-\s]?\d{4}[-\s]?\d{2,7}\b/g,
|
|
422
|
+
luhn: true
|
|
423
|
+
}];
|
|
424
|
+
SENSITIVE_BODY_KEYS = /* @__PURE__ */ new Set(["password", "passwd", "secret", "token", "access_token", "refresh_token", "id_token", "api_key", "apiKey", "private_key", "privateKey", "credit_card", "creditCard", "ccnumber", "cardnumber", "card_number", "pan", "cvv", "cvc", "ssn", "social_security", "nationalid", "national_id", "iban", "otp", "pin", "totp", "mfa", "mnemonic", "seed"]);
|
|
425
|
+
NORMALIZED_SENSITIVE_KEYS = new Set(Array.from(SENSITIVE_BODY_KEYS, _normalizeKey));
|
|
318
426
|
}
|
|
319
427
|
});
|
|
320
428
|
|
|
@@ -492,7 +600,7 @@ var SDK_VERSION;
|
|
|
492
600
|
var init_version = __esm({
|
|
493
601
|
"lib/module/core/constants/version.js"() {
|
|
494
602
|
"use strict";
|
|
495
|
-
SDK_VERSION = "1.10.
|
|
603
|
+
SDK_VERSION = "1.10.6";
|
|
496
604
|
}
|
|
497
605
|
});
|
|
498
606
|
|
|
@@ -534,6 +642,15 @@ function staticDeviceContext() {
|
|
|
534
642
|
if (c.Model) out.device_model = String(c.Model);
|
|
535
643
|
if (c.Manufacturer) out.manufacturer = String(c.Manufacturer);
|
|
536
644
|
else if (c.Brand) out.manufacturer = String(c.Brand);
|
|
645
|
+
else if (out.platform_os === "ios") out.manufacturer = "Apple";
|
|
646
|
+
return out;
|
|
647
|
+
}
|
|
648
|
+
function nativeDeviceContext(info) {
|
|
649
|
+
const out = {};
|
|
650
|
+
if (!info) return out;
|
|
651
|
+
if (info.osVersion) out.os_version = info.osVersion;
|
|
652
|
+
if (info.deviceModel) out.device_model = info.deviceModel;
|
|
653
|
+
if (info.manufacturer) out.manufacturer = info.manufacturer;
|
|
537
654
|
return out;
|
|
538
655
|
}
|
|
539
656
|
function mergeDeviceContext(configured, detected = staticDeviceContext()) {
|
|
@@ -1236,12 +1353,22 @@ var init_AutoScreenDetector = __esm({
|
|
|
1236
1353
|
_manualScreen = null;
|
|
1237
1354
|
_manualScreenTs = 0;
|
|
1238
1355
|
_autoScreen = null;
|
|
1356
|
+
/** `name#key` of the last auto-detected screen VISIT — see _extractActiveVisit. */
|
|
1357
|
+
_autoVisitSig = null;
|
|
1239
1358
|
_navigationRef = null;
|
|
1240
1359
|
_navListenerRemover = null;
|
|
1241
1360
|
_navListenerWired = false;
|
|
1242
1361
|
_heuristicTimer = null;
|
|
1243
1362
|
_started = false;
|
|
1244
1363
|
_lastEmittedScreen = null;
|
|
1364
|
+
_lastEmittedTs = 0;
|
|
1365
|
+
/**
|
|
1366
|
+
* Cross-source emit dedup window — see _emitScreenChange. Long enough to absorb the manual
|
|
1367
|
+
* beacon and the navRef listener both reporting the SAME transition (they land within the
|
|
1368
|
+
* 30ms nav debounce plus a render), short enough that a genuine re-visit of the same route
|
|
1369
|
+
* a moment later is a new screen view rather than silence.
|
|
1370
|
+
*/
|
|
1371
|
+
static EMIT_DEDUP_WINDOW_MS = 800;
|
|
1245
1372
|
_navDebounceTimer = null;
|
|
1246
1373
|
/** Whether the React Navigation exports were actually replaced — see _autoHookReactNavigation. */
|
|
1247
1374
|
_autoHookInstalled = false;
|
|
@@ -1293,6 +1420,7 @@ var init_AutoScreenDetector = __esm({
|
|
|
1293
1420
|
if (this.isManualScreenActive()) return;
|
|
1294
1421
|
if (name !== this._autoScreen) {
|
|
1295
1422
|
this._autoScreen = name;
|
|
1423
|
+
this._autoVisitSig = name;
|
|
1296
1424
|
this._emitScreenChange(name, "heuristic");
|
|
1297
1425
|
}
|
|
1298
1426
|
} catch {
|
|
@@ -1343,10 +1471,11 @@ var init_AutoScreenDetector = __esm({
|
|
|
1343
1471
|
try {
|
|
1344
1472
|
const state = typeof container.getRootState === "function" ? container.getRootState() : null;
|
|
1345
1473
|
if (state) {
|
|
1346
|
-
const
|
|
1347
|
-
if (
|
|
1348
|
-
this._autoScreen =
|
|
1349
|
-
this.
|
|
1474
|
+
const visit = this._extractActiveVisit(state);
|
|
1475
|
+
if (visit && this._visitSig(visit) !== this._autoVisitSig) {
|
|
1476
|
+
this._autoScreen = visit.name;
|
|
1477
|
+
this._autoVisitSig = this._visitSig(visit);
|
|
1478
|
+
this._emitScreenChange(visit.name, "navRef");
|
|
1350
1479
|
}
|
|
1351
1480
|
}
|
|
1352
1481
|
} catch {
|
|
@@ -1360,10 +1489,11 @@ var init_AutoScreenDetector = __esm({
|
|
|
1360
1489
|
if (typeof container.getRootState === "function") {
|
|
1361
1490
|
const state = container.getRootState();
|
|
1362
1491
|
if (state) {
|
|
1363
|
-
const
|
|
1364
|
-
if (
|
|
1365
|
-
this._autoScreen =
|
|
1366
|
-
this.
|
|
1492
|
+
const visit = this._extractActiveVisit(state);
|
|
1493
|
+
if (visit) {
|
|
1494
|
+
this._autoScreen = visit.name;
|
|
1495
|
+
this._autoVisitSig = this._visitSig(visit);
|
|
1496
|
+
this._emitScreenChange(visit.name, "navRef");
|
|
1367
1497
|
}
|
|
1368
1498
|
}
|
|
1369
1499
|
}
|
|
@@ -1389,10 +1519,11 @@ var init_AutoScreenDetector = __esm({
|
|
|
1389
1519
|
if (navContainer) {
|
|
1390
1520
|
const state = typeof navContainer.getRootState === "function" ? navContainer.getRootState() : null;
|
|
1391
1521
|
if (state) {
|
|
1392
|
-
const
|
|
1393
|
-
if (
|
|
1394
|
-
this._autoScreen =
|
|
1395
|
-
this.
|
|
1522
|
+
const visit = this._extractActiveVisit(state);
|
|
1523
|
+
if (visit && this._visitSig(visit) !== this._autoVisitSig) {
|
|
1524
|
+
this._autoScreen = visit.name;
|
|
1525
|
+
this._autoVisitSig = this._visitSig(visit);
|
|
1526
|
+
this._emitScreenChange(visit.name, "heuristic");
|
|
1396
1527
|
}
|
|
1397
1528
|
}
|
|
1398
1529
|
}
|
|
@@ -1424,19 +1555,43 @@ var init_AutoScreenDetector = __esm({
|
|
|
1424
1555
|
* Handles nested navigators by walking to the deepest active route.
|
|
1425
1556
|
*/
|
|
1426
1557
|
_extractActiveRoute(state) {
|
|
1558
|
+
return this._extractActiveVisit(state)?.name ?? null;
|
|
1559
|
+
}
|
|
1560
|
+
/**
|
|
1561
|
+
* Extract the active route's name AND its React Navigation route `key`.
|
|
1562
|
+
*
|
|
1563
|
+
* The key is what makes re-VISITS detectable. Comparing names alone collapses two
|
|
1564
|
+
* different visits to the same route into one screen view: leave Details, open Details
|
|
1565
|
+
* again, and `name === _autoScreen` swallowed the second visit entirely (QA: "opened the
|
|
1566
|
+
* same route again and no screen event was recorded"). React Navigation mints a fresh
|
|
1567
|
+
* `key` for every pushed route instance, so a re-push of the same name is a NEW key —
|
|
1568
|
+
* name+key comparison records each visit while a mere re-render of the same instance
|
|
1569
|
+
* (same key) still emits nothing. States without keys degrade to name-only, i.e. the
|
|
1570
|
+
* old behaviour, never worse.
|
|
1571
|
+
*/
|
|
1572
|
+
_extractActiveVisit(state) {
|
|
1427
1573
|
try {
|
|
1428
1574
|
if (!state?.routes || typeof state.index !== "number") return null;
|
|
1429
1575
|
const activeRoute = state.routes[state.index];
|
|
1430
1576
|
if (!activeRoute) return null;
|
|
1431
1577
|
if (activeRoute.state?.routes && typeof activeRoute.state.index === "number") {
|
|
1432
|
-
const nested = this.
|
|
1578
|
+
const nested = this._extractActiveVisit(activeRoute.state);
|
|
1433
1579
|
if (nested) return nested;
|
|
1434
1580
|
}
|
|
1435
|
-
|
|
1581
|
+
if (!activeRoute.name) return null;
|
|
1582
|
+
const rawKey = activeRoute.key;
|
|
1583
|
+
return {
|
|
1584
|
+
name: activeRoute.name,
|
|
1585
|
+
key: typeof rawKey === "string" ? rawKey : null
|
|
1586
|
+
};
|
|
1436
1587
|
} catch {
|
|
1437
1588
|
return null;
|
|
1438
1589
|
}
|
|
1439
1590
|
}
|
|
1591
|
+
/** `name#key` signature of one screen VISIT — what the auto paths dedup on. */
|
|
1592
|
+
_visitSig(visit) {
|
|
1593
|
+
return visit.key ? `${visit.name}#${visit.key}` : visit.name;
|
|
1594
|
+
}
|
|
1440
1595
|
// ─── Lifecycle ──────────────────────────────────────────────────────
|
|
1441
1596
|
/** Start auto-detection (idempotent) */
|
|
1442
1597
|
start() {
|
|
@@ -1601,8 +1756,10 @@ var init_AutoScreenDetector = __esm({
|
|
|
1601
1756
|
// ─── Internal ───────────────────────────────────────────────────────
|
|
1602
1757
|
_emitScreenChange(name, source) {
|
|
1603
1758
|
try {
|
|
1604
|
-
|
|
1759
|
+
const emitNow = Date.now();
|
|
1760
|
+
if (name === this._lastEmittedScreen && emitNow - this._lastEmittedTs < _AutoScreenDetector.EMIT_DEDUP_WINDOW_MS) return;
|
|
1605
1761
|
this._lastEmittedScreen = name;
|
|
1762
|
+
this._lastEmittedTs = emitNow;
|
|
1606
1763
|
for (const cb of this._listeners) {
|
|
1607
1764
|
try {
|
|
1608
1765
|
cb(name, source);
|
|
@@ -3487,6 +3644,21 @@ var init_SessionManager = __esm({
|
|
|
3487
3644
|
* differently across devices and pushes markers ~10% off vertically).
|
|
3488
3645
|
*/
|
|
3489
3646
|
_lastNativeViewportJsUnits = null;
|
|
3647
|
+
/**
|
|
3648
|
+
* Exact-duplicate gesture suppression (QA: one physical tap recorded 2–3×).
|
|
3649
|
+
*
|
|
3650
|
+
* Measured in production data: the native tracker re-emitted the SAME tap — identical
|
|
3651
|
+
* gestureType and identical coordinates to the SUB-PIXEL (e.g. x=466.962890625) — at
|
|
3652
|
+
* 160–240ms gaps, sometimes twice. A human re-tap cannot reproduce a sub-pixel float
|
|
3653
|
+
* exactly, so exact coordinate equality within the window is a safe discriminator: real
|
|
3654
|
+
* double-taps land on at least slightly different pixels and pass through untouched.
|
|
3655
|
+
* The pipeline's own 100ms dedup was too narrow for these; this window covers what was
|
|
3656
|
+
* actually observed with margin. Sits at the ONE entry point every gesture source funnels
|
|
3657
|
+
* through, so recording and analytics lanes are protected equally.
|
|
3658
|
+
*/
|
|
3659
|
+
_lastGestureSig = null;
|
|
3660
|
+
_lastGestureTs = 0;
|
|
3661
|
+
static GESTURE_DEDUP_WINDOW_MS = 400;
|
|
3490
3662
|
/** Memoized native file-outbox frame adapter (gated by the backend transport). */
|
|
3491
3663
|
_outboxFrameCapture = null;
|
|
3492
3664
|
constructor(debugTransport, nativeCapture2, managerConfig) {
|
|
@@ -4135,6 +4307,14 @@ var init_SessionManager = __esm({
|
|
|
4135
4307
|
* Emits a USER_ACTION event with gesture-specific subtype and payload.
|
|
4136
4308
|
*/
|
|
4137
4309
|
onGestureDetected(gestureType, details) {
|
|
4310
|
+
const dedupSig = `${gestureType}|${String(details?.x)}|${String(details?.y)}|${String(details?.endX)}|${String(details?.endY)}`;
|
|
4311
|
+
const nowTs = Date.now();
|
|
4312
|
+
if (dedupSig === this._lastGestureSig && nowTs - this._lastGestureTs <= _SessionManager.GESTURE_DEDUP_WINDOW_MS) {
|
|
4313
|
+
this._lastGestureTs = nowTs;
|
|
4314
|
+
return;
|
|
4315
|
+
}
|
|
4316
|
+
this._lastGestureSig = dedupSig;
|
|
4317
|
+
this._lastGestureTs = nowTs;
|
|
4138
4318
|
const payload = {
|
|
4139
4319
|
gestureType,
|
|
4140
4320
|
x: details?.x,
|
|
@@ -6357,6 +6537,27 @@ var init_EventTracker = __esm({
|
|
|
6357
6537
|
}
|
|
6358
6538
|
this.persistQueue();
|
|
6359
6539
|
}
|
|
6540
|
+
/**
|
|
6541
|
+
* Fold in device facts that were not knowable at init.
|
|
6542
|
+
*
|
|
6543
|
+
* `Platform.constants` answers Android synchronously, so its model and manufacturer ride the
|
|
6544
|
+
* very first event. iOS exposes neither there — only the native bridge knows, and the bridge is
|
|
6545
|
+
* async and may not be installed at all. Without this the iOS half of every install reported no
|
|
6546
|
+
* model whatsoever.
|
|
6547
|
+
*
|
|
6548
|
+
* `buildEnvelope` reads `cfg.context` per event, so applying it here reaches every event from
|
|
6549
|
+
* the next one onward. Detected keys WIN over whatever the integrator configured, for the same
|
|
6550
|
+
* reason `mergeDeviceContext` inverts the usual precedence: a measurement must not be
|
|
6551
|
+
* overridable by a guess. Empty patches are ignored so a bridge that answered with nothing
|
|
6552
|
+
* cannot blank a value the static path already found.
|
|
6553
|
+
*/
|
|
6554
|
+
applyDetectedContext(patch) {
|
|
6555
|
+
if (!patch || Object.keys(patch).length === 0) return;
|
|
6556
|
+
this.cfg.context = {
|
|
6557
|
+
...this.cfg.context ?? {},
|
|
6558
|
+
...patch
|
|
6559
|
+
};
|
|
6560
|
+
}
|
|
6360
6561
|
// ─── internals ─────────────────────────────────────────────────────────────
|
|
6361
6562
|
buildEnvelope(eventName, properties) {
|
|
6362
6563
|
const ctx = this.cfg.context ?? {};
|
|
@@ -9499,6 +9700,35 @@ var SHAPE = {
|
|
|
9499
9700
|
})
|
|
9500
9701
|
}
|
|
9501
9702
|
},
|
|
9703
|
+
// SB-10: the public, documented top-level privacy config. Previously only the
|
|
9704
|
+
// nested replay privacy took effect; this is validated here and mapped onto the
|
|
9705
|
+
// effective replay privacy policy in the bootstrapper so it actually masks.
|
|
9706
|
+
privacy: {
|
|
9707
|
+
kind: "obj",
|
|
9708
|
+
opt: true,
|
|
9709
|
+
shape: {
|
|
9710
|
+
maskTextInputs: {
|
|
9711
|
+
kind: "bool",
|
|
9712
|
+
opt: true
|
|
9713
|
+
},
|
|
9714
|
+
maskImages: {
|
|
9715
|
+
kind: "bool",
|
|
9716
|
+
opt: true
|
|
9717
|
+
},
|
|
9718
|
+
redactAuth: {
|
|
9719
|
+
kind: "bool",
|
|
9720
|
+
opt: true
|
|
9721
|
+
},
|
|
9722
|
+
redactCookies: {
|
|
9723
|
+
kind: "bool",
|
|
9724
|
+
opt: true
|
|
9725
|
+
},
|
|
9726
|
+
redactBodies: {
|
|
9727
|
+
kind: "bool",
|
|
9728
|
+
opt: true
|
|
9729
|
+
}
|
|
9730
|
+
}
|
|
9731
|
+
},
|
|
9502
9732
|
captureInteractionHeatmap: bool(true),
|
|
9503
9733
|
// Opt-in: intercept console.* and ship the lines to the Diagnose → Logs lane in SaaS
|
|
9504
9734
|
// mode. OFF by default — console output can carry PII/secrets and adds ingest volume,
|
|
@@ -12296,6 +12526,13 @@ var BackendSessionAdapter = class _BackendSessionAdapter {
|
|
|
12296
12526
|
// the flush timer retries, so nothing is lost to a start/child race. The durable native
|
|
12297
12527
|
// outbox path has its own ordering; this guards only the JS in-memory fallback.
|
|
12298
12528
|
_startedSessionIds = /* @__PURE__ */ new Set();
|
|
12529
|
+
// §11 offline-start recovery: INGESTION_START payloads whose POST failed (e.g. the app
|
|
12530
|
+
// launched with no connectivity). Without this, a failed START was logged and forgotten —
|
|
12531
|
+
// the row-ready gate never opened, every child lane re-buffered forever, and the session
|
|
12532
|
+
// stayed stuck until an app restart even after the network returned. Each flush tick
|
|
12533
|
+
// re-attempts these until acked (network errors keep retrying; permanent 4xx gives up).
|
|
12534
|
+
_pendingStartPayloads = /* @__PURE__ */ new Map();
|
|
12535
|
+
_startRetryInFlight = false;
|
|
12299
12536
|
pendingFrames = [];
|
|
12300
12537
|
pendingEvents = [];
|
|
12301
12538
|
pendingNetworkRequests = [];
|
|
@@ -12419,10 +12656,16 @@ var BackendSessionAdapter = class _BackendSessionAdapter {
|
|
|
12419
12656
|
}
|
|
12420
12657
|
};
|
|
12421
12658
|
__DEV__ && logger.debug(`[BackendSessionAdapter] POST session start: ${session.sessionId}`);
|
|
12422
|
-
return this._post(startEndpoint, payload)
|
|
12423
|
-
|
|
12424
|
-
|
|
12425
|
-
|
|
12659
|
+
return this._post(startEndpoint, payload).then(() => {
|
|
12660
|
+
this._startedSessionIds.add(session.sessionId);
|
|
12661
|
+
this._pendingStartPayloads.delete(session.sessionId);
|
|
12662
|
+
__DEV__ && logger.info(`[ScaleBun Replay] backend session upload success`);
|
|
12663
|
+
}, (err) => {
|
|
12664
|
+
if (!_BackendSessionAdapter._isPermanentHttpError(err)) {
|
|
12665
|
+
this._pendingStartPayloads.set(session.sessionId, payload);
|
|
12666
|
+
}
|
|
12667
|
+
logger.info(`[ScaleBun Replay] backend session upload failure`);
|
|
12668
|
+
});
|
|
12426
12669
|
}).catch(() => logger.info(`[ScaleBun Replay] backend session upload failure`));
|
|
12427
12670
|
}
|
|
12428
12671
|
sendSessionEnd(session) {
|
|
@@ -12495,8 +12738,16 @@ var BackendSessionAdapter = class _BackendSessionAdapter {
|
|
|
12495
12738
|
environment: m?.buildType
|
|
12496
12739
|
}
|
|
12497
12740
|
};
|
|
12498
|
-
|
|
12741
|
+
try {
|
|
12742
|
+
await this._post(startEndpoint, payload);
|
|
12743
|
+
} catch (err) {
|
|
12744
|
+
if (!_BackendSessionAdapter._isPermanentHttpError(err)) {
|
|
12745
|
+
this._pendingStartPayloads.set(session.sessionId, payload);
|
|
12746
|
+
}
|
|
12747
|
+
throw err;
|
|
12748
|
+
}
|
|
12499
12749
|
this._startedSessionIds.add(session.sessionId);
|
|
12750
|
+
this._pendingStartPayloads.delete(session.sessionId);
|
|
12500
12751
|
this._flushAnalyticsEvents().catch(() => {
|
|
12501
12752
|
});
|
|
12502
12753
|
__DEV__ && logger.info(`[ScaleBun Analytics] session start upload success: ${session.sessionId}`);
|
|
@@ -12504,6 +12755,40 @@ var BackendSessionAdapter = class _BackendSessionAdapter {
|
|
|
12504
12755
|
__DEV__ && logger.info(`[ScaleBun Analytics] session start upload failure`);
|
|
12505
12756
|
}
|
|
12506
12757
|
}
|
|
12758
|
+
/**
|
|
12759
|
+
* Re-attempt any INGESTION_START whose POST failed (offline app launch). Runs on every
|
|
12760
|
+
* flush tick of BOTH lanes — cheap no-op when the map is empty, single-flight guarded.
|
|
12761
|
+
* On ack: opens the row-ready gate and drains whichever lane the id belongs to, which is
|
|
12762
|
+
* exactly what un-sticks a replay that started offline once connectivity returns.
|
|
12763
|
+
*/
|
|
12764
|
+
_retryPendingStarts() {
|
|
12765
|
+
if (this.destroyed || this._startRetryInFlight || this._pendingStartPayloads.size === 0) return;
|
|
12766
|
+
const entry = this._pendingStartPayloads.entries().next().value;
|
|
12767
|
+
if (!entry) return;
|
|
12768
|
+
const [sessionId, payload] = entry;
|
|
12769
|
+
const stillRelevant = sessionId === this.currentSessionId || sessionId === this._analyticsSessionId;
|
|
12770
|
+
if (!stillRelevant) {
|
|
12771
|
+
this._pendingStartPayloads.delete(sessionId);
|
|
12772
|
+
return;
|
|
12773
|
+
}
|
|
12774
|
+
this._startRetryInFlight = true;
|
|
12775
|
+
const startEndpoint = this.config.clientKey ? ENDPOINTS.INGESTION_START : "/replay/sessions";
|
|
12776
|
+
this._post(startEndpoint, payload).then(() => {
|
|
12777
|
+
this._startedSessionIds.add(sessionId);
|
|
12778
|
+
this._pendingStartPayloads.delete(sessionId);
|
|
12779
|
+
__DEV__ && logger.info(`[ScaleBun Replay] deferred session start delivered: ${sessionId}`);
|
|
12780
|
+
if (sessionId === this._analyticsSessionId) {
|
|
12781
|
+
this._flushAnalyticsEvents().catch(() => {
|
|
12782
|
+
});
|
|
12783
|
+
}
|
|
12784
|
+
}).catch((err) => {
|
|
12785
|
+
if (_BackendSessionAdapter._isPermanentHttpError(err)) {
|
|
12786
|
+
this._pendingStartPayloads.delete(sessionId);
|
|
12787
|
+
}
|
|
12788
|
+
}).finally(() => {
|
|
12789
|
+
this._startRetryInFlight = false;
|
|
12790
|
+
});
|
|
12791
|
+
}
|
|
12507
12792
|
/**
|
|
12508
12793
|
* Enqueue a user track() event. Buffers (bounded, drop-oldest) when the
|
|
12509
12794
|
* analytics session is not yet open; flushes at >=20 once it is.
|
|
@@ -12618,6 +12903,7 @@ var BackendSessionAdapter = class _BackendSessionAdapter {
|
|
|
12618
12903
|
_startAnalyticsFlushTimer() {
|
|
12619
12904
|
this._stopAnalyticsFlushTimer();
|
|
12620
12905
|
this.analyticsFlushTimer = setInterval(() => {
|
|
12906
|
+
this._retryPendingStarts();
|
|
12621
12907
|
this._flushAnalyticsEvents().catch(() => {
|
|
12622
12908
|
});
|
|
12623
12909
|
}, this.config.flushIntervalMs);
|
|
@@ -12844,6 +13130,7 @@ var BackendSessionAdapter = class _BackendSessionAdapter {
|
|
|
12844
13130
|
this._analyticsSessionId = null;
|
|
12845
13131
|
this._pendingFinalizeId = null;
|
|
12846
13132
|
this._startedSessionIds.clear();
|
|
13133
|
+
this._pendingStartPayloads.clear();
|
|
12847
13134
|
}
|
|
12848
13135
|
// ─── Internal: Flush ────────────────────────────────────────────────
|
|
12849
13136
|
/** Wire metadata for a frame — real format/sizeBytes from native (no hardcoded literals). */
|
|
@@ -13362,6 +13649,7 @@ var BackendSessionAdapter = class _BackendSessionAdapter {
|
|
|
13362
13649
|
_startFlushTimer() {
|
|
13363
13650
|
this._stopFlushTimer();
|
|
13364
13651
|
this.flushTimer = setInterval(() => {
|
|
13652
|
+
this._retryPendingStarts();
|
|
13365
13653
|
this._flushFrames().catch(() => {
|
|
13366
13654
|
});
|
|
13367
13655
|
this._flushEvents().catch(() => {
|
|
@@ -13692,6 +13980,18 @@ var SDKBootstrapper = class {
|
|
|
13692
13980
|
if (features.replay !== false) {
|
|
13693
13981
|
try {
|
|
13694
13982
|
__DEV__ && logger.debug("[Bootstrap] Initializing unified SessionManager");
|
|
13983
|
+
const pub = this.config.privacy ?? {};
|
|
13984
|
+
const sessionReplay = {
|
|
13985
|
+
...this.config.replay ?? {}
|
|
13986
|
+
};
|
|
13987
|
+
if (typeof pub.maskTextInputs === "boolean" || typeof pub.maskImages === "boolean") {
|
|
13988
|
+
sessionReplay.privacyPolicy = {
|
|
13989
|
+
redactTextInputs: pub.maskTextInputs ?? true,
|
|
13990
|
+
redactImages: pub.maskImages ?? false,
|
|
13991
|
+
blockTestIds: [],
|
|
13992
|
+
captureExclusions: []
|
|
13993
|
+
};
|
|
13994
|
+
}
|
|
13695
13995
|
const sessionManager = SessionManager.getInstance(
|
|
13696
13996
|
null,
|
|
13697
13997
|
// No desktop transport initially
|
|
@@ -13702,9 +14002,7 @@ var SDKBootstrapper = class {
|
|
|
13702
14002
|
// Also flow the Feature #4 heatmap flag so tap/gesture coords
|
|
13703
14003
|
// route to the analytics lane even when no recording is active.
|
|
13704
14004
|
{
|
|
13705
|
-
|
|
13706
|
-
sessionReplay: this.config.replay
|
|
13707
|
-
} : {},
|
|
14005
|
+
sessionReplay,
|
|
13708
14006
|
captureInteractionHeatmap: this.config.captureInteractionHeatmap === true
|
|
13709
14007
|
}
|
|
13710
14008
|
);
|
|
@@ -13930,6 +14228,7 @@ var SDKBootstrapper = class {
|
|
|
13930
14228
|
|
|
13931
14229
|
// lib/module/public/ScaleBunFacade.js
|
|
13932
14230
|
init_EventTracker();
|
|
14231
|
+
init_bridgeAdapter();
|
|
13933
14232
|
init_automaticEvents();
|
|
13934
14233
|
|
|
13935
14234
|
// lib/module/analytics/eventLane.js
|
|
@@ -16446,6 +16745,8 @@ var ScaleBunFacade = class {
|
|
|
16446
16745
|
* the whole time. The SDK knows the device; the integrator is guessing at it.
|
|
16447
16746
|
* Everything outside the detected keys is still theirs.
|
|
16448
16747
|
*/
|
|
16748
|
+
// Everything Platform.constants knows. On iOS that is neither the model nor the
|
|
16749
|
+
// manufacturer, so the bridge completes it below once it answers.
|
|
16449
16750
|
context: mergeDeviceContext(rawConfig?.context),
|
|
16450
16751
|
// Use the same foreground id as replay/journey capture. The
|
|
16451
16752
|
// callback is resolved per event because the session subsystem
|
|
@@ -16459,6 +16760,7 @@ var ScaleBunFacade = class {
|
|
|
16459
16760
|
});
|
|
16460
16761
|
this._eventTracker.start();
|
|
16461
16762
|
__DEV__ && logger.info("[ScaleBun] Envelope event tracking started \u2192 /v1/batch.");
|
|
16763
|
+
this._applyNativeDeviceContext(this._eventTracker);
|
|
16462
16764
|
this._captureInstallReferrer(this._eventTracker);
|
|
16463
16765
|
const tracker = this._eventTracker;
|
|
16464
16766
|
this._configManager = new ConfigManager({
|
|
@@ -16477,6 +16779,25 @@ var ScaleBunFacade = class {
|
|
|
16477
16779
|
logger.warn("[ScaleBun] Failed to start envelope event tracking:", err?.message);
|
|
16478
16780
|
}
|
|
16479
16781
|
}
|
|
16782
|
+
/**
|
|
16783
|
+
* Fold the native bridge's device facts into the analytics context once it answers.
|
|
16784
|
+
*
|
|
16785
|
+
* Detected values never overwrite a populated one with an empty one — `nativeDeviceContext`
|
|
16786
|
+
* drops absent keys and `applyDetectedContext` ignores an empty patch — so a bridge that
|
|
16787
|
+
* cannot answer leaves whatever `Platform.constants` already found.
|
|
16788
|
+
*/
|
|
16789
|
+
_applyNativeDeviceContext(tracker) {
|
|
16790
|
+
Promise.resolve().then(() => bridgeAdapter.getDeviceInfo()).then((info) => {
|
|
16791
|
+
if (!info) return;
|
|
16792
|
+
tracker.applyDetectedContext(nativeDeviceContext({
|
|
16793
|
+
osVersion: info.osVersion,
|
|
16794
|
+
deviceModel: info.deviceModel
|
|
16795
|
+
// iOS ships no manufacturer over the bridge; it is a constant there and the
|
|
16796
|
+
// static path already set it. Android's arrives via Platform.constants.
|
|
16797
|
+
}));
|
|
16798
|
+
}).catch(() => {
|
|
16799
|
+
});
|
|
16800
|
+
}
|
|
16480
16801
|
/**
|
|
16481
16802
|
* Android-only: read the Play Install Referrer once per install and route it into
|
|
16482
16803
|
* attribution. `scalebun_click_id` → the deterministic click path; the full
|
|
@@ -16660,16 +16981,90 @@ var ScaleBunFacade = class {
|
|
|
16660
16981
|
});
|
|
16661
16982
|
});
|
|
16662
16983
|
}
|
|
16663
|
-
/**
|
|
16664
|
-
|
|
16984
|
+
/**
|
|
16985
|
+
* Clear user identity.
|
|
16986
|
+
*
|
|
16987
|
+
* SB-11: pass `{ purgeLocal: true }` on logout / consent withdrawal to also
|
|
16988
|
+
* erase all locally-stored SDK data (see {@link eraseLocalData}). Without it,
|
|
16989
|
+
* behaviour is unchanged (identity-only clear).
|
|
16990
|
+
*/
|
|
16991
|
+
clearUser(options) {
|
|
16665
16992
|
return noThrow(() => {
|
|
16666
16993
|
this._identifiedUserId = null;
|
|
16667
16994
|
this._pendingIdentity = null;
|
|
16668
16995
|
if (!this.initialized) return;
|
|
16669
16996
|
this._eventTracker?.clearIdentity();
|
|
16670
16997
|
this.track("$clear_user", {});
|
|
16998
|
+
if (options?.purgeLocal) void this.eraseLocalData();
|
|
16671
16999
|
});
|
|
16672
17000
|
}
|
|
17001
|
+
/**
|
|
17002
|
+
* SB-11: erase all locally-stored SDK data from the device — the durable event
|
|
17003
|
+
* queue, the pre-init buffer, and the first-party KV store (cached install /
|
|
17004
|
+
* anonymous / session IDs, plus any queued payloads including SB-26 disk data).
|
|
17005
|
+
*
|
|
17006
|
+
* Order matters: capture is stopped FIRST so nothing is written back in behind
|
|
17007
|
+
* the delete. Best-effort and never throws.
|
|
17008
|
+
*
|
|
17009
|
+
* Note: native replay frames written to disk on iOS are addressed separately
|
|
17010
|
+
* (SB-15); this covers every store reachable from JS today.
|
|
17011
|
+
*/
|
|
17012
|
+
async eraseLocalData() {
|
|
17013
|
+
try {
|
|
17014
|
+
try {
|
|
17015
|
+
SessionManager.getExistingInstance()?.endSession("ended");
|
|
17016
|
+
} catch {
|
|
17017
|
+
}
|
|
17018
|
+
try {
|
|
17019
|
+
this._getQueue().clear();
|
|
17020
|
+
} catch {
|
|
17021
|
+
}
|
|
17022
|
+
try {
|
|
17023
|
+
this._preInitBuffer.clear();
|
|
17024
|
+
} catch {
|
|
17025
|
+
}
|
|
17026
|
+
try {
|
|
17027
|
+
const store = createStorageBackend();
|
|
17028
|
+
for (const key of store.getAllKeys()) {
|
|
17029
|
+
store.delete(key);
|
|
17030
|
+
}
|
|
17031
|
+
} catch {
|
|
17032
|
+
}
|
|
17033
|
+
} catch {
|
|
17034
|
+
}
|
|
17035
|
+
}
|
|
17036
|
+
/**
|
|
17037
|
+
* SB-11: record the user's data-collection consent. When `enabled` is false,
|
|
17038
|
+
* capture is stopped immediately; pass `{ purgeLocal: true }` to also erase
|
|
17039
|
+
* everything already stored locally. Never throws.
|
|
17040
|
+
*/
|
|
17041
|
+
setConsent(enabled, options) {
|
|
17042
|
+
noThrow(() => {
|
|
17043
|
+
if (enabled) return;
|
|
17044
|
+
try {
|
|
17045
|
+
SessionManager.getExistingInstance()?.endSession("ended");
|
|
17046
|
+
} catch {
|
|
17047
|
+
}
|
|
17048
|
+
if (options?.purgeLocal) void this.eraseLocalData();
|
|
17049
|
+
});
|
|
17050
|
+
}
|
|
17051
|
+
/**
|
|
17052
|
+
* SB-10: return the effective privacy policy actually in force, resolving the
|
|
17053
|
+
* public config against the SDK's safe defaults. Lets callers and tests assert
|
|
17054
|
+
* what is active rather than guessing from the (previously dead) config object.
|
|
17055
|
+
*/
|
|
17056
|
+
getEffectivePrivacyPolicy() {
|
|
17057
|
+
const p = this._privacyConfig ?? {};
|
|
17058
|
+
return {
|
|
17059
|
+
// Real default is true (matches the replay capture default) — the old
|
|
17060
|
+
// doc comment claiming "false" was both wrong and less safe.
|
|
17061
|
+
maskTextInputs: p.maskTextInputs ?? true,
|
|
17062
|
+
maskImages: p.maskImages ?? false,
|
|
17063
|
+
redactAuth: p.redactAuth ?? true,
|
|
17064
|
+
redactCookies: p.redactCookies ?? true,
|
|
17065
|
+
redactBodies: p.redactBodies ?? false
|
|
17066
|
+
};
|
|
17067
|
+
}
|
|
16673
17068
|
/**
|
|
16674
17069
|
* Submit in-app rating (1-5 stars).
|
|
16675
17070
|
* Attaches to current session when available; otherwise sends standalone.
|
|
@@ -29750,7 +30145,7 @@ function ScaleBunDebugRoot({
|
|
|
29750
30145
|
}
|
|
29751
30146
|
} catch {
|
|
29752
30147
|
}
|
|
29753
|
-
},
|
|
30148
|
+
}, 600);
|
|
29754
30149
|
}
|
|
29755
30150
|
touchStartRef.current = null;
|
|
29756
30151
|
} catch {
|