@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.full.js
CHANGED
|
@@ -170,6 +170,45 @@ function redactHeaders(headers) {
|
|
|
170
170
|
}
|
|
171
171
|
return result;
|
|
172
172
|
}
|
|
173
|
+
function _normalizeKey(key) {
|
|
174
|
+
return key.toLowerCase().replace(/[_\-\s]/g, "");
|
|
175
|
+
}
|
|
176
|
+
function _isSensitiveKey(key) {
|
|
177
|
+
return NORMALIZED_SENSITIVE_KEYS.has(_normalizeKey(key));
|
|
178
|
+
}
|
|
179
|
+
function _luhnValid(digits) {
|
|
180
|
+
const s = digits.replace(/[^\d]/g, "");
|
|
181
|
+
if (s.length < 12 || s.length > 19) return false;
|
|
182
|
+
let sum = 0;
|
|
183
|
+
let alt = false;
|
|
184
|
+
for (let i = s.length - 1; i >= 0; i--) {
|
|
185
|
+
let d = s.charCodeAt(i) - 48;
|
|
186
|
+
if (alt) {
|
|
187
|
+
d *= 2;
|
|
188
|
+
if (d > 9) d -= 9;
|
|
189
|
+
}
|
|
190
|
+
sum += d;
|
|
191
|
+
alt = !alt;
|
|
192
|
+
}
|
|
193
|
+
return sum % 10 === 0;
|
|
194
|
+
}
|
|
195
|
+
function _scrubSecretsInString(value) {
|
|
196
|
+
if (value.length > MAX_STRING_SCRUB_CHARS) {
|
|
197
|
+
value = value.slice(0, MAX_STRING_SCRUB_CHARS);
|
|
198
|
+
}
|
|
199
|
+
let out = value;
|
|
200
|
+
try {
|
|
201
|
+
for (const {
|
|
202
|
+
pattern,
|
|
203
|
+
luhn
|
|
204
|
+
} of VALUE_SCRUB_PATTERNS) {
|
|
205
|
+
pattern.lastIndex = 0;
|
|
206
|
+
out = out.replace(pattern, (m) => luhn && !_luhnValid(m) ? m : REDACTED);
|
|
207
|
+
}
|
|
208
|
+
} catch {
|
|
209
|
+
}
|
|
210
|
+
return out;
|
|
211
|
+
}
|
|
173
212
|
function redactBody(body, maxDepth = 10) {
|
|
174
213
|
try {
|
|
175
214
|
return _redactValue(body, 0, maxDepth);
|
|
@@ -181,7 +220,7 @@ function _redactValue(value, depth, maxDepth) {
|
|
|
181
220
|
if (depth > maxDepth) return "[MAX_DEPTH]";
|
|
182
221
|
if (value === null || value === void 0) return value;
|
|
183
222
|
if (typeof value === "string") {
|
|
184
|
-
return value;
|
|
223
|
+
return _redactString(value, depth, maxDepth);
|
|
185
224
|
}
|
|
186
225
|
if (Array.isArray(value)) {
|
|
187
226
|
return value.map((item) => _redactValue(item, depth + 1, maxDepth));
|
|
@@ -189,7 +228,7 @@ function _redactValue(value, depth, maxDepth) {
|
|
|
189
228
|
if (typeof value === "object") {
|
|
190
229
|
const result = {};
|
|
191
230
|
for (const [key, val] of Object.entries(value)) {
|
|
192
|
-
if (
|
|
231
|
+
if (_isSensitiveKey(key)) {
|
|
193
232
|
result[key] = REDACTED;
|
|
194
233
|
} else {
|
|
195
234
|
result[key] = _redactValue(val, depth + 1, maxDepth);
|
|
@@ -199,52 +238,103 @@ function _redactValue(value, depth, maxDepth) {
|
|
|
199
238
|
}
|
|
200
239
|
return value;
|
|
201
240
|
}
|
|
202
|
-
function
|
|
203
|
-
const
|
|
241
|
+
function _redactString(value, depth, maxDepth) {
|
|
242
|
+
const trimmed = value.trimStart();
|
|
243
|
+
if (trimmed.startsWith("{") || trimmed.startsWith("[")) {
|
|
244
|
+
try {
|
|
245
|
+
const parsed = JSON.parse(value);
|
|
246
|
+
if (parsed !== null && typeof parsed === "object") {
|
|
247
|
+
const redacted = _redactValue(parsed, depth + 1, maxDepth);
|
|
248
|
+
return JSON.stringify(redacted);
|
|
249
|
+
}
|
|
250
|
+
} catch {
|
|
251
|
+
}
|
|
252
|
+
}
|
|
253
|
+
return _scrubSecretsInString(value);
|
|
254
|
+
}
|
|
255
|
+
function _newScanContext() {
|
|
256
|
+
return {
|
|
257
|
+
warnings: [],
|
|
258
|
+
byType: {},
|
|
259
|
+
deadline: Date.now() + SCAN_TIME_BUDGET_MS,
|
|
260
|
+
truncated: false,
|
|
261
|
+
total: 0
|
|
262
|
+
};
|
|
263
|
+
}
|
|
264
|
+
function _pushWarning(ctx, type, rawMatch, location) {
|
|
265
|
+
ctx.total += 1;
|
|
266
|
+
ctx.byType[type] = (ctx.byType[type] ?? 0) + 1;
|
|
267
|
+
if (ctx.warnings.length < MAX_PII_WARNINGS) {
|
|
268
|
+
ctx.warnings.push({
|
|
269
|
+
type,
|
|
270
|
+
match: _maskPII(rawMatch),
|
|
271
|
+
location
|
|
272
|
+
});
|
|
273
|
+
} else {
|
|
274
|
+
ctx.truncated = true;
|
|
275
|
+
}
|
|
276
|
+
}
|
|
277
|
+
function _finalizeScan(ctx) {
|
|
278
|
+
if (ctx.truncated) {
|
|
279
|
+
ctx.warnings.push({
|
|
280
|
+
type: "_summary",
|
|
281
|
+
match: `truncated: ${ctx.total} matches`,
|
|
282
|
+
location: `counts:${JSON.stringify(ctx.byType)}`
|
|
283
|
+
});
|
|
284
|
+
}
|
|
285
|
+
return ctx.warnings;
|
|
286
|
+
}
|
|
287
|
+
function _scanTextInto(text2, location, ctx) {
|
|
288
|
+
const input = text2.length > MAX_SCAN_INPUT_CHARS ? text2.slice(0, MAX_SCAN_INPUT_CHARS) : text2;
|
|
204
289
|
try {
|
|
205
290
|
for (const {
|
|
206
291
|
name,
|
|
207
292
|
pattern
|
|
208
293
|
} of PII_PATTERNS) {
|
|
209
294
|
pattern.lastIndex = 0;
|
|
210
|
-
let match = pattern.exec(
|
|
295
|
+
let match = pattern.exec(input);
|
|
211
296
|
while (match) {
|
|
212
|
-
|
|
213
|
-
|
|
214
|
-
|
|
215
|
-
|
|
216
|
-
}
|
|
217
|
-
match
|
|
297
|
+
_pushWarning(ctx, name, match[0], location);
|
|
298
|
+
if (Date.now() > ctx.deadline) {
|
|
299
|
+
ctx.truncated = true;
|
|
300
|
+
return;
|
|
301
|
+
}
|
|
302
|
+
if (pattern.lastIndex === match.index) pattern.lastIndex++;
|
|
303
|
+
match = pattern.exec(input);
|
|
218
304
|
}
|
|
219
305
|
}
|
|
220
306
|
} catch {
|
|
221
307
|
}
|
|
222
|
-
return warnings;
|
|
223
308
|
}
|
|
224
309
|
function scanObjectForPII(obj, basePath = "", maxDepth = 10) {
|
|
225
|
-
const
|
|
310
|
+
const ctx = _newScanContext();
|
|
226
311
|
try {
|
|
227
|
-
|
|
312
|
+
_scanObjectInto(obj, basePath, 0, maxDepth, ctx);
|
|
228
313
|
} catch {
|
|
229
314
|
}
|
|
230
|
-
return
|
|
315
|
+
return _finalizeScan(ctx);
|
|
231
316
|
}
|
|
232
|
-
function
|
|
317
|
+
function _scanObjectInto(value, path, depth, maxDepth, ctx) {
|
|
233
318
|
if (depth > maxDepth || value === null || value === void 0) return;
|
|
319
|
+
if (ctx.truncated || Date.now() > ctx.deadline) {
|
|
320
|
+
ctx.truncated = true;
|
|
321
|
+
return;
|
|
322
|
+
}
|
|
234
323
|
if (typeof value === "string") {
|
|
235
|
-
|
|
236
|
-
warnings.push(...found);
|
|
324
|
+
_scanTextInto(value, path, ctx);
|
|
237
325
|
return;
|
|
238
326
|
}
|
|
239
327
|
if (Array.isArray(value)) {
|
|
240
|
-
value.
|
|
241
|
-
|
|
242
|
-
|
|
328
|
+
for (let i = 0; i < value.length; i++) {
|
|
329
|
+
if (ctx.truncated) return;
|
|
330
|
+
_scanObjectInto(value[i], `${path}[${i}]`, depth + 1, maxDepth, ctx);
|
|
331
|
+
}
|
|
243
332
|
return;
|
|
244
333
|
}
|
|
245
334
|
if (typeof value === "object") {
|
|
246
335
|
for (const [key, val] of Object.entries(value)) {
|
|
247
|
-
|
|
336
|
+
if (ctx.truncated) return;
|
|
337
|
+
_scanObjectInto(val, path ? `${path}.${key}` : key, depth + 1, maxDepth, ctx);
|
|
248
338
|
}
|
|
249
339
|
}
|
|
250
340
|
}
|
|
@@ -267,16 +357,17 @@ function redactUrl(url) {
|
|
|
267
357
|
}
|
|
268
358
|
}
|
|
269
359
|
function redactNetworkEvent(event) {
|
|
270
|
-
const
|
|
360
|
+
const ctx = _newScanContext();
|
|
271
361
|
if (event.url) {
|
|
272
|
-
|
|
362
|
+
_scanTextInto(event.url, "url", ctx);
|
|
273
363
|
}
|
|
274
364
|
if (event.requestBody) {
|
|
275
|
-
|
|
365
|
+
_scanObjectInto(event.requestBody, "requestBody", 0, 10, ctx);
|
|
276
366
|
}
|
|
277
367
|
if (event.responseBody) {
|
|
278
|
-
|
|
368
|
+
_scanObjectInto(event.responseBody, "responseBody", 0, 10, ctx);
|
|
279
369
|
}
|
|
370
|
+
const piiWarnings = _finalizeScan(ctx);
|
|
280
371
|
return {
|
|
281
372
|
url: event.url ? redactUrl(event.url) : "",
|
|
282
373
|
method: event.method ?? "GET",
|
|
@@ -289,29 +380,54 @@ function redactNetworkEvent(event) {
|
|
|
289
380
|
piiWarnings
|
|
290
381
|
};
|
|
291
382
|
}
|
|
292
|
-
var REDACTED, SENSITIVE_HEADERS, PII_PATTERNS, SENSITIVE_BODY_KEYS;
|
|
383
|
+
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;
|
|
293
384
|
var init_redaction = __esm({
|
|
294
385
|
"lib/module/debug/redaction.js"() {
|
|
295
386
|
"use strict";
|
|
296
387
|
REDACTED = "[REDACTED]";
|
|
388
|
+
MAX_SCAN_INPUT_CHARS = 16 * 1024;
|
|
389
|
+
SCAN_TIME_BUDGET_MS = 10;
|
|
390
|
+
MAX_PII_WARNINGS = 20;
|
|
391
|
+
MAX_STRING_SCRUB_CHARS = 64 * 1024;
|
|
297
392
|
SENSITIVE_HEADERS = /* @__PURE__ */ new Set(["authorization", "cookie", "set-cookie", "x-api-key", "x-auth-token", "proxy-authorization"]);
|
|
298
393
|
PII_PATTERNS = [{
|
|
299
394
|
name: "email",
|
|
300
|
-
pattern: /[
|
|
395
|
+
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
|
|
301
396
|
}, {
|
|
302
397
|
name: "phone",
|
|
303
|
-
pattern:
|
|
398
|
+
pattern: /\+?\d{1,3}[-.\s]?\(?\d{2,4}\)?[-.\s]?\d{3,4}[-.\s]?\d{3,4}/g
|
|
304
399
|
}, {
|
|
305
400
|
name: "ssn",
|
|
306
401
|
pattern: /\b\d{3}-\d{2}-\d{4}\b/g
|
|
307
402
|
}, {
|
|
308
403
|
name: "credit_card",
|
|
309
404
|
pattern: /\b\d{4}[-\s]?\d{4}[-\s]?\d{4}[-\s]?\d{4}\b/g
|
|
405
|
+
}, {
|
|
406
|
+
name: "iban",
|
|
407
|
+
pattern: /\b[A-Z]{2}\d{2}[A-Z0-9]{10,30}\b/g
|
|
408
|
+
}, {
|
|
409
|
+
name: "jwt",
|
|
410
|
+
pattern: /\beyJ[A-Za-z0-9_-]{5,}\.[A-Za-z0-9_-]{5,}\.[A-Za-z0-9_-]{5,}\b/g
|
|
310
411
|
}, {
|
|
311
412
|
name: "ip_address",
|
|
312
413
|
pattern: /\b(?:\d{1,3}\.){3}\d{1,3}\b/g
|
|
313
414
|
}];
|
|
314
|
-
|
|
415
|
+
VALUE_SCRUB_PATTERNS = [{
|
|
416
|
+
name: "jwt",
|
|
417
|
+
pattern: /eyJ[A-Za-z0-9_-]{5,}\.[A-Za-z0-9_-]{5,}\.[A-Za-z0-9_-]{5,}/g
|
|
418
|
+
}, {
|
|
419
|
+
name: "email",
|
|
420
|
+
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
|
|
421
|
+
}, {
|
|
422
|
+
name: "iban",
|
|
423
|
+
pattern: /\b[A-Z]{2}\d{2}[A-Z0-9]{10,30}\b/g
|
|
424
|
+
}, {
|
|
425
|
+
name: "credit_card",
|
|
426
|
+
pattern: /\b\d{4}[-\s]?\d{4}[-\s]?\d{4}[-\s]?\d{2,7}\b/g,
|
|
427
|
+
luhn: true
|
|
428
|
+
}];
|
|
429
|
+
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"]);
|
|
430
|
+
NORMALIZED_SENSITIVE_KEYS = new Set(Array.from(SENSITIVE_BODY_KEYS, _normalizeKey));
|
|
315
431
|
}
|
|
316
432
|
});
|
|
317
433
|
|
|
@@ -489,7 +605,7 @@ var SDK_VERSION;
|
|
|
489
605
|
var init_version = __esm({
|
|
490
606
|
"lib/module/core/constants/version.js"() {
|
|
491
607
|
"use strict";
|
|
492
|
-
SDK_VERSION = "1.10.
|
|
608
|
+
SDK_VERSION = "1.10.6";
|
|
493
609
|
}
|
|
494
610
|
});
|
|
495
611
|
|
|
@@ -531,6 +647,15 @@ function staticDeviceContext() {
|
|
|
531
647
|
if (c.Model) out.device_model = String(c.Model);
|
|
532
648
|
if (c.Manufacturer) out.manufacturer = String(c.Manufacturer);
|
|
533
649
|
else if (c.Brand) out.manufacturer = String(c.Brand);
|
|
650
|
+
else if (out.platform_os === "ios") out.manufacturer = "Apple";
|
|
651
|
+
return out;
|
|
652
|
+
}
|
|
653
|
+
function nativeDeviceContext(info) {
|
|
654
|
+
const out = {};
|
|
655
|
+
if (!info) return out;
|
|
656
|
+
if (info.osVersion) out.os_version = info.osVersion;
|
|
657
|
+
if (info.deviceModel) out.device_model = info.deviceModel;
|
|
658
|
+
if (info.manufacturer) out.manufacturer = info.manufacturer;
|
|
534
659
|
return out;
|
|
535
660
|
}
|
|
536
661
|
function mergeDeviceContext(configured, detected = staticDeviceContext()) {
|
|
@@ -3336,12 +3461,22 @@ var init_AutoScreenDetector = __esm({
|
|
|
3336
3461
|
_manualScreen = null;
|
|
3337
3462
|
_manualScreenTs = 0;
|
|
3338
3463
|
_autoScreen = null;
|
|
3464
|
+
/** `name#key` of the last auto-detected screen VISIT — see _extractActiveVisit. */
|
|
3465
|
+
_autoVisitSig = null;
|
|
3339
3466
|
_navigationRef = null;
|
|
3340
3467
|
_navListenerRemover = null;
|
|
3341
3468
|
_navListenerWired = false;
|
|
3342
3469
|
_heuristicTimer = null;
|
|
3343
3470
|
_started = false;
|
|
3344
3471
|
_lastEmittedScreen = null;
|
|
3472
|
+
_lastEmittedTs = 0;
|
|
3473
|
+
/**
|
|
3474
|
+
* Cross-source emit dedup window — see _emitScreenChange. Long enough to absorb the manual
|
|
3475
|
+
* beacon and the navRef listener both reporting the SAME transition (they land within the
|
|
3476
|
+
* 30ms nav debounce plus a render), short enough that a genuine re-visit of the same route
|
|
3477
|
+
* a moment later is a new screen view rather than silence.
|
|
3478
|
+
*/
|
|
3479
|
+
static EMIT_DEDUP_WINDOW_MS = 800;
|
|
3345
3480
|
_navDebounceTimer = null;
|
|
3346
3481
|
/** Whether the React Navigation exports were actually replaced — see _autoHookReactNavigation. */
|
|
3347
3482
|
_autoHookInstalled = false;
|
|
@@ -3393,6 +3528,7 @@ var init_AutoScreenDetector = __esm({
|
|
|
3393
3528
|
if (this.isManualScreenActive()) return;
|
|
3394
3529
|
if (name !== this._autoScreen) {
|
|
3395
3530
|
this._autoScreen = name;
|
|
3531
|
+
this._autoVisitSig = name;
|
|
3396
3532
|
this._emitScreenChange(name, "heuristic");
|
|
3397
3533
|
}
|
|
3398
3534
|
} catch {
|
|
@@ -3443,10 +3579,11 @@ var init_AutoScreenDetector = __esm({
|
|
|
3443
3579
|
try {
|
|
3444
3580
|
const state = typeof container.getRootState === "function" ? container.getRootState() : null;
|
|
3445
3581
|
if (state) {
|
|
3446
|
-
const
|
|
3447
|
-
if (
|
|
3448
|
-
this._autoScreen =
|
|
3449
|
-
this.
|
|
3582
|
+
const visit = this._extractActiveVisit(state);
|
|
3583
|
+
if (visit && this._visitSig(visit) !== this._autoVisitSig) {
|
|
3584
|
+
this._autoScreen = visit.name;
|
|
3585
|
+
this._autoVisitSig = this._visitSig(visit);
|
|
3586
|
+
this._emitScreenChange(visit.name, "navRef");
|
|
3450
3587
|
}
|
|
3451
3588
|
}
|
|
3452
3589
|
} catch {
|
|
@@ -3460,10 +3597,11 @@ var init_AutoScreenDetector = __esm({
|
|
|
3460
3597
|
if (typeof container.getRootState === "function") {
|
|
3461
3598
|
const state = container.getRootState();
|
|
3462
3599
|
if (state) {
|
|
3463
|
-
const
|
|
3464
|
-
if (
|
|
3465
|
-
this._autoScreen =
|
|
3466
|
-
this.
|
|
3600
|
+
const visit = this._extractActiveVisit(state);
|
|
3601
|
+
if (visit) {
|
|
3602
|
+
this._autoScreen = visit.name;
|
|
3603
|
+
this._autoVisitSig = this._visitSig(visit);
|
|
3604
|
+
this._emitScreenChange(visit.name, "navRef");
|
|
3467
3605
|
}
|
|
3468
3606
|
}
|
|
3469
3607
|
}
|
|
@@ -3489,10 +3627,11 @@ var init_AutoScreenDetector = __esm({
|
|
|
3489
3627
|
if (navContainer) {
|
|
3490
3628
|
const state = typeof navContainer.getRootState === "function" ? navContainer.getRootState() : null;
|
|
3491
3629
|
if (state) {
|
|
3492
|
-
const
|
|
3493
|
-
if (
|
|
3494
|
-
this._autoScreen =
|
|
3495
|
-
this.
|
|
3630
|
+
const visit = this._extractActiveVisit(state);
|
|
3631
|
+
if (visit && this._visitSig(visit) !== this._autoVisitSig) {
|
|
3632
|
+
this._autoScreen = visit.name;
|
|
3633
|
+
this._autoVisitSig = this._visitSig(visit);
|
|
3634
|
+
this._emitScreenChange(visit.name, "heuristic");
|
|
3496
3635
|
}
|
|
3497
3636
|
}
|
|
3498
3637
|
}
|
|
@@ -3524,19 +3663,43 @@ var init_AutoScreenDetector = __esm({
|
|
|
3524
3663
|
* Handles nested navigators by walking to the deepest active route.
|
|
3525
3664
|
*/
|
|
3526
3665
|
_extractActiveRoute(state) {
|
|
3666
|
+
return this._extractActiveVisit(state)?.name ?? null;
|
|
3667
|
+
}
|
|
3668
|
+
/**
|
|
3669
|
+
* Extract the active route's name AND its React Navigation route `key`.
|
|
3670
|
+
*
|
|
3671
|
+
* The key is what makes re-VISITS detectable. Comparing names alone collapses two
|
|
3672
|
+
* different visits to the same route into one screen view: leave Details, open Details
|
|
3673
|
+
* again, and `name === _autoScreen` swallowed the second visit entirely (QA: "opened the
|
|
3674
|
+
* same route again and no screen event was recorded"). React Navigation mints a fresh
|
|
3675
|
+
* `key` for every pushed route instance, so a re-push of the same name is a NEW key —
|
|
3676
|
+
* name+key comparison records each visit while a mere re-render of the same instance
|
|
3677
|
+
* (same key) still emits nothing. States without keys degrade to name-only, i.e. the
|
|
3678
|
+
* old behaviour, never worse.
|
|
3679
|
+
*/
|
|
3680
|
+
_extractActiveVisit(state) {
|
|
3527
3681
|
try {
|
|
3528
3682
|
if (!state?.routes || typeof state.index !== "number") return null;
|
|
3529
3683
|
const activeRoute = state.routes[state.index];
|
|
3530
3684
|
if (!activeRoute) return null;
|
|
3531
3685
|
if (activeRoute.state?.routes && typeof activeRoute.state.index === "number") {
|
|
3532
|
-
const nested = this.
|
|
3686
|
+
const nested = this._extractActiveVisit(activeRoute.state);
|
|
3533
3687
|
if (nested) return nested;
|
|
3534
3688
|
}
|
|
3535
|
-
|
|
3689
|
+
if (!activeRoute.name) return null;
|
|
3690
|
+
const rawKey = activeRoute.key;
|
|
3691
|
+
return {
|
|
3692
|
+
name: activeRoute.name,
|
|
3693
|
+
key: typeof rawKey === "string" ? rawKey : null
|
|
3694
|
+
};
|
|
3536
3695
|
} catch {
|
|
3537
3696
|
return null;
|
|
3538
3697
|
}
|
|
3539
3698
|
}
|
|
3699
|
+
/** `name#key` signature of one screen VISIT — what the auto paths dedup on. */
|
|
3700
|
+
_visitSig(visit) {
|
|
3701
|
+
return visit.key ? `${visit.name}#${visit.key}` : visit.name;
|
|
3702
|
+
}
|
|
3540
3703
|
// ─── Lifecycle ──────────────────────────────────────────────────────
|
|
3541
3704
|
/** Start auto-detection (idempotent) */
|
|
3542
3705
|
start() {
|
|
@@ -3701,8 +3864,10 @@ var init_AutoScreenDetector = __esm({
|
|
|
3701
3864
|
// ─── Internal ───────────────────────────────────────────────────────
|
|
3702
3865
|
_emitScreenChange(name, source) {
|
|
3703
3866
|
try {
|
|
3704
|
-
|
|
3867
|
+
const emitNow = Date.now();
|
|
3868
|
+
if (name === this._lastEmittedScreen && emitNow - this._lastEmittedTs < _AutoScreenDetector.EMIT_DEDUP_WINDOW_MS) return;
|
|
3705
3869
|
this._lastEmittedScreen = name;
|
|
3870
|
+
this._lastEmittedTs = emitNow;
|
|
3706
3871
|
for (const cb of this._listeners) {
|
|
3707
3872
|
try {
|
|
3708
3873
|
cb(name, source);
|
|
@@ -5587,6 +5752,21 @@ var init_SessionManager = __esm({
|
|
|
5587
5752
|
* differently across devices and pushes markers ~10% off vertically).
|
|
5588
5753
|
*/
|
|
5589
5754
|
_lastNativeViewportJsUnits = null;
|
|
5755
|
+
/**
|
|
5756
|
+
* Exact-duplicate gesture suppression (QA: one physical tap recorded 2–3×).
|
|
5757
|
+
*
|
|
5758
|
+
* Measured in production data: the native tracker re-emitted the SAME tap — identical
|
|
5759
|
+
* gestureType and identical coordinates to the SUB-PIXEL (e.g. x=466.962890625) — at
|
|
5760
|
+
* 160–240ms gaps, sometimes twice. A human re-tap cannot reproduce a sub-pixel float
|
|
5761
|
+
* exactly, so exact coordinate equality within the window is a safe discriminator: real
|
|
5762
|
+
* double-taps land on at least slightly different pixels and pass through untouched.
|
|
5763
|
+
* The pipeline's own 100ms dedup was too narrow for these; this window covers what was
|
|
5764
|
+
* actually observed with margin. Sits at the ONE entry point every gesture source funnels
|
|
5765
|
+
* through, so recording and analytics lanes are protected equally.
|
|
5766
|
+
*/
|
|
5767
|
+
_lastGestureSig = null;
|
|
5768
|
+
_lastGestureTs = 0;
|
|
5769
|
+
static GESTURE_DEDUP_WINDOW_MS = 400;
|
|
5590
5770
|
/** Memoized native file-outbox frame adapter (gated by the backend transport). */
|
|
5591
5771
|
_outboxFrameCapture = null;
|
|
5592
5772
|
constructor(debugTransport, nativeCapture2, managerConfig) {
|
|
@@ -6235,6 +6415,14 @@ var init_SessionManager = __esm({
|
|
|
6235
6415
|
* Emits a USER_ACTION event with gesture-specific subtype and payload.
|
|
6236
6416
|
*/
|
|
6237
6417
|
onGestureDetected(gestureType, details) {
|
|
6418
|
+
const dedupSig = `${gestureType}|${String(details?.x)}|${String(details?.y)}|${String(details?.endX)}|${String(details?.endY)}`;
|
|
6419
|
+
const nowTs = Date.now();
|
|
6420
|
+
if (dedupSig === this._lastGestureSig && nowTs - this._lastGestureTs <= _SessionManager.GESTURE_DEDUP_WINDOW_MS) {
|
|
6421
|
+
this._lastGestureTs = nowTs;
|
|
6422
|
+
return;
|
|
6423
|
+
}
|
|
6424
|
+
this._lastGestureSig = dedupSig;
|
|
6425
|
+
this._lastGestureTs = nowTs;
|
|
6238
6426
|
const payload = {
|
|
6239
6427
|
gestureType,
|
|
6240
6428
|
x: details?.x,
|
|
@@ -11053,6 +11241,27 @@ var init_EventTracker = __esm({
|
|
|
11053
11241
|
}
|
|
11054
11242
|
this.persistQueue();
|
|
11055
11243
|
}
|
|
11244
|
+
/**
|
|
11245
|
+
* Fold in device facts that were not knowable at init.
|
|
11246
|
+
*
|
|
11247
|
+
* `Platform.constants` answers Android synchronously, so its model and manufacturer ride the
|
|
11248
|
+
* very first event. iOS exposes neither there — only the native bridge knows, and the bridge is
|
|
11249
|
+
* async and may not be installed at all. Without this the iOS half of every install reported no
|
|
11250
|
+
* model whatsoever.
|
|
11251
|
+
*
|
|
11252
|
+
* `buildEnvelope` reads `cfg.context` per event, so applying it here reaches every event from
|
|
11253
|
+
* the next one onward. Detected keys WIN over whatever the integrator configured, for the same
|
|
11254
|
+
* reason `mergeDeviceContext` inverts the usual precedence: a measurement must not be
|
|
11255
|
+
* overridable by a guess. Empty patches are ignored so a bridge that answered with nothing
|
|
11256
|
+
* cannot blank a value the static path already found.
|
|
11257
|
+
*/
|
|
11258
|
+
applyDetectedContext(patch) {
|
|
11259
|
+
if (!patch || Object.keys(patch).length === 0) return;
|
|
11260
|
+
this.cfg.context = {
|
|
11261
|
+
...this.cfg.context ?? {},
|
|
11262
|
+
...patch
|
|
11263
|
+
};
|
|
11264
|
+
}
|
|
11056
11265
|
// ─── internals ─────────────────────────────────────────────────────────────
|
|
11057
11266
|
buildEnvelope(eventName, properties) {
|
|
11058
11267
|
const ctx = this.cfg.context ?? {};
|
|
@@ -14145,6 +14354,35 @@ var SHAPE = {
|
|
|
14145
14354
|
})
|
|
14146
14355
|
}
|
|
14147
14356
|
},
|
|
14357
|
+
// SB-10: the public, documented top-level privacy config. Previously only the
|
|
14358
|
+
// nested replay privacy took effect; this is validated here and mapped onto the
|
|
14359
|
+
// effective replay privacy policy in the bootstrapper so it actually masks.
|
|
14360
|
+
privacy: {
|
|
14361
|
+
kind: "obj",
|
|
14362
|
+
opt: true,
|
|
14363
|
+
shape: {
|
|
14364
|
+
maskTextInputs: {
|
|
14365
|
+
kind: "bool",
|
|
14366
|
+
opt: true
|
|
14367
|
+
},
|
|
14368
|
+
maskImages: {
|
|
14369
|
+
kind: "bool",
|
|
14370
|
+
opt: true
|
|
14371
|
+
},
|
|
14372
|
+
redactAuth: {
|
|
14373
|
+
kind: "bool",
|
|
14374
|
+
opt: true
|
|
14375
|
+
},
|
|
14376
|
+
redactCookies: {
|
|
14377
|
+
kind: "bool",
|
|
14378
|
+
opt: true
|
|
14379
|
+
},
|
|
14380
|
+
redactBodies: {
|
|
14381
|
+
kind: "bool",
|
|
14382
|
+
opt: true
|
|
14383
|
+
}
|
|
14384
|
+
}
|
|
14385
|
+
},
|
|
14148
14386
|
captureInteractionHeatmap: bool(true),
|
|
14149
14387
|
// Opt-in: intercept console.* and ship the lines to the Diagnose → Logs lane in SaaS
|
|
14150
14388
|
// mode. OFF by default — console output can carry PII/secrets and adds ingest volume,
|
|
@@ -15498,6 +15736,13 @@ var BackendSessionAdapter = class _BackendSessionAdapter {
|
|
|
15498
15736
|
// the flush timer retries, so nothing is lost to a start/child race. The durable native
|
|
15499
15737
|
// outbox path has its own ordering; this guards only the JS in-memory fallback.
|
|
15500
15738
|
_startedSessionIds = /* @__PURE__ */ new Set();
|
|
15739
|
+
// §11 offline-start recovery: INGESTION_START payloads whose POST failed (e.g. the app
|
|
15740
|
+
// launched with no connectivity). Without this, a failed START was logged and forgotten —
|
|
15741
|
+
// the row-ready gate never opened, every child lane re-buffered forever, and the session
|
|
15742
|
+
// stayed stuck until an app restart even after the network returned. Each flush tick
|
|
15743
|
+
// re-attempts these until acked (network errors keep retrying; permanent 4xx gives up).
|
|
15744
|
+
_pendingStartPayloads = /* @__PURE__ */ new Map();
|
|
15745
|
+
_startRetryInFlight = false;
|
|
15501
15746
|
pendingFrames = [];
|
|
15502
15747
|
pendingEvents = [];
|
|
15503
15748
|
pendingNetworkRequests = [];
|
|
@@ -15621,10 +15866,16 @@ var BackendSessionAdapter = class _BackendSessionAdapter {
|
|
|
15621
15866
|
}
|
|
15622
15867
|
};
|
|
15623
15868
|
__DEV__ && logger.debug(`[BackendSessionAdapter] POST session start: ${session.sessionId}`);
|
|
15624
|
-
return this._post(startEndpoint, payload)
|
|
15625
|
-
|
|
15626
|
-
|
|
15627
|
-
|
|
15869
|
+
return this._post(startEndpoint, payload).then(() => {
|
|
15870
|
+
this._startedSessionIds.add(session.sessionId);
|
|
15871
|
+
this._pendingStartPayloads.delete(session.sessionId);
|
|
15872
|
+
__DEV__ && logger.info(`[ScaleBun Replay] backend session upload success`);
|
|
15873
|
+
}, (err) => {
|
|
15874
|
+
if (!_BackendSessionAdapter._isPermanentHttpError(err)) {
|
|
15875
|
+
this._pendingStartPayloads.set(session.sessionId, payload);
|
|
15876
|
+
}
|
|
15877
|
+
logger.info(`[ScaleBun Replay] backend session upload failure`);
|
|
15878
|
+
});
|
|
15628
15879
|
}).catch(() => logger.info(`[ScaleBun Replay] backend session upload failure`));
|
|
15629
15880
|
}
|
|
15630
15881
|
sendSessionEnd(session) {
|
|
@@ -15697,8 +15948,16 @@ var BackendSessionAdapter = class _BackendSessionAdapter {
|
|
|
15697
15948
|
environment: m?.buildType
|
|
15698
15949
|
}
|
|
15699
15950
|
};
|
|
15700
|
-
|
|
15951
|
+
try {
|
|
15952
|
+
await this._post(startEndpoint, payload);
|
|
15953
|
+
} catch (err) {
|
|
15954
|
+
if (!_BackendSessionAdapter._isPermanentHttpError(err)) {
|
|
15955
|
+
this._pendingStartPayloads.set(session.sessionId, payload);
|
|
15956
|
+
}
|
|
15957
|
+
throw err;
|
|
15958
|
+
}
|
|
15701
15959
|
this._startedSessionIds.add(session.sessionId);
|
|
15960
|
+
this._pendingStartPayloads.delete(session.sessionId);
|
|
15702
15961
|
this._flushAnalyticsEvents().catch(() => {
|
|
15703
15962
|
});
|
|
15704
15963
|
__DEV__ && logger.info(`[ScaleBun Analytics] session start upload success: ${session.sessionId}`);
|
|
@@ -15706,6 +15965,40 @@ var BackendSessionAdapter = class _BackendSessionAdapter {
|
|
|
15706
15965
|
__DEV__ && logger.info(`[ScaleBun Analytics] session start upload failure`);
|
|
15707
15966
|
}
|
|
15708
15967
|
}
|
|
15968
|
+
/**
|
|
15969
|
+
* Re-attempt any INGESTION_START whose POST failed (offline app launch). Runs on every
|
|
15970
|
+
* flush tick of BOTH lanes — cheap no-op when the map is empty, single-flight guarded.
|
|
15971
|
+
* On ack: opens the row-ready gate and drains whichever lane the id belongs to, which is
|
|
15972
|
+
* exactly what un-sticks a replay that started offline once connectivity returns.
|
|
15973
|
+
*/
|
|
15974
|
+
_retryPendingStarts() {
|
|
15975
|
+
if (this.destroyed || this._startRetryInFlight || this._pendingStartPayloads.size === 0) return;
|
|
15976
|
+
const entry = this._pendingStartPayloads.entries().next().value;
|
|
15977
|
+
if (!entry) return;
|
|
15978
|
+
const [sessionId, payload] = entry;
|
|
15979
|
+
const stillRelevant = sessionId === this.currentSessionId || sessionId === this._analyticsSessionId;
|
|
15980
|
+
if (!stillRelevant) {
|
|
15981
|
+
this._pendingStartPayloads.delete(sessionId);
|
|
15982
|
+
return;
|
|
15983
|
+
}
|
|
15984
|
+
this._startRetryInFlight = true;
|
|
15985
|
+
const startEndpoint = this.config.clientKey ? ENDPOINTS.INGESTION_START : "/replay/sessions";
|
|
15986
|
+
this._post(startEndpoint, payload).then(() => {
|
|
15987
|
+
this._startedSessionIds.add(sessionId);
|
|
15988
|
+
this._pendingStartPayloads.delete(sessionId);
|
|
15989
|
+
__DEV__ && logger.info(`[ScaleBun Replay] deferred session start delivered: ${sessionId}`);
|
|
15990
|
+
if (sessionId === this._analyticsSessionId) {
|
|
15991
|
+
this._flushAnalyticsEvents().catch(() => {
|
|
15992
|
+
});
|
|
15993
|
+
}
|
|
15994
|
+
}).catch((err) => {
|
|
15995
|
+
if (_BackendSessionAdapter._isPermanentHttpError(err)) {
|
|
15996
|
+
this._pendingStartPayloads.delete(sessionId);
|
|
15997
|
+
}
|
|
15998
|
+
}).finally(() => {
|
|
15999
|
+
this._startRetryInFlight = false;
|
|
16000
|
+
});
|
|
16001
|
+
}
|
|
15709
16002
|
/**
|
|
15710
16003
|
* Enqueue a user track() event. Buffers (bounded, drop-oldest) when the
|
|
15711
16004
|
* analytics session is not yet open; flushes at >=20 once it is.
|
|
@@ -15820,6 +16113,7 @@ var BackendSessionAdapter = class _BackendSessionAdapter {
|
|
|
15820
16113
|
_startAnalyticsFlushTimer() {
|
|
15821
16114
|
this._stopAnalyticsFlushTimer();
|
|
15822
16115
|
this.analyticsFlushTimer = setInterval(() => {
|
|
16116
|
+
this._retryPendingStarts();
|
|
15823
16117
|
this._flushAnalyticsEvents().catch(() => {
|
|
15824
16118
|
});
|
|
15825
16119
|
}, this.config.flushIntervalMs);
|
|
@@ -16046,6 +16340,7 @@ var BackendSessionAdapter = class _BackendSessionAdapter {
|
|
|
16046
16340
|
this._analyticsSessionId = null;
|
|
16047
16341
|
this._pendingFinalizeId = null;
|
|
16048
16342
|
this._startedSessionIds.clear();
|
|
16343
|
+
this._pendingStartPayloads.clear();
|
|
16049
16344
|
}
|
|
16050
16345
|
// ─── Internal: Flush ────────────────────────────────────────────────
|
|
16051
16346
|
/** Wire metadata for a frame — real format/sizeBytes from native (no hardcoded literals). */
|
|
@@ -16564,6 +16859,7 @@ var BackendSessionAdapter = class _BackendSessionAdapter {
|
|
|
16564
16859
|
_startFlushTimer() {
|
|
16565
16860
|
this._stopFlushTimer();
|
|
16566
16861
|
this.flushTimer = setInterval(() => {
|
|
16862
|
+
this._retryPendingStarts();
|
|
16567
16863
|
this._flushFrames().catch(() => {
|
|
16568
16864
|
});
|
|
16569
16865
|
this._flushEvents().catch(() => {
|
|
@@ -16894,6 +17190,18 @@ var SDKBootstrapper = class {
|
|
|
16894
17190
|
if (features.replay !== false) {
|
|
16895
17191
|
try {
|
|
16896
17192
|
__DEV__ && logger.debug("[Bootstrap] Initializing unified SessionManager");
|
|
17193
|
+
const pub = this.config.privacy ?? {};
|
|
17194
|
+
const sessionReplay = {
|
|
17195
|
+
...this.config.replay ?? {}
|
|
17196
|
+
};
|
|
17197
|
+
if (typeof pub.maskTextInputs === "boolean" || typeof pub.maskImages === "boolean") {
|
|
17198
|
+
sessionReplay.privacyPolicy = {
|
|
17199
|
+
redactTextInputs: pub.maskTextInputs ?? true,
|
|
17200
|
+
redactImages: pub.maskImages ?? false,
|
|
17201
|
+
blockTestIds: [],
|
|
17202
|
+
captureExclusions: []
|
|
17203
|
+
};
|
|
17204
|
+
}
|
|
16897
17205
|
const sessionManager = SessionManager.getInstance(
|
|
16898
17206
|
null,
|
|
16899
17207
|
// No desktop transport initially
|
|
@@ -16904,9 +17212,7 @@ var SDKBootstrapper = class {
|
|
|
16904
17212
|
// Also flow the Feature #4 heatmap flag so tap/gesture coords
|
|
16905
17213
|
// route to the analytics lane even when no recording is active.
|
|
16906
17214
|
{
|
|
16907
|
-
|
|
16908
|
-
sessionReplay: this.config.replay
|
|
16909
|
-
} : {},
|
|
17215
|
+
sessionReplay,
|
|
16910
17216
|
captureInteractionHeatmap: this.config.captureInteractionHeatmap === true
|
|
16911
17217
|
}
|
|
16912
17218
|
);
|
|
@@ -17132,6 +17438,7 @@ var SDKBootstrapper = class {
|
|
|
17132
17438
|
|
|
17133
17439
|
// lib/module/public/ScaleBunFacade.js
|
|
17134
17440
|
init_EventTracker();
|
|
17441
|
+
init_bridgeAdapter();
|
|
17135
17442
|
init_automaticEvents();
|
|
17136
17443
|
|
|
17137
17444
|
// lib/module/analytics/eventLane.js
|
|
@@ -19649,6 +19956,8 @@ var ScaleBunFacade = class {
|
|
|
19649
19956
|
* the whole time. The SDK knows the device; the integrator is guessing at it.
|
|
19650
19957
|
* Everything outside the detected keys is still theirs.
|
|
19651
19958
|
*/
|
|
19959
|
+
// Everything Platform.constants knows. On iOS that is neither the model nor the
|
|
19960
|
+
// manufacturer, so the bridge completes it below once it answers.
|
|
19652
19961
|
context: mergeDeviceContext(rawConfig?.context),
|
|
19653
19962
|
// Use the same foreground id as replay/journey capture. The
|
|
19654
19963
|
// callback is resolved per event because the session subsystem
|
|
@@ -19662,6 +19971,7 @@ var ScaleBunFacade = class {
|
|
|
19662
19971
|
});
|
|
19663
19972
|
this._eventTracker.start();
|
|
19664
19973
|
__DEV__ && logger.info("[ScaleBun] Envelope event tracking started \u2192 /v1/batch.");
|
|
19974
|
+
this._applyNativeDeviceContext(this._eventTracker);
|
|
19665
19975
|
this._captureInstallReferrer(this._eventTracker);
|
|
19666
19976
|
const tracker = this._eventTracker;
|
|
19667
19977
|
this._configManager = new ConfigManager({
|
|
@@ -19680,6 +19990,25 @@ var ScaleBunFacade = class {
|
|
|
19680
19990
|
logger.warn("[ScaleBun] Failed to start envelope event tracking:", err?.message);
|
|
19681
19991
|
}
|
|
19682
19992
|
}
|
|
19993
|
+
/**
|
|
19994
|
+
* Fold the native bridge's device facts into the analytics context once it answers.
|
|
19995
|
+
*
|
|
19996
|
+
* Detected values never overwrite a populated one with an empty one — `nativeDeviceContext`
|
|
19997
|
+
* drops absent keys and `applyDetectedContext` ignores an empty patch — so a bridge that
|
|
19998
|
+
* cannot answer leaves whatever `Platform.constants` already found.
|
|
19999
|
+
*/
|
|
20000
|
+
_applyNativeDeviceContext(tracker) {
|
|
20001
|
+
Promise.resolve().then(() => bridgeAdapter.getDeviceInfo()).then((info) => {
|
|
20002
|
+
if (!info) return;
|
|
20003
|
+
tracker.applyDetectedContext(nativeDeviceContext({
|
|
20004
|
+
osVersion: info.osVersion,
|
|
20005
|
+
deviceModel: info.deviceModel
|
|
20006
|
+
// iOS ships no manufacturer over the bridge; it is a constant there and the
|
|
20007
|
+
// static path already set it. Android's arrives via Platform.constants.
|
|
20008
|
+
}));
|
|
20009
|
+
}).catch(() => {
|
|
20010
|
+
});
|
|
20011
|
+
}
|
|
19683
20012
|
/**
|
|
19684
20013
|
* Android-only: read the Play Install Referrer once per install and route it into
|
|
19685
20014
|
* attribution. `scalebun_click_id` → the deterministic click path; the full
|
|
@@ -19863,16 +20192,90 @@ var ScaleBunFacade = class {
|
|
|
19863
20192
|
});
|
|
19864
20193
|
});
|
|
19865
20194
|
}
|
|
19866
|
-
/**
|
|
19867
|
-
|
|
20195
|
+
/**
|
|
20196
|
+
* Clear user identity.
|
|
20197
|
+
*
|
|
20198
|
+
* SB-11: pass `{ purgeLocal: true }` on logout / consent withdrawal to also
|
|
20199
|
+
* erase all locally-stored SDK data (see {@link eraseLocalData}). Without it,
|
|
20200
|
+
* behaviour is unchanged (identity-only clear).
|
|
20201
|
+
*/
|
|
20202
|
+
clearUser(options) {
|
|
19868
20203
|
return noThrow(() => {
|
|
19869
20204
|
this._identifiedUserId = null;
|
|
19870
20205
|
this._pendingIdentity = null;
|
|
19871
20206
|
if (!this.initialized) return;
|
|
19872
20207
|
this._eventTracker?.clearIdentity();
|
|
19873
20208
|
this.track("$clear_user", {});
|
|
20209
|
+
if (options?.purgeLocal) void this.eraseLocalData();
|
|
20210
|
+
});
|
|
20211
|
+
}
|
|
20212
|
+
/**
|
|
20213
|
+
* SB-11: erase all locally-stored SDK data from the device — the durable event
|
|
20214
|
+
* queue, the pre-init buffer, and the first-party KV store (cached install /
|
|
20215
|
+
* anonymous / session IDs, plus any queued payloads including SB-26 disk data).
|
|
20216
|
+
*
|
|
20217
|
+
* Order matters: capture is stopped FIRST so nothing is written back in behind
|
|
20218
|
+
* the delete. Best-effort and never throws.
|
|
20219
|
+
*
|
|
20220
|
+
* Note: native replay frames written to disk on iOS are addressed separately
|
|
20221
|
+
* (SB-15); this covers every store reachable from JS today.
|
|
20222
|
+
*/
|
|
20223
|
+
async eraseLocalData() {
|
|
20224
|
+
try {
|
|
20225
|
+
try {
|
|
20226
|
+
SessionManager.getExistingInstance()?.endSession("ended");
|
|
20227
|
+
} catch {
|
|
20228
|
+
}
|
|
20229
|
+
try {
|
|
20230
|
+
this._getQueue().clear();
|
|
20231
|
+
} catch {
|
|
20232
|
+
}
|
|
20233
|
+
try {
|
|
20234
|
+
this._preInitBuffer.clear();
|
|
20235
|
+
} catch {
|
|
20236
|
+
}
|
|
20237
|
+
try {
|
|
20238
|
+
const store = createStorageBackend();
|
|
20239
|
+
for (const key of store.getAllKeys()) {
|
|
20240
|
+
store.delete(key);
|
|
20241
|
+
}
|
|
20242
|
+
} catch {
|
|
20243
|
+
}
|
|
20244
|
+
} catch {
|
|
20245
|
+
}
|
|
20246
|
+
}
|
|
20247
|
+
/**
|
|
20248
|
+
* SB-11: record the user's data-collection consent. When `enabled` is false,
|
|
20249
|
+
* capture is stopped immediately; pass `{ purgeLocal: true }` to also erase
|
|
20250
|
+
* everything already stored locally. Never throws.
|
|
20251
|
+
*/
|
|
20252
|
+
setConsent(enabled, options) {
|
|
20253
|
+
noThrow(() => {
|
|
20254
|
+
if (enabled) return;
|
|
20255
|
+
try {
|
|
20256
|
+
SessionManager.getExistingInstance()?.endSession("ended");
|
|
20257
|
+
} catch {
|
|
20258
|
+
}
|
|
20259
|
+
if (options?.purgeLocal) void this.eraseLocalData();
|
|
19874
20260
|
});
|
|
19875
20261
|
}
|
|
20262
|
+
/**
|
|
20263
|
+
* SB-10: return the effective privacy policy actually in force, resolving the
|
|
20264
|
+
* public config against the SDK's safe defaults. Lets callers and tests assert
|
|
20265
|
+
* what is active rather than guessing from the (previously dead) config object.
|
|
20266
|
+
*/
|
|
20267
|
+
getEffectivePrivacyPolicy() {
|
|
20268
|
+
const p = this._privacyConfig ?? {};
|
|
20269
|
+
return {
|
|
20270
|
+
// Real default is true (matches the replay capture default) — the old
|
|
20271
|
+
// doc comment claiming "false" was both wrong and less safe.
|
|
20272
|
+
maskTextInputs: p.maskTextInputs ?? true,
|
|
20273
|
+
maskImages: p.maskImages ?? false,
|
|
20274
|
+
redactAuth: p.redactAuth ?? true,
|
|
20275
|
+
redactCookies: p.redactCookies ?? true,
|
|
20276
|
+
redactBodies: p.redactBodies ?? false
|
|
20277
|
+
};
|
|
20278
|
+
}
|
|
19876
20279
|
/**
|
|
19877
20280
|
* Submit in-app rating (1-5 stars).
|
|
19878
20281
|
* Attaches to current session when available; otherwise sends standalone.
|
|
@@ -32953,7 +33356,7 @@ function ScaleBunDebugRoot({
|
|
|
32953
33356
|
}
|
|
32954
33357
|
} catch {
|
|
32955
33358
|
}
|
|
32956
|
-
},
|
|
33359
|
+
}, 600);
|
|
32957
33360
|
}
|
|
32958
33361
|
touchStartRef.current = null;
|
|
32959
33362
|
} catch {
|