react-native-inapp-inspector 2.3.16 → 2.3.17
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/android/src/main/java/com/inappinspector/NetworkInspectorModule.kt +438 -7
- package/bin/cli.js +0 -0
- package/dist/commonjs/capture.d.ts +26 -0
- package/dist/commonjs/capture.js +32 -0
- package/dist/commonjs/components/AnalyticsEventCard.js +11 -11
- package/dist/commonjs/components/AnimatedEntrance.js +6 -70
- package/dist/commonjs/components/DomainHeader.js +3 -48
- package/dist/commonjs/components/EmptyState.js +2 -2
- package/dist/commonjs/components/HeadersSection.js +14 -34
- package/dist/commonjs/components/Inspector/AnalyticsTab.js +1 -2
- package/dist/commonjs/components/Inspector/ConsoleTab.js +1 -1
- package/dist/commonjs/components/Inspector/CrashTab.js +4 -2
- package/dist/commonjs/components/Inspector/DebuggingTab.js +2 -2
- package/dist/commonjs/components/Inspector/InspectorHeader.js +651 -313
- package/dist/commonjs/components/Inspector/MainScreen.js +25 -70
- package/dist/commonjs/components/Inspector/MediaGalleryTab.d.ts +2 -0
- package/dist/commonjs/components/Inspector/MediaGalleryTab.js +307 -0
- package/dist/commonjs/components/Inspector/MediaPreviewModal.d.ts +11 -0
- package/dist/commonjs/components/Inspector/MediaPreviewModal.js +393 -0
- package/dist/commonjs/components/Inspector/NetworkTab.js +183 -182
- package/dist/commonjs/components/Inspector/NpmUpdateToast.js +4 -9
- package/dist/commonjs/components/Inspector/ReduxTab.js +4 -2
- package/dist/commonjs/components/Inspector/SettingsPanel.js +245 -0
- package/dist/commonjs/components/Inspector/SkeletonPlaceholder.js +2 -2
- package/dist/commonjs/components/Inspector/StorageTab.js +3 -3
- package/dist/commonjs/components/Inspector/TabBar.js +5 -10
- package/dist/commonjs/components/Inspector/UpdateAvailableModal.js +5 -10
- package/dist/commonjs/components/JsonViewer.js +43 -20
- package/dist/commonjs/components/LogCard.js +5 -5
- package/dist/commonjs/components/MetaAccordion.js +78 -80
- package/dist/commonjs/components/NetworkIcons.d.ts +8 -0
- package/dist/commonjs/components/NetworkIcons.js +51 -1
- package/dist/commonjs/components/SectionHeader.js +3 -48
- package/dist/commonjs/components/SkeletonPlaceholder.js +2 -2
- package/dist/commonjs/components/SourcePageCard.js +43 -45
- package/dist/commonjs/components/Toast.js +4 -4
- package/dist/commonjs/components/TouchableScale.js +9 -65
- package/dist/commonjs/components/TreeNode.js +2 -14
- package/dist/commonjs/constants/telemetryConfig.d.ts +3 -3
- package/dist/commonjs/constants/telemetryConfig.js +3 -3
- package/dist/commonjs/constants/version.d.ts +1 -1
- package/dist/commonjs/constants/version.js +1 -1
- package/dist/commonjs/customHooks/useAccordion.d.ts +3 -8
- package/dist/commonjs/customHooks/useAccordion.js +6 -36
- package/dist/commonjs/helpers/index.d.ts +2 -1
- package/dist/commonjs/helpers/index.js +10 -1
- package/dist/commonjs/i18n/locales/en.json +66 -2
- package/dist/commonjs/index.d.ts +1 -0
- package/dist/commonjs/index.js +39 -22
- package/dist/commonjs/native/NativeInspector.d.ts +60 -0
- package/dist/commonjs/native/NativeInspector.js +109 -2
- package/dist/commonjs/native/NativeNetworkInspector.d.ts +8 -0
- package/dist/commonjs/styles/AppColors.d.ts +36 -0
- package/dist/commonjs/styles/AppColors.js +36 -0
- package/dist/commonjs/styles/index.d.ts +3 -1
- package/dist/commonjs/styles/index.js +3 -1
- package/dist/commonjs/types/enums.d.ts +1 -0
- package/dist/commonjs/types/enums.js +1 -0
- package/dist/commonjs/types/index.d.ts +2 -2
- package/dist/esm/capture.d.ts +26 -0
- package/dist/esm/capture.js +29 -0
- package/dist/esm/components/AnalyticsEventCard.js +11 -11
- package/dist/esm/components/AnimatedEntrance.js +4 -38
- package/dist/esm/components/DomainHeader.js +4 -16
- package/dist/esm/components/EmptyState.js +2 -2
- package/dist/esm/components/HeadersSection.js +16 -36
- package/dist/esm/components/Inspector/AnalyticsTab.js +2 -3
- package/dist/esm/components/Inspector/ConsoleTab.js +2 -2
- package/dist/esm/components/Inspector/CrashTab.js +5 -3
- package/dist/esm/components/Inspector/DebuggingTab.js +3 -3
- package/dist/esm/components/Inspector/InspectorHeader.js +654 -316
- package/dist/esm/components/Inspector/MainScreen.js +25 -70
- package/dist/esm/components/Inspector/MediaGalleryTab.d.ts +2 -0
- package/dist/esm/components/Inspector/MediaGalleryTab.js +267 -0
- package/dist/esm/components/Inspector/MediaPreviewModal.d.ts +11 -0
- package/dist/esm/components/Inspector/MediaPreviewModal.js +353 -0
- package/dist/esm/components/Inspector/NetworkTab.js +185 -184
- package/dist/esm/components/Inspector/NpmUpdateToast.js +5 -10
- package/dist/esm/components/Inspector/ReduxTab.js +5 -3
- package/dist/esm/components/Inspector/SettingsPanel.js +246 -1
- package/dist/esm/components/Inspector/SkeletonPlaceholder.js +2 -2
- package/dist/esm/components/Inspector/StorageTab.js +3 -3
- package/dist/esm/components/Inspector/TabBar.js +6 -11
- package/dist/esm/components/Inspector/UpdateAvailableModal.js +6 -11
- package/dist/esm/components/JsonViewer.js +43 -20
- package/dist/esm/components/LogCard.js +5 -5
- package/dist/esm/components/MetaAccordion.js +79 -81
- package/dist/esm/components/NetworkIcons.d.ts +8 -0
- package/dist/esm/components/NetworkIcons.js +42 -0
- package/dist/esm/components/SectionHeader.js +4 -16
- package/dist/esm/components/SkeletonPlaceholder.js +2 -2
- package/dist/esm/components/SourcePageCard.js +44 -46
- package/dist/esm/components/Toast.js +4 -4
- package/dist/esm/components/TouchableScale.js +7 -33
- package/dist/esm/components/TreeNode.js +4 -16
- package/dist/esm/constants/telemetryConfig.d.ts +3 -3
- package/dist/esm/constants/telemetryConfig.js +3 -3
- package/dist/esm/constants/version.d.ts +1 -1
- package/dist/esm/constants/version.js +1 -1
- package/dist/esm/customHooks/useAccordion.d.ts +3 -8
- package/dist/esm/customHooks/useAccordion.js +7 -37
- package/dist/esm/helpers/index.d.ts +2 -1
- package/dist/esm/helpers/index.js +8 -0
- package/dist/esm/i18n/locales/en.json +66 -2
- package/dist/esm/index.d.ts +1 -0
- package/dist/esm/index.js +36 -21
- package/dist/esm/native/NativeInspector.d.ts +60 -0
- package/dist/esm/native/NativeInspector.js +100 -1
- package/dist/esm/native/NativeNetworkInspector.d.ts +8 -0
- package/dist/esm/styles/AppColors.d.ts +36 -0
- package/dist/esm/styles/AppColors.js +36 -0
- package/dist/esm/styles/index.d.ts +3 -1
- package/dist/esm/styles/index.js +3 -1
- package/dist/esm/types/enums.d.ts +1 -0
- package/dist/esm/types/enums.js +1 -0
- package/dist/esm/types/index.d.ts +2 -2
- package/ios/NetworkInspectorModule.h +1 -0
- package/ios/NetworkInspectorModule.mm +736 -7
- package/package.json +10 -2
- package/react-native-inapp-inspector.podspec +1 -0
- package/src/capture.ts +101 -0
- package/src/components/AnalyticsEventCard.tsx +15 -13
- package/src/components/AnimatedEntrance.tsx +3 -47
- package/src/components/DomainHeader.tsx +4 -17
- package/src/components/EmptyState.tsx +2 -2
- package/src/components/HeadersSection.tsx +31 -56
- package/src/components/Inspector/AnalyticsTab.tsx +2 -2
- package/src/components/Inspector/ConsoleTab.tsx +2 -1
- package/src/components/Inspector/CrashTab.tsx +4 -2
- package/src/components/Inspector/DebuggingTab.tsx +2 -2
- package/src/components/Inspector/InspectorHeader.tsx +1215 -789
- package/src/components/Inspector/MainScreen.tsx +44 -85
- package/src/components/Inspector/MediaGalleryTab.tsx +355 -0
- package/src/components/Inspector/MediaPreviewModal.tsx +435 -0
- package/src/components/Inspector/NetworkTab.tsx +14 -15
- package/src/components/Inspector/NpmUpdateToast.tsx +4 -9
- package/src/components/Inspector/ReduxTab.tsx +5 -2
- package/src/components/Inspector/SettingsPanel.tsx +303 -0
- package/src/components/Inspector/SkeletonPlaceholder.tsx +2 -2
- package/src/components/Inspector/StorageTab.tsx +3 -3
- package/src/components/Inspector/TabBar.tsx +6 -12
- package/src/components/Inspector/UpdateAvailableModal.tsx +6 -10
- package/src/components/JsonViewer.tsx +101 -60
- package/src/components/LogCard.tsx +10 -8
- package/src/components/MetaAccordion.tsx +6 -6
- package/src/components/NetworkIcons.tsx +150 -0
- package/src/components/SectionHeader.tsx +4 -16
- package/src/components/SkeletonPlaceholder.tsx +2 -2
- package/src/components/SourcePageCard.tsx +57 -55
- package/src/components/Toast.tsx +4 -4
- package/src/components/TouchableScale.tsx +8 -38
- package/src/components/TreeNode.tsx +5 -20
- package/src/constants/telemetryConfig.ts +3 -5
- package/src/constants/version.ts +1 -1
- package/src/customHooks/useAccordion.tsx +10 -43
- package/src/helpers/index.ts +10 -1
- package/src/i18n/locales/en.json +69 -2
- package/src/index.tsx +51 -23
- package/src/native/NativeInspector.ts +186 -1
- package/src/native/NativeNetworkInspector.ts +9 -0
- package/src/styles/AppColors.ts +38 -0
- package/src/styles/index.ts +3 -1
- package/src/types/enums.ts +3 -0
- package/src/types/index.ts +2 -2
- package/android/.gradle/8.9/checksums/checksums.lock +0 -0
- package/android/.gradle/8.9/checksums/md5-checksums.bin +0 -0
- package/android/.gradle/8.9/checksums/sha1-checksums.bin +0 -0
- package/android/.gradle/8.9/dependencies-accessors/gc.properties +0 -0
- package/android/.gradle/8.9/executionHistory/executionHistory.lock +0 -0
- package/android/.gradle/8.9/fileChanges/last-build.bin +0 -0
- package/android/.gradle/8.9/fileHashes/fileHashes.lock +0 -0
- package/android/.gradle/8.9/gc.properties +0 -0
- package/android/.gradle/9.2.0/checksums/checksums.lock +0 -0
- package/android/.gradle/9.2.0/fileChanges/last-build.bin +0 -0
- package/android/.gradle/9.2.0/fileHashes/fileHashes.bin +0 -0
- package/android/.gradle/9.2.0/fileHashes/fileHashes.lock +0 -0
- package/android/.gradle/9.2.0/gc.properties +0 -0
- package/android/.gradle/buildOutputCleanup/buildOutputCleanup.lock +0 -0
- package/android/.gradle/buildOutputCleanup/cache.properties +0 -2
- package/android/.gradle/vcs-1/gc.properties +0 -0
- package/android/build/.transforms/6683d6eeaa3e1dfa689c3385111a0386/results.bin +0 -1
- package/android/build/.transforms/6683d6eeaa3e1dfa689c3385111a0386/transformed/classes/classes_dex/classes.dex +0 -0
- package/android/build/.transforms/9d2a3e5e0f0ea07cafb0c0bf290630ee/results.bin +0 -1
- package/android/build/.transforms/9d2a3e5e0f0ea07cafb0c0bf290630ee/transformed/bundleLibRuntimeToDirDebug/bundleLibRuntimeToDirDebug_dex/com/inappinspector/BuildConfig.dex +0 -0
- package/android/build/.transforms/9d2a3e5e0f0ea07cafb0c0bf290630ee/transformed/bundleLibRuntimeToDirDebug/bundleLibRuntimeToDirDebug_dex/com/inappinspector/InAppInspectorFloatingView$iconView$1.dex +0 -0
- package/android/build/.transforms/9d2a3e5e0f0ea07cafb0c0bf290630ee/transformed/bundleLibRuntimeToDirDebug/bundleLibRuntimeToDirDebug_dex/com/inappinspector/InAppInspectorFloatingView.dex +0 -0
- package/android/build/.transforms/9d2a3e5e0f0ea07cafb0c0bf290630ee/transformed/bundleLibRuntimeToDirDebug/bundleLibRuntimeToDirDebug_dex/com/inappinspector/NativeNetworkInspectorSpec.dex +0 -0
- package/android/build/.transforms/9d2a3e5e0f0ea07cafb0c0bf290630ee/transformed/bundleLibRuntimeToDirDebug/bundleLibRuntimeToDirDebug_dex/com/inappinspector/NetworkInspectorModule$Companion.dex +0 -0
- package/android/build/.transforms/9d2a3e5e0f0ea07cafb0c0bf290630ee/transformed/bundleLibRuntimeToDirDebug/bundleLibRuntimeToDirDebug_dex/com/inappinspector/NetworkInspectorModule$frameCallback$1.dex +0 -0
- package/android/build/.transforms/9d2a3e5e0f0ea07cafb0c0bf290630ee/transformed/bundleLibRuntimeToDirDebug/bundleLibRuntimeToDirDebug_dex/com/inappinspector/NetworkInspectorModule$shakeListener$1.dex +0 -0
- package/android/build/.transforms/9d2a3e5e0f0ea07cafb0c0bf290630ee/transformed/bundleLibRuntimeToDirDebug/bundleLibRuntimeToDirDebug_dex/com/inappinspector/NetworkInspectorModule.dex +0 -0
- package/android/build/.transforms/9d2a3e5e0f0ea07cafb0c0bf290630ee/transformed/bundleLibRuntimeToDirDebug/bundleLibRuntimeToDirDebug_dex/com/inappinspector/NetworkInspectorPackage.dex +0 -0
- package/android/build/.transforms/9d2a3e5e0f0ea07cafb0c0bf290630ee/transformed/bundleLibRuntimeToDirDebug/desugar_graph.bin +0 -0
- package/android/build/generated/source/buildConfig/debug/com/inappinspector/BuildConfig.java +0 -10
- package/android/build/generated/source/codegen/java/com/inappinspector/NativeNetworkInspectorSpec.java +0 -104
- package/android/build/generated/source/codegen/jni/CMakeLists.txt +0 -28
- package/android/build/generated/source/codegen/jni/RNInAppInspectorSpec-generated.cpp +0 -128
- package/android/build/generated/source/codegen/jni/RNInAppInspectorSpec.h +0 -31
- package/android/build/generated/source/codegen/jni/react/renderer/components/RNInAppInspectorSpec/ComponentDescriptors.cpp +0 -22
- package/android/build/generated/source/codegen/jni/react/renderer/components/RNInAppInspectorSpec/ComponentDescriptors.h +0 -24
- package/android/build/generated/source/codegen/jni/react/renderer/components/RNInAppInspectorSpec/EventEmitters.cpp +0 -16
- package/android/build/generated/source/codegen/jni/react/renderer/components/RNInAppInspectorSpec/EventEmitters.h +0 -17
- package/android/build/generated/source/codegen/jni/react/renderer/components/RNInAppInspectorSpec/Props.cpp +0 -19
- package/android/build/generated/source/codegen/jni/react/renderer/components/RNInAppInspectorSpec/Props.h +0 -18
- package/android/build/generated/source/codegen/jni/react/renderer/components/RNInAppInspectorSpec/RNInAppInspectorSpecJSI.h +0 -177
- package/android/build/generated/source/codegen/jni/react/renderer/components/RNInAppInspectorSpec/ShadowNodes.cpp +0 -17
- package/android/build/generated/source/codegen/jni/react/renderer/components/RNInAppInspectorSpec/ShadowNodes.h +0 -23
- package/android/build/generated/source/codegen/jni/react/renderer/components/RNInAppInspectorSpec/States.cpp +0 -16
- package/android/build/generated/source/codegen/jni/react/renderer/components/RNInAppInspectorSpec/States.h +0 -20
- package/android/build/generated/source/codegen/schema.json +0 -1
- package/android/build/intermediates/aapt_friendly_merged_manifests/debug/processDebugManifest/aapt/AndroidManifest.xml +0 -7
- package/android/build/intermediates/aapt_friendly_merged_manifests/debug/processDebugManifest/aapt/output-metadata.json +0 -18
- package/android/build/intermediates/aar_main_jar/debug/syncDebugLibJars/classes.jar +0 -0
- package/android/build/intermediates/aar_metadata/debug/writeDebugAarMetadata/aar-metadata.properties +0 -6
- package/android/build/intermediates/annotation_processor_list/debug/javaPreCompileDebug/annotationProcessors.json +0 -1
- package/android/build/intermediates/annotations_typedef_file/debug/extractDebugAnnotations/typedefs.txt +0 -0
- package/android/build/intermediates/compile_library_classes_jar/debug/bundleLibCompileToJarDebug/classes.jar +0 -0
- package/android/build/intermediates/compile_r_class_jar/debug/generateDebugRFile/R.jar +0 -0
- package/android/build/intermediates/compile_symbol_list/debug/generateDebugRFile/R.txt +0 -0
- package/android/build/intermediates/incremental/debug/packageDebugResources/compile-file-map.properties +0 -1
- package/android/build/intermediates/incremental/debug/packageDebugResources/merger.xml +0 -2
- package/android/build/intermediates/incremental/debug-mergeJavaRes/merge-state +0 -0
- package/android/build/intermediates/incremental/mergeDebugJniLibFolders/merger.xml +0 -2
- package/android/build/intermediates/incremental/mergeDebugShaders/merger.xml +0 -2
- package/android/build/intermediates/incremental/packageDebugAssets/merger.xml +0 -2
- package/android/build/intermediates/java_res/debug/processDebugJavaRes/out/META-INF/react-native-inapp-inspector_debug.kotlin_module +0 -0
- package/android/build/intermediates/javac/debug/compileDebugJavaWithJavac/classes/com/inappinspector/BuildConfig.class +0 -0
- package/android/build/intermediates/javac/debug/compileDebugJavaWithJavac/classes/com/inappinspector/NativeNetworkInspectorSpec.class +0 -0
- package/android/build/intermediates/local_only_symbol_list/debug/parseDebugLocalResources/R-def.txt +0 -2
- package/android/build/intermediates/manifest_merge_blame_file/debug/processDebugManifest/manifest-merger-blame-debug-report.txt +0 -7
- package/android/build/intermediates/merged_java_res/debug/mergeDebugJavaResource/feature-react-native-inapp-inspector.jar +0 -0
- package/android/build/intermediates/merged_manifest/debug/processDebugManifest/AndroidManifest.xml +0 -7
- package/android/build/intermediates/navigation_json/debug/extractDeepLinksDebug/navigation.json +0 -1
- package/android/build/intermediates/nested_resources_validation_report/debug/generateDebugResources/nestedResourcesValidationReport.txt +0 -1
- package/android/build/intermediates/runtime_library_classes_dir/debug/bundleLibRuntimeToDirDebug/META-INF/react-native-inapp-inspector_debug.kotlin_module +0 -0
- package/android/build/intermediates/runtime_library_classes_dir/debug/bundleLibRuntimeToDirDebug/com/inappinspector/BuildConfig.class +0 -0
- package/android/build/intermediates/runtime_library_classes_dir/debug/bundleLibRuntimeToDirDebug/com/inappinspector/InAppInspectorFloatingView$iconView$1.class +0 -0
- package/android/build/intermediates/runtime_library_classes_dir/debug/bundleLibRuntimeToDirDebug/com/inappinspector/InAppInspectorFloatingView.class +0 -0
- package/android/build/intermediates/runtime_library_classes_dir/debug/bundleLibRuntimeToDirDebug/com/inappinspector/NativeNetworkInspectorSpec.class +0 -0
- package/android/build/intermediates/runtime_library_classes_dir/debug/bundleLibRuntimeToDirDebug/com/inappinspector/NetworkInspectorModule$Companion.class +0 -0
- package/android/build/intermediates/runtime_library_classes_dir/debug/bundleLibRuntimeToDirDebug/com/inappinspector/NetworkInspectorModule$frameCallback$1.class +0 -0
- package/android/build/intermediates/runtime_library_classes_dir/debug/bundleLibRuntimeToDirDebug/com/inappinspector/NetworkInspectorModule$shakeListener$1.class +0 -0
- package/android/build/intermediates/runtime_library_classes_dir/debug/bundleLibRuntimeToDirDebug/com/inappinspector/NetworkInspectorModule.class +0 -0
- package/android/build/intermediates/runtime_library_classes_dir/debug/bundleLibRuntimeToDirDebug/com/inappinspector/NetworkInspectorPackage.class +0 -0
- package/android/build/intermediates/runtime_library_classes_jar/debug/bundleLibRuntimeToJarDebug/classes.jar +0 -0
- package/android/build/intermediates/symbol_list_with_package_name/debug/generateDebugRFile/package-aware-r.txt +0 -1
- package/android/build/kotlin/compileDebugKotlin/cacheable/caches-jvm/inputs/source-to-output.tab +0 -0
- package/android/build/kotlin/compileDebugKotlin/cacheable/caches-jvm/inputs/source-to-output.tab.keystream +0 -0
- package/android/build/kotlin/compileDebugKotlin/cacheable/caches-jvm/inputs/source-to-output.tab.keystream.len +0 -0
- package/android/build/kotlin/compileDebugKotlin/cacheable/caches-jvm/inputs/source-to-output.tab.len +0 -0
- package/android/build/kotlin/compileDebugKotlin/cacheable/caches-jvm/inputs/source-to-output.tab.values.at +0 -0
- package/android/build/kotlin/compileDebugKotlin/cacheable/caches-jvm/inputs/source-to-output.tab_i +0 -0
- package/android/build/kotlin/compileDebugKotlin/cacheable/caches-jvm/inputs/source-to-output.tab_i.len +0 -0
- package/android/build/kotlin/compileDebugKotlin/cacheable/caches-jvm/jvm/kotlin/class-attributes.tab +0 -0
- package/android/build/kotlin/compileDebugKotlin/cacheable/caches-jvm/jvm/kotlin/class-attributes.tab.keystream +0 -0
- package/android/build/kotlin/compileDebugKotlin/cacheable/caches-jvm/jvm/kotlin/class-attributes.tab.keystream.len +0 -0
- package/android/build/kotlin/compileDebugKotlin/cacheable/caches-jvm/jvm/kotlin/class-attributes.tab.len +0 -0
- package/android/build/kotlin/compileDebugKotlin/cacheable/caches-jvm/jvm/kotlin/class-attributes.tab.values.at +0 -0
- package/android/build/kotlin/compileDebugKotlin/cacheable/caches-jvm/jvm/kotlin/class-attributes.tab_i +0 -0
- package/android/build/kotlin/compileDebugKotlin/cacheable/caches-jvm/jvm/kotlin/class-attributes.tab_i.len +0 -0
- package/android/build/kotlin/compileDebugKotlin/cacheable/caches-jvm/jvm/kotlin/class-fq-name-to-source.tab +0 -0
- package/android/build/kotlin/compileDebugKotlin/cacheable/caches-jvm/jvm/kotlin/class-fq-name-to-source.tab.keystream +0 -0
- package/android/build/kotlin/compileDebugKotlin/cacheable/caches-jvm/jvm/kotlin/class-fq-name-to-source.tab.keystream.len +0 -0
- package/android/build/kotlin/compileDebugKotlin/cacheable/caches-jvm/jvm/kotlin/class-fq-name-to-source.tab.len +0 -0
- package/android/build/kotlin/compileDebugKotlin/cacheable/caches-jvm/jvm/kotlin/class-fq-name-to-source.tab.values.at +0 -0
- package/android/build/kotlin/compileDebugKotlin/cacheable/caches-jvm/jvm/kotlin/class-fq-name-to-source.tab_i +0 -0
- package/android/build/kotlin/compileDebugKotlin/cacheable/caches-jvm/jvm/kotlin/class-fq-name-to-source.tab_i.len +0 -0
- package/android/build/kotlin/compileDebugKotlin/cacheable/caches-jvm/jvm/kotlin/constants.tab +0 -0
- package/android/build/kotlin/compileDebugKotlin/cacheable/caches-jvm/jvm/kotlin/constants.tab.keystream +0 -0
- package/android/build/kotlin/compileDebugKotlin/cacheable/caches-jvm/jvm/kotlin/constants.tab.keystream.len +0 -0
- package/android/build/kotlin/compileDebugKotlin/cacheable/caches-jvm/jvm/kotlin/constants.tab.len +0 -0
- package/android/build/kotlin/compileDebugKotlin/cacheable/caches-jvm/jvm/kotlin/constants.tab.values.at +0 -0
- package/android/build/kotlin/compileDebugKotlin/cacheable/caches-jvm/jvm/kotlin/constants.tab_i +0 -0
- package/android/build/kotlin/compileDebugKotlin/cacheable/caches-jvm/jvm/kotlin/constants.tab_i.len +0 -0
- package/android/build/kotlin/compileDebugKotlin/cacheable/caches-jvm/jvm/kotlin/internal-name-to-source.tab +0 -0
- package/android/build/kotlin/compileDebugKotlin/cacheable/caches-jvm/jvm/kotlin/internal-name-to-source.tab.keystream +0 -0
- package/android/build/kotlin/compileDebugKotlin/cacheable/caches-jvm/jvm/kotlin/internal-name-to-source.tab.keystream.len +0 -0
- package/android/build/kotlin/compileDebugKotlin/cacheable/caches-jvm/jvm/kotlin/internal-name-to-source.tab.len +0 -0
- package/android/build/kotlin/compileDebugKotlin/cacheable/caches-jvm/jvm/kotlin/internal-name-to-source.tab.values.at +0 -0
- package/android/build/kotlin/compileDebugKotlin/cacheable/caches-jvm/jvm/kotlin/internal-name-to-source.tab_i +0 -0
- package/android/build/kotlin/compileDebugKotlin/cacheable/caches-jvm/jvm/kotlin/internal-name-to-source.tab_i.len +0 -0
- package/android/build/kotlin/compileDebugKotlin/cacheable/caches-jvm/jvm/kotlin/proto.tab +0 -0
- package/android/build/kotlin/compileDebugKotlin/cacheable/caches-jvm/jvm/kotlin/proto.tab.keystream +0 -0
- package/android/build/kotlin/compileDebugKotlin/cacheable/caches-jvm/jvm/kotlin/proto.tab.keystream.len +0 -0
- package/android/build/kotlin/compileDebugKotlin/cacheable/caches-jvm/jvm/kotlin/proto.tab.len +0 -0
- package/android/build/kotlin/compileDebugKotlin/cacheable/caches-jvm/jvm/kotlin/proto.tab.values.at +0 -0
- package/android/build/kotlin/compileDebugKotlin/cacheable/caches-jvm/jvm/kotlin/proto.tab_i +0 -0
- package/android/build/kotlin/compileDebugKotlin/cacheable/caches-jvm/jvm/kotlin/proto.tab_i.len +0 -0
- package/android/build/kotlin/compileDebugKotlin/cacheable/caches-jvm/jvm/kotlin/source-to-classes.tab +0 -0
- package/android/build/kotlin/compileDebugKotlin/cacheable/caches-jvm/jvm/kotlin/source-to-classes.tab.keystream +0 -0
- package/android/build/kotlin/compileDebugKotlin/cacheable/caches-jvm/jvm/kotlin/source-to-classes.tab.keystream.len +0 -0
- package/android/build/kotlin/compileDebugKotlin/cacheable/caches-jvm/jvm/kotlin/source-to-classes.tab.len +0 -0
- package/android/build/kotlin/compileDebugKotlin/cacheable/caches-jvm/jvm/kotlin/source-to-classes.tab.values.at +0 -0
- package/android/build/kotlin/compileDebugKotlin/cacheable/caches-jvm/jvm/kotlin/source-to-classes.tab_i +0 -0
- package/android/build/kotlin/compileDebugKotlin/cacheable/caches-jvm/jvm/kotlin/source-to-classes.tab_i.len +0 -0
- package/android/build/kotlin/compileDebugKotlin/cacheable/caches-jvm/jvm/kotlin/subtypes.tab +0 -0
- package/android/build/kotlin/compileDebugKotlin/cacheable/caches-jvm/jvm/kotlin/subtypes.tab.keystream +0 -0
- package/android/build/kotlin/compileDebugKotlin/cacheable/caches-jvm/jvm/kotlin/subtypes.tab.keystream.len +0 -0
- package/android/build/kotlin/compileDebugKotlin/cacheable/caches-jvm/jvm/kotlin/subtypes.tab.len +0 -0
- package/android/build/kotlin/compileDebugKotlin/cacheable/caches-jvm/jvm/kotlin/subtypes.tab.values.at +0 -0
- package/android/build/kotlin/compileDebugKotlin/cacheable/caches-jvm/jvm/kotlin/subtypes.tab_i +0 -0
- package/android/build/kotlin/compileDebugKotlin/cacheable/caches-jvm/jvm/kotlin/subtypes.tab_i.len +0 -0
- package/android/build/kotlin/compileDebugKotlin/cacheable/caches-jvm/jvm/kotlin/supertypes.tab +0 -0
- package/android/build/kotlin/compileDebugKotlin/cacheable/caches-jvm/jvm/kotlin/supertypes.tab.keystream +0 -0
- package/android/build/kotlin/compileDebugKotlin/cacheable/caches-jvm/jvm/kotlin/supertypes.tab.keystream.len +0 -0
- package/android/build/kotlin/compileDebugKotlin/cacheable/caches-jvm/jvm/kotlin/supertypes.tab.len +0 -0
- package/android/build/kotlin/compileDebugKotlin/cacheable/caches-jvm/jvm/kotlin/supertypes.tab.values.at +0 -0
- package/android/build/kotlin/compileDebugKotlin/cacheable/caches-jvm/jvm/kotlin/supertypes.tab_i +0 -0
- package/android/build/kotlin/compileDebugKotlin/cacheable/caches-jvm/jvm/kotlin/supertypes.tab_i.len +0 -0
- package/android/build/kotlin/compileDebugKotlin/cacheable/caches-jvm/lookups/counters.tab +0 -2
- package/android/build/kotlin/compileDebugKotlin/cacheable/caches-jvm/lookups/file-to-id.tab +0 -0
- package/android/build/kotlin/compileDebugKotlin/cacheable/caches-jvm/lookups/file-to-id.tab.keystream +0 -0
- package/android/build/kotlin/compileDebugKotlin/cacheable/caches-jvm/lookups/file-to-id.tab.keystream.len +0 -0
- package/android/build/kotlin/compileDebugKotlin/cacheable/caches-jvm/lookups/file-to-id.tab.len +0 -0
- package/android/build/kotlin/compileDebugKotlin/cacheable/caches-jvm/lookups/file-to-id.tab.values.at +0 -0
- package/android/build/kotlin/compileDebugKotlin/cacheable/caches-jvm/lookups/file-to-id.tab_i +0 -0
- package/android/build/kotlin/compileDebugKotlin/cacheable/caches-jvm/lookups/file-to-id.tab_i.len +0 -0
- package/android/build/kotlin/compileDebugKotlin/cacheable/caches-jvm/lookups/id-to-file.tab +0 -0
- package/android/build/kotlin/compileDebugKotlin/cacheable/caches-jvm/lookups/id-to-file.tab.keystream +0 -0
- package/android/build/kotlin/compileDebugKotlin/cacheable/caches-jvm/lookups/id-to-file.tab.keystream.len +0 -0
- package/android/build/kotlin/compileDebugKotlin/cacheable/caches-jvm/lookups/id-to-file.tab.len +0 -0
- package/android/build/kotlin/compileDebugKotlin/cacheable/caches-jvm/lookups/id-to-file.tab.values.at +0 -0
- package/android/build/kotlin/compileDebugKotlin/cacheable/caches-jvm/lookups/id-to-file.tab_i +0 -0
- package/android/build/kotlin/compileDebugKotlin/cacheable/caches-jvm/lookups/id-to-file.tab_i.len +0 -0
- package/android/build/kotlin/compileDebugKotlin/cacheable/caches-jvm/lookups/lookups.tab +0 -0
- package/android/build/kotlin/compileDebugKotlin/cacheable/caches-jvm/lookups/lookups.tab.keystream +0 -0
- package/android/build/kotlin/compileDebugKotlin/cacheable/caches-jvm/lookups/lookups.tab.keystream.len +0 -0
- package/android/build/kotlin/compileDebugKotlin/cacheable/caches-jvm/lookups/lookups.tab.len +0 -0
- package/android/build/kotlin/compileDebugKotlin/cacheable/caches-jvm/lookups/lookups.tab.values.at +0 -0
- package/android/build/kotlin/compileDebugKotlin/cacheable/caches-jvm/lookups/lookups.tab_i +0 -0
- package/android/build/kotlin/compileDebugKotlin/cacheable/caches-jvm/lookups/lookups.tab_i.len +0 -0
- package/android/build/kotlin/compileDebugKotlin/cacheable/last-build.bin +0 -0
- package/android/build/kotlin/compileDebugKotlin/classpath-snapshot/shrunk-classpath-snapshot.bin +0 -0
- package/android/build/kotlin/compileDebugKotlin/local-state/build-history.bin +0 -0
- package/android/build/outputs/aar/react-native-inapp-inspector-debug.aar +0 -0
- package/android/build/outputs/logs/manifest-merger-debug-report.txt +0 -17
- package/android/build/reports/problems/problems-report.html +0 -659
- package/android/build/tmp/compileDebugJavaWithJavac/previous-compilation-data.bin +0 -0
- package/android/build/tmp/kotlin-classes/debug/META-INF/react-native-inapp-inspector_debug.kotlin_module +0 -0
- package/android/build/tmp/kotlin-classes/debug/com/inappinspector/InAppInspectorFloatingView$iconView$1.class +0 -0
- package/android/build/tmp/kotlin-classes/debug/com/inappinspector/InAppInspectorFloatingView.class +0 -0
- package/android/build/tmp/kotlin-classes/debug/com/inappinspector/NetworkInspectorModule$Companion.class +0 -0
- package/android/build/tmp/kotlin-classes/debug/com/inappinspector/NetworkInspectorModule$frameCallback$1.class +0 -0
- package/android/build/tmp/kotlin-classes/debug/com/inappinspector/NetworkInspectorModule$shakeListener$1.class +0 -0
- package/android/build/tmp/kotlin-classes/debug/com/inappinspector/NetworkInspectorModule.class +0 -0
- package/android/build/tmp/kotlin-classes/debug/com/inappinspector/NetworkInspectorPackage.class +0 -0
package/src/helpers/index.ts
CHANGED
|
@@ -99,7 +99,16 @@ export const getSize = (data: unknown): string => {
|
|
|
99
99
|
}
|
|
100
100
|
};
|
|
101
101
|
|
|
102
|
-
export const
|
|
102
|
+
export const formatBytes = (bytes: number): string => {
|
|
103
|
+
if (bytes === 0 || !bytes || isNaN(bytes)) return '0 B';
|
|
104
|
+
const k = 1024;
|
|
105
|
+
const sizes = ['B', 'KB', 'MB', 'GB'];
|
|
106
|
+
const i = Math.floor(Math.log(bytes) / Math.log(k));
|
|
107
|
+
return `${parseFloat((bytes / Math.pow(k, i)).toFixed(1))} ${sizes[i] || 'B'}`;
|
|
108
|
+
};
|
|
109
|
+
|
|
110
|
+
export const copyToClipboard = (value: unknown, label?: string): void => {
|
|
111
|
+
|
|
103
112
|
const resolved = typeof value === 'function' ? (value as Function)() : value;
|
|
104
113
|
let textToCopy = '';
|
|
105
114
|
if (typeof resolved === 'string') {
|
package/src/i18n/locales/en.json
CHANGED
|
@@ -24,7 +24,19 @@
|
|
|
24
24
|
"updateAvailableTitle": "Update Available",
|
|
25
25
|
"updateAvailableMessage": "react-native-inapp-inspector v{{version}} is available on NPM (installed: v{{installed}}).",
|
|
26
26
|
"clearEverythingTitle": "Clear Everything",
|
|
27
|
-
"clearEverythingMessage": "This clears all tabs — APIs, Logs, Analytics and
|
|
27
|
+
"clearEverythingMessage": "This clears all tabs — APIs, Logs, Analytics, Redux timeline and Crash history. Continue?",
|
|
28
|
+
"photo": "Photo",
|
|
29
|
+
"record": "Record",
|
|
30
|
+
"rec": "REC",
|
|
31
|
+
"clear": "Clear",
|
|
32
|
+
"about": "About",
|
|
33
|
+
"screenshotCaptured": "📸 Screenshot captured & saved",
|
|
34
|
+
"screenshotFailed": "Failed to capture screenshot",
|
|
35
|
+
"screenshotError": "Error taking screenshot",
|
|
36
|
+
"recordingStarted": "🔴 Video recording started",
|
|
37
|
+
"recordingSaved": "🎥 Recording saved ({{duration}}s)",
|
|
38
|
+
"recordingError": "Recording error",
|
|
39
|
+
"recordingStartFailed": "Failed to start recording",
|
|
28
40
|
"paramCount": "{{count}} param",
|
|
29
41
|
"paramCount_plural": "{{count}} params",
|
|
30
42
|
"sourceFirebase": "FB",
|
|
@@ -41,8 +53,10 @@
|
|
|
41
53
|
"performance": "Performance",
|
|
42
54
|
"crash": "Crash",
|
|
43
55
|
"device": "Device",
|
|
44
|
-
"storage": "Storage"
|
|
56
|
+
"storage": "Storage",
|
|
57
|
+
"media": "Media"
|
|
45
58
|
},
|
|
59
|
+
|
|
46
60
|
"settings": {
|
|
47
61
|
"mainTitle": "Settings & Modules",
|
|
48
62
|
"mainSubtitle": "Manage modules and preferences",
|
|
@@ -58,6 +72,7 @@
|
|
|
58
72
|
"modulesAndTools": "Modules & Tools",
|
|
59
73
|
"uiPreferences": "UI & Display",
|
|
60
74
|
"ramLimits": "RAM & Limits",
|
|
75
|
+
"screenVideoCapture": "Screen & Video Capture",
|
|
61
76
|
"zeroOverheadTitle": "Zero Background Overhead",
|
|
62
77
|
"zeroOverheadDesc": "Check the modules you wish to activate. Disabled modules consume 0% CPU & memory until saved.",
|
|
63
78
|
"unsavedPending": "● Unsaved selections pending",
|
|
@@ -161,7 +176,34 @@
|
|
|
161
176
|
"clearHistoryDesc": "{{count}} crash logs stored",
|
|
162
177
|
"historyCleared": "Crash logs cleared."
|
|
163
178
|
},
|
|
179
|
+
"media": {
|
|
180
|
+
"title": "Screen & Video Capture",
|
|
181
|
+
"badge": "Native H.264 / GIF",
|
|
182
|
+
"desc": "Configure screenshot formats, quality, video FPS, audio narration, GIF recording & storage",
|
|
183
|
+
"screenshotCardTitle": "Screenshot Formats & Quality",
|
|
184
|
+
"screenshotCardDesc": "High-resolution full-window snapshot configuration",
|
|
185
|
+
"imageFormat": "Image Format",
|
|
186
|
+
"imageFormatDesc": "PNG (lossless), JPEG (compact), or WEBP",
|
|
187
|
+
"autoHide": "Auto-Hide Inspector Overlay",
|
|
188
|
+
"autoHideDesc": "Excludes inspector UI from screenshots",
|
|
189
|
+
"enabled": "ENABLED",
|
|
190
|
+
"videoCardTitle": "Video & GIF Recording",
|
|
191
|
+
"videoCardDesc": "H.264 MP4 recording & animated GIF export",
|
|
192
|
+
"audioMode": "Audio Narration Mode",
|
|
193
|
+
"audioModeDesc": "Muted, App Audio, or Voice Narration",
|
|
194
|
+
"frameRate": "Frame Rate",
|
|
195
|
+
"frameRateDesc": "Higher FPS yields smoother recordings",
|
|
196
|
+
"gifAutoOpt": "GIF Auto-Optimization",
|
|
197
|
+
"gifAutoOptDesc": "Converts video recordings for GitHub PRs & Slack",
|
|
198
|
+
"purgeAll": "Purge All Captured Media",
|
|
199
|
+
"purgeAllDesc": "Deletes all stored screenshots, videos, and GIFs",
|
|
200
|
+
"purgeCacheBtn": "Purge Cache",
|
|
201
|
+
"purgeConfirmTitle": "Purge Media Storage",
|
|
202
|
+
"purgeConfirmMessage": "This deletes all captured media files from local cache. Continue?",
|
|
203
|
+
"purgedSuccess": "Media storage purged"
|
|
204
|
+
},
|
|
164
205
|
"general": {
|
|
206
|
+
|
|
165
207
|
"darkMode": "Dark Mode Theme",
|
|
166
208
|
"darkModeDescription": "Toggle sleek dark aesthetic or light contrast",
|
|
167
209
|
"modalHeight": "Inspector Window Height",
|
|
@@ -1054,5 +1096,30 @@
|
|
|
1054
1096
|
"frameCopy": "Copy",
|
|
1055
1097
|
"frameCopied": "Copied",
|
|
1056
1098
|
"componentHierarchy": "Component Hierarchy"
|
|
1099
|
+
},
|
|
1100
|
+
"mediaGallery": {
|
|
1101
|
+
"all": "All ({{count}})",
|
|
1102
|
+
"photos": "Photos",
|
|
1103
|
+
"videos": "Videos",
|
|
1104
|
+
"gifs": "GIFs",
|
|
1105
|
+
"purge": "Purge ({{size}})",
|
|
1106
|
+
"purgeTitle": "Purge All Media",
|
|
1107
|
+
"purgeMessage": "This will permanently delete all {{count}} captured screenshots, videos, and GIFs ({{size}}). Continue?",
|
|
1108
|
+
"noMediaTitle": "No Captured Media",
|
|
1109
|
+
"noMediaDesc": "Use the Photo or Video Record button in the toolbar to capture whole-app screenshots, screen recordings, or GIFs.",
|
|
1110
|
+
"deleted": "Deleted media item",
|
|
1111
|
+
"allPurged": "All captured media purged",
|
|
1112
|
+
"converting": "Converting...",
|
|
1113
|
+
"convertToGif": "Convert to GIF",
|
|
1114
|
+
"convertedSuccess": "Converted to Animated GIF successfully!",
|
|
1115
|
+
"convertFailed": "Failed to convert to GIF",
|
|
1116
|
+
"share": "Share",
|
|
1117
|
+
"copyUri": "Copy URI",
|
|
1118
|
+
"uriCopied": "File URI copied to clipboard",
|
|
1119
|
+
"delete": "Delete",
|
|
1120
|
+
"deleteTitle": "Delete Media",
|
|
1121
|
+
"deleteMessage": "Are you sure you want to delete {{filename}}?",
|
|
1122
|
+
"shareUnavailable": "Sharing not available on this device"
|
|
1057
1123
|
}
|
|
1058
1124
|
}
|
|
1125
|
+
|
package/src/index.tsx
CHANGED
|
@@ -439,6 +439,7 @@ const NetworkInspector = ({
|
|
|
439
439
|
storage: false,
|
|
440
440
|
debugging: false,
|
|
441
441
|
});
|
|
442
|
+
|
|
442
443
|
setDefaultTab('apis');
|
|
443
444
|
setIsAutoRamLimitEnabled(true);
|
|
444
445
|
const profile = calculateRamBasedLimits(deviceFreeRamMb);
|
|
@@ -885,12 +886,12 @@ const NetworkInspector = ({
|
|
|
885
886
|
Animated.timing(clearAnim, {
|
|
886
887
|
toValue: 1,
|
|
887
888
|
duration: 320,
|
|
888
|
-
useNativeDriver:
|
|
889
|
+
useNativeDriver: false,
|
|
889
890
|
}),
|
|
890
891
|
Animated.timing(clearAnim, {
|
|
891
892
|
toValue: 0,
|
|
892
893
|
duration: 0,
|
|
893
|
-
useNativeDriver:
|
|
894
|
+
useNativeDriver: false,
|
|
894
895
|
}),
|
|
895
896
|
]).start();
|
|
896
897
|
handleClearAll();
|
|
@@ -903,44 +904,46 @@ const NetworkInspector = ({
|
|
|
903
904
|
}, []);
|
|
904
905
|
|
|
905
906
|
useEffect(() => {
|
|
907
|
+
if (visible) return;
|
|
906
908
|
const loop = Animated.loop(
|
|
907
909
|
Animated.sequence([
|
|
908
910
|
Animated.timing(pulseAnim, {
|
|
909
911
|
toValue: 1.2,
|
|
910
912
|
duration: 800,
|
|
911
|
-
useNativeDriver:
|
|
913
|
+
useNativeDriver: false,
|
|
912
914
|
}),
|
|
913
915
|
Animated.timing(pulseAnim, {
|
|
914
916
|
toValue: 1,
|
|
915
917
|
duration: 800,
|
|
916
|
-
useNativeDriver:
|
|
918
|
+
useNativeDriver: false,
|
|
917
919
|
}),
|
|
918
920
|
]),
|
|
919
921
|
);
|
|
920
922
|
loop.start();
|
|
921
923
|
return () => loop.stop();
|
|
922
|
-
}, [pulseAnim]);
|
|
924
|
+
}, [pulseAnim, visible]);
|
|
923
925
|
|
|
924
926
|
// #4 — sweep the shine streak across the launcher, pause, repeat.
|
|
925
927
|
useEffect(() => {
|
|
928
|
+
if (visible) return;
|
|
926
929
|
const loop = Animated.loop(
|
|
927
930
|
Animated.sequence([
|
|
928
931
|
Animated.timing(fabShineAnim, {
|
|
929
932
|
toValue: 1,
|
|
930
933
|
duration: 1100,
|
|
931
|
-
useNativeDriver:
|
|
934
|
+
useNativeDriver: false,
|
|
932
935
|
}),
|
|
933
936
|
Animated.delay(1600),
|
|
934
937
|
Animated.timing(fabShineAnim, {
|
|
935
938
|
toValue: 0,
|
|
936
939
|
duration: 0,
|
|
937
|
-
useNativeDriver:
|
|
940
|
+
useNativeDriver: false,
|
|
938
941
|
}),
|
|
939
942
|
]),
|
|
940
943
|
);
|
|
941
944
|
loop.start();
|
|
942
945
|
return () => loop.stop();
|
|
943
|
-
}, [fabShineAnim]);
|
|
946
|
+
}, [fabShineAnim, visible]);
|
|
944
947
|
|
|
945
948
|
useEffect(() => {
|
|
946
949
|
const loop = Animated.loop(
|
|
@@ -948,12 +951,12 @@ const NetworkInspector = ({
|
|
|
948
951
|
Animated.timing(activePulseAnim, {
|
|
949
952
|
toValue: 1,
|
|
950
953
|
duration: 1200,
|
|
951
|
-
useNativeDriver:
|
|
954
|
+
useNativeDriver: false,
|
|
952
955
|
}),
|
|
953
956
|
Animated.timing(activePulseAnim, {
|
|
954
957
|
toValue: 0.4,
|
|
955
958
|
duration: 1200,
|
|
956
|
-
useNativeDriver:
|
|
959
|
+
useNativeDriver: false,
|
|
957
960
|
}),
|
|
958
961
|
]),
|
|
959
962
|
);
|
|
@@ -967,12 +970,12 @@ const NetworkInspector = ({
|
|
|
967
970
|
Animated.timing(unreadPulseAnim, {
|
|
968
971
|
toValue: 1.3,
|
|
969
972
|
duration: 800,
|
|
970
|
-
useNativeDriver:
|
|
973
|
+
useNativeDriver: false,
|
|
971
974
|
}),
|
|
972
975
|
Animated.timing(unreadPulseAnim, {
|
|
973
976
|
toValue: 0.8,
|
|
974
977
|
duration: 800,
|
|
975
|
-
useNativeDriver:
|
|
978
|
+
useNativeDriver: false,
|
|
976
979
|
}),
|
|
977
980
|
]),
|
|
978
981
|
);
|
|
@@ -1021,6 +1024,7 @@ const NetworkInspector = ({
|
|
|
1021
1024
|
useEffect(() => {
|
|
1022
1025
|
if (!useNativeFab) return;
|
|
1023
1026
|
const unsubscribe = subscribeNativeFloatingButtonPress(() => {
|
|
1027
|
+
hideNativeFloatingButton().catch(() => {});
|
|
1024
1028
|
setVisible(true);
|
|
1025
1029
|
});
|
|
1026
1030
|
return () => {
|
|
@@ -1032,7 +1036,13 @@ const NetworkInspector = ({
|
|
|
1032
1036
|
useEffect(() => {
|
|
1033
1037
|
if (!useNativeFab) return;
|
|
1034
1038
|
const unsubscribe = subscribeNativeDeviceShake(() => {
|
|
1035
|
-
setVisible(prev =>
|
|
1039
|
+
setVisible(prev => {
|
|
1040
|
+
const next = !prev;
|
|
1041
|
+
if (next) {
|
|
1042
|
+
hideNativeFloatingButton().catch(() => {});
|
|
1043
|
+
}
|
|
1044
|
+
return next;
|
|
1045
|
+
});
|
|
1036
1046
|
});
|
|
1037
1047
|
return () => {
|
|
1038
1048
|
unsubscribe();
|
|
@@ -1453,7 +1463,10 @@ const NetworkInspector = ({
|
|
|
1453
1463
|
|
|
1454
1464
|
const groupedData = useMemo(() => {
|
|
1455
1465
|
const result: GroupedListItem[] = [];
|
|
1456
|
-
const
|
|
1466
|
+
const groupMap = new Map<
|
|
1467
|
+
string,
|
|
1468
|
+
{pageName: string; color: string; logs: NetworkLog[]}
|
|
1469
|
+
>();
|
|
1457
1470
|
|
|
1458
1471
|
for (let i = 0; i < filteredLogs.length; i++) {
|
|
1459
1472
|
const log = filteredLogs[i];
|
|
@@ -1461,16 +1474,16 @@ const NetworkInspector = ({
|
|
|
1461
1474
|
logRouteMapRef.current.get(log.id) || (log as any)?.routeInfo;
|
|
1462
1475
|
const pageName = getLogPageName(log, routeInfo);
|
|
1463
1476
|
|
|
1464
|
-
|
|
1465
|
-
|
|
1466
|
-
|
|
1467
|
-
|
|
1468
|
-
groups.push({pageName, color: getDomainColor(pageName), logs: []});
|
|
1477
|
+
let group = groupMap.get(pageName);
|
|
1478
|
+
if (!group) {
|
|
1479
|
+
group = {pageName, color: getDomainColor(pageName), logs: []};
|
|
1480
|
+
groupMap.set(pageName, group);
|
|
1469
1481
|
}
|
|
1470
|
-
|
|
1482
|
+
group.logs.push(log);
|
|
1471
1483
|
}
|
|
1472
1484
|
|
|
1473
|
-
|
|
1485
|
+
let idx = 0;
|
|
1486
|
+
groupMap.forEach(g => {
|
|
1474
1487
|
let success = 0;
|
|
1475
1488
|
let failed = 0;
|
|
1476
1489
|
let loading = 0;
|
|
@@ -1489,7 +1502,7 @@ const NetworkInspector = ({
|
|
|
1489
1502
|
|
|
1490
1503
|
result.push({
|
|
1491
1504
|
type: 'header',
|
|
1492
|
-
id: `hdr-${g.
|
|
1505
|
+
id: `hdr-${g.pageName}`,
|
|
1493
1506
|
pageName: g.pageName,
|
|
1494
1507
|
color: g.color,
|
|
1495
1508
|
stats: {success, failed, loading},
|
|
@@ -1498,6 +1511,7 @@ const NetworkInspector = ({
|
|
|
1498
1511
|
isCollapsed,
|
|
1499
1512
|
isFirst: idx === 0,
|
|
1500
1513
|
});
|
|
1514
|
+
idx++;
|
|
1501
1515
|
|
|
1502
1516
|
if (!isCollapsed) {
|
|
1503
1517
|
const displayLogs = g.logs.filter(l => {
|
|
@@ -1510,7 +1524,7 @@ const NetworkInspector = ({
|
|
|
1510
1524
|
displayLogs.forEach((log, index) => {
|
|
1511
1525
|
result.push({
|
|
1512
1526
|
type: 'log',
|
|
1513
|
-
id: log.id
|
|
1527
|
+
id: `log-${log.id}`,
|
|
1514
1528
|
log,
|
|
1515
1529
|
isLast: index === displayLogs.length - 1,
|
|
1516
1530
|
color: g.color,
|
|
@@ -2604,4 +2618,18 @@ export {
|
|
|
2604
2618
|
isFirebaseRemoteConfigAvailable,
|
|
2605
2619
|
} from './helpers/remoteConfig';
|
|
2606
2620
|
|
|
2621
|
+
export {
|
|
2622
|
+
ScreenCapture,
|
|
2623
|
+
ScreenRecorder,
|
|
2624
|
+
type ScreenshotOptions,
|
|
2625
|
+
type ScreenshotResult,
|
|
2626
|
+
type RecordingOptions,
|
|
2627
|
+
type RecordingResult,
|
|
2628
|
+
type GifConversionOptions,
|
|
2629
|
+
type CapturedMediaItem,
|
|
2630
|
+
type ImageFormat,
|
|
2631
|
+
type AudioSource,
|
|
2632
|
+
type RecordingFormat,
|
|
2633
|
+
} from './capture';
|
|
2634
|
+
|
|
2607
2635
|
export { LIB_VERSION } from './constants/version';
|
|
@@ -87,7 +87,7 @@ export const enableNativeCrashProtection = async (options?: {
|
|
|
87
87
|
}
|
|
88
88
|
try {
|
|
89
89
|
const result = await NativeModule.enableNativeCrashProtection();
|
|
90
|
-
if (options?.showFloatingButton
|
|
90
|
+
if (options?.showFloatingButton === true) {
|
|
91
91
|
await showNativeFloatingButton();
|
|
92
92
|
}
|
|
93
93
|
return !!result;
|
|
@@ -439,4 +439,189 @@ export const fetchNativeCachedPage = async <T = any>(
|
|
|
439
439
|
}
|
|
440
440
|
};
|
|
441
441
|
|
|
442
|
+
export interface ScreenshotOptions {
|
|
443
|
+
format?: 'png' | 'jpeg' | 'webp';
|
|
444
|
+
quality?: number; // 0.1 to 1.0
|
|
445
|
+
scale?: number; // 0.5, 0.75, 1.0
|
|
446
|
+
hideInspector?: boolean;
|
|
447
|
+
includeBase64?: boolean;
|
|
448
|
+
}
|
|
449
|
+
|
|
450
|
+
export interface ScreenshotResult {
|
|
451
|
+
uri: string;
|
|
452
|
+
format: 'png' | 'jpeg' | 'webp';
|
|
453
|
+
width: number;
|
|
454
|
+
height: number;
|
|
455
|
+
sizeBytes: number;
|
|
456
|
+
timestamp: number;
|
|
457
|
+
base64?: string;
|
|
458
|
+
}
|
|
459
|
+
|
|
460
|
+
export interface RecordingOptions {
|
|
461
|
+
format?: 'mp4' | 'gif';
|
|
462
|
+
audioSource?: 'none' | 'app' | 'mic' | 'mixed';
|
|
463
|
+
fps?: number;
|
|
464
|
+
bitrate?: number;
|
|
465
|
+
maxDurationSeconds?: number;
|
|
466
|
+
hideInspector?: boolean;
|
|
467
|
+
}
|
|
468
|
+
|
|
469
|
+
export interface RecordingResult {
|
|
470
|
+
uri: string;
|
|
471
|
+
format: 'mp4' | 'gif';
|
|
472
|
+
durationMs: number;
|
|
473
|
+
hasAudio: boolean;
|
|
474
|
+
width: number;
|
|
475
|
+
height: number;
|
|
476
|
+
sizeBytes: number;
|
|
477
|
+
timestamp: number;
|
|
478
|
+
}
|
|
479
|
+
|
|
480
|
+
export interface GifConversionOptions {
|
|
481
|
+
fps?: number;
|
|
482
|
+
width?: number;
|
|
483
|
+
maxDurationSeconds?: number;
|
|
484
|
+
}
|
|
485
|
+
|
|
486
|
+
export interface CapturedMediaItem {
|
|
487
|
+
id: string;
|
|
488
|
+
type: 'image' | 'video' | 'gif';
|
|
489
|
+
format: string;
|
|
490
|
+
uri: string;
|
|
491
|
+
filename: string;
|
|
492
|
+
sizeBytes: number;
|
|
493
|
+
timestamp: number;
|
|
494
|
+
durationMs?: number;
|
|
495
|
+
hasAudio?: boolean;
|
|
496
|
+
width?: number;
|
|
497
|
+
height?: number;
|
|
498
|
+
}
|
|
499
|
+
|
|
500
|
+
/**
|
|
501
|
+
* Captures a high-resolution native screenshot of the application window.
|
|
502
|
+
*/
|
|
503
|
+
export const takeNativeScreenshot = async (
|
|
504
|
+
options?: ScreenshotOptions,
|
|
505
|
+
): Promise<ScreenshotResult | null> => {
|
|
506
|
+
if (!NativeModule || !NativeModule.takeScreenshot) {
|
|
507
|
+
return null;
|
|
508
|
+
}
|
|
509
|
+
try {
|
|
510
|
+
const result = await NativeModule.takeScreenshot(options || {});
|
|
511
|
+
return result as ScreenshotResult;
|
|
512
|
+
} catch {
|
|
513
|
+
return null;
|
|
514
|
+
}
|
|
515
|
+
};
|
|
516
|
+
|
|
517
|
+
/**
|
|
518
|
+
* Starts native video or GIF recording of the application.
|
|
519
|
+
*/
|
|
520
|
+
export const startNativeVideoRecording = async (
|
|
521
|
+
options?: RecordingOptions,
|
|
522
|
+
): Promise<boolean> => {
|
|
523
|
+
if (!NativeModule || !NativeModule.startVideoRecording) {
|
|
524
|
+
return false;
|
|
525
|
+
}
|
|
526
|
+
try {
|
|
527
|
+
const result = await NativeModule.startVideoRecording(options || {});
|
|
528
|
+
return !!result;
|
|
529
|
+
} catch {
|
|
530
|
+
return false;
|
|
531
|
+
}
|
|
532
|
+
};
|
|
533
|
+
|
|
534
|
+
/**
|
|
535
|
+
* Stops active video or GIF recording and returns the final file metadata.
|
|
536
|
+
*/
|
|
537
|
+
export const stopNativeVideoRecording = async (): Promise<RecordingResult | null> => {
|
|
538
|
+
if (!NativeModule || !NativeModule.stopVideoRecording) {
|
|
539
|
+
return null;
|
|
540
|
+
}
|
|
541
|
+
try {
|
|
542
|
+
const result = await NativeModule.stopVideoRecording();
|
|
543
|
+
return result as RecordingResult;
|
|
544
|
+
} catch {
|
|
545
|
+
return null;
|
|
546
|
+
}
|
|
547
|
+
};
|
|
548
|
+
|
|
549
|
+
/**
|
|
550
|
+
* Checks if a recording session is currently active.
|
|
551
|
+
*/
|
|
552
|
+
export const isNativeRecordingActive = async (): Promise<boolean> => {
|
|
553
|
+
if (!NativeModule || !NativeModule.isRecording) {
|
|
554
|
+
return false;
|
|
555
|
+
}
|
|
556
|
+
try {
|
|
557
|
+
const result = await NativeModule.isRecording();
|
|
558
|
+
return !!result;
|
|
559
|
+
} catch {
|
|
560
|
+
return false;
|
|
561
|
+
}
|
|
562
|
+
};
|
|
563
|
+
|
|
564
|
+
/**
|
|
565
|
+
* Converts a recorded MP4 video to an animated GIF.
|
|
566
|
+
*/
|
|
567
|
+
export const convertNativeVideoToGif = async (
|
|
568
|
+
videoUri: string,
|
|
569
|
+
options?: GifConversionOptions,
|
|
570
|
+
): Promise<RecordingResult | null> => {
|
|
571
|
+
if (!NativeModule || !NativeModule.convertToGif) {
|
|
572
|
+
return null;
|
|
573
|
+
}
|
|
574
|
+
try {
|
|
575
|
+
const result = await NativeModule.convertToGif(videoUri, options || {});
|
|
576
|
+
return result as RecordingResult;
|
|
577
|
+
} catch {
|
|
578
|
+
return null;
|
|
579
|
+
}
|
|
580
|
+
};
|
|
581
|
+
|
|
582
|
+
/**
|
|
583
|
+
* Fetches all captured screenshots, recordings, and GIFs from disk.
|
|
584
|
+
*/
|
|
585
|
+
export const fetchCapturedMediaList = async (): Promise<CapturedMediaItem[]> => {
|
|
586
|
+
if (!NativeModule || !NativeModule.getCapturedMedia) {
|
|
587
|
+
return [];
|
|
588
|
+
}
|
|
589
|
+
try {
|
|
590
|
+
const jsonStr: string = await NativeModule.getCapturedMedia();
|
|
591
|
+
if (!jsonStr) return [];
|
|
592
|
+
const parsed = JSON.parse(jsonStr);
|
|
593
|
+
return Array.isArray(parsed) ? parsed : [];
|
|
594
|
+
} catch {
|
|
595
|
+
return [];
|
|
596
|
+
}
|
|
597
|
+
};
|
|
598
|
+
|
|
599
|
+
/**
|
|
600
|
+
* Deletes a specific media file from disk.
|
|
601
|
+
*/
|
|
602
|
+
export const deleteCapturedMediaFile = async (uri: string): Promise<boolean> => {
|
|
603
|
+
if (!NativeModule || !NativeModule.deleteCapturedMedia) {
|
|
604
|
+
return false;
|
|
605
|
+
}
|
|
606
|
+
try {
|
|
607
|
+
const result = await NativeModule.deleteCapturedMedia(uri);
|
|
608
|
+
return !!result;
|
|
609
|
+
} catch {
|
|
610
|
+
return false;
|
|
611
|
+
}
|
|
612
|
+
};
|
|
442
613
|
|
|
614
|
+
/**
|
|
615
|
+
* Purges all captured media files from disk.
|
|
616
|
+
*/
|
|
617
|
+
export const clearAllCapturedMediaFiles = async (): Promise<boolean> => {
|
|
618
|
+
if (!NativeModule || !NativeModule.clearAllCapturedMedia) {
|
|
619
|
+
return false;
|
|
620
|
+
}
|
|
621
|
+
try {
|
|
622
|
+
const result = await NativeModule.clearAllCapturedMedia();
|
|
623
|
+
return !!result;
|
|
624
|
+
} catch {
|
|
625
|
+
return false;
|
|
626
|
+
}
|
|
627
|
+
};
|
|
@@ -17,8 +17,17 @@ export interface Spec extends TurboModule {
|
|
|
17
17
|
getNativeSystemMetrics(): Promise<Object>;
|
|
18
18
|
pushNativeLogRecord(pageKey: string, jsonPayload: string): Promise<boolean>;
|
|
19
19
|
checkFloatingButtonPress(): Promise<boolean>;
|
|
20
|
+
takeScreenshot(options: Object): Promise<Object>;
|
|
21
|
+
startVideoRecording(options: Object): Promise<boolean>;
|
|
22
|
+
stopVideoRecording(): Promise<Object>;
|
|
23
|
+
isRecording(): Promise<boolean>;
|
|
24
|
+
convertToGif(videoUri: string, options: Object): Promise<Object>;
|
|
25
|
+
getCapturedMedia(): Promise<string>;
|
|
26
|
+
deleteCapturedMedia(uri: string): Promise<boolean>;
|
|
27
|
+
clearAllCapturedMedia(): Promise<boolean>;
|
|
20
28
|
addListener(eventName: string): void;
|
|
21
29
|
removeListeners(count: number): void;
|
|
22
30
|
}
|
|
23
31
|
|
|
24
32
|
export default TurboModuleRegistry.get<Spec>('NetworkInspectorModule');
|
|
33
|
+
|
package/src/styles/AppColors.ts
CHANGED
|
@@ -184,6 +184,25 @@ const LightColors = {
|
|
|
184
184
|
skySoftBorder: '#BAE6FD',
|
|
185
185
|
skySoftText: '#0284C7',
|
|
186
186
|
|
|
187
|
+
warningAmber: '#F59E0B',
|
|
188
|
+
npmRedLight: '#FF6B6B',
|
|
189
|
+
red300: '#FCA5A5',
|
|
190
|
+
overlayDark: 'rgba(8, 12, 22, 0.95)',
|
|
191
|
+
headerGlassDark: 'rgba(15, 23, 42, 0.9)',
|
|
192
|
+
badgeGlassDark: 'rgba(15, 23, 42, 0.85)',
|
|
193
|
+
borderGlassLight: 'rgba(255, 255, 255, 0.08)',
|
|
194
|
+
borderGlassMedium: 'rgba(255, 255, 255, 0.15)',
|
|
195
|
+
whiteAlpha06: 'rgba(255, 255, 255, 0.06)',
|
|
196
|
+
whiteAlpha08: 'rgba(255, 255, 255, 0.08)',
|
|
197
|
+
whiteAlpha10: 'rgba(255, 255, 255, 0.1)',
|
|
198
|
+
whiteAlpha12: 'rgba(255, 255, 255, 0.12)',
|
|
199
|
+
whiteAlpha15: 'rgba(255, 255, 255, 0.15)',
|
|
200
|
+
whiteAlpha20: 'rgba(255, 255, 255, 0.2)',
|
|
201
|
+
whiteAlpha24: 'rgba(255, 255, 255, 0.24)',
|
|
202
|
+
whiteAlpha30: 'rgba(255, 255, 255, 0.3)',
|
|
203
|
+
whiteAlpha33: 'rgba(255, 255, 255, 0.33)',
|
|
204
|
+
whiteAlpha60: 'rgba(255, 255, 255, 0.6)',
|
|
205
|
+
|
|
187
206
|
// ─── Domain Colors (Thai Airways Themed) ───
|
|
188
207
|
domainColors: [
|
|
189
208
|
'#5C2D91',
|
|
@@ -280,6 +299,25 @@ const DarkColors = {
|
|
|
280
299
|
skySoftBg: '#082F4966',
|
|
281
300
|
skySoftBorder: '#0284C788',
|
|
282
301
|
skySoftText: '#38BDF8',
|
|
302
|
+
|
|
303
|
+
warningAmber: '#F59E0B',
|
|
304
|
+
npmRedLight: '#FF6B6B',
|
|
305
|
+
red300: '#FCA5A5',
|
|
306
|
+
overlayDark: 'rgba(8, 12, 22, 0.95)',
|
|
307
|
+
headerGlassDark: 'rgba(15, 23, 42, 0.9)',
|
|
308
|
+
badgeGlassDark: 'rgba(15, 23, 42, 0.85)',
|
|
309
|
+
borderGlassLight: 'rgba(255, 255, 255, 0.08)',
|
|
310
|
+
borderGlassMedium: 'rgba(255, 255, 255, 0.15)',
|
|
311
|
+
whiteAlpha06: 'rgba(255, 255, 255, 0.06)',
|
|
312
|
+
whiteAlpha08: 'rgba(255, 255, 255, 0.08)',
|
|
313
|
+
whiteAlpha10: 'rgba(255, 255, 255, 0.1)',
|
|
314
|
+
whiteAlpha12: 'rgba(255, 255, 255, 0.12)',
|
|
315
|
+
whiteAlpha15: 'rgba(255, 255, 255, 0.15)',
|
|
316
|
+
whiteAlpha20: 'rgba(255, 255, 255, 0.2)',
|
|
317
|
+
whiteAlpha24: 'rgba(255, 255, 255, 0.24)',
|
|
318
|
+
whiteAlpha30: 'rgba(255, 255, 255, 0.3)',
|
|
319
|
+
whiteAlpha33: 'rgba(255, 255, 255, 0.33)',
|
|
320
|
+
whiteAlpha60: 'rgba(255, 255, 255, 0.6)',
|
|
283
321
|
green600: '#16A34A',
|
|
284
322
|
green700: '#15803D',
|
|
285
323
|
green800: '#166534',
|
package/src/styles/index.ts
CHANGED
|
@@ -62,7 +62,8 @@ export const getRawStyles = (colors: typeof AppColors) => ({
|
|
|
62
62
|
headerDetailCenter: {
|
|
63
63
|
alignItems: 'center',
|
|
64
64
|
justifyContent: 'center',
|
|
65
|
-
|
|
65
|
+
flex: 1,
|
|
66
|
+
minWidth: 0,
|
|
66
67
|
},
|
|
67
68
|
headerDetailRow: {
|
|
68
69
|
flexDirection: 'row',
|
|
@@ -1403,6 +1404,7 @@ export const getRawStyles = (colors: typeof AppColors) => ({
|
|
|
1403
1404
|
borderTopLeftRadius: 20,
|
|
1404
1405
|
borderTopRightRadius: 20,
|
|
1405
1406
|
overflow: 'hidden',
|
|
1407
|
+
flexShrink: 0,
|
|
1406
1408
|
},
|
|
1407
1409
|
|
|
1408
1410
|
// Status chip used in MetaAccordion
|
package/src/types/enums.ts
CHANGED
|
@@ -16,6 +16,7 @@ export const ActiveTab = {
|
|
|
16
16
|
} as const;
|
|
17
17
|
export type ActiveTab = (typeof ActiveTab)[keyof typeof ActiveTab];
|
|
18
18
|
|
|
19
|
+
|
|
19
20
|
export const Method = {
|
|
20
21
|
All: 'ALL',
|
|
21
22
|
Get: 'GET',
|
|
@@ -77,10 +78,12 @@ export type SettingsPage =
|
|
|
77
78
|
| (typeof SettingsPage)[keyof typeof SettingsPage]
|
|
78
79
|
| null;
|
|
79
80
|
|
|
81
|
+
|
|
80
82
|
export const SettingsSubTab = {
|
|
81
83
|
Module: 'module',
|
|
82
84
|
Ui: 'ui',
|
|
83
85
|
Limits: 'limits',
|
|
86
|
+
Capture: 'capture',
|
|
84
87
|
About: 'about',
|
|
85
88
|
} as const;
|
|
86
89
|
export type SettingsSubTab =
|
package/src/types/index.ts
CHANGED
|
@@ -9,7 +9,7 @@ export * from './enums';
|
|
|
9
9
|
export type GroupedListItem =
|
|
10
10
|
| {
|
|
11
11
|
type: 'header';
|
|
12
|
-
id: string;
|
|
12
|
+
id: string | number;
|
|
13
13
|
pageName: string;
|
|
14
14
|
color: string;
|
|
15
15
|
stats: {success: number; failed: number; loading: number};
|
|
@@ -20,7 +20,7 @@ export type GroupedListItem =
|
|
|
20
20
|
}
|
|
21
21
|
| {
|
|
22
22
|
type: 'log';
|
|
23
|
-
id: number;
|
|
23
|
+
id: string | number;
|
|
24
24
|
log: NetworkLog;
|
|
25
25
|
isLast: boolean;
|
|
26
26
|
color: string;
|
|
Binary file
|
|
Binary file
|
|
Binary file
|
|
File without changes
|
|
Binary file
|
|
Binary file
|
|
Binary file
|
|
File without changes
|
|
Binary file
|
|
Binary file
|
|
Binary file
|
|
Binary file
|