execbro 1.10.24 → 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/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/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/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/transportClassify.test.js +108 -7
- package/build/__tests__/unit/transportClassify.test.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/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/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 +8 -0
- package/build/core/types.d.ts.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.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/package.json +1 -1
|
@@ -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":"logDiagnosis.test.d.ts","sourceRoot":"","sources":["../../../src/__tests__/unit/logDiagnosis.test.ts"],"names":[],"mappings":""}
|
|
@@ -0,0 +1,81 @@
|
|
|
1
|
+
import { describe, expect, it, jest } from "@jest/globals";
|
|
2
|
+
import { diagnoseEmptyLogs } from "../../core/logDiagnosis.js";
|
|
3
|
+
const APP = { id: "app-1" };
|
|
4
|
+
const conn = (over = {}) => ({
|
|
5
|
+
connected: true,
|
|
6
|
+
wasReconnected: false,
|
|
7
|
+
message: null,
|
|
8
|
+
...over
|
|
9
|
+
});
|
|
10
|
+
const pipe = (over = {}) => ({
|
|
11
|
+
ok: true,
|
|
12
|
+
recovered: false,
|
|
13
|
+
message: null,
|
|
14
|
+
...over
|
|
15
|
+
});
|
|
16
|
+
const deps = (status, pipeline, app = APP) => ({
|
|
17
|
+
checkConnection: jest.fn(async () => status),
|
|
18
|
+
resolveApp: jest.fn(() => app),
|
|
19
|
+
verifyPipeline: jest.fn(async () => pipeline ?? pipe())
|
|
20
|
+
});
|
|
21
|
+
describe("diagnoseEmptyLogs", () => {
|
|
22
|
+
it("reports disconnected when the connection could not be established", async () => {
|
|
23
|
+
const d = await diagnoseEmptyLogs(deps(conn({ connected: false, message: "[CONNECTION] gone" }), null));
|
|
24
|
+
expect(d.reason).toBe("disconnected");
|
|
25
|
+
expect(d.warning).toContain("[CONNECTION] gone");
|
|
26
|
+
expect(d.recovered).toBe(false);
|
|
27
|
+
});
|
|
28
|
+
it("does not probe the pipeline when disconnected", async () => {
|
|
29
|
+
const dep = deps(conn({ connected: false }), null);
|
|
30
|
+
await diagnoseEmptyLogs(dep);
|
|
31
|
+
expect(dep.verifyPipeline).not.toHaveBeenCalled();
|
|
32
|
+
});
|
|
33
|
+
it("reports no_logs_verified only after the pipeline probe succeeds", async () => {
|
|
34
|
+
const d = await diagnoseEmptyLogs(deps(conn(), pipe({ ok: true, recovered: false })));
|
|
35
|
+
expect(d.reason).toBe("no_logs_verified");
|
|
36
|
+
});
|
|
37
|
+
it("reports no_logs_unverified when no app can be resolved to probe", async () => {
|
|
38
|
+
const d = await diagnoseEmptyLogs(deps(conn(), null, null));
|
|
39
|
+
expect(d.reason).toBe("no_logs_unverified");
|
|
40
|
+
});
|
|
41
|
+
it("reports pipeline_failed when the probe does not round-trip", async () => {
|
|
42
|
+
const d = await diagnoseEmptyLogs(deps(conn(), pipe({ ok: false, message: "[PIPELINE] dead" })));
|
|
43
|
+
expect(d.reason).toBe("pipeline_failed");
|
|
44
|
+
expect(d.warning).toContain("[PIPELINE] dead");
|
|
45
|
+
});
|
|
46
|
+
it("reports pipeline_recovered and flags recovered when the probe self-heals", async () => {
|
|
47
|
+
const d = await diagnoseEmptyLogs(deps(conn(), pipe({ ok: true, recovered: true })));
|
|
48
|
+
expect(d.reason).toBe("pipeline_recovered");
|
|
49
|
+
expect(d.recovered).toBe(true);
|
|
50
|
+
});
|
|
51
|
+
it("reports post_reconnect when the connection was re-established", async () => {
|
|
52
|
+
const d = await diagnoseEmptyLogs(deps(conn({ wasReconnected: true }), pipe()));
|
|
53
|
+
expect(d.reason).toBe("post_reconnect");
|
|
54
|
+
});
|
|
55
|
+
it("keeps post_reconnect even when the pipeline is healthy", async () => {
|
|
56
|
+
const d = await diagnoseEmptyLogs(deps(conn({ wasReconnected: true }), pipe({ ok: true })));
|
|
57
|
+
expect(d.reason).toBe("post_reconnect");
|
|
58
|
+
});
|
|
59
|
+
it("lets pipeline_failed override post_reconnect", async () => {
|
|
60
|
+
const d = await diagnoseEmptyLogs(deps(conn({ wasReconnected: true }), pipe({ ok: false })));
|
|
61
|
+
expect(d.reason).toBe("pipeline_failed");
|
|
62
|
+
});
|
|
63
|
+
it("never returns the ambiguous legacy no_logs label", async () => {
|
|
64
|
+
const cases = [
|
|
65
|
+
[conn(), pipe(), APP],
|
|
66
|
+
[conn(), null, null],
|
|
67
|
+
[conn({ connected: false }), null, null],
|
|
68
|
+
[conn({ wasReconnected: true }), pipe(), APP]
|
|
69
|
+
];
|
|
70
|
+
for (const [status, pipeline, app] of cases) {
|
|
71
|
+
const d = await diagnoseEmptyLogs(deps(status, pipeline, app));
|
|
72
|
+
expect(d.reason).not.toBe("no_logs");
|
|
73
|
+
}
|
|
74
|
+
});
|
|
75
|
+
it("concatenates connection and pipeline messages", async () => {
|
|
76
|
+
const d = await diagnoseEmptyLogs(deps(conn({ message: "[CONNECTION] stale" }), pipe({ message: "[PIPELINE] recovered" })));
|
|
77
|
+
expect(d.warning).toContain("[CONNECTION] stale");
|
|
78
|
+
expect(d.warning).toContain("[PIPELINE] recovered");
|
|
79
|
+
});
|
|
80
|
+
});
|
|
81
|
+
//# sourceMappingURL=logDiagnosis.test.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"logDiagnosis.test.js","sourceRoot":"","sources":["../../../src/__tests__/unit/logDiagnosis.test.ts"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"pendingExecutions.test.d.ts","sourceRoot":"","sources":["../../../src/__tests__/unit/pendingExecutions.test.ts"],"names":[],"mappings":""}
|
|
@@ -0,0 +1,70 @@
|
|
|
1
|
+
import { describe, it, expect, beforeEach } from "@jest/globals";
|
|
2
|
+
import { pendingExecutions, failPendingExecutionsForSocket } from "../../core/state.js";
|
|
3
|
+
// A socket death mid-flight used to leave the in-flight CDP call parked until
|
|
4
|
+
// its full timeoutMs elapsed (telemetry: 48 events/30d across 12 tools, burning
|
|
5
|
+
// the entire timeout — min durations sat exactly on 5001/10001/30007ms). Worse,
|
|
6
|
+
// the resulting "Timeout: Expression took too long" message was classified
|
|
7
|
+
// server-timer => logical, so auto-reconnect never fired. Failing the pending
|
|
8
|
+
// call at close time makes it surface as a ws_closed transport error instead.
|
|
9
|
+
describe("failPendingExecutionsForSocket", () => {
|
|
10
|
+
beforeEach(() => {
|
|
11
|
+
pendingExecutions.clear();
|
|
12
|
+
});
|
|
13
|
+
const register = (id, ws) => {
|
|
14
|
+
const results = [];
|
|
15
|
+
let cleared = false;
|
|
16
|
+
const timeoutId = setTimeout(() => { }, 60_000);
|
|
17
|
+
const originalClear = clearTimeout;
|
|
18
|
+
pendingExecutions.set(id, {
|
|
19
|
+
resolve: (r) => { results.push(r); },
|
|
20
|
+
timeoutId,
|
|
21
|
+
ws,
|
|
22
|
+
});
|
|
23
|
+
return {
|
|
24
|
+
results,
|
|
25
|
+
isCleared: () => cleared,
|
|
26
|
+
cleanup: () => originalClear(timeoutId),
|
|
27
|
+
};
|
|
28
|
+
};
|
|
29
|
+
it("fails pending executions belonging to the closed socket", () => {
|
|
30
|
+
const socket = { id: "a" };
|
|
31
|
+
const entry = register(1, socket);
|
|
32
|
+
const failed = failPendingExecutionsForSocket(socket, "WebSocket connection is not open.");
|
|
33
|
+
expect(failed).toBe(1);
|
|
34
|
+
expect(entry.results).toHaveLength(1);
|
|
35
|
+
expect(entry.results[0].success).toBe(false);
|
|
36
|
+
expect(entry.results[0].error).toBe("WebSocket connection is not open.");
|
|
37
|
+
entry.cleanup();
|
|
38
|
+
});
|
|
39
|
+
it("removes the failed execution from the pending map", () => {
|
|
40
|
+
const socket = { id: "a" };
|
|
41
|
+
const entry = register(1, socket);
|
|
42
|
+
failPendingExecutionsForSocket(socket, "WebSocket connection is not open.");
|
|
43
|
+
expect(pendingExecutions.has(1)).toBe(false);
|
|
44
|
+
entry.cleanup();
|
|
45
|
+
});
|
|
46
|
+
it("leaves executions belonging to other sockets untouched", () => {
|
|
47
|
+
const socketA = { id: "a" };
|
|
48
|
+
const socketB = { id: "b" };
|
|
49
|
+
const a = register(1, socketA);
|
|
50
|
+
const b = register(2, socketB);
|
|
51
|
+
const failed = failPendingExecutionsForSocket(socketA, "WebSocket connection is not open.");
|
|
52
|
+
expect(failed).toBe(1);
|
|
53
|
+
expect(b.results).toHaveLength(0);
|
|
54
|
+
expect(pendingExecutions.has(2)).toBe(true);
|
|
55
|
+
a.cleanup();
|
|
56
|
+
b.cleanup();
|
|
57
|
+
});
|
|
58
|
+
it("ignores entries with no socket association", () => {
|
|
59
|
+
const socket = { id: "a" };
|
|
60
|
+
const timeoutId = setTimeout(() => { }, 60_000);
|
|
61
|
+
const results = [];
|
|
62
|
+
pendingExecutions.set(9, { resolve: (r) => { results.push(r); }, timeoutId });
|
|
63
|
+
const failed = failPendingExecutionsForSocket(socket, "WebSocket connection is not open.");
|
|
64
|
+
expect(failed).toBe(0);
|
|
65
|
+
expect(results).toHaveLength(0);
|
|
66
|
+
expect(pendingExecutions.has(9)).toBe(true);
|
|
67
|
+
clearTimeout(timeoutId);
|
|
68
|
+
});
|
|
69
|
+
});
|
|
70
|
+
//# sourceMappingURL=pendingExecutions.test.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"pendingExecutions.test.js","sourceRoot":"","sources":["../../../src/__tests__/unit/pendingExecutions.test.ts"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"reloadAppAutoConnect.test.d.ts","sourceRoot":"","sources":["../../../src/__tests__/unit/reloadAppAutoConnect.test.ts"],"names":[],"mappings":""}
|
|
@@ -0,0 +1,63 @@
|
|
|
1
|
+
import { describe, it, expect, jest, beforeEach, afterEach } from "@jest/globals";
|
|
2
|
+
// reload_app's auto-connect used to be unreachable whenever a `device`
|
|
3
|
+
// argument was supplied: the first resolve threw UserInputError before the
|
|
4
|
+
// fallback ran, so 35% of reload_app failures were "run scan_metro" told to
|
|
5
|
+
// agents the tool could have unblocked itself. These tests pin the recovery.
|
|
6
|
+
const scanMetroPortsMock = jest.fn();
|
|
7
|
+
const fetchDevicesMock = jest.fn();
|
|
8
|
+
const filterDebuggableDevicesMock = jest.fn();
|
|
9
|
+
jest.unstable_mockModule("../../core/metro.js", () => ({
|
|
10
|
+
scanMetroPorts: scanMetroPortsMock,
|
|
11
|
+
fetchDevices: fetchDevicesMock,
|
|
12
|
+
filterDebuggableDevices: filterDebuggableDevicesMock,
|
|
13
|
+
// Other importers in the graph (connection.js, bundle.js) resolve these at
|
|
14
|
+
// import time, so the mock has to cover the module's full surface.
|
|
15
|
+
COMMON_PORTS: [8081],
|
|
16
|
+
isPortOpen: jest.fn(),
|
|
17
|
+
selectMainDevice: jest.fn(),
|
|
18
|
+
filterBridgelessDevices: jest.fn(),
|
|
19
|
+
discoverMetroDevices: jest.fn(),
|
|
20
|
+
checkMetroState: jest.fn()
|
|
21
|
+
}));
|
|
22
|
+
const { connectedApps } = await import("../../core/state.js");
|
|
23
|
+
const { reloadApp } = await import("../../core/debugGlobals.js");
|
|
24
|
+
describe("reloadApp auto-connect", () => {
|
|
25
|
+
beforeEach(() => {
|
|
26
|
+
connectedApps.clear();
|
|
27
|
+
scanMetroPortsMock.mockReset();
|
|
28
|
+
fetchDevicesMock.mockReset();
|
|
29
|
+
filterDebuggableDevicesMock.mockReset();
|
|
30
|
+
fetchDevicesMock.mockResolvedValue([]);
|
|
31
|
+
filterDebuggableDevicesMock.mockReturnValue([]);
|
|
32
|
+
});
|
|
33
|
+
afterEach(() => connectedApps.clear());
|
|
34
|
+
it("attempts auto-connect even when a device argument is supplied", async () => {
|
|
35
|
+
scanMetroPortsMock.mockResolvedValue([8081]);
|
|
36
|
+
const result = await reloadApp("iPhone 17 Pro");
|
|
37
|
+
expect(result.success).toBe(false);
|
|
38
|
+
// The regression: previously this threw before scanMetroPorts was reached.
|
|
39
|
+
expect(scanMetroPortsMock).toHaveBeenCalled();
|
|
40
|
+
expect(fetchDevicesMock).toHaveBeenCalledWith(8081);
|
|
41
|
+
}, 15000);
|
|
42
|
+
it("retries the sweep once before giving up (Metro's target list lags app start)", async () => {
|
|
43
|
+
scanMetroPortsMock.mockResolvedValue([8081]);
|
|
44
|
+
await reloadApp("iPhone 17 Pro");
|
|
45
|
+
expect(fetchDevicesMock).toHaveBeenCalledTimes(2);
|
|
46
|
+
}, 15000);
|
|
47
|
+
it("returns a failure result rather than throwing, tagged for telemetry", async () => {
|
|
48
|
+
scanMetroPortsMock.mockResolvedValue([8081]);
|
|
49
|
+
const result = await reloadApp("iPhone 17 Pro");
|
|
50
|
+
expect(result.success).toBe(false);
|
|
51
|
+
expect(result.errorContext).toBe("connect_failed_with_device");
|
|
52
|
+
// Metro was up but exposed no debuggable target — say so instead of
|
|
53
|
+
// the opaque "could not connect to any device".
|
|
54
|
+
expect(result.error).toContain("no debuggable targets");
|
|
55
|
+
}, 15000);
|
|
56
|
+
it("tags the no-Metro case separately", async () => {
|
|
57
|
+
scanMetroPortsMock.mockResolvedValue([]);
|
|
58
|
+
const result = await reloadApp("iPhone 17 Pro");
|
|
59
|
+
expect(result.errorContext).toBe("no_metro");
|
|
60
|
+
expect(result.error).toContain("Metro bundler is running");
|
|
61
|
+
});
|
|
62
|
+
});
|
|
63
|
+
//# sourceMappingURL=reloadAppAutoConnect.test.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"reloadAppAutoConnect.test.js","sourceRoot":"","sources":["../../../src/__tests__/unit/reloadAppAutoConnect.test.ts"],"names":[],"mappings":"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"}
|
|
@@ -1,5 +1,93 @@
|
|
|
1
1
|
import { describe, expect, it } from "@jest/globals";
|
|
2
|
-
import {
|
|
2
|
+
import { jest } from "@jest/globals";
|
|
3
|
+
import { classifyTransportError, isEvalTimeoutOnLiveSocket, classifyWithLivenessProbe, isTargetStillAdvertised } from "../../core/jsExecute.js";
|
|
4
|
+
// A "took too long" on a socket that is still OPEN is ambiguous: either the
|
|
5
|
+
// expression really was slow, or the CDP target went stale while the
|
|
6
|
+
// device-level socket kept answering pings. Only these cases are worth paying
|
|
7
|
+
// for a probe to disambiguate.
|
|
8
|
+
describe("isEvalTimeoutOnLiveSocket", () => {
|
|
9
|
+
const timeoutMsg = (ws) => `Timeout: Expression took too long to evaluate.\n\nConnection state: ws=${ws}, device="iPhone"`;
|
|
10
|
+
it("is true for a server-timer timeout on an open socket", () => {
|
|
11
|
+
expect(isEvalTimeoutOnLiveSocket(timeoutMsg("OPEN"), "server-timer")).toBe(true);
|
|
12
|
+
});
|
|
13
|
+
it("is false when the socket was closed (already a transport error)", () => {
|
|
14
|
+
expect(isEvalTimeoutOnLiveSocket(timeoutMsg("CLOSED"), "server-timer")).toBe(false);
|
|
15
|
+
});
|
|
16
|
+
it("is false for errors that did not come from the server timer", () => {
|
|
17
|
+
expect(isEvalTimeoutOnLiveSocket(timeoutMsg("OPEN"), "cdp")).toBe(false);
|
|
18
|
+
});
|
|
19
|
+
it("is false for unrelated failures", () => {
|
|
20
|
+
expect(isEvalTimeoutOnLiveSocket("ReferenceError: x is not defined", "logical")).toBe(false);
|
|
21
|
+
});
|
|
22
|
+
});
|
|
23
|
+
// The probe-backed upgrade lives behind an injectable seam so this can be
|
|
24
|
+
// exercised without a real socket. Driving it through executeInApp instead
|
|
25
|
+
// would reach attemptQuickReconnect -> scanMetroPorts(), which scans real
|
|
26
|
+
// localhost ports and would latch onto whatever Metro the developer has running.
|
|
27
|
+
describe("classifyWithLivenessProbe", () => {
|
|
28
|
+
const timeoutMsg = (ws) => `Timeout: Expression took too long to evaluate.\n\nConnection state: ws=${ws}, device="iPhone"`;
|
|
29
|
+
const fakeApp = { ws: {}, port: 8081, deviceInfo: { id: "page-1" } };
|
|
30
|
+
const listed = async () => true;
|
|
31
|
+
const gone = async () => false;
|
|
32
|
+
it("keeps a ws=OPEN timeout logical when the probe answers", async () => {
|
|
33
|
+
const probe = jest.fn(async () => true);
|
|
34
|
+
const result = await classifyWithLivenessProbe(timeoutMsg("OPEN"), "server-timer", fakeApp, probe, gone);
|
|
35
|
+
expect(result).toEqual({ kind: "logical" });
|
|
36
|
+
expect(probe).toHaveBeenCalledTimes(1);
|
|
37
|
+
});
|
|
38
|
+
// The case that bit us on-device: a 15s busy loop silences the probe just
|
|
39
|
+
// like a dead context would. Metro still lists the page, so this must stay
|
|
40
|
+
// logical — upgrading it triggers a retry that re-runs the expression.
|
|
41
|
+
it("keeps a blocked JS thread logical while Metro still lists the target", async () => {
|
|
42
|
+
const probe = jest.fn(async () => false);
|
|
43
|
+
const result = await classifyWithLivenessProbe(timeoutMsg("OPEN"), "server-timer", fakeApp, probe, listed);
|
|
44
|
+
expect(result).toEqual({ kind: "logical" });
|
|
45
|
+
});
|
|
46
|
+
it("upgrades to stale_target only when the probe is silent AND the target is gone", async () => {
|
|
47
|
+
const probe = jest.fn(async () => false);
|
|
48
|
+
const result = await classifyWithLivenessProbe(timeoutMsg("OPEN"), "server-timer", fakeApp, probe, gone);
|
|
49
|
+
expect(result).toEqual({ kind: "transport", pattern: "stale_target" });
|
|
50
|
+
});
|
|
51
|
+
it("does not spend a probe when the socket was already closed", async () => {
|
|
52
|
+
const probe = jest.fn(async () => false);
|
|
53
|
+
const result = await classifyWithLivenessProbe(timeoutMsg("CLOSED"), "server-timer", fakeApp, probe, gone);
|
|
54
|
+
expect(result).toMatchObject({ kind: "transport", pattern: "ws_closed" });
|
|
55
|
+
expect(probe).not.toHaveBeenCalled();
|
|
56
|
+
});
|
|
57
|
+
it("does not spend a probe on unrelated logical errors", async () => {
|
|
58
|
+
const probe = jest.fn(async () => false);
|
|
59
|
+
const result = await classifyWithLivenessProbe("ReferenceError: x", "logical", fakeApp, probe, gone);
|
|
60
|
+
expect(result).toEqual({ kind: "logical" });
|
|
61
|
+
expect(probe).not.toHaveBeenCalled();
|
|
62
|
+
});
|
|
63
|
+
it("stays logical when there is no app to probe", async () => {
|
|
64
|
+
const probe = jest.fn(async () => false);
|
|
65
|
+
const result = await classifyWithLivenessProbe(timeoutMsg("OPEN"), "server-timer", null, probe, gone);
|
|
66
|
+
expect(result).toEqual({ kind: "logical" });
|
|
67
|
+
expect(probe).not.toHaveBeenCalled();
|
|
68
|
+
});
|
|
69
|
+
});
|
|
70
|
+
describe("isTargetStillAdvertised", () => {
|
|
71
|
+
const app = { port: 8081, deviceInfo: { id: "page-1" } };
|
|
72
|
+
it("is true when Metro still lists our page id", async () => {
|
|
73
|
+
const fetchTargets = async () => [{ id: "page-1" }, { id: "page-2" }];
|
|
74
|
+
expect(await isTargetStillAdvertised(app, fetchTargets)).toBe(true);
|
|
75
|
+
});
|
|
76
|
+
it("is false when Metro lists other pages but not ours", async () => {
|
|
77
|
+
const fetchTargets = async () => [{ id: "page-9" }];
|
|
78
|
+
expect(await isTargetStillAdvertised(app, fetchTargets)).toBe(false);
|
|
79
|
+
});
|
|
80
|
+
// fetchDevices returns [] on any network error. Treating that as "gone"
|
|
81
|
+
// would let a Metro blip trigger a reconnect that re-runs the expression.
|
|
82
|
+
it("is true when the target list comes back empty", async () => {
|
|
83
|
+
const fetchTargets = async () => [];
|
|
84
|
+
expect(await isTargetStillAdvertised(app, fetchTargets)).toBe(true);
|
|
85
|
+
});
|
|
86
|
+
it("is true when we have no page id to compare", async () => {
|
|
87
|
+
const fetchTargets = async () => [{ id: "page-9" }];
|
|
88
|
+
expect(await isTargetStillAdvertised({ port: 8081, deviceInfo: {} }, fetchTargets)).toBe(true);
|
|
89
|
+
});
|
|
90
|
+
});
|
|
3
91
|
describe("classifyTransportError — positive cases", () => {
|
|
4
92
|
it("matches 'No apps connected'", () => {
|
|
5
93
|
expect(classifyTransportError("No apps connected. Run 'scan_metro' first.", "logical")).toMatchObject({
|
|
@@ -31,18 +119,31 @@ describe("classifyTransportError — positive cases", () => {
|
|
|
31
119
|
pattern: "target_closed",
|
|
32
120
|
});
|
|
33
121
|
});
|
|
34
|
-
it("matches CDP-side 'Expression took too long to evaluate'", () => {
|
|
35
|
-
expect(classifyTransportError("Expression took too long to evaluate", "cdp")).toMatchObject({
|
|
36
|
-
kind: "transport",
|
|
37
|
-
pattern: "cdp_eval_too_long",
|
|
38
|
-
});
|
|
39
|
-
});
|
|
40
122
|
});
|
|
41
123
|
describe("classifyTransportError — negative cases (must NOT auto-retry)", () => {
|
|
42
124
|
it("does NOT match server-side timer text", () => {
|
|
43
125
|
const serverTimerMsg = "Timeout: Expression took too long to evaluate.\n\nConnection state: ws=OPEN...";
|
|
44
126
|
expect(classifyTransportError(serverTimerMsg, "server-timer")).toEqual({ kind: "logical" });
|
|
45
127
|
});
|
|
128
|
+
// Backstop for the race where our timer fires before the socket's close
|
|
129
|
+
// handler has failed the in-flight call. A timer expiry is only "logical"
|
|
130
|
+
// if the transport was actually alive when it fired.
|
|
131
|
+
it("DOES match server-timer text when the socket was already closed", () => {
|
|
132
|
+
const closedMsg = "Timeout: Expression took too long to evaluate.\n\nConnection state: ws=CLOSED, device=\"iPhone\"";
|
|
133
|
+
expect(classifyTransportError(closedMsg, "server-timer")).toMatchObject({
|
|
134
|
+
kind: "transport",
|
|
135
|
+
pattern: "ws_closed",
|
|
136
|
+
});
|
|
137
|
+
});
|
|
138
|
+
// "took too long" on a live socket is a slow expression, not a dead
|
|
139
|
+
// transport — the 1s ping/pong keepalive terminates genuinely dead sockets
|
|
140
|
+
// within ~2s, so anything still OPEN after a multi-second timeout had a
|
|
141
|
+
// working transport the whole time. Retrying it just burns the timeout again.
|
|
142
|
+
it("does NOT match an eval-too-long message while the socket is alive", () => {
|
|
143
|
+
expect(classifyTransportError("Expression took too long to evaluate", "cdp")).toEqual({
|
|
144
|
+
kind: "logical",
|
|
145
|
+
});
|
|
146
|
+
});
|
|
46
147
|
it("does NOT match 'no component matched'", () => {
|
|
47
148
|
expect(classifyTransportError("No component matched pattern Foo", "logical")).toEqual({ kind: "logical" });
|
|
48
149
|
});
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"transportClassify.test.js","sourceRoot":"","sources":["../../../src/__tests__/unit/transportClassify.test.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,QAAQ,EAAE,MAAM,EAAE,EAAE,EAAE,MAAM,eAAe,CAAC;AACrD,OAAO,EAAE,sBAAsB,EAAE,MAAM,yBAAyB,CAAC;
|
|
1
|
+
{"version":3,"file":"transportClassify.test.js","sourceRoot":"","sources":["../../../src/__tests__/unit/transportClassify.test.ts"],"names":[],"mappings":"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"}
|
|
@@ -55,6 +55,36 @@ export declare function getConnectedAppBySimulatorUdid(udid: string): ConnectedA
|
|
|
55
55
|
* multiple Android apps are connected.
|
|
56
56
|
*/
|
|
57
57
|
export declare function getConnectedAppByAndroidDeviceId(deviceId?: string): ConnectedApp | null;
|
|
58
|
+
/**
|
|
59
|
+
* Outcome of matching a caller-supplied `device` string against the currently
|
|
60
|
+
* connected apps. Split out of getConnectedAppByDevice so callers that can
|
|
61
|
+
* *recover* from a miss (reload_app auto-connects, then re-resolves) can
|
|
62
|
+
* inspect the failure instead of catching a thrown UserInputError — a throw
|
|
63
|
+
* on the first resolve is what made reload_app skip its own auto-connect path
|
|
64
|
+
* whenever a device argument was supplied.
|
|
65
|
+
*/
|
|
66
|
+
export type DeviceResolution = {
|
|
67
|
+
kind: "ok";
|
|
68
|
+
app: ConnectedApp;
|
|
69
|
+
} | {
|
|
70
|
+
kind: "ambiguous";
|
|
71
|
+
device: string;
|
|
72
|
+
matches: ConnectedApp[];
|
|
73
|
+
} | {
|
|
74
|
+
kind: "none";
|
|
75
|
+
device?: string;
|
|
76
|
+
connected: ConnectedApp[];
|
|
77
|
+
};
|
|
78
|
+
/**
|
|
79
|
+
* Human-facing explanation for a `kind: "none"` / `kind: "ambiguous"` resolution.
|
|
80
|
+
* Kept next to the matcher so the message always reflects the matching rules.
|
|
81
|
+
*/
|
|
82
|
+
export declare function describeDeviceResolution(resolution: DeviceResolution): string;
|
|
83
|
+
/**
|
|
84
|
+
* Non-throwing device matcher. Prefer this in call sites that can retry
|
|
85
|
+
* (auto-connect, rescan); use getConnectedAppByDevice when a miss is terminal.
|
|
86
|
+
*/
|
|
87
|
+
export declare function resolveConnectedAppByDevice(device?: string): DeviceResolution;
|
|
58
88
|
export declare function getConnectedAppByDevice(device?: string): ConnectedApp | null;
|
|
59
89
|
export declare function hasConnectedApp(): boolean;
|
|
60
90
|
/**
|