react-native-inapp-inspector 2.4.1 → 2.5.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 (295) hide show
  1. package/README.ar.md +163 -0
  2. package/README.de.md +163 -0
  3. package/README.es.md +164 -0
  4. package/README.fr.md +163 -0
  5. package/README.hi.md +163 -0
  6. package/README.ja.md +180 -0
  7. package/README.ko.md +163 -0
  8. package/README.md +340 -243
  9. package/README.pt-BR.md +163 -0
  10. package/README.ru.md +163 -0
  11. package/README.zh-CN.md +387 -0
  12. package/android/src/main/java/com/inappinspector/NetworkInspectorModule.kt +605 -23
  13. package/assets/banner_dark.svg +186 -0
  14. package/assets/banner_light.svg +186 -0
  15. package/assets/icon_circle.svg +148 -0
  16. package/assets/icon_square.svg +369 -0
  17. package/assets/inapp_inspector_icon.gif +0 -0
  18. package/assets/inapp_inspector_icon_original.gif +0 -0
  19. package/assets/social_preview.png +0 -0
  20. package/assets/walkthrough.gif +0 -0
  21. package/dist/commonjs/capture.d.ts +2 -0
  22. package/dist/commonjs/capture.js +1 -1
  23. package/dist/commonjs/components/AnalyticsDetail.js +23 -23
  24. package/dist/commonjs/components/AnalyticsEventCard.js +1 -1
  25. package/dist/commonjs/components/AnalyticsGraph.js +44 -44
  26. package/dist/commonjs/components/AnimatedBrandOwl.d.ts +7 -0
  27. package/dist/commonjs/components/AnimatedBrandOwl.js +175 -0
  28. package/dist/commonjs/components/AppHeaderLogo.d.ts +1 -0
  29. package/dist/commonjs/components/AppHeaderLogo.js +5 -3
  30. package/dist/commonjs/components/BrandCircleIcon.js +28 -28
  31. package/dist/commonjs/components/BrandSquareIcon.d.ts +5 -0
  32. package/dist/commonjs/components/BrandSquareIcon.js +139 -0
  33. package/dist/commonjs/components/ConsoleLogCard.d.ts +2 -1
  34. package/dist/commonjs/components/ConsoleLogCard.js +23 -39
  35. package/dist/commonjs/components/Inspector/AboutModal.js +44 -54
  36. package/dist/commonjs/components/Inspector/AnalyticsTab.js +6 -6
  37. package/dist/commonjs/components/Inspector/ConfirmationModal.d.ts +13 -0
  38. package/dist/commonjs/components/Inspector/ConfirmationModal.js +30 -0
  39. package/dist/commonjs/components/Inspector/ConsoleTab.js +12 -12
  40. package/dist/commonjs/components/Inspector/CrashTab.js +44 -9
  41. package/dist/commonjs/components/Inspector/DebuggingTab.js +17 -17
  42. package/dist/commonjs/components/Inspector/DeviceInfoTab.js +1 -1
  43. package/dist/commonjs/components/Inspector/FabLauncher.js +30 -33
  44. package/dist/commonjs/components/Inspector/FeatureUnderDevNotice.js +2 -2
  45. package/dist/commonjs/components/Inspector/FloatingCaptureWidget.d.ts +3 -0
  46. package/dist/commonjs/components/Inspector/FloatingCaptureWidget.js +54 -0
  47. package/dist/commonjs/components/Inspector/GlobalCrashScreenModal.d.ts +11 -0
  48. package/dist/commonjs/components/Inspector/GlobalCrashScreenModal.js +234 -0
  49. package/dist/commonjs/components/Inspector/InspectorHeader.js +137 -127
  50. package/dist/commonjs/components/Inspector/LanguageSelectorModal.d.ts +15 -0
  51. package/dist/commonjs/components/Inspector/LanguageSelectorModal.js +172 -0
  52. package/dist/commonjs/components/Inspector/MainScreen.js +55 -35
  53. package/dist/commonjs/components/Inspector/MediaGalleryTab.js +40 -35
  54. package/dist/commonjs/components/Inspector/MediaPreviewModal.d.ts +36 -0
  55. package/dist/commonjs/components/Inspector/MediaPreviewModal.js +341 -135
  56. package/dist/commonjs/components/Inspector/NetworkTab.js +50 -50
  57. package/dist/commonjs/components/Inspector/NpmUpdateToast.js +1 -1
  58. package/dist/commonjs/components/Inspector/PushCard.d.ts +3 -2
  59. package/dist/commonjs/components/Inspector/PushCard.js +5 -4
  60. package/dist/commonjs/components/Inspector/PushDetail.js +41 -32
  61. package/dist/commonjs/components/Inspector/PushTab.js +12 -12
  62. package/dist/commonjs/components/Inspector/ReduxDetail.js +32 -32
  63. package/dist/commonjs/components/Inspector/ReduxTab.js +10 -8
  64. package/dist/commonjs/components/Inspector/SecondaryTelemetryStrip.d.ts +2 -0
  65. package/dist/commonjs/components/Inspector/SecondaryTelemetryStrip.js +43 -0
  66. package/dist/commonjs/components/Inspector/SettingsPanel.js +287 -139
  67. package/dist/commonjs/components/Inspector/SocketCard.d.ts +5 -0
  68. package/dist/commonjs/components/Inspector/SocketCard.js +116 -0
  69. package/dist/commonjs/components/Inspector/SocketDetail.d.ts +4 -0
  70. package/dist/commonjs/components/Inspector/SocketDetail.js +327 -0
  71. package/dist/commonjs/components/Inspector/SocketFilterModal.d.ts +13 -0
  72. package/dist/commonjs/components/Inspector/SocketFilterModal.js +69 -0
  73. package/dist/commonjs/components/Inspector/SocketTab.d.ts +3 -0
  74. package/dist/commonjs/components/Inspector/SocketTab.js +112 -0
  75. package/dist/commonjs/components/Inspector/StorageTab.js +39 -37
  76. package/dist/commonjs/components/Inspector/SupportModal.d.ts +7 -0
  77. package/dist/commonjs/components/Inspector/SupportModal.js +125 -0
  78. package/dist/commonjs/components/Inspector/SupportPage.d.ts +5 -0
  79. package/dist/commonjs/components/Inspector/SupportPage.js +227 -0
  80. package/dist/commonjs/components/Inspector/TabBar.js +24 -23
  81. package/dist/commonjs/components/Inspector/UpdateAvailableModal.js +24 -24
  82. package/dist/commonjs/components/JsonViewer.js +50 -48
  83. package/dist/commonjs/components/LogCard.d.ts +3 -2
  84. package/dist/commonjs/components/LogCard.js +27 -25
  85. package/dist/commonjs/components/LogSyntaxHighlighter.js +5 -5
  86. package/dist/commonjs/components/ModuleErrorBoundary.js +5 -5
  87. package/dist/commonjs/components/NetworkIcons.d.ts +42 -0
  88. package/dist/commonjs/components/NetworkIcons.js +139 -6
  89. package/dist/commonjs/components/SegmentedTabs.js +1 -1
  90. package/dist/commonjs/constants/version.d.ts +1 -1
  91. package/dist/commonjs/constants/version.js +1 -1
  92. package/dist/commonjs/crash.d.ts +1 -1
  93. package/dist/commonjs/crash.js +1 -1
  94. package/dist/commonjs/customHooks/crashHandler.d.ts +2 -1
  95. package/dist/commonjs/customHooks/crashHandler.js +7 -7
  96. package/dist/commonjs/customHooks/socketLogger.d.ts +26 -0
  97. package/dist/commonjs/customHooks/socketLogger.js +2 -0
  98. package/dist/commonjs/editor.d.ts +13 -0
  99. package/dist/commonjs/editor.js +1 -0
  100. package/dist/commonjs/helpers/index.d.ts +1 -0
  101. package/dist/commonjs/helpers/index.js +3 -3
  102. package/dist/commonjs/helpers/memoryManager.d.ts +1 -0
  103. package/dist/commonjs/helpers/memoryManager.js +1 -1
  104. package/dist/commonjs/helpers/searchQueryParser.d.ts +1 -1
  105. package/dist/commonjs/helpers/searchQueryParser.js +5 -1
  106. package/dist/commonjs/helpers/settingsStore.d.ts +1 -0
  107. package/dist/commonjs/helpers/settingsStore.js +1 -1
  108. package/dist/commonjs/helpers/shareFormatter.d.ts +3 -1
  109. package/dist/commonjs/helpers/shareFormatter.js +8 -7
  110. package/dist/commonjs/helpers/telemetry.js +1 -1
  111. package/dist/commonjs/i18n/index.d.ts +99 -1
  112. package/dist/commonjs/i18n/index.js +1 -1
  113. package/dist/commonjs/i18n/locales/ar.json +1 -1
  114. package/dist/commonjs/i18n/locales/bn.json +1 -0
  115. package/dist/commonjs/i18n/locales/de.json +1 -1
  116. package/dist/commonjs/i18n/locales/en.json +1 -1
  117. package/dist/commonjs/i18n/locales/es.json +1 -1
  118. package/dist/commonjs/i18n/locales/fr.json +1 -1
  119. package/dist/commonjs/i18n/locales/gu.json +1 -0
  120. package/dist/commonjs/i18n/locales/hi.json +1 -1
  121. package/dist/commonjs/i18n/locales/id.json +1 -0
  122. package/dist/commonjs/i18n/locales/it.json +1 -0
  123. package/dist/commonjs/i18n/locales/ja.json +1 -1
  124. package/dist/commonjs/i18n/locales/kn.json +1 -0
  125. package/dist/commonjs/i18n/locales/ko.json +1 -1
  126. package/dist/commonjs/i18n/locales/ml.json +1 -0
  127. package/dist/commonjs/i18n/locales/mr.json +1 -0
  128. package/dist/commonjs/i18n/locales/nl.json +1 -0
  129. package/dist/commonjs/i18n/locales/pa.json +1 -0
  130. package/dist/commonjs/i18n/locales/pl.json +1 -0
  131. package/dist/commonjs/i18n/locales/pt.json +1 -1
  132. package/dist/commonjs/i18n/locales/ru.json +1 -1
  133. package/dist/commonjs/i18n/locales/ta.json +1 -0
  134. package/dist/commonjs/i18n/locales/te.json +1 -0
  135. package/dist/commonjs/i18n/locales/tr.json +1 -0
  136. package/dist/commonjs/i18n/locales/vi.json +1 -0
  137. package/dist/commonjs/i18n/locales/zh.json +1 -1
  138. package/dist/commonjs/index.d.ts +16 -13
  139. package/dist/commonjs/index.js +5 -4
  140. package/dist/commonjs/native/NativeInspector.d.ts +4 -0
  141. package/dist/commonjs/native/NativeInspector.js +1 -1
  142. package/dist/commonjs/native/NativeNetworkInspector.d.ts +4 -0
  143. package/dist/commonjs/socket.d.ts +4 -0
  144. package/dist/commonjs/socket.js +1 -0
  145. package/dist/commonjs/styles/AppColors.d.ts +42 -2
  146. package/dist/commonjs/styles/AppColors.js +1 -1
  147. package/dist/commonjs/styles/common.js +1 -1
  148. package/dist/commonjs/styles/index.d.ts +30 -0
  149. package/dist/commonjs/styles/index.js +1 -1
  150. package/dist/commonjs/types/editor.d.ts +96 -0
  151. package/dist/commonjs/types/editor.js +1 -0
  152. package/dist/commonjs/types/enums.d.ts +40 -0
  153. package/dist/commonjs/types/enums.js +1 -1
  154. package/dist/commonjs/types/interfaces.d.ts +143 -1
  155. package/dist/esm/capture.d.ts +2 -0
  156. package/dist/esm/capture.js +1 -1
  157. package/dist/esm/components/AnalyticsDetail.js +31 -31
  158. package/dist/esm/components/AnalyticsEventCard.js +1 -1
  159. package/dist/esm/components/AnalyticsGraph.js +74 -74
  160. package/dist/esm/components/AnimatedBrandOwl.d.ts +7 -0
  161. package/dist/esm/components/AnimatedBrandOwl.js +175 -0
  162. package/dist/esm/components/AppHeaderLogo.d.ts +1 -0
  163. package/dist/esm/components/AppHeaderLogo.js +7 -5
  164. package/dist/esm/components/BrandCircleIcon.js +70 -70
  165. package/dist/esm/components/BrandSquareIcon.d.ts +5 -0
  166. package/dist/esm/components/BrandSquareIcon.js +139 -0
  167. package/dist/esm/components/ConsoleLogCard.d.ts +2 -1
  168. package/dist/esm/components/ConsoleLogCard.js +61 -77
  169. package/dist/esm/components/Inspector/AboutModal.js +85 -95
  170. package/dist/esm/components/Inspector/AnalyticsTab.js +24 -24
  171. package/dist/esm/components/Inspector/ConfirmationModal.d.ts +13 -0
  172. package/dist/esm/components/Inspector/ConfirmationModal.js +30 -0
  173. package/dist/esm/components/Inspector/ConsoleTab.js +48 -48
  174. package/dist/esm/components/Inspector/CrashTab.js +203 -168
  175. package/dist/esm/components/Inspector/DebuggingTab.js +29 -29
  176. package/dist/esm/components/Inspector/DeviceInfoTab.js +75 -75
  177. package/dist/esm/components/Inspector/FabLauncher.js +57 -60
  178. package/dist/esm/components/Inspector/FeatureUnderDevNotice.js +7 -7
  179. package/dist/esm/components/Inspector/FloatingCaptureWidget.d.ts +3 -0
  180. package/dist/esm/components/Inspector/FloatingCaptureWidget.js +54 -0
  181. package/dist/esm/components/Inspector/GlobalCrashScreenModal.d.ts +11 -0
  182. package/dist/esm/components/Inspector/GlobalCrashScreenModal.js +234 -0
  183. package/dist/esm/components/Inspector/InspectorHeader.js +162 -152
  184. package/dist/esm/components/Inspector/LanguageSelectorModal.d.ts +15 -0
  185. package/dist/esm/components/Inspector/LanguageSelectorModal.js +172 -0
  186. package/dist/esm/components/Inspector/MainScreen.js +130 -110
  187. package/dist/esm/components/Inspector/MediaGalleryTab.js +83 -78
  188. package/dist/esm/components/Inspector/MediaPreviewModal.d.ts +36 -0
  189. package/dist/esm/components/Inspector/MediaPreviewModal.js +345 -139
  190. package/dist/esm/components/Inspector/NetworkTab.js +130 -130
  191. package/dist/esm/components/Inspector/NpmUpdateToast.js +1 -1
  192. package/dist/esm/components/Inspector/PushCard.d.ts +3 -2
  193. package/dist/esm/components/Inspector/PushCard.js +23 -22
  194. package/dist/esm/components/Inspector/PushDetail.js +45 -36
  195. package/dist/esm/components/Inspector/PushTab.js +23 -23
  196. package/dist/esm/components/Inspector/ReduxDetail.js +42 -42
  197. package/dist/esm/components/Inspector/ReduxTab.js +20 -18
  198. package/dist/esm/components/Inspector/SecondaryTelemetryStrip.d.ts +2 -0
  199. package/dist/esm/components/Inspector/SecondaryTelemetryStrip.js +43 -0
  200. package/dist/esm/components/Inspector/SettingsPanel.js +526 -378
  201. package/dist/esm/components/Inspector/SocketCard.d.ts +5 -0
  202. package/dist/esm/components/Inspector/SocketCard.js +116 -0
  203. package/dist/esm/components/Inspector/SocketDetail.d.ts +4 -0
  204. package/dist/esm/components/Inspector/SocketDetail.js +327 -0
  205. package/dist/esm/components/Inspector/SocketFilterModal.d.ts +13 -0
  206. package/dist/esm/components/Inspector/SocketFilterModal.js +69 -0
  207. package/dist/esm/components/Inspector/SocketTab.d.ts +3 -0
  208. package/dist/esm/components/Inspector/SocketTab.js +112 -0
  209. package/dist/esm/components/Inspector/StorageTab.js +139 -137
  210. package/dist/esm/components/Inspector/SupportModal.d.ts +7 -0
  211. package/dist/esm/components/Inspector/SupportModal.js +125 -0
  212. package/dist/esm/components/Inspector/SupportPage.d.ts +5 -0
  213. package/dist/esm/components/Inspector/SupportPage.js +227 -0
  214. package/dist/esm/components/Inspector/TabBar.js +36 -35
  215. package/dist/esm/components/Inspector/UpdateAvailableModal.js +22 -22
  216. package/dist/esm/components/JsonViewer.js +66 -64
  217. package/dist/esm/components/LogCard.d.ts +3 -2
  218. package/dist/esm/components/LogCard.js +57 -55
  219. package/dist/esm/components/LogSyntaxHighlighter.js +5 -5
  220. package/dist/esm/components/ModuleErrorBoundary.js +23 -23
  221. package/dist/esm/components/NetworkIcons.d.ts +42 -0
  222. package/dist/esm/components/NetworkIcons.js +139 -6
  223. package/dist/esm/components/SegmentedTabs.js +7 -7
  224. package/dist/esm/constants/version.d.ts +1 -1
  225. package/dist/esm/constants/version.js +1 -1
  226. package/dist/esm/crash.d.ts +1 -1
  227. package/dist/esm/crash.js +1 -1
  228. package/dist/esm/customHooks/crashHandler.d.ts +2 -1
  229. package/dist/esm/customHooks/crashHandler.js +7 -7
  230. package/dist/esm/customHooks/socketLogger.d.ts +26 -0
  231. package/dist/esm/customHooks/socketLogger.js +2 -0
  232. package/dist/esm/editor.d.ts +13 -0
  233. package/dist/esm/editor.js +1 -0
  234. package/dist/esm/helpers/index.d.ts +1 -0
  235. package/dist/esm/helpers/index.js +4 -4
  236. package/dist/esm/helpers/memoryManager.d.ts +1 -0
  237. package/dist/esm/helpers/memoryManager.js +1 -1
  238. package/dist/esm/helpers/searchQueryParser.d.ts +1 -1
  239. package/dist/esm/helpers/searchQueryParser.js +5 -1
  240. package/dist/esm/helpers/settingsStore.d.ts +1 -0
  241. package/dist/esm/helpers/settingsStore.js +1 -1
  242. package/dist/esm/helpers/shareFormatter.d.ts +3 -1
  243. package/dist/esm/helpers/shareFormatter.js +8 -7
  244. package/dist/esm/helpers/telemetry.js +1 -1
  245. package/dist/esm/i18n/index.d.ts +99 -1
  246. package/dist/esm/i18n/index.js +1 -1
  247. package/dist/esm/i18n/locales/ar.json +1 -1
  248. package/dist/esm/i18n/locales/bn.json +1 -0
  249. package/dist/esm/i18n/locales/de.json +1 -1
  250. package/dist/esm/i18n/locales/en.json +1 -1
  251. package/dist/esm/i18n/locales/es.json +1 -1
  252. package/dist/esm/i18n/locales/fr.json +1 -1
  253. package/dist/esm/i18n/locales/gu.json +1 -0
  254. package/dist/esm/i18n/locales/hi.json +1 -1
  255. package/dist/esm/i18n/locales/id.json +1 -0
  256. package/dist/esm/i18n/locales/it.json +1 -0
  257. package/dist/esm/i18n/locales/ja.json +1 -1
  258. package/dist/esm/i18n/locales/kn.json +1 -0
  259. package/dist/esm/i18n/locales/ko.json +1 -1
  260. package/dist/esm/i18n/locales/ml.json +1 -0
  261. package/dist/esm/i18n/locales/mr.json +1 -0
  262. package/dist/esm/i18n/locales/nl.json +1 -0
  263. package/dist/esm/i18n/locales/pa.json +1 -0
  264. package/dist/esm/i18n/locales/pl.json +1 -0
  265. package/dist/esm/i18n/locales/pt.json +1 -1
  266. package/dist/esm/i18n/locales/ru.json +1 -1
  267. package/dist/esm/i18n/locales/ta.json +1 -0
  268. package/dist/esm/i18n/locales/te.json +1 -0
  269. package/dist/esm/i18n/locales/tr.json +1 -0
  270. package/dist/esm/i18n/locales/vi.json +1 -0
  271. package/dist/esm/i18n/locales/zh.json +1 -1
  272. package/dist/esm/index.d.ts +16 -13
  273. package/dist/esm/index.js +8 -7
  274. package/dist/esm/native/NativeInspector.d.ts +4 -0
  275. package/dist/esm/native/NativeInspector.js +1 -1
  276. package/dist/esm/native/NativeNetworkInspector.d.ts +4 -0
  277. package/dist/esm/socket.d.ts +4 -0
  278. package/dist/esm/socket.js +1 -0
  279. package/dist/esm/styles/AppColors.d.ts +42 -2
  280. package/dist/esm/styles/AppColors.js +1 -1
  281. package/dist/esm/styles/common.js +1 -1
  282. package/dist/esm/styles/index.d.ts +30 -0
  283. package/dist/esm/styles/index.js +1 -1
  284. package/dist/esm/types/editor.d.ts +96 -0
  285. package/dist/esm/types/editor.js +1 -0
  286. package/dist/esm/types/enums.d.ts +40 -0
  287. package/dist/esm/types/enums.js +1 -1
  288. package/dist/esm/types/interfaces.d.ts +143 -1
  289. package/editor.d.ts +1 -0
  290. package/editor.js +1 -0
  291. package/ios/NetworkInspectorModule.mm +531 -12
  292. package/package.json +213 -2
  293. package/react-native-inapp-inspector.podspec +1 -1
  294. package/src/native/NativeInspector.ts +65 -4
  295. package/src/native/NativeNetworkInspector.ts +4 -0
