react-native-inapp-inspector 2.5.13 → 2.5.15

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 (129) hide show
  1. package/README.md +0 -8
  2. package/android/src/main/java/com/inappinspector/NetworkInspectorModule.kt +118 -31
  3. package/dist/commonjs/components/Inspector/ConsoleExportModal.js +1 -1
  4. package/dist/commonjs/components/Inspector/ConsoleTab.js +7 -7
  5. package/dist/commonjs/components/Inspector/FabLauncher.js +3 -3
  6. package/dist/commonjs/components/Inspector/InspectorHeader.js +30 -30
  7. package/dist/commonjs/components/Inspector/MainScreen.js +38 -75
  8. package/dist/commonjs/components/Inspector/NetworkExportModal.js +4 -4
  9. package/dist/commonjs/components/Inspector/NetworkTab.js +51 -51
  10. package/dist/commonjs/components/Inspector/SecondaryTelemetryStrip.d.ts +1 -0
  11. package/dist/commonjs/components/Inspector/SecondaryTelemetryStrip.js +17 -16
  12. package/dist/commonjs/components/Inspector/SettingsPanel.js +40 -41
  13. package/dist/commonjs/components/Inspector/SkeletonPlaceholder.d.ts +3 -0
  14. package/dist/commonjs/components/Inspector/SkeletonPlaceholder.js +34 -3
  15. package/dist/commonjs/components/Inspector/TabBar.js +9 -15
  16. package/dist/commonjs/components/LogCard.js +7 -7
  17. package/dist/commonjs/components/SkeletonPlaceholder.d.ts +3 -0
  18. package/dist/commonjs/components/SkeletonPlaceholder.js +34 -3
  19. package/dist/commonjs/constants/telemetryConfig.d.ts +3 -3
  20. package/dist/commonjs/constants/telemetryConfig.js +1 -1
  21. package/dist/commonjs/constants/version.d.ts +1 -1
  22. package/dist/commonjs/constants/version.js +1 -1
  23. package/dist/commonjs/helpers/remoteConfig.js +1 -1
  24. package/dist/commonjs/helpers/shareFormatter.js +14 -14
  25. package/dist/commonjs/index.d.ts +1 -1
  26. package/dist/commonjs/index.js +3 -3
  27. package/dist/commonjs/native/NativeInspector.d.ts +2 -0
  28. package/dist/commonjs/native/NativeInspector.js +1 -1
  29. package/dist/commonjs/native/NativeNetworkInspector.d.ts +2 -0
  30. package/dist/commonjs/styles/AppFonts.d.ts +4 -0
  31. package/dist/commonjs/styles/AppFonts.js +1 -1
  32. package/dist/commonjs/styles/index.d.ts +2 -0
  33. package/dist/commonjs/styles/index.js +1 -1
  34. package/dist/commonjs/types/enums.d.ts +0 -2
  35. package/dist/commonjs/types/enums.js +1 -1
  36. package/dist/commonjs/types/interfaces.d.ts +1 -1
  37. package/dist/esm/components/Inspector/ConsoleExportModal.js +1 -1
  38. package/dist/esm/components/Inspector/ConsoleTab.js +48 -48
  39. package/dist/esm/components/Inspector/FabLauncher.js +42 -42
  40. package/dist/esm/components/Inspector/InspectorHeader.js +50 -50
  41. package/dist/esm/components/Inspector/MainScreen.js +87 -124
  42. package/dist/esm/components/Inspector/NetworkExportModal.js +1 -1
  43. package/dist/esm/components/Inspector/NetworkTab.js +83 -83
  44. package/dist/esm/components/Inspector/SecondaryTelemetryStrip.d.ts +1 -0
  45. package/dist/esm/components/Inspector/SecondaryTelemetryStrip.js +23 -22
  46. package/dist/esm/components/Inspector/SettingsPanel.js +106 -107
  47. package/dist/esm/components/Inspector/SkeletonPlaceholder.d.ts +3 -0
  48. package/dist/esm/components/Inspector/SkeletonPlaceholder.js +42 -11
  49. package/dist/esm/components/Inspector/TabBar.js +35 -41
  50. package/dist/esm/components/LogCard.js +53 -53
  51. package/dist/esm/components/SkeletonPlaceholder.d.ts +3 -0
  52. package/dist/esm/components/SkeletonPlaceholder.js +42 -11
  53. package/dist/esm/constants/telemetryConfig.d.ts +3 -3
  54. package/dist/esm/constants/telemetryConfig.js +1 -1
  55. package/dist/esm/constants/version.d.ts +1 -1
  56. package/dist/esm/constants/version.js +1 -1
  57. package/dist/esm/helpers/remoteConfig.js +1 -1
  58. package/dist/esm/helpers/shareFormatter.js +14 -14
  59. package/dist/esm/index.d.ts +1 -1
  60. package/dist/esm/index.js +8 -8
  61. package/dist/esm/native/NativeInspector.d.ts +2 -0
  62. package/dist/esm/native/NativeInspector.js +1 -1
  63. package/dist/esm/native/NativeNetworkInspector.d.ts +2 -0
  64. package/dist/esm/styles/AppFonts.d.ts +4 -0
  65. package/dist/esm/styles/AppFonts.js +1 -1
  66. package/dist/esm/styles/index.d.ts +2 -0
  67. package/dist/esm/styles/index.js +1 -1
  68. package/dist/esm/types/enums.d.ts +0 -2
  69. package/dist/esm/types/enums.js +1 -1
  70. package/dist/esm/types/interfaces.d.ts +1 -1
  71. package/ios/NetworkInspectorModule.mm +288 -325
  72. package/package.json +1 -1
  73. package/src/native/NativeInspector.ts +30 -0
  74. package/src/native/NativeNetworkInspector.ts +2 -0
  75. package/android/.gradle/8.9/checksums/checksums.lock +0 -0
  76. package/android/.gradle/8.9/dependencies-accessors/gc.properties +0 -0
  77. package/android/.gradle/8.9/executionHistory/executionHistory.lock +0 -0
  78. package/android/.gradle/8.9/fileChanges/last-build.bin +0 -0
  79. package/android/.gradle/8.9/fileHashes/fileHashes.lock +0 -0
  80. package/android/.gradle/8.9/gc.properties +0 -0
  81. package/android/.gradle/9.2.0/checksums/checksums.lock +0 -0
  82. package/android/.gradle/9.2.0/fileChanges/last-build.bin +0 -0
  83. package/android/.gradle/9.2.0/fileHashes/fileHashes.bin +0 -0
  84. package/android/.gradle/9.2.0/fileHashes/fileHashes.lock +0 -0
  85. package/android/.gradle/9.2.0/gc.properties +0 -0
  86. package/android/.gradle/buildOutputCleanup/buildOutputCleanup.lock +0 -0
  87. package/android/.gradle/buildOutputCleanup/cache.properties +0 -2
  88. package/android/.gradle/vcs-1/gc.properties +0 -0
  89. package/android/.settings/org.eclipse.buildship.core.prefs +0 -13
  90. package/dist/commonjs/components/Inspector/BoxModelVisualizer.d.ts +0 -8
  91. package/dist/commonjs/components/Inspector/BoxModelVisualizer.js +0 -76
  92. package/dist/commonjs/components/Inspector/DebuggingTab.d.ts +0 -3
  93. package/dist/commonjs/components/Inspector/DebuggingTab.js +0 -197
  94. package/dist/commonjs/components/Inspector/UiA11yAuditPanel.d.ts +0 -7
  95. package/dist/commonjs/components/Inspector/UiA11yAuditPanel.js +0 -97
  96. package/dist/commonjs/components/Inspector/UiInspectorDetail.d.ts +0 -2
  97. package/dist/commonjs/components/Inspector/UiInspectorDetail.js +0 -485
  98. package/dist/commonjs/components/Inspector/UiInspectorOverlay.d.ts +0 -2
  99. package/dist/commonjs/components/Inspector/UiInspectorOverlay.js +0 -199
  100. package/dist/commonjs/components/Inspector/UiInspectorTab.d.ts +0 -2
  101. package/dist/commonjs/components/Inspector/UiInspectorTab.js +0 -117
  102. package/dist/commonjs/components/Inspector/UiLiveStyleTweaker.d.ts +0 -10
  103. package/dist/commonjs/components/Inspector/UiLiveStyleTweaker.js +0 -148
  104. package/dist/commonjs/components/Inspector/index.d.ts +0 -28
  105. package/dist/commonjs/components/Inspector/index.js +0 -1
  106. package/dist/commonjs/customHooks/uiInspectorManager.d.ts +0 -22
  107. package/dist/commonjs/customHooks/uiInspectorManager.js +0 -1
  108. package/dist/commonjs/helpers/uiInspectorEngine.d.ts +0 -62
  109. package/dist/commonjs/helpers/uiInspectorEngine.js +0 -19
  110. package/dist/esm/components/Inspector/BoxModelVisualizer.d.ts +0 -8
  111. package/dist/esm/components/Inspector/BoxModelVisualizer.js +0 -76
  112. package/dist/esm/components/Inspector/DebuggingTab.d.ts +0 -3
  113. package/dist/esm/components/Inspector/DebuggingTab.js +0 -197
  114. package/dist/esm/components/Inspector/UiA11yAuditPanel.d.ts +0 -7
  115. package/dist/esm/components/Inspector/UiA11yAuditPanel.js +0 -97
  116. package/dist/esm/components/Inspector/UiInspectorDetail.d.ts +0 -2
  117. package/dist/esm/components/Inspector/UiInspectorDetail.js +0 -422
  118. package/dist/esm/components/Inspector/UiInspectorOverlay.d.ts +0 -2
  119. package/dist/esm/components/Inspector/UiInspectorOverlay.js +0 -138
  120. package/dist/esm/components/Inspector/UiInspectorTab.d.ts +0 -2
  121. package/dist/esm/components/Inspector/UiInspectorTab.js +0 -117
  122. package/dist/esm/components/Inspector/UiLiveStyleTweaker.d.ts +0 -10
  123. package/dist/esm/components/Inspector/UiLiveStyleTweaker.js +0 -148
  124. package/dist/esm/components/Inspector/index.d.ts +0 -28
  125. package/dist/esm/components/Inspector/index.js +0 -1
  126. package/dist/esm/customHooks/uiInspectorManager.d.ts +0 -22
  127. package/dist/esm/customHooks/uiInspectorManager.js +0 -1
  128. package/dist/esm/helpers/uiInspectorEngine.d.ts +0 -48
  129. package/dist/esm/helpers/uiInspectorEngine.js +0 -19
