react-native-inapp-inspector 2.3.25 → 2.4.1

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 (125) hide show
  1. package/README.md +26 -5
  2. package/dist/commonjs/components/AnalyticsDetail.js +9 -6
  3. package/dist/commonjs/components/AppHeaderLogo.js +4 -6
  4. package/dist/commonjs/components/Inspector/AnalyticsFilterModal.js +1 -1
  5. package/dist/commonjs/components/Inspector/AnalyticsTab.js +18 -22
  6. package/dist/commonjs/components/Inspector/ConsoleTab.js +13 -16
  7. package/dist/commonjs/components/Inspector/CrashDetail.js +7 -6
  8. package/dist/commonjs/components/Inspector/CrashTab.js +23 -23
  9. package/dist/commonjs/components/Inspector/DebuggingTab.js +6 -6
  10. package/dist/commonjs/components/Inspector/DeviceInfoTab.js +77 -43
  11. package/dist/commonjs/components/Inspector/FabLauncher.js +8 -9
  12. package/dist/commonjs/components/Inspector/InspectorHeader.js +93 -70
  13. package/dist/commonjs/components/Inspector/LogDetail.js +10 -7
  14. package/dist/commonjs/components/Inspector/MainScreen.js +67 -29
  15. package/dist/commonjs/components/Inspector/NetworkDetail.js +29 -28
  16. package/dist/commonjs/components/Inspector/NetworkFilterModal.js +1 -1
  17. package/dist/commonjs/components/Inspector/NetworkTab.js +87 -85
  18. package/dist/commonjs/components/Inspector/PushCard.d.ts +4 -0
  19. package/dist/commonjs/components/Inspector/PushCard.js +89 -0
  20. package/dist/commonjs/components/Inspector/PushDetail.d.ts +4 -0
  21. package/dist/commonjs/components/Inspector/PushDetail.js +190 -0
  22. package/dist/commonjs/components/Inspector/PushTab.d.ts +3 -0
  23. package/dist/commonjs/components/Inspector/PushTab.js +45 -0
  24. package/dist/commonjs/components/Inspector/ReduxDetail.js +16 -13
  25. package/dist/commonjs/components/Inspector/ReduxTab.js +18 -28
  26. package/dist/commonjs/components/Inspector/SettingsPanel.js +253 -105
  27. package/dist/commonjs/components/Inspector/StorageTab.js +40 -40
  28. package/dist/commonjs/components/Inspector/TabBar.js +9 -8
  29. package/dist/commonjs/components/Inspector/UpdateAvailableModal.js +2 -2
  30. package/dist/commonjs/components/JsonViewer.js +77 -90
  31. package/dist/commonjs/components/LogCard.js +9 -6
  32. package/dist/commonjs/components/ModuleErrorBoundary.d.ts +24 -0
  33. package/dist/commonjs/components/ModuleErrorBoundary.js +33 -0
  34. package/dist/commonjs/components/NetworkIcons.d.ts +3 -3
  35. package/dist/commonjs/components/NetworkIcons.js +10 -6
  36. package/dist/commonjs/components/SegmentedTabs.d.ts +4 -1
  37. package/dist/commonjs/components/SegmentedTabs.js +12 -8
  38. package/dist/commonjs/components/ShareButton.d.ts +11 -0
  39. package/dist/commonjs/components/ShareButton.js +6 -0
  40. package/dist/commonjs/constants/version.d.ts +1 -1
  41. package/dist/commonjs/constants/version.js +1 -1
  42. package/dist/commonjs/customHooks/crashHandler.js +4 -4
  43. package/dist/commonjs/customHooks/networkLogger.js +1 -1
  44. package/dist/commonjs/customHooks/pushNotificationLogger.d.ts +19 -0
  45. package/dist/commonjs/customHooks/pushNotificationLogger.js +1 -0
  46. package/dist/commonjs/helpers/memoryManager.d.ts +2 -1
  47. package/dist/commonjs/helpers/memoryManager.js +1 -1
  48. package/dist/commonjs/helpers/settingsStore.d.ts +1 -0
  49. package/dist/commonjs/helpers/settingsStore.js +1 -1
  50. package/dist/commonjs/helpers/shareFormatter.d.ts +13 -0
  51. package/dist/commonjs/helpers/shareFormatter.js +7 -0
  52. package/dist/commonjs/i18n/locales/en.json +1 -1
  53. package/dist/commonjs/index.d.ts +5 -2
  54. package/dist/commonjs/index.js +4 -4
  55. package/dist/commonjs/push.d.ts +4 -0
  56. package/dist/commonjs/push.js +1 -0
  57. package/dist/commonjs/types/enums.d.ts +30 -0
  58. package/dist/commonjs/types/enums.js +1 -1
  59. package/dist/commonjs/types/index.d.ts +10 -0
  60. package/dist/commonjs/types/interfaces.d.ts +63 -7
  61. package/dist/esm/components/AnalyticsDetail.js +28 -25
  62. package/dist/esm/components/AppHeaderLogo.js +5 -7
  63. package/dist/esm/components/Inspector/AnalyticsFilterModal.js +14 -14
  64. package/dist/esm/components/Inspector/AnalyticsTab.js +36 -40
  65. package/dist/esm/components/Inspector/ConsoleTab.js +52 -55
  66. package/dist/esm/components/Inspector/CrashDetail.js +11 -10
  67. package/dist/esm/components/Inspector/CrashTab.js +23 -23
  68. package/dist/esm/components/Inspector/DebuggingTab.js +10 -10
  69. package/dist/esm/components/Inspector/DeviceInfoTab.js +208 -174
  70. package/dist/esm/components/Inspector/FabLauncher.js +41 -42
  71. package/dist/esm/components/Inspector/InspectorHeader.js +138 -115
  72. package/dist/esm/components/Inspector/LogDetail.js +24 -21
  73. package/dist/esm/components/Inspector/MainScreen.js +100 -62
  74. package/dist/esm/components/Inspector/NetworkDetail.js +88 -87
  75. package/dist/esm/components/Inspector/NetworkFilterModal.js +8 -8
  76. package/dist/esm/components/Inspector/NetworkTab.js +136 -134
  77. package/dist/esm/components/Inspector/PushCard.d.ts +4 -0
  78. package/dist/esm/components/Inspector/PushCard.js +89 -0
  79. package/dist/esm/components/Inspector/PushDetail.d.ts +4 -0
  80. package/dist/esm/components/Inspector/PushDetail.js +190 -0
  81. package/dist/esm/components/Inspector/PushTab.d.ts +3 -0
  82. package/dist/esm/components/Inspector/PushTab.js +45 -0
  83. package/dist/esm/components/Inspector/ReduxDetail.js +40 -37
  84. package/dist/esm/components/Inspector/ReduxTab.js +109 -119
  85. package/dist/esm/components/Inspector/SettingsPanel.js +406 -258
  86. package/dist/esm/components/Inspector/StorageTab.js +174 -174
  87. package/dist/esm/components/Inspector/TabBar.js +28 -27
  88. package/dist/esm/components/Inspector/UpdateAvailableModal.js +1 -1
  89. package/dist/esm/components/JsonViewer.js +101 -114
  90. package/dist/esm/components/LogCard.js +25 -22
  91. package/dist/esm/components/ModuleErrorBoundary.d.ts +24 -0
  92. package/dist/esm/components/ModuleErrorBoundary.js +33 -0
  93. package/dist/esm/components/NetworkIcons.d.ts +3 -3
  94. package/dist/esm/components/NetworkIcons.js +7 -3
  95. package/dist/esm/components/SegmentedTabs.d.ts +4 -1
  96. package/dist/esm/components/SegmentedTabs.js +12 -8
  97. package/dist/esm/components/ShareButton.d.ts +11 -0
  98. package/dist/esm/components/ShareButton.js +6 -0
  99. package/dist/esm/constants/version.d.ts +1 -1
  100. package/dist/esm/constants/version.js +1 -1
  101. package/dist/esm/customHooks/crashHandler.js +6 -6
  102. package/dist/esm/customHooks/networkLogger.js +1 -1
  103. package/dist/esm/customHooks/pushNotificationLogger.d.ts +19 -0
  104. package/dist/esm/customHooks/pushNotificationLogger.js +1 -0
  105. package/dist/esm/helpers/memoryManager.d.ts +2 -1
  106. package/dist/esm/helpers/memoryManager.js +1 -1
  107. package/dist/esm/helpers/settingsStore.d.ts +1 -0
  108. package/dist/esm/helpers/settingsStore.js +1 -1
  109. package/dist/esm/helpers/shareFormatter.d.ts +13 -0
  110. package/dist/esm/helpers/shareFormatter.js +7 -0
  111. package/dist/esm/i18n/locales/en.json +1 -1
  112. package/dist/esm/index.d.ts +5 -2
  113. package/dist/esm/index.js +7 -7
  114. package/dist/esm/push.d.ts +4 -0
  115. package/dist/esm/push.js +1 -0
  116. package/dist/esm/types/enums.d.ts +30 -0
  117. package/dist/esm/types/enums.js +1 -1
  118. package/dist/esm/types/index.d.ts +10 -0
  119. package/dist/esm/types/interfaces.d.ts +63 -7
  120. package/package.json +53 -10
  121. package/src/native/NativeInspector.ts +0 -1
  122. package/dist/commonjs/components/BrandSquareIcon.d.ts +0 -5
  123. package/dist/commonjs/components/BrandSquareIcon.js +0 -112
  124. package/dist/esm/components/BrandSquareIcon.d.ts +0 -5
  125. package/dist/esm/components/BrandSquareIcon.js +0 -112
