react-native-inapp-inspector 2.3.24 → 2.4.0

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 (207) hide show
  1. package/README.md +26 -5
  2. package/dist/commonjs/components/AnalyticsDetail.js +15 -12
  3. package/dist/commonjs/components/AnalyticsEventCard.js +11 -8
  4. package/dist/commonjs/components/AppHeaderLogo.js +4 -6
  5. package/dist/commonjs/components/ConsoleLogCard.d.ts +1 -0
  6. package/dist/commonjs/components/ConsoleLogCard.js +92 -80
  7. package/dist/commonjs/components/EndOfListFooter.d.ts +5 -1
  8. package/dist/commonjs/components/EndOfListFooter.js +27 -5
  9. package/dist/commonjs/components/Inspector/AnalyticsFilterModal.js +1 -1
  10. package/dist/commonjs/components/Inspector/AnalyticsTab.js +27 -299
  11. package/dist/commonjs/components/Inspector/ConsoleTab.js +36 -94
  12. package/dist/commonjs/components/Inspector/CrashDetail.js +11 -10
  13. package/dist/commonjs/components/Inspector/CrashTab.js +43 -33
  14. package/dist/commonjs/components/Inspector/DebuggingTab.js +13 -13
  15. package/dist/commonjs/components/Inspector/DeviceInfoTab.js +107 -71
  16. package/dist/commonjs/components/Inspector/FabLauncher.js +8 -9
  17. package/dist/commonjs/components/Inspector/InspectorHeader.js +93 -70
  18. package/dist/commonjs/components/Inspector/LogDetail.js +10 -7
  19. package/dist/commonjs/components/Inspector/MainScreen.js +66 -30
  20. package/dist/commonjs/components/Inspector/MediaGalleryTab.js +1 -1
  21. package/dist/commonjs/components/Inspector/MediaPreviewModal.js +3 -3
  22. package/dist/commonjs/components/Inspector/NetworkDetail.js +29 -28
  23. package/dist/commonjs/components/Inspector/NetworkFilterModal.js +1 -1
  24. package/dist/commonjs/components/Inspector/NetworkTab.js +87 -85
  25. package/dist/commonjs/components/Inspector/NpmStarPrompt.js +3 -3
  26. package/dist/commonjs/components/Inspector/NpmUpdateToast.js +21 -22
  27. package/dist/commonjs/components/Inspector/PushCard.d.ts +4 -0
  28. package/dist/commonjs/components/Inspector/PushCard.js +89 -0
  29. package/dist/commonjs/components/Inspector/PushDetail.d.ts +4 -0
  30. package/dist/commonjs/components/Inspector/PushDetail.js +190 -0
  31. package/dist/commonjs/components/Inspector/PushTab.d.ts +3 -0
  32. package/dist/commonjs/components/Inspector/PushTab.js +45 -0
  33. package/dist/commonjs/components/Inspector/ReduxDetail.js +16 -13
  34. package/dist/commonjs/components/Inspector/ReduxTab.js +109 -106
  35. package/dist/commonjs/components/Inspector/SettingsPanel.js +230 -134
  36. package/dist/commonjs/components/Inspector/StorageTab.js +55 -51
  37. package/dist/commonjs/components/Inspector/TabBar.js +30 -26
  38. package/dist/commonjs/components/Inspector/UpdateAvailableModal.js +2 -2
  39. package/dist/commonjs/components/JsonViewer.js +151 -159
  40. package/dist/commonjs/components/LogCard.js +34 -38
  41. package/dist/commonjs/components/LogSyntaxHighlighter.js +3 -3
  42. package/dist/commonjs/components/ModuleErrorBoundary.d.ts +24 -0
  43. package/dist/commonjs/components/ModuleErrorBoundary.js +33 -0
  44. package/dist/commonjs/components/NetworkIcons.d.ts +3 -3
  45. package/dist/commonjs/components/NetworkIcons.js +10 -6
  46. package/dist/commonjs/components/SegmentedTabs.d.ts +8 -2
  47. package/dist/commonjs/components/SegmentedTabs.js +11 -7
  48. package/dist/commonjs/components/ShareButton.d.ts +11 -0
  49. package/dist/commonjs/components/ShareButton.js +6 -0
  50. package/dist/commonjs/constants/index.js +1 -1
  51. package/dist/commonjs/constants/version.d.ts +1 -1
  52. package/dist/commonjs/constants/version.js +1 -1
  53. package/dist/commonjs/customHooks/crashHandler.js +4 -4
  54. package/dist/commonjs/customHooks/networkLogger.js +1 -2
  55. package/dist/commonjs/customHooks/pushNotificationLogger.d.ts +19 -0
  56. package/dist/commonjs/customHooks/pushNotificationLogger.js +1 -0
  57. package/dist/commonjs/helpers/index.d.ts +6 -0
  58. package/dist/commonjs/helpers/index.js +4 -4
  59. package/dist/commonjs/helpers/memoryManager.d.ts +2 -2
  60. package/dist/commonjs/helpers/memoryManager.js +1 -1
  61. package/dist/commonjs/helpers/remoteConfig.js +1 -1
  62. package/dist/commonjs/helpers/settingsStore.d.ts +1 -0
  63. package/dist/commonjs/helpers/settingsStore.js +1 -1
  64. package/dist/commonjs/helpers/shareFormatter.d.ts +13 -0
  65. package/dist/commonjs/helpers/shareFormatter.js +7 -0
  66. package/dist/commonjs/i18n/index.d.ts +35 -0
  67. package/dist/commonjs/i18n/index.js +1 -1
  68. package/dist/commonjs/i18n/locales/ar.json +1 -0
  69. package/dist/commonjs/i18n/locales/de.json +1 -0
  70. package/dist/commonjs/i18n/locales/en.json +1 -1
  71. package/dist/commonjs/i18n/locales/es.json +1 -0
  72. package/dist/commonjs/i18n/locales/fr.json +1 -0
  73. package/dist/commonjs/i18n/locales/hi.json +1 -0
  74. package/dist/commonjs/i18n/locales/ja.json +1 -0
  75. package/dist/commonjs/i18n/locales/ko.json +1 -0
  76. package/dist/commonjs/i18n/locales/pt.json +1 -0
  77. package/dist/commonjs/i18n/locales/ru.json +1 -0
  78. package/dist/commonjs/i18n/locales/zh.json +1 -0
  79. package/dist/commonjs/index.d.ts +6 -5
  80. package/dist/commonjs/index.js +4 -4
  81. package/dist/commonjs/push.d.ts +4 -0
  82. package/dist/commonjs/push.js +1 -0
  83. package/dist/commonjs/styles/AppColors.d.ts +40 -0
  84. package/dist/commonjs/styles/AppColors.js +1 -1
  85. package/dist/commonjs/styles/index.js +1 -1
  86. package/dist/commonjs/types/enums.d.ts +30 -20
  87. package/dist/commonjs/types/enums.js +1 -1
  88. package/dist/commonjs/types/index.d.ts +10 -0
  89. package/dist/commonjs/types/interfaces.d.ts +63 -7
  90. package/dist/esm/components/AnalyticsDetail.js +84 -81
  91. package/dist/esm/components/AnalyticsEventCard.js +20 -17
  92. package/dist/esm/components/AppHeaderLogo.js +5 -7
  93. package/dist/esm/components/ConsoleLogCard.d.ts +1 -0
  94. package/dist/esm/components/ConsoleLogCard.js +98 -86
  95. package/dist/esm/components/EndOfListFooter.d.ts +5 -1
  96. package/dist/esm/components/EndOfListFooter.js +36 -14
  97. package/dist/esm/components/Inspector/AnalyticsFilterModal.js +14 -14
  98. package/dist/esm/components/Inspector/AnalyticsTab.js +44 -316
  99. package/dist/esm/components/Inspector/ConsoleTab.js +55 -113
  100. package/dist/esm/components/Inspector/CrashDetail.js +53 -52
  101. package/dist/esm/components/Inspector/CrashTab.js +74 -64
  102. package/dist/esm/components/Inspector/DebuggingTab.js +33 -33
  103. package/dist/esm/components/Inspector/DeviceInfoTab.js +174 -138
  104. package/dist/esm/components/Inspector/FabLauncher.js +41 -42
  105. package/dist/esm/components/Inspector/InspectorHeader.js +138 -115
  106. package/dist/esm/components/Inspector/LogDetail.js +24 -21
  107. package/dist/esm/components/Inspector/MainScreen.js +98 -62
  108. package/dist/esm/components/Inspector/MediaGalleryTab.js +1 -1
  109. package/dist/esm/components/Inspector/MediaPreviewModal.js +31 -31
  110. package/dist/esm/components/Inspector/NetworkDetail.js +88 -87
  111. package/dist/esm/components/Inspector/NetworkFilterModal.js +8 -8
  112. package/dist/esm/components/Inspector/NetworkTab.js +132 -130
  113. package/dist/esm/components/Inspector/NpmStarPrompt.js +42 -42
  114. package/dist/esm/components/Inspector/NpmUpdateToast.js +45 -46
  115. package/dist/esm/components/Inspector/PushCard.d.ts +4 -0
  116. package/dist/esm/components/Inspector/PushCard.js +89 -0
  117. package/dist/esm/components/Inspector/PushDetail.d.ts +4 -0
  118. package/dist/esm/components/Inspector/PushDetail.js +190 -0
  119. package/dist/esm/components/Inspector/PushTab.d.ts +3 -0
  120. package/dist/esm/components/Inspector/PushTab.js +45 -0
  121. package/dist/esm/components/Inspector/ReduxDetail.js +40 -37
  122. package/dist/esm/components/Inspector/ReduxTab.js +155 -152
  123. package/dist/esm/components/Inspector/SettingsPanel.js +380 -284
  124. package/dist/esm/components/Inspector/StorageTab.js +177 -173
  125. package/dist/esm/components/Inspector/TabBar.js +38 -34
  126. package/dist/esm/components/Inspector/UpdateAvailableModal.js +1 -1
  127. package/dist/esm/components/JsonViewer.js +161 -169
  128. package/dist/esm/components/LogCard.js +38 -42
  129. package/dist/esm/components/LogSyntaxHighlighter.js +1 -1
  130. package/dist/esm/components/ModuleErrorBoundary.d.ts +24 -0
  131. package/dist/esm/components/ModuleErrorBoundary.js +33 -0
  132. package/dist/esm/components/NetworkIcons.d.ts +3 -3
  133. package/dist/esm/components/NetworkIcons.js +7 -3
  134. package/dist/esm/components/SegmentedTabs.d.ts +8 -2
  135. package/dist/esm/components/SegmentedTabs.js +12 -8
  136. package/dist/esm/components/ShareButton.d.ts +11 -0
  137. package/dist/esm/components/ShareButton.js +6 -0
  138. package/dist/esm/constants/index.js +1 -1
  139. package/dist/esm/constants/version.d.ts +1 -1
  140. package/dist/esm/constants/version.js +1 -1
  141. package/dist/esm/customHooks/crashHandler.js +6 -6
  142. package/dist/esm/customHooks/networkLogger.js +1 -2
  143. package/dist/esm/customHooks/pushNotificationLogger.d.ts +19 -0
  144. package/dist/esm/customHooks/pushNotificationLogger.js +1 -0
  145. package/dist/esm/helpers/index.d.ts +6 -0
  146. package/dist/esm/helpers/index.js +4 -4
  147. package/dist/esm/helpers/memoryManager.d.ts +2 -2
  148. package/dist/esm/helpers/memoryManager.js +1 -1
  149. package/dist/esm/helpers/remoteConfig.js +1 -1
  150. package/dist/esm/helpers/settingsStore.d.ts +1 -0
  151. package/dist/esm/helpers/settingsStore.js +1 -1
  152. package/dist/esm/helpers/shareFormatter.d.ts +13 -0
  153. package/dist/esm/helpers/shareFormatter.js +7 -0
  154. package/dist/esm/i18n/index.d.ts +35 -0
  155. package/dist/esm/i18n/index.js +1 -1
  156. package/dist/esm/i18n/locales/ar.json +1 -0
  157. package/dist/esm/i18n/locales/de.json +1 -0
  158. package/dist/esm/i18n/locales/en.json +1 -1
  159. package/dist/esm/i18n/locales/es.json +1 -0
  160. package/dist/esm/i18n/locales/fr.json +1 -0
  161. package/dist/esm/i18n/locales/hi.json +1 -0
  162. package/dist/esm/i18n/locales/ja.json +1 -0
  163. package/dist/esm/i18n/locales/ko.json +1 -0
  164. package/dist/esm/i18n/locales/pt.json +1 -0
  165. package/dist/esm/i18n/locales/ru.json +1 -0
  166. package/dist/esm/i18n/locales/zh.json +1 -0
  167. package/dist/esm/index.d.ts +6 -5
  168. package/dist/esm/index.js +7 -7
  169. package/dist/esm/push.d.ts +4 -0
  170. package/dist/esm/push.js +1 -0
  171. package/dist/esm/styles/AppColors.d.ts +40 -0
  172. package/dist/esm/styles/AppColors.js +1 -1
  173. package/dist/esm/styles/index.js +1 -1
  174. package/dist/esm/types/enums.d.ts +30 -20
  175. package/dist/esm/types/enums.js +1 -1
  176. package/dist/esm/types/index.d.ts +10 -0
  177. package/dist/esm/types/interfaces.d.ts +63 -7
  178. package/package.json +53 -24
  179. package/src/native/NativeInspector.ts +0 -1
  180. package/dist/commonjs/bundle.d.ts +0 -2
  181. package/dist/commonjs/bundle.js +0 -1
  182. package/dist/commonjs/components/BrandSquareIcon.d.ts +0 -5
  183. package/dist/commonjs/components/BrandSquareIcon.js +0 -112
  184. package/dist/commonjs/components/Inspector/BundleTab.d.ts +0 -48
  185. package/dist/commonjs/components/Inspector/BundleTab.js +0 -1297
  186. package/dist/commonjs/components/Inspector/PerformanceTab.d.ts +0 -27
  187. package/dist/commonjs/components/Inspector/PerformanceTab.js +0 -454
  188. package/dist/commonjs/customHooks/bundleAnalyzer.d.ts +0 -115
  189. package/dist/commonjs/customHooks/bundleAnalyzer.js +0 -1
  190. package/dist/commonjs/customHooks/performanceTracker.d.ts +0 -144
  191. package/dist/commonjs/customHooks/performanceTracker.js +0 -63
  192. package/dist/commonjs/performance.d.ts +0 -2
  193. package/dist/commonjs/performance.js +0 -1
  194. package/dist/esm/bundle.d.ts +0 -2
  195. package/dist/esm/bundle.js +0 -1
  196. package/dist/esm/components/BrandSquareIcon.d.ts +0 -5
  197. package/dist/esm/components/BrandSquareIcon.js +0 -112
  198. package/dist/esm/components/Inspector/BundleTab.d.ts +0 -48
  199. package/dist/esm/components/Inspector/BundleTab.js +0 -1297
  200. package/dist/esm/components/Inspector/PerformanceTab.d.ts +0 -27
  201. package/dist/esm/components/Inspector/PerformanceTab.js +0 -454
  202. package/dist/esm/customHooks/bundleAnalyzer.d.ts +0 -115
  203. package/dist/esm/customHooks/bundleAnalyzer.js +0 -1
  204. package/dist/esm/customHooks/performanceTracker.d.ts +0 -144
  205. package/dist/esm/customHooks/performanceTracker.js +0 -63
  206. package/dist/esm/performance.d.ts +0 -2
  207. package/dist/esm/performance.js +0 -1
