react-native-inapp-inspector 2.5.13 → 2.5.15
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.md +0 -8
- package/android/src/main/java/com/inappinspector/NetworkInspectorModule.kt +118 -31
- package/dist/commonjs/components/Inspector/ConsoleExportModal.js +1 -1
- package/dist/commonjs/components/Inspector/ConsoleTab.js +7 -7
- package/dist/commonjs/components/Inspector/FabLauncher.js +3 -3
- package/dist/commonjs/components/Inspector/InspectorHeader.js +30 -30
- package/dist/commonjs/components/Inspector/MainScreen.js +38 -75
- package/dist/commonjs/components/Inspector/NetworkExportModal.js +4 -4
- package/dist/commonjs/components/Inspector/NetworkTab.js +51 -51
- package/dist/commonjs/components/Inspector/SecondaryTelemetryStrip.d.ts +1 -0
- package/dist/commonjs/components/Inspector/SecondaryTelemetryStrip.js +17 -16
- package/dist/commonjs/components/Inspector/SettingsPanel.js +40 -41
- package/dist/commonjs/components/Inspector/SkeletonPlaceholder.d.ts +3 -0
- package/dist/commonjs/components/Inspector/SkeletonPlaceholder.js +34 -3
- package/dist/commonjs/components/Inspector/TabBar.js +9 -15
- package/dist/commonjs/components/LogCard.js +7 -7
- package/dist/commonjs/components/SkeletonPlaceholder.d.ts +3 -0
- package/dist/commonjs/components/SkeletonPlaceholder.js +34 -3
- package/dist/commonjs/constants/telemetryConfig.d.ts +3 -3
- package/dist/commonjs/constants/telemetryConfig.js +1 -1
- package/dist/commonjs/constants/version.d.ts +1 -1
- package/dist/commonjs/constants/version.js +1 -1
- package/dist/commonjs/helpers/remoteConfig.js +1 -1
- package/dist/commonjs/helpers/shareFormatter.js +14 -14
- package/dist/commonjs/index.d.ts +1 -1
- package/dist/commonjs/index.js +3 -3
- package/dist/commonjs/native/NativeInspector.d.ts +2 -0
- package/dist/commonjs/native/NativeInspector.js +1 -1
- package/dist/commonjs/native/NativeNetworkInspector.d.ts +2 -0
- package/dist/commonjs/styles/AppFonts.d.ts +4 -0
- package/dist/commonjs/styles/AppFonts.js +1 -1
- package/dist/commonjs/styles/index.d.ts +2 -0
- package/dist/commonjs/styles/index.js +1 -1
- package/dist/commonjs/types/enums.d.ts +0 -2
- package/dist/commonjs/types/enums.js +1 -1
- package/dist/commonjs/types/interfaces.d.ts +1 -1
- package/dist/esm/components/Inspector/ConsoleExportModal.js +1 -1
- package/dist/esm/components/Inspector/ConsoleTab.js +48 -48
- package/dist/esm/components/Inspector/FabLauncher.js +42 -42
- package/dist/esm/components/Inspector/InspectorHeader.js +50 -50
- package/dist/esm/components/Inspector/MainScreen.js +87 -124
- package/dist/esm/components/Inspector/NetworkExportModal.js +1 -1
- package/dist/esm/components/Inspector/NetworkTab.js +83 -83
- package/dist/esm/components/Inspector/SecondaryTelemetryStrip.d.ts +1 -0
- package/dist/esm/components/Inspector/SecondaryTelemetryStrip.js +23 -22
- package/dist/esm/components/Inspector/SettingsPanel.js +106 -107
- package/dist/esm/components/Inspector/SkeletonPlaceholder.d.ts +3 -0
- package/dist/esm/components/Inspector/SkeletonPlaceholder.js +42 -11
- package/dist/esm/components/Inspector/TabBar.js +35 -41
- package/dist/esm/components/LogCard.js +53 -53
- package/dist/esm/components/SkeletonPlaceholder.d.ts +3 -0
- package/dist/esm/components/SkeletonPlaceholder.js +42 -11
- package/dist/esm/constants/telemetryConfig.d.ts +3 -3
- package/dist/esm/constants/telemetryConfig.js +1 -1
- package/dist/esm/constants/version.d.ts +1 -1
- package/dist/esm/constants/version.js +1 -1
- package/dist/esm/helpers/remoteConfig.js +1 -1
- package/dist/esm/helpers/shareFormatter.js +14 -14
- package/dist/esm/index.d.ts +1 -1
- package/dist/esm/index.js +8 -8
- package/dist/esm/native/NativeInspector.d.ts +2 -0
- package/dist/esm/native/NativeInspector.js +1 -1
- package/dist/esm/native/NativeNetworkInspector.d.ts +2 -0
- package/dist/esm/styles/AppFonts.d.ts +4 -0
- package/dist/esm/styles/AppFonts.js +1 -1
- package/dist/esm/styles/index.d.ts +2 -0
- package/dist/esm/styles/index.js +1 -1
- package/dist/esm/types/enums.d.ts +0 -2
- package/dist/esm/types/enums.js +1 -1
- package/dist/esm/types/interfaces.d.ts +1 -1
- package/ios/NetworkInspectorModule.mm +288 -325
- package/package.json +1 -1
- package/src/native/NativeInspector.ts +30 -0
- package/src/native/NativeNetworkInspector.ts +2 -0
- package/android/.gradle/8.9/checksums/checksums.lock +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/.settings/org.eclipse.buildship.core.prefs +0 -13
- package/dist/commonjs/components/Inspector/BoxModelVisualizer.d.ts +0 -8
- package/dist/commonjs/components/Inspector/BoxModelVisualizer.js +0 -76
- package/dist/commonjs/components/Inspector/DebuggingTab.d.ts +0 -3
- package/dist/commonjs/components/Inspector/DebuggingTab.js +0 -197
- package/dist/commonjs/components/Inspector/UiA11yAuditPanel.d.ts +0 -7
- package/dist/commonjs/components/Inspector/UiA11yAuditPanel.js +0 -97
- package/dist/commonjs/components/Inspector/UiInspectorDetail.d.ts +0 -2
- package/dist/commonjs/components/Inspector/UiInspectorDetail.js +0 -485
- package/dist/commonjs/components/Inspector/UiInspectorOverlay.d.ts +0 -2
- package/dist/commonjs/components/Inspector/UiInspectorOverlay.js +0 -199
- package/dist/commonjs/components/Inspector/UiInspectorTab.d.ts +0 -2
- package/dist/commonjs/components/Inspector/UiInspectorTab.js +0 -117
- package/dist/commonjs/components/Inspector/UiLiveStyleTweaker.d.ts +0 -10
- package/dist/commonjs/components/Inspector/UiLiveStyleTweaker.js +0 -148
- package/dist/commonjs/components/Inspector/index.d.ts +0 -28
- package/dist/commonjs/components/Inspector/index.js +0 -1
- package/dist/commonjs/customHooks/uiInspectorManager.d.ts +0 -22
- package/dist/commonjs/customHooks/uiInspectorManager.js +0 -1
- package/dist/commonjs/helpers/uiInspectorEngine.d.ts +0 -62
- package/dist/commonjs/helpers/uiInspectorEngine.js +0 -19
- package/dist/esm/components/Inspector/BoxModelVisualizer.d.ts +0 -8
- package/dist/esm/components/Inspector/BoxModelVisualizer.js +0 -76
- package/dist/esm/components/Inspector/DebuggingTab.d.ts +0 -3
- package/dist/esm/components/Inspector/DebuggingTab.js +0 -197
- package/dist/esm/components/Inspector/UiA11yAuditPanel.d.ts +0 -7
- package/dist/esm/components/Inspector/UiA11yAuditPanel.js +0 -97
- package/dist/esm/components/Inspector/UiInspectorDetail.d.ts +0 -2
- package/dist/esm/components/Inspector/UiInspectorDetail.js +0 -422
- package/dist/esm/components/Inspector/UiInspectorOverlay.d.ts +0 -2
- package/dist/esm/components/Inspector/UiInspectorOverlay.js +0 -138
- package/dist/esm/components/Inspector/UiInspectorTab.d.ts +0 -2
- package/dist/esm/components/Inspector/UiInspectorTab.js +0 -117
- package/dist/esm/components/Inspector/UiLiveStyleTweaker.d.ts +0 -10
- package/dist/esm/components/Inspector/UiLiveStyleTweaker.js +0 -148
- package/dist/esm/components/Inspector/index.d.ts +0 -28
- package/dist/esm/components/Inspector/index.js +0 -1
- package/dist/esm/customHooks/uiInspectorManager.d.ts +0 -22
- package/dist/esm/customHooks/uiInspectorManager.js +0 -1
- package/dist/esm/helpers/uiInspectorEngine.d.ts +0 -48
- package/dist/esm/helpers/uiInspectorEngine.js +0 -19
|
@@ -1,5 +1,8 @@
|
|
|
1
1
|
import React from 'react';
|
|
2
|
+
import { ActiveTab } from '../../types';
|
|
2
3
|
export interface SkeletonPlaceholderProps {
|
|
4
|
+
tab?: ActiveTab;
|
|
5
|
+
type?: 'card' | 'detail' | 'list' | 'table';
|
|
3
6
|
cardCount?: number;
|
|
4
7
|
}
|
|
5
8
|
export declare const SkeletonPlaceholder: React.NamedExoticComponent<SkeletonPlaceholderProps>;
|
|
@@ -1,23 +1,54 @@
|
|
|
1
|
-
import x,{useEffect as
|
|
1
|
+
import x,{useEffect as A,useRef as D}from"react";import{Animated as L,StyleSheet as W,View as S}from"react-native";import{AppColors as V}from"../../styles/AppColors";export const SkeletonPlaceholder=x.memo(function({tab:R="apis",type:v="card",cardCount:T=4}){const C=D(new L.Value(.4)).current;return A(()=>{const f=L.loop(L.sequence([L.timing(C,{toValue:.95,duration:700,useNativeDriver:!0}),L.timing(C,{toValue:.4,duration:700,useNativeDriver:!0})]));return f.start(),()=>f.stop()},[C]),v==="detail"?<S style={e.container}accessible={!0}accessibilityRole="progressbar"accessibilityLabel="Loading details, please wait"accessibilityLiveRegion="polite">
|
|
2
|
+
<L.View style={[e.detailHeader,{opacity:C}]}/>
|
|
3
|
+
<S style={e.chipStripSkeleton}>
|
|
4
|
+
<L.View style={[e.chipSkeleton,{width:70,opacity:C}]}/>
|
|
5
|
+
<L.View style={[e.chipSkeleton,{width:90,opacity:C}]}/>
|
|
6
|
+
<L.View style={[e.chipSkeleton,{width:80,opacity:C}]}/>
|
|
7
|
+
</S>
|
|
8
|
+
<L.View style={[e.detailCodeCard,{opacity:C}]}>
|
|
9
|
+
<S style={[e.urlLineLong,{width:"85%"}]}/>
|
|
10
|
+
<S style={[e.urlLineLong,{width:"70%",marginTop:8}]}/>
|
|
11
|
+
<S style={[e.urlLineLong,{width:"92%",marginTop:8}]}/>
|
|
12
|
+
<S style={[e.urlLineLong,{width:"60%",marginTop:8}]}/>
|
|
13
|
+
<S style={[e.urlLineLong,{width:"78%",marginTop:8}]}/>
|
|
14
|
+
</L.View>
|
|
15
|
+
</S>:R==="media"?<S style={e.container}accessible={!0}accessibilityRole="progressbar"accessibilityLabel="Loading media gallery, please wait"accessibilityLiveRegion="polite">
|
|
16
|
+
<S style={e.mediaGrid}>
|
|
17
|
+
{Array.from({length:6}).map((f,B)=><L.View key={`skeleton_media_${B}`}style={[e.mediaTile,{opacity:C}]}/>)}
|
|
18
|
+
</S>
|
|
19
|
+
</S>:R==="perf"?<S style={e.container}accessible={!0}accessibilityRole="progressbar"accessibilityLabel="Loading performance diagnostics, please wait"accessibilityLiveRegion="polite">
|
|
20
|
+
<L.View style={[e.heroCard,{opacity:C}]}>
|
|
21
|
+
<S style={e.cardTopRow}>
|
|
22
|
+
<S style={e.timeSkeleton}/>
|
|
23
|
+
<S style={e.statusBadgeSkeleton}/>
|
|
24
|
+
</S>
|
|
25
|
+
<S style={[e.urlLineLong,{height:32,marginTop:12}]}/>
|
|
26
|
+
</L.View>
|
|
27
|
+
<L.View style={[e.cardSkeleton,{opacity:C}]}>
|
|
28
|
+
<S style={[e.urlLineLong,{width:"40%"}]}/>
|
|
29
|
+
<S style={[e.urlLineShort,{marginTop:10}]}/>
|
|
30
|
+
<S style={[e.urlLineLong,{marginTop:8}]}/>
|
|
31
|
+
</L.View>
|
|
32
|
+
</S>:<S style={e.container}accessible={!0}accessibilityRole="progressbar"accessibilityLabel={`Loading ${R} data, please wait`}accessibilityLiveRegion="polite">
|
|
2
33
|
|
|
3
34
|
<S style={e.toolbarSkeleton}>
|
|
4
|
-
<
|
|
35
|
+
<L.View style={[e.searchBarSkeleton,{opacity:C}]}/>
|
|
5
36
|
<S style={e.actionButtonsRow}>
|
|
6
|
-
<
|
|
7
|
-
<
|
|
37
|
+
<L.View style={[e.iconButtonSkeleton,{opacity:C}]}/>
|
|
38
|
+
<L.View style={[e.iconButtonSkeleton,{opacity:C}]}/>
|
|
8
39
|
</S>
|
|
9
40
|
</S>
|
|
10
41
|
|
|
11
42
|
|
|
12
43
|
<S style={e.chipStripSkeleton}>
|
|
13
|
-
<
|
|
14
|
-
<
|
|
15
|
-
<
|
|
16
|
-
<
|
|
44
|
+
<L.View style={[e.chipSkeleton,{width:48,opacity:C}]}/>
|
|
45
|
+
<L.View style={[e.chipSkeleton,{width:68,opacity:C}]}/>
|
|
46
|
+
<L.View style={[e.chipSkeleton,{width:76,opacity:C}]}/>
|
|
47
|
+
<L.View style={[e.chipSkeleton,{width:58,opacity:C}]}/>
|
|
17
48
|
</S>
|
|
18
49
|
|
|
19
50
|
|
|
20
|
-
{Array.from({length:
|
|
51
|
+
{Array.from({length:T}).map((f,B)=><L.View key={`skeleton_card_${B}`}style={[e.cardSkeleton,{opacity:C}]}>
|
|
21
52
|
|
|
22
53
|
<S style={e.cardTopRow}>
|
|
23
54
|
<S style={e.badgeGroup}>
|
|
@@ -36,5 +67,5 @@ import x,{useEffect as v,useRef as D}from"react";import{Animated as f,StyleSheet
|
|
|
36
67
|
<S style={e.metaPillSkeleton}/>
|
|
37
68
|
<S style={e.metaPillSkeleton}/>
|
|
38
69
|
</S>
|
|
39
|
-
</
|
|
40
|
-
</S>});const e=
|
|
70
|
+
</L.View>)}
|
|
71
|
+
</S>});const e=W.create({container:{flex:1,paddingHorizontal:12,paddingTop:8},toolbarSkeleton:{flexDirection:"row",alignItems:"center",gap:8,marginBottom:8},searchBarSkeleton:{flex:1,height:36,borderRadius:8,backgroundColor:V.graySurface,borderWidth:1,borderColor:V.dividerColor},actionButtonsRow:{flexDirection:"row",gap:6},iconButtonSkeleton:{width:36,height:36,borderRadius:8,backgroundColor:V.graySurface,borderWidth:1,borderColor:V.dividerColor},chipStripSkeleton:{flexDirection:"row",gap:6,marginBottom:10},chipSkeleton:{height:24,borderRadius:6,backgroundColor:V.graySurface,borderWidth:1,borderColor:V.dividerColor},cardSkeleton:{backgroundColor:V.primaryLight,borderRadius:10,padding:12,marginBottom:8,borderWidth:1,borderColor:V.dividerColor},cardTopRow:{flexDirection:"row",justifyContent:"space-between",alignItems:"center",marginBottom:8},badgeGroup:{flexDirection:"row",alignItems:"center",gap:6},statusBadgeSkeleton:{width:38,height:18,borderRadius:4,backgroundColor:V.slate200},methodBadgeSkeleton:{width:44,height:18,borderRadius:4,backgroundColor:V.slate200},timeSkeleton:{width:48,height:12,borderRadius:4,backgroundColor:V.slate200},urlLineLong:{height:13,borderRadius:4,backgroundColor:V.slate200,marginBottom:5,width:"90%"},urlLineShort:{height:11,borderRadius:4,backgroundColor:V.slate200,marginBottom:8,width:"55%"},cardBottomRow:{flexDirection:"row",gap:8,marginTop:2},metaPillSkeleton:{width:52,height:14,borderRadius:4,backgroundColor:V.slate200},heroCard:{backgroundColor:V.primaryLight,borderRadius:12,padding:16,marginBottom:12,borderWidth:1,borderColor:V.dividerColor},detailHeader:{height:48,borderRadius:8,backgroundColor:V.graySurface,marginBottom:12},detailCodeCard:{flex:1,backgroundColor:V.primaryLight,borderRadius:10,padding:14,borderWidth:1,borderColor:V.dividerColor},mediaGrid:{flexDirection:"row",flexWrap:"wrap",gap:8},mediaTile:{width:"31%",aspectRatio:1,borderRadius:8,backgroundColor:V.graySurface,borderWidth:1,borderColor:V.dividerColor}});export default SkeletonPlaceholder;
|
|
@@ -1,58 +1,52 @@
|
|
|
1
|
-
import ce,{useRef as
|
|
1
|
+
import ce,{useRef as H,useState as E}from"react";import{ScrollView as Ce,Text as M,TouchableOpacity as W,View as C}from"react-native";import{useInspector as we}from"./InspectorContext";import{useTranslation as ke}from"../../i18n";import x from"../../styles";import{AppColors as t}from"../../styles/AppColors";import{AppFonts as z}from"../../styles/AppFonts";import _ from"../TouchableScale";import{SignalIcon as Se,TerminalIcon as Re,AnalyticsIcon as Ie,ReduxIcon as Te,CrashIcon as Be,BellIcon as Pe,SmartphoneIcon as Le,DatabaseIcon as Ae,ScreencastIcon as $e,ChevronIcon as F,WebsocketIcon as De,SpeedometerIcon as Oe}from"../NetworkIcons";import{isReduxConnected as Ve}from"../../customHooks/reduxLogger";import{isAnalyticsConnected as He}from"../../customHooks/analyticsLogger";const n={themeColor:t.brandPurple,bgInactive:`${t.brandPurple}0D`,borderInactive:`${t.brandPurple}2B`,iconInactive:t.brandPurple,idBadgeBg:`${t.brandPurple}1C`,idBadgeBorder:`${t.brandPurple}3D`,idBadgeText:t.brandPurple},U={apis:n,logs:n,perf:n,analytics:n,redux:n,storage:n,device:n,crash:n,push:n,socket:n,media:n},Ee=ce.memo(()=>{const{t:S}=ke(),{activeTab:k,switchActiveTab:L,tabVisibility:A,logs:q,consoleLogs:G,analyticsEvents:je,crashRecords:J,pushRecords:K,socketRecords:N,unreadPushCount:Q,unreadSocketCount:X,lastReadApisCount:Y,lastReadLogsCount:Z,lastReadCrashesCount:ee,lastReadSocketCount:te,mediaCount:I}=we(),oe=Ve(),ie=He(),w=k==="media",B=(A?.media??!0)&&(I>0||w||__DEV__),$=H(null),[P,re]=E(!1),[D,ne]=E(!0),O=H(0),se=e=>{const{contentOffset:o,layoutMeasurement:r,contentSize:i}=e.nativeEvent,R=o.x;O.current=R;const T=R>8,v=R<i.width-r.width-8;P!==T&&re(T),D!==v&&ne(v)},V=e=>{$.current?.scrollTo({x:Math.max(0,O.current+e),animated:!0})};return<C style={[x.tabBarContainer,{flexDirection:"row",alignItems:"center",paddingHorizontal:0}]}>
|
|
2
2
|
|
|
3
|
-
{
|
|
4
|
-
<C style={{width:22,height:22,borderRadius:11,backgroundColor:
|
|
5
|
-
<
|
|
3
|
+
{P&&<W onPress={()=>V(-160)}hitSlop={{top:6,bottom:6,left:6,right:6}}activeOpacity={.7}style={{paddingLeft:6,paddingRight:2,justifyContent:"center",alignItems:"center"}}>
|
|
4
|
+
<C style={{width:22,height:22,borderRadius:11,backgroundColor:t.grayBorderSecondary,alignItems:"center",justifyContent:"center"}}>
|
|
5
|
+
<F direction="left"size={13}color={t.grayTextStrong}/>
|
|
6
6
|
</C>
|
|
7
|
-
</
|
|
7
|
+
</W>}
|
|
8
8
|
|
|
9
9
|
|
|
10
|
-
<Ce testID="inspector.tab.scrollview"ref={
|
|
11
|
-
{[{id:1,key:"apis",label:"APIs",
|
|
10
|
+
<Ce testID="inspector.tab.scrollview"ref={$}horizontal showsHorizontalScrollIndicator={!1}onScroll={se}scrollEventThrottle={16}style={{flex:1}}contentContainerStyle={{paddingLeft:P?4:12,paddingRight:B?6:12}}>
|
|
11
|
+
{[{id:1,key:"apis",label:"APIs",icon:"apis"},{id:2,key:"logs",label:"Logs",icon:"logs"},{id:3,key:"perf",label:"Perf / FPS",icon:"perf"},{id:4,key:"analytics",label:"Analytics",icon:"analytics"},{id:5,key:"redux",label:"Redux",icon:"redux"},{id:6,key:"storage",label:"Storage",icon:"storage"},{id:7,key:"device",label:"Device",icon:"device"},{id:8,key:"crash",label:"Crash",icon:"crash"},{id:9,key:"push",label:"Push",icon:"push"},{id:10,key:"socket",label:"WebSocket",icon:"socket"}].filter(e=>!(!A?.[e.key]||e.key==="redux"&&!oe||e.key==="analytics"&&!ie)).map(e=>{const o=k===e.key,r=U[e.key]||U.apis,i=o?t.white:r.iconInactive,R=k!=="apis"&&q.length>Y,T=k!=="logs"&&G.length>Z,v=k!=="crash"&&(J?.length||0)>(ee||0),ae=k!=="socket"&&((N?.length||0)>(te||0)||X>0);return<_ key={e.key}testID={`inspector.tab.${e.key}`}accessible={!0}accessibilityRole="tab"accessibilityState={{selected:o}}accessibilityLabel={`${S(`tabs.${e.key}`,e.label)} tab`}accessibilityHint={S("accessibility.tabSwitchHint","Double tap to switch to this tab")}onPress={()=>{L(e.key)}}style={[x.contentTabButton,{backgroundColor:o?r.themeColor:r.bgInactive,borderColor:o?r.themeColor:r.borderInactive},o&&{shadowColor:r.themeColor,shadowOffset:{width:0,height:2},shadowOpacity:.28,shadowRadius:3.5,elevation:3}]}>
|
|
12
12
|
<C style={{flexDirection:"row",alignItems:"center",gap:6}}>
|
|
13
|
-
{e.icon==="apis"&&<Se color={
|
|
14
|
-
{e.icon==="logs"&&<
|
|
15
|
-
{e.icon==="perf"&&<
|
|
16
|
-
{e.icon==="analytics"&&<
|
|
17
|
-
{e.icon==="redux"&&<Te color={
|
|
18
|
-
{e.icon==="storage"&&<Ae color={
|
|
19
|
-
{e.icon==="device"&&<Le color={
|
|
20
|
-
{e.icon==="crash"&&<Be color={
|
|
21
|
-
{e.icon==="push"&&<Pe color={
|
|
22
|
-
{e.icon==="socket"&&<De color={
|
|
23
|
-
|
|
24
|
-
|
|
25
|
-
<P style={{fontFamily:T.interBold,fontSize:9.5,lineHeight:12,color:t?o.white:i.idBadgeText}}>
|
|
13
|
+
{e.icon==="apis"&&<Se color={i}size={14}/>}
|
|
14
|
+
{e.icon==="logs"&&<Re color={i}size={14}/>}
|
|
15
|
+
{e.icon==="perf"&&<Oe color={i}size={14}/>}
|
|
16
|
+
{e.icon==="analytics"&&<Ie color={i}size={14}/>}
|
|
17
|
+
{e.icon==="redux"&&<Te color={i}size={14}/>}
|
|
18
|
+
{e.icon==="storage"&&<Ae color={i}size={14}/>}
|
|
19
|
+
{e.icon==="device"&&<Le color={i}size={14}/>}
|
|
20
|
+
{e.icon==="crash"&&<Be color={i}size={14}/>}
|
|
21
|
+
{e.icon==="push"&&<Pe color={i}size={14}/>}
|
|
22
|
+
{e.icon==="socket"&&<De color={i}size={14}/>}
|
|
23
|
+
<C style={{minWidth:20,height:20,paddingHorizontal:4,borderRadius:10,backgroundColor:o?`${t.white}33`:r.idBadgeBg,borderWidth:1,borderColor:o?`${t.white}66`:r.idBadgeBorder,alignItems:"center",justifyContent:"center"}}>
|
|
24
|
+
<M style={{fontFamily:z.interBold,fontSize:9.5,lineHeight:12,color:o?t.white:r.idBadgeText}}>
|
|
26
25
|
#{e.id}
|
|
27
|
-
</
|
|
26
|
+
</M>
|
|
28
27
|
</C>
|
|
29
|
-
<
|
|
30
|
-
{
|
|
31
|
-
</
|
|
32
|
-
{e.
|
|
33
|
-
<P style={{fontFamily:T.interBold,fontSize:9.5,lineHeight:12,color:t?o.white:i.themeColor}}>
|
|
34
|
-
{S}
|
|
35
|
-
</P>
|
|
36
|
-
</C>}
|
|
37
|
-
{(e.key==="apis"&&I||e.key==="logs"&&R||e.key==="crash"&&se||e.key==="push"&&((D?.length||0)>0||N>0)||e.key==="socket"&&ae)&&<C style={{width:6,height:6,borderRadius:3,backgroundColor:o.errorColor,marginLeft:4,alignSelf:"center"}}/>}
|
|
28
|
+
<M numberOfLines={1}ellipsizeMode="tail"style={[x.contentTabButtonText,{color:o?t.white:t.grayTextStrong,fontFamily:o?z.interBold:z.interSemiBold}]}>
|
|
29
|
+
{S(`tabs.${e.key}`,e.label)}
|
|
30
|
+
</M>
|
|
31
|
+
{(e.key==="apis"&&R||e.key==="logs"&&T||e.key==="crash"&&v||e.key==="push"&&((K?.length||0)>0||Q>0)||e.key==="socket"&&ae)&&<C style={{width:6,height:6,borderRadius:3,backgroundColor:t.errorColor,marginLeft:4,alignSelf:"center"}}/>}
|
|
38
32
|
</C>
|
|
39
|
-
</
|
|
33
|
+
</_>})}
|
|
40
34
|
</Ce>
|
|
41
35
|
|
|
42
36
|
|
|
43
|
-
{
|
|
44
|
-
<C style={{width:22,height:22,borderRadius:11,backgroundColor:
|
|
45
|
-
<
|
|
37
|
+
{D&&<W onPress={()=>V(160)}hitSlop={{top:6,bottom:6,left:6,right:6}}activeOpacity={.7}style={{paddingLeft:2,paddingRight:B?4:8,justifyContent:"center",alignItems:"center"}}>
|
|
38
|
+
<C style={{width:22,height:22,borderRadius:11,backgroundColor:t.grayBorderSecondary,alignItems:"center",justifyContent:"center"}}>
|
|
39
|
+
<F direction="right"size={13}color={t.grayTextStrong}/>
|
|
46
40
|
</C>
|
|
47
|
-
</
|
|
41
|
+
</W>}
|
|
48
42
|
|
|
49
43
|
|
|
50
|
-
{
|
|
51
|
-
<
|
|
44
|
+
{B&&<C style={{paddingLeft:6,paddingRight:10,borderLeftWidth:1,borderLeftColor:t.dividerColor,backgroundColor:t.primaryLight,justifyContent:"center",shadowColor:t.shadowColorString,shadowOffset:{width:-3,height:0},shadowOpacity:.12,shadowRadius:4,elevation:4,zIndex:10}}>
|
|
45
|
+
<_ key="media"testID="inspector.tab.media"onPress={()=>{L("media")}}accessible={!0}accessibilityRole="tab"accessibilityState={{selected:w}}accessibilityLabel={`${S("tabs.media","Media")} tab${I>0?`, ${I} items`:""}`}accessibilityHint={S("accessibility.tabSwitchHint","Double tap to switch to this tab")}style={[x.contentTabButton,{marginRight:0,borderRadius:8,backgroundColor:w?t.brandPurple:`${t.brandPurple}0D`,borderColor:w?t.brandPurple:`${t.brandPurple}2B`,borderWidth:1,paddingHorizontal:10,paddingVertical:7,alignItems:"center",justifyContent:"center"},w&&{shadowColor:t.brandPurple,shadowOffset:{width:0,height:2},shadowOpacity:.28,shadowRadius:3.5,elevation:3}]}>
|
|
52
46
|
<C style={{position:"relative",alignItems:"center",justifyContent:"center"}}>
|
|
53
|
-
|
|
54
|
-
{
|
|
47
|
+
<$e color={w?t.white:t.brandPurple}size={15}/>
|
|
48
|
+
{I>0&&<C style={{position:"absolute",top:-3,right:-4,width:7,height:7,borderRadius:3.5,backgroundColor:w?t.white:t.brandPurple,borderWidth:1.2,borderColor:w?t.brandPurple:t.white}}/>}
|
|
55
49
|
</C>
|
|
56
|
-
</
|
|
50
|
+
</_>
|
|
57
51
|
</C>}
|
|
58
|
-
</C>});export default
|
|
52
|
+
</C>});export default Ee;
|
|
@@ -1,118 +1,118 @@
|
|
|
1
|
-
import
|
|
1
|
+
import E,{useEffect as le,useRef as ae,useMemo as ie}from"react";import{Alert as U,Animated as O,Linking as se,View as C,Pressable as D,Text as T,StyleSheet as A}from"react-native";import Ce,{Path as Te}from"react-native-svg";import{AppColors as e}from"../styles/AppColors";import{METHOD_COLORS as q}from"../constants";import{getStatusColor as Se,getDurationColor as Be,formatDateTime as Re,getSize as He,getPath as Ve,getBaseUrl as ze,openWithPostman as N}from"../helpers";import{CalendarIcon as Ie,ClockIcon as G,SizeIcon as Le,CircleCheckIcon as Pe,CircleAlertIcon as $e,CircleXIcon as We,RepeatIcon as Oe,ForwardChevronIcon as De,GlobeIcon as Fe,PostmanIcon as Me}from"./NetworkIcons";import{AppFonts as S}from"../styles/AppFonts";import J from"./HighlightText";import Ee from"./TouchableScale";import{useTranslation as Ue}from"../i18n";function Ae({item:o,onPress:B,timelineMinStart:Ne,timelineTotalRange:Ge,isNew:L,isSelected:F,onToggleSelect:K,searchStr:j,testID:Q}){const{t:R}=Ue(),v=q[o.method]??q.ALL,V=ie(()=>{try{const r=new URL(o.url),W=r.host,M=r.pathname+(r.search?r.search:""),ne=r.protocol==="https:";return{host:W,path:M||"/",isHttps:ne}}catch{const r=o.url.toLowerCase().startsWith("https:"),W=Ve(o.url);return{host:ze(o.url).replace(/^https?:\/\//,""),path:W||o.url,isHttps:r}}},[o.url]),X=r=>{r?.stopPropagation?.(),U.alert(R("common.openInBrowser")||"Open URL",`${R("common.openInBrowserPrompt")||"Choose how you want to open or inspect this URL:"}
|
|
2
2
|
|
|
3
|
-
${
|
|
4
|
-
<Ee testID={
|
|
5
|
-
<C style={
|
|
3
|
+
${o.url}`,[{text:R("common.cancel")||"Cancel",style:"cancel"},{text:"Open in Postman",onPress:()=>N(o)},{text:R("common.open")||"Browser",onPress:()=>{se.openURL(o.url).catch(()=>{U.alert(R("common.error")||"Error",R("common.cannotOpenUrl")||"Could not open URL")})}}])},_=r=>{r?.stopPropagation?.(),N(o)},H=o.status===0||o.status!=null&&o.status>=400,z=o.status==null,P=Se(o.status),I=Be(o.duration),Y=z?e.darkOrange:H?e.errorColor:e.greenColor,$=ae(new O.Value(L?.35:0)).current;le(()=>{L&&O.timing($,{toValue:0,duration:1200,useNativeDriver:!0}).start()},[L,$]);const Z=()=>{if(z)return"...";if(o.status===0||o.status==null)return R("network.statusFailed")||"FAILED";const r=typeof o.status=="number"?o.status:parseInt(String(o.status||0),10);return r===200?"200 OK":r===201?"201 Created":r===204?"204 No Content":r===304?"304 Not Modified":r===400?"400 Bad Req":r===401?"401 Unauth":r===403?"403 Forbidden":r===404?"404 Not Found":r===500?"500 Error":String(o.status)},ee=()=>{if(z)return<G color={e.darkOrange}size={10}/>;const r=typeof o.status=="number"?o.status:parseInt(String(o.status||0),10);return r>=200&&r<300?<Pe color={e.greenColor}size={10}/>:r>=300&&r<400?<Oe color={e.amber700}size={10}/>:r>=400&&r<500?<$e color={e.darkOrange}size={10}/>:<We color={e.errorColor}size={10}/>},oe=Re(o.startTime),te=o.url.split("?")[0].toLowerCase().endsWith(".json"),re=E.useCallback(()=>{B?.(o)},[B,o]);return<C style={t.container}>
|
|
4
|
+
<Ee testID={Q}onPress={re}style={[t.card,{borderLeftWidth:3.5,borderLeftColor:Y,backgroundColor:H?e.errorCardBg:e.white}]}>
|
|
5
|
+
<C style={t.cardBody}>
|
|
6
6
|
|
|
7
|
-
<C style={
|
|
8
|
-
<C style={
|
|
9
|
-
<D onPress={()=>
|
|
7
|
+
<C style={t.cardHeaderRow}>
|
|
8
|
+
<C style={t.cardHeaderLeft}>
|
|
9
|
+
<D onPress={()=>K(o.id)}hitSlop={12}style={[t.smallCheckbox,F&&t.smallCheckboxChecked]}>
|
|
10
10
|
{F&&<Ce width={9}height={9}viewBox="0 0 24 24"fill="none">
|
|
11
11
|
<Te d="M20 6L9 17l-5-5"stroke={e.white}strokeWidth="4"strokeLinecap="round"strokeLinejoin="round"/>
|
|
12
12
|
</Ce>}
|
|
13
13
|
</D>
|
|
14
14
|
|
|
15
|
-
<T style={
|
|
15
|
+
<T style={t.serialNumber}>#{o.id+1}</T>
|
|
16
16
|
|
|
17
|
-
<C style={[
|
|
18
|
-
<T style={
|
|
19
|
-
{
|
|
17
|
+
<C style={[t.methodBadge,{backgroundColor:v}]}>
|
|
18
|
+
<T style={t.methodBadgeText}>
|
|
19
|
+
{o.method}
|
|
20
20
|
</T>
|
|
21
21
|
</C>
|
|
22
22
|
|
|
23
|
-
{
|
|
24
|
-
<T style={[
|
|
25
|
-
{
|
|
23
|
+
{o.client&&<C style={[t.chip,{backgroundColor:o.client==="axios"?`${e.purple}14`:o.client==="apollo"||o.client==="graphql"?`${e.pink500}14`:o.client==="xhr"?`${e.amber500}14`:`${e.sky500}14`,borderColor:o.client==="axios"?`${e.purple}30`:o.client==="apollo"||o.client==="graphql"?`${e.pink500}30`:o.client==="xhr"?`${e.amber500}30`:`${e.sky500}30`}]}>
|
|
24
|
+
<T style={[t.chipText,{color:o.client==="axios"?e.purple:o.client==="apollo"||o.client==="graphql"?e.pink500:o.client==="xhr"?e.amber700:e.sky600}]}>
|
|
25
|
+
{o.client.toUpperCase()}
|
|
26
26
|
</T>
|
|
27
27
|
</C>}
|
|
28
28
|
|
|
29
29
|
|
|
30
|
-
{(
|
|
31
|
-
<T style={[
|
|
30
|
+
{(o.url.toLowerCase().includes("graphql")||o.client==="apollo"||o.client==="graphql")&&<C style={[t.chip,{backgroundColor:e.roseBg,borderColor:e.roseBorder}]}>
|
|
31
|
+
<T style={[t.chipText,{color:e.pink600}]}>
|
|
32
32
|
GQL
|
|
33
33
|
</T>
|
|
34
34
|
</C>}
|
|
35
35
|
</C>
|
|
36
36
|
|
|
37
|
-
<C style={
|
|
38
|
-
<C style={[
|
|
39
|
-
{
|
|
40
|
-
<T style={[
|
|
41
|
-
{
|
|
37
|
+
<C style={t.cardHeaderRight}>
|
|
38
|
+
<C style={[t.statusPill,{backgroundColor:H?`${e.errorColor}14`:z?`${e.darkOrange}14`:`${P}14`,borderColor:H?`${e.errorColor}33`:z?`${e.darkOrange}33`:`${P}33`}]}>
|
|
39
|
+
{ee()}
|
|
40
|
+
<T style={[t.statusPillText,{color:H?e.errorColor:z?e.darkOrange:P}]}>
|
|
41
|
+
{Z()}
|
|
42
42
|
</T>
|
|
43
43
|
</C>
|
|
44
|
-
<D onPress={
|
|
44
|
+
<D onPress={X}hitSlop={{top:6,bottom:6,left:3,right:3}}style={t.globeBtn}accessibilityRole="button"accessibilityLabel="Open in Browser">
|
|
45
45
|
<Fe color={e.grayTextWeak}size={12}/>
|
|
46
46
|
</D>
|
|
47
|
-
<D onPress={
|
|
47
|
+
<D onPress={_}hitSlop={{top:6,bottom:6,left:3,right:3}}style={[t.globeBtn,{backgroundColor:"rgba(255, 108, 55, 0.12)",borderColor:"rgba(255, 108, 55, 0.28)"}]}accessibilityRole="button"accessibilityLabel="Open with Postman">
|
|
48
48
|
<Me color="#FF6C37"size={11}/>
|
|
49
49
|
</D>
|
|
50
|
-
<C style={
|
|
50
|
+
<C style={t.chevronWrapper}>
|
|
51
51
|
<De color={e.grayTextWeak}size={13}/>
|
|
52
52
|
</C>
|
|
53
53
|
</C>
|
|
54
54
|
</C>
|
|
55
55
|
|
|
56
56
|
|
|
57
|
-
<C style={
|
|
57
|
+
<C style={t.urlBox}>
|
|
58
58
|
|
|
59
|
-
<C style={
|
|
60
|
-
<C style={
|
|
61
|
-
<C style={[
|
|
62
|
-
<T style={[
|
|
59
|
+
<C style={t.urlMainRow}>
|
|
60
|
+
<C style={t.hostRow}>
|
|
61
|
+
<C style={[t.protoBadge,{backgroundColor:V.isHttps?`${e.emerald600}12`:`${e.amber600}12`,borderColor:V.isHttps?`${e.emerald600}2B`:`${e.amber600}2B`}]}>
|
|
62
|
+
<T style={[t.protoBadgeText,{color:V.isHttps?e.emerald600:e.amber700}]}>
|
|
63
63
|
{V.isHttps?"HTTPS":"HTTP"}
|
|
64
64
|
</T>
|
|
65
65
|
</C>
|
|
66
|
-
<
|
|
66
|
+
<J text={V.host||o.url}search={j}style={t.hostText}highlightStyle={t.highlight}numberOfLines={1}ellipsizeMode="tail"/>
|
|
67
67
|
</C>
|
|
68
|
-
<C style={
|
|
69
|
-
{te&&<C style={
|
|
70
|
-
<T style={
|
|
68
|
+
<C style={t.urlBadgeRow}>
|
|
69
|
+
{te&&<C style={t.jsonBadge}>
|
|
70
|
+
<T style={t.jsonBadgeText}>.json</T>
|
|
71
71
|
</C>}
|
|
72
|
-
{
|
|
73
|
-
<T style={
|
|
72
|
+
{o.duplicateCount!=null&&o.duplicateCount>1&&<C style={t.dupBadge}>
|
|
73
|
+
<T style={t.dupBadgeText}>×{o.duplicateCount}</T>
|
|
74
74
|
</C>}
|
|
75
75
|
</C>
|
|
76
76
|
</C>
|
|
77
77
|
|
|
78
78
|
|
|
79
|
-
<C style={
|
|
80
|
-
<
|
|
79
|
+
<C style={t.slugRow}>
|
|
80
|
+
<J text={V.path}search={j}style={t.pathText}highlightStyle={t.highlight}numberOfLines={1}ellipsizeMode="middle"/>
|
|
81
81
|
</C>
|
|
82
82
|
</C>
|
|
83
83
|
|
|
84
84
|
|
|
85
|
-
<C style={
|
|
86
|
-
<C style={
|
|
87
|
-
<C style={
|
|
85
|
+
<C style={t.cardFooterRow}>
|
|
86
|
+
<C style={t.footerLeft}>
|
|
87
|
+
<C style={t.cardDateRow}>
|
|
88
88
|
<Ie color={e.grayTextWeak}size={10}/>
|
|
89
|
-
<T style={
|
|
89
|
+
<T style={t.cardDateText}numberOfLines={1}>{oe}</T>
|
|
90
90
|
</C>
|
|
91
91
|
</C>
|
|
92
92
|
|
|
93
|
-
<C style={
|
|
94
|
-
{
|
|
93
|
+
<C style={t.footerRight}>
|
|
94
|
+
{o.response!=null&&<C style={t.metaStatChip}>
|
|
95
95
|
<Le color={e.purple}size={9}/>
|
|
96
|
-
<T style={
|
|
97
|
-
{He(
|
|
96
|
+
<T style={t.metaStatText}>
|
|
97
|
+
{He(o.response)}
|
|
98
98
|
</T>
|
|
99
99
|
</C>}
|
|
100
100
|
|
|
101
|
-
{
|
|
102
|
-
<
|
|
103
|
-
<T style={[
|
|
104
|
-
{
|
|
101
|
+
{o.duration!=null&&!H&&<C style={[t.metaStatChip,{backgroundColor:`${I}12`,borderColor:`${I}2E`}]}>
|
|
102
|
+
<G color={I}size={9}/>
|
|
103
|
+
<T style={[t.metaStatText,{color:I}]}>
|
|
104
|
+
{o.duration}ms
|
|
105
105
|
</T>
|
|
106
106
|
</C>}
|
|
107
107
|
</C>
|
|
108
108
|
</C>
|
|
109
109
|
|
|
110
110
|
|
|
111
|
-
<C style={
|
|
112
|
-
{typeof
|
|
111
|
+
<C style={t.waterfallContainer}>
|
|
112
|
+
{typeof o.duration=="number"&&o.duration>0&&!H&&<C style={[t.waterfallBar,{width:`${Math.min(100,Math.max(6,o.duration/1200*100))}%`,backgroundColor:I}]}/>}
|
|
113
113
|
</C>
|
|
114
114
|
</C>
|
|
115
115
|
|
|
116
|
-
{L&&<O.View pointerEvents="none"style={[
|
|
116
|
+
{L&&<O.View pointerEvents="none"style={[A.absoluteFill,{backgroundColor:v,opacity:$}]}/>}
|
|
117
117
|
</Ee>
|
|
118
|
-
</C>}const
|
|
118
|
+
</C>}const t=A.create({container:{paddingHorizontal:8,paddingVertical:4,height:126,justifyContent:"center"},card:{height:118,alignSelf:"stretch",borderRadius:10,overflow:"hidden",borderWidth:1,borderColor:e.dividerColor,shadowColor:e.shadowColorString},cardBody:{height:"100%",paddingHorizontal:8,paddingTop:8,paddingBottom:6,justifyContent:"space-between"},cardHeaderRow:{flexDirection:"row",alignItems:"center",justifyContent:"space-between",height:22,minHeight:22,maxHeight:22},cardHeaderLeft:{flexDirection:"row",alignItems:"center",flex:1,marginRight:4,gap:4.5,minWidth:0,overflow:"hidden"},cardHeaderRight:{flexDirection:"row",alignItems:"center",gap:7,flexShrink:0},smallCheckbox:{width:15,height:15,borderRadius:4,borderWidth:1.5,borderColor:e.grayTextWeak,alignItems:"center",justifyContent:"center",backgroundColor:e.white},smallCheckboxChecked:{backgroundColor:e.purple,borderColor:e.purple},serialNumber:{fontFamily:S.interBold,color:e.grayTextWeak,fontSize:10},methodBadge:{paddingHorizontal:6,paddingVertical:2,borderRadius:5,alignItems:"center",justifyContent:"center"},methodBadgeText:{fontFamily:S.interBold,fontSize:9.5,lineHeight:12,letterSpacing:.5,color:e.white},chip:{paddingHorizontal:5.5,paddingVertical:1.5,borderRadius:4,borderWidth:1},chipText:{fontFamily:S.interBold,fontSize:9,lineHeight:12},statusPill:{flexDirection:"row",alignItems:"center",gap:3.5,paddingHorizontal:6,paddingVertical:2,borderRadius:6,borderWidth:1,flexShrink:0},statusPillText:{fontFamily:S.interBold,fontSize:9.5,lineHeight:12},globeBtn:{width:26,height:22,borderRadius:5,backgroundColor:`${e.grayTextWeak}14`,borderWidth:1,borderColor:`${e.grayTextWeak}28`,alignItems:"center",justifyContent:"center"},chevronWrapper:{paddingLeft:2,alignItems:"center",justifyContent:"center"},urlBox:{backgroundColor:e.grayBackground,borderRadius:7,borderWidth:1,borderColor:e.dividerColor,paddingHorizontal:7,paddingVertical:4.5,height:48,minHeight:48,maxHeight:48,justifyContent:"center",gap:2.5,overflow:"hidden"},urlMainRow:{flexDirection:"row",alignItems:"center",justifyContent:"space-between",gap:4,minHeight:16},hostRow:{flexDirection:"row",alignItems:"center",gap:5,flex:1,minWidth:0},protoBadge:{paddingHorizontal:4,paddingVertical:1,borderRadius:3.5,borderWidth:1},protoBadgeText:{fontFamily:S.interBold,fontSize:8,lineHeight:10},hostText:{fontFamily:S.interBold,fontSize:11.5,lineHeight:15,color:e.primaryBlack,flex:1},urlBadgeRow:{flexDirection:"row",alignItems:"center",gap:4,flexShrink:0},jsonBadge:{backgroundColor:`${e.darkOrange}14`,borderColor:`${e.darkOrange}2E`,borderWidth:1,paddingHorizontal:4.5,paddingVertical:1,borderRadius:3.5},jsonBadgeText:{fontFamily:S.interBold,fontSize:8.5,color:e.darkOrange},dupBadge:{backgroundColor:`${e.purple}14`,borderColor:`${e.purple}2E`,borderWidth:1,paddingHorizontal:4.5,paddingVertical:1,borderRadius:3.5},dupBadgeText:{fontFamily:S.interBold,fontSize:8.5,color:e.purple},slugRow:{flexDirection:"row",alignItems:"center",minHeight:15},pathText:{fontFamily:S.interMedium,fontSize:10.5,lineHeight:14,color:e.slate600||e.grayText,flex:1},highlight:{backgroundColor:e.yellowHighlight,color:e.primaryBlack,borderRadius:2},cardFooterRow:{flexDirection:"row",alignItems:"center",justifyContent:"space-between",height:18,minHeight:18,maxHeight:18,gap:4},footerLeft:{flexDirection:"row",alignItems:"center",gap:4.5,flex:1,minWidth:0,overflow:"hidden"},footerRight:{flexDirection:"row",alignItems:"center",gap:4,flexShrink:0},cardDateRow:{flexDirection:"row",alignItems:"center",gap:3.5},cardDateText:{fontFamily:S.interRegular,fontSize:10,lineHeight:13,color:e.slate400},metaStatChip:{flexDirection:"row",alignItems:"center",gap:3,backgroundColor:e.violetSoftBg,borderColor:e.violetSoftBorder,borderWidth:1,paddingHorizontal:5.5,paddingVertical:1.5,borderRadius:4},metaStatText:{fontFamily:S.interBold,color:e.violetSoftText,fontSize:9,lineHeight:12},waterfallContainer:{height:2.5,width:"100%",backgroundColor:e.graySurface,borderRadius:1.5,overflow:"hidden",marginTop:2},waterfallBar:{height:"100%",borderRadius:1.5}});function qe(o,B){return o.item===B.item&&o.isSelected===B.isSelected&&o.isNew===B.isNew&&o.searchStr===B.searchStr&&o.onPress===B.onPress&&o.onToggleSelect===B.onToggleSelect}export default E.memo(Ae,qe);
|
|
@@ -1,5 +1,8 @@
|
|
|
1
1
|
import React from 'react';
|
|
2
|
+
import { ActiveTab } from '../types';
|
|
2
3
|
export interface SkeletonPlaceholderProps {
|
|
4
|
+
tab?: ActiveTab;
|
|
5
|
+
type?: 'card' | 'detail' | 'list' | 'table';
|
|
3
6
|
cardCount?: number;
|
|
4
7
|
}
|
|
5
8
|
export declare const SkeletonPlaceholder: React.NamedExoticComponent<SkeletonPlaceholderProps>;
|
|
@@ -1,23 +1,54 @@
|
|
|
1
|
-
import x,{useEffect as
|
|
1
|
+
import x,{useEffect as A,useRef as D}from"react";import{Animated as L,StyleSheet as W,View as S}from"react-native";import{AppColors as V}from"../styles/AppColors";export const SkeletonPlaceholder=x.memo(function({tab:R="apis",type:v="card",cardCount:T=4}){const C=D(new L.Value(.4)).current;return A(()=>{const f=L.loop(L.sequence([L.timing(C,{toValue:.95,duration:700,useNativeDriver:!0}),L.timing(C,{toValue:.4,duration:700,useNativeDriver:!0})]));return f.start(),()=>f.stop()},[C]),v==="detail"?<S style={e.container}accessible={!0}accessibilityRole="progressbar"accessibilityLabel="Loading details, please wait"accessibilityLiveRegion="polite">
|
|
2
|
+
<L.View style={[e.detailHeader,{opacity:C}]}/>
|
|
3
|
+
<S style={e.chipStripSkeleton}>
|
|
4
|
+
<L.View style={[e.chipSkeleton,{width:70,opacity:C}]}/>
|
|
5
|
+
<L.View style={[e.chipSkeleton,{width:90,opacity:C}]}/>
|
|
6
|
+
<L.View style={[e.chipSkeleton,{width:80,opacity:C}]}/>
|
|
7
|
+
</S>
|
|
8
|
+
<L.View style={[e.detailCodeCard,{opacity:C}]}>
|
|
9
|
+
<S style={[e.urlLineLong,{width:"85%"}]}/>
|
|
10
|
+
<S style={[e.urlLineLong,{width:"70%",marginTop:8}]}/>
|
|
11
|
+
<S style={[e.urlLineLong,{width:"92%",marginTop:8}]}/>
|
|
12
|
+
<S style={[e.urlLineLong,{width:"60%",marginTop:8}]}/>
|
|
13
|
+
<S style={[e.urlLineLong,{width:"78%",marginTop:8}]}/>
|
|
14
|
+
</L.View>
|
|
15
|
+
</S>:R==="media"?<S style={e.container}accessible={!0}accessibilityRole="progressbar"accessibilityLabel="Loading media gallery, please wait"accessibilityLiveRegion="polite">
|
|
16
|
+
<S style={e.mediaGrid}>
|
|
17
|
+
{Array.from({length:6}).map((f,B)=><L.View key={`skeleton_media_${B}`}style={[e.mediaTile,{opacity:C}]}/>)}
|
|
18
|
+
</S>
|
|
19
|
+
</S>:R==="perf"?<S style={e.container}accessible={!0}accessibilityRole="progressbar"accessibilityLabel="Loading performance diagnostics, please wait"accessibilityLiveRegion="polite">
|
|
20
|
+
<L.View style={[e.heroCard,{opacity:C}]}>
|
|
21
|
+
<S style={e.cardTopRow}>
|
|
22
|
+
<S style={e.timeSkeleton}/>
|
|
23
|
+
<S style={e.statusBadgeSkeleton}/>
|
|
24
|
+
</S>
|
|
25
|
+
<S style={[e.urlLineLong,{height:32,marginTop:12}]}/>
|
|
26
|
+
</L.View>
|
|
27
|
+
<L.View style={[e.cardSkeleton,{opacity:C}]}>
|
|
28
|
+
<S style={[e.urlLineLong,{width:"40%"}]}/>
|
|
29
|
+
<S style={[e.urlLineShort,{marginTop:10}]}/>
|
|
30
|
+
<S style={[e.urlLineLong,{marginTop:8}]}/>
|
|
31
|
+
</L.View>
|
|
32
|
+
</S>:<S style={e.container}accessible={!0}accessibilityRole="progressbar"accessibilityLabel={`Loading ${R} data, please wait`}accessibilityLiveRegion="polite">
|
|
2
33
|
|
|
3
34
|
<S style={e.toolbarSkeleton}>
|
|
4
|
-
<
|
|
35
|
+
<L.View style={[e.searchBarSkeleton,{opacity:C}]}/>
|
|
5
36
|
<S style={e.actionButtonsRow}>
|
|
6
|
-
<
|
|
7
|
-
<
|
|
37
|
+
<L.View style={[e.iconButtonSkeleton,{opacity:C}]}/>
|
|
38
|
+
<L.View style={[e.iconButtonSkeleton,{opacity:C}]}/>
|
|
8
39
|
</S>
|
|
9
40
|
</S>
|
|
10
41
|
|
|
11
42
|
|
|
12
43
|
<S style={e.chipStripSkeleton}>
|
|
13
|
-
<
|
|
14
|
-
<
|
|
15
|
-
<
|
|
16
|
-
<
|
|
44
|
+
<L.View style={[e.chipSkeleton,{width:48,opacity:C}]}/>
|
|
45
|
+
<L.View style={[e.chipSkeleton,{width:68,opacity:C}]}/>
|
|
46
|
+
<L.View style={[e.chipSkeleton,{width:76,opacity:C}]}/>
|
|
47
|
+
<L.View style={[e.chipSkeleton,{width:58,opacity:C}]}/>
|
|
17
48
|
</S>
|
|
18
49
|
|
|
19
50
|
|
|
20
|
-
{Array.from({length:
|
|
51
|
+
{Array.from({length:T}).map((f,B)=><L.View key={`skeleton_card_${B}`}style={[e.cardSkeleton,{opacity:C}]}>
|
|
21
52
|
|
|
22
53
|
<S style={e.cardTopRow}>
|
|
23
54
|
<S style={e.badgeGroup}>
|
|
@@ -36,5 +67,5 @@ import x,{useEffect as v,useRef as D}from"react";import{Animated as f,StyleSheet
|
|
|
36
67
|
<S style={e.metaPillSkeleton}/>
|
|
37
68
|
<S style={e.metaPillSkeleton}/>
|
|
38
69
|
</S>
|
|
39
|
-
</
|
|
40
|
-
</S>});const e=
|
|
70
|
+
</L.View>)}
|
|
71
|
+
</S>});const e=W.create({container:{flex:1,paddingHorizontal:12,paddingTop:8},toolbarSkeleton:{flexDirection:"row",alignItems:"center",gap:8,marginBottom:8},searchBarSkeleton:{flex:1,height:36,borderRadius:8,backgroundColor:V.graySurface,borderWidth:1,borderColor:V.dividerColor},actionButtonsRow:{flexDirection:"row",gap:6},iconButtonSkeleton:{width:36,height:36,borderRadius:8,backgroundColor:V.graySurface,borderWidth:1,borderColor:V.dividerColor},chipStripSkeleton:{flexDirection:"row",gap:6,marginBottom:10},chipSkeleton:{height:24,borderRadius:6,backgroundColor:V.graySurface,borderWidth:1,borderColor:V.dividerColor},cardSkeleton:{backgroundColor:V.primaryLight,borderRadius:10,padding:12,marginBottom:8,borderWidth:1,borderColor:V.dividerColor},cardTopRow:{flexDirection:"row",justifyContent:"space-between",alignItems:"center",marginBottom:8},badgeGroup:{flexDirection:"row",alignItems:"center",gap:6},statusBadgeSkeleton:{width:38,height:18,borderRadius:4,backgroundColor:V.slate200},methodBadgeSkeleton:{width:44,height:18,borderRadius:4,backgroundColor:V.slate200},timeSkeleton:{width:48,height:12,borderRadius:4,backgroundColor:V.slate200},urlLineLong:{height:13,borderRadius:4,backgroundColor:V.slate200,marginBottom:5,width:"90%"},urlLineShort:{height:11,borderRadius:4,backgroundColor:V.slate200,marginBottom:8,width:"55%"},cardBottomRow:{flexDirection:"row",gap:8,marginTop:2},metaPillSkeleton:{width:52,height:14,borderRadius:4,backgroundColor:V.slate200},heroCard:{backgroundColor:V.primaryLight,borderRadius:12,padding:16,marginBottom:12,borderWidth:1,borderColor:V.dividerColor},detailHeader:{height:48,borderRadius:8,backgroundColor:V.graySurface,marginBottom:12},detailCodeCard:{flex:1,backgroundColor:V.primaryLight,borderRadius:10,padding:14,borderWidth:1,borderColor:V.dividerColor},mediaGrid:{flexDirection:"row",flexWrap:"wrap",gap:8},mediaTile:{width:"31%",aspectRatio:1,borderRadius:8,backgroundColor:V.graySurface,borderWidth:1,borderColor:V.dividerColor}});export default SkeletonPlaceholder;
|
|
@@ -1,3 +1,3 @@
|
|
|
1
|
-
export declare const ENC_MID = "
|
|
2
|
-
export declare const ENC_SEC = "
|
|
3
|
-
export declare const TELEMETRY_SALT = "
|
|
1
|
+
export declare const ENC_MID = "";
|
|
2
|
+
export declare const ENC_SEC = "";
|
|
3
|
+
export declare const TELEMETRY_SALT = "";
|
|
@@ -1 +1 @@
|
|
|
1
|
-
export const ENC_MID="
|
|
1
|
+
export const ENC_MID="",ENC_SEC="",TELEMETRY_SALT="";
|
|
@@ -1 +1 @@
|
|
|
1
|
-
export declare const LIB_VERSION = "2.5.
|
|
1
|
+
export declare const LIB_VERSION = "2.5.15";
|
|
@@ -1 +1 @@
|
|
|
1
|
-
export const LIB_VERSION="2.5.
|
|
1
|
+
export const LIB_VERSION="2.5.15";
|
|
@@ -1 +1 @@
|
|
|
1
|
-
const d=["apis","logs","perf","analytics","redux","storage","device","crash","
|
|
1
|
+
const d=["apis","logs","perf","analytics","redux","storage","device","crash","media","socket"];let u=null;export function getFirebaseRemoteConfig(e){if(e&&typeof e=="object")return u=e,e;if(u)return u;try{const n=require("@react-native-firebase/remote-config"),t=typeof n.default=="function"?n.default():typeof n=="function"?n():n;return u=t,t}catch{return null}}export function isFirebaseRemoteConfigAvailable(e){return!!getFirebaseRemoteConfig(e)}function l(e){if(e!=null){if(typeof e=="boolean")return e;if(typeof e=="number")return e!==0;if(typeof e=="string"){const n=e.trim().toLowerCase();if(n==="true"||n==="1"||n==="enabled"||n==="on")return!0;if(n==="false"||n==="0"||n==="disabled"||n==="off")return!1;try{return JSON.parse(e)}catch{return}}if(typeof e.asBoolean=="function")return e.asBoolean();if(typeof e.asString=="function"){const n=e.asString(),t=n.trim().toLowerCase();if(t==="true"||t==="1"||t==="enabled"||t==="on")return!0;if(t==="false"||t==="0"||t==="disabled"||t==="off")return!1;try{return JSON.parse(n)}catch{return}}}}export async function fetchRemoteConfigSettings(e,n=8e3){const t=getFirebaseRemoteConfig(e);if(!t)return null;try{const y=(async()=>{typeof t.fetchAndActivate=="function"?await t.fetchAndActivate():(typeof t.fetch=="function"&&await t.fetch(),typeof t.activate=="function"&&await t.activate())})(),_=new Promise((o,r)=>setTimeout(()=>r(new Error("Remote Config fetch timeout")),n));await Promise.race([y,_]).catch(()=>{});const s=o=>{if(typeof t.getValue=="function")try{return t.getValue(o)}catch{return}return t[o]},f={},i={},b=["inspector_modules","inapp_inspector_modules","react_native_inapp_inspector_modules"];for(const o of b){const r=s(o),c=l(r);if(c&&typeof c=="object")for(const a of d)typeof c[a]=="boolean"&&(i[a]=c[a])}for(const o of d){const r=[`inspector_module_${o}`,`inapp_inspector_${o}`,`inspector_${o}`,`inapp_inspector_module_${o}`,`rn_inspector_${o}`];for(const c of r){const a=s(c),p=l(a);if(typeof p=="boolean"){i[o]=p;break}}}Object.keys(i).length>0&&(i.apis===void 0&&(i.apis=!0),f.modules=i);const m=["inspector_capture_widget_enabled","inapp_inspector_capture_widget","inspector_floating_capture_enabled"];for(const o of m){const r=l(s(o));if(typeof r=="boolean"){f.captureWidgetEnabled=r;break}}const g=["inspector_enabled","inapp_inspector_enabled"];for(const o of g){const r=l(s(o));if(typeof r=="boolean"){f.enabled=r;break}}return Object.keys(f).length>0?f:null}catch{return null}}export async function fetchRemoteConfigModuleStatus(e,n=8e3){return(await fetchRemoteConfigSettings(e,n))?.modules||null}
|