@@ -1,5 +1,5 @@
1
- "use strict";var __createBinding=this&&this.__createBinding||(Object.create?(function(t,o,s,n){n===void 0&&(n=s);var i=Object.getOwnPropertyDescriptor(o,s);(!i||("get"in i?!o.__esModule:i.writable||i.configurable))&&(i={enumerable:!0,get:function(){return o[s]}}),Object.defineProperty(t,n,i)}):(function(t,o,s,n){n===void 0&&(n=s),t[n]=o[s]})),__setModuleDefault=this&&this.__setModuleDefault||(Object.create?(function(t,o){Object.defineProperty(t,"default",{enumerable:!0,value:o})}):function(t,o){t.default=o}),__importStar=this&&this.__importStar||(function(){var t=function(o){return t=Object.getOwnPropertyNames||function(s){var n=[];for(var i in s)Object.prototype.hasOwnProperty.call(s,i)&&(n[n.length]=i);return n},t(o)};return function(o){if(o&&o.__esModule)return o;var s={};if(o!=null)for(var n=t(o),i=0;i<n.length;i++)n[i]!=="default"&&__createBinding(s,o,n[i]);return __setModuleDefault(s,o),s}})(),__importDefault=this&&this.__importDefault||function(t){return t&&t.__esModule?t:{default:t}};Object.defineProperty(exports,"__esModule",{value:!0});const react_1=__importStar(require("react")),react_native_1=require("react-native"),i18n_1=require("../../i18n"),InspectorContext_1=require("./InspectorContext"),TouchableScale_1=__importDefault(require("../TouchableScale")),AnimatedEntrance_1=__importDefault(require("../AnimatedEntrance")),EndOfListFooter_1=__importDefault(require("../EndOfListFooter")),FeatureUnderDevNotice_1=__importDefault(require("./FeatureUnderDevNotice")),HighlightText_1=__importDefault(require("../HighlightText")),AppColors_1=require("../../styles/AppColors"),AppFonts_1=require("../../styles/AppFonts"),crashHandler_1=require("../../customHooks/crashHandler"),CrashFilterModal_1=__importStar(require("./CrashFilterModal")),NetworkIcons_1=require("../NetworkIcons"),getRelativeTime=t=>{const o=Date.now(),s=Math.max(0,o-t),n=Math.floor(s/1e3),i=Math.floor(n/60),_=Math.floor(i/60),x=Math.floor(_/24);return n<60?`${n}s ago`:i<60?`${i}m ago`:_<24?`${_}h ago`:`${x}d ago`},CrashTab=react_1.default.memo(()=>{const{t}=(0,i18n_1.useTranslation)(),{crashRecords:o,selectedCrash:s,setSelectedCrash:n}=(0,InspectorContext_1.useInspector)(),i=(0,react_1.useRef)(null),[_,x]=(0,react_1.useState)(100),[g,A]=(0,react_1.useState)(""),[y,b]=(0,react_1.useState)("all"),[l,v]=(0,react_1.useState)(CrashFilterModal_1.DEFAULT_CRASH_FILTERS),[V,S]=(0,react_1.useState)(!1),[k,z]=(0,react_1.useState)("stack"),f=(0,react_1.useMemo)(()=>{const e=o.length;let r=0,a=0,h=0,C=0,w=0;return o.forEach(T=>{T.isFatal&&r++,T.type==="js"?a++:T.type==="promise"?h++:T.type==="render"?C++:T.type==="native"&&w++}),{total:e,fatalCount:r,jsCount:a,promiseCount:h,renderCount:C,nativeCount:w}},[o]),m=(0,react_1.useMemo)(()=>{let e=o.filter(r=>{if(y==="fatal"&&!r.isFatal||y==="js"&&r.type!=="js"||y==="promise"&&r.type!=="promise"||y==="render"&&r.type!=="render"||y==="native"&&r.type!=="native"||l.types.size>0&&!l.types.has("all")&&!(l.types.has("fatal")&&r.isFatal||l.types.has("js")&&r.type==="js"||l.types.has("promise")&&r.type==="promise"||l.types.has("render")&&r.type==="render"||l.types.has("native")&&r.type==="native"))return!1;if(l.timeWindow!=="all"){const a=Date.now(),h=l.timeWindow==="15m"?a-900*1e3:l.timeWindow==="1h"?a-3600*1e3:l.timeWindow==="24h"?a-1440*60*1e3:a-10080*60*1e3;if(r.timestamp<h)return!1}if(l.platform!=="all"&&(r.deviceInfo?.platform||"").toLowerCase()!==l.platform)return!1;if(l.engine!=="all"){const a=r.deviceInfo?.isHermes;if(l.engine==="hermes"&&a!==!0||l.engine==="jsc"&&a===!0)return!1}if(g.trim().length>0){const a=g.trim().toLowerCase().split(/\s+/).filter(Boolean),h=[r.message||"",r.name||"",r.stack||"",r.type||"",r.deviceInfo?.platform||"",...(r.breadcrumbs||[]).map(C=>`${C.type||""} ${C.message||""}`)].join(" ").toLowerCase();return a.every(C=>h.includes(C))}return!0});return l.sortBy==="time_asc"&&(e=[...e].sort((r,a)=>r.timestamp-a.timestamp)),e},[o,y,g,l]),F=()=>{react_native_1.Alert.alert(t("crash.clearTitle"),t("crash.clearMessage"),[{text:t("crash.clearCancel"),style:"cancel"},{text:t("crash.clearConfirm"),style:"destructive",onPress:()=>(0,crashHandler_1.clearCrashRecords)()}])},I=(0,react_1.useCallback)(({item:e,index:r})=>{const a=e.isFatal,h=e.type.toUpperCase(),C=e.parsedStack&&e.parsedStack.length>0?e.parsedStack.find(B=>B.isAppCode)||e.parsedStack[0]:null,w=e.type==="native"?`${AppColors_1.AppColors.errorColor}22`:e.type==="render"?`${AppColors_1.AppColors.purple}22`:e.type==="promise"?`${AppColors_1.AppColors.darkOrange}22`:`${AppColors_1.AppColors.offerPurple}22`,T=e.type==="native"?AppColors_1.AppColors.errorColor:e.type==="render"?AppColors_1.AppColors.purple:e.type==="promise"?AppColors_1.AppColors.darkOrange:AppColors_1.AppColors.offerPurple;return<AnimatedEntrance_1.default index={r}distance={8}>
2
- <TouchableScale_1.default onPress={()=>{n(e)}}style={[localStyles.cardContainer,a&&localStyles.fatalCardBorder]}>
1
+ "use strict";var __createBinding=this&&this.__createBinding||(Object.create?(function(t,o,s,n){n===void 0&&(n=s);var i=Object.getOwnPropertyDescriptor(o,s);(!i||("get"in i?!o.__esModule:i.writable||i.configurable))&&(i={enumerable:!0,get:function(){return o[s]}}),Object.defineProperty(t,n,i)}):(function(t,o,s,n){n===void 0&&(n=s),t[n]=o[s]})),__setModuleDefault=this&&this.__setModuleDefault||(Object.create?(function(t,o){Object.defineProperty(t,"default",{enumerable:!0,value:o})}):function(t,o){t.default=o}),__importStar=this&&this.__importStar||(function(){var t=function(o){return t=Object.getOwnPropertyNames||function(s){var n=[];for(var i in s)Object.prototype.hasOwnProperty.call(s,i)&&(n[n.length]=i);return n},t(o)};return function(o){if(o&&o.__esModule)return o;var s={};if(o!=null)for(var n=t(o),i=0;i<n.length;i++)n[i]!=="default"&&__createBinding(s,o,n[i]);return __setModuleDefault(s,o),s}})(),__importDefault=this&&this.__importDefault||function(t){return t&&t.__esModule?t:{default:t}};Object.defineProperty(exports,"__esModule",{value:!0});const react_1=__importStar(require("react")),react_native_1=require("react-native"),i18n_1=require("../../i18n"),InspectorContext_1=require("./InspectorContext"),TouchableScale_1=__importDefault(require("../TouchableScale")),AnimatedEntrance_1=__importDefault(require("../AnimatedEntrance")),EndOfListFooter_1=__importDefault(require("../EndOfListFooter")),FeatureUnderDevNotice_1=__importDefault(require("./FeatureUnderDevNotice")),HighlightText_1=__importDefault(require("../HighlightText")),AppColors_1=require("../../styles/AppColors"),AppFonts_1=require("../../styles/AppFonts"),crashHandler_1=require("../../customHooks/crashHandler"),CrashFilterModal_1=__importStar(require("./CrashFilterModal")),NetworkIcons_1=require("../NetworkIcons"),getRelativeTime=t=>{const o=Date.now(),s=Math.max(0,o-t),n=Math.floor(s/1e3),i=Math.floor(n/60),T=Math.floor(i/60),x=Math.floor(T/24);return n<60?`${n}s ago`:i<60?`${i}m ago`:T<24?`${T}h ago`:`${x}d ago`},LOAD_MORE_STEP=10,CrashTab=react_1.default.memo(()=>{const{t}=(0,i18n_1.useTranslation)(),{crashRecords:o,setSelectedCrash:s,maxCrashLogs:n}=(0,InspectorContext_1.useInspector)(),i=n||50,T=(0,react_1.useRef)(null),[x,b]=(0,react_1.useState)(i),[f,A]=(0,react_1.useState)(""),[y,v]=(0,react_1.useState)("all"),[l,S]=(0,react_1.useState)(CrashFilterModal_1.DEFAULT_CRASH_FILTERS),[F,V]=(0,react_1.useState)(!1);(0,react_1.useEffect)(()=>{b(n||50),T.current?.scrollToOffset({offset:0,animated:!1})},[f,y,l,n]);const g=(0,react_1.useMemo)(()=>{const e=o.length;let r=0,a=0,h=0,C=0,w=0;return o.forEach(m=>{m.isFatal&&r++,m.type==="js"?a++:m.type==="promise"?h++:m.type==="render"?C++:m.type==="native"&&w++}),{total:e,fatalCount:r,jsCount:a,promiseCount:h,renderCount:C,nativeCount:w}},[o]),_=(0,react_1.useMemo)(()=>{let e=o.filter(r=>{if(y==="fatal"&&!r.isFatal||y==="js"&&r.type!=="js"||y==="promise"&&r.type!=="promise"||y==="render"&&r.type!=="render"||y==="native"&&r.type!=="native"||l.types.size>0&&!l.types.has("all")&&!(l.types.has("fatal")&&r.isFatal||l.types.has("js")&&r.type==="js"||l.types.has("promise")&&r.type==="promise"||l.types.has("render")&&r.type==="render"||l.types.has("native")&&r.type==="native"))return!1;if(l.timeWindow!=="all"){const a=Date.now(),h=l.timeWindow==="15m"?a-900*1e3:l.timeWindow==="1h"?a-3600*1e3:l.timeWindow==="24h"?a-1440*60*1e3:a-10080*60*1e3;if(r.timestamp<h)return!1}if(l.platform!=="all"&&(r.deviceInfo?.platform||"").toLowerCase()!==l.platform)return!1;if(l.engine!=="all"){const a=r.deviceInfo?.isHermes;if(l.engine==="hermes"&&a!==!0||l.engine==="jsc"&&a===!0)return!1}if(f.trim().length>0){const a=f.trim().toLowerCase().split(/\s+/).filter(Boolean),h=[r.message||"",r.name||"",r.stack||"",r.type||"",r.deviceInfo?.platform||"",...(r.breadcrumbs||[]).map(C=>`${C.type||""} ${C.message||""}`)].join(" ").toLowerCase();return a.every(C=>h.includes(C))}return!0});return l.sortBy==="time_asc"&&(e=[...e].sort((r,a)=>r.timestamp-a.timestamp)),e},[o,y,f,l]),I=()=>{react_native_1.Alert.alert(t("crash.clearTitle"),t("crash.clearMessage"),[{text:t("crash.clearCancel"),style:"cancel"},{text:t("crash.clearConfirm"),style:"destructive",onPress:()=>(0,crashHandler_1.clearCrashRecords)()}])},B=(0,react_1.useCallback)(({item:e,index:r})=>{const a=e.isFatal,h=e.type.toUpperCase(),C=e.parsedStack&&e.parsedStack.length>0?e.parsedStack.find(k=>k.isAppCode)||e.parsedStack[0]:null,w=e.type==="native"?`${AppColors_1.AppColors.errorColor}22`:e.type==="render"?`${AppColors_1.AppColors.purple}22`:e.type==="promise"?`${AppColors_1.AppColors.darkOrange}22`:`${AppColors_1.AppColors.offerPurple}22`,m=e.type==="native"?AppColors_1.AppColors.errorColor:e.type==="render"?AppColors_1.AppColors.purple:e.type==="promise"?AppColors_1.AppColors.darkOrange:AppColors_1.AppColors.offerPurple;return<AnimatedEntrance_1.default index={r}distance={8}>
2
+ <TouchableScale_1.default onPress={()=>{s(e)}}style={[localStyles.cardContainer,a&&localStyles.fatalCardBorder]}>
3
3
 
4
4
  <react_native_1.View style={localStyles.cardHeader}>
5
5
  <react_native_1.View style={localStyles.badgeRow}>
@@ -15,7 +15,7 @@
15
15
  </react_native_1.View>}
16
16
 
17
17
  <react_native_1.View style={[localStyles.typeBadge,{backgroundColor:w}]}>
18
- <react_native_1.Text style={[localStyles.typeBadgeText,{color:T}]}>
18
+ <react_native_1.Text style={[localStyles.typeBadgeText,{color:m}]}>
19
19
  {h}
20
20
  </react_native_1.Text>
21
21
  </react_native_1.View>
@@ -35,7 +35,7 @@
35
35
 
36
36
 
37
37
  <react_native_1.View style={{marginVertical:6}}>
38
- <HighlightText_1.default text={e.message||t("crash.unknownException")}highlight={g}numberOfLines={3}style={localStyles.errorMessageText}/>
38
+ <HighlightText_1.default text={e.message||t("crash.unknownException")}highlight={f}numberOfLines={3}style={localStyles.errorMessageText}/>
39
39
  </react_native_1.View>
40
40
 
41
41
 
@@ -84,47 +84,47 @@
84
84
  </react_native_1.View>
85
85
  </react_native_1.View>
86
86
  </TouchableScale_1.default>
87
- </AnimatedEntrance_1.default>},[g,n]);return<react_native_1.View style={localStyles.container}>
87
+ </AnimatedEntrance_1.default>},[f,s]);return<react_native_1.View style={localStyles.container}>
88
88
  {o.length>0&&<>
89
89
 
90
90
  <react_native_1.View style={localStyles.statsBar}>
91
91
  <react_native_1.ScrollView horizontal showsHorizontalScrollIndicator={!1}contentContainerStyle={localStyles.statsScrollContent}>
92
92
  <react_native_1.View style={[localStyles.statChip,localStyles.statChipActive]}>
93
- <react_native_1.Text style={localStyles.statChipValue}>{f.total}</react_native_1.Text>
93
+ <react_native_1.Text style={localStyles.statChipValue}>{g.total}</react_native_1.Text>
94
94
  <react_native_1.Text style={localStyles.statChipLabel}>{t("crash.statCrashes")}</react_native_1.Text>
95
95
  </react_native_1.View>
96
96
 
97
97
  <react_native_1.View style={localStyles.statChip}>
98
98
  <react_native_1.Text style={[localStyles.statChipValue,{color:AppColors_1.AppColors.errorColor}]}>
99
- {f.fatalCount}
99
+ {g.fatalCount}
100
100
  </react_native_1.Text>
101
101
  <react_native_1.Text style={localStyles.statChipLabel}>{t("crash.statFatal")}</react_native_1.Text>
102
102
  </react_native_1.View>
103
103
 
104
104
  <react_native_1.View style={localStyles.statChip}>
105
105
  <react_native_1.Text style={[localStyles.statChipValue,{color:AppColors_1.AppColors.offerPurple}]}>
106
- {f.jsCount}
106
+ {g.jsCount}
107
107
  </react_native_1.Text>
108
108
  <react_native_1.Text style={localStyles.statChipLabel}>{t("crash.statJsErrors")}</react_native_1.Text>
109
109
  </react_native_1.View>
110
110
 
111
111
  <react_native_1.View style={localStyles.statChip}>
112
112
  <react_native_1.Text style={[localStyles.statChipValue,{color:AppColors_1.AppColors.darkOrange}]}>
113
- {f.promiseCount}
113
+ {g.promiseCount}
114
114
  </react_native_1.Text>
115
115
  <react_native_1.Text style={localStyles.statChipLabel}>{t("crash.statPromises")}</react_native_1.Text>
116
116
  </react_native_1.View>
117
117
 
118
118
  <react_native_1.View style={localStyles.statChip}>
119
119
  <react_native_1.Text style={[localStyles.statChipValue,{color:AppColors_1.AppColors.purple}]}>
120
- {f.renderCount}
120
+ {g.renderCount}
121
121
  </react_native_1.Text>
122
122
  <react_native_1.Text style={localStyles.statChipLabel}>{t("crash.statRender")}</react_native_1.Text>
123
123
  </react_native_1.View>
124
124
 
125
125
  <react_native_1.View style={localStyles.statChip}>
126
126
  <react_native_1.Text style={[localStyles.statChipValue,{color:AppColors_1.AppColors.skyBlue}]}>
127
- {f.nativeCount}
127
+ {g.nativeCount}
128
128
  </react_native_1.Text>
129
129
  <react_native_1.Text style={localStyles.statChipLabel}>{t("crash.statNative")}</react_native_1.Text>
130
130
  </react_native_1.View>
@@ -136,11 +136,11 @@
136
136
  <react_native_1.View style={localStyles.searchRow}>
137
137
  <react_native_1.View style={localStyles.searchInputWrapper}>
138
138
  <NetworkIcons_1.SearchIcon color={AppColors_1.AppColors.grayTextWeak}size={14}/>
139
- <react_native_1.TextInput value={g}onChangeText={A}placeholder={t("crash.searchPlaceholder")}placeholderTextColor={AppColors_1.AppColors.grayTextWeak}style={localStyles.searchInput}autoCapitalize="none"autoCorrect={!1}/>
140
- {g.length>0&&<react_native_1.View style={{flexDirection:"row",alignItems:"center",gap:4}}>
139
+ <react_native_1.TextInput value={f}onChangeText={A}placeholder={t("crash.searchPlaceholder")}placeholderTextColor={AppColors_1.AppColors.grayTextWeak}style={localStyles.searchInput}autoCapitalize="none"autoCorrect={!1}/>
140
+ {f.length>0&&<react_native_1.View style={{flexDirection:"row",alignItems:"center",gap:4}}>
141
141
  <react_native_1.View style={{backgroundColor:`${AppColors_1.AppColors.purple}20`,borderRadius:10,paddingHorizontal:6,paddingVertical:1.5}}>
142
142
  <react_native_1.Text style={{color:AppColors_1.AppColors.purple,fontSize:9.5,fontFamily:AppFonts_1.AppFonts.interBold}}>
143
- {m.length}
143
+ {_.length}
144
144
  </react_native_1.Text>
145
145
  </react_native_1.View>
146
146
  <react_native_1.TouchableOpacity onPress={()=>A("")}hitSlop={8}>
@@ -150,13 +150,13 @@
150
150
  </react_native_1.View>
151
151
 
152
152
 
153
- <TouchableScale_1.default onPress={()=>S(!0)}style={[localStyles.filterButton,!(0,CrashFilterModal_1.isCrashFiltersDefault)(l)&&{borderColor:`${AppColors_1.AppColors.brandPurple}60`,backgroundColor:`${AppColors_1.AppColors.brandPurple}15`}]}>
153
+ <TouchableScale_1.default onPress={()=>V(!0)}style={[localStyles.filterButton,!(0,CrashFilterModal_1.isCrashFiltersDefault)(l)&&{borderColor:`${AppColors_1.AppColors.brandPurple}60`,backgroundColor:`${AppColors_1.AppColors.brandPurple}15`}]}>
154
154
  <NetworkIcons_1.FilterIcon size={14}color={(0,CrashFilterModal_1.isCrashFiltersDefault)(l)?AppColors_1.AppColors.grayTextStrong:AppColors_1.AppColors.brandPurple}/>
155
155
  {!(0,CrashFilterModal_1.isCrashFiltersDefault)(l)&&<react_native_1.View style={{position:"absolute",top:2,right:2,width:7,height:7,borderRadius:3.5,backgroundColor:AppColors_1.AppColors.darkOrange,borderWidth:1,borderColor:AppColors_1.AppColors.white}}/>}
156
156
  </TouchableScale_1.default>
157
157
 
158
158
 
159
- <TouchableScale_1.default onPress={F}style={localStyles.clearButton}>
159
+ <TouchableScale_1.default onPress={I}style={localStyles.clearButton}>
160
160
  <NetworkIcons_1.TrashIcon size={14}color={AppColors_1.AppColors.errorColor}/>
161
161
  </TouchableScale_1.default>
162
162
  </react_native_1.View>
@@ -166,7 +166,7 @@
166
166
 
167
167
  <react_native_1.View style={{flexDirection:"row",alignItems:"center",marginBottom:8,paddingHorizontal:12,gap:6}}>
168
168
  <react_native_1.ScrollView horizontal showsHorizontalScrollIndicator={!1}style={{flex:1}}contentContainerStyle={{flexDirection:"row",alignItems:"center",gap:6,paddingRight:6}}>
169
- {[{key:"all",label:t("crash.filterAll"),Icon:NetworkIcons_1.LayersIcon,count:f.total,themeColor:AppColors_1.AppColors.purple},{key:"fatal",label:t("crash.filterFatal"),Icon:NetworkIcons_1.SkullIcon,count:f.fatalCount,themeColor:AppColors_1.AppColors.errorColor},{key:"js",label:t("crash.filterJsError"),Icon:NetworkIcons_1.JsIcon,count:f.jsCount,themeColor:AppColors_1.AppColors.amber600},{key:"promise",label:t("crash.filterPromise"),Icon:NetworkIcons_1.HourglassIcon,count:f.promiseCount,themeColor:AppColors_1.AppColors.orange600},{key:"render",label:t("crash.filterRender"),Icon:NetworkIcons_1.LayoutIcon,count:f.renderCount,themeColor:AppColors_1.AppColors.violet600},{key:"native",label:t("crash.filterNative"),Icon:NetworkIcons_1.ChipIcon,count:f.nativeCount,themeColor:AppColors_1.AppColors.cyan600}].map(e=>{const r=y===e.key,a=e.themeColor||AppColors_1.AppColors.purple,h=r?AppColors_1.AppColors.white:a,C=e.Icon;return<TouchableScale_1.default key={e.key}onPress={()=>b(e.key)}>
169
+ {[{key:"all",label:t("crash.filterAll"),Icon:NetworkIcons_1.LayersIcon,count:g.total,themeColor:AppColors_1.AppColors.purple},{key:"fatal",label:t("crash.filterFatal"),Icon:NetworkIcons_1.SkullIcon,count:g.fatalCount,themeColor:AppColors_1.AppColors.errorColor},{key:"js",label:t("crash.filterJsError"),Icon:NetworkIcons_1.JsIcon,count:g.jsCount,themeColor:AppColors_1.AppColors.amber600},{key:"promise",label:t("crash.filterPromise"),Icon:NetworkIcons_1.HourglassIcon,count:g.promiseCount,themeColor:AppColors_1.AppColors.orange600},{key:"render",label:t("crash.filterRender"),Icon:NetworkIcons_1.LayoutIcon,count:g.renderCount,themeColor:AppColors_1.AppColors.violet600},{key:"native",label:t("crash.filterNative"),Icon:NetworkIcons_1.ChipIcon,count:g.nativeCount,themeColor:AppColors_1.AppColors.cyan600}].map(e=>{const r=y===e.key,a=e.themeColor||AppColors_1.AppColors.purple,h=r?AppColors_1.AppColors.white:a,C=e.Icon;return<TouchableScale_1.default key={e.key}onPress={()=>v(e.key)}>
170
170
  <react_native_1.View style={{flexDirection:"row",alignItems:"center",paddingHorizontal:9,paddingVertical:4.5,borderRadius:8,backgroundColor:r?a:`${a}12`,borderWidth:1,borderColor:r?a:`${a}30`,gap:5}}>
171
171
  <C size={11}color={h}/>
172
172
  <react_native_1.Text style={{fontFamily:AppFonts_1.AppFonts.interBold,fontSize:10.5,color:r?AppColors_1.AppColors.white:AppColors_1.AppColors.primaryBlack}}>
@@ -185,25 +185,25 @@
185
185
  </>}
186
186
 
187
187
 
188
- {m.length===0?<react_native_1.ScrollView contentContainerStyle={localStyles.emptyContainer}showsVerticalScrollIndicator={!1}>
188
+ {_.length===0?<react_native_1.ScrollView contentContainerStyle={localStyles.emptyContainer}showsVerticalScrollIndicator={!1}>
189
189
  <react_native_1.View style={localStyles.emptyIconCircle}>
190
190
  <NetworkIcons_1.ShieldAlertIcon size={38}color={AppColors_1.AppColors.greenColor}/>
191
191
  </react_native_1.View>
192
192
  <react_native_1.Text style={localStyles.emptyTitle}>
193
- {g.length>0?"No matching crash entries":y!=="all"||!(0,CrashFilterModal_1.isCrashFiltersDefault)(l)?"No crashes match filters":t("crash.emptyTitle")}
193
+ {f.length>0?"No matching crash entries":y!=="all"||!(0,CrashFilterModal_1.isCrashFiltersDefault)(l)?"No crashes match filters":t("crash.emptyTitle")}
194
194
  </react_native_1.Text>
195
195
  <react_native_1.Text style={localStyles.emptySub}>
196
- {g?`No crash entries matched "${g}"`:y!=="all"||!(0,CrashFilterModal_1.isCrashFiltersDefault)(l)?"Try adjusting your filters or search keywords.":t("crash.emptySubtitle")}
196
+ {f?`No crash entries matched "${f}"`:y!=="all"||!(0,CrashFilterModal_1.isCrashFiltersDefault)(l)?"Try adjusting your filters or search keywords.":t("crash.emptySubtitle")}
197
197
  </react_native_1.Text>
198
- {(g.length>0||y!=="all"||!(0,CrashFilterModal_1.isCrashFiltersDefault)(l))&&<TouchableScale_1.default onPress={()=>{A(""),b("all"),v(CrashFilterModal_1.DEFAULT_CRASH_FILTERS)}}style={{marginTop:10,paddingHorizontal:14,paddingVertical:7,borderRadius:8,backgroundColor:AppColors_1.AppColors.purple}}>
198
+ {(f.length>0||y!=="all"||!(0,CrashFilterModal_1.isCrashFiltersDefault)(l))&&<TouchableScale_1.default onPress={()=>{A(""),v("all"),S(CrashFilterModal_1.DEFAULT_CRASH_FILTERS)}}style={{marginTop:10,paddingHorizontal:14,paddingVertical:7,borderRadius:8,backgroundColor:AppColors_1.AppColors.purple}}>
199
199
  <react_native_1.Text style={{fontFamily:AppFonts_1.AppFonts.interBold,fontSize:11.5,color:AppColors_1.AppColors.white}}>
200
200
  Clear Search & Filters
201
201
  </react_native_1.Text>
202
202
  </TouchableScale_1.default>}
203
203
  </react_native_1.ScrollView>:<>
204
- <react_native_1.FlatList ref={i}data={m.slice(0,_)}keyExtractor={e=>e.id}renderItem={I}initialNumToRender={12}maxToRenderPerBatch={8}windowSize={5}removeClippedSubviews={react_native_1.Platform.OS==="android"}renderToHardwareTextureAndroid={!0}contentContainerStyle={localStyles.listContent}showsVerticalScrollIndicator={!1}ListFooterComponent={m.length>0?<EndOfListFooter_1.default count={Math.min(_,m.length)}totalCount={m.length}label="crashes"hasMore={m.length>_}onLoadMore={()=>x(e=>e+10)}/>:null}/>
204
+ <react_native_1.FlatList ref={T}data={_.slice(0,x)}keyExtractor={e=>e.id}renderItem={B}initialNumToRender={12}maxToRenderPerBatch={8}windowSize={5}removeClippedSubviews={react_native_1.Platform.OS==="android"}renderToHardwareTextureAndroid={!0}contentContainerStyle={localStyles.listContent}showsVerticalScrollIndicator={!1}ListFooterComponent={_.length>0?<EndOfListFooter_1.default count={Math.min(x,_.length)}totalCount={_.length}label="crashes"loadMoreStep={LOAD_MORE_STEP}hasMore={_.length>x}onLoadMore={()=>b(e=>e+LOAD_MORE_STEP)}/>:null}/>
205
205
  </>}
206
206
 
207
207
 
208
- <CrashFilterModal_1.default visible={V}onClose={()=>S(!1)}filters={l}onApply={v}searchQuery={g}/>
208
+ <CrashFilterModal_1.default visible={F}onClose={()=>V(!1)}filters={l}onApply={S}searchQuery={f}/>
209
209
  </react_native_1.View>});exports.default=CrashTab;const localStyles=react_native_1.StyleSheet.create({container:{flex:1,backgroundColor:AppColors_1.AppColors.grayBackground},statsBar:{backgroundColor:AppColors_1.AppColors.primaryLight,borderBottomWidth:1,borderBottomColor:AppColors_1.AppColors.grayBorderSecondary,paddingVertical:10},statsScrollContent:{paddingHorizontal:16,gap:8},statChip:{flexDirection:"row",alignItems:"center",gap:6,paddingHorizontal:10,paddingVertical:5,borderRadius:8,backgroundColor:AppColors_1.AppColors.purpleShade50,borderWidth:1,borderColor:`${AppColors_1.AppColors.purple}14`},statChipActive:{backgroundColor:`${AppColors_1.AppColors.purple}14`,borderColor:`${AppColors_1.AppColors.purple}33`},statChipValue:{fontFamily:AppFonts_1.AppFonts.interBold,fontSize:13,color:AppColors_1.AppColors.primaryBlack},statChipLabel:{fontFamily:AppFonts_1.AppFonts.interMedium,fontSize:11,color:AppColors_1.AppColors.grayText},controlsContainer:{paddingHorizontal:16,paddingTop:12,paddingBottom:6,backgroundColor:AppColors_1.AppColors.grayBackground},searchRow:{flexDirection:"row",alignItems:"center",gap:8},searchInputWrapper:{flex:1,flexDirection:"row",alignItems:"center",backgroundColor:AppColors_1.AppColors.primaryLight,borderWidth:1,borderColor:AppColors_1.AppColors.grayBorderSecondary,borderRadius:10,paddingHorizontal:10,height:38,gap:8},searchInput:{flex:1,fontFamily:AppFonts_1.AppFonts.interRegular,fontSize:13,color:AppColors_1.AppColors.primaryBlack,paddingVertical:0},clearButton:{width:38,height:38,borderRadius:10,backgroundColor:`${AppColors_1.AppColors.errorColor}14`,borderWidth:1,borderColor:`${AppColors_1.AppColors.errorColor}22`,alignItems:"center",justifyContent:"center"},filterButton:{width:38,height:38,borderRadius:10,backgroundColor:`${AppColors_1.AppColors.brandPurple}0F`,borderWidth:1,borderColor:`${AppColors_1.AppColors.brandPurple}30`,alignItems:"center",justifyContent:"center"},filterScrollContent:{paddingVertical:10,gap:6},filterChip:{flexDirection:"row",alignItems:"center",gap:5,paddingHorizontal:12,paddingVertical:6,borderRadius:8,backgroundColor:AppColors_1.AppColors.primaryLight,borderWidth:1,borderColor:AppColors_1.AppColors.grayBorderSecondary},filterChipActive:{backgroundColor:AppColors_1.AppColors.purple,borderColor:AppColors_1.AppColors.purple},filterChipText:{fontFamily:AppFonts_1.AppFonts.interMedium,fontSize:12,color:AppColors_1.AppColors.grayText},filterChipTextActive:{fontFamily:AppFonts_1.AppFonts.interBold,color:AppColors_1.AppColors.white},listContent:{paddingHorizontal:16,paddingTop:4,paddingBottom:24,gap:10},cardContainer:{backgroundColor:AppColors_1.AppColors.primaryLight,borderRadius:12,borderWidth:1,borderColor:AppColors_1.AppColors.grayBorderSecondary,padding:14,shadowColor:AppColors_1.AppColors.shadowColorString,shadowOffset:{width:0,height:1},shadowOpacity:.05,shadowRadius:3,elevation:2},fatalCardBorder:{borderColor:`${AppColors_1.AppColors.errorColor}44`},cardHeader:{flexDirection:"row",alignItems:"center",justifyContent:"space-between"},badgeRow:{flexDirection:"row",alignItems:"center",gap:6,flexShrink:1},sNoBadge:{backgroundColor:AppColors_1.AppColors.grayBackground,borderWidth:1,borderColor:AppColors_1.AppColors.grayBorderSecondary,paddingHorizontal:6,paddingVertical:3,borderRadius:5},sNoBadgeText:{fontFamily:AppFonts_1.AppFonts.interBold,fontSize:9.5,color:AppColors_1.AppColors.grayText,letterSpacing:.3},fatalBadge:{flexDirection:"row",alignItems:"center",gap:4,backgroundColor:AppColors_1.AppColors.errorColor,paddingHorizontal:6,paddingVertical:3,borderRadius:5},fatalBadgeText:{fontFamily:AppFonts_1.AppFonts.interBold,fontSize:9.5,color:AppColors_1.AppColors.white,letterSpacing:.5},caughtBadge:{backgroundColor:`${AppColors_1.AppColors.greenColor}1F`,paddingHorizontal:6,paddingVertical:3,borderRadius:5},caughtBadgeText:{fontFamily:AppFonts_1.AppFonts.interBold,fontSize:9.5,color:AppColors_1.AppColors.greenColor,letterSpacing:.5},typeBadge:{paddingHorizontal:6,paddingVertical:3,borderRadius:5},typeBadgeText:{fontFamily:AppFonts_1.AppFonts.interBold,fontSize:9.5,letterSpacing:.5},timeRow:{flexDirection:"row",alignItems:"center",gap:4,flexShrink:1},timestampText:{fontFamily:AppFonts_1.AppFonts.interRegular,fontSize:11,color:AppColors_1.AppColors.grayTextWeak},relativeTimeText:{fontFamily:AppFonts_1.AppFonts.interBold,fontSize:10,color:AppColors_1.AppColors.grayTextWeak,backgroundColor:AppColors_1.AppColors.grayBackground,paddingHorizontal:5,paddingVertical:1,borderRadius:4,overflow:"hidden"},errorMessageText:{fontFamily:AppFonts_1.AppFonts.interBold,fontSize:13.5,color:AppColors_1.AppColors.primaryBlack,lineHeight:18},locationRow:{flexDirection:"row",alignItems:"center",gap:6,marginTop:2,marginBottom:6,backgroundColor:AppColors_1.AppColors.purpleShade50,paddingHorizontal:8,paddingVertical:4,borderRadius:6},locationText:{fontFamily:AppFonts_1.AppFonts.interRegular,fontSize:11,color:AppColors_1.AppColors.grayText,flex:1},cardFooter:{flexDirection:"row",alignItems:"center",justifyContent:"space-between",marginTop:6,paddingTop:8,borderTopWidth:1,borderTopColor:AppColors_1.AppColors.dividerColor},metaPill:{flexDirection:"row",alignItems:"center",gap:4,backgroundColor:AppColors_1.AppColors.purpleShade50,paddingHorizontal:6,paddingVertical:2,borderRadius:4},metaPillText:{fontFamily:AppFonts_1.AppFonts.interMedium,fontSize:10,color:AppColors_1.AppColors.grayTextWeak},emptyContainer:{flexGrow:1,alignItems:"center",justifyContent:"center",padding:32,paddingBottom:80},emptyIconCircle:{width:72,height:72,borderRadius:36,backgroundColor:`${AppColors_1.AppColors.greenColor}1F`,alignItems:"center",justifyContent:"center",marginBottom:16},emptyTitle:{fontFamily:AppFonts_1.AppFonts.interBold,fontSize:17,color:AppColors_1.AppColors.primaryBlack,marginBottom:6},emptySub:{fontFamily:AppFonts_1.AppFonts.interRegular,fontSize:13,color:AppColors_1.AppColors.grayText,textAlign:"center",lineHeight:18,maxWidth:280}});
@@ -1,6 +1,6 @@
1
1
  "use strict";var __createBinding=this&&this.__createBinding||(Object.create?(function(e,o,n,r){r===void 0&&(r=n);var l=Object.getOwnPropertyDescriptor(o,n);(!l||("get"in l?!o.__esModule:l.writable||l.configurable))&&(l={enumerable:!0,get:function(){return o[n]}}),Object.defineProperty(e,r,l)}):(function(e,o,n,r){r===void 0&&(r=n),e[r]=o[n]})),__setModuleDefault=this&&this.__setModuleDefault||(Object.create?(function(e,o){Object.defineProperty(e,"default",{enumerable:!0,value:o})}):function(e,o){e.default=o}),__importStar=this&&this.__importStar||(function(){var e=function(o){return e=Object.getOwnPropertyNames||function(n){var r=[];for(var l in n)Object.prototype.hasOwnProperty.call(n,l)&&(r[r.length]=l);return r},e(o)};return function(o){if(o&&o.__esModule)return o;var n={};if(o!=null)for(var r=e(o),l=0;l<r.length;l++)r[l]!=="default"&&__createBinding(n,o,r[l]);return __setModuleDefault(n,o),n}})(),__importDefault=this&&this.__importDefault||function(e){return e&&e.__esModule?e:{default:e}};Object.defineProperty(exports,"__esModule",{value:!0}),exports.DebuggingTab=void 0;const react_1=__importStar(require("react")),react_native_1=require("react-native"),AppColors_1=require("../../styles/AppColors"),AppFonts_1=require("../../styles/AppFonts"),QRCodeView_1=__importDefault(require("../QRCodeView")),TouchableScale_1=__importDefault(require("../TouchableScale")),toast_1=require("../../helpers/toast"),NativeInspector_1=require("../../native/NativeInspector"),NetworkIcons_1=require("../NetworkIcons"),react_native_svg_1=__importStar(require("react-native-svg")),TerminalConsoleIcon=({color:e=AppColors_1.AppColors.purple,size:o=13})=><react_native_svg_1.default width={o}height={o}viewBox="0 0 24 24"fill="none">
2
2
  <react_native_svg_1.Path d="M4 17l6-6-6-6M12 19h8"stroke={e}strokeWidth="2"strokeLinecap="round"strokeLinejoin="round"/>
3
- </react_native_svg_1.default>,DebuggingTab=()=>{const e=(0,react_1.useMemo)(()=>{const a=react_native_1.NativeModules.SourceCode?.scriptURL||"";let s="localhost",t=8081;try{if(a.includes("://")){const d=a.split("://")[1].split("/")[0];if(d.includes(":")){const u=d.split(":");s=u[0];const y=parseInt(u[1],10);isNaN(y)||(t=y)}else s=d}}catch{}return{host:s,port:t,scriptURL:a}},[]),[o,n]=(0,react_1.useState)(()=>e.host&&e.host!=="localhost"&&e.host!=="127.0.0.1"&&e.host!=="10.0.2.2"?e.host:"192.168.1.2"),[r,l]=(0,react_1.useState)(e.port||8083),[V,m]=(0,react_1.useState)("app-debug.apk"),[T,x]=(0,react_1.useState)(null),[g,v]=(0,react_1.useState)("assembleRelease"),[f,k]=(0,react_1.useState)(!0),[i,w]=(0,react_1.useState)({status:"idle",scheme:"assembleRelease",clean:!0,progress:0,currentTask:"",error:null,apkName:null,apkSize:null}),p=(0,react_1.useRef)(null),_=(0,react_1.useRef)(new react_native_1.Animated.Value(0)).current,[A,I]=(0,react_1.useState)(!0),S=(0,react_1.useRef)(null);(0,react_1.useEffect)(()=>{react_native_1.Animated.timing(_,{toValue:Math.max(0,Math.min(100,i.progress)),duration:350,useNativeDriver:!1}).start()},[i.progress,_]),(0,react_1.useEffect)(()=>{i.logs&&i.logs.length>0&&setTimeout(()=>{S.current?.scrollToEnd({animated:!0})},50)},[i.logs]);const C=(0,react_1.useCallback)(async()=>{const a=Array.from(new Set([e.host,"10.0.2.2","localhost","127.0.0.1"].filter(Boolean))),s=Array.from(new Set([e.port,8083,8081,8082].filter(Boolean)));for(const t of a)for(const h of s)try{const d=new AbortController,u=setTimeout(()=>d.abort(),1200),y=await fetch(`http://${t}:${h}/__inapp_inspector/apk-info`,{signal:d.signal});if(clearTimeout(u),y.ok){const c=await y.json();c.hostIp&&c.hostIp!=="127.0.0.1"&&c.hostIp!=="localhost"&&c.hostIp!=="10.0.2.2"&&n(c.hostIp),c.port&&l(c.port),c.apkName&&m(c.apkName),c.apkSize&&x((c.apkSize/(1024*1024)).toFixed(1));return}}catch{}},[e.host,e.port]);(0,react_1.useEffect)(()=>{C()},[C]),(0,react_1.useEffect)(()=>()=>{p.current&&clearInterval(p.current)},[]);const R=(0,react_1.useCallback)(()=>{p.current&&clearInterval(p.current);const a=e.host||"10.0.2.2";p.current=setInterval(async()=>{try{const s=await fetch(`http://${a}:${r}/__inapp_inspector/build-status`);if(s.ok){const t=await s.json();w(t),t.status==="completed"?(p.current&&clearInterval(p.current),(0,NativeInspector_1.triggerNativeHaptic)("success"),(0,toast_1.showToast)("\u2713 APK Build Generated Successfully!"),t.apkSize&&x((t.apkSize/(1024*1024)).toFixed(1)),t.apkName&&m(t.apkName),C()):t.status==="failed"&&(p.current&&clearInterval(p.current),(0,NativeInspector_1.triggerNativeHaptic)("error"),(0,toast_1.showToast)("\u2715 Build Failed: "+(t.error||"Gradle error")))}}catch{}},1e3)},[e.host,r,C]),F=async()=>{(0,NativeInspector_1.triggerNativeHaptic)("medium"),w({status:"running",scheme:g,clean:f,progress:5,currentTask:f?"Cleaning build cache...":"Initializing build...",error:null,apkName:null,apkSize:null});const a=Array.from(new Set([e.host,"10.0.2.2","localhost","127.0.0.1"].filter(Boolean))),s=Array.from(new Set([r,8083,8081,8082].filter(Boolean)));let t=!1;for(const h of a)for(const d of s)try{const u=new AbortController,y=setTimeout(()=>u.abort(),2e3),c=await fetch(`http://${h}:${d}/__inapp_inspector/build-apk?scheme=${g}&clean=${f}`,{signal:u.signal});if(clearTimeout(y),c.ok){t=!0,R();return}}catch{}t||w(h=>({...h,status:"failed",error:"Cannot reach build server. Ensure npm start or npm run serve-apk is running on host."}))},D=async()=>{(0,NativeInspector_1.triggerNativeHaptic)("warning"),p.current&&clearInterval(p.current);const a=Array.from(new Set([e.host,"10.0.2.2","localhost","127.0.0.1"].filter(Boolean))),s=Array.from(new Set([r,8083,8081,8082].filter(Boolean)));for(const t of a)for(const h of s)try{const d=new AbortController,u=setTimeout(()=>d.abort(),1500);await fetch(`http://${t}:${h}/__inapp_inspector/stop-build`,{signal:d.signal}),clearTimeout(u)}catch{}w(t=>({...t,status:"idle",currentTask:"Build cancelled by user",logs:[...t.logs||[],"\u{1F6D1} Build cancelled by user."]})),(0,toast_1.showToast)("Build cancelled")},B=`http://${o}:${r}/${V.replace(/^\/+/,"")}`,z=()=>{(0,NativeInspector_1.triggerNativeHaptic)("light"),react_native_1.Share.share({message:B,title:"Install Android APK"})},b=i.status==="running";return<react_native_1.ScrollView style={styles.scrollArea}contentContainerStyle={styles.scrollContent}showsVerticalScrollIndicator={!1}>
3
+ </react_native_svg_1.default>,DebuggingTab=()=>{const e=(0,react_1.useMemo)(()=>{const a=react_native_1.NativeModules.SourceCode?.scriptURL||"";let s="localhost",t=8081;try{if(a.includes("://")){const d=a.split("://")[1].split("/")[0];if(d.includes(":")){const u=d.split(":");s=u[0];const y=parseInt(u[1],10);isNaN(y)||(t=y)}else s=d}}catch{}return{host:s,port:t,scriptURL:a}},[]),[o,n]=(0,react_1.useState)(()=>e.host&&e.host!=="localhost"&&e.host!=="127.0.0.1"&&e.host!=="10.0.2.2"?e.host:"192.168.1.2"),[r,l]=(0,react_1.useState)(e.port||8083),[B,m]=(0,react_1.useState)("app-debug.apk"),[T,x]=(0,react_1.useState)(null),[g,v]=(0,react_1.useState)("assembleRelease"),[f,V]=(0,react_1.useState)(!0),[i,w]=(0,react_1.useState)({status:"idle",scheme:"assembleRelease",clean:!0,progress:0,currentTask:"",error:null,apkName:null,apkSize:null}),p=(0,react_1.useRef)(null),_=(0,react_1.useRef)(new react_native_1.Animated.Value(0)).current,[A,k]=(0,react_1.useState)(!0),S=(0,react_1.useRef)(null);(0,react_1.useEffect)(()=>{react_native_1.Animated.timing(_,{toValue:Math.max(0,Math.min(100,i.progress)),duration:350,useNativeDriver:!1}).start()},[i.progress,_]),(0,react_1.useEffect)(()=>{i.logs&&i.logs.length>0&&setTimeout(()=>{S.current?.scrollToEnd({animated:!0})},50)},[i.logs]);const C=(0,react_1.useCallback)(async()=>{const a=Array.from(new Set([e.host,"10.0.2.2","localhost","127.0.0.1"].filter(Boolean))),s=Array.from(new Set([e.port,8083,8081,8082].filter(Boolean)));for(const t of a)for(const h of s)try{const d=new AbortController,u=setTimeout(()=>d.abort(),1200),y=await fetch(`http://${t}:${h}/__inapp_inspector/apk-info`,{signal:d.signal});if(clearTimeout(u),y.ok){const c=await y.json();c.hostIp&&c.hostIp!=="127.0.0.1"&&c.hostIp!=="localhost"&&c.hostIp!=="10.0.2.2"&&n(c.hostIp),c.port&&l(c.port),c.apkName&&m(c.apkName),c.apkSize&&x((c.apkSize/(1024*1024)).toFixed(1));return}}catch{}},[e.host,e.port]);(0,react_1.useEffect)(()=>{C()},[C]),(0,react_1.useEffect)(()=>()=>{p.current&&clearInterval(p.current)},[]);const I=(0,react_1.useCallback)(()=>{p.current&&clearInterval(p.current);const a=e.host||"10.0.2.2";p.current=setInterval(async()=>{try{const s=await fetch(`http://${a}:${r}/__inapp_inspector/build-status`);if(s.ok){const t=await s.json();w(t),t.status==="completed"?(p.current&&clearInterval(p.current),(0,NativeInspector_1.triggerNativeHaptic)("success"),(0,toast_1.showToast)("\u2713 APK Build Generated Successfully!"),t.apkSize&&x((t.apkSize/(1024*1024)).toFixed(1)),t.apkName&&m(t.apkName),C()):t.status==="failed"&&(p.current&&clearInterval(p.current),(0,NativeInspector_1.triggerNativeHaptic)("error"),(0,toast_1.showToast)("\u2715 Build Failed: "+(t.error||"Gradle error")))}}catch{}},1e3)},[e.host,r,C]),R=async()=>{(0,NativeInspector_1.triggerNativeHaptic)("medium"),w({status:"running",scheme:g,clean:f,progress:5,currentTask:f?"Cleaning build cache...":"Initializing build...",error:null,apkName:null,apkSize:null});const a=Array.from(new Set([e.host,"10.0.2.2","localhost","127.0.0.1"].filter(Boolean))),s=Array.from(new Set([r,8083,8081,8082].filter(Boolean)));let t=!1;for(const h of a)for(const d of s)try{const u=new AbortController,y=setTimeout(()=>u.abort(),2e3),c=await fetch(`http://${h}:${d}/__inapp_inspector/build-apk?scheme=${g}&clean=${f}`,{signal:u.signal});if(clearTimeout(y),c.ok){t=!0,I();return}}catch{}t||w(h=>({...h,status:"failed",error:"Cannot reach build server. Ensure npm start or npm run serve-apk is running on host."}))},F=async()=>{(0,NativeInspector_1.triggerNativeHaptic)("warning"),p.current&&clearInterval(p.current);const a=Array.from(new Set([e.host,"10.0.2.2","localhost","127.0.0.1"].filter(Boolean))),s=Array.from(new Set([r,8083,8081,8082].filter(Boolean)));for(const t of a)for(const h of s)try{const d=new AbortController,u=setTimeout(()=>d.abort(),1500);await fetch(`http://${t}:${h}/__inapp_inspector/stop-build`,{signal:d.signal}),clearTimeout(u)}catch{}w(t=>({...t,status:"idle",currentTask:"Build cancelled by user",logs:[...t.logs||[],"\u{1F6D1} Build cancelled by user."]})),(0,toast_1.showToast)("Build cancelled")},D=`http://${o}:${r}/${B.replace(/^\/+/,"")}`,b=i.status==="running";return<react_native_1.ScrollView style={styles.scrollArea}contentContainerStyle={styles.scrollContent}showsVerticalScrollIndicator={!1}>
4
4
 
5
5
  <react_native_1.View style={styles.heroCard}>
6
6
  <react_native_1.View style={styles.heroHeader}>
@@ -64,7 +64,7 @@
64
64
 
65
65
  <react_native_1.View style={styles.qrCenteredWrapper}>
66
66
  <react_native_1.View style={styles.qrInnerFrame}>
67
- <QRCodeView_1.default value={B}size={235}color={AppColors_1.AppColors.primaryBlack}backgroundColor={AppColors_1.AppColors.white}/>
67
+ <QRCodeView_1.default value={D}size={235}color={AppColors_1.AppColors.primaryBlack}backgroundColor={AppColors_1.AppColors.white}/>
68
68
  </react_native_1.View>
69
69
  </react_native_1.View>
70
70
  </react_native_1.View>
@@ -104,7 +104,7 @@
104
104
  </react_native_1.View>
105
105
 
106
106
 
107
- <react_native_1.TouchableOpacity disabled={b}activeOpacity={.7}onPress={()=>{(0,NativeInspector_1.triggerNativeHaptic)("light"),k(!f)}}style={styles.cleanRow}>
107
+ <react_native_1.TouchableOpacity disabled={b}activeOpacity={.7}onPress={()=>{(0,NativeInspector_1.triggerNativeHaptic)("light"),V(!f)}}style={styles.cleanRow}>
108
108
  <react_native_1.View style={[styles.checkboxBox,f&&styles.checkboxBoxActive]}>
109
109
  {f&&<NetworkIcons_1.CheckIcon size={11}color={AppColors_1.AppColors.white}/>}
110
110
  </react_native_1.View>
@@ -148,7 +148,7 @@
148
148
  <TerminalConsoleIcon color={AppColors_1.AppColors.sky400}size={12}/>
149
149
  <react_native_1.Text style={styles.consoleHeaderTitle}>GRADLE VERBOSE OUTPUT</react_native_1.Text>
150
150
  </react_native_1.View>
151
- <react_native_1.TouchableOpacity activeOpacity={.7}onPress={()=>I(!A)}style={styles.consoleToggleBtn}>
151
+ <react_native_1.TouchableOpacity activeOpacity={.7}onPress={()=>k(!A)}style={styles.consoleToggleBtn}>
152
152
  <react_native_1.Text style={styles.consoleToggleText}>
153
153
  {A?"Hide Console":"Show Console"}
154
154
  </react_native_1.Text>
@@ -173,11 +173,11 @@
173
173
  </react_native_1.Text>
174
174
  </react_native_1.View>
175
175
 
176
- <TouchableScale_1.default onPress={D}style={styles.stopBtn}>
176
+ <TouchableScale_1.default onPress={F}style={styles.stopBtn}>
177
177
  <NetworkIcons_1.CircleXIcon size={13}color={AppColors_1.AppColors.white}/>
178
178
  <react_native_1.Text style={styles.stopBtnText}>Stop Build</react_native_1.Text>
179
179
  </TouchableScale_1.default>
180
- </react_native_1.View>:<TouchableScale_1.default onPress={F}style={styles.generateBtn}>
180
+ </react_native_1.View>:<TouchableScale_1.default onPress={R}style={styles.generateBtn}>
181
181
  <react_native_1.View style={styles.ctaContentRow}>
182
182
  <NetworkIcons_1.SparkleIcon size={14}color={AppColors_1.AppColors.white}/>
183
183
  <react_native_1.Text style={styles.generateBtnText}>