react-native-ai-debugger 1.10.23 → 1.10.25
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 +2 -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/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/componentSource.test.d.ts +2 -0
- package/build/__tests__/unit/componentSource.test.d.ts.map +1 -0
- package/build/__tests__/unit/componentSource.test.js +67 -0
- package/build/__tests__/unit/componentSource.test.js.map +1 -0
- package/build/__tests__/unit/componentSourceResolve.test.d.ts +2 -0
- package/build/__tests__/unit/componentSourceResolve.test.d.ts.map +1 -0
- package/build/__tests__/unit/componentSourceResolve.test.js +91 -0
- package/build/__tests__/unit/componentSourceResolve.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 +99 -0
- package/build/__tests__/unit/getLogsEmptyContract.test.js.map +1 -0
- package/build/__tests__/unit/inspectorHarvest.test.d.ts +2 -0
- package/build/__tests__/unit/inspectorHarvest.test.d.ts.map +1 -0
- package/build/__tests__/unit/inspectorHarvest.test.js +61 -0
- package/build/__tests__/unit/inspectorHarvest.test.js.map +1 -0
- package/build/__tests__/unit/inspectorSource.test.d.ts +2 -0
- package/build/__tests__/unit/inspectorSource.test.d.ts.map +1 -0
- package/build/__tests__/unit/inspectorSource.test.js +74 -0
- package/build/__tests__/unit/inspectorSource.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/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/selectionBuffer.test.d.ts +2 -0
- package/build/__tests__/unit/selectionBuffer.test.d.ts.map +1 -0
- package/build/__tests__/unit/selectionBuffer.test.js +86 -0
- package/build/__tests__/unit/selectionBuffer.test.js.map +1 -0
- package/build/__tests__/unit/selectionPoller.test.d.ts +2 -0
- package/build/__tests__/unit/selectionPoller.test.d.ts.map +1 -0
- package/build/__tests__/unit/selectionPoller.test.js +109 -0
- package/build/__tests__/unit/selectionPoller.test.js.map +1 -0
- package/build/__tests__/unit/symbolicate.test.d.ts +2 -0
- package/build/__tests__/unit/symbolicate.test.d.ts.map +1 -0
- package/build/__tests__/unit/symbolicate.test.js +154 -0
- package/build/__tests__/unit/symbolicate.test.js.map +1 -0
- package/build/__tests__/unit/transportClassify.test.js +108 -7
- package/build/__tests__/unit/transportClassify.test.js.map +1 -1
- package/build/core/componentSource.d.ts +62 -0
- package/build/core/componentSource.d.ts.map +1 -0
- package/build/core/componentSource.js +268 -0
- package/build/core/componentSource.js.map +1 -0
- package/build/core/connection.d.ts +30 -0
- package/build/core/connection.d.ts.map +1 -1
- package/build/core/connection.js +101 -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.js +1 -1
- package/build/core/index.d.ts +4 -1
- package/build/core/index.d.ts.map +1 -1
- package/build/core/index.js +4 -1
- package/build/core/index.js.map +1 -1
- package/build/core/inspector.d.ts +24 -0
- package/build/core/inspector.d.ts.map +1 -1
- package/build/core/inspector.js +58 -0
- package/build/core/inspector.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/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/register.d.ts.map +1 -1
- package/build/core/register.js +22 -6
- package/build/core/register.js.map +1 -1
- package/build/core/selectionBuffer.d.ts +42 -0
- package/build/core/selectionBuffer.d.ts.map +1 -0
- package/build/core/selectionBuffer.js +51 -0
- package/build/core/selectionBuffer.js.map +1 -0
- package/build/core/selectionPoller.d.ts +13 -0
- package/build/core/selectionPoller.d.ts.map +1 -0
- package/build/core/selectionPoller.js +102 -0
- package/build/core/selectionPoller.js.map +1 -0
- 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/symbolicate.d.ts +18 -0
- package/build/core/symbolicate.d.ts.map +1 -0
- package/build/core/symbolicate.js +119 -0
- package/build/core/symbolicate.js.map +1 -0
- package/build/core/types.d.ts +8 -0
- package/build/core/types.d.ts.map +1 -1
- package/build/tools/componentTools.d.ts.map +1 -1
- package/build/tools/componentTools.js +78 -9
- package/build/tools/componentTools.js.map +1 -1
- package/build/tools/connectionTools.d.ts.map +1 -1
- package/build/tools/connectionTools.js +10 -4
- 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/interactionTools.d.ts.map +1 -1
- package/build/tools/interactionTools.js +1 -0
- package/build/tools/interactionTools.js.map +1 -1
- package/build/tools/logTools.d.ts.map +1 -1
- package/build/tools/logTools.js +77 -69
- package/build/tools/logTools.js.map +1 -1
- package/build/tools/networkTools.d.ts.map +1 -1
- package/build/tools/networkTools.js +63 -13
- package/build/tools/networkTools.js.map +1 -1
- package/build/tools/screenshotTools.d.ts.map +1 -1
- package/build/tools/screenshotTools.js +3 -0
- package/build/tools/screenshotTools.js.map +1 -1
- package/package.json +1 -1
|
@@ -0,0 +1,108 @@
|
|
|
1
|
+
import { describe, it, expect, beforeEach, afterEach } from "@jest/globals";
|
|
2
|
+
import WebSocket from "ws";
|
|
3
|
+
const { connectedApps } = await import("../../core/state.js");
|
|
4
|
+
const { resolveConnectedAppByDevice, describeDeviceResolution, getConnectedAppByDevice } = await import("../../core/connection.js");
|
|
5
|
+
function makeApp(key, deviceName, platform, ids = {}) {
|
|
6
|
+
return {
|
|
7
|
+
ws: { readyState: WebSocket.OPEN },
|
|
8
|
+
deviceInfo: {
|
|
9
|
+
id: key,
|
|
10
|
+
title: "Hermes React Native",
|
|
11
|
+
description: "",
|
|
12
|
+
appId: "com.test",
|
|
13
|
+
type: "node",
|
|
14
|
+
webSocketDebuggerUrl: `ws://localhost:8081/${key}`,
|
|
15
|
+
deviceName
|
|
16
|
+
},
|
|
17
|
+
port: 8081,
|
|
18
|
+
platform,
|
|
19
|
+
...ids
|
|
20
|
+
};
|
|
21
|
+
}
|
|
22
|
+
describe("resolveConnectedAppByDevice", () => {
|
|
23
|
+
beforeEach(() => connectedApps.clear());
|
|
24
|
+
afterEach(() => connectedApps.clear());
|
|
25
|
+
it("reports kind=none instead of throwing when nothing is connected", () => {
|
|
26
|
+
const resolution = resolveConnectedAppByDevice("iPhone 17 Pro");
|
|
27
|
+
expect(resolution.kind).toBe("none");
|
|
28
|
+
// The recoverable-miss contract: reload_app relies on this to run its
|
|
29
|
+
// auto-connect sweep rather than aborting on the first resolve.
|
|
30
|
+
expect(describeDeviceResolution(resolution)).toContain("No devices are currently connected");
|
|
31
|
+
});
|
|
32
|
+
it("matches on device name, simulator UDID, and adb serial", () => {
|
|
33
|
+
connectedApps.set("a", makeApp("a", "iPhone 17 Pro", "ios", { simulatorUdid: "549D04C7-A774-4313-BFC0-F132FF609274" }));
|
|
34
|
+
connectedApps.set("b", makeApp("b", "sdk_gphone16k_arm64 - 17 - API 37", "android", { adbSerial: "emulator-5554" }));
|
|
35
|
+
expect(resolveConnectedAppByDevice("iphone 17")).toMatchObject({ kind: "ok", app: { platform: "ios" } });
|
|
36
|
+
expect(resolveConnectedAppByDevice("549D04C7")).toMatchObject({ kind: "ok", app: { platform: "ios" } });
|
|
37
|
+
expect(resolveConnectedAppByDevice("emulator-5554")).toMatchObject({ kind: "ok", app: { platform: "android" } });
|
|
38
|
+
});
|
|
39
|
+
it("prefers the exact name over a broader substring match", () => {
|
|
40
|
+
connectedApps.set("a", makeApp("a", "iPhone 17 Pro", "ios"));
|
|
41
|
+
connectedApps.set("b", makeApp("b", "iPhone 17 Pro Max", "ios"));
|
|
42
|
+
const resolution = resolveConnectedAppByDevice("iPhone 17 Pro");
|
|
43
|
+
expect(resolution).toMatchObject({ kind: "ok" });
|
|
44
|
+
if (resolution.kind === "ok") {
|
|
45
|
+
expect(resolution.app.deviceInfo.deviceName).toBe("iPhone 17 Pro");
|
|
46
|
+
}
|
|
47
|
+
});
|
|
48
|
+
it("reports ambiguity when several devices match and none exactly", () => {
|
|
49
|
+
connectedApps.set("a", makeApp("a", "iPhone 17 Pro", "ios"));
|
|
50
|
+
connectedApps.set("b", makeApp("b", "iPhone 17 Pro Max", "ios"));
|
|
51
|
+
const resolution = resolveConnectedAppByDevice("iPhone 17");
|
|
52
|
+
expect(resolution.kind).toBe("ambiguous");
|
|
53
|
+
expect(describeDeviceResolution(resolution)).toContain("Multiple devices match");
|
|
54
|
+
});
|
|
55
|
+
it("names the platform mismatch when only the other platform is attached", () => {
|
|
56
|
+
connectedApps.set("b", makeApp("b", "sdk_gphone16k_arm64 - 17 - API 37", "android", { adbSerial: "emulator-5554" }));
|
|
57
|
+
const message = describeDeviceResolution(resolveConnectedAppByDevice("iPhone 17 Pro"));
|
|
58
|
+
expect(message).toContain("Only Android device(s) are attached");
|
|
59
|
+
expect(message).toContain("ios_launch_app");
|
|
60
|
+
});
|
|
61
|
+
it("names the mismatch in the other direction too", () => {
|
|
62
|
+
connectedApps.set("a", makeApp("a", "iPhone 17 Pro", "ios"));
|
|
63
|
+
const message = describeDeviceResolution(resolveConnectedAppByDevice("Pixel 7 Pro"));
|
|
64
|
+
expect(message).toContain("Only iOS device(s) are attached");
|
|
65
|
+
expect(message).toContain("android_launch_app");
|
|
66
|
+
});
|
|
67
|
+
it("falls back to listing connected devices when the platform is unclear", () => {
|
|
68
|
+
connectedApps.set("a", makeApp("a", "iPhone 17 Pro", "ios"));
|
|
69
|
+
const message = describeDeviceResolution(resolveConnectedAppByDevice("Squadra"));
|
|
70
|
+
expect(message).toContain('Connected devices: "iPhone 17 Pro"');
|
|
71
|
+
expect(message).toContain("get_apps");
|
|
72
|
+
});
|
|
73
|
+
it("drops apps whose socket is no longer OPEN", () => {
|
|
74
|
+
const stale = makeApp("a", "iPhone 17 Pro", "ios");
|
|
75
|
+
stale.ws = { readyState: WebSocket.CLOSED };
|
|
76
|
+
connectedApps.set("a", stale);
|
|
77
|
+
expect(resolveConnectedAppByDevice("iPhone 17 Pro").kind).toBe("none");
|
|
78
|
+
expect(connectedApps.size).toBe(0);
|
|
79
|
+
});
|
|
80
|
+
});
|
|
81
|
+
describe("getConnectedAppByDevice", () => {
|
|
82
|
+
beforeEach(() => connectedApps.clear());
|
|
83
|
+
afterEach(() => connectedApps.clear());
|
|
84
|
+
it("still throws UserInputError on a miss, now with a triage context", () => {
|
|
85
|
+
connectedApps.set("a", makeApp("a", "iPhone 17 Pro", "ios"));
|
|
86
|
+
try {
|
|
87
|
+
getConnectedAppByDevice("Pixel 7 Pro");
|
|
88
|
+
throw new Error("expected getConnectedAppByDevice to throw");
|
|
89
|
+
}
|
|
90
|
+
catch (error) {
|
|
91
|
+
expect(error.name).toBe("UserInputError");
|
|
92
|
+
expect(error.context).toBe("device_mismatch");
|
|
93
|
+
}
|
|
94
|
+
});
|
|
95
|
+
it("tags the no-devices case distinctly", () => {
|
|
96
|
+
try {
|
|
97
|
+
getConnectedAppByDevice("Pixel 7 Pro");
|
|
98
|
+
throw new Error("expected getConnectedAppByDevice to throw");
|
|
99
|
+
}
|
|
100
|
+
catch (error) {
|
|
101
|
+
expect(error.context).toBe("no_devices_connected");
|
|
102
|
+
}
|
|
103
|
+
});
|
|
104
|
+
it("returns null (never throws) when no device argument is given", () => {
|
|
105
|
+
expect(getConnectedAppByDevice()).toBeNull();
|
|
106
|
+
});
|
|
107
|
+
});
|
|
108
|
+
//# sourceMappingURL=deviceResolution.test.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"deviceResolution.test.js","sourceRoot":"","sources":["../../../src/__tests__/unit/deviceResolution.test.ts"],"names":[],"mappings":"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"}
|
|
@@ -51,32 +51,65 @@ describe("validateAndPreprocessExpression", () => {
|
|
|
51
51
|
expect(result.valid).toBe(false);
|
|
52
52
|
expect(result.error).toContain("empty");
|
|
53
53
|
});
|
|
54
|
-
|
|
54
|
+
// Hermes compiles async arrows/functions fine — they are expressions, and the
|
|
55
|
+
// manual-await wrapper resolves the Promise they return. Verified on-device
|
|
56
|
+
// (iOS 26 sim, Hermes): `(async () => { const r = await Promise.resolve(41);
|
|
57
|
+
// return r + 1; })()` evaluates to 42. Only a BARE top-level `await` is a
|
|
58
|
+
// genuine syntax error, because the wrapper emits `var __v=(<expr>);`.
|
|
59
|
+
it("accepts an async arrow expression", () => {
|
|
55
60
|
const result = validateAndPreprocessExpression("async () => { await fetch() }");
|
|
56
|
-
expect(result.valid).toBe(
|
|
57
|
-
expect(result.error).toMatch(/top-level await is not supported in Hermes/i);
|
|
61
|
+
expect(result.valid).toBe(true);
|
|
58
62
|
});
|
|
59
|
-
it("
|
|
63
|
+
it("accepts async IIFE", () => {
|
|
60
64
|
const result = validateAndPreprocessExpression("(async () => { await fetch() })()");
|
|
65
|
+
expect(result.valid).toBe(true);
|
|
66
|
+
});
|
|
67
|
+
it("points require() callers at Metro's __r registry", () => {
|
|
68
|
+
const result = validateAndPreprocessExpression("require('react-native').Dimensions.get('window')");
|
|
61
69
|
expect(result.valid).toBe(false);
|
|
62
|
-
expect(result.error).
|
|
70
|
+
expect(result.error).toContain("require()");
|
|
71
|
+
expect(result.error).toContain("__r");
|
|
63
72
|
});
|
|
64
73
|
it("strips comments and validates remaining expression", () => {
|
|
65
74
|
const result = validateAndPreprocessExpression("// setup\n__DEV__");
|
|
66
75
|
expect(result.valid).toBe(true);
|
|
67
76
|
expect(result.expression).toBe("__DEV__");
|
|
68
77
|
});
|
|
69
|
-
|
|
78
|
+
// The manual-await path emits `var __v=(<expr>);`, so a top-level `;` really
|
|
79
|
+
// does break compilation. Rather than reject, rewrite into the IIFE the old
|
|
80
|
+
// error message used to ask the caller to write by hand.
|
|
81
|
+
it("auto-wraps a multi-statement expression into an IIFE", () => {
|
|
70
82
|
const result = validateAndPreprocessExpression("var x = 1; x");
|
|
83
|
+
expect(result.valid).toBe(true);
|
|
84
|
+
expect(result.expression).toBe("(function(){ var x = 1; return x; })()");
|
|
85
|
+
expect(result.rewritten).toBe("iife-wrap");
|
|
86
|
+
});
|
|
87
|
+
it("auto-wraps multi-statement with console.log, returning the final value", () => {
|
|
88
|
+
const result = validateAndPreprocessExpression("console.log('[TEST] hello'); 1+1");
|
|
89
|
+
expect(result.valid).toBe(true);
|
|
90
|
+
expect(result.expression).toBe("(function(){ console.log('[TEST] hello'); return 1+1; })()");
|
|
91
|
+
});
|
|
92
|
+
it("auto-wraps the real-world globalThis assignment pattern", () => {
|
|
93
|
+
const result = validateAndPreprocessExpression("globalThis.__perfRow=0; globalThis.__perfMount=0; 'ok'");
|
|
94
|
+
expect(result.valid).toBe(true);
|
|
95
|
+
expect(result.expression).toBe("(function(){ globalThis.__perfRow=0; globalThis.__perfMount=0; return 'ok'; })()");
|
|
96
|
+
});
|
|
97
|
+
it("does not auto-wrap when the final statement cannot yield a value", () => {
|
|
98
|
+
const result = validateAndPreprocessExpression("var x = 1; if (x) { x++ }");
|
|
71
99
|
expect(result.valid).toBe(false);
|
|
72
100
|
expect(result.error).toContain("Multi-statement");
|
|
73
101
|
expect(result.error).toContain("IIFE");
|
|
74
102
|
});
|
|
75
|
-
it("
|
|
76
|
-
const result = validateAndPreprocessExpression("
|
|
103
|
+
it("does not auto-wrap when the final statement is a declaration", () => {
|
|
104
|
+
const result = validateAndPreprocessExpression("var x = 1; var y = 2");
|
|
77
105
|
expect(result.valid).toBe(false);
|
|
78
106
|
expect(result.error).toContain("Multi-statement");
|
|
79
107
|
});
|
|
108
|
+
it("preserves an explicit trailing return when auto-wrapping", () => {
|
|
109
|
+
const result = validateAndPreprocessExpression("var x = 1; return x");
|
|
110
|
+
expect(result.valid).toBe(true);
|
|
111
|
+
expect(result.expression).toBe("(function(){ var x = 1; return x; })()");
|
|
112
|
+
});
|
|
80
113
|
it("accepts trailing semicolon on a single statement", () => {
|
|
81
114
|
const result = validateAndPreprocessExpression("1 + 1;");
|
|
82
115
|
expect(result.valid).toBe(true);
|
|
@@ -103,13 +136,16 @@ describe("validateAndPreprocessExpression", () => {
|
|
|
103
136
|
expect(result.error).toMatch(/top-level await is not supported in Hermes/i);
|
|
104
137
|
expect(result.error).toMatch(/Promise\.resolve\(\)\.then/);
|
|
105
138
|
});
|
|
106
|
-
it("
|
|
139
|
+
it("accepts async function expressions", () => {
|
|
107
140
|
const result = validateAndPreprocessExpression("async function x() { return 1 }");
|
|
108
|
-
expect(result.valid).toBe(
|
|
109
|
-
expect(result.error).toMatch(/top-level await is not supported in Hermes/i);
|
|
141
|
+
expect(result.valid).toBe(true);
|
|
110
142
|
});
|
|
111
|
-
it("
|
|
143
|
+
it("accepts a concise async arrow IIFE", () => {
|
|
112
144
|
const result = validateAndPreprocessExpression("(async () => 1)()");
|
|
145
|
+
expect(result.valid).toBe(true);
|
|
146
|
+
});
|
|
147
|
+
it("still rejects a bare top-level await inside an async IIFE's caller position", () => {
|
|
148
|
+
const result = validateAndPreprocessExpression("await (async () => 1)()");
|
|
113
149
|
expect(result.valid).toBe(false);
|
|
114
150
|
expect(result.error).toMatch(/top-level await is not supported in Hermes/i);
|
|
115
151
|
});
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"executor.test.js","sourceRoot":"","sources":["../../../src/__tests__/unit/executor.test.ts"],"names":[],"mappings":"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"}
|
|
1
|
+
{"version":3,"file":"executor.test.js","sourceRoot":"","sources":["../../../src/__tests__/unit/executor.test.ts"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"getLogsEmptyContract.test.d.ts","sourceRoot":"","sources":["../../../src/__tests__/unit/getLogsEmptyContract.test.ts"],"names":[],"mappings":""}
|
|
@@ -0,0 +1,99 @@
|
|
|
1
|
+
// Guards the get_logs empty-result contract at the source level.
|
|
2
|
+
//
|
|
3
|
+
// The original bug was not bad logic — it was a return path that forgot to
|
|
4
|
+
// report. `get_logs` has six of them (SDK summary, SDK tonl, SDK text, buffer
|
|
5
|
+
// summary, recovered-retry, and the two final formats), and three of them
|
|
6
|
+
// silently omitted `_emptyReason`, which left 62% of empty invocations
|
|
7
|
+
// unattributed in telemetry. A unit test of the diagnosis logic cannot catch
|
|
8
|
+
// that; only checking every exit can.
|
|
9
|
+
import { describe, it, expect } from "@jest/globals";
|
|
10
|
+
import { readFileSync } from "node:fs";
|
|
11
|
+
import { join } from "node:path";
|
|
12
|
+
const SOURCE = readFileSync(join(process.cwd(), "src/tools/logTools.ts"), "utf8");
|
|
13
|
+
/** Slice out just the get_logs registration (up to where search_logs begins). */
|
|
14
|
+
function getLogsHandlerSource() {
|
|
15
|
+
const start = SOURCE.indexOf('"get_logs"');
|
|
16
|
+
const end = SOURCE.indexOf('"search_logs"');
|
|
17
|
+
expect(start).toBeGreaterThan(-1);
|
|
18
|
+
expect(end).toBeGreaterThan(start);
|
|
19
|
+
return SOURCE.slice(start, end);
|
|
20
|
+
}
|
|
21
|
+
/**
|
|
22
|
+
* The handler body only — excludes the trailing `emptyResultDetector` argument,
|
|
23
|
+
* which is a deliberate last-resort fallback and is allowed to consult the
|
|
24
|
+
* global buffer count.
|
|
25
|
+
*/
|
|
26
|
+
function getLogsBodySource() {
|
|
27
|
+
const src = getLogsHandlerSource();
|
|
28
|
+
const detectorAt = src.indexOf("// Fallback only");
|
|
29
|
+
expect(detectorAt).toBeGreaterThan(-1);
|
|
30
|
+
return src.slice(0, detectorAt);
|
|
31
|
+
}
|
|
32
|
+
/**
|
|
33
|
+
* Find every `return { ... }` object literal that carries a `content:` key —
|
|
34
|
+
* i.e. every actual tool response. Brace-matched rather than regex-matched so
|
|
35
|
+
* nested objects inside the literal don't truncate the match.
|
|
36
|
+
*/
|
|
37
|
+
function toolResponseReturns(src) {
|
|
38
|
+
const found = [];
|
|
39
|
+
const marker = /return\s*\{/g;
|
|
40
|
+
let m;
|
|
41
|
+
while ((m = marker.exec(src)) !== null) {
|
|
42
|
+
let depth = 0;
|
|
43
|
+
let i = m.index + m[0].length - 1;
|
|
44
|
+
for (; i < src.length; i++) {
|
|
45
|
+
if (src[i] === "{")
|
|
46
|
+
depth++;
|
|
47
|
+
else if (src[i] === "}") {
|
|
48
|
+
depth--;
|
|
49
|
+
if (depth === 0)
|
|
50
|
+
break;
|
|
51
|
+
}
|
|
52
|
+
}
|
|
53
|
+
const literal = src.slice(m.index, i + 1);
|
|
54
|
+
if (literal.includes("content:"))
|
|
55
|
+
found.push(literal);
|
|
56
|
+
}
|
|
57
|
+
return found;
|
|
58
|
+
}
|
|
59
|
+
describe("get_logs empty-result contract", () => {
|
|
60
|
+
const returns = toolResponseReturns(getLogsHandlerSource());
|
|
61
|
+
it("finds every tool response return path", () => {
|
|
62
|
+
// SDK summary, SDK tonl, SDK text, buffer summary, recovered retry,
|
|
63
|
+
// final tonl, final text.
|
|
64
|
+
expect(returns.length).toBe(7);
|
|
65
|
+
});
|
|
66
|
+
it("reports _emptyResult on every return path", () => {
|
|
67
|
+
const missing = returns.filter(r => !r.includes("_emptyResult"));
|
|
68
|
+
expect(missing).toEqual([]);
|
|
69
|
+
});
|
|
70
|
+
it("never re-derives emptiness from the global buffer count inline", () => {
|
|
71
|
+
// getTotalLogCount() spans all devices and ignores level/text filters,
|
|
72
|
+
// so it must not decide what a single filtered read reports.
|
|
73
|
+
const handler = getLogsBodySource();
|
|
74
|
+
expect(handler).not.toContain("getTotalLogCount() === 0");
|
|
75
|
+
});
|
|
76
|
+
it("routes every empty-path diagnosis through diagnoseEmptyLogs", () => {
|
|
77
|
+
const handler = getLogsBodySource();
|
|
78
|
+
// Connection/pipeline verdicts belong to the shared diagnosis module —
|
|
79
|
+
// the handler must never hand-roll them, or the two drift apart.
|
|
80
|
+
// `filtered_out` is deliberately handler-local: it is a statement about
|
|
81
|
+
// the caller's level/text filter, not about connection state.
|
|
82
|
+
const diagnosisOwned = [
|
|
83
|
+
"disconnected",
|
|
84
|
+
"post_reconnect",
|
|
85
|
+
"pipeline_failed",
|
|
86
|
+
"pipeline_recovered",
|
|
87
|
+
"no_logs_verified",
|
|
88
|
+
"no_logs_unverified"
|
|
89
|
+
];
|
|
90
|
+
for (const reason of diagnosisOwned) {
|
|
91
|
+
expect(handler).not.toMatch(new RegExp(`emptyReason\\s*=\\s*"${reason}"`));
|
|
92
|
+
}
|
|
93
|
+
expect(handler.match(/diagnoseEmptyLogs\(/g)?.length).toBe(2);
|
|
94
|
+
});
|
|
95
|
+
it("does not emit the ambiguous legacy no_logs label", () => {
|
|
96
|
+
expect(getLogsBodySource()).not.toMatch(/"no_logs"/);
|
|
97
|
+
});
|
|
98
|
+
});
|
|
99
|
+
//# sourceMappingURL=getLogsEmptyContract.test.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"getLogsEmptyContract.test.js","sourceRoot":"","sources":["../../../src/__tests__/unit/getLogsEmptyContract.test.ts"],"names":[],"mappings":"AAAA,iEAAiE;AACjE,EAAE;AACF,2EAA2E;AAC3E,8EAA8E;AAC9E,0EAA0E;AAC1E,uEAAuE;AACvE,6EAA6E;AAC7E,sCAAsC;AAEtC,OAAO,EAAE,QAAQ,EAAE,EAAE,EAAE,MAAM,EAAE,MAAM,eAAe,CAAC;AACrD,OAAO,EAAE,YAAY,EAAE,MAAM,SAAS,CAAC;AACvC,OAAO,EAAE,IAAI,EAAE,MAAM,WAAW,CAAC;AAEjC,MAAM,MAAM,GAAG,YAAY,CAAC,IAAI,CAAC,OAAO,CAAC,GAAG,EAAE,EAAE,uBAAuB,CAAC,EAAE,MAAM,CAAC,CAAC;AAElF,iFAAiF;AACjF,SAAS,oBAAoB;IACzB,MAAM,KAAK,GAAG,MAAM,CAAC,OAAO,CAAC,YAAY,CAAC,CAAC;IAC3C,MAAM,GAAG,GAAG,MAAM,CAAC,OAAO,CAAC,eAAe,CAAC,CAAC;IAC5C,MAAM,CAAC,KAAK,CAAC,CAAC,eAAe,CAAC,CAAC,CAAC,CAAC,CAAC;IAClC,MAAM,CAAC,GAAG,CAAC,CAAC,eAAe,CAAC,KAAK,CAAC,CAAC;IACnC,OAAO,MAAM,CAAC,KAAK,CAAC,KAAK,EAAE,GAAG,CAAC,CAAC;AACpC,CAAC;AAED;;;;GAIG;AACH,SAAS,iBAAiB;IACtB,MAAM,GAAG,GAAG,oBAAoB,EAAE,CAAC;IACnC,MAAM,UAAU,GAAG,GAAG,CAAC,OAAO,CAAC,kBAAkB,CAAC,CAAC;IACnD,MAAM,CAAC,UAAU,CAAC,CAAC,eAAe,CAAC,CAAC,CAAC,CAAC,CAAC;IACvC,OAAO,GAAG,CAAC,KAAK,CAAC,CAAC,EAAE,UAAU,CAAC,CAAC;AACpC,CAAC;AAED;;;;GAIG;AACH,SAAS,mBAAmB,CAAC,GAAW;IACpC,MAAM,KAAK,GAAa,EAAE,CAAC;IAC3B,MAAM,MAAM,GAAG,cAAc,CAAC;IAC9B,IAAI,CAAyB,CAAC;IAC9B,OAAO,CAAC,CAAC,GAAG,MAAM,CAAC,IAAI,CAAC,GAAG,CAAC,CAAC,KAAK,IAAI,EAAE,CAAC;QACrC,IAAI,KAAK,GAAG,CAAC,CAAC;QACd,IAAI,CAAC,GAAG,CAAC,CAAC,KAAK,GAAG,CAAC,CAAC,CAAC,CAAC,CAAC,MAAM,GAAG,CAAC,CAAC;QAClC,OAAO,CAAC,GAAG,GAAG,CAAC,MAAM,EAAE,CAAC,EAAE,EAAE,CAAC;YACzB,IAAI,GAAG,CAAC,CAAC,CAAC,KAAK,GAAG;gBAAE,KAAK,EAAE,CAAC;iBACvB,IAAI,GAAG,CAAC,CAAC,CAAC,KAAK,GAAG,EAAE,CAAC;gBACtB,KAAK,EAAE,CAAC;gBACR,IAAI,KAAK,KAAK,CAAC;oBAAE,MAAM;YAC3B,CAAC;QACL,CAAC;QACD,MAAM,OAAO,GAAG,GAAG,CAAC,KAAK,CAAC,CAAC,CAAC,KAAK,EAAE,CAAC,GAAG,CAAC,CAAC,CAAC;QAC1C,IAAI,OAAO,CAAC,QAAQ,CAAC,UAAU,CAAC;YAAE,KAAK,CAAC,IAAI,CAAC,OAAO,CAAC,CAAC;IAC1D,CAAC;IACD,OAAO,KAAK,CAAC;AACjB,CAAC;AAED,QAAQ,CAAC,gCAAgC,EAAE,GAAG,EAAE;IAC5C,MAAM,OAAO,GAAG,mBAAmB,CAAC,oBAAoB,EAAE,CAAC,CAAC;IAE5D,EAAE,CAAC,uCAAuC,EAAE,GAAG,EAAE;QAC7C,oEAAoE;QACpE,0BAA0B;QAC1B,MAAM,CAAC,OAAO,CAAC,MAAM,CAAC,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC;IACnC,CAAC,CAAC,CAAC;IAEH,EAAE,CAAC,2CAA2C,EAAE,GAAG,EAAE;QACjD,MAAM,OAAO,GAAG,OAAO,CAAC,MAAM,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,CAAC,QAAQ,CAAC,cAAc,CAAC,CAAC,CAAC;QACjE,MAAM,CAAC,OAAO,CAAC,CAAC,OAAO,CAAC,EAAE,CAAC,CAAC;IAChC,CAAC,CAAC,CAAC;IAEH,EAAE,CAAC,gEAAgE,EAAE,GAAG,EAAE;QACtE,uEAAuE;QACvE,6DAA6D;QAC7D,MAAM,OAAO,GAAG,iBAAiB,EAAE,CAAC;QACpC,MAAM,CAAC,OAAO,CAAC,CAAC,GAAG,CAAC,SAAS,CAAC,0BAA0B,CAAC,CAAC;IAC9D,CAAC,CAAC,CAAC;IAEH,EAAE,CAAC,6DAA6D,EAAE,GAAG,EAAE;QACnE,MAAM,OAAO,GAAG,iBAAiB,EAAE,CAAC;QACpC,uEAAuE;QACvE,iEAAiE;QACjE,wEAAwE;QACxE,8DAA8D;QAC9D,MAAM,cAAc,GAAG;YACnB,cAAc;YACd,gBAAgB;YAChB,iBAAiB;YACjB,oBAAoB;YACpB,kBAAkB;YAClB,oBAAoB;SACvB,CAAC;QACF,KAAK,MAAM,MAAM,IAAI,cAAc,EAAE,CAAC;YAClC,MAAM,CAAC,OAAO,CAAC,CAAC,GAAG,CAAC,OAAO,CAAC,IAAI,MAAM,CAAC,wBAAwB,MAAM,GAAG,CAAC,CAAC,CAAC;QAC/E,CAAC;QACD,MAAM,CAAC,OAAO,CAAC,KAAK,CAAC,sBAAsB,CAAC,EAAE,MAAM,CAAC,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC;IAClE,CAAC,CAAC,CAAC;IAEH,EAAE,CAAC,kDAAkD,EAAE,GAAG,EAAE;QACxD,MAAM,CAAC,iBAAiB,EAAE,CAAC,CAAC,GAAG,CAAC,OAAO,CAAC,WAAW,CAAC,CAAC;IACzD,CAAC,CAAC,CAAC;AACP,CAAC,CAAC,CAAC"}
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"inspectorHarvest.test.d.ts","sourceRoot":"","sources":["../../../src/__tests__/unit/inspectorHarvest.test.ts"],"names":[],"mappings":""}
|
|
@@ -0,0 +1,61 @@
|
|
|
1
|
+
import { describe, it, expect, beforeEach, jest } from "@jest/globals";
|
|
2
|
+
const executeInApp = jest.fn();
|
|
3
|
+
jest.unstable_mockModule("../../core/jsExecute.js", () => ({
|
|
4
|
+
executeInApp,
|
|
5
|
+
markConnectionEstablished: jest.fn(),
|
|
6
|
+
}));
|
|
7
|
+
const { harvestStacksAtPoint, harvestStacksAtFrame } = await import("../../core/inspector.js");
|
|
8
|
+
const OK = {
|
|
9
|
+
success: true,
|
|
10
|
+
result: JSON.stringify({ stacks: [{ component: "Text", stack: "Error\n at a (http://h:8081/b:1:1)" }] }),
|
|
11
|
+
};
|
|
12
|
+
describe("harvestStacksAtPoint", () => {
|
|
13
|
+
beforeEach(() => {
|
|
14
|
+
executeInApp.mockReset();
|
|
15
|
+
});
|
|
16
|
+
it("returns the harvested stacks", async () => {
|
|
17
|
+
executeInApp.mockResolvedValueOnce(OK);
|
|
18
|
+
const out = await harvestStacksAtPoint(210, 450);
|
|
19
|
+
expect(out).toEqual([{ component: "Text", stack: "Error\n at a (http://h:8081/b:1:1)" }]);
|
|
20
|
+
});
|
|
21
|
+
it("passes the coordinates into the expression", async () => {
|
|
22
|
+
executeInApp.mockResolvedValueOnce(OK);
|
|
23
|
+
await harvestStacksAtPoint(210, 450);
|
|
24
|
+
const expr = executeInApp.mock.calls[0][0];
|
|
25
|
+
expect(expr).toContain("210");
|
|
26
|
+
expect(expr).toContain("450");
|
|
27
|
+
});
|
|
28
|
+
it("returns an empty list when the evaluate fails", async () => {
|
|
29
|
+
executeInApp.mockResolvedValueOnce({ success: false, error: "disconnected" });
|
|
30
|
+
expect(await harvestStacksAtPoint(1, 2)).toEqual([]);
|
|
31
|
+
});
|
|
32
|
+
it("returns an empty list on unparseable output", async () => {
|
|
33
|
+
executeInApp.mockResolvedValueOnce({ success: true, result: "not json" });
|
|
34
|
+
expect(await harvestStacksAtPoint(1, 2)).toEqual([]);
|
|
35
|
+
});
|
|
36
|
+
it("returns an empty list when the evaluate throws", async () => {
|
|
37
|
+
executeInApp.mockRejectedValueOnce(new Error("boom"));
|
|
38
|
+
expect(await harvestStacksAtPoint(1, 2)).toEqual([]);
|
|
39
|
+
});
|
|
40
|
+
});
|
|
41
|
+
describe("harvestStacksAtFrame", () => {
|
|
42
|
+
beforeEach(() => {
|
|
43
|
+
executeInApp.mockReset();
|
|
44
|
+
});
|
|
45
|
+
it("harvests at the centre of the frame", async () => {
|
|
46
|
+
executeInApp.mockResolvedValueOnce(OK);
|
|
47
|
+
await harvestStacksAtFrame({ left: 100, top: 200, width: 50, height: 20 });
|
|
48
|
+
const expr = executeInApp.mock.calls[0][0];
|
|
49
|
+
expect(expr).toContain("125");
|
|
50
|
+
expect(expr).toContain("210");
|
|
51
|
+
});
|
|
52
|
+
it("returns an empty list without evaluating for a null frame", async () => {
|
|
53
|
+
expect(await harvestStacksAtFrame(null)).toEqual([]);
|
|
54
|
+
expect(executeInApp.mock.calls.length).toBe(0);
|
|
55
|
+
});
|
|
56
|
+
it("returns an empty list without evaluating for an incomplete frame", async () => {
|
|
57
|
+
expect(await harvestStacksAtFrame({ left: 1, top: 2 })).toEqual([]);
|
|
58
|
+
expect(executeInApp.mock.calls.length).toBe(0);
|
|
59
|
+
});
|
|
60
|
+
});
|
|
61
|
+
//# sourceMappingURL=inspectorHarvest.test.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"inspectorHarvest.test.js","sourceRoot":"","sources":["../../../src/__tests__/unit/inspectorHarvest.test.ts"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"inspectorSource.test.d.ts","sourceRoot":"","sources":["../../../src/__tests__/unit/inspectorSource.test.ts"],"names":[],"mappings":""}
|
|
@@ -0,0 +1,74 @@
|
|
|
1
|
+
import { describe, it, expect, beforeEach, jest } from "@jest/globals";
|
|
2
|
+
import { enrichWithSource, getSelectionHistory } from "../../core/inspector.js";
|
|
3
|
+
import { selectionBuffer } from "../../core/selectionBuffer.js";
|
|
4
|
+
import { clearSymbolicateCache } from "../../core/symbolicate.js";
|
|
5
|
+
const BUNDLE = "http://192.168.0.102:8081/AppEntry.bundle//&platform=ios";
|
|
6
|
+
const STACK = ["Error: top", ` at anonymous (${BUNDLE}:1:1)`, ` at HomeScreen (${BUNDLE}:342013:64)`].join("\n");
|
|
7
|
+
describe("enrichWithSource", () => {
|
|
8
|
+
beforeEach(() => {
|
|
9
|
+
clearSymbolicateCache();
|
|
10
|
+
globalThis.fetch = jest.fn();
|
|
11
|
+
});
|
|
12
|
+
it("adds source and ancestors to the payload", async () => {
|
|
13
|
+
globalThis.fetch.mockResolvedValue({
|
|
14
|
+
ok: true,
|
|
15
|
+
json: async () => ({
|
|
16
|
+
stack: [{ file: "/x/Home.tsx", lineNumber: 105, column: 10, methodName: "HomeScreen", collapse: false }],
|
|
17
|
+
}),
|
|
18
|
+
});
|
|
19
|
+
const out = await enrichWithSource({ element: "Text" }, [{ component: "Text", stack: STACK }]);
|
|
20
|
+
expect(out.element).toBe("Text");
|
|
21
|
+
expect(out.source).toEqual({ file: "/x/Home.tsx", line: 105, column: 10 });
|
|
22
|
+
expect(out.ancestors).toEqual([{ component: "Text", file: "/x/Home.tsx", line: 105 }]);
|
|
23
|
+
});
|
|
24
|
+
it("preserves the payload and attaches a reason when unavailable", async () => {
|
|
25
|
+
const out = await enrichWithSource({ element: "Text", path: "a > b" }, []);
|
|
26
|
+
expect(out.element).toBe("Text");
|
|
27
|
+
expect(out.path).toBe("a > b");
|
|
28
|
+
expect(out.source).toBeUndefined();
|
|
29
|
+
expect(out.sourceUnavailable).toBe("no-debug-stack");
|
|
30
|
+
});
|
|
31
|
+
it("never throws when Metro is unreachable", async () => {
|
|
32
|
+
globalThis.fetch.mockRejectedValue(new Error("ECONNREFUSED"));
|
|
33
|
+
const out = await enrichWithSource({ element: "Text" }, [{ component: "Text", stack: STACK }]);
|
|
34
|
+
expect(out.element).toBe("Text");
|
|
35
|
+
expect(out.sourceUnavailable).toBe("symbolicate-unreachable");
|
|
36
|
+
});
|
|
37
|
+
});
|
|
38
|
+
describe("getSelectionHistory", () => {
|
|
39
|
+
beforeEach(() => {
|
|
40
|
+
clearSymbolicateCache();
|
|
41
|
+
selectionBuffer.clear();
|
|
42
|
+
globalThis.fetch = jest.fn();
|
|
43
|
+
});
|
|
44
|
+
it("returns buffered entries newest first with resolved source", async () => {
|
|
45
|
+
globalThis.fetch.mockResolvedValue({
|
|
46
|
+
ok: true,
|
|
47
|
+
json: async () => ({
|
|
48
|
+
stack: [{ file: "/x/Home.tsx", lineNumber: 105, column: 10, methodName: "HomeScreen", collapse: false }],
|
|
49
|
+
}),
|
|
50
|
+
});
|
|
51
|
+
selectionBuffer.add({
|
|
52
|
+
id: "s1", device: "iPhone Air", timestamp: 1,
|
|
53
|
+
element: "Text", path: "App > Text", hierarchy: ["App", "Text"],
|
|
54
|
+
frame: { left: 1, top: 2, width: 3, height: 4 }, style: null,
|
|
55
|
+
stacks: [{ component: "Text", stack: STACK }],
|
|
56
|
+
});
|
|
57
|
+
const out = await getSelectionHistory({ limit: 5 });
|
|
58
|
+
expect(out.length).toBe(1);
|
|
59
|
+
expect(out[0].element).toBe("Text");
|
|
60
|
+
expect(out[0].source).toEqual({ file: "/x/Home.tsx", line: 105, column: 10 });
|
|
61
|
+
});
|
|
62
|
+
it("returns an empty array when the buffer is empty", async () => {
|
|
63
|
+
expect(await getSelectionHistory({})).toEqual([]);
|
|
64
|
+
});
|
|
65
|
+
it("filters by device", async () => {
|
|
66
|
+
selectionBuffer.add({
|
|
67
|
+
id: "s1", device: "Pixel 7", timestamp: 1, element: "A", path: "A",
|
|
68
|
+
hierarchy: ["A"], frame: null, style: null, stacks: [],
|
|
69
|
+
});
|
|
70
|
+
expect((await getSelectionHistory({ device: "iPhone Air" })).length).toBe(0);
|
|
71
|
+
expect((await getSelectionHistory({ device: "Pixel 7" })).length).toBe(1);
|
|
72
|
+
});
|
|
73
|
+
});
|
|
74
|
+
//# sourceMappingURL=inspectorSource.test.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"inspectorSource.test.js","sourceRoot":"","sources":["../../../src/__tests__/unit/inspectorSource.test.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,QAAQ,EAAE,EAAE,EAAE,MAAM,EAAE,UAAU,EAAE,IAAI,EAAE,MAAM,eAAe,CAAC;AACvE,OAAO,EAAE,gBAAgB,EAAE,mBAAmB,EAAE,MAAM,yBAAyB,CAAC;AAChF,OAAO,EAAE,eAAe,EAAE,MAAM,+BAA+B,CAAC;AAChE,OAAO,EAAE,qBAAqB,EAAE,MAAM,2BAA2B,CAAC;AAElE,MAAM,MAAM,GAAG,0DAA0D,CAAC;AAC1E,MAAM,KAAK,GAAG,CAAC,YAAY,EAAE,qBAAqB,MAAM,OAAO,EAAE,sBAAsB,MAAM,aAAa,CAAC,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC;AAEvH,QAAQ,CAAC,kBAAkB,EAAE,GAAG,EAAE;IAC9B,UAAU,CAAC,GAAG,EAAE;QACZ,qBAAqB,EAAE,CAAC;QACvB,UAAkB,CAAC,KAAK,GAAG,IAAI,CAAC,EAAE,EAAE,CAAC;IAC1C,CAAC,CAAC,CAAC;IAEH,EAAE,CAAC,0CAA0C,EAAE,KAAK,IAAI,EAAE;QACrD,UAAU,CAAC,KAAa,CAAC,iBAAiB,CAAC;YACxC,EAAE,EAAE,IAAI;YACR,IAAI,EAAE,KAAK,IAAI,EAAE,CAAC,CAAC;gBACf,KAAK,EAAE,CAAC,EAAE,IAAI,EAAE,aAAa,EAAE,UAAU,EAAE,GAAG,EAAE,MAAM,EAAE,EAAE,EAAE,UAAU,EAAE,YAAY,EAAE,QAAQ,EAAE,KAAK,EAAE,CAAC;aAC3G,CAAC;SACL,CAAC,CAAC;QAEH,MAAM,GAAG,GAAG,MAAM,gBAAgB,CAAC,EAAE,OAAO,EAAE,MAAM,EAAE,EAAE,CAAC,EAAE,SAAS,EAAE,MAAM,EAAE,KAAK,EAAE,KAAK,EAAE,CAAC,CAAC,CAAC;QAE/F,MAAM,CAAC,GAAG,CAAC,OAAO,CAAC,CAAC,IAAI,CAAC,MAAM,CAAC,CAAC;QACjC,MAAM,CAAC,GAAG,CAAC,MAAM,CAAC,CAAC,OAAO,CAAC,EAAE,IAAI,EAAE,aAAa,EAAE,IAAI,EAAE,GAAG,EAAE,MAAM,EAAE,EAAE,EAAE,CAAC,CAAC;QAC3E,MAAM,CAAC,GAAG,CAAC,SAAS,CAAC,CAAC,OAAO,CAAC,CAAC,EAAE,SAAS,EAAE,MAAM,EAAE,IAAI,EAAE,aAAa,EAAE,IAAI,EAAE,GAAG,EAAE,CAAC,CAAC,CAAC;IAC3F,CAAC,CAAC,CAAC;IAEH,EAAE,CAAC,8DAA8D,EAAE,KAAK,IAAI,EAAE;QAC1E,MAAM,GAAG,GAAG,MAAM,gBAAgB,CAAC,EAAE,OAAO,EAAE,MAAM,EAAE,IAAI,EAAE,OAAO,EAAE,EAAE,EAAE,CAAC,CAAC;QAC3E,MAAM,CAAC,GAAG,CAAC,OAAO,CAAC,CAAC,IAAI,CAAC,MAAM,CAAC,CAAC;QACjC,MAAM,CAAC,GAAG,CAAC,IAAI,CAAC,CAAC,IAAI,CAAC,OAAO,CAAC,CAAC;QAC/B,MAAM,CAAC,GAAG,CAAC,MAAM,CAAC,CAAC,aAAa,EAAE,CAAC;QACnC,MAAM,CAAC,GAAG,CAAC,iBAAiB,CAAC,CAAC,IAAI,CAAC,gBAAgB,CAAC,CAAC;IACzD,CAAC,CAAC,CAAC;IAEH,EAAE,CAAC,wCAAwC,EAAE,KAAK,IAAI,EAAE;QACnD,UAAU,CAAC,KAAa,CAAC,iBAAiB,CAAC,IAAI,KAAK,CAAC,cAAc,CAAC,CAAC,CAAC;QACvE,MAAM,GAAG,GAAG,MAAM,gBAAgB,CAAC,EAAE,OAAO,EAAE,MAAM,EAAE,EAAE,CAAC,EAAE,SAAS,EAAE,MAAM,EAAE,KAAK,EAAE,KAAK,EAAE,CAAC,CAAC,CAAC;QAC/F,MAAM,CAAC,GAAG,CAAC,OAAO,CAAC,CAAC,IAAI,CAAC,MAAM,CAAC,CAAC;QACjC,MAAM,CAAC,GAAG,CAAC,iBAAiB,CAAC,CAAC,IAAI,CAAC,yBAAyB,CAAC,CAAC;IAClE,CAAC,CAAC,CAAC;AACP,CAAC,CAAC,CAAC;AAEH,QAAQ,CAAC,qBAAqB,EAAE,GAAG,EAAE;IACjC,UAAU,CAAC,GAAG,EAAE;QACZ,qBAAqB,EAAE,CAAC;QACxB,eAAe,CAAC,KAAK,EAAE,CAAC;QACvB,UAAkB,CAAC,KAAK,GAAG,IAAI,CAAC,EAAE,EAAE,CAAC;IAC1C,CAAC,CAAC,CAAC;IAEH,EAAE,CAAC,4DAA4D,EAAE,KAAK,IAAI,EAAE;QACvE,UAAU,CAAC,KAAa,CAAC,iBAAiB,CAAC;YACxC,EAAE,EAAE,IAAI;YACR,IAAI,EAAE,KAAK,IAAI,EAAE,CAAC,CAAC;gBACf,KAAK,EAAE,CAAC,EAAE,IAAI,EAAE,aAAa,EAAE,UAAU,EAAE,GAAG,EAAE,MAAM,EAAE,EAAE,EAAE,UAAU,EAAE,YAAY,EAAE,QAAQ,EAAE,KAAK,EAAE,CAAC;aAC3G,CAAC;SACL,CAAC,CAAC;QAEH,eAAe,CAAC,GAAG,CAAC;YAChB,EAAE,EAAE,IAAI,EAAE,MAAM,EAAE,YAAY,EAAE,SAAS,EAAE,CAAC;YAC5C,OAAO,EAAE,MAAM,EAAE,IAAI,EAAE,YAAY,EAAE,SAAS,EAAE,CAAC,KAAK,EAAE,MAAM,CAAC;YAC/D,KAAK,EAAE,EAAE,IAAI,EAAE,CAAC,EAAE,GAAG,EAAE,CAAC,EAAE,KAAK,EAAE,CAAC,EAAE,MAAM,EAAE,CAAC,EAAE,EAAE,KAAK,EAAE,IAAI;YAC5D,MAAM,EAAE,CAAC,EAAE,SAAS,EAAE,MAAM,EAAE,KAAK,EAAE,KAAK,EAAE,CAAC;SAChD,CAAC,CAAC;QAEH,MAAM,GAAG,GAAG,MAAM,mBAAmB,CAAC,EAAE,KAAK,EAAE,CAAC,EAAE,CAAC,CAAC;QAEpD,MAAM,CAAC,GAAG,CAAC,MAAM,CAAC,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC;QAC3B,MAAM,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC,OAAO,CAAC,CAAC,IAAI,CAAC,MAAM,CAAC,CAAC;QACpC,MAAM,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC,MAAM,CAAC,CAAC,OAAO,CAAC,EAAE,IAAI,EAAE,aAAa,EAAE,IAAI,EAAE,GAAG,EAAE,MAAM,EAAE,EAAE,EAAE,CAAC,CAAC;IAClF,CAAC,CAAC,CAAC;IAEH,EAAE,CAAC,iDAAiD,EAAE,KAAK,IAAI,EAAE;QAC7D,MAAM,CAAC,MAAM,mBAAmB,CAAC,EAAE,CAAC,CAAC,CAAC,OAAO,CAAC,EAAE,CAAC,CAAC;IACtD,CAAC,CAAC,CAAC;IAEH,EAAE,CAAC,mBAAmB,EAAE,KAAK,IAAI,EAAE;QAC/B,eAAe,CAAC,GAAG,CAAC;YAChB,EAAE,EAAE,IAAI,EAAE,MAAM,EAAE,SAAS,EAAE,SAAS,EAAE,CAAC,EAAE,OAAO,EAAE,GAAG,EAAE,IAAI,EAAE,GAAG;YAClE,SAAS,EAAE,CAAC,GAAG,CAAC,EAAE,KAAK,EAAE,IAAI,EAAE,KAAK,EAAE,IAAI,EAAE,MAAM,EAAE,EAAE;SACzD,CAAC,CAAC;QACH,MAAM,CAAC,CAAC,MAAM,mBAAmB,CAAC,EAAE,MAAM,EAAE,YAAY,EAAE,CAAC,CAAC,CAAC,MAAM,CAAC,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC;QAC7E,MAAM,CAAC,CAAC,MAAM,mBAAmB,CAAC,EAAE,MAAM,EAAE,SAAS,EAAE,CAAC,CAAC,CAAC,MAAM,CAAC,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC;IAC9E,CAAC,CAAC,CAAC;AACP,CAAC,CAAC,CAAC"}
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"logDiagnosis.test.d.ts","sourceRoot":"","sources":["../../../src/__tests__/unit/logDiagnosis.test.ts"],"names":[],"mappings":""}
|