execbro 1.10.24 → 1.11.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/README.md +1 -1
- package/build/__tests__/helpers/fake-cdp-server.d.ts +9 -0
- package/build/__tests__/helpers/fake-cdp-server.d.ts.map +1 -1
- package/build/__tests__/helpers/fake-cdp-server.js +20 -2
- package/build/__tests__/helpers/fake-cdp-server.js.map +1 -1
- package/build/__tests__/integration/connection-health.test.js +8 -1
- package/build/__tests__/integration/connection-health.test.js.map +1 -1
- package/build/__tests__/integration/native-logs.test.d.ts +2 -0
- package/build/__tests__/integration/native-logs.test.d.ts.map +1 -0
- package/build/__tests__/integration/native-logs.test.js +39 -0
- package/build/__tests__/integration/native-logs.test.js.map +1 -0
- package/build/__tests__/integration/socket-close-midflight.test.d.ts +2 -0
- package/build/__tests__/integration/socket-close-midflight.test.d.ts.map +1 -0
- package/build/__tests__/integration/socket-close-midflight.test.js +106 -0
- package/build/__tests__/integration/socket-close-midflight.test.js.map +1 -0
- package/build/__tests__/integration/stale-target-probe.test.d.ts +2 -0
- package/build/__tests__/integration/stale-target-probe.test.d.ts.map +1 -0
- package/build/__tests__/integration/stale-target-probe.test.js +85 -0
- package/build/__tests__/integration/stale-target-probe.test.js.map +1 -0
- package/build/__tests__/unit/clearLogsNative.test.d.ts +2 -0
- package/build/__tests__/unit/clearLogsNative.test.d.ts.map +1 -0
- package/build/__tests__/unit/clearLogsNative.test.js +43 -0
- package/build/__tests__/unit/clearLogsNative.test.js.map +1 -0
- package/build/__tests__/unit/componentFormatNaming.test.d.ts +2 -0
- package/build/__tests__/unit/componentFormatNaming.test.d.ts.map +1 -0
- package/build/__tests__/unit/componentFormatNaming.test.js +32 -0
- package/build/__tests__/unit/componentFormatNaming.test.js.map +1 -0
- package/build/__tests__/unit/deviceResolution.test.d.ts +2 -0
- package/build/__tests__/unit/deviceResolution.test.d.ts.map +1 -0
- package/build/__tests__/unit/deviceResolution.test.js +108 -0
- package/build/__tests__/unit/deviceResolution.test.js.map +1 -0
- package/build/__tests__/unit/executor.test.js +48 -12
- package/build/__tests__/unit/executor.test.js.map +1 -1
- package/build/__tests__/unit/getLogsEmptyContract.test.d.ts +2 -0
- package/build/__tests__/unit/getLogsEmptyContract.test.d.ts.map +1 -0
- package/build/__tests__/unit/getLogsEmptyContract.test.js +112 -0
- package/build/__tests__/unit/getLogsEmptyContract.test.js.map +1 -0
- package/build/__tests__/unit/getLogsNativeSource.test.d.ts +2 -0
- package/build/__tests__/unit/getLogsNativeSource.test.d.ts.map +1 -0
- package/build/__tests__/unit/getLogsNativeSource.test.js +138 -0
- package/build/__tests__/unit/getLogsNativeSource.test.js.map +1 -0
- package/build/__tests__/unit/jsLogEvents.test.d.ts +2 -0
- package/build/__tests__/unit/jsLogEvents.test.d.ts.map +1 -0
- package/build/__tests__/unit/jsLogEvents.test.js +58 -0
- package/build/__tests__/unit/jsLogEvents.test.js.map +1 -0
- package/build/__tests__/unit/logDiagnosis.test.d.ts +2 -0
- package/build/__tests__/unit/logDiagnosis.test.d.ts.map +1 -0
- package/build/__tests__/unit/logDiagnosis.test.js +81 -0
- package/build/__tests__/unit/logDiagnosis.test.js.map +1 -0
- package/build/__tests__/unit/logEventFormat.test.d.ts +2 -0
- package/build/__tests__/unit/logEventFormat.test.d.ts.map +1 -0
- package/build/__tests__/unit/logEventFormat.test.js +210 -0
- package/build/__tests__/unit/logEventFormat.test.js.map +1 -0
- package/build/__tests__/unit/logEvents.test.d.ts +2 -0
- package/build/__tests__/unit/logEvents.test.d.ts.map +1 -0
- package/build/__tests__/unit/logEvents.test.js +118 -0
- package/build/__tests__/unit/logEvents.test.js.map +1 -0
- package/build/__tests__/unit/logGrouping.test.d.ts +2 -0
- package/build/__tests__/unit/logGrouping.test.d.ts.map +1 -0
- package/build/__tests__/unit/logGrouping.test.js +104 -0
- package/build/__tests__/unit/logGrouping.test.js.map +1 -0
- package/build/__tests__/unit/logOwnership.test.d.ts +2 -0
- package/build/__tests__/unit/logOwnership.test.d.ts.map +1 -0
- package/build/__tests__/unit/logOwnership.test.js +118 -0
- package/build/__tests__/unit/logOwnership.test.js.map +1 -0
- package/build/__tests__/unit/logRelevance.test.d.ts +2 -0
- package/build/__tests__/unit/logRelevance.test.d.ts.map +1 -0
- package/build/__tests__/unit/logRelevance.test.js +30 -0
- package/build/__tests__/unit/logRelevance.test.js.map +1 -0
- package/build/__tests__/unit/logSourceAndroid.test.d.ts +2 -0
- package/build/__tests__/unit/logSourceAndroid.test.d.ts.map +1 -0
- package/build/__tests__/unit/logSourceAndroid.test.js +61 -0
- package/build/__tests__/unit/logSourceAndroid.test.js.map +1 -0
- package/build/__tests__/unit/logSourceIos.test.d.ts +2 -0
- package/build/__tests__/unit/logSourceIos.test.d.ts.map +1 -0
- package/build/__tests__/unit/logSourceIos.test.js +64 -0
- package/build/__tests__/unit/logSourceIos.test.js.map +1 -0
- package/build/__tests__/unit/logs.test.js +23 -0
- package/build/__tests__/unit/logs.test.js.map +1 -1
- package/build/__tests__/unit/nativeLogs.test.d.ts +2 -0
- package/build/__tests__/unit/nativeLogs.test.d.ts.map +1 -0
- package/build/__tests__/unit/nativeLogs.test.js +230 -0
- package/build/__tests__/unit/nativeLogs.test.js.map +1 -0
- package/build/__tests__/unit/pendingExecutions.test.d.ts +2 -0
- package/build/__tests__/unit/pendingExecutions.test.d.ts.map +1 -0
- package/build/__tests__/unit/pendingExecutions.test.js +70 -0
- package/build/__tests__/unit/pendingExecutions.test.js.map +1 -0
- package/build/__tests__/unit/reloadAppAutoConnect.test.d.ts +2 -0
- package/build/__tests__/unit/reloadAppAutoConnect.test.d.ts.map +1 -0
- package/build/__tests__/unit/reloadAppAutoConnect.test.js +63 -0
- package/build/__tests__/unit/reloadAppAutoConnect.test.js.map +1 -0
- package/build/__tests__/unit/toolsJson.test.js +11 -0
- package/build/__tests__/unit/toolsJson.test.js.map +1 -1
- package/build/__tests__/unit/transportClassify.test.js +108 -7
- package/build/__tests__/unit/transportClassify.test.js.map +1 -1
- package/build/core/componentSearch.d.ts +1 -1
- package/build/core/componentSearch.d.ts.map +1 -1
- package/build/core/componentSearch.js +8 -8
- package/build/core/componentSearch.js.map +1 -1
- package/build/core/componentTree.d.ts +1 -1
- package/build/core/componentTree.d.ts.map +1 -1
- package/build/core/componentTree.js +8 -8
- package/build/core/componentTree.js.map +1 -1
- package/build/core/connection.d.ts +30 -0
- package/build/core/connection.d.ts.map +1 -1
- package/build/core/connection.js +97 -28
- package/build/core/connection.js.map +1 -1
- package/build/core/debugGlobals.d.ts.map +1 -1
- package/build/core/debugGlobals.js +89 -32
- package/build/core/debugGlobals.js.map +1 -1
- package/build/core/errors.d.ts +7 -1
- package/build/core/errors.d.ts.map +1 -1
- package/build/core/errors.js +8 -1
- package/build/core/errors.js.map +1 -1
- package/build/core/guides.d.ts.map +1 -1
- package/build/core/guides.js +25 -0
- package/build/core/guides.js.map +1 -1
- package/build/core/index.d.ts +0 -2
- package/build/core/index.d.ts.map +1 -1
- package/build/core/index.js +0 -2
- package/build/core/index.js.map +1 -1
- package/build/core/jsExecute.d.ts +76 -1
- package/build/core/jsExecute.d.ts.map +1 -1
- package/build/core/jsExecute.js +193 -32
- package/build/core/jsExecute.js.map +1 -1
- package/build/core/jsLogEvents.d.ts +13 -0
- package/build/core/jsLogEvents.d.ts.map +1 -0
- package/build/core/jsLogEvents.js +65 -0
- package/build/core/jsLogEvents.js.map +1 -0
- package/build/core/logDiagnosis.d.ts +65 -0
- package/build/core/logDiagnosis.d.ts.map +1 -0
- package/build/core/logDiagnosis.js +51 -0
- package/build/core/logDiagnosis.js.map +1 -0
- package/build/core/logEventFormat.d.ts +14 -0
- package/build/core/logEventFormat.d.ts.map +1 -0
- package/build/core/logEventFormat.js +85 -0
- package/build/core/logEventFormat.js.map +1 -0
- package/build/core/logEvents.d.ts +115 -0
- package/build/core/logEvents.d.ts.map +1 -0
- package/build/core/logEvents.js +146 -0
- package/build/core/logEvents.js.map +1 -0
- package/build/core/logGrouping.d.ts +17 -0
- package/build/core/logGrouping.d.ts.map +1 -0
- package/build/core/logGrouping.js +134 -0
- package/build/core/logGrouping.js.map +1 -0
- package/build/core/logOwnership.d.ts +29 -0
- package/build/core/logOwnership.d.ts.map +1 -0
- package/build/core/logOwnership.js +83 -0
- package/build/core/logOwnership.js.map +1 -0
- package/build/core/logRelevance.d.ts +13 -0
- package/build/core/logRelevance.d.ts.map +1 -0
- package/build/core/logRelevance.js +23 -0
- package/build/core/logRelevance.js.map +1 -0
- package/build/core/logSourceAndroid.d.ts +27 -0
- package/build/core/logSourceAndroid.d.ts.map +1 -0
- package/build/core/logSourceAndroid.js +89 -0
- package/build/core/logSourceAndroid.js.map +1 -0
- package/build/core/logSourceIos.d.ts +26 -0
- package/build/core/logSourceIos.d.ts.map +1 -0
- package/build/core/logSourceIos.js +119 -0
- package/build/core/logSourceIos.js.map +1 -0
- package/build/core/logs.d.ts +5 -1
- package/build/core/logs.d.ts.map +1 -1
- package/build/core/logs.js +8 -1
- package/build/core/logs.js.map +1 -1
- package/build/core/nativeLogs.d.ts +75 -0
- package/build/core/nativeLogs.d.ts.map +1 -0
- package/build/core/nativeLogs.js +260 -0
- package/build/core/nativeLogs.js.map +1 -0
- package/build/core/register.d.ts.map +1 -1
- package/build/core/register.js +22 -6
- package/build/core/register.js.map +1 -1
- package/build/core/screenLayout.d.ts +1 -1
- package/build/core/screenLayout.d.ts.map +1 -1
- package/build/core/screenLayout.js +3 -3
- package/build/core/screenLayout.js.map +1 -1
- package/build/core/state.d.ts +10 -0
- package/build/core/state.d.ts.map +1 -1
- package/build/core/state.js +21 -0
- package/build/core/state.js.map +1 -1
- package/build/core/types.d.ts +11 -2
- package/build/core/types.d.ts.map +1 -1
- package/build/tools/componentTools.js +6 -6
- package/build/tools/componentTools.js.map +1 -1
- package/build/tools/connectionTools.d.ts.map +1 -1
- package/build/tools/connectionTools.js +7 -3
- package/build/tools/connectionTools.js.map +1 -1
- package/build/tools/executionTools.js +7 -7
- package/build/tools/executionTools.js.map +1 -1
- package/build/tools/logTools.d.ts +25 -0
- package/build/tools/logTools.d.ts.map +1 -1
- package/build/tools/logTools.js +316 -132
- package/build/tools/logTools.js.map +1 -1
- package/build/tools/networkTools.d.ts.map +1 -1
- package/build/tools/networkTools.js +65 -54
- package/build/tools/networkTools.js.map +1 -1
- package/package.json +5 -4
- package/tools.json +447 -0
- package/build/core/format.d.ts +0 -8
- package/build/core/format.d.ts.map +0 -1
- package/build/core/format.js +0 -34
- package/build/core/format.js.map +0 -1
package/build/core/jsExecute.js
CHANGED
|
@@ -5,6 +5,7 @@ import { getFirstConnectedApp, getConnectedAppByDevice, connectToDevice } from "
|
|
|
5
5
|
import { fetchDevices, selectMainDevice, scanMetroPorts } from "./metro.js";
|
|
6
6
|
import { cancelReconnectionTimer } from "./connectionState.js";
|
|
7
7
|
import { trackAutoReconnect } from "./telemetry.js";
|
|
8
|
+
import { probeCdpAlive } from "./probe.js";
|
|
8
9
|
// Hermes runtime compatibility: polyfill for 'global' which doesn't exist in Hermes
|
|
9
10
|
// In Hermes, globalThis is the standard way to access global scope
|
|
10
11
|
const GLOBAL_POLYFILL = `var global = typeof global !== 'undefined' ? global : globalThis;`;
|
|
@@ -91,21 +92,39 @@ export function validateAndPreprocessExpression(expression) {
|
|
|
91
92
|
valid: false,
|
|
92
93
|
expression: escaped,
|
|
93
94
|
error: "require() is not available in Hermes Runtime.evaluate. " +
|
|
94
|
-
"Modules cannot be imported at runtime.
|
|
95
|
-
"
|
|
95
|
+
"Modules cannot be imported at runtime. " +
|
|
96
|
+
"In a Metro dev build you can reach already-loaded modules through Metro's registry: " +
|
|
97
|
+
"`(function(){ var hit=null; __r.getModules().forEach(function(m,id){ " +
|
|
98
|
+
"if(!hit && m.verboseName && m.verboseName.indexOf('react-native/index.js') !== -1) hit=id; }); " +
|
|
99
|
+
"return __r(hit).Dimensions.get('window'); })()` " +
|
|
100
|
+
"(swap the verboseName match for the module you want). " +
|
|
101
|
+
"Otherwise use list_debug_globals to discover exposed globals, or add " +
|
|
102
|
+
"`globalThis.__MY_VAR__ = myModule;` in your app code."
|
|
96
103
|
};
|
|
97
104
|
}
|
|
98
105
|
// Check for multi-statement expressions. Runtime.evaluate compiles input as
|
|
99
106
|
// a single expression — `console.log('x'); 1+1` raises `')' expected at end
|
|
100
107
|
// of parenthesized expression`. Internal callers wrap in (function(){...})()
|
|
101
108
|
// so any `;` they use is at brace depth 1 and won't be flagged.
|
|
102
|
-
|
|
109
|
+
// executeWithManualAwait emits `var __v=(<expr>);`, so a depth-0 `;` breaks
|
|
110
|
+
// compilation. Rewrite into the IIFE ourselves instead of making the caller
|
|
111
|
+
// do it — this was the single largest execute_in_app failure class
|
|
112
|
+
// (125 events / 42 installations over 30d).
|
|
113
|
+
const wrapped = wrapMultiStatementInIife(trimmed);
|
|
114
|
+
if (wrapped) {
|
|
115
|
+
return { valid: true, expression: wrapped, rewritten: "iife-wrap" };
|
|
116
|
+
}
|
|
117
|
+
// More than one statement, but the last one can't yield a value — we can't
|
|
118
|
+
// synthesize a sensible `return`, so explain rather than guess.
|
|
119
|
+
if (splitTopLevelStatements(trimmed).length > 1) {
|
|
103
120
|
return {
|
|
104
121
|
valid: false,
|
|
105
122
|
expression: escaped,
|
|
106
123
|
error: "Multi-statement expressions are not supported by Hermes Runtime.evaluate " +
|
|
107
|
-
"(compiles input as a single expression)
|
|
108
|
-
"
|
|
124
|
+
"(compiles input as a single expression), and the final statement does not " +
|
|
125
|
+
"produce a value to return. " +
|
|
126
|
+
"Wrap the body in an IIFE with an explicit result: " +
|
|
127
|
+
"`(function(){ stmt1; stmt2; return result; })()`."
|
|
109
128
|
};
|
|
110
129
|
}
|
|
111
130
|
return {
|
|
@@ -116,21 +135,19 @@ export function validateAndPreprocessExpression(expression) {
|
|
|
116
135
|
function isIdentChar(c) {
|
|
117
136
|
return c !== undefined && /[A-Za-z0-9_$]/.test(c);
|
|
118
137
|
}
|
|
119
|
-
// Detect top-level `await
|
|
120
|
-
// `(async ...)` IIFE forms in `src`. Walks char-by-char tracking string,
|
|
138
|
+
// Detect a bare top-level `await` in `src`. Walks char-by-char tracking string,
|
|
121
139
|
// template, comment, and bracket depth so we don't false-positive on
|
|
122
140
|
// substrings inside strings, identifiers like `awaiting`, etc.
|
|
141
|
+
//
|
|
142
|
+
// NOTE: `async function`/`async () => {}`/`(async () => {})()` are deliberately
|
|
143
|
+
// NOT flagged. Hermes compiles them (they are expressions), the manual-await
|
|
144
|
+
// wrapper in executeWithManualAwait resolves the Promise they return, and
|
|
145
|
+
// telemetry showed this pre-flight rejecting ~20 legitimate calls/30d across 10
|
|
146
|
+
// installations. Verified on-device (iOS 26 sim, Hermes): an async arrow with an
|
|
147
|
+
// internal `await` evaluates correctly. Only a bare top-level `await` is a real
|
|
148
|
+
// syntax error, because the wrapper emits `var __v=(<expr>);` — a non-async
|
|
149
|
+
// context.
|
|
123
150
|
function looksLikeTopLevelAwait(src) {
|
|
124
|
-
// Cheap prefix checks for async-function / async-arrow / async-IIFE forms.
|
|
125
|
-
// Whitespace-tolerant on `async <keyword>` / `async (`.
|
|
126
|
-
const asyncPrefix = /^async\s*(?:function\b|\()/;
|
|
127
|
-
if (asyncPrefix.test(src))
|
|
128
|
-
return true;
|
|
129
|
-
// `(async () => ...)()` or `(async(...)...)` — match `(async` followed by
|
|
130
|
-
// a non-identifier char (so `(asyncFoo` doesn't trigger).
|
|
131
|
-
const parenAsync = /^\(\s*async(?:\s|\()/;
|
|
132
|
-
if (parenAsync.test(src))
|
|
133
|
-
return true;
|
|
134
151
|
// Depth-tracked scan for a standalone `await` token at depth 0.
|
|
135
152
|
let i = 0;
|
|
136
153
|
let parens = 0;
|
|
@@ -210,10 +227,40 @@ function looksLikeTopLevelAwait(src) {
|
|
|
210
227
|
}
|
|
211
228
|
return false;
|
|
212
229
|
}
|
|
213
|
-
//
|
|
214
|
-
//
|
|
215
|
-
//
|
|
216
|
-
|
|
230
|
+
// Statement forms that cannot be the final segment of an auto-wrapped IIFE,
|
|
231
|
+
// because prefixing them with `return` is either a syntax error or drops the
|
|
232
|
+
// value the caller wanted back. `return` itself is handled separately.
|
|
233
|
+
const NON_VALUE_STATEMENT_START = /^(?:if|for|while|do|switch|try|catch|finally|throw|var|let|const|function|class|debugger|break|continue|with|else)\b|^\{/;
|
|
234
|
+
/**
|
|
235
|
+
* Rewrite a multi-statement source into the IIFE that Hermes can compile,
|
|
236
|
+
* returning `null` when the rewrite would not be safe.
|
|
237
|
+
*
|
|
238
|
+
* `stmt1; stmt2; value` becomes `(function(){ stmt1; stmt2; return value; })()`.
|
|
239
|
+
* Bails out when the final segment cannot yield a value, so those callers still
|
|
240
|
+
* get the explanatory error rather than a silently broken transform.
|
|
241
|
+
*/
|
|
242
|
+
export function wrapMultiStatementInIife(src) {
|
|
243
|
+
const segments = splitTopLevelStatements(src);
|
|
244
|
+
if (segments.length <= 1)
|
|
245
|
+
return null;
|
|
246
|
+
const last = segments[segments.length - 1];
|
|
247
|
+
if (NON_VALUE_STATEMENT_START.test(last))
|
|
248
|
+
return null;
|
|
249
|
+
const head = segments.slice(0, -1);
|
|
250
|
+
const body = last.startsWith("return") && !isIdentChar(last[6]) ? last : `return ${last}`;
|
|
251
|
+
return `(function(){ ${[...head, body].join("; ")}; })()`;
|
|
252
|
+
}
|
|
253
|
+
// Walk `src` tracking string/template/comment and bracket depth, splitting on
|
|
254
|
+
// `;` at depth 0. Returns the trimmed top-level statements; a trailing `;` that
|
|
255
|
+
// merely terminates the final statement produces no extra segment.
|
|
256
|
+
export function splitTopLevelStatements(src) {
|
|
257
|
+
const segments = [];
|
|
258
|
+
let segmentStart = 0;
|
|
259
|
+
const push = (end) => {
|
|
260
|
+
const seg = src.slice(segmentStart, end).trim();
|
|
261
|
+
if (seg.length > 0)
|
|
262
|
+
segments.push(seg);
|
|
263
|
+
};
|
|
217
264
|
let i = 0;
|
|
218
265
|
let parens = 0;
|
|
219
266
|
let braces = 0;
|
|
@@ -224,14 +271,14 @@ function hasTopLevelStatementSeparator(src) {
|
|
|
224
271
|
if (ch === "/" && next === "/") {
|
|
225
272
|
const nl = src.indexOf("\n", i + 2);
|
|
226
273
|
if (nl === -1)
|
|
227
|
-
|
|
274
|
+
break;
|
|
228
275
|
i = nl + 1;
|
|
229
276
|
continue;
|
|
230
277
|
}
|
|
231
278
|
if (ch === "/" && next === "*") {
|
|
232
279
|
const end = src.indexOf("*/", i + 2);
|
|
233
280
|
if (end === -1)
|
|
234
|
-
|
|
281
|
+
break;
|
|
235
282
|
i = end + 2;
|
|
236
283
|
continue;
|
|
237
284
|
}
|
|
@@ -264,13 +311,13 @@ function hasTopLevelStatementSeparator(src) {
|
|
|
264
311
|
else if (ch === "]")
|
|
265
312
|
brackets--;
|
|
266
313
|
else if (ch === ";" && parens === 0 && braces === 0 && brackets === 0) {
|
|
267
|
-
|
|
268
|
-
|
|
269
|
-
return true;
|
|
314
|
+
push(i);
|
|
315
|
+
segmentStart = i + 1;
|
|
270
316
|
}
|
|
271
317
|
i++;
|
|
272
318
|
}
|
|
273
|
-
|
|
319
|
+
push(src.length);
|
|
320
|
+
return segments;
|
|
274
321
|
}
|
|
275
322
|
// ============================================================================
|
|
276
323
|
// Per-call timeoutMs: clamp + defaults
|
|
@@ -294,6 +341,84 @@ export function clampTimeoutMs(input) {
|
|
|
294
341
|
}
|
|
295
342
|
return { value: input };
|
|
296
343
|
}
|
|
344
|
+
// How long to wait for the disambiguating probe on a ws=OPEN timeout. Matches
|
|
345
|
+
// PROBE_TIMEOUT_MS in connection.ts, which uses the same probe to reject stale
|
|
346
|
+
// CDP targets at connect time.
|
|
347
|
+
const STALE_TARGET_PROBE_TIMEOUT_MS = 1_500;
|
|
348
|
+
/**
|
|
349
|
+
* True for the one ambiguous failure shape: our own timer fired while the
|
|
350
|
+
* socket was still OPEN.
|
|
351
|
+
*
|
|
352
|
+
* Everything else is already decided. ws=CLOSED is transport (handled in
|
|
353
|
+
* classifyTransportError); a CDP-sourced error carries its own signal. This
|
|
354
|
+
* case alone can be either a genuinely slow expression or a stale CDP target
|
|
355
|
+
* that silently swallows evaluates while the device socket keeps ponging — and
|
|
356
|
+
* only a probe can tell them apart.
|
|
357
|
+
*/
|
|
358
|
+
export function isEvalTimeoutOnLiveSocket(message, source) {
|
|
359
|
+
if (source !== "server-timer")
|
|
360
|
+
return false;
|
|
361
|
+
return /ws=OPEN/i.test(message);
|
|
362
|
+
}
|
|
363
|
+
/**
|
|
364
|
+
* Is our CDP page still listed by Metro?
|
|
365
|
+
*
|
|
366
|
+
* This is the signal that a JS-level probe cannot provide: it goes over Metro's
|
|
367
|
+
* HTTP /json, so a blocked JavaScript thread has no effect on the answer.
|
|
368
|
+
*
|
|
369
|
+
* Conservative on purpose — an empty list (Metro unreachable, momentary blip)
|
|
370
|
+
* or a missing id counts as "still there". A false "gone" costs a reconnect and
|
|
371
|
+
* a retry that RE-RUNS the caller's expression, which must never happen on a
|
|
372
|
+
* guess.
|
|
373
|
+
*/
|
|
374
|
+
export async function isTargetStillAdvertised(app, fetchTargets = fetchDevices) {
|
|
375
|
+
const id = app.deviceInfo?.id;
|
|
376
|
+
if (!id)
|
|
377
|
+
return true;
|
|
378
|
+
const targets = await fetchTargets(app.port);
|
|
379
|
+
if (targets.length === 0)
|
|
380
|
+
return true;
|
|
381
|
+
return targets.some((t) => t.id === id);
|
|
382
|
+
}
|
|
383
|
+
/**
|
|
384
|
+
* classifyTransportError plus disambiguation for the one ambiguous shape: our
|
|
385
|
+
* timer fired while the socket was still OPEN.
|
|
386
|
+
*
|
|
387
|
+
* The transport was alive (the 1s ping/pong keepalive would have killed a dead
|
|
388
|
+
* socket within ~2s), so this is one of three things:
|
|
389
|
+
*
|
|
390
|
+
* 1. a genuinely slow ASYNC expression -> probe answers -> logical
|
|
391
|
+
* 2. a genuinely slow SYNC expression -> probe silent, but the
|
|
392
|
+
* (busy loop, big serialize) page is still listed -> logical
|
|
393
|
+
* 3. a stale CDP target (app reloaded -> probe silent AND the
|
|
394
|
+
* via shake / Metro 'r') page is gone -> transport
|
|
395
|
+
*
|
|
396
|
+
* Both signals are required for case 3. The probe alone cannot separate 2 from
|
|
397
|
+
* 3 — it is itself a Runtime.evaluate, so a blocked JS thread silences it
|
|
398
|
+
* exactly like a dead context. Verified on-device: a 15s busy loop silenced the
|
|
399
|
+
* probe and was misread as stale, triggering a reconnect that re-ran the
|
|
400
|
+
* expression. Metro's target list is independent of the JS thread and settles it.
|
|
401
|
+
*
|
|
402
|
+
* `probe` and `targetStillAdvertised` are injectable so the decision is
|
|
403
|
+
* testable without a socket or a Metro server.
|
|
404
|
+
*/
|
|
405
|
+
export async function classifyWithLivenessProbe(message, source, app, probe = probeCdpAlive, targetStillAdvertised = isTargetStillAdvertised) {
|
|
406
|
+
const base = classifyTransportError(message, source);
|
|
407
|
+
if (base.kind === "transport")
|
|
408
|
+
return base;
|
|
409
|
+
if (!isEvalTimeoutOnLiveSocket(message, source))
|
|
410
|
+
return base;
|
|
411
|
+
if (!app)
|
|
412
|
+
return base;
|
|
413
|
+
const alive = await probe(app.ws, STALE_TARGET_PROBE_TIMEOUT_MS);
|
|
414
|
+
if (alive)
|
|
415
|
+
return base;
|
|
416
|
+
// Probe silent. Only a target that Metro no longer lists is truly stale;
|
|
417
|
+
// otherwise the JS thread is just busy and retrying would re-run the call.
|
|
418
|
+
if (await targetStillAdvertised(app))
|
|
419
|
+
return base;
|
|
420
|
+
return { kind: "transport", pattern: "stale_target" };
|
|
421
|
+
}
|
|
297
422
|
/**
|
|
298
423
|
* Classify an error message into transport-vs-logical for auto-reconnect routing.
|
|
299
424
|
*
|
|
@@ -304,6 +429,17 @@ export function clampTimeoutMs(input) {
|
|
|
304
429
|
export function classifyTransportError(message, source) {
|
|
305
430
|
if (!message)
|
|
306
431
|
return { kind: "logical" };
|
|
432
|
+
// A server-timer expiry is normally logical ("this expression is slow").
|
|
433
|
+
// But the timer snapshots ws state into the message, and a CLOSED socket
|
|
434
|
+
// means the call never had a live transport to answer it — that is a
|
|
435
|
+
// transport failure no matter which timer noticed. Checked before the
|
|
436
|
+
// server-timer bail-out, which otherwise swallowed it.
|
|
437
|
+
//
|
|
438
|
+
// Primarily a backstop: failPendingExecutionsForSocket now fails in-flight
|
|
439
|
+
// calls at close time, so most of these surface as "WebSocket connection is
|
|
440
|
+
// not open" instead. This covers the race where our timer fires first.
|
|
441
|
+
if (/ws=CLOSED/i.test(message))
|
|
442
|
+
return { kind: "transport", pattern: "ws_closed" };
|
|
307
443
|
if (source === "server-timer")
|
|
308
444
|
return { kind: "logical" };
|
|
309
445
|
if (/No apps connected/i.test(message))
|
|
@@ -317,9 +453,14 @@ export function classifyTransportError(message, source) {
|
|
|
317
453
|
if (/target closed/i.test(message) || /Inspector detached/i.test(message)) {
|
|
318
454
|
return { kind: "transport", pattern: "target_closed" };
|
|
319
455
|
}
|
|
320
|
-
|
|
321
|
-
|
|
322
|
-
|
|
456
|
+
// NOTE: there used to be a `cdp_eval_too_long` branch here for a CDP-side
|
|
457
|
+
// "Expression took too long to evaluate". It was unreachable: the only
|
|
458
|
+
// producer of that phrase is our own timer in executeCDP, whose message
|
|
459
|
+
// always starts with "Timeout: Expression took too long" and is therefore
|
|
460
|
+
// tagged `server-timer` and handled above. Telemetry agrees — 367 such
|
|
461
|
+
// events over 90 days, none of them lacking our "Connection state:" block.
|
|
462
|
+
// Retrying is also wrong here: the 1s ping/pong keepalive terminates dead
|
|
463
|
+
// sockets within ~2s, so a still-OPEN socket had a live transport all along.
|
|
323
464
|
return { kind: "logical" };
|
|
324
465
|
}
|
|
325
466
|
// Error patterns that indicate a stale/destroyed context
|
|
@@ -401,6 +542,14 @@ function executeCDP(app, cleanedExpression, awaitPromise, timeoutMs) {
|
|
|
401
542
|
const TIMEOUT_MS = timeoutMs;
|
|
402
543
|
const currentMessageId = getNextMessageId();
|
|
403
544
|
const wrappedExpression = `${GLOBAL_POLYFILL} ${cleanedExpression}`;
|
|
545
|
+
// Every send funnels through here, including executeWithManualAwait's poll
|
|
546
|
+
// loop — which re-enters between sleeps and so can start on a socket that
|
|
547
|
+
// died since the previous send. ws.send() on a CLOSED socket does not
|
|
548
|
+
// throw; it simply never gets a reply, so without this the call burns its
|
|
549
|
+
// full timeout and then reports a misleading "took too long".
|
|
550
|
+
if (app.ws.readyState !== WebSocket.OPEN) {
|
|
551
|
+
return Promise.resolve({ success: false, error: "WebSocket connection is not open." });
|
|
552
|
+
}
|
|
404
553
|
return new Promise((resolve) => {
|
|
405
554
|
const timeoutId = setTimeout(() => {
|
|
406
555
|
pendingExecutions.delete(currentMessageId);
|
|
@@ -430,7 +579,9 @@ function executeCDP(app, cleanedExpression, awaitPromise, timeoutMs) {
|
|
|
430
579
|
].join("\n");
|
|
431
580
|
resolve({ success: false, error: errorMessage });
|
|
432
581
|
}, TIMEOUT_MS);
|
|
433
|
-
|
|
582
|
+
// Tag with the socket so a close event can fail this call immediately
|
|
583
|
+
// rather than letting it sit until TIMEOUT_MS.
|
|
584
|
+
pendingExecutions.set(currentMessageId, { resolve, timeoutId, ws: app.ws });
|
|
434
585
|
try {
|
|
435
586
|
app.ws.send(JSON.stringify({
|
|
436
587
|
id: currentMessageId,
|
|
@@ -654,7 +805,17 @@ export async function executeInApp(expression, awaitPromise = true, options = {}
|
|
|
654
805
|
const source = first.error?.startsWith("Timeout: Expression took too long")
|
|
655
806
|
? "server-timer"
|
|
656
807
|
: "cdp";
|
|
657
|
-
|
|
808
|
+
// getConnectedAppByDevice throws when an explicit device name matches
|
|
809
|
+
// nothing; that failure is already reported via `first`, so fall back to
|
|
810
|
+
// "nothing to probe" rather than replacing the original error.
|
|
811
|
+
let probeApp = null;
|
|
812
|
+
try {
|
|
813
|
+
probeApp = getConnectedAppByDevice(device);
|
|
814
|
+
}
|
|
815
|
+
catch {
|
|
816
|
+
probeApp = null;
|
|
817
|
+
}
|
|
818
|
+
const classification = await classifyWithLivenessProbe(first.error ?? "", source, probeApp);
|
|
658
819
|
if (classification.kind !== "transport") {
|
|
659
820
|
trackAutoReconnect("not_needed", toolName);
|
|
660
821
|
return withClampMeta(first);
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"jsExecute.js","sourceRoot":"","sources":["../../src/core/jsExecute.ts"],"names":[],"mappings":"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"}
|
|
1
|
+
{"version":3,"file":"jsExecute.js","sourceRoot":"","sources":["../../src/core/jsExecute.ts"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1,13 @@
|
|
|
1
|
+
import type { LogEntry } from "./types.js";
|
|
2
|
+
import type { LogEvent } from "./logEvents.js";
|
|
3
|
+
/**
|
|
4
|
+
* Derive events from console entries at READ time.
|
|
5
|
+
*
|
|
6
|
+
* The CDP ingest path is deliberately untouched — rewriting the hot path every
|
|
7
|
+
* user depends on, just to gain grouping, would be far riskier than deriving
|
|
8
|
+
* on read. `seq` (assigned in LogBuffer.add) is what keeps ids stable.
|
|
9
|
+
*/
|
|
10
|
+
export declare function jsEventsFromEntries(entries: LogEntry[], deviceName: string): LogEvent[];
|
|
11
|
+
/** Scan every device buffer for the entry whose seq matches the id. */
|
|
12
|
+
export declare function findJsEvent(id: string): LogEvent | undefined;
|
|
13
|
+
//# sourceMappingURL=jsLogEvents.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"jsLogEvents.d.ts","sourceRoot":"","sources":["../../src/core/jsLogEvents.ts"],"names":[],"mappings":"AACA,OAAO,KAAK,EAAE,QAAQ,EAAE,MAAM,YAAY,CAAC;AAC3C,OAAO,KAAK,EAAyB,QAAQ,EAAc,MAAM,gBAAgB,CAAC;AAoBlF;;;;;;GAMG;AACH,wBAAgB,mBAAmB,CAAC,OAAO,EAAE,QAAQ,EAAE,EAAE,UAAU,EAAE,MAAM,GAAG,QAAQ,EAAE,CA0BvF;AAED,uEAAuE;AACvE,wBAAgB,WAAW,CAAC,EAAE,EAAE,MAAM,GAAG,QAAQ,GAAG,SAAS,CAS5D"}
|
|
@@ -0,0 +1,65 @@
|
|
|
1
|
+
import { createHash } from "node:crypto";
|
|
2
|
+
import { logBuffers } from "./state.js";
|
|
3
|
+
import { registerJsEventResolver } from "./logEvents.js";
|
|
4
|
+
const JS_FRAME = /^\s+at\s/;
|
|
5
|
+
const TITLE_MAX = 160;
|
|
6
|
+
function classify(entry) {
|
|
7
|
+
const lines = entry.message.split("\n");
|
|
8
|
+
const frames = lines.filter((l) => JS_FRAME.test(l)).length;
|
|
9
|
+
const isError = entry.level === "error" || entry.level === "fatal";
|
|
10
|
+
return { kind: isError && frames > 0 ? "exception" : "message", frames };
|
|
11
|
+
}
|
|
12
|
+
function titleFor(entry, frames) {
|
|
13
|
+
const head = entry.message.split("\n")[0];
|
|
14
|
+
const clipped = head.length > TITLE_MAX ? `${head.slice(0, TITLE_MAX)}…` : head;
|
|
15
|
+
return frames > 0 ? `${clipped} (${frames} frames)` : clipped;
|
|
16
|
+
}
|
|
17
|
+
/**
|
|
18
|
+
* Derive events from console entries at READ time.
|
|
19
|
+
*
|
|
20
|
+
* The CDP ingest path is deliberately untouched — rewriting the hot path every
|
|
21
|
+
* user depends on, just to gain grouping, would be far riskier than deriving
|
|
22
|
+
* on read. `seq` (assigned in LogBuffer.add) is what keeps ids stable.
|
|
23
|
+
*/
|
|
24
|
+
export function jsEventsFromEntries(entries, deviceName) {
|
|
25
|
+
return entries.map((entry) => {
|
|
26
|
+
const { kind, frames } = classify(entry);
|
|
27
|
+
const line = {
|
|
28
|
+
ts: entry.timestamp,
|
|
29
|
+
level: entry.level,
|
|
30
|
+
pid: 0,
|
|
31
|
+
tag: "console",
|
|
32
|
+
message: entry.message,
|
|
33
|
+
raw: entry.message,
|
|
34
|
+
};
|
|
35
|
+
return {
|
|
36
|
+
id: `j${entry.seq}`,
|
|
37
|
+
source: "js",
|
|
38
|
+
deviceKey: deviceName,
|
|
39
|
+
deviceName,
|
|
40
|
+
ts: entry.timestamp,
|
|
41
|
+
level: entry.level,
|
|
42
|
+
kind,
|
|
43
|
+
title: titleFor(entry, frames),
|
|
44
|
+
lineCount: 1,
|
|
45
|
+
byteSize: entry.message.length,
|
|
46
|
+
fingerprint: createHash("sha1").update(`js|${entry.seq}`).digest("hex"),
|
|
47
|
+
lines: [line],
|
|
48
|
+
};
|
|
49
|
+
});
|
|
50
|
+
}
|
|
51
|
+
/** Scan every device buffer for the entry whose seq matches the id. */
|
|
52
|
+
export function findJsEvent(id) {
|
|
53
|
+
const digits = id.slice(1);
|
|
54
|
+
if (!/^\d+$/.test(digits))
|
|
55
|
+
return undefined;
|
|
56
|
+
const seq = Number(digits);
|
|
57
|
+
for (const [deviceName, buffer] of logBuffers.entries()) {
|
|
58
|
+
const hit = buffer.getAll().find((e) => e.seq === seq);
|
|
59
|
+
if (hit)
|
|
60
|
+
return jsEventsFromEntries([hit], deviceName)[0];
|
|
61
|
+
}
|
|
62
|
+
return undefined;
|
|
63
|
+
}
|
|
64
|
+
registerJsEventResolver(findJsEvent);
|
|
65
|
+
//# sourceMappingURL=jsLogEvents.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"jsLogEvents.js","sourceRoot":"","sources":["../../src/core/jsLogEvents.ts"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1,65 @@
|
|
|
1
|
+
import type { ConnectionCheckResult } from "./types.js";
|
|
2
|
+
import type { LogPipelineResult } from "./connection.js";
|
|
3
|
+
/**
|
|
4
|
+
* Why a log read came back with nothing.
|
|
5
|
+
*
|
|
6
|
+
* `no_logs_verified` vs `no_logs_unverified` is the important distinction:
|
|
7
|
+
* `checkAndEnsureConnection` can report `connected: true` straight from the
|
|
8
|
+
* passive socket state without touching the wire, so "the app printed nothing"
|
|
9
|
+
* is only a claim we can stand behind once `verifyLogPipeline` has proven the
|
|
10
|
+
* CDP console subscription is actually alive end to end. Everything else is
|
|
11
|
+
* an unproven guess and must be labelled as such — otherwise a dead pipeline
|
|
12
|
+
* is indistinguishable from a quiet app in telemetry.
|
|
13
|
+
*/
|
|
14
|
+
export type EmptyLogReason = "disconnected" | "post_reconnect" | "pipeline_failed" | "pipeline_recovered" | "no_logs_verified" | "no_logs_unverified";
|
|
15
|
+
export interface LogDiagnosis {
|
|
16
|
+
reason: EmptyLogReason;
|
|
17
|
+
/** Human-readable warnings to append to the tool response. */
|
|
18
|
+
warning: string;
|
|
19
|
+
/** True when the pipeline was broken and recovery succeeded — caller should re-read the buffer. */
|
|
20
|
+
recovered: boolean;
|
|
21
|
+
}
|
|
22
|
+
/**
|
|
23
|
+
* Labels for the "connected, but nothing captured" verdict. Parameterised so
|
|
24
|
+
* each tool reports in its own vocabulary (`no_logs_*` vs `no_requests_*`)
|
|
25
|
+
* while sharing this logic.
|
|
26
|
+
*/
|
|
27
|
+
export interface EmptyDiagnosisLabels {
|
|
28
|
+
/** Used only when a pipeline probe actually proved the capture path healthy. */
|
|
29
|
+
verified: string;
|
|
30
|
+
/** Used when no probe ran, or none exists for this data source. */
|
|
31
|
+
unverified: string;
|
|
32
|
+
}
|
|
33
|
+
export interface EmptyDiagnosisDeps<TApp> {
|
|
34
|
+
checkConnection: () => Promise<ConnectionCheckResult>;
|
|
35
|
+
labels: EmptyDiagnosisLabels;
|
|
36
|
+
/**
|
|
37
|
+
* The app whose pipeline to verify, or null/undefined when none can be
|
|
38
|
+
* resolved. Omit together with `verifyPipeline` for data sources that have
|
|
39
|
+
* no end-to-end probe — the verdict then stays `unverified`, which is the
|
|
40
|
+
* honest answer rather than a false clean bill of health.
|
|
41
|
+
*/
|
|
42
|
+
resolveApp?: () => TApp | null | undefined;
|
|
43
|
+
verifyPipeline?: (app: TApp) => Promise<LogPipelineResult>;
|
|
44
|
+
}
|
|
45
|
+
export interface EmptyDiagnosis {
|
|
46
|
+
reason: string;
|
|
47
|
+
warning: string;
|
|
48
|
+
recovered: boolean;
|
|
49
|
+
}
|
|
50
|
+
export type LogDiagnosisDeps<TApp> = Omit<EmptyDiagnosisDeps<TApp>, "labels"> & {
|
|
51
|
+
resolveApp: () => TApp | null | undefined;
|
|
52
|
+
verifyPipeline: (app: TApp) => Promise<LogPipelineResult>;
|
|
53
|
+
};
|
|
54
|
+
/**
|
|
55
|
+
* Diagnose why a buffer read returned zero entries.
|
|
56
|
+
*
|
|
57
|
+
* Shared by every empty-result path in `get_logs` and the network tools
|
|
58
|
+
* (summary, SDK, and the plain buffer read) so that all of them report the
|
|
59
|
+
* same reason for the same underlying state.
|
|
60
|
+
*/
|
|
61
|
+
export declare function diagnoseEmptyResult<TApp>(deps: EmptyDiagnosisDeps<TApp>): Promise<EmptyDiagnosis>;
|
|
62
|
+
export declare const LOG_EMPTY_LABELS: EmptyDiagnosisLabels;
|
|
63
|
+
/** `diagnoseEmptyResult` bound to the log vocabulary. */
|
|
64
|
+
export declare function diagnoseEmptyLogs<TApp>(deps: LogDiagnosisDeps<TApp>): Promise<LogDiagnosis>;
|
|
65
|
+
//# sourceMappingURL=logDiagnosis.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"logDiagnosis.d.ts","sourceRoot":"","sources":["../../src/core/logDiagnosis.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,qBAAqB,EAAE,MAAM,YAAY,CAAC;AAGxD,OAAO,KAAK,EAAE,iBAAiB,EAAE,MAAM,iBAAiB,CAAC;AAEzD;;;;;;;;;;GAUG;AACH,MAAM,MAAM,cAAc,GACpB,cAAc,GACd,gBAAgB,GAChB,iBAAiB,GACjB,oBAAoB,GACpB,kBAAkB,GAClB,oBAAoB,CAAC;AAE3B,MAAM,WAAW,YAAY;IACzB,MAAM,EAAE,cAAc,CAAC;IACvB,8DAA8D;IAC9D,OAAO,EAAE,MAAM,CAAC;IAChB,mGAAmG;IACnG,SAAS,EAAE,OAAO,CAAC;CACtB;AAED;;;;GAIG;AACH,MAAM,WAAW,oBAAoB;IACjC,gFAAgF;IAChF,QAAQ,EAAE,MAAM,CAAC;IACjB,mEAAmE;IACnE,UAAU,EAAE,MAAM,CAAC;CACtB;AAED,MAAM,WAAW,kBAAkB,CAAC,IAAI;IACpC,eAAe,EAAE,MAAM,OAAO,CAAC,qBAAqB,CAAC,CAAC;IACtD,MAAM,EAAE,oBAAoB,CAAC;IAC7B;;;;;OAKG;IACH,UAAU,CAAC,EAAE,MAAM,IAAI,GAAG,IAAI,GAAG,SAAS,CAAC;IAC3C,cAAc,CAAC,EAAE,CAAC,GAAG,EAAE,IAAI,KAAK,OAAO,CAAC,iBAAiB,CAAC,CAAC;CAC9D;AAED,MAAM,WAAW,cAAc;IAC3B,MAAM,EAAE,MAAM,CAAC;IACf,OAAO,EAAE,MAAM,CAAC;IAChB,SAAS,EAAE,OAAO,CAAC;CACtB;AAED,MAAM,MAAM,gBAAgB,CAAC,IAAI,IAAI,IAAI,CAAC,kBAAkB,CAAC,IAAI,CAAC,EAAE,QAAQ,CAAC,GAAG;IAC5E,UAAU,EAAE,MAAM,IAAI,GAAG,IAAI,GAAG,SAAS,CAAC;IAC1C,cAAc,EAAE,CAAC,GAAG,EAAE,IAAI,KAAK,OAAO,CAAC,iBAAiB,CAAC,CAAC;CAC7D,CAAC;AAEF;;;;;;GAMG;AACH,wBAAsB,mBAAmB,CAAC,IAAI,EAAE,IAAI,EAAE,kBAAkB,CAAC,IAAI,CAAC,GAAG,OAAO,CAAC,cAAc,CAAC,CAmCvG;AAED,eAAO,MAAM,gBAAgB,EAAE,oBAG9B,CAAC;AAEF,yDAAyD;AACzD,wBAAsB,iBAAiB,CAAC,IAAI,EAAE,IAAI,EAAE,gBAAgB,CAAC,IAAI,CAAC,GAAG,OAAO,CAAC,YAAY,CAAC,CAGjG"}
|
|
@@ -0,0 +1,51 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Diagnose why a buffer read returned zero entries.
|
|
3
|
+
*
|
|
4
|
+
* Shared by every empty-result path in `get_logs` and the network tools
|
|
5
|
+
* (summary, SDK, and the plain buffer read) so that all of them report the
|
|
6
|
+
* same reason for the same underlying state.
|
|
7
|
+
*/
|
|
8
|
+
export async function diagnoseEmptyResult(deps) {
|
|
9
|
+
const status = await deps.checkConnection();
|
|
10
|
+
let warning = status.message ? `\n\n${status.message}` : "";
|
|
11
|
+
if (!status.connected) {
|
|
12
|
+
return { reason: "disconnected", warning, recovered: false };
|
|
13
|
+
}
|
|
14
|
+
// Connected — but by the passive check, which proves nothing about the
|
|
15
|
+
// capture subscription. Start pessimistic and let the pipeline probe
|
|
16
|
+
// upgrade the verdict.
|
|
17
|
+
let reason = status.wasReconnected ? "post_reconnect" : deps.labels.unverified;
|
|
18
|
+
let recovered = false;
|
|
19
|
+
const app = deps.resolveApp?.();
|
|
20
|
+
if (app && deps.verifyPipeline) {
|
|
21
|
+
const pipeline = await deps.verifyPipeline(app);
|
|
22
|
+
if (pipeline.message) {
|
|
23
|
+
warning += `\n\n${pipeline.message}`;
|
|
24
|
+
}
|
|
25
|
+
if (!pipeline.ok) {
|
|
26
|
+
reason = "pipeline_failed";
|
|
27
|
+
}
|
|
28
|
+
else if (pipeline.recovered) {
|
|
29
|
+
reason = "pipeline_recovered";
|
|
30
|
+
recovered = true;
|
|
31
|
+
}
|
|
32
|
+
else if (reason === deps.labels.unverified) {
|
|
33
|
+
// Probe round-tripped: the pipeline is provably healthy, so an
|
|
34
|
+
// empty buffer really does mean the app produced nothing.
|
|
35
|
+
reason = deps.labels.verified;
|
|
36
|
+
}
|
|
37
|
+
// A healthy pipeline does not erase `post_reconnect` — the reconnect is
|
|
38
|
+
// still the reason earlier data is missing.
|
|
39
|
+
}
|
|
40
|
+
return { reason, warning, recovered };
|
|
41
|
+
}
|
|
42
|
+
export const LOG_EMPTY_LABELS = {
|
|
43
|
+
verified: "no_logs_verified",
|
|
44
|
+
unverified: "no_logs_unverified"
|
|
45
|
+
};
|
|
46
|
+
/** `diagnoseEmptyResult` bound to the log vocabulary. */
|
|
47
|
+
export async function diagnoseEmptyLogs(deps) {
|
|
48
|
+
const result = await diagnoseEmptyResult({ ...deps, labels: LOG_EMPTY_LABELS });
|
|
49
|
+
return { ...result, reason: result.reason };
|
|
50
|
+
}
|
|
51
|
+
//# sourceMappingURL=logDiagnosis.js.map
|