@@ -1,7 +1,7 @@
1
- "use strict";var __importDefault=this&&this.__importDefault||function(r){return r&&r.__esModule?r:{default:r}};Object.defineProperty(exports,"__esModule",{value:!0}),exports.LogSyntaxHighlighter=exports.tokenizeText=void 0;const react_1=__importDefault(require("react")),react_native_1=require("react-native"),AppColors_1=require("../styles/AppColors"),AppFonts_1=require("../styles/AppFonts"),helpers_1=require("../helpers"),TOKEN_REGEX=/("(?:\\.|[^"\\])*"(?=\s*:))|("(?:\\.|[^"\\])*"|'(?:\\.|[^'\\])*')|(\b-?\d+(?:\.\d+)?(?:[eE][+-]?\d+)?\b)|(\b(?:true|false)\b)|(\b(?:null|undefined|NaN)\b)|(https?:\/\/[^\s"',]+)|(\[[\w\s_-]+\])|([{}[\],:])|([^"'\d\s{}[\],:]+|[ \t\r\n]+)/g,tokenizeText=r=>{if(!r)return[];const t=[];let e;for(TOKEN_REGEX.lastIndex=0;(e=TOKEN_REGEX.exec(r))!==null;)e[1]?t.push({type:"key",value:e[1]}):e[2]?t.push({type:"string",value:e[2]}):e[3]?t.push({type:"number",value:e[3]}):e[4]?t.push({type:"boolean",value:e[4]}):e[5]?t.push({type:"null",value:e[5]}):e[6]?t.push({type:"url",value:e[6]}):e[7]?t.push({type:"tag",value:e[7]}):e[8]?t.push({type:"bracket",value:e[8]}):e[9]&&t.push({type:"plain",value:e[9]});return t};exports.tokenizeText=tokenizeText;const getTokenColor=r=>{switch(r){case"key":return AppColors_1.AppColors.sky600||"#0369a1";case"string":return AppColors_1.AppColors.emerald600||"#059669";case"number":return AppColors_1.AppColors.amber600||"#d97706";case"boolean":return AppColors_1.AppColors.purple||"#7c3aed";case"null":return AppColors_1.AppColors.red600||"#dc2626";case"url":return"#0284c7";case"tag":return AppColors_1.AppColors.violet600||"#7c3aed";case"bracket":return AppColors_1.AppColors.slate500||"#64748b";default:return AppColors_1.AppColors.primaryBlack||"#1e293b"}};exports.LogSyntaxHighlighter=react_1.default.memo(({text:r,search:t,numberOfLines:e,style:u,detectLinks:a=!0})=>{if(!r)return null;const c=react_1.default.useMemo(()=>(0,exports.tokenizeText)(r),[r]),y=(s,i)=>{const h=getTokenColor(s.type),l=s.type==="url",f=s.type==="key",n={color:h,fontFamily:f?AppFonts_1.AppFonts.interBold:AppFonts_1.AppFonts.interRegular,textDecorationLine:l?"underline":"none"};if(!t||t.trim().length===0)return<react_native_1.Text key={i}style={n}onPress={l&&a?()=>(0,helpers_1.handleOpenExternalLink)(s.value):void 0}>
1
+ "use strict";var __importDefault=this&&this.__importDefault||function(r){return r&&r.__esModule?r:{default:r}};Object.defineProperty(exports,"__esModule",{value:!0}),exports.LogSyntaxHighlighter=exports.tokenizeText=void 0;const react_1=__importDefault(require("react")),react_native_1=require("react-native"),AppColors_1=require("../styles/AppColors"),AppFonts_1=require("../styles/AppFonts"),helpers_1=require("../helpers"),TOKEN_REGEX=/("(?:\\.|[^"\\])*"(?=\s*:))|("(?:\\.|[^"\\])*"|'(?:\\.|[^'\\])*')|(\b-?\d+(?:\.\d+)?(?:[eE][+-]?\d+)?\b)|(\b(?:true|false)\b)|(\b(?:null|undefined|NaN)\b)|(https?:\/\/[^\s"',]+)|(\[[\w\s_-]+\])|([{}[\],:])|([^"'\d\s{}[\],:]+|[ \t\r\n]+)/g,tokenizeText=r=>{if(!r)return[];const t=[];let e;for(TOKEN_REGEX.lastIndex=0;(e=TOKEN_REGEX.exec(r))!==null;)e[1]?t.push({type:"key",value:e[1]}):e[2]?t.push({type:"string",value:e[2]}):e[3]?t.push({type:"number",value:e[3]}):e[4]?t.push({type:"boolean",value:e[4]}):e[5]?t.push({type:"null",value:e[5]}):e[6]?t.push({type:"url",value:e[6]}):e[7]?t.push({type:"tag",value:e[7]}):e[8]?t.push({type:"bracket",value:e[8]}):e[9]&&t.push({type:"plain",value:e[9]});return t};exports.tokenizeText=tokenizeText;const getTokenColor=r=>{switch(r){case"key":return AppColors_1.AppColors.sky600;case"string":return AppColors_1.AppColors.emerald600;case"number":return AppColors_1.AppColors.amber600;case"boolean":return AppColors_1.AppColors.purple;case"null":return AppColors_1.AppColors.red600;case"url":return AppColors_1.AppColors.sky600;case"tag":return AppColors_1.AppColors.violet600;case"bracket":return AppColors_1.AppColors.slate500;default:return AppColors_1.AppColors.primaryBlack}};exports.LogSyntaxHighlighter=react_1.default.memo(({text:r,search:t,numberOfLines:e,style:u,detectLinks:a=!0})=>{if(!r)return null;const c=react_1.default.useMemo(()=>(0,exports.tokenizeText)(r),[r]),y=(s,i)=>{const h=getTokenColor(s.type),l=s.type==="url",f=s.type==="key",n={color:h,fontFamily:f?AppFonts_1.AppFonts.interBold:AppFonts_1.AppFonts.interRegular,textDecorationLine:l?"underline":"none"};if(!t||t.trim().length===0)return<react_native_1.Text key={i}style={n}onPress={l&&a?()=>(0,helpers_1.handleOpenExternalLink)(s.value):void 0}>
2
2
  {s.value}
3
- </react_native_1.Text>;const x=new RegExp(`(${(0,helpers_1.escapeRegex)(t.trim())})`,"gi"),d=s.value.split(x);return<react_native_1.Text key={i}style={n}>
4
- {d.map((o,p)=>o.toLowerCase()===t.trim().toLowerCase()?<react_native_1.Text key={p}style={[n,styles.searchHighlight]}>
3
+ </react_native_1.Text>;const x=new RegExp(`(${(0,helpers_1.escapeRegex)(t.trim())})`,"gi"),g=s.value.split(x);return<react_native_1.Text key={i}style={n}>
4
+ {g.map((o,p)=>o.toLowerCase()===t.trim().toLowerCase()?<react_native_1.Text key={p}style={[n,styles.searchHighlight]}>
5
5
  {o}
6
6
  </react_native_1.Text>:<react_native_1.Text key={p}style={n}onPress={l&&a?()=>(0,helpers_1.handleOpenExternalLink)(s.value):void 0}>
7
7
  {o}
@@ -0,0 +1,24 @@
1
+ import React, { Component, ErrorInfo, ReactNode } from 'react';
2
+ import { StyleProp, ViewStyle } from 'react-native';
3
+ export interface ModuleErrorBoundaryProps {
4
+ moduleName?: string;
5
+ fallback?: ReactNode | ((error: Error, retry: () => void) => ReactNode);
6
+ children: ReactNode;
7
+ onError?: (error: Error, errorInfo: ErrorInfo) => void;
8
+ onRetry?: () => void;
9
+ containerStyle?: StyleProp<ViewStyle>;
10
+ }
11
+ interface ModuleErrorBoundaryState {
12
+ hasError: boolean;
13
+ error: Error | null;
14
+ copied: boolean;
15
+ }
16
+ export declare class ModuleErrorBoundary extends Component<ModuleErrorBoundaryProps, ModuleErrorBoundaryState> {
17
+ state: ModuleErrorBoundaryState;
18
+ static getDerivedStateFromError(error: Error): Partial<ModuleErrorBoundaryState>;
19
+ componentDidCatch(error: Error, errorInfo: ErrorInfo): void;
20
+ handleRetry: () => void;
21
+ handleCopy: () => void;
22
+ render(): string | number | bigint | boolean | Iterable<React.ReactNode> | Promise<string | number | bigint | boolean | React.ReactPortal | React.ReactElement<unknown, string | React.JSXElementConstructor<any>> | Iterable<React.ReactNode>> | React.JSX.Element;
23
+ }
24
+ export default ModuleErrorBoundary;
@@ -0,0 +1,33 @@
1
+ "use strict";var __createBinding=this&&this.__createBinding||(Object.create?(function(n,e,t,r){r===void 0&&(r=t);var o=Object.getOwnPropertyDescriptor(e,t);(!o||("get"in o?!e.__esModule:o.writable||o.configurable))&&(o={enumerable:!0,get:function(){return e[t]}}),Object.defineProperty(n,r,o)}):(function(n,e,t,r){r===void 0&&(r=t),n[r]=e[t]})),__setModuleDefault=this&&this.__setModuleDefault||(Object.create?(function(n,e){Object.defineProperty(n,"default",{enumerable:!0,value:e})}):function(n,e){n.default=e}),__importStar=this&&this.__importStar||(function(){var n=function(e){return n=Object.getOwnPropertyNames||function(t){var r=[];for(var o in t)Object.prototype.hasOwnProperty.call(t,o)&&(r[r.length]=o);return r},n(e)};return function(e){if(e&&e.__esModule)return e;var t={};if(e!=null)for(var r=n(e),o=0;o<r.length;o++)r[o]!=="default"&&__createBinding(t,e,r[o]);return __setModuleDefault(t,e),t}})();Object.defineProperty(exports,"__esModule",{value:!0}),exports.ModuleErrorBoundary=void 0;const react_1=__importStar(require("react")),react_native_1=require("react-native"),AppFonts_1=require("../styles/AppFonts"),helpers_1=require("../helpers"),NetworkIcons_1=require("./NetworkIcons"),crashHandler_1=require("../customHooks/crashHandler"),enums_1=require("../types/enums");class ModuleErrorBoundary extends react_1.Component{constructor(){super(...arguments),this.state={hasError:!1,error:null,copied:!1},this.handleRetry=()=>{this.setState({hasError:!1,error:null,copied:!1}),this.props.onRetry&&this.props.onRetry()},this.handleCopy=()=>{if(!this.state.error)return;const e=`[Module Error: ${this.props.moduleName||"Micro-Feature"}]
2
+ Message: ${this.state.error.message}
3
+ Stack: ${this.state.error.stack||"N/A"}`;(0,helpers_1.copyToClipboard)(e),this.setState({copied:!0}),setTimeout(()=>{this.setState({copied:!1})},2e3)}}static getDerivedStateFromError(e){return{hasError:!0,error:e}}componentDidCatch(e,t){try{(0,crashHandler_1.handleInterceptedCrash)(e,e?.stack,!1,enums_1.CrashType.Js,t.componentStack||void 0)}catch{}this.props.onError&&this.props.onError(e,t)}render(){if(this.state.hasError&&this.state.error){const{fallback:e,moduleName:t="UI Module",containerStyle:r}=this.props;return typeof e=="function"?e(this.state.error,this.handleRetry):e||<react_native_1.View style={[styles.card,r]}>
4
+ <react_native_1.View style={styles.headerRow}>
5
+ <react_native_1.View style={styles.titleRow}>
6
+ <NetworkIcons_1.WarningTriangleIcon color="#DC2626"size={16}/>
7
+ <react_native_1.Text style={styles.moduleName}numberOfLines={1}>
8
+ {t}
9
+ </react_native_1.Text>
10
+ </react_native_1.View>
11
+ <react_native_1.View style={styles.badge}>
12
+ <react_native_1.Text style={styles.badgeText}>FAULT ISOLATED</react_native_1.Text>
13
+ </react_native_1.View>
14
+ </react_native_1.View>
15
+
16
+ <react_native_1.Text style={styles.message}numberOfLines={2}>
17
+ {this.state.error.message||"An unexpected rendering error occurred in this module."}
18
+ </react_native_1.Text>
19
+
20
+ <react_native_1.View style={styles.actionsRow}>
21
+ <react_native_1.TouchableOpacity style={styles.retryButton}onPress={this.handleRetry}activeOpacity={.7}>
22
+ <NetworkIcons_1.RefreshCcwIcon color="#FFFFFF"size={12}/>
23
+ <react_native_1.Text style={styles.retryText}>Retry Module</react_native_1.Text>
24
+ </react_native_1.TouchableOpacity>
25
+
26
+ <react_native_1.TouchableOpacity style={styles.copyButton}onPress={this.handleCopy}activeOpacity={.7}>
27
+ <NetworkIcons_1.CopyIcon color="#475569"size={12}/>
28
+ <react_native_1.Text style={styles.copyText}>
29
+ {this.state.copied?"Copied":"Copy Error"}
30
+ </react_native_1.Text>
31
+ </react_native_1.TouchableOpacity>
32
+ </react_native_1.View>
33
+ </react_native_1.View>}return this.props.children}}exports.ModuleErrorBoundary=ModuleErrorBoundary,exports.default=ModuleErrorBoundary;const styles=react_native_1.StyleSheet.create({card:{backgroundColor:"#FEF2F2",borderColor:"#FECDD3",borderWidth:1.2,borderRadius:16,padding:14,marginVertical:6,gap:10,...react_native_1.Platform.select({ios:{shadowColor:"#DC2626",shadowOffset:{width:0,height:2},shadowOpacity:.06,shadowRadius:6},android:{elevation:2}})},headerRow:{flexDirection:"row",alignItems:"center",justifyContent:"space-between",gap:6},titleRow:{flexDirection:"row",alignItems:"center",gap:6,flexShrink:1},moduleName:{fontSize:12.5,fontWeight:"800",color:"#991B1B",fontFamily:AppFonts_1.AppFonts.interBold,flexShrink:1},badge:{backgroundColor:"#FEE2E2",paddingHorizontal:6,paddingVertical:2,borderRadius:6,borderWidth:1,borderColor:"#FCA5A5"},badgeText:{fontSize:8.5,fontWeight:"800",color:"#B91C1C",letterSpacing:.4},message:{fontSize:11.5,color:"#7F1D1D",lineHeight:16,fontFamily:AppFonts_1.AppFonts.interRegular},actionsRow:{flexDirection:"row",alignItems:"center",gap:8,marginTop:2},retryButton:{flex:1,flexDirection:"row",alignItems:"center",justifyContent:"center",gap:6,backgroundColor:"#DC2626",paddingVertical:7,paddingHorizontal:12,borderRadius:9},retryText:{fontSize:11,fontWeight:"700",color:"#FFFFFF",fontFamily:AppFonts_1.AppFonts.interBold},copyButton:{flexDirection:"row",alignItems:"center",justifyContent:"center",gap:4,backgroundColor:"#F1F5F9",paddingVertical:7,paddingHorizontal:12,borderRadius:9,borderWidth:1,borderColor:"#E2E8F0"},copyText:{fontSize:11,fontWeight:"600",color:"#475569",fontFamily:AppFonts_1.AppFonts.interMedium}});
@@ -4,7 +4,6 @@ export interface IconProps {
4
4
  size?: number;
5
5
  strokeWidth?: number;
6
6
  isExpanded?: boolean;
7
- isPaused?: boolean;
8
7
  active?: boolean;
9
8
  direction?: 'up' | 'down' | string;
10
9
  ascending?: boolean;
@@ -31,7 +30,6 @@ export declare const CircleXIcon: ({ color, size }: IconProps) => React.JSX.Elem
31
30
  export declare const CircleAlertIcon: ({ color, size }: IconProps) => React.JSX.Element;
32
31
  export declare const FailIcon: ({ color, size }: IconProps) => React.JSX.Element;
33
32
  export declare const TrashIcon: ({ color, size }: IconProps) => React.JSX.Element;
34
- export declare const HeaderPauseIcon: ({ isPaused, color, size, }: IconProps) => React.JSX.Element;
35
33
  export declare const ExportIcon: ({ color, size, }: IconProps) => React.JSX.Element;
36
34
  export declare const ShareIcon: ({ color, size, }: IconProps) => React.JSX.Element;
37
35
  export declare const SignalIcon: ({ color, size, }: IconProps) => React.JSX.Element;
@@ -49,7 +47,6 @@ export declare const DebugIcon: ({ color, size }: IconProps) => React.JSX.Elemen
49
47
  export declare const SunIcon: ({ color, size }: IconProps) => React.JSX.Element;
50
48
  export declare const MoonIcon: ({ color, size }: IconProps) => React.JSX.Element;
51
49
  export { BrandCircleIcon } from './BrandCircleIcon';
52
- export { BrandSquareIcon } from './BrandSquareIcon';
53
50
  export declare const HtmlIcon: ({ color, size }: IconProps) => React.JSX.Element;
54
51
  export declare const CssIcon: ({ color, size }: IconProps) => React.JSX.Element;
55
52
  export declare const JsIcon: ({ color, size }: IconProps) => React.JSX.Element;
@@ -168,3 +165,6 @@ export declare const NeutralFaceIcon: ({ color, size, }: IconProps) => React.JSX
168
165
  export declare const SmileFaceIcon: ({ color, size, }: IconProps) => React.JSX.Element;
169
166
  export declare const StarFaceIcon: ({ color, size, }: IconProps) => React.JSX.Element;
170
167
  export declare const HeartFaceIcon: ({ color, size, }: IconProps) => React.JSX.Element;
168
+ export declare const BellIcon: ({ color, size, }: IconProps) => React.JSX.Element;
169
+ export declare const NotificationIcon: ({ color, size, }: IconProps) => React.JSX.Element;
170
+ export declare const CloudPushIcon: ({ color, size, }: IconProps) => React.JSX.Element;
@@ -1,4 +1,4 @@
1
- "use strict";var __createBinding=this&&this.__createBinding||(Object.create?(function(e,t,o,r){r===void 0&&(r=o);var n=Object.getOwnPropertyDescriptor(t,o);(!n||("get"in n?!t.__esModule:n.writable||n.configurable))&&(n={enumerable:!0,get:function(){return t[o]}}),Object.defineProperty(e,r,n)}):(function(e,t,o,r){r===void 0&&(r=o),e[r]=t[o]})),__setModuleDefault=this&&this.__setModuleDefault||(Object.create?(function(e,t){Object.defineProperty(e,"default",{enumerable:!0,value:t})}):function(e,t){e.default=t}),__importStar=this&&this.__importStar||(function(){var e=function(t){return e=Object.getOwnPropertyNames||function(o){var r=[];for(var n in o)Object.prototype.hasOwnProperty.call(o,n)&&(r[r.length]=n);return r},e(t)};return function(t){if(t&&t.__esModule)return t;var o={};if(t!=null)for(var r=e(t),n=0;n<r.length;n++)r[n]!=="default"&&__createBinding(o,t,r[n]);return __setModuleDefault(o,t),o}})(),__importDefault=this&&this.__importDefault||function(e){return e&&e.__esModule?e:{default:e}};Object.defineProperty(exports,"__esModule",{value:!0}),exports.UserIcon=exports.LayersIcon=exports.WipeIcon=exports.FolderIcon=exports.SettingsIcon=exports.EyeIcon=exports.JsIcon=exports.CssIcon=exports.HtmlIcon=exports.BrandSquareIcon=exports.BrandCircleIcon=exports.MoonIcon=exports.SunIcon=exports.DebugIcon=exports.InsightsIcon=exports.AnalyticsIcon=exports.WhiteBackNavigation=exports.CloseWhite=exports.DownloadIcon=exports.FilterIcon=exports.ChevronIcon=exports.SortArrowIcon=exports.GlobeIcon=exports.DiffIcon=exports.SignalIcon=exports.ShareIcon=exports.ExportIcon=exports.HeaderPauseIcon=exports.TrashIcon=exports.FailIcon=exports.CircleAlertIcon=exports.CircleXIcon=exports.CircleCheckIcon=exports.CheckIcon=exports.TerminalIcon=exports.FetchIcon=exports.CopyIcon=exports.HeadersIcon=exports.ResponseIcon=exports.RequestIcon=exports.SizeIcon=exports.StatusIcon=exports.CalendarIcon=exports.ClockIcon=exports.ClearIcon=exports.SearchIcon=exports.ExpandCollapseIcon=exports.ScreenIcon=exports.MapPinIcon=exports.EmptyRadarIcon=void 0,exports.LayoutIcon=exports.ChipIcon=exports.SkullIcon=exports.ShieldAlertIcon=exports.CrashIcon=exports.UserCheckIcon=exports.TargetGoalIcon=exports.RepeatIcon=exports.PinIcon=exports.HourglassIcon=exports.FlameIcon=exports.CodeBracketsIcon=exports.AndroidIcon=exports.AppleIcon=exports.LinkChainIcon=exports.GitHubIcon=exports.StarIcon=exports.PackageBoxIcon=exports.ExternalLinkIcon=exports.MoneyIcon=exports.CartIcon=exports.TextAaIcon=exports.BrainIcon=exports.AtomIcon=exports.MapIcon=exports.SparkleIcon=exports.LightbulbIcon=exports.DocIcon=exports.FolderOpenIcon=exports.BanIcon=exports.BoltIcon=exports.PerformanceIcon=exports.ReduxIcon=exports.MetadataIcon=exports.StorageIcon=exports.RefreshCcwIcon=exports.TimelineIcon=exports.LiveStateIcon=exports.BundleIcon=exports.ForwardChevronIcon=exports.PackageIcon=exports.TableIcon=exports.RawIcon=exports.PrettyIcon=exports.SortIcon=exports.MotionIcon=exports.TrendingUpIcon=exports.ErrorCircleIcon=exports.WarningTriangleIcon=exports.InfoCircleIcon=void 0,exports.BookOpenIcon=exports.MinimizeWindowIcon=exports.GridIcon=exports.ListIcon=exports.ScreencastIcon=exports.FilmIcon=exports.ImageIcon=exports.PauseIcon=exports.PlayIcon=exports.GifIcon=exports.MicrophoneIcon=exports.VideoCameraIcon=exports.CameraIcon=exports.LifeBuoyIcon=exports.SendIcon=exports.HelpCircleIcon=exports.HeadphonesIcon=exports.TurtleIcon=exports.RocketIcon=exports.UnlockIcon=exports.QrCodeIcon=exports.LockIcon=exports.PlusIcon=exports.PencilIcon=exports.DatabaseIcon=exports.ShieldCheckIcon=exports.WifiIcon=exports.CpuIcon=exports.MinimizeIcon=exports.MaximizeIcon=exports.ChevronDownIcon=exports.ResetIcon=exports.NpmIcon=exports.TagIcon=exports.BugIcon=exports.AlertTriangleIcon=exports.SmartphoneIcon=exports.KeyIcon=exports.BarChartIcon=exports.DiceIcon=exports.ZapIcon=exports.FlaskIcon=exports.LoadingSpinnerIcon=exports.ListenerIcon=exports.AllFramesIcon=exports.AppFramesIcon=exports.RawJsonIcon=exports.TrailIcon=exports.DiagnosticsIcon=exports.StackTraceIcon=void 0,exports.HeartFaceIcon=exports.StarFaceIcon=exports.SmileFaceIcon=exports.NeutralFaceIcon=exports.AngryFaceIcon=exports.SparklesIcon=exports.MessageSquareIcon=exports.ChevronUpIcon=exports.WrenchIcon=void 0;const react_1=__importDefault(require("react")),react_native_svg_1=__importStar(require("react-native-svg")),AppColors_1=require("../styles/AppColors"),EmptyRadarIcon=({color:e=AppColors_1.AppColors.purple,size:t=32})=><react_native_svg_1.default width={t}height={t}viewBox="0 0 24 24"fill="none">
1
+ "use strict";var __createBinding=this&&this.__createBinding||(Object.create?(function(e,t,o,r){r===void 0&&(r=o);var n=Object.getOwnPropertyDescriptor(t,o);(!n||("get"in n?!t.__esModule:n.writable||n.configurable))&&(n={enumerable:!0,get:function(){return t[o]}}),Object.defineProperty(e,r,n)}):(function(e,t,o,r){r===void 0&&(r=o),e[r]=t[o]})),__setModuleDefault=this&&this.__setModuleDefault||(Object.create?(function(e,t){Object.defineProperty(e,"default",{enumerable:!0,value:t})}):function(e,t){e.default=t}),__importStar=this&&this.__importStar||(function(){var e=function(t){return e=Object.getOwnPropertyNames||function(o){var r=[];for(var n in o)Object.prototype.hasOwnProperty.call(o,n)&&(r[r.length]=n);return r},e(t)};return function(t){if(t&&t.__esModule)return t;var o={};if(t!=null)for(var r=e(t),n=0;n<r.length;n++)r[n]!=="default"&&__createBinding(o,t,r[n]);return __setModuleDefault(o,t),o}})(),__importDefault=this&&this.__importDefault||function(e){return e&&e.__esModule?e:{default:e}};Object.defineProperty(exports,"__esModule",{value:!0}),exports.WarningTriangleIcon=exports.InfoCircleIcon=exports.UserIcon=exports.LayersIcon=exports.WipeIcon=exports.FolderIcon=exports.SettingsIcon=exports.EyeIcon=exports.JsIcon=exports.CssIcon=exports.HtmlIcon=exports.BrandCircleIcon=exports.MoonIcon=exports.SunIcon=exports.DebugIcon=exports.InsightsIcon=exports.AnalyticsIcon=exports.WhiteBackNavigation=exports.CloseWhite=exports.DownloadIcon=exports.FilterIcon=exports.ChevronIcon=exports.SortArrowIcon=exports.GlobeIcon=exports.DiffIcon=exports.SignalIcon=exports.ShareIcon=exports.ExportIcon=exports.TrashIcon=exports.FailIcon=exports.CircleAlertIcon=exports.CircleXIcon=exports.CircleCheckIcon=exports.CheckIcon=exports.TerminalIcon=exports.FetchIcon=exports.CopyIcon=exports.HeadersIcon=exports.ResponseIcon=exports.RequestIcon=exports.SizeIcon=exports.StatusIcon=exports.CalendarIcon=exports.ClockIcon=exports.ClearIcon=exports.SearchIcon=exports.ExpandCollapseIcon=exports.ScreenIcon=exports.MapPinIcon=exports.EmptyRadarIcon=void 0,exports.DiagnosticsIcon=exports.StackTraceIcon=exports.LayoutIcon=exports.ChipIcon=exports.SkullIcon=exports.ShieldAlertIcon=exports.CrashIcon=exports.UserCheckIcon=exports.TargetGoalIcon=exports.RepeatIcon=exports.PinIcon=exports.HourglassIcon=exports.FlameIcon=exports.CodeBracketsIcon=exports.AndroidIcon=exports.AppleIcon=exports.LinkChainIcon=exports.GitHubIcon=exports.StarIcon=exports.PackageBoxIcon=exports.ExternalLinkIcon=exports.MoneyIcon=exports.CartIcon=exports.TextAaIcon=exports.BrainIcon=exports.AtomIcon=exports.MapIcon=exports.SparkleIcon=exports.LightbulbIcon=exports.DocIcon=exports.FolderOpenIcon=exports.BanIcon=exports.BoltIcon=exports.PerformanceIcon=exports.ReduxIcon=exports.MetadataIcon=exports.StorageIcon=exports.RefreshCcwIcon=exports.TimelineIcon=exports.LiveStateIcon=exports.BundleIcon=exports.ForwardChevronIcon=exports.PackageIcon=exports.TableIcon=exports.RawIcon=exports.PrettyIcon=exports.SortIcon=exports.MotionIcon=exports.TrendingUpIcon=exports.ErrorCircleIcon=void 0,exports.ChevronUpIcon=exports.WrenchIcon=exports.BookOpenIcon=exports.MinimizeWindowIcon=exports.GridIcon=exports.ListIcon=exports.ScreencastIcon=exports.FilmIcon=exports.ImageIcon=exports.PauseIcon=exports.PlayIcon=exports.GifIcon=exports.MicrophoneIcon=exports.VideoCameraIcon=exports.CameraIcon=exports.LifeBuoyIcon=exports.SendIcon=exports.HelpCircleIcon=exports.HeadphonesIcon=exports.TurtleIcon=exports.RocketIcon=exports.UnlockIcon=exports.QrCodeIcon=exports.LockIcon=exports.PlusIcon=exports.PencilIcon=exports.DatabaseIcon=exports.ShieldCheckIcon=exports.WifiIcon=exports.CpuIcon=exports.MinimizeIcon=exports.MaximizeIcon=exports.ChevronDownIcon=exports.ResetIcon=exports.NpmIcon=exports.TagIcon=exports.BugIcon=exports.AlertTriangleIcon=exports.SmartphoneIcon=exports.KeyIcon=exports.BarChartIcon=exports.DiceIcon=exports.ZapIcon=exports.FlaskIcon=exports.LoadingSpinnerIcon=exports.ListenerIcon=exports.AllFramesIcon=exports.AppFramesIcon=exports.RawJsonIcon=exports.TrailIcon=void 0,exports.CloudPushIcon=exports.NotificationIcon=exports.BellIcon=exports.HeartFaceIcon=exports.StarFaceIcon=exports.SmileFaceIcon=exports.NeutralFaceIcon=exports.AngryFaceIcon=exports.SparklesIcon=exports.MessageSquareIcon=void 0;const react_1=__importDefault(require("react")),react_native_svg_1=__importStar(require("react-native-svg")),AppColors_1=require("../styles/AppColors"),EmptyRadarIcon=({color:e=AppColors_1.AppColors.purple,size:t=32})=><react_native_svg_1.default width={t}height={t}viewBox="0 0 24 24"fill="none">
2
2
  <react_native_svg_1.Path d="M12 22s8-4 8-10V5l-8-3-8 3v7c0 6 8 10 8 10z"stroke={e}strokeWidth="1.5"strokeLinecap="round"strokeLinejoin="round"/>
3
3
  <react_native_svg_1.Circle cx="12"cy="11"r="3"stroke={e}strokeWidth="1.5"/>
4
4
  <react_native_svg_1.Path d="M12 14v3"stroke={e}strokeWidth="1.5"strokeLinecap="round"/>
@@ -60,9 +60,7 @@
60
60
  <react_native_svg_1.Path d="M18 6L6 18M6 6l12 12"stroke={e}strokeWidth="3"strokeLinecap="round"strokeLinejoin="round"/>
61
61
  </react_native_svg_1.default>;exports.FailIcon=FailIcon;const TrashIcon=({color:e=AppColors_1.AppColors.primaryLight,size:t=18})=><react_native_svg_1.default width={t}height={t}viewBox="0 0 24 24"fill="none">
62
62
  <react_native_svg_1.Path d="M3 6h18M19 6v14a2 2 0 01-2 2H7a2 2 0 01-2-2V6m3 0V4a2 2 0 012-2h4a2 2 0 012 2v2"stroke={e}strokeWidth="2"strokeLinecap="round"strokeLinejoin="round"/>
63
- </react_native_svg_1.default>;exports.TrashIcon=TrashIcon;const HeaderPauseIcon=({isPaused:e,color:t=AppColors_1.AppColors.primaryLight,size:o=20})=><react_native_svg_1.default width={o}height={o}viewBox="0 0 24 24"fill="none">
64
- {e?<react_native_svg_1.Path d="M5 3l14 9-14 9V3z"fill={t}/>:<react_native_svg_1.Path d="M6 5h3v14H6V5zm9 0h3v14h-3V5z"fill={t}/>}
65
- </react_native_svg_1.default>;exports.HeaderPauseIcon=HeaderPauseIcon;const ExportIcon=({color:e=AppColors_1.AppColors.primaryLight,size:t=18})=><react_native_svg_1.default width={t}height={t}viewBox="0 0 24 24"fill="none">
63
+ </react_native_svg_1.default>;exports.TrashIcon=TrashIcon;const ExportIcon=({color:e=AppColors_1.AppColors.primaryLight,size:t=18})=><react_native_svg_1.default width={t}height={t}viewBox="0 0 24 24"fill="none">
66
64
  <react_native_svg_1.Path d="M21 15v4a2 2 0 0 1-2 2H5a2 2 0 0 1-2-2v-4M17 8l-5-5-5 5M12 3v12"stroke={e}strokeWidth="2"strokeLinecap="round"strokeLinejoin="round"/>
67
65
  </react_native_svg_1.default>;exports.ExportIcon=ExportIcon;const ShareIcon=({color:e=AppColors_1.AppColors.white,size:t=14})=><react_native_svg_1.default width={t}height={t}viewBox="0 0 24 24"fill="none">
68
66
  <react_native_svg_1.Path d="M4 12v8a2 2 0 0 0 2 2h12a2 2 0 0 0 2-2v-8M16 6l-4-4-4 4M12 2v13"stroke={e}strokeWidth="2"strokeLinecap="round"strokeLinejoin="round"/>
@@ -116,7 +114,7 @@
116
114
  <react_native_svg_1.Path d="M12 1v2M12 21v2M4.22 4.22l1.42 1.42M18.36 18.36l1.42 1.42M1 12h2M21 12h2M4.22 19.78l1.42-1.42M18.36 5.64l1.42-1.42"stroke={e}strokeWidth="2"strokeLinecap="round"/>
117
115
  </react_native_svg_1.default>;exports.SunIcon=SunIcon;const MoonIcon=({color:e=AppColors_1.AppColors.white,size:t=16})=><react_native_svg_1.default width={t}height={t}viewBox="0 0 24 24"fill="none">
118
116
  <react_native_svg_1.Path d="M21 12.79A9 9 0 1 1 11.21 3 7 7 0 0 0 21 12.79z"fill={e}stroke={e}strokeWidth="1.5"strokeLinecap="round"strokeLinejoin="round"/>
119
- </react_native_svg_1.default>;exports.MoonIcon=MoonIcon;var BrandCircleIcon_1=require("./BrandCircleIcon");Object.defineProperty(exports,"BrandCircleIcon",{enumerable:!0,get:function(){return BrandCircleIcon_1.BrandCircleIcon}});var BrandSquareIcon_1=require("./BrandSquareIcon");Object.defineProperty(exports,"BrandSquareIcon",{enumerable:!0,get:function(){return BrandSquareIcon_1.BrandSquareIcon}});const HtmlIcon=({color:e=AppColors_1.AppColors.grayTextWeak,size:t=14})=><react_native_svg_1.default width={t}height={t}viewBox="0 0 24 24"fill="none">
117
+ </react_native_svg_1.default>;exports.MoonIcon=MoonIcon;var BrandCircleIcon_1=require("./BrandCircleIcon");Object.defineProperty(exports,"BrandCircleIcon",{enumerable:!0,get:function(){return BrandCircleIcon_1.BrandCircleIcon}});const HtmlIcon=({color:e=AppColors_1.AppColors.grayTextWeak,size:t=14})=><react_native_svg_1.default width={t}height={t}viewBox="0 0 24 24"fill="none">
120
118
  <react_native_svg_1.Path d="M17.5 8.5L21 12l-3.5 3.5M6.5 8.5L3 12l3.5 3.5M14 4.5l-4 15"stroke={e}strokeWidth="2.5"strokeLinecap="round"strokeLinejoin="round"/>
121
119
  </react_native_svg_1.default>;exports.HtmlIcon=HtmlIcon;const CssIcon=({color:e=AppColors_1.AppColors.grayTextWeak,size:t=14})=><react_native_svg_1.default width={t}height={t}viewBox="0 0 24 24"fill="none">
122
120
  <react_native_svg_1.Path d="M12 2L2 7l10 5 10-5-10-5zM2 17l10 5 10-5M2 12l10 5 10-5"stroke={e}strokeWidth="2"strokeLinecap="round"strokeLinejoin="round"/>
@@ -533,4 +531,10 @@
533
531
 
534
532
  <react_native_svg_1.Path d="M15 8.2C14.3 7.4 13.2 7.5 12.7 8.2C12.1 9 12.4 10.1 15 11.6C17.6 10.1 17.9 9 17.3 8.2C16.8 7.5 15.7 7.4 15 8.2Z"fill={e}/>
535
533
  <react_native_svg_1.Path d="M8 14.5C8 14.5 9.5 17.5 12 17.5C14.5 17.5 16 14.5 16 14.5"stroke={e}strokeWidth="1.8"strokeLinecap="round"/>
536
- </react_native_svg_1.default>;exports.HeartFaceIcon=HeartFaceIcon;
534
+ </react_native_svg_1.default>;exports.HeartFaceIcon=HeartFaceIcon;const BellIcon=({color:e=AppColors_1.AppColors.brandPurple,size:t=20})=><react_native_svg_1.default width={t}height={t}viewBox="0 0 24 24"fill="none">
535
+ <react_native_svg_1.Path d="M18 8A6 6 0 0 0 6 8c0 7-3 9-3 9h18s-3-2-3-9"stroke={e}strokeWidth="2"strokeLinecap="round"strokeLinejoin="round"/>
536
+ <react_native_svg_1.Path d="M13.73 21a2 2 0 0 1-3.46 0"stroke={e}strokeWidth="2"strokeLinecap="round"strokeLinejoin="round"/>
537
+ </react_native_svg_1.default>;exports.BellIcon=BellIcon,exports.NotificationIcon=exports.BellIcon;const CloudPushIcon=({color:e=AppColors_1.AppColors.brandPurple,size:t=20})=><react_native_svg_1.default width={t}height={t}viewBox="0 0 24 24"fill="none">
538
+ <react_native_svg_1.Path d="M18 10h-1.26A8 8 0 1 0 9 20h9a5 5 0 0 0 0-10z"stroke={e}strokeWidth="2"strokeLinecap="round"strokeLinejoin="round"/>
539
+ <react_native_svg_1.Path d="m12 13 3 3m0 0-3 3m3-3H7"stroke={e}strokeWidth="1.8"strokeLinecap="round"strokeLinejoin="round"/>
540
+ </react_native_svg_1.default>;exports.CloudPushIcon=CloudPushIcon;
@@ -3,13 +3,19 @@ import { ViewStyle } from 'react-native';
3
3
  export interface SegmentedTab {
4
4
  key: string;
5
5
  label: string;
6
- icon?: (isActive: boolean) => React.ReactNode;
6
+ themeColor?: string;
7
+ color?: string;
8
+ icon?: (isActive: boolean, themeColor?: string) => React.ReactNode;
7
9
  }
8
10
  interface SegmentedTabsProps {
9
11
  tabs: SegmentedTab[];
10
12
  activeKey: string;
11
13
  onChange: (key: string) => void;
12
14
  style?: ViewStyle | ViewStyle[];
15
+ scrollable?: boolean;
13
16
  }
14
- declare const SegmentedTabs: React.MemoExoticComponent<({ tabs, activeKey, onChange, style }: SegmentedTabsProps) => React.JSX.Element>;
17
+ export declare const DEFAULT_INNER_TAB_THEMES: Record<string, string>;
18
+ declare const SegmentedTabs: React.MemoExoticComponent<({ tabs, activeKey, onChange, style, scrollable }: SegmentedTabsProps & {
19
+ scrollable?: boolean;
20
+ }) => React.JSX.Element>;
15
21
  export default SegmentedTabs;
@@ -1,8 +1,12 @@
1
- "use strict";var __importDefault=this&&this.__importDefault||function(e){return e&&e.__esModule?e:{default:e}};Object.defineProperty(exports,"__esModule",{value:!0});const react_1=__importDefault(require("react")),react_native_1=require("react-native"),AppColors_1=require("../styles/AppColors"),AppFonts_1=require("../styles/AppFonts"),SegmentedTabs=react_1.default.memo(({tabs:e,activeKey:o,onChange:i,style:s})=><react_native_1.View style={[{flexDirection:"row",borderRadius:10,backgroundColor:`${AppColors_1.AppColors.slate200}80`,padding:3,borderWidth:1,borderColor:AppColors_1.AppColors.dividerColor,gap:3,minWidth:0},s]}>
2
- {e.map(r=>{const t=o===r.key;return<react_native_1.Pressable key={r.key}onPress={()=>i(r.key)}style={({pressed:l})=>[{flex:1,paddingVertical:7,paddingHorizontal:6,borderRadius:7,backgroundColor:t?AppColors_1.AppColors.brandPurple:"transparent",alignItems:"center",justifyContent:"center",gap:4.5,flexDirection:"row",opacity:l?.8:1},t&&{shadowColor:AppColors_1.AppColors.brandPurple,shadowOffset:{width:0,height:1},shadowOpacity:.25,shadowRadius:3,elevation:2}]}>
3
- {r.icon?r.icon(t):null}
4
- <react_native_1.Text numberOfLines={1}ellipsizeMode="tail"style={{flexShrink:1,fontFamily:AppFonts_1.AppFonts.interBold,fontSize:10.5,color:t?AppColors_1.AppColors.white:AppColors_1.AppColors.grayText,letterSpacing:.2}}>
5
- {r.label}
1
+ "use strict";var __importDefault=this&&this.__importDefault||function(r){return r&&r.__esModule?r:{default:r}};Object.defineProperty(exports,"__esModule",{value:!0}),exports.DEFAULT_INNER_TAB_THEMES=void 0;const react_1=__importDefault(require("react")),react_native_1=require("react-native"),AppColors_1=require("../styles/AppColors"),AppFonts_1=require("../styles/AppFonts");exports.DEFAULT_INNER_TAB_THEMES={metadata:AppColors_1.AppColors.sky600,headers:AppColors_1.AppColors.teal600,request:AppColors_1.AppColors.amber600,response:AppColors_1.AppColors.brandPurple,req:AppColors_1.AppColors.amber600,res:AppColors_1.AppColors.brandPurple,output:AppColors_1.AppColors.teal600,arguments:AppColors_1.AppColors.amber600,stack:AppColors_1.AppColors.errorColor,caller:AppColors_1.AppColors.sky600,error:AppColors_1.AppColors.errorColor,app:AppColors_1.AppColors.green600,all:AppColors_1.AppColors.brandPurple,live:AppColors_1.AppColors.violet600,timeline:AppColors_1.AppColors.orange600,persisted:AppColors_1.AppColors.teal600,payload:AppColors_1.AppColors.violet600,diff:AppColors_1.AppColors.green600,raw:AppColors_1.AppColors.brandPurple,diagnostics:AppColors_1.AppColors.amber600,breadcrumbs:AppColors_1.AppColors.orange600,overview:AppColors_1.AppColors.sky600,json:AppColors_1.AppColors.brandPurple,tree:AppColors_1.AppColors.violet600,preview:AppColors_1.AppColors.brandPurple,delivery:AppColors_1.AppColors.amber600,domainAttrs:AppColors_1.AppColors.sky600,pretty:AppColors_1.AppColors.violet600,table:AppColors_1.AppColors.teal600,production:AppColors_1.AppColors.brandPurple,files:AppColors_1.AppColors.teal600,packages:AppColors_1.AppColors.orange600,media:AppColors_1.AppColors.pink600,optimizer:AppColors_1.AppColors.violet600,hardware:AppColors_1.AppColors.orange600,network:AppColors_1.AppColors.teal600,display:AppColors_1.AppColors.pink600,runtime:AppColors_1.AppColors.amber600,security:AppColors_1.AppColors.errorColor,fatal:AppColors_1.AppColors.errorColor,promise:AppColors_1.AppColors.orange600,render:AppColors_1.AppColors.pink600,native:AppColors_1.AppColors.cyan600,js:AppColors_1.AppColors.amber600,asyncStorage:AppColors_1.AppColors.brandPurple,mmkv:AppColors_1.AppColors.teal600};const SegmentedTabs=react_1.default.memo(({tabs:r,activeKey:a,onChange:i,style:s,scrollable:p})=>{const t=r.map(o=>{const e=a===o.key,l=o.themeColor||o.color||exports.DEFAULT_INNER_TAB_THEMES[o.key]||AppColors_1.AppColors.brandPurple;return<react_native_1.Pressable key={o.key}onPress={()=>i(o.key)}style={({pressed:n})=>[{flex:p?void 0:1,paddingVertical:7,paddingHorizontal:p?12:6,borderRadius:7,backgroundColor:e?l:"transparent",alignItems:"center",justifyContent:"center",gap:4.5,flexDirection:"row",opacity:n?.8:1},e&&{shadowColor:l,shadowOffset:{width:0,height:1},shadowOpacity:.28,shadowRadius:3,elevation:2}]}>
2
+ {o.icon?typeof o.icon=="function"?o.icon(e,l):o.icon:null}
3
+ <react_native_1.Text numberOfLines={1}style={{fontFamily:AppFonts_1.AppFonts.interBold,fontSize:10.5,color:e?AppColors_1.AppColors.white:AppColors_1.AppColors.grayText,letterSpacing:.2}}>
4
+ {o.label}
6
5
  </react_native_1.Text>
7
- </react_native_1.Pressable>})}
8
- </react_native_1.View>);exports.default=SegmentedTabs;
6
+ </react_native_1.Pressable>});return p?<react_native_1.View style={[{borderRadius:10,backgroundColor:`${AppColors_1.AppColors.slate200}80`,padding:3,borderWidth:1,borderColor:AppColors_1.AppColors.dividerColor},s]}>
7
+ <react_native_1.ScrollView horizontal showsHorizontalScrollIndicator={!1}contentContainerStyle={{flexDirection:"row",alignItems:"center",gap:4}}>
8
+ {t}
9
+ </react_native_1.ScrollView>
10
+ </react_native_1.View>:<react_native_1.View style={[{flexDirection:"row",borderRadius:10,backgroundColor:`${AppColors_1.AppColors.slate200}80`,padding:3,borderWidth:1,borderColor:AppColors_1.AppColors.dividerColor,gap:3,minWidth:0},s]}>
11
+ {t}
12
+ </react_native_1.View>});exports.default=SegmentedTabs;
@@ -0,0 +1,11 @@
1
+ import React from 'react';
2
+ import { StyleProp, ViewStyle } from 'react-native';
3
+ export interface ShareButtonProps {
4
+ onShare: () => void | Promise<void>;
5
+ label?: string;
6
+ style?: StyleProp<ViewStyle>;
7
+ color?: string;
8
+ size?: number;
9
+ }
10
+ declare const ShareButton: React.MemoExoticComponent<({ onShare, label, style, color, size, }: ShareButtonProps) => React.JSX.Element>;
11
+ export default ShareButton;
@@ -0,0 +1,6 @@
1
+ "use strict";var __createBinding=this&&this.__createBinding||(Object.create?(function(r,e,a,t){t===void 0&&(t=a);var n=Object.getOwnPropertyDescriptor(e,a);(!n||("get"in n?!e.__esModule:n.writable||n.configurable))&&(n={enumerable:!0,get:function(){return e[a]}}),Object.defineProperty(r,t,n)}):(function(r,e,a,t){t===void 0&&(t=a),r[t]=e[a]})),__setModuleDefault=this&&this.__setModuleDefault||(Object.create?(function(r,e){Object.defineProperty(r,"default",{enumerable:!0,value:e})}):function(r,e){r.default=e}),__importStar=this&&this.__importStar||(function(){var r=function(e){return r=Object.getOwnPropertyNames||function(a){var t=[];for(var n in a)Object.prototype.hasOwnProperty.call(a,n)&&(t[t.length]=n);return t},r(e)};return function(e){if(e&&e.__esModule)return e;var a={};if(e!=null)for(var t=r(e),n=0;n<t.length;n++)t[n]!=="default"&&__createBinding(a,e,t[n]);return __setModuleDefault(a,e),a}})(),__importDefault=this&&this.__importDefault||function(r){return r&&r.__esModule?r:{default:r}};Object.defineProperty(exports,"__esModule",{value:!0});const react_1=__importStar(require("react")),react_native_1=require("react-native"),TouchableScale_1=__importDefault(require("./TouchableScale")),NetworkIcons_1=require("./NetworkIcons"),NativeInspector_1=require("../native/NativeInspector"),AppColors_1=require("../styles/AppColors"),styles_1=__importDefault(require("../styles")),ShareButton=react_1.default.memo(({onShare:r,label:e,style:a,color:t=AppColors_1.AppColors.brandPurple,size:n=14})=>{const[o,i]=(0,react_1.useState)(!1),s=(0,react_1.useCallback)(async()=>{try{(0,NativeInspector_1.triggerNativeHaptic)("medium"),await r(),i(!0),setTimeout(()=>i(!1),1200)}catch{}},[r]),u=[styles_1.default.iconSquareBtn,{backgroundColor:`${t}14`,borderColor:`${t}30`},o&&styles_1.default.iconSquareBtnSuccess,a];return<TouchableScale_1.default accessible={!0}accessibilityRole="button"accessibilityLabel={`Share ${e}`}accessibilityHint={`Opens native share sheet to export ${e}`}style={u}onPress={s}hitSlop={8}>
2
+ {o?<NetworkIcons_1.CheckIcon color={AppColors_1.AppColors.greenColor}size={n}strokeWidth={2.4}/>:<NetworkIcons_1.ShareIcon color={t}size={n}/>}
3
+ {e?<react_native_1.Text style={[styles_1.default.iconSquareBtnText,{color:o?AppColors_1.AppColors.greenColor:t}]}>
4
+ {o?"Shared":e}
5
+ </react_native_1.Text>:null}
6
+ </TouchableScale_1.default>});ShareButton.displayName="ShareButton",exports.default=ShareButton;
@@ -1 +1 @@
1
- "use strict";Object.defineProperty(exports,"__esModule",{value:!0}),exports.LIB_VERSION=exports.DURATION_SLOW_MS=exports.DURATION_FAST_MS=exports.DOMAIN_COLORS=exports.METHOD_COLORS=exports.STATUS_FILTERS=void 0;const AppColors_1=require("../styles/AppColors");exports.STATUS_FILTERS=["ALL","2xx","200","3xx","4xx","400","404","5xx","500","Failed"],exports.METHOD_COLORS={ALL:"#64748B",GET:"#059669",POST:"#2563EB",PUT:"#D97706",PATCH:"#7C3AED",DELETE:"#DC2626",QUERY:"#0284C7",OPTIONS:"#475569",HEAD:"#0891B2"},exports.DOMAIN_COLORS=AppColors_1.AppColors.domainColors,exports.DURATION_FAST_MS=200,exports.DURATION_SLOW_MS=800;var version_1=require("./version");Object.defineProperty(exports,"LIB_VERSION",{enumerable:!0,get:function(){return version_1.LIB_VERSION}});
1
+ "use strict";Object.defineProperty(exports,"__esModule",{value:!0}),exports.LIB_VERSION=exports.DURATION_SLOW_MS=exports.DURATION_FAST_MS=exports.DOMAIN_COLORS=exports.METHOD_COLORS=exports.STATUS_FILTERS=void 0;const AppColors_1=require("../styles/AppColors");exports.STATUS_FILTERS=["ALL","2xx","200","3xx","4xx","400","404","5xx","500","Failed"],exports.METHOD_COLORS={ALL:AppColors_1.AppColors.slate500,GET:AppColors_1.AppColors.emerald600,POST:AppColors_1.AppColors.blue600,PUT:AppColors_1.AppColors.amber600,PATCH:AppColors_1.AppColors.violet600,DELETE:AppColors_1.AppColors.red600,QUERY:AppColors_1.AppColors.sky600,OPTIONS:AppColors_1.AppColors.slate600,HEAD:AppColors_1.AppColors.cyan600},exports.DOMAIN_COLORS=AppColors_1.AppColors.domainColors,exports.DURATION_FAST_MS=200,exports.DURATION_SLOW_MS=800;var version_1=require("./version");Object.defineProperty(exports,"LIB_VERSION",{enumerable:!0,get:function(){return version_1.LIB_VERSION}});
@@ -1 +1 @@
1
- export declare const LIB_VERSION = "2.3.24";
1
+ export declare const LIB_VERSION = "2.4.0";
@@ -1 +1 @@
1
- "use strict";Object.defineProperty(exports,"__esModule",{value:!0}),exports.LIB_VERSION=void 0,exports.LIB_VERSION="2.3.24";
1
+ "use strict";Object.defineProperty(exports,"__esModule",{value:!0}),exports.LIB_VERSION=void 0,exports.LIB_VERSION="2.4.0";
@@ -1,7 +1,7 @@
1
1
  "use strict";Object.defineProperty(exports,"__esModule",{value:!0}),exports.setupGlobalCrashHandler=exports.exportCrashReport=exports.simulateTestCrash=exports.recordCustomCrash=exports.handleInterceptedCrash=exports.emitCrashEvent=exports.subscribeCrashEvents=exports.clearCrashRecords=exports.getCrashRecords=exports.computeCrashFingerprint=exports.parseCrashStackTrace=exports.getCrashBreadcrumbs=exports.clearCrashBreadcrumbs=exports.recordUserActionBreadcrumb=exports.recordReduxBreadcrumb=exports.recordNetworkBreadcrumb=exports.recordNavigationBreadcrumb=exports.addCrashBreadcrumb=exports.pruneCrashRecords=exports.getMaxCrashLogsLimit=exports.setMaxCrashLogsLimit=exports.getCrashModuleEnabled=exports.setCrashModuleEnabled=exports.CrashExportFormat=void 0;const react_native_1=require("react-native"),enums_1=require("../types/enums");Object.defineProperty(exports,"CrashExportFormat",{enumerable:!0,get:function(){return enums_1.CrashExportFormat}});const consoleLogger_1=require("./consoleLogger"),NativeInspector_1=require("../native/NativeInspector"),i18n_1=require("../i18n");let crashListeners=[],isCrashHandlerInitialized=!1,lastHandledErrorTimestamp=0,crashRecordsStore=[],breadcrumbsStore=[];const MAX_BREADCRUMBS=50;let maxStoredCrashes=100;const appStartTime=Date.now();let isCrashModuleEnabled=!1;const setCrashModuleEnabled=e=>{isCrashModuleEnabled=e};exports.setCrashModuleEnabled=setCrashModuleEnabled;const getCrashModuleEnabled=()=>isCrashModuleEnabled;exports.getCrashModuleEnabled=getCrashModuleEnabled;const setMaxCrashLogsLimit=e=>{maxStoredCrashes=Math.max(10,e),crashRecordsStore.length>maxStoredCrashes&&(crashRecordsStore=crashRecordsStore.slice(0,maxStoredCrashes))};exports.setMaxCrashLogsLimit=setMaxCrashLogsLimit;const getMaxCrashLogsLimit=()=>maxStoredCrashes;exports.getMaxCrashLogsLimit=getMaxCrashLogsLimit;const pruneCrashRecords=e=>{const t=e!==void 0?Math.max(0,e):Math.floor(crashRecordsStore.length/2),o=crashRecordsStore.length-t;return o>0&&(crashRecordsStore=crashRecordsStore.slice(0,t)),breadcrumbsStore.length>20&&(breadcrumbsStore=breadcrumbsStore.slice(0,20)),Math.max(0,o)};exports.pruneCrashRecords=pruneCrashRecords;const addCrashBreadcrumb=(e,t,o)=>{if(isCrashModuleEnabled)try{const s={type:e,message:t,timestamp:Date.now(),data:o};breadcrumbsStore.unshift(s),breadcrumbsStore.length>MAX_BREADCRUMBS&&(breadcrumbsStore=breadcrumbsStore.slice(0,MAX_BREADCRUMBS))}catch{}};exports.addCrashBreadcrumb=addCrashBreadcrumb;const recordNavigationBreadcrumb=(e,t)=>{(0,exports.addCrashBreadcrumb)("navigation",(0,i18n_1.t)("crash.breadcrumbNavigation",{from:e||"/",to:t||"/"}),{from:e,to:t})};exports.recordNavigationBreadcrumb=recordNavigationBreadcrumb;const recordNetworkBreadcrumb=(e,t,o,s)=>{const r=o!=null?` [${o}]`:"",a=s!=null?` (${Math.round(s)}ms)`:"";(0,exports.addCrashBreadcrumb)("network",`${t.toUpperCase()} ${e}${r}${a}`,{url:e,method:t,status:o,duration:s})};exports.recordNetworkBreadcrumb=recordNetworkBreadcrumb;const recordReduxBreadcrumb=(e,t)=>{(0,exports.addCrashBreadcrumb)("redux",(0,i18n_1.t)("crash.breadcrumbAction",{actionType:e}),{type:e,payloadSummary:typeof t=="object"&&t!==null?Object.keys(t):typeof t})};exports.recordReduxBreadcrumb=recordReduxBreadcrumb;const recordUserActionBreadcrumb=(e,t)=>{(0,exports.addCrashBreadcrumb)("user",e,t)};exports.recordUserActionBreadcrumb=recordUserActionBreadcrumb;const clearCrashBreadcrumbs=()=>{breadcrumbsStore=[]};exports.clearCrashBreadcrumbs=clearCrashBreadcrumbs;const getCrashBreadcrumbs=()=>[...breadcrumbsStore];exports.getCrashBreadcrumbs=getCrashBreadcrumbs;const parseCrashStackTrace=e=>{if(!e||typeof e!="string")return[];const t=e.split(`
2
- `),o=[];for(const s of t){const r=s.trim();if(!r||r.includes("crashHandler.ts")||r.includes("handleInterceptedCrash")||r.includes("addLogFromCrash")||r.includes("setupGlobalCrashHandler"))continue;const a=r.match(/^([^@]+)@(.*):(\d+):(\d+)$/);if(a){const[,c,n,p,d]=a,m=n.split("?")[0].split("/").pop()||n,f=!n.includes("node_modules")&&!n.includes("react-native")&&!n.includes("react-dom")&&!n.includes("hermes")&&!n.includes("internal");o.push({method:c.trim(),file:m,lineNumber:parseInt(p,10),column:parseInt(d,10),raw:r,isAppCode:f});continue}const u=r.match(/^at\s+(.+)\s+\((.+):(\d+):(\d+)\)$/);if(u){const[,c,n,p,d]=u,m=n.split("?")[0].split("/").pop()||n,f=!n.includes("node_modules")&&!n.includes("react-native")&&!n.includes("react-dom")&&!n.includes("internal");o.push({method:c.trim(),file:m,lineNumber:parseInt(p,10),column:parseInt(d,10),raw:r,isAppCode:f});continue}const l=r.match(/^at\s+(.+):(\d+):(\d+)$/);if(l){const[,c,n,p]=l,d=c.split("?")[0].split("/").pop()||c,m=!c.includes("node_modules")&&!c.includes("react-native");o.push({method:"<anonymous>",file:d,lineNumber:parseInt(n,10),column:parseInt(p,10),raw:r,isAppCode:m});continue}const h=r.match(/^at\s+([a-zA-Z0-9_$.]+)\(([a-zA-Z0-9_$]+\.java):(\d+)\)$/);if(h){const[,c,n,p]=h,d=!c.startsWith("com.facebook.react")&&!c.startsWith("android.");o.push({method:c,file:n,lineNumber:parseInt(p,10),column:0,raw:r,isAppCode:d});continue}const i=r.match(/^\d+\s+([^\s]+)\s+(0x[0-9a-fA-F]+)\s+(.+)$/);if(i){const[,c,n,p]=i,d=!c.startsWith("lib")&&!c.startsWith("Core")&&!c.startsWith("React");o.push({method:p,file:c,lineNumber:0,column:0,raw:r,isAppCode:d});continue}o.push({method:r.startsWith("at ")?r.slice(3):r,file:"runtime",lineNumber:0,column:0,raw:r,isAppCode:!1})}return o};exports.parseCrashStackTrace=parseCrashStackTrace;const getMemoryDiagnostics=()=>{try{const e=globalThis.performance;if(e&&e.memory)return{usedJSHeapSize:Math.round(e.memory.usedJSHeapSize/(1024*1024)),totalJSHeapSize:Math.round(e.memory.totalJSHeapSize/(1024*1024))}}catch{}},getScreenDimensions=()=>{try{const e=react_native_1.Dimensions.get("window");return`${Math.round(e.width)}x${Math.round(e.height)} (${e.scale}x)`}catch{return(0,i18n_1.t)("crash.unknown")}},computeCrashFingerprint=e=>{const t=e.type||"js",o=e.name||"Error",s=e.parsedStack&&e.parsedStack.length>0?e.parsedStack[0]:null,r=s?`${s.file}:${s.lineNumber}`:"unknown";return`${t}_${o}_${r}`};exports.computeCrashFingerprint=computeCrashFingerprint;const getCrashRecords=()=>[...crashRecordsStore];exports.getCrashRecords=getCrashRecords;const clearCrashRecords=()=>{crashRecordsStore=[],(0,exports.emitCrashEvent)({error:null,message:"__CLEARED__",timestamp:Date.now()})};exports.clearCrashRecords=clearCrashRecords;const subscribeCrashEvents=e=>(crashListeners.push(e),()=>{crashListeners=crashListeners.filter(t=>t!==e)});exports.subscribeCrashEvents=subscribeCrashEvents;const emitCrashEvent=e=>{if(e.message!=="__CLEARED__"){const t=Date.now();if(t-lastHandledErrorTimestamp<250)return;lastHandledErrorTimestamp=t}crashListeners.forEach(t=>{try{t(e)}catch{}})};exports.emitCrashEvent=emitCrashEvent;const handleInterceptedCrash=(e,t,o=!1,s,r)=>{try{const a=e instanceof Error||typeof e=="object"&&e!==null?e:new Error(String(e||(0,i18n_1.t)("crash.runtimeException"))),u=a.message||(typeof e=="string"?e:(0,i18n_1.t)("crash.runtimeException"));let l="";typeof t=="string"?l=t:Array.isArray(t)?l=t.map(g=>`at ${g.methodName||"<anonymous>"} (${g.file||"unknown"}:${g.lineNumber||0}:${g.column||0})`).join(`
3
- `):l=a.stack||new Error().stack||"";let h=s||enums_1.CrashType.Js;const i=u.toLowerCase();s||(i.includes("native")||i.includes("sigsegv")||i.includes("nsrange")||i.includes("nullpointerexception")||i.includes("fatal signal")?h=enums_1.CrashType.Native:i.includes("promise")||i.includes("unhandled rejection")||i.includes("unhandledrejection")?h=enums_1.CrashType.Promise:i.includes("render")||i.includes("errorboundary")||r?h=enums_1.CrashType.Render:h=enums_1.CrashType.Js);const c=new Date,n=c.toLocaleDateString(),p=c.toLocaleTimeString(),d=(0,exports.parseCrashStackTrace)(l),m=(0,consoleLogger_1.addLogFromCrash)(a,`[${o?(0,i18n_1.t)("crash.logFatalCrash"):(0,i18n_1.t)("crash.logUnhandledError")}] ${u}`,l,o),f=typeof globalThis.HermesInternal<"u",x=typeof globalThis.nativeFabricUIManager<"u",C={id:`crash_${Date.now()}_${Math.random().toString(36).substr(2,6)}`,error:a,isFatal:o,type:h,message:u,name:a.name||(o?(0,i18n_1.t)("crash.errorNameFatal"):(0,i18n_1.t)("crash.errorNameUnhandled")),stack:l,parsedStack:d,componentStack:r||void 0,timestamp:Date.now(),dateStr:n,timeStr:p,deviceInfo:{platform:react_native_1.Platform.OS,osVersion:String(react_native_1.Platform.Version),rnVersion:react_native_1.Platform.constants?.reactNativeVersion?`${react_native_1.Platform.constants.reactNativeVersion.major}.${react_native_1.Platform.constants.reactNativeVersion.minor}.${react_native_1.Platform.constants.reactNativeVersion.patch}`:(0,i18n_1.t)("crash.unknown"),isHermes:f,isFabric:x,appState:react_native_1.AppState.currentState||"active"},memoryInfo:getMemoryDiagnostics(),breadcrumbs:[...breadcrumbsStore],logId:m?.id};crashRecordsStore.unshift(C),crashRecordsStore.length>maxStoredCrashes&&(crashRecordsStore=crashRecordsStore.slice(0,maxStoredCrashes)),(0,exports.emitCrashEvent)({error:a,isFatal:o,message:`[${o?(0,i18n_1.t)("crash.logFatalCrash"):(0,i18n_1.t)("crash.logUnhandledError")}] ${u}`,stack:l,timestamp:Date.now(),logId:m?.id,crashRecord:C});try{(0,NativeInspector_1.showNativeFloatingButton)(),(0,NativeInspector_1.setNativeFloatingButtonBadge)(!0)}catch{}return C}catch{return{id:`crash_${Date.now()}`,isFatal:!0,type:enums_1.CrashType.Js,message:String(e||(0,i18n_1.t)("crash.unknownException")),timestamp:Date.now(),dateStr:new Date().toLocaleDateString(),timeStr:new Date().toLocaleTimeString()}}};exports.handleInterceptedCrash=handleInterceptedCrash;const recordCustomCrash=(e,t)=>(0,exports.handleInterceptedCrash)(e,typeof e=="object"?e.stack:void 0,t?.isFatal??!1,t?.type||enums_1.CrashType.Custom,t?.componentStack);exports.recordCustomCrash=recordCustomCrash;const simulateTestCrash=(e=enums_1.CrashType.Js,t,o)=>{const s=new Error(t||_defaultSimMessage(e));return(0,exports.handleInterceptedCrash)(e===enums_1.CrashType.Native?s.message:s,o||s.stack,e===enums_1.CrashType.Native,e,e===enums_1.CrashType.Render?_buildComponentStack():void 0)};exports.simulateTestCrash=simulateTestCrash;const _defaultSimMessage=e=>{switch(e){case"native":return(0,i18n_1.t)("crash.simNativeMessage");case"promise":return(0,i18n_1.t)("crash.simPromiseMessage");case"render":return(0,i18n_1.t)("crash.simRenderMessage");default:return(0,i18n_1.t)("crash.simJsMessage")}},_buildComponentStack=()=>{try{const e=new Error;if(e.stack)return e.stack.split(`
2
+ `),o=[];for(const s of t){const r=s.trim();if(!r||r.includes("crashHandler.ts")||r.includes("handleInterceptedCrash")||r.includes("addLogFromCrash")||r.includes("setupGlobalCrashHandler"))continue;const a=r.match(/^([^@]+)@(.*):(\d+):(\d+)$/);if(a){const[,c,n,p,l]=a,m=n.split("?")[0].split("/").pop()||n,f=!n.includes("node_modules")&&!n.includes("react-native")&&!n.includes("react-dom")&&!n.includes("hermes")&&!n.includes("internal");o.push({method:c.trim(),file:m,lineNumber:parseInt(p,10),column:parseInt(l,10),raw:r,isAppCode:f});continue}const d=r.match(/^at\s+(.+)\s+\((.+):(\d+):(\d+)\)$/);if(d){const[,c,n,p,l]=d,m=n.split("?")[0].split("/").pop()||n,f=!n.includes("node_modules")&&!n.includes("react-native")&&!n.includes("react-dom")&&!n.includes("internal");o.push({method:c.trim(),file:m,lineNumber:parseInt(p,10),column:parseInt(l,10),raw:r,isAppCode:f});continue}const u=r.match(/^at\s+(.+):(\d+):(\d+)$/);if(u){const[,c,n,p]=u,l=c.split("?")[0].split("/").pop()||c,m=!c.includes("node_modules")&&!c.includes("react-native");o.push({method:"<anonymous>",file:l,lineNumber:parseInt(n,10),column:parseInt(p,10),raw:r,isAppCode:m});continue}const h=r.match(/^at\s+([a-zA-Z0-9_$.]+)\(([a-zA-Z0-9_$]+\.java):(\d+)\)$/);if(h){const[,c,n,p]=h,l=!c.startsWith("com.facebook.react")&&!c.startsWith("android.");o.push({method:c,file:n,lineNumber:parseInt(p,10),column:0,raw:r,isAppCode:l});continue}const i=r.match(/^\d+\s+([^\s]+)\s+(0x[0-9a-fA-F]+)\s+(.+)$/);if(i){const[,c,,n]=i,p=!c.startsWith("lib")&&!c.startsWith("Core")&&!c.startsWith("React");o.push({method:n,file:c,lineNumber:0,column:0,raw:r,isAppCode:p});continue}o.push({method:r.startsWith("at ")?r.slice(3):r,file:"runtime",lineNumber:0,column:0,raw:r,isAppCode:!1})}return o};exports.parseCrashStackTrace=parseCrashStackTrace;const getMemoryDiagnostics=()=>{try{const e=globalThis.performance;if(e&&e.memory)return{usedJSHeapSize:Math.round(e.memory.usedJSHeapSize/(1024*1024)),totalJSHeapSize:Math.round(e.memory.totalJSHeapSize/(1024*1024))}}catch{}},getScreenDimensions=()=>{try{const e=react_native_1.Dimensions.get("window");return`${Math.round(e.width)}x${Math.round(e.height)} (${e.scale}x)`}catch{return(0,i18n_1.t)("crash.unknown")}},computeCrashFingerprint=e=>{const t=e.type||"js",o=e.name||"Error",s=e.parsedStack&&e.parsedStack.length>0?e.parsedStack[0]:null,r=s?`${s.file}:${s.lineNumber}`:"unknown";return`${t}_${o}_${r}`};exports.computeCrashFingerprint=computeCrashFingerprint;const getCrashRecords=()=>[...crashRecordsStore];exports.getCrashRecords=getCrashRecords;const clearCrashRecords=()=>{crashRecordsStore=[],(0,exports.emitCrashEvent)({error:null,message:"__CLEARED__",timestamp:Date.now()})};exports.clearCrashRecords=clearCrashRecords;const subscribeCrashEvents=e=>(crashListeners.push(e),()=>{crashListeners=crashListeners.filter(t=>t!==e)});exports.subscribeCrashEvents=subscribeCrashEvents;const emitCrashEvent=e=>{if(e.message!=="__CLEARED__"){const t=Date.now();if(t-lastHandledErrorTimestamp<250)return;lastHandledErrorTimestamp=t}crashListeners.forEach(t=>{try{t(e)}catch{}})};exports.emitCrashEvent=emitCrashEvent;const handleInterceptedCrash=(e,t,o=!1,s,r)=>{try{const a=e instanceof Error||typeof e=="object"&&e!==null?e:new Error(String(e||(0,i18n_1.t)("crash.runtimeException"))),d=a.message||(typeof e=="string"?e:(0,i18n_1.t)("crash.runtimeException"));let u="";typeof t=="string"?u=t:Array.isArray(t)?u=t.map(g=>`at ${g.methodName||"<anonymous>"} (${g.file||"unknown"}:${g.lineNumber||0}:${g.column||0})`).join(`
3
+ `):u=a.stack||new Error().stack||"";let h=s||enums_1.CrashType.Js;const i=d.toLowerCase();s||(i.includes("native")||i.includes("sigsegv")||i.includes("nsrange")||i.includes("nullpointerexception")||i.includes("fatal signal")?h=enums_1.CrashType.Native:i.includes("promise")||i.includes("unhandled rejection")||i.includes("unhandledrejection")?h=enums_1.CrashType.Promise:i.includes("render")||i.includes("errorboundary")||r?h=enums_1.CrashType.Render:h=enums_1.CrashType.Js);const c=new Date,n=c.toLocaleDateString(),p=c.toLocaleTimeString(),l=(0,exports.parseCrashStackTrace)(u),m=(0,consoleLogger_1.addLogFromCrash)(a,`[${o?(0,i18n_1.t)("crash.logFatalCrash"):(0,i18n_1.t)("crash.logUnhandledError")}] ${d}`,u,o),f=typeof globalThis.HermesInternal<"u",x=typeof globalThis.nativeFabricUIManager<"u",C={id:`crash_${Date.now()}_${Math.random().toString(36).substr(2,6)}`,error:a,isFatal:o,type:h,message:d,name:a.name||(o?(0,i18n_1.t)("crash.errorNameFatal"):(0,i18n_1.t)("crash.errorNameUnhandled")),stack:u,parsedStack:l,componentStack:r||void 0,timestamp:Date.now(),dateStr:n,timeStr:p,deviceInfo:{platform:react_native_1.Platform.OS,osVersion:String(react_native_1.Platform.Version),rnVersion:react_native_1.Platform.constants?.reactNativeVersion?`${react_native_1.Platform.constants.reactNativeVersion.major}.${react_native_1.Platform.constants.reactNativeVersion.minor}.${react_native_1.Platform.constants.reactNativeVersion.patch}`:(0,i18n_1.t)("crash.unknown"),isHermes:f,isFabric:x,appState:react_native_1.AppState.currentState||"active"},memoryInfo:getMemoryDiagnostics(),breadcrumbs:[...breadcrumbsStore],logId:m?.id};crashRecordsStore.unshift(C),crashRecordsStore.length>maxStoredCrashes&&(crashRecordsStore=crashRecordsStore.slice(0,maxStoredCrashes)),(0,exports.emitCrashEvent)({error:a,isFatal:o,message:`[${o?(0,i18n_1.t)("crash.logFatalCrash"):(0,i18n_1.t)("crash.logUnhandledError")}] ${d}`,stack:u,timestamp:Date.now(),logId:m?.id,crashRecord:C});try{(0,NativeInspector_1.showNativeFloatingButton)(),(0,NativeInspector_1.setNativeFloatingButtonBadge)(!0)}catch{}return C}catch{return{id:`crash_${Date.now()}`,isFatal:!0,type:enums_1.CrashType.Js,message:String(e||(0,i18n_1.t)("crash.unknownException")),timestamp:Date.now(),dateStr:new Date().toLocaleDateString(),timeStr:new Date().toLocaleTimeString()}}};exports.handleInterceptedCrash=handleInterceptedCrash;const recordCustomCrash=(e,t)=>(0,exports.handleInterceptedCrash)(e,typeof e=="object"?e.stack:void 0,t?.isFatal??!1,t?.type||enums_1.CrashType.Custom,t?.componentStack);exports.recordCustomCrash=recordCustomCrash;const simulateTestCrash=(e=enums_1.CrashType.Js,t,o)=>{const s=new Error(t||_defaultSimMessage(e));return(0,exports.handleInterceptedCrash)(e===enums_1.CrashType.Native?s.message:s,o||s.stack,e===enums_1.CrashType.Native,e,e===enums_1.CrashType.Render?_buildComponentStack():void 0)};exports.simulateTestCrash=simulateTestCrash;const _defaultSimMessage=e=>{switch(e){case"native":return(0,i18n_1.t)("crash.simNativeMessage");case"promise":return(0,i18n_1.t)("crash.simPromiseMessage");case"render":return(0,i18n_1.t)("crash.simRenderMessage");default:return(0,i18n_1.t)("crash.simJsMessage")}},_buildComponentStack=()=>{try{const e=new Error;if(e.stack)return e.stack.split(`
4
4
  `).slice(1,6).map(t=>` ${t.trim()}`).join(`
5
- `)}catch{}},exportCrashReport=(e,t="text")=>{if(t==="json")return JSON.stringify(e,null,2);const o=Math.round((e.timestamp-appStartTime)/1e3);if(t==="markdown"){const r=[];return r.push(`## ${(0,i18n_1.t)("crash.mdReportTitle",{name:e.name||"Error"})}`),r.push(`> **${e.message}**`),r.push(""),r.push(`- **${(0,i18n_1.t)("crash.reportType")}** \`${e.type.toUpperCase()}\``),r.push(`- **${(0,i18n_1.t)("crash.reportFatal")}** \`${e.isFatal?(0,i18n_1.t)("crash.mdSeverityFatal"):(0,i18n_1.t)("crash.mdSeverityHandled")}\``),r.push(`- **${(0,i18n_1.t)("crash.reportTimestamp")}** ${e.dateStr} ${e.timeStr}`),r.push(`- **${(0,i18n_1.t)("crash.reportUptime")}** ${o}s`),r.push(`- **${(0,i18n_1.t)("crash.reportPlatform")}** ${e.deviceInfo?.platform?.toUpperCase()} (v${e.deviceInfo?.osVersion})`),r.push(`- **${(0,i18n_1.t)("crash.reportReactNative")}** v${e.deviceInfo?.rnVersion||"N/A"}`),r.push(`- **${(0,i18n_1.t)("crash.jsEngine")}** ${e.deviceInfo?.isHermes?(0,i18n_1.t)("crash.hermesEngine"):(0,i18n_1.t)("crash.jsc")}`),r.push(`- **${(0,i18n_1.t)("crash.reportArchitecture")}** ${e.deviceInfo?.isFabric?(0,i18n_1.t)("crash.reportFabricNew"):(0,i18n_1.t)("crash.reportPaperLegacy")}`),e.memoryInfo&&r.push(`- **${(0,i18n_1.t)("crash.reportJsMemory")}** ${e.memoryInfo.usedJSHeapSize} MB / ${e.memoryInfo.totalJSHeapSize} MB`),r.push(""),r.push(`### ${(0,i18n_1.t)("crash.mdStackTrace")}`),r.push("```"),r.push(e.stack||(0,i18n_1.t)("crash.reportNoStackTrace")),r.push("```"),e.componentStack&&(r.push(""),r.push(`### ${(0,i18n_1.t)("crash.mdComponentHierarchy")}`),r.push("```"),r.push(e.componentStack),r.push("```")),e.breadcrumbs&&e.breadcrumbs.length>0&&(r.push(""),r.push(`### ${(0,i18n_1.t)("crash.mdRecentBreadcrumbs")}`),e.breadcrumbs.forEach(a=>{const u=new Date(a.timestamp).toLocaleTimeString();r.push(`- \`[${u}]\` **[${a.type.toUpperCase()}]** ${a.message}`)})),r.join(`
5
+ `)}catch{}},exportCrashReport=(e,t="text")=>{if(t==="json")return JSON.stringify(e,null,2);const o=Math.round((e.timestamp-appStartTime)/1e3);if(t==="markdown"){const r=[];return r.push(`## ${(0,i18n_1.t)("crash.mdReportTitle",{name:e.name||"Error"})}`),r.push(`> **${e.message}**`),r.push(""),r.push(`- **${(0,i18n_1.t)("crash.reportType")}** \`${e.type.toUpperCase()}\``),r.push(`- **${(0,i18n_1.t)("crash.reportFatal")}** \`${e.isFatal?(0,i18n_1.t)("crash.mdSeverityFatal"):(0,i18n_1.t)("crash.mdSeverityHandled")}\``),r.push(`- **${(0,i18n_1.t)("crash.reportTimestamp")}** ${e.dateStr} ${e.timeStr}`),r.push(`- **${(0,i18n_1.t)("crash.reportUptime")}** ${o}s`),r.push(`- **${(0,i18n_1.t)("crash.reportPlatform")}** ${e.deviceInfo?.platform?.toUpperCase()} (v${e.deviceInfo?.osVersion})`),r.push(`- **${(0,i18n_1.t)("crash.reportReactNative")}** v${e.deviceInfo?.rnVersion||"N/A"}`),r.push(`- **${(0,i18n_1.t)("crash.jsEngine")}** ${e.deviceInfo?.isHermes?(0,i18n_1.t)("crash.hermesEngine"):(0,i18n_1.t)("crash.jsc")}`),r.push(`- **${(0,i18n_1.t)("crash.reportArchitecture")}** ${e.deviceInfo?.isFabric?(0,i18n_1.t)("crash.reportFabricNew"):(0,i18n_1.t)("crash.reportPaperLegacy")}`),e.memoryInfo&&r.push(`- **${(0,i18n_1.t)("crash.reportJsMemory")}** ${e.memoryInfo.usedJSHeapSize} MB / ${e.memoryInfo.totalJSHeapSize} MB`),r.push(""),r.push(`### ${(0,i18n_1.t)("crash.mdStackTrace")}`),r.push("```"),r.push(e.stack||(0,i18n_1.t)("crash.reportNoStackTrace")),r.push("```"),e.componentStack&&(r.push(""),r.push(`### ${(0,i18n_1.t)("crash.mdComponentHierarchy")}`),r.push("```"),r.push(e.componentStack),r.push("```")),e.breadcrumbs&&e.breadcrumbs.length>0&&(r.push(""),r.push(`### ${(0,i18n_1.t)("crash.mdRecentBreadcrumbs")}`),e.breadcrumbs.forEach(a=>{const d=new Date(a.timestamp).toLocaleTimeString();r.push(`- \`[${d}]\` **[${a.type.toUpperCase()}]** ${a.message}`)})),r.join(`
6
6
  `)}const s=[];return s.push("===================================================="),s.push(` ${(0,i18n_1.t)("crash.reportTitle")} `),s.push("===================================================="),s.push(`${(0,i18n_1.t)("crash.reportErrorName")} ${e.name||"Error"}`),s.push(`${(0,i18n_1.t)("crash.reportMessage")} ${e.message}`),s.push(`${(0,i18n_1.t)("crash.reportType")} ${e.type.toUpperCase()}`),s.push(`${(0,i18n_1.t)("crash.reportFatal")} ${e.isFatal?(0,i18n_1.t)("crash.reportFatalYes"):(0,i18n_1.t)("crash.reportFatalNo")}`),s.push(`${(0,i18n_1.t)("crash.reportTimestamp")} ${e.dateStr} ${e.timeStr} (${e.timestamp})`),s.push(`${(0,i18n_1.t)("crash.reportUptime")} ${(0,i18n_1.t)("crash.reportUptimeValue",{seconds:o})}`),s.push(`${(0,i18n_1.t)("crash.reportPlatform")} ${e.deviceInfo?.platform?.toUpperCase()} (v${e.deviceInfo?.osVersion})`),s.push(`${(0,i18n_1.t)("crash.reportReactNative")} ${e.deviceInfo?.rnVersion||"N/A"}`),s.push(`${(0,i18n_1.t)("crash.reportHermes")} ${e.deviceInfo?.isHermes?(0,i18n_1.t)("crash.reportEnabled"):(0,i18n_1.t)("crash.reportDisabled")}`),s.push(`${(0,i18n_1.t)("crash.reportArchitecture")} ${e.deviceInfo?.isFabric?(0,i18n_1.t)("crash.reportFabricNew"):(0,i18n_1.t)("crash.reportPaperLegacy")}`),s.push(`${(0,i18n_1.t)("crash.reportScreenSize")} ${getScreenDimensions()}`),s.push(`${(0,i18n_1.t)("crash.reportAppState")} ${e.deviceInfo?.appState||"active"}`),e.memoryInfo&&s.push(`${(0,i18n_1.t)("crash.reportJsMemory")} ${e.memoryInfo.usedJSHeapSize} MB / ${e.memoryInfo.totalJSHeapSize} MB`),s.push("----------------------------------------------------"),s.push(`${(0,i18n_1.t)("crash.reportStackTrace")}`),s.push(e.stack||(0,i18n_1.t)("crash.reportNoStackTrace")),e.componentStack&&(s.push("----------------------------------------------------"),s.push(`${(0,i18n_1.t)("crash.reportComponentHierarchy")}`),s.push(e.componentStack)),e.breadcrumbs&&e.breadcrumbs.length>0&&(s.push("----------------------------------------------------"),s.push(`${(0,i18n_1.t)("crash.reportRecentBreadcrumbs")}`),e.breadcrumbs.forEach(r=>{const a=new Date(r.timestamp).toLocaleTimeString();s.push(` [${a}] [${r.type.toUpperCase()}] ${r.message}`)})),s.push("===================================================="),s.join(`
7
- `)};exports.exportCrashReport=exportCrashReport;const setupGlobalCrashHandler=()=>{if(!isCrashHandlerInitialized){isCrashHandlerInitialized=!0;try{react_native_1.LogBox&&typeof react_native_1.LogBox.ignoreAllLogs=="function"&&react_native_1.LogBox.ignoreAllLogs(!0)}catch{}try{const e=require("react-native/Libraries/LogBox/Data/LogBoxData");e&&typeof e.setDisabled=="function"&&e.setDisabled(!0)}catch{}try{const e=react_native_1.NativeModules?.NetworkInspectorModule;e&&(typeof e.enableNativeCrashProtection=="function"&&e.enableNativeCrashProtection(),new react_native_1.NativeEventEmitter(e).addListener("onNativeCrash",o=>{const r=`[${(o?.platform||react_native_1.Platform.OS).toUpperCase()} ${(0,i18n_1.t)("crash.nativeCrashTitle")}] ${o?.message||(0,i18n_1.t)("crash.nativeUncaughtException")}`,a=o?.stack||"";(0,exports.handleInterceptedCrash)(r,a,!0,"native")}))}catch{}try{const e=react_native_1.TurboModuleRegistry||globalThis.__turboModuleProxy,t=react_native_1.NativeModules?.ExceptionsManager||(e?.get?e.get("ExceptionsManager"):null);if(t){t.reportFatalException=(s,r,a)=>{(0,exports.handleInterceptedCrash)(s,r,!0,"native");try{typeof t.dismissRedbox=="function"&&t.dismissRedbox()}catch{}},t.reportSoftException=(s,r,a)=>{(0,exports.handleInterceptedCrash)(s,r,!1,"js");try{typeof t.dismissRedbox=="function"&&t.dismissRedbox()}catch{}},t.reportException=s=>{const r=s?.message||s?.title||(0,i18n_1.t)("crash.nativeException"),a=s?.stack||s?.rawStack;(0,exports.handleInterceptedCrash)(r,a,s?.isFatal??!0,"js");try{typeof t.dismissRedbox=="function"&&t.dismissRedbox()}catch{}},t.updateExceptionMessage=()=>{};try{typeof t.dismissRedbox=="function"&&t.dismissRedbox()}catch{}}const o=react_native_1.NativeModules?.RedBox||react_native_1.NativeModules?.RCTRedBox||(e?.get?e.get("RedBox")||e.get("RCTRedBox"):null);o&&(typeof o.showErrorMessage=="function"&&(o.showErrorMessage=()=>{}),typeof o.showUserError=="function"&&(o.showUserError=()=>{}),typeof o.dismiss=="function"&&o.dismiss())}catch{}try{const t=globalThis.ErrorUtils;t&&(typeof t.setGlobalHandler=="function"&&t.setGlobalHandler((o,s)=>{(0,exports.handleInterceptedCrash)(o,o?.stack,s??!1,"js")}),typeof t.reportFatalError=="function"&&(t.reportFatalError=o=>{(0,exports.handleInterceptedCrash)(o,o?.stack,!0,"js")}),typeof t.reportError=="function"&&(t.reportError=o=>{(0,exports.handleInterceptedCrash)(o,o?.stack,!1,"js")}))}catch{}try{const e=globalThis,t=o=>{try{const s=o?.reason||o?.detail?.reason||o,r=s?.message||String(s||(0,i18n_1.t)("crash.unhandledPromiseRejection")),a=s?.stack||(o?.stack??new Error().stack);(0,exports.handleInterceptedCrash)(s,a,!1,"promise")}catch{}};typeof e.addEventListener=="function"&&e.addEventListener("unhandledrejection",t),typeof e.onunhandledrejection<"u"&&(e.onunhandledrejection=t)}catch{}}};exports.setupGlobalCrashHandler=setupGlobalCrashHandler;
7
+ `)};exports.exportCrashReport=exportCrashReport;const setupGlobalCrashHandler=()=>{if(!isCrashHandlerInitialized){isCrashHandlerInitialized=!0;try{react_native_1.LogBox&&typeof react_native_1.LogBox.ignoreAllLogs=="function"&&react_native_1.LogBox.ignoreAllLogs(!0)}catch{}try{const e=require("react-native/Libraries/LogBox/Data/LogBoxData");e&&typeof e.setDisabled=="function"&&e.setDisabled(!0)}catch{}try{const e=react_native_1.NativeModules?.NetworkInspectorModule;e&&(typeof e.enableNativeCrashProtection=="function"&&e.enableNativeCrashProtection(),new react_native_1.NativeEventEmitter(e).addListener("onNativeCrash",o=>{const r=`[${(o?.platform||react_native_1.Platform.OS).toUpperCase()} ${(0,i18n_1.t)("crash.nativeCrashTitle")}] ${o?.message||(0,i18n_1.t)("crash.nativeUncaughtException")}`,a=o?.stack||"";(0,exports.handleInterceptedCrash)(r,a,!0,"native")}))}catch{}try{const e=react_native_1.TurboModuleRegistry||globalThis.__turboModuleProxy,t=react_native_1.NativeModules?.ExceptionsManager||(e?.get?e.get("ExceptionsManager"):null);if(t){t.reportFatalException=(s,r,a)=>{(0,exports.handleInterceptedCrash)(s,r,!0,"native");try{typeof t.dismissRedbox=="function"&&t.dismissRedbox()}catch{}},t.reportSoftException=(s,r,a)=>{(0,exports.handleInterceptedCrash)(s,r,!1,"js");try{typeof t.dismissRedbox=="function"&&t.dismissRedbox()}catch{}},t.reportException=s=>{const r=s?.message||s?.title||(0,i18n_1.t)("crash.nativeException"),a=s?.stack||s?.rawStack;(0,exports.handleInterceptedCrash)(r,a,s?.isFatal??!0,"js");try{typeof t.dismissRedbox=="function"&&t.dismissRedbox()}catch{}},t.updateExceptionMessage=()=>{};try{typeof t.dismissRedbox=="function"&&t.dismissRedbox()}catch{}}const o=react_native_1.NativeModules?.RedBox||react_native_1.NativeModules?.RCTRedBox||(e?.get?e.get("RedBox")||e.get("RCTRedBox"):null);o&&(typeof o.showErrorMessage=="function"&&(o.showErrorMessage=()=>{}),typeof o.showUserError=="function"&&(o.showUserError=()=>{}),typeof o.dismiss=="function"&&o.dismiss())}catch{}try{const t=globalThis.ErrorUtils;t&&(typeof t.setGlobalHandler=="function"&&t.setGlobalHandler((o,s)=>{(0,exports.handleInterceptedCrash)(o,o?.stack,s??!1,"js")}),typeof t.reportFatalError=="function"&&(t.reportFatalError=o=>{(0,exports.handleInterceptedCrash)(o,o?.stack,!0,"js")}),typeof t.reportError=="function"&&(t.reportError=o=>{(0,exports.handleInterceptedCrash)(o,o?.stack,!1,"js")}))}catch{}try{const e=globalThis,t=o=>{try{const s=o?.reason||o?.detail?.reason||o,r=s?.stack||(o?.stack??new Error().stack);(0,exports.handleInterceptedCrash)(s,r,!1,"promise")}catch{}};typeof e.addEventListener=="function"&&e.addEventListener("unhandledrejection",t),typeof e.onunhandledrejection<"u"&&(e.onunhandledrejection=t)}catch{}}};exports.setupGlobalCrashHandler=setupGlobalCrashHandler;
@@ -1,2 +1 @@
1
- "use strict";var __importDefault=this&&this.__importDefault||function(e){return e&&e.__esModule?e:{default:e}};Object.defineProperty(exports,"__esModule",{value:!0}),exports.addAxiosInterceptors=exports.setupNetworkLogger=exports.pruneNetworkLogs=exports.getMaxNetworkLogsLimit=exports.setMaxNetworkLogsLimit=exports.getNetworkLogs=exports.clearNetworkLogs=exports.subscribeNetworkLogs=exports.getNetworkModuleEnabled=exports.setNetworkModuleEnabled=exports.setRouteInfoProvider=void 0;const axios_1=__importDefault(require("axios")),crashHandler_1=require("./crashHandler");let logs=[],listeners=[],counter=0,isNetworkModuleEnabled=!0,currentRouteProvider=null;const setRouteInfoProvider=e=>{currentRouteProvider=e};exports.setRouteInfoProvider=setRouteInfoProvider;const setNetworkModuleEnabled=e=>{isNetworkModuleEnabled=e};exports.setNetworkModuleEnabled=setNetworkModuleEnabled;const getNetworkModuleEnabled=()=>isNetworkModuleEnabled;exports.getNetworkModuleEnabled=getNetworkModuleEnabled;const ALLOWED_METHODS=["GET","POST","PUT","PATCH","DELETE","HEAD","OPTIONS","CONNECT","TRACE"],IGNORED_URL_PATTERNS=[/\/symbolicate(?:\?|$)/i,/\/index\.bundle(?:\?|$)/i,/\/open-debugger(?:\?|$)/i,/:(?:8081|8082|8083|19000|19001)\/(?:index\.bundle|symbolicate|hot|message|status)/i,/google-analytics\.com\/mp\/collect/i,/analytics\.google\.com/i];function shouldIgnoreUrl(e){return e?IGNORED_URL_PATTERNS.some(t=>t.test(e)):!1}function parseXHRResponseHeaders(e){if(!e||typeof e!="string")return;const t=e.trim().split(/[\r\n]+/),s={};return t.forEach(o=>{const r=o.indexOf(":");if(r>0){const i=o.substring(0,r).trim().toLowerCase(),n=o.substring(r+1).trim();s[i]=n}}),Object.keys(s).length>0?s:void 0}function normaliseHeaders(e){if(!e)return;if(typeof e.forEach=="function"){const o={};return e.forEach((r,i)=>{o[i]=r}),Object.keys(o).length>0?o:void 0}if(Array.isArray(e)){const o={};return e.forEach(([r,i])=>{o[r]=i}),Object.keys(o).length>0?o:void 0}const t=e,s={};return Object.entries(t).forEach(([o,r])=>{r!=null&&(s[o]=String(r))}),Object.keys(s).length>0?s:void 0}function parseRequestData(e){if(!e)return e;if(e&&e._parts&&Array.isArray(e._parts)){const t={};return e._parts.forEach(s=>{const o=s[0],r=s[1];r&&typeof r=="object"&&r.uri?t[o]={_isFile:!0,name:r.name||"unknown",type:r.type||"unknown",uri:r.uri}:t[o]=r}),{_isFormData:!0,...t}}return e}function getCallerFromStack(){try{const e=new Error().stack;if(!e)return"Unknown";const t=e.split(`
2
- `);for(let s=0;s<t.length;s++){const o=t[s];if(!(o.includes("networkLogger")||o.includes("node_modules")||o.includes("Error")||o.includes("regeneratorRuntime")))return o.trim().replace(/^at /,"")}}catch{}return"Unknown"}const subscribeNetworkLogs=e=>(listeners.push(e),e([...logs]),()=>{listeners=listeners.filter(t=>t!==e)});exports.subscribeNetworkLogs=subscribeNetworkLogs;const clearNetworkLogs=()=>{logs=[],notify()};exports.clearNetworkLogs=clearNetworkLogs;const getNetworkLogs=()=>[...logs];exports.getNetworkLogs=getNetworkLogs;let maxNetworkLogsLimit=250;const setMaxNetworkLogsLimit=e=>{maxNetworkLogsLimit=Math.max(10,e),logs.length>maxNetworkLogsLimit&&(logs=logs.slice(0,maxNetworkLogsLimit),notify())};exports.setMaxNetworkLogsLimit=setMaxNetworkLogsLimit;const getMaxNetworkLogsLimit=()=>maxNetworkLogsLimit;exports.getMaxNetworkLogsLimit=getMaxNetworkLogsLimit;const pruneNetworkLogs=e=>{const t=e!==void 0?Math.max(0,e):Math.floor(logs.length/2),s=logs.length-t;return s>0&&(logs=logs.slice(0,t),notify()),Math.max(0,s)};exports.pruneNetworkLogs=pruneNetworkLogs;const notify=()=>{const e=[...logs];listeners.forEach(t=>t(e))},addOrUpdateLog=e=>{if(!isNetworkModuleEnabled)return;const t=e.method?.toUpperCase();if(t&&!ALLOWED_METHODS.includes(t)||shouldIgnoreUrl(e.url))return;const s=logs.findIndex(o=>o.id===e.id);s>=0?logs[s]={...logs[s],...e}:logs.unshift(e),logs=logs.slice(0,maxNetworkLogsLimit),notify()};let isInsideFetch=!1;const setupNetworkLogger=()=>{if(globalThis.__NETWORK_LOGGER_INITIALIZED__)return;globalThis.__NETWORK_LOGGER__=addOrUpdateLog;const e=globalThis.XMLHttpRequest;if(e&&e.prototype&&!globalThis.__XHR_LOGGER_INITIALIZED__){globalThis.__XHR_LOGGER_INITIALIZED__=!0;const s=e.prototype.open,o=e.prototype.send,r=e.prototype.setRequestHeader;e.prototype.open=function(i,n,a,u,c){return this.__logMethod=(i||"GET").toUpperCase(),this.__logUrl=typeof n=="string"?n:String(n),this.__logRequestHeaders={},this.__logStartTime=Date.now(),this.__logCaller=getCallerFromStack(),s.apply(this,[i,n,a!==!1,u,c])},e.prototype.setRequestHeader=function(i,n){return i&&n!=null&&(this.__logRequestHeaders||(this.__logRequestHeaders={}),this.__logRequestHeaders[i.toLowerCase()]=String(n)),r.apply(this,[i,n])},e.prototype.send=function(i){if(!isNetworkModuleEnabled||isInsideFetch||this.__inAppInspectorTracked)return o.apply(this,[i]);const n=this.__logUrl||"",a=this.__logMethod||"GET";if(shouldIgnoreUrl(n))return o.apply(this,[i]);const u=counter++;this.__logId=u;const c=this.__logStartTime||Date.now(),d=this.__logCaller||"Unknown",l=this.__logRequestHeaders;let h="xhr";l?.["apollographql-client-name"]||n.toLowerCase().includes("/graphql")?h="apollo":d.toLowerCase().includes("axios")&&(h="axios");const g=currentRouteProvider?currentRouteProvider():null;addOrUpdateLog({id:u,url:n,method:a,startTime:c,caller:d,client:h,routeInfo:g||void 0,request:a==="GET"?void 0:parseRequestData(i),requestHeaders:Object.keys(l||{}).length>0?l:void 0});const f=()=>{if(this.__logFinished)return;this.__logFinished=!0;const x=Date.now()-c;let p=null;try{if(this.responseType===""||this.responseType==="text"){const y=this.responseText;try{p=JSON.parse(y)}catch{p=y}}else this.responseType==="json"?p=this.response:this.responseType==="blob"?p=`[Blob: ${this.response?.size||0} bytes]`:p=`[${this.responseType||"Unknown"} Data]`}catch{p=this.response||null}const w=this.getAllResponseHeaders?this.getAllResponseHeaders():"",L=parseXHRResponseHeaders(w);addOrUpdateLog({id:u,url:n,method:a,status:this.status,response:p,duration:x,startTime:c,caller:d,client:h,responseHeaders:L})},_=()=>{if(this.__logFinished)return;this.__logFinished=!0;const x=Date.now()-c;addOrUpdateLog({id:u,url:n,method:a,status:this.status||0,response:"Network request failed",duration:x,startTime:c,caller:d,client:h})};return this.addEventListener("load",f),this.addEventListener("error",_),this.addEventListener("abort",_),this.addEventListener("timeout",_),o.apply(this,[i])}}const t=globalThis.fetch;t&&(globalThis.fetch=async(s,o={})=>{if(!isNetworkModuleEnabled)return t(s,o);const r=(o?.method||"GET").toUpperCase(),i=counter++,n=Date.now(),a=typeof s=="string"?s:s?.url;if(shouldIgnoreUrl(a))return t(s,o);let u="Unknown",c,d="fetch";try{c=normaliseHeaders(o?.headers),u=getCallerFromStack(),c?.["apollographql-client-name"]||a?.toLowerCase().includes("/graphql")?d="apollo":c?.["x-requested-with"]?.toLowerCase().includes("xmlhttprequest")?d="xhr":u?.toLowerCase().includes("axios")&&(d="axios");const l=currentRouteProvider?currentRouteProvider():null;addOrUpdateLog({id:i,url:a,method:r,startTime:n,caller:u,client:d,routeInfo:l||void 0,request:r==="GET"?void 0:parseRequestData(o?.body),requestHeaders:c})}catch{}try{isInsideFetch=!0;let l;try{l=await t(s,o)}finally{isInsideFetch=!1}const h=Date.now()-n;try{const g=normaliseHeaders(l.headers);let f=null;if((g?.["content-type"]||g?.["Content-Type"]||"").includes("image/"))f="[Image Data]";else try{const p=await l.clone().text();try{f=JSON.parse(p)}catch{f=p}}catch{}addOrUpdateLog({id:i,url:a,method:r,status:l.status,response:f,duration:h,startTime:n,caller:u,client:d,responseHeaders:g})}catch{}return l}catch(l){try{addOrUpdateLog({id:i,url:a,method:r,status:0,startTime:n,response:l,caller:u,client:d,duration:Date.now()-n})}catch{}throw l}});try{if(axios_1.default){(0,exports.addAxiosInterceptors)(axios_1.default);const s=axios_1.default.create;typeof s=="function"&&(axios_1.default.create=function(...o){const r=s.apply(this,o);return(0,exports.addAxiosInterceptors)(r),r})}}catch{}try{(0,crashHandler_1.setupGlobalCrashHandler)()}catch{}globalThis.__NETWORK_LOGGER_INITIALIZED__=!0};exports.setupNetworkLogger=setupNetworkLogger;const addAxiosInterceptors=e=>{e.interceptors.request.use(async t=>{const s=(t.method||"GET").toUpperCase(),o=counter++,r=Date.now(),i=getCallerFromStack();let n=t.url??"";if(n.startsWith("http")||(n=`${t.baseURL??""}${n}`),shouldIgnoreUrl(n))return t;t.__logId=o,t.__logStart=r,t.__logCaller=i;const a=currentRouteProvider?currentRouteProvider():null;return addOrUpdateLog({id:o,url:n,method:s,startTime:r,caller:i,client:"axios",routeInfo:a||void 0,request:s==="GET"?void 0:parseRequestData(t.data),requestHeaders:normaliseHeaders(t.headers)}),t}),e.interceptors.response.use(t=>{const s=t.config||{},o=s.__logId,r=s.__logStart,i=s.__logCaller,n=(s.method||"GET").toUpperCase();if(o==null)return t;let a=s.url??"";return a.startsWith("http")||(a=`${s.baseURL??""}${a}`),addOrUpdateLog({id:o,url:a,method:n,status:t.status,response:t.data,startTime:r||Date.now(),duration:r!=null?Date.now()-r:void 0,caller:i,client:"axios",responseHeaders:normaliseHeaders(t.headers)}),t},t=>{const s=t.config||{},o=s.__logId,r=s.__logStart,i=s.__logCaller,n=(s.method||"GET").toUpperCase();if(o!=null){let a=s.url??"";a.startsWith("http")||(a=`${s.baseURL??""}${a}`),addOrUpdateLog({id:o,url:a,method:n,status:t.response?.status??0,response:t.response?.data??t.message,startTime:r||Date.now(),duration:r!=null?Date.now()-r:void 0,caller:i,client:"axios",responseHeaders:normaliseHeaders(t.response?.headers)})}return Promise.reject(t)})};if(exports.addAxiosInterceptors=addAxiosInterceptors,typeof globalThis<"u")try{(0,exports.setupNetworkLogger)()}catch{}
1
+ "use strict";var __importDefault=this&&this.__importDefault||function(e){return e&&e.__esModule?e:{default:e}};Object.defineProperty(exports,"__esModule",{value:!0}),exports.addAxiosInterceptors=exports.setupNetworkLogger=exports.pruneNetworkLogs=exports.getMaxNetworkLogsLimit=exports.setMaxNetworkLogsLimit=exports.getNetworkLogs=exports.clearNetworkLogs=exports.subscribeNetworkLogs=exports.getNetworkModuleEnabled=exports.setNetworkModuleEnabled=exports.setRouteInfoProvider=void 0;const axios_1=__importDefault(require("axios")),crashHandler_1=require("./crashHandler");let logs=[],listeners=[],counter=0,isNetworkModuleEnabled=!0,currentRouteProvider=null;const setRouteInfoProvider=e=>{currentRouteProvider=e};exports.setRouteInfoProvider=setRouteInfoProvider;const setNetworkModuleEnabled=e=>{isNetworkModuleEnabled=e};exports.setNetworkModuleEnabled=setNetworkModuleEnabled;const getNetworkModuleEnabled=()=>isNetworkModuleEnabled;exports.getNetworkModuleEnabled=getNetworkModuleEnabled;const ALLOWED_METHODS=["GET","POST","PUT","PATCH","DELETE","HEAD","OPTIONS","CONNECT","TRACE"],IGNORED_URL_PATTERNS=[/\/symbolicate(?:\?|$)/i,/\/index\.bundle(?:\?|$)/i,/\/open-debugger(?:\?|$)/i,/:(?:8081|8082|8083|19000|19001)\/(?:index\.bundle|symbolicate|hot|message|status)/i,/google-analytics\.com\/mp\/collect/i,/analytics\.google\.com/i];function shouldIgnoreUrl(e){return e?IGNORED_URL_PATTERNS.some(t=>t.test(e)):!1}function parseXHRResponseHeaders(e){if(!e||typeof e!="string")return;const t=e.trim().split(/[\r\n]+/),s={};return t.forEach(o=>{const r=o.indexOf(":");if(r>0){const i=o.substring(0,r).trim().toLowerCase(),n=o.substring(r+1).trim();s[i]=n}}),Object.keys(s).length>0?s:void 0}function normaliseHeaders(e){if(!e)return;if(typeof e.forEach=="function"){const o={};return e.forEach((r,i)=>{o[i]=r}),Object.keys(o).length>0?o:void 0}if(Array.isArray(e)){const o={};return e.forEach(([r,i])=>{o[r]=i}),Object.keys(o).length>0?o:void 0}const t=e,s={};return Object.entries(t).forEach(([o,r])=>{r!=null&&(s[o]=String(r))}),Object.keys(s).length>0?s:void 0}function parseRequestData(e){if(!e)return e;if(e&&e._parts&&Array.isArray(e._parts)){const t={};return e._parts.forEach(s=>{const o=s[0],r=s[1];r&&typeof r=="object"&&r.uri?t[o]={_isFile:!0,name:r.name||"unknown",type:r.type||"unknown",uri:r.uri}:t[o]=r}),{_isFormData:!0,...t}}return e}const subscribeNetworkLogs=e=>(listeners.push(e),e([...logs]),()=>{listeners=listeners.filter(t=>t!==e)});exports.subscribeNetworkLogs=subscribeNetworkLogs;const clearNetworkLogs=()=>{logs=[],notify()};exports.clearNetworkLogs=clearNetworkLogs;const getNetworkLogs=()=>[...logs];exports.getNetworkLogs=getNetworkLogs;let maxNetworkLogsLimit=1/0;const setMaxNetworkLogsLimit=e=>{maxNetworkLogsLimit=e};exports.setMaxNetworkLogsLimit=setMaxNetworkLogsLimit;const getMaxNetworkLogsLimit=()=>maxNetworkLogsLimit;exports.getMaxNetworkLogsLimit=getMaxNetworkLogsLimit;const pruneNetworkLogs=e=>{const t=e!==void 0?Math.max(0,e):Math.floor(logs.length/2),s=logs.length-t;return s>0&&(logs=logs.slice(0,t),notify()),Math.max(0,s)};exports.pruneNetworkLogs=pruneNetworkLogs;const notify=()=>{const e=[...logs];listeners.forEach(t=>t(e))},addOrUpdateLog=e=>{if(!isNetworkModuleEnabled)return;const t=e.method?.toUpperCase();if(t&&!ALLOWED_METHODS.includes(t)||shouldIgnoreUrl(e.url))return;const s=logs.findIndex(o=>o.id===e.id);s>=0?logs[s]={...logs[s],...e}:logs.unshift(e),notify()};let isInsideFetch=!1;const setupNetworkLogger=()=>{if(globalThis.__NETWORK_LOGGER_INITIALIZED__)return;globalThis.__NETWORK_LOGGER__=addOrUpdateLog;const e=globalThis.XMLHttpRequest;if(e&&e.prototype&&!globalThis.__XHR_LOGGER_INITIALIZED__){globalThis.__XHR_LOGGER_INITIALIZED__=!0;const s=e.prototype.open,o=e.prototype.send,r=e.prototype.setRequestHeader;e.prototype.open=function(i,n,u,c,l){return this.__logMethod=(i||"GET").toUpperCase(),this.__logUrl=typeof n=="string"?n:String(n),this.__logRequestHeaders={},this.__logStartTime=Date.now(),s.apply(this,[i,n,u!==!1,c,l])},e.prototype.setRequestHeader=function(i,n){return i&&n!=null&&(this.__logRequestHeaders||(this.__logRequestHeaders={}),this.__logRequestHeaders[i.toLowerCase()]=String(n)),r.apply(this,[i,n])},e.prototype.send=function(i){if(!isNetworkModuleEnabled||isInsideFetch||this.__inAppInspectorTracked)return o.apply(this,[i]);const n=this.__logUrl||"",u=this.__logMethod||"GET";if(shouldIgnoreUrl(n))return o.apply(this,[i]);const c=counter++;this.__logId=c;const l=this.__logStartTime||Date.now(),a=this.__logRequestHeaders;let p="xhr";(a?.["apollographql-client-name"]||n.toLowerCase().includes("/graphql"))&&(p="apollo");const f=currentRouteProvider?currentRouteProvider():null;addOrUpdateLog({id:c,url:n,method:u,startTime:l,client:p,routeInfo:f||void 0,request:u==="GET"?void 0:parseRequestData(i),requestHeaders:Object.keys(a||{}).length>0?a:void 0});const h=()=>{if(this.__logFinished)return;this.__logFinished=!0;const _=Date.now()-l;let d=null;try{if(this.responseType===""||this.responseType==="text"){const y=this.responseText;try{d=JSON.parse(y)}catch{d=y}}else this.responseType==="json"?d=this.response:this.responseType==="blob"?d=`[Blob: ${this.response?.size||0} bytes]`:d=`[${this.responseType||"Unknown"} Data]`}catch{d=this.response||null}const x=this.getAllResponseHeaders?this.getAllResponseHeaders():"",T=parseXHRResponseHeaders(x);addOrUpdateLog({id:c,url:n,method:u,status:this.status,response:d,duration:_,startTime:l,client:p,responseHeaders:T})},g=()=>{if(this.__logFinished)return;this.__logFinished=!0;const _=Date.now()-l;addOrUpdateLog({id:c,url:n,method:u,status:this.status||0,response:"Network request failed",duration:_,startTime:l,client:p})};return this.addEventListener("load",h),this.addEventListener("error",g),this.addEventListener("abort",g),this.addEventListener("timeout",g),o.apply(this,[i])}}const t=globalThis.fetch;t&&(globalThis.fetch=async(s,o={})=>{if(!isNetworkModuleEnabled)return t(s,o);const r=(o?.method||"GET").toUpperCase(),i=counter++,n=Date.now(),u=typeof s=="string"?s:s?.url;if(shouldIgnoreUrl(u))return t(s,o);let c,l="fetch";try{c=normaliseHeaders(o?.headers),c?.["apollographql-client-name"]||u?.toLowerCase().includes("/graphql")?l="apollo":c?.["x-requested-with"]?.toLowerCase().includes("xmlhttprequest")&&(l="xhr");const a=currentRouteProvider?currentRouteProvider():null;addOrUpdateLog({id:i,url:u,method:r,startTime:n,client:l,routeInfo:a||void 0,request:r==="GET"?void 0:parseRequestData(o?.body),requestHeaders:c})}catch{}try{isInsideFetch=!0;let a;try{a=await t(s,o)}finally{isInsideFetch=!1}const p=Date.now()-n;try{const f=normaliseHeaders(a.headers);let h=null;if((f?.["content-type"]||f?.["Content-Type"]||"").includes("image/"))h="[Image Data]";else try{const d=await a.clone().text();try{h=JSON.parse(d)}catch{h=d}}catch{}addOrUpdateLog({id:i,url:u,method:r,status:a.status,response:h,duration:p,startTime:n,client:l,responseHeaders:f})}catch{}return a}catch(a){try{addOrUpdateLog({id:i,url:u,method:r,status:0,startTime:n,response:a,client:l,duration:Date.now()-n})}catch{}throw a}});try{if(axios_1.default){(0,exports.addAxiosInterceptors)(axios_1.default);const s=axios_1.default.create;typeof s=="function"&&(axios_1.default.create=function(...o){const r=s.apply(this,o);return(0,exports.addAxiosInterceptors)(r),r})}}catch{}try{(0,crashHandler_1.setupGlobalCrashHandler)()}catch{}globalThis.__NETWORK_LOGGER_INITIALIZED__=!0};exports.setupNetworkLogger=setupNetworkLogger;const addAxiosInterceptors=e=>{e.interceptors.request.use(async t=>{const s=(t.method||"GET").toUpperCase(),o=counter++,r=Date.now();let i=t.url??"";if(i.startsWith("http")||(i=`${t.baseURL??""}${i}`),shouldIgnoreUrl(i))return t;t.__logId=o,t.__logStart=r;const n=currentRouteProvider?currentRouteProvider():null;return addOrUpdateLog({id:o,url:i,method:s,startTime:r,client:"axios",routeInfo:n||void 0,request:s==="GET"?void 0:parseRequestData(t.data),requestHeaders:normaliseHeaders(t.headers)}),t}),e.interceptors.response.use(t=>{const s=t.config||{},o=s.__logId,r=s.__logStart,i=(s.method||"GET").toUpperCase();if(o==null)return t;let n=s.url??"";return n.startsWith("http")||(n=`${s.baseURL??""}${n}`),addOrUpdateLog({id:o,url:n,method:i,status:t.status,response:t.data,startTime:r||Date.now(),duration:r!=null?Date.now()-r:void 0,client:"axios",responseHeaders:normaliseHeaders(t.headers)}),t},t=>{const s=t.config||{},o=s.__logId,r=s.__logStart,i=(s.method||"GET").toUpperCase();if(o!=null){let n=s.url??"";n.startsWith("http")||(n=`${s.baseURL??""}${n}`),addOrUpdateLog({id:o,url:n,method:i,status:t.response?.status??0,response:t.response?.data??t.message,startTime:r||Date.now(),duration:r!=null?Date.now()-r:void 0,client:"axios",responseHeaders:normaliseHeaders(t.response?.headers)})}return Promise.reject(t)})};if(exports.addAxiosInterceptors=addAxiosInterceptors,typeof globalThis<"u")try{(0,exports.setupNetworkLogger)()}catch{}
@@ -0,0 +1,19 @@
1
+ import type { PushNotificationRecord } from '../types';
2
+ export declare function normalizePushPayload(raw: any, options?: Partial<PushNotificationRecord>): PushNotificationRecord;
3
+ export declare function recordPushNotification(payload: any, options?: Partial<PushNotificationRecord>): PushNotificationRecord;
4
+ export declare function recordSalesforcePush(payload: any, options?: Partial<PushNotificationRecord>): PushNotificationRecord;
5
+ export declare function getPushRecords(): PushNotificationRecord[];
6
+ export declare function clearPushRecords(): void;
7
+ export declare function prunePushRecords(keepCount?: number): void;
8
+ export declare function setMaxPushRecordsLimit(limit: number): void;
9
+ export declare function getMaxPushRecordsLimit(): number;
10
+ export declare const emitPushEvent: typeof recordPushNotification;
11
+ export declare function subscribePushEvents(callback: (records: PushNotificationRecord[]) => void): () => void;
12
+ export declare function getDiscoveredPushSources(): string[];
13
+ export declare function simulateTestPush(preset?: 'salesforce' | 'fcm' | 'apns' | 'deeplink' | 'rich_media' | 'custom', customData?: any): PushNotificationRecord;
14
+ export declare function autoSetupPushLogger(options?: {
15
+ messaging?: any;
16
+ notifee?: any;
17
+ expoNotifications?: any;
18
+ marketingCloud?: any;
19
+ }): () => void;
@@ -0,0 +1 @@
1
+ "use strict";Object.defineProperty(exports,"__esModule",{value:!0}),exports.emitPushEvent=void 0,exports.normalizePushPayload=normalizePushPayload,exports.recordPushNotification=recordPushNotification,exports.recordSalesforcePush=recordSalesforcePush,exports.getPushRecords=getPushRecords,exports.clearPushRecords=clearPushRecords,exports.prunePushRecords=prunePushRecords,exports.setMaxPushRecordsLimit=setMaxPushRecordsLimit,exports.getMaxPushRecordsLimit=getMaxPushRecordsLimit,exports.subscribePushEvents=subscribePushEvents,exports.getDiscoveredPushSources=getDiscoveredPushSources,exports.simulateTestPush=simulateTestPush,exports.autoSetupPushLogger=autoSetupPushLogger;const react_native_1=require("react-native");let pushRecords=[],maxPushRecordsLimit=50;const listeners=new Set;function notifyListeners(){const e=[...pushRecords];listeners.forEach(t=>{try{t(e)}catch{}})}function generatePushId(){return`push_${Date.now()}_${Math.random().toString(36).substring(2,9)}`}function normalizePushPayload(e,t){if(!e||typeof e!="object")return{id:t?.id||generatePushId(),title:t?.title||"Notification",body:t?.body||String(e||""),source:t?.source||"custom",domain:t?.domain||"custom",appState:t?.appState||(react_native_1.AppState.currentState==="active"?"foreground":"background"),action:t?.action||"received",timestamp:t?.timestamp||Date.now(),data:t?.data||{},rawPayload:e};const o=e.notification||e.aps?.alert||e.alert||e,s=e.data||e.custom||e.customKeys||e.userInfo||e.payload||{},n=t?.id||e.id||e.messageId||e.message_id||e._m||e.identifier||e["gcm.message_id"]||e["google.message_id"]||generatePushId(),u=t?.title||(typeof o=="object"?o.title||o.subject||o.headline:null)||s.title||e.title||(typeof e.alert=="string"?e.alert:void 0)||"Push Notification",l=t?.body||(typeof o=="object"?o.body||o.message||o.text||o.alert:null)||s.body||s.message||e.body||e.message||(typeof e.alert=="string"?e.alert:void 0)||"",f=t?.subtitle||(typeof o=="object"?o.subtitle||o.subTitle:null)||s.subtitle||e.subtitle,m=t?.imageUrl||(typeof o=="object"?o.imageUrl||o.image||o.bigPicture:null)||s.imageUrl||s.image||e.imageUrl||e.image||e.fcm_options?.image,r=t?.sound||(typeof o=="object"?o.sound:null)||s.sound||e.sound||e.aps?.sound,d=t?.badge??(typeof e.badge=="number"?e.badge:null)??(typeof e.aps?.badge=="number"?e.aps.badge:null),p=t?.channelId||(typeof o=="object"?o.channelId||o.android?.channelId:null)||s.channelId||e.channelId,h=t?.priority||e.priority||(e.highPriority?"high":void 0);let i=t?.source||"push",c=t?.domain;e._m||e._sid||e._od||e._h||e._r||s._m||s._sid||s.customKeys?(i="salesforce",c="Salesforce Marketing Cloud"):e.ab_||s.ab_||e.braze_id?(i="braze",c="Braze"):e.custom?.i||e.os_||s.os_?(i="onesignal",c="OneSignal"):e.experienceId||e.projectId?(i="expo",c="Expo Notifications"):e["gcm.message_id"]||e.fcm_options||e.from?(i="fcm",c="Firebase Cloud Messaging"):e.aps?(i="apns",c="Apple Push Notification Service"):t?.source&&(i=t.source,c=t.domain||t.source);const a={};i==="salesforce"&&((e._m||s._m)&&(a.messageId=e._m||s._m),(e._sid||s._sid)&&(a.sendId=e._sid||s._sid),(e._od||s._od)&&(a.openDirectUrl=e._od||s._od),(e._h||s._h)&&(a.cloudPageUrl=e._h||s._h),(e._r||s._r)&&(a.receiptUrl=e._r||s._r),(e.customKeys||s.customKeys)&&(a.customKeys=e.customKeys||s.customKeys));const g={...typeof e=="object"?e:{},...typeof s=="object"?s:{},...t?.data||{}},y=react_native_1.AppState.currentState==="active"?"foreground":"background";return{id:String(n),title:u,body:l,subtitle:f,source:i,domain:c||i,appState:t?.appState||y,action:t?.action||"received",actionId:t?.actionId,userText:t?.userText,timestamp:t?.timestamp||Date.now(),data:g,rawPayload:e,channelId:p,imageUrl:m,sound:r?String(r):void 0,badge:d!=null?Number(d):void 0,collapseKey:e.collapseKey||e.collapse_key,priority:h,customDomainAttributes:Object.keys(a).length>0?a:void 0}}function recordPushNotification(e,t){const o=normalizePushPayload(e,t);return pushRecords.unshift(o),pushRecords.length>maxPushRecordsLimit&&(pushRecords=pushRecords.slice(0,maxPushRecordsLimit)),notifyListeners(),o}function recordSalesforcePush(e,t){return recordPushNotification(e,{source:"salesforce",domain:"Salesforce Marketing Cloud",...t})}function getPushRecords(){return[...pushRecords]}function clearPushRecords(){pushRecords=[],notifyListeners()}function prunePushRecords(e=20){pushRecords.length>e&&(pushRecords=pushRecords.slice(0,e),notifyListeners())}function setMaxPushRecordsLimit(e){maxPushRecordsLimit=Math.max(10,Math.min(e,500)),pushRecords.length>maxPushRecordsLimit&&(pushRecords=pushRecords.slice(0,maxPushRecordsLimit),notifyListeners())}function getMaxPushRecordsLimit(){return maxPushRecordsLimit}exports.emitPushEvent=recordPushNotification;function subscribePushEvents(e){return listeners.add(e),e([...pushRecords]),()=>{listeners.delete(e)}}function getDiscoveredPushSources(){const e=new Set;return pushRecords.forEach(t=>{t.source&&e.add(t.source.toLowerCase())}),Array.from(e)}function simulateTestPush(e="salesforce",t){const o=Date.now();switch(e){case"salesforce":return recordPushNotification({_m:`sfmc_msg_${Math.floor(Math.random()*9e5+1e5)}`,_sid:"journey_flash_sale_q3",_od:"app://deals/flash-50-off",_h:"https://cloud.email.salesforce.com/pages/view",_r:`receipt_${o}`,title:"\u{1F525} Salesforce Flash 50% Off Sale!",body:"Special VIP weekend access unlocked! Tap to claim your discount.",customKeys:{campaign:"LaborDayPromo",discountCode:"FLASH50",tier:"Diamond VIP",loyaltyPoints:1250},channelId:"promotions",priority:"high"},{source:"salesforce",domain:"Salesforce Marketing Cloud",appState:"foreground",action:"received"});case"fcm":return recordPushNotification({"gcm.message_id":`fcm_${Math.floor(Math.random()*9e6)}`,notification:{title:"\u{1F4E6} Order #98421 Out for Delivery",body:"Your courier is 5 minutes away with your package.",imageUrl:"https://images.unsplash.com/photo-1549465220-1a8b9238cd48?w=300",channelId:"deliveries"},data:{orderId:"ORD-98421",courier:"Express Delivery",trackingUrl:"https://track.example.com/98421"}},{source:"fcm",domain:"Firebase Cloud Messaging",appState:"background",action:"received"});case"apns":return recordPushNotification({aps:{alert:{title:"\u{1F4AC} New Message from Alex",subtitle:"Direct Message",body:"Hey! Are you ready for the team sync at 11 AM?"},badge:3,sound:"chime.aiff","thread-id":"chat_thread_102"},customData:{senderId:"user_alex_84",chatRoomId:"room_dev_sync"}},{source:"apns",domain:"Apple Push (APNs)",appState:"foreground",action:"received"});case"deeplink":return recordPushNotification({id:`dl_${o}`,title:"\u{1F680} Deep Link Received",body:"Tap to navigate to the new payment analytics dashboard.",data:{deepLink:"myapp://analytics/payments?period=monthly",screen:"AnalyticsDetail",sourceCampaign:"in_app_reminder"}},{source:"deeplink",domain:"Custom Deep Link",appState:"foreground",action:"opened"});case"rich_media":return recordPushNotification({id:`rich_${o}`,title:"\u{1F3AC} New Video Available",body:"Watch the product keynote highlights now in HD.",imageUrl:"https://images.unsplash.com/photo-1618005182384-a83a8bd57fbe?w=500",data:{videoId:"vid_launch_2026",category:"Keynotes",duration:340}},{source:"rich_media",domain:"Media Service",appState:"foreground",action:"received"});default:return recordPushNotification(t||{id:`custom_${o}`,title:"\u26A1 Custom Domain Push",body:"This is a flexible dynamic push payload from an arbitrary backend.",data:{domain:"api.mycustomservice.io",event:"custom_alert",nestedData:{level:"high",score:98.4}}},{source:"custom",domain:"Custom API"})}}function autoSetupPushLogger(e){const t=[];if(e?.messaging)try{const o=typeof e.messaging=="function"?e.messaging():e.messaging;if(typeof o.onMessage=="function"){const s=o.onMessage(async n=>{recordPushNotification(n,{source:"fcm",appState:"foreground",action:"received"})});typeof s=="function"&&t.push(s)}if(typeof o.onNotificationOpenedApp=="function"){const s=o.onNotificationOpenedApp(n=>{recordPushNotification(n,{source:"fcm",appState:"background",action:"opened"})});typeof s=="function"&&t.push(s)}}catch{}if(e?.notifee)try{if(typeof e.notifee.onForegroundEvent=="function"){const o=e.notifee.onForegroundEvent(({type:s,detail:n})=>{recordPushNotification(n.notification,{source:"notifee",appState:"foreground",action:s===1?"opened":"received",actionId:n.pressAction?.id})});typeof o=="function"&&t.push(o)}}catch{}if(e?.marketingCloud)try{typeof e.marketingCloud.setNotificationOpenedListener=="function"&&e.marketingCloud.setNotificationOpenedListener(o=>{recordSalesforcePush(o,{action:"opened",appState:"foreground"})})}catch{}return()=>{t.forEach(o=>{try{o()}catch{}})}}
@@ -59,6 +59,12 @@ export interface ParsedStackFrame {
59
59
  copyableLocation: string;
60
60
  }
61
61
  export declare const parseStackLine: (rawLine: string, isOrigin?: boolean) => ParsedStackFrame;
62
+ export declare const getCleanCallerDisplay: (caller?: string) => {
63
+ fileName: string;
64
+ lineNumber?: string;
65
+ functionName?: string;
66
+ display: string;
67
+ } | null;
62
68
  export declare const openInVSCode: (filePath: string, lineNumber?: string | number, columnNumber?: string | number) => void;
63
69
  export declare const ANALYTICS_EVENT_PALETTE: string[];
64
70
  export declare const getEventColor: (name: string) => string;