react-native-inapp-inspector 2.5.10 → 2.5.12
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/README.ar.md +0 -8
- package/README.de.md +0 -8
- package/README.es.md +0 -8
- package/README.fr.md +0 -8
- package/README.hi.md +0 -8
- package/README.ja.md +0 -8
- package/README.ko.md +0 -8
- package/README.md +54 -26
- package/README.pt-BR.md +0 -8
- package/README.ru.md +0 -8
- package/README.zh-CN.md +0 -8
- package/dist/commonjs/components/ConsoleLogCard.js +32 -26
- package/dist/commonjs/components/ErrorBoundary.js +1 -1
- package/dist/commonjs/components/Inspector/ConsoleTab.js +19 -14
- package/dist/commonjs/components/Inspector/FloatingCaptureWidget.js +4 -4
- package/dist/commonjs/components/Inspector/InspectorHeader.js +73 -65
- package/dist/commonjs/components/Inspector/MainScreen.js +9 -6
- package/dist/commonjs/components/Inspector/MediaGalleryTab.js +187 -90
- package/dist/commonjs/components/Inspector/NetworkDetail.js +11 -8
- package/dist/commonjs/components/Inspector/NetworkTab.js +33 -31
- package/dist/commonjs/components/Inspector/PerformanceTab.d.ts +2 -0
- package/dist/commonjs/components/Inspector/PerformanceTab.js +652 -0
- package/dist/commonjs/components/Inspector/SettingsPanel.js +346 -245
- package/dist/commonjs/components/Inspector/TabBar.js +17 -16
- package/dist/commonjs/components/LogCard.js +11 -8
- package/dist/commonjs/components/ModuleErrorBoundary.js +1 -1
- package/dist/commonjs/components/NetworkIcons.d.ts +9 -0
- package/dist/commonjs/components/NetworkIcons.js +51 -6
- package/dist/commonjs/constants/index.d.ts +1 -0
- package/dist/commonjs/constants/index.js +1 -1
- package/dist/commonjs/constants/version.d.ts +1 -1
- package/dist/commonjs/constants/version.js +1 -1
- package/dist/commonjs/customHooks/crashHandler.d.ts +9 -1
- package/dist/commonjs/customHooks/crashHandler.js +4 -4
- package/dist/commonjs/helpers/index.d.ts +3 -0
- package/dist/commonjs/helpers/index.js +8 -6
- package/dist/commonjs/helpers/performanceSampler.d.ts +88 -0
- package/dist/commonjs/helpers/performanceSampler.js +1 -0
- package/dist/commonjs/helpers/remoteConfig.d.ts +6 -0
- package/dist/commonjs/helpers/remoteConfig.js +1 -1
- package/dist/commonjs/helpers/telemetry.js +1 -1
- package/dist/commonjs/i18n/locales/ar.json +1 -1
- package/dist/commonjs/i18n/locales/bn.json +1 -1
- package/dist/commonjs/i18n/locales/de.json +1 -1
- package/dist/commonjs/i18n/locales/en.json +1 -1
- package/dist/commonjs/i18n/locales/es.json +1 -1
- package/dist/commonjs/i18n/locales/fr.json +1 -1
- package/dist/commonjs/i18n/locales/gu.json +1 -1
- package/dist/commonjs/i18n/locales/hi.json +1 -1
- package/dist/commonjs/i18n/locales/id.json +1 -1
- package/dist/commonjs/i18n/locales/it.json +1 -1
- package/dist/commonjs/i18n/locales/ja.json +1 -1
- package/dist/commonjs/i18n/locales/kn.json +1 -1
- package/dist/commonjs/i18n/locales/ko.json +1 -1
- package/dist/commonjs/i18n/locales/ml.json +1 -1
- package/dist/commonjs/i18n/locales/mr.json +1 -1
- package/dist/commonjs/i18n/locales/nl.json +1 -1
- package/dist/commonjs/i18n/locales/pa.json +1 -1
- package/dist/commonjs/i18n/locales/pl.json +1 -1
- package/dist/commonjs/i18n/locales/pt.json +1 -1
- package/dist/commonjs/i18n/locales/ru.json +1 -1
- package/dist/commonjs/i18n/locales/ta.json +1 -1
- package/dist/commonjs/i18n/locales/te.json +1 -1
- package/dist/commonjs/i18n/locales/tr.json +1 -1
- package/dist/commonjs/i18n/locales/vi.json +1 -1
- package/dist/commonjs/i18n/locales/zh.json +1 -1
- package/dist/commonjs/index.d.ts +4 -2
- package/dist/commonjs/index.js +3 -3
- package/dist/commonjs/styles/index.js +1 -1
- package/dist/commonjs/types/enums.d.ts +1 -0
- package/dist/commonjs/types/enums.js +1 -1
- package/dist/commonjs/types/interfaces.d.ts +28 -0
- package/dist/esm/components/ConsoleLogCard.js +67 -61
- package/dist/esm/components/ErrorBoundary.js +10 -10
- package/dist/esm/components/Inspector/ConsoleTab.js +33 -28
- package/dist/esm/components/Inspector/FloatingCaptureWidget.js +22 -22
- package/dist/esm/components/Inspector/InspectorHeader.js +194 -186
- package/dist/esm/components/Inspector/MainScreen.js +61 -58
- package/dist/esm/components/Inspector/MediaGalleryTab.js +254 -157
- package/dist/esm/components/Inspector/NetworkDetail.js +62 -59
- package/dist/esm/components/Inspector/NetworkTab.js +39 -37
- package/dist/esm/components/Inspector/PerformanceTab.d.ts +2 -0
- package/dist/esm/components/Inspector/PerformanceTab.js +652 -0
- package/dist/esm/components/Inspector/SettingsPanel.js +407 -306
- package/dist/esm/components/Inspector/TabBar.js +4 -3
- package/dist/esm/components/LogCard.js +37 -34
- package/dist/esm/components/ModuleErrorBoundary.js +1 -1
- package/dist/esm/components/NetworkIcons.d.ts +9 -0
- package/dist/esm/components/NetworkIcons.js +48 -3
- package/dist/esm/constants/index.d.ts +1 -0
- package/dist/esm/constants/index.js +1 -1
- package/dist/esm/constants/version.d.ts +1 -1
- package/dist/esm/constants/version.js +1 -1
- package/dist/esm/customHooks/crashHandler.d.ts +9 -1
- package/dist/esm/customHooks/crashHandler.js +6 -6
- package/dist/esm/helpers/index.d.ts +3 -0
- package/dist/esm/helpers/index.js +8 -6
- package/dist/esm/helpers/performanceSampler.d.ts +88 -0
- package/dist/esm/helpers/performanceSampler.js +1 -0
- package/dist/esm/helpers/remoteConfig.d.ts +6 -0
- package/dist/esm/helpers/remoteConfig.js +1 -1
- package/dist/esm/helpers/telemetry.js +1 -1
- package/dist/esm/i18n/locales/ar.json +1 -1
- package/dist/esm/i18n/locales/bn.json +1 -1
- package/dist/esm/i18n/locales/de.json +1 -1
- package/dist/esm/i18n/locales/en.json +1 -1
- package/dist/esm/i18n/locales/es.json +1 -1
- package/dist/esm/i18n/locales/fr.json +1 -1
- package/dist/esm/i18n/locales/gu.json +1 -1
- package/dist/esm/i18n/locales/hi.json +1 -1
- package/dist/esm/i18n/locales/id.json +1 -1
- package/dist/esm/i18n/locales/it.json +1 -1
- package/dist/esm/i18n/locales/ja.json +1 -1
- package/dist/esm/i18n/locales/kn.json +1 -1
- package/dist/esm/i18n/locales/ko.json +1 -1
- package/dist/esm/i18n/locales/ml.json +1 -1
- package/dist/esm/i18n/locales/mr.json +1 -1
- package/dist/esm/i18n/locales/nl.json +1 -1
- package/dist/esm/i18n/locales/pa.json +1 -1
- package/dist/esm/i18n/locales/pl.json +1 -1
- package/dist/esm/i18n/locales/pt.json +1 -1
- package/dist/esm/i18n/locales/ru.json +1 -1
- package/dist/esm/i18n/locales/ta.json +1 -1
- package/dist/esm/i18n/locales/te.json +1 -1
- package/dist/esm/i18n/locales/tr.json +1 -1
- package/dist/esm/i18n/locales/vi.json +1 -1
- package/dist/esm/i18n/locales/zh.json +1 -1
- package/dist/esm/index.d.ts +4 -2
- package/dist/esm/index.js +8 -8
- package/dist/esm/styles/index.js +1 -1
- package/dist/esm/types/enums.d.ts +1 -0
- package/dist/esm/types/enums.js +1 -1
- package/dist/esm/types/interfaces.d.ts +28 -0
- package/package.json +24 -1
|
@@ -1,49 +1,49 @@
|
|
|
1
|
-
import
|
|
1
|
+
import ae from"react";import{useTranslation as le}from"../../i18n";import{Alert as ne,Image as Te,Linking as $,Pressable as L,ScrollView as Ce,Text as S,TextInput as O,View as T}from"react-native";import{animateNextLayout as ke,useInspector as Se}from"./InspectorContext";import F from"../TouchableScale";import Re from"../SegmentedTabs";import Ve from"../MetaAccordion";import J from"../HeadersSection";import De from"../SourcePageCard";import _ from"../SectionHeader";import G from"../JsonViewer";import Q from"../DiffViewer";import U from"../CopyButton";import Be from"../ShareButton";import o from"../../styles";import{AppColors as t}from"../../styles/AppColors";import{AppFonts as V}from"../../styles/AppFonts";import{METHOD_COLORS as X}from"../../constants";import{getStatusColor as B,getSize as Y,formatDateTime as Ie,getFetchCommand as Pe,getCurlCommand as He,openWithPostman as Z}from"../../helpers";import{shareApiReport as $e}from"../../helpers/shareFormatter";import{FailIcon as Le,StatusIcon as We,HeadersIcon as Oe,RequestIcon as Fe,ResponseIcon as Ue,DownloadIcon as Ae,ClearIcon as A,SizeIcon as Ee,ExternalLinkIcon as Me,PostmanIcon as Ne,ClockIcon as Ke}from"../NetworkIcons";const je=ae.memo(()=>{const{t:C}=le(),{selected:e,detailDisplayUrl:R,apiDetailActiveTab:D,setApiDetailActiveTab:ee,detailSearch:k,setDetailSearch:z,reqExpanded:I,setReqExpanded:E,resExpanded:P,setResExpanded:M,showReqDiff:W,setShowReqDiff:te,showResDiff:v,setShowResDiff:oe,prevRequestData:N,prevResponseData:K,logRouteMapRef:re}=Se(),j=()=>{ne.alert(C("common.openInBrowser")||"Open URL",`${C("common.openInBrowserPrompt")||"Choose how you want to open or inspect this URL:"}
|
|
2
2
|
|
|
3
|
-
${
|
|
3
|
+
${R}`,[{text:C("common.cancel")||"Cancel",style:"cancel"},{text:"Open in Postman",onPress:()=>{e&&Z(e)}},{text:C("common.open")||"Browser",onPress:()=>{$.canOpenURL(R).then(r=>{r?$.openURL(R):$.openURL(R).catch(()=>{})}).catch(()=>{})}}])};return e?<T style={{flex:1}}>
|
|
4
4
|
|
|
5
5
|
<T style={{paddingHorizontal:8,paddingTop:4}}>
|
|
6
6
|
<T style={o.detailInfoBar}>
|
|
7
|
-
{(()=>{const r=
|
|
7
|
+
{(()=>{const r=R.indexOf("://"),H=r!==-1?R.substring(0,r+3):"";return<>
|
|
8
8
|
|
|
9
9
|
<T style={{flexDirection:"row",alignItems:"center",justifyContent:"space-between",flexWrap:"wrap",gap:6,paddingBottom:8,borderBottomWidth:1,borderBottomColor:t.dividerColor}}>
|
|
10
10
|
<T style={{flexDirection:"row",alignItems:"center",gap:5,flexWrap:"wrap",flex:1}}>
|
|
11
11
|
|
|
12
12
|
<T style={[o.methodBadge,{backgroundColor:X[e.method]??X.ALL,paddingHorizontal:8,paddingVertical:3.5,borderRadius:6}]}>
|
|
13
|
-
<
|
|
13
|
+
<S style={[o.methodBadgeText,{color:t.white,fontSize:10.5,fontFamily:V.interBold}]}>
|
|
14
14
|
{e.method}
|
|
15
|
-
</
|
|
15
|
+
</S>
|
|
16
16
|
</T>
|
|
17
17
|
|
|
18
18
|
|
|
19
19
|
{e.client&&<T style={[o.chip,{backgroundColor:e.client==="axios"?`${t.purple}14`:e.client==="apollo"||e.client==="graphql"?`${t.pink500}14`:e.client==="xhr"?`${t.amber500}14`:`${t.sky500}14`,borderColor:e.client==="axios"?`${t.purple}30`:e.client==="apollo"||e.client==="graphql"?`${t.pink500}30`:e.client==="xhr"?`${t.amber500}30`:`${t.sky500}30`,paddingHorizontal:6,paddingVertical:3,borderRadius:6}]}>
|
|
20
|
-
<
|
|
20
|
+
<S style={[o.chipText,{fontFamily:V.interBold,fontSize:9.5,color:e.client==="axios"?t.purple:e.client==="apollo"||e.client==="graphql"?t.pink500:e.client==="xhr"?t.amber700:t.sky600}]}>
|
|
21
21
|
{e.client.toUpperCase()}
|
|
22
|
-
</
|
|
22
|
+
</S>
|
|
23
23
|
</T>}
|
|
24
24
|
|
|
25
25
|
|
|
26
|
-
{e.status!=null&&<T style={[o.chip,{backgroundColor:e.status===0?`${t.errorColor}18`:`${
|
|
27
|
-
{e.status===0?<
|
|
28
|
-
<
|
|
26
|
+
{e.status!=null&&<T style={[o.chip,{backgroundColor:e.status===0?`${t.errorColor}18`:`${B(e.status)}18`,borderColor:e.status===0?`${t.errorColor}40`:`${B(e.status)}40`,paddingHorizontal:7,paddingVertical:3,borderRadius:6}]}>
|
|
27
|
+
{e.status===0?<Le size={8}color={t.errorColor}/>:<T style={{width:6,height:6,borderRadius:3,backgroundColor:B(e.status)}}/>}
|
|
28
|
+
<S style={[o.chipText,{color:e.status===0?t.errorColor:B(e.status),fontFamily:V.interBold,fontSize:10.5}]}>
|
|
29
29
|
{e.status===0?"Failed":`${e.status} ${e.status===200?"OK":""}`}
|
|
30
|
-
</
|
|
30
|
+
</S>
|
|
31
31
|
</T>}
|
|
32
32
|
|
|
33
33
|
|
|
34
34
|
{e.duration!=null&&<T style={[o.chip,{backgroundColor:`${t.brandPurple}14`,borderColor:`${t.brandPurple}30`,paddingHorizontal:7,paddingVertical:3,borderRadius:6,gap:4}]}>
|
|
35
|
-
<
|
|
36
|
-
<
|
|
35
|
+
<Ke color={t.brandPurple}size={10}/>
|
|
36
|
+
<S style={[o.chipText,{color:t.brandPurple,fontFamily:V.interBold,fontSize:10.5}]}>
|
|
37
37
|
{e.duration}ms
|
|
38
|
-
</
|
|
38
|
+
</S>
|
|
39
39
|
</T>}
|
|
40
40
|
|
|
41
41
|
|
|
42
42
|
{e.response!=null&&<T style={[o.chip,{backgroundColor:`${t.sky600}14`,borderColor:`${t.sky600}30`,paddingHorizontal:7,paddingVertical:3,borderRadius:6,gap:4}]}>
|
|
43
43
|
<Ee color={t.sky600}size={10}/>
|
|
44
|
-
<
|
|
44
|
+
<S style={[o.chipText,{color:t.sky600,fontFamily:V.interBold,fontSize:10.5}]}>
|
|
45
45
|
{Y(e.response)}
|
|
46
|
-
</
|
|
46
|
+
</S>
|
|
47
47
|
</T>}
|
|
48
48
|
</T>
|
|
49
49
|
</T>
|
|
@@ -54,64 +54,67 @@ ${S}`,[{text:b("common.cancel")||"Cancel",style:"cancel"},{text:b("common.open")
|
|
|
54
54
|
<T style={{flexDirection:"row",alignItems:"center",justifyContent:"space-between",flexWrap:"nowrap",gap:6}}>
|
|
55
55
|
<T style={{flexDirection:"row",alignItems:"center",gap:6,flexShrink:1,minWidth:0}}>
|
|
56
56
|
{H?<T style={{backgroundColor:H.startsWith("https")?`${t.green600}18`:`${t.amber500}18`,paddingHorizontal:6,paddingVertical:2,borderRadius:4}}>
|
|
57
|
-
<
|
|
57
|
+
<S style={{fontFamily:V.interBold,fontSize:9,color:H.startsWith("https")?t.green600:t.amber500}}>
|
|
58
58
|
{H.replace("://","").toUpperCase()}
|
|
59
|
-
</
|
|
59
|
+
</S>
|
|
60
60
|
</T>:null}
|
|
61
61
|
|
|
62
|
-
<
|
|
62
|
+
<S style={{fontFamily:V.interBold,fontSize:10,color:t.grayTextWeak,letterSpacing:.4,textTransform:"uppercase"}}numberOfLines={1}>
|
|
63
63
|
ENDPOINT URL
|
|
64
|
-
</
|
|
64
|
+
</S>
|
|
65
65
|
</T>
|
|
66
66
|
|
|
67
67
|
|
|
68
68
|
<T style={{flexDirection:"row",alignItems:"center",gap:5,flexShrink:0}}>
|
|
69
|
-
<
|
|
70
|
-
<
|
|
71
|
-
<
|
|
72
|
-
<
|
|
73
|
-
<
|
|
69
|
+
<U value={He(e)}label="cURL"iconType="terminal"/>
|
|
70
|
+
<Be onShare={()=>$e(e)}/>
|
|
71
|
+
<U value={Pe(e)}label="fetch()"iconType="fetch"/>
|
|
72
|
+
<U value={R}label="URL"iconType="copy"/>
|
|
73
|
+
<F style={[o.iconSquareBtn,{backgroundColor:"rgba(255, 108, 55, 0.12)",borderColor:"rgba(255, 108, 55, 0.35)"}]}onPress={()=>Z(e)}hitSlop={10}accessibilityLabel="Open in Postman">
|
|
74
|
+
<Ne color="#FF6C37"size={13}/>
|
|
75
|
+
</F>
|
|
76
|
+
<F style={[o.iconSquareBtn,{backgroundColor:`${t.sky600}15`,borderColor:`${t.sky600}35`}]}onPress={j}hitSlop={10}accessibilityLabel="Open in Browser">
|
|
74
77
|
<Me color={t.sky600}size={13}/>
|
|
75
|
-
</
|
|
78
|
+
</F>
|
|
76
79
|
</T>
|
|
77
80
|
</T>
|
|
78
81
|
|
|
79
82
|
|
|
80
|
-
<
|
|
81
|
-
<
|
|
82
|
-
{
|
|
83
|
-
</
|
|
84
|
-
</
|
|
83
|
+
<L onPress={j}>
|
|
84
|
+
<S selectable={!0}style={{fontFamily:V.interMedium,fontSize:12.5,color:t.skyBlue,textDecorationLine:"underline",lineHeight:18}}>
|
|
85
|
+
{R}
|
|
86
|
+
</S>
|
|
87
|
+
</L>
|
|
85
88
|
</T>
|
|
86
89
|
</>})()}
|
|
87
90
|
</T>
|
|
88
91
|
</T>
|
|
89
92
|
|
|
90
93
|
|
|
91
|
-
<
|
|
94
|
+
<Re tabs={[{key:"metadata",label:C("network.detailTabs.metadata"),icon:r=><We color={r?t.white:t.grayText}/>},{key:"headers",label:C("network.detailTabs.headers"),icon:r=><Oe color={r?t.white:t.grayText}/>},...e.request!=null?[{key:"request",label:C("network.detailTabs.request"),icon:r=><Fe color={r?t.white:t.grayText}/>}]:[],{key:"response",label:C("network.detailTabs.response"),icon:r=><Ue color={r?t.white:t.grayText}/>}]}activeKey={D}onChange={r=>{ke(),ee(r)}}style={{marginHorizontal:6,marginBottom:10,marginTop:6}}/>
|
|
92
95
|
|
|
93
96
|
|
|
94
97
|
<Ce style={o.detailScroll}contentContainerStyle={{paddingHorizontal:6,paddingBottom:24}}showsVerticalScrollIndicator={!0}>
|
|
95
98
|
{D==="metadata"&&<>
|
|
96
|
-
<
|
|
99
|
+
<Ve status={e.status}statusColor={B(e.status)}duration={e.duration}size={Y(e.response)}triggeredAt={Ie(e.startTime)}method={e.method}contentType={e.responseHeaders?.["content-type"]||e.responseHeaders?.["Content-Type"]}url={e.url}/>
|
|
97
100
|
|
|
98
|
-
{(()=>{const r=
|
|
101
|
+
{(()=>{const r=re.current.get(e.id)||e?.routeInfo;return!r||!r.path||r.path==="Navigators"?null:<De routeInfo={r}/>})()}
|
|
99
102
|
|
|
100
103
|
{(e.responseHeaders?.["content-type"]||e.responseHeaders?.["Content-Type"])?.includes("image/")?<T style={o.imagePreviewWrapper}>
|
|
101
104
|
<Te source={{uri:e.url}}style={o.imagePreview}resizeMode="contain"/>
|
|
102
|
-
<
|
|
105
|
+
<F style={o.imageDownloadBtn}onPress={()=>$.openURL(e.url)}hitSlop={10}>
|
|
103
106
|
<Ae color={t.purple}size={18}/>
|
|
104
|
-
</
|
|
107
|
+
</F>
|
|
105
108
|
</T>:null}
|
|
106
109
|
</>}
|
|
107
110
|
|
|
108
111
|
{D==="headers"&&<>
|
|
109
112
|
<T style={o.detailSearchRow}>
|
|
110
113
|
<T style={o.detailSearchBox}>
|
|
111
|
-
<
|
|
112
|
-
{k.length>0&&<
|
|
113
|
-
<
|
|
114
|
-
</
|
|
114
|
+
<O placeholder={C("network.searchHeaders")}placeholderTextColor={t.grayTextWeak}value={k}onChangeText={z}style={o.detailSearchInput}autoCorrect={!1}autoCapitalize="none"/>
|
|
115
|
+
{k.length>0&&<L onPress={()=>z("")}hitSlop={10}style={{padding:8}}>
|
|
116
|
+
<A color={t.grayTextWeak}size={14}/>
|
|
117
|
+
</L>}
|
|
115
118
|
</T>
|
|
116
119
|
</T>
|
|
117
120
|
|
|
@@ -122,19 +125,19 @@ ${S}`,[{text:b("common.cancel")||"Cancel",style:"cancel"},{text:b("common.open")
|
|
|
122
125
|
{D==="request"&&e.request!=null&&<>
|
|
123
126
|
<T style={o.detailSearchRow}>
|
|
124
127
|
<T style={o.detailSearchBox}>
|
|
125
|
-
<
|
|
126
|
-
{k.length>0&&<
|
|
127
|
-
<
|
|
128
|
-
</
|
|
128
|
+
<O placeholder={C("network.searchRequest")}placeholderTextColor={t.grayTextWeak}value={k}onChangeText={z}style={o.detailSearchInput}autoCorrect={!1}autoCapitalize="none"/>
|
|
129
|
+
{k.length>0&&<L onPress={()=>z("")}hitSlop={10}style={{padding:8}}>
|
|
130
|
+
<A color={t.grayTextWeak}size={14}/>
|
|
131
|
+
</L>}
|
|
129
132
|
</T>
|
|
130
133
|
</T>
|
|
131
134
|
|
|
132
135
|
<T style={o.sectionContainer}>
|
|
133
|
-
<_ title={
|
|
134
|
-
{
|
|
135
|
-
<
|
|
136
|
-
{
|
|
137
|
-
</
|
|
136
|
+
<_ title={C("network.requestTitle")}value={e.request}expanded={I}onToggleExpand={()=>E(r=>!r)}showDiff={N!=null}isDiffing={W}onToggleDiff={()=>{te(r=>!r),!I&&!W&&E(!0)}}/>
|
|
137
|
+
{W?<Q oldData={N}newData={e.request}forceOpen={I}/>:I?<G data={e.request}search={k}/>:<T style={o.codeBlock}>
|
|
138
|
+
<S style={[o.codeText,{color:t.grayTextWeak}]}>
|
|
139
|
+
{C("network.bodyHidden")}
|
|
140
|
+
</S>
|
|
138
141
|
</T>}
|
|
139
142
|
</T>
|
|
140
143
|
</>}
|
|
@@ -142,21 +145,21 @@ ${S}`,[{text:b("common.cancel")||"Cancel",style:"cancel"},{text:b("common.open")
|
|
|
142
145
|
{D==="response"&&<>
|
|
143
146
|
<T style={o.detailSearchRow}>
|
|
144
147
|
<T style={o.detailSearchBox}>
|
|
145
|
-
<
|
|
146
|
-
{k.length>0&&<
|
|
147
|
-
<
|
|
148
|
-
</
|
|
148
|
+
<O placeholder={C("network.searchResponse")}placeholderTextColor={t.grayTextWeak}value={k}onChangeText={z}style={o.detailSearchInput}autoCorrect={!1}autoCapitalize="none"/>
|
|
149
|
+
{k.length>0&&<L onPress={()=>z("")}hitSlop={10}style={{padding:8}}>
|
|
150
|
+
<A color={t.grayTextWeak}size={14}/>
|
|
151
|
+
</L>}
|
|
149
152
|
</T>
|
|
150
153
|
</T>
|
|
151
154
|
|
|
152
155
|
<T style={o.sectionContainer}>
|
|
153
|
-
<_ title={
|
|
154
|
-
{
|
|
155
|
-
<
|
|
156
|
-
{
|
|
157
|
-
</
|
|
156
|
+
<_ title={C("network.responseTitle")}value={e.response}expanded={P}onToggleExpand={()=>M(r=>!r)}showDiff={K!=null}isDiffing={v}onToggleDiff={()=>{oe(r=>!r),!P&&!v&&M(!0)}}/>
|
|
157
|
+
{v?<Q oldData={K}newData={e.response}forceOpen={P}/>:P?<G data={e.response}search={k}wrap/>:<T style={o.codeBlock}>
|
|
158
|
+
<S style={[o.codeText,{color:t.grayTextWeak}]}>
|
|
159
|
+
{C("network.bodyHidden")}
|
|
160
|
+
</S>
|
|
158
161
|
</T>}
|
|
159
162
|
</T>
|
|
160
163
|
</>}
|
|
161
164
|
</Ce>
|
|
162
|
-
</T>:null});export default
|
|
165
|
+
</T>:null});export default je;
|
|
@@ -1,40 +1,40 @@
|
|
|
1
|
-
import
|
|
2
|
-
<Ke pageName={e.pageName}color={e.color}stats={e.stats}activeFilters={e.activeFilters}onToggleFilter={
|
|
3
|
-
</Ie>;if(e.type==="loadMore"){const{pageName:V,color:b,remainingCount:
|
|
1
|
+
import G,{useCallback as ue,useMemo as M,useRef as qe}from"react";import{FlatList as We,Pressable as Ge,ScrollView as _e,Text as I,TextInput as Qe,View as C}from"react-native";import{useInspector as Ue}from"./InspectorContext";import N from"../TouchableScale";import Ie from"../AnimatedEntrance";import Ke from"../DomainHeader";import Xe from"../LogCard";import Je from"../EmptyState";import Ye from"../EndOfListFooter";import Ze from"./NetworkFilterModal";import S from"../../styles";import{AppColors as o}from"../../styles/AppColors";import{AppFonts as k}from"../../styles/AppFonts";import{METHOD_COLORS as Ve}from"../../constants";import{isUrlHidden as eo}from"../../helpers";import{useTranslation as oo}from"../../i18n";import{SearchIcon as Co,ClearIcon as So,TrashIcon as To,SortArrowIcon as Io,FilterIcon as Vo,ChevronIcon as Fo,CheckIcon as Ro,CircleCheckIcon as Lo,CircleXIcon as Bo,LayersIcon as Fe,ClockIcon as Po,RequestIcon as Eo,ResponseIcon as $o,AtomIcon as Do}from"../NetworkIcons";const Mo=G.memo(()=>{const{groupedData:_,loadMoreSection:ge,search:R,setSearch:j,setSearchScope:pe,quickFilter:Q,setQuickFilter:se,handleDelete:Re,isGroupByPageEnabled:F,setIsGroupByPageEnabled:Le,selectedLogs:U,sortOrder:Be,setSortOrder:K,statusFilters:L,setStatusFilters:q,methodFilters:B,setMethodFilters:v,latencyFilter:O,setLatencyFilter:X,protocolFilter:A,setProtocolFilter:J,networkSortBy:H,setNetworkSortBy:Y,filteredLogs:E,logs:Z,hiddenUrlPatterns:ee,toggleSectionFilter:me,toggleSectionCollapse:he,minStart:ye,totalRange:fe,newLogIds:we,toggleSelect:Ce,setSelected:Se,maxNetworkLogs:ne}=Ue(),{t:oe}=oo(),Pe=qe(null),[Ee,be]=G.useState(!1),[Te,ze]=G.useState(!1),[te,xe]=G.useState(ne||50);G.useEffect(()=>{xe(ne||50)},[R,Q,ne]);const de=M(()=>F?_:_.slice(0,te),[F,_,te]),$e=ue(e=>e?.id?String(e.id):"",[]),$=M(()=>L.size>0&&!L.has("all")||B.size>0&&!B.has("all")||O!=="all"||A!=="all"||H!=="time_desc",[L,B,O,A,H]),De=M(()=>{let e=0;return L.size>0&&!L.has("all")&&(e+=L.size),B.size>0&&!B.has("all")&&(e+=B.size),O!=="all"&&e++,A!=="all"&&e++,H!=="time_desc"&&e++,e},[L,B,O,A,H]),Me=M(()=>({statusCodes:L.size>0?new Set(L):new Set(["all"]),methods:B.size>0?new Set(B):new Set(["all"]),latency:O,protocol:A,sortBy:H}),[L,B,O,A,H]),Ne=ue(e=>{e.statusCodes.has("all")||e.statusCodes.size===0?q(new Set):q(new Set(e.statusCodes)),e.methods.has("all")||e.methods.size===0?v(new Set):v(new Set([...e.methods].map(T=>T))),X(e.latency||"all"),J(e.protocol||"all"),Y(e.sortBy||"time_desc"),e.sortBy==="time_asc"?K("oldest"):K("newest")},[q,v,X,J,Y,K]),re=M(()=>!ee||ee.length===0?Z:Z.filter(e=>!eo(e.url,ee)),[Z,ee]),P=M(()=>{let e=0,T=0,z=0,x=0,W=0,le=0;return re.forEach(V=>{const b=typeof V.status=="number"?V.status:parseInt(String(V.status),10);V.status===0||V.status==null||!isNaN(b)&&b>=400?e++:!isNaN(b)&&b>=200&&b<400&&T++,(V.duration||0)>=500&&z++;const ie=(V.method||"").toUpperCase();ie==="POST"&&x++,ie==="GET"&&W++;const D=(V.url||"").toLowerCase(),ae=(V.client||"").toLowerCase();(D.includes("graphql")||ae.includes("graphql")||ae.includes("apollo"))&&le++}),{all:re.length,errors:e,success:T,slow:z,post:x,get:W,graphql:le}},[re]),Oe=M(()=>[{id:"all",label:"All",count:P.all,color:o.purple},{id:"errors",label:"Errors",count:P.errors,color:o.errorColor},{id:"success",label:"2xx OK",count:P.success,color:o.greenColor},{id:"slow",label:"Slow >500ms",count:P.slow,color:o.warningIconGold},{id:"POST",label:"POST",count:P.post,color:Ve.POST||o.blue500},{id:"GET",label:"GET",count:P.get,color:Ve.GET||o.emerald500},{id:"graphql",label:"GraphQL",count:P.graphql,color:o.graphqlPink}],[P]),Ae=ue(({item:e,index:T})=>{if(e.type==="header")return<Ie index={T}distance={8}>
|
|
2
|
+
<Ke pageName={e.pageName}color={e.color}stats={e.stats}activeFilters={e.activeFilters}onToggleFilter={me}isCollapsed={e.isCollapsed}onToggleCollapse={he}isFirst={e.isFirst}timestamp={e.timestamp}/>
|
|
3
|
+
</Ie>;if(e.type==="loadMore"){const{pageName:V,color:b,remainingCount:ie,totalCount:D,loadedCount:ae,loadMoreStep:ce,hasMore:He}=e;return<C style={[S.treeNodeRow,S.treeNodeRowLast]}>
|
|
4
4
|
<C style={S.treeLines}>
|
|
5
5
|
<C style={[S.modernTreeLine,{borderColor:b},S.modernTreeLineLast]}/>
|
|
6
6
|
</C>
|
|
7
7
|
<C style={S.treeCardWrapper}>
|
|
8
|
-
{
|
|
8
|
+
{He?<N onPress={()=>ge(V,ce||10)}hitSlop={6}style={{flexDirection:"row",alignItems:"center",justifyContent:"space-between",paddingVertical:9,paddingHorizontal:12,marginVertical:3,marginRight:2,borderRadius:10,backgroundColor:`${b}14`,borderWidth:1.5,borderColor:`${b}40`,shadowColor:b,shadowOffset:{width:0,height:1.5},shadowOpacity:.1,shadowRadius:3,elevation:2}}>
|
|
9
9
|
<C style={{flexDirection:"row",alignItems:"center",gap:8}}>
|
|
10
10
|
<C style={{width:22,height:22,borderRadius:11,backgroundColor:b,alignItems:"center",justifyContent:"center",shadowColor:b,shadowOffset:{width:0,height:1},shadowOpacity:.25,shadowRadius:2,elevation:1}}>
|
|
11
11
|
<Fo color={o.white}size={9}direction="down"/>
|
|
12
12
|
</C>
|
|
13
13
|
<C>
|
|
14
14
|
<I style={{fontFamily:k.interBold,fontSize:12,color:b}}>
|
|
15
|
-
{
|
|
15
|
+
{oe("footer.loadMoreRequests",{count:ce,defaultValue:`Load ${ce} More Requests`})}
|
|
16
16
|
</I>
|
|
17
17
|
<I style={{fontFamily:k.interRegular,fontSize:9.5,color:o.grayTextWeak,marginTop:1}}>
|
|
18
|
-
Showing {
|
|
18
|
+
Showing {ae} of {D} requests
|
|
19
19
|
</I>
|
|
20
20
|
</C>
|
|
21
21
|
</C>
|
|
22
22
|
|
|
23
23
|
<C style={{flexDirection:"row",alignItems:"center",backgroundColor:`${b}25`,paddingHorizontal:8,paddingVertical:4,borderRadius:8,borderWidth:1,borderColor:`${b}40`,gap:3}}>
|
|
24
24
|
<I style={{fontFamily:k.interBold,fontSize:10.5,color:b}}>
|
|
25
|
-
+{
|
|
25
|
+
+{ie}
|
|
26
26
|
</I>
|
|
27
27
|
<I style={{fontFamily:k.interRegular,fontSize:9,color:b}}>
|
|
28
28
|
more
|
|
29
29
|
</I>
|
|
30
30
|
</C>
|
|
31
|
-
</
|
|
31
|
+
</N>:<C style={{flexDirection:"row",alignItems:"center",justifyContent:"space-between",paddingVertical:7,paddingHorizontal:11,marginVertical:3,marginRight:2,borderRadius:9,backgroundColor:`${b}0A`,borderWidth:1,borderColor:`${b}25`}}>
|
|
32
32
|
<C style={{flexDirection:"row",alignItems:"center",gap:7}}>
|
|
33
33
|
<C style={{width:17,height:17,borderRadius:8.5,backgroundColor:`${b}25`,alignItems:"center",justifyContent:"center"}}>
|
|
34
34
|
<Ro color={b}size={8}/>
|
|
35
35
|
</C>
|
|
36
36
|
<I style={{fontFamily:k.interMedium,fontSize:11,color:o.grayTextStrong}}>
|
|
37
|
-
{
|
|
37
|
+
{oe("footer.allLoaded",{count:D,defaultValue:`All ${D} requests loaded`})}
|
|
38
38
|
</I>
|
|
39
39
|
</C>
|
|
40
40
|
|
|
@@ -45,21 +45,21 @@ import _,{useCallback as de,useMemo as q,useRef as He}from"react";import{FlatLis
|
|
|
45
45
|
</C>
|
|
46
46
|
</C>}
|
|
47
47
|
</C>
|
|
48
|
-
</C>}const{log:z,isLast:x,color:
|
|
48
|
+
</C>}const{log:z,isLast:x,color:W}=e,le=de.slice(0,T).filter(V=>!V.type).length;return<Ie index={T}distance={8}style={F?[S.treeNodeRow,x&&S.treeNodeRowLast]:{marginBottom:5,marginHorizontal:5}}>
|
|
49
49
|
{F&&<C style={S.treeLines}>
|
|
50
|
-
<C style={[S.modernTreeLine,{borderColor:
|
|
51
|
-
{!x&&<C style={[S.modernTreeBranch,{borderColor:
|
|
50
|
+
<C style={[S.modernTreeLine,{borderColor:W},x&&S.modernTreeLineLast]}/>
|
|
51
|
+
{!x&&<C style={[S.modernTreeBranch,{borderColor:W}]}/>}
|
|
52
52
|
</C>}
|
|
53
53
|
<C style={F?S.treeCardWrapper:{flex:1}}>
|
|
54
|
-
<Xe testID={`inspector.network.item.${
|
|
54
|
+
<Xe testID={`inspector.network.item.${le}`}item={z}isSelected={U.has(z.id)}onToggleSelect={Ce}onPress={()=>{Se(z)}}timelineMinStart={ye}timelineTotalRange={fe}isNew={we.has(z.id)}searchStr={R}/>
|
|
55
55
|
</C>
|
|
56
|
-
</Ie>},[
|
|
56
|
+
</Ie>},[de,F,ye,fe,we,U,Ce,R,me,he,ge,Se,oe]);return<C style={{flex:1}}>
|
|
57
57
|
<C style={{marginTop:6}}>
|
|
58
58
|
|
|
59
59
|
<C style={S.toolbarRow}>
|
|
60
|
-
<C style={[S.searchContainer,
|
|
61
|
-
<Co color={
|
|
62
|
-
<Qe placeholder="Search URL, status, method, headers, body..."placeholderTextColor={o.grayTextWeak}value={R}onChangeText={
|
|
60
|
+
<C style={[S.searchContainer,Te&&{borderColor:o.purple,borderWidth:1.5}]}>
|
|
61
|
+
<Co color={Te?o.purple:o.grayTextWeak}size={15}/>
|
|
62
|
+
<Qe placeholder="Search URL, status, method, headers, body..."placeholderTextColor={o.grayTextWeak}value={R}onChangeText={j}onFocus={()=>ze(!0)}onBlur={()=>ze(!1)}style={S.searchInput}autoCorrect={!1}autoCapitalize="none"/>
|
|
63
63
|
|
|
64
64
|
{R.length>0&&<C style={{flexDirection:"row",alignItems:"center",gap:4}}>
|
|
65
65
|
<C style={{backgroundColor:`${o.purple}20`,borderRadius:10,paddingHorizontal:6,paddingVertical:1.5}}>
|
|
@@ -67,37 +67,37 @@ import _,{useCallback as de,useMemo as q,useRef as He}from"react";import{FlatLis
|
|
|
67
67
|
{E.length}
|
|
68
68
|
</I>
|
|
69
69
|
</C>
|
|
70
|
-
<Ge onPress={()=>
|
|
70
|
+
<Ge onPress={()=>j("")}hitSlop={10}style={S.clearBtn}>
|
|
71
71
|
<So color={o.grayTextWeak}size={13}/>
|
|
72
72
|
</Ge>
|
|
73
73
|
</C>}
|
|
74
74
|
</C>
|
|
75
75
|
|
|
76
76
|
<C style={S.toolbarRight}>
|
|
77
|
-
<
|
|
77
|
+
<N style={[S.toolbarBtn,{borderColor:`${o.errorColor}38`,backgroundColor:`${o.errorColor}0F`}]}onPress={Re}hitSlop={6}>
|
|
78
78
|
<To color={o.errorColor}size={15}/>
|
|
79
|
-
{
|
|
79
|
+
{U.size>0&&<C style={S.trashBadge}>
|
|
80
80
|
<I style={S.trashBadgeText}>
|
|
81
|
-
{
|
|
81
|
+
{U.size}
|
|
82
82
|
</I>
|
|
83
83
|
</C>}
|
|
84
|
-
</
|
|
84
|
+
</N>
|
|
85
85
|
|
|
86
|
-
<
|
|
86
|
+
<N style={[S.toolbarBtn,F&&{borderColor:o.purple,backgroundColor:`${o.purple}15`}]}onPress={()=>Le(e=>!e)}hitSlop={6}accessibilityLabel={F?"Page Accordion Grouping Enabled (Tap for Plain List)":"Plain List Enabled (Tap for Page Accordion)"}accessibilityRole="button">
|
|
87
87
|
<Fe color={F?o.purple:o.grayTextStrong}size={16}/>
|
|
88
88
|
{F&&<C style={S.activeFilterDot}/>}
|
|
89
|
-
</
|
|
89
|
+
</N>
|
|
90
90
|
|
|
91
|
-
<
|
|
91
|
+
<N style={S.toolbarBtn}onPress={()=>K(e=>e==="newest"?"oldest":"newest")}hitSlop={10}>
|
|
92
92
|
<Io direction={Be==="newest"?"down":"up"}color={o.grayTextStrong}size={18}/>
|
|
93
|
-
</
|
|
93
|
+
</N>
|
|
94
94
|
</C>
|
|
95
95
|
</C>
|
|
96
96
|
|
|
97
97
|
|
|
98
98
|
<C style={{flexDirection:"row",alignItems:"center",marginBottom:8,paddingHorizontal:8,gap:6}}>
|
|
99
99
|
<_e horizontal showsHorizontalScrollIndicator={!1}style={{flex:1}}contentContainerStyle={{flexDirection:"row",alignItems:"center",gap:6,paddingRight:6}}>
|
|
100
|
-
{Oe.map(e=>{const T=
|
|
100
|
+
{Oe.map(e=>{const T=Q===e.id,z=e.color||o.purple,x=T?o.white:z;return<N testID={`inspector.network.filter.${e.id.toLowerCase()}`}key={e.id}onPress={()=>{se(T?"all":e.id)}}>
|
|
101
101
|
<C style={{flexDirection:"row",alignItems:"center",paddingHorizontal:9,paddingVertical:4.5,borderRadius:8,backgroundColor:T?z:`${z}12`,borderWidth:1,borderColor:T?z:`${z}30`,gap:5}}>
|
|
102
102
|
{e.id==="all"&&<Fe size={11}color={x}/>}
|
|
103
103
|
{e.id==="errors"&&<Bo size={11}color={x}/>}
|
|
@@ -115,14 +115,14 @@ import _,{useCallback as de,useMemo as q,useRef as He}from"react";import{FlatLis
|
|
|
115
115
|
</I>
|
|
116
116
|
</C>
|
|
117
117
|
</C>
|
|
118
|
-
</
|
|
118
|
+
</N>})}
|
|
119
119
|
</_e>
|
|
120
120
|
|
|
121
|
-
<
|
|
121
|
+
<N onPress={()=>be(!0)}style={{flexShrink:0}}>
|
|
122
122
|
<C style={{flexDirection:"row",alignItems:"center",paddingHorizontal:10,paddingVertical:4.5,borderRadius:8,backgroundColor:$?`${o.purple}20`:o.grayBackground,borderWidth:1,borderColor:$?o.purple:o.grayBorderSecondary,gap:5,shadowColor:o.black,shadowOpacity:.04,shadowRadius:2,shadowOffset:{width:0,height:1},elevation:1}}>
|
|
123
123
|
<Vo size={11}color={$?o.purple:o.grayText}/>
|
|
124
124
|
<I style={{fontFamily:k.interBold,fontSize:10.5,color:$?o.purple:o.grayText}}>
|
|
125
|
-
{
|
|
125
|
+
{oe("network.moreFilters","More Filters")}
|
|
126
126
|
</I>
|
|
127
127
|
{$&&<C style={{backgroundColor:o.purple,paddingHorizontal:4.5,paddingVertical:1,borderRadius:6}}>
|
|
128
128
|
<I style={{fontFamily:k.interBold,fontSize:8.5,color:o.white}}>
|
|
@@ -130,24 +130,26 @@ import _,{useCallback as de,useMemo as q,useRef as He}from"react";import{FlatLis
|
|
|
130
130
|
</I>
|
|
131
131
|
</C>}
|
|
132
132
|
</C>
|
|
133
|
-
</
|
|
133
|
+
</N>
|
|
134
134
|
</C>
|
|
135
135
|
|
|
136
136
|
|
|
137
|
-
{(
|
|
137
|
+
{(Q!=="all"||R.trim().length>0||$||E.length!==Z.length)&&<C style={{flexDirection:"row",alignItems:"center",justifyContent:"space-between",marginHorizontal:8,marginBottom:8,paddingHorizontal:8,paddingVertical:5.5,backgroundColor:`${o.purple}10`,borderRadius:8,borderWidth:1,borderColor:`${o.purple}25`}}>
|
|
138
138
|
<I style={{fontFamily:k.interMedium,fontSize:10.5,color:o.purple}}>
|
|
139
|
-
Showing {E.length} of {
|
|
139
|
+
Showing {E.length} of {re.length} requests
|
|
140
140
|
</I>
|
|
141
|
-
<
|
|
141
|
+
<N onPress={()=>{j(""),se("all"),q(new Set),v(new Set),X("all"),J("all"),Y("time_desc"),pe("all")}}>
|
|
142
142
|
<I style={{fontFamily:k.interBold,fontSize:10.5,color:o.errorColor}}>
|
|
143
143
|
Clear All Filters
|
|
144
144
|
</I>
|
|
145
|
-
</
|
|
145
|
+
</N>
|
|
146
146
|
</C>}
|
|
147
147
|
</C>
|
|
148
148
|
|
|
149
|
-
<We ref={Pe}data={
|
|
149
|
+
<We ref={Pe}data={de}keyExtractor={$e}renderItem={Ae}initialNumToRender={10}maxToRenderPerBatch={8}windowSize={5}updateCellsBatchingPeriod={40}removeClippedSubviews={!0}renderToHardwareTextureAndroid={!0}showsVerticalScrollIndicator={!1}nestedScrollEnabled={!0}ListEmptyComponent={<Je isSearch={R.length>0||$||Q!=="all"}searchQuery={R}customTitle={R.length>0?"No matching API requests":"No network activity"}onClearSearch={()=>{j(""),q(new Set),v(new Set),X("all"),J("all"),Y("time_desc"),se("all"),pe("all")}}/>}ListFooterComponent={_.length>0?<C style={{paddingBottom:24}}>
|
|
150
|
+
<Ye count={F?E.length:Math.min(te,E.length)}totalCount={E.length}label="requests"hasMore={!F&&E.length>te}loadMoreStep={30}onLoadMore={()=>xe(e=>e+30)}/>
|
|
151
|
+
</C>:null}style={{flex:1}}contentContainerStyle={[S.listContent,{flexGrow:1}]}keyboardShouldPersistTaps="handled"/>
|
|
150
152
|
|
|
151
153
|
|
|
152
|
-
<Ze visible={Ee}onClose={()=>
|
|
154
|
+
<Ze visible={Ee}onClose={()=>be(!1)}filters={Me}onApply={Ne}searchQuery={R}/>
|
|
153
155
|
</C>});export default Mo;
|