react-native-ai-debugger 1.1.6 → 1.4.21
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/LICENSE +1 -1
- package/README.md +371 -42
- package/build/__tests__/helpers/tap-test-helpers.d.ts +36 -0
- package/build/__tests__/helpers/tap-test-helpers.d.ts.map +1 -0
- package/build/__tests__/helpers/tap-test-helpers.js +130 -0
- package/build/__tests__/helpers/tap-test-helpers.js.map +1 -0
- package/build/__tests__/integration/connection-health.test.js +12 -6
- package/build/__tests__/integration/connection-health.test.js.map +1 -1
- package/build/__tests__/integration/execute-in-app.test.js +2 -1
- package/build/__tests__/integration/execute-in-app.test.js.map +1 -1
- package/build/__tests__/integration/tap-strategies.test.d.ts +2 -0
- package/build/__tests__/integration/tap-strategies.test.d.ts.map +1 -0
- package/build/__tests__/integration/tap-strategies.test.js +329 -0
- package/build/__tests__/integration/tap-strategies.test.js.map +1 -0
- package/build/__tests__/integration/tools.test.js +9 -10
- package/build/__tests__/integration/tools.test.js.map +1 -1
- package/build/__tests__/unit/burst.test.d.ts +2 -0
- package/build/__tests__/unit/burst.test.d.ts.map +1 -0
- package/build/__tests__/unit/burst.test.js +50 -0
- package/build/__tests__/unit/burst.test.js.map +1 -0
- package/build/__tests__/unit/connection-health.test.js +26 -16
- package/build/__tests__/unit/connection-health.test.js.map +1 -1
- package/build/__tests__/unit/fingerprint.test.d.ts +2 -0
- package/build/__tests__/unit/fingerprint.test.d.ts.map +1 -0
- package/build/__tests__/unit/fingerprint.test.js +89 -0
- package/build/__tests__/unit/fingerprint.test.js.map +1 -0
- package/build/__tests__/unit/imageBuffer.test.d.ts +2 -0
- package/build/__tests__/unit/imageBuffer.test.d.ts.map +1 -0
- package/build/__tests__/unit/imageBuffer.test.js +128 -0
- package/build/__tests__/unit/imageBuffer.test.js.map +1 -0
- package/build/__tests__/unit/logs.test.js +9 -0
- package/build/__tests__/unit/logs.test.js.map +1 -1
- package/build/__tests__/unit/networkInterceptor.test.d.ts +2 -0
- package/build/__tests__/unit/networkInterceptor.test.d.ts.map +1 -0
- package/build/__tests__/unit/networkInterceptor.test.js +104 -0
- package/build/__tests__/unit/networkInterceptor.test.js.map +1 -0
- package/build/__tests__/unit/screenshot-diff.test.d.ts +2 -0
- package/build/__tests__/unit/screenshot-diff.test.d.ts.map +1 -0
- package/build/__tests__/unit/screenshot-diff.test.js +97 -0
- package/build/__tests__/unit/screenshot-diff.test.js.map +1 -0
- package/build/__tests__/unit/tap.test.js +430 -25
- package/build/__tests__/unit/tap.test.js.map +1 -1
- package/build/core/android.d.ts.map +1 -1
- package/build/core/android.js +64 -29
- package/build/core/android.js.map +1 -1
- package/build/core/appDetection.d.ts +8 -0
- package/build/core/appDetection.d.ts.map +1 -0
- package/build/core/appDetection.js +91 -0
- package/build/core/appDetection.js.map +1 -0
- package/build/core/bundle.d.ts.map +1 -1
- package/build/core/bundle.js +15 -23
- package/build/core/bundle.js.map +1 -1
- package/build/core/config.d.ts +8 -0
- package/build/core/config.d.ts.map +1 -0
- package/build/core/config.js +27 -0
- package/build/core/config.js.map +1 -0
- package/build/core/connection.d.ts +47 -3
- package/build/core/connection.d.ts.map +1 -1
- package/build/core/connection.js +519 -124
- package/build/core/connection.js.map +1 -1
- package/build/core/executor.d.ts +57 -14
- package/build/core/executor.d.ts.map +1 -1
- package/build/core/executor.js +936 -208
- package/build/core/executor.js.map +1 -1
- package/build/core/fingerprint.d.ts +4 -0
- package/build/core/fingerprint.d.ts.map +1 -0
- package/build/core/fingerprint.js +47 -0
- package/build/core/fingerprint.js.map +1 -0
- package/build/core/guides.d.ts.map +1 -1
- package/build/core/guides.js +27 -3
- package/build/core/guides.js.map +1 -1
- package/build/core/httpServer.js.map +1 -1
- package/build/core/imageBuffer.d.ts +37 -0
- package/build/core/imageBuffer.d.ts.map +1 -0
- package/build/core/imageBuffer.js +58 -0
- package/build/core/imageBuffer.js.map +1 -0
- package/build/core/index.d.ts +21 -17
- package/build/core/index.d.ts.map +1 -1
- package/build/core/index.js +21 -19
- package/build/core/index.js.map +1 -1
- package/build/core/ios.d.ts +36 -7
- package/build/core/ios.d.ts.map +1 -1
- package/build/core/ios.js +553 -323
- package/build/core/ios.js.map +1 -1
- package/build/core/license.d.ts +38 -0
- package/build/core/license.d.ts.map +1 -0
- package/build/core/license.js +265 -0
- package/build/core/license.js.map +1 -0
- package/build/core/logbox.d.ts +51 -0
- package/build/core/logbox.d.ts.map +1 -0
- package/build/core/logbox.js +258 -0
- package/build/core/logbox.js.map +1 -0
- package/build/core/logs.d.ts +1 -0
- package/build/core/logs.d.ts.map +1 -1
- package/build/core/logs.js +5 -0
- package/build/core/logs.js.map +1 -1
- package/build/core/metro.d.ts +8 -0
- package/build/core/metro.d.ts.map +1 -1
- package/build/core/metro.js +28 -0
- package/build/core/metro.js.map +1 -1
- package/build/core/networkInterceptor.d.ts +29 -2
- package/build/core/networkInterceptor.d.ts.map +1 -1
- package/build/core/networkInterceptor.js +195 -191
- package/build/core/networkInterceptor.js.map +1 -1
- package/build/core/ocr.d.ts +8 -3
- package/build/core/ocr.d.ts.map +1 -1
- package/build/core/ocr.js +116 -15
- package/build/core/ocr.js.map +1 -1
- package/build/core/posthog.d.ts +5 -0
- package/build/core/posthog.d.ts.map +1 -0
- package/build/core/posthog.js +46 -0
- package/build/core/posthog.js.map +1 -0
- package/build/core/sdkBridge.d.ts +67 -0
- package/build/core/sdkBridge.d.ts.map +1 -0
- package/build/core/sdkBridge.js +148 -0
- package/build/core/sdkBridge.js.map +1 -0
- package/build/core/state.d.ts +25 -5
- package/build/core/state.d.ts.map +1 -1
- package/build/core/state.js +79 -10
- package/build/core/state.js.map +1 -1
- package/build/core/telemetry.d.ts +19 -1
- package/build/core/telemetry.d.ts.map +1 -1
- package/build/core/telemetry.js +163 -8
- package/build/core/telemetry.js.map +1 -1
- package/build/core/types.d.ts +11 -0
- package/build/core/types.d.ts.map +1 -1
- package/build/index.js +1302 -302
- package/build/index.js.map +1 -1
- package/build/pro/screenshot-diff.d.ts +10 -0
- package/build/pro/screenshot-diff.d.ts.map +1 -0
- package/build/pro/screenshot-diff.js +38 -0
- package/build/pro/screenshot-diff.js.map +1 -0
- package/build/pro/tap.d.ts +71 -2
- package/build/pro/tap.d.ts.map +1 -1
- package/build/pro/tap.js +797 -124
- package/build/pro/tap.js.map +1 -1
- package/build/tools/accountTools.d.ts +44 -0
- package/build/tools/accountTools.d.ts.map +1 -0
- package/build/tools/accountTools.js +217 -0
- package/build/tools/accountTools.js.map +1 -0
- package/package.json +9 -7
- package/build/core/httpServer.js +0 -2459
- package/build/core/httpServerProcess.js +0 -153
- package/build/httpServerStandalone.js +0 -31
|
@@ -0,0 +1,5 @@
|
|
|
1
|
+
import { PostHog } from "posthog-node";
|
|
2
|
+
export declare function getPostHogClient(): PostHog | null;
|
|
3
|
+
export declare function identifyIfDevMode(distinctId: string): void;
|
|
4
|
+
export declare function shutdownPostHog(): Promise<void>;
|
|
5
|
+
//# sourceMappingURL=posthog.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"posthog.d.ts","sourceRoot":"","sources":["../../src/core/posthog.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,OAAO,EAAE,MAAM,cAAc,CAAC;AAWvC,wBAAgB,gBAAgB,IAAI,OAAO,GAAG,IAAI,CAQjD;AAED,wBAAgB,iBAAiB,CAAC,UAAU,EAAE,MAAM,GAAG,IAAI,CAmB1D;AAED,wBAAsB,eAAe,IAAI,OAAO,CAAC,IAAI,CAAC,CAKrD"}
|
|
@@ -0,0 +1,46 @@
|
|
|
1
|
+
import { PostHog } from "posthog-node";
|
|
2
|
+
import { existsSync, readFileSync } from "fs";
|
|
3
|
+
import { homedir } from "os";
|
|
4
|
+
import { join } from "path";
|
|
5
|
+
const apiKey = "phc_snUX9TpjAwNhosPMxAY7D89ijESyrQzucAi9qbPJptPY";
|
|
6
|
+
const host = "https://us.i.posthog.com";
|
|
7
|
+
let _client = null;
|
|
8
|
+
let _identified = false;
|
|
9
|
+
export function getPostHogClient() {
|
|
10
|
+
if (!_client) {
|
|
11
|
+
_client = new PostHog(apiKey, {
|
|
12
|
+
host,
|
|
13
|
+
enableExceptionAutocapture: true,
|
|
14
|
+
});
|
|
15
|
+
}
|
|
16
|
+
return _client;
|
|
17
|
+
}
|
|
18
|
+
export function identifyIfDevMode(distinctId) {
|
|
19
|
+
if (_identified)
|
|
20
|
+
return;
|
|
21
|
+
_identified = true;
|
|
22
|
+
try {
|
|
23
|
+
const configPath = join(homedir(), ".rn-ai-debugger", "telemetry.json");
|
|
24
|
+
if (existsSync(configPath)) {
|
|
25
|
+
const data = JSON.parse(readFileSync(configPath, "utf-8"));
|
|
26
|
+
if (data.internal) {
|
|
27
|
+
getPostHogClient()?.identify({
|
|
28
|
+
distinctId,
|
|
29
|
+
properties: {
|
|
30
|
+
$set: { $internal_or_test_user: true },
|
|
31
|
+
},
|
|
32
|
+
});
|
|
33
|
+
}
|
|
34
|
+
}
|
|
35
|
+
}
|
|
36
|
+
catch {
|
|
37
|
+
// Config unreadable — skip
|
|
38
|
+
}
|
|
39
|
+
}
|
|
40
|
+
export async function shutdownPostHog() {
|
|
41
|
+
if (_client) {
|
|
42
|
+
await _client.shutdown();
|
|
43
|
+
_client = null;
|
|
44
|
+
}
|
|
45
|
+
}
|
|
46
|
+
//# sourceMappingURL=posthog.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"posthog.js","sourceRoot":"","sources":["../../src/core/posthog.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,OAAO,EAAE,MAAM,cAAc,CAAC;AACvC,OAAO,EAAE,UAAU,EAAE,YAAY,EAAE,MAAM,IAAI,CAAC;AAC9C,OAAO,EAAE,OAAO,EAAE,MAAM,IAAI,CAAC;AAC7B,OAAO,EAAE,IAAI,EAAE,MAAM,MAAM,CAAC;AAE5B,MAAM,MAAM,GAAG,kDAAkD,CAAC;AAClE,MAAM,IAAI,GAAG,0BAA0B,CAAC;AAExC,IAAI,OAAO,GAAmB,IAAI,CAAC;AACnC,IAAI,WAAW,GAAG,KAAK,CAAC;AAExB,MAAM,UAAU,gBAAgB;IAC5B,IAAI,CAAC,OAAO,EAAE,CAAC;QACX,OAAO,GAAG,IAAI,OAAO,CAAC,MAAM,EAAE;YAC1B,IAAI;YACJ,0BAA0B,EAAE,IAAI;SACnC,CAAC,CAAC;IACP,CAAC;IACD,OAAO,OAAO,CAAC;AACnB,CAAC;AAED,MAAM,UAAU,iBAAiB,CAAC,UAAkB;IAChD,IAAI,WAAW;QAAE,OAAO;IACxB,WAAW,GAAG,IAAI,CAAC;IACnB,IAAI,CAAC;QACD,MAAM,UAAU,GAAG,IAAI,CAAC,OAAO,EAAE,EAAE,iBAAiB,EAAE,gBAAgB,CAAC,CAAC;QACxE,IAAI,UAAU,CAAC,UAAU,CAAC,EAAE,CAAC;YACzB,MAAM,IAAI,GAAG,IAAI,CAAC,KAAK,CAAC,YAAY,CAAC,UAAU,EAAE,OAAO,CAAC,CAAC,CAAC;YAC3D,IAAI,IAAI,CAAC,QAAQ,EAAE,CAAC;gBAChB,gBAAgB,EAAE,EAAE,QAAQ,CAAC;oBACzB,UAAU;oBACV,UAAU,EAAE;wBACR,IAAI,EAAE,EAAE,sBAAsB,EAAE,IAAI,EAAE;qBACzC;iBACJ,CAAC,CAAC;YACP,CAAC;QACL,CAAC;IACL,CAAC;IAAC,MAAM,CAAC;QACL,2BAA2B;IAC/B,CAAC;AACL,CAAC;AAED,MAAM,CAAC,KAAK,UAAU,eAAe;IACjC,IAAI,OAAO,EAAE,CAAC;QACV,MAAM,OAAO,CAAC,QAAQ,EAAE,CAAC;QACzB,OAAO,GAAG,IAAI,CAAC;IACnB,CAAC;AACL,CAAC"}
|
|
@@ -0,0 +1,67 @@
|
|
|
1
|
+
interface SDKNetworkEntry {
|
|
2
|
+
id: string;
|
|
3
|
+
timestamp: number;
|
|
4
|
+
method: string;
|
|
5
|
+
url: string;
|
|
6
|
+
status?: number;
|
|
7
|
+
statusText?: string;
|
|
8
|
+
duration?: number;
|
|
9
|
+
requestHeaders: Record<string, string>;
|
|
10
|
+
requestBody?: string;
|
|
11
|
+
responseHeaders: Record<string, string>;
|
|
12
|
+
responseBody?: string;
|
|
13
|
+
mimeType?: string;
|
|
14
|
+
error?: string;
|
|
15
|
+
completed: boolean;
|
|
16
|
+
}
|
|
17
|
+
interface SDKConsoleEntry {
|
|
18
|
+
id: string;
|
|
19
|
+
timestamp: number;
|
|
20
|
+
level: string;
|
|
21
|
+
message: string;
|
|
22
|
+
}
|
|
23
|
+
type SDKResult<T> = {
|
|
24
|
+
success: true;
|
|
25
|
+
data: T;
|
|
26
|
+
} | {
|
|
27
|
+
success: false;
|
|
28
|
+
error: string;
|
|
29
|
+
};
|
|
30
|
+
export declare function isSDKInstalled(): Promise<boolean>;
|
|
31
|
+
export declare function querySDKNetwork(options?: {
|
|
32
|
+
count?: number;
|
|
33
|
+
method?: string;
|
|
34
|
+
urlPattern?: string;
|
|
35
|
+
status?: number;
|
|
36
|
+
}): Promise<SDKResult<SDKNetworkEntry[]>>;
|
|
37
|
+
export declare function getSDKNetworkEntry(id: string): Promise<SDKResult<SDKNetworkEntry | null>>;
|
|
38
|
+
export declare function getSDKNetworkStats(): Promise<SDKResult<{
|
|
39
|
+
total: number;
|
|
40
|
+
completed: number;
|
|
41
|
+
errors: number;
|
|
42
|
+
avgDuration: number | null;
|
|
43
|
+
byMethod: Record<string, number>;
|
|
44
|
+
byStatus: Record<string, number>;
|
|
45
|
+
byDomain: Record<string, number>;
|
|
46
|
+
}>>;
|
|
47
|
+
export declare function querySDKConsole(options?: {
|
|
48
|
+
count?: number;
|
|
49
|
+
level?: string;
|
|
50
|
+
text?: string;
|
|
51
|
+
}): Promise<SDKResult<SDKConsoleEntry[]>>;
|
|
52
|
+
export declare function getSDKConsoleStats(): Promise<SDKResult<{
|
|
53
|
+
total: number;
|
|
54
|
+
byLevel: Record<string, number>;
|
|
55
|
+
}>>;
|
|
56
|
+
export declare function clearSDKNetwork(): Promise<{
|
|
57
|
+
success: boolean;
|
|
58
|
+
count?: number;
|
|
59
|
+
error?: string;
|
|
60
|
+
}>;
|
|
61
|
+
export declare function clearSDKConsole(): Promise<{
|
|
62
|
+
success: boolean;
|
|
63
|
+
count?: number;
|
|
64
|
+
error?: string;
|
|
65
|
+
}>;
|
|
66
|
+
export {};
|
|
67
|
+
//# sourceMappingURL=sdkBridge.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"sdkBridge.d.ts","sourceRoot":"","sources":["../../src/core/sdkBridge.ts"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1,148 @@
|
|
|
1
|
+
import { executeInApp } from "./executor.js";
|
|
2
|
+
import { connectedApps } from "./state.js";
|
|
3
|
+
// ── Detection ──
|
|
4
|
+
export async function isSDKInstalled() {
|
|
5
|
+
if (connectedApps.size === 0)
|
|
6
|
+
return false;
|
|
7
|
+
const result = await executeInApp('typeof globalThis.__RN_AI_DEVTOOLS__?.getNetworkEntries === "function"', false, { timeoutMs: 3000 });
|
|
8
|
+
return result.success && result.result === "true";
|
|
9
|
+
}
|
|
10
|
+
// ── Raw readers ──
|
|
11
|
+
async function readRawNetwork() {
|
|
12
|
+
const result = await executeInApp("JSON.stringify(globalThis.__RN_AI_DEVTOOLS__.getNetworkEntries())", false, { timeoutMs: 5000 });
|
|
13
|
+
if (!result.success)
|
|
14
|
+
return { success: false, error: result.error || "executeInApp failed" };
|
|
15
|
+
try {
|
|
16
|
+
return { success: true, data: JSON.parse(result.result) };
|
|
17
|
+
}
|
|
18
|
+
catch {
|
|
19
|
+
return { success: false, error: "Failed to parse SDK response" };
|
|
20
|
+
}
|
|
21
|
+
}
|
|
22
|
+
async function readRawConsole() {
|
|
23
|
+
const result = await executeInApp("JSON.stringify(globalThis.__RN_AI_DEVTOOLS__.getConsoleEntries())", false, { timeoutMs: 5000 });
|
|
24
|
+
if (!result.success)
|
|
25
|
+
return { success: false, error: result.error || "executeInApp failed" };
|
|
26
|
+
try {
|
|
27
|
+
return { success: true, data: JSON.parse(result.result) };
|
|
28
|
+
}
|
|
29
|
+
catch {
|
|
30
|
+
return { success: false, error: "Failed to parse SDK response" };
|
|
31
|
+
}
|
|
32
|
+
}
|
|
33
|
+
// ── Server-side network queries ──
|
|
34
|
+
export async function querySDKNetwork(options = {}) {
|
|
35
|
+
const raw = await readRawNetwork();
|
|
36
|
+
if (!raw.success)
|
|
37
|
+
return raw;
|
|
38
|
+
let entries = raw.data;
|
|
39
|
+
if (options.method) {
|
|
40
|
+
const m = options.method.toUpperCase();
|
|
41
|
+
entries = entries.filter(e => e.method === m);
|
|
42
|
+
}
|
|
43
|
+
if (options.urlPattern) {
|
|
44
|
+
const p = options.urlPattern.toLowerCase();
|
|
45
|
+
entries = entries.filter(e => e.url.toLowerCase().includes(p));
|
|
46
|
+
}
|
|
47
|
+
if (options.status != null) {
|
|
48
|
+
entries = entries.filter(e => e.status === options.status);
|
|
49
|
+
}
|
|
50
|
+
// newest first
|
|
51
|
+
entries = entries.reverse();
|
|
52
|
+
if (options.count != null && options.count > 0) {
|
|
53
|
+
entries = entries.slice(0, options.count);
|
|
54
|
+
}
|
|
55
|
+
return { success: true, data: entries };
|
|
56
|
+
}
|
|
57
|
+
export async function getSDKNetworkEntry(id) {
|
|
58
|
+
const raw = await readRawNetwork();
|
|
59
|
+
if (!raw.success)
|
|
60
|
+
return raw;
|
|
61
|
+
const entry = raw.data.find(e => e.id === id) ?? null;
|
|
62
|
+
return { success: true, data: entry };
|
|
63
|
+
}
|
|
64
|
+
export async function getSDKNetworkStats() {
|
|
65
|
+
const raw = await readRawNetwork();
|
|
66
|
+
if (!raw.success)
|
|
67
|
+
return raw;
|
|
68
|
+
const all = raw.data;
|
|
69
|
+
const completed = all.filter(e => e.completed && !e.error);
|
|
70
|
+
const errors = all.filter(e => !!e.error);
|
|
71
|
+
const durations = completed
|
|
72
|
+
.map(e => e.duration)
|
|
73
|
+
.filter((d) => d != null);
|
|
74
|
+
const avgDuration = durations.length > 0
|
|
75
|
+
? durations.reduce((sum, d) => sum + d, 0) / durations.length
|
|
76
|
+
: null;
|
|
77
|
+
const byMethod = {};
|
|
78
|
+
for (const e of all) {
|
|
79
|
+
byMethod[e.method] = (byMethod[e.method] || 0) + 1;
|
|
80
|
+
}
|
|
81
|
+
const byStatus = {};
|
|
82
|
+
for (const e of all) {
|
|
83
|
+
if (e.status != null) {
|
|
84
|
+
const group = `${Math.floor(e.status / 100)}xx`;
|
|
85
|
+
byStatus[group] = (byStatus[group] || 0) + 1;
|
|
86
|
+
}
|
|
87
|
+
}
|
|
88
|
+
const byDomain = {};
|
|
89
|
+
for (const e of all) {
|
|
90
|
+
try {
|
|
91
|
+
const domain = new URL(e.url).hostname;
|
|
92
|
+
byDomain[domain] = (byDomain[domain] || 0) + 1;
|
|
93
|
+
}
|
|
94
|
+
catch {
|
|
95
|
+
// skip malformed URLs
|
|
96
|
+
}
|
|
97
|
+
}
|
|
98
|
+
return {
|
|
99
|
+
success: true,
|
|
100
|
+
data: { total: all.length, completed: completed.length, errors: errors.length, avgDuration, byMethod, byStatus, byDomain }
|
|
101
|
+
};
|
|
102
|
+
}
|
|
103
|
+
// ── Server-side console queries ──
|
|
104
|
+
export async function querySDKConsole(options = {}) {
|
|
105
|
+
const raw = await readRawConsole();
|
|
106
|
+
if (!raw.success)
|
|
107
|
+
return raw;
|
|
108
|
+
let entries = raw.data;
|
|
109
|
+
if (options.level) {
|
|
110
|
+
entries = entries.filter(e => e.level === options.level);
|
|
111
|
+
}
|
|
112
|
+
if (options.text) {
|
|
113
|
+
const t = options.text.toLowerCase();
|
|
114
|
+
entries = entries.filter(e => e.message.toLowerCase().includes(t));
|
|
115
|
+
}
|
|
116
|
+
// newest first
|
|
117
|
+
entries = entries.reverse();
|
|
118
|
+
if (options.count != null && options.count > 0) {
|
|
119
|
+
entries = entries.slice(0, options.count);
|
|
120
|
+
}
|
|
121
|
+
return { success: true, data: entries };
|
|
122
|
+
}
|
|
123
|
+
export async function getSDKConsoleStats() {
|
|
124
|
+
const raw = await readRawConsole();
|
|
125
|
+
if (!raw.success)
|
|
126
|
+
return raw;
|
|
127
|
+
const byLevel = {};
|
|
128
|
+
for (const e of raw.data) {
|
|
129
|
+
byLevel[e.level] = (byLevel[e.level] || 0) + 1;
|
|
130
|
+
}
|
|
131
|
+
return { success: true, data: { total: raw.data.length, byLevel } };
|
|
132
|
+
}
|
|
133
|
+
// ── Mutations ──
|
|
134
|
+
export async function clearSDKNetwork() {
|
|
135
|
+
const result = await executeInApp("globalThis.__RN_AI_DEVTOOLS__.clearNetwork()", false, { timeoutMs: 3000 });
|
|
136
|
+
if (!result.success)
|
|
137
|
+
return { success: false, error: result.error };
|
|
138
|
+
const count = parseInt(result.result || "0", 10);
|
|
139
|
+
return { success: true, count: isNaN(count) ? 0 : count };
|
|
140
|
+
}
|
|
141
|
+
export async function clearSDKConsole() {
|
|
142
|
+
const result = await executeInApp("globalThis.__RN_AI_DEVTOOLS__.clearConsole()", false, { timeoutMs: 3000 });
|
|
143
|
+
if (!result.success)
|
|
144
|
+
return { success: false, error: result.error };
|
|
145
|
+
const count = parseInt(result.result || "0", 10);
|
|
146
|
+
return { success: true, count: isNaN(count) ? 0 : count };
|
|
147
|
+
}
|
|
148
|
+
//# sourceMappingURL=sdkBridge.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"sdkBridge.js","sourceRoot":"","sources":["../../src/core/sdkBridge.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,YAAY,EAAE,MAAM,eAAe,CAAC;AAC7C,OAAO,EAAE,aAAa,EAAE,MAAM,YAAY,CAAC;AA8B3C,kBAAkB;AAElB,MAAM,CAAC,KAAK,UAAU,cAAc;IAChC,IAAI,aAAa,CAAC,IAAI,KAAK,CAAC;QAAE,OAAO,KAAK,CAAC;IAC3C,MAAM,MAAM,GAAG,MAAM,YAAY,CAC7B,wEAAwE,EACxE,KAAK,EACL,EAAE,SAAS,EAAE,IAAI,EAAE,CACtB,CAAC;IACF,OAAO,MAAM,CAAC,OAAO,IAAI,MAAM,CAAC,MAAM,KAAK,MAAM,CAAC;AACtD,CAAC;AAED,oBAAoB;AAEpB,KAAK,UAAU,cAAc;IACzB,MAAM,MAAM,GAAG,MAAM,YAAY,CAC7B,mEAAmE,EACnE,KAAK,EACL,EAAE,SAAS,EAAE,IAAI,EAAE,CACtB,CAAC;IACF,IAAI,CAAC,MAAM,CAAC,OAAO;QAAE,OAAO,EAAE,OAAO,EAAE,KAAK,EAAE,KAAK,EAAE,MAAM,CAAC,KAAK,IAAI,qBAAqB,EAAE,CAAC;IAC7F,IAAI,CAAC;QACD,OAAO,EAAE,OAAO,EAAE,IAAI,EAAE,IAAI,EAAE,IAAI,CAAC,KAAK,CAAC,MAAM,CAAC,MAAO,CAAC,EAAE,CAAC;IAC/D,CAAC;IAAC,MAAM,CAAC;QACL,OAAO,EAAE,OAAO,EAAE,KAAK,EAAE,KAAK,EAAE,8BAA8B,EAAE,CAAC;IACrE,CAAC;AACL,CAAC;AAED,KAAK,UAAU,cAAc;IACzB,MAAM,MAAM,GAAG,MAAM,YAAY,CAC7B,mEAAmE,EACnE,KAAK,EACL,EAAE,SAAS,EAAE,IAAI,EAAE,CACtB,CAAC;IACF,IAAI,CAAC,MAAM,CAAC,OAAO;QAAE,OAAO,EAAE,OAAO,EAAE,KAAK,EAAE,KAAK,EAAE,MAAM,CAAC,KAAK,IAAI,qBAAqB,EAAE,CAAC;IAC7F,IAAI,CAAC;QACD,OAAO,EAAE,OAAO,EAAE,IAAI,EAAE,IAAI,EAAE,IAAI,CAAC,KAAK,CAAC,MAAM,CAAC,MAAO,CAAC,EAAE,CAAC;IAC/D,CAAC;IAAC,MAAM,CAAC;QACL,OAAO,EAAE,OAAO,EAAE,KAAK,EAAE,KAAK,EAAE,8BAA8B,EAAE,CAAC;IACrE,CAAC;AACL,CAAC;AAED,oCAAoC;AAEpC,MAAM,CAAC,KAAK,UAAU,eAAe,CAAC,UAKlC,EAAE;IACF,MAAM,GAAG,GAAG,MAAM,cAAc,EAAE,CAAC;IACnC,IAAI,CAAC,GAAG,CAAC,OAAO;QAAE,OAAO,GAAG,CAAC;IAE7B,IAAI,OAAO,GAAG,GAAG,CAAC,IAAI,CAAC;IAEvB,IAAI,OAAO,CAAC,MAAM,EAAE,CAAC;QACjB,MAAM,CAAC,GAAG,OAAO,CAAC,MAAM,CAAC,WAAW,EAAE,CAAC;QACvC,OAAO,GAAG,OAAO,CAAC,MAAM,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,MAAM,KAAK,CAAC,CAAC,CAAC;IAClD,CAAC;IACD,IAAI,OAAO,CAAC,UAAU,EAAE,CAAC;QACrB,MAAM,CAAC,GAAG,OAAO,CAAC,UAAU,CAAC,WAAW,EAAE,CAAC;QAC3C,OAAO,GAAG,OAAO,CAAC,MAAM,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,GAAG,CAAC,WAAW,EAAE,CAAC,QAAQ,CAAC,CAAC,CAAC,CAAC,CAAC;IACnE,CAAC;IACD,IAAI,OAAO,CAAC,MAAM,IAAI,IAAI,EAAE,CAAC;QACzB,OAAO,GAAG,OAAO,CAAC,MAAM,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,MAAM,KAAK,OAAO,CAAC,MAAM,CAAC,CAAC;IAC/D,CAAC;IAED,eAAe;IACf,OAAO,GAAG,OAAO,CAAC,OAAO,EAAE,CAAC;IAE5B,IAAI,OAAO,CAAC,KAAK,IAAI,IAAI,IAAI,OAAO,CAAC,KAAK,GAAG,CAAC,EAAE,CAAC;QAC7C,OAAO,GAAG,OAAO,CAAC,KAAK,CAAC,CAAC,EAAE,OAAO,CAAC,KAAK,CAAC,CAAC;IAC9C,CAAC;IAED,OAAO,EAAE,OAAO,EAAE,IAAI,EAAE,IAAI,EAAE,OAAO,EAAE,CAAC;AAC5C,CAAC;AAED,MAAM,CAAC,KAAK,UAAU,kBAAkB,CAAC,EAAU;IAC/C,MAAM,GAAG,GAAG,MAAM,cAAc,EAAE,CAAC;IACnC,IAAI,CAAC,GAAG,CAAC,OAAO;QAAE,OAAO,GAAwC,CAAC;IAElE,MAAM,KAAK,GAAG,GAAG,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,EAAE,KAAK,EAAE,CAAC,IAAI,IAAI,CAAC;IACtD,OAAO,EAAE,OAAO,EAAE,IAAI,EAAE,IAAI,EAAE,KAAK,EAAE,CAAC;AAC1C,CAAC;AAED,MAAM,CAAC,KAAK,UAAU,kBAAkB;IASpC,MAAM,GAAG,GAAG,MAAM,cAAc,EAAE,CAAC;IACnC,IAAI,CAAC,GAAG,CAAC,OAAO;QAAE,OAAO,GAAU,CAAC;IAEpC,MAAM,GAAG,GAAG,GAAG,CAAC,IAAI,CAAC;IACrB,MAAM,SAAS,GAAG,GAAG,CAAC,MAAM,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,SAAS,IAAI,CAAC,CAAC,CAAC,KAAK,CAAC,CAAC;IAC3D,MAAM,MAAM,GAAG,GAAG,CAAC,MAAM,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,CAAC,CAAC,KAAK,CAAC,CAAC;IAE1C,MAAM,SAAS,GAAG,SAAS;SACtB,GAAG,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,QAAQ,CAAC;SACpB,MAAM,CAAC,CAAC,CAAC,EAAe,EAAE,CAAC,CAAC,IAAI,IAAI,CAAC,CAAC;IAE3C,MAAM,WAAW,GAAG,SAAS,CAAC,MAAM,GAAG,CAAC;QACpC,CAAC,CAAC,SAAS,CAAC,MAAM,CAAC,CAAC,GAAG,EAAE,CAAC,EAAE,EAAE,CAAC,GAAG,GAAG,CAAC,EAAE,CAAC,CAAC,GAAG,SAAS,CAAC,MAAM;QAC7D,CAAC,CAAC,IAAI,CAAC;IAEX,MAAM,QAAQ,GAA2B,EAAE,CAAC;IAC5C,KAAK,MAAM,CAAC,IAAI,GAAG,EAAE,CAAC;QAClB,QAAQ,CAAC,CAAC,CAAC,MAAM,CAAC,GAAG,CAAC,QAAQ,CAAC,CAAC,CAAC,MAAM,CAAC,IAAI,CAAC,CAAC,GAAG,CAAC,CAAC;IACvD,CAAC;IAED,MAAM,QAAQ,GAA2B,EAAE,CAAC;IAC5C,KAAK,MAAM,CAAC,IAAI,GAAG,EAAE,CAAC;QAClB,IAAI,CAAC,CAAC,MAAM,IAAI,IAAI,EAAE,CAAC;YACnB,MAAM,KAAK,GAAG,GAAG,IAAI,CAAC,KAAK,CAAC,CAAC,CAAC,MAAM,GAAG,GAAG,CAAC,IAAI,CAAC;YAChD,QAAQ,CAAC,KAAK,CAAC,GAAG,CAAC,QAAQ,CAAC,KAAK,CAAC,IAAI,CAAC,CAAC,GAAG,CAAC,CAAC;QACjD,CAAC;IACL,CAAC;IAED,MAAM,QAAQ,GAA2B,EAAE,CAAC;IAC5C,KAAK,MAAM,CAAC,IAAI,GAAG,EAAE,CAAC;QAClB,IAAI,CAAC;YACD,MAAM,MAAM,GAAG,IAAI,GAAG,CAAC,CAAC,CAAC,GAAG,CAAC,CAAC,QAAQ,CAAC;YACvC,QAAQ,CAAC,MAAM,CAAC,GAAG,CAAC,QAAQ,CAAC,MAAM,CAAC,IAAI,CAAC,CAAC,GAAG,CAAC,CAAC;QACnD,CAAC;QAAC,MAAM,CAAC;YACL,sBAAsB;QAC1B,CAAC;IACL,CAAC;IAED,OAAO;QACH,OAAO,EAAE,IAAI;QACb,IAAI,EAAE,EAAE,KAAK,EAAE,GAAG,CAAC,MAAM,EAAE,SAAS,EAAE,SAAS,CAAC,MAAM,EAAE,MAAM,EAAE,MAAM,CAAC,MAAM,EAAE,WAAW,EAAE,QAAQ,EAAE,QAAQ,EAAE,QAAQ,EAAE;KAC7H,CAAC;AACN,CAAC;AAED,oCAAoC;AAEpC,MAAM,CAAC,KAAK,UAAU,eAAe,CAAC,UAIlC,EAAE;IACF,MAAM,GAAG,GAAG,MAAM,cAAc,EAAE,CAAC;IACnC,IAAI,CAAC,GAAG,CAAC,OAAO;QAAE,OAAO,GAAG,CAAC;IAE7B,IAAI,OAAO,GAAG,GAAG,CAAC,IAAI,CAAC;IAEvB,IAAI,OAAO,CAAC,KAAK,EAAE,CAAC;QAChB,OAAO,GAAG,OAAO,CAAC,MAAM,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,KAAK,KAAK,OAAO,CAAC,KAAK,CAAC,CAAC;IAC7D,CAAC;IACD,IAAI,OAAO,CAAC,IAAI,EAAE,CAAC;QACf,MAAM,CAAC,GAAG,OAAO,CAAC,IAAI,CAAC,WAAW,EAAE,CAAC;QACrC,OAAO,GAAG,OAAO,CAAC,MAAM,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,OAAO,CAAC,WAAW,EAAE,CAAC,QAAQ,CAAC,CAAC,CAAC,CAAC,CAAC;IACvE,CAAC;IAED,eAAe;IACf,OAAO,GAAG,OAAO,CAAC,OAAO,EAAE,CAAC;IAE5B,IAAI,OAAO,CAAC,KAAK,IAAI,IAAI,IAAI,OAAO,CAAC,KAAK,GAAG,CAAC,EAAE,CAAC;QAC7C,OAAO,GAAG,OAAO,CAAC,KAAK,CAAC,CAAC,EAAE,OAAO,CAAC,KAAK,CAAC,CAAC;IAC9C,CAAC;IAED,OAAO,EAAE,OAAO,EAAE,IAAI,EAAE,IAAI,EAAE,OAAO,EAAE,CAAC;AAC5C,CAAC;AAED,MAAM,CAAC,KAAK,UAAU,kBAAkB;IAIpC,MAAM,GAAG,GAAG,MAAM,cAAc,EAAE,CAAC;IACnC,IAAI,CAAC,GAAG,CAAC,OAAO;QAAE,OAAO,GAAU,CAAC;IAEpC,MAAM,OAAO,GAA2B,EAAE,CAAC;IAC3C,KAAK,MAAM,CAAC,IAAI,GAAG,CAAC,IAAI,EAAE,CAAC;QACvB,OAAO,CAAC,CAAC,CAAC,KAAK,CAAC,GAAG,CAAC,OAAO,CAAC,CAAC,CAAC,KAAK,CAAC,IAAI,CAAC,CAAC,GAAG,CAAC,CAAC;IACnD,CAAC;IAED,OAAO,EAAE,OAAO,EAAE,IAAI,EAAE,IAAI,EAAE,EAAE,KAAK,EAAE,GAAG,CAAC,IAAI,CAAC,MAAM,EAAE,OAAO,EAAE,EAAE,CAAC;AACxE,CAAC;AAED,kBAAkB;AAElB,MAAM,CAAC,KAAK,UAAU,eAAe;IACjC,MAAM,MAAM,GAAG,MAAM,YAAY,CAC7B,8CAA8C,EAC9C,KAAK,EACL,EAAE,SAAS,EAAE,IAAI,EAAE,CACtB,CAAC;IACF,IAAI,CAAC,MAAM,CAAC,OAAO;QAAE,OAAO,EAAE,OAAO,EAAE,KAAK,EAAE,KAAK,EAAE,MAAM,CAAC,KAAK,EAAE,CAAC;IACpE,MAAM,KAAK,GAAG,QAAQ,CAAC,MAAM,CAAC,MAAM,IAAI,GAAG,EAAE,EAAE,CAAC,CAAC;IACjD,OAAO,EAAE,OAAO,EAAE,IAAI,EAAE,KAAK,EAAE,KAAK,CAAC,KAAK,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,KAAK,EAAE,CAAC;AAC9D,CAAC;AAED,MAAM,CAAC,KAAK,UAAU,eAAe;IACjC,MAAM,MAAM,GAAG,MAAM,YAAY,CAC7B,8CAA8C,EAC9C,KAAK,EACL,EAAE,SAAS,EAAE,IAAI,EAAE,CACtB,CAAC;IACF,IAAI,CAAC,MAAM,CAAC,OAAO;QAAE,OAAO,EAAE,OAAO,EAAE,KAAK,EAAE,KAAK,EAAE,MAAM,CAAC,KAAK,EAAE,CAAC;IACpE,MAAM,KAAK,GAAG,QAAQ,CAAC,MAAM,CAAC,MAAM,IAAI,GAAG,EAAE,EAAE,CAAC,CAAC;IACjD,OAAO,EAAE,OAAO,EAAE,IAAI,EAAE,KAAK,EAAE,KAAK,CAAC,KAAK,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,KAAK,EAAE,CAAC;AAC9D,CAAC"}
|
package/build/core/state.d.ts
CHANGED
|
@@ -1,10 +1,16 @@
|
|
|
1
|
-
import { ConnectedApp, PendingExecution } from "./types.js";
|
|
1
|
+
import { ConnectedApp, PendingExecution, LogEntry } from "./types.js";
|
|
2
2
|
import { LogBuffer } from "./logs.js";
|
|
3
3
|
import { NetworkBuffer } from "./network.js";
|
|
4
4
|
import { BundleErrorBuffer } from "./bundle.js";
|
|
5
|
-
|
|
6
|
-
export declare const
|
|
5
|
+
import { ImageBuffer } from "./imageBuffer.js";
|
|
6
|
+
export declare const logBuffers: Map<string, LogBuffer>;
|
|
7
|
+
export declare const networkBuffers: Map<string, NetworkBuffer>;
|
|
8
|
+
export declare function getLogBuffer(deviceName: string): LogBuffer;
|
|
9
|
+
export declare function getNetworkBuffer(deviceName: string): NetworkBuffer;
|
|
10
|
+
export declare function getAllLogs(count?: number, level?: string): LogEntry[];
|
|
11
|
+
export declare function getTotalLogCount(): number;
|
|
7
12
|
export declare const bundleErrorBuffer: BundleErrorBuffer;
|
|
13
|
+
export declare const imageBuffer: ImageBuffer;
|
|
8
14
|
export declare const connectedApps: Map<string, ConnectedApp>;
|
|
9
15
|
export declare function getTargetPlatform(): string | undefined;
|
|
10
16
|
export declare const pendingExecutions: Map<number, PendingExecution>;
|
|
@@ -12,6 +18,20 @@ export declare function getNextMessageId(): number;
|
|
|
12
18
|
export declare function getActiveSimulatorUdid(): string | null;
|
|
13
19
|
export declare function setActiveSimulatorUdid(udid: string | null, sourceAppKey?: string): void;
|
|
14
20
|
export declare function clearActiveSimulatorIfSource(appKey: string): void;
|
|
15
|
-
|
|
16
|
-
|
|
21
|
+
/**
|
|
22
|
+
* Get last CDP message time for a specific device, or the most recent across all devices.
|
|
23
|
+
*/
|
|
24
|
+
export declare function getLastCDPMessageTime(appKey?: string): Date | null;
|
|
25
|
+
/**
|
|
26
|
+
* Update last CDP message time for a specific device.
|
|
27
|
+
*/
|
|
28
|
+
export declare function updateLastCDPMessageTime(appKey: string, time: Date): void;
|
|
29
|
+
/**
|
|
30
|
+
* Clear last CDP message time for a specific device.
|
|
31
|
+
*/
|
|
32
|
+
export declare function clearLastCDPMessageTime(appKey: string): void;
|
|
33
|
+
/**
|
|
34
|
+
* Clear all CDP message times (for cleanup/testing).
|
|
35
|
+
*/
|
|
36
|
+
export declare function clearAllCDPMessageTimes(): void;
|
|
17
37
|
//# sourceMappingURL=state.d.ts.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"state.d.ts","sourceRoot":"","sources":["../../src/core/state.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,YAAY,EAAE,gBAAgB,EAAE,MAAM,YAAY,CAAC;
|
|
1
|
+
{"version":3,"file":"state.d.ts","sourceRoot":"","sources":["../../src/core/state.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,YAAY,EAAE,gBAAgB,EAAE,QAAQ,EAAE,MAAM,YAAY,CAAC;AACtE,OAAO,EAAE,SAAS,EAAE,MAAM,WAAW,CAAC;AACtC,OAAO,EAAE,aAAa,EAAE,MAAM,cAAc,CAAC;AAC7C,OAAO,EAAE,iBAAiB,EAAyB,MAAM,aAAa,CAAC;AACvE,OAAO,EAAE,WAAW,EAAE,MAAM,kBAAkB,CAAC;AAG/C,eAAO,MAAM,UAAU,wBAA+B,CAAC;AACvD,eAAO,MAAM,cAAc,4BAAmC,CAAC;AAG/D,wBAAgB,YAAY,CAAC,UAAU,EAAE,MAAM,GAAG,SAAS,CAO1D;AAGD,wBAAgB,gBAAgB,CAAC,UAAU,EAAE,MAAM,GAAG,aAAa,CAOlE;AAGD,wBAAgB,UAAU,CAAC,KAAK,CAAC,EAAE,MAAM,EAAE,KAAK,CAAC,EAAE,MAAM,GAAG,QAAQ,EAAE,CAWrE;AAGD,wBAAgB,gBAAgB,IAAI,MAAM,CAMzC;AAGD,eAAO,MAAM,iBAAiB,mBAA6B,CAAC;AAG5D,eAAO,MAAM,WAAW,aAAsB,CAAC;AAM/C,eAAO,MAAM,aAAa,EAAE,GAAG,CAAC,MAAM,EAAE,YAAY,CAAa,CAAC;AAElE,wBAAgB,iBAAiB,IAAI,MAAM,GAAG,SAAS,CAGtD;AAGD,eAAO,MAAM,iBAAiB,EAAE,GAAG,CAAC,MAAM,EAAE,gBAAgB,CAAa,CAAC;AAK1E,wBAAgB,gBAAgB,IAAI,MAAM,CAEzC;AAOD,wBAAgB,sBAAsB,IAAI,MAAM,GAAG,IAAI,CAEtD;AAED,wBAAgB,sBAAsB,CAAC,IAAI,EAAE,MAAM,GAAG,IAAI,EAAE,YAAY,CAAC,EAAE,MAAM,GAAG,IAAI,CAGvF;AAED,wBAAgB,4BAA4B,CAAC,MAAM,EAAE,MAAM,GAAG,IAAI,CAKjE;AAKD;;GAEG;AACH,wBAAgB,qBAAqB,CAAC,MAAM,CAAC,EAAE,MAAM,GAAG,IAAI,GAAG,IAAI,CAYlE;AAED;;GAEG;AACH,wBAAgB,wBAAwB,CAAC,MAAM,EAAE,MAAM,EAAE,IAAI,EAAE,IAAI,GAAG,IAAI,CAEzE;AAED;;GAEG;AACH,wBAAgB,uBAAuB,CAAC,MAAM,EAAE,MAAM,GAAG,IAAI,CAE5D;AAED;;GAEG;AACH,wBAAgB,uBAAuB,IAAI,IAAI,CAE9C"}
|
package/build/core/state.js
CHANGED
|
@@ -1,12 +1,53 @@
|
|
|
1
1
|
import { LogBuffer } from "./logs.js";
|
|
2
2
|
import { NetworkBuffer } from "./network.js";
|
|
3
3
|
import { BundleErrorBuffer, initBundleErrorBuffer } from "./bundle.js";
|
|
4
|
-
|
|
5
|
-
|
|
6
|
-
|
|
7
|
-
export const
|
|
4
|
+
import { ImageBuffer } from "./imageBuffer.js";
|
|
5
|
+
// Per-device log buffers (keyed by deviceName)
|
|
6
|
+
export const logBuffers = new Map();
|
|
7
|
+
export const networkBuffers = new Map();
|
|
8
|
+
// Helper: get or create a log buffer for a device
|
|
9
|
+
export function getLogBuffer(deviceName) {
|
|
10
|
+
let buffer = logBuffers.get(deviceName);
|
|
11
|
+
if (!buffer) {
|
|
12
|
+
buffer = new LogBuffer(500);
|
|
13
|
+
logBuffers.set(deviceName, buffer);
|
|
14
|
+
}
|
|
15
|
+
return buffer;
|
|
16
|
+
}
|
|
17
|
+
// Helper: get or create a network buffer for a device
|
|
18
|
+
export function getNetworkBuffer(deviceName) {
|
|
19
|
+
let buffer = networkBuffers.get(deviceName);
|
|
20
|
+
if (!buffer) {
|
|
21
|
+
buffer = new NetworkBuffer(200);
|
|
22
|
+
networkBuffers.set(deviceName, buffer);
|
|
23
|
+
}
|
|
24
|
+
return buffer;
|
|
25
|
+
}
|
|
26
|
+
// Helper: get merged logs from all devices
|
|
27
|
+
export function getAllLogs(count, level) {
|
|
28
|
+
const allEntries = [];
|
|
29
|
+
for (const buffer of logBuffers.values()) {
|
|
30
|
+
allEntries.push(...buffer.getAll());
|
|
31
|
+
}
|
|
32
|
+
allEntries.sort((a, b) => a.timestamp.getTime() - b.timestamp.getTime());
|
|
33
|
+
if (level) {
|
|
34
|
+
const filtered = allEntries.filter(e => e.level === level);
|
|
35
|
+
return count ? filtered.slice(-count) : filtered;
|
|
36
|
+
}
|
|
37
|
+
return count ? allEntries.slice(-count) : allEntries;
|
|
38
|
+
}
|
|
39
|
+
// Helper: total log count across all devices
|
|
40
|
+
export function getTotalLogCount() {
|
|
41
|
+
let total = 0;
|
|
42
|
+
for (const buffer of logBuffers.values()) {
|
|
43
|
+
total += buffer.size;
|
|
44
|
+
}
|
|
45
|
+
return total;
|
|
46
|
+
}
|
|
8
47
|
// Global bundle error buffer
|
|
9
48
|
export const bundleErrorBuffer = new BundleErrorBuffer(100);
|
|
49
|
+
// Global image buffer (shared across all screenshot-producing tools)
|
|
50
|
+
export const imageBuffer = new ImageBuffer(50);
|
|
10
51
|
// Initialize bundle error buffer reference in bundle.ts
|
|
11
52
|
initBundleErrorBuffer(bundleErrorBuffer);
|
|
12
53
|
// Connected apps
|
|
@@ -39,12 +80,40 @@ export function clearActiveSimulatorIfSource(appKey) {
|
|
|
39
80
|
_activeSimulatorSourceAppKey = null;
|
|
40
81
|
}
|
|
41
82
|
}
|
|
42
|
-
//
|
|
43
|
-
|
|
44
|
-
|
|
45
|
-
|
|
83
|
+
// Per-device last CDP message timestamps (for connection liveness detection)
|
|
84
|
+
const _lastCDPMessageTimes = new Map();
|
|
85
|
+
/**
|
|
86
|
+
* Get last CDP message time for a specific device, or the most recent across all devices.
|
|
87
|
+
*/
|
|
88
|
+
export function getLastCDPMessageTime(appKey) {
|
|
89
|
+
if (appKey) {
|
|
90
|
+
return _lastCDPMessageTimes.get(appKey) ?? null;
|
|
91
|
+
}
|
|
92
|
+
// Global fallback: return the most recent time across all devices
|
|
93
|
+
let latest = null;
|
|
94
|
+
for (const time of _lastCDPMessageTimes.values()) {
|
|
95
|
+
if (!latest || time.getTime() > latest.getTime()) {
|
|
96
|
+
latest = time;
|
|
97
|
+
}
|
|
98
|
+
}
|
|
99
|
+
return latest;
|
|
100
|
+
}
|
|
101
|
+
/**
|
|
102
|
+
* Update last CDP message time for a specific device.
|
|
103
|
+
*/
|
|
104
|
+
export function updateLastCDPMessageTime(appKey, time) {
|
|
105
|
+
_lastCDPMessageTimes.set(appKey, time);
|
|
106
|
+
}
|
|
107
|
+
/**
|
|
108
|
+
* Clear last CDP message time for a specific device.
|
|
109
|
+
*/
|
|
110
|
+
export function clearLastCDPMessageTime(appKey) {
|
|
111
|
+
_lastCDPMessageTimes.delete(appKey);
|
|
46
112
|
}
|
|
47
|
-
|
|
48
|
-
|
|
113
|
+
/**
|
|
114
|
+
* Clear all CDP message times (for cleanup/testing).
|
|
115
|
+
*/
|
|
116
|
+
export function clearAllCDPMessageTimes() {
|
|
117
|
+
_lastCDPMessageTimes.clear();
|
|
49
118
|
}
|
|
50
119
|
//# sourceMappingURL=state.js.map
|
package/build/core/state.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"state.js","sourceRoot":"","sources":["../../src/core/state.ts"],"names":[],"mappings":"AACA,OAAO,EAAE,SAAS,EAAE,MAAM,WAAW,CAAC;AACtC,OAAO,EAAE,aAAa,EAAE,MAAM,cAAc,CAAC;AAC7C,OAAO,EAAE,iBAAiB,EAAE,qBAAqB,EAAE,MAAM,aAAa,CAAC;
|
|
1
|
+
{"version":3,"file":"state.js","sourceRoot":"","sources":["../../src/core/state.ts"],"names":[],"mappings":"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"}
|
|
@@ -1,4 +1,22 @@
|
|
|
1
|
+
export declare const TELEMETRY_JSONL_PATH = "/tmp/rn-devtools-telemetry.jsonl";
|
|
2
|
+
export declare function getServerVersion(): string;
|
|
3
|
+
export declare function getPackageName(): string;
|
|
4
|
+
export declare function getInstallationId(): string;
|
|
1
5
|
export declare function initTelemetry(): void;
|
|
2
6
|
export declare function isTelemetryEnabled(): boolean;
|
|
3
|
-
|
|
7
|
+
/** Check if the MCP server is running in dev mode (config-based). */
|
|
8
|
+
export declare function isDevMode(): boolean;
|
|
9
|
+
export declare function trackToolInvocation(toolName: string, success: boolean, durationMs: number, errorMessage?: string, errorContext?: string, inputTokens?: number, outputTokens?: number, targetPlatform?: string, emptyResult?: boolean, meaningful?: boolean, changeRate?: number, tapStrategy?: string, iosDriver?: string, responsePreview?: string, emptyReason?: string): void;
|
|
10
|
+
/**
|
|
11
|
+
* Records app detection result as an app_detected event.
|
|
12
|
+
* Called from appDetection.ts after successful detection.
|
|
13
|
+
*/
|
|
14
|
+
export declare function trackAppDetection(detection: {
|
|
15
|
+
reactNativeVersion: string;
|
|
16
|
+
architecture: string;
|
|
17
|
+
jsEngine: string;
|
|
18
|
+
appPlatform: string;
|
|
19
|
+
osVersion: string;
|
|
20
|
+
expoSdkVersion?: string;
|
|
21
|
+
}): void;
|
|
4
22
|
//# sourceMappingURL=telemetry.d.ts.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"telemetry.d.ts","sourceRoot":"","sources":["../../src/core/telemetry.ts"],"names":[],"mappings":"
|
|
1
|
+
{"version":3,"file":"telemetry.d.ts","sourceRoot":"","sources":["../../src/core/telemetry.ts"],"names":[],"mappings":"AAmBA,eAAO,MAAM,oBAAoB,qCAAqC,CAAC;AAGvE,wBAAgB,gBAAgB,IAAI,MAAM,CASzC;AAGD,wBAAgB,cAAc,IAAI,MAAM,CASvC;AA4JD,wBAAgB,iBAAiB,IAAI,MAAM,CAE1C;AAWD,wBAAgB,aAAa,IAAI,IAAI,CAqDpC;AAED,wBAAgB,kBAAkB,IAAI,OAAO,CAE5C;AAED,qEAAqE;AACrE,wBAAgB,SAAS,IAAI,OAAO,CAOnC;AAwBD,wBAAgB,mBAAmB,CAC/B,QAAQ,EAAE,MAAM,EAChB,OAAO,EAAE,OAAO,EAChB,UAAU,EAAE,MAAM,EAClB,YAAY,CAAC,EAAE,MAAM,EACrB,YAAY,CAAC,EAAE,MAAM,EACrB,WAAW,CAAC,EAAE,MAAM,EACpB,YAAY,CAAC,EAAE,MAAM,EACrB,cAAc,CAAC,EAAE,MAAM,EACvB,WAAW,CAAC,EAAE,OAAO,EACrB,UAAU,CAAC,EAAE,OAAO,EACpB,UAAU,CAAC,EAAE,MAAM,EACnB,WAAW,CAAC,EAAE,MAAM,EACpB,SAAS,CAAC,EAAE,MAAM,EAClB,eAAe,CAAC,EAAE,MAAM,EACxB,WAAW,CAAC,EAAE,MAAM,GACrB,IAAI,CA8FN;AA0BD;;;GAGG;AACH,wBAAgB,iBAAiB,CAAC,SAAS,EAAE;IACzC,kBAAkB,EAAE,MAAM,CAAC;IAC3B,YAAY,EAAE,MAAM,CAAC;IACrB,QAAQ,EAAE,MAAM,CAAC;IACjB,WAAW,EAAE,MAAM,CAAC;IACpB,SAAS,EAAE,MAAM,CAAC;IAClB,cAAc,CAAC,EAAE,MAAM,CAAC;CAC3B,GAAG,IAAI,CAuBP"}
|