@@ -1,8 +1,8 @@
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]})),__exportStar=this&&this.__exportStar||function(e,t){for(var o in e)o!=="default"&&!Object.prototype.hasOwnProperty.call(t,o)&&__createBinding(t,e,o)},__importDefault=this&&this.__importDefault||function(e){return e&&e.__esModule?e:{default:e}};Object.defineProperty(exports,"__esModule",{value:!0}),exports.getRuntimeDiagnostics=exports.getCategoryColors=exports.registerGAPlugin=exports.getEventCategory=exports.getEventColor=exports.ANALYTICS_EVENT_PALETTE=exports.openInVSCode=exports.getCleanCallerDisplay=exports.parseStackLine=exports.getJsonPreviewText=exports.getJsonContent=exports.formatGap=exports.formatTime=exports.formatTimeShort=exports.handleOpenExternalLink=exports.getAppVersionAndBuild=exports.getAppName=exports.getBundleIdentifier=exports.formatDateTimeToAnalytics=exports.isAllValuesEmpty=exports.getLocalizedFilePathWithSlash=exports.getLocalizedFilePath=exports.formatDisplayUrl=exports.getDiff=exports.flattenObject=exports.getLogPageName=exports.getNavigationInfo=exports.escapeRegex=exports.deduplicateLogs=exports.getFetchCommand=exports.getCurlCommand=exports.getBaseUrl=exports.getPath=exports.copyImageOrMediaToClipboard=exports.copyToClipboard=exports.formatBytes=exports.getSize=exports.getDurationColor=exports.getStatusColor=exports.formatTimestamp=exports.formatDateTime=exports.getDomainColor=exports.isLocalDebugEnvironment=void 0;const react_native_1=require("react-native"),clipboard_1=__importDefault(require("@react-native-clipboard/clipboard")),toast_1=require("./toast"),NativeInspector_1=require("../native/NativeInspector"),AppColors_1=require("../styles/AppColors"),constants_1=require("../constants");__exportStar(require("./searchQueryParser"),exports),__exportStar(require("./memoryManager"),exports),__exportStar(require("./toast"),exports);const isLocalDebugEnvironment=()=>{const e=typeof __DEV__<"u"&&!!__DEV__,t=react_native_1.NativeModules.SourceCode?.scriptURL||"",o=t.startsWith("http://")||t.startsWith("https://")||t.includes(":8081")||t.includes(":8082");return e||o};exports.isLocalDebugEnvironment=isLocalDebugEnvironment;const getDomainColor=e=>{if(!e)return constants_1.DOMAIN_COLORS[0];let t=0;for(let o=0;o<e.length;o++)t=e.charCodeAt(o)+((t<<5)-t);return constants_1.DOMAIN_COLORS[Math.abs(t)%constants_1.DOMAIN_COLORS.length]};exports.getDomainColor=getDomainColor;const formatDateTime=e=>{const t=new Date(e),o=(d,c=2)=>String(d).padStart(c,"0"),r=o(t.getDate()),n=o(t.getMonth()+1),i=t.getFullYear(),s=o(t.getHours()),a=o(t.getMinutes()),u=o(t.getSeconds());return`${r}/${n}/${i} ${s}:${a}:${u}`};exports.formatDateTime=formatDateTime;const formatTimestamp=e=>{try{const t=new Date(e),o=t.getHours().toString().padStart(2,"0"),r=t.getMinutes().toString().padStart(2,"0"),n=t.getSeconds().toString().padStart(2,"0"),i=t.getMilliseconds().toString().padStart(3,"0");return`${o}:${r}:${n}.${i}`}catch{return"\u2014"}};exports.formatTimestamp=formatTimestamp;const getStatusColor=e=>!e||e===0||e>=500?AppColors_1.AppColors.errorColor:e>=400?AppColors_1.AppColors.darkOrange:e>=300?AppColors_1.AppColors.warningIconGold:AppColors_1.AppColors.greenColor;exports.getStatusColor=getStatusColor;const getDurationColor=e=>e==null?AppColors_1.AppColors.grayTextWeak:e<constants_1.DURATION_FAST_MS?AppColors_1.AppColors.greenColor:e<constants_1.DURATION_SLOW_MS?AppColors_1.AppColors.lightOrange:AppColors_1.AppColors.errorColor;exports.getDurationColor=getDurationColor;const getSize=e=>{try{const t=JSON.stringify(e)?.length??0;return t<1024?`${t} B`:`${(t/1024).toFixed(1)} KB`}catch{return"\u2014"}};exports.getSize=getSize;const formatBytes=e=>{if(e===0||!e||isNaN(e))return"0 B";const t=1024,o=["B","KB","MB","GB"],r=Math.floor(Math.log(e)/Math.log(t));return`${parseFloat((e/Math.pow(t,r)).toFixed(1))} ${o[r]||"B"}`};exports.formatBytes=formatBytes;const copyToClipboard=(e,t)=>{const o=typeof e=="function"?e():e;let r="";if(typeof o=="string")r=o;else try{r=JSON.stringify(o,null,2)}catch{r=String(o)}try{typeof clipboard_1.default?.setString=="function"?clipboard_1.default.setString(r):typeof clipboard_1.default?.default?.setString=="function"&&clipboard_1.default.default.setString(r)}catch(n){__DEV__&&console.warn("[NetworkInspector] Clipboard.setString failed:",n)}try{(0,toast_1.showToast)(t?`${t} copied to clipboard`:"Copied to clipboard")}catch{}try{react_native_1.Platform.OS==="android"&&react_native_1.ToastAndroid?.show&&react_native_1.ToastAndroid.show(t?`${t} copied to clipboard`:"Copied to clipboard",react_native_1.ToastAndroid.SHORT)}catch{}};exports.copyToClipboard=copyToClipboard;const copyImageOrMediaToClipboard=async(e,t="Image")=>{if(!e)return;let o=!1;try{o=await(0,NativeInspector_1.copyMediaToClipboard)(e)}catch{o=!1}if(!o){(0,exports.copyToClipboard)(e,t);return}try{(0,toast_1.showToast)(`${t} copied to clipboard`)}catch{}try{react_native_1.Platform.OS==="android"&&react_native_1.ToastAndroid?.show&&react_native_1.ToastAndroid.show(`${t} copied to clipboard`,react_native_1.ToastAndroid.SHORT)}catch{}};exports.copyImageOrMediaToClipboard=copyImageOrMediaToClipboard;const getPath=e=>{try{const t=new URL(e);return t.pathname+(t.search?t.search:"")}catch{return e.replace(/^https?:\/\/[^/?#]+/,"")||"/"}};exports.getPath=getPath;const getBaseUrl=e=>{try{const t=new URL(e);return`${t.protocol}//${t.host}`}catch{const t=e.match(/^(https?:\/\/[^/]+)/);return t?t[1]:""}};exports.getBaseUrl=getBaseUrl;const getCurlCommand=e=>{let t=`curl -X ${e.method} "${e.url}"`;if(e.requestHeaders&&Object.entries(e.requestHeaders).forEach(([o,r])=>{t+=` \\
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]})),__exportStar=this&&this.__exportStar||function(e,t){for(var o in e)o!=="default"&&!Object.prototype.hasOwnProperty.call(t,o)&&__createBinding(t,e,o)},__importDefault=this&&this.__importDefault||function(e){return e&&e.__esModule?e:{default:e}};Object.defineProperty(exports,"__esModule",{value:!0}),exports.getRuntimeDiagnostics=exports.getCategoryColors=exports.registerGAPlugin=exports.getEventCategory=exports.getEventColor=exports.ANALYTICS_EVENT_PALETTE=exports.openInVSCode=exports.getCleanCallerDisplay=exports.parseStackLine=exports.getJsonPreviewText=exports.getJsonContent=exports.formatGap=exports.formatTime=exports.formatTimeShort=exports.handleOpenExternalLink=exports.getAppVersionAndBuild=exports.getAppName=exports.getBundleIdentifier=exports.formatDateTimeToAnalytics=exports.isAllValuesEmpty=exports.getLocalizedFilePathWithSlash=exports.getLocalizedFilePath=exports.formatDisplayUrl=exports.getDiff=exports.flattenObject=exports.getLogPageName=exports.getNavigationInfo=exports.escapeRegex=exports.deduplicateLogs=exports.getFetchCommand=exports.getCurlCommand=exports.getBaseUrl=exports.getPath=exports.copyImageOrMediaToClipboard=exports.copyToClipboard=exports.formatByteSize=exports.formatBytes=exports.getSize=exports.getDurationColor=exports.getStatusColor=exports.formatTimestamp=exports.formatDateTime=exports.getDomainColor=exports.isLocalDebugEnvironment=void 0;const react_native_1=require("react-native"),clipboard_1=__importDefault(require("@react-native-clipboard/clipboard")),toast_1=require("./toast"),NativeInspector_1=require("../native/NativeInspector"),AppColors_1=require("../styles/AppColors"),constants_1=require("../constants");__exportStar(require("./searchQueryParser"),exports),__exportStar(require("./memoryManager"),exports),__exportStar(require("./toast"),exports);const isLocalDebugEnvironment=()=>{const e=typeof __DEV__<"u"&&!!__DEV__,t=react_native_1.NativeModules.SourceCode?.scriptURL||"",o=t.startsWith("http://")||t.startsWith("https://")||t.includes(":8081")||t.includes(":8082");return e||o};exports.isLocalDebugEnvironment=isLocalDebugEnvironment;const getDomainColor=e=>{if(!e)return constants_1.DOMAIN_COLORS[0];let t=0;for(let o=0;o<e.length;o++)t=e.charCodeAt(o)+((t<<5)-t);return constants_1.DOMAIN_COLORS[Math.abs(t)%constants_1.DOMAIN_COLORS.length]};exports.getDomainColor=getDomainColor;const formatDateTime=e=>{const t=new Date(e),o=(d,c=2)=>String(d).padStart(c,"0"),r=o(t.getDate()),n=o(t.getMonth()+1),i=t.getFullYear(),s=o(t.getHours()),a=o(t.getMinutes()),l=o(t.getSeconds());return`${r}/${n}/${i} ${s}:${a}:${l}`};exports.formatDateTime=formatDateTime;const formatTimestamp=e=>{try{const t=new Date(e),o=t.getHours().toString().padStart(2,"0"),r=t.getMinutes().toString().padStart(2,"0"),n=t.getSeconds().toString().padStart(2,"0"),i=t.getMilliseconds().toString().padStart(3,"0");return`${o}:${r}:${n}.${i}`}catch{return"\u2014"}};exports.formatTimestamp=formatTimestamp;const getStatusColor=e=>!e||e===0||e>=500?AppColors_1.AppColors.errorColor:e>=400?AppColors_1.AppColors.darkOrange:e>=300?AppColors_1.AppColors.warningIconGold:AppColors_1.AppColors.greenColor;exports.getStatusColor=getStatusColor;const getDurationColor=e=>e==null?AppColors_1.AppColors.grayTextWeak:e<constants_1.DURATION_FAST_MS?AppColors_1.AppColors.greenColor:e<constants_1.DURATION_SLOW_MS?AppColors_1.AppColors.lightOrange:AppColors_1.AppColors.errorColor;exports.getDurationColor=getDurationColor;const getSize=e=>{try{const t=JSON.stringify(e)?.length??0;return t<1024?`${t} B`:`${(t/1024).toFixed(1)} KB`}catch{return"\u2014"}};exports.getSize=getSize;const formatBytes=e=>{if(e===0||!e||isNaN(e))return"0 B";const t=1024,o=["B","KB","MB","GB"],r=Math.floor(Math.log(e)/Math.log(t));return`${parseFloat((e/Math.pow(t,r)).toFixed(1))} ${o[r]||"B"}`};exports.formatBytes=formatBytes;const formatByteSize=e=>!e||e<=0?"0 B":e<1024?`${e} B`:e<1024*1024?`${(e/1024).toFixed(1)} KB`:`${(e/(1024*1024)).toFixed(2)} MB`;exports.formatByteSize=formatByteSize;const copyToClipboard=(e,t)=>{const o=typeof e=="function"?e():e;let r="";if(typeof o=="string")r=o;else try{r=JSON.stringify(o,null,2)}catch{r=String(o)}try{typeof clipboard_1.default?.setString=="function"?clipboard_1.default.setString(r):typeof clipboard_1.default?.default?.setString=="function"&&clipboard_1.default.default.setString(r)}catch(n){__DEV__&&console.warn("[NetworkInspector] Clipboard.setString failed:",n)}try{(0,toast_1.showToast)(t?`${t} copied to clipboard`:"Copied to clipboard")}catch{}try{react_native_1.Platform.OS==="android"&&react_native_1.ToastAndroid?.show&&react_native_1.ToastAndroid.show(t?`${t} copied to clipboard`:"Copied to clipboard",react_native_1.ToastAndroid.SHORT)}catch{}};exports.copyToClipboard=copyToClipboard;const copyImageOrMediaToClipboard=async(e,t="Image")=>{if(!e)return;let o=!1;try{o=await(0,NativeInspector_1.copyMediaToClipboard)(e)}catch{o=!1}if(!o){(0,exports.copyToClipboard)(e,t);return}try{(0,toast_1.showToast)(`${t} copied to clipboard`)}catch{}try{react_native_1.Platform.OS==="android"&&react_native_1.ToastAndroid?.show&&react_native_1.ToastAndroid.show(`${t} copied to clipboard`,react_native_1.ToastAndroid.SHORT)}catch{}};exports.copyImageOrMediaToClipboard=copyImageOrMediaToClipboard;const getPath=e=>{try{const t=new URL(e);return t.pathname+(t.search?t.search:"")}catch{return e.replace(/^https?:\/\/[^/?#]+/,"")||"/"}};exports.getPath=getPath;const getBaseUrl=e=>{try{const t=new URL(e);return`${t.protocol}//${t.host}`}catch{const t=e.match(/^(https?:\/\/[^/]+)/);return t?t[1]:""}};exports.getBaseUrl=getBaseUrl;const getCurlCommand=e=>{let t=`curl -X ${e.method} "${e.url}"`;if(e.requestHeaders&&Object.entries(e.requestHeaders).forEach(([o,r])=>{t+=` \\
2
2
  -H "${o}: ${r}"`}),e.request&&e.method!=="GET"){const o=typeof e.request=="string"?e.request:JSON.stringify(e.request);t+=` \\
3
- -d '${o.replace(/'/g,"'\\''")}'`}return t};exports.getCurlCommand=getCurlCommand;const getFetchCommand=e=>{const t={method:e.method};return e.requestHeaders&&Object.keys(e.requestHeaders).length>0&&(t.headers=e.requestHeaders),e.request&&e.method!=="GET"&&(t.body=JSON.stringify(e.request)),`fetch("${e.url}", ${JSON.stringify(t,null,2)})`};exports.getFetchCommand=getFetchCommand;const deduplicateLogs=e=>{const t=new Map;return e.forEach(o=>{if(!t.has(o.id))t.set(o.id,o);else{const r=t.get(o.id);(r.status==null&&o.status!=null||(o.startTime??0)>=(r.startTime??0))&&t.set(o.id,o)}}),Array.from(t.values()).sort((o,r)=>r.id-o.id)};exports.deduplicateLogs=deduplicateLogs;const escapeRegex=e=>e.replace(/[.*+?^${}()|[\]\\]/g,"\\$&");exports.escapeRegex=escapeRegex;const getNavigationInfo=(e,t=[])=>{if(!e)return{path:t.length>0?t.join(" \u2794 "):"",params:null};if(e.name&&!e.routes)return{path:t.length>0?[...t,e.name].join(" \u2794 "):e.name,params:e.params||null};if(!e.routes||!Array.isArray(e.routes)||e.routes.length===0)return{path:t.length>0?t.join(" \u2794 "):"",params:null};const o=typeof e.index=="number"&&e.index>=0&&e.index<e.routes.length?e.index:0,r=e.routes[o];if(!r)return{path:t.length>0?t.join(" \u2794 "):"",params:null};const n=r.name?[...t,r.name]:t;return r?.state?(0,exports.getNavigationInfo)(r.state,n):{path:n.length>0?n.join(" \u2794 "):r.name||"",params:r.params||null}};exports.getNavigationInfo=getNavigationInfo;const getLogPageName=(e,t)=>{const o=t||e?.routeInfo;if(o&&o.path&&o.path!=="Navigators"){const r=o.path.split(" \u2794 ").map(n=>n.trim()).filter(Boolean);return r.length>0?r[r.length-1]:o.path}if(e.caller&&e.caller!=="Unknown")try{const r=e.caller.match(/([^/\\]+)\.(tsx|jsx|ts|js)/i);if(r&&r[1]){const n=r[1];if(!["networklogger","fetch","axios","apiclient","request","http","index","nativeinspector","inappinspector","bundleanalyzer"].includes(n.toLowerCase()))return n}}catch{}if(e.url)try{const n=e.url.split("?")[0].split("#")[0].replace(/^https?:\/\//i,""),i=n.indexOf("/");if(i!==-1){const a=n.substring(i+1).split("/").filter(Boolean),u=["api","v1","v2","v3","v4","rest","graphql","json","data","service","app"],d=a.filter(c=>!u.includes(c.toLowerCase()));if(d.length>0){const c=d[0];return c.charAt(0).toUpperCase()+c.slice(1)}}const s=n.split("/")[0];if(s)return s}catch{}return"General"};exports.getLogPageName=getLogPageName;const flattenObject=(e,t="")=>{let o={};return typeof e=="object"&&e!==null?Array.isArray(e)?e.forEach((r,n)=>{Object.assign(o,(0,exports.flattenObject)(r,t?`${t}[${n}]`:`[${n}]`))}):Object.keys(e).forEach(r=>{Object.assign(o,(0,exports.flattenObject)(e[r],t?`${t}.${r}`:r))}):o[t||"root"]=e,o};exports.flattenObject=flattenObject;const getDiff=(e,t)=>{const o=(0,exports.flattenObject)(e),r=(0,exports.flattenObject)(t),n=[];return new Set([...Object.keys(o),...Object.keys(r)]).forEach(s=>{s in o?s in r?o[s]!==r[s]&&n.push({type:"changed",path:s,oldVal:o[s],newVal:r[s]}):n.push({type:"removed",path:s,oldVal:o[s]}):n.push({type:"added",path:s,newVal:r[s]})}),n.sort((s,a)=>s.path.localeCompare(a.path))};exports.getDiff=getDiff;const formatDisplayUrl=e=>e?e.startsWith("http://")||e.startsWith("https://")?e:`https://${e}`:"";exports.formatDisplayUrl=formatDisplayUrl;const getLocalizedFilePath=(e,t,o)=>e.replace("country-language",`${t?.toLowerCase()}-${o?.toLowerCase()}`);exports.getLocalizedFilePath=getLocalizedFilePath;const getLocalizedFilePathWithSlash=(e,t,o)=>e.replace("country/language",`${t?.toLowerCase()}/${o?.toLowerCase()}`);exports.getLocalizedFilePathWithSlash=getLocalizedFilePathWithSlash;const isAllValuesEmpty=e=>!e||typeof e!="object"?!0:Object.values(e).every(t=>t&&typeof t=="object"&&!Array.isArray(t)&&Object.keys(t).length===0);exports.isAllValuesEmpty=isAllValuesEmpty;const formatDateTimeToAnalytics=e=>new Date(e)?.toLocaleString(void 0,{month:"short",day:"numeric",hour:"2-digit",minute:"2-digit",second:"2-digit"});exports.formatDateTimeToAnalytics=formatDateTimeToAnalytics;const getBundleIdentifier=()=>{const e=react_native_1.NativeModules.RNDeviceInfo;if(e&&typeof e.bundleId=="string")return e.bundleId;if(e&&typeof e.getBundleId=="function")try{const n=e.getBundleId();if(typeof n=="string")return n}catch{}const t=react_native_1.NativeModules.ExponentConstants;if(t&&t.manifest){const n=t.manifest;if(n.ios&&n.ios.bundleIdentifier)return n.ios.bundleIdentifier;if(n.android&&n.android.package)return n.android.package}const o=react_native_1.NativeModules.ExpoApplication;if(o&&typeof o.applicationId=="string")return o.applicationId;const r=react_native_1.NativeModules.SourceCode;if(r&&typeof r.scriptURL=="string"){const n=r.scriptURL;if(n.includes("assets/"))try{const i=n.match(/assets\/([^/?#]+)/);if(i&&i[1])return i[1]}catch{}}return"org.reactjs.native.example"};exports.getBundleIdentifier=getBundleIdentifier;const getAppName=()=>{const e=react_native_1.NativeModules.PlatformConstants;e&&e.interfaceIdiom;const t=react_native_1.NativeModules.RNDeviceInfo;if(t&&typeof t.appName=="string")return t.appName;const o=react_native_1.NativeModules.ExpoApplication;if(o&&typeof o.applicationName=="string")return o.applicationName;const r=react_native_1.NativeModules.ExponentConstants;if(r&&r.manifest){const s=r.manifest;if(s.name)return s.name}const n=react_native_1.NativeModules.AppInfo;if(n&&typeof n.appName=="string")return n.appName;const i=(0,exports.getBundleIdentifier)();if(i&&i!=="org.reactjs.native.example"){const s=i.split("."),a=s[s.length-1];return a?a.charAt(0).toUpperCase()+a.slice(1):"App"}return"App"};exports.getAppName=getAppName;const getAppVersionAndBuild=()=>{let e="",t="";const o=react_native_1.NativeModules.ExpoApplication;o&&(typeof o.nativeAppVersion=="string"&&(e=o.nativeAppVersion),typeof o.nativeBuildVersion=="string"&&(t=o.nativeBuildVersion));const r=react_native_1.NativeModules.ExponentConstants;if(r){const a=r.manifest||r.expoConfig;a&&(!e&&a.version&&(e=String(a.version)),t||(a.ios?.buildNumber?t=String(a.ios.buildNumber):a.android?.versionCode&&(t=String(a.android.versionCode))))}const n=react_native_1.NativeModules.RNDeviceInfo;if(n){if(!e){if(typeof n.appVersion=="string")e=n.appVersion;else if(typeof n.getVersion=="function")try{e=n.getVersion()}catch{}}if(!t){if(typeof n.buildNumber=="string")t=n.buildNumber;else if(typeof n.getBuildNumber=="function")try{t=n.getBuildNumber()}catch{}}}const i=react_native_1.Platform.constants||react_native_1.NativeModules.PlatformConstants;if(i&&(!e&&i.Version&&typeof i.Version=="string"&&i.Version.includes(".")&&(e=i.Version),!e&&i.reactNativeVersion)){const a=i.reactNativeVersion;a.major!==void 0&&(e=`${a.major}.${a.minor}.${a.patch}`)}const s=react_native_1.NativeModules.AppInfo;return s&&(!e&&typeof s.versionName=="string"&&(e=s.versionName),!t&&typeof s.versionCode=="string"&&(t=s.versionCode)),e||(e="1.0.0"),t||(t="1"),{version:e,build:t,formatted:`${e} (${t})`}};exports.getAppVersionAndBuild=getAppVersionAndBuild;const handleOpenExternalLink=e=>{if(!e)return;const t=(0,exports.formatDisplayUrl)(e);react_native_1.Alert.alert("Open Link",`Do you want to open this link in your web browser?
3
+ -d '${o.replace(/'/g,"'\\''")}'`}return t};exports.getCurlCommand=getCurlCommand;const getFetchCommand=e=>{const t={method:e.method};return e.requestHeaders&&Object.keys(e.requestHeaders).length>0&&(t.headers=e.requestHeaders),e.request&&e.method!=="GET"&&(t.body=JSON.stringify(e.request)),`fetch("${e.url}", ${JSON.stringify(t,null,2)})`};exports.getFetchCommand=getFetchCommand;const deduplicateLogs=e=>{const t=new Map;return e.forEach(o=>{if(!t.has(o.id))t.set(o.id,o);else{const r=t.get(o.id);(r.status==null&&o.status!=null||(o.startTime??0)>=(r.startTime??0))&&t.set(o.id,o)}}),Array.from(t.values()).sort((o,r)=>r.id-o.id)};exports.deduplicateLogs=deduplicateLogs;const escapeRegex=e=>e.replace(/[.*+?^${}()|[\]\\]/g,"\\$&");exports.escapeRegex=escapeRegex;const getNavigationInfo=(e,t=[])=>{if(!e)return{path:t.length>0?t.join(" \u2794 "):"",params:null};if(e.name&&!e.routes)return{path:t.length>0?[...t,e.name].join(" \u2794 "):e.name,params:e.params||null};if(!e.routes||!Array.isArray(e.routes)||e.routes.length===0)return{path:t.length>0?t.join(" \u2794 "):"",params:null};const o=typeof e.index=="number"&&e.index>=0&&e.index<e.routes.length?e.index:0,r=e.routes[o];if(!r)return{path:t.length>0?t.join(" \u2794 "):"",params:null};const n=r.name?[...t,r.name]:t;return r?.state?(0,exports.getNavigationInfo)(r.state,n):{path:n.length>0?n.join(" \u2794 "):r.name||"",params:r.params||null}};exports.getNavigationInfo=getNavigationInfo;const getLogPageName=(e,t)=>{const o=t||e?.routeInfo;if(o&&o.path&&o.path!=="Navigators"){const r=o.path.split(" \u2794 ").map(n=>n.trim()).filter(Boolean);return r.length>0?r[r.length-1]:o.path}if(e.caller&&e.caller!=="Unknown")try{const r=e.caller.match(/([^/\\]+)\.(tsx|jsx|ts|js)/i);if(r&&r[1]){const n=r[1];if(!["networklogger","fetch","axios","apiclient","request","http","index","nativeinspector","inappinspector","bundleanalyzer"].includes(n.toLowerCase()))return n}}catch{}if(e.url)try{const n=e.url.split("?")[0].split("#")[0].replace(/^https?:\/\//i,""),i=n.indexOf("/");if(i!==-1){const a=n.substring(i+1).split("/").filter(Boolean),l=["api","v1","v2","v3","v4","rest","graphql","json","data","service","app"],d=a.filter(c=>!l.includes(c.toLowerCase()));if(d.length>0){const c=d[0];return c.charAt(0).toUpperCase()+c.slice(1)}}const s=n.split("/")[0];if(s)return s}catch{}return"General"};exports.getLogPageName=getLogPageName;const flattenObject=(e,t="")=>{let o={};return typeof e=="object"&&e!==null?Array.isArray(e)?e.forEach((r,n)=>{Object.assign(o,(0,exports.flattenObject)(r,t?`${t}[${n}]`:`[${n}]`))}):Object.keys(e).forEach(r=>{Object.assign(o,(0,exports.flattenObject)(e[r],t?`${t}.${r}`:r))}):o[t||"root"]=e,o};exports.flattenObject=flattenObject;const getDiff=(e,t)=>{const o=(0,exports.flattenObject)(e),r=(0,exports.flattenObject)(t),n=[];return new Set([...Object.keys(o),...Object.keys(r)]).forEach(s=>{s in o?s in r?o[s]!==r[s]&&n.push({type:"changed",path:s,oldVal:o[s],newVal:r[s]}):n.push({type:"removed",path:s,oldVal:o[s]}):n.push({type:"added",path:s,newVal:r[s]})}),n.sort((s,a)=>s.path.localeCompare(a.path))};exports.getDiff=getDiff;const formatDisplayUrl=e=>e?e.startsWith("http://")||e.startsWith("https://")?e:`https://${e}`:"";exports.formatDisplayUrl=formatDisplayUrl;const getLocalizedFilePath=(e,t,o)=>e.replace("country-language",`${t?.toLowerCase()}-${o?.toLowerCase()}`);exports.getLocalizedFilePath=getLocalizedFilePath;const getLocalizedFilePathWithSlash=(e,t,o)=>e.replace("country/language",`${t?.toLowerCase()}/${o?.toLowerCase()}`);exports.getLocalizedFilePathWithSlash=getLocalizedFilePathWithSlash;const isAllValuesEmpty=e=>!e||typeof e!="object"?!0:Object.values(e).every(t=>t&&typeof t=="object"&&!Array.isArray(t)&&Object.keys(t).length===0);exports.isAllValuesEmpty=isAllValuesEmpty;const formatDateTimeToAnalytics=e=>new Date(e)?.toLocaleString(void 0,{month:"short",day:"numeric",hour:"2-digit",minute:"2-digit",second:"2-digit"});exports.formatDateTimeToAnalytics=formatDateTimeToAnalytics;const getBundleIdentifier=()=>{const e=react_native_1.NativeModules.RNDeviceInfo;if(e&&typeof e.bundleId=="string")return e.bundleId;if(e&&typeof e.getBundleId=="function")try{const n=e.getBundleId();if(typeof n=="string")return n}catch{}const t=react_native_1.NativeModules.ExponentConstants;if(t&&t.manifest){const n=t.manifest;if(n.ios&&n.ios.bundleIdentifier)return n.ios.bundleIdentifier;if(n.android&&n.android.package)return n.android.package}const o=react_native_1.NativeModules.ExpoApplication;if(o&&typeof o.applicationId=="string")return o.applicationId;const r=react_native_1.NativeModules.SourceCode;if(r&&typeof r.scriptURL=="string"){const n=r.scriptURL;if(n.includes("assets/"))try{const i=n.match(/assets\/([^/?#]+)/);if(i&&i[1])return i[1]}catch{}}return"org.reactjs.native.example"};exports.getBundleIdentifier=getBundleIdentifier;const getAppName=()=>{const e=react_native_1.NativeModules.PlatformConstants;e&&e.interfaceIdiom;const t=react_native_1.NativeModules.RNDeviceInfo;if(t&&typeof t.appName=="string")return t.appName;const o=react_native_1.NativeModules.NetworkInspectorModule;if(o&&typeof o.appName=="string"&&o.appName.length>0&&o.appName!=="App")return o.appName;const r=react_native_1.NativeModules.ExpoApplication;if(r&&typeof r.applicationName=="string")return r.applicationName;const n=react_native_1.NativeModules.ExponentConstants;if(n&&n.manifest){const a=n.manifest;if(a.name)return a.name}const i=react_native_1.NativeModules.AppInfo;if(i&&typeof i.appName=="string")return i.appName;const s=(0,exports.getBundleIdentifier)();if(s&&s!=="org.reactjs.native.example"){const a=s.split("."),l=a[a.length-1];return l?l.charAt(0).toUpperCase()+l.slice(1):"App"}return"App"};exports.getAppName=getAppName;const getAppVersionAndBuild=()=>{let e="",t="";const o=react_native_1.NativeModules.NetworkInspectorModule;if(o&&(typeof o.appVersion=="string"&&o.appVersion.length>0&&(e=o.appVersion),typeof o.appBuild=="string"&&o.appBuild.length>0&&(t=o.appBuild)),!e||!t){const r=react_native_1.NativeModules.ExpoApplication;r&&(!e&&typeof r.nativeAppVersion=="string"&&(e=r.nativeAppVersion),!t&&typeof r.nativeBuildVersion=="string"&&(t=r.nativeBuildVersion))}if(!e||!t){const r=react_native_1.NativeModules.ExponentConstants;if(r){const n=r.manifest||r.expoConfig;n&&(!e&&n.version&&(e=String(n.version)),t||(n.ios?.buildNumber?t=String(n.ios.buildNumber):n.android?.versionCode&&(t=String(n.android.versionCode))))}}if(!e||!t){const r=react_native_1.NativeModules.RNDeviceInfo;if(r){if(!e){if(typeof r.appVersion=="string")e=r.appVersion;else if(typeof r.getVersion=="function")try{e=r.getVersion()}catch{}}if(!t){if(typeof r.buildNumber=="string")t=r.buildNumber;else if(typeof r.getBuildNumber=="function")try{t=r.getBuildNumber()}catch{}}}}if(!e||!t){const r=react_native_1.NativeModules.AppInfo;r&&(!e&&typeof r.versionName=="string"&&(e=r.versionName),!t&&typeof r.versionCode=="string"&&(t=r.versionCode))}if(!e){const r=react_native_1.Platform.constants||react_native_1.NativeModules.PlatformConstants;r&&r.Version&&typeof r.Version=="string"&&r.Version.includes(".")&&(e=r.Version)}return e||(e="1.0"),t||(t="1"),{version:e,build:t,formatted:`${e} (${t})`}};exports.getAppVersionAndBuild=getAppVersionAndBuild;const handleOpenExternalLink=e=>{if(!e)return;const t=(0,exports.formatDisplayUrl)(e);react_native_1.Alert.alert("Open Link",`Do you want to open this link in your web browser?
4
4
 