@@ -1,22 +1,22 @@
1
- import{Alert as L,Share as b}from"react-native";import{writeNativeExportFile as D,shareNativeFile as k}from"../native/NativeInspector";import{formatDateTime as S,getCurlCommand as w}from"./index";function m(e){if(e===void 0)return"undefined";if(e===null)return"null";if(typeof e=="string")return e;try{return JSON.stringify(e,null,2)}catch{return String(e)}}export function formatApiReport(e){const n=(e.method||"GET").toUpperCase(),t=e.status===0?"Failed / Network Error":e.status!=null?`${e.status} ${e.status===200?"OK":""}`.trim():"Pending",a=e.duration!=null?`${e.duration}ms`:"N/A",p=S(e.startTime||Date.now()),s=w(e),i=["\u{1F680} API INSPECTION REPORT","\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501",`\u{1F4CC} Method: ${n}`,`\u{1F4CA} Status: ${t}`,`\u23F1\uFE0F Duration: ${a}`,`\u{1F552} Time: ${p}`];return e.client&&i.push(`\u{1F50C} Client: ${e.client.toUpperCase()}`),i.push(`\u{1F310} URL: ${e.url||"N/A"}`),i.push(""),e.requestHeaders&&Object.keys(e.requestHeaders).length>0&&(i.push("\u{1F4CB} Request Headers:"),i.push(m(e.requestHeaders)),i.push("")),e.request!=null&&e.request!==""&&(i.push("\u{1F4DD} Request Body:"),i.push(m(e.request)),i.push("")),e.responseHeaders&&Object.keys(e.responseHeaders).length>0&&(i.push("\u{1F4D1} Response Headers:"),i.push(m(e.responseHeaders)),i.push("")),e.response!=null&&e.response!==""&&(i.push("\u{1F4E5} Response Data:"),i.push(m(e.response)),i.push("")),s&&(i.push("\u{1F4BB} cURL Command:"),i.push(s),i.push("")),i.push("\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501"),i.push("Generated by React Native InApp Inspector"),i.join(`
2
- `)}export function formatPushReport(e){const n=S(e.timestamp||Date.now()),t=(e.source||"push").toUpperCase(),a=(e.appState||"unknown").toUpperCase(),p=(e.action||"received").toUpperCase(),s=["\u{1F514} PUSH NOTIFICATION REPORT","\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501",`\u{1F4CC} Title: ${e.title||"(No Title)"}`,`\u{1F4DD} Body: ${e.body||"(No Body)"}`,`\u{1F3E2} Source: ${t}${e.domain?` (${e.domain})`:""}`,`\u{1F194} Message ID: ${e.id||"N/A"}`,`\u{1F4F1} App State: ${a}`,`\u{1F3AF} Action: ${p}`,`\u{1F552} Time: ${n}`];return e.subtitle&&s.push(`\u{1F4D1} Subtitle: ${e.subtitle}`),e.channelId&&s.push(`\u{1F3F7}\uFE0F Channel: ${e.channelId}`),e.priority&&s.push(`\u26A1 Priority: ${e.priority}`),e.badge!=null&&s.push(`\u{1F522} Badge: ${e.badge}`),e.sound&&s.push(`\u{1F50A} Sound: ${e.sound}`),e.imageUrl&&s.push(`\u{1F5BC}\uFE0F Image: ${e.imageUrl}`),s.push(""),e.data&&Object.keys(e.data).length>0&&(s.push("\u{1F4E6} Custom Data Payload:"),s.push(m(e.data)),s.push("")),e.customDomainAttributes&&Object.keys(e.customDomainAttributes).length>0&&(s.push("\u{1F3E2} Domain Attributes:"),s.push(m(e.customDomainAttributes)),s.push("")),e.rawPayload!=null&&(s.push("\u2699\uFE0F Raw Payload:"),s.push(m(e.rawPayload)),s.push("")),s.push("\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501"),s.push("Generated by React Native InApp Inspector"),s.join(`
3
- `)}export function formatCrashReport(e){const n=`${e.dateStr||""} ${e.timeStr||""}`.trim()||S(e.timestamp),t=["\u{1F4A5} CRASH REPORT","\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501",`\u26A0\uFE0F Error: ${e.name||"Error"}: ${e.message||"Unknown error"}`,`\u{1F6A8} Fatal: ${e.isFatal?"YES (Fatal)":"NO (Caught)"}`,`\u{1F3F7}\uFE0F Type: ${(e.type||"js").toUpperCase()}`,`\u{1F552} Time: ${n}`];return e.deviceInfo&&t.push(`\u{1F4F1} Platform: ${e.deviceInfo.platform||"N/A"} (OS: ${e.deviceInfo.osVersion||"N/A"}, RN: ${e.deviceInfo.rnVersion||"N/A"})`),e.memoryInfo?.usedJSHeapSize&&t.push(`\u{1F4BE} Used Heap: ${Math.round(e.memoryInfo.usedJSHeapSize/(1024*1024))} MB`),t.push(""),e.stack&&(t.push("\u{1F4DC} Stack Trace:"),t.push(e.stack),t.push("")),e.breadcrumbs&&e.breadcrumbs.length>0&&(t.push(`\u{1F43E} Breadcrumbs (${e.breadcrumbs.length}):`),e.breadcrumbs.slice(-10).forEach(a=>{t.push(` \u2022 [${a.type}] ${a.message} (${S(a.timestamp)})`)}),t.push("")),t.push("\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501"),t.push("Generated by React Native InApp Inspector"),t.join(`
1
+ import{Alert as L,Share as b}from"react-native";import{writeNativeExportFile as D,shareNativeFile as k}from"../native/NativeInspector";import{formatDateTime as S,getCurlCommand as w}from"./index";function m(e){if(e===void 0)return"undefined";if(e===null)return"null";if(typeof e=="string")return e;try{return JSON.stringify(e,null,2)}catch{return String(e)}}export function formatApiReport(e){const n=(e.method||"GET").toUpperCase(),t=e.status===0?"Failed / Network Error":e.status!=null?`${e.status} ${e.status===200?"OK":""}`.trim():"Pending",r=e.duration!=null?`${e.duration}ms`:"N/A",p=S(e.startTime||Date.now()),s=w(e),o=["\u{1F680} API INSPECTION REPORT","\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501",`\u{1F4CC} Method: ${n}`,`\u{1F4CA} Status: ${t}`,`\u23F1\uFE0F Duration: ${r}`,`\u{1F552} Time: ${p}`];return e.client&&o.push(`\u{1F50C} Client: ${e.client.toUpperCase()}`),o.push(`\u{1F310} URL: ${e.url||"N/A"}`),o.push(""),e.requestHeaders&&Object.keys(e.requestHeaders).length>0&&(o.push("\u{1F4CB} Request Headers:"),o.push(m(e.requestHeaders)),o.push("")),e.request!=null&&e.request!==""&&(o.push("\u{1F4DD} Request Body:"),o.push(m(e.request)),o.push("")),e.responseHeaders&&Object.keys(e.responseHeaders).length>0&&(o.push("\u{1F4D1} Response Headers:"),o.push(m(e.responseHeaders)),o.push("")),e.response!=null&&e.response!==""&&(o.push("\u{1F4E5} Response Data:"),o.push(m(e.response)),o.push("")),s&&(o.push("\u{1F4BB} cURL Command:"),o.push(s),o.push("")),o.push("\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501"),o.push("Generated by React Native InApp Inspector"),o.join(`
2
+ `)}export function formatPushReport(e){const n=S(e.timestamp||Date.now()),t=(e.source||"push").toUpperCase(),r=(e.appState||"unknown").toUpperCase(),p=(e.action||"received").toUpperCase(),s=["\u{1F514} PUSH NOTIFICATION REPORT","\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501",`\u{1F4CC} Title: ${e.title||"(No Title)"}`,`\u{1F4DD} Body: ${e.body||"(No Body)"}`,`\u{1F3E2} Source: ${t}${e.domain?` (${e.domain})`:""}`,`\u{1F194} Message ID: ${e.id||"N/A"}`,`\u{1F4F1} App State: ${r}`,`\u{1F3AF} Action: ${p}`,`\u{1F552} Time: ${n}`];return e.subtitle&&s.push(`\u{1F4D1} Subtitle: ${e.subtitle}`),e.channelId&&s.push(`\u{1F3F7}\uFE0F Channel: ${e.channelId}`),e.priority&&s.push(`\u26A1 Priority: ${e.priority}`),e.badge!=null&&s.push(`\u{1F522} Badge: ${e.badge}`),e.sound&&s.push(`\u{1F50A} Sound: ${e.sound}`),e.imageUrl&&s.push(`\u{1F5BC}\uFE0F Image: ${e.imageUrl}`),s.push(""),e.data&&Object.keys(e.data).length>0&&(s.push("\u{1F4E6} Custom Data Payload:"),s.push(m(e.data)),s.push("")),e.customDomainAttributes&&Object.keys(e.customDomainAttributes).length>0&&(s.push("\u{1F3E2} Domain Attributes:"),s.push(m(e.customDomainAttributes)),s.push("")),e.rawPayload!=null&&(s.push("\u2699\uFE0F Raw Payload:"),s.push(m(e.rawPayload)),s.push("")),s.push("\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501"),s.push("Generated by React Native InApp Inspector"),s.join(`
3
+ `)}export function formatCrashReport(e){const n=`${e.dateStr||""} ${e.timeStr||""}`.trim()||S(e.timestamp),t=["\u{1F4A5} CRASH REPORT","\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501",`\u26A0\uFE0F Error: ${e.name||"Error"}: ${e.message||"Unknown error"}`,`\u{1F6A8} Fatal: ${e.isFatal?"YES (Fatal)":"NO (Caught)"}`,`\u{1F3F7}\uFE0F Type: ${(e.type||"js").toUpperCase()}`,`\u{1F552} Time: ${n}`];return e.deviceInfo&&t.push(`\u{1F4F1} Platform: ${e.deviceInfo.platform||"N/A"} (OS: ${e.deviceInfo.osVersion||"N/A"}, RN: ${e.deviceInfo.rnVersion||"N/A"})`),e.memoryInfo?.usedJSHeapSize&&t.push(`\u{1F4BE} Used Heap: ${Math.round(e.memoryInfo.usedJSHeapSize/(1024*1024))} MB`),t.push(""),e.stack&&(t.push("\u{1F4DC} Stack Trace:"),t.push(e.stack),t.push("")),e.breadcrumbs&&e.breadcrumbs.length>0&&(t.push(`\u{1F43E} Breadcrumbs (${e.breadcrumbs.length}):`),e.breadcrumbs.slice(-10).forEach(r=>{t.push(` \u2022 [${r.type}] ${r.message} (${S(r.timestamp)})`)}),t.push("")),t.push("\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501"),t.push("Generated by React Native InApp Inspector"),t.join(`
4
4
  `)}export function formatAnalyticsReport(e){const n=S(e.timestamp),t=["\u{1F4CA} ANALYTICS EVENT REPORT","\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501",`\u{1F4CC} Event Name: ${e.name||"Unknown"}`,`\u{1F3E2} Source: ${(e.source||"manual").toUpperCase()}`,`\u{1F552} Timestamp: ${n}`];return e.screenName&&t.push(`\u{1F4F1} Screen Name: ${e.screenName}`),e.userId&&t.push(`\u{1F464} User ID: ${e.userId}`),e.trackingId&&t.push(`\u{1F194} Tracking ID: ${e.trackingId}`),t.push(""),e.params&&Object.keys(e.params).length>0&&(t.push("\u{1F4E6} Event Parameters:"),t.push(m(e.params)),t.push("")),e.userProperties&&Object.keys(e.userProperties).length>0&&(t.push("\u{1F464} User Properties:"),t.push(m(e.userProperties)),t.push("")),t.push("\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501"),t.push("Generated by React Native InApp Inspector"),t.join(`
5
5
  `)}export function formatReduxReport(e){const n=typeof e.timestamp=="number"?S(e.timestamp):e.timestamp,t=["\u{1F504} REDUX ACTION REPORT","\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501",`\u{1F4CC} Action Type: ${e.type||"UNKNOWN"}`,`\u{1F552} Timestamp: ${n}`];return e.caller&&t.push(`\u{1F4CD} Caller: ${e.caller}`),e.originType&&t.push(`\u2699\uFE0F Origin: ${e.originType}`),e.affectedSlices&&e.affectedSlices.length>0&&t.push(`\u{1F370} Slices: ${e.affectedSlices.join(", ")}`),t.push(""),t.push("\u{1F4E6} Action Payload:"),t.push(m(e.payload)),t.push(""),e.prevState!==void 0&&(t.push("\u23EE\uFE0F Previous State:"),t.push(m(e.prevState)),t.push("")),e.nextState!==void 0&&(t.push("\u23ED\uFE0F Next State:"),t.push(m(e.nextState)),t.push("")),t.push("\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501"),t.push("Generated by React Native InApp Inspector"),t.join(`
6
6
  `)}export function formatLogReport(e){const n=S(e.timestamp),t=["\u{1F4DC} CONSOLE LOG REPORT","\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501",`\u{1F4CC} Level: ${(e.type||"info").toUpperCase()}`,`\u{1F552} Timestamp: ${n}`,`\u{1F4AC} Message: ${e.message||""}`];return e.caller&&t.push(`\u{1F4CD} Caller: ${e.caller}`),t.push(""),e.rawArgs&&e.rawArgs.length>0&&(t.push("\u{1F4E6} Arguments:"),t.push(m(e.rawArgs)),t.push("")),(e.stack||e.errorStack)&&(t.push("\u{1F4DC} Stack Trace:"),t.push(e.stack||e.errorStack||""),t.push("")),t.push("\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501"),t.push("Generated by React Native InApp Inspector"),t.join(`
7
- `)}async function y(e,n,t){try{const a=t||`export_${Date.now()}.txt`,p=await D(a,n);if(p){const s=a.endsWith(".json")?"application/json":(a.endsWith(".log")||a.endsWith(".txt"),"text/plain");if(await k(p,s,e))return}await b.share({title:e,message:n,url:p||void 0},{dialogTitle:e,subject:e})}catch(a){a?.message!=="User did not share"&&L.alert("Share Error",a?.message||"Failed to open share sheet")}}export async function shareApiReport(e){const n=formatApiReport(e),t=`api_${e.id??Date.now()}.txt`,a=`API: ${e.method||"GET"} ${e.url?.substring(0,40)||""}`;await y(a,n,t)}export async function sharePushReport(e){const n=formatPushReport(e),t=`push_${e.id??Date.now()}.txt`,a=`Push: ${e.title||e.id||"Notification"}`;await y(a,n,t)}export async function shareCrashReport(e){const n=formatCrashReport(e),t=`crash_${e.timestamp??Date.now()}.txt`,a=`Crash: ${e.name||e.message||"Error"}`;await y(a,n,t)}export async function shareAnalyticsReport(e){const n=formatAnalyticsReport(e),t=`analytics_${e.id??Date.now()}.txt`,a=`Analytics: ${e.name||"Event"}`;await y(a,n,t)}export async function shareReduxReport(e){const n=formatReduxReport(e),t=`redux_${e.id??Date.now()}.txt`,a=`Redux: ${e.type||"Action"}`;await y(a,n,t)}export async function shareLogReport(e){const n=formatLogReport(e),t=`log_${e.id??Date.now()}.txt`,a=`Log: ${(e.type||"info").toUpperCase()} - ${e.message?.substring(0,30)||""}`;await y(a,n,t)}export function formatSocketReport(e){const n=(e.client||"websocket").toUpperCase(),t=(e.status||"open").toUpperCase(),a=e.duration!=null?`${e.duration}ms`:"Active / Open",p=S(e.startTime||Date.now()),s=["\u{1F50C} WEBSOCKET / SOCKET.IO REPORT","\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501",`\u{1F4E1} Client: ${n}`,`\u{1F310} URL: ${e.url||"N/A"}`,`\u26A1 Status: ${t}`,`\u23F1\uFE0F Connected: ${p}`,`\u23F3 Duration: ${a}`,`\u{1F4E6} Total Frames: ${e.frames?.length||0} (${e.sentCount||0} sent, ${e.receivedCount||0} recvd)`,`\u{1F4CA} Data Size: ${(e.totalBytesSent||0)+(e.totalBytesReceived||0)} bytes`];return e.protocols&&s.push(`\u{1F4DC} Protocols: ${Array.isArray(e.protocols)?e.protocols.join(", "):e.protocols}`),e.closeCode!=null&&s.push(`\u{1F6D1} Close Code: ${e.closeCode} (${e.closeReason||"N/A"})`),e.error&&s.push(`\u274C Error: ${e.error}`),e.caller&&s.push(`\u{1F4CD} Caller: ${e.caller}`),e.query&&Object.keys(e.query).length>0&&(s.push(""),s.push("\u{1F50D} Query Parameters:"),s.push(m(e.query))),e.frames&&e.frames.length>0&&(s.push(""),s.push("\u{1F4AC} Recent Message Frames:"),e.frames.slice(-10).forEach((i,C)=>{const T=i.direction==="send"?"\u2B06\uFE0F SEND":"\u2B07\uFE0F RECV",R=i.eventName?` [${i.eventName}]`:"";s.push(`--- Frame #${C+1} (${T}${R}, ${i.type}, ${i.size||0}B) ---`),s.push(m(i.data))})),s.push(""),s.push("\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501"),s.push("Generated by React Native InApp Inspector"),s.join(`
8
- `)}export async function shareSocketReport(e){const n=formatSocketReport(e),t=`socket_${e.id??Date.now()}.txt`,a=`Socket: ${e.client?.toUpperCase()||"WS"} ${e.url?.substring(0,35)||""}`;await y(a,n,t)}export const DEFAULT_CONSOLE_EXPORT_OPTIONS={includeStackTrace:!1,includeArguments:!1,includeCaller:!1,includeTimestamps:!1,includeAppInfo:!1,includeDuplicates:!1,ignorePattern:""};export function generateConsoleLogsFilename(e="txt"){const n=new Date,t=String(n.getDate()).padStart(2,"0"),a=String(n.getMonth()+1).padStart(2,"0"),p=String(n.getFullYear()).slice(-2),s=Math.random().toString(36).substring(2,8).padEnd(6,"0");return`log_${t}${a}${p}_${s}.${e==="log"?"log":"txt"}`}export function formatConsoleLogsExport(e,n="txt",t=DEFAULT_CONSOLE_EXPORT_OPTIONS){if(!e||e.length===0)return"No console logs to export.";const{includeStackTrace:a=!1,includeArguments:p=!1,includeCaller:s=!1,includeTimestamps:i=!1,includeAppInfo:C=!1,includeDuplicates:T=!1,ignorePattern:R=""}=t;let x=e;if(R&&R.trim().length>0)try{const c=new RegExp(R.trim(),"i");x=e.filter(r=>{const o=r.message||"",f=r.rawArgs?m(r.rawArgs):"",l=r.caller||"";return!c.test(o)&&!c.test(f)&&!c.test(l)})}catch{}if(x.length===0)return"No console logs to export (all filtered out).";const P=new Date().toLocaleString(),d="********************************************************************************",$=[];C&&$.push(`/${d}`,` * \u{1F4DC} CONSOLE LOGS EXPORT (${n.toUpperCase()})`,` * \u{1F552} Exported At: ${P}`,` * \u{1F4CA} Total Logs: ${e.length}`," * \u2699\uFE0F Generator: React Native InApp Inspector",` ${d}/`,"");const O=e.map((c,r)=>{const o=r+1,f=S(c.timestamp),l=(c.type||"info").toUpperCase(),g=T&&c.duplicateCount&&c.duplicateCount>1?` [DUPLICATES: \xD7${c.duplicateCount}]`:"",h=[`/${d}`,` * \u{1F4CC} LOG #${o} Starts [${l}]${i?` - ${f}`:""}${g}`,` ${d}/`];if(s&&c.caller&&h.push(`\u{1F4CD} Caller: ${c.caller}`),i&&h.push(`\u{1F552} Time: ${f}`),h.push(`\u{1F3F7}\uFE0F Level: ${l}`),c.sourceMethod&&c.sourceMethod!==c.type&&h.push(`\u2699\uFE0F Method: console.${c.sourceMethod}()`),h.push(""),h.push("\u{1F4AC} Message:"),h.push(c.message||"(Empty message)"),p&&c.rawArgs&&c.rawArgs.length>0&&(h.push(""),h.push("\u{1F4E6} Arguments / Data:"),h.push(m(c.rawArgs))),a&&(c.stack||c.errorStack)){h.push(""),h.push("\u{1F4DC} Stack Trace & Frames:");const A=(c.stack||c.errorStack||"").split(`
9
- `).map(u=>` ${u}`).join(`
10
- `);h.push(A)}return h.push(""),h.push(`/${d}`),h.push(` * \u{1F3C1} LOG #${o} Ends`),h.push(` ${d}/`),h.join(`
7
+ `)}async function y(e,n,t){try{const r=t||`export_${Date.now()}.txt`,p=await D(r,n);if(p){const s=r.endsWith(".json")?"application/json":(r.endsWith(".log")||r.endsWith(".txt"),"text/plain");if(await k(p,s,e))return}await b.share({title:e,message:n,url:p||void 0},{dialogTitle:e,subject:e})}catch(r){r?.message!=="User did not share"&&L.alert("Share Error",r?.message||"Failed to open share sheet")}}export async function shareApiReport(e){const n=formatApiReport(e),t=`api_${e.id??Date.now()}.txt`,r=`API: ${e.method||"GET"} ${e.url?.substring(0,40)||""}`;await y(r,n,t)}export async function sharePushReport(e){const n=formatPushReport(e),t=`push_${e.id??Date.now()}.txt`,r=`Push: ${e.title||e.id||"Notification"}`;await y(r,n,t)}export async function shareCrashReport(e){const n=formatCrashReport(e),t=`crash_${e.timestamp??Date.now()}.txt`,r=`Crash: ${e.name||e.message||"Error"}`;await y(r,n,t)}export async function shareAnalyticsReport(e){const n=formatAnalyticsReport(e),t=`analytics_${e.id??Date.now()}.txt`,r=`Analytics: ${e.name||"Event"}`;await y(r,n,t)}export async function shareReduxReport(e){const n=formatReduxReport(e),t=`redux_${e.id??Date.now()}.txt`,r=`Redux: ${e.type||"Action"}`;await y(r,n,t)}export async function shareLogReport(e){const n=formatLogReport(e),t=`log_${e.id??Date.now()}.txt`,r=`Log: ${(e.type||"info").toUpperCase()} - ${e.message?.substring(0,30)||""}`;await y(r,n,t)}export function formatSocketReport(e){const n=(e.client||"websocket").toUpperCase(),t=(e.status||"open").toUpperCase(),r=e.duration!=null?`${e.duration}ms`:"Active / Open",p=S(e.startTime||Date.now()),s=["\u{1F50C} WEBSOCKET / SOCKET.IO REPORT","\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501",`\u{1F4E1} Client: ${n}`,`\u{1F310} URL: ${e.url||"N/A"}`,`\u26A1 Status: ${t}`,`\u23F1\uFE0F Connected: ${p}`,`\u23F3 Duration: ${r}`,`\u{1F4E6} Total Frames: ${e.frames?.length||0} (${e.sentCount||0} sent, ${e.receivedCount||0} recvd)`,`\u{1F4CA} Data Size: ${(e.totalBytesSent||0)+(e.totalBytesReceived||0)} bytes`];return e.protocols&&s.push(`\u{1F4DC} Protocols: ${Array.isArray(e.protocols)?e.protocols.join(", "):e.protocols}`),e.closeCode!=null&&s.push(`\u{1F6D1} Close Code: ${e.closeCode} (${e.closeReason||"N/A"})`),e.error&&s.push(`\u274C Error: ${e.error}`),e.caller&&s.push(`\u{1F4CD} Caller: ${e.caller}`),e.query&&Object.keys(e.query).length>0&&(s.push(""),s.push("\u{1F50D} Query Parameters:"),s.push(m(e.query))),e.frames&&e.frames.length>0&&(s.push(""),s.push("\u{1F4AC} Recent Message Frames:"),e.frames.slice(-10).forEach((o,C)=>{const T=o.direction==="send"?"\u2B06\uFE0F SEND":"\u2B07\uFE0F RECV",R=o.eventName?` [${o.eventName}]`:"";s.push(`--- Frame #${C+1} (${T}${R}, ${o.type}, ${o.size||0}B) ---`),s.push(m(o.data))})),s.push(""),s.push("\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501"),s.push("Generated by React Native InApp Inspector"),s.join(`
8
+ `)}export async function shareSocketReport(e){const n=formatSocketReport(e),t=`socket_${e.id??Date.now()}.txt`,r=`Socket: ${e.client?.toUpperCase()||"WS"} ${e.url?.substring(0,35)||""}`;await y(r,n,t)}export const DEFAULT_CONSOLE_EXPORT_OPTIONS={includeStackTrace:!0,includeArguments:!0,includeCaller:!0,includeTimestamps:!0,includeAppInfo:!0,includeDuplicates:!1,ignorePattern:""};export function generateConsoleLogsFilename(e="txt"){const n=new Date,t=String(n.getDate()).padStart(2,"0"),r=String(n.getMonth()+1).padStart(2,"0"),p=String(n.getFullYear()).slice(-2),s=Math.random().toString(36).substring(2,8).padEnd(6,"0");return`log_${t}${r}${p}_${s}.${e==="log"?"log":"txt"}`}export function formatConsoleLogsExport(e,n="txt",t=DEFAULT_CONSOLE_EXPORT_OPTIONS){if(!e||e.length===0)return"No console logs to export.";const{includeStackTrace:r=!0,includeArguments:p=!0,includeCaller:s=!0,includeTimestamps:o=!0,includeAppInfo:C=!0,includeDuplicates:T=!1,ignorePattern:R=""}=t;let x=e;if(R&&R.trim().length>0)try{const c=new RegExp(R.trim(),"i");x=e.filter(a=>{const u=a.message||"",d=a.rawArgs?m(a.rawArgs):"",l=a.caller||"";return!c.test(u)&&!c.test(d)&&!c.test(l)})}catch{}if(x.length===0)return"No console logs to export (all filtered out).";const P=new Date().toLocaleString(),$="********************************************************************************",f=[];C&&f.push(`/${$}`,` * \u{1F4DC} CONSOLE LOGS EXPORT (${n.toUpperCase()})`,` * \u{1F552} Exported At: ${P}`,` * \u{1F4CA} Total Logs: ${e.length}`," * \u2699\uFE0F Generator: React Native InApp Inspector",` ${$}/`,"");const O=e.map((c,a)=>{const u=a+1,d=S(c.timestamp),l=(c.type||"info").toUpperCase(),g=T&&c.duplicateCount&&c.duplicateCount>1?` [DUPLICATES: \xD7${c.duplicateCount}]`:"",h=[`/${$}`,` * \u{1F4CC} LOG #${u} Starts [${l}]${o?` - ${d}`:""}${g}`,` ${$}/`];if(s&&c.caller&&h.push(`\u{1F4CD} Caller: ${c.caller}`),o&&h.push(`\u{1F552} Time: ${d}`),h.push(`\u{1F3F7}\uFE0F Level: ${l}`),c.sourceMethod&&c.sourceMethod!==c.type&&h.push(`\u2699\uFE0F Method: console.${c.sourceMethod}()`),h.push(""),h.push("\u{1F4AC} Message:"),h.push(c.message||"(Empty message)"),p&&c.rawArgs&&c.rawArgs.length>0&&(h.push(""),h.push("\u{1F4E6} Arguments / Data:"),h.push(m(c.rawArgs))),r&&(c.stack||c.errorStack)){h.push(""),h.push("\u{1F4DC} Stack Trace & Frames:");const A=(c.stack||c.errorStack||"").split(`
9
+ `).map(i=>` ${i}`).join(`
10
+ `);h.push(A)}return h.push(""),h.push(`/${$}`),h.push(` * \u{1F3C1} LOG #${u} Ends`),h.push(` ${$}/`),h.join(`
11
11
  `)}).join(`
12
12
 
13
- `),I=C?["",`/${d}`," * \u{1F3C1} END OF CONSOLE LOGS EXPORT",` ${d}/`].join(`
14
- `):"";return`${$.join(`
15
- `)}${O}${I}`}export function estimateConsoleLogsExportSize(e,n="txt",t=DEFAULT_CONSOLE_EXPORT_OPTIONS){if(!e||e.length===0)return 0;const a=Math.min(e.length,20),p=e.slice(0,a),i=formatConsoleLogsExport(p,n,t).length/a;return Math.round(i*e.length)}export async function shareConsoleLogs(e,n="txt",t=DEFAULT_CONSOLE_EXPORT_OPTIONS,a){const p=formatConsoleLogsExport(e,n,t),s=generateConsoleLogsFilename(n);await y(a||s,p,s)}export const DEFAULT_NETWORK_EXPORT_OPTIONS={includeRequestHeaders:!1,includeRequestBody:!1,includeResponseHeaders:!1,includeResponseBody:!1,includeCurlCommand:!1,includeTimestamps:!1,includeAppInfo:!1,ignorePattern:""};export function generateNetworkLogsFilename(e="txt"){const n=new Date,t=String(n.getDate()).padStart(2,"0"),a=String(n.getMonth()+1).padStart(2,"0"),p=String(n.getFullYear()).slice(-2),s=Math.random().toString(36).substring(2,8).padEnd(6,"0");return`api_${t}${a}${p}_${s}.${e==="log"?"log":"txt"}`}export function formatNetworkLogsExport(e,n="txt",t=DEFAULT_NETWORK_EXPORT_OPTIONS){if(!e||e.length===0)return"No API requests to export.";const{includeRequestHeaders:a=!1,includeRequestBody:p=!1,includeResponseHeaders:s=!1,includeResponseBody:i=!1,includeCurlCommand:C=!1,includeTimestamps:T=!1,includeAppInfo:R=!1,ignorePattern:x=""}=t;let N=e;if(x&&x.trim().length>0)try{const r=new RegExp(x.trim(),"i");N=e.filter(o=>{const f=o.url||"",l=o.method||"",g=o.client||"",h=o.request?m(o.request):"",A=o.response?m(o.response):"",u=o.requestHeaders?m(o.requestHeaders):"",E=o.responseHeaders?m(o.responseHeaders):"";return!r.test(f)&&!r.test(l)&&!r.test(g)&&!r.test(h)&&!r.test(A)&&!r.test(u)&&!r.test(E)})}catch{}if(N.length===0)return"No API requests to export (all filtered out).";const d=new Date().toLocaleString(),$="********************************************************************************";if(n==="json"){const r=N.map((o,f)=>{const l={index:f+1,id:o.id,url:o.url,method:(o.method||"GET").toUpperCase(),status:o.status,duration:o.duration,startTime:o.startTime,client:o.client};return a&&o.requestHeaders&&(l.requestHeaders=o.requestHeaders),p&&o.request!=null&&(l.request=o.request),s&&o.responseHeaders&&(l.responseHeaders=o.responseHeaders),i&&o.response!=null&&(l.response=o.response),C&&(l.curl=w(o)),l});return JSON.stringify(r,null,2)}if(n==="curl"){const r=["#!/usr/bin/env bash","# ============================================================================== ","# \u{1F680} API Network Logs - cURL Script Export",`# \u{1F552} Exported At: ${d}`,`# \u{1F4CA} Total Commands: ${N.length}`,"# \u2699\uFE0F Generator: React Native InApp Inspector",`# ==============================================================================
16
- `];return N.forEach((o,f)=>{const l=f+1,g=(o.method||"GET").toUpperCase(),h=o.status===0?"Failed / Error":o.status!=null?String(o.status):"Pending",A=o.duration!=null?`${o.duration}ms`:"N/A",u=S(o.startTime||Date.now());r.push(`# Request #${l}: [${g}] ${o.url||"N/A"} (Status: ${h}, ${A}, ${u})`);const E=w(o);E?r.push(E):r.push(`curl -X ${g} "${o.url||""}"`),r.push("")}),r.join(`
17
- `)}const O=[];R&&O.push(`/${$}`,` * \u{1F680} API NETWORK LOGS EXPORT (${n.toUpperCase()})`,` * \u{1F552} Exported At: ${d}`,` * \u{1F4CA} Total Requests: ${N.length}`," * \u2699\uFE0F Generator: React Native InApp Inspector",` ${$}/`,"");const I=N.map((r,o)=>{const f=o+1,l=S(r.startTime||Date.now()),g=(r.method||"GET").toUpperCase(),h=r.status===0?"Failed / Network Error":r.status!=null?`${r.status} ${r.status===200?"OK":""}`.trim():"Pending",A=r.duration!=null?`${r.duration}ms`:"N/A",u=[`/${$}`,` * \u{1F4CC} REQUEST #${f} Starts [${g}] [${h}] [${A}]${T?` - ${l}`:""}`,` ${$}/`];if(u.push(`\u{1F310} URL: ${r.url||"N/A"}`),u.push(`\u{1F4CC} Method: ${g}`),u.push(`\u{1F4CA} Status: ${h}`),u.push(`\u23F1\uFE0F Duration: ${A}`),T&&u.push(`\u{1F552} Time: ${l}`),r.client&&u.push(`\u{1F50C} Client: ${r.client.toUpperCase()}`),a&&r.requestHeaders&&Object.keys(r.requestHeaders).length>0&&(u.push(""),u.push("\u{1F4CB} Request Headers:"),u.push(m(r.requestHeaders))),p&&r.request!=null&&r.request!==""&&(u.push(""),u.push("\u{1F4DD} Request Body:"),u.push(m(r.request))),s&&r.responseHeaders&&Object.keys(r.responseHeaders).length>0&&(u.push(""),u.push("\u{1F4D1} Response Headers:"),u.push(m(r.responseHeaders))),i&&r.response!=null&&r.response!==""&&(u.push(""),u.push("\u{1F4E5} Response Data:"),u.push(m(r.response))),C){const E=w(r);E&&(u.push(""),u.push("\u{1F4BB} cURL Command:"),u.push(E))}return u.push(""),u.push(`/${$}`),u.push(` * \u{1F3C1} REQUEST #${f} Ends`),u.push(` ${$}/`),u.join(`
13
+ `),I=C?["",`/${$}`," * \u{1F3C1} END OF CONSOLE LOGS EXPORT",` ${$}/`].join(`
14
+ `):"";return`${f.join(`
15
+ `)}${O}${I}`}export function estimateConsoleLogsExportSize(e,n="txt",t=DEFAULT_CONSOLE_EXPORT_OPTIONS){if(!e||e.length===0)return 0;const r=Math.min(e.length,20),p=e.slice(0,r),o=formatConsoleLogsExport(p,n,t).length/r;return Math.round(o*e.length)}export async function shareConsoleLogs(e,n="txt",t=DEFAULT_CONSOLE_EXPORT_OPTIONS,r){const p=formatConsoleLogsExport(e,n,t),s=generateConsoleLogsFilename(n);await y(r||s,p,s)}export const DEFAULT_NETWORK_EXPORT_OPTIONS={includeRequestHeaders:!0,includeRequestBody:!0,includeResponseHeaders:!0,includeResponseBody:!0,includeCurlCommand:!0,includeTimestamps:!0,includeAppInfo:!0,ignorePattern:""};export function generateNetworkLogsFilename(e="txt"){const n=new Date,t=String(n.getDate()).padStart(2,"0"),r=String(n.getMonth()+1).padStart(2,"0"),p=String(n.getFullYear()).slice(-2),s=Math.random().toString(36).substring(2,8).padEnd(6,"0");return`api_${t}${r}${p}_${s}.${e==="log"?"log":"txt"}`}export function formatNetworkLogsExport(e,n="txt",t=DEFAULT_NETWORK_EXPORT_OPTIONS){if(!e||e.length===0)return"No API requests to export.";const{includeRequestHeaders:r=!0,includeRequestBody:p=!0,includeResponseHeaders:s=!0,includeResponseBody:o=!0,includeCurlCommand:C=!0,includeTimestamps:T=!0,includeAppInfo:R=!0,ignorePattern:x=""}=t;let N=e;if(x&&x.trim().length>0)try{const a=new RegExp(x.trim(),"i");N=e.filter(u=>{const d=u.url||"",l=u.method||"",g=u.client||"",h=u.request?m(u.request):"",A=u.response?m(u.response):"",i=u.requestHeaders?m(u.requestHeaders):"",E=u.responseHeaders?m(u.responseHeaders):"";return!a.test(d)&&!a.test(l)&&!a.test(g)&&!a.test(h)&&!a.test(A)&&!a.test(i)&&!a.test(E)})}catch{}if(N.length===0)return"No API requests to export (all filtered out).";const $=new Date().toLocaleString(),f="********************************************************************************";if(n==="json"){const a=N.map((u,d)=>{const l={index:d+1,id:u.id,url:u.url,method:(u.method||"GET").toUpperCase(),status:u.status,duration:u.duration,startTime:u.startTime,client:u.client};return r&&u.requestHeaders&&(l.requestHeaders=u.requestHeaders),p&&u.request!=null&&(l.request=u.request),s&&u.responseHeaders&&(l.responseHeaders=u.responseHeaders),o&&u.response!=null&&(l.response=u.response),C&&(l.curl=w(u)),l});return JSON.stringify(a,null,2)}if(n==="curl"){const a=["#!/usr/bin/env bash","# ============================================================================== ","# \u{1F680} API Network Logs - cURL Script Export",`# \u{1F552} Exported At: ${$}`,`# \u{1F4CA} Total Commands: ${N.length}`,"# \u2699\uFE0F Generator: React Native InApp Inspector",`# ==============================================================================
16
+ `];return N.forEach((u,d)=>{const l=d+1,g=(u.method||"GET").toUpperCase(),h=u.status===0?"Failed / Error":u.status!=null?String(u.status):"Pending",A=u.duration!=null?`${u.duration}ms`:"N/A",i=S(u.startTime||Date.now());a.push(`# Request #${l}: [${g}] ${u.url||"N/A"} (Status: ${h}, ${A}, ${i})`);const E=w(u);E?a.push(E):a.push(`curl -X ${g} "${u.url||""}"`),a.push("")}),a.join(`
17
+ `)}const O=[];R&&O.push(`/${f}`,` * \u{1F680} API NETWORK LOGS EXPORT (${n.toUpperCase()})`,` * \u{1F552} Exported At: ${$}`,` * \u{1F4CA} Total Requests: ${N.length}`," * \u2699\uFE0F Generator: React Native InApp Inspector",` ${f}/`,"");const I=N.map((a,u)=>{const d=u+1,l=S(a.startTime||Date.now()),g=(a.method||"GET").toUpperCase(),h=a.status===0?"Failed / Network Error":a.status!=null?`${a.status} ${a.status===200?"OK":""}`.trim():"Pending",A=a.duration!=null?`${a.duration}ms`:"N/A",i=[`/${f}`,` * \u{1F4CC} REQUEST #${d} Starts [${g}] [${h}] [${A}]${T?` - ${l}`:""}`,` ${f}/`];if(i.push(`\u{1F310} URL: ${a.url||"N/A"}`),i.push(`\u{1F4CC} Method: ${g}`),i.push(`\u{1F4CA} Status: ${h}`),i.push(`\u23F1\uFE0F Duration: ${A}`),T&&i.push(`\u{1F552} Time: ${l}`),a.client&&i.push(`\u{1F50C} Client: ${a.client.toUpperCase()}`),r&&a.requestHeaders&&Object.keys(a.requestHeaders).length>0&&(i.push(""),i.push("\u{1F4CB} Request Headers:"),i.push(m(a.requestHeaders))),p&&a.request!=null&&a.request!==""&&(i.push(""),i.push("\u{1F4DD} Request Body:"),i.push(m(a.request))),s&&a.responseHeaders&&Object.keys(a.responseHeaders).length>0&&(i.push(""),i.push("\u{1F4D1} Response Headers:"),i.push(m(a.responseHeaders))),o&&a.response!=null&&a.response!==""&&(i.push(""),i.push("\u{1F4E5} Response Data:"),i.push(m(a.response))),C){const E=w(a);E&&(i.push(""),i.push("\u{1F4BB} cURL Command:"),i.push(E))}return i.push(""),i.push(`/${f}`),i.push(` * \u{1F3C1} REQUEST #${d} Ends`),i.push(` ${f}/`),i.join(`
18
18
  `)}).join(`
19
19
 
20
- `),c=R?["",`/${$}`," * \u{1F3C1} END OF API NETWORK LOGS EXPORT",` ${$}/`].join(`
20
+ `),c=R?["",`/${f}`," * \u{1F3C1} END OF API NETWORK LOGS EXPORT",` ${f}/`].join(`
21
21
  `):"";return`${O.join(`
22
- `)}${I}${c}`}export function estimateNetworkLogsExportSize(e,n="txt",t=DEFAULT_NETWORK_EXPORT_OPTIONS){if(!e||e.length===0)return 0;const a=Math.min(e.length,10),p=e.slice(0,a),i=formatNetworkLogsExport(p,n,t).length/a;return Math.round(i*e.length)}export async function shareNetworkLogs(e,n="txt",t=DEFAULT_NETWORK_EXPORT_OPTIONS,a){const p=formatNetworkLogsExport(e,n,t),s=generateNetworkLogsFilename(n);await y(a||s,p,s)}
22
+ `)}${I}${c}`}export function estimateNetworkLogsExportSize(e,n="txt",t=DEFAULT_NETWORK_EXPORT_OPTIONS){if(!e||e.length===0)return 0;const r=Math.min(e.length,10),p=e.slice(0,r),o=formatNetworkLogsExport(p,n,t).length/r;return Math.round(o*e.length)}export async function shareNetworkLogs(e,n="txt",t=DEFAULT_NETWORK_EXPORT_OPTIONS,r){const p=formatNetworkLogsExport(e,n,t),s=generateNetworkLogsFilename(n);await y(r||s,p,s)}
@@ -13,7 +13,7 @@ export { default as GlobalCrashScreenModal } from './components/Inspector/Global
13
13
  export { connectReduxStore, inspectorReduxMiddleware, getReduxState, subscribeReduxState, getActionHistory, clearActionHistory, getLastActionForReducer, setMaxReduxHistoryLimit, getMaxReduxHistoryLimit, pruneReduxHistory, isReduxConnected, } from './customHooks/reduxLogger';
14
14
  export { getEventCategory, registerGAPlugin, type GAPlugin, } from './helpers/gaAnalyticsRegistry';
15
15
  export { InspectLog, InspectTrackTime, InspectCatch, type InspectLogOptions, } from './decorators';
16
- export { getNativeDeviceMetrics, enableNativeCrashProtection, subscribeNativeCrashes, showNativeFloatingButton, hideNativeFloatingButton, setNativeFloatingButtonBadge, subscribeNativeFloatingButtonPress, subscribeNativeDeviceShake, startNativeFpsMonitoring, stopNativeFpsMonitoring, getNativeFpsMetrics, getNativeStorageItem, setNativeStorageItem, isNativeModuleAvailable, type NativeDeviceMetrics, type NativeCrashEvent, type FloatingButtonOptions, type NativeFpsMetrics, } from './native/NativeInspector';
16
+ export { getNativeDeviceMetrics, enableNativeCrashProtection, getLastNativeCrash, clearLastNativeCrash, subscribeNativeCrashes, showNativeFloatingButton, hideNativeFloatingButton, setNativeFloatingButtonBadge, subscribeNativeFloatingButtonPress, subscribeNativeDeviceShake, startNativeFpsMonitoring, stopNativeFpsMonitoring, getNativeFpsMetrics, getNativeStorageItem, setNativeStorageItem, isNativeModuleAvailable, type NativeDeviceMetrics, type NativeCrashEvent, type FloatingButtonOptions, type NativeFpsMetrics, } from './native/NativeInspector';
17
17
  export { setupMemoryWarningHandler, pruneAllLogs, subscribeMemoryWarning, type MemoryPruneSummary, } from './helpers';
18
18
  export { recordPushNotification, recordSalesforcePush, getPushRecords, clearPushRecords, subscribePushEvents, simulateTestPush, autoSetupPushLogger, setMaxPushRecordsLimit, getDiscoveredPushSources, prunePushRecords, } from './customHooks/pushNotificationLogger';
19
19
  export { setupSocketLogger, clearSocketRecords, subscribeSocketRecords, getSocketRecords, setSocketModuleEnabled, getSocketModuleEnabled, setMaxSocketRecordsLimit, getMaxSocketRecordsLimit, pruneSocketRecords, recordSocketConnection, recordSocketFrame, recordSocketClose, recordSocketError, simulateTestSocket, analyzeSocketPayload, } from './customHooks/socketLogger';
package/dist/esm/index.js CHANGED
@@ -1,8 +1,8 @@
1
- import Ms,{useEffect as l,useMemo as h,useRef as C,useState as o,useCallback as M}from"react";import{Alert as An,Animated as f,Easing as wo,PanResponder as Mn,Platform as Ns,UIManager as Nn,LogBox as bo}from"react-native";import{NavigationContext as Tn}from"@react-navigation/native";import{I18nextProvider as En,i18n as vn,setLanguage as Pn,getLanguage as kn,useTranslation as In}from"./i18n";import Dn from"./components/ErrorBoundary";import Fn from"./components/Inspector/MainScreen";import On from"./components/Inspector/GlobalCrashScreenModal";import{InspectorContext as _n,animateNextLayout as Bn}from"./components/Inspector/InspectorContext";import{formatDisplayUrl as Vn,getNavigationInfo as Ro,getLogPageName as Ts,deduplicateLogs as Es,getDomainColor as Ao,getEventCategory as Un,matchNetworkLogQuery as qn,scoreNetworkLogQuery as Hn,setupMemoryWarningHandler as Wn,isUrlHidden as Gn}from"./helpers";import{loadSettings as zn,saveSettings as jn,setCustomStorage as Jn,clearPersistedSettings as $n,calculateRamBasedLimits as Mo}from"./helpers/settingsStore";import{getNativeSystemMetrics as Qn,pushNativeLogRecord as Ge,fetchNativeCachedPage as Xn}from"./native/NativeInspector";import{setupNetworkLogger as Yn,clearNetworkLogs as vs,subscribeNetworkLogs as Zn,getNetworkLogs as Kn,setNetworkModuleEnabled as ea,setMaxNetworkLogsLimit as ta,setRouteInfoProvider as No}from"./customHooks/networkLogger";import{setupConsoleLogger as sa,clearConsoleLogs as To,subscribeConsoleLogs as ra,setConsoleModuleEnabled as oa}from"./customHooks/consoleLogger";import{IGNORED_LOG_PREFIXES as Ne}from"./customHooks/logFilters";import{setupGlobalCrashHandler as na,subscribeCrashEvents as aa,getCrashRecords as Ot,clearCrashRecords as Eo,setMaxCrashLogsLimit as vo,setCrashModuleEnabled as ia,DEFAULT_CRASH_IGNORED_TYPES as Po,setCrashIgnoredTypesConfig as la,setCrashModalTriggerPolicyConfig as ca,applyCrashPolicyPreset as ua}from"./customHooks/crashHandler";import{subscribePushEvents as fa,getPushRecords as da,clearPushRecords as pa,setMaxPushRecordsLimit as ma,simulateTestPush as ha}from"./customHooks/pushNotificationLogger";import{setupSocketLogger as ga,clearSocketRecords as Sa,subscribeSocketRecords as ya,getSocketRecords as Ca,setSocketModuleEnabled as La,setMaxSocketRecordsLimit as xa,simulateTestSocket as wa,setSocketRouteInfoProvider as ko,deleteSocketRecord as ba,deleteMultipleSocketRecords as Ra}from"./customHooks/socketLogger";import{trackActiveTelemetryHeartbeat as Aa,setTelemetryEnabled as Io,trackInspectorTabView as Do,trackInspectorScreenView as Ma}from"./helpers/telemetry";import{subscribeAnalyticsEvents as Na,clearAnalyticsEvents as Fo,autoSetupAnalyticsLogger as Ta,isAnalyticsConnected as Ps,setAnalyticsModuleEnabled as Ea}from"./customHooks/analyticsLogger";import{getReduxState as ks,subscribeReduxState as va,setReduxAutoRefresh as Pa,getLastActionForReducer as Is,clearActionHistory as ka,isReduxConnected as Ds,setReduxModuleEnabled as Ia}from"./customHooks/reduxLogger";import{hideNativeFloatingButton as Te,subscribeNativeFloatingButtonPress as Da,subscribeNativeDeviceShake as Fa,isNativeModuleAvailable as Oa}from"./native/NativeInspector";import{fetchRemoteConfigSettings as _a}from"./helpers/remoteConfig";import{ScreenCapture as Ba}from"./capture";import{LIB_VERSION as Va,DEFAULT_HIDDEN_URL_PATTERNS as Fs}from"./constants";import{toggleGlobalTheme as Oo}from"./styles";const Ua=({enabled:k=!0,storage:W,navigationRef:E,appIcon:_s,environment:Bs,initialVisible:_o=!1,visible:ze,remoteConfig:je=!1,captureWidgetEnabled:Bo})=>{Jn(W||null);const{t:m}=In(),[Je,_t]=o(!1),[Vs,$e]=o(null),[Us,Qe]=o({}),[Xe,Bt]=o(90),[Ye,Vt]=o("slide"),[b,te]=o([]),[g,G]=o(ze??_o??!1),[qs,Ut]=o(!1),[qt,Hs]=o(!1),Vo=M(()=>{Ut(!0),G(!1)},[]),Uo=M(()=>{Hs(!0),G(!1),Te().catch(()=>{})},[]);l(()=>{ze!==void 0&&G(ze)},[ze]);const[Ws,Gs]=o(!1),[y,Ht]=o(null),[Ze,Ee]=o(new Set),[Ke,le]=o(new Set),[zs,I]=o({visible:!1,title:"",message:"",onConfirm:()=>{}}),[L,js]=o(""),[ce,qo]=o("all"),[ue,Ho]=o(!1),[fe,Wo]=o(!1),[de,Wt]=o(!0),[se,Gt]=o(()=>[...Fs]),[D,Go]=o("all"),[Js,zt]=o(""),[$s,zo]=o(""),[Qs,jt]=o(null),[Xs,Jt]=o(null),[Ys,jo]=o("state"),[Zs,Ks]=o("response");l(()=>(bo.ignoreAllLogs(k),()=>{bo.ignoreAllLogs(!1)}),[k]),l(()=>{y&&(Ks("response"),zt(""))},[y]);const[re,$t]=o(new Set),[oe,Qt]=o(new Set),[pe,Jo]=o("all"),[ve,$o]=o("all"),[me,Qo]=o("time_desc"),[er,Xt]=o({}),[Yt,et]=o(()=>new Map),[tr,tt]=o({}),[sr,Xo]=o(!0),[st,Yo]=o("newest"),[rt,Zo]=o("newest"),[rr,or]=o(!0),[nr,ar]=o(!0),[ir,lr]=o(!1),[cr,ur]=o(!1),[u,z]=o("apis"),[ot,he]=o([]),[ne,ae]=o([]),Zt=C([]),Kt=C([]),es=C([]),[fr,ts]=o(null),[dr,pr]=o(0),[mr,hr]=o(0),[gr,Sr]=o(0),[yr,Cr]=o(0),[Lr,Ko]=o(null),nt=M(async()=>{try{const t=await Ba.getMediaList(),e=t?t.length:0;return Cr(e),e}catch{return Cr(0),0}},[]);l(()=>{g&&nt()},[g,nt]);const[Pe,j]=o(()=>Ot()),[xr,ie]=o(null),[ss,ke]=o(null),[J,at]=o(50),[ge,rs]=o(()=>({...Po})),[Se,wr]=o("fatal_only");l(()=>{vo(J)},[J]),l(()=>{la(ge)},[ge]),l(()=>{ca(Se)},[Se]);const br=M(t=>{const e=ua(t);rs(e)},[]);l(()=>{g&&(u==="apis"&&hr(b.length),u==="logs"&&pr(ne.length),u==="crash"&&Sr(Pe.length))},[g]),l(()=>{u==="apis"&&hr(b.length)},[u,b.length]),l(()=>{u==="logs"&&pr(ne.length)},[u,ne.length]),l(()=>{u==="crash"&&Sr(Pe.length)},[u,Pe.length]);const[$,Rr]=o(()=>da()),[Ar,Mr]=o(null),[Ie,en]=o(""),[q,tn]=o("all"),[it,sn]=o(0),[lt,os]=o(50);l(()=>{ma(lt)},[lt]),l(()=>fa(e=>{Rr(e)}),[]);const Nr=h(()=>u==="push"?0:Math.max(0,$.length-it),[u,$.length,it]);l(()=>{g&&u==="push"&&sn($.length)},[g,u,$.length]);const Tr=h(()=>{let t=$;if(q!=="all"){if(q==="foreground")t=t.filter(e=>(e.appState||"").toLowerCase()==="foreground");else if(q==="background")t=t.filter(e=>(e.appState||"").toLowerCase()==="background");else if(q==="opened")t=t.filter(e=>e.action==="opened");else if(q.startsWith("source:")){const e=q.replace("source:","").toLowerCase();t=t.filter(s=>(s.source||"").toLowerCase()===e)}}if(Ie.trim()){const e=Ie.trim().toLowerCase();t=t.filter(s=>!!(s.title&&s.title.toLowerCase().includes(e)||s.body&&s.body.toLowerCase().includes(e)||s.id&&s.id.toLowerCase().includes(e)||s.source&&s.source.toLowerCase().includes(e)||s.domain&&s.domain.toLowerCase().includes(e)||s.channelId&&s.channelId.toLowerCase().includes(e)||s.data&&JSON.stringify(s.data).toLowerCase().includes(e)))}return t},[$,q,Ie]),[Q,ct]=o(()=>Ca()),[De,ye]=o(null),[Fe,rn]=o(""),[O,on]=o("all"),[ut,nn]=o(0),[ft,an]=o(50);l(()=>{xa(ft)},[ft]),l(()=>ya(e=>{ct(e)}),[]);const Er=h(()=>u==="socket"?0:Math.max(0,Q.length-ut),[u,Q.length,ut]);l(()=>{g&&u==="socket"&&nn(Q.length)},[g,u,Q.length]);const vr=h(()=>{let t=Q;if(O!=="all"&&(O==="open"?t=t.filter(e=>(e.status||"open").toLowerCase()==="open"):O==="closed"?t=t.filter(e=>(e.status||"").toLowerCase()==="closed"):O==="error"?t=t.filter(e=>(e.status||"").toLowerCase()==="error"):O==="sio"?t=t.filter(e=>e.client==="socket.io"||e.url.includes("/socket.io")):O==="wss"?t=t.filter(e=>e.url.startsWith("wss://")):O==="ws"&&(t=t.filter(e=>e.url.startsWith("ws://")))),Fe.trim()){const e=Fe.trim().toLowerCase();t=t.filter(s=>!!(s.url&&s.url.toLowerCase().includes(e)||s.id&&s.id.toLowerCase().includes(e)||s.client&&s.client.toLowerCase().includes(e)||s.caller&&s.caller.toLowerCase().includes(e)||s.query&&JSON.stringify(s.query).toLowerCase().includes(e)||s.frames&&s.frames.some(r=>!!(r.eventName&&r.eventName.toLowerCase().includes(e)||typeof r.data=="string"&&r.data.toLowerCase().includes(e)||r.data&&typeof r.data=="object"&&JSON.stringify(r.data).toLowerCase().includes(e)))))}return t},[Q,O,Fe]),[Ce,dt]=o(300),[X,ns]=o({info:!0,warn:!0,error:!0}),Y=h(()=>ne.filter(e=>{const s=e.type;if(s==="info"&&!X?.info||s==="warn"&&!X?.warn||s==="error"&&!X?.error)return!1;const r=e.message||"";return![...Ne&&Ne.info||[],...Ne&&Ne.warn||[],...Ne&&Ne.error||[]].filter(p=>typeof p=="string"&&p.trim().length>0).some(p=>r.toLowerCase().trim().startsWith(p.toLowerCase().trim())||r.toLowerCase().trim().includes(p.toLowerCase().trim()))}).slice(0,Ce),[ne,X,Ce]),[_,Pr]=o(""),[B,as]=o(new Set(["user-log"])),[kr,ln]=o(null),[Ir,cn]=o(!1),[Dr,un]=o(!1),[Fr,fn]=o("module"),[v,pt]=o({apis:!0,logs:!0,perf:!0,analytics:!0,redux:!0,crash:!0,push:!0,socket:!0,device:!0,storage:!0,debugging:!0,media:!0}),[F,mt]=o(250),[Le,ht]=o(150),[xe,is]=o(!0),[ls,dn]=o(1800),[we,cs]=o(!0),[gt,us]=o(1),[St,fs]=o(60),[yt,ds]=o(.5),[Ct,ps]=o(0),[Lt,ms]=o(120),[xt,hs]=o("png"),[wt,gs]=o("none"),[bt,Ss]=o(!0),[Rt,ys]=o(!0),[At,Mt]=o(Bo??!0),[Or,pn]=o(!1),[Nt,Cs]=o(.3),[Z,Tt]=o("apis"),[K,Ls]=o(!1),[xs,ws]=o(!0),[_r,mn]=o(!1);l(()=>{ea(!!v.apis),oa(!!v.logs),Ea(!!v.analytics),Ia(!!v.redux),ia(!!v.crash),La(!!v.socket)},[v]),l(()=>{Qn().then(t=>{if(t){const e=t.totalPhysicalRamMb-t.residentRamMb,s=Math.max(200,Math.round(e>0?e:1500));if(dn(s),xe){const r=Mo(s);mt(r.maxNetworkLogs),dt(r.maxConsoleLogs),ht(r.maxAnalyticsEvents),at(r.maxCrashRecords),os(r.maxPushRecords)}}}).catch(()=>{})},[xe]);const hn=async()=>{await $n(),_t(!1),Oo(!1),Bt(90),Vt("slide"),pt({apis:!0,logs:!0,perf:!0,analytics:!0,redux:!0,crash:!0,push:!0,socket:!0,device:!0,storage:!0,debugging:!0,media:!0}),Tt("apis"),is(!0);const t=Mo(ls);at(t.maxCrashRecords),mt(t.maxNetworkLogs),dt(t.maxConsoleLogs),ht(t.maxAnalyticsEvents),os(t.maxPushRecords),ns({info:!0,warn:!0,error:!0}),cs(!0),us(1),fs(30),ds(1),ps(0),ms(120),hs("png"),gs("none"),Ss(!0),ys(!0),Mt(!0),Ls(!1),ws(!0),Cs(.3),as(new Set(["user-log"])),Gt([...Fs]),An.alert("Settings Reset","All settings have been reset to default values.")},Br=C(!1);l(()=>{let t=!1;return zn().then(e=>{if(!t){if(e.language&&Pn(e.language),e.isDark!=null&&(_t(e.isDark),Oo(e.isDark)),e.modalHeightPercent!=null&&Bt(e.modalHeightPercent),e.modalAnimationType&&Vt(e.modalAnimationType),e.tabVisibility&&pt(s=>({...s,...e.tabVisibility,apis:!0})),e.defaultTab&&Tt(e.defaultTab),e.isAutoRamLimitEnabled!=null&&is(e.isAutoRamLimitEnabled),e.maxNetworkLogs!=null&&mt(e.maxNetworkLogs),e.maxConsoleLogs!=null&&dt(e.maxConsoleLogs),e.maxAnalyticsEventsLimit!=null&&ht(e.maxAnalyticsEventsLimit),e.maxCrashLogs!=null&&at(e.maxCrashLogs),e.crashIgnoredTypes!=null&&rs({...Po,...e.crashIgnoredTypes}),e.crashModalTriggerPolicy!=null&&wr(e.crashModalTriggerPolicy),e.showConsoleLevels&&ns(e.showConsoleLevels),e.reduxAutoRefresh!=null&&cs(e.reduxAutoRefresh),e.reduxExpandDepth!=null&&us(e.reduxExpandDepth),e.captureFps!=null&&fs(e.captureFps),e.captureScale!=null&&ds(e.captureScale),e.captureBitrate!=null&&ps(e.captureBitrate),e.captureMaxDurationSeconds!=null&&ms(e.captureMaxDurationSeconds),e.captureImageFormat&&hs(e.captureImageFormat),e.captureAudioMode&&gs(e.captureAudioMode),e.captureAutoHide!=null&&Ss(e.captureAutoHide),e.captureAutoGif!=null&&ys(e.captureAutoGif),e.captureWidgetEnabled!=null&&Mt(e.captureWidgetEnabled),e.peekOpacity!=null&&Cs(Math.max(.05,Math.min(1,e.peekOpacity))),e.showDuplicateLogs!=null&&Ls(e.showDuplicateLogs),e.showUpdateToast!=null&&ws(e.showUpdateToast),e.isGroupByPageEnabled!=null&&Wt(e.isGroupByPageEnabled),Array.isArray(e.hiddenUrlPatterns)){const s=Array.from(new Set([...Fs,...e.hiddenUrlPatterns]));Gt(s)}if(e.defaultTab){const s=e.defaultTab,r={apis:!0,logs:!0,analytics:!1,redux:!1,crash:!1,device:!1,storage:!1,...e.tabVisibility||{},apis:!0};z(r[s]?s:"apis")}Br.current=!0}}),()=>{t=!0}},[]),l(()=>{let t=!0;if(je)return _a(typeof je=="object"?je:{}).then(e=>{!t||!e||(e.modules&&pt(s=>({...s,...e.modules,apis:e.modules?.apis??!0})),e.captureWidgetEnabled!==void 0&&Mt(e.captureWidgetEnabled))}).catch(()=>{}),()=>{t=!1}},[je]),l(()=>{Br.current&&jn({isDark:Je,language:kn(),modalHeightPercent:Xe,modalAnimationType:Ye,tabVisibility:v,defaultTab:Z,maxNetworkLogs:F,maxConsoleLogs:Ce,maxAnalyticsEventsLimit:Le,maxCrashLogs:J,crashIgnoredTypes:ge,crashModalTriggerPolicy:Se,isAutoRamLimitEnabled:xe,isGroupByPageEnabled:de,showConsoleLevels:X,reduxAutoRefresh:we,reduxExpandDepth:gt,showDuplicateLogs:K,showUpdateToast:xs,captureFps:St,captureScale:yt,captureBitrate:Ct,captureMaxDurationSeconds:Lt,captureImageFormat:xt,captureAudioMode:wt,captureAutoHide:bt,captureAutoGif:Rt,captureWidgetEnabled:At,peekOpacity:Nt,hiddenUrlPatterns:se})},[Je,Xe,Ye,v,Z,F,Ce,Le,J,ge,Se,xe,de,X,we,gt,K,St,yt,Ct,Lt,xt,wt,bt,Rt,At,Nt]);const[Oe,gn]=o(null),Vr=h(()=>{if(!Oe)return!1;const t=r=>r.replace(/^v/,"").split(".").map(n=>parseInt(n,10)||0),e=t(Va),s=t(Oe);for(let r=0;r<3;r++){if((s[r]||0)>(e[r]||0))return!0;if((s[r]||0)<(e[r]||0))return!1}return!1},[Oe]);l(()=>{if(typeof __DEV__>"u"||!__DEV__)return;let t=!1;return fetch("https://registry.npmjs.org/react-native-inapp-inspector/latest").then(e=>e.ok?e.json():null).then(e=>{!t&&e&&typeof e.version=="string"&&gn(e.version)}).catch(()=>{}),()=>{t=!0}},[]),l(()=>{Pa(we)},[we]),l(()=>{u==="redux"&&!Ds()&&z("apis"),u==="analytics"&&!Ps()&&z("apis")},[u]);const Ur=t=>{t!=="apis"&&(t==="redux"&&!Ds()||t==="analytics"&&!Ps()||pt(e=>{const s=!e[t],r={...e,[t]:s};return!s&&u===t&&(Bn(),z("apis")),!s&&Z===t&&Tt("apis"),r}))},bs=M(async(t,e="")=>{if(t==="apis"||t==="logs"||t==="analytics"||t==="crash"){const s=await Xn(t,0,100,e);s&&s.items&&s.items.length>0&&(t==="apis"?te(s.items):t==="logs"?ae(s.items):t==="analytics"?he(s.items):t==="crash"&&j(s.items))}},[]),qr=M(t=>{t==="redux"&&!Ds()||t==="analytics"&&!Ps()||(Ht(null),Et(null),ts(null),jt(null),Jt(null),ie(null),ye(null),typeof Ms.startTransition=="function"?Ms.startTransition(()=>{z(t),bs(t)}):(z(t),bs(t)),Do(t))},[bs]),[Hr,Et]=o(null),[be,Wr]=o(""),[a,Gr]=o({categories:new Set(["all"]),screens:new Set,sources:new Set(["all"]),userTypes:new Set(["all"]),timeWindow:"all",payloadComplexity:"all",hasRevenue:!1,hasItems:!1,hasUserProps:!1,hasParams:!1,onlyDuplicates:!1,onlyConversions:!1,sortBy:"time_desc"}),zr=h(()=>!!(a.categories.size>0&&!a.categories.has("all")||a.screens.size>0||a.sources.size>0&&!a.sources.has("all")||a.userTypes.size>0&&!a.userTypes.has("all")||a.timeWindow!=="all"||a.payloadComplexity!=="all"||a.hasRevenue||a.hasItems||a.hasUserProps||a.hasParams||a.onlyDuplicates||a.onlyConversions||a.sortBy!=="time_desc"),[a]),jr=M(()=>{Gr({categories:new Set(["all"]),screens:new Set,sources:new Set(["all"]),userTypes:new Set(["all"]),timeWindow:"all",payloadComplexity:"all",hasRevenue:!1,hasItems:!1,hasUserProps:!1,hasParams:!1,onlyDuplicates:!1,onlyConversions:!1,sortBy:"time_desc"})},[]),[Jr,Sn]=o(!1),[$r,yn]=o(!1),[Qr,Xr]=o(new Set),_e=C(new Set),[vt,Rs]=o(null),Yr=Ms.useContext(Tn)!==void 0,P=C({path:"",params:null});l(()=>(No(()=>P.current),ko(()=>P.current),()=>{No(null),ko(null)}),[]),l(()=>{if(vt){const t=Ro(vt);t?.path&&(P.current=t)}},[vt]),l(()=>{if(!E)return;const t=()=>{try{if(typeof E.isReady=="function"&&E.isReady()){const s=typeof E.getCurrentRoute=="function"?E.getCurrentRoute():null;s?.name&&(P.current={path:s.name,params:s.params||null});const r=E.getRootState();if(r){Rs(r);const n=Ro(r);n?.path&&(P.current=n)}}}catch{}};t();const e=typeof E.addListener=="function"?E.addListener("state",()=>{t()}):null;return()=>{e&&e()}},[E]);const x=C(new Map),Re=C(new Set),[Zr,Kr]=o(new Set),Be=C(new f.Value(1)).current,Ve=C(new f.Value(.4)).current,Ue=C(new f.Value(1)).current,qe=C(new f.Value(0)).current,He=C(new f.Value(0)).current,N=C(new f.ValueXY({x:0,y:0})).current,Pt=C({x:0,y:0});l(()=>{const t=N.x.addListener(s=>Pt.current.x=s.value),e=N.y.addListener(s=>Pt.current.y=s.value);return()=>{N.x.removeListener(t),N.y.removeListener(e)}},[N]);const kt=C(!1),eo=C(Mn.create({onStartShouldSetPanResponder:()=>!1,onMoveShouldSetPanResponder:(t,e)=>Math.abs(e.dx)>4||Math.abs(e.dy)>4,onPanResponderGrant:()=>{kt.current=!0,N.setOffset({x:Pt.current.x,y:Pt.current.y}),N.setValue({x:0,y:0})},onPanResponderMove:f.event([null,{dx:N.x,dy:N.y}],{useNativeDriver:!1}),onPanResponderRelease:()=>{N.flattenOffset(),setTimeout(()=>{kt.current=!1},50)},onPanResponderTerminate:()=>{N.flattenOffset(),kt.current=!1}})).current,to=M(()=>{f.sequence([f.timing(He,{toValue:1,duration:320,useNativeDriver:!1}),f.timing(He,{toValue:0,duration:0,useNativeDriver:!1})]).start(),Ln()},[He]);l(()=>{Ns.OS==="android"&&Nn.setLayoutAnimationEnabledExperimental?.(!0)},[]),l(()=>{if(g)return;const t=f.loop(f.sequence([f.timing(Be,{toValue:1.2,duration:800,useNativeDriver:!1}),f.timing(Be,{toValue:1,duration:800,useNativeDriver:!1})]));return t.start(),()=>t.stop()},[Be,g]),l(()=>{if(g)return;const t=f.loop(f.sequence([f.timing(qe,{toValue:1,duration:3200,easing:wo.inOut(wo.ease),useNativeDriver:!1}),f.delay(3500),f.timing(qe,{toValue:0,duration:0,useNativeDriver:!1})]));return t.start(),()=>t.stop()},[qe,g]),l(()=>{const t=f.loop(f.sequence([f.timing(Ve,{toValue:1,duration:1200,useNativeDriver:!1}),f.timing(Ve,{toValue:.4,duration:1200,useNativeDriver:!1})]));return t.start(),()=>t.stop()},[Ve]),l(()=>{const t=f.loop(f.sequence([f.timing(Ue,{toValue:1.3,duration:800,useNativeDriver:!1}),f.timing(Ue,{toValue:.8,duration:800,useNativeDriver:!1})]));return t.start(),()=>t.stop()},[Ue]);const Cn=h(()=>Oa(),[]),ee=(Ns.OS==="ios"||Ns.OS==="android")&&Cn;l(()=>{ee&&Te().catch(()=>{})},[ee,g,qt]),l(()=>{if(!ee)return;const t=Da(()=>{Te().catch(()=>{}),G(!0)});return()=>{t()}},[ee]),l(()=>{if(!ee)return;const t=Fa(()=>{G(e=>{const s=!e;return s&&Te().catch(()=>{}),s})});return()=>{t()}},[ee]);const so=C(g);l(()=>{if(so.current=g,g){Ma("InspectorModal");const t=Z==="apis"||v?.[Z]?Z:"apis";z(t),Do(t);const e=Zt.current.length>0?Zt.current:Kn();if(e.length>0){const i=Es(e),p=new Set(i.map(S=>S.id));Re.current=p,i.forEach(S=>{if(!x.current.has(S.id)){const A=S?.routeInfo||P.current;x.current.set(S.id,A)}}),te(i)}Kt.current.length>0&&ae(Kt.current),es.current.length>0&&he(es.current);const s=ks();s&&($e(typeof s=="object"?{...s}:s),Qe({...Is()}));const r=Ot();r.length>0&&j(r);const n=requestAnimationFrame(()=>{Gs(!0)});return()=>{cancelAnimationFrame(n)}}else Gs(!1),Ee(new Set),le(new Set)},[g]),l(()=>{Yn(),vs(),sa(),Ta(),na(),ga();const t=Wn(),e=so,s=aa(c=>{if(c.message==="__CLEARED__"){j([]),ie(null),ke(null);return}const H=Ot();H.length>0&&Ge("crash",JSON.stringify(H[0])),j(H),c.crashRecord&&c.shouldShowModal!==!1&&ke(c.crashRecord)}),r=Ot();r.length>0&&(r.forEach(c=>Ge("crash",JSON.stringify(c))),j(r));let n,i=!0;const p=Zn(c=>{if(Zt.current=c,c.length>0&&Ge("apis",JSON.stringify(c[0])),!e.current)return;clearTimeout(n);const H=()=>{const w=Es(c),T=new Set(w.map(U=>U.id)),d=new Set;T.forEach(U=>{Re.current.has(U)||d.add(U)}),Re.current=T,d.size>0&&(d.forEach(U=>{if(!x.current.has(U)){const bn=w.find(Rn=>Rn.id===U)?.routeInfo||P.current;x.current.set(U,bn)}}),Kr(d),setTimeout(()=>Kr(new Set),1200)),te(w)};if(i){i=!1;const w=Es(c),T=new Set(w.map(d=>d.id));Re.current=T,w.forEach(d=>{if(!x.current.has(d.id)){const U=d?.routeInfo||P.current;x.current.set(d.id,U)}}),te(w)}else n=setTimeout(H,250)});let S,A=!0;const As=Na(c=>{if(es.current=c,c.length>0&&Ge("analytics",JSON.stringify(c[0])),!e.current)return;clearTimeout(S);const H=()=>{const w=new Set(c.map(d=>d.id)),T=new Set;w.forEach(d=>{_e.current.has(d)||T.add(d)}),_e.current=w,T.size>0&&(T.forEach(d=>{x.current.has(d+1e6)||x.current.set(d+1e6,P.current)}),Xr(T),setTimeout(()=>Xr(new Set),1200)),he(c)};if(A){A=!1;const w=new Set(c.map(T=>T.id));_e.current=w,he(c)}else S=setTimeout(H,200)});let Ae,Ft=!0;const V=ra(c=>{Kt.current=c,c.length>0&&Ge("logs",JSON.stringify(c[0])),e.current&&(clearTimeout(Ae),Ft?(Ft=!1,ae(c)):Ae=setTimeout(()=>{ae(c)},200))}),Me=ks();Me&&($e(typeof Me=="object"?{...Me}:Me),Qe({...Is()}));const We=va(()=>{if(!e.current)return;const c=ks();$e(c&&typeof c=="object"?{...c}:c),Qe({...Is()})});return()=>{p(),clearTimeout(n),As(),clearTimeout(S),V(),clearTimeout(Ae),We(),s(),t()}},[]),l(()=>{ta(F)},[F]),l(()=>{vo(J)},[J]),l(()=>{or(!0),ar(!0),lr(!1),ur(!1),zt("")},[y]);const R=h(()=>{let t=b.filter(e=>{if(se&&se.length>0&&Gn(e.url,se))return!1;if(D&&D!=="all"){if(D==="errors"){if(!(e.status===0||e.status==null||typeof e.status=="number"&&e.status>=400))return!1}else if(D==="success"){if(!(typeof e.status=="number"&&e.status>=200&&e.status<400))return!1}else if(D==="slow"){if((e.duration||0)<500)return!1}else if(D==="graphql"){if(!((e.url||"").toLowerCase().includes("graphql")||(e.client||"").toLowerCase().includes("graphql")||(e.client||"").toLowerCase().includes("apollo")))return!1}else if(e.method?.toUpperCase()!==D.toUpperCase())return!1}if(re.size>0&&!re.has("all")){const s=typeof e.status=="number"?e.status:parseInt(String(e.status),10);if(![...re].some(n=>{const i=String(n).toLowerCase();if(i==="all")return!0;if(i==="failed")return e.status===0||e.status==null||!isNaN(s)&&s>=400;if(i==="2xx")return!isNaN(s)&&s>=200&&s<300;if(i==="3xx")return!isNaN(s)&&s>=300&&s<400;if(i==="4xx")return!isNaN(s)&&s>=400&&s<500;if(i==="5xx")return!isNaN(s)&&s>=500&&s<600;if(!isNaN(s)){const p=parseInt(String(n),10);if(!isNaN(p)&&p>=100)return s===p}return String(e.status).startsWith(String(n)[0])}))return!1}if(oe.size>0&&!oe.has("all")&&![...oe].some(r=>String(r).toUpperCase()==="ALL"?!0:e.method?.toUpperCase()===String(r).toUpperCase()))return!1;if(pe!=="all"){const s=e.duration||0;if(pe==="fast"&&s>=200||pe==="normal"&&(s<200||s>500)||pe==="slow"&&s<=500)return!1}if(ve!=="all"){const s=(e.url||"").toLowerCase().startsWith("https");if(ve==="https"&&!s||ve==="http"&&s)return!1}if(L&&L.trim().length>0){const s=x.current.get(e.id)?.path||"";if(!qn(e,L,s,{scope:ce,isRegex:ue,isCaseSensitive:fe}))return!1}return!0});if(me==="time_asc"||st==="oldest")t=[...t].reverse();else if(me==="duration_desc")t=[...t].sort((e,s)=>(s.duration||0)-(e.duration||0));else if(me==="duration_asc")t=[...t].sort((e,s)=>(e.duration||0)-(s.duration||0));else if(me==="size_desc")t=[...t].sort((e,s)=>{const r=(e.response?JSON.stringify(e.response).length:0)+(e.request?JSON.stringify(e.request).length:0);return(s.response?JSON.stringify(s.response).length:0)+(s.request?JSON.stringify(s.request).length:0)-r});else if(L&&L.trim().length>0){const e=new Map;for(const s of t){const r=x.current.get(s.id)?.path||"",n=Hn(s,L,r,{scope:ce,isRegex:ue,isCaseSensitive:fe});e.set(s.id,n)}t=[...t].sort((s,r)=>{const n=(e.get(r.id)||0)-(e.get(s.id)||0);return n!==0?n:(r.startTime||0)-(s.startTime||0)})}if(!K){const e=[];for(const s of t){const r=e[e.length-1];r&&r.method===s.method&&r.url===s.url&&r.status===s.status?e[e.length-1]={...r,duplicateCount:(r.duplicateCount||1)+1}:e.push({...s,duplicateCount:1})}t=e}return t},[b,se,L,ce,ue,fe,D,re,oe,pe,ve,me,st,K]),ro=h(()=>{const t=new Set;return b.forEach(e=>{e.method&&t.add(e.method.toUpperCase())}),["ALL",...Array.from(t)]},[b]),oo=M((t,e)=>{Xt(s=>{const r=s[t]||new Set(["success","failed","loading"]),n=new Set(r);return n.has(e)?n.delete(e):n.add(e),{...s,[t]:n}})},[]),It=h(()=>{if(P.current?.path){const t=P.current.path.split(" \u2794 ").map(e=>e.trim()).filter(Boolean);return t.length>0?t[t.length-1]:P.current.path}if(R.length>0){const t=R[0],e=x.current.get(t.id)||t?.routeInfo;return Ts(t,e)}return""},[R,vt]),no=M(t=>{et(e=>{const s=new Map(e),n=!!(L&&L.trim().length>0)?!0:t===It,i=s.has(t)?s.get(t):n;return s.set(t,!i),s})},[It,L]);l(()=>{tt({}),et(new Map)},[L,ce,ue,fe,D,re,oe,F]);const ao=M((t,e=10)=>{tt(s=>({...s,[t]:(s[t]||F||50)+e}))},[F]),io=h(()=>{const t=!!(L&&L.trim().length>0);if(!de||t)return R.map((n,i)=>{const p=x.current.get(n.id)||n?.routeInfo,S=Ts(n,p);return{type:"log",id:`flat-log-${n.id}`,log:n,isLast:i===R.length-1,color:Ao(S)}});const e=[],s=new Map;for(let n=0;n<R.length;n++){const i=R[n],p=x.current.get(i.id)||i?.routeInfo,S=Ts(i,p);let A=s.get(S);A||(A={pageName:S,color:Ao(S),logs:[]},s.set(S,A)),A.logs.push(i)}let r=0;return s.forEach(n=>{let i=0,p=0,S=0;n.logs.forEach(V=>{V.status==null?S++:V.status===0||V.status>=400?p++:i++});const A=er[n.pageName]||new Set(["success","failed","loading"]),As=t?!0:n.pageName===It,Ae=Yt.has(n.pageName)?!Yt.get(n.pageName):!As,Ft=n.logs[0]?.startTime||0;if(e.push({type:"header",id:`hdr-${n.pageName}`,pageName:n.pageName,color:n.color,stats:{success:i,failed:p,loading:S},timestamp:Ft,activeFilters:A,isCollapsed:Ae,isFirst:r===0}),r++,!Ae){const V=n.logs.filter(d=>d.status==null?A.has("loading"):d.status===0||d.status>=400?A.has("failed"):A.has("success")),Me=F||50,We=tr[n.pageName]||Me,c=V.slice(0,We),H=V.length>We;c.forEach(d=>{e.push({type:"log",id:`log-${d.id}`,log:d,isLast:!1,color:n.color})});const w=Math.max(0,V.length-We),T=Math.min(w||10,10);e.push({type:"loadMore",id:`loadmore-${n.pageName}`,pageName:n.pageName,color:n.color,remainingCount:w,totalCount:V.length,loadedCount:c.length,loadMoreStep:T,hasMore:H})}}),e},[de,R,b,er,Yt,It,tr,F,L]),{minStart:lo,totalRange:co}=h(()=>{if(R.length===0)return{minStart:0,totalRange:0};const t=Math.min(...R.map(s=>s.startTime)),e=Math.max(...R.map(s=>s.startTime+(s.duration||10)));return{minStart:t,totalRange:e-t}},[R]),Dt=h(()=>{if(!y)return null;const t=b.findIndex(e=>e.id===y.id);if(t===-1)return null;for(let e=t+1;e<b.length;e++){const s=b[e];if(s.url===y.url&&s.method===y.method)return s}return null},[y,b]),uo=Dt?Dt.request:null,fo=Dt?Dt.response:null,po=h(()=>{let t=ot;if(be&&be.trim().length>0){const r=be.trim().toLowerCase().split(/\s+/).filter(Boolean);t=t.filter(n=>{const i=[n.name||"",JSON.stringify(n.params||""),JSON.stringify(n.userProperties||""),n.screenName||"",n.pageTitle||"",n.userId||"",n.source||""].join(" ").toLowerCase();return r.every(p=>i.includes(p))})}if(a.categories.size>0&&!a.categories.has("all")&&(t=t.filter(r=>{const n=Un(r.name);return a.categories.has(n)})),a.timeWindow!=="all"){const r=Date.now(),n=a.timeWindow==="1m"?r-60*1e3:a.timeWindow==="5m"?r-300*1e3:a.timeWindow==="15m"?r-900*1e3:r-3600*1e3;t=t.filter(i=>i.timestamp>=n)}if(a.sources.size>0&&!a.sources.has("all")&&(t=t.filter(r=>a.sources.has(r.source||"manual"))),a.userTypes.size>0&&!a.userTypes.has("all")&&(t=t.filter(r=>{const n=!!(r.userId&&r.userId.trim()!=="");return!!(a.userTypes.has("identified")&&n||a.userTypes.has("anonymous")&&!n)})),a.payloadComplexity!=="all"&&(a.payloadComplexity==="none"?t=t.filter(r=>!r.params||Object.keys(r.params).length===0):a.payloadComplexity==="simple"?t=t.filter(r=>r.params&&Object.keys(r.params).length<=3):a.payloadComplexity==="heavy"&&(t=t.filter(r=>r.params&&Object.keys(r.params).length>3))),a.onlyConversions){const r=["purchase","item_purchase","ecommerce_purchase","sign_up","login","lead","generate_lead","tutorial_complete","add_payment_info","begin_checkout","spend_virtual_currency"];t=t.filter(n=>r.some(i=>n.name.toLowerCase().includes(i)))}a.screens.size>0&&(t=t.filter(r=>{const n=r.screenName||r.params?.firebase_screen||r.params?.screen_name||r.params?.firebase_screen_class||r.screenClass||"";return a.screens.has(n)})),a.hasRevenue&&(t=t.filter(r=>r.params?.value!=null&&!isNaN(Number(r.params.value))||r.params?.price!=null&&!isNaN(Number(r.params.price)))),a.hasItems&&(t=t.filter(r=>Array.isArray(r.params?.items)&&r.params.items.length>0)),a.hasUserProps&&(t=t.filter(r=>r.userProperties&&Object.keys(r.userProperties).length>0)),a.hasParams&&(t=t.filter(r=>r.params&&Object.keys(r.params).length>0));const e=[];for(const r of t){if(e.length===0){e.push({...r,count:1});continue}const n=e[e.length-1];n.name===r.name&&JSON.stringify(n.params)===JSON.stringify(r.params)&&JSON.stringify(n.userProperties)===JSON.stringify(r.userProperties)?(n.count=(n.count||1)+1,n.timestamp=r.timestamp,n.id=r.id):e.push({...r,count:1})}let s=e;return a.onlyDuplicates&&(s=s.filter(r=>(r.count||1)>1)),a.sortBy==="time_asc"?s=[...s].sort((r,n)=>r.timestamp-n.timestamp):a.sortBy==="revenue_desc"?s=[...s].sort((r,n)=>{const i=Number(r.params?.value??r.params?.price??0);return Number(n.params?.value??n.params?.price??0)-i}):a.sortBy==="count_desc"&&(s=[...s].sort((r,n)=>(n.count||1)-(r.count||1))),s.slice(0,Le)},[ot,be,a,Le]),mo=h(()=>{let t=Y;if(B.size>0&&!B.has("all")&&(t=t.filter(e=>!!(B.has("user-log")&&e.sourceMethod==="log"||B.has("info")&&(e.sourceMethod==="info"||e.type==="info"&&e.sourceMethod!=="log")||B.has("warn")&&(e.type==="warn"||e.sourceMethod==="warn")||B.has("error")&&(e.type==="error"||e.sourceMethod==="error")||B.has("analytics")&&e.message?.toLowerCase().includes("[analytics error]")))),_&&_.trim().length>0){const e=_.trim().toLowerCase().split(/\s+/).filter(Boolean);t=t.filter(s=>{const r=[s.message||"",s.caller||"",s.type||"",s.sourceMethod||"",s.stack||""].join(" ").toLowerCase();return e.every(n=>n==="error"||n==="err"?s.type==="error"||r.includes(n):n==="warn"||n==="warning"?s.type==="warn"||r.includes(n):n==="info"&&s.type==="info"||r.includes(n))})}if(t=[...t].sort((e,s)=>rt==="newest"?s.timestamp-e.timestamp:e.timestamp-s.timestamp),!K){const e=[];for(const s of t){const r=e[e.length-1];r&&r.type===s.type&&r.sourceMethod===s.sourceMethod&&r.message===s.message?e[e.length-1]={...r,duplicateCount:(r.duplicateCount||1)+1}:e.push({...s,duplicateCount:1})}t=e}return t},[Y,B,_,rt,K]),ho=h(()=>{let t=Y;if(_&&_.trim().length>0){const s=_.trim().toLowerCase().split(/\s+/).filter(Boolean);t=Y.filter(r=>{const n=[r.message||"",r.caller||"",r.type||"",r.sourceMethod||"",r.stack||""].join(" ").toLowerCase();return s.every(i=>i==="error"||i==="err"?r.type==="error"||n.includes(i):i==="warn"||i==="warning"?r.type==="warn"||n.includes(i):i==="info"&&r.type==="info"||n.includes(i))})}const e=Y.length;return{all:`${t.length}/${e}`,info:`${t.filter(s=>s.sourceMethod==="info"||s.type==="info"&&s.sourceMethod!=="log").length}/${e}`,warn:`${t.filter(s=>s.type==="warn"||s.sourceMethod==="warn").length}/${e}`,error:`${t.filter(s=>s.type==="error"||s.sourceMethod==="error").length}/${e}`,"user-log":`${t.filter(s=>s.sourceMethod==="log").length}/${e}`,analytics:`${t.filter(s=>s.message.toLowerCase().includes("[analytics error]")).length}/${e}`}},[Y,_]),go=M(()=>{G(!1),Ut(!1),setTimeout(()=>{Ht(null),Et(null),ts(null),jt(null),Jt(null),ie(null),ye(null)},300)},[]);function Ln(){vs(),te([]),Ee(new Set),Xt({}),et(new Map),tt({}),$t(new Set),Qt(new Set),js(""),Re.current=new Set,x.current=new Map,Fo(),he([]),Wr(""),_e.current=new Set,To(),ae([]),le(new Set),as(new Set(["all"])),Pr("")}function So(){if(u==="logs"){Ke.size>0?(ae(t=>t.filter(e=>!Ke.has(e.id))),le(new Set)):I({visible:!0,title:m("console.clearLogsTitle","Clear Console Logs"),message:m("console.clearLogsMsg","Are you sure you want to clear all console logs?"),confirmText:m("common.clearAll","Clear All"),cancelText:m("common.cancel","Cancel"),onConfirm:()=>{I(t=>({...t,visible:!1})),To(),ae([]),le(new Set)}});return}if(u==="analytics"){I({visible:!0,title:m("analytics.clearEventsTitle","Clear Analytics"),message:m("analytics.clearEventsMsg","Are you sure you want to clear all analytics events?"),confirmText:m("common.clearAll","Clear All"),cancelText:m("common.cancel","Cancel"),onConfirm:()=>{I(t=>({...t,visible:!1})),Fo(),he([]),Et(null),_e.current=new Set}});return}if(u==="redux"){I({visible:!0,title:m("redux.clearTimelineTitle","Clear Redux Timeline"),message:m("redux.clearTimelineMsg","Are you sure you want to clear the dispatched action history?"),confirmText:m("common.clearAll","Clear All"),cancelText:m("common.cancel","Cancel"),onConfirm:()=>{I(t=>({...t,visible:!1})),ka(),Qe({})}});return}if(u==="crash"){I({visible:!0,title:m("crash.clearTitle","Clear Crash Records"),message:m("crash.clearMessage","Are you sure you want to clear all intercepted crash records?"),confirmText:m("crash.clearConfirm","Clear All"),cancelText:m("crash.clearCancel","Cancel"),onConfirm:()=>{I(t=>({...t,visible:!1})),Eo(),j([]),ie(null)}});return}Ze.size>0?(te(t=>t.filter(e=>!Ze.has(e.id))),Ee(new Set)):I({visible:!0,title:m("network.clearLogsTitle","Clear Network Logs"),message:m("network.clearLogsMsg","Are you sure you want to clear all network logs?"),confirmText:m("common.clearAll","Clear All"),cancelText:m("common.cancel","Cancel"),onConfirm:()=>{I(t=>({...t,visible:!1})),xn()}})}function xn(){vs(),te([]),Ee(new Set),Xt({}),et(new Map),tt({}),$t(new Set),Qt(new Set),Re.current=new Set,x.current=new Map}const yo=h(()=>{if(!y)return"";try{const e=new URL(y.url).pathname.split("/").filter(Boolean);return e.length>0?`/${e.slice(-2).join("/")}`:"/"}catch{const t=y.url.split("/").filter(Boolean);return t.length>0?`/${t.slice(-2).join("/")}`:y.url}},[y]),Co=h(()=>y?Vn(y.url):"",[y]),Lo=M(t=>{Ee(e=>{const s=new Set(e);return s.has(t)?s.delete(t):s.add(t),s})},[]),xo=M(t=>{le(e=>{const s=new Set(e);return s.has(t)?s.delete(t):s.add(t),s})},[]),wn=h(()=>({visible:g,setVisible:G,closeModal:go,isMinimized:qs,setIsMinimized:Ut,minimizeInspector:Vo,isDismissed:qt,setIsDismissed:Hs,dismissInspector:Uo,isReady:Ws,enabled:k,isEnabled:k,appIcon:_s,environment:Bs,modalHeightPercent:Xe,setModalHeightPercent:Bt,modalAnimationType:Ye,setModalAnimationType:Vt,hasNavigationContext:Yr,setNavState:Rs,activeTab:u,switchActiveTab:qr,tabVisibility:v,toggleTabVisibility:Ur,lastReadApisCount:mr,lastReadLogsCount:dr,mediaCount:yr,refreshMediaCount:nt,selected:y,setSelected:Ht,selectedEvent:Hr,setSelectedEvent:Et,selectedLog:fr,setSelectedLog:ts,showHeaderInfo:sr,setShowHeaderInfo:Xo,settingsPage:kr,setSettingsPage:ln,isAboutOpen:Ir,setIsAboutOpen:cn,isSupportOpen:Dr,setIsSupportOpen:un,updateAvailable:Vr,latestNpmVersion:Oe,clearAnim:He,activePulseAnim:Ve,unreadPulseAnim:Ue,runClearAllWithAnimation:to,confirmModal:zs,setConfirmModal:I,useNativeFab:ee,fabPan:N,fabPanResponder:eo,fabDraggedRef:kt,pulseAnim:Be,fabShineAnim:qe,logs:b,filteredLogs:R,groupedData:io,search:L,setSearch:js,searchScope:ce,setSearchScope:qo,isRegexSearch:ue,setIsRegexSearch:Ho,isCaseSensitive:fe,setIsCaseSensitive:Wo,quickFilter:D,setQuickFilter:Go,statusFilters:re,setStatusFilters:$t,methodFilters:oe,setMethodFilters:Qt,latencyFilter:pe,setLatencyFilter:Jo,protocolFilter:ve,setProtocolFilter:$o,networkSortBy:me,setNetworkSortBy:Qo,availableMethods:ro,sortOrder:st,setSortOrder:Yo,selectedLogs:Ze,toggleSelect:Lo,minStart:lo,totalRange:co,newLogIds:Zr,toggleSectionFilter:oo,toggleSectionCollapse:no,loadMoreSection:ao,handleDelete:So,isGroupByPageEnabled:de,setIsGroupByPageEnabled:Wt,hiddenUrlPatterns:se,setHiddenUrlPatterns:Gt,detailTitle:yo,detailDisplayUrl:Co,apiDetailActiveTab:Zs,setApiDetailActiveTab:Ks,detailSearch:Js,setDetailSearch:zt,reqExpanded:rr,setReqExpanded:or,resExpanded:nr,setResExpanded:ar,showReqDiff:ir,setShowReqDiff:lr,showResDiff:cr,setShowResDiff:ur,prevRequestData:uo,prevResponseData:fo,logRouteMapRef:x,consoleLogs:ne,visibleConsoleLogs:Y,filteredConsoleLogs:mo,logSearch:_,setLogSearch:Pr,logFilters:B,setLogFilters:as,logCounts:ho,logSortOrder:rt,setLogSortOrder:Zo,selectedConsoleLogs:Ke,setSelectedConsoleLogs:le,toggleSelectConsoleLog:xo,analyticsEvents:ot,filteredAnalyticsEvents:po,analyticsSearch:be,setAnalyticsSearch:Wr,analyticsFilters:a,setAnalyticsFilters:Gr,isAnalyticsFilterApplied:zr,resetAnalyticsFilters:jr,newEventIds:Qr,isAnalyticsLayoutReady:Jr,setIsAnalyticsLayoutReady:Sn,analyticsHeaderExpanded:$r,setAnalyticsHeaderExpanded:yn,reduxState:Vs,setReduxState:$e,reduxLastActionMap:Us,reduxSearch:$s,setReduxSearch:zo,selectedReduxSlice:Qs,setSelectedReduxSlice:jt,selectedReduxAction:Xs,setSelectedReduxAction:Jt,reduxActiveSubTab:Ys,setReduxActiveSubTab:jo,crashRecords:Pe,setCrashRecords:j,selectedCrash:xr,setSelectedCrash:ie,lastReadCrashesCount:gr,maxCrashLogs:J,setMaxCrashLogs:at,clearAllCrashes:()=>{Eo(),j([]),ie(null)},crashIgnoredTypes:ge,setCrashIgnoredTypes:rs,crashModalTriggerPolicy:Se,setCrashModalTriggerPolicyState:wr,applyCrashPolicyPreset:br,pushRecords:$,filteredPushRecords:Tr,selectedPush:Ar,setSelectedPush:Mr,pushSearch:Ie,setPushSearch:en,pushQuickFilter:q,setPushQuickFilter:tn,lastReadPushCount:it,unreadPushCount:Nr,maxPushLogs:lt,setMaxPushLogs:os,clearAllPushLogs:()=>{pa(),Rr([]),Mr(null)},simulatePush:(t,e)=>{ha(t,e)},socketRecords:Q,filteredSocketRecords:vr,selectedSocket:De,setSelectedSocket:ye,socketSearch:Fe,setSocketSearch:rn,socketQuickFilter:O,setSocketQuickFilter:on,lastReadSocketCount:ut,unreadSocketCount:Er,maxSocketLogs:ft,setMaxSocketLogs:an,clearAllSocketLogs:()=>{Sa(),ct([]),ye(null)},deleteSocketRecord:t=>{ba(t),ct(e=>e.filter(s=>s.id!==t)),De?.id===t&&ye(null)},deleteMultipleSocketRecords:t=>{Ra(t);const e=new Set(t);ct(s=>s.filter(r=>!e.has(r.id))),De&&e.has(De.id)&&ye(null)},simulateSocket:(t,e)=>{wa(t,e)},settingsActiveSubTab:Fr,setSettingsActiveSubTab:fn,defaultTab:Z,setDefaultTab:Tt,isDark:Je,setIsDark:_t,showDuplicateLogs:K,setShowDuplicateLogs:Ls,showUpdateToast:xs,setShowUpdateToast:ws,showConsoleLevels:X,setShowConsoleLevels:ns,resetToDefaults:hn,storage:W,maxNetworkLogs:F,setMaxNetworkLogs:mt,maxConsoleLogs:Ce,setMaxConsoleLogs:dt,maxAnalyticsEventsLimit:Le,setMaxAnalyticsEventsLimit:ht,isAutoRamLimitEnabled:xe,setIsAutoRamLimitEnabled:is,deviceFreeRamMb:ls,reduxAutoRefresh:we,setReduxAutoRefreshState:cs,reduxExpandDepth:gt,setReduxExpandDepth:us,captureFps:St,setCaptureFps:fs,captureScale:yt,setCaptureScale:ds,captureBitrate:Ct,setCaptureBitrate:ps,captureMaxDurationSeconds:Lt,setCaptureMaxDurationSeconds:ms,captureImageFormat:xt,setCaptureImageFormat:hs,captureAudioMode:wt,setCaptureAudioMode:gs,captureAutoHide:bt,setCaptureAutoHide:Ss,captureAutoGif:Rt,setCaptureAutoGif:ys,captureWidgetEnabled:At,setCaptureWidgetEnabled:Mt,peekMode:Or,setPeekMode:pn,peekOpacity:Nt,setPeekOpacity:Cs,previewMediaItem:Lr,setPreviewMediaItem:Ko,isUpdatePopupVisible:_r,setIsUpdatePopupVisible:mn}),[g,go,Ws,k,_s,Bs,Xe,Ye,Yr,Rs,u,qr,v,Ur,mr,dr,yr,nt,Lr,y,Hr,fr,sr,kr,Ir,Dr,Vr,Oe,He,Ve,Ue,to,ee,N,eo,Be,qe,b,R,io,L,ce,ue,fe,D,re,oe,ro,st,Ze,Lo,lo,co,Zr,oo,no,ao,So,de,Wt,se,yo,Co,Zs,Js,rr,nr,ir,cr,uo,fo,ne,Y,mo,_,B,ho,rt,Ke,xo,ot,po,be,a,zr,jr,Qr,Jr,$r,Vs,Us,$s,Qs,Xs,Ys,Pe,xr,gr,J,ge,Se,br,$,Tr,Ar,Ie,q,it,Nr,lt,Q,vr,De,Fe,O,ut,Er,ft,Fr,Z,Je,K,xs,X,W,F,Ce,Le,xe,ls,we,gt,St,yt,Ct,Lt,xt,wt,bt,Rt,At,Or,Nt,qs,qt,zs,_r]);return<_n.Provider value={wn}>
2
- <Fn/>
3
- <On visible={!!ss}crash={ss}onDismiss={()=>ke(null)}onOpenInspector={()=>{const t=ss;ke(null),t&&ie(t),z("crash"),G(!0)}}onRetry={()=>{ke(null)}}/>
4
- </_n.Provider>},Os=k=>{const W=k?.enabled??!0,E=k?.telemetry??!0;return l(()=>(W?E?Aa(!0,k?.environment):Io(!1):(Te().catch(()=>{}),Io(!1)),()=>{Te().catch(()=>{})}),[W,E,k?.environment]),W?<En i18n={vn}>
5
- <Dn fallbackType="inline">
6
- <Ua{...k}enabled={W}/>
7
- </Dn>
8
- </En>:null};export default Os;export{Os as InAppInspector,Os as NetworkInspector};export{setupNetworkLogger,clearNetworkLogs,subscribeNetworkLogs,addAxiosInterceptors,setMaxNetworkLogsLimit,getMaxNetworkLogsLimit,pruneNetworkLogs,getNetworkLogs}from"./customHooks/networkLogger";export{setupConsoleLogger,clearConsoleLogs,subscribeConsoleLogs,setMaxConsoleLogsLimit,getMaxConsoleLogsLimit,pruneConsoleLogs}from"./customHooks/consoleLogger";export{setupAnalyticsLogger,logAnalyticsEvent,subscribeAnalyticsEvents,clearAnalyticsEvents,getCurrentUserProperties,getCurrentUserId,getDefaultEventParameters,getCollectionEnabled,setMaxAnalyticsLogsLimit,getMaxAnalyticsLogsLimit,pruneAnalyticsLogs}from"./customHooks/analyticsLogger";export{setupGlobalCrashHandler,subscribeCrashEvents,emitCrashEvent,getCrashRecords,clearCrashRecords,simulateTestCrash,triggerGlobalCrashScreen,exportCrashReport,parseCrashStackTrace,recordCustomCrash,addCrashBreadcrumb,recordNavigationBreadcrumb,recordNetworkBreadcrumb,recordReduxBreadcrumb,recordUserActionBreadcrumb,computeCrashFingerprint,getMaxCrashLogsLimit,pruneCrashRecords}from"./customHooks/crashHandler";export{default as CrashTab}from"./components/Inspector/CrashTab";export{default as ErrorBoundary}from"./components/ErrorBoundary";export{default as GlobalCrashScreenModal}from"./components/Inspector/GlobalCrashScreenModal";export{connectReduxStore,inspectorReduxMiddleware,getReduxState,subscribeReduxState,getActionHistory,clearActionHistory,getLastActionForReducer,setMaxReduxHistoryLimit,getMaxReduxHistoryLimit,pruneReduxHistory,isReduxConnected}from"./customHooks/reduxLogger";export{getEventCategory,registerGAPlugin}from"./helpers/gaAnalyticsRegistry";export{InspectLog,InspectTrackTime,InspectCatch}from"./decorators";export{getNativeDeviceMetrics,enableNativeCrashProtection,subscribeNativeCrashes,showNativeFloatingButton,hideNativeFloatingButton,setNativeFloatingButtonBadge,subscribeNativeFloatingButtonPress,subscribeNativeDeviceShake,startNativeFpsMonitoring,stopNativeFpsMonitoring,getNativeFpsMetrics,getNativeStorageItem,setNativeStorageItem,isNativeModuleAvailable}from"./native/NativeInspector";export{setupMemoryWarningHandler,pruneAllLogs,subscribeMemoryWarning}from"./helpers";export{recordPushNotification,recordSalesforcePush,getPushRecords,clearPushRecords,subscribePushEvents,simulateTestPush,autoSetupPushLogger,setMaxPushRecordsLimit,getDiscoveredPushSources,prunePushRecords}from"./customHooks/pushNotificationLogger";export{setupSocketLogger,clearSocketRecords,subscribeSocketRecords,getSocketRecords,setSocketModuleEnabled,getSocketModuleEnabled,setMaxSocketRecordsLimit,getMaxSocketRecordsLimit,pruneSocketRecords,recordSocketConnection,recordSocketFrame,recordSocketClose,recordSocketError,simulateTestSocket,analyzeSocketPayload}from"./customHooks/socketLogger";export{default as SocketTab}from"./components/Inspector/SocketTab";export{default as SocketDetail}from"./components/Inspector/SocketDetail";export{default as SocketCard}from"./components/Inspector/SocketCard";export{PerformanceTab}from"./components/Inspector/PerformanceTab";export{usePerformanceMonitor}from"./helpers/performanceSampler";export{shareApiReport,sharePushReport,shareSocketReport,shareCrashReport,shareAnalyticsReport,shareReduxReport,shareLogReport,shareConsoleLogs,shareNetworkLogs,formatApiReport,formatPushReport,formatSocketReport,formatCrashReport,formatAnalyticsReport,formatReduxReport,formatLogReport,formatConsoleLogsExport,formatNetworkLogsExport,estimateConsoleLogsExportSize,estimateNetworkLogsExportSize,generateConsoleLogsFilename,generateNetworkLogsFilename,DEFAULT_CONSOLE_EXPORT_OPTIONS,DEFAULT_NETWORK_EXPORT_OPTIONS}from"./helpers/shareFormatter";export{default as ConsoleExportModal}from"./components/Inspector/ConsoleExportModal";export{default as NetworkExportModal}from"./components/Inspector/NetworkExportModal";export{BrandCircleIcon,BrandSquareIcon,BellIcon,CloudPushIcon,WebsocketIcon,SocketIcon}from"./components/NetworkIcons";export{ModuleErrorBoundary}from"./components/ModuleErrorBoundary";export{SkeletonPlaceholder}from"./components/SkeletonPlaceholder";export{connectAsyncStorage,connectMMKV,isAsyncStorageConnected,isMMKVConnected,getRegisteredMMKVInstanceIds,fetchStorageEntries,setStorageEntry,removeStorageEntry,clearStorageDriver,subscribeToStorageChanges}from"./customHooks/storageInspector";export{ActiveTab,Method,StatusFilter,SortOrder,LocalFilter,ModalAnimationType,SettingsPage,SettingsSubTab,LogFilter,ConsoleLogType,AnalyticsEventSource,GAEventCategory,StackFrameType,DiffResultType,CrashType,CrashExportFormat,CrashDetailSubTab,CrashFilterType,BreadcrumbType,PushAppState,PushActionType,PushDetailSubTab,PushFilterType,SocketStatus,SocketFrameDirection,SocketFrameType,SocketDetailSubTab,SocketFilterType}from"./types";export{AppFonts,setAppFonts}from"./styles/AppFonts";export{AppColors,setAppColors,getThemeColors,updateAppColorsTheme}from"./styles/AppColors";export{t,i18n,useTranslation,setLanguage,addTranslations,setTranslations,I18nextProvider,SUPPORTED_LANGUAGES}from"./i18n";export{fetchRemoteConfigModuleStatus,fetchRemoteConfigSettings,isFirebaseRemoteConfigAvailable}from"./helpers/remoteConfig";export{ScreenCapture,ScreenRecorder}from"./capture";export{MediaEditor}from"./editor";export{LIB_VERSION}from"./constants/version";
1
+ import Mn,{useEffect as l,useMemo as m,useRef as C,useState as o,useCallback as N}from"react";import{Alert as Nn,Animated as f,Easing as xo,PanResponder as Tn,Platform as Ns,UIManager as vn,LogBox as wo}from"react-native";import{NavigationContext as En}from"@react-navigation/native";import{I18nextProvider as Pn,i18n as kn,setLanguage as In,getLanguage as Dn,useTranslation as Fn}from"./i18n";import On from"./components/ErrorBoundary";import _n from"./components/Inspector/MainScreen";import Bn from"./components/Inspector/GlobalCrashScreenModal";import{InspectorContext as Vn,animateNextLayout as Un}from"./components/Inspector/InspectorContext";import{formatDisplayUrl as qn,getNavigationInfo as bo,getLogPageName as Ts,deduplicateLogs as Bt,getDomainColor as Ro,getEventCategory as Hn,matchNetworkLogQuery as Wn,scoreNetworkLogQuery as Gn,setupMemoryWarningHandler as zn,isUrlHidden as jn}from"./helpers";import{loadSettings as Jn,saveSettings as $n,setCustomStorage as Qn,clearPersistedSettings as Xn,calculateRamBasedLimits as Ao}from"./helpers/settingsStore";import{getNativeSystemMetrics as Yn,pushNativeLogRecord as Ge,fetchNativeCachedPage as Zn}from"./native/NativeInspector";import{setupNetworkLogger as Kn,clearNetworkLogs as Mo,subscribeNetworkLogs as ea,getNetworkLogs as No,setNetworkModuleEnabled as ta,setMaxNetworkLogsLimit as sa,setRouteInfoProvider as To}from"./customHooks/networkLogger";import{setupConsoleLogger as ra,clearConsoleLogs as vo,subscribeConsoleLogs as oa,setConsoleModuleEnabled as na}from"./customHooks/consoleLogger";import{IGNORED_LOG_PREFIXES as Te}from"./customHooks/logFilters";import{setupGlobalCrashHandler as aa,subscribeCrashEvents as ia,getCrashRecords as Vt,clearCrashRecords as Eo,setMaxCrashLogsLimit as Po,setCrashModuleEnabled as la,DEFAULT_CRASH_IGNORED_TYPES as ko,setCrashIgnoredTypesConfig as ca,setCrashModalTriggerPolicyConfig as ua,applyCrashPolicyPreset as fa}from"./customHooks/crashHandler";import{subscribePushEvents as da,getPushRecords as pa,clearPushRecords as ma,setMaxPushRecordsLimit as ha,simulateTestPush as ga}from"./customHooks/pushNotificationLogger";import{setupSocketLogger as Sa,clearSocketRecords as ya,subscribeSocketRecords as Ca,getSocketRecords as La,setSocketModuleEnabled as xa,setMaxSocketRecordsLimit as wa,simulateTestSocket as ba,setSocketRouteInfoProvider as Io,deleteSocketRecord as Ra,deleteMultipleSocketRecords as Aa}from"./customHooks/socketLogger";import{trackActiveTelemetryHeartbeat as Ma,setTelemetryEnabled as Do,trackInspectorTabView as Fo,trackInspectorScreenView as Na}from"./helpers/telemetry";import{subscribeAnalyticsEvents as Ta,clearAnalyticsEvents as Oo,autoSetupAnalyticsLogger as va,isAnalyticsConnected as vs,setAnalyticsModuleEnabled as Ea}from"./customHooks/analyticsLogger";import{getReduxState as Es,subscribeReduxState as Pa,setReduxAutoRefresh as ka,getLastActionForReducer as Ps,clearActionHistory as Ia,isReduxConnected as ks,setReduxModuleEnabled as Da}from"./customHooks/reduxLogger";import{hideNativeFloatingButton as ve,subscribeNativeFloatingButtonPress as Fa,subscribeNativeDeviceShake as Oa,enableNativeCrashProtection as _a,isNativeModuleAvailable as Ba}from"./native/NativeInspector";import{fetchRemoteConfigSettings as Va}from"./helpers/remoteConfig";import{ScreenCapture as Ua}from"./capture";import{LIB_VERSION as qa,DEFAULT_HIDDEN_URL_PATTERNS as Is}from"./constants";import{toggleGlobalTheme as _o}from"./styles";const Ha=({enabled:I=!0,storage:G,navigationRef:v,appIcon:Fs,environment:Os,initialVisible:Bo=!1,visible:ze,remoteConfig:je=!1,captureWidgetEnabled:Vo})=>{Qn(G||null);const{t:p}=Fn(),[Je,Ut]=o(!1),[_s,$e]=o(null),[Bs,Qe]=o({}),[Xe,qt]=o(90),[Ye,Ht]=o("slide"),[x,z]=o([]),[h,j]=o(ze??Bo??!1),[Vs,Wt]=o(!1),[Gt,Us]=o(!1),Uo=N(()=>{Wt(!0),j(!1)},[]),qo=N(()=>{Us(!0),j(!1),ve().catch(()=>{})},[]);l(()=>{ze!==void 0&&j(ze)},[ze]);const[qs,Hs]=o(!1),[g,zt]=o(null),[Ze,Ee]=o(new Set),[Ke,fe]=o(new Set),[Ws,D]=o({visible:!1,title:"",message:"",onConfirm:()=>{}}),[w,Gs]=o(""),[de,Ho]=o("all"),[pe,Wo]=o(!1),[me,Go]=o(!1),[he,jt]=o(!0),[re,Jt]=o(()=>[...Is]),[F,zo]=o("all"),[zs,$t]=o(""),[js,jo]=o(""),[Js,Qt]=o(null),[$s,Xt]=o(null),[Qs,Jo]=o("state"),[Xs,Ys]=o("response");l(()=>(wo.ignoreAllLogs(I),()=>{wo.ignoreAllLogs(!1)}),[I]),l(()=>{g&&(Ys("response"),$t(""))},[g]);const[oe,Yt]=o(new Set),[ne,Zt]=o(new Set),[ge,$o]=o("all"),[Pe,Qo]=o("all"),[Se,Xo]=o("time_desc"),[Zs,Kt]=o({}),[es,et]=o(()=>new Map),[Ks,tt]=o({}),[er,Yo]=o(!0),[st,Zo]=o("newest"),[rt,Ko]=o("newest"),[tr,sr]=o(!0),[rr,or]=o(!0),[nr,ar]=o(!1),[ir,lr]=o(!1),[u,ae]=o("apis"),[ye,Ce]=o([]),[H,ie]=o([]),ot=C([]),ts=C([]),ss=C([]),[cr,rs]=o(null),[ur,fr]=o(0),[dr,pr]=o(0),[mr,hr]=o(0),[gr,Sr]=o(0),[yr,en]=o(null),nt=N(async()=>{try{const t=await Ua.getMediaList(),e=t?t.length:0;return Sr(e),e}catch{return Sr(0),0}},[]);l(()=>{h&&nt()},[h,nt]);const[le,J]=o(()=>Vt()),[Cr,ce]=o(null),[os,ke]=o(null),[$,at]=o(50),[Le,ns]=o(()=>({...ko})),[xe,Lr]=o("fatal_only");l(()=>{Po($)},[$]),l(()=>{ca(Le)},[Le]),l(()=>{ua(xe)},[xe]);const xr=N(t=>{const e=fa(t);ns(e)},[]);l(()=>{h&&(u==="apis"&&pr(x.length),u==="logs"&&fr(H.length),u==="crash"&&hr(le.length))},[h]),l(()=>{u==="apis"&&pr(x.length)},[u,x.length]),l(()=>{u==="logs"&&fr(H.length)},[u,H.length]),l(()=>{u==="crash"&&hr(le.length)},[u,le.length]);const[Q,wr]=o(()=>pa()),[br,Rr]=o(null),[Ie,tn]=o(""),[W,sn]=o("all"),[it,rn]=o(0),[lt,as]=o(50);l(()=>{ha(lt)},[lt]),l(()=>da(e=>{wr(e)}),[]);const Ar=m(()=>u==="push"?0:Math.max(0,Q.length-it),[u,Q.length,it]);l(()=>{h&&u==="push"&&rn(Q.length)},[h,u,Q.length]);const Mr=m(()=>{let t=Q;if(W!=="all"){if(W==="foreground")t=t.filter(e=>(e.appState||"").toLowerCase()==="foreground");else if(W==="background")t=t.filter(e=>(e.appState||"").toLowerCase()==="background");else if(W==="opened")t=t.filter(e=>e.action==="opened");else if(W.startsWith("source:")){const e=W.replace("source:","").toLowerCase();t=t.filter(s=>(s.source||"").toLowerCase()===e)}}if(Ie.trim()){const e=Ie.trim().toLowerCase();t=t.filter(s=>!!(s.title&&s.title.toLowerCase().includes(e)||s.body&&s.body.toLowerCase().includes(e)||s.id&&s.id.toLowerCase().includes(e)||s.source&&s.source.toLowerCase().includes(e)||s.domain&&s.domain.toLowerCase().includes(e)||s.channelId&&s.channelId.toLowerCase().includes(e)||s.data&&JSON.stringify(s.data).toLowerCase().includes(e)))}return t},[Q,W,Ie]),[X,ct]=o(()=>La()),[De,we]=o(null),[Fe,on]=o(""),[B,nn]=o("all"),[ut,an]=o(0),[ft,ln]=o(50);l(()=>{wa(ft)},[ft]),l(()=>Ca(e=>{ct(e)}),[]);const Nr=m(()=>u==="socket"?0:Math.max(0,X.length-ut),[u,X.length,ut]);l(()=>{h&&u==="socket"&&an(X.length)},[h,u,X.length]);const Tr=m(()=>{let t=X;if(B!=="all"&&(B==="open"?t=t.filter(e=>(e.status||"open").toLowerCase()==="open"):B==="closed"?t=t.filter(e=>(e.status||"").toLowerCase()==="closed"):B==="error"?t=t.filter(e=>(e.status||"").toLowerCase()==="error"):B==="sio"?t=t.filter(e=>e.client==="socket.io"||e.url.includes("/socket.io")):B==="wss"?t=t.filter(e=>e.url.startsWith("wss://")):B==="ws"&&(t=t.filter(e=>e.url.startsWith("ws://")))),Fe.trim()){const e=Fe.trim().toLowerCase();t=t.filter(s=>!!(s.url&&s.url.toLowerCase().includes(e)||s.id&&s.id.toLowerCase().includes(e)||s.client&&s.client.toLowerCase().includes(e)||s.caller&&s.caller.toLowerCase().includes(e)||s.query&&JSON.stringify(s.query).toLowerCase().includes(e)||s.frames&&s.frames.some(r=>!!(r.eventName&&r.eventName.toLowerCase().includes(e)||typeof r.data=="string"&&r.data.toLowerCase().includes(e)||r.data&&typeof r.data=="object"&&JSON.stringify(r.data).toLowerCase().includes(e)))))}return t},[X,B,Fe]),[be,dt]=o(300),[Y,is]=o({info:!0,warn:!0,error:!0}),Z=m(()=>H.filter(e=>{const s=e.type;if(s==="info"&&!Y?.info||s==="warn"&&!Y?.warn||s==="error"&&!Y?.error)return!1;const r=e.message||"";return![...Te&&Te.info||[],...Te&&Te.warn||[],...Te&&Te.error||[]].filter(d=>typeof d=="string"&&d.trim().length>0).some(d=>r.toLowerCase().trim().startsWith(d.toLowerCase().trim())||r.toLowerCase().trim().includes(d.toLowerCase().trim()))}).slice(0,be),[H,Y,be]),[V,vr]=o(""),[U,ls]=o(new Set(["user-log"])),[Er,cn]=o(null),[Pr,un]=o(!1),[kr,fn]=o(!1),[Ir,dn]=o("module"),[E,pt]=o({apis:!0,logs:!0,perf:!0,analytics:!0,redux:!0,crash:!0,push:!0,socket:!0,device:!0,storage:!0,media:!0}),[O,mt]=o(250),[Re,ht]=o(150),[Ae,cs]=o(!0),[us,pn]=o(1800),[Me,fs]=o(!0),[gt,ds]=o(1),[St,ps]=o(60),[yt,ms]=o(.5),[Ct,hs]=o(0),[Lt,gs]=o(120),[xt,Ss]=o("png"),[wt,ys]=o("none"),[bt,Cs]=o(!0),[Rt,Ls]=o(!0),[At,Mt]=o(Vo??!0),[Dr,mn]=o(!1),[Nt,xs]=o(.3),[K,Tt]=o("apis"),[ee,ws]=o(!1),[bs,Rs]=o(!0),[Fr,hn]=o(!1);l(()=>{ta(!!E.apis),na(!!E.logs),Ea(!!E.analytics),Da(!!E.redux),la(!!E.crash),xa(!!E.socket)},[E]),l(()=>{Yn().then(t=>{if(t){const e=t.totalPhysicalRamMb-t.residentRamMb,s=Math.max(200,Math.round(e>0?e:1500));if(pn(s),Ae){const r=Ao(s);mt(r.maxNetworkLogs),dt(r.maxConsoleLogs),ht(r.maxAnalyticsEvents),at(r.maxCrashRecords),as(r.maxPushRecords)}}}).catch(()=>{})},[Ae]);const gn=async()=>{await Xn(),Ut(!1),_o(!1),qt(90),Ht("slide"),pt({apis:!0,logs:!0,perf:!0,analytics:!0,redux:!0,crash:!0,push:!0,socket:!0,device:!0,storage:!0,media:!0}),Tt("apis"),cs(!0);const t=Ao(us);at(t.maxCrashRecords),mt(t.maxNetworkLogs),dt(t.maxConsoleLogs),ht(t.maxAnalyticsEvents),as(t.maxPushRecords),is({info:!0,warn:!0,error:!0}),fs(!0),ds(1),ps(30),ms(1),hs(0),gs(120),Ss("png"),ys("none"),Cs(!0),Ls(!0),Mt(!0),ws(!1),Rs(!0),xs(.3),ls(new Set(["user-log"])),Jt([...Is]),Nn.alert("Settings Reset","All settings have been reset to default values.")},Or=C(!1);l(()=>{let t=!1;return Jn().then(e=>{if(!t){if(e.language&&In(e.language),e.isDark!=null&&(Ut(e.isDark),_o(e.isDark)),e.modalHeightPercent!=null&&qt(e.modalHeightPercent),e.modalAnimationType&&Ht(e.modalAnimationType),e.tabVisibility&&pt(s=>({...s,...e.tabVisibility,apis:!0})),e.defaultTab&&Tt(e.defaultTab),e.isAutoRamLimitEnabled!=null&&cs(e.isAutoRamLimitEnabled),e.maxNetworkLogs!=null&&mt(e.maxNetworkLogs),e.maxConsoleLogs!=null&&dt(e.maxConsoleLogs),e.maxAnalyticsEventsLimit!=null&&ht(e.maxAnalyticsEventsLimit),e.maxCrashLogs!=null&&at(e.maxCrashLogs),e.crashIgnoredTypes!=null&&ns({...ko,...e.crashIgnoredTypes}),e.crashModalTriggerPolicy!=null&&Lr(e.crashModalTriggerPolicy),e.showConsoleLevels&&is(e.showConsoleLevels),e.reduxAutoRefresh!=null&&fs(e.reduxAutoRefresh),e.reduxExpandDepth!=null&&ds(e.reduxExpandDepth),e.captureFps!=null&&ps(e.captureFps),e.captureScale!=null&&ms(e.captureScale),e.captureBitrate!=null&&hs(e.captureBitrate),e.captureMaxDurationSeconds!=null&&gs(e.captureMaxDurationSeconds),e.captureImageFormat&&Ss(e.captureImageFormat),e.captureAudioMode&&ys(e.captureAudioMode),e.captureAutoHide!=null&&Cs(e.captureAutoHide),e.captureAutoGif!=null&&Ls(e.captureAutoGif),e.captureWidgetEnabled!=null&&Mt(e.captureWidgetEnabled),e.peekOpacity!=null&&xs(Math.max(.05,Math.min(1,e.peekOpacity))),e.showDuplicateLogs!=null&&ws(e.showDuplicateLogs),e.showUpdateToast!=null&&Rs(e.showUpdateToast),e.isGroupByPageEnabled!=null&&jt(e.isGroupByPageEnabled),Array.isArray(e.hiddenUrlPatterns)){const s=Array.from(new Set([...Is,...e.hiddenUrlPatterns]));Jt(s)}if(e.defaultTab){const s=e.defaultTab,r={apis:!0,logs:!0,analytics:!1,redux:!1,crash:!1,device:!1,storage:!1,...e.tabVisibility||{},apis:!0};ae(r[s]?s:"apis")}Or.current=!0}}),()=>{t=!0}},[]),l(()=>{let t=!0;if(je)return Va(typeof je=="object"?je:{}).then(e=>{!t||!e||(e.modules&&pt(s=>({...s,...e.modules,apis:e.modules?.apis??!0})),e.captureWidgetEnabled!==void 0&&Mt(e.captureWidgetEnabled))}).catch(()=>{}),()=>{t=!1}},[je]),l(()=>{Or.current&&$n({isDark:Je,language:Dn(),modalHeightPercent:Xe,modalAnimationType:Ye,tabVisibility:E,defaultTab:K,maxNetworkLogs:O,maxConsoleLogs:be,maxAnalyticsEventsLimit:Re,maxCrashLogs:$,crashIgnoredTypes:Le,crashModalTriggerPolicy:xe,isAutoRamLimitEnabled:Ae,isGroupByPageEnabled:he,showConsoleLevels:Y,reduxAutoRefresh:Me,reduxExpandDepth:gt,showDuplicateLogs:ee,showUpdateToast:bs,captureFps:St,captureScale:yt,captureBitrate:Ct,captureMaxDurationSeconds:Lt,captureImageFormat:xt,captureAudioMode:wt,captureAutoHide:bt,captureAutoGif:Rt,captureWidgetEnabled:At,peekOpacity:Nt,hiddenUrlPatterns:re})},[Je,Xe,Ye,E,K,O,be,Re,$,Le,xe,Ae,he,Y,Me,gt,ee,St,yt,Ct,Lt,xt,wt,bt,Rt,At,Nt]);const[Oe,Sn]=o(null),_r=m(()=>{if(!Oe)return!1;const t=r=>r.replace(/^v/,"").split(".").map(n=>parseInt(n,10)||0),e=t(qa),s=t(Oe);for(let r=0;r<3;r++){if((s[r]||0)>(e[r]||0))return!0;if((s[r]||0)<(e[r]||0))return!1}return!1},[Oe]);l(()=>{if(typeof __DEV__>"u"||!__DEV__)return;let t=!1;return fetch("https://registry.npmjs.org/react-native-inapp-inspector/latest").then(e=>e.ok?e.json():null).then(e=>{!t&&e&&typeof e.version=="string"&&Sn(e.version)}).catch(()=>{}),()=>{t=!0}},[]),l(()=>{ka(Me)},[Me]),l(()=>{u==="redux"&&!ks()&&ae("apis"),u==="analytics"&&!vs()&&ae("apis")},[u]);const Br=t=>{t!=="apis"&&(t==="redux"&&!ks()||t==="analytics"&&!vs()||pt(e=>{const s=!e[t],r={...e,[t]:s};return!s&&u===t&&(Un(),ae("apis")),!s&&K===t&&Tt("apis"),r}))},Vr=N(async(t,e="")=>{if(t==="apis"||t==="logs"||t==="analytics"||t==="crash"){const s=await Zn(t,0,100,e);s&&s.items&&s.items.length>0&&(t==="apis"?z(s.items):t==="logs"?ie(s.items):t==="analytics"?Ce(s.items):t==="crash"&&J(s.items))}},[]),Ur=N(t=>{t==="redux"&&!ks()||t==="analytics"&&!vs()||(zt(null),vt(null),rs(null),Qt(null),Xt(null),ce(null),we(null),ae(t),(t==="apis"&&x.length===0||t==="logs"&&H.length===0||t==="analytics"&&ye.length===0||t==="crash"&&le.length===0)&&Vr(t),Fo(t))},[x.length,H.length,ye.length,le.length,Vr]),[qr,vt]=o(null),[Ne,Hr]=o(""),[a,Wr]=o({categories:new Set(["all"]),screens:new Set,sources:new Set(["all"]),userTypes:new Set(["all"]),timeWindow:"all",payloadComplexity:"all",hasRevenue:!1,hasItems:!1,hasUserProps:!1,hasParams:!1,onlyDuplicates:!1,onlyConversions:!1,sortBy:"time_desc"}),Gr=m(()=>!!(a.categories.size>0&&!a.categories.has("all")||a.screens.size>0||a.sources.size>0&&!a.sources.has("all")||a.userTypes.size>0&&!a.userTypes.has("all")||a.timeWindow!=="all"||a.payloadComplexity!=="all"||a.hasRevenue||a.hasItems||a.hasUserProps||a.hasParams||a.onlyDuplicates||a.onlyConversions||a.sortBy!=="time_desc"),[a]),zr=N(()=>{Wr({categories:new Set(["all"]),screens:new Set,sources:new Set(["all"]),userTypes:new Set(["all"]),timeWindow:"all",payloadComplexity:"all",hasRevenue:!1,hasItems:!1,hasUserProps:!1,hasParams:!1,onlyDuplicates:!1,onlyConversions:!1,sortBy:"time_desc"})},[]),[jr,yn]=o(!1),[Jr,Cn]=o(!1),[$r,Qr]=o(new Set),_e=C(new Set),[Et,As]=o(null),Xr=Mn.useContext(En)!==void 0,P=C({path:"",params:null});l(()=>(To(()=>P.current),Io(()=>P.current),()=>{To(null),Io(null)}),[]),l(()=>{if(Et){const t=bo(Et);t?.path&&(P.current=t)}},[Et]),l(()=>{if(!v)return;const t=()=>{try{if(typeof v.isReady=="function"&&v.isReady()){const s=typeof v.getCurrentRoute=="function"?v.getCurrentRoute():null;s?.name&&(P.current={path:s.name,params:s.params||null});const r=v.getRootState();if(r){As(r);const n=bo(r);n?.path&&(P.current=n)}}}catch{}};t();const e=typeof v.addListener=="function"?v.addListener("state",()=>{t()}):null;return()=>{e&&e()}},[v]);const b=C(new Map),ue=C(new Set),[Yr,Zr]=o(new Set),Be=C(new f.Value(1)).current,Ve=C(new f.Value(.4)).current,Ue=C(new f.Value(1)).current,qe=C(new f.Value(0)).current,He=C(new f.Value(0)).current,T=C(new f.ValueXY({x:0,y:0})).current,Pt=C({x:0,y:0});l(()=>{const t=T.x.addListener(s=>Pt.current.x=s.value),e=T.y.addListener(s=>Pt.current.y=s.value);return()=>{T.x.removeListener(t),T.y.removeListener(e)}},[T]);const kt=C(!1),Kr=C(Tn.create({onStartShouldSetPanResponder:()=>!1,onMoveShouldSetPanResponder:(t,e)=>Math.abs(e.dx)>4||Math.abs(e.dy)>4,onPanResponderGrant:()=>{kt.current=!0,T.setOffset({x:Pt.current.x,y:Pt.current.y}),T.setValue({x:0,y:0})},onPanResponderMove:f.event([null,{dx:T.x,dy:T.y}],{useNativeDriver:!1}),onPanResponderRelease:()=>{T.flattenOffset(),setTimeout(()=>{kt.current=!1},50)},onPanResponderTerminate:()=>{T.flattenOffset(),kt.current=!1}})).current,eo=N(()=>{f.sequence([f.timing(He,{toValue:1,duration:320,useNativeDriver:!1}),f.timing(He,{toValue:0,duration:0,useNativeDriver:!1})]).start(),xn()},[He]);l(()=>{Ns.OS==="android"&&vn.setLayoutAnimationEnabledExperimental?.(!0)},[]),l(()=>{if(h)return;const t=f.loop(f.sequence([f.timing(Be,{toValue:1.2,duration:800,useNativeDriver:!1}),f.timing(Be,{toValue:1,duration:800,useNativeDriver:!1})]));return t.start(),()=>t.stop()},[Be,h]),l(()=>{if(h)return;const t=f.loop(f.sequence([f.timing(qe,{toValue:1,duration:3200,easing:xo.inOut(xo.ease),useNativeDriver:!1}),f.delay(3500),f.timing(qe,{toValue:0,duration:0,useNativeDriver:!1})]));return t.start(),()=>t.stop()},[qe,h]),l(()=>{const t=f.loop(f.sequence([f.timing(Ve,{toValue:1,duration:1200,useNativeDriver:!1}),f.timing(Ve,{toValue:.4,duration:1200,useNativeDriver:!1})]));return t.start(),()=>t.stop()},[Ve]),l(()=>{const t=f.loop(f.sequence([f.timing(Ue,{toValue:1.3,duration:800,useNativeDriver:!1}),f.timing(Ue,{toValue:.8,duration:800,useNativeDriver:!1})]));return t.start(),()=>t.stop()},[Ue]);const Ln=m(()=>Ba(),[]),te=(Ns.OS==="ios"||Ns.OS==="android")&&Ln;l(()=>{te&&ve().catch(()=>{})},[te,h,Gt]),l(()=>{if(!te)return;const t=Fa(()=>{ve().catch(()=>{}),j(!0)});return()=>{t()}},[te]),l(()=>{if(!te)return;const t=Oa(()=>{j(e=>{const s=!e;return s&&ve().catch(()=>{}),s})});return()=>{t()}},[te]);const to=C(h);l(()=>{if(to.current=h,h){Na("InspectorModal");const t=K==="apis"||E?.[K]?K:"apis";ae(t),Fo(t);const e=ot.current.length>0?ot.current:No();if(e.length>0){const i=Bt(e),d=new Set(i.map(L=>L.id));ue.current=d,i.forEach(L=>{if(!b.current.has(L.id)){const R=L?.routeInfo||P.current;b.current.set(L.id,R)}}),z(i)}ts.current.length>0&&ie(ts.current),ss.current.length>0&&Ce(ss.current);const s=Es();s&&($e(typeof s=="object"?{...s}:s),Qe({...Ps()}));const r=Vt();r.length>0&&J(r);const n=requestAnimationFrame(()=>{Hs(!0)});return()=>{cancelAnimationFrame(n)}}else Hs(!1),Ee(new Set),fe(new Set)},[h]),l(()=>{Kn(),ra(),va(),aa(),Sa(),_a().catch(()=>{});const t=zn(),e=No();if(e.length>0){ot.current=e;const c=Bt(e);ue.current=new Set(c.map(k=>k.id)),z(c)}const s=to,r=ia(c=>{if(c.message==="__CLEARED__"){J([]),ce(null),ke(null);return}const k=Vt();k.length>0&&Ge("crash",JSON.stringify(k[0])),J(k),c.crashRecord&&c.shouldShowModal!==!1&&ke(c.crashRecord)}),n=Vt();n.length>0&&(n.forEach(c=>Ge("crash",JSON.stringify(c))),J(n));let i,d=!0;const L=ea(c=>{if(ot.current=c,c.length>0&&Ge("apis",JSON.stringify(c[0])),!s.current)return;clearTimeout(i);const k=()=>{const M=Bt(c),S=new Set(M.map(q=>q.id)),y=new Set;S.forEach(q=>{ue.current.has(q)||y.add(q)}),ue.current=S,y.size>0&&(y.forEach(q=>{if(!b.current.has(q)){const Rn=M.find(An=>An.id===q)?.routeInfo||P.current;b.current.set(q,Rn)}}),Zr(y),setTimeout(()=>Zr(new Set),1200)),z(M)};if(d){d=!1;const M=Bt(c),S=new Set(M.map(y=>y.id));ue.current=S,M.forEach(y=>{if(!b.current.has(y.id)){const q=y?.routeInfo||P.current;b.current.set(y.id,q)}}),z(M)}else i=setTimeout(k,250)});let R,Ft=!0;const Ot=Ta(c=>{if(ss.current=c,c.length>0&&Ge("analytics",JSON.stringify(c[0])),!s.current)return;clearTimeout(R);const k=()=>{const M=new Set(c.map(y=>y.id)),S=new Set;M.forEach(y=>{_e.current.has(y)||S.add(y)}),_e.current=M,S.size>0&&(S.forEach(y=>{b.current.has(y+1e6)||b.current.set(y+1e6,P.current)}),Qr(S),setTimeout(()=>Qr(new Set),1200)),Ce(c)};if(Ft){Ft=!1;const M=new Set(c.map(S=>S.id));_e.current=M,Ce(c)}else R=setTimeout(k,200)});let We,_=!0;const Ms=oa(c=>{ts.current=c,c.length>0&&Ge("logs",JSON.stringify(c[0])),s.current&&(clearTimeout(We),_?(_=!1,ie(c)):We=setTimeout(()=>{ie(c)},200))}),se=Es();se&&($e(typeof se=="object"?{...se}:se),Qe({...Ps()}));const _t=Pa(()=>{if(!s.current)return;const c=Es();$e(c&&typeof c=="object"?{...c}:c),Qe({...Ps()})});return()=>{L(),clearTimeout(i),Ot(),clearTimeout(R),Ms(),clearTimeout(We),_t(),r(),t()}},[]),l(()=>{sa(O)},[O]),l(()=>{Po($)},[$]),l(()=>{sr(!0),or(!0),ar(!1),lr(!1),$t("")},[g]);const A=m(()=>{let t=x.filter(e=>{if(re&&re.length>0&&jn(e.url,re))return!1;if(F&&F!=="all"){if(F==="errors"){if(!(e.status===0||e.status==null||typeof e.status=="number"&&e.status>=400))return!1}else if(F==="success"){if(!(typeof e.status=="number"&&e.status>=200&&e.status<400))return!1}else if(F==="slow"){if((e.duration||0)<500)return!1}else if(F==="graphql"){if(!((e.url||"").toLowerCase().includes("graphql")||(e.client||"").toLowerCase().includes("graphql")||(e.client||"").toLowerCase().includes("apollo")))return!1}else if(e.method?.toUpperCase()!==F.toUpperCase())return!1}if(oe.size>0&&!oe.has("all")){const s=typeof e.status=="number"?e.status:parseInt(String(e.status),10);if(![...oe].some(n=>{const i=String(n).toLowerCase();if(i==="all")return!0;if(i==="failed")return e.status===0||e.status==null||!isNaN(s)&&s>=400;if(i==="2xx")return!isNaN(s)&&s>=200&&s<300;if(i==="3xx")return!isNaN(s)&&s>=300&&s<400;if(i==="4xx")return!isNaN(s)&&s>=400&&s<500;if(i==="5xx")return!isNaN(s)&&s>=500&&s<600;if(!isNaN(s)){const d=parseInt(String(n),10);if(!isNaN(d)&&d>=100)return s===d}return String(e.status).startsWith(String(n)[0])}))return!1}if(ne.size>0&&!ne.has("all")&&![...ne].some(r=>String(r).toUpperCase()==="ALL"?!0:e.method?.toUpperCase()===String(r).toUpperCase()))return!1;if(ge!=="all"){const s=e.duration||0;if(ge==="fast"&&s>=200||ge==="normal"&&(s<200||s>500)||ge==="slow"&&s<=500)return!1}if(Pe!=="all"){const s=(e.url||"").toLowerCase().startsWith("https");if(Pe==="https"&&!s||Pe==="http"&&s)return!1}if(w&&w.trim().length>0){const s=b.current.get(e.id)?.path||"";if(!Wn(e,w,s,{scope:de,isRegex:pe,isCaseSensitive:me}))return!1}return!0});if(Se==="time_asc"||st==="oldest")t=[...t].reverse();else if(Se==="duration_desc")t=[...t].sort((e,s)=>(s.duration||0)-(e.duration||0));else if(Se==="duration_asc")t=[...t].sort((e,s)=>(e.duration||0)-(s.duration||0));else if(Se==="size_desc")t=[...t].sort((e,s)=>{const r=(e.response?JSON.stringify(e.response).length:0)+(e.request?JSON.stringify(e.request).length:0);return(s.response?JSON.stringify(s.response).length:0)+(s.request?JSON.stringify(s.request).length:0)-r});else if(w&&w.trim().length>0){const e=new Map;for(const s of t){const r=b.current.get(s.id)?.path||"",n=Gn(s,w,r,{scope:de,isRegex:pe,isCaseSensitive:me});e.set(s.id,n)}t=[...t].sort((s,r)=>{const n=(e.get(r.id)||0)-(e.get(s.id)||0);return n!==0?n:(r.startTime||0)-(s.startTime||0)})}if(!ee){const e=[];for(const s of t){const r=e[e.length-1];r&&r.method===s.method&&r.url===s.url&&r.status===s.status?e[e.length-1]={...r,duplicateCount:(r.duplicateCount||1)+1}:e.push({...s,duplicateCount:1})}t=e}return t},[x,re,w,de,pe,me,F,oe,ne,ge,Pe,Se,st,ee]),so=m(()=>{const t=new Set;return x.forEach(e=>{e.method&&t.add(e.method.toUpperCase())}),["ALL",...Array.from(t)]},[x]),ro=N((t,e)=>{Kt(s=>{const r=s[t]||new Set(["success","failed","loading"]),n=new Set(r);return n.has(e)?n.delete(e):n.add(e),{...s,[t]:n}})},[]),It=m(()=>{if(P.current?.path){const t=P.current.path.split(" \u2794 ").map(e=>e.trim()).filter(Boolean);return t.length>0?t[t.length-1]:P.current.path}if(A.length>0){const t=A[0],e=b.current.get(t.id)||t?.routeInfo;return Ts(t,e)}return""},[A,Et]),oo=N(t=>{et(e=>{const s=new Map(e),n=!!(w&&w.trim().length>0)?!0:t===It,i=s.has(t)?s.get(t):n;return s.set(t,!i),s})},[It,w]);l(()=>{tt({}),et(new Map)},[w,de,pe,me,F,oe,ne,O]);const no=N((t,e=10)=>{tt(s=>({...s,[t]:(s[t]||O||50)+e}))},[O]),ao=m(()=>{const t=!!(w&&w.trim().length>0);if(!he||t)return A.map((n,i)=>{const d=b.current.get(n.id)||n?.routeInfo,L=Ts(n,d);return{type:"log",id:`flat-log-${n.id}`,log:n,isLast:i===A.length-1,color:Ro(L)}});const e=[],s=new Map;for(let n=0;n<A.length;n++){const i=A[n],d=b.current.get(i.id)||i?.routeInfo,L=Ts(i,d);let R=s.get(L);R||(R={pageName:L,color:Ro(L),logs:[]},s.set(L,R)),R.logs.push(i)}let r=0;return s.forEach(n=>{let i=0,d=0,L=0;n.logs.forEach(_=>{_.status==null?L++:_.status===0||_.status>=400?d++:i++});const R=Zs[n.pageName]||new Set(["success","failed","loading"]),Ft=t?!0:n.pageName===It,Ot=es.has(n.pageName)?!es.get(n.pageName):!Ft,We=n.logs[0]?.startTime||0;if(e.push({type:"header",id:`hdr-${n.pageName}`,pageName:n.pageName,color:n.color,stats:{success:i,failed:d,loading:L},timestamp:We,activeFilters:R,isCollapsed:Ot,isFirst:r===0}),r++,!Ot){const _=n.logs.filter(S=>S.status==null?R.has("loading"):S.status===0||S.status>=400?R.has("failed"):R.has("success")),Ms=O||50,se=Ks[n.pageName]||Ms,_t=_.slice(0,se),c=_.length>se;_t.forEach(S=>{e.push({type:"log",id:`log-${S.id}`,log:S,isLast:!1,color:n.color})});const k=Math.max(0,_.length-se),M=Math.min(k||10,10);e.push({type:"loadMore",id:`loadmore-${n.pageName}`,pageName:n.pageName,color:n.color,remainingCount:k,totalCount:_.length,loadedCount:_t.length,loadMoreStep:M,hasMore:c})}}),e},[he,A,x,Zs,es,It,Ks,O,w]),{minStart:io,totalRange:lo}=m(()=>{if(A.length===0)return{minStart:0,totalRange:0};const t=Math.min(...A.map(s=>s.startTime)),e=Math.max(...A.map(s=>s.startTime+(s.duration||10)));return{minStart:t,totalRange:e-t}},[A]),Dt=m(()=>{if(!g)return null;const t=x.findIndex(e=>e.id===g.id);if(t===-1)return null;for(let e=t+1;e<x.length;e++){const s=x[e];if(s.url===g.url&&s.method===g.method)return s}return null},[g,x]),co=Dt?Dt.request:null,uo=Dt?Dt.response:null,fo=m(()=>{let t=ye;if(Ne&&Ne.trim().length>0){const r=Ne.trim().toLowerCase().split(/\s+/).filter(Boolean);t=t.filter(n=>{const i=[n.name||"",JSON.stringify(n.params||""),JSON.stringify(n.userProperties||""),n.screenName||"",n.pageTitle||"",n.userId||"",n.source||""].join(" ").toLowerCase();return r.every(d=>i.includes(d))})}if(a.categories.size>0&&!a.categories.has("all")&&(t=t.filter(r=>{const n=Hn(r.name);return a.categories.has(n)})),a.timeWindow!=="all"){const r=Date.now(),n=a.timeWindow==="1m"?r-60*1e3:a.timeWindow==="5m"?r-300*1e3:a.timeWindow==="15m"?r-900*1e3:r-3600*1e3;t=t.filter(i=>i.timestamp>=n)}if(a.sources.size>0&&!a.sources.has("all")&&(t=t.filter(r=>a.sources.has(r.source||"manual"))),a.userTypes.size>0&&!a.userTypes.has("all")&&(t=t.filter(r=>{const n=!!(r.userId&&r.userId.trim()!=="");return!!(a.userTypes.has("identified")&&n||a.userTypes.has("anonymous")&&!n)})),a.payloadComplexity!=="all"&&(a.payloadComplexity==="none"?t=t.filter(r=>!r.params||Object.keys(r.params).length===0):a.payloadComplexity==="simple"?t=t.filter(r=>r.params&&Object.keys(r.params).length<=3):a.payloadComplexity==="heavy"&&(t=t.filter(r=>r.params&&Object.keys(r.params).length>3))),a.onlyConversions){const r=["purchase","item_purchase","ecommerce_purchase","sign_up","login","lead","generate_lead","tutorial_complete","add_payment_info","begin_checkout","spend_virtual_currency"];t=t.filter(n=>r.some(i=>n.name.toLowerCase().includes(i)))}a.screens.size>0&&(t=t.filter(r=>{const n=r.screenName||r.params?.firebase_screen||r.params?.screen_name||r.params?.firebase_screen_class||r.screenClass||"";return a.screens.has(n)})),a.hasRevenue&&(t=t.filter(r=>r.params?.value!=null&&!isNaN(Number(r.params.value))||r.params?.price!=null&&!isNaN(Number(r.params.price)))),a.hasItems&&(t=t.filter(r=>Array.isArray(r.params?.items)&&r.params.items.length>0)),a.hasUserProps&&(t=t.filter(r=>r.userProperties&&Object.keys(r.userProperties).length>0)),a.hasParams&&(t=t.filter(r=>r.params&&Object.keys(r.params).length>0));const e=[];for(const r of t){if(e.length===0){e.push({...r,count:1});continue}const n=e[e.length-1];n.name===r.name&&JSON.stringify(n.params)===JSON.stringify(r.params)&&JSON.stringify(n.userProperties)===JSON.stringify(r.userProperties)?(n.count=(n.count||1)+1,n.timestamp=r.timestamp,n.id=r.id):e.push({...r,count:1})}let s=e;return a.onlyDuplicates&&(s=s.filter(r=>(r.count||1)>1)),a.sortBy==="time_asc"?s=[...s].sort((r,n)=>r.timestamp-n.timestamp):a.sortBy==="revenue_desc"?s=[...s].sort((r,n)=>{const i=Number(r.params?.value??r.params?.price??0);return Number(n.params?.value??n.params?.price??0)-i}):a.sortBy==="count_desc"&&(s=[...s].sort((r,n)=>(n.count||1)-(r.count||1))),s.slice(0,Re)},[ye,Ne,a,Re]),po=m(()=>{let t=Z;if(U.size>0&&!U.has("all")&&(t=t.filter(e=>!!(U.has("user-log")&&e.sourceMethod==="log"||U.has("info")&&(e.sourceMethod==="info"||e.type==="info"&&e.sourceMethod!=="log")||U.has("warn")&&(e.type==="warn"||e.sourceMethod==="warn")||U.has("error")&&(e.type==="error"||e.sourceMethod==="error")||U.has("analytics")&&e.message?.toLowerCase().includes("[analytics error]")))),V&&V.trim().length>0){const e=V.trim().toLowerCase().split(/\s+/).filter(Boolean);t=t.filter(s=>{const r=[s.message||"",s.caller||"",s.type||"",s.sourceMethod||"",s.stack||""].join(" ").toLowerCase();return e.every(n=>n==="error"||n==="err"?s.type==="error"||r.includes(n):n==="warn"||n==="warning"?s.type==="warn"||r.includes(n):n==="info"&&s.type==="info"||r.includes(n))})}if(t=[...t].sort((e,s)=>rt==="newest"?s.timestamp-e.timestamp:e.timestamp-s.timestamp),!ee){const e=[];for(const s of t){const r=e[e.length-1];r&&r.type===s.type&&r.sourceMethod===s.sourceMethod&&r.message===s.message?e[e.length-1]={...r,duplicateCount:(r.duplicateCount||1)+1}:e.push({...s,duplicateCount:1})}t=e}return t},[Z,U,V,rt,ee]),mo=m(()=>{let t=Z;if(V&&V.trim().length>0){const s=V.trim().toLowerCase().split(/\s+/).filter(Boolean);t=Z.filter(r=>{const n=[r.message||"",r.caller||"",r.type||"",r.sourceMethod||"",r.stack||""].join(" ").toLowerCase();return s.every(i=>i==="error"||i==="err"?r.type==="error"||n.includes(i):i==="warn"||i==="warning"?r.type==="warn"||n.includes(i):i==="info"&&r.type==="info"||n.includes(i))})}const e=Z.length;return{all:`${t.length}/${e}`,info:`${t.filter(s=>s.sourceMethod==="info"||s.type==="info"&&s.sourceMethod!=="log").length}/${e}`,warn:`${t.filter(s=>s.type==="warn"||s.sourceMethod==="warn").length}/${e}`,error:`${t.filter(s=>s.type==="error"||s.sourceMethod==="error").length}/${e}`,"user-log":`${t.filter(s=>s.sourceMethod==="log").length}/${e}`,analytics:`${t.filter(s=>s.message.toLowerCase().includes("[analytics error]")).length}/${e}`}},[Z,V]),ho=N(()=>{j(!1),Wt(!1),setTimeout(()=>{zt(null),vt(null),rs(null),Qt(null),Xt(null),ce(null),we(null)},300)},[]);function xn(){Mo(),z([]),Ee(new Set),Kt({}),et(new Map),tt({}),Yt(new Set),Zt(new Set),Gs(""),ue.current=new Set,b.current=new Map,Oo(),Ce([]),Hr(""),_e.current=new Set,vo(),ie([]),fe(new Set),ls(new Set(["all"])),vr("")}function go(){if(u==="logs"){Ke.size>0?(ie(t=>t.filter(e=>!Ke.has(e.id))),fe(new Set)):D({visible:!0,title:p("console.clearLogsTitle","Clear Console Logs"),message:p("console.clearLogsMsg","Are you sure you want to clear all console logs?"),confirmText:p("common.clearAll","Clear All"),cancelText:p("common.cancel","Cancel"),onConfirm:()=>{D(t=>({...t,visible:!1})),vo(),ie([]),fe(new Set)}});return}if(u==="analytics"){D({visible:!0,title:p("analytics.clearEventsTitle","Clear Analytics"),message:p("analytics.clearEventsMsg","Are you sure you want to clear all analytics events?"),confirmText:p("common.clearAll","Clear All"),cancelText:p("common.cancel","Cancel"),onConfirm:()=>{D(t=>({...t,visible:!1})),Oo(),Ce([]),vt(null),_e.current=new Set}});return}if(u==="redux"){D({visible:!0,title:p("redux.clearTimelineTitle","Clear Redux Timeline"),message:p("redux.clearTimelineMsg","Are you sure you want to clear the dispatched action history?"),confirmText:p("common.clearAll","Clear All"),cancelText:p("common.cancel","Cancel"),onConfirm:()=>{D(t=>({...t,visible:!1})),Ia(),Qe({})}});return}if(u==="crash"){D({visible:!0,title:p("crash.clearTitle","Clear Crash Records"),message:p("crash.clearMessage","Are you sure you want to clear all intercepted crash records?"),confirmText:p("crash.clearConfirm","Clear All"),cancelText:p("crash.clearCancel","Cancel"),onConfirm:()=>{D(t=>({...t,visible:!1})),Eo(),J([]),ce(null)}});return}Ze.size>0?(z(t=>t.filter(e=>!Ze.has(e.id))),Ee(new Set)):D({visible:!0,title:p("network.clearLogsTitle","Clear Network Logs"),message:p("network.clearLogsMsg","Are you sure you want to clear all network logs?"),confirmText:p("common.clearAll","Clear All"),cancelText:p("common.cancel","Cancel"),onConfirm:()=>{D(t=>({...t,visible:!1})),wn()}})}function wn(){Mo(),z([]),Ee(new Set),Kt({}),et(new Map),tt({}),Yt(new Set),Zt(new Set),ue.current=new Set,b.current=new Map}const So=m(()=>{if(!g)return"";try{const e=new URL(g.url).pathname.split("/").filter(Boolean);return e.length>0?`/${e.slice(-2).join("/")}`:"/"}catch{const t=g.url.split("/").filter(Boolean);return t.length>0?`/${t.slice(-2).join("/")}`:g.url}},[g]),yo=m(()=>g?qn(g.url):"",[g]),Co=N(t=>{Ee(e=>{const s=new Set(e);return s.has(t)?s.delete(t):s.add(t),s})},[]),Lo=N(t=>{fe(e=>{const s=new Set(e);return s.has(t)?s.delete(t):s.add(t),s})},[]),bn=m(()=>({visible:h,setVisible:j,closeModal:ho,isMinimized:Vs,setIsMinimized:Wt,minimizeInspector:Uo,isDismissed:Gt,setIsDismissed:Us,dismissInspector:qo,isReady:qs,enabled:I,isEnabled:I,appIcon:Fs,environment:Os,modalHeightPercent:Xe,setModalHeightPercent:qt,modalAnimationType:Ye,setModalAnimationType:Ht,hasNavigationContext:Xr,setNavState:As,activeTab:u,switchActiveTab:Ur,tabVisibility:E,toggleTabVisibility:Br,lastReadApisCount:dr,lastReadLogsCount:ur,mediaCount:gr,refreshMediaCount:nt,selected:g,setSelected:zt,selectedEvent:qr,setSelectedEvent:vt,selectedLog:cr,setSelectedLog:rs,showHeaderInfo:er,setShowHeaderInfo:Yo,settingsPage:Er,setSettingsPage:cn,isAboutOpen:Pr,setIsAboutOpen:un,isSupportOpen:kr,setIsSupportOpen:fn,updateAvailable:_r,latestNpmVersion:Oe,clearAnim:He,activePulseAnim:Ve,unreadPulseAnim:Ue,runClearAllWithAnimation:eo,confirmModal:Ws,setConfirmModal:D,useNativeFab:te,fabPan:T,fabPanResponder:Kr,fabDraggedRef:kt,pulseAnim:Be,fabShineAnim:qe,logs:x,filteredLogs:A,groupedData:ao,search:w,setSearch:Gs,searchScope:de,setSearchScope:Ho,isRegexSearch:pe,setIsRegexSearch:Wo,isCaseSensitive:me,setIsCaseSensitive:Go,quickFilter:F,setQuickFilter:zo,statusFilters:oe,setStatusFilters:Yt,methodFilters:ne,setMethodFilters:Zt,latencyFilter:ge,setLatencyFilter:$o,protocolFilter:Pe,setProtocolFilter:Qo,networkSortBy:Se,setNetworkSortBy:Xo,availableMethods:so,sortOrder:st,setSortOrder:Zo,selectedLogs:Ze,toggleSelect:Co,minStart:io,totalRange:lo,newLogIds:Yr,toggleSectionFilter:ro,toggleSectionCollapse:oo,loadMoreSection:no,handleDelete:go,isGroupByPageEnabled:he,setIsGroupByPageEnabled:jt,hiddenUrlPatterns:re,setHiddenUrlPatterns:Jt,detailTitle:So,detailDisplayUrl:yo,apiDetailActiveTab:Xs,setApiDetailActiveTab:Ys,detailSearch:zs,setDetailSearch:$t,reqExpanded:tr,setReqExpanded:sr,resExpanded:rr,setResExpanded:or,showReqDiff:nr,setShowReqDiff:ar,showResDiff:ir,setShowResDiff:lr,prevRequestData:co,prevResponseData:uo,logRouteMapRef:b,consoleLogs:H,visibleConsoleLogs:Z,filteredConsoleLogs:po,logSearch:V,setLogSearch:vr,logFilters:U,setLogFilters:ls,logCounts:mo,logSortOrder:rt,setLogSortOrder:Ko,selectedConsoleLogs:Ke,setSelectedConsoleLogs:fe,toggleSelectConsoleLog:Lo,analyticsEvents:ye,filteredAnalyticsEvents:fo,analyticsSearch:Ne,setAnalyticsSearch:Hr,analyticsFilters:a,setAnalyticsFilters:Wr,isAnalyticsFilterApplied:Gr,resetAnalyticsFilters:zr,newEventIds:$r,isAnalyticsLayoutReady:jr,setIsAnalyticsLayoutReady:yn,analyticsHeaderExpanded:Jr,setAnalyticsHeaderExpanded:Cn,reduxState:_s,setReduxState:$e,reduxLastActionMap:Bs,reduxSearch:js,setReduxSearch:jo,selectedReduxSlice:Js,setSelectedReduxSlice:Qt,selectedReduxAction:$s,setSelectedReduxAction:Xt,reduxActiveSubTab:Qs,setReduxActiveSubTab:Jo,crashRecords:le,setCrashRecords:J,selectedCrash:Cr,setSelectedCrash:ce,lastReadCrashesCount:mr,maxCrashLogs:$,setMaxCrashLogs:at,clearAllCrashes:()=>{Eo(),J([]),ce(null)},crashIgnoredTypes:Le,setCrashIgnoredTypes:ns,crashModalTriggerPolicy:xe,setCrashModalTriggerPolicyState:Lr,applyCrashPolicyPreset:xr,pushRecords:Q,filteredPushRecords:Mr,selectedPush:br,setSelectedPush:Rr,pushSearch:Ie,setPushSearch:tn,pushQuickFilter:W,setPushQuickFilter:sn,lastReadPushCount:it,unreadPushCount:Ar,maxPushLogs:lt,setMaxPushLogs:as,clearAllPushLogs:()=>{ma(),wr([]),Rr(null)},simulatePush:(t,e)=>{ga(t,e)},socketRecords:X,filteredSocketRecords:Tr,selectedSocket:De,setSelectedSocket:we,socketSearch:Fe,setSocketSearch:on,socketQuickFilter:B,setSocketQuickFilter:nn,lastReadSocketCount:ut,unreadSocketCount:Nr,maxSocketLogs:ft,setMaxSocketLogs:ln,clearAllSocketLogs:()=>{ya(),ct([]),we(null)},deleteSocketRecord:t=>{Ra(t),ct(e=>e.filter(s=>s.id!==t)),De?.id===t&&we(null)},deleteMultipleSocketRecords:t=>{Aa(t);const e=new Set(t);ct(s=>s.filter(r=>!e.has(r.id))),De&&e.has(De.id)&&we(null)},simulateSocket:(t,e)=>{ba(t,e)},settingsActiveSubTab:Ir,setSettingsActiveSubTab:dn,defaultTab:K,setDefaultTab:Tt,isDark:Je,setIsDark:Ut,showDuplicateLogs:ee,setShowDuplicateLogs:ws,showUpdateToast:bs,setShowUpdateToast:Rs,showConsoleLevels:Y,setShowConsoleLevels:is,resetToDefaults:gn,storage:G,maxNetworkLogs:O,setMaxNetworkLogs:mt,maxConsoleLogs:be,setMaxConsoleLogs:dt,maxAnalyticsEventsLimit:Re,setMaxAnalyticsEventsLimit:ht,isAutoRamLimitEnabled:Ae,setIsAutoRamLimitEnabled:cs,deviceFreeRamMb:us,reduxAutoRefresh:Me,setReduxAutoRefreshState:fs,reduxExpandDepth:gt,setReduxExpandDepth:ds,captureFps:St,setCaptureFps:ps,captureScale:yt,setCaptureScale:ms,captureBitrate:Ct,setCaptureBitrate:hs,captureMaxDurationSeconds:Lt,setCaptureMaxDurationSeconds:gs,captureImageFormat:xt,setCaptureImageFormat:Ss,captureAudioMode:wt,setCaptureAudioMode:ys,captureAutoHide:bt,setCaptureAutoHide:Cs,captureAutoGif:Rt,setCaptureAutoGif:Ls,captureWidgetEnabled:At,setCaptureWidgetEnabled:Mt,peekMode:Dr,setPeekMode:mn,peekOpacity:Nt,setPeekOpacity:xs,previewMediaItem:yr,setPreviewMediaItem:en,isUpdatePopupVisible:Fr,setIsUpdatePopupVisible:hn}),[h,ho,qs,I,Fs,Os,Xe,Ye,Xr,As,u,Ur,E,Br,dr,ur,gr,nt,yr,g,qr,cr,er,Er,Pr,kr,_r,Oe,He,Ve,Ue,eo,te,T,Kr,Be,qe,x,A,ao,w,de,pe,me,F,oe,ne,so,st,Ze,Co,io,lo,Yr,ro,oo,no,go,he,jt,re,So,yo,Xs,zs,tr,rr,nr,ir,co,uo,H,Z,po,V,U,mo,rt,Ke,Lo,ye,fo,Ne,a,Gr,zr,$r,jr,Jr,_s,Bs,js,Js,$s,Qs,le,Cr,mr,$,Le,xe,xr,Q,Mr,br,Ie,W,it,Ar,lt,X,Tr,De,Fe,B,ut,Nr,ft,Ir,K,Je,ee,bs,Y,G,O,be,Re,Ae,us,Me,gt,St,yt,Ct,Lt,xt,wt,bt,Rt,At,Dr,Nt,Vs,Gt,Ws,Fr]);return<Vn.Provider value={bn}>
2
+ <_n/>
3
+ <Bn visible={!!os}crash={os}onDismiss={()=>ke(null)}onOpenInspector={()=>{const t=os;ke(null),t&&ce(t),ae("crash"),j(!0)}}onRetry={()=>{ke(null)}}/>
4
+ </Vn.Provider>},Ds=I=>{const G=I?.enabled??!0,v=I?.telemetry??!0;return l(()=>(G?v?Ma(!0,I?.environment):Do(!1):(ve().catch(()=>{}),Do(!1)),()=>{ve().catch(()=>{})}),[G,v,I?.environment]),G?<Pn i18n={kn}>
5
+ <On fallbackType="inline">
6
+ <Ha{...I}enabled={G}/>
7
+ </On>
8
+ </Pn>:null};export default Ds;export{Ds as InAppInspector,Ds as NetworkInspector};export{setupNetworkLogger,clearNetworkLogs,subscribeNetworkLogs,addAxiosInterceptors,setMaxNetworkLogsLimit,getMaxNetworkLogsLimit,pruneNetworkLogs,getNetworkLogs}from"./customHooks/networkLogger";export{setupConsoleLogger,clearConsoleLogs,subscribeConsoleLogs,setMaxConsoleLogsLimit,getMaxConsoleLogsLimit,pruneConsoleLogs}from"./customHooks/consoleLogger";export{setupAnalyticsLogger,logAnalyticsEvent,subscribeAnalyticsEvents,clearAnalyticsEvents,getCurrentUserProperties,getCurrentUserId,getDefaultEventParameters,getCollectionEnabled,setMaxAnalyticsLogsLimit,getMaxAnalyticsLogsLimit,pruneAnalyticsLogs}from"./customHooks/analyticsLogger";export{setupGlobalCrashHandler,subscribeCrashEvents,emitCrashEvent,getCrashRecords,clearCrashRecords,simulateTestCrash,triggerGlobalCrashScreen,exportCrashReport,parseCrashStackTrace,recordCustomCrash,addCrashBreadcrumb,recordNavigationBreadcrumb,recordNetworkBreadcrumb,recordReduxBreadcrumb,recordUserActionBreadcrumb,computeCrashFingerprint,getMaxCrashLogsLimit,pruneCrashRecords}from"./customHooks/crashHandler";export{default as CrashTab}from"./components/Inspector/CrashTab";export{default as ErrorBoundary}from"./components/ErrorBoundary";export{default as GlobalCrashScreenModal}from"./components/Inspector/GlobalCrashScreenModal";export{connectReduxStore,inspectorReduxMiddleware,getReduxState,subscribeReduxState,getActionHistory,clearActionHistory,getLastActionForReducer,setMaxReduxHistoryLimit,getMaxReduxHistoryLimit,pruneReduxHistory,isReduxConnected}from"./customHooks/reduxLogger";export{getEventCategory,registerGAPlugin}from"./helpers/gaAnalyticsRegistry";export{InspectLog,InspectTrackTime,InspectCatch}from"./decorators";export{getNativeDeviceMetrics,enableNativeCrashProtection,getLastNativeCrash,clearLastNativeCrash,subscribeNativeCrashes,showNativeFloatingButton,hideNativeFloatingButton,setNativeFloatingButtonBadge,subscribeNativeFloatingButtonPress,subscribeNativeDeviceShake,startNativeFpsMonitoring,stopNativeFpsMonitoring,getNativeFpsMetrics,getNativeStorageItem,setNativeStorageItem,isNativeModuleAvailable}from"./native/NativeInspector";export{setupMemoryWarningHandler,pruneAllLogs,subscribeMemoryWarning}from"./helpers";export{recordPushNotification,recordSalesforcePush,getPushRecords,clearPushRecords,subscribePushEvents,simulateTestPush,autoSetupPushLogger,setMaxPushRecordsLimit,getDiscoveredPushSources,prunePushRecords}from"./customHooks/pushNotificationLogger";export{setupSocketLogger,clearSocketRecords,subscribeSocketRecords,getSocketRecords,setSocketModuleEnabled,getSocketModuleEnabled,setMaxSocketRecordsLimit,getMaxSocketRecordsLimit,pruneSocketRecords,recordSocketConnection,recordSocketFrame,recordSocketClose,recordSocketError,simulateTestSocket,analyzeSocketPayload}from"./customHooks/socketLogger";export{default as SocketTab}from"./components/Inspector/SocketTab";export{default as SocketDetail}from"./components/Inspector/SocketDetail";export{default as SocketCard}from"./components/Inspector/SocketCard";export{PerformanceTab}from"./components/Inspector/PerformanceTab";export{usePerformanceMonitor}from"./helpers/performanceSampler";export{shareApiReport,sharePushReport,shareSocketReport,shareCrashReport,shareAnalyticsReport,shareReduxReport,shareLogReport,shareConsoleLogs,shareNetworkLogs,formatApiReport,formatPushReport,formatSocketReport,formatCrashReport,formatAnalyticsReport,formatReduxReport,formatLogReport,formatConsoleLogsExport,formatNetworkLogsExport,estimateConsoleLogsExportSize,estimateNetworkLogsExportSize,generateConsoleLogsFilename,generateNetworkLogsFilename,DEFAULT_CONSOLE_EXPORT_OPTIONS,DEFAULT_NETWORK_EXPORT_OPTIONS}from"./helpers/shareFormatter";export{default as ConsoleExportModal}from"./components/Inspector/ConsoleExportModal";export{default as NetworkExportModal}from"./components/Inspector/NetworkExportModal";export{BrandCircleIcon,BrandSquareIcon,BellIcon,CloudPushIcon,WebsocketIcon,SocketIcon}from"./components/NetworkIcons";export{ModuleErrorBoundary}from"./components/ModuleErrorBoundary";export{SkeletonPlaceholder}from"./components/SkeletonPlaceholder";export{connectAsyncStorage,connectMMKV,isAsyncStorageConnected,isMMKVConnected,getRegisteredMMKVInstanceIds,fetchStorageEntries,setStorageEntry,removeStorageEntry,clearStorageDriver,subscribeToStorageChanges}from"./customHooks/storageInspector";export{ActiveTab,Method,StatusFilter,SortOrder,LocalFilter,ModalAnimationType,SettingsPage,SettingsSubTab,LogFilter,ConsoleLogType,AnalyticsEventSource,GAEventCategory,StackFrameType,DiffResultType,CrashType,CrashExportFormat,CrashDetailSubTab,CrashFilterType,BreadcrumbType,PushAppState,PushActionType,PushDetailSubTab,PushFilterType,SocketStatus,SocketFrameDirection,SocketFrameType,SocketDetailSubTab,SocketFilterType}from"./types";export{AppFonts,setAppFonts}from"./styles/AppFonts";export{AppColors,setAppColors,getThemeColors,updateAppColorsTheme}from"./styles/AppColors";export{t,i18n,useTranslation,setLanguage,addTranslations,setTranslations,I18nextProvider,SUPPORTED_LANGUAGES}from"./i18n";export{fetchRemoteConfigModuleStatus,fetchRemoteConfigSettings,isFirebaseRemoteConfigAvailable}from"./helpers/remoteConfig";export{ScreenCapture,ScreenRecorder}from"./capture";export{MediaEditor}from"./editor";export{LIB_VERSION}from"./constants/version";
@@ -37,6 +37,8 @@ export declare const enableNativeCrashProtection: (options?: {
37
37
  showFloatingButton?: boolean;
38
38
  }) => Promise<boolean>;
39
39
  export declare const subscribeNativeCrashes: (callback: (event: NativeCrashEvent) => void) => (() => void);
40
+ export declare const getLastNativeCrash: () => Promise<NativeCrashEvent | null>;
41
+ export declare const clearLastNativeCrash: () => Promise<boolean>;
40
42
  export interface FloatingButtonOptions {
41
43
  size?: number;
42
44
  x?: number;
@@ -1 +1 @@
1
- import{NativeModules as o,NativeEventEmitter as f,DeviceEventEmitter as l}from"react-native";import d from"./NativeNetworkInspector";const t=d||o.NetworkInspectorModule||o.NetworkInspector;export const isNativeModuleAvailable=()=>!!t;const y=()=>{try{if(o&&o.NetworkInspectorModule)return new f(o.NetworkInspectorModule)}catch{}return null},s=y();export const getNativeDeviceMetrics=async()=>{if(!t||!t.getDeviceMetrics)return null;try{return await t.getDeviceMetrics()}catch{return null}},enableNativeCrashProtection=async e=>{if(!t||!t.enableNativeCrashProtection)return!1;try{const r=await t.enableNativeCrashProtection();return e?.showFloatingButton===!0&&await showNativeFloatingButton(),!!r}catch{return!1}},subscribeNativeCrashes=e=>{const r=[];try{const a=l.addListener("onNativeCrash",e);r.push(()=>a.remove())}catch{}if(s)try{const a=s.addListener("onNativeCrash",e);r.push(()=>a.remove())}catch{}return()=>{r.forEach(a=>{try{a()}catch{}})}},showNativeFloatingButton=async e=>{if(!t||!t.showFloatingButton)return!1;try{return!!await t.showFloatingButton(e||{})}catch{return!1}},hideNativeFloatingButton=async()=>{if(!t||!t.hideFloatingButton)return!1;try{return!!await t.hideFloatingButton()}catch{return!1}},setNativeFloatingButtonBadge=async e=>{if(!t||!t.setFloatingButtonBadge)return!1;try{return!!await t.setFloatingButtonBadge(e)}catch{return!1}},subscribeNativeFloatingButtonPress=e=>{const r=[];try{const n=l.addListener("onFloatingButtonPress",e);r.push(()=>n.remove())}catch{}if(s)try{const n=s.addListener("onFloatingButtonPress",e);r.push(()=>n.remove())}catch{}const a=setInterval(async()=>{if(t&&t.checkFloatingButtonPress)try{await t.checkFloatingButtonPress()&&e()}catch{}},180);return r.push(()=>clearInterval(a)),()=>{r.forEach(n=>{try{n()}catch{}})}},startNativeFpsMonitoring=async()=>{if(!t||!t.startFpsMonitoring)return!1;try{return!!await t.startFpsMonitoring()}catch{return!1}},stopNativeFpsMonitoring=async()=>{if(!t||!t.stopFpsMonitoring)return!1;try{return!!await t.stopFpsMonitoring()}catch{return!1}},getNativeFpsMetrics=async()=>{if(!t||!t.getFpsMetrics)return{fps:60,targetFps:60};try{const e=await t.getFpsMetrics();return{fps:typeof e?.fps=="number"?e.fps:60,targetFps:typeof e?.targetFps=="number"?e.targetFps:60}}catch{return{fps:60,targetFps:60}}},subscribeNativeDeviceShake=e=>{if(!s)return()=>{};try{const r=s.addListener("onDeviceShake",e);return()=>{r.remove()}}catch{return()=>{}}},getNativeStorageItem=async e=>{if(!t||!t.getNativeStorageItem)return null;try{const r=await t.getNativeStorageItem(e);return typeof r=="string"?r:null}catch{return null}},setNativeStorageItem=async(e,r)=>{if(!t||!t.setNativeStorageItem)return!1;try{return!!await t.setNativeStorageItem(e,r)}catch{return!1}},triggerNativeHaptic=async(e="light")=>{if(!t||!t.triggerHaptic)return!1;try{return!!await t.triggerHaptic(e)}catch{return!1}},getNativeSystemMetrics=async()=>{if(!t||!t.getNativeSystemMetrics)return null;try{return await t.getNativeSystemMetrics()}catch{return null}},pushNativeLogRecord=async(e,r)=>{if(!t||!t.pushNativeLogRecord)return!1;try{return!!await t.pushNativeLogRecord(e,r)}catch{return!1}},fetchNativeCachedPage=async(e,r=0,a=50,n="")=>{if(!t||!t.getNativeCachedPage)return null;try{const c=await t.getNativeCachedPage(e,r,a,n);if(!c)return null;const i=JSON.parse(c),p=(i.items||[]).map(u=>typeof u=="string"?JSON.parse(u):u);return{pageKey:i.pageKey||e,total:i.total||0,offset:i.offset||r,items:p}}catch{return null}},takeNativeScreenshot=async e=>{if(!t||!t.takeScreenshot)return null;try{return await t.takeScreenshot(e||{})}catch{return null}},startNativeVideoRecording=async e=>{if(!t||!t.startVideoRecording)return!1;try{return!!await t.startVideoRecording(e||{})}catch{return!1}},stopNativeVideoRecording=async()=>{if(!t||!t.stopVideoRecording)return null;try{return await t.stopVideoRecording()}catch{return null}},isNativeRecordingActive=async()=>{if(!t||!t.isRecording)return!1;try{return!!await t.isRecording()}catch{return!1}},playNativeVideo=async e=>{if(!t||!t.playVideo)return!1;try{return!!await t.playVideo(e)}catch{return!1}},convertNativeVideoToGif=async(e,r)=>{if(!t||!t.convertToGif)return null;try{return await t.convertToGif(e,r||{})}catch{return null}},fetchCapturedMediaList=async()=>{if(!t||!t.getCapturedMedia)return[];try{const e=await t.getCapturedMedia();if(!e)return[];const r=typeof e=="string"?JSON.parse(e):e;return Array.isArray(r)?r:[]}catch{return[]}},deleteCapturedMediaFile=async e=>{if(!t||!t.deleteCapturedMedia)return!1;try{return!!await t.deleteCapturedMedia(e)}catch{return!1}},clearAllCapturedMediaFiles=async()=>{if(!t||!t.clearAllCapturedMedia)return!1;try{return!!await t.clearAllCapturedMedia()}catch{return!1}},copyMediaToClipboard=async e=>{if(!e||!t||!t.copyMediaToClipboard)return!1;try{return!!(await t.copyMediaToClipboard(e))?.success}catch{return!1}},editNativePhoto=async e=>{if(!t||!t.editPhoto)return null;try{return await t.editPhoto(e)}catch{return null}},trimNativeVideo=async e=>{if(!t||!t.trimVideo)return null;try{return await t.trimVideo(e)}catch{return null}},generateNativeFilmstrip=async e=>{if(!t||!t.generateFilmstrip)return null;try{return await t.generateFilmstrip(e)}catch{return null}},pickNativeMedia=async e=>{if(!t||!t.pickMedia)return null;try{return await t.pickMedia(e||{})||null}catch{return null}},writeNativeExportFile=async(e,r)=>{if(!t||!t.writeExportFile)return null;try{return await t.writeExportFile(e,r)}catch{return null}},shareNativeFile=async(e,r="text/plain",a="Export")=>{if(!t||!t.shareFile)return!1;try{return!!await t.shareFile(e,r,a)}catch{return!1}};
1
+ import{NativeModules as i,NativeEventEmitter as f,DeviceEventEmitter as l}from"react-native";import y from"./NativeNetworkInspector";const t=y||i.NetworkInspectorModule||i.NetworkInspector;export const isNativeModuleAvailable=()=>!!t;const h=()=>{try{if(i&&i.NetworkInspectorModule)return new f(i.NetworkInspectorModule)}catch{}return null},n=h();export const getNativeDeviceMetrics=async()=>{if(!t||!t.getDeviceMetrics)return null;try{return await t.getDeviceMetrics()}catch{return null}},enableNativeCrashProtection=async e=>{if(!t||!t.enableNativeCrashProtection)return!1;try{const r=await t.enableNativeCrashProtection();return e?.showFloatingButton===!0&&await showNativeFloatingButton(),!!r}catch{return!1}},subscribeNativeCrashes=e=>{const r=[];try{const a=l.addListener("onNativeCrash",e);r.push(()=>a.remove())}catch{}if(n)try{const a=n.addListener("onNativeCrash",e);r.push(()=>a.remove())}catch{}return()=>{r.forEach(a=>{try{a()}catch{}})}},getLastNativeCrash=async()=>{if(!t||!t.getLastNativeCrash)return null;try{return await t.getLastNativeCrash()||null}catch{return null}},clearLastNativeCrash=async()=>{if(!t||!t.clearLastNativeCrash)return!1;try{return!!await t.clearLastNativeCrash()}catch{return!1}},showNativeFloatingButton=async e=>{if(!t||!t.showFloatingButton)return!1;try{return!!await t.showFloatingButton(e||{})}catch{return!1}},hideNativeFloatingButton=async()=>{if(!t||!t.hideFloatingButton)return!1;try{return!!await t.hideFloatingButton()}catch{return!1}},setNativeFloatingButtonBadge=async e=>{if(!t||!t.setFloatingButtonBadge)return!1;try{return!!await t.setFloatingButtonBadge(e)}catch{return!1}},subscribeNativeFloatingButtonPress=e=>{const r=[];try{const s=l.addListener("onFloatingButtonPress",e);r.push(()=>s.remove())}catch{}if(n)try{const s=n.addListener("onFloatingButtonPress",e);r.push(()=>s.remove())}catch{}const a=setInterval(async()=>{if(t&&t.checkFloatingButtonPress)try{await t.checkFloatingButtonPress()&&e()}catch{}},180);return r.push(()=>clearInterval(a)),()=>{r.forEach(s=>{try{s()}catch{}})}},startNativeFpsMonitoring=async()=>{if(!t||!t.startFpsMonitoring)return!1;try{return!!await t.startFpsMonitoring()}catch{return!1}},stopNativeFpsMonitoring=async()=>{if(!t||!t.stopFpsMonitoring)return!1;try{return!!await t.stopFpsMonitoring()}catch{return!1}},getNativeFpsMetrics=async()=>{if(!t||!t.getFpsMetrics)return{fps:60,targetFps:60};try{const e=await t.getFpsMetrics();return{fps:typeof e?.fps=="number"?e.fps:60,targetFps:typeof e?.targetFps=="number"?e.targetFps:60}}catch{return{fps:60,targetFps:60}}},subscribeNativeDeviceShake=e=>{if(!n)return()=>{};try{const r=n.addListener("onDeviceShake",e);return()=>{r.remove()}}catch{return()=>{}}},getNativeStorageItem=async e=>{if(!t||!t.getNativeStorageItem)return null;try{const r=await t.getNativeStorageItem(e);return typeof r=="string"?r:null}catch{return null}},setNativeStorageItem=async(e,r)=>{if(!t||!t.setNativeStorageItem)return!1;try{return!!await t.setNativeStorageItem(e,r)}catch{return!1}},triggerNativeHaptic=async(e="light")=>{if(!t||!t.triggerHaptic)return!1;try{return!!await t.triggerHaptic(e)}catch{return!1}},getNativeSystemMetrics=async()=>{if(!t||!t.getNativeSystemMetrics)return null;try{return await t.getNativeSystemMetrics()}catch{return null}},pushNativeLogRecord=async(e,r)=>{if(!t||!t.pushNativeLogRecord)return!1;try{return!!await t.pushNativeLogRecord(e,r)}catch{return!1}},fetchNativeCachedPage=async(e,r=0,a=50,s="")=>{if(!t||!t.getNativeCachedPage)return null;try{const c=await t.getNativeCachedPage(e,r,a,s);if(!c)return null;const o=JSON.parse(c),p=(o.items||[]).map(u=>typeof u=="string"?JSON.parse(u):u);return{pageKey:o.pageKey||e,total:o.total||0,offset:o.offset||r,items:p}}catch{return null}},takeNativeScreenshot=async e=>{if(!t||!t.takeScreenshot)return null;try{return await t.takeScreenshot(e||{})}catch{return null}},startNativeVideoRecording=async e=>{if(!t||!t.startVideoRecording)return!1;try{return!!await t.startVideoRecording(e||{})}catch{return!1}},stopNativeVideoRecording=async()=>{if(!t||!t.stopVideoRecording)return null;try{return await t.stopVideoRecording()}catch{return null}},isNativeRecordingActive=async()=>{if(!t||!t.isRecording)return!1;try{return!!await t.isRecording()}catch{return!1}},playNativeVideo=async e=>{if(!t||!t.playVideo)return!1;try{return!!await t.playVideo(e)}catch{return!1}},convertNativeVideoToGif=async(e,r)=>{if(!t||!t.convertToGif)return null;try{return await t.convertToGif(e,r||{})}catch{return null}},fetchCapturedMediaList=async()=>{if(!t||!t.getCapturedMedia)return[];try{const e=await t.getCapturedMedia();if(!e)return[];const r=typeof e=="string"?JSON.parse(e):e;return Array.isArray(r)?r:[]}catch{return[]}},deleteCapturedMediaFile=async e=>{if(!t||!t.deleteCapturedMedia)return!1;try{return!!await t.deleteCapturedMedia(e)}catch{return!1}},clearAllCapturedMediaFiles=async()=>{if(!t||!t.clearAllCapturedMedia)return!1;try{return!!await t.clearAllCapturedMedia()}catch{return!1}},copyMediaToClipboard=async e=>{if(!e||!t||!t.copyMediaToClipboard)return!1;try{return!!(await t.copyMediaToClipboard(e))?.success}catch{return!1}},editNativePhoto=async e=>{if(!t||!t.editPhoto)return null;try{return await t.editPhoto(e)}catch{return null}},trimNativeVideo=async e=>{if(!t||!t.trimVideo)return null;try{return await t.trimVideo(e)}catch{return null}},generateNativeFilmstrip=async e=>{if(!t||!t.generateFilmstrip)return null;try{return await t.generateFilmstrip(e)}catch{return null}},pickNativeMedia=async e=>{if(!t||!t.pickMedia)return null;try{return await t.pickMedia(e||{})||null}catch{return null}},writeNativeExportFile=async(e,r)=>{if(!t||!t.writeExportFile)return null;try{return await t.writeExportFile(e,r)}catch{return null}},shareNativeFile=async(e,r="text/plain",a="Export")=>{if(!t||!t.shareFile)return!1;try{return!!await t.shareFile(e,r,a)}catch{return!1}};
@@ -1,6 +1,8 @@
1
1
  import type { TurboModule } from 'react-native';
2
2
  export interface Spec extends TurboModule {
3
3
  enableNativeCrashProtection(): Promise<boolean>;
4
+ getLastNativeCrash(): Promise<Object | null>;
5
+ clearLastNativeCrash(): Promise<boolean>;
4
6
  getDeviceMetrics(): Promise<Object>;
5
7
  showFloatingButton(options: Object): Promise<boolean>;
6
8
  hideFloatingButton(): Promise<boolean>;
@@ -4,6 +4,8 @@ export interface AppFontConfig {
4
4
  interSemiBold?: string;
5
5
  interBold?: string;
6
6
  Sfprotext?: string;
7
+ monoFont?: string;
8
+ systemFont?: string;
7
9
  }
8
10
  export declare const AppFonts: {
9
11
  interRegular: string;
@@ -11,6 +13,8 @@ export declare const AppFonts: {
11
13
  interSemiBold: string;
12
14
  interBold: string;
13
15
  Sfprotext: string;
16
+ monoFont: string;
17
+ systemFont: string;
14
18
  };
15
19
  export declare const setAppFonts: (customFonts: Partial<typeof AppFonts>) => void;
16
20
  export default AppFonts;
@@ -1 +1 @@
1
- export const AppFonts={interRegular:"Inter-Regular",interMedium:"Inter-Medium",interSemiBold:"Inter-SemiBold",interBold:"Inter-Bold",Sfprotext:"Inter-Regular"},setAppFonts=e=>{!e||typeof e!="object"||Object.assign(AppFonts,e)};export default AppFonts;
1
+ import{Platform as t}from"react-native";const o=t.select({ios:"Menlo",android:"monospace",default:"monospace"}),n=t.select({ios:"System",android:"sans-serif",default:"sans-serif"}),r=t.select({ios:"System",android:"sans-serif-medium",default:"sans-serif-medium"});export const AppFonts={interRegular:"Inter-Regular",interMedium:"Inter-Medium",interSemiBold:"Inter-SemiBold",interBold:"Inter-Bold",Sfprotext:"Inter-Regular",monoFont:o,systemFont:n},setAppFonts=e=>{!e||typeof e!="object"||Object.assign(AppFonts,e)};export default AppFonts;
@@ -1232,6 +1232,7 @@ export declare const getRawStyles: (colors: typeof AppColors) => {
1232
1232
  codeKey: {
1233
1233
  color: string;
1234
1234
  fontFamily: string;
1235
+ fontWeight: string;
1235
1236
  fontSize: number;
1236
1237
  lineHeight: number;
1237
1238
  };
@@ -1244,6 +1245,7 @@ export declare const getRawStyles: (colors: typeof AppColors) => {
1244
1245
  codeTextNil: {
1245
1246
  color: string;
1246
1247
  fontFamily: string;
1248
+ fontWeight: string;
1247
1249
  fontSize: number;
1248
1250
  lineHeight: number;
1249
1251
  };