@goliapkg/sentori-react-native 0.8.4 → 0.9.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/sentori/SentoriMobileVitals.kt +100 -0
- package/android/src/main/java/com/sentori/SentoriModule.kt +18 -0
- package/ios/SentoriMobileVitals.swift +104 -0
- package/ios/SentoriModule.swift +17 -0
- package/lib/feedback-widget.d.ts.map +1 -1
- package/lib/feedback-widget.js +8 -1
- package/lib/feedback-widget.js.map +1 -1
- package/lib/index.d.ts +4 -0
- package/lib/index.d.ts.map +1 -1
- package/lib/index.js +4 -0
- package/lib/index.js.map +1 -1
- package/lib/init.d.ts.map +1 -1
- package/lib/init.js +21 -1
- package/lib/init.js.map +1 -1
- package/lib/launch-crash-guard.d.ts.map +1 -1
- package/lib/launch-crash-guard.js +8 -0
- package/lib/launch-crash-guard.js.map +1 -1
- package/lib/mobile-vitals.d.ts +35 -0
- package/lib/mobile-vitals.d.ts.map +1 -0
- package/lib/mobile-vitals.js +89 -0
- package/lib/mobile-vitals.js.map +1 -0
- package/lib/native-loader.d.ts +6 -0
- package/lib/native-loader.d.ts.map +1 -0
- package/lib/native-loader.js +31 -0
- package/lib/native-loader.js.map +1 -0
- package/lib/native.d.ts +11 -0
- package/lib/native.d.ts.map +1 -1
- package/lib/native.js +37 -0
- package/lib/native.js.map +1 -1
- package/lib/navigation.d.ts.map +1 -1
- package/lib/navigation.js +14 -2
- package/lib/navigation.js.map +1 -1
- package/lib/netinfo.d.ts.map +1 -1
- package/lib/netinfo.js +6 -12
- package/lib/netinfo.js.map +1 -1
- package/lib/transport.d.ts.map +1 -1
- package/lib/transport.js +6 -0
- package/lib/transport.js.map +1 -1
- package/package.json +1 -9
- package/src/feedback-widget.tsx +8 -1
- package/src/index.ts +12 -0
- package/src/init.ts +21 -1
- package/src/launch-crash-guard.ts +9 -0
- package/src/mobile-vitals.ts +114 -0
- package/src/native-loader.ts +33 -0
- package/src/native.ts +60 -0
- package/src/navigation.ts +16 -2
- package/src/netinfo.ts +7 -14
- package/src/transport.ts +6 -0
|
@@ -0,0 +1,100 @@
|
|
|
1
|
+
package com.sentori
|
|
2
|
+
|
|
3
|
+
import android.os.Process
|
|
4
|
+
import android.os.SystemClock
|
|
5
|
+
import android.view.Choreographer
|
|
6
|
+
import java.util.concurrent.atomic.AtomicInteger
|
|
7
|
+
import java.util.concurrent.atomic.AtomicLong
|
|
8
|
+
|
|
9
|
+
/**
|
|
10
|
+
* v0.9.4 #1 — Mobile Vitals.
|
|
11
|
+
*
|
|
12
|
+
* Cold start uses `Process.getStartElapsedRealtime()` (API 24+) —
|
|
13
|
+
* the time the system started the process clock, anchored to boot
|
|
14
|
+
* time. Subtract from current `SystemClock.elapsedRealtime()` at JS
|
|
15
|
+
* bridge ready to get the user-perceived launch budget.
|
|
16
|
+
*
|
|
17
|
+
* Frame counters hook `Choreographer.postFrameCallback` and compare
|
|
18
|
+
* deltas. 16.67ms = slow, 700ms = frozen — same thresholds as iOS
|
|
19
|
+
* for parity. The choreographer callback runs on the UI thread so we
|
|
20
|
+
* don't need extra synchronization for the AtomicInteger counters.
|
|
21
|
+
*/
|
|
22
|
+
object SentoriMobileVitals {
|
|
23
|
+
|
|
24
|
+
private const val SLOW_FRAME_NS: Long = 16_670_000 // 16.67 ms
|
|
25
|
+
private const val FROZEN_FRAME_NS: Long = 700_000_000 // 700 ms
|
|
26
|
+
|
|
27
|
+
private val jsBridgeReadyAt = AtomicLong(0)
|
|
28
|
+
private val coldStartMs = AtomicLong(-1)
|
|
29
|
+
|
|
30
|
+
private val slowFrames = AtomicInteger(0)
|
|
31
|
+
private val frozenFrames = AtomicInteger(0)
|
|
32
|
+
private var lastFrameNs: Long = 0L
|
|
33
|
+
@Volatile private var frameWatchRunning = false
|
|
34
|
+
private var callback: Choreographer.FrameCallback? = null
|
|
35
|
+
|
|
36
|
+
/** Called when JS init runs. Uses Process start elapsed realtime
|
|
37
|
+
* as the anchor; available API 24+. */
|
|
38
|
+
@JvmStatic
|
|
39
|
+
fun markJsBridgeReady() {
|
|
40
|
+
if (jsBridgeReadyAt.get() != 0L) return
|
|
41
|
+
val now = SystemClock.elapsedRealtime()
|
|
42
|
+
jsBridgeReadyAt.set(now)
|
|
43
|
+
try {
|
|
44
|
+
val processStart = Process.getStartElapsedRealtime()
|
|
45
|
+
coldStartMs.set(now - processStart)
|
|
46
|
+
} catch (_: Throwable) {
|
|
47
|
+
// API < 24 — leave -1 sentinel
|
|
48
|
+
}
|
|
49
|
+
}
|
|
50
|
+
|
|
51
|
+
@JvmStatic
|
|
52
|
+
fun getColdStartMs(): Long? {
|
|
53
|
+
val v = coldStartMs.get()
|
|
54
|
+
return if (v < 0) null else v
|
|
55
|
+
}
|
|
56
|
+
|
|
57
|
+
@JvmStatic
|
|
58
|
+
fun startFrameWatch() {
|
|
59
|
+
if (frameWatchRunning) return
|
|
60
|
+
frameWatchRunning = true
|
|
61
|
+
val cb = object : Choreographer.FrameCallback {
|
|
62
|
+
override fun doFrame(frameTimeNanos: Long) {
|
|
63
|
+
if (!frameWatchRunning) return
|
|
64
|
+
if (lastFrameNs != 0L) {
|
|
65
|
+
val delta = frameTimeNanos - lastFrameNs
|
|
66
|
+
if (delta >= FROZEN_FRAME_NS) {
|
|
67
|
+
frozenFrames.incrementAndGet()
|
|
68
|
+
} else if (delta >= SLOW_FRAME_NS) {
|
|
69
|
+
slowFrames.incrementAndGet()
|
|
70
|
+
}
|
|
71
|
+
}
|
|
72
|
+
lastFrameNs = frameTimeNanos
|
|
73
|
+
Choreographer.getInstance().postFrameCallback(this)
|
|
74
|
+
}
|
|
75
|
+
}
|
|
76
|
+
callback = cb
|
|
77
|
+
// Choreographer must be subscribed on the UI thread. Caller
|
|
78
|
+
// is expected to run this on the main thread (SentoriModule
|
|
79
|
+
// OnCreate runs on the main thread for Expo Modules).
|
|
80
|
+
Choreographer.getInstance().postFrameCallback(cb)
|
|
81
|
+
}
|
|
82
|
+
|
|
83
|
+
@JvmStatic
|
|
84
|
+
fun stopFrameWatch() {
|
|
85
|
+
frameWatchRunning = false
|
|
86
|
+
callback?.let { Choreographer.getInstance().removeFrameCallback(it) }
|
|
87
|
+
callback = null
|
|
88
|
+
}
|
|
89
|
+
|
|
90
|
+
@JvmStatic
|
|
91
|
+
fun getFrameCounters(): Map<String, Int> {
|
|
92
|
+
return mapOf("slow" to slowFrames.get(), "frozen" to frozenFrames.get())
|
|
93
|
+
}
|
|
94
|
+
|
|
95
|
+
@JvmStatic
|
|
96
|
+
fun resetFrameCounters() {
|
|
97
|
+
slowFrames.set(0)
|
|
98
|
+
frozenFrames.set(0)
|
|
99
|
+
}
|
|
100
|
+
}
|
|
@@ -18,6 +18,24 @@ class SentoriModule : Module() {
|
|
|
18
18
|
OnCreate {
|
|
19
19
|
val ctx = appContext.reactContext ?: return@OnCreate
|
|
20
20
|
SentoriCrashHandler.register(ctx)
|
|
21
|
+
// v0.9.4 #1 — start frame watch. Cold-start is captured
|
|
22
|
+
// anchored to Process.getStartElapsedRealtime so no
|
|
23
|
+
// separate registerColdStartAnchor() call is needed.
|
|
24
|
+
SentoriMobileVitals.startFrameWatch()
|
|
25
|
+
}
|
|
26
|
+
|
|
27
|
+
// v0.9.4 #1 — Mobile Vitals exposure.
|
|
28
|
+
Function("markJsBridgeReady") {
|
|
29
|
+
SentoriMobileVitals.markJsBridgeReady()
|
|
30
|
+
}
|
|
31
|
+
Function("getColdStartMs") {
|
|
32
|
+
SentoriMobileVitals.getColdStartMs()
|
|
33
|
+
}
|
|
34
|
+
Function("getFrameCounters") {
|
|
35
|
+
SentoriMobileVitals.getFrameCounters()
|
|
36
|
+
}
|
|
37
|
+
Function("resetFrameCounters") {
|
|
38
|
+
SentoriMobileVitals.resetFrameCounters()
|
|
21
39
|
}
|
|
22
40
|
|
|
23
41
|
Function("setConfig") { config: Map<String, Any?> ->
|
|
@@ -0,0 +1,104 @@
|
|
|
1
|
+
import Foundation
|
|
2
|
+
import UIKit
|
|
3
|
+
import QuartzCore
|
|
4
|
+
|
|
5
|
+
/// v0.9.4 #1 — Mobile Vitals: cold start measurement + slow/frozen
|
|
6
|
+
/// frame counters.
|
|
7
|
+
///
|
|
8
|
+
/// Cold start is read at `applicationDidFinishLaunching` time. We use
|
|
9
|
+
/// `mach_absolute_time` because it's monotonic + survives clock
|
|
10
|
+
/// adjustments. The JS bridge reads via `getColdStartMs()` once at
|
|
11
|
+
/// `sentori.init` and the value rides along with the first event.
|
|
12
|
+
///
|
|
13
|
+
/// Frame counters hook `CADisplayLink` on the main run loop. The
|
|
14
|
+
/// callback compares actual vs expected timestamp; > 16.67ms = slow
|
|
15
|
+
/// (one missed VSync at 60fps), > 700ms = frozen (per Sentry's
|
|
16
|
+
/// definition for parity). Counters reset on navigation transition
|
|
17
|
+
/// — `resetFrameCounters()` from JS side.
|
|
18
|
+
@objc public final class SentoriMobileVitals: NSObject {
|
|
19
|
+
|
|
20
|
+
private static var coldStartCapturedAt: UInt64 = 0
|
|
21
|
+
private static var jsBridgeReadyAt: UInt64 = 0
|
|
22
|
+
private static var coldStartMs: Double? = nil
|
|
23
|
+
|
|
24
|
+
private static var slowFrames: Int = 0
|
|
25
|
+
private static var frozenFrames: Int = 0
|
|
26
|
+
private static var displayLink: CADisplayLink? = nil
|
|
27
|
+
private static var lastFrameTimestamp: CFTimeInterval = 0
|
|
28
|
+
|
|
29
|
+
private static let SLOW_FRAME_MS: Double = 16.67
|
|
30
|
+
private static let FROZEN_FRAME_MS: Double = 700.0
|
|
31
|
+
|
|
32
|
+
/// Call from app delegate or earliest reachable point. Stores
|
|
33
|
+
/// the cold-start anchor. Safe to call multiple times (only the
|
|
34
|
+
/// first effective time wins).
|
|
35
|
+
@objc public static func registerColdStartAnchor() {
|
|
36
|
+
if coldStartCapturedAt == 0 {
|
|
37
|
+
coldStartCapturedAt = mach_absolute_time()
|
|
38
|
+
}
|
|
39
|
+
}
|
|
40
|
+
|
|
41
|
+
/// Called by the bridge when JS init() runs. The delta from the
|
|
42
|
+
/// app-delegate anchor → here is the cold-start budget the
|
|
43
|
+
/// user perceived.
|
|
44
|
+
@objc public static func markJsBridgeReady() {
|
|
45
|
+
if jsBridgeReadyAt != 0 { return }
|
|
46
|
+
jsBridgeReadyAt = mach_absolute_time()
|
|
47
|
+
if coldStartCapturedAt > 0 {
|
|
48
|
+
var info = mach_timebase_info()
|
|
49
|
+
mach_timebase_info(&info)
|
|
50
|
+
let elapsed = (jsBridgeReadyAt - coldStartCapturedAt) * UInt64(info.numer) / UInt64(info.denom)
|
|
51
|
+
// ns → ms
|
|
52
|
+
coldStartMs = Double(elapsed) / 1_000_000.0
|
|
53
|
+
}
|
|
54
|
+
}
|
|
55
|
+
|
|
56
|
+
@objc public static func getColdStartMs() -> NSNumber? {
|
|
57
|
+
if let ms = coldStartMs {
|
|
58
|
+
return NSNumber(value: ms)
|
|
59
|
+
}
|
|
60
|
+
return nil
|
|
61
|
+
}
|
|
62
|
+
|
|
63
|
+
/// Start frame budget watch. Idempotent. Hooks CADisplayLink on
|
|
64
|
+
/// the main run loop's common modes so it ticks even during
|
|
65
|
+
/// scroll views.
|
|
66
|
+
@objc public static func startFrameWatch() {
|
|
67
|
+
if displayLink != nil { return }
|
|
68
|
+
DispatchQueue.main.async {
|
|
69
|
+
let link = CADisplayLink(target: self, selector: #selector(onFrame(_:)))
|
|
70
|
+
link.add(to: .main, forMode: .common)
|
|
71
|
+
displayLink = link
|
|
72
|
+
}
|
|
73
|
+
}
|
|
74
|
+
|
|
75
|
+
@objc public static func stopFrameWatch() {
|
|
76
|
+
displayLink?.invalidate()
|
|
77
|
+
displayLink = nil
|
|
78
|
+
}
|
|
79
|
+
|
|
80
|
+
@objc public static func getFrameCounters() -> NSDictionary? {
|
|
81
|
+
return [
|
|
82
|
+
"slow": slowFrames,
|
|
83
|
+
"frozen": frozenFrames,
|
|
84
|
+
]
|
|
85
|
+
}
|
|
86
|
+
|
|
87
|
+
@objc public static func resetFrameCounters() {
|
|
88
|
+
slowFrames = 0
|
|
89
|
+
frozenFrames = 0
|
|
90
|
+
}
|
|
91
|
+
|
|
92
|
+
@objc private static func onFrame(_ link: CADisplayLink) {
|
|
93
|
+
let now = link.timestamp
|
|
94
|
+
if lastFrameTimestamp != 0 {
|
|
95
|
+
let deltaMs = (now - lastFrameTimestamp) * 1000.0
|
|
96
|
+
if deltaMs >= FROZEN_FRAME_MS {
|
|
97
|
+
frozenFrames += 1
|
|
98
|
+
} else if deltaMs >= SLOW_FRAME_MS {
|
|
99
|
+
slowFrames += 1
|
|
100
|
+
}
|
|
101
|
+
}
|
|
102
|
+
lastFrameTimestamp = now
|
|
103
|
+
}
|
|
104
|
+
}
|
package/ios/SentoriModule.swift
CHANGED
|
@@ -14,6 +14,23 @@ public class SentoriModule: Module {
|
|
|
14
14
|
|
|
15
15
|
OnCreate {
|
|
16
16
|
SentoriCrashHandler.register()
|
|
17
|
+
// v0.9.4 #1 — capture cold-start anchor + start frame watch.
|
|
18
|
+
SentoriMobileVitals.registerColdStartAnchor()
|
|
19
|
+
SentoriMobileVitals.startFrameWatch()
|
|
20
|
+
}
|
|
21
|
+
|
|
22
|
+
// v0.9.4 #1 — Mobile Vitals exposure.
|
|
23
|
+
Function("markJsBridgeReady") {
|
|
24
|
+
SentoriMobileVitals.markJsBridgeReady()
|
|
25
|
+
}
|
|
26
|
+
Function("getColdStartMs") { () -> Double? in
|
|
27
|
+
return SentoriMobileVitals.getColdStartMs()?.doubleValue
|
|
28
|
+
}
|
|
29
|
+
Function("getFrameCounters") { () -> [String: Any]? in
|
|
30
|
+
return SentoriMobileVitals.getFrameCounters() as? [String: Any]
|
|
31
|
+
}
|
|
32
|
+
Function("resetFrameCounters") {
|
|
33
|
+
SentoriMobileVitals.resetFrameCounters()
|
|
17
34
|
}
|
|
18
35
|
|
|
19
36
|
Function("setConfig") { (config: [String: Any]) in
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"feedback-widget.d.ts","sourceRoot":"","sources":["../src/feedback-widget.tsx"],"names":[],"mappings":"AAYA,OAAO,KAON,MAAM,OAAO,CAAC;
|
|
1
|
+
{"version":3,"file":"feedback-widget.d.ts","sourceRoot":"","sources":["../src/feedback-widget.tsx"],"names":[],"mappings":"AAYA,OAAO,KAON,MAAM,OAAO,CAAC;AAaf,KAAK,OAAO,GAAG,KAAK,GAAG,QAAQ,GAAG,OAAO,CAAC;AAE1C,MAAM,MAAM,oBAAoB,GAAG;IACjC,oDAAoD;IACpD,IAAI,EAAE,CAAC,QAAQ,CAAC,EAAE;QAAE,IAAI,CAAC,EAAE,MAAM,CAAC;QAAC,OAAO,CAAC,EAAE,MAAM,CAAC;QAAC,KAAK,CAAC,EAAE,MAAM,CAAA;KAAE,KAAK,IAAI,CAAC;IAC/E,+BAA+B;IAC/B,KAAK,EAAE,MAAM,IAAI,CAAC;CACnB,CAAC;AAEF,MAAM,MAAM,mBAAmB,GAAG;IAChC,mDAAmD;IACnD,OAAO,CAAC,EAAE,OAAO,CAAC;IAClB;0CACsC;IACtC,OAAO,CAAC,EAAE,MAAM,CAAC;IACjB,+CAA+C;IAC/C,MAAM,CAAC,EAAE;QACP,KAAK,CAAC,EAAE,MAAM,CAAC;QACf,eAAe,CAAC,EAAE,MAAM,CAAC;QACzB,gBAAgB,CAAC,EAAE,MAAM,CAAC;QAC1B,MAAM,CAAC,EAAE,MAAM,CAAC;QAChB,MAAM,CAAC,EAAE,MAAM,CAAC;QAChB,IAAI,CAAC,EAAE,MAAM,CAAC;KACf,CAAC;IACF;;6BAEyB;IACzB,cAAc,CAAC,EAAE,MAAM,CAAC;CACzB,CAAC;AAEF,eAAO,MAAM,cAAc,kGAsK1B,CAAC"}
|
package/lib/feedback-widget.js
CHANGED
|
@@ -13,6 +13,7 @@ import { jsx as _jsx, jsxs as _jsxs, Fragment as _Fragment } from "react/jsx-run
|
|
|
13
13
|
import { forwardRef, useCallback, useEffect, useImperativeHandle, useRef, useState, } from 'react';
|
|
14
14
|
import { Modal, Pressable, StyleSheet, Text, TextInput, View, } from 'react-native';
|
|
15
15
|
import { sendUserFeedback } from './capture';
|
|
16
|
+
import { isAnyNativeModuleLinked } from './native-loader';
|
|
16
17
|
export const FeedbackButton = forwardRef(function FeedbackButton(props, ref) {
|
|
17
18
|
const trigger = props.trigger ?? 'fab';
|
|
18
19
|
const [open, setOpen] = useState(false);
|
|
@@ -33,10 +34,16 @@ export const FeedbackButton = forwardRef(function FeedbackButton(props, ref) {
|
|
|
33
34
|
close: () => setOpen(false),
|
|
34
35
|
}), [props.eventId]);
|
|
35
36
|
// Shake detection — opt-in. We load expo-sensors lazily so apps
|
|
36
|
-
// that don't install it never pay the bundle cost.
|
|
37
|
+
// that don't install it never pay the bundle cost. Same native
|
|
38
|
+
// module guard as netinfo: if the JS package is in node_modules
|
|
39
|
+
// but native bridge isn't linked we'd otherwise crash inside the
|
|
40
|
+
// sensor emitter.
|
|
37
41
|
useEffect(() => {
|
|
38
42
|
if (trigger !== 'shake')
|
|
39
43
|
return;
|
|
44
|
+
if (!isAnyNativeModuleLinked(['ExponentAccelerometer', 'EXAccelerometer', 'ExpoAccelerometer'])) {
|
|
45
|
+
return;
|
|
46
|
+
}
|
|
40
47
|
let sub = null;
|
|
41
48
|
try {
|
|
42
49
|
// eslint-disable-next-line @typescript-eslint/no-require-imports
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"feedback-widget.js","sourceRoot":"","sources":["../src/feedback-widget.tsx"],"names":[],"mappings":";AAAA,+BAA+B;AAC/B,EAAE;AACF,kEAAkE;AAClE,+DAA+D;AAC/D,gEAAgE;AAChE,iEAAiE;AACjE,8DAA8D;AAC9D,4DAA4D;AAC5D,EAAE;AACF,kEAAkE;AAClE,iEAAiE;AAEjE,OAAc,EACZ,UAAU,EACV,WAAW,EACX,SAAS,EACT,mBAAmB,EACnB,MAAM,EACN,QAAQ,GACT,MAAM,OAAO,CAAC;AACf,OAAO,EACL,KAAK,EACL,SAAS,EACT,UAAU,EACV,IAAI,EACJ,SAAS,EACT,IAAI,GACL,MAAM,cAAc,CAAC;AAEtB,OAAO,EAAE,gBAAgB,EAAE,MAAM,WAAW,CAAC;
|
|
1
|
+
{"version":3,"file":"feedback-widget.js","sourceRoot":"","sources":["../src/feedback-widget.tsx"],"names":[],"mappings":"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"}
|
package/lib/index.d.ts
CHANGED
|
@@ -2,6 +2,7 @@ import { ErrorBoundary } from './error-boundary';
|
|
|
2
2
|
import { type FeedbackButtonHandle, type FeedbackButtonProps } from './feedback-widget';
|
|
3
3
|
import { clearMaskQuery, registerMaskQuery } from './mask';
|
|
4
4
|
import { measureFn } from './measure';
|
|
5
|
+
import { getColdStartMs, markTimeToFullDisplay } from './mobile-vitals';
|
|
5
6
|
import { bindState, recordState, unbindState } from './state-snapshots';
|
|
6
7
|
import { startMoment } from '@goliapkg/sentori-core';
|
|
7
8
|
import { flushMetrics, recordMetric } from './metrics';
|
|
@@ -31,6 +32,8 @@ export declare const sentori: {
|
|
|
31
32
|
bindState: typeof bindState;
|
|
32
33
|
recordState: typeof recordState;
|
|
33
34
|
unbindState: typeof unbindState;
|
|
35
|
+
markTimeToFullDisplay: typeof markTimeToFullDisplay;
|
|
36
|
+
getColdStartMs: typeof getColdStartMs;
|
|
34
37
|
setFeatureFlag: (name: string, value: string) => void;
|
|
35
38
|
clearFeatureFlag: (name: string) => void;
|
|
36
39
|
clearAllFeatureFlags: () => void;
|
|
@@ -54,6 +57,7 @@ export { clearAllFeatureFlags, clearFeatureFlag, getFeatureFlags, setFeatureFlag
|
|
|
54
57
|
export { clearMaskQuery, registerMaskQuery } from './mask';
|
|
55
58
|
export { flushMetrics, recordMetric } from './metrics';
|
|
56
59
|
export { measureFn } from './measure';
|
|
60
|
+
export { getColdStartMs, markTimeToFullDisplay, type TimeToFullDisplayHandle, } from './mobile-vitals';
|
|
57
61
|
export { MomentHandle, type MomentProperties, startMoment } from '@goliapkg/sentori-core';
|
|
58
62
|
export { bindState, recordState, type StateSnapshot, unbindState, } from './state-snapshots';
|
|
59
63
|
export { RageTapCapture } from './rage-tap';
|
package/lib/index.d.ts.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":"AAUA,OAAO,EAAE,aAAa,EAAE,MAAM,kBAAkB,CAAC;AACjD,OAAO,EAAkB,KAAK,oBAAoB,EAAE,KAAK,mBAAmB,EAAE,MAAM,mBAAmB,CAAC;AAOxG,OAAO,EAAE,cAAc,EAAE,iBAAiB,EAAE,MAAM,QAAQ,CAAC;AAC3D,OAAO,EAAE,SAAS,EAAE,MAAM,WAAW,CAAC;AACtC,OAAO,EAAE,SAAS,EAAE,WAAW,EAAE,WAAW,EAAE,MAAM,mBAAmB,CAAC;AACxE,OAAO,EAAE,WAAW,EAAE,MAAM,wBAAwB,CAAC;AACrD,OAAO,EAAE,YAAY,EAAE,YAAY,EAAE,MAAM,WAAW,CAAC;AACvD,OAAO,EAAE,cAAc,EAAE,MAAM,YAAY,CAAC;AAO5C,eAAO,MAAM,OAAO;;;;;;;;;;
|
|
1
|
+
{"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":"AAUA,OAAO,EAAE,aAAa,EAAE,MAAM,kBAAkB,CAAC;AACjD,OAAO,EAAkB,KAAK,oBAAoB,EAAE,KAAK,mBAAmB,EAAE,MAAM,mBAAmB,CAAC;AAOxG,OAAO,EAAE,cAAc,EAAE,iBAAiB,EAAE,MAAM,QAAQ,CAAC;AAC3D,OAAO,EAAE,SAAS,EAAE,MAAM,WAAW,CAAC;AACtC,OAAO,EACL,cAAc,EACd,qBAAqB,EAEtB,MAAM,iBAAiB,CAAC;AACzB,OAAO,EAAE,SAAS,EAAE,WAAW,EAAE,WAAW,EAAE,MAAM,mBAAmB,CAAC;AACxE,OAAO,EAAE,WAAW,EAAE,MAAM,wBAAwB,CAAC;AACrD,OAAO,EAAE,YAAY,EAAE,YAAY,EAAE,MAAM,WAAW,CAAC;AACvD,OAAO,EAAE,cAAc,EAAE,MAAM,YAAY,CAAC;AAO5C,eAAO,MAAM,OAAO;;;;;;;;;;aA8F0B,CAAC;eAAmB,CAAC;YAAgB,CAAC;;;;;;;;;;;;;;;;;;;;;;;;;;;CAhEnF,CAAC;AAEF,eAAe,OAAO,CAAC;AAEvB,OAAO,EAAE,IAAI,EAAE,IAAI,IAAI,WAAW,EAAE,MAAM,QAAQ,CAAC;AACnD,OAAO,EAAE,aAAa,EAAE,MAAM,eAAe,CAAC;AAC9C,OAAO,EACL,YAAY,EACZ,gBAAgB,EAChB,WAAW,EACX,OAAO,EACP,gBAAgB,EAChB,OAAO,GACR,MAAM,WAAW,CAAC;AACnB,OAAO,EAAE,aAAa,EAAE,MAAM,kBAAkB,CAAC;AACjD,OAAO,EAAE,cAAc,EAAE,KAAK,oBAAoB,EAAE,KAAK,mBAAmB,EAAE,MAAM,mBAAmB,CAAC;AACxG,OAAO,EACL,oBAAoB,EACpB,gBAAgB,EAChB,eAAe,EACf,cAAc,GACf,MAAM,iBAAiB,CAAC;AACzB,OAAO,EAAE,cAAc,EAAE,iBAAiB,EAAE,MAAM,QAAQ,CAAC;AAC3D,OAAO,EAAE,YAAY,EAAE,YAAY,EAAE,MAAM,WAAW,CAAC;AACvD,OAAO,EAAE,SAAS,EAAE,MAAM,WAAW,CAAC;AACtC,OAAO,EACL,cAAc,EACd,qBAAqB,EACrB,KAAK,uBAAuB,GAC7B,MAAM,iBAAiB,CAAC;AACzB,OAAO,EAAE,YAAY,EAAE,KAAK,gBAAgB,EAAE,WAAW,EAAE,MAAM,wBAAwB,CAAC;AAC1F,OAAO,EACL,SAAS,EACT,WAAW,EACX,KAAK,aAAa,EAClB,WAAW,GACZ,MAAM,mBAAmB,CAAC;AAC3B,OAAO,EAAE,cAAc,EAAE,MAAM,YAAY,CAAC;AAC5C,OAAO,EACL,gBAAgB,EAChB,eAAe,EACf,kBAAkB,GACnB,MAAM,UAAU,CAAC;AAClB,OAAO,EACL,UAAU,EACV,kBAAkB,EAClB,YAAY,GACb,MAAM,mBAAmB,CAAC;AAC3B,OAAO,EAAE,KAAK,iBAAiB,EAAE,kBAAkB,EAAE,MAAM,cAAc,CAAC;AAE1E,YAAY,EACV,KAAK,EACL,YAAY,EACZ,KAAK,EACL,UAAU,EACV,cAAc,EACd,MAAM,EACN,QAAQ,EACR,GAAG,EACH,IAAI,EACJ,IAAI,EACJ,SAAS,EACT,QAAQ,GACT,MAAM,SAAS,CAAC"}
|
package/lib/index.js
CHANGED
|
@@ -6,6 +6,7 @@ import { FeedbackButton } from './feedback-widget';
|
|
|
6
6
|
import { clearAllFeatureFlags, clearFeatureFlag, getFeatureFlags, setFeatureFlag, } from './feature-flags';
|
|
7
7
|
import { clearMaskQuery, registerMaskQuery } from './mask';
|
|
8
8
|
import { measureFn } from './measure';
|
|
9
|
+
import { getColdStartMs, markTimeToFullDisplay, } from './mobile-vitals';
|
|
9
10
|
import { bindState, recordState, unbindState } from './state-snapshots';
|
|
10
11
|
import { startMoment } from '@goliapkg/sentori-core';
|
|
11
12
|
import { flushMetrics, recordMetric } from './metrics';
|
|
@@ -27,6 +28,8 @@ export const sentori = {
|
|
|
27
28
|
bindState,
|
|
28
29
|
recordState,
|
|
29
30
|
unbindState,
|
|
31
|
+
markTimeToFullDisplay,
|
|
32
|
+
getColdStartMs,
|
|
30
33
|
setFeatureFlag,
|
|
31
34
|
clearFeatureFlag,
|
|
32
35
|
clearAllFeatureFlags,
|
|
@@ -50,6 +53,7 @@ export { clearAllFeatureFlags, clearFeatureFlag, getFeatureFlags, setFeatureFlag
|
|
|
50
53
|
export { clearMaskQuery, registerMaskQuery } from './mask';
|
|
51
54
|
export { flushMetrics, recordMetric } from './metrics';
|
|
52
55
|
export { measureFn } from './measure';
|
|
56
|
+
export { getColdStartMs, markTimeToFullDisplay, } from './mobile-vitals';
|
|
53
57
|
export { MomentHandle, startMoment } from '@goliapkg/sentori-core';
|
|
54
58
|
export { bindState, recordState, unbindState, } from './state-snapshots';
|
|
55
59
|
export { RageTapCapture } from './rage-tap';
|
package/lib/index.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"index.js","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,IAAI,EAAE,MAAM,QAAQ,CAAC;AAC9B,OAAO,EAAE,aAAa,EAAE,MAAM,eAAe,CAAC;AAC9C,OAAO,EACL,YAAY,EACZ,gBAAgB,EAChB,WAAW,EACX,OAAO,EACP,gBAAgB,EAChB,OAAO,GACR,MAAM,WAAW,CAAC;AACnB,OAAO,EAAE,aAAa,EAAE,MAAM,kBAAkB,CAAC;AACjD,OAAO,EAAE,cAAc,EAAuD,MAAM,mBAAmB,CAAC;AACxG,OAAO,EACL,oBAAoB,EACpB,gBAAgB,EAChB,eAAe,EACf,cAAc,GACf,MAAM,iBAAiB,CAAC;AACzB,OAAO,EAAE,cAAc,EAAE,iBAAiB,EAAE,MAAM,QAAQ,CAAC;AAC3D,OAAO,EAAE,SAAS,EAAE,MAAM,WAAW,CAAC;AACtC,OAAO,EAAE,SAAS,EAAE,WAAW,EAAE,WAAW,EAAE,MAAM,mBAAmB,CAAC;AACxE,OAAO,EAAE,WAAW,EAAE,MAAM,wBAAwB,CAAC;AACrD,OAAO,EAAE,YAAY,EAAE,YAAY,EAAE,MAAM,WAAW,CAAC;AACvD,OAAO,EAAE,cAAc,EAAE,MAAM,YAAY,CAAC;AAC5C,OAAO,EACL,UAAU,EACV,kBAAkB,EAClB,YAAY,GACb,MAAM,mBAAmB,CAAC;AAE3B,MAAM,CAAC,MAAM,OAAO,GAAG;IACrB,IAAI;IACJ,aAAa;IACb,OAAO;IACP,OAAO;IACP,YAAY;IACZ,gBAAgB;IAChB,WAAW;IACX,gBAAgB;IAChB,YAAY;IACZ,YAAY;IACZ,SAAS;IACT,WAAW;IACX,SAAS;IACT,WAAW;IACX,WAAW;IACX,cAAc;IACd,gBAAgB;IAChB,oBAAoB;IACpB,eAAe;IACf,aAAa;IACb,cAAc;IACd,cAAc;IACd,iBAAiB;IACjB,cAAc;IACd,YAAY;IACZ,UAAU;IACV,kBAAkB;CACnB,CAAC;AAEF,eAAe,OAAO,CAAC;AAEvB,OAAO,EAAE,IAAI,EAAE,IAAI,IAAI,WAAW,EAAE,MAAM,QAAQ,CAAC;AACnD,OAAO,EAAE,aAAa,EAAE,MAAM,eAAe,CAAC;AAC9C,OAAO,EACL,YAAY,EACZ,gBAAgB,EAChB,WAAW,EACX,OAAO,EACP,gBAAgB,EAChB,OAAO,GACR,MAAM,WAAW,CAAC;AACnB,OAAO,EAAE,aAAa,EAAE,MAAM,kBAAkB,CAAC;AACjD,OAAO,EAAE,cAAc,EAAuD,MAAM,mBAAmB,CAAC;AACxG,OAAO,EACL,oBAAoB,EACpB,gBAAgB,EAChB,eAAe,EACf,cAAc,GACf,MAAM,iBAAiB,CAAC;AACzB,OAAO,EAAE,cAAc,EAAE,iBAAiB,EAAE,MAAM,QAAQ,CAAC;AAC3D,OAAO,EAAE,YAAY,EAAE,YAAY,EAAE,MAAM,WAAW,CAAC;AACvD,OAAO,EAAE,SAAS,EAAE,MAAM,WAAW,CAAC;AACtC,OAAO,EAAE,YAAY,EAAyB,WAAW,EAAE,MAAM,wBAAwB,CAAC;AAC1F,OAAO,EACL,SAAS,EACT,WAAW,EAEX,WAAW,GACZ,MAAM,mBAAmB,CAAC;AAC3B,OAAO,EAAE,cAAc,EAAE,MAAM,YAAY,CAAC;AAC5C,OAAO,EACL,gBAAgB,EAChB,eAAe,EACf,kBAAkB,GACnB,MAAM,UAAU,CAAC;AAClB,OAAO,EACL,UAAU,EACV,kBAAkB,EAClB,YAAY,GACb,MAAM,mBAAmB,CAAC;AAC3B,OAAO,EAA0B,kBAAkB,EAAE,MAAM,cAAc,CAAC"}
|
|
1
|
+
{"version":3,"file":"index.js","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":"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"}
|
package/lib/init.d.ts.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"init.d.ts","sourceRoot":"","sources":["../src/init.ts"],"names":[],"mappings":"
|
|
1
|
+
{"version":3,"file":"init.d.ts","sourceRoot":"","sources":["../src/init.ts"],"names":[],"mappings":"AAeA,OAAO,EAAyB,KAAK,eAAe,EAAE,MAAM,sBAAsB,CAAC;AAQnF,OAAO,KAAK,EAAkB,cAAc,EAA2B,MAAM,SAAS,CAAC;AAIvF,MAAM,MAAM,WAAW,GAAG;IACxB,sDAAsD;IACtD,KAAK,EAAE,MAAM,CAAC;IACd,4DAA4D;IAC5D,OAAO,EAAE,MAAM,CAAC;IAChB,sEAAsE;IACtE,WAAW,CAAC,EAAE,MAAM,CAAC;IACrB,qFAAqF;IACrF,SAAS,CAAC,EAAE,MAAM,CAAC;IACnB,iEAAiE;IACjE,OAAO,CAAC,EAAE;QACR,YAAY,CAAC,EAAE,OAAO,CAAC;QACvB,iBAAiB,CAAC,EAAE,OAAO,CAAC;QAC5B,OAAO,CAAC,EACJ,OAAO,GACP;YACE;;qEAEyD;YACzD,OAAO,CAAC,EAAE,OAAO,CAAC;SACnB,CAAC;QACN;;8DAEsD;QACtD,QAAQ,CAAC,EAAE,OAAO,CAAC;QACnB;;;;;;;uBAOe;QACf,UAAU,CAAC,EAAE,OAAO,CAAC;QACrB;;;6CAGqC;QACrC,YAAY,CAAC,EAAE,OAAO,CAAC;QACvB;;;;6CAIqC;QACrC,gBAAgB,CAAC,EAAE,OAAO,CAAC;QAC3B,gBAAgB,CAAC,EAAE,eAAe,EAAE,CAAC;QACrC;;;sEAG8D;QAC9D,gBAAgB,CAAC,EAAE;YACjB,OAAO,EAAE,OAAO,CAAC;YACjB,qBAAqB,CAAC,EAAE,CACtB,IAAI,EAAE,OAAO,sBAAsB,EAAE,eAAe,KAElD,OAAO,sBAAsB,EAAE,iBAAiB,GAChD,OAAO,CAAC,OAAO,sBAAsB,EAAE,iBAAiB,CAAC,CAAC;YAC9D,SAAS,CAAC,EAAE,MAAM,CAAC;YACnB,SAAS,CAAC,EAAE,MAAM,CAAC;SACpB,CAAC;KACH,CAAC;IACF;;;;;gEAK4D;IAC5D,QAAQ,CAAC,EAAE;QACT,MAAM,CAAC,EAAE,IAAI,GAAG,MAAM,CAAC;QACvB,MAAM,CAAC,EAAE,IAAI,GAAG,MAAM,CAAC;KACxB,CAAC;CACH,CAAC;AAIF,eAAO,MAAM,IAAI,GAAI,SAAS,WAAW,KAAG,IA8I3C,CAAC;AAiBF,YAAY,EAAE,cAAc,EAAE,CAAC"}
|
package/lib/init.js
CHANGED
|
@@ -6,7 +6,9 @@ import { installNetworkHandler } from './handlers/network';
|
|
|
6
6
|
import { getBundleInfo } from './bundle-info';
|
|
7
7
|
import { markLaunchCompleted, runLaunchCrashGuard, } from './launch-crash-guard';
|
|
8
8
|
import { startMetricsTimer } from './metrics';
|
|
9
|
-
import { drainNativePending, setNativeConfig } from './native';
|
|
9
|
+
import { drainNativePending, markNativeJsBridgeReady, setNativeConfig } from './native';
|
|
10
|
+
import { getColdStartMs } from './mobile-vitals';
|
|
11
|
+
import { startSpan } from '@goliapkg/sentori-core';
|
|
10
12
|
import { startNetworkTypeWatch } from './netinfo';
|
|
11
13
|
import { startPreCrashSentinel } from './pre-crash-sentinel';
|
|
12
14
|
import { startSession } from './session-tracker';
|
|
@@ -47,6 +49,24 @@ export const init = (options) => {
|
|
|
47
49
|
release: options.release,
|
|
48
50
|
environment: env,
|
|
49
51
|
});
|
|
52
|
+
// v0.9.4 #1 — finalize cold-start measurement. iOS uses the
|
|
53
|
+
// delta from `applicationDidFinishLaunching` to this call;
|
|
54
|
+
// Android uses Process.getStartElapsedRealtime() so the value is
|
|
55
|
+
// computed at this point and cached.
|
|
56
|
+
markNativeJsBridgeReady();
|
|
57
|
+
// Emit a one-off cold-start span. Server aggregates these per
|
|
58
|
+
// release for the Mobile Vitals dashboard. No-op when native
|
|
59
|
+
// module isn't linked.
|
|
60
|
+
const coldMs = getColdStartMs();
|
|
61
|
+
if (coldMs !== null && coldMs > 0 && coldMs < 60_000) {
|
|
62
|
+
const span = startSpan('sentori.cold_start', {
|
|
63
|
+
name: 'cold-start',
|
|
64
|
+
parent: null,
|
|
65
|
+
startNowMs: Date.now() - coldMs,
|
|
66
|
+
tags: { 'vital.kind': 'cold_start' },
|
|
67
|
+
});
|
|
68
|
+
span.finish({ status: 'ok' });
|
|
69
|
+
}
|
|
50
70
|
startTransport();
|
|
51
71
|
// v0.8.0-c — start watching network class. No-op if NetInfo isn't
|
|
52
72
|
// installed; events just won't carry `device.networkType` in that
|
package/lib/init.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"init.js","sourceRoot":"","sources":["../src/init.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,SAAS,EAAE,MAAM,UAAU,CAAC;AACrC,OAAO,EAAE,oBAAoB,EAAE,MAAM,mBAAmB,CAAC;AACzD,OAAO,EAAE,uBAAuB,EAAE,MAAM,sBAAsB,CAAC;AAC/D,OAAO,EAAE,qBAAqB,EAAE,MAAM,oBAAoB,CAAC;AAC3D,OAAO,EAAE,qBAAqB,EAAE,MAAM,oBAAoB,CAAC;AAC3D,OAAO,EAAE,aAAa,EAAE,MAAM,eAAe,CAAC;AAC9C,OAAO,EACL,mBAAmB,EACnB,mBAAmB,GACpB,MAAM,sBAAsB,CAAC;AAC9B,OAAO,EAAE,iBAAiB,EAAE,MAAM,WAAW,CAAC;AAC9C,OAAO,EAAE,kBAAkB,EAAE,eAAe,EAAE,MAAM,UAAU,CAAC;
|
|
1
|
+
{"version":3,"file":"init.js","sourceRoot":"","sources":["../src/init.ts"],"names":[],"mappings":"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"}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"launch-crash-guard.d.ts","sourceRoot":"","sources":["../src/launch-crash-guard.ts"],"names":[],"mappings":"
|
|
1
|
+
{"version":3,"file":"launch-crash-guard.d.ts","sourceRoot":"","sources":["../src/launch-crash-guard.ts"],"names":[],"mappings":"AAyBA,MAAM,MAAM,eAAe,GAAG;IAC5B,wEAAwE;IACxE,gBAAgB,EAAE,MAAM,CAAC;IACzB,sDAAsD;IACtD,aAAa,EAAE,IAAI,GAAG,MAAM,CAAC;IAC7B,oEAAoE;IACpE,cAAc,EAAE,IAAI,GAAG,MAAM,CAAC;IAC9B,mDAAmD;IACnD,OAAO,EAAE,MAAM,CAAC;CACjB,CAAC;AAEF,MAAM,MAAM,iBAAiB,GACzB;IAAE,MAAM,EAAE,UAAU,CAAA;CAAE,GACtB;IAAE,MAAM,EAAE,OAAO,CAAC;IAAC,SAAS,EAAE,MAAM,EAAE,CAAA;CAAE,GACxC;IAAE,MAAM,EAAE,UAAU,CAAC;IAAC,QAAQ,CAAC,EAAE,IAAI,GAAG,MAAM,CAAA;CAAE,CAAC;AAErD,MAAM,MAAM,uBAAuB,GAAG;IACpC,OAAO,EAAE,OAAO,CAAC;IACjB,qBAAqB,CAAC,EAAE,CAAC,IAAI,EAAE,eAAe,KAAK,iBAAiB,GAAG,OAAO,CAAC,iBAAiB,CAAC,CAAC;IAClG,oEAAoE;IACpE,SAAS,CAAC,EAAE,MAAM,CAAC;IACnB,iCAAiC;IACjC,SAAS,CAAC,EAAE,MAAM,CAAC;CACpB,CAAC;AA4BF;;mCAEmC;AACnC,wBAAsB,mBAAmB,CACvC,IAAI,EAAE,uBAAuB,EAC7B,OAAO,EAAE,MAAM,EACf,eAAe,EAAE,IAAI,GAAG,MAAM,GAC7B,OAAO,CAAC;IAAE,kBAAkB,EAAE,OAAO,CAAC;IAAC,IAAI,CAAC,EAAE,eAAe,CAAA;CAAE,CAAC,CAyDlE;AAED,wBAAsB,mBAAmB,CAAC,eAAe,EAAE,IAAI,GAAG,MAAM,GAAG,OAAO,CAAC,IAAI,CAAC,CAYvF;AAyCD,wBAAgB,eAAe,CAAC,CAAC,EAAE,CAAC,EAAE,OAAO,CAAC,CAAC,CAAC,EAAE,EAAE,EAAE,MAAM,EAAE,QAAQ,EAAE,CAAC,GAAG,OAAO,CAAC,CAAC,CAAC,CA0BrF"}
|
|
@@ -16,10 +16,18 @@
|
|
|
16
16
|
// bridge is up (almost every OTA-induced launch crash). v0.9.1 will
|
|
17
17
|
// add a native marker for the small set of "crashed before bridge"
|
|
18
18
|
// cases.
|
|
19
|
+
import { isAnyNativeModuleLinked } from './native-loader';
|
|
19
20
|
const MARKER_KEY = '@sentori/launch_marker';
|
|
20
21
|
const COMPLETED_KEY = '@sentori/launch_completed';
|
|
21
22
|
const COUNT_KEY = '@sentori/launch_crash_count';
|
|
22
23
|
function loadAsyncStorage() {
|
|
24
|
+
// v0.8.5 — same NativeModule guard as netinfo/transport. The
|
|
25
|
+
// require() can succeed without the native module linked, but
|
|
26
|
+
// getItem will crash from a microtask path our try/catch can't
|
|
27
|
+
// reach.
|
|
28
|
+
if (!isAnyNativeModuleLinked(['RNCAsyncStorage', 'AsyncStorageModule'])) {
|
|
29
|
+
return null;
|
|
30
|
+
}
|
|
23
31
|
try {
|
|
24
32
|
// eslint-disable-next-line @typescript-eslint/no-require-imports
|
|
25
33
|
const mod = require('@react-native-async-storage/async-storage');
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"launch-crash-guard.js","sourceRoot":"","sources":["../src/launch-crash-guard.ts"],"names":[],"mappings":"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"}
|
|
1
|
+
{"version":3,"file":"launch-crash-guard.js","sourceRoot":"","sources":["../src/launch-crash-guard.ts"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1,35 @@
|
|
|
1
|
+
/** Read the native-side cold start measurement once. Cached. Returns
|
|
2
|
+
* null when the native module isn't linked (Expo Go / tests). */
|
|
3
|
+
export declare function getColdStartMs(): null | number;
|
|
4
|
+
/**
|
|
5
|
+
* v0.9.4 #1 — Time-To-Full-Display marker. Host calls this at the
|
|
6
|
+
* point the screen is functionally "ready" (data fetched, images
|
|
7
|
+
* loaded, etc.) so the dashboard can show real perceived load time
|
|
8
|
+
* vs auto-detected TTID.
|
|
9
|
+
*
|
|
10
|
+
* const h = sentori.markTimeToFullDisplay('Home');
|
|
11
|
+
* // ...data fetched, images rendered...
|
|
12
|
+
* h.end();
|
|
13
|
+
*
|
|
14
|
+
* If `.end()` is never called, the handle's span is finished as
|
|
15
|
+
* `cancelled` at the next `markTimeToFullDisplay` call (one TTFD in
|
|
16
|
+
* flight at a time is the typical case).
|
|
17
|
+
*/
|
|
18
|
+
export type TimeToFullDisplayHandle = {
|
|
19
|
+
end: (opts?: {
|
|
20
|
+
status?: 'cancelled' | 'error' | 'ok';
|
|
21
|
+
}) => void;
|
|
22
|
+
cancel: () => void;
|
|
23
|
+
};
|
|
24
|
+
export declare function markTimeToFullDisplay(route: string): TimeToFullDisplayHandle;
|
|
25
|
+
/** v0.9.4 #1 — read the per-screen slow/frozen frame counts since
|
|
26
|
+
* the most recent navigation transition. Native module reads
|
|
27
|
+
* CADisplayLink / Choreographer counters; returns null when not
|
|
28
|
+
* linked. */
|
|
29
|
+
export declare function getFrameCounters(): null | {
|
|
30
|
+
slow: number;
|
|
31
|
+
frozen: number;
|
|
32
|
+
};
|
|
33
|
+
/** Test-only. */
|
|
34
|
+
export declare function __resetMobileVitalsForTests(): void;
|
|
35
|
+
//# sourceMappingURL=mobile-vitals.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"mobile-vitals.d.ts","sourceRoot":"","sources":["../src/mobile-vitals.ts"],"names":[],"mappings":"AA6BA;kEACkE;AAClE,wBAAgB,cAAc,IAAI,IAAI,GAAG,MAAM,CAS9C;AAED;;;;;;;;;;;;;GAaG;AACH,MAAM,MAAM,uBAAuB,GAAG;IACpC,GAAG,EAAE,CAAC,IAAI,CAAC,EAAE;QAAE,MAAM,CAAC,EAAE,WAAW,GAAG,OAAO,GAAG,IAAI,CAAA;KAAE,KAAK,IAAI,CAAC;IAChE,MAAM,EAAE,MAAM,IAAI,CAAC;CACpB,CAAC;AAOF,wBAAgB,qBAAqB,CAAC,KAAK,EAAE,MAAM,GAAG,uBAAuB,CAqB5E;AAED;;;cAGc;AACd,wBAAgB,gBAAgB,IAAI,IAAI,GAAG;IAAE,IAAI,EAAE,MAAM,CAAC;IAAC,MAAM,EAAE,MAAM,CAAA;CAAE,CAY1E;AAED,iBAAiB;AACjB,wBAAgB,2BAA2B,IAAI,IAAI,CAKlD"}
|