execbro 1.10.22 → 1.10.24

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.
Files changed (87) hide show
  1. package/README.md +2 -1
  2. package/build/__tests__/unit/componentSource.test.d.ts +2 -0
  3. package/build/__tests__/unit/componentSource.test.d.ts.map +1 -0
  4. package/build/__tests__/unit/componentSource.test.js +67 -0
  5. package/build/__tests__/unit/componentSource.test.js.map +1 -0
  6. package/build/__tests__/unit/componentSourceResolve.test.d.ts +2 -0
  7. package/build/__tests__/unit/componentSourceResolve.test.d.ts.map +1 -0
  8. package/build/__tests__/unit/componentSourceResolve.test.js +91 -0
  9. package/build/__tests__/unit/componentSourceResolve.test.js.map +1 -0
  10. package/build/__tests__/unit/inspectorHarvest.test.d.ts +2 -0
  11. package/build/__tests__/unit/inspectorHarvest.test.d.ts.map +1 -0
  12. package/build/__tests__/unit/inspectorHarvest.test.js +61 -0
  13. package/build/__tests__/unit/inspectorHarvest.test.js.map +1 -0
  14. package/build/__tests__/unit/inspectorSource.test.d.ts +2 -0
  15. package/build/__tests__/unit/inspectorSource.test.d.ts.map +1 -0
  16. package/build/__tests__/unit/inspectorSource.test.js +74 -0
  17. package/build/__tests__/unit/inspectorSource.test.js.map +1 -0
  18. package/build/__tests__/unit/selectionBuffer.test.d.ts +2 -0
  19. package/build/__tests__/unit/selectionBuffer.test.d.ts.map +1 -0
  20. package/build/__tests__/unit/selectionBuffer.test.js +86 -0
  21. package/build/__tests__/unit/selectionBuffer.test.js.map +1 -0
  22. package/build/__tests__/unit/selectionPoller.test.d.ts +2 -0
  23. package/build/__tests__/unit/selectionPoller.test.d.ts.map +1 -0
  24. package/build/__tests__/unit/selectionPoller.test.js +109 -0
  25. package/build/__tests__/unit/selectionPoller.test.js.map +1 -0
  26. package/build/__tests__/unit/symbolicate.test.d.ts +2 -0
  27. package/build/__tests__/unit/symbolicate.test.d.ts.map +1 -0
  28. package/build/__tests__/unit/symbolicate.test.js +154 -0
  29. package/build/__tests__/unit/symbolicate.test.js.map +1 -0
  30. package/build/__tests__/unit/toolsJson.test.d.ts +2 -0
  31. package/build/__tests__/unit/toolsJson.test.d.ts.map +1 -0
  32. package/build/__tests__/unit/toolsJson.test.js +24 -0
  33. package/build/__tests__/unit/toolsJson.test.js.map +1 -0
  34. package/build/core/componentSource.d.ts +62 -0
  35. package/build/core/componentSource.d.ts.map +1 -0
  36. package/build/core/componentSource.js +268 -0
  37. package/build/core/componentSource.js.map +1 -0
  38. package/build/core/connection.d.ts.map +1 -1
  39. package/build/core/connection.js +4 -0
  40. package/build/core/connection.js.map +1 -1
  41. package/build/core/debugGlobals.d.ts.map +1 -1
  42. package/build/core/debugGlobals.js +3 -1
  43. package/build/core/debugGlobals.js.map +1 -1
  44. package/build/core/guides.js +1 -1
  45. package/build/core/index.d.ts +4 -1
  46. package/build/core/index.d.ts.map +1 -1
  47. package/build/core/index.js +4 -1
  48. package/build/core/index.js.map +1 -1
  49. package/build/core/inspector.d.ts +24 -0
  50. package/build/core/inspector.d.ts.map +1 -1
  51. package/build/core/inspector.js +58 -0
  52. package/build/core/inspector.js.map +1 -1
  53. package/build/core/sdkBridge.d.ts +8 -8
  54. package/build/core/sdkBridge.d.ts.map +1 -1
  55. package/build/core/sdkBridge.js +20 -20
  56. package/build/core/sdkBridge.js.map +1 -1
  57. package/build/core/selectionBuffer.d.ts +42 -0
  58. package/build/core/selectionBuffer.d.ts.map +1 -0
  59. package/build/core/selectionBuffer.js +51 -0
  60. package/build/core/selectionBuffer.js.map +1 -0
  61. package/build/core/selectionPoller.d.ts +13 -0
  62. package/build/core/selectionPoller.d.ts.map +1 -0
  63. package/build/core/selectionPoller.js +102 -0
  64. package/build/core/selectionPoller.js.map +1 -0
  65. package/build/core/symbolicate.d.ts +18 -0
  66. package/build/core/symbolicate.d.ts.map +1 -0
  67. package/build/core/symbolicate.js +119 -0
  68. package/build/core/symbolicate.js.map +1 -0
  69. package/build/tools/componentTools.d.ts.map +1 -1
  70. package/build/tools/componentTools.js +78 -9
  71. package/build/tools/componentTools.js.map +1 -1
  72. package/build/tools/connectionTools.d.ts.map +1 -1
  73. package/build/tools/connectionTools.js +3 -1
  74. package/build/tools/connectionTools.js.map +1 -1
  75. package/build/tools/interactionTools.d.ts.map +1 -1
  76. package/build/tools/interactionTools.js +1 -0
  77. package/build/tools/interactionTools.js.map +1 -1
  78. package/build/tools/logTools.d.ts.map +1 -1
  79. package/build/tools/logTools.js +26 -17
  80. package/build/tools/logTools.js.map +1 -1
  81. package/build/tools/networkTools.d.ts.map +1 -1
  82. package/build/tools/networkTools.js +15 -20
  83. package/build/tools/networkTools.js.map +1 -1
  84. package/build/tools/screenshotTools.d.ts.map +1 -1
  85. package/build/tools/screenshotTools.js +3 -0
  86. package/build/tools/screenshotTools.js.map +1 -1
  87. package/package.json +65 -64
