@scalebun/react-native 1.0.3 → 1.1.0
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/android/src/main/java/com/scalebun/core/crash/CrashStorage.kt +115 -1
- package/android/src/main/java/com/scalebun/core/crash/NativeCrashHandler.kt +14 -0
- package/android/src/main/java/com/scalebun/replaysdk/ReplaySdkModule.kt +25 -9
- package/android/src/main/java/com/scalebun/replaysdk/voice/VoiceTranscriber.kt +68 -2
- package/android/src/main/java/com/scalebun/rn/crash/ScaleBunCrashModule.kt +66 -2
- package/android/src/main/java/com/scalebun/rn/ota/SlotManager.kt +70 -4
- package/ios/Crash/ScaleBunCrashBridge.mm +6 -0
- package/ios/Crash/ScaleBunCrashHandler.swift +14 -1
- package/ios/Crash/ScaleBunCrashModule.swift +14 -0
- package/ios/Crash/ScaleBunCrashSignalBridge.h +32 -1
- package/ios/Crash/ScaleBunCrashSignalBridge.m +172 -7
- package/ios/Crash/ScaleBunCrashSignalStress.c +137 -0
- package/ios/Crash/ScaleBunCrashStorage.swift +75 -0
- package/lib/commonjs/analytics/EventTracker.js +30 -2
- package/lib/commonjs/analytics/EventTracker.js.map +1 -1
- package/lib/commonjs/bootstrap/SDKBootstrapper.js +31 -23
- package/lib/commonjs/bootstrap/SDKBootstrapper.js.map +1 -1
- package/lib/commonjs/compat/codepush.js +78 -15
- package/lib/commonjs/compat/codepush.js.map +1 -1
- package/lib/commonjs/core/config/schema.js +26 -5
- package/lib/commonjs/core/config/schema.js.map +1 -1
- package/lib/commonjs/core/constants/endpoints.js +9 -6
- package/lib/commonjs/core/constants/endpoints.js.map +1 -1
- package/lib/commonjs/core/context/device.js +130 -0
- package/lib/commonjs/core/context/device.js.map +1 -1
- package/lib/commonjs/debug/replayWiring.js +2 -1
- package/lib/commonjs/debug/replayWiring.js.map +1 -1
- package/lib/commonjs/features/bugreport/BugReportFeature.js +112 -0
- package/lib/commonjs/features/bugreport/BugReportFeature.js.map +1 -0
- package/lib/commonjs/features/bugreport/buildPayload.js +97 -0
- package/lib/commonjs/features/bugreport/buildPayload.js.map +1 -0
- package/lib/commonjs/features/crash/CrashReporter.js +25 -1
- package/lib/commonjs/features/crash/CrashReporter.js.map +1 -1
- package/lib/commonjs/features/crash/capture.js +27 -9
- package/lib/commonjs/features/crash/capture.js.map +1 -1
- package/lib/commonjs/features/crash/nativeCrashBridge.js +163 -28
- package/lib/commonjs/features/crash/nativeCrashBridge.js.map +1 -1
- package/lib/commonjs/features/engage/EngagePromptProvider.js +36 -2
- package/lib/commonjs/features/engage/EngagePromptProvider.js.map +1 -1
- package/lib/commonjs/features/engage/EngagePromptView.js +47 -14
- package/lib/commonjs/features/engage/EngagePromptView.js.map +1 -1
- package/lib/commonjs/features/engage/engageTriggerEngine.js +10 -0
- package/lib/commonjs/features/engage/engageTriggerEngine.js.map +1 -1
- package/lib/commonjs/features/engage/engageTypes.js.map +1 -1
- package/lib/commonjs/features/journey/ScaleBunDebugRoot.js +2 -1
- package/lib/commonjs/features/journey/ScaleBunDebugRoot.js.map +1 -1
- package/lib/commonjs/features/ota/OtaOrchestrator.js +72 -5
- package/lib/commonjs/features/ota/OtaOrchestrator.js.map +1 -1
- package/lib/commonjs/features/ota/deviceAttributes.js +48 -0
- package/lib/commonjs/features/ota/deviceAttributes.js.map +1 -0
- package/lib/commonjs/features/ota/geoCountry.js +93 -0
- package/lib/commonjs/features/ota/geoCountry.js.map +1 -0
- package/lib/commonjs/features/ota/useOtaUpdate.js +4 -1
- package/lib/commonjs/features/ota/useOtaUpdate.js.map +1 -1
- package/lib/commonjs/features/performance/PerformanceFeature.js +23 -9
- package/lib/commonjs/features/performance/PerformanceFeature.js.map +1 -1
- package/lib/commonjs/features/performance/collectors/FrameMetricsCollector.js +69 -9
- package/lib/commonjs/features/performance/collectors/FrameMetricsCollector.js.map +1 -1
- package/lib/commonjs/features/performance/transport/PerformanceTransport.js +25 -0
- package/lib/commonjs/features/performance/transport/PerformanceTransport.js.map +1 -1
- package/lib/commonjs/features/session/BackendSessionAdapter.js +128 -11
- package/lib/commonjs/features/session/BackendSessionAdapter.js.map +1 -1
- package/lib/commonjs/features/session/JourneyEventPipeline.js +1 -0
- package/lib/commonjs/features/session/JourneyEventPipeline.js.map +1 -1
- package/lib/commonjs/features/session/ReplayCaptureManager.js +46 -0
- package/lib/commonjs/features/session/ReplayCaptureManager.js.map +1 -1
- package/lib/commonjs/features/session/SessionManager.js +42 -12
- package/lib/commonjs/features/session/SessionManager.js.map +1 -1
- package/lib/commonjs/features/session/nativeCapture.js +4 -4
- package/lib/commonjs/features/session/nativeCapture.js.map +1 -1
- package/lib/commonjs/features/session/outboxFrameCapture.js +3 -2
- package/lib/commonjs/features/session/outboxFrameCapture.js.map +1 -1
- package/lib/commonjs/features/session/sessionTypes.js.map +1 -1
- package/lib/commonjs/index.js +13 -0
- package/lib/commonjs/index.js.map +1 -1
- package/lib/commonjs/public/ScaleBunFacade.js +199 -2
- package/lib/commonjs/public/ScaleBunFacade.js.map +1 -1
- package/lib/commonjs/specs/NativeScaleBunCrash.js.map +1 -1
- package/lib/module/analytics/EventTracker.js +29 -1
- package/lib/module/analytics/EventTracker.js.map +1 -1
- package/lib/module/bootstrap/SDKBootstrapper.js +29 -21
- package/lib/module/bootstrap/SDKBootstrapper.js.map +1 -1
- package/lib/module/compat/codepush.js +77 -14
- package/lib/module/compat/codepush.js.map +1 -1
- package/lib/module/core/config/schema.js +26 -5
- package/lib/module/core/config/schema.js.map +1 -1
- package/lib/module/core/constants/endpoints.js +9 -6
- package/lib/module/core/constants/endpoints.js.map +1 -1
- package/lib/module/core/context/device.js +119 -0
- package/lib/module/core/context/device.js.map +1 -1
- package/lib/module/debug/replayWiring.js +2 -1
- package/lib/module/debug/replayWiring.js.map +1 -1
- package/lib/module/features/bugreport/BugReportFeature.js +105 -0
- package/lib/module/features/bugreport/BugReportFeature.js.map +1 -0
- package/lib/module/features/bugreport/buildPayload.js +91 -0
- package/lib/module/features/bugreport/buildPayload.js.map +1 -0
- package/lib/module/features/crash/CrashReporter.js +25 -1
- package/lib/module/features/crash/CrashReporter.js.map +1 -1
- package/lib/module/features/crash/capture.js +28 -9
- package/lib/module/features/crash/capture.js.map +1 -1
- package/lib/module/features/crash/nativeCrashBridge.js +161 -28
- package/lib/module/features/crash/nativeCrashBridge.js.map +1 -1
- package/lib/module/features/engage/EngagePromptProvider.js +36 -2
- package/lib/module/features/engage/EngagePromptProvider.js.map +1 -1
- package/lib/module/features/engage/EngagePromptView.js +47 -14
- package/lib/module/features/engage/EngagePromptView.js.map +1 -1
- package/lib/module/features/engage/engageTriggerEngine.js +10 -0
- package/lib/module/features/engage/engageTriggerEngine.js.map +1 -1
- package/lib/module/features/engage/engageTypes.js.map +1 -1
- package/lib/module/features/journey/ScaleBunDebugRoot.js +2 -1
- package/lib/module/features/journey/ScaleBunDebugRoot.js.map +1 -1
- package/lib/module/features/ota/OtaOrchestrator.js +72 -5
- package/lib/module/features/ota/OtaOrchestrator.js.map +1 -1
- package/lib/module/features/ota/deviceAttributes.js +43 -0
- package/lib/module/features/ota/deviceAttributes.js.map +1 -0
- package/lib/module/features/ota/geoCountry.js +86 -0
- package/lib/module/features/ota/geoCountry.js.map +1 -0
- package/lib/module/features/ota/useOtaUpdate.js +4 -1
- package/lib/module/features/ota/useOtaUpdate.js.map +1 -1
- package/lib/module/features/performance/PerformanceFeature.js +23 -9
- package/lib/module/features/performance/PerformanceFeature.js.map +1 -1
- package/lib/module/features/performance/collectors/FrameMetricsCollector.js +70 -10
- package/lib/module/features/performance/collectors/FrameMetricsCollector.js.map +1 -1
- package/lib/module/features/performance/transport/PerformanceTransport.js +25 -0
- package/lib/module/features/performance/transport/PerformanceTransport.js.map +1 -1
- package/lib/module/features/session/BackendSessionAdapter.js +128 -11
- package/lib/module/features/session/BackendSessionAdapter.js.map +1 -1
- package/lib/module/features/session/JourneyEventPipeline.js +1 -0
- package/lib/module/features/session/JourneyEventPipeline.js.map +1 -1
- package/lib/module/features/session/ReplayCaptureManager.js +46 -0
- package/lib/module/features/session/ReplayCaptureManager.js.map +1 -1
- package/lib/module/features/session/SessionManager.js +42 -12
- package/lib/module/features/session/SessionManager.js.map +1 -1
- package/lib/module/features/session/nativeCapture.js +4 -5
- package/lib/module/features/session/nativeCapture.js.map +1 -1
- package/lib/module/features/session/outboxFrameCapture.js +3 -2
- package/lib/module/features/session/outboxFrameCapture.js.map +1 -1
- package/lib/module/features/session/sessionTypes.js.map +1 -1
- package/lib/module/index.js +4 -1
- package/lib/module/index.js.map +1 -1
- package/lib/module/public/ScaleBunFacade.js +199 -2
- package/lib/module/public/ScaleBunFacade.js.map +1 -1
- package/lib/module/specs/NativeScaleBunCrash.js.map +1 -1
- package/lib/typescript/analytics/EventTracker.d.ts +20 -0
- package/lib/typescript/analytics/EventTracker.d.ts.map +1 -1
- package/lib/typescript/bootstrap/SDKBootstrapper.d.ts.map +1 -1
- package/lib/typescript/compat/codepush.d.ts +27 -4
- package/lib/typescript/compat/codepush.d.ts.map +1 -1
- package/lib/typescript/core/config/schema.d.ts +4 -1
- package/lib/typescript/core/config/schema.d.ts.map +1 -1
- package/lib/typescript/core/constants/endpoints.d.ts +9 -6
- package/lib/typescript/core/constants/endpoints.d.ts.map +1 -1
- package/lib/typescript/core/context/device.d.ts +46 -0
- package/lib/typescript/core/context/device.d.ts.map +1 -1
- package/lib/typescript/debug/replayWiring.d.ts.map +1 -1
- package/lib/typescript/features/bugreport/BugReportFeature.d.ts +59 -0
- package/lib/typescript/features/bugreport/BugReportFeature.d.ts.map +1 -0
- package/lib/typescript/features/bugreport/buildPayload.d.ts +51 -0
- package/lib/typescript/features/bugreport/buildPayload.d.ts.map +1 -0
- package/lib/typescript/features/crash/CrashReporter.d.ts +20 -1
- package/lib/typescript/features/crash/CrashReporter.d.ts.map +1 -1
- package/lib/typescript/features/crash/capture.d.ts +21 -2
- package/lib/typescript/features/crash/capture.d.ts.map +1 -1
- package/lib/typescript/features/crash/nativeCrashBridge.d.ts +16 -3
- package/lib/typescript/features/crash/nativeCrashBridge.d.ts.map +1 -1
- package/lib/typescript/features/engage/EngagePromptProvider.d.ts.map +1 -1
- package/lib/typescript/features/engage/EngagePromptView.d.ts.map +1 -1
- package/lib/typescript/features/engage/EngageTransport.d.ts +1 -1
- package/lib/typescript/features/engage/EngageTransport.d.ts.map +1 -1
- package/lib/typescript/features/engage/engageTriggerEngine.d.ts.map +1 -1
- package/lib/typescript/features/engage/engageTypes.d.ts +15 -0
- package/lib/typescript/features/engage/engageTypes.d.ts.map +1 -1
- package/lib/typescript/features/journey/ScaleBunDebugRoot.d.ts.map +1 -1
- package/lib/typescript/features/ota/OtaOrchestrator.d.ts +14 -2
- package/lib/typescript/features/ota/OtaOrchestrator.d.ts.map +1 -1
- package/lib/typescript/features/ota/deviceAttributes.d.ts +18 -0
- package/lib/typescript/features/ota/deviceAttributes.d.ts.map +1 -0
- package/lib/typescript/features/ota/geoCountry.d.ts +14 -0
- package/lib/typescript/features/ota/geoCountry.d.ts.map +1 -0
- package/lib/typescript/features/ota/useOtaUpdate.d.ts +20 -2
- package/lib/typescript/features/ota/useOtaUpdate.d.ts.map +1 -1
- package/lib/typescript/features/performance/PerformanceFeature.d.ts +0 -1
- package/lib/typescript/features/performance/PerformanceFeature.d.ts.map +1 -1
- package/lib/typescript/features/performance/collectors/FrameMetricsCollector.d.ts +33 -0
- package/lib/typescript/features/performance/collectors/FrameMetricsCollector.d.ts.map +1 -1
- package/lib/typescript/features/performance/transport/PerformanceTransport.d.ts.map +1 -1
- package/lib/typescript/features/session/BackendSessionAdapter.d.ts +42 -2
- package/lib/typescript/features/session/BackendSessionAdapter.d.ts.map +1 -1
- package/lib/typescript/features/session/JourneyEventPipeline.d.ts +2 -0
- package/lib/typescript/features/session/JourneyEventPipeline.d.ts.map +1 -1
- package/lib/typescript/features/session/ReplayCaptureManager.d.ts +38 -1
- package/lib/typescript/features/session/ReplayCaptureManager.d.ts.map +1 -1
- package/lib/typescript/features/session/SessionManager.d.ts.map +1 -1
- package/lib/typescript/features/session/nativeCapture.d.ts +2 -1
- package/lib/typescript/features/session/nativeCapture.d.ts.map +1 -1
- package/lib/typescript/features/session/outboxFrameCapture.d.ts.map +1 -1
- package/lib/typescript/features/session/sessionTypes.d.ts +20 -3
- package/lib/typescript/features/session/sessionTypes.d.ts.map +1 -1
- package/lib/typescript/index.d.ts +1 -0
- package/lib/typescript/index.d.ts.map +1 -1
- package/lib/typescript/public/ScaleBunFacade.d.ts +69 -0
- package/lib/typescript/public/ScaleBunFacade.d.ts.map +1 -1
- package/lib/typescript/public/types.d.ts +34 -8
- package/lib/typescript/public/types.d.ts.map +1 -1
- package/lib/typescript/specs/NativeScaleBunCrash.d.ts +14 -0
- package/lib/typescript/specs/NativeScaleBunCrash.d.ts.map +1 -1
- package/lib/typescript/vendor/protocol/index.d.ts +17 -17
- package/package.json +1 -1
- package/src/analytics/EventTracker.ts +28 -1
- package/src/bootstrap/SDKBootstrapper.ts +27 -23
- package/src/compat/codepush.ts +87 -16
- package/src/core/config/schema.ts +26 -5
- package/src/core/constants/endpoints.ts +9 -6
- package/src/core/context/device.ts +146 -0
- package/src/debug/replayWiring.ts +2 -1
- package/src/features/bugreport/BugReportFeature.ts +128 -0
- package/src/features/bugreport/buildPayload.ts +116 -0
- package/src/features/crash/CrashReporter.ts +40 -1
- package/src/features/crash/capture.ts +36 -9
- package/src/features/crash/nativeCrashBridge.ts +156 -22
- package/src/features/engage/EngagePromptProvider.tsx +48 -2
- package/src/features/engage/EngagePromptView.tsx +51 -15
- package/src/features/engage/EngageTransport.ts +1 -1
- package/src/features/engage/engageTriggerEngine.ts +15 -0
- package/src/features/engage/engageTypes.ts +15 -0
- package/src/features/journey/ScaleBunDebugRoot.tsx +2 -1
- package/src/features/ota/OtaOrchestrator.ts +84 -6
- package/src/features/ota/deviceAttributes.ts +46 -0
- package/src/features/ota/geoCountry.ts +85 -0
- package/src/features/ota/useOtaUpdate.ts +20 -2
- package/src/features/performance/PerformanceFeature.ts +22 -9
- package/src/features/performance/collectors/FrameMetricsCollector.ts +72 -10
- package/src/features/performance/transport/PerformanceTransport.ts +18 -0
- package/src/features/session/BackendSessionAdapter.ts +137 -10
- package/src/features/session/JourneyEventPipeline.ts +3 -0
- package/src/features/session/ReplayCaptureManager.ts +53 -1
- package/src/features/session/SessionManager.ts +46 -7
- package/src/features/session/nativeCapture.ts +3 -2
- package/src/features/session/outboxFrameCapture.ts +3 -2
- package/src/features/session/sessionTypes.ts +26 -3
- package/src/index.ts +4 -1
- package/src/public/ScaleBunFacade.ts +198 -2
- package/src/public/types.ts +35 -8
- package/src/specs/NativeScaleBunCrash.ts +16 -0
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"names":["Platform","mergePerformanceConfig","JsStallCollector","AppLaunchCollector","ScreenLoadCollector","AutoScreenLoadCollector","FrameMetricsCollector","UiHangCollector","NetworkPerfCollector","CustomTraceCollector","PerformanceTransport","MetricKeys","SessionManager","PerformanceFeature","name","active","sessionId","currentScreen","deviceMeta","_captureGen","_lastCaptureTs","_recentCaptures","Map","_captureTimer","CAPTURE_THROTTLE_MS","CAPTURE_DEDUP_MS","CAPTURE_MAX_RETRIES","CAPTURE_DELAYS","trackFn","constructor","config","transport","platform","OS","osVersion","Version","buildType","__DEV__","getContext","screenKey","undefined","device","jsStallCollector","event","_handleEvent","sendMetric","durationMs","severity","summary","sendStallSummary","appLaunchCollector","launchType","APP_LAUNCH_COLD","APP_LAUNCH_WARM","screenLoadCollector","SCREEN_LOAD","screen","screenName","autoScreenLoadCollector","_triggerAutoCapture","id","frameMetricsCollector","FPS_ESTIMATED","estimatedFps","FRAMES_DROPPED","droppedFrames","FRAMES_SLOW","slowFrames","FRAMES_FROZEN","frozenFrames","uiHangCollector","UI_HANG_COUNT","UI_HANG_MAX","networkPerfCollector","failed","NETWORK_FAIL_COUNT","NETWORK_SLOW_COUNT","customTraceCollector","CUSTOM_TRACE","initialize","context","enabled","trackEvent","_initializeNative","install","collect","uiHangs","start","tier2Enabled","_shouldSampleTier2","startSampledCollection","NativeModules","require","ScaleBunPerformance","rate","tier2SampleRate","Math","random","h","i","length","charCodeAt","imul","startContinuousCollection","stopContinuousCollection","stop","teardown","reset","clearTimeout","isActive","setTransportSink","sink","setSink","setSessionId","setCurrentScreen","visitId","gen","now","Date","dedupKey","floor","lastSuccess","get","_scheduleCaptureAttempt","attempt","delay","setTimeout","_executeAutoCapture","getSink","bridgeAdapter","isAvailable","result","captureScreenshot","base64","set","pruneOlderThan","key","ts","delete","frameId","toString","substring","send","type","protocolVersion","deviceId","timestamp","sequence","nextSequence","payload","category","data","sequenceNumber","trigger","format","sizeBytes","width","height","imageData","source","onNavigationStateChange","state","onScreenChange","onScreenDetected","markScreenLoadStart","registerManualOverride","markStart","markScreenLoadEnd","markEnd","clearManualOverride","startTrace","stopTrace","traceId","addTraceSpan","addSpan","addTraceMeasurement","value","unit","addMeasurement","tags","processNetworkEvent","sendEvent","perfType","backendTransport","getExistingInstance","getBackendTransport","e","metadata","breakdown","phaseLabels","queuePerformanceMetric","duration"],"sourceRoot":"../../../../src","sources":["features/performance/PerformanceFeature.ts"],"mappings":"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","ignoreList":[]}
|
|
1
|
+
{"version":3,"names":["Platform","mergePerformanceConfig","JsStallCollector","AppLaunchCollector","ScreenLoadCollector","AutoScreenLoadCollector","FrameMetricsCollector","UiHangCollector","NetworkPerfCollector","CustomTraceCollector","PerformanceTransport","MetricKeys","SessionManager","PerformanceFeature","name","active","sessionId","currentScreen","deviceMeta","_captureGen","_lastCaptureTs","_recentCaptures","Map","_captureTimer","CAPTURE_THROTTLE_MS","CAPTURE_DEDUP_MS","CAPTURE_MAX_RETRIES","CAPTURE_DELAYS","constructor","config","transport","platform","OS","osVersion","Version","buildType","__DEV__","getContext","screenKey","undefined","device","jsStallCollector","event","_handleEvent","sendMetric","durationMs","severity","summary","sendStallSummary","appLaunchCollector","launchType","APP_LAUNCH_COLD","APP_LAUNCH_WARM","screenLoadCollector","SCREEN_LOAD","screen","screenName","autoScreenLoadCollector","_triggerAutoCapture","id","frameMetricsCollector","FPS_ESTIMATED","estimatedFps","FRAMES_DROPPED","droppedFrames","FRAMES_SLOW","slowFrames","FRAMES_FROZEN","frozenFrames","uiHangCollector","UI_HANG_COUNT","UI_HANG_MAX","networkPerfCollector","failed","NETWORK_FAIL_COUNT","NETWORK_SLOW_COUNT","customTraceCollector","CUSTOM_TRACE","initialize","context","enabled","_initializeNative","install","collect","uiHangs","start","tier2Enabled","_shouldSampleTier2","startSampledCollection","NativeModules","require","ScaleBunPerformance","rate","tier2SampleRate","Math","random","h","i","length","charCodeAt","imul","startContinuousCollection","stopContinuousCollection","stop","teardown","reset","clearTimeout","isActive","setTransportSink","sink","setSink","setSessionId","setCurrentScreen","visitId","gen","now","Date","dedupKey","floor","lastSuccess","get","_scheduleCaptureAttempt","attempt","delay","setTimeout","_executeAutoCapture","getSink","bridgeAdapter","isAvailable","result","captureScreenshot","base64","set","pruneOlderThan","key","ts","delete","frameId","toString","substring","send","type","protocolVersion","deviceId","timestamp","sequence","nextSequence","payload","category","data","sequenceNumber","trigger","format","sizeBytes","width","height","imageData","source","onNavigationStateChange","state","onScreenChange","onScreenDetected","markScreenLoadStart","registerManualOverride","markStart","markScreenLoadEnd","markEnd","clearManualOverride","startTrace","stopTrace","traceId","addTraceSpan","addSpan","addTraceMeasurement","value","unit","addMeasurement","tags","processNetworkEvent","sendEvent","backendTransport","getExistingInstance","getBackendTransport","e","metadata","breakdown","phaseLabels","queuePerformanceMetric","duration"],"sourceRoot":"../../../../src","sources":["features/performance/PerformanceFeature.ts"],"mappings":"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","ignoreList":[]}
|
|
@@ -11,12 +11,16 @@
|
|
|
11
11
|
* - Emits FrameMetricsEvent for transport
|
|
12
12
|
*/
|
|
13
13
|
|
|
14
|
-
import { NativeEventEmitter } from 'react-native';
|
|
14
|
+
import { AppState, NativeEventEmitter } from 'react-native';
|
|
15
15
|
import { getNativePerformanceModule } from '../getNativePerformanceModule';
|
|
16
16
|
import { PERF_SCHEMA_VERSION } from '../models';
|
|
17
17
|
export class FrameMetricsCollector {
|
|
18
18
|
eventSubscription = null;
|
|
19
19
|
running = false;
|
|
20
|
+
/** AppState subscription — see `_installAppStateGate`. */
|
|
21
|
+
appStateSubscription = null;
|
|
22
|
+
/** True while the native sampler is actually running (i.e. armed AND foregrounded). */
|
|
23
|
+
sampling = false;
|
|
20
24
|
constructor(config, onFrameMetrics, contextProvider) {
|
|
21
25
|
this.config = config;
|
|
22
26
|
this.onFrameMetrics = onFrameMetrics;
|
|
@@ -36,21 +40,62 @@ export class FrameMetricsCollector {
|
|
|
36
40
|
// No-throw
|
|
37
41
|
}
|
|
38
42
|
});
|
|
43
|
+
this._startNativeSampler();
|
|
44
|
+
this._installAppStateGate();
|
|
45
|
+
} catch {
|
|
46
|
+
// Native module not available — graceful degradation
|
|
47
|
+
}
|
|
48
|
+
}
|
|
49
|
+
|
|
50
|
+
/**
|
|
51
|
+
* Pause sampling while the app is backgrounded.
|
|
52
|
+
*
|
|
53
|
+
* THE BUG THIS FIXES. `startFrameMetrics` hands off to a native loop that runs until something
|
|
54
|
+
* calls `stopFrameMetrics`. Nothing did. The collector had no AppState awareness at all — unlike
|
|
55
|
+
* `AutoScreenLoadCollector`, which has subscribed to it since it was written — so once a session
|
|
56
|
+
* was sampled in, it kept sampling for as long as the PROCESS lived, not as long as the app was
|
|
57
|
+
* being used.
|
|
58
|
+
*
|
|
59
|
+
* Measured in production: sessions with `durationMs` of 86,400,000 (exactly 24h) and 70,797,000
|
|
60
|
+
* (~19.7h) carrying 39,766 and 3,709 frame samples against 0 and 6 real gestures respectively.
|
|
61
|
+
* `frame_metrics` was 75% of ALL mobile events for this reason.
|
|
62
|
+
*
|
|
63
|
+
* The `tier2SampleRate` knob does not help here: it gates WHICH sessions collect, not how long
|
|
64
|
+
* they collect for. A sampled-in session that gets backgrounded still samples for hours, which is
|
|
65
|
+
* why lowering it would have hidden the symptom while leaving the cause.
|
|
66
|
+
*
|
|
67
|
+
* It is also a DATA-QUALITY fix, not only a volume one. Frame timings from a backgrounded app
|
|
68
|
+
* describe a screen nobody is looking at, and they were feeding the low-FPS KPI and jank
|
|
69
|
+
* detection — so the noise was not merely stored, it was being reported as UI performance.
|
|
70
|
+
*
|
|
71
|
+
* NOTE: on iOS the OS already stops delivering CADisplayLink callbacks on background, so the
|
|
72
|
+
* practical effect is largest on Android. Gating in JS keeps the two platforms behaving the same
|
|
73
|
+
* either way, rather than relying on an OS side effect that is not part of any contract.
|
|
74
|
+
*/
|
|
75
|
+
_installAppStateGate() {
|
|
76
|
+
if (this.appStateSubscription) return;
|
|
77
|
+
this.appStateSubscription = AppState.addEventListener('change', next => {
|
|
78
|
+
if (!this.running) return; // stop() already tore us down
|
|
79
|
+
if (next === 'active') this._startNativeSampler();else this._stopNativeSampler(); // 'background' and 'inactive' (iOS call/app-switcher)
|
|
80
|
+
});
|
|
81
|
+
}
|
|
39
82
|
|
|
40
|
-
|
|
41
|
-
|
|
83
|
+
/** Idempotent — AppState can fire 'active' more than once without an intervening background. */
|
|
84
|
+
_startNativeSampler() {
|
|
85
|
+
if (this.sampling) return;
|
|
86
|
+
try {
|
|
87
|
+
const perfModule = getNativePerformanceModule();
|
|
88
|
+
if (typeof perfModule?.startFrameMetrics === 'function') {
|
|
42
89
|
perfModule.startFrameMetrics(this.config.reportIntervalMs);
|
|
90
|
+
this.sampling = true;
|
|
43
91
|
}
|
|
44
92
|
} catch {
|
|
45
|
-
//
|
|
93
|
+
// No-throw: a perf collector must never break the host app.
|
|
46
94
|
}
|
|
47
95
|
}
|
|
48
|
-
|
|
49
|
-
this.
|
|
50
|
-
|
|
51
|
-
this.eventSubscription.remove();
|
|
52
|
-
this.eventSubscription = null;
|
|
53
|
-
}
|
|
96
|
+
_stopNativeSampler() {
|
|
97
|
+
if (!this.sampling) return;
|
|
98
|
+
this.sampling = false;
|
|
54
99
|
try {
|
|
55
100
|
const perfModule = getNativePerformanceModule();
|
|
56
101
|
if (typeof perfModule?.stopFrameMetrics === 'function') {
|
|
@@ -60,6 +105,21 @@ export class FrameMetricsCollector {
|
|
|
60
105
|
// No-throw
|
|
61
106
|
}
|
|
62
107
|
}
|
|
108
|
+
stop() {
|
|
109
|
+
this.running = false;
|
|
110
|
+
if (this.eventSubscription) {
|
|
111
|
+
this.eventSubscription.remove();
|
|
112
|
+
this.eventSubscription = null;
|
|
113
|
+
}
|
|
114
|
+
// Remove the AppState listener BEFORE stopping the sampler: a 'change' arriving mid-teardown
|
|
115
|
+
// would otherwise restart the native loop on a collector that is being shut down, which is the
|
|
116
|
+
// same leak this gate exists to close.
|
|
117
|
+
if (this.appStateSubscription) {
|
|
118
|
+
this.appStateSubscription.remove();
|
|
119
|
+
this.appStateSubscription = null;
|
|
120
|
+
}
|
|
121
|
+
this._stopNativeSampler();
|
|
122
|
+
}
|
|
63
123
|
_handleNativeFrameMetrics(data) {
|
|
64
124
|
if (!data || typeof data.totalFrames !== 'number') return;
|
|
65
125
|
const totalFrames = data.totalFrames || 0;
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"names":["NativeEventEmitter","getNativePerformanceModule","PERF_SCHEMA_VERSION","FrameMetricsCollector","eventSubscription","running","constructor","config","onFrameMetrics","contextProvider","start","frameMetrics","perfModule","emitter","addListener","data","_handleNativeFrameMetrics","startFrameMetrics","reportIntervalMs","
|
|
1
|
+
{"version":3,"names":["AppState","NativeEventEmitter","getNativePerformanceModule","PERF_SCHEMA_VERSION","FrameMetricsCollector","eventSubscription","running","appStateSubscription","sampling","constructor","config","onFrameMetrics","contextProvider","start","frameMetrics","perfModule","emitter","addListener","data","_handleNativeFrameMetrics","_startNativeSampler","_installAppStateGate","addEventListener","next","_stopNativeSampler","startFrameMetrics","reportIntervalMs","stopFrameMetrics","stop","remove","totalFrames","droppedFrames","slowFrames","frozenFrames","windowMs","maxFrameTimeMs","expectedFrames","Math","round","actualFrames","max","estimatedFps","event","id","Date","now","random","toString","substring","type","timestamp","schemaVersion","context","min"],"sourceRoot":"../../../../../src","sources":["features/performance/collectors/FrameMetricsCollector.ts"],"mappings":"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","ignoreList":[]}
|
|
@@ -58,6 +58,31 @@ export class PerformanceTransport {
|
|
|
58
58
|
|
|
59
59
|
/** Send a metric value (for backward compat with existing metric handler) */
|
|
60
60
|
sendMetric(name, value, unit, tags) {
|
|
61
|
+
// D4: the desktop sink is only wired under enableDebug(), so in a
|
|
62
|
+
// production build everything through here — JS stall stats, launch
|
|
63
|
+
// timings, and the PUBLIC ScaleBun.sendMetric() API — was buffered into
|
|
64
|
+
// a bounded array and discarded. Mirror every metric onto the backend
|
|
65
|
+
// ingestion lane (the one that provably lands rows); the desktop sink
|
|
66
|
+
// remains the dev-tooling fan-out below.
|
|
67
|
+
try {
|
|
68
|
+
// Lazy import avoids a static cycle: session → performance → session.
|
|
69
|
+
const {
|
|
70
|
+
SessionManager
|
|
71
|
+
} = require('../../session/SessionManager');
|
|
72
|
+
const backend = SessionManager.getExistingInstance()?.getBackendTransport();
|
|
73
|
+
backend?.queuePerformanceMetric({
|
|
74
|
+
type: name,
|
|
75
|
+
value,
|
|
76
|
+
metadata: {
|
|
77
|
+
...(unit ? {
|
|
78
|
+
unit
|
|
79
|
+
} : {}),
|
|
80
|
+
...(tags ?? {})
|
|
81
|
+
}
|
|
82
|
+
});
|
|
83
|
+
} catch {
|
|
84
|
+
// Backend lane unavailable (no session yet) — dev sink may still get it.
|
|
85
|
+
}
|
|
61
86
|
const msg = {
|
|
62
87
|
type: 'metric',
|
|
63
88
|
protocolVersion: PROTOCOL_VERSION,
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"names":["MetricKeys","PROTOCOL_VERSION","PerformanceTransport","sink","buffer","constructor","config","setSink","length","pending","splice","msg","send","getSink","sendEvent","event","type","protocolVersion","deviceId","sessionId","timestamp","sequence","nextSequence","payload","id","category","name","data","_send","sendMetric","value","unit","tags","Date","now","sendStallSummary","summary","JS_STALL_COUNT","stallCount","JS_STALL_MAX","maxStallMs","JS_STALL_AVG","avgStallMs","expectedFrames","Math","round","reportIntervalMs","droppedFrames","totalStallMs","actualFrames","max","estimatedFps","JS_ESTIMATED_FPS","min","JS_FRAMES_DROPPED","sendSummary","random","toString","substring","schemaVersion","context","durationMs","maxBufferSize","push","reset"],"sourceRoot":"../../../../../src","sources":["features/performance/transport/PerformanceTransport.ts"],"mappings":"AAAA;AACA;AACA;AACA;AACA;AACA;AACA;;AAIA,SAASA,UAAU,QAAQ,0BAA0B;;AAErD;;AAQA,MAAMC,gBAAgB,GAAG,CAAC;AAE1B,OAAO,MAAMC,oBAAoB,CAAC;EACtBC,IAAI,GAA6B,IAAI;EAErCC,MAAM,GAAc,EAAE;EAE9BC,WAAWA,CAACC,MAAyB,EAAE;IACnC,IAAI,CAACA,MAAM,GAAGA,MAAM;EACxB;;EAEA;EACAC,OAAOA,CAACJ,IAA8B,EAAQ;IAC1C,IAAI,CAACA,IAAI,GAAGA,IAAI;IAChB;IACA,IAAIA,IAAI,IAAI,IAAI,CAACC,MAAM,CAACI,MAAM,GAAG,CAAC,EAAE;MAChC,MAAMC,OAAO,GAAG,IAAI,CAACL,MAAM,CAACM,MAAM,CAAC,CAAC,CAAC;MACrC,KAAK,MAAMC,GAAG,IAAIF,OAAO,EAAE;QACvB,IAAI;UAAEN,IAAI,CAACS,IAAI,CAACD,GAAG,CAAC;QAAE,CAAC,CAAC,MAAM,CAAE;MACpC;IACJ;EACJ;;EAEA;EACAE,OAAOA,CAAA,EAA6B;IAChC,OAAO,IAAI,CAACV,IAAI;EACpB;;EAEA;EACAW,SAASA,CAACC,KAAmB,EAAQ;IACjC,MAAMJ,GAAG,GAAG;MACRK,IAAI,EAAE,OAAgB;MACtBC,eAAe,EAAEhB,gBAAgB;MACjCiB,QAAQ,EAAE,IAAI,CAACf,IAAI,EAAEe,QAAQ,IAAI,SAAS;MAC1CC,SAAS,EAAE,IAAI,CAAChB,IAAI,EAAEgB,SAAS,IAAI,SAAS;MAC5CC,SAAS,EAAEL,KAAK,CAACK,SAAS;MAC1BC,QAAQ,EAAE,IAAI,CAAClB,IAAI,EAAEmB,YAAY,CAAC,CAAC,IAAI,CAAC;MACxCC,OAAO,EAAE;QACLC,EAAE,EAAET,KAAK,CAACS,EAAE;QACZC,QAAQ,EAAE,aAAsB;QAChCC,IAAI,EAAE,QAAQX,KAAK,CAACC,IAAI,EAAE;QAC1BW,IAAI,EAAEZ;MACV;IACJ,CAAC;IAED,IAAI,CAACa,KAAK,CAACjB,GAAG,CAAC;EACnB;;EAEA;EACAkB,UAAUA,CAACH,IAAY,EAAEI,KAAa,EAAEC,IAAa,EAAEC,IAA6B,EAAQ;IACxF,MAAMrB,GAAG,GAAG;MACRK,IAAI,EAAE,QAAiB;MACvBC,eAAe,EAAEhB,gBAAgB;MACjCiB,QAAQ,EAAE,IAAI,CAACf,IAAI,EAAEe,QAAQ,IAAI,SAAS;MAC1CC,SAAS,EAAE,IAAI,CAAChB,IAAI,EAAEgB,SAAS,IAAI,SAAS;MAC5CC,SAAS,
|
|
1
|
+
{"version":3,"names":["MetricKeys","PROTOCOL_VERSION","PerformanceTransport","sink","buffer","constructor","config","setSink","length","pending","splice","msg","send","getSink","sendEvent","event","type","protocolVersion","deviceId","sessionId","timestamp","sequence","nextSequence","payload","id","category","name","data","_send","sendMetric","value","unit","tags","SessionManager","require","backend","getExistingInstance","getBackendTransport","queuePerformanceMetric","metadata","Date","now","sendStallSummary","summary","JS_STALL_COUNT","stallCount","JS_STALL_MAX","maxStallMs","JS_STALL_AVG","avgStallMs","expectedFrames","Math","round","reportIntervalMs","droppedFrames","totalStallMs","actualFrames","max","estimatedFps","JS_ESTIMATED_FPS","min","JS_FRAMES_DROPPED","sendSummary","random","toString","substring","schemaVersion","context","durationMs","maxBufferSize","push","reset"],"sourceRoot":"../../../../../src","sources":["features/performance/transport/PerformanceTransport.ts"],"mappings":"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","ignoreList":[]}
|
|
@@ -187,6 +187,7 @@ export class BackendSessionAdapter {
|
|
|
187
187
|
// Falls back to metadata-only if bridge unavailable (old native binary).
|
|
188
188
|
bridgeAdapter.getDeviceInfo().then(nativeInfo => {
|
|
189
189
|
const m = session.metadata;
|
|
190
|
+
this._cachedAppVersion = nativeInfo?.appVersion ?? m?.appVersion ?? null;
|
|
190
191
|
const payload = {
|
|
191
192
|
sessionId: session.sessionId,
|
|
192
193
|
deviceId: session.deviceId,
|
|
@@ -298,6 +299,7 @@ export class BackendSessionAdapter {
|
|
|
298
299
|
try {
|
|
299
300
|
const nativeInfo = await bridgeAdapter.getDeviceInfo();
|
|
300
301
|
const m = session.metadata;
|
|
302
|
+
this._cachedAppVersion = nativeInfo?.appVersion ?? m?.appVersion ?? null;
|
|
301
303
|
const payload = {
|
|
302
304
|
sessionId: session.sessionId,
|
|
303
305
|
deviceId: session.deviceId,
|
|
@@ -530,11 +532,31 @@ export class BackendSessionAdapter {
|
|
|
530
532
|
this._flushNetwork().catch(() => {});
|
|
531
533
|
}
|
|
532
534
|
}
|
|
535
|
+
|
|
536
|
+
// D8/D9/D12: this signature was {type, message, stack, screenName} — four
|
|
537
|
+
// fields — while the backend row and every dashboard surface were already
|
|
538
|
+
// built for the rest. The consequences of the four-field bottleneck:
|
|
539
|
+
// regression detection permanently false (no appVersion on any mobile
|
|
540
|
+
// error), Issue.primaryPlatform NULL for every RN crash (no platform), and
|
|
541
|
+
// native crash signal/thread/exception-type discarded one call before the
|
|
542
|
+
// wire (no metadata). The receiver needed nothing; only this signature did.
|
|
543
|
+
/** App version resolved at session start; errors stamp it so regression
|
|
544
|
+
* detection has a version to work with (D8). Null until a session starts. */
|
|
545
|
+
_cachedAppVersion = null;
|
|
546
|
+
_appVersion() {
|
|
547
|
+
return this._cachedAppVersion ?? undefined;
|
|
548
|
+
}
|
|
533
549
|
queueError(data) {
|
|
534
550
|
if (this.destroyed || !this.config.clientKey) return;
|
|
535
551
|
this.pendingErrors.push({
|
|
536
552
|
...data,
|
|
537
|
-
|
|
553
|
+
// The session already knows the app version — never make a crash
|
|
554
|
+
// reporter's callers supply what the transport can fill itself.
|
|
555
|
+
appVersion: data.appVersion ?? this._appVersion(),
|
|
556
|
+
// A recovered crash brings its OWN clientId — the stable id written when the crash was
|
|
557
|
+
// first persisted. Generating a fresh one here would mint a new identity on every retry
|
|
558
|
+
// and defeat the unique constraint the backend dedupes with.
|
|
559
|
+
clientId: data.clientId ?? this._clientId(),
|
|
538
560
|
timestamp: new Date().toISOString()
|
|
539
561
|
});
|
|
540
562
|
if (this.pendingErrors.length >= 10) {
|
|
@@ -542,7 +564,12 @@ export class BackendSessionAdapter {
|
|
|
542
564
|
}
|
|
543
565
|
}
|
|
544
566
|
|
|
545
|
-
/**
|
|
567
|
+
/**
|
|
568
|
+
* Public: force-flush queued errors immediately (handled-error delivery).
|
|
569
|
+
*
|
|
570
|
+
* @returns whether the batch was DURABLY accepted. Crash recovery deletes its on-disk record on
|
|
571
|
+
* this answer, so it must reflect the backend and not merely that the call returned.
|
|
572
|
+
*/
|
|
546
573
|
flushErrors() {
|
|
547
574
|
return this._flushErrors();
|
|
548
575
|
}
|
|
@@ -606,13 +633,23 @@ export class BackendSessionAdapter {
|
|
|
606
633
|
* Returns false on any miss (flag off, no session, old binary, native error) so
|
|
607
634
|
* the caller falls back to the JS HTTP path with the batch intact.
|
|
608
635
|
*/
|
|
609
|
-
async _enqueueNative(lane, records
|
|
610
|
-
|
|
636
|
+
async _enqueueNative(lane, records,
|
|
637
|
+
/**
|
|
638
|
+
* Session to enqueue UNDER. Defaults to the current one, which is right for every live lane.
|
|
639
|
+
*
|
|
640
|
+
* A recovered native crash must override it. Without this parameter the outbox stamped
|
|
641
|
+
* `currentSessionId` on everything, so with the outbox enabled a recovered crash was filed
|
|
642
|
+
* against the session created after the restart — the exact defect the routing above exists
|
|
643
|
+
* to prevent, reappearing through a path that routing never touched.
|
|
644
|
+
*/
|
|
645
|
+
targetSessionId) {
|
|
646
|
+
const sessionId = targetSessionId || this.currentSessionId;
|
|
647
|
+
if (!this.nativeOutboxEnabled || !sessionId) return false;
|
|
611
648
|
const native = getReplaySdkNative();
|
|
612
649
|
if (!native?.enqueueOutboxRecords) return false;
|
|
613
650
|
if (!(await this._ensureNativeOutbox(native))) return false;
|
|
614
651
|
try {
|
|
615
|
-
return await native.enqueueOutboxRecords(lane,
|
|
652
|
+
return await native.enqueueOutboxRecords(lane, sessionId, records);
|
|
616
653
|
} catch {
|
|
617
654
|
return false;
|
|
618
655
|
}
|
|
@@ -730,6 +767,17 @@ export class BackendSessionAdapter {
|
|
|
730
767
|
if (screen) out.screenName = screen;
|
|
731
768
|
const label = e.subtype ?? e.type;
|
|
732
769
|
if (label && label !== e.type) out.label = label;
|
|
770
|
+
/**
|
|
771
|
+
* THIS MAPPER ENUMERATES. Every field the wire carries has to be named here, so a field
|
|
772
|
+
* added to JourneyEvent and not added here is dropped silently — no error, no warning, and
|
|
773
|
+
* nothing downstream can tell the difference between "the SDK did not send it" and "the
|
|
774
|
+
* user never produced it". `frameId` was exactly that case: the column, the DTO field and
|
|
775
|
+
* the ingest write all existed already, and the value died on this line.
|
|
776
|
+
*
|
|
777
|
+
* Omitted when absent rather than sent as null, matching how screenName and label behave
|
|
778
|
+
* above — the v2 lean shape drops empty fields and the server reconstructs them.
|
|
779
|
+
*/
|
|
780
|
+
if (e.frameId) out.frameId = e.frameId;
|
|
733
781
|
const data = this._pruneEmpty(e.payload);
|
|
734
782
|
if (data && Object.keys(data).length > 0) out.data = data;
|
|
735
783
|
return out;
|
|
@@ -1146,20 +1194,89 @@ export class BackendSessionAdapter {
|
|
|
1146
1194
|
if (!BackendSessionAdapter._isPermanentHttpError(err)) this.pendingNetworkRequests.unshift(...batch);
|
|
1147
1195
|
}
|
|
1148
1196
|
}
|
|
1197
|
+
|
|
1198
|
+
/**
|
|
1199
|
+
* D11: deliver a bug report to the SAME ingest the web SDK uses
|
|
1200
|
+
* (`POST /ingestion/sessions/:id/bug-reports`). Fire-and-forget with one
|
|
1201
|
+
* retry deferral: RN previously had NO path to this endpoint at all —
|
|
1202
|
+
* `reportBug()` emitted an analytics event no handler consumed, so the
|
|
1203
|
+
* bug-reports page was empty forever for every RN app.
|
|
1204
|
+
*/
|
|
1205
|
+
submitBugReport(report) {
|
|
1206
|
+
if (this.destroyed || !this.config.clientKey || !this.currentSessionId) return;
|
|
1207
|
+
void this._post(`/ingestion/sessions/${this.currentSessionId}/bug-reports`, {
|
|
1208
|
+
...report,
|
|
1209
|
+
timestamp: Date.now()
|
|
1210
|
+
}).catch(() => {
|
|
1211
|
+
/* best-effort; the $bug_report analytics breadcrumb still records intent */
|
|
1212
|
+
});
|
|
1213
|
+
}
|
|
1214
|
+
|
|
1215
|
+
/**
|
|
1216
|
+
* @returns TRUE only when every group in this batch was DURABLY accepted — an HTTP 2xx, or a
|
|
1217
|
+
* handoff to the native outbox, which is itself a persistent retrying queue.
|
|
1218
|
+
*
|
|
1219
|
+
* The return value is not cosmetic: `drainNativeCrash` deletes the on-disk crash record on the
|
|
1220
|
+
* strength of it. This method used to return `void` and swallow its own errors in the catch
|
|
1221
|
+
* below, so "the promise resolved" meant nothing at all — a failed POST looked exactly like a
|
|
1222
|
+
* successful one, and the caller would have deleted the only durable copy of a crash that never
|
|
1223
|
+
* arrived. Anything less than a real acknowledgement here reintroduces the loss this whole
|
|
1224
|
+
* change exists to prevent.
|
|
1225
|
+
*/
|
|
1149
1226
|
async _flushErrors() {
|
|
1150
|
-
if (this.pendingErrors.length === 0 || !this.currentSessionId || !this.config.clientKey) return;
|
|
1227
|
+
if (this.pendingErrors.length === 0 || !this.currentSessionId || !this.config.clientKey) return false;
|
|
1151
1228
|
const batch = this.pendingErrors.splice(0, 20);
|
|
1152
1229
|
try {
|
|
1153
|
-
if (await this._enqueueNative('errors', batch)) return;
|
|
1154
1230
|
if (!this._sessionRowReady()) {
|
|
1155
1231
|
this.pendingErrors.unshift(...batch);
|
|
1156
|
-
return;
|
|
1232
|
+
return false;
|
|
1157
1233
|
}
|
|
1158
|
-
|
|
1159
|
-
|
|
1160
|
-
|
|
1234
|
+
/**
|
|
1235
|
+
* ROUTED BY THE ERROR'S OWN SESSION, not by whichever session is current.
|
|
1236
|
+
*
|
|
1237
|
+
* A recovered native crash carries the id of the session it actually happened in — that
|
|
1238
|
+
* process is gone, so the current session is the wrong owner. Sending it under
|
|
1239
|
+
* `currentSessionId` is what marked a healthy session crashed and left the crashed one
|
|
1240
|
+
* looking clean.
|
|
1241
|
+
*
|
|
1242
|
+
* The URL still carries a session because that is the established ingest shape; the
|
|
1243
|
+
* error's own `sessionId` simply chooses WHICH one. Errors are grouped by their target
|
|
1244
|
+
* so a batch mixing a recovered crash with live errors cannot drag the live ones onto
|
|
1245
|
+
* the dead session.
|
|
1246
|
+
*/
|
|
1247
|
+
const byTarget = new Map();
|
|
1248
|
+
for (const e of batch) {
|
|
1249
|
+
const target = e.sessionId || this.currentSessionId;
|
|
1250
|
+
byTarget.set(target, [...(byTarget.get(target) ?? []), e]);
|
|
1251
|
+
}
|
|
1252
|
+
let allAccepted = true;
|
|
1253
|
+
for (const [target, errors] of byTarget) {
|
|
1254
|
+
// `sessionId` is a routing instruction, not payload — strip it so the stored row is
|
|
1255
|
+
// byte-identical to one sent the ordinary way.
|
|
1256
|
+
const cleaned = errors.map(({
|
|
1257
|
+
sessionId: _s,
|
|
1258
|
+
...rest
|
|
1259
|
+
}) => rest);
|
|
1260
|
+
|
|
1261
|
+
// The outbox is enqueued PER TARGET, so a recovered crash keeps its own session.
|
|
1262
|
+
if (await this._enqueueNative('errors', cleaned, target)) continue;
|
|
1263
|
+
try {
|
|
1264
|
+
await this._post(ENDPOINTS.INGESTION_ERRORS(target), {
|
|
1265
|
+
errors: cleaned
|
|
1266
|
+
});
|
|
1267
|
+
} catch (err) {
|
|
1268
|
+
allAccepted = false;
|
|
1269
|
+
// A permanent error (4xx) will never succeed, so re-queuing it would spin
|
|
1270
|
+
// forever; anything else is worth another attempt.
|
|
1271
|
+
if (!BackendSessionAdapter._isPermanentHttpError(err)) {
|
|
1272
|
+
this.pendingErrors.unshift(...errors);
|
|
1273
|
+
}
|
|
1274
|
+
}
|
|
1275
|
+
}
|
|
1276
|
+
return allAccepted;
|
|
1161
1277
|
} catch (err) {
|
|
1162
1278
|
if (!BackendSessionAdapter._isPermanentHttpError(err)) this.pendingErrors.unshift(...batch);
|
|
1279
|
+
return false;
|
|
1163
1280
|
}
|
|
1164
1281
|
}
|
|
1165
1282
|
async _flushPerformance() {
|