5
5
  ${t}`,[{text:"Cancel",style:"cancel"},{text:"Open",onPress:()=>{react_native_1.Linking.openURL(t).catch(()=>{})}}])};exports.handleOpenExternalLink=handleOpenExternalLink;const formatTimeShort=e=>{const t=new Date(e),o=String(t.getHours()).padStart(2,"0"),r=String(t.getMinutes()).padStart(2,"0"),n=String(t.getSeconds()).padStart(2,"0");return`${o}:${r}:${n}`};exports.formatTimeShort=formatTimeShort;const formatTime=e=>{const t=new Date(e),o=String(t.getHours()).padStart(2,"0"),r=String(t.getMinutes()).padStart(2,"0"),n=String(t.getSeconds()).padStart(2,"0"),i=String(t.getMilliseconds()).padStart(3,"0");return`${o}:${r}:${n}.${i}`};exports.formatTime=formatTime;const formatGap=e=>{if(e<1e3)return`+${e}ms`;const t=Math.round(e/1e3);if(t<60)return`+${t}s`;const o=Math.floor(t/60),r=t%60;return r>0?`+${o}m ${r}s`:`+${o}m`};exports.formatGap=formatGap;const getJsonContent=e=>{if(!e)return null;const t=[];for(let o=0;o<e.length;o++)(e[o]==="{"||e[o]==="[")&&t.push(o);for(const o of t){const r=e.substring(o).trim();try{const n=JSON.parse(r);if(n!==null&&typeof n=="object")return{header:e.substring(0,o).trim(),data:n}}catch{}}return null};exports.getJsonContent=getJsonContent;const getJsonPreviewText=(e,t=4)=>{try{const o=JSON.stringify(e,null,2),r=o.split(`
6
6
  `);return r.length>t?{text:r.slice(0,t).join(`
7
7
  `)+`