@@ -1,15 +1,15 @@
1
1
  import { executeInApp } from "./executor.js";
2
2
  import { connectedApps } from "./state.js";
3
3
  // ── Detection ──
4
- export async function isSDKInstalled() {
4
+ export async function isSDKInstalled(device) {
5
5
  if (connectedApps.size === 0)
6
6
  return false;
7
- const result = await executeInApp('typeof (globalThis.__EXECBRO__ ?? globalThis.__RN_AI_DEVTOOLS__)?.getNetworkEntries === "function"', false, { timeoutMs: 3000, originatingToolName: "_sdk_bridge" });
7
+ const result = await executeInApp('typeof (globalThis.__EXECBRO__ ?? globalThis.__RN_AI_DEVTOOLS__)?.getNetworkEntries === "function"', false, { timeoutMs: 3000, originatingToolName: "_sdk_bridge" }, device);
8
8
  return result.success && result.result === "true";
9
9
  }
10
10
  // ── Raw readers ──
11
- async function readRawNetwork() {
12
- const result = await executeInApp("JSON.stringify((globalThis.__EXECBRO__ ?? globalThis.__RN_AI_DEVTOOLS__).getNetworkEntries())", false, { timeoutMs: 5000, originatingToolName: "_sdk_bridge" });
11
+ async function readRawNetwork(device) {
12
+ const result = await executeInApp("JSON.stringify((globalThis.__EXECBRO__ ?? globalThis.__RN_AI_DEVTOOLS__).getNetworkEntries())", false, { timeoutMs: 5000, originatingToolName: "_sdk_bridge" }, device);
13
13
  if (!result.success)
14
14
  return { success: false, error: result.error || "executeInApp failed" };
15
15
  try {
@@ -19,8 +19,8 @@ async function readRawNetwork() {
19
19
  return { success: false, error: "Failed to parse SDK response" };
20
20
  }
21
21
  }
22
- async function readRawConsole() {
23
- const result = await executeInApp("JSON.stringify((globalThis.__EXECBRO__ ?? globalThis.__RN_AI_DEVTOOLS__).getConsoleEntries())", false, { timeoutMs: 5000, originatingToolName: "_sdk_bridge" });
22
+ async function readRawConsole(device) {
23
+ const result = await executeInApp("JSON.stringify((globalThis.__EXECBRO__ ?? globalThis.__RN_AI_DEVTOOLS__).getConsoleEntries())", false, { timeoutMs: 5000, originatingToolName: "_sdk_bridge" }, device);
24
24
  if (!result.success)
25
25
  return { success: false, error: result.error || "executeInApp failed" };
26
26
  try {
@@ -31,8 +31,8 @@ async function readRawConsole() {
31
31
  }
32
32
  }
33
33
  // ── Server-side network queries ──
34
- export async function querySDKNetwork(options = {}) {
35
- const raw = await readRawNetwork();
34
+ export async function querySDKNetwork(options = {}, device) {
35
+ const raw = await readRawNetwork(device);
36
36
  if (!raw.success)
37
37
  return raw;
38
38
  let entries = raw.data;
@@ -54,15 +54,15 @@ export async function querySDKNetwork(options = {}) {
54
54
  }
55
55
  return { success: true, data: entries };
56
56
  }
57
- export async function getSDKNetworkEntry(id) {
58
- const raw = await readRawNetwork();
57
+ export async function getSDKNetworkEntry(id, device) {
58
+ const raw = await readRawNetwork(device);
59
59
  if (!raw.success)
60
60
  return raw;
61
61
  const entry = raw.data.find(e => e.id === id) ?? null;
62
62
  return { success: true, data: entry };
63
63
  }
64
- export async function getSDKNetworkStats() {
65
- const raw = await readRawNetwork();
64
+ export async function getSDKNetworkStats(device) {
65
+ const raw = await readRawNetwork(device);
66
66
  if (!raw.success)
67
67
  return raw;
68
68
  const all = raw.data;
@@ -101,8 +101,8 @@ export async function getSDKNetworkStats() {
101
101
  };
102
102
  }
103
103
  // ── Server-side console queries ──
104
- export async function querySDKConsole(options = {}) {
105
- const raw = await readRawConsole();
104
+ export async function querySDKConsole(options = {}, device) {
105
+ const raw = await readRawConsole(device);
106
106
  if (!raw.success)
107
107
  return raw;
108
108
  let entries = raw.data;
@@ -120,8 +120,8 @@ export async function querySDKConsole(options = {}) {
120
120
  }
121
121
  return { success: true, data: entries };
122
122
  }
123
- export async function getSDKConsoleStats() {
124
- const raw = await readRawConsole();
123
+ export async function getSDKConsoleStats(device) {
124
+ const raw = await readRawConsole(device);
125
125
  if (!raw.success)
126
126
  return raw;
127
127
  const byLevel = {};
@@ -131,15 +131,15 @@ export async function getSDKConsoleStats() {
131
131
  return { success: true, data: { total: raw.data.length, byLevel } };
132
132
  }
133
133
  // ── Mutations ──
134
- export async function clearSDKNetwork() {
135
- const result = await executeInApp("(globalThis.__EXECBRO__ ?? globalThis.__RN_AI_DEVTOOLS__).clearNetwork()", false, { timeoutMs: 3000, originatingToolName: "_sdk_bridge" });
134
+ export async function clearSDKNetwork(device) {
135
+ const result = await executeInApp("(globalThis.__EXECBRO__ ?? globalThis.__RN_AI_DEVTOOLS__).clearNetwork()", false, { timeoutMs: 3000, originatingToolName: "_sdk_bridge" }, device);
136
136
  if (!result.success)
137
137
  return { success: false, error: result.error };
138
138
  const count = parseInt(result.result || "0", 10);
139
139
  return { success: true, count: isNaN(count) ? 0 : count };
140
140
  }
141
- export async function clearSDKConsole() {
142
- const result = await executeInApp("(globalThis.__EXECBRO__ ?? globalThis.__RN_AI_DEVTOOLS__).clearConsole()", false, { timeoutMs: 3000, originatingToolName: "_sdk_bridge" });
141
+ export async function clearSDKConsole(device) {
142
+ const result = await executeInApp("(globalThis.__EXECBRO__ ?? globalThis.__RN_AI_DEVTOOLS__).clearConsole()", false, { timeoutMs: 3000, originatingToolName: "_sdk_bridge" }, device);
143
143
  if (!result.success)
144
144
  return { success: false, error: result.error };
145
145
  const count = parseInt(result.result || "0", 10);
@@ -1 +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,oGAAoG,EACpG,KAAK,EACL,EAAE,SAAS,EAAE,IAAI,EAAE,mBAAmB,EAAE,aAAa,EAAE,CAC1D,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,+FAA+F,EAC/F,KAAK,EACL,EAAE,SAAS,EAAE,IAAI,EAAE,mBAAmB,EAAE,aAAa,EAAE,CAC1D,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,+FAA+F,EAC/F,KAAK,EACL,EAAE,SAAS,EAAE,IAAI,EAAE,mBAAmB,EAAE,aAAa,EAAE,CAC1D,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,0EAA0E,EAC1E,KAAK,EACL,EAAE,SAAS,EAAE,IAAI,EAAE,mBAAmB,EAAE,aAAa,EAAE,CAC1D,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,0EAA0E,EAC1E,KAAK,EACL,EAAE,SAAS,EAAE,IAAI,EAAE,mBAAmB,EAAE,aAAa,EAAE,CAC1D,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"}
1
+ {"version":3,"file":"sdkBridge.js","sourceRoot":"","sources":["../../src/core/sdkBridge.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,42 @@
1
+ export interface SelectionFrame {
2
+ left: number;
3
+ top: number;
4
+ width: number;
5
+ height: number;
6
+ }
7
+ export interface ComponentStack {
8
+ component: string;
9
+ stack: string;
10
+ }
11
+ export interface SelectionEntry {
12
+ id: string;
13
+ device: string;
14
+ timestamp: number;
15
+ element: string;
16
+ path: string;
17
+ hierarchy: string[];
18
+ frame: SelectionFrame | null;
19
+ style: Record<string, unknown> | null;
20
+ /** Raw fiber _debugStack strings, harvested at tap time. Symbolicated lazily on read. */
21
+ stacks: ComponentStack[];
22
+ }
23
+ export declare class SelectionBuffer {
24
+ private entries;
25
+ private maxSize;
26
+ constructor(maxSize?: number);
27
+ /**
28
+ * Appends unless it duplicates the most recent entry for the same device.
29
+ * Returns whether the entry was accepted, so the poller can tell a genuine
30
+ * new tap from a re-read of the same selection.
31
+ */
32
+ add(entry: SelectionEntry): boolean;
33
+ list(options?: {
34
+ device?: string;
35
+ limit?: number;
36
+ }): SelectionEntry[];
37
+ latest(device?: string): SelectionEntry | undefined;
38
+ clear(): void;
39
+ get size(): number;
40
+ }
41
+ export declare const selectionBuffer: SelectionBuffer;
42
+ //# sourceMappingURL=selectionBuffer.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"selectionBuffer.d.ts","sourceRoot":"","sources":["../../src/core/selectionBuffer.ts"],"names":[],"mappings":"AAAA,MAAM,WAAW,cAAc;IAC3B,IAAI,EAAE,MAAM,CAAC;IACb,GAAG,EAAE,MAAM,CAAC;IACZ,KAAK,EAAE,MAAM,CAAC;IACd,MAAM,EAAE,MAAM,CAAC;CAClB;AAED,MAAM,WAAW,cAAc;IAC3B,SAAS,EAAE,MAAM,CAAC;IAClB,KAAK,EAAE,MAAM,CAAC;CACjB;AAED,MAAM,WAAW,cAAc;IAC3B,EAAE,EAAE,MAAM,CAAC;IACX,MAAM,EAAE,MAAM,CAAC;IACf,SAAS,EAAE,MAAM,CAAC;IAClB,OAAO,EAAE,MAAM,CAAC;IAChB,IAAI,EAAE,MAAM,CAAC;IACb,SAAS,EAAE,MAAM,EAAE,CAAC;IACpB,KAAK,EAAE,cAAc,GAAG,IAAI,CAAC;IAC7B,KAAK,EAAE,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,GAAG,IAAI,CAAC;IACtC,yFAAyF;IACzF,MAAM,EAAE,cAAc,EAAE,CAAC;CAC5B;AAQD,qBAAa,eAAe;IACxB,OAAO,CAAC,OAAO,CAAwB;IACvC,OAAO,CAAC,OAAO,CAAS;gBAEZ,OAAO,GAAE,MAAY;IAIjC;;;;OAIG;IACH,GAAG,CAAC,KAAK,EAAE,cAAc,GAAG,OAAO;IAYnC,IAAI,CAAC,OAAO,GAAE;QAAE,MAAM,CAAC,EAAE,MAAM,CAAC;QAAC,KAAK,CAAC,EAAE,MAAM,CAAA;KAAO,GAAG,cAAc,EAAE;IASzE,MAAM,CAAC,MAAM,CAAC,EAAE,MAAM,GAAG,cAAc,GAAG,SAAS;IAOnD,KAAK,IAAI,IAAI;IAIb,IAAI,IAAI,IAAI,MAAM,CAEjB;CACJ;AAED,eAAO,MAAM,eAAe,iBAA2B,CAAC"}
@@ -0,0 +1,51 @@
1
+ function signature(entry) {
2
+ const f = entry.frame;
3
+ const frameSig = f ? `${f.left},${f.top},${f.width},${f.height}` : "none";
4
+ return `${entry.device}|${entry.path}|${frameSig}`;
5
+ }
6
+ export class SelectionBuffer {
7
+ entries = [];
8
+ maxSize;
9
+ constructor(maxSize = 100) {
10
+ this.maxSize = maxSize;
11
+ }
12
+ /**
13
+ * Appends unless it duplicates the most recent entry for the same device.
14
+ * Returns whether the entry was accepted, so the poller can tell a genuine
15
+ * new tap from a re-read of the same selection.
16
+ */
17
+ add(entry) {
18
+ const previous = this.latest(entry.device);
19
+ if (previous && signature(previous) === signature(entry)) {
20
+ return false;
21
+ }
22
+ this.entries.push(entry);
23
+ while (this.entries.length > this.maxSize) {
24
+ this.entries.shift();
25
+ }
26
+ return true;
27
+ }
28
+ list(options = {}) {
29
+ let filtered = this.entries;
30
+ if (options.device) {
31
+ filtered = filtered.filter((e) => e.device === options.device);
32
+ }
33
+ const newestFirst = [...filtered].reverse();
34
+ return options.limit !== undefined ? newestFirst.slice(0, options.limit) : newestFirst;
35
+ }
36
+ latest(device) {
37
+ for (let i = this.entries.length - 1; i >= 0; i--) {
38
+ if (!device || this.entries[i].device === device)
39
+ return this.entries[i];
40
+ }
41
+ return undefined;
42
+ }
43
+ clear() {
44
+ this.entries = [];
45
+ }
46
+ get size() {
47
+ return this.entries.length;
48
+ }
49
+ }
50
+ export const selectionBuffer = new SelectionBuffer(100);
51
+ //# sourceMappingURL=selectionBuffer.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"selectionBuffer.js","sourceRoot":"","sources":["../../src/core/selectionBuffer.ts"],"names":[],"mappings":"AAyBA,SAAS,SAAS,CAAC,KAAqB;IACpC,MAAM,CAAC,GAAG,KAAK,CAAC,KAAK,CAAC;IACtB,MAAM,QAAQ,GAAG,CAAC,CAAC,CAAC,CAAC,GAAG,CAAC,CAAC,IAAI,IAAI,CAAC,CAAC,GAAG,IAAI,CAAC,CAAC,KAAK,IAAI,CAAC,CAAC,MAAM,EAAE,CAAC,CAAC,CAAC,MAAM,CAAC;IAC1E,OAAO,GAAG,KAAK,CAAC,MAAM,IAAI,KAAK,CAAC,IAAI,IAAI,QAAQ,EAAE,CAAC;AACvD,CAAC;AAED,MAAM,OAAO,eAAe;IAChB,OAAO,GAAqB,EAAE,CAAC;IAC/B,OAAO,CAAS;IAExB,YAAY,UAAkB,GAAG;QAC7B,IAAI,CAAC,OAAO,GAAG,OAAO,CAAC;IAC3B,CAAC;IAED;;;;OAIG;IACH,GAAG,CAAC,KAAqB;QACrB,MAAM,QAAQ,GAAG,IAAI,CAAC,MAAM,CAAC,KAAK,CAAC,MAAM,CAAC,CAAC;QAC3C,IAAI,QAAQ,IAAI,SAAS,CAAC,QAAQ,CAAC,KAAK,SAAS,CAAC,KAAK,CAAC,EAAE,CAAC;YACvD,OAAO,KAAK,CAAC;QACjB,CAAC;QACD,IAAI,CAAC,OAAO,CAAC,IAAI,CAAC,KAAK,CAAC,CAAC;QACzB,OAAO,IAAI,CAAC,OAAO,CAAC,MAAM,GAAG,IAAI,CAAC,OAAO,EAAE,CAAC;YACxC,IAAI,CAAC,OAAO,CAAC,KAAK,EAAE,CAAC;QACzB,CAAC;QACD,OAAO,IAAI,CAAC;IAChB,CAAC;IAED,IAAI,CAAC,UAA+C,EAAE;QAClD,IAAI,QAAQ,GAAG,IAAI,CAAC,OAAO,CAAC;QAC5B,IAAI,OAAO,CAAC,MAAM,EAAE,CAAC;YACjB,QAAQ,GAAG,QAAQ,CAAC,MAAM,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC,CAAC,MAAM,KAAK,OAAO,CAAC,MAAM,CAAC,CAAC;QACnE,CAAC;QACD,MAAM,WAAW,GAAG,CAAC,GAAG,QAAQ,CAAC,CAAC,OAAO,EAAE,CAAC;QAC5C,OAAO,OAAO,CAAC,KAAK,KAAK,SAAS,CAAC,CAAC,CAAC,WAAW,CAAC,KAAK,CAAC,CAAC,EAAE,OAAO,CAAC,KAAK,CAAC,CAAC,CAAC,CAAC,WAAW,CAAC;IAC3F,CAAC;IAED,MAAM,CAAC,MAAe;QAClB,KAAK,IAAI,CAAC,GAAG,IAAI,CAAC,OAAO,CAAC,MAAM,GAAG,CAAC,EAAE,CAAC,IAAI,CAAC,EAAE,CAAC,EAAE,EAAE,CAAC;YAChD,IAAI,CAAC,MAAM,IAAI,IAAI,CAAC,OAAO,CAAC,CAAC,CAAC,CAAC,MAAM,KAAK,MAAM;gBAAE,OAAO,IAAI,CAAC,OAAO,CAAC,CAAC,CAAC,CAAC;QAC7E,CAAC;QACD,OAAO,SAAS,CAAC;IACrB,CAAC;IAED,KAAK;QACD,IAAI,CAAC,OAAO,GAAG,EAAE,CAAC;IACtB,CAAC;IAED,IAAI,IAAI;QACJ,OAAO,IAAI,CAAC,OAAO,CAAC,MAAM,CAAC;IAC/B,CAAC;CACJ;AAED,MAAM,CAAC,MAAM,eAAe,GAAG,IAAI,eAAe,CAAC,GAAG,CAAC,CAAC"}
@@ -0,0 +1,13 @@
1
+ export declare const IDLE_INTERVAL_MS = 2000;
2
+ export declare const ACTIVE_INTERVAL_MS = 500;
3
+ /**
4
+ * One poll cycle. The probe is cheap and runs every tick; the harvest measures
5
+ * host fibers and runs only when the probe reports a change - once per tap.
6
+ * Returns whether an entry was buffered.
7
+ */
8
+ export declare function pollOnce(device: string): Promise<boolean>;
9
+ export declare function isSelectionPollerRunning(device: string): boolean;
10
+ export declare function startSelectionPoller(device: string): void;
11
+ export declare function stopSelectionPoller(device: string): void;
12
+ export declare function stopAllSelectionPollers(): void;
13
+ //# sourceMappingURL=selectionPoller.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"selectionPoller.d.ts","sourceRoot":"","sources":["../../src/core/selectionPoller.ts"],"names":[],"mappings":"AAQA,eAAO,MAAM,gBAAgB,OAAO,CAAC;AACrC,eAAO,MAAM,kBAAkB,MAAM,CAAC;AAStC;;;;GAIG;AACH,wBAAsB,QAAQ,CAAC,MAAM,EAAE,MAAM,GAAG,OAAO,CAAC,OAAO,CAAC,CA2D/D;AAED,wBAAgB,wBAAwB,CAAC,MAAM,EAAE,MAAM,GAAG,OAAO,CAEhE;AAED,wBAAgB,oBAAoB,CAAC,MAAM,EAAE,MAAM,GAAG,IAAI,CAoBzD;AAED,wBAAgB,mBAAmB,CAAC,MAAM,EAAE,MAAM,GAAG,IAAI,CAIxD;AAED,wBAAgB,uBAAuB,IAAI,IAAI,CAI9C"}
@@ -0,0 +1,102 @@
1
+ import { executeInApp } from "./jsExecute.js";
2
+ import { buildSelectionProbeExpression, buildDebugStackHarvestExpression, } from "./componentSource.js";
3
+ import { selectionBuffer } from "./selectionBuffer.js";
4
+ export const IDLE_INTERVAL_MS = 2000;
5
+ export const ACTIVE_INTERVAL_MS = 500;
6
+ const timers = new Map();
7
+ let entryCounter = 0;
8
+ function pollingDisabled() {
9
+ return process.env.EXECBRO_DISABLE_SELECTION_POLL === "1";
10
+ }
11
+ /**
12
+ * One poll cycle. The probe is cheap and runs every tick; the harvest measures
13
+ * host fibers and runs only when the probe reports a change - once per tap.
14
+ * Returns whether an entry was buffered.
15
+ */
16
+ export async function pollOnce(device) {
17
+ let probe;
18
+ try {
19
+ const raw = await executeInApp(buildSelectionProbeExpression(), false, {
20
+ maxRetries: 0,
21
+ autoReconnect: false,
22
+ timeoutMs: 3000,
23
+ originatingToolName: "selection_poll",
24
+ }, device);
25
+ if (!raw.success || !raw.result)
26
+ return false;
27
+ probe = JSON.parse(raw.result);
28
+ }
29
+ catch {
30
+ return false;
31
+ }
32
+ if (!probe.changed || !probe.selected)
33
+ return false;
34
+ let stacks = [];
35
+ if (probe.frame) {
36
+ const centreX = probe.frame.left + probe.frame.width / 2;
37
+ const centreY = probe.frame.top + probe.frame.height / 2;
38
+ try {
39
+ const harvest = await executeInApp(buildDebugStackHarvestExpression(centreX, centreY), true, {
40
+ maxRetries: 0,
41
+ autoReconnect: false,
42
+ timeoutMs: 3000,
43
+ originatingToolName: "selection_poll",
44
+ }, device);
45
+ if (harvest.success && harvest.result) {
46
+ const parsed = JSON.parse(harvest.result);
47
+ stacks = parsed.stacks ?? [];
48
+ }
49
+ }
50
+ catch {
51
+ stacks = [];
52
+ }
53
+ }
54
+ entryCounter += 1;
55
+ return selectionBuffer.add({
56
+ id: `sel-${Date.now()}-${entryCounter}`,
57
+ device,
58
+ timestamp: Date.now(),
59
+ element: probe.element ?? "Unknown",
60
+ path: probe.path ?? "",
61
+ hierarchy: probe.hierarchy ?? [],
62
+ frame: probe.frame ?? null,
63
+ style: probe.style ?? null,
64
+ stacks,
65
+ });
66
+ }
67
+ export function isSelectionPollerRunning(device) {
68
+ return timers.has(device);
69
+ }
70
+ export function startSelectionPoller(device) {
71
+ if (pollingDisabled() || timers.has(device))
72
+ return;
73
+ const schedule = (delay) => {
74
+ const timer = setTimeout(async () => {
75
+ let active = false;
76
+ try {
77
+ active = await pollOnce(device);
78
+ }
79
+ catch {
80
+ active = false;
81
+ }
82
+ if (timers.has(device)) {
83
+ schedule(active ? ACTIVE_INTERVAL_MS : IDLE_INTERVAL_MS);
84
+ }
85
+ }, delay);
86
+ timer.unref?.();
87
+ timers.set(device, timer);
88
+ };
89
+ schedule(IDLE_INTERVAL_MS);
90
+ }
91
+ export function stopSelectionPoller(device) {
92
+ const timer = timers.get(device);
93
+ if (timer)
94
+ clearTimeout(timer);
95
+ timers.delete(device);
96
+ }
97
+ export function stopAllSelectionPollers() {
98
+ for (const device of [...timers.keys()]) {
99
+ stopSelectionPoller(device);
100
+ }
101
+ }
102
+ //# sourceMappingURL=selectionPoller.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"selectionPoller.js","sourceRoot":"","sources":["../../src/core/selectionPoller.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,18 @@
1
+ export interface StackFrame {
2
+ file: string;
3
+ lineNumber: number;
4
+ column: number;
5
+ methodName: string | null;
6
+ }
7
+ export interface SymbolicatedFrame {
8
+ file: string;
9
+ lineNumber: number;
10
+ column: number;
11
+ methodName: string | null;
12
+ collapse: boolean;
13
+ }
14
+ export declare function clearSymbolicateCache(): void;
15
+ export declare function parseStackString(stack: string, limit?: number): StackFrame[];
16
+ export declare function firstUserFrame(frames: SymbolicatedFrame[]): SymbolicatedFrame | null;
17
+ export declare function symbolicateFrames(frames: StackFrame[], timeoutMs?: number): Promise<SymbolicatedFrame[] | null>;
18
+ //# sourceMappingURL=symbolicate.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"symbolicate.d.ts","sourceRoot":"","sources":["../../src/core/symbolicate.ts"],"names":[],"mappings":"AAAA,MAAM,WAAW,UAAU;IACvB,IAAI,EAAE,MAAM,CAAC;IACb,UAAU,EAAE,MAAM,CAAC;IACnB,MAAM,EAAE,MAAM,CAAC;IACf,UAAU,EAAE,MAAM,GAAG,IAAI,CAAC;CAC7B;AAED,MAAM,WAAW,iBAAiB;IAC9B,IAAI,EAAE,MAAM,CAAC;IACb,UAAU,EAAE,MAAM,CAAC;IACnB,MAAM,EAAE,MAAM,CAAC;IACf,UAAU,EAAE,MAAM,GAAG,IAAI,CAAC;IAC1B,QAAQ,EAAE,OAAO,CAAC;CACrB;AAgBD,wBAAgB,qBAAqB,IAAI,IAAI,CAE5C;AAED,wBAAgB,gBAAgB,CAAC,KAAK,EAAE,MAAM,EAAE,KAAK,SAAI,GAAG,UAAU,EAAE,CAevE;AAED,wBAAgB,cAAc,CAAC,MAAM,EAAE,iBAAiB,EAAE,GAAG,iBAAiB,GAAG,IAAI,CAKpF;AAkBD,wBAAsB,iBAAiB,CACnC,MAAM,EAAE,UAAU,EAAE,EACpB,SAAS,SAAQ,GAClB,OAAO,CAAC,iBAAiB,EAAE,GAAG,IAAI,CAAC,CA0DrC"}
@@ -0,0 +1,119 @@
1
+ // Matches Hermes/V8 frames:
2
+ // " at HomeScreen (http://host:8081/bundle?a=b:342013:64)"
3
+ // " at http://host:8081/bundle:100:5"
4
+ // The file group is greedy so the trailing ":line:col" anchors the match at the
5
+ // end — a lazy group would split on the colon inside "http://".
6
+ const FRAME_RE = /^\s*at\s+(?:(.+?)\s+\()?(.*):(\d+):(\d+)\)?\s*$/;
7
+ const MAX_CACHE_ENTRIES = 500;
8
+ const cache = new Map();
9
+ function cacheKey(frame) {
10
+ return `${frame.file}|${frame.lineNumber}|${frame.column}`;
11
+ }
12
+ export function clearSymbolicateCache() {
13
+ cache.clear();
14
+ }
15
+ export function parseStackString(stack, limit = 5) {
16
+ if (!stack)
17
+ return [];
18
+ const out = [];
19
+ for (const line of stack.split("\n")) {
20
+ if (out.length >= limit)
21
+ break;
22
+ const m = FRAME_RE.exec(line);
23
+ if (!m)
24
+ continue;
25
+ out.push({
26
+ methodName: m[1] ?? null,
27
+ file: m[2],
28
+ lineNumber: Number(m[3]),
29
+ column: Number(m[4]),
30
+ });
31
+ }
32
+ return out;
33
+ }
34
+ export function firstUserFrame(frames) {
35
+ for (const frame of frames) {
36
+ if (!frame.collapse)
37
+ return frame;
38
+ }
39
+ return null;
40
+ }
41
+ /**
42
+ * Metro's /symbolicate endpoint. The `file` values are sent verbatim because
43
+ * Metro matches them against its own bundle registry — rewriting them breaks
44
+ * the lookup. Only the POST target is rewritten: the frames carry the LAN
45
+ * address the device used, while execbro reaches Metro on loopback.
46
+ */
47
+ function symbolicateEndpoint(file) {
48
+ try {
49
+ const url = new URL(file);
50
+ if (url.port)
51
+ return `http://127.0.0.1:${url.port}/symbolicate`;
52
+ return `${url.origin}/symbolicate`;
53
+ }
54
+ catch {
55
+ return "http://127.0.0.1:8081/symbolicate";
56
+ }
57
+ }
58
+ export async function symbolicateFrames(frames, timeoutMs = 10000) {
59
+ if (frames.length === 0)
60
+ return [];
61
+ const results = frames.map((f) => cache.get(cacheKey(f)) ?? null);
62
+ const missingIndexes = [];
63
+ results.forEach((r, i) => {
64
+ if (r === null)
65
+ missingIndexes.push(i);
66
+ });
67
+ if (missingIndexes.length === 0)
68
+ return results;
69
+ const endpoint = symbolicateEndpoint(frames[missingIndexes[0]].file);
70
+ const payload = {
71
+ stack: missingIndexes.map((i) => ({
72
+ file: frames[i].file,
73
+ lineNumber: frames[i].lineNumber,
74
+ column: frames[i].column,
75
+ methodName: frames[i].methodName,
76
+ })),
77
+ };
78
+ const controller = new AbortController();
79
+ const timer = setTimeout(() => controller.abort(), timeoutMs);
80
+ try {
81
+ const res = await fetch(endpoint, {
82
+ method: "POST",
83
+ headers: { "Content-Type": "application/json" },
84
+ body: JSON.stringify(payload),
85
+ signal: controller.signal,
86
+ });
87
+ if (!res.ok)
88
+ return null;
89
+ const body = (await res.json());
90
+ const returned = Array.isArray(body.stack) ? body.stack : [];
91
+ missingIndexes.forEach((target, i) => {
92
+ const raw = returned[i];
93
+ if (!raw)
94
+ return;
95
+ const resolved = {
96
+ file: String(raw.file ?? frames[target].file),
97
+ lineNumber: Number(raw.lineNumber ?? frames[target].lineNumber),
98
+ column: Number(raw.column ?? frames[target].column),
99
+ methodName: raw.methodName ?? null,
100
+ collapse: raw.collapse === true,
101
+ };
102
+ results[target] = resolved;
103
+ if (cache.size >= MAX_CACHE_ENTRIES) {
104
+ const oldest = cache.keys().next().value;
105
+ if (oldest !== undefined)
106
+ cache.delete(oldest);
107
+ }
108
+ cache.set(cacheKey(frames[target]), resolved);
109
+ });
110
+ return results.filter((r) => r !== null);
111
+ }
112
+ catch {
113
+ return null;
114
+ }
115
+ finally {
116
+ clearTimeout(timer);
117
+ }
118
+ }
119
+ //# sourceMappingURL=symbolicate.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"symbolicate.js","sourceRoot":"","sources":["../../src/core/symbolicate.ts"],"names":[],"mappings":"AAeA,4BAA4B;AAC5B,gEAAgE;AAChE,2CAA2C;AAC3C,gFAAgF;AAChF,gEAAgE;AAChE,MAAM,QAAQ,GAAG,iDAAiD,CAAC;AAEnE,MAAM,iBAAiB,GAAG,GAAG,CAAC;AAC9B,MAAM,KAAK,GAAG,IAAI,GAAG,EAA6B,CAAC;AAEnD,SAAS,QAAQ,CAAC,KAAiB;IAC/B,OAAO,GAAG,KAAK,CAAC,IAAI,IAAI,KAAK,CAAC,UAAU,IAAI,KAAK,CAAC,MAAM,EAAE,CAAC;AAC/D,CAAC;AAED,MAAM,UAAU,qBAAqB;IACjC,KAAK,CAAC,KAAK,EAAE,CAAC;AAClB,CAAC;AAED,MAAM,UAAU,gBAAgB,CAAC,KAAa,EAAE,KAAK,GAAG,CAAC;IACrD,IAAI,CAAC,KAAK;QAAE,OAAO,EAAE,CAAC;IACtB,MAAM,GAAG,GAAiB,EAAE,CAAC;IAC7B,KAAK,MAAM,IAAI,IAAI,KAAK,CAAC,KAAK,CAAC,IAAI,CAAC,EAAE,CAAC;QACnC,IAAI,GAAG,CAAC,MAAM,IAAI,KAAK;YAAE,MAAM;QAC/B,MAAM,CAAC,GAAG,QAAQ,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC;QAC9B,IAAI,CAAC,CAAC;YAAE,SAAS;QACjB,GAAG,CAAC,IAAI,CAAC;YACL,UAAU,EAAE,CAAC,CAAC,CAAC,CAAC,IAAI,IAAI;YACxB,IAAI,EAAE,CAAC,CAAC,CAAC,CAAC;YACV,UAAU,EAAE,MAAM,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC;YACxB,MAAM,EAAE,MAAM,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC;SACvB,CAAC,CAAC;IACP,CAAC;IACD,OAAO,GAAG,CAAC;AACf,CAAC;AAED,MAAM,UAAU,cAAc,CAAC,MAA2B;IACtD,KAAK,MAAM,KAAK,IAAI,MAAM,EAAE,CAAC;QACzB,IAAI,CAAC,KAAK,CAAC,QAAQ;YAAE,OAAO,KAAK,CAAC;IACtC,CAAC;IACD,OAAO,IAAI,CAAC;AAChB,CAAC;AAED;;;;;GAKG;AACH,SAAS,mBAAmB,CAAC,IAAY;IACrC,IAAI,CAAC;QACD,MAAM,GAAG,GAAG,IAAI,GAAG,CAAC,IAAI,CAAC,CAAC;QAC1B,IAAI,GAAG,CAAC,IAAI;YAAE,OAAO,oBAAoB,GAAG,CAAC,IAAI,cAAc,CAAC;QAChE,OAAO,GAAG,GAAG,CAAC,MAAM,cAAc,CAAC;IACvC,CAAC;IAAC,MAAM,CAAC;QACL,OAAO,mCAAmC,CAAC;IAC/C,CAAC;AACL,CAAC;AAED,MAAM,CAAC,KAAK,UAAU,iBAAiB,CACnC,MAAoB,EACpB,SAAS,GAAG,KAAK;IAEjB,IAAI,MAAM,CAAC,MAAM,KAAK,CAAC;QAAE,OAAO,EAAE,CAAC;IAEnC,MAAM,OAAO,GAAiC,MAAM,CAAC,GAAG,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,KAAK,CAAC,GAAG,CAAC,QAAQ,CAAC,CAAC,CAAC,CAAC,IAAI,IAAI,CAAC,CAAC;IAChG,MAAM,cAAc,GAAa,EAAE,CAAC;IACpC,OAAO,CAAC,OAAO,CAAC,CAAC,CAAC,EAAE,CAAC,EAAE,EAAE;QACrB,IAAI,CAAC,KAAK,IAAI;YAAE,cAAc,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC;IAC3C,CAAC,CAAC,CAAC;IAEH,IAAI,cAAc,CAAC,MAAM,KAAK,CAAC;QAAE,OAAO,OAA8B,CAAC;IAEvE,MAAM,QAAQ,GAAG,mBAAmB,CAAC,MAAM,CAAC,cAAc,CAAC,CAAC,CAAC,CAAC,CAAC,IAAI,CAAC,CAAC;IACrE,MAAM,OAAO,GAAG;QACZ,KAAK,EAAE,cAAc,CAAC,GAAG,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC;YAC9B,IAAI,EAAE,MAAM,CAAC,CAAC,CAAC,CAAC,IAAI;YACpB,UAAU,EAAE,MAAM,CAAC,CAAC,CAAC,CAAC,UAAU;YAChC,MAAM,EAAE,MAAM,CAAC,CAAC,CAAC,CAAC,MAAM;YACxB,UAAU,EAAE,MAAM,CAAC,CAAC,CAAC,CAAC,UAAU;SACnC,CAAC,CAAC;KACN,CAAC;IAEF,MAAM,UAAU,GAAG,IAAI,eAAe,EAAE,CAAC;IACzC,MAAM,KAAK,GAAG,UAAU,CAAC,GAAG,EAAE,CAAC,UAAU,CAAC,KAAK,EAAE,EAAE,SAAS,CAAC,CAAC;IAC9D,IAAI,CAAC;QACD,MAAM,GAAG,GAAG,MAAM,KAAK,CAAC,QAAQ,EAAE;YAC9B,MAAM,EAAE,MAAM;YACd,OAAO,EAAE,EAAE,cAAc,EAAE,kBAAkB,EAAE;YAC/C,IAAI,EAAE,IAAI,CAAC,SAAS,CAAC,OAAO,CAAC;YAC7B,MAAM,EAAE,UAAU,CAAC,MAAM;SAC5B,CAAC,CAAC;QACH,IAAI,CAAC,GAAG,CAAC,EAAE;YAAE,OAAO,IAAI,CAAC;QACzB,MAAM,IAAI,GAAG,CAAC,MAAM,GAAG,CAAC,IAAI,EAAE,CAA0B,CAAC;QACzD,MAAM,QAAQ,GAAG,KAAK,CAAC,OAAO,CAAC,IAAI,CAAC,KAAK,CAAC,CAAC,CAAC,CAAC,IAAI,CAAC,KAAK,CAAC,CAAC,CAAC,EAAE,CAAC;QAE7D,cAAc,CAAC,OAAO,CAAC,CAAC,MAAM,EAAE,CAAC,EAAE,EAAE;YACjC,MAAM,GAAG,GAAG,QAAQ,CAAC,CAAC,CAAwC,CAAC;YAC/D,IAAI,CAAC,GAAG;gBAAE,OAAO;YACjB,MAAM,QAAQ,GAAsB;gBAChC,IAAI,EAAE,MAAM,CAAC,GAAG,CAAC,IAAI,IAAI,MAAM,CAAC,MAAM,CAAC,CAAC,IAAI,CAAC;gBAC7C,UAAU,EAAE,MAAM,CAAC,GAAG,CAAC,UAAU,IAAI,MAAM,CAAC,MAAM,CAAC,CAAC,UAAU,CAAC;gBAC/D,MAAM,EAAE,MAAM,CAAC,GAAG,CAAC,MAAM,IAAI,MAAM,CAAC,MAAM,CAAC,CAAC,MAAM,CAAC;gBACnD,UAAU,EAAG,GAAG,CAAC,UAA4B,IAAI,IAAI;gBACrD,QAAQ,EAAE,GAAG,CAAC,QAAQ,KAAK,IAAI;aAClC,CAAC;YACF,OAAO,CAAC,MAAM,CAAC,GAAG,QAAQ,CAAC;YAC3B,IAAI,KAAK,CAAC,IAAI,IAAI,iBAAiB,EAAE,CAAC;gBAClC,MAAM,MAAM,GAAG,KAAK,CAAC,IAAI,EAAE,CAAC,IAAI,EAAE,CAAC,KAAK,CAAC;gBACzC,IAAI,MAAM,KAAK,SAAS;oBAAE,KAAK,CAAC,MAAM,CAAC,MAAM,CAAC,CAAC;YACnD,CAAC;YACD,KAAK,CAAC,GAAG,CAAC,QAAQ,CAAC,MAAM,CAAC,MAAM,CAAC,CAAC,EAAE,QAAQ,CAAC,CAAC;QAClD,CAAC,CAAC,CAAC;QAEH,OAAO,OAAO,CAAC,MAAM,CAAC,CAAC,CAAC,EAA0B,EAAE,CAAC,CAAC,KAAK,IAAI,CAAC,CAAC;IACrE,CAAC;IAAC,MAAM,CAAC;QACL,OAAO,IAAI,CAAC;IAChB,CAAC;YAAS,CAAC;QACP,YAAY,CAAC,KAAK,CAAC,CAAC;IACxB,CAAC;AACL,CAAC"}
@@ -1 +1 @@
1
- {"version":3,"file":"componentTools.d.ts","sourceRoot":"","sources":["../../src/tools/componentTools.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,SAAS,EAAE,MAAM,yCAAyC,CAAC;AA4CzE,wBAAgB,sBAAsB,CAAC,MAAM,EAAE,SAAS,GAAG,IAAI,CAy2B9D"}
1
+ {"version":3,"file":"componentTools.d.ts","sourceRoot":"","sources":["../../src/tools/componentTools.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,SAAS,EAAE,MAAM,yCAAyC,CAAC;AAgDzE,wBAAgB,sBAAsB,CAAC,MAAM,EAAE,SAAS,GAAG,IAAI,CAq7B9D"}