@goliapkg/sentori-react-native 4.0.0 → 5.0.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/build.gradle +21 -0
- package/android/src/main/java/com/sentori/SentoriCrashHandler.kt +29 -0
- package/android/src/test/java/com/sentori/SentoriCrashHandlerTest.kt +7 -2
- package/android/src/test/resources/robolectric.properties +10 -0
- package/lib/config.d.ts +16 -47
- package/lib/config.d.ts.map +1 -1
- package/lib/config.js +3 -0
- package/lib/config.js.map +1 -1
- package/lib/device.d.ts +5 -0
- package/lib/device.d.ts.map +1 -0
- package/lib/device.js +29 -0
- package/lib/device.js.map +1 -0
- package/lib/emit-hooks.d.ts +7 -0
- package/lib/emit-hooks.d.ts.map +1 -0
- package/lib/emit-hooks.js +24 -0
- package/lib/emit-hooks.js.map +1 -0
- package/lib/error-boundary.d.ts.map +1 -1
- package/lib/error-boundary.js +1 -1
- package/lib/error-boundary.js.map +1 -1
- package/lib/feature-flags.d.ts.map +1 -1
- package/lib/handlers/dev-symbolicate.d.ts +1 -1
- package/lib/handlers/dev-symbolicate.d.ts.map +1 -1
- package/lib/handlers/dev-symbolicate.js +2 -0
- package/lib/handlers/dev-symbolicate.js.map +1 -1
- package/lib/handlers/global.js +1 -1
- package/lib/handlers/global.js.map +1 -1
- package/lib/handlers/lifecycle.js +3 -3
- package/lib/handlers/lifecycle.js.map +1 -1
- package/lib/handlers/network.d.ts +2 -2
- package/lib/handlers/network.d.ts.map +1 -1
- package/lib/handlers/network.js +69 -187
- package/lib/handlers/network.js.map +1 -1
- package/lib/handlers/promise.js +1 -1
- package/lib/handlers/promise.js.map +1 -1
- package/lib/handlers/screenshot.d.ts.map +1 -1
- package/lib/handlers/screenshot.js +3 -12
- package/lib/handlers/screenshot.js.map +1 -1
- package/lib/index.d.ts +31 -109
- package/lib/index.d.ts.map +1 -1
- package/lib/index.js +51 -103
- package/lib/index.js.map +1 -1
- package/lib/init.d.ts +3 -150
- package/lib/init.d.ts.map +1 -1
- package/lib/init.js +88 -261
- package/lib/init.js.map +1 -1
- package/lib/long-task-monitor.d.ts +1 -7
- package/lib/long-task-monitor.d.ts.map +1 -1
- package/lib/long-task-monitor.js +37 -58
- package/lib/long-task-monitor.js.map +1 -1
- package/lib/mobile-vitals.d.ts +3 -31
- package/lib/mobile-vitals.d.ts.map +1 -1
- package/lib/mobile-vitals.js +22 -61
- package/lib/mobile-vitals.js.map +1 -1
- package/lib/native-pending.d.ts +3 -0
- package/lib/native-pending.d.ts.map +1 -0
- package/lib/native-pending.js +64 -0
- package/lib/native-pending.js.map +1 -0
- package/lib/navigation.d.ts +3 -17
- package/lib/navigation.d.ts.map +1 -1
- package/lib/navigation.js +32 -133
- package/lib/navigation.js.map +1 -1
- package/lib/netinfo.d.ts +1 -1
- package/lib/netinfo.d.ts.map +1 -1
- package/lib/netinfo.js +2 -2
- package/lib/netinfo.js.map +1 -1
- package/lib/push.d.ts.map +1 -1
- package/lib/push.js +2 -4
- package/lib/push.js.map +1 -1
- package/lib/rage-tap.d.ts.map +1 -1
- package/lib/rage-tap.js +28 -23
- package/lib/rage-tap.js.map +1 -1
- package/lib/replay.d.ts.map +1 -1
- package/lib/replay.js +3 -24
- package/lib/replay.js.map +1 -1
- package/lib/scope.d.ts +7 -0
- package/lib/scope.d.ts.map +1 -0
- package/lib/scope.js +41 -0
- package/lib/scope.js.map +1 -0
- package/lib/transport.d.ts +19 -92
- package/lib/transport.d.ts.map +1 -1
- package/lib/transport.js +75 -288
- package/lib/transport.js.map +1 -1
- package/lib/verbs.d.ts +16 -0
- package/lib/verbs.d.ts.map +1 -0
- package/lib/verbs.js +153 -0
- package/lib/verbs.js.map +1 -0
- package/package.json +3 -3
- package/src/__tests__/iron-rule.test.ts +128 -0
- package/src/__tests__/screenshot.test.ts +0 -2
- package/src/__tests__/transport.test.ts +66 -213
- package/src/__tests__/verbs.test.ts +91 -0
- package/src/config.ts +19 -47
- package/src/device.ts +36 -0
- package/src/emit-hooks.ts +30 -0
- package/src/error-boundary.tsx +1 -1
- package/src/handlers/dev-symbolicate.ts +2 -1
- package/src/handlers/global.ts +1 -1
- package/src/handlers/lifecycle.ts +3 -3
- package/src/handlers/network.ts +95 -211
- package/src/handlers/promise.ts +1 -1
- package/src/handlers/screenshot.ts +3 -11
- package/src/index.ts +81 -215
- package/src/init.ts +94 -446
- package/src/long-task-monitor.ts +42 -64
- package/src/mobile-vitals.ts +22 -82
- package/src/native-pending.ts +92 -0
- package/src/navigation.ts +34 -142
- package/src/netinfo.ts +3 -3
- package/src/push.ts +2 -5
- package/src/rage-tap.tsx +29 -26
- package/src/replay.ts +3 -20
- package/src/scope.ts +50 -0
- package/src/transport.ts +84 -371
- package/src/verbs.ts +198 -0
- package/lib/breadcrumbs.d.ts +0 -18
- package/lib/breadcrumbs.d.ts.map +0 -1
- package/lib/breadcrumbs.js +0 -42
- package/lib/breadcrumbs.js.map +0 -1
- package/lib/bundle-info.d.ts +0 -12
- package/lib/bundle-info.d.ts.map +0 -1
- package/lib/bundle-info.js +0 -73
- package/lib/bundle-info.js.map +0 -1
- package/lib/capture.d.ts +0 -140
- package/lib/capture.d.ts.map +0 -1
- package/lib/capture.js +0 -511
- package/lib/capture.js.map +0 -1
- package/lib/compat/sentry.d.ts +0 -126
- package/lib/compat/sentry.d.ts.map +0 -1
- package/lib/compat/sentry.js +0 -332
- package/lib/compat/sentry.js.map +0 -1
- package/lib/control-channel.d.ts +0 -6
- package/lib/control-channel.d.ts.map +0 -1
- package/lib/control-channel.js +0 -96
- package/lib/control-channel.js.map +0 -1
- package/lib/expo-compat.d.ts +0 -270
- package/lib/expo-compat.d.ts.map +0 -1
- package/lib/expo-compat.js +0 -500
- package/lib/expo-compat.js.map +0 -1
- package/lib/feedback-widget.d.ts +0 -35
- package/lib/feedback-widget.d.ts.map +0 -1
- package/lib/feedback-widget.js +0 -193
- package/lib/feedback-widget.js.map +0 -1
- package/lib/feedback.d.ts +0 -2
- package/lib/feedback.d.ts.map +0 -1
- package/lib/feedback.js +0 -17
- package/lib/feedback.js.map +0 -1
- package/lib/heartbeat.d.ts +0 -9
- package/lib/heartbeat.d.ts.map +0 -1
- package/lib/heartbeat.js +0 -138
- package/lib/heartbeat.js.map +0 -1
- package/lib/index.js.bak +0 -64
- package/lib/install-id.d.ts +0 -17
- package/lib/install-id.d.ts.map +0 -1
- package/lib/install-id.js +0 -125
- package/lib/install-id.js.map +0 -1
- package/lib/lifecycle.d.ts +0 -28
- package/lib/lifecycle.d.ts.map +0 -1
- package/lib/lifecycle.js +0 -73
- package/lib/lifecycle.js.map +0 -1
- package/lib/mask.d.ts +0 -16
- package/lib/mask.d.ts.map +0 -1
- package/lib/mask.js +0 -36
- package/lib/mask.js.map +0 -1
- package/lib/measure.d.ts +0 -4
- package/lib/measure.d.ts.map +0 -1
- package/lib/measure.js +0 -25
- package/lib/measure.js.map +0 -1
- package/lib/metrics.d.ts +0 -24
- package/lib/metrics.d.ts.map +0 -1
- package/lib/metrics.js +0 -81
- package/lib/metrics.js.map +0 -1
- package/lib/pre-crash-sentinel.d.ts +0 -12
- package/lib/pre-crash-sentinel.d.ts.map +0 -1
- package/lib/pre-crash-sentinel.js +0 -116
- package/lib/pre-crash-sentinel.js.map +0 -1
- package/lib/report-security.d.ts +0 -40
- package/lib/report-security.d.ts.map +0 -1
- package/lib/report-security.js +0 -159
- package/lib/report-security.js.map +0 -1
- package/lib/runtime-metrics-fps.d.ts +0 -19
- package/lib/runtime-metrics-fps.d.ts.map +0 -1
- package/lib/runtime-metrics-fps.js +0 -128
- package/lib/runtime-metrics-fps.js.map +0 -1
- package/lib/runtime-metrics-heap.d.ts +0 -13
- package/lib/runtime-metrics-heap.d.ts.map +0 -1
- package/lib/runtime-metrics-heap.js +0 -67
- package/lib/runtime-metrics-heap.js.map +0 -1
- package/lib/runtime-metrics-network.d.ts +0 -23
- package/lib/runtime-metrics-network.d.ts.map +0 -1
- package/lib/runtime-metrics-network.js +0 -99
- package/lib/runtime-metrics-network.js.map +0 -1
- package/lib/runtime-metrics.d.ts +0 -43
- package/lib/runtime-metrics.d.ts.map +0 -1
- package/lib/runtime-metrics.js +0 -115
- package/lib/runtime-metrics.js.map +0 -1
- package/lib/sample-profiler.d.ts +0 -21
- package/lib/sample-profiler.d.ts.map +0 -1
- package/lib/sample-profiler.js +0 -152
- package/lib/sample-profiler.js.map +0 -1
- package/lib/sentinel-context.d.ts +0 -4
- package/lib/sentinel-context.d.ts.map +0 -1
- package/lib/sentinel-context.js +0 -52
- package/lib/sentinel-context.js.map +0 -1
- package/lib/session-tracker.d.ts +0 -6
- package/lib/session-tracker.d.ts.map +0 -1
- package/lib/session-tracker.js +0 -50
- package/lib/session-tracker.js.map +0 -1
- package/lib/stack.d.ts +0 -3
- package/lib/stack.d.ts.map +0 -1
- package/lib/stack.js +0 -7
- package/lib/stack.js.map +0 -1
- package/lib/state-snapshots.d.ts +0 -33
- package/lib/state-snapshots.d.ts.map +0 -1
- package/lib/state-snapshots.js +0 -109
- package/lib/state-snapshots.js.map +0 -1
- package/lib/track.d.ts +0 -34
- package/lib/track.d.ts.map +0 -1
- package/lib/track.js +0 -107
- package/lib/track.js.map +0 -1
- package/lib/trail.d.ts +0 -12
- package/lib/trail.d.ts.map +0 -1
- package/lib/trail.js +0 -28
- package/lib/trail.js.map +0 -1
- package/lib/trust-score.d.ts +0 -20
- package/lib/trust-score.d.ts.map +0 -1
- package/lib/trust-score.js +0 -151
- package/lib/trust-score.js.map +0 -1
- package/lib/types.d.ts +0 -2
- package/lib/types.d.ts.map +0 -1
- package/lib/types.js +0 -4
- package/lib/types.js.map +0 -1
- package/lib/uuid.d.ts +0 -2
- package/lib/uuid.d.ts.map +0 -1
- package/lib/uuid.js +0 -3
- package/lib/uuid.js.map +0 -1
- package/src/__tests__/before-send.test.ts +0 -72
- package/src/__tests__/breadcrumbs.test.ts +0 -44
- package/src/__tests__/capture-replay.test.ts +0 -150
- package/src/__tests__/compat-sentry.test.ts +0 -121
- package/src/__tests__/control-channel.test.ts +0 -111
- package/src/__tests__/install-id.test.ts +0 -60
- package/src/__tests__/long-task-monitor.test.ts +0 -59
- package/src/__tests__/measure.test.ts +0 -45
- package/src/__tests__/navigation.test.ts +0 -175
- package/src/__tests__/push.test.ts +0 -238
- package/src/__tests__/report-security.test.ts +0 -106
- package/src/__tests__/runtime-metrics-instruments.test.ts +0 -109
- package/src/__tests__/runtime-metrics-network.test.ts +0 -78
- package/src/__tests__/sample-profiler.test.ts +0 -59
- package/src/__tests__/stack.test.ts +0 -45
- package/src/__tests__/state-snapshots.test.ts +0 -119
- package/src/__tests__/tracing.test.ts +0 -201
- package/src/__tests__/track.test.ts +0 -91
- package/src/__tests__/uuid.test.ts +0 -41
- package/src/breadcrumbs.ts +0 -57
- package/src/bundle-info.ts +0 -95
- package/src/capture.ts +0 -660
- package/src/compat/sentry.ts +0 -490
- package/src/control-channel.ts +0 -98
- package/src/expo-compat.ts +0 -698
- package/src/feedback-widget.tsx +0 -316
- package/src/feedback.ts +0 -21
- package/src/heartbeat.ts +0 -157
- package/src/install-id.ts +0 -146
- package/src/lifecycle.ts +0 -76
- package/src/mask.ts +0 -41
- package/src/measure.ts +0 -28
- package/src/metrics.ts +0 -94
- package/src/pre-crash-sentinel.ts +0 -140
- package/src/report-security.ts +0 -165
- package/src/runtime-metrics-fps.ts +0 -137
- package/src/runtime-metrics-heap.ts +0 -78
- package/src/runtime-metrics-network.ts +0 -103
- package/src/runtime-metrics.ts +0 -122
- package/src/sample-profiler.ts +0 -169
- package/src/sentinel-context.ts +0 -60
- package/src/session-tracker.ts +0 -53
- package/src/stack.ts +0 -10
- package/src/state-snapshots.ts +0 -133
- package/src/track.ts +0 -123
- package/src/trail.ts +0 -32
- package/src/trust-score.ts +0 -176
- package/src/types.ts +0 -21
- package/src/uuid.ts +0 -2
package/lib/rage-tap.js
CHANGED
|
@@ -1,33 +1,38 @@
|
|
|
1
1
|
import { jsx as _jsx } from "react/jsx-runtime";
|
|
2
|
-
//
|
|
2
|
+
// rage_tap — the first detected warn scenario (design.md §3,
|
|
3
|
+
// category A: 「我按了没反应/反复按」).
|
|
3
4
|
//
|
|
4
|
-
// Wrap
|
|
5
|
-
// `<
|
|
6
|
-
//
|
|
7
|
-
//
|
|
8
|
-
//
|
|
9
|
-
//
|
|
10
|
-
//
|
|
5
|
+
// Wrap the app root (next to ErrorBoundary) with
|
|
6
|
+
// `<RageTapCapture>{children}</RageTapCapture>`. Bubble-phase
|
|
7
|
+
// `onTouchEnd` only — pure observation, no gesture interference.
|
|
8
|
+
//
|
|
9
|
+
// Mini-spec: ≥3 taps on the same native target within 800 ms ⇒ one
|
|
10
|
+
// `warn` event, scenario `rage_tap`, surface = current screen +
|
|
11
|
+
// target id, plus a signal-ring entry. Per-target cooldown resets
|
|
12
|
+
// after firing so a frustrated 10-tap burst is one event, not four.
|
|
11
13
|
import { useCallback, useRef } from 'react';
|
|
12
14
|
import { View } from 'react-native';
|
|
13
|
-
import {
|
|
14
|
-
import {
|
|
15
|
+
import { pushSignal } from '@goliapkg/sentori-core';
|
|
16
|
+
import { getConfig } from './config';
|
|
17
|
+
import { currentScreen } from './navigation';
|
|
18
|
+
import { RAGE_THRESHOLD, RAGE_WINDOW_MS, recordTap } from './rage-tap-detector';
|
|
19
|
+
import { warnDetected } from './verbs';
|
|
15
20
|
export function RageTapCapture({ children, ...rest }) {
|
|
16
21
|
const recent = useRef(new Map());
|
|
17
22
|
const onTouchEnd = useCallback((e) => {
|
|
18
|
-
|
|
19
|
-
|
|
20
|
-
|
|
21
|
-
|
|
22
|
-
|
|
23
|
-
|
|
24
|
-
|
|
25
|
-
|
|
26
|
-
|
|
27
|
-
|
|
28
|
-
|
|
29
|
-
|
|
30
|
-
|
|
23
|
+
try {
|
|
24
|
+
const target = e.nativeEvent?.target;
|
|
25
|
+
if (typeof target !== 'number')
|
|
26
|
+
return;
|
|
27
|
+
pushSignal('tap', { target });
|
|
28
|
+
if (!recordTap(recent.current, target, Date.now()))
|
|
29
|
+
return;
|
|
30
|
+
if (getConfig()?.detect.rageTap === false)
|
|
31
|
+
return;
|
|
32
|
+
warnDetected('rage_tap', { screen: currentScreen(), element: String(target) }, { taps: RAGE_THRESHOLD, windowMs: RAGE_WINDOW_MS });
|
|
33
|
+
}
|
|
34
|
+
catch {
|
|
35
|
+
// A detector bug must never reach the host's touch pipeline.
|
|
31
36
|
}
|
|
32
37
|
}, []);
|
|
33
38
|
return (_jsx(View, { ...rest, onTouchEnd: onTouchEnd, children: children }));
|
package/lib/rage-tap.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"rage-tap.js","sourceRoot":"","sources":["../src/rage-tap.tsx"],"names":[],"mappings":";AAAA,
|
|
1
|
+
{"version":3,"file":"rage-tap.js","sourceRoot":"","sources":["../src/rage-tap.tsx"],"names":[],"mappings":";AAAA,6DAA6D;AAC7D,6BAA6B;AAC7B,EAAE;AACF,iDAAiD;AACjD,8DAA8D;AAC9D,iEAAiE;AACjE,EAAE;AACF,mEAAmE;AACnE,gEAAgE;AAChE,kEAAkE;AAClE,oEAAoE;AAEpE,OAAc,EAAE,WAAW,EAAE,MAAM,EAAE,MAAM,OAAO,CAAC;AACnD,OAAO,EAAE,IAAI,EAA8C,MAAM,cAAc,CAAC;AAEhF,OAAO,EAAE,UAAU,EAAE,MAAM,wBAAwB,CAAC;AAEpD,OAAO,EAAE,SAAS,EAAE,MAAM,UAAU,CAAC;AACrC,OAAO,EAAE,aAAa,EAAE,MAAM,cAAc,CAAC;AAC7C,OAAO,EAAE,cAAc,EAAE,cAAc,EAAE,SAAS,EAAE,MAAM,qBAAqB,CAAC;AAChF,OAAO,EAAE,YAAY,EAAE,MAAM,SAAS,CAAC;AAEvC,MAAM,UAAU,cAAc,CAAC,EAC7B,QAAQ,EACR,GAAG,IAAI,EACoC;IAC3C,MAAM,MAAM,GAAG,MAAM,CAAwB,IAAI,GAAG,EAAE,CAAC,CAAC;IAExD,MAAM,UAAU,GAAG,WAAW,CAAC,CAAC,CAAwB,EAAE,EAAE;QAC1D,IAAI,CAAC;YACH,MAAM,MAAM,GAAG,CAAC,CAAC,WAAW,EAAE,MAAM,CAAC;YACrC,IAAI,OAAO,MAAM,KAAK,QAAQ;gBAAE,OAAO;YACvC,UAAU,CAAC,KAAK,EAAE,EAAE,MAAM,EAAE,CAAC,CAAC;YAC9B,IAAI,CAAC,SAAS,CAAC,MAAM,CAAC,OAAO,EAAE,MAAM,EAAE,IAAI,CAAC,GAAG,EAAE,CAAC;gBAAE,OAAO;YAC3D,IAAI,SAAS,EAAE,EAAE,MAAM,CAAC,OAAO,KAAK,KAAK;gBAAE,OAAO;YAClD,YAAY,CACV,UAAU,EACV,EAAE,MAAM,EAAE,aAAa,EAAE,EAAE,OAAO,EAAE,MAAM,CAAC,MAAM,CAAC,EAAE,EACpD,EAAE,IAAI,EAAE,cAAc,EAAE,QAAQ,EAAE,cAAc,EAAE,CACnD,CAAC;QACJ,CAAC;QAAC,MAAM,CAAC;YACP,6DAA6D;QAC/D,CAAC;IACH,CAAC,EAAE,EAAE,CAAC,CAAC;IAEP,OAAO,CACL,KAAC,IAAI,OAAK,IAAI,EAAE,UAAU,EAAE,UAAU,YACnC,QAAQ,GACJ,CACR,CAAC;AACJ,CAAC"}
|
package/lib/replay.d.ts.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"replay.d.ts","sourceRoot":"","sources":["../src/replay.ts"],"names":[],"mappings":"
|
|
1
|
+
{"version":3,"file":"replay.d.ts","sourceRoot":"","sources":["../src/replay.ts"],"names":[],"mappings":"AAyDA,KAAK,IAAI,GAAG;IACV,CAAC,EAAE,MAAM,CAAC;IACV,CAAC,EAAE,MAAM,CAAC;IACV,CAAC,EAAE,MAAM,CAAC;IACV,CAAC,EAAE,MAAM,CAAC;IACV,IAAI,CAAC,EAAE,MAAM,CAAC;IACd,IAAI,CAAC,EAAE,MAAM,CAAC;IACd,KAAK,CAAC,EAAE,MAAM,CAAC;CAChB,CAAC;AAkBF,MAAM,MAAM,aAAa,GAAG;IAC1B,IAAI,CAAC,EAAE,KAAK,GAAG,WAAW,CAAC;IAC3B;;mCAE+B;IAC/B,EAAE,CAAC,EAAE,MAAM,CAAC;IACZ,4CAA4C;IAC5C,UAAU,CAAC,EAAE,MAAM,CAAC;CACrB,CAAC;AAIF,wBAAgB,WAAW,CAAC,IAAI,EAAE,aAAa,GAAG,IAAI,CA2BrD;AAED,wBAAgB,UAAU,IAAI,IAAI,CAajC;AAiHD,KAAK,KAAK,GAAG;IAAE,KAAK,EAAE,IAAI,EAAE,CAAC;IAAC,OAAO,EAAE,IAAI,EAAE,CAAC;IAAC,OAAO,EAAE,IAAI,CAAC,IAAI,EAAE,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,CAAC,EAAE,CAAA;CAAE,CAAC;AAE9F,wBAAgB,YAAY,CAAC,IAAI,EAAE,GAAG,CAAC,MAAM,EAAE,IAAI,CAAC,EAAE,IAAI,EAAE,GAAG,CAAC,MAAM,EAAE,IAAI,CAAC,GAAG,KAAK,CAsBpF;AA8DD,wBAAgB,eAAe,IAAI,OAAO,CAEzC;AAED;;2CAE2C;AAC3C,wBAAgB,WAAW,IAAI,MAAM,CAOpC;AAED,wBAAgB,qBAAqB,IAAI,IAAI,CAK5C;AAED;mEACmE;AACnE,wBAAgB,kBAAkB,CAAC,SAAS,EAAE,MAAM,GAAG,IAAI,CAO1D"}
|
package/lib/replay.js
CHANGED
|
@@ -14,8 +14,7 @@
|
|
|
14
14
|
// rather than a 1 Hz slideshow.
|
|
15
15
|
//
|
|
16
16
|
// Wire schema: docs/replay-encoding-v2.md.
|
|
17
|
-
import { logger
|
|
18
|
-
import { getRegisteredMaskQuery } from './mask';
|
|
17
|
+
import { logger } from '@goliapkg/sentori-core';
|
|
19
18
|
import { describeWireframeNative } from './native';
|
|
20
19
|
/** Default capture interval (2 Hz). Override via `replay.hz`. rc.10
|
|
21
20
|
* rolled this back from rc.9's 4 Hz default: iOS sim measured 1 ms
|
|
@@ -103,19 +102,11 @@ function captureTick() {
|
|
|
103
102
|
logger.debug('replay', 'tick: first invocation');
|
|
104
103
|
_firstTickLogged = true;
|
|
105
104
|
}
|
|
106
|
-
let tickSpan = null;
|
|
107
|
-
try {
|
|
108
|
-
tickSpan = startSpan('sentori.replay.tick', { name: 'tick' });
|
|
109
|
-
}
|
|
110
|
-
catch {
|
|
111
|
-
// never fatal
|
|
112
|
-
}
|
|
113
105
|
try {
|
|
114
106
|
const maskIds = readMaskIds();
|
|
115
107
|
const snapshotJson = _nativeMod?.captureWireframe?.(maskIds);
|
|
116
108
|
if (typeof snapshotJson !== 'string' || snapshotJson.length === 0) {
|
|
117
109
|
handleEmptyTick(snapshotJson);
|
|
118
|
-
tickSpan?.finish({ status: 'ok' });
|
|
119
110
|
return;
|
|
120
111
|
}
|
|
121
112
|
let snapshot;
|
|
@@ -124,7 +115,6 @@ function captureTick() {
|
|
|
124
115
|
}
|
|
125
116
|
catch (e) {
|
|
126
117
|
logger.warn('replay', 'tick: native JSON parse failed', e);
|
|
127
|
-
tickSpan?.finish({ status: 'error' });
|
|
128
118
|
return;
|
|
129
119
|
}
|
|
130
120
|
_emptyTickCount = 0;
|
|
@@ -133,12 +123,8 @@ function captureTick() {
|
|
|
133
123
|
if (typeof __DEV__ !== 'undefined' && __DEV__) {
|
|
134
124
|
diagnosticForTick(snapshot, snapshotJson.length);
|
|
135
125
|
}
|
|
136
|
-
tickSpan?.finish({ status: 'ok' });
|
|
137
126
|
}
|
|
138
127
|
catch (e) {
|
|
139
|
-
if (e instanceof Error)
|
|
140
|
-
tickSpan?.setTag('error.message', e.message);
|
|
141
|
-
tickSpan?.finish({ status: 'error' });
|
|
142
128
|
logger.warn('replay', 'tick threw', e);
|
|
143
129
|
}
|
|
144
130
|
}
|
|
@@ -257,15 +243,8 @@ function diagnosticForTick(snapshot, snapshotBytes) {
|
|
|
257
243
|
}
|
|
258
244
|
}
|
|
259
245
|
function readMaskIds() {
|
|
260
|
-
|
|
261
|
-
|
|
262
|
-
return [];
|
|
263
|
-
try {
|
|
264
|
-
return q();
|
|
265
|
-
}
|
|
266
|
-
catch {
|
|
267
|
-
return [];
|
|
268
|
-
}
|
|
246
|
+
// Masking returns with a v1 privacy pass; nothing masks today.
|
|
247
|
+
return [];
|
|
269
248
|
}
|
|
270
249
|
function loadNativeReplay() {
|
|
271
250
|
try {
|
package/lib/replay.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"replay.js","sourceRoot":"","sources":["../src/replay.ts"],"names":[],"mappings":"AAAA,+CAA+C;AAC/C,EAAE;AACF,sEAAsE;AACtE,mEAAmE;AACnE,wEAAwE;AACxE,uEAAuE;AACvE,qEAAqE;AACrE,+CAA+C;AAC/C,mEAAmE;AACnE,EAAE;AACF,uEAAuE;AACvE,oEAAoE;AACpE,qEAAqE;AACrE,gCAAgC;AAChC,EAAE;AACF,2CAA2C;AAE3C,OAAO,EAAE,MAAM,EAAE,
|
|
1
|
+
{"version":3,"file":"replay.js","sourceRoot":"","sources":["../src/replay.ts"],"names":[],"mappings":"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"}
|
package/lib/scope.d.ts
ADDED
|
@@ -0,0 +1,7 @@
|
|
|
1
|
+
import type { User } from '@goliapkg/sentori-core';
|
|
2
|
+
export declare const setUser: (u: User | null) => void | undefined;
|
|
3
|
+
export declare const patchContext: (patch: Record<string, unknown>) => void | undefined;
|
|
4
|
+
export declare const currentUserKey: () => string | undefined;
|
|
5
|
+
export declare const currentContext: () => Record<string, unknown> | undefined;
|
|
6
|
+
export declare const __resetForTests: () => void;
|
|
7
|
+
//# sourceMappingURL=scope.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"scope.d.ts","sourceRoot":"","sources":["../src/scope.ts"],"names":[],"mappings":"AAKA,OAAO,KAAK,EAAE,IAAI,EAAE,MAAM,wBAAwB,CAAC;AAOnD,eAAO,MAAM,OAAO,sCAmBlB,CAAC;AAEH,eAAO,MAAM,YAAY,sDAIvB,CAAC;AAEH,eAAO,MAAM,cAAc,QAAO,MAAM,GAAG,SAAqB,CAAC;AAEjE,eAAO,MAAM,cAAc,QAAO,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,GAAG,SACI,CAAC;AAEjE,eAAO,MAAM,eAAe,QAAO,IAKlC,CAAC"}
|
package/lib/scope.js
ADDED
|
@@ -0,0 +1,41 @@
|
|
|
1
|
+
// Ambient scope: the current user and the context patch, attached
|
|
2
|
+
// to every outgoing event. Two verbs own this state (user() and
|
|
3
|
+
// context()); everything else reads it.
|
|
4
|
+
import { hashIdentities, safeFn } from '@goliapkg/sentori-core';
|
|
5
|
+
let _user = null;
|
|
6
|
+
let _userKey;
|
|
7
|
+
let _context = {};
|
|
8
|
+
let _hashGeneration = 0;
|
|
9
|
+
export const setUser = safeFn('user', function setUser(u) {
|
|
10
|
+
_user = u;
|
|
11
|
+
_userKey = undefined;
|
|
12
|
+
const generation = ++_hashGeneration;
|
|
13
|
+
if (u === null)
|
|
14
|
+
return;
|
|
15
|
+
// The wire carries only a salted hash — raw identity never leaves
|
|
16
|
+
// the device (breadth × depth needs distinctness, not identity).
|
|
17
|
+
// Hashing is async (WebCrypto); the verb stays synchronous and the
|
|
18
|
+
// key lands a tick later. Events sent in that gap simply carry no
|
|
19
|
+
// userKey, which only under-counts breadth briefly.
|
|
20
|
+
void hashIdentities({ email: u.email, id: u.id })
|
|
21
|
+
.then((hashes) => {
|
|
22
|
+
if (generation === _hashGeneration) {
|
|
23
|
+
_userKey = hashes.id ?? hashes.email;
|
|
24
|
+
}
|
|
25
|
+
})
|
|
26
|
+
.catch(() => {
|
|
27
|
+
// NEVER rule: no key beats a raw identity on the wire.
|
|
28
|
+
});
|
|
29
|
+
});
|
|
30
|
+
export const patchContext = safeFn('context', function patchContext(patch) {
|
|
31
|
+
_context = { ..._context, ...patch };
|
|
32
|
+
});
|
|
33
|
+
export const currentUserKey = () => _userKey;
|
|
34
|
+
export const currentContext = () => Object.keys(_context).length > 0 ? { ..._context } : undefined;
|
|
35
|
+
export const __resetForTests = () => {
|
|
36
|
+
_user = null;
|
|
37
|
+
_userKey = undefined;
|
|
38
|
+
_context = {};
|
|
39
|
+
_hashGeneration++;
|
|
40
|
+
};
|
|
41
|
+
//# sourceMappingURL=scope.js.map
|
package/lib/scope.js.map
ADDED
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"scope.js","sourceRoot":"","sources":["../src/scope.ts"],"names":[],"mappings":"AAAA,kEAAkE;AAClE,gEAAgE;AAChE,wCAAwC;AAExC,OAAO,EAAE,cAAc,EAAE,MAAM,EAAE,MAAM,wBAAwB,CAAC;AAGhE,IAAI,KAAK,GAAgB,IAAI,CAAC;AAC9B,IAAI,QAA4B,CAAC;AACjC,IAAI,QAAQ,GAA4B,EAAE,CAAC;AAC3C,IAAI,eAAe,GAAG,CAAC,CAAC;AAExB,MAAM,CAAC,MAAM,OAAO,GAAG,MAAM,CAAC,MAAM,EAAE,SAAS,OAAO,CAAC,CAAc;IACnE,KAAK,GAAG,CAAC,CAAC;IACV,QAAQ,GAAG,SAAS,CAAC;IACrB,MAAM,UAAU,GAAG,EAAE,eAAe,CAAC;IACrC,IAAI,CAAC,KAAK,IAAI;QAAE,OAAO;IACvB,kEAAkE;IAClE,iEAAiE;IACjE,mEAAmE;IACnE,kEAAkE;IAClE,oDAAoD;IACpD,KAAK,cAAc,CAAC,EAAE,KAAK,EAAE,CAAC,CAAC,KAAK,EAAE,EAAE,EAAE,CAAC,CAAC,EAAE,EAAE,CAAC;SAC9C,IAAI,CAAC,CAAC,MAAM,EAAE,EAAE;QACf,IAAI,UAAU,KAAK,eAAe,EAAE,CAAC;YACnC,QAAQ,GAAG,MAAM,CAAC,EAAE,IAAI,MAAM,CAAC,KAAK,CAAC;QACvC,CAAC;IACH,CAAC,CAAC;SACD,KAAK,CAAC,GAAG,EAAE;QACV,uDAAuD;IACzD,CAAC,CAAC,CAAC;AACP,CAAC,CAAC,CAAC;AAEH,MAAM,CAAC,MAAM,YAAY,GAAG,MAAM,CAAC,SAAS,EAAE,SAAS,YAAY,CACjE,KAA8B;IAE9B,QAAQ,GAAG,EAAE,GAAG,QAAQ,EAAE,GAAG,KAAK,EAAE,CAAC;AACvC,CAAC,CAAC,CAAC;AAEH,MAAM,CAAC,MAAM,cAAc,GAAG,GAAuB,EAAE,CAAC,QAAQ,CAAC;AAEjE,MAAM,CAAC,MAAM,cAAc,GAAG,GAAwC,EAAE,CACtE,MAAM,CAAC,IAAI,CAAC,QAAQ,CAAC,CAAC,MAAM,GAAG,CAAC,CAAC,CAAC,CAAC,EAAE,GAAG,QAAQ,EAAE,CAAC,CAAC,CAAC,SAAS,CAAC;AAEjE,MAAM,CAAC,MAAM,eAAe,GAAG,GAAS,EAAE;IACxC,KAAK,GAAG,IAAI,CAAC;IACb,QAAQ,GAAG,SAAS,CAAC;IACrB,QAAQ,GAAG,EAAE,CAAC;IACd,eAAe,EAAE,CAAC;AACpB,CAAC,CAAC"}
|
package/lib/transport.d.ts
CHANGED
|
@@ -1,101 +1,28 @@
|
|
|
1
|
-
import type {
|
|
2
|
-
export declare const enqueue: (event:
|
|
1
|
+
import type { AssertStat, WireEvent } from '@goliapkg/sentori-core';
|
|
2
|
+
export declare const enqueue: (event: WireEvent) => void;
|
|
3
|
+
/**
|
|
4
|
+
* Count an assert outcome. Pass-counts NEVER become events — they
|
|
5
|
+
* aggregate here and ride the next batch envelope (the liveness
|
|
6
|
+
* ledger without a heartbeat flood).
|
|
7
|
+
*/
|
|
8
|
+
export declare const countAssert: (name: string, ok: boolean, release: string) => void;
|
|
3
9
|
export declare const startTransport: () => void;
|
|
4
|
-
export declare const flushSpans: () => Promise<void>;
|
|
5
10
|
export declare const flush: () => Promise<void>;
|
|
6
11
|
export declare const drainOfflineQueue: () => Promise<void>;
|
|
7
|
-
export declare const __resetForTests: () => void;
|
|
8
|
-
export declare const __peekQueue: () => readonly Event[];
|
|
9
|
-
/**
|
|
10
|
-
* Phase 26 sub-B: session ping transport. Best-effort; we don't queue
|
|
11
|
-
* pings the way we queue events because they fire on background and
|
|
12
|
-
* AsyncStorage writes during background can be killed by the OS. If
|
|
13
|
-
* the network's down, the ping is lost — the session counters tolerate
|
|
14
|
-
* this.
|
|
15
|
-
*/
|
|
16
|
-
export declare const sendSessionPing: (ingestUrl: string, token: string, ping: unknown) => Promise<void>;
|
|
17
|
-
/**
|
|
18
|
-
* v1.1 chunk B — flush a batched set of `sentori.track()` analytics
|
|
19
|
-
* events. The host SDK batches calls into a fixed-size ring drained
|
|
20
|
-
* every 30 s. Best-effort; a failure drops the batch.
|
|
21
|
-
*/
|
|
22
|
-
export declare const sendTrackBatch: (ingestUrl: string, token: string, events: Array<{
|
|
23
|
-
environment?: string;
|
|
24
|
-
name: string;
|
|
25
|
-
props?: Record<string, unknown>;
|
|
26
|
-
release?: string;
|
|
27
|
-
route?: string;
|
|
28
|
-
sessionId?: string;
|
|
29
|
-
ts: string;
|
|
30
|
-
userId?: string;
|
|
31
|
-
}>) => Promise<void>;
|
|
32
12
|
/**
|
|
33
|
-
*
|
|
34
|
-
*
|
|
35
|
-
*
|
|
36
|
-
* up one fetch per point. Best-effort, no retry.
|
|
13
|
+
* Upload one attachment for an already-enqueued event. Returns null
|
|
14
|
+
* on any non-fatal failure — the event still ships without the
|
|
15
|
+
* attachment so the crash itself is never lost.
|
|
37
16
|
*/
|
|
38
|
-
export declare const
|
|
39
|
-
name: string;
|
|
40
|
-
tags?: Record<string, string>;
|
|
41
|
-
ts?: string;
|
|
42
|
-
value: number;
|
|
43
|
-
}>) => Promise<void>;
|
|
44
|
-
/**
|
|
45
|
-
* v2.1 W2 — POST a batched set of auto-instrument runtime metric
|
|
46
|
-
* points. Sibling of sendMetricsBatch; different endpoint
|
|
47
|
-
* (`/v1/runtime-metrics:batch`) because the storage shape +
|
|
48
|
-
* validation rules + rate-limit budget differ — see
|
|
49
|
-
* docs/design/v2-metrics.md.
|
|
50
|
-
*
|
|
51
|
-
* Returns true on 2xx so the caller can leave the batch drained;
|
|
52
|
-
* returns false on anything else (network error / non-2xx) so the
|
|
53
|
-
* caller rebuffer-and-retries on the next flush via
|
|
54
|
-
* `rebufferRuntimeMetrics(batch)`.
|
|
55
|
-
*/
|
|
56
|
-
export declare const sendRuntimeMetricsBatch: (ingestUrl: string, token: string, metrics: Array<{
|
|
57
|
-
name: string;
|
|
58
|
-
tags?: Record<string, string>;
|
|
59
|
-
ts: string;
|
|
60
|
-
value: number;
|
|
61
|
-
}>) => Promise<boolean>;
|
|
62
|
-
/**
|
|
63
|
-
* v0.8.2 — submit a user-supplied bug report. Fire-and-forget; resolves
|
|
64
|
-
* with the server-assigned id on success or `null` on any failure.
|
|
65
|
-
* The host app typically calls this from a "Report a problem" form;
|
|
66
|
-
* pass `eventId` if you're reporting a specific crash the user just
|
|
67
|
-
* saw so the report links to that event's issue automatically.
|
|
68
|
-
*/
|
|
69
|
-
export declare const sendUserReport: (ingestUrl: string, token: string, report: {
|
|
70
|
-
body: string;
|
|
71
|
-
email?: string;
|
|
72
|
-
eventId?: string;
|
|
73
|
-
name?: string;
|
|
74
|
-
title: string;
|
|
75
|
-
}) => Promise<null | {
|
|
76
|
-
id: string;
|
|
77
|
-
issueId: null | string;
|
|
78
|
-
}>;
|
|
79
|
-
/**
|
|
80
|
-
* Upload a base64-encoded binary blob as an attachment for a known
|
|
81
|
-
* event. The event must NOT have been POSTed yet — the server-side
|
|
82
|
-
* ingest validation in events.rs only honours `event.attachments[].ref`
|
|
83
|
-
* when the matching `event_attachments` row already exists for the
|
|
84
|
-
* same (event_id, project_id). Caller's contract:
|
|
85
|
-
*
|
|
86
|
-
* 1. Generate `event.id` (uuidV7).
|
|
87
|
-
* 2. Build the blob (e.g. via `captureScreenshot`).
|
|
88
|
-
* 3. `await uploadAttachment(...)` → get `{ ref, sizeBytes, mediaType }`.
|
|
89
|
-
* 4. Push `{ ref, kind, ... }` into `event.attachments` then enqueue.
|
|
90
|
-
*
|
|
91
|
-
* Returns `null` on any non-fatal failure (network down, store
|
|
92
|
-
* disabled, 4xx, timeout). The error event still ships without the
|
|
93
|
-
* attachment so we never lose the actual crash.
|
|
94
|
-
*/
|
|
95
|
-
export declare const uploadAttachment: (eventId: string, kind: import("./types").AttachmentMeta["kind"], blob: {
|
|
17
|
+
export declare const uploadAttachment: (eventId: string, kind: import('@goliapkg/sentori-core').AttachmentKind, blob: {
|
|
96
18
|
base64: string;
|
|
97
19
|
mediaType: string;
|
|
98
20
|
}, opts?: {
|
|
99
|
-
source?:
|
|
100
|
-
}) => Promise<
|
|
21
|
+
source?: 'android' | 'ios' | 'js';
|
|
22
|
+
}) => Promise<{
|
|
23
|
+
ref: string;
|
|
24
|
+
} | null>;
|
|
25
|
+
export declare const __resetForTests: () => void;
|
|
26
|
+
export declare const __peekQueue: () => readonly WireEvent[];
|
|
27
|
+
export declare const __peekAssertStats: () => readonly AssertStat[];
|
|
101
28
|
//# sourceMappingURL=transport.d.ts.map
|
package/lib/transport.d.ts.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"transport.d.ts","sourceRoot":"","sources":["../src/transport.ts"],"names":[],"mappings":"
|
|
1
|
+
{"version":3,"file":"transport.d.ts","sourceRoot":"","sources":["../src/transport.ts"],"names":[],"mappings":"AASA,OAAO,KAAK,EAAE,UAAU,EAAiB,SAAS,EAAE,MAAM,wBAAwB,CAAC;AAmBnF,eAAO,MAAM,OAAO,UAAW,SAAS,KAAG,IAU1C,CAAC;AAEF;;;;GAIG;AACH,eAAO,MAAM,WAAW,SAAU,MAAM,MAAM,OAAO,WAAW,MAAM,KAAG,IAcxE,CAAC;AAEF,eAAO,MAAM,cAAc,QAAO,IAEjC,CAAC;AAEF,eAAO,MAAM,KAAK,QAAa,OAAO,CAAC,IAAI,CAuB1C,CAAC;AAiGF,eAAO,MAAM,iBAAiB,QAAa,OAAO,CAAC,IAAI,CAatD,CAAC;AAEF;;;;GAIG;AACH,eAAO,MAAM,gBAAgB,YAClB,MAAM,QACT,OAAO,wBAAwB,EAAE,cAAc,QAC/C;IAAE,MAAM,EAAE,MAAM,CAAC;IAAC,SAAS,EAAE,MAAM,CAAA;CAAE,SACrC;IAAE,MAAM,CAAC,EAAE,SAAS,GAAG,KAAK,GAAG,IAAI,CAAA;CAAE,KAC1C,OAAO,CAAC;IAAE,GAAG,EAAE,MAAM,CAAA;CAAE,GAAG,IAAI,CAgChC,CAAC;AAEF,eAAO,MAAM,eAAe,QAAO,IAMlC,CAAC;AAEF,eAAO,MAAM,WAAW,QAAO,SAAS,SAAS,EAAY,CAAC;AAC9D,eAAO,MAAM,iBAAiB,QAAO,SAAS,UAAU,EAAgC,CAAC"}
|