8
- ...`,hasMore:!0}:{text:o,hasMore:!1}}catch{return{text:String(e),hasMore:!1}}};exports.getJsonPreviewText=getJsonPreviewText;const parseStackLine=(e,t=!1)=>{let o=e.trim().replace(/^at /,"");if(o.includes("@")){const N=o.indexOf("@"),b=o.substring(0,N).trim(),v=o.substring(N+1).trim();o=b?`${b} (${v})`:v}const r=o.match(/^(.*?)\s*\((.*?)\)$/);let n="<anonymous>",i=o;r&&(n=r[1].trim()||"<anonymous>",i=r[2].trim()),(n.startsWith("?anon_")||n==="?")&&(n="anonymous"),i=i.replace(/^address at /,"");const s=i.match(/^(.*?):(\d+):(\d+)$/);let a=i,u,d;s&&(a=s[1],u=s[2],d=s[3]);let c=a.replace(/[?&].*$/,"").replace(/[)]+$/,"").replace(/\/\/+$/,"");c=c.replace(/^(?:https?:\/\/[^\/]+\/|file:\/\/\/|webpack:\/\/\/?)/,"");let l=c.split("/").filter(Boolean).pop()||c;l=l.replace(/[?&].*$/,"").replace(/[)]+$/,""),(l.startsWith("&")||l.startsWith("?")||l.startsWith("platform=")||l.includes("platform=")||l.startsWith("dev=")||l.includes("dev="))&&(l="Unknown",c="Unknown");const m=l.match(/\.([a-z0-9]+)$/i),p=m?m[1].toLowerCase():"",g=p==="tsx"||p==="jsx"||p==="ts"||p==="js"?p:"other",h=i==="native"||c==="native",x=c.includes("InternalBytecode")||c.includes("metro-runtime")||c.includes("regenerator-runtime")||n==="tryCallOne"||n==="asyncGeneratorStep"||n==="_next"||n==="next"&&h,y=c.includes("node_modules")||c.includes("react-native/Libraries")||c.includes("react-native-inapp-inspector")&&!c.includes("/example/"),C=!h&&!x&&!y&&(g==="tsx"||g==="jsx"||g==="ts"||g==="js"||!l.includes(".bundle")&&l!=="Unknown"),S=C?"app":y?"dependency":h?"native":"runtime",A=x||h||n==="asyncGeneratorStep"||n==="_next";let f=c;f.includes("/example/")?f=f.substring(f.indexOf("/example/")+9):f.includes("/src/")?f=f.substring(f.indexOf("/src/")+1):f.includes("/node_modules/")&&(f=f.substring(f.indexOf("/node_modules/")+14));const $=u?`${l}:${u}${d?`:${d}`:""}`:l;return{raw:e,functionName:n,fileName:l,fullPath:f,rawFilePath:a,fileExt:g,frameType:S,isUserCode:C,isRuntimeNoise:A,lineNumber:u,columnNumber:d,isOrigin:t,copyableLocation:$}};exports.parseStackLine=parseStackLine;const getCleanCallerDisplay=e=>{if(!e||e==="Unknown"||e.trim()==="")return null;const t=e.trim();if(t.startsWith("&platform")||t.startsWith("?platform")||t.startsWith("&")||t.includes("&platform=")||t.includes("?platform=")){const i=t.match(/^(.*?)\s*[\(@]/);if(i&&i[1]&&!i[1].includes("&")&&!i[1].includes("platform")){const s=i[1].trim();if(s&&s!=="<anonymous>"&&s!=="anonymous"&&!s.startsWith("?anon_"))return{fileName:s,functionName:s,display:s}}return null}const o=(0,exports.parseStackLine)(e,!0);if(!o)return null;if(o.fileName.includes(".bundle")||o.fileName.includes("platform=")||o.fileName.startsWith("&")||o.fileName.startsWith("?")||o.fileName==="index.bundle"||o.fileName==="bundle"||o.fileName==="Unknown")return o.functionName&&o.functionName!=="<anonymous>"&&o.functionName!=="anonymous"&&!o.functionName.startsWith("?")&&!o.functionName.startsWith("_callee")&&!o.functionName.includes("regeneratorRuntime")?{fileName:o.functionName,lineNumber:o.lineNumber,functionName:o.functionName,display:o.functionName}:null;const n=o.lineNumber?`${o.fileName}:${o.lineNumber}`:o.fileName;return{fileName:o.fileName,lineNumber:o.lineNumber,functionName:o.functionName,display:n}};exports.getCleanCallerDisplay=getCleanCallerDisplay;const openInVSCode=(e,t,o)=>{const r=t?Number(t):1,n=o?Number(o):1,i=t?`:${t}`:"",s=o?`:${o}`:"",a=e.replace(/^file:\/\//,"");let u=null;try{const p=react_native_1.NativeModules?.SourceCode?.scriptURL||react_native_1.NativeModules?.PlatformConstants?.serverHost||react_native_1.NativeModules?.DevSettings?.serverHost;if(typeof p=="string"&&p.length>0){const g=p.match(/^(https?:\/\/[^/]+)/);g?u=g[1]:!p.startsWith("http")&&p.includes(":")&&(u=`http://${p}`)}}catch{}Array.from(new Set([...u?[u]:[],"http://localhost:8081","http://127.0.0.1:8081","http://10.0.2.2:8081"])).forEach(p=>{try{fetch(`${p}/open-stack-frame`,{method:"POST",headers:{"Content-Type":"application/json"},body:JSON.stringify({file:a,lineNumber:r,column:n})}).catch(()=>{})}catch{}});const c=`vscode://file/${a.replace(/^\/+/,"")}${i}${s}`,l=`cursor://file/${a.replace(/^\/+/,"")}${i}${s}`,m=`vscode-insiders://file/${a.replace(/^\/+/,"")}${i}${s}`;react_native_1.Linking.openURL(c).catch(()=>{react_native_1.Linking.openURL(l).catch(()=>{react_native_1.Linking.openURL(m).catch(()=>{(0,exports.copyToClipboard)(`${a}${i}${s}`,"Location")})})})};exports.openInVSCode=openInVSCode,exports.ANALYTICS_EVENT_PALETTE=[AppColors_1.AppColors.googleBlue,AppColors_1.AppColors.googleGreen,AppColors_1.AppColors.googlePurple,AppColors_1.AppColors.googleTeal,AppColors_1.AppColors.googleRed,AppColors_1.AppColors.googleOrange,AppColors_1.AppColors.blue700,AppColors_1.AppColors.materialGreen];const getEventColor=e=>{const t=typeof e=="string"?e:String(e||"");let o=0;for(let r=0;r<t.length;r++)o=o*31+t.charCodeAt(r)|0;return exports.ANALYTICS_EVENT_PALETTE[Math.abs(o)%exports.ANALYTICS_EVENT_PALETTE.length]};exports.getEventColor=getEventColor;var gaAnalyticsRegistry_1=require("./gaAnalyticsRegistry");Object.defineProperty(exports,"getEventCategory",{enumerable:!0,get:function(){return gaAnalyticsRegistry_1.getEventCategory}}),Object.defineProperty(exports,"registerGAPlugin",{enumerable:!0,get:function(){return gaAnalyticsRegistry_1.registerGAPlugin}});const getCategoryColors=e=>{switch(e){case"page_view":case"Page View":return{bg:AppColors_1.AppColors.blueBg,border:AppColors_1.AppColors.blueBorder,text:AppColors_1.AppColors.blue800};case"ecommerce":case"Ecommerce":return{bg:AppColors_1.AppColors.greenBg,border:AppColors_1.AppColors.greenBorder,text:AppColors_1.AppColors.materialGreen};case"system":case"System":return{bg:AppColors_1.AppColors.greyBg,border:AppColors_1.AppColors.greyBorder,text:AppColors_1.AppColors.grey600};default:return{bg:AppColors_1.AppColors.purpleBg,border:AppColors_1.AppColors.purpleBorder,text:AppColors_1.AppColors.purpleText}}};exports.getCategoryColors=getCategoryColors;const getRuntimeDiagnostics=()=>{const e=typeof global.HermesInternal<"u",t=typeof global._v8runtime<"u",o=e?"hermes":t?"v8":"jsc",n=typeof global.nativeFabricUIManager<"u"||!!global.__turboModuleProxy?"fabric":"paper";let i=32.4,s=64;try{const a=global.HermesInternal?.getInstrumentedStats?.();a?.js_heap_size?(i=Number((a.js_heap_size/(1024*1024)).toFixed(1)),s=Number(((a.js_allocated_bytes||a.js_heap_size*1.6)/(1024*1024)).toFixed(1))):global.performance?.memory?.usedJSHeapSize&&(i=Number((global.performance.memory.usedJSHeapSize/(1024*1024)).toFixed(1)),s=Number((global.performance.memory.totalJSHeapSize/(1024*1024)).toFixed(1)))}catch{}return{engineType:o,archType:n,usedHeapMb:i,totalAllocMb:s}};exports.getRuntimeDiagnostics=getRuntimeDiagnostics;
8
+ ...`,hasMore:!0}:{text:o,hasMore:!1}}catch{return{text:String(e),hasMore:!1}}};exports.getJsonPreviewText=getJsonPreviewText;const parseStackLine=(e,t=!1)=>{let o=e.trim().replace(/^at /,"");if(o.includes("@")){const N=o.indexOf("@"),b=o.substring(0,N).trim(),S=o.substring(N+1).trim();o=b?`${b} (${S})`:S}const r=o.match(/^(.*?)\s*\((.*?)\)$/);let n="<anonymous>",i=o;r&&(n=r[1].trim()||"<anonymous>",i=r[2].trim()),(n.startsWith("?anon_")||n==="?")&&(n="anonymous"),i=i.replace(/^address at /,"");const s=i.match(/^(.*?):(\d+):(\d+)$/);let a=i,l,d;s&&(a=s[1],l=s[2],d=s[3]);let c=a.replace(/[?&].*$/,"").replace(/[)]+$/,"").replace(/\/\/+$/,"");c=c.replace(/^(?:https?:\/\/[^\/]+\/|file:\/\/\/|webpack:\/\/\/?)/,"");let p=c.split("/").filter(Boolean).pop()||c;p=p.replace(/[?&].*$/,"").replace(/[)]+$/,""),(p.startsWith("&")||p.startsWith("?")||p.startsWith("platform=")||p.includes("platform=")||p.startsWith("dev=")||p.includes("dev="))&&(p="Unknown",c="Unknown");const m=p.match(/\.([a-z0-9]+)$/i),u=m?m[1].toLowerCase():"",g=u==="tsx"||u==="jsx"||u==="ts"||u==="js"?u:"other",h=i==="native"||c==="native",x=c.includes("InternalBytecode")||c.includes("metro-runtime")||c.includes("regenerator-runtime")||n==="tryCallOne"||n==="asyncGeneratorStep"||n==="_next"||n==="next"&&h,y=c.includes("node_modules")||c.includes("react-native/Libraries")||c.includes("react-native-inapp-inspector")&&!c.includes("/example/"),C=!h&&!x&&!y&&(g==="tsx"||g==="jsx"||g==="ts"||g==="js"||!p.includes(".bundle")&&p!=="Unknown"),v=C?"app":y?"dependency":h?"native":"runtime",A=x||h||n==="asyncGeneratorStep"||n==="_next";let f=c;f.includes("/example/")?f=f.substring(f.indexOf("/example/")+9):f.includes("/src/")?f=f.substring(f.indexOf("/src/")+1):f.includes("/node_modules/")&&(f=f.substring(f.indexOf("/node_modules/")+14));const $=l?`${p}:${l}${d?`:${d}`:""}`:p;return{raw:e,functionName:n,fileName:p,fullPath:f,rawFilePath:a,fileExt:g,frameType:v,isUserCode:C,isRuntimeNoise:A,lineNumber:l,columnNumber:d,isOrigin:t,copyableLocation:$}};exports.parseStackLine=parseStackLine;const getCleanCallerDisplay=e=>{if(!e||e==="Unknown"||e.trim()==="")return null;const t=e.trim();if(t.startsWith("&platform")||t.startsWith("?platform")||t.startsWith("&")||t.includes("&platform=")||t.includes("?platform=")){const i=t.match(/^(.*?)\s*[\(@]/);if(i&&i[1]&&!i[1].includes("&")&&!i[1].includes("platform")){const s=i[1].trim();if(s&&s!=="<anonymous>"&&s!=="anonymous"&&!s.startsWith("?anon_"))return{fileName:s,functionName:s,display:s}}return null}const o=(0,exports.parseStackLine)(e,!0);if(!o)return null;if(o.fileName.includes(".bundle")||o.fileName.includes("platform=")||o.fileName.startsWith("&")||o.fileName.startsWith("?")||o.fileName==="index.bundle"||o.fileName==="bundle"||o.fileName==="Unknown")return o.functionName&&o.functionName!=="<anonymous>"&&o.functionName!=="anonymous"&&!o.functionName.startsWith("?")&&!o.functionName.startsWith("_callee")&&!o.functionName.includes("regeneratorRuntime")?{fileName:o.functionName,lineNumber:o.lineNumber,functionName:o.functionName,display:o.functionName}:null;const n=o.lineNumber?`${o.fileName}:${o.lineNumber}`:o.fileName;return{fileName:o.fileName,lineNumber:o.lineNumber,functionName:o.functionName,display:n}};exports.getCleanCallerDisplay=getCleanCallerDisplay;const openInVSCode=(e,t,o)=>{const r=t?Number(t):1,n=o?Number(o):1,i=t?`:${t}`:"",s=o?`:${o}`:"",a=e.replace(/^file:\/\//,"");let l=null;try{const u=react_native_1.NativeModules?.SourceCode?.scriptURL||react_native_1.NativeModules?.PlatformConstants?.serverHost||react_native_1.NativeModules?.DevSettings?.serverHost;if(typeof u=="string"&&u.length>0){const g=u.match(/^(https?:\/\/[^/]+)/);g?l=g[1]:!u.startsWith("http")&&u.includes(":")&&(l=`http://${u}`)}}catch{}Array.from(new Set([...l?[l]:[],"http://localhost:8081","http://127.0.0.1:8081","http://10.0.2.2:8081"])).forEach(u=>{try{fetch(`${u}/open-stack-frame`,{method:"POST",headers:{"Content-Type":"application/json"},body:JSON.stringify({file:a,lineNumber:r,column:n})}).catch(()=>{})}catch{}});const c=`vscode://file/${a.replace(/^\/+/,"")}${i}${s}`,p=`cursor://file/${a.replace(/^\/+/,"")}${i}${s}`,m=`vscode-insiders://file/${a.replace(/^\/+/,"")}${i}${s}`;react_native_1.Linking.openURL(c).catch(()=>{react_native_1.Linking.openURL(p).catch(()=>{react_native_1.Linking.openURL(m).catch(()=>{(0,exports.copyToClipboard)(`${a}${i}${s}`,"Location")})})})};exports.openInVSCode=openInVSCode,exports.ANALYTICS_EVENT_PALETTE=[AppColors_1.AppColors.googleBlue,AppColors_1.AppColors.googleGreen,AppColors_1.AppColors.googlePurple,AppColors_1.AppColors.googleTeal,AppColors_1.AppColors.googleRed,AppColors_1.AppColors.googleOrange,AppColors_1.AppColors.blue700,AppColors_1.AppColors.materialGreen];const getEventColor=e=>{const t=typeof e=="string"?e:String(e||"");let o=0;for(let r=0;r<t.length;r++)o=o*31+t.charCodeAt(r)|0;return exports.ANALYTICS_EVENT_PALETTE[Math.abs(o)%exports.ANALYTICS_EVENT_PALETTE.length]};exports.getEventColor=getEventColor;var gaAnalyticsRegistry_1=require("./gaAnalyticsRegistry");Object.defineProperty(exports,"getEventCategory",{enumerable:!0,get:function(){return gaAnalyticsRegistry_1.getEventCategory}}),Object.defineProperty(exports,"registerGAPlugin",{enumerable:!0,get:function(){return gaAnalyticsRegistry_1.registerGAPlugin}});const getCategoryColors=e=>{switch(e){case"page_view":case"Page View":return{bg:AppColors_1.AppColors.blueBg,border:AppColors_1.AppColors.blueBorder,text:AppColors_1.AppColors.blue800};case"ecommerce":case"Ecommerce":return{bg:AppColors_1.AppColors.greenBg,border:AppColors_1.AppColors.greenBorder,text:AppColors_1.AppColors.materialGreen};case"system":case"System":return{bg:AppColors_1.AppColors.greyBg,border:AppColors_1.AppColors.greyBorder,text:AppColors_1.AppColors.grey600};default:return{bg:AppColors_1.AppColors.purpleBg,border:AppColors_1.AppColors.purpleBorder,text:AppColors_1.AppColors.purpleText}}};exports.getCategoryColors=getCategoryColors;const getRuntimeDiagnostics=()=>{const e=typeof global.HermesInternal<"u",t=typeof global._v8runtime<"u",o=e?"hermes":t?"v8":"jsc",n=typeof global.nativeFabricUIManager<"u"||!!global.__turboModuleProxy?"fabric":"paper";let i=32.4,s=64;try{const a=global.HermesInternal?.getInstrumentedStats?.();a?.js_heap_size?(i=Number((a.js_heap_size/(1024*1024)).toFixed(1)),s=Number(((a.js_allocated_bytes||a.js_heap_size*1.6)/(1024*1024)).toFixed(1))):global.performance?.memory?.usedJSHeapSize&&(i=Number((global.performance.memory.usedJSHeapSize/(1024*1024)).toFixed(1)),s=Number((global.performance.memory.totalJSHeapSize/(1024*1024)).toFixed(1)))}catch{}return{engineType:o,archType:n,usedHeapMb:i,totalAllocMb:s}};exports.getRuntimeDiagnostics=getRuntimeDiagnostics;
@@ -6,6 +6,7 @@ export interface MemoryPruneSummary {
6
6
  prunedAnalytics: number;
7
7
  prunedCrashes: number;
8
8
  prunedPush: number;
9
+ prunedSocket: number;
9
10
  totalPruned: number;
10
11
  triggeredBy: 'memory-warning' | 'manual' | 'ram-threshold';
11
12
  }
@@ -1 +1 @@
1
- "use strict";Object.defineProperty(exports,"__esModule",{value:!0}),exports.isMemoryHandlerActive=exports.getLastPruneTimestamp=exports.subscribeMemoryWarning=exports.setupMemoryWarningHandler=exports.pruneAllLogs=void 0;const react_native_1=require("react-native"),networkLogger_1=require("../customHooks/networkLogger"),consoleLogger_1=require("../customHooks/consoleLogger"),reduxLogger_1=require("../customHooks/reduxLogger"),analyticsLogger_1=require("../customHooks/analyticsLogger"),crashHandler_1=require("../customHooks/crashHandler"),pushNotificationLogger_1=require("../customHooks/pushNotificationLogger"),toast_1=require("./toast"),memoryListeners=new Set;let appStateSubscription=null,isMemoryWarningHandlerActive=!1,lastPruneTimestamp=0;const pruneAllLogs=(e="manual",t=.5)=>{const o=(0,networkLogger_1.pruneNetworkLogs)(void 0),n=(0,consoleLogger_1.pruneConsoleLogs)(void 0),s=(0,reduxLogger_1.pruneReduxHistory)(void 0),a=(0,analyticsLogger_1.pruneAnalyticsLogs)(void 0),u=(0,crashHandler_1.pruneCrashRecords)(void 0),c=0;(0,pushNotificationLogger_1.prunePushRecords)(20);const i=o+n+s+a+u+c;if(lastPruneTimestamp=Date.now(),typeof globalThis.gc=="function")try{globalThis.gc()}catch{}const r={timestamp:lastPruneTimestamp,prunedNetwork:o,prunedConsole:n,prunedRedux:s,prunedAnalytics:a,prunedCrashes:u,prunedPush:c,totalPruned:i,triggeredBy:e};try{(0,crashHandler_1.addCrashBreadcrumb)("system",`[MemoryManager] Low memory auto-prune executed (${e}). Freed ${i} log records.`,r)}catch{}return memoryListeners.forEach(p=>{try{p(r)}catch{}}),r};exports.pruneAllLogs=pruneAllLogs;const setupMemoryWarningHandler=()=>{if(isMemoryWarningHandlerActive)return()=>{};isMemoryWarningHandlerActive=!0;try{appStateSubscription=react_native_1.AppState.addEventListener("memoryWarning",e=>{const t=(0,exports.pruneAllLogs)("memory-warning",.5);try{(0,toast_1.showToast)(`Memory Warning: Auto-pruned ${t.totalPruned} inspector logs`)}catch{}})}catch{}return()=>{if(appStateSubscription){try{appStateSubscription.remove()}catch{}appStateSubscription=null}isMemoryWarningHandlerActive=!1}};exports.setupMemoryWarningHandler=setupMemoryWarningHandler;const subscribeMemoryWarning=e=>(memoryListeners.add(e),()=>{memoryListeners.delete(e)});exports.subscribeMemoryWarning=subscribeMemoryWarning;const getLastPruneTimestamp=()=>lastPruneTimestamp;exports.getLastPruneTimestamp=getLastPruneTimestamp;const isMemoryHandlerActive=()=>isMemoryWarningHandlerActive;exports.isMemoryHandlerActive=isMemoryHandlerActive;
1
+ "use strict";Object.defineProperty(exports,"__esModule",{value:!0}),exports.isMemoryHandlerActive=exports.getLastPruneTimestamp=exports.subscribeMemoryWarning=exports.setupMemoryWarningHandler=exports.pruneAllLogs=void 0;const react_native_1=require("react-native"),networkLogger_1=require("../customHooks/networkLogger"),consoleLogger_1=require("../customHooks/consoleLogger"),reduxLogger_1=require("../customHooks/reduxLogger"),analyticsLogger_1=require("../customHooks/analyticsLogger"),crashHandler_1=require("../customHooks/crashHandler"),pushNotificationLogger_1=require("../customHooks/pushNotificationLogger"),socketLogger_1=require("../customHooks/socketLogger"),toast_1=require("./toast"),memoryListeners=new Set;let appStateSubscription=null,isMemoryWarningHandlerActive=!1,lastPruneTimestamp=0;const pruneAllLogs=(e="manual",o=.5)=>{const t=(0,networkLogger_1.pruneNetworkLogs)(void 0),s=(0,consoleLogger_1.pruneConsoleLogs)(void 0),n=(0,reduxLogger_1.pruneReduxHistory)(void 0),c=(0,analyticsLogger_1.pruneAnalyticsLogs)(void 0),u=(0,crashHandler_1.pruneCrashRecords)(void 0),a=0;(0,pushNotificationLogger_1.prunePushRecords)(20);const i=0;(0,socketLogger_1.pruneSocketRecords)(20);const g=t+s+n+c+u+a+i;if(lastPruneTimestamp=Date.now(),typeof globalThis.gc=="function")try{globalThis.gc()}catch{}const r={timestamp:lastPruneTimestamp,prunedNetwork:t,prunedConsole:s,prunedRedux:n,prunedAnalytics:c,prunedCrashes:u,prunedPush:a,prunedSocket:i,totalPruned:g,triggeredBy:e};try{(0,crashHandler_1.addCrashBreadcrumb)("system",`[MemoryManager] Low memory auto-prune executed (${e}). Freed ${g} log records.`,r)}catch{}return memoryListeners.forEach(p=>{try{p(r)}catch{}}),r};exports.pruneAllLogs=pruneAllLogs;const setupMemoryWarningHandler=()=>{if(isMemoryWarningHandlerActive)return()=>{};isMemoryWarningHandlerActive=!0;try{appStateSubscription=react_native_1.AppState.addEventListener("memoryWarning",e=>{const o=(0,exports.pruneAllLogs)("memory-warning",.5);try{(0,toast_1.showToast)(`Memory Warning: Auto-pruned ${o.totalPruned} inspector logs`)}catch{}})}catch{}return()=>{if(appStateSubscription){try{appStateSubscription.remove()}catch{}appStateSubscription=null}isMemoryWarningHandlerActive=!1}};exports.setupMemoryWarningHandler=setupMemoryWarningHandler;const subscribeMemoryWarning=e=>(memoryListeners.add(e),()=>{memoryListeners.delete(e)});exports.subscribeMemoryWarning=subscribeMemoryWarning;const getLastPruneTimestamp=()=>lastPruneTimestamp;exports.getLastPruneTimestamp=getLastPruneTimestamp;const isMemoryHandlerActive=()=>isMemoryWarningHandlerActive;exports.isMemoryHandlerActive=isMemoryHandlerActive;
@@ -4,4 +4,4 @@ export interface SearchQueryOptions {
4
4
  isRegex?: boolean;
5
5
  isCaseSensitive?: boolean;
6
6
  }
