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.
- package/README.ar.md +163 -0
- package/README.de.md +163 -0
- package/README.es.md +164 -0
- package/README.fr.md +163 -0
- package/README.hi.md +163 -0
- package/README.ja.md +180 -0
- package/README.ko.md +163 -0
- package/README.md +340 -243
- package/README.pt-BR.md +163 -0
- package/README.ru.md +163 -0
- package/README.zh-CN.md +387 -0
- package/android/src/main/java/com/inappinspector/NetworkInspectorModule.kt +605 -23
- package/assets/banner_dark.svg +186 -0
- package/assets/banner_light.svg +186 -0
- package/assets/icon_circle.svg +148 -0
- package/assets/icon_square.svg +369 -0
- package/assets/inapp_inspector_icon.gif +0 -0
- package/assets/inapp_inspector_icon_original.gif +0 -0
- package/assets/social_preview.png +0 -0
- package/assets/walkthrough.gif +0 -0
- package/dist/commonjs/capture.d.ts +2 -0
- package/dist/commonjs/capture.js +1 -1
- package/dist/commonjs/components/AnalyticsDetail.js +23 -23
- package/dist/commonjs/components/AnalyticsEventCard.js +1 -1
- package/dist/commonjs/components/AnalyticsGraph.js +44 -44
- package/dist/commonjs/components/AnimatedBrandOwl.d.ts +7 -0
- package/dist/commonjs/components/AnimatedBrandOwl.js +175 -0
- package/dist/commonjs/components/AppHeaderLogo.d.ts +1 -0
- package/dist/commonjs/components/AppHeaderLogo.js +5 -3
- package/dist/commonjs/components/BrandCircleIcon.js +28 -28
- package/dist/commonjs/components/BrandSquareIcon.d.ts +5 -0
- package/dist/commonjs/components/BrandSquareIcon.js +139 -0
- package/dist/commonjs/components/ConsoleLogCard.d.ts +2 -1
- package/dist/commonjs/components/ConsoleLogCard.js +23 -39
- package/dist/commonjs/components/Inspector/AboutModal.js +44 -54
- package/dist/commonjs/components/Inspector/AnalyticsTab.js +6 -6
- package/dist/commonjs/components/Inspector/ConfirmationModal.d.ts +13 -0
- package/dist/commonjs/components/Inspector/ConfirmationModal.js +30 -0
- package/dist/commonjs/components/Inspector/ConsoleTab.js +12 -12
- package/dist/commonjs/components/Inspector/CrashTab.js +44 -9
- package/dist/commonjs/components/Inspector/DebuggingTab.js +17 -17
- package/dist/commonjs/components/Inspector/DeviceInfoTab.js +1 -1
- package/dist/commonjs/components/Inspector/FabLauncher.js +30 -33
- package/dist/commonjs/components/Inspector/FeatureUnderDevNotice.js +2 -2
- package/dist/commonjs/components/Inspector/FloatingCaptureWidget.d.ts +3 -0
- package/dist/commonjs/components/Inspector/FloatingCaptureWidget.js +54 -0
- package/dist/commonjs/components/Inspector/GlobalCrashScreenModal.d.ts +11 -0
- package/dist/commonjs/components/Inspector/GlobalCrashScreenModal.js +234 -0
- package/dist/commonjs/components/Inspector/InspectorHeader.js +137 -127
- package/dist/commonjs/components/Inspector/LanguageSelectorModal.d.ts +15 -0
- package/dist/commonjs/components/Inspector/LanguageSelectorModal.js +172 -0
- package/dist/commonjs/components/Inspector/MainScreen.js +55 -35
- package/dist/commonjs/components/Inspector/MediaGalleryTab.js +40 -35
- package/dist/commonjs/components/Inspector/MediaPreviewModal.d.ts +36 -0
- package/dist/commonjs/components/Inspector/MediaPreviewModal.js +341 -135
- package/dist/commonjs/components/Inspector/NetworkTab.js +50 -50
- package/dist/commonjs/components/Inspector/NpmUpdateToast.js +1 -1
- package/dist/commonjs/components/Inspector/PushCard.d.ts +3 -2
- package/dist/commonjs/components/Inspector/PushCard.js +5 -4
- package/dist/commonjs/components/Inspector/PushDetail.js +41 -32
- package/dist/commonjs/components/Inspector/PushTab.js +12 -12
- package/dist/commonjs/components/Inspector/ReduxDetail.js +32 -32
- package/dist/commonjs/components/Inspector/ReduxTab.js +10 -8
- package/dist/commonjs/components/Inspector/SecondaryTelemetryStrip.d.ts +2 -0
- package/dist/commonjs/components/Inspector/SecondaryTelemetryStrip.js +43 -0
- package/dist/commonjs/components/Inspector/SettingsPanel.js +287 -139
- package/dist/commonjs/components/Inspector/SocketCard.d.ts +5 -0
- package/dist/commonjs/components/Inspector/SocketCard.js +116 -0
- package/dist/commonjs/components/Inspector/SocketDetail.d.ts +4 -0
- package/dist/commonjs/components/Inspector/SocketDetail.js +327 -0
- package/dist/commonjs/components/Inspector/SocketFilterModal.d.ts +13 -0
- package/dist/commonjs/components/Inspector/SocketFilterModal.js +69 -0
- package/dist/commonjs/components/Inspector/SocketTab.d.ts +3 -0
- package/dist/commonjs/components/Inspector/SocketTab.js +112 -0
- package/dist/commonjs/components/Inspector/StorageTab.js +39 -37
- package/dist/commonjs/components/Inspector/SupportModal.d.ts +7 -0
- package/dist/commonjs/components/Inspector/SupportModal.js +125 -0
- package/dist/commonjs/components/Inspector/SupportPage.d.ts +5 -0
- package/dist/commonjs/components/Inspector/SupportPage.js +227 -0
- package/dist/commonjs/components/Inspector/TabBar.js +24 -23
- package/dist/commonjs/components/Inspector/UpdateAvailableModal.js +24 -24
- package/dist/commonjs/components/JsonViewer.js +50 -48
- package/dist/commonjs/components/LogCard.d.ts +3 -2
- package/dist/commonjs/components/LogCard.js +27 -25
- package/dist/commonjs/components/LogSyntaxHighlighter.js +5 -5
- package/dist/commonjs/components/ModuleErrorBoundary.js +5 -5
- package/dist/commonjs/components/NetworkIcons.d.ts +42 -0
- package/dist/commonjs/components/NetworkIcons.js +139 -6
- package/dist/commonjs/components/SegmentedTabs.js +1 -1
- package/dist/commonjs/constants/version.d.ts +1 -1
- package/dist/commonjs/constants/version.js +1 -1
- package/dist/commonjs/crash.d.ts +1 -1
- package/dist/commonjs/crash.js +1 -1
- package/dist/commonjs/customHooks/crashHandler.d.ts +2 -1
- package/dist/commonjs/customHooks/crashHandler.js +7 -7
- package/dist/commonjs/customHooks/socketLogger.d.ts +26 -0
- package/dist/commonjs/customHooks/socketLogger.js +2 -0
- package/dist/commonjs/editor.d.ts +13 -0
- package/dist/commonjs/editor.js +1 -0
- package/dist/commonjs/helpers/index.d.ts +1 -0
- package/dist/commonjs/helpers/index.js +3 -3
- package/dist/commonjs/helpers/memoryManager.d.ts +1 -0
- package/dist/commonjs/helpers/memoryManager.js +1 -1
- package/dist/commonjs/helpers/searchQueryParser.d.ts +1 -1
- package/dist/commonjs/helpers/searchQueryParser.js +5 -1
- package/dist/commonjs/helpers/settingsStore.d.ts +1 -0
- package/dist/commonjs/helpers/settingsStore.js +1 -1
- package/dist/commonjs/helpers/shareFormatter.d.ts +3 -1
- package/dist/commonjs/helpers/shareFormatter.js +8 -7
- package/dist/commonjs/helpers/telemetry.js +1 -1
- package/dist/commonjs/i18n/index.d.ts +99 -1
- package/dist/commonjs/i18n/index.js +1 -1
- package/dist/commonjs/i18n/locales/ar.json +1 -1
- package/dist/commonjs/i18n/locales/bn.json +1 -0
- package/dist/commonjs/i18n/locales/de.json +1 -1
- package/dist/commonjs/i18n/locales/en.json +1 -1
- package/dist/commonjs/i18n/locales/es.json +1 -1
- package/dist/commonjs/i18n/locales/fr.json +1 -1
- package/dist/commonjs/i18n/locales/gu.json +1 -0
- package/dist/commonjs/i18n/locales/hi.json +1 -1
- package/dist/commonjs/i18n/locales/id.json +1 -0
- package/dist/commonjs/i18n/locales/it.json +1 -0
- package/dist/commonjs/i18n/locales/ja.json +1 -1
- package/dist/commonjs/i18n/locales/kn.json +1 -0
- package/dist/commonjs/i18n/locales/ko.json +1 -1
- package/dist/commonjs/i18n/locales/ml.json +1 -0
- package/dist/commonjs/i18n/locales/mr.json +1 -0
- package/dist/commonjs/i18n/locales/nl.json +1 -0
- package/dist/commonjs/i18n/locales/pa.json +1 -0
- package/dist/commonjs/i18n/locales/pl.json +1 -0
- package/dist/commonjs/i18n/locales/pt.json +1 -1
- package/dist/commonjs/i18n/locales/ru.json +1 -1
- package/dist/commonjs/i18n/locales/ta.json +1 -0
- package/dist/commonjs/i18n/locales/te.json +1 -0
- package/dist/commonjs/i18n/locales/tr.json +1 -0
- package/dist/commonjs/i18n/locales/vi.json +1 -0
- package/dist/commonjs/i18n/locales/zh.json +1 -1
- package/dist/commonjs/index.d.ts +16 -13
- package/dist/commonjs/index.js +5 -4
- package/dist/commonjs/native/NativeInspector.d.ts +4 -0
- package/dist/commonjs/native/NativeInspector.js +1 -1
- package/dist/commonjs/native/NativeNetworkInspector.d.ts +4 -0
- package/dist/commonjs/socket.d.ts +4 -0
- package/dist/commonjs/socket.js +1 -0
- package/dist/commonjs/styles/AppColors.d.ts +42 -2
- package/dist/commonjs/styles/AppColors.js +1 -1
- package/dist/commonjs/styles/common.js +1 -1
- package/dist/commonjs/styles/index.d.ts +30 -0
- package/dist/commonjs/styles/index.js +1 -1
- package/dist/commonjs/types/editor.d.ts +96 -0
- package/dist/commonjs/types/editor.js +1 -0
- package/dist/commonjs/types/enums.d.ts +40 -0
- package/dist/commonjs/types/enums.js +1 -1
- package/dist/commonjs/types/interfaces.d.ts +143 -1
- package/dist/esm/capture.d.ts +2 -0
- package/dist/esm/capture.js +1 -1
- package/dist/esm/components/AnalyticsDetail.js +31 -31
- package/dist/esm/components/AnalyticsEventCard.js +1 -1
- package/dist/esm/components/AnalyticsGraph.js +74 -74
- package/dist/esm/components/AnimatedBrandOwl.d.ts +7 -0
- package/dist/esm/components/AnimatedBrandOwl.js +175 -0
- package/dist/esm/components/AppHeaderLogo.d.ts +1 -0
- package/dist/esm/components/AppHeaderLogo.js +7 -5
- package/dist/esm/components/BrandCircleIcon.js +70 -70
- package/dist/esm/components/BrandSquareIcon.d.ts +5 -0
- package/dist/esm/components/BrandSquareIcon.js +139 -0
- package/dist/esm/components/ConsoleLogCard.d.ts +2 -1
- package/dist/esm/components/ConsoleLogCard.js +61 -77
- package/dist/esm/components/Inspector/AboutModal.js +85 -95
- package/dist/esm/components/Inspector/AnalyticsTab.js +24 -24
- package/dist/esm/components/Inspector/ConfirmationModal.d.ts +13 -0
- package/dist/esm/components/Inspector/ConfirmationModal.js +30 -0
- package/dist/esm/components/Inspector/ConsoleTab.js +48 -48
- package/dist/esm/components/Inspector/CrashTab.js +203 -168
- package/dist/esm/components/Inspector/DebuggingTab.js +29 -29
- package/dist/esm/components/Inspector/DeviceInfoTab.js +75 -75
- package/dist/esm/components/Inspector/FabLauncher.js +57 -60
- package/dist/esm/components/Inspector/FeatureUnderDevNotice.js +7 -7
- package/dist/esm/components/Inspector/FloatingCaptureWidget.d.ts +3 -0
- package/dist/esm/components/Inspector/FloatingCaptureWidget.js +54 -0
- package/dist/esm/components/Inspector/GlobalCrashScreenModal.d.ts +11 -0
- package/dist/esm/components/Inspector/GlobalCrashScreenModal.js +234 -0
- package/dist/esm/components/Inspector/InspectorHeader.js +162 -152
- package/dist/esm/components/Inspector/LanguageSelectorModal.d.ts +15 -0
- package/dist/esm/components/Inspector/LanguageSelectorModal.js +172 -0
- package/dist/esm/components/Inspector/MainScreen.js +130 -110
- package/dist/esm/components/Inspector/MediaGalleryTab.js +83 -78
- package/dist/esm/components/Inspector/MediaPreviewModal.d.ts +36 -0
- package/dist/esm/components/Inspector/MediaPreviewModal.js +345 -139
- package/dist/esm/components/Inspector/NetworkTab.js +130 -130
- package/dist/esm/components/Inspector/NpmUpdateToast.js +1 -1
- package/dist/esm/components/Inspector/PushCard.d.ts +3 -2
- package/dist/esm/components/Inspector/PushCard.js +23 -22
- package/dist/esm/components/Inspector/PushDetail.js +45 -36
- package/dist/esm/components/Inspector/PushTab.js +23 -23
- package/dist/esm/components/Inspector/ReduxDetail.js +42 -42
- package/dist/esm/components/Inspector/ReduxTab.js +20 -18
- package/dist/esm/components/Inspector/SecondaryTelemetryStrip.d.ts +2 -0
- package/dist/esm/components/Inspector/SecondaryTelemetryStrip.js +43 -0
- package/dist/esm/components/Inspector/SettingsPanel.js +526 -378
- package/dist/esm/components/Inspector/SocketCard.d.ts +5 -0
- package/dist/esm/components/Inspector/SocketCard.js +116 -0
- package/dist/esm/components/Inspector/SocketDetail.d.ts +4 -0
- package/dist/esm/components/Inspector/SocketDetail.js +327 -0
- package/dist/esm/components/Inspector/SocketFilterModal.d.ts +13 -0
- package/dist/esm/components/Inspector/SocketFilterModal.js +69 -0
- package/dist/esm/components/Inspector/SocketTab.d.ts +3 -0
- package/dist/esm/components/Inspector/SocketTab.js +112 -0
- package/dist/esm/components/Inspector/StorageTab.js +139 -137
- package/dist/esm/components/Inspector/SupportModal.d.ts +7 -0
- package/dist/esm/components/Inspector/SupportModal.js +125 -0
- package/dist/esm/components/Inspector/SupportPage.d.ts +5 -0
- package/dist/esm/components/Inspector/SupportPage.js +227 -0
- package/dist/esm/components/Inspector/TabBar.js +36 -35
- package/dist/esm/components/Inspector/UpdateAvailableModal.js +22 -22
- package/dist/esm/components/JsonViewer.js +66 -64
- package/dist/esm/components/LogCard.d.ts +3 -2
- package/dist/esm/components/LogCard.js +57 -55
- package/dist/esm/components/LogSyntaxHighlighter.js +5 -5
- package/dist/esm/components/ModuleErrorBoundary.js +23 -23
- package/dist/esm/components/NetworkIcons.d.ts +42 -0
- package/dist/esm/components/NetworkIcons.js +139 -6
- package/dist/esm/components/SegmentedTabs.js +7 -7
- package/dist/esm/constants/version.d.ts +1 -1
- package/dist/esm/constants/version.js +1 -1
- package/dist/esm/crash.d.ts +1 -1
- package/dist/esm/crash.js +1 -1
- package/dist/esm/customHooks/crashHandler.d.ts +2 -1
- package/dist/esm/customHooks/crashHandler.js +7 -7
- package/dist/esm/customHooks/socketLogger.d.ts +26 -0
- package/dist/esm/customHooks/socketLogger.js +2 -0
- package/dist/esm/editor.d.ts +13 -0
- package/dist/esm/editor.js +1 -0
- package/dist/esm/helpers/index.d.ts +1 -0
- package/dist/esm/helpers/index.js +4 -4
- package/dist/esm/helpers/memoryManager.d.ts +1 -0
- package/dist/esm/helpers/memoryManager.js +1 -1
- package/dist/esm/helpers/searchQueryParser.d.ts +1 -1
- package/dist/esm/helpers/searchQueryParser.js +5 -1
- package/dist/esm/helpers/settingsStore.d.ts +1 -0
- package/dist/esm/helpers/settingsStore.js +1 -1
- package/dist/esm/helpers/shareFormatter.d.ts +3 -1
- package/dist/esm/helpers/shareFormatter.js +8 -7
- package/dist/esm/helpers/telemetry.js +1 -1
- package/dist/esm/i18n/index.d.ts +99 -1
- package/dist/esm/i18n/index.js +1 -1
- package/dist/esm/i18n/locales/ar.json +1 -1
- package/dist/esm/i18n/locales/bn.json +1 -0
- package/dist/esm/i18n/locales/de.json +1 -1
- package/dist/esm/i18n/locales/en.json +1 -1
- package/dist/esm/i18n/locales/es.json +1 -1
- package/dist/esm/i18n/locales/fr.json +1 -1
- package/dist/esm/i18n/locales/gu.json +1 -0
- package/dist/esm/i18n/locales/hi.json +1 -1
- package/dist/esm/i18n/locales/id.json +1 -0
- package/dist/esm/i18n/locales/it.json +1 -0
- package/dist/esm/i18n/locales/ja.json +1 -1
- package/dist/esm/i18n/locales/kn.json +1 -0
- package/dist/esm/i18n/locales/ko.json +1 -1
- package/dist/esm/i18n/locales/ml.json +1 -0
- package/dist/esm/i18n/locales/mr.json +1 -0
- package/dist/esm/i18n/locales/nl.json +1 -0
- package/dist/esm/i18n/locales/pa.json +1 -0
- package/dist/esm/i18n/locales/pl.json +1 -0
- package/dist/esm/i18n/locales/pt.json +1 -1
- package/dist/esm/i18n/locales/ru.json +1 -1
- package/dist/esm/i18n/locales/ta.json +1 -0
- package/dist/esm/i18n/locales/te.json +1 -0
- package/dist/esm/i18n/locales/tr.json +1 -0
- package/dist/esm/i18n/locales/vi.json +1 -0
- package/dist/esm/i18n/locales/zh.json +1 -1
- package/dist/esm/index.d.ts +16 -13
- package/dist/esm/index.js +8 -7
- package/dist/esm/native/NativeInspector.d.ts +4 -0
- package/dist/esm/native/NativeInspector.js +1 -1
- package/dist/esm/native/NativeNetworkInspector.d.ts +4 -0
- package/dist/esm/socket.d.ts +4 -0
- package/dist/esm/socket.js +1 -0
- package/dist/esm/styles/AppColors.d.ts +42 -2
- package/dist/esm/styles/AppColors.js +1 -1
- package/dist/esm/styles/common.js +1 -1
- package/dist/esm/styles/index.d.ts +30 -0
- package/dist/esm/styles/index.js +1 -1
- package/dist/esm/types/editor.d.ts +96 -0
- package/dist/esm/types/editor.js +1 -0
- package/dist/esm/types/enums.d.ts +40 -0
- package/dist/esm/types/enums.js +1 -1
- package/dist/esm/types/interfaces.d.ts +143 -1
- package/editor.d.ts +1 -0
- package/editor.js +1 -0
- package/ios/NetworkInspectorModule.mm +531 -12
- package/package.json +213 -2
- package/react-native-inapp-inspector.podspec +1 -1
- package/src/native/NativeInspector.ts +65 -4
- 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()),
|
|
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),
|
|
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(),
|
|
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;
|
|
@@ -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",
|
|
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,
|
|
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")
|
|
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})}
|
|
@@ -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
|
|
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
|
|
2
|
-
`)}function formatPushReport(e){const
|
|
3
|
-
`)}function formatCrashReport(e){const
|
|
4
|
-
`)}function formatAnalyticsReport(e){const
|
|
5
|
-
`)}function formatReduxReport(e){const
|
|
6
|
-
`)}function formatLogReport(e){const
|
|
7
|
-
`)}async function triggerNativeShare(e,
|
|
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(
|
|
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&¤tLanguage!=="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;
|