7
- export declare function matchNetworkLogQuery(log: NetworkLog, searchQuery: string, routePath?: string, _options?: SearchQueryOptions): boolean;
7
+ export declare function matchNetworkLogQuery(log: NetworkLog, searchQuery: string, routePath?: string, options?: SearchQueryOptions): boolean;
@@ -1 +1,5 @@
1
- "use strict";Object.defineProperty(exports,"__esModule",{value:!0}),exports.matchNetworkLogQuery=matchNetworkLogQuery;const telemetry_1=require("./telemetry");function matchNetworkLogQuery(e,s,a,m){if(!s||s.trim().length===0)return!0;(0,telemetry_1.markSearchFilterUsed)();const n=s.trim().toLowerCase().split(/\s+/).filter(Boolean);if(n.length===0)return!0;const u=(e.method||"").toLowerCase(),o=(e.url||"").toLowerCase(),i=e.status!=null?String(e.status).toLowerCase():"pending",r=typeof e.status=="number"?e.status:e.status!=null?parseInt(String(e.status),10):null,c=(e.client||"").toLowerCase(),w=(e.caller||"").toLowerCase(),f=(a||e?.routeInfo?.path||"").toLowerCase(),p=typeof e.request=="string"?e.request.toLowerCase():e.request!=null?JSON.stringify(e.request).toLowerCase():"",L=typeof e.response=="string"?e.response.toLowerCase():e.response!=null?JSON.stringify(e.response).toLowerCase():"",d=e.requestHeaders?JSON.stringify(e.requestHeaders).toLowerCase():"",l=e.responseHeaders?JSON.stringify(e.responseHeaders).toLowerCase():"",C=[u,o,i,f,w,c,p,L,d,l].join(" ");return n.every(t=>C.includes(t)?!0:t==="error"||t==="failed"||t==="err"||t==="fail"?e.status===0||r!==null&&r>=400:t==="success"||t==="ok"||t==="2xx"?r!==null&&r>=200&&r<300:!1)}
1
+ "use strict";Object.defineProperty(exports,"__esModule",{value:!0}),exports.matchNetworkLogQuery=matchNetworkLogQuery;const telemetry_1=require("./telemetry"),PROXY_INFRA_HEADERS=new Set(["via","nel","report-to","reporting-endpoints","cf-ray","cf-cache-status","alt-svc","server","etag","date","x-powered-by","x-request-id","x-content-type-options","accept-ranges","transfer-encoding","connection","keep-alive"]);function tokenizeQuery(s){const o=[],w=/[^\s"']+|"([^"]*)"|'([^']*)'/g;let i;for(;(i=w.exec(s))!==null;)i[1]!=null?o.push(i[1]):i[2]!=null?o.push(i[2]):i[0]&&o.push(i[0]);return o}function matchNetworkLogQuery(s,o,w,i){if(!o||o.trim().length===0)return!0;(0,telemetry_1.markSearchFilterUsed)();const R=!!i?.isCaseSensitive,j=!!i?.isRegex,x=i?.scope||"all",b=s.method||"",y=s.url||"",d=s.status!=null?String(s.status):"pending",u=typeof s.status=="number"?s.status:s.status!=null?parseInt(String(s.status),10):null,k=s.client||"",B=s.caller||"",v=w||s?.routeInfo?.path||"",H=n=>{if(n==null)return"";if(typeof n=="string")return n;try{return JSON.stringify(n)}catch{return""}},m=H(s.request),C=H(s.response),p=(n,l=!1)=>{if(!n||typeof n!="object")return"";const r=Object.entries(n);return l?r.map(([t,f])=>`${t}: ${f}`).join(`
2
+ `):r.filter(([t])=>!PROXY_INFRA_HEADERS.has(t.toLowerCase())).map(([t,f])=>`${t}: ${f}`).join(`
3
+ `)},$=p(s.requestHeaders,x==="headers"),q=p(s.responseHeaders,x==="headers"),h=(n=>{switch(n){case"url":return y;case"reqBody":return m;case"resBody":return C;case"headers":return`${$}
4
+ ${q}`;default:return[y,b,d,v,k,B,m,C,$,q].join(" ")}})(x),c=(n,l)=>{if(j)try{return new RegExp(l,R?"":"i").test(n)}catch{}return R?n.includes(l):n.toLowerCase().includes(l.toLowerCase())},L=tokenizeQuery(o);return L.length===0?!0:L.every(n=>{let l=!1,r=n;if(r.length>1&&(r.startsWith("-")||r.startsWith("!"))&&(l=!0,r=r.slice(1)),!r)return!0;let t=!1;const f=r.indexOf(":");if(f>0){const e=r.slice(0,f).toLowerCase(),a=r.slice(f+1);if(e==="url"||e==="u"||e==="path")t=c(y,a);else if(e==="method"||e==="m")t=c(b,a);else if(e==="status"||e==="s")if(a==="error"||a==="failed"||a==="err")t=s.status===0||u!==null&&u>=400;else if(a==="success"||a==="ok")t=u!==null&&u>=200&&u<300;else if(a.endsWith("xx")){const S=a[0];t=d.startsWith(S)}else t=d.includes(a);else if(e==="header"||e==="h"){const S=`${p(s.requestHeaders,!0)}
5
+ ${p(s.responseHeaders,!0)}`;t=c(S,a)}else e==="body"||e==="b"?t=c(m,a)||c(C,a):e==="client"||e==="c"?t=c(k,a):e==="page"||e==="p"?t=c(v,a):t=c(h,r)}else{const e=r.toLowerCase();e==="error"||e==="failed"||e==="err"||e==="fail"?t=s.status===0||u!==null&&u>=400||c(h,r):e==="success"||e==="ok"||e==="2xx"?t=u!==null&&u>=200&&u<300||c(h,r):/^[1-5]xx$/.test(e)?t=d.startsWith(e[0]):t=c(h,r)}return l?!t:t})}
@@ -12,6 +12,7 @@ export interface RamLimitsProfile {
12
12
  maxAnalyticsEvents: number;
13
13
  maxCrashRecords: number;
14
14
  maxPushRecords: number;
15
+ maxSocketRecords: number;
15
16
  profileName: 'High-End' | 'Standard' | 'Compact' | 'Ultra-Light';
16
17
  freeRamMb: number;
17
18
  }
@@ -1 +1 @@
1
- "use strict";Object.defineProperty(exports,"__esModule",{value:!0}),exports.isPersistentStorageAvailable=void 0,exports.setCustomStorage=setCustomStorage,exports.loadSettings=loadSettings,exports.saveSettings=saveSettings,exports.clearPersistedSettings=clearPersistedSettings,exports.getCustomStorage=getCustomStorage,exports.calculateRamBasedLimits=calculateRamBasedLimits;const react_native_1=require("react-native"),NativeInspector_1=require("../native/NativeInspector"),memory=new Map;let customStorage=null;function setCustomStorage(t){customStorage=t}const SETTINGS_KEY="rn-inapp-inspector.settings.v1";async function loadSettings(){try{if(customStorage){const e=await customStorage.getItem(SETTINGS_KEY);if(!e)return{};const s=JSON.parse(e);return s&&typeof s=="object"?s:{}}if((0,NativeInspector_1.isNativeModuleAvailable)()){const e=await(0,NativeInspector_1.getNativeStorageItem)(SETTINGS_KEY);if(e){const s=JSON.parse(e);return s&&typeof s=="object"?s:{}}}if(react_native_1.Platform.OS==="ios"){const e=react_native_1.Settings.get(SETTINGS_KEY);if(!e)return{};if(typeof e=="string"){const s=JSON.parse(e);return s&&typeof s=="object"?s:{}}return e&&typeof e=="object"?e:{}}const t=memory.get(SETTINGS_KEY);if(!t)return{};const r=JSON.parse(t);return r&&typeof r=="object"?r:{}}catch{return{}}}function saveSettings(t){try{const r=JSON.stringify(t);if(customStorage){customStorage.setItem(SETTINGS_KEY,r);return}if((0,NativeInspector_1.isNativeModuleAvailable)()&&(0,NativeInspector_1.setNativeStorageItem)(SETTINGS_KEY,r),react_native_1.Platform.OS==="ios"){react_native_1.Settings.set({[SETTINGS_KEY]:r});return}memory.set(SETTINGS_KEY,r)}catch{}}async function clearPersistedSettings(){try{if(customStorage){typeof customStorage.removeItem=="function"?await customStorage.removeItem(SETTINGS_KEY):await customStorage.setItem(SETTINGS_KEY,"");return}if((0,NativeInspector_1.isNativeModuleAvailable)()&&await(0,NativeInspector_1.setNativeStorageItem)(SETTINGS_KEY,null),react_native_1.Platform.OS==="ios"){react_native_1.Settings.set({[SETTINGS_KEY]:null});return}memory.delete(SETTINGS_KEY)}catch{}}const isPersistentStorageAvailable=()=>customStorage!==null||(0,NativeInspector_1.isNativeModuleAvailable)()||react_native_1.Platform.OS==="ios";exports.isPersistentStorageAvailable=isPersistentStorageAvailable;function getCustomStorage(){return customStorage}function calculateRamBasedLimits(t){return t>=3e3?{maxNetworkLogs:500,maxConsoleLogs:500,maxAnalyticsEvents:300,maxCrashRecords:150,maxPushRecords:100,profileName:"High-End",freeRamMb:t}:t>=1500?{maxNetworkLogs:300,maxConsoleLogs:300,maxAnalyticsEvents:200,maxCrashRecords:100,maxPushRecords:75,profileName:"Standard",freeRamMb:t}:t>=600?{maxNetworkLogs:200,maxConsoleLogs:200,maxAnalyticsEvents:100,maxCrashRecords:50,maxPushRecords:50,profileName:"Compact",freeRamMb:t}:{maxNetworkLogs:100,maxConsoleLogs:100,maxAnalyticsEvents:50,maxCrashRecords:25,maxPushRecords:25,profileName:"Ultra-Light",freeRamMb:t}}
1
+ "use strict";Object.defineProperty(exports,"__esModule",{value:!0}),exports.isPersistentStorageAvailable=void 0,exports.setCustomStorage=setCustomStorage,exports.loadSettings=loadSettings,exports.saveSettings=saveSettings,exports.clearPersistedSettings=clearPersistedSettings,exports.getCustomStorage=getCustomStorage,exports.calculateRamBasedLimits=calculateRamBasedLimits;const react_native_1=require("react-native"),NativeInspector_1=require("../native/NativeInspector"),memory=new Map;let customStorage=null;function setCustomStorage(t){customStorage=t}const SETTINGS_KEY="rn-inapp-inspector.settings.v1";async function loadSettings(){try{if(customStorage){const e=await customStorage.getItem(SETTINGS_KEY);if(!e)return{};const s=JSON.parse(e);return s&&typeof s=="object"?s:{}}if((0,NativeInspector_1.isNativeModuleAvailable)()){const e=await(0,NativeInspector_1.getNativeStorageItem)(SETTINGS_KEY);if(e){const s=JSON.parse(e);return s&&typeof s=="object"?s:{}}}if(react_native_1.Platform?.OS==="ios"&&react_native_1.Settings?.get){const e=react_native_1.Settings.get(SETTINGS_KEY);if(!e)return{};if(typeof e=="string"){const s=JSON.parse(e);return s&&typeof s=="object"?s:{}}return e&&typeof e=="object"?e:{}}const t=memory.get(SETTINGS_KEY);if(!t)return{};const r=JSON.parse(t);return r&&typeof r=="object"?r:{}}catch{return{}}}function saveSettings(t){try{const r=JSON.stringify(t);if(customStorage){customStorage.setItem(SETTINGS_KEY,r);return}if((0,NativeInspector_1.isNativeModuleAvailable)()&&(0,NativeInspector_1.setNativeStorageItem)(SETTINGS_KEY,r),react_native_1.Platform?.OS==="ios"&&react_native_1.Settings?.set){react_native_1.Settings.set({[SETTINGS_KEY]:r});return}memory.set(SETTINGS_KEY,r)}catch{}}async function clearPersistedSettings(){try{if(customStorage){typeof customStorage.removeItem=="function"?await customStorage.removeItem(SETTINGS_KEY):await customStorage.setItem(SETTINGS_KEY,"");return}if((0,NativeInspector_1.isNativeModuleAvailable)()&&await(0,NativeInspector_1.setNativeStorageItem)(SETTINGS_KEY,null),react_native_1.Platform?.OS==="ios"&&react_native_1.Settings?.set){react_native_1.Settings.set({[SETTINGS_KEY]:null});return}memory.delete(SETTINGS_KEY)}catch{}}const isPersistentStorageAvailable=()=>customStorage!==null||(0,NativeInspector_1.isNativeModuleAvailable)()||react_native_1.Platform.OS==="ios";exports.isPersistentStorageAvailable=isPersistentStorageAvailable;function getCustomStorage(){return customStorage}function calculateRamBasedLimits(t){return t>=3e3?{maxNetworkLogs:500,maxConsoleLogs:500,maxAnalyticsEvents:300,maxCrashRecords:150,maxPushRecords:100,maxSocketRecords:100,profileName:"High-End",freeRamMb:t}:t>=1500?{maxNetworkLogs:300,maxConsoleLogs:300,maxAnalyticsEvents:200,maxCrashRecords:100,maxPushRecords:75,maxSocketRecords:75,profileName:"Standard",freeRamMb:t}:t>=600?{maxNetworkLogs:200,maxConsoleLogs:200,maxAnalyticsEvents:100,maxCrashRecords:50,maxPushRecords:50,maxSocketRecords:50,profileName:"Compact",freeRamMb:t}:{maxNetworkLogs:100,maxConsoleLogs:100,maxAnalyticsEvents:50,maxCrashRecords:25,maxPushRecords:25,maxSocketRecords:25,profileName:"Ultra-Light",freeRamMb:t}}
@@ -1,4 +1,4 @@
1
- import type { AnalyticsEvent, ConsoleLog, CrashRecord, NetworkLog, PushNotificationRecord, ReduxHistoryEntry } from '../types';
1
+ import type { AnalyticsEvent, ConsoleLog, CrashRecord, NetworkLog, PushNotificationRecord, ReduxHistoryEntry, SocketConnectionRecord } from '../types';
2
2
  export declare function formatApiReport(log: NetworkLog): string;
3
3
  export declare function formatPushReport(record: PushNotificationRecord): string;
4
4
  export declare function formatCrashReport(crash: CrashRecord): string;
@@ -11,3 +11,5 @@ export declare function shareCrashReport(crash: CrashRecord): Promise<void>;
11
11
  export declare function shareAnalyticsReport(event: AnalyticsEvent): Promise<void>;
12
12
  export declare function shareReduxReport(action: ReduxHistoryEntry): Promise<void>;
13
13
  export declare function shareLogReport(log: ConsoleLog): Promise<void>;
14
+ export declare function formatSocketReport(record: SocketConnectionRecord): string;
15
+ export declare function shareSocketReport(record: SocketConnectionRecord): Promise<void>;
@@ -1,7 +1,8 @@
1
- "use strict";Object.defineProperty(exports,"__esModule",{value:!0}),exports.formatApiReport=formatApiReport,exports.formatPushReport=formatPushReport,exports.formatCrashReport=formatCrashReport,exports.formatAnalyticsReport=formatAnalyticsReport,exports.formatReduxReport=formatReduxReport,exports.formatLogReport=formatLogReport,exports.shareApiReport=shareApiReport,exports.sharePushReport=sharePushReport,exports.shareCrashReport=shareCrashReport,exports.shareAnalyticsReport=shareAnalyticsReport,exports.shareReduxReport=shareReduxReport,exports.shareLogReport=shareLogReport;const react_native_1=require("react-native"),index_1=require("./index");function safeStringify(e){if(e===void 0)return"undefined";if(e===null)return"null";if(typeof e=="string")return e;try{return JSON.stringify(e,null,2)}catch{return String(e)}}function formatApiReport(e){const s=(e.method||"GET").toUpperCase(),t=e.status===0?"Failed / Network Error":e.status!=null?`${e.status} ${e.status===200?"OK":""}`.trim():"Pending",p=e.duration!=null?`${e.duration}ms`:"N/A",n=(0,index_1.formatDateTime)(e.startTime||Date.now()),a=(0,index_1.getCurlCommand)(e),r=["\u{1F680} API INSPECTION REPORT","\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501",`\u{1F4CC} Method: ${s}`,`\u{1F4CA} Status: ${t}`,`\u23F1\uFE0F Duration: ${p}`,`\u{1F552} Time: ${n}`];return e.client&&r.push(`\u{1F50C} Client: ${e.client.toUpperCase()}`),r.push(`\u{1F310} URL: ${e.url||"N/A"}`),r.push(""),e.requestHeaders&&Object.keys(e.requestHeaders).length>0&&(r.push("\u{1F4CB} Request Headers:"),r.push(safeStringify(e.requestHeaders)),r.push("")),e.request!=null&&e.request!==""&&(r.push("\u{1F4DD} Request Body:"),r.push(safeStringify(e.request)),r.push("")),e.responseHeaders&&Object.keys(e.responseHeaders).length>0&&(r.push("\u{1F4D1} Response Headers:"),r.push(safeStringify(e.responseHeaders)),r.push("")),e.response!=null&&e.response!==""&&(r.push("\u{1F4E5} Response Data:"),r.push(safeStringify(e.response)),r.push("")),a&&(r.push("\u{1F4BB} cURL Command:"),r.push(a),r.push("")),r.push("\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501"),r.push("Generated by React Native InApp Inspector"),r.join(`
2
- `)}function formatPushReport(e){const s=(0,index_1.formatDateTime)(e.timestamp||Date.now()),t=(e.source||"push").toUpperCase(),p=(e.appState||"unknown").toUpperCase(),n=(e.action||"received").toUpperCase(),a=["\u{1F514} PUSH NOTIFICATION REPORT","\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501",`\u{1F4CC} Title: ${e.title||"(No Title)"}`,`\u{1F4DD} Body: ${e.body||"(No Body)"}`,`\u{1F3E2} Source: ${t}${e.domain?` (${e.domain})`:""}`,`\u{1F194} Message ID: ${e.id||"N/A"}`,`\u{1F4F1} App State: ${p}`,`\u{1F3AF} Action: ${n}`,`\u{1F552} Time: ${s}`];return e.subtitle&&a.push(`\u{1F4D1} Subtitle: ${e.subtitle}`),e.channelId&&a.push(`\u{1F3F7}\uFE0F Channel: ${e.channelId}`),e.priority&&a.push(`\u26A1 Priority: ${e.priority}`),e.badge!=null&&a.push(`\u{1F522} Badge: ${e.badge}`),e.sound&&a.push(`\u{1F50A} Sound: ${e.sound}`),e.imageUrl&&a.push(`\u{1F5BC}\uFE0F Image: ${e.imageUrl}`),a.push(""),e.data&&Object.keys(e.data).length>0&&(a.push("\u{1F4E6} Custom Data Payload:"),a.push(safeStringify(e.data)),a.push("")),e.customDomainAttributes&&Object.keys(e.customDomainAttributes).length>0&&(a.push("\u{1F3E2} Domain Attributes:"),a.push(safeStringify(e.customDomainAttributes)),a.push("")),e.rawPayload!=null&&(a.push("\u2699\uFE0F Raw Payload:"),a.push(safeStringify(e.rawPayload)),a.push("")),a.push("\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501"),a.push("Generated by React Native InApp Inspector"),a.join(`
3
- `)}function formatCrashReport(e){const s=`${e.dateStr||""} ${e.timeStr||""}`.trim()||(0,index_1.formatDateTime)(e.timestamp),t=["\u{1F4A5} CRASH REPORT","\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501",`\u26A0\uFE0F Error: ${e.name||"Error"}: ${e.message||"Unknown error"}`,`\u{1F6A8} Fatal: ${e.isFatal?"YES (Fatal)":"NO (Caught)"}`,`\u{1F3F7}\uFE0F Type: ${(e.type||"js").toUpperCase()}`,`\u{1F552} Time: ${s}`];return e.deviceInfo&&t.push(`\u{1F4F1} Platform: ${e.deviceInfo.platform||"N/A"} (OS: ${e.deviceInfo.osVersion||"N/A"}, RN: ${e.deviceInfo.rnVersion||"N/A"})`),e.memoryInfo?.usedJSHeapSize&&t.push(`\u{1F4BE} Used Heap: ${Math.round(e.memoryInfo.usedJSHeapSize/(1024*1024))} MB`),t.push(""),e.stack&&(t.push("\u{1F4DC} Stack Trace:"),t.push(e.stack),t.push("")),e.breadcrumbs&&e.breadcrumbs.length>0&&(t.push(`\u{1F43E} Breadcrumbs (${e.breadcrumbs.length}):`),e.breadcrumbs.slice(-10).forEach(p=>{t.push(` \u2022 [${p.type}] ${p.message} (${(0,index_1.formatDateTime)(p.timestamp)})`)}),t.push("")),t.push("\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501"),t.push("Generated by React Native InApp Inspector"),t.join(`
4
- `)}function formatAnalyticsReport(e){const s=(0,index_1.formatDateTime)(e.timestamp),t=["\u{1F4CA} ANALYTICS EVENT REPORT","\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501",`\u{1F4CC} Event Name: ${e.name||"Unknown"}`,`\u{1F3E2} Source: ${(e.source||"manual").toUpperCase()}`,`\u{1F552} Timestamp: ${s}`];return e.screenName&&t.push(`\u{1F4F1} Screen Name: ${e.screenName}`),e.userId&&t.push(`\u{1F464} User ID: ${e.userId}`),e.trackingId&&t.push(`\u{1F194} Tracking ID: ${e.trackingId}`),t.push(""),e.params&&Object.keys(e.params).length>0&&(t.push("\u{1F4E6} Event Parameters:"),t.push(safeStringify(e.params)),t.push("")),e.userProperties&&Object.keys(e.userProperties).length>0&&(t.push("\u{1F464} User Properties:"),t.push(safeStringify(e.userProperties)),t.push("")),t.push("\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501"),t.push("Generated by React Native InApp Inspector"),t.join(`
5
- `)}function formatReduxReport(e){const s=typeof e.timestamp=="number"?(0,index_1.formatDateTime)(e.timestamp):e.timestamp,t=["\u{1F504} REDUX ACTION REPORT","\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501",`\u{1F4CC} Action Type: ${e.type||"UNKNOWN"}`,`\u{1F552} Timestamp: ${s}`];return e.caller&&t.push(`\u{1F4CD} Caller: ${e.caller}`),e.originType&&t.push(`\u2699\uFE0F Origin: ${e.originType}`),e.affectedSlices&&e.affectedSlices.length>0&&t.push(`\u{1F370} Slices: ${e.affectedSlices.join(", ")}`),t.push(""),t.push("\u{1F4E6} Action Payload:"),t.push(safeStringify(e.payload)),t.push(""),e.prevState!==void 0&&(t.push("\u23EE\uFE0F Previous State:"),t.push(safeStringify(e.prevState)),t.push("")),e.nextState!==void 0&&(t.push("\u23ED\uFE0F Next State:"),t.push(safeStringify(e.nextState)),t.push("")),t.push("\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501"),t.push("Generated by React Native InApp Inspector"),t.join(`
6
- `)}function formatLogReport(e){const s=(0,index_1.formatDateTime)(e.timestamp),t=["\u{1F4DC} CONSOLE LOG REPORT","\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501",`\u{1F4CC} Level: ${(e.type||"info").toUpperCase()}`,`\u{1F552} Timestamp: ${s}`,`\u{1F4AC} Message: ${e.message||""}`];return e.caller&&t.push(`\u{1F4CD} Caller: ${e.caller}`),t.push(""),e.rawArgs&&e.rawArgs.length>0&&(t.push("\u{1F4E6} Arguments:"),t.push(safeStringify(e.rawArgs)),t.push("")),(e.stack||e.errorStack)&&(t.push("\u{1F4DC} Stack Trace:"),t.push(e.stack||e.errorStack||""),t.push("")),t.push("\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501"),t.push("Generated by React Native InApp Inspector"),t.join(`
7
- `)}async function triggerNativeShare(e,s){try{await react_native_1.Share.share({title:e,message:s},{dialogTitle:e})}catch(t){t?.message!=="User did not share"&&react_native_1.Alert.alert("Share Error",t?.message||"Failed to open share sheet")}}async function shareApiReport(e){const s=formatApiReport(e),t=`API: ${e.method||"GET"} ${e.url?.substring(0,40)||""}`;await triggerNativeShare(t,s)}async function sharePushReport(e){const s=formatPushReport(e),t=`Push: ${e.title||e.id||"Notification"}`;await triggerNativeShare(t,s)}async function shareCrashReport(e){const s=formatCrashReport(e),t=`Crash: ${e.name||e.message||"Error"}`;await triggerNativeShare(t,s)}async function shareAnalyticsReport(e){const s=formatAnalyticsReport(e),t=`Analytics: ${e.name||"Event"}`;await triggerNativeShare(t,s)}async function shareReduxReport(e){const s=formatReduxReport(e),t=`Redux: ${e.type||"Action"}`;await triggerNativeShare(t,s)}async function shareLogReport(e){const s=formatLogReport(e),t=`Log: ${(e.type||"info").toUpperCase()} - ${e.message?.substring(0,30)||""}`;await triggerNativeShare(t,s)}
1
+ "use strict";Object.defineProperty(exports,"__esModule",{value:!0}),exports.formatApiReport=formatApiReport,exports.formatPushReport=formatPushReport,exports.formatCrashReport=formatCrashReport,exports.formatAnalyticsReport=formatAnalyticsReport,exports.formatReduxReport=formatReduxReport,exports.formatLogReport=formatLogReport,exports.shareApiReport=shareApiReport,exports.sharePushReport=sharePushReport,exports.shareCrashReport=shareCrashReport,exports.shareAnalyticsReport=shareAnalyticsReport,exports.shareReduxReport=shareReduxReport,exports.shareLogReport=shareLogReport,exports.formatSocketReport=formatSocketReport,exports.shareSocketReport=shareSocketReport;const react_native_1=require("react-native"),index_1=require("./index");function safeStringify(e){if(e===void 0)return"undefined";if(e===null)return"null";if(typeof e=="string")return e;try{return JSON.stringify(e,null,2)}catch{return String(e)}}function formatApiReport(e){const a=(e.method||"GET").toUpperCase(),t=e.status===0?"Failed / Network Error":e.status!=null?`${e.status} ${e.status===200?"OK":""}`.trim():"Pending",p=e.duration!=null?`${e.duration}ms`:"N/A",i=(0,index_1.formatDateTime)(e.startTime||Date.now()),s=(0,index_1.getCurlCommand)(e),n=["\u{1F680} API INSPECTION REPORT","\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501",`\u{1F4CC} Method: ${a}`,`\u{1F4CA} Status: ${t}`,`\u23F1\uFE0F Duration: ${p}`,`\u{1F552} Time: ${i}`];return e.client&&n.push(`\u{1F50C} Client: ${e.client.toUpperCase()}`),n.push(`\u{1F310} URL: ${e.url||"N/A"}`),n.push(""),e.requestHeaders&&Object.keys(e.requestHeaders).length>0&&(n.push("\u{1F4CB} Request Headers:"),n.push(safeStringify(e.requestHeaders)),n.push("")),e.request!=null&&e.request!==""&&(n.push("\u{1F4DD} Request Body:"),n.push(safeStringify(e.request)),n.push("")),e.responseHeaders&&Object.keys(e.responseHeaders).length>0&&(n.push("\u{1F4D1} Response Headers:"),n.push(safeStringify(e.responseHeaders)),n.push("")),e.response!=null&&e.response!==""&&(n.push("\u{1F4E5} Response Data:"),n.push(safeStringify(e.response)),n.push("")),s&&(n.push("\u{1F4BB} cURL Command:"),n.push(s),n.push("")),n.push("\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501"),n.push("Generated by React Native InApp Inspector"),n.join(`
2
+ `)}function formatPushReport(e){const a=(0,index_1.formatDateTime)(e.timestamp||Date.now()),t=(e.source||"push").toUpperCase(),p=(e.appState||"unknown").toUpperCase(),i=(e.action||"received").toUpperCase(),s=["\u{1F514} PUSH NOTIFICATION REPORT","\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501",`\u{1F4CC} Title: ${e.title||"(No Title)"}`,`\u{1F4DD} Body: ${e.body||"(No Body)"}`,`\u{1F3E2} Source: ${t}${e.domain?` (${e.domain})`:""}`,`\u{1F194} Message ID: ${e.id||"N/A"}`,`\u{1F4F1} App State: ${p}`,`\u{1F3AF} Action: ${i}`,`\u{1F552} Time: ${a}`];return e.subtitle&&s.push(`\u{1F4D1} Subtitle: ${e.subtitle}`),e.channelId&&s.push(`\u{1F3F7}\uFE0F Channel: ${e.channelId}`),e.priority&&s.push(`\u26A1 Priority: ${e.priority}`),e.badge!=null&&s.push(`\u{1F522} Badge: ${e.badge}`),e.sound&&s.push(`\u{1F50A} Sound: ${e.sound}`),e.imageUrl&&s.push(`\u{1F5BC}\uFE0F Image: ${e.imageUrl}`),s.push(""),e.data&&Object.keys(e.data).length>0&&(s.push("\u{1F4E6} Custom Data Payload:"),s.push(safeStringify(e.data)),s.push("")),e.customDomainAttributes&&Object.keys(e.customDomainAttributes).length>0&&(s.push("\u{1F3E2} Domain Attributes:"),s.push(safeStringify(e.customDomainAttributes)),s.push("")),e.rawPayload!=null&&(s.push("\u2699\uFE0F Raw Payload:"),s.push(safeStringify(e.rawPayload)),s.push("")),s.push("\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501"),s.push("Generated by React Native InApp Inspector"),s.join(`
3
+ `)}function formatCrashReport(e){const a=`${e.dateStr||""} ${e.timeStr||""}`.trim()||(0,index_1.formatDateTime)(e.timestamp),t=["\u{1F4A5} CRASH REPORT","\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501",`\u26A0\uFE0F Error: ${e.name||"Error"}: ${e.message||"Unknown error"}`,`\u{1F6A8} Fatal: ${e.isFatal?"YES (Fatal)":"NO (Caught)"}`,`\u{1F3F7}\uFE0F Type: ${(e.type||"js").toUpperCase()}`,`\u{1F552} Time: ${a}`];return e.deviceInfo&&t.push(`\u{1F4F1} Platform: ${e.deviceInfo.platform||"N/A"} (OS: ${e.deviceInfo.osVersion||"N/A"}, RN: ${e.deviceInfo.rnVersion||"N/A"})`),e.memoryInfo?.usedJSHeapSize&&t.push(`\u{1F4BE} Used Heap: ${Math.round(e.memoryInfo.usedJSHeapSize/(1024*1024))} MB`),t.push(""),e.stack&&(t.push("\u{1F4DC} Stack Trace:"),t.push(e.stack),t.push("")),e.breadcrumbs&&e.breadcrumbs.length>0&&(t.push(`\u{1F43E} Breadcrumbs (${e.breadcrumbs.length}):`),e.breadcrumbs.slice(-10).forEach(p=>{t.push(` \u2022 [${p.type}] ${p.message} (${(0,index_1.formatDateTime)(p.timestamp)})`)}),t.push("")),t.push("\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501"),t.push("Generated by React Native InApp Inspector"),t.join(`
4
+ `)}function formatAnalyticsReport(e){const a=(0,index_1.formatDateTime)(e.timestamp),t=["\u{1F4CA} ANALYTICS EVENT REPORT","\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501",`\u{1F4CC} Event Name: ${e.name||"Unknown"}`,`\u{1F3E2} Source: ${(e.source||"manual").toUpperCase()}`,`\u{1F552} Timestamp: ${a}`];return e.screenName&&t.push(`\u{1F4F1} Screen Name: ${e.screenName}`),e.userId&&t.push(`\u{1F464} User ID: ${e.userId}`),e.trackingId&&t.push(`\u{1F194} Tracking ID: ${e.trackingId}`),t.push(""),e.params&&Object.keys(e.params).length>0&&(t.push("\u{1F4E6} Event Parameters:"),t.push(safeStringify(e.params)),t.push("")),e.userProperties&&Object.keys(e.userProperties).length>0&&(t.push("\u{1F464} User Properties:"),t.push(safeStringify(e.userProperties)),t.push("")),t.push("\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501"),t.push("Generated by React Native InApp Inspector"),t.join(`
5
+ `)}function formatReduxReport(e){const a=typeof e.timestamp=="number"?(0,index_1.formatDateTime)(e.timestamp):e.timestamp,t=["\u{1F504} REDUX ACTION REPORT","\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501",`\u{1F4CC} Action Type: ${e.type||"UNKNOWN"}`,`\u{1F552} Timestamp: ${a}`];return e.caller&&t.push(`\u{1F4CD} Caller: ${e.caller}`),e.originType&&t.push(`\u2699\uFE0F Origin: ${e.originType}`),e.affectedSlices&&e.affectedSlices.length>0&&t.push(`\u{1F370} Slices: ${e.affectedSlices.join(", ")}`),t.push(""),t.push("\u{1F4E6} Action Payload:"),t.push(safeStringify(e.payload)),t.push(""),e.prevState!==void 0&&(t.push("\u23EE\uFE0F Previous State:"),t.push(safeStringify(e.prevState)),t.push("")),e.nextState!==void 0&&(t.push("\u23ED\uFE0F Next State:"),t.push(safeStringify(e.nextState)),t.push("")),t.push("\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501"),t.push("Generated by React Native InApp Inspector"),t.join(`
6
+ `)}function formatLogReport(e){const a=(0,index_1.formatDateTime)(e.timestamp),t=["\u{1F4DC} CONSOLE LOG REPORT","\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501",`\u{1F4CC} Level: ${(e.type||"info").toUpperCase()}`,`\u{1F552} Timestamp: ${a}`,`\u{1F4AC} Message: ${e.message||""}`];return e.caller&&t.push(`\u{1F4CD} Caller: ${e.caller}`),t.push(""),e.rawArgs&&e.rawArgs.length>0&&(t.push("\u{1F4E6} Arguments:"),t.push(safeStringify(e.rawArgs)),t.push("")),(e.stack||e.errorStack)&&(t.push("\u{1F4DC} Stack Trace:"),t.push(e.stack||e.errorStack||""),t.push("")),t.push("\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501"),t.push("Generated by React Native InApp Inspector"),t.join(`
7
+ `)}async function triggerNativeShare(e,a){try{await react_native_1.Share.share({title:e,message:a},{dialogTitle:e})}catch(t){t?.message!=="User did not share"&&react_native_1.Alert.alert("Share Error",t?.message||"Failed to open share sheet")}}async function shareApiReport(e){const a=formatApiReport(e),t=`API: ${e.method||"GET"} ${e.url?.substring(0,40)||""}`;await triggerNativeShare(t,a)}async function sharePushReport(e){const a=formatPushReport(e),t=`Push: ${e.title||e.id||"Notification"}`;await triggerNativeShare(t,a)}async function shareCrashReport(e){const a=formatCrashReport(e),t=`Crash: ${e.name||e.message||"Error"}`;await triggerNativeShare(t,a)}async function shareAnalyticsReport(e){const a=formatAnalyticsReport(e),t=`Analytics: ${e.name||"Event"}`;await triggerNativeShare(t,a)}async function shareReduxReport(e){const a=formatReduxReport(e),t=`Redux: ${e.type||"Action"}`;await triggerNativeShare(t,a)}async function shareLogReport(e){const a=formatLogReport(e),t=`Log: ${(e.type||"info").toUpperCase()} - ${e.message?.substring(0,30)||""}`;await triggerNativeShare(t,a)}function formatSocketReport(e){const a=(e.client||"websocket").toUpperCase(),t=(e.status||"open").toUpperCase(),p=e.duration!=null?`${e.duration}ms`:"Active / Open",i=(0,index_1.formatDateTime)(e.startTime||Date.now()),s=["\u{1F50C} WEBSOCKET / SOCKET.IO REPORT","\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501",`\u{1F4E1} Client: ${a}`,`\u{1F310} URL: ${e.url||"N/A"}`,`\u26A1 Status: ${t}`,`\u23F1\uFE0F Connected: ${i}`,`\u23F3 Duration: ${p}`,`\u{1F4E6} Total Frames: ${e.frames?.length||0} (${e.sentCount||0} sent, ${e.receivedCount||0} recvd)`,`\u{1F4CA} Data Size: ${(e.totalBytesSent||0)+(e.totalBytesReceived||0)} bytes`];return e.protocols&&s.push(`\u{1F4DC} Protocols: ${Array.isArray(e.protocols)?e.protocols.join(", "):e.protocols}`),e.closeCode!=null&&s.push(`\u{1F6D1} Close Code: ${e.closeCode} (${e.closeReason||"N/A"})`),e.error&&s.push(`\u274C Error: ${e.error}`),e.caller&&s.push(`\u{1F4CD} Caller: ${e.caller}`),e.query&&Object.keys(e.query).length>0&&(s.push(""),s.push("\u{1F50D} Query Parameters:"),s.push(safeStringify(e.query))),e.frames&&e.frames.length>0&&(s.push(""),s.push("\u{1F4AC} Recent Message Frames:"),e.frames.slice(-10).forEach((n,u)=>{const r=n.direction==="send"?"\u2B06\uFE0F SEND":"\u2B07\uFE0F RECV",o=n.eventName?` [${n.eventName}]`:"";s.push(`--- Frame #${u+1} (${r}${o}, ${n.type}, ${n.size||0}B) ---`),s.push(safeStringify(n.data))})),s.push(""),s.push("\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501"),s.push("Generated by React Native InApp Inspector"),s.join(`
8
+ `)}async function shareSocketReport(e){const a=formatSocketReport(e),t=`Socket: ${e.client?.toUpperCase()||"WS"} ${e.url?.substring(0,35)||""}`;await triggerNativeShare(t,a)}
@@ -1 +1 @@
1
- "use strict";var __importDefault=this&&this.__importDefault||function(t){return t&&t.__esModule?t:{default:t}};Object.defineProperty(exports,"__esModule",{value:!0}),exports.setTelemetryEnabled=setTelemetryEnabled,exports.markSearchFilterUsed=markSearchFilterUsed,exports.trackActiveTelemetryHeartbeat=trackActiveTelemetryHeartbeat,exports.trackTelemetryEvent=trackTelemetryEvent,exports.trackInspectorTabView=trackInspectorTabView,exports.trackInspectorScreenView=trackInspectorScreenView,exports.trackInspectorScreenRecord=trackInspectorScreenRecord;const react_1=__importDefault(require("react")),react_native_1=require("react-native"),version_1=require("../constants/version"),settingsStore_1=require("./settingsStore"),reduxLogger_1=require("../customHooks/reduxLogger"),analyticsLogger_1=require("../customHooks/analyticsLogger"),crashHandler_1=require("../customHooks/crashHandler"),networkLogger_1=require("../customHooks/networkLogger"),NativeInspector_1=require("../native/NativeInspector"),index_1=require("./index"),telemetryConfig_1=require("../constants/telemetryConfig"),PKG_NAME="react-native-inapp-inspector",KEY_MATERIAL=`${PKG_NAME}::${telemetryConfig_1.TELEMETRY_SALT}`;function getKeystream(t,o){const i=[];let r=1518500249;for(let a=0;a<o;a++){const e=t.charCodeAt(a%t.length);r=(r*31+e*17+a*13^r>>>7)&4294967295,i.push(r>>>a%24&255)}return i}function deobfuscate(t){if(!t)return"";const o=[];for(let a=0;a<t.length;a+=2)o.push(parseInt(t.substring(a,a+2),16));const i=getKeystream(KEY_MATERIAL,o.length),r=[];for(let a=0;a<o.length;a++){const e=i[a],l=telemetryConfig_1.TELEMETRY_SALT.charCodeAt(a%telemetryConfig_1.TELEMETRY_SALT.length),c=(o[a]^e^l)&255;r.push(String.fromCharCode(c))}return r.join("")}let _cachedMid=null,_cachedSec=null;function getCredentials(){if(_cachedMid!==null&&_cachedSec!==null)return{measurementId:_cachedMid,apiSecret:_cachedSec};if(!telemetryConfig_1.ENC_MID||!telemetryConfig_1.ENC_SEC||!telemetryConfig_1.TELEMETRY_SALT)return _cachedMid="",_cachedSec="",{measurementId:"",apiSecret:""};try{_cachedMid=deobfuscate(telemetryConfig_1.ENC_MID),_cachedSec=deobfuscate(telemetryConfig_1.ENC_SEC)}catch{_cachedMid="",_cachedSec=""}return{measurementId:_cachedMid,apiSecret:_cachedSec}}function getCollectUrl(){const{measurementId:t,apiSecret:o}=getCredentials();return!t||!o?"":`https://www.google-analytics.com/mp/collect?measurement_id=${t}&api_secret=${o}`}const PING_INTERVAL_MS=1440*60*1e3;let isTelemetryEnabled=!0,_hasSearchFilterBeenUsed=!1;function setTelemetryEnabled(t){isTelemetryEnabled=t}function markSearchFilterUsed(){_hasSearchFilterBeenUsed=!0}async function getOrCreateClientId(){try{const t=await(0,settingsStore_1.loadSettings)();if(t.telemetryClientId||t.telemetryDeviceId){const e=t.telemetryClientId||t.telemetryDeviceId||"";return t.telemetryDeviceId||await(0,settingsStore_1.saveSettings)({...t,telemetryDeviceId:e}),e}const o=Math.floor(1e8+Math.random()*9e8),i=Math.floor(1e9+Math.random()*9e9),r=`${o}.${i}`,a=Date.now();return await(0,settingsStore_1.saveSettings)({...t,telemetryClientId:r,telemetryDeviceId:r,deviceFirstSeen:t.deviceFirstSeen||a}),r}catch{return`${Math.floor(1e8+Math.random()*9e8)}.${Math.floor(1e9+Math.random()*9e9)}`}}function isDeviceEmulator(){try{if(react_native_1.Platform.OS==="android"){const t=react_native_1.Platform.constants||{},o=String(t.Model||"").toLowerCase(),i=String(t.Brand||"").toLowerCase(),r=String(t.Fingerprint||"").toLowerCase(),a=String(t.Hardware||"").toLowerCase(),e=String(t.Manufacturer||"").toLowerCase();return o.includes("emulator")||o.includes("sdk")||o.includes("google_sdk")||o.includes("vbox")||i.includes("generic")||r.startsWith("generic")||a.includes("goldfish")||a.includes("ranchu")||e.includes("genymotion")}if(react_native_1.Platform.OS==="ios"){const t=react_native_1.Platform.constants||{};return String(t.Model||"").toLowerCase().includes("simulator")||!!t.isSimulator}}catch{return!1}return!1}function getDeviceLocaleInfo(){try{const t=typeof Intl<"u"&&Intl.DateTimeFormat?Intl.DateTimeFormat().resolvedOptions():{},o=t.timeZone||"unknown",i=t.locale||"unknown";let r="unknown";if(i&&i!=="unknown"){const a=i.split(/[-_]/);a.length>1&&(r=a[a.length-1].toUpperCase())}return{countryCode:r,locale:i,timeZone:o}}catch{return{countryCode:"unknown",locale:"unknown",timeZone:"unknown"}}}function getSystemMetadata(t,o){const i=react_native_1.Platform.constants,r=i?.reactNativeVersion?`${i.reactNativeVersion.major}.${i.reactNativeVersion.minor}.${i.reactNativeVersion.patch}`:"unknown",a=typeof global.HermesInternal=="object"&&global.HermesInternal!==null,e=global?.nativeFabricUIManager!==void 0,l=!!(global?._rn_bridgeless||global?.RN$Bridgeless),c=!!(typeof __DEV__<"u"&&__DEV__),n=isDeviceEmulator(),{countryCode:_,locale:d,timeZone:L}=getDeviceLocaleInfo();let m="unknown",p=1,f=1,g="phone",h="portrait";try{const s=react_native_1.Dimensions.get("window");m=`${Math.round(s.width)}x${Math.round(s.height)}`,p=react_native_1.PixelRatio.get(),f=react_native_1.PixelRatio.getFontScale(),h=s.width>s.height?"landscape":"portrait",g=react_native_1.Platform.OS==="ios"&&!!react_native_1.Platform.isPad||Math.min(s.width,s.height)>=600?"tablet":"phone"}catch{}let b="unknown";try{b=react_native_1.Appearance?.getColorScheme?.()||"unknown"}catch{}const P=!!(globalThis?.expo||globalThis?.__expo||globalThis?.__turboModuleProxy?.name==="Expo"||react_native_1.Platform.constants?.ExpoVersion);let u="non_hermes",v="jsc";if(a){v="hermes";try{const s=global.HermesInternal?.getRuntimeProperties?.()||{};u=s["OSS Release Version"]||(s["Bytecode Version"]?`bc_v${s["Bytecode Version"]}`:"hermes")}catch{u="hermes"}}else globalThis?._v8&&(v="v8");let y=!1;try{y=(0,reduxLogger_1.isReduxConnected)()}catch{}let S=!1;try{S=(0,analyticsLogger_1.isFirebaseAnalyticsPatched)()}catch{}const k=(0,NativeInspector_1.isNativeModuleAvailable)(),N=!!(react_native_1.NativeModules?.RNMMKV||globalThis?.MMKV);let w=0;try{w=(0,crashHandler_1.getCrashRecords)().length}catch{}let I="0";try{const s=(0,networkLogger_1.getNetworkLogs)().length;I=s===0?"0":s<=10?"1-10":s<=50?"11-50":s<=100?"51-100":"100+"}catch{}let M=!1;try{M=(0,index_1.isLocalDebugEnvironment)()}catch{}const A=o?.defaultTab||"apis",D=k&&o?.useNativeFab!==!1?"native_ui_thread":"js_floating_button",V=String(i?.Brand||(react_native_1.Platform.OS==="ios"?"Apple":"unknown")),B=String(i?.Model||i?.systemName||(react_native_1.Platform.OS==="ios"?"iPhone/iPad":"unknown")),R=String(i?.Manufacturer||(react_native_1.Platform.OS==="ios"?"Apple":"unknown"));let C="App",E="unknown",T="unknown",x="unknown";try{C=(0,index_1.getAppName)()||"App",E=(0,index_1.getBundleIdentifier)()||"unknown";const s=(0,index_1.getAppVersionAndBuild)();T=s.version||"unknown",x=s.build||"unknown"}catch{}const O=typeof react_1.default<"u"&&react_1.default.version?react_1.default.version:"unknown";return{pkg_name:PKG_NAME,pkg_version:version_1.LIB_VERSION,lib_version:version_1.LIB_VERSION,install_type:c?"local_dev":"bundled_production",app_name:C,bundle_id:E,app_version:T,app_build:x,react_version:O,platform:react_native_1.Platform.OS,os_version:String(react_native_1.Platform.Version||"unknown"),rn_version:r,country_code:_,device_locale:d,time_zone:L,device_brand:V,device_model:B,device_manufacturer:R,device_form_factor:g,screen_resolution:m,screen_density:p,screen_orientation:h,font_scale:f,appearance_mode:b,is_expo:P,js_engine:v,hermes_version:u,is_hermes:a,is_fabric:e,is_bridgeless:l,has_native_module:k,has_mmkv:N,fab_mode:D,default_landing_tab:A,captured_crashes_count:w,captured_apis_bracket:I,search_filter_used:_hasSearchFilterBeenUsed,is_metro_connected:M,is_dev:c,is_emulator:n,device_type:n?"emulator":"real_device",app_mode:c?"local_mode":"bundled_application",redux_attached:y,analytics_attached:S,environment:t||(c?"DEV":"PROD"),engagement_time_msec:1e3}}async function trackActiveTelemetryHeartbeat(t=!0,o){if(t===!1){isTelemetryEnabled=!1;return}isTelemetryEnabled=!0;const i=getCollectUrl();if(i)try{const r=await(0,settingsStore_1.loadSettings)(),a=r.telemetryLastPing||0,e=Date.now(),l=!r.deviceRegistered;if(!l&&e-a<PING_INTERVAL_MS)return;const c=await getOrCreateClientId(),n=getSystemMetadata(o,r),_={...n,device_id:c,is_new_device:l,device_first_seen:r.deviceFirstSeen||e},d=l?[{name:"active_device",params:_},{name:"first_device_install",params:_},{name:"inspector_active_heartbeat",params:_}]:[{name:"active_device",params:_},{name:"inspector_active_heartbeat",params:_}];await fetch(i,{method:"POST",headers:{"Content-Type":"application/json"},body:JSON.stringify({client_id:c,user_id:c,non_personalized_ads:!0,user_properties:{device_id:{value:c},pkg_name:{value:n.pkg_name},pkg_version:{value:n.pkg_version},install_type:{value:n.install_type},app_name:{value:n.app_name},bundle_id:{value:n.bundle_id},app_version:{value:n.app_version},react_version:{value:n.react_version},country:{value:n.country_code},country_code:{value:n.country_code},locale:{value:n.device_locale},time_zone:{value:n.time_zone},device_brand:{value:n.device_brand},device_model:{value:n.device_model},device_form_factor:{value:n.device_form_factor},screen_resolution:{value:n.screen_resolution},appearance_mode:{value:n.appearance_mode},is_expo:{value:String(n.is_expo)},js_engine:{value:n.js_engine},is_fabric:{value:String(n.is_fabric)},is_bridgeless:{value:String(n.is_bridgeless)},has_native_module:{value:String(n.has_native_module)},has_mmkv:{value:String(n.has_mmkv)},fab_mode:{value:n.fab_mode},default_landing_tab:{value:n.default_landing_tab},captured_crashes_count:{value:String(n.captured_crashes_count)},captured_apis_bracket:{value:n.captured_apis_bracket},search_filter_used:{value:String(n.search_filter_used)},is_metro_connected:{value:String(n.is_metro_connected)},redux_attached:{value:String(n.redux_attached)},analytics_attached:{value:String(n.analytics_attached)},platform:{value:n.platform},rn_version:{value:n.rn_version},lib_version:{value:n.lib_version}},events:d})}),await(0,settingsStore_1.saveSettings)({...r,telemetryClientId:c,telemetryDeviceId:c,deviceRegistered:!0,deviceFirstSeen:r.deviceFirstSeen||e,telemetryLastPing:e,telemetryLastActive:e})}catch{}}async function trackTelemetryEvent(t,o){if(!isTelemetryEnabled)return;const i=getCollectUrl();if(i)try{const r=await getOrCreateClientId(),a=await(0,settingsStore_1.loadSettings)().catch(()=>({})),e=getSystemMetadata(void 0,a),l={...e,device_id:r,...o,engagement_time_msec:100};await fetch(i,{method:"POST",headers:{"Content-Type":"application/json"},body:JSON.stringify({client_id:r,user_id:r,non_personalized_ads:!0,user_properties:{device_id:{value:r},pkg_name:{value:e.pkg_name},pkg_version:{value:e.pkg_version},install_type:{value:e.install_type},app_name:{value:e.app_name},bundle_id:{value:e.bundle_id},app_version:{value:e.app_version},react_version:{value:e.react_version},country:{value:e.country_code},country_code:{value:e.country_code},locale:{value:e.device_locale},time_zone:{value:e.time_zone},device_brand:{value:e.device_brand},device_model:{value:e.device_model},device_form_factor:{value:e.device_form_factor},screen_resolution:{value:e.screen_resolution},appearance_mode:{value:e.appearance_mode},is_expo:{value:String(e.is_expo)},js_engine:{value:e.js_engine},is_fabric:{value:String(e.is_fabric)},is_bridgeless:{value:String(e.is_bridgeless)},has_native_module:{value:String(e.has_native_module)},has_mmkv:{value:String(e.has_mmkv)},fab_mode:{value:e.fab_mode},default_landing_tab:{value:e.default_landing_tab},captured_crashes_count:{value:String(e.captured_crashes_count)},captured_apis_bracket:{value:e.captured_apis_bracket},search_filter_used:{value:String(e.search_filter_used)},is_metro_connected:{value:String(e.is_metro_connected)},redux_attached:{value:String(e.redux_attached)},analytics_attached:{value:String(e.analytics_attached)},platform:{value:e.platform},rn_version:{value:e.rn_version},lib_version:{value:e.lib_version}},events:[{name:t,params:l}]})})}catch{}}function trackInspectorTabView(t){trackTelemetryEvent("inspector_tab_view",{tab_name:t,screen_name:`tab_${t}`,screen_class:"NetworkInspector"})}function trackInspectorScreenView(t){trackTelemetryEvent("screen_view",{screen_name:t,screen_class:"NetworkInspector"})}function trackInspectorScreenRecord(t,o="screen"){trackTelemetryEvent("inspector_screen_record",{action:t,recording_type:o})}
1
+ "use strict";var __importDefault=this&&this.__importDefault||function(t){return t&&t.__esModule?t:{default:t}};Object.defineProperty(exports,"__esModule",{value:!0}),exports.setTelemetryEnabled=setTelemetryEnabled,exports.markSearchFilterUsed=markSearchFilterUsed,exports.trackActiveTelemetryHeartbeat=trackActiveTelemetryHeartbeat,exports.trackTelemetryEvent=trackTelemetryEvent,exports.trackInspectorTabView=trackInspectorTabView,exports.trackInspectorScreenView=trackInspectorScreenView,exports.trackInspectorScreenRecord=trackInspectorScreenRecord;const react_1=__importDefault(require("react")),react_native_1=require("react-native"),version_1=require("../constants/version"),settingsStore_1=require("./settingsStore"),reduxLogger_1=require("../customHooks/reduxLogger"),analyticsLogger_1=require("../customHooks/analyticsLogger"),crashHandler_1=require("../customHooks/crashHandler"),networkLogger_1=require("../customHooks/networkLogger"),NativeInspector_1=require("../native/NativeInspector"),index_1=require("./index"),telemetryConfig_1=require("../constants/telemetryConfig"),PKG_NAME="react-native-inapp-inspector",KEY_MATERIAL=`${PKG_NAME}::${telemetryConfig_1.TELEMETRY_SALT}`;function getKeystream(t,o){const i=[];let r=1518500249;for(let a=0;a<o;a++){const e=t.charCodeAt(a%t.length);r=(r*31+e*17+a*13^r>>>7)&4294967295,i.push(r>>>a%24&255)}return i}function deobfuscate(t){if(!t)return"";const o=[];for(let a=0;a<t.length;a+=2)o.push(parseInt(t.substring(a,a+2),16));const i=getKeystream(KEY_MATERIAL,o.length),r=[];for(let a=0;a<o.length;a++){const e=i[a],l=telemetryConfig_1.TELEMETRY_SALT.charCodeAt(a%telemetryConfig_1.TELEMETRY_SALT.length),c=(o[a]^e^l)&255;r.push(String.fromCharCode(c))}return r.join("")}let _cachedMid=null,_cachedSec=null;function getCredentials(){if(_cachedMid!==null&&_cachedSec!==null)return{measurementId:_cachedMid,apiSecret:_cachedSec};if(!telemetryConfig_1.ENC_MID||!telemetryConfig_1.ENC_SEC||!telemetryConfig_1.TELEMETRY_SALT)return _cachedMid="",_cachedSec="",{measurementId:"",apiSecret:""};try{_cachedMid=deobfuscate(telemetryConfig_1.ENC_MID),_cachedSec=deobfuscate(telemetryConfig_1.ENC_SEC)}catch{_cachedMid="",_cachedSec=""}return{measurementId:_cachedMid,apiSecret:_cachedSec}}function getCollectUrl(){const{measurementId:t,apiSecret:o}=getCredentials();return!t||!o?"":`https://www.google-analytics.com/mp/collect?measurement_id=${t}&api_secret=${o}`}const PING_INTERVAL_MS=1440*60*1e3;let isTelemetryEnabled=!0,_hasSearchFilterBeenUsed=!1;function setTelemetryEnabled(t){isTelemetryEnabled=t}function markSearchFilterUsed(){_hasSearchFilterBeenUsed=!0}async function getOrCreateClientId(){try{const t=await(0,settingsStore_1.loadSettings)();if(t.telemetryClientId||t.telemetryDeviceId){const e=t.telemetryClientId||t.telemetryDeviceId||"";return t.telemetryDeviceId||await(0,settingsStore_1.saveSettings)({...t,telemetryDeviceId:e}),e}const o=Math.floor(1e8+Math.random()*9e8),i=Math.floor(1e9+Math.random()*9e9),r=`${o}.${i}`,a=Date.now();return await(0,settingsStore_1.saveSettings)({...t,telemetryClientId:r,telemetryDeviceId:r,deviceFirstSeen:t.deviceFirstSeen||a}),r}catch{return`${Math.floor(1e8+Math.random()*9e8)}.${Math.floor(1e9+Math.random()*9e9)}`}}function isDeviceEmulator(){try{if(react_native_1.Platform.OS==="android"){const t=react_native_1.Platform.constants||{},o=String(t.Model||"").toLowerCase(),i=String(t.Brand||"").toLowerCase(),r=String(t.Fingerprint||"").toLowerCase(),a=String(t.Hardware||"").toLowerCase(),e=String(t.Manufacturer||"").toLowerCase();return o.includes("emulator")||o.includes("sdk")||o.includes("google_sdk")||o.includes("vbox")||i.includes("generic")||r.startsWith("generic")||a.includes("goldfish")||a.includes("ranchu")||e.includes("genymotion")}if(react_native_1.Platform.OS==="ios"){const t=react_native_1.Platform.constants||{};return String(t.Model||"").toLowerCase().includes("simulator")||!!t.isSimulator}}catch{return!1}return!1}function getDeviceLocaleInfo(){try{const t=typeof Intl<"u"&&Intl.DateTimeFormat?Intl.DateTimeFormat().resolvedOptions():{},o=t.timeZone||"unknown",i=t.locale||"unknown";let r="unknown";if(i&&i!=="unknown"){const a=i.split(/[-_]/);a.length>1&&(r=a[a.length-1].toUpperCase())}return{countryCode:r,locale:i,timeZone:o}}catch{return{countryCode:"unknown",locale:"unknown",timeZone:"unknown"}}}function getSystemMetadata(t,o){const i=react_native_1.Platform.constants,r=i?.reactNativeVersion?`${i.reactNativeVersion.major}.${i.reactNativeVersion.minor}.${i.reactNativeVersion.patch}`:"unknown",a=typeof global.HermesInternal=="object"&&global.HermesInternal!==null,e=global?.nativeFabricUIManager!==void 0,l=!!(global?._rn_bridgeless||global?.RN$Bridgeless),c=!!(typeof __DEV__<"u"&&__DEV__),n=isDeviceEmulator(),{countryCode:_,locale:d,timeZone:L}=getDeviceLocaleInfo();let m="unknown",p=1,f=1,g="phone",h="portrait";try{const s=react_native_1.Dimensions.get("window");m=`${Math.round(s.width)}x${Math.round(s.height)}`,p=react_native_1.PixelRatio.get(),f=react_native_1.PixelRatio.getFontScale(),h=s.width>s.height?"landscape":"portrait",g=react_native_1.Platform.OS==="ios"&&!!react_native_1.Platform.isPad||Math.min(s.width,s.height)>=600?"tablet":"phone"}catch{}let b="unknown";try{b=react_native_1.Appearance?.getColorScheme?.()||"unknown"}catch{}const N=!!(globalThis?.expo||globalThis?.__expo||globalThis?.__turboModuleProxy?.name==="Expo"||react_native_1.Platform.constants?.ExpoVersion);let u="non_hermes",v="jsc";if(a){v="hermes";try{const s=global.HermesInternal?.getRuntimeProperties?.()||{};u=s["OSS Release Version"]||(s["Bytecode Version"]?`bc_v${s["Bytecode Version"]}`:"hermes")}catch{u="hermes"}}else globalThis?._v8&&(v="v8");let y=!1;try{y=(0,reduxLogger_1.isReduxConnected)()}catch{}let S=!1;try{S=(0,analyticsLogger_1.isFirebaseAnalyticsPatched)()}catch{}const k=(0,NativeInspector_1.isNativeModuleAvailable)(),P=!!(react_native_1.NativeModules?.RNMMKV||globalThis?.MMKV);let w=0;try{w=(0,crashHandler_1.getCrashRecords)().length}catch{}let I="0";try{const s=(0,networkLogger_1.getNetworkLogs)().length;I=s===0?"0":s<=10?"1-10":s<=50?"11-50":s<=100?"51-100":"100+"}catch{}let M=!1;try{M=(0,index_1.isLocalDebugEnvironment)()}catch{}const D=o?.defaultTab||"apis",V=k&&o?.useNativeFab!==!1?"native_ui_thread":"js_floating_button",A=String(i?.Brand||(react_native_1.Platform.OS==="ios"?"Apple":"unknown")),B=String(i?.Model||i?.systemName||(react_native_1.Platform.OS==="ios"?"iPhone/iPad":"unknown")),R=String(i?.Manufacturer||(react_native_1.Platform.OS==="ios"?"Apple":"unknown"));let C="App",E="unknown",T="unknown",x="unknown";try{C=(0,index_1.getAppName)()||"App",E=(0,index_1.getBundleIdentifier)()||"unknown";const s=(0,index_1.getAppVersionAndBuild)();T=s.version||"unknown",x=s.build||"unknown"}catch{}const O=typeof react_1.default<"u"&&react_1.default.version?react_1.default.version:"unknown";return{pkg_name:PKG_NAME,pkg_version:version_1.LIB_VERSION,lib_version:version_1.LIB_VERSION,install_type:c?"local_dev":"bundled_production",app_name:C,bundle_id:E,app_version:T,app_build:x,react_version:O,platform:react_native_1.Platform.OS,os_version:String(react_native_1.Platform.Version||"unknown"),rn_version:r,country_code:_,device_locale:d,time_zone:L,device_brand:A,device_model:B,device_manufacturer:R,device_form_factor:g,screen_resolution:m,screen_density:p,screen_orientation:h,font_scale:f,appearance_mode:b,is_expo:N,js_engine:v,hermes_version:u,is_hermes:a,is_fabric:e,is_bridgeless:l,has_native_module:k,has_mmkv:P,fab_mode:V,default_landing_tab:D,captured_crashes_count:w,captured_apis_bracket:I,search_filter_used:_hasSearchFilterBeenUsed,is_metro_connected:M,is_dev:c,is_emulator:n,device_type:n?"emulator":"real_device",app_mode:c?"local_mode":"bundled_application",redux_attached:y,analytics_attached:S,environment:t||(c?"DEV":"PROD"),engagement_time_msec:1e3}}async function trackActiveTelemetryHeartbeat(t=!0,o){if(t===!1){isTelemetryEnabled=!1;return}if(isTelemetryEnabled=!0,process.env.NODE_ENV==="test"||typeof globalThis.jest<"u")return;const i=getCollectUrl();if(i)try{const r=await(0,settingsStore_1.loadSettings)(),a=r.telemetryLastPing||0,e=Date.now(),l=!r.deviceRegistered;if(!l&&e-a<PING_INTERVAL_MS)return;const c=await getOrCreateClientId(),n=getSystemMetadata(o,r),_={...n,device_id:c,is_new_device:l,device_first_seen:r.deviceFirstSeen||e},d=l?[{name:"active_device",params:_},{name:"first_device_install",params:_},{name:"inspector_active_heartbeat",params:_}]:[{name:"active_device",params:_},{name:"inspector_active_heartbeat",params:_}];await fetch(i,{method:"POST",headers:{"Content-Type":"application/json"},body:JSON.stringify({client_id:c,user_id:c,non_personalized_ads:!0,user_properties:{device_id:{value:c},pkg_name:{value:n.pkg_name},pkg_version:{value:n.pkg_version},install_type:{value:n.install_type},app_name:{value:n.app_name},bundle_id:{value:n.bundle_id},app_version:{value:n.app_version},react_version:{value:n.react_version},country:{value:n.country_code},country_code:{value:n.country_code},locale:{value:n.device_locale},time_zone:{value:n.time_zone},device_brand:{value:n.device_brand},device_model:{value:n.device_model},device_form_factor:{value:n.device_form_factor},screen_resolution:{value:n.screen_resolution},appearance_mode:{value:n.appearance_mode},is_expo:{value:String(n.is_expo)},js_engine:{value:n.js_engine},is_fabric:{value:String(n.is_fabric)},is_bridgeless:{value:String(n.is_bridgeless)},has_native_module:{value:String(n.has_native_module)},has_mmkv:{value:String(n.has_mmkv)},fab_mode:{value:n.fab_mode},default_landing_tab:{value:n.default_landing_tab},captured_crashes_count:{value:String(n.captured_crashes_count)},captured_apis_bracket:{value:n.captured_apis_bracket},search_filter_used:{value:String(n.search_filter_used)},is_metro_connected:{value:String(n.is_metro_connected)},redux_attached:{value:String(n.redux_attached)},analytics_attached:{value:String(n.analytics_attached)},platform:{value:n.platform},rn_version:{value:n.rn_version},lib_version:{value:n.lib_version}},events:d})}),await(0,settingsStore_1.saveSettings)({...r,telemetryClientId:c,telemetryDeviceId:c,deviceRegistered:!0,deviceFirstSeen:r.deviceFirstSeen||e,telemetryLastPing:e,telemetryLastActive:e})}catch{}}async function trackTelemetryEvent(t,o){if(!isTelemetryEnabled)return;const i=getCollectUrl();if(i)try{const r=await getOrCreateClientId(),a=await(0,settingsStore_1.loadSettings)().catch(()=>({})),e=getSystemMetadata(void 0,a),l={...e,device_id:r,...o,engagement_time_msec:100};await fetch(i,{method:"POST",headers:{"Content-Type":"application/json"},body:JSON.stringify({client_id:r,user_id:r,non_personalized_ads:!0,user_properties:{device_id:{value:r},pkg_name:{value:e.pkg_name},pkg_version:{value:e.pkg_version},install_type:{value:e.install_type},app_name:{value:e.app_name},bundle_id:{value:e.bundle_id},app_version:{value:e.app_version},react_version:{value:e.react_version},country:{value:e.country_code},country_code:{value:e.country_code},locale:{value:e.device_locale},time_zone:{value:e.time_zone},device_brand:{value:e.device_brand},device_model:{value:e.device_model},device_form_factor:{value:e.device_form_factor},screen_resolution:{value:e.screen_resolution},appearance_mode:{value:e.appearance_mode},is_expo:{value:String(e.is_expo)},js_engine:{value:e.js_engine},is_fabric:{value:String(e.is_fabric)},is_bridgeless:{value:String(e.is_bridgeless)},has_native_module:{value:String(e.has_native_module)},has_mmkv:{value:String(e.has_mmkv)},fab_mode:{value:e.fab_mode},default_landing_tab:{value:e.default_landing_tab},captured_crashes_count:{value:String(e.captured_crashes_count)},captured_apis_bracket:{value:e.captured_apis_bracket},search_filter_used:{value:String(e.search_filter_used)},is_metro_connected:{value:String(e.is_metro_connected)},redux_attached:{value:String(e.redux_attached)},analytics_attached:{value:String(e.analytics_attached)},platform:{value:e.platform},rn_version:{value:e.rn_version},lib_version:{value:e.lib_version}},events:[{name:t,params:l}]})})}catch{}}function trackInspectorTabView(t){trackTelemetryEvent("inspector_tab_view",{tab_name:t,screen_name:`tab_${t}`,screen_class:"NetworkInspector"})}function trackInspectorScreenView(t){trackTelemetryEvent("screen_view",{screen_name:t,screen_class:"NetworkInspector"})}function trackInspectorScreenRecord(t,o="screen"){trackTelemetryEvent("inspector_screen_record",{action:t,recording_type:o})}
@@ -2,40 +2,133 @@ import React from 'react';
2
2
  export declare const SUPPORTED_LANGUAGES: readonly [{
3
3
  readonly code: "en";
4
4
  readonly name: "English";
5
+ readonly nativeName: "English";
6
+ readonly flag: "🇺🇸";
5
7
  }, {
6
8
  readonly code: "es";
7
9
  readonly name: "Español";
10
+ readonly nativeName: "Español";
11
+ readonly flag: "🇪🇸";
8
12
  }, {
9
13
  readonly code: "fr";
10
14
  readonly name: "Français";
15
+ readonly nativeName: "Français";
16
+ readonly flag: "🇫🇷";
11
17
  }, {
12
18
  readonly code: "de";
13
19
  readonly name: "Deutsch";
20
+ readonly nativeName: "Deutsch";
21
+ readonly flag: "🇩🇪";
14
22
  }, {
15
23
  readonly code: "zh";
16
24
  readonly name: "中文";
25
+ readonly nativeName: "简体中文";
26
+ readonly flag: "🇨🇳";
17
27
  }, {
18
28
  readonly code: "ja";
19
29
  readonly name: "日本語";
30
+ readonly nativeName: "日本語";
31
+ readonly flag: "🇯🇵";
20
32
  }, {
21
33
  readonly code: "ko";
22
34
  readonly name: "한국어";
35
+ readonly nativeName: "한국어";
36
+ readonly flag: "🇰🇷";
23
37
  }, {
24
38
  readonly code: "pt";
25
39
  readonly name: "Português";
40
+ readonly nativeName: "Português";
41
+ readonly flag: "🇧🇷";
26
42
  }, {
27
43
  readonly code: "ru";
28
44
  readonly name: "Русский";
45
+ readonly nativeName: "Русский";
46
+ readonly flag: "🇷🇺";
29
47
  }, {
30
48
  readonly code: "hi";
31
49
  readonly name: "हिन्दी";
50
+ readonly nativeName: "हिन्दी";
51
+ readonly flag: "🇮🇳";
52
+ }, {
53
+ readonly code: "ta";
54
+ readonly name: "Tamil";
55
+ readonly nativeName: "தமிழ்";
56
+ readonly flag: "🇮🇳";
57
+ }, {
58
+ readonly code: "te";
59
+ readonly name: "Telugu";
60
+ readonly nativeName: "తెలుగు";
61
+ readonly flag: "🇮🇳";
62
+ }, {
63
+ readonly code: "kn";
64
+ readonly name: "Kannada";
65
+ readonly nativeName: "ಕನ್ನಡ";
66
+ readonly flag: "🇮🇳";
67
+ }, {
68
+ readonly code: "ml";
69
+ readonly name: "Malayalam";
70
+ readonly nativeName: "മലയാളം";
71
+ readonly flag: "🇮🇳";
72
+ }, {
73
+ readonly code: "bn";
74
+ readonly name: "Bengali";
75
+ readonly nativeName: "বাংলা";
76
+ readonly flag: "🇮🇳";
77
+ }, {
78
+ readonly code: "mr";
79
+ readonly name: "Marathi";
80
+ readonly nativeName: "मराठी";
81
+ readonly flag: "🇮🇳";
82
+ }, {
83
+ readonly code: "gu";
84
+ readonly name: "Gujarati";
85
+ readonly nativeName: "ગુજરાતી";
86
+ readonly flag: "🇮🇳";
87
+ }, {
88
+ readonly code: "pa";
89
+ readonly name: "Punjabi";
90
+ readonly nativeName: "ਪੰਜਾਬੀ";
91
+ readonly flag: "🇮🇳";
32
92
  }, {
33
93
  readonly code: "ar";
34
94
  readonly name: "العربية";
95
+ readonly nativeName: "العربية";
96
+ readonly flag: "🇸🇦";
97
+ }, {
98
+ readonly code: "it";
99
+ readonly name: "Italiano";
100
+ readonly nativeName: "Italiano";
101
+ readonly flag: "🇮🇹";
102
+ }, {
103
+ readonly code: "id";
104
+ readonly name: "Bahasa Indonesia";
105
+ readonly nativeName: "Bahasa Indonesia";
106
+ readonly flag: "🇮🇩";
107
+ }, {
108
+ readonly code: "tr";
109
+ readonly name: "Türkçe";
110
+ readonly nativeName: "Türkçe";
111
+ readonly flag: "🇹🇷";
112
+ }, {
113
+ readonly code: "vi";
114
+ readonly name: "Tiếng Việt";
115
+ readonly nativeName: "Tiếng Việt";
116
+ readonly flag: "🇻🇳";
117
+ }, {
118
+ readonly code: "nl";
119
+ readonly name: "Nederlands";
120
+ readonly nativeName: "Nederlands";
121
+ readonly flag: "🇳🇱";
122
+ }, {
123
+ readonly code: "pl";
124
+ readonly name: "Polski";
125
+ readonly nativeName: "Polski";
126
+ readonly flag: "🇵🇱";
35
127
  }];
36
128
  export type SupportedLanguageCode = (typeof SUPPORTED_LANGUAGES)[number]['code'];
37
129
  type TranslationParams = Record<string, any>;
38
- export declare function t(key: string, optionsOrFallback?: TranslationParams | string): string;
130
+ export declare function t(key: string, optionsOrFallback?: TranslationParams | string, fallbackStr?: string): string;
131
+ export declare function getLanguage(): string;
39
132
  export declare function setLanguage(lang: string): void;
40
133
  export declare function addTranslations(lang: string, translations: Record<string, any>): void;
41
134
  export declare function setTranslations(translations: Record<string, any>, lang?: string): void;
@@ -44,6 +137,7 @@ export declare const i18n: {
44
137
  language: string;
45
138
  changeLanguage: typeof setLanguage;
46
139
  addResourceBundle: (lng: string, _ns: string, resources: any) => void;
140
+ getLanguage: typeof getLanguage;
47
141
  setLanguage: typeof setLanguage;
48
142
  addTranslations: typeof addTranslations;
49
143
  setTranslations: typeof setTranslations;
@@ -55,10 +149,14 @@ export declare function useTranslation(): {
55
149
  language: string;
56
150
  changeLanguage: typeof setLanguage;
57
151
  addResourceBundle: (lng: string, _ns: string, resources: any) => void;
152
+ getLanguage: typeof getLanguage;
58
153
  setLanguage: typeof setLanguage;
59
154
  addTranslations: typeof addTranslations;
60
155
  setTranslations: typeof setTranslations;
61
156
  };
157
+ language: string;
158
+ currentLanguage: string;
159
+ setLanguage: typeof setLanguage;
62
160
  };
63
161
  export declare const I18nextProvider: ({ children }: {
64
162
  children?: React.ReactNode;
@@ -1 +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.I18nextProvider=exports.i18n=exports.SUPPORTED_LANGUAGES=void 0,exports.t=t,exports.setLanguage=setLanguage,exports.addTranslations=addTranslations,exports.setTranslations=setTranslations,exports.useTranslation=useTranslation;const react_1=__importDefault(require("react")),en_json_1=__importDefault(require("./locales/en.json")),es_json_1=__importDefault(require("./locales/es.json")),fr_json_1=__importDefault(require("./locales/fr.json")),de_json_1=__importDefault(require("./locales/de.json")),zh_json_1=__importDefault(require("./locales/zh.json")),ja_json_1=__importDefault(require("./locales/ja.json")),ko_json_1=__importDefault(require("./locales/ko.json")),pt_json_1=__importDefault(require("./locales/pt.json")),ru_json_1=__importDefault(require("./locales/ru.json")),hi_json_1=__importDefault(require("./locales/hi.json")),ar_json_1=__importDefault(require("./locales/ar.json"));exports.SUPPORTED_LANGUAGES=[{code:"en",name:"English"},{code:"es",name:"Espa\xF1ol"},{code:"fr",name:"Fran\xE7ais"},{code:"de",name:"Deutsch"},{code:"zh",name:"\u4E2D\u6587"},{code:"ja",name:"\u65E5\u672C\u8A9E"},{code:"ko",name:"\uD55C\uAD6D\uC5B4"},{code:"pt",name:"Portugu\xEAs"},{code:"ru",name:"\u0420\u0443\u0441\u0441\u043A\u0438\u0439"},{code:"hi",name:"\u0939\u093F\u0928\u094D\u0926\u0940"},{code:"ar",name:"\u0627\u0644\u0639\u0631\u0628\u064A\u0629"}];const localeRegistry={en:en_json_1.default,es:es_json_1.default,fr:fr_json_1.default,de:de_json_1.default,zh:zh_json_1.default,ja:ja_json_1.default,ko:ko_json_1.default,pt:pt_json_1.default,ru:ru_json_1.default,hi:hi_json_1.default,ar:ar_json_1.default};let currentLanguage="en";function lookupKey(e,n){if(!e||!n)return;const o=n.split(".");let r=e;for(let s=0;s<o.length;s++){if(r==null)return;r=r[o[s]]}return r}function interpolate(e,n){return!n||typeof e!="string"?e:e.replace(/\{\{\s*([a-zA-Z0-9_]+)\s*\}\}/g,(o,r)=>n[r]!==void 0?String(n[r]):`{{${r}}}`)}function t(e,n){const o=localeRegistry[currentLanguage]||localeRegistry.en;let r=lookupKey(o,e);return r===void 0&&currentLanguage!=="en"&&(r=lookupKey(localeRegistry.en,e)),typeof r=="string"?typeof n=="object"&&n!==null?interpolate(r,n):r:typeof n=="string"?n:e}function setLanguage(e){typeof e=="string"&&e.trim()&&(currentLanguage=e.trim(),exports.i18n.language=currentLanguage)}function addTranslations(e,n){!e||!n||typeof n!="object"||(localeRegistry[e]={...localeRegistry[e]||{},...n})}function setTranslations(e,n="en"){addTranslations(n,e)}exports.i18n={t,language:currentLanguage,changeLanguage:setLanguage,addResourceBundle:(e,n,o)=>addTranslations(e,o),setLanguage,addTranslations,setTranslations};function useTranslation(){return{t,i18n:exports.i18n}}const I18nextProvider=({children:e})=>react_1.default.createElement(react_1.default.Fragment,null,e);exports.I18nextProvider=I18nextProvider,exports.default=exports.i18n;
1
+ "use strict";var __importDefault=this&&this.__importDefault||function(n){return n&&n.__esModule?n:{default:n}};Object.defineProperty(exports,"__esModule",{value:!0}),exports.I18nextProvider=exports.i18n=exports.SUPPORTED_LANGUAGES=void 0,exports.t=t,exports.getLanguage=getLanguage,exports.setLanguage=setLanguage,exports.addTranslations=addTranslations,exports.setTranslations=setTranslations,exports.useTranslation=useTranslation;const react_1=__importDefault(require("react")),en_json_1=__importDefault(require("./locales/en.json")),es_json_1=__importDefault(require("./locales/es.json")),fr_json_1=__importDefault(require("./locales/fr.json")),de_json_1=__importDefault(require("./locales/de.json")),zh_json_1=__importDefault(require("./locales/zh.json")),ja_json_1=__importDefault(require("./locales/ja.json")),ko_json_1=__importDefault(require("./locales/ko.json")),pt_json_1=__importDefault(require("./locales/pt.json")),ru_json_1=__importDefault(require("./locales/ru.json")),hi_json_1=__importDefault(require("./locales/hi.json")),ar_json_1=__importDefault(require("./locales/ar.json")),it_json_1=__importDefault(require("./locales/it.json")),id_json_1=__importDefault(require("./locales/id.json")),tr_json_1=__importDefault(require("./locales/tr.json")),vi_json_1=__importDefault(require("./locales/vi.json")),nl_json_1=__importDefault(require("./locales/nl.json")),pl_json_1=__importDefault(require("./locales/pl.json")),ta_json_1=__importDefault(require("./locales/ta.json")),te_json_1=__importDefault(require("./locales/te.json")),kn_json_1=__importDefault(require("./locales/kn.json")),ml_json_1=__importDefault(require("./locales/ml.json")),bn_json_1=__importDefault(require("./locales/bn.json")),mr_json_1=__importDefault(require("./locales/mr.json")),gu_json_1=__importDefault(require("./locales/gu.json")),pa_json_1=__importDefault(require("./locales/pa.json"));exports.SUPPORTED_LANGUAGES=[{code:"en",name:"English",nativeName:"English",flag:"\u{1F1FA}\u{1F1F8}"},{code:"es",name:"Espa\xF1ol",nativeName:"Espa\xF1ol",flag:"\u{1F1EA}\u{1F1F8}"},{code:"fr",name:"Fran\xE7ais",nativeName:"Fran\xE7ais",flag:"\u{1F1EB}\u{1F1F7}"},{code:"de",name:"Deutsch",nativeName:"Deutsch",flag:"\u{1F1E9}\u{1F1EA}"},{code:"zh",name:"\u4E2D\u6587",nativeName:"\u7B80\u4F53\u4E2D\u6587",flag:"\u{1F1E8}\u{1F1F3}"},{code:"ja",name:"\u65E5\u672C\u8A9E",nativeName:"\u65E5\u672C\u8A9E",flag:"\u{1F1EF}\u{1F1F5}"},{code:"ko",name:"\uD55C\uAD6D\uC5B4",nativeName:"\uD55C\uAD6D\uC5B4",flag:"\u{1F1F0}\u{1F1F7}"},{code:"pt",name:"Portugu\xEAs",nativeName:"Portugu\xEAs",flag:"\u{1F1E7}\u{1F1F7}"},{code:"ru",name:"\u0420\u0443\u0441\u0441\u043A\u0438\u0439",nativeName:"\u0420\u0443\u0441\u0441\u043A\u0438\u0439",flag:"\u{1F1F7}\u{1F1FA}"},{code:"hi",name:"\u0939\u093F\u0928\u094D\u0926\u0940",nativeName:"\u0939\u093F\u0928\u094D\u0926\u0940",flag:"\u{1F1EE}\u{1F1F3}"},{code:"ta",name:"Tamil",nativeName:"\u0BA4\u0BAE\u0BBF\u0BB4\u0BCD",flag:"\u{1F1EE}\u{1F1F3}"},{code:"te",name:"Telugu",nativeName:"\u0C24\u0C46\u0C32\u0C41\u0C17\u0C41",flag:"\u{1F1EE}\u{1F1F3}"},{code:"kn",name:"Kannada",nativeName:"\u0C95\u0CA8\u0CCD\u0CA8\u0CA1",flag:"\u{1F1EE}\u{1F1F3}"},{code:"ml",name:"Malayalam",nativeName:"\u0D2E\u0D32\u0D2F\u0D3E\u0D33\u0D02",flag:"\u{1F1EE}\u{1F1F3}"},{code:"bn",name:"Bengali",nativeName:"\u09AC\u09BE\u0982\u09B2\u09BE",flag:"\u{1F1EE}\u{1F1F3}"},{code:"mr",name:"Marathi",nativeName:"\u092E\u0930\u093E\u0920\u0940",flag:"\u{1F1EE}\u{1F1F3}"},{code:"gu",name:"Gujarati",nativeName:"\u0A97\u0AC1\u0A9C\u0AB0\u0ABE\u0AA4\u0AC0",flag:"\u{1F1EE}\u{1F1F3}"},{code:"pa",name:"Punjabi",nativeName:"\u0A2A\u0A70\u0A1C\u0A3E\u0A2C\u0A40",flag:"\u{1F1EE}\u{1F1F3}"},{code:"ar",name:"\u0627\u0644\u0639\u0631\u0628\u064A\u0629",nativeName:"\u0627\u0644\u0639\u0631\u0628\u064A\u0629",flag:"\u{1F1F8}\u{1F1E6}"},{code:"it",name:"Italiano",nativeName:"Italiano",flag:"\u{1F1EE}\u{1F1F9}"},{code:"id",name:"Bahasa Indonesia",nativeName:"Bahasa Indonesia",flag:"\u{1F1EE}\u{1F1E9}"},{code:"tr",name:"T\xFCrk\xE7e",nativeName:"T\xFCrk\xE7e",flag:"\u{1F1F9}\u{1F1F7}"},{code:"vi",name:"Ti\u1EBFng Vi\u1EC7t",nativeName:"Ti\u1EBFng Vi\u1EC7t",flag:"\u{1F1FB}\u{1F1F3}"},{code:"nl",name:"Nederlands",nativeName:"Nederlands",flag:"\u{1F1F3}\u{1F1F1}"},{code:"pl",name:"Polski",nativeName:"Polski",flag:"\u{1F1F5}\u{1F1F1}"}];const localeRegistry={en:en_json_1.default,es:es_json_1.default,fr:fr_json_1.default,de:de_json_1.default,zh:zh_json_1.default,ja:ja_json_1.default,ko:ko_json_1.default,pt:pt_json_1.default,ru:ru_json_1.default,hi:hi_json_1.default,ta:ta_json_1.default,te:te_json_1.default,kn:kn_json_1.default,ml:ml_json_1.default,bn:bn_json_1.default,mr:mr_json_1.default,gu:gu_json_1.default,pa:pa_json_1.default,ar:ar_json_1.default,it:it_json_1.default,id:id_json_1.default,tr:tr_json_1.default,vi:vi_json_1.default,nl:nl_json_1.default,pl:pl_json_1.default};let currentLanguage="en";const listeners=new Set;function lookupKey(n,e){if(!n||!e)return;const a=e.split(".");let o=n;for(let s=0;s<a.length;s++){if(o==null)return;o=o[a[s]]}return o}function interpolate(n,e){return!e||typeof n!="string"?n:n.replace(/\{\{\s*([a-zA-Z0-9_]+)\s*\}\}/g,(a,o)=>e[o]!==void 0?String(e[o]):`{{${o}}}`)}function t(n,e,a){const o=localeRegistry[currentLanguage]||localeRegistry.en;let s=lookupKey(o,n);return s===void 0&&currentLanguage!=="en"&&(s=lookupKey(localeRegistry.en,n)),typeof s=="string"?typeof e=="object"&&e!==null?interpolate(s,e):s:typeof e=="string"?e:typeof a=="string"?typeof e=="object"&&e!==null?interpolate(a,e):a:typeof e=="object"&&e!==null&&typeof e.defaultValue=="string"?interpolate(e.defaultValue,e):n}function getLanguage(){return currentLanguage}function setLanguage(n){typeof n=="string"&&n.trim()&&(currentLanguage=n.trim(),exports.i18n.language=currentLanguage,listeners.forEach(e=>{try{e()}catch{}}))}function addTranslations(n,e){!n||!e||typeof e!="object"||(localeRegistry[n]={...localeRegistry[n]||{},...e},listeners.forEach(a=>{try{a()}catch{}}))}function setTranslations(n,e="en"){addTranslations(e,n)}exports.i18n={t,language:currentLanguage,changeLanguage:setLanguage,addResourceBundle:(n,e,a)=>addTranslations(n,a),getLanguage,setLanguage,addTranslations,setTranslations};function useTranslation(){const[,n]=react_1.default.useState(0);return react_1.default.useEffect(()=>{const e=()=>n(a=>a+1);return listeners.add(e),()=>{listeners.delete(e)}},[]),{t,i18n:exports.i18n,language:currentLanguage,currentLanguage,setLanguage}}const I18nextProvider=({children:n})=>react_1.default.createElement(react_1.default.Fragment,null,n);exports.I18nextProvider=I18nextProvider,exports.default=exports.i18n;