react-native-inapp-inspector 2.3.25 → 2.4.0
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/README.md +26 -5
- package/dist/commonjs/components/AnalyticsDetail.js +9 -6
- package/dist/commonjs/components/AppHeaderLogo.js +4 -6
- package/dist/commonjs/components/Inspector/AnalyticsFilterModal.js +1 -1
- package/dist/commonjs/components/Inspector/AnalyticsTab.js +11 -15
- package/dist/commonjs/components/Inspector/ConsoleTab.js +11 -14
- package/dist/commonjs/components/Inspector/CrashDetail.js +7 -6
- package/dist/commonjs/components/Inspector/CrashTab.js +14 -14
- package/dist/commonjs/components/Inspector/DebuggingTab.js +6 -6
- package/dist/commonjs/components/Inspector/DeviceInfoTab.js +77 -43
- package/dist/commonjs/components/Inspector/FabLauncher.js +8 -9
- package/dist/commonjs/components/Inspector/InspectorHeader.js +93 -70
- package/dist/commonjs/components/Inspector/LogDetail.js +10 -7
- package/dist/commonjs/components/Inspector/MainScreen.js +67 -29
- package/dist/commonjs/components/Inspector/NetworkDetail.js +29 -28
- package/dist/commonjs/components/Inspector/NetworkFilterModal.js +1 -1
- package/dist/commonjs/components/Inspector/NetworkTab.js +87 -85
- package/dist/commonjs/components/Inspector/PushCard.d.ts +4 -0
- package/dist/commonjs/components/Inspector/PushCard.js +89 -0
- package/dist/commonjs/components/Inspector/PushDetail.d.ts +4 -0
- package/dist/commonjs/components/Inspector/PushDetail.js +190 -0
- package/dist/commonjs/components/Inspector/PushTab.d.ts +3 -0
- package/dist/commonjs/components/Inspector/PushTab.js +45 -0
- package/dist/commonjs/components/Inspector/ReduxDetail.js +16 -13
- package/dist/commonjs/components/Inspector/ReduxTab.js +13 -23
- package/dist/commonjs/components/Inspector/SettingsPanel.js +253 -105
- package/dist/commonjs/components/Inspector/StorageTab.js +35 -35
- package/dist/commonjs/components/Inspector/TabBar.js +9 -8
- package/dist/commonjs/components/Inspector/UpdateAvailableModal.js +2 -2
- package/dist/commonjs/components/JsonViewer.js +77 -90
- package/dist/commonjs/components/ModuleErrorBoundary.d.ts +24 -0
- package/dist/commonjs/components/ModuleErrorBoundary.js +33 -0
- package/dist/commonjs/components/NetworkIcons.d.ts +3 -3
- package/dist/commonjs/components/NetworkIcons.js +10 -6
- package/dist/commonjs/components/SegmentedTabs.d.ts +4 -1
- package/dist/commonjs/components/SegmentedTabs.js +12 -8
- package/dist/commonjs/components/ShareButton.d.ts +11 -0
- package/dist/commonjs/components/ShareButton.js +6 -0
- package/dist/commonjs/constants/version.d.ts +1 -1
- package/dist/commonjs/constants/version.js +1 -1
- package/dist/commonjs/customHooks/crashHandler.js +4 -4
- package/dist/commonjs/customHooks/networkLogger.js +1 -1
- package/dist/commonjs/customHooks/pushNotificationLogger.d.ts +19 -0
- package/dist/commonjs/customHooks/pushNotificationLogger.js +1 -0
- package/dist/commonjs/helpers/memoryManager.d.ts +2 -1
- package/dist/commonjs/helpers/memoryManager.js +1 -1
- package/dist/commonjs/helpers/settingsStore.d.ts +1 -0
- package/dist/commonjs/helpers/settingsStore.js +1 -1
- package/dist/commonjs/helpers/shareFormatter.d.ts +13 -0
- package/dist/commonjs/helpers/shareFormatter.js +7 -0
- package/dist/commonjs/i18n/locales/en.json +1 -1
- package/dist/commonjs/index.d.ts +5 -2
- package/dist/commonjs/index.js +4 -4
- package/dist/commonjs/push.d.ts +4 -0
- package/dist/commonjs/push.js +1 -0
- package/dist/commonjs/types/enums.d.ts +30 -0
- package/dist/commonjs/types/enums.js +1 -1
- package/dist/commonjs/types/index.d.ts +10 -0
- package/dist/commonjs/types/interfaces.d.ts +63 -7
- package/dist/esm/components/AnalyticsDetail.js +28 -25
- package/dist/esm/components/AppHeaderLogo.js +5 -7
- package/dist/esm/components/Inspector/AnalyticsFilterModal.js +14 -14
- package/dist/esm/components/Inspector/AnalyticsTab.js +35 -39
- package/dist/esm/components/Inspector/ConsoleTab.js +50 -53
- package/dist/esm/components/Inspector/CrashDetail.js +11 -10
- package/dist/esm/components/Inspector/CrashTab.js +14 -14
- package/dist/esm/components/Inspector/DebuggingTab.js +10 -10
- package/dist/esm/components/Inspector/DeviceInfoTab.js +208 -174
- package/dist/esm/components/Inspector/FabLauncher.js +41 -42
- package/dist/esm/components/Inspector/InspectorHeader.js +138 -115
- package/dist/esm/components/Inspector/LogDetail.js +24 -21
- package/dist/esm/components/Inspector/MainScreen.js +100 -62
- package/dist/esm/components/Inspector/NetworkDetail.js +88 -87
- package/dist/esm/components/Inspector/NetworkFilterModal.js +8 -8
- package/dist/esm/components/Inspector/NetworkTab.js +136 -134
- package/dist/esm/components/Inspector/PushCard.d.ts +4 -0
- package/dist/esm/components/Inspector/PushCard.js +89 -0
- package/dist/esm/components/Inspector/PushDetail.d.ts +4 -0
- package/dist/esm/components/Inspector/PushDetail.js +190 -0
- package/dist/esm/components/Inspector/PushTab.d.ts +3 -0
- package/dist/esm/components/Inspector/PushTab.js +45 -0
- package/dist/esm/components/Inspector/ReduxDetail.js +40 -37
- package/dist/esm/components/Inspector/ReduxTab.js +103 -113
- package/dist/esm/components/Inspector/SettingsPanel.js +406 -258
- package/dist/esm/components/Inspector/StorageTab.js +158 -158
- package/dist/esm/components/Inspector/TabBar.js +28 -27
- package/dist/esm/components/Inspector/UpdateAvailableModal.js +1 -1
- package/dist/esm/components/JsonViewer.js +101 -114
- package/dist/esm/components/ModuleErrorBoundary.d.ts +24 -0
- package/dist/esm/components/ModuleErrorBoundary.js +33 -0
- package/dist/esm/components/NetworkIcons.d.ts +3 -3
- package/dist/esm/components/NetworkIcons.js +7 -3
- package/dist/esm/components/SegmentedTabs.d.ts +4 -1
- package/dist/esm/components/SegmentedTabs.js +12 -8
- package/dist/esm/components/ShareButton.d.ts +11 -0
- package/dist/esm/components/ShareButton.js +6 -0
- package/dist/esm/constants/version.d.ts +1 -1
- package/dist/esm/constants/version.js +1 -1
- package/dist/esm/customHooks/crashHandler.js +6 -6
- package/dist/esm/customHooks/networkLogger.js +1 -1
- package/dist/esm/customHooks/pushNotificationLogger.d.ts +19 -0
- package/dist/esm/customHooks/pushNotificationLogger.js +1 -0
- package/dist/esm/helpers/memoryManager.d.ts +2 -1
- package/dist/esm/helpers/memoryManager.js +1 -1
- package/dist/esm/helpers/settingsStore.d.ts +1 -0
- package/dist/esm/helpers/settingsStore.js +1 -1
- package/dist/esm/helpers/shareFormatter.d.ts +13 -0
- package/dist/esm/helpers/shareFormatter.js +7 -0
- package/dist/esm/i18n/locales/en.json +1 -1
- package/dist/esm/index.d.ts +5 -2
- package/dist/esm/index.js +7 -7
- package/dist/esm/push.d.ts +4 -0
- package/dist/esm/push.js +1 -0
- package/dist/esm/types/enums.d.ts +30 -0
- package/dist/esm/types/enums.js +1 -1
- package/dist/esm/types/index.d.ts +10 -0
- package/dist/esm/types/interfaces.d.ts +63 -7
- package/package.json +53 -10
- package/src/native/NativeInspector.ts +0 -1
- package/dist/commonjs/components/BrandSquareIcon.d.ts +0 -5
- package/dist/commonjs/components/BrandSquareIcon.js +0 -112
- package/dist/esm/components/BrandSquareIcon.d.ts +0 -5
- package/dist/esm/components/BrandSquareIcon.js +0 -112
|
@@ -1,225 +1,259 @@
|
|
|
1
|
-
import
|
|
2
|
-
|
|
3
|
-
|
|
4
|
-
<I style={
|
|
5
|
-
{
|
|
6
|
-
<I style={[
|
|
7
|
-
{
|
|
1
|
+
import Ve,{useState as oe,useEffect as Le,useMemo as F,useCallback as Pe}from"react";import{View as $,Text as I,ScrollView as Ee,TextInput as Xe,Dimensions as Ue,Platform as w,PixelRatio as ze,StatusBar as Ze,StyleSheet as Qe,NativeModules as q}from"react-native";import Z from"../TouchableScale";import{AppColors as e}from"../../styles/AppColors";import{AppFonts as D}from"../../styles/AppFonts";import{useTranslation as et}from"../../i18n";import{CpuIcon as St,WifiIcon as Ct,ScreenIcon as $t,LayersIcon as Tt,KeyIcon as Oe,SearchIcon as He,ClearIcon as It,CopyIcon as Se,BoltIcon as Mt,AppleIcon as Bt,AndroidIcon as Dt,ExportIcon as At}from"../NetworkIcons";import{getNativeDeviceMetrics as Vt,getNativeSystemMetrics as Lt}from"../../native/NativeInspector";import{copyToClipboard as ae,getAppName as Rt}from"../../helpers";import{showToast as ie}from"../../helpers/toast";import{LIB_VERSION as le}from"../../constants";const S=Ve.memo(({label:A,value:V,copyable:fe=!0,badge:C,subtext:re,isLast:T=!1})=>{const ne=V==null?"\u2014":typeof V=="boolean"?V?"Yes":"No":typeof V=="number"?V.toLocaleString():String(V);return<$ style={[r.infoRow,T&&{borderBottomWidth:0}]}>
|
|
2
|
+
<$ style={{flex:1,paddingRight:8,minWidth:0}}>
|
|
3
|
+
<$ style={{flexDirection:"row",alignItems:"center",flexWrap:"wrap",gap:6}}>
|
|
4
|
+
<I style={r.infoLabel}numberOfLines={2}>{A}</I>
|
|
5
|
+
{C&&<$ style={[r.infoBadge,{backgroundColor:C.bg,borderColor:`${C.color}33`}]}>
|
|
6
|
+
<I style={[r.infoBadgeText,{color:C.color}]}>
|
|
7
|
+
{C.text}
|
|
8
8
|
</I>
|
|
9
|
-
|
|
10
|
-
|
|
11
|
-
{
|
|
12
|
-
|
|
13
|
-
|
|
14
|
-
<I style={[
|
|
15
|
-
{
|
|
9
|
+
</$>}
|
|
10
|
+
</$>
|
|
11
|
+
{re&&<I style={r.infoSubtext}numberOfLines={2}>{re}</I>}
|
|
12
|
+
</$>
|
|
13
|
+
<$ style={{flexDirection:"row",alignItems:"center",gap:6,flexShrink:0,maxWidth:"58%",justifyContent:"flex-end"}}>
|
|
14
|
+
<I style={[r.infoValue,typeof V=="boolean"&&{color:V?e.emerald500:e.errorColor}]}numberOfLines={3}selectable>
|
|
15
|
+
{ne}
|
|
16
16
|
</I>
|
|
17
|
-
{
|
|
18
|
-
<
|
|
19
|
-
</
|
|
20
|
-
|
|
21
|
-
|
|
22
|
-
**Generated by React Native In-App Inspector v${
|
|
17
|
+
{fe&&V!==null&&V!==void 0&&<Z hitSlop={8}onPress={()=>{ae(ne,A),ie(`Copied ${A}`)}}style={r.rowCopyBtn}>
|
|
18
|
+
<Se size={11}color={e.grayTextWeak}/>
|
|
19
|
+
</Z>}
|
|
20
|
+
</$>
|
|
21
|
+
</$>});export const DeviceInfoTab=Ve.memo(()=>{const{t:A}=et(),[V,fe]=oe("overview"),[C,re]=oe(""),[T,ne]=oe(null),[Re,Ne]=oe(null),[H,we]=oe("Detecting..."),[J,Ce]=oe("0s"),Fe=Ve.useRef(Date.now()),ve=Pe(async()=>{try{const[f,R]=await Promise.all([Vt(),Lt()]);ne(f),Ne(R)}catch{}},[]);Le(()=>{ve();const f=setInterval(ve,3e3);return()=>clearInterval(f)},[ve]),Le(()=>{let f=!0;return(async()=>{try{const M=q?.PlatformConstants?.serverHost||q?.AndroidConstants?.serverHost||q?.DevSettings?.serverHost;if(M&&typeof M=="string"){const B=M.split(":")[0].replace(/https?:\/\//,"");if(B&&B!=="localhost"&&B!=="127.0.0.1"){f&&we(B);return}}}catch{}try{const M=new AbortController,B=setTimeout(()=>M.abort(),1200),N=await fetch("https://api.ipify.org?format=json",{signal:M.signal});if(clearTimeout(B),N.ok){const G=await N.json();if(G&&G.ip&&f){we(G.ip);return}}}catch{}f&&we(w.OS==="android"?"10.0.2.15 (Local)":"127.0.0.1 (Local)")})(),()=>{f=!1}},[]),Le(()=>{const f=()=>{const M=Math.floor((Date.now()-Fe.current)/1e3),B=Math.floor(M/3600),N=Math.floor(M%3600/60),G=M%60;B>0?Ce(`${B}h ${N}m ${G}s`):N>0?Ce(`${N}m ${G}s`):Ce(`${G}s`)},R=setInterval(f,1e3);return f(),()=>clearInterval(R)},[]);const z=Ue.get("window"),E=Ue.get("screen"),L=ze.get(),X=ze.getFontScale(),j=z.width>=600||z.height>=1e3,Q=z.width>z.height,ee=w.OS==="android"?Ze.currentHeight||24:z.height>=812?44:20,k=F(()=>{const f=`${w.OS}-${w.Version}-${E.width}x${E.height}-${L}-${w.constants?.Brand||"generic"}-${w.constants?.Model||"device"}`;let R=3735928559,M=1103547991,B=305419896,N=2271560481;for(let Ae=0;Ae<f.length;Ae++){const de=f.charCodeAt(Ae);R=Math.imul(R^de,2654435761)>>>0,M=Math.imul(M^de,1597334677)>>>0,B=Math.imul(B^de,374761393)>>>0,N=Math.imul(N^de,668265263)>>>0}const G=R.toString(16).padStart(8,"0").toUpperCase(),je=(M&65535).toString(16).padStart(4,"0").toUpperCase(),Ye=(M>>>16&4095|16384).toString(16).padStart(4,"0").toUpperCase(),Ke=(B>>>16&16383|32768).toString(16).padStart(4,"0").toUpperCase(),qe=(B.toString(16).padStart(8,"0")+(N&65535).toString(16).padStart(4,"0")).slice(0,12).toUpperCase();return`${G}-${je}-${Ye}-${Ke}-${qe}`},[E.width,E.height,L]),U=!!global?.HermesInternal,Y=!!globalThis?.__turboModuleProxy,te=F(()=>{const f=w.constants?.reactNativeVersion;return f?`${f.major}.${f.minor}.${f.patch}${f.prerelease!=null?`-${f.prerelease}`:""}`:"0.74+"},[]),P=T?.totalRAM?Math.round(T.totalRAM/(1024*1024)):Re?.totalPhysicalRamMb||4096,O=T?.freeRAM?Math.round(T.freeRAM/(1024*1024)):Math.max(0,P-(Re?.residentRamMb||1200)),K=Math.max(0,P-O),se=P>0?Math.round(K/P*100):45,W=T?.totalStorage?(T.totalStorage/(1024*1024*1024)).toFixed(1):"128.0",_=T?.freeStorage?(T.freeStorage/(1024*1024*1024)).toFixed(1):"64.2",We=F(()=>[{key:"overview",label:A("device.subTabs.overview","Overview"),themeColor:e.sky600,icon:f=><Tt size={12}color={f}/>},{key:"hardware",label:A("device.subTabs.hardware","Hardware"),themeColor:e.orange600,icon:f=><St size={12}color={f}/>},{key:"network",label:A("device.subTabs.network","Network & IP"),themeColor:e.teal600,icon:f=><Ct size={12}color={f}/>},{key:"display",label:A("device.subTabs.display","Display"),themeColor:e.pink600,icon:f=><$t size={12}color={f}/>},{key:"runtime",label:A("device.subTabs.runtime","Runtime & App"),themeColor:e.amber600,icon:f=><Mt size={12}color={f}/>},{key:"security",label:A("device.subTabs.security","Security & IDs"),themeColor:e.errorColor,icon:f=><Oe size={12}color={f}/>}],[A]),o=F(()=>({identifiers:{pseudoUDID:k,bundleId:T?.appBundleId||T?.appPackageName||"com.app.inspector"},hardware:{model:T?.deviceModel||w.constants?.Model||"Unknown Device",brand:T?.deviceBrand||w.constants?.Brand||(w.OS==="ios"?"Apple":"Android"),osVersion:`${w.OS} ${w.Version}`,apiLevel:T?.apiLevel||w.constants?.Version||null,cpuAbi:T?.cpuAbi||w.constants?.ServerHost||"arm64-v8a",totalRamMb:P,freeRamMb:O,usedRamMb:K,totalStorageGb:`${W} GB`,freeStorageGb:`${_} GB`,batteryPercent:T?.batteryPercent??100,isCharging:T?.isCharging??!1},network:{ipAddress:H,isWifi:!0,reachability:"Online"},display:{windowWidth:z.width,windowHeight:z.height,screenWidth:E.width,screenHeight:E.height,pixelRatio:L,fontScale:X,statusBarHeight:ee,isTablet:j,orientation:Q?"Landscape":"Portrait"},runtime:{appName:Rt(),appVersion:T?.appVersion||"1.0.0",appBuild:T?.appBuild||"1",reactNativeVersion:te,inspectorVersion:le,isHermes:U,isTurboModule:Y,isDev:__DEV__,jsEngine:U?"Hermes":"JSC",timezone:Intl.DateTimeFormat().resolvedOptions().timeZone,locale:Intl.DateTimeFormat().resolvedOptions().locale,sessionUptime:J}}),[k,T,P,O,K,W,_,H,z,E,L,X,ee,j,Q,te,U,Y,J]),_e=()=>{ae(JSON.stringify(o,null,2),"Device Full Report"),ie(A("device.copiedJson","Copied Full Device JSON Report!"))},Ge=()=>{const f=`# Device Information Report
|
|
22
|
+
**Generated by React Native In-App Inspector v${le}**
|
|
23
23
|
|
|
24
24
|
## \u{1F4F1} Hardware & System
|
|
25
|
-
- **Device Model:** ${
|
|
26
|
-
- **Brand / Manufacturer:** ${
|
|
27
|
-
- **OS Version:** ${
|
|
28
|
-
- **CPU Architecture:** ${
|
|
29
|
-
- **Total RAM:** ${
|
|
30
|
-
- **Total Storage:** ${
|
|
31
|
-
- **Battery:** ${
|
|
25
|
+
- **Device Model:** ${o.hardware.model}
|
|
26
|
+
- **Brand / Manufacturer:** ${o.hardware.brand}
|
|
27
|
+
- **OS Version:** ${o.hardware.osVersion}
|
|
28
|
+
- **CPU Architecture:** ${o.hardware.cpuAbi}
|
|
29
|
+
- **Total RAM:** ${P} MB (Free: ${O} MB)
|
|
30
|
+
- **Total Storage:** ${W} GB (Free: ${_} GB)
|
|
31
|
+
- **Battery:** ${o.hardware.batteryPercent}% (${o.hardware.isCharging?"Charging":"Unplugged"})
|
|
32
32
|
|
|
33
33
|
## \u{1F310} Network & Connectivity
|
|
34
|
-
- **IP Address:** ${
|
|
34
|
+
- **IP Address:** ${H}
|
|
35
35
|
- **Status:** Online
|
|
36
36
|
|
|
37
37
|
## \u{1F5A5} Display & Geometry
|
|
38
|
-
- **Resolution:** ${
|
|
39
|
-
- **Form Factor:** ${
|
|
40
|
-
- **Status Bar Height:** ${
|
|
38
|
+
- **Resolution:** ${E.width} \xD7 ${E.height} pt (@${L}x)
|
|
39
|
+
- **Form Factor:** ${j?"Tablet":"Phone"} (${Q?"Landscape":"Portrait"})
|
|
40
|
+
- **Status Bar Height:** ${ee} pt
|
|
41
41
|
|
|
42
42
|
## \u2699\uFE0F Runtime & App
|
|
43
|
-
- **App Name:** ${
|
|
44
|
-
- **App Version:** ${
|
|
45
|
-
- **React Native:** v${
|
|
46
|
-
- **JS Engine:** ${
|
|
43
|
+
- **App Name:** ${o.runtime.appName}
|
|
44
|
+
- **App Version:** ${o.runtime.appVersion} (${o.runtime.appBuild})
|
|
45
|
+
- **React Native:** v${te}
|
|
46
|
+
- **JS Engine:** ${U?"Hermes":"JSC"} (Bridgeless TurboModule: ${Y?"Yes":"No"})
|
|
47
47
|
- **Environment:** ${__DEV__?"Development (__DEV__)":"Production (Release)"}
|
|
48
|
-
- **Timezone:** ${
|
|
49
|
-
- **Session Uptime:** ${
|
|
48
|
+
- **Timezone:** ${o.runtime.timezone}
|
|
49
|
+
- **Session Uptime:** ${J}
|
|
50
50
|
|
|
51
51
|
## \u{1F511} Identifiers & Security
|
|
52
|
-
- **Pseudo-UDID:** \`${
|
|
53
|
-
- **Bundle ID:** \`${
|
|
54
|
-
`;
|
|
52
|
+
- **Pseudo-UDID:** \`${k}\`
|
|
53
|
+
- **Bundle ID:** \`${o.identifiers.bundleId}\`
|
|
54
|
+
`;ae(f,"Device Markdown Report"),ie(A("device.copiedMarkdown","Copied Markdown Report to Clipboard!"))},t=Pe((f,R,M)=>{if(!C.trim())return!0;const B=C.toLowerCase().trim(),N=R!=null?typeof R=="object"?JSON.stringify(R):String(R):"",G=M!=null?String(M):"";return f.toLowerCase().includes(B)||N.toLowerCase().includes(B)||G.toLowerCase().includes(B)},[C]),$e=F(()=>C.trim()?t("Model",T?.deviceModel||w.constants?.Model)||t("OS",w.OS)||t("IP Address",H)||t("RAM",`${K.toLocaleString()}/${P.toLocaleString()}`)||t("Uptime",J):!0,[C,t,T,H,K,P,J]),Te=F(()=>C.trim()?t("Device Model",o.hardware.model)||t("Manufacturer",o.hardware.brand)||t("Operating System",o.hardware.osVersion)||t("IP Address",H)||t("RAM Memory",`${K.toLocaleString()} MB / ${P.toLocaleString()} MB (${se}%)`,`Free Memory: ${O.toLocaleString()} MB`)||t("Storage Capacity",`${_} GB Free / ${W} GB Total`)||t("App Version",`v${o.runtime.appVersion} (${o.runtime.appBuild})`)||t("JavaScript Engine",U?"Hermes Bytecode Engine":"JavaScriptCore (JSC)")||t("UDID Identifier",k):!0,[C,t,o,H,K,P,se,O,_,W,U,k]),xe=F(()=>C.trim()?t("CPU Architecture",o.hardware.cpuAbi)||t("Total RAM",`${P.toLocaleString()} MB`)||t("Free RAM",`${O.toLocaleString()} MB`)||t("Storage Capacity",`${W} GB`)||t("Available Storage",`${_} GB`)||t("Battery",`${T?.batteryPercent??100}%`)||t("API Level",`API ${T?.apiLevel||w.Version}`)||t("Thermal State","Nominal (Cool)"):!0,[C,t,o,P,O,W,_,T]),Ie=F(()=>C.trim()?t("IP Address",H)||t("Internet Reachability","Connected")||t("Connection Type","Wi-Fi / Local Area Network")||t("Metro Dev Server",q?.PlatformConstants?.serverHost||q?.AndroidConstants?.serverHost||"localhost:8081")||t("WebSocket Protocol","Active & Enabled")||t("Network Inspector Interceptor","Intercepting XHR & Fetch"):!0,[C,t,H]),Me=F(()=>C.trim()?t("Window Resolution",`${Math.round(z.width).toLocaleString()} \xD7 ${Math.round(z.height).toLocaleString()} pt`)||t("Screen Physical Size",`${Math.round(E.width*L).toLocaleString()} \xD7 ${Math.round(E.height*L).toLocaleString()} px`)||t("Pixel Density",`@${L}x (${Math.round(L*160).toLocaleString()} dpi)`)||t("Font Scale",`${X}x`)||t("Form Factor",j?"Tablet":"Smartphone")||t("Orientation",Q?"Landscape":"Portrait")||t("Status Bar Height",`${ee} pt`):!0,[C,t,z,E,L,X,j,Q,ee]),Be=F(()=>C.trim()?t("App Name",o.runtime.appName)||t("Bundle ID",o.identifiers.bundleId)||t("App Version",`v${o.runtime.appVersion} (${o.runtime.appBuild})`)||t("React Native",`v${te}`)||t("In-App Inspector Version",`v${le}`)||t("Hermes Engine",U?"Enabled (AOT Bytecode)":"Disabled (JSC)")||t("New Architecture",Y?"Enabled":"Legacy Bridge")||t("Build Type",__DEV__?"Debug (__DEV__ = true)":"Release / Production")||t("Timezone",o.runtime.timezone)||t("Locale",o.runtime.locale)||t("Session Uptime",J):!0,[C,t,o,te,U,Y,J]),De=F(()=>C.trim()?t("Pseudo-UDID",k)||t("Bundle ID",o.identifiers.bundleId)||t("Root / Jailbreak","Clean (Standard Sandbox)")||t("Simulator / Emulator",w.constants?.Model?.includes?.("sdk")||w.constants?.Model?.includes?.("Emulator")||w.constants?.Model?.includes?.("Simulator")?"Virtual Simulator":"Physical Device")||t("Sandbox Integrity","Enforced by OS Kernel"):!0,[C,t,k,o]),Je=F(()=>C.trim()?$e||Te||xe||Ie||Me||Be||De:!0,[C,$e,Te,xe,Ie,Me,Be,De]);return<$ style={r.container}>
|
|
55
55
|
|
|
56
|
-
|
|
57
|
-
|
|
58
|
-
<
|
|
59
|
-
<
|
|
60
|
-
{
|
|
61
|
-
<
|
|
62
|
-
</
|
|
63
|
-
|
|
64
|
-
|
|
65
|
-
<
|
|
66
|
-
<
|
|
67
|
-
<I style={
|
|
68
|
-
</
|
|
69
|
-
|
|
70
|
-
<
|
|
71
|
-
<
|
|
72
|
-
<I style={[
|
|
73
|
-
</
|
|
74
|
-
|
|
56
|
+
<$ style={r.actionBar}>
|
|
57
|
+
<$ style={r.searchBar}>
|
|
58
|
+
<He size={14}color={e.grayTextWeak}/>
|
|
59
|
+
<Xe value={C}onChangeText={re}placeholder={A("device.searchPlaceholder","Search specs, UDID, IP, screen...")}placeholderTextColor={e.grayTextWeak}style={r.searchInput}clearButtonMode="while-editing"/>
|
|
60
|
+
{C.length>0&&<Z onPress={()=>re("")}hitSlop={8}>
|
|
61
|
+
<It size={13}color={e.grayTextWeak}/>
|
|
62
|
+
</Z>}
|
|
63
|
+
</$>
|
|
64
|
+
|
|
65
|
+
<Z onPress={_e}style={r.exportButton}hitSlop={6}>
|
|
66
|
+
<At size={12}color={e.purple}/>
|
|
67
|
+
<I style={r.exportButtonText}>JSON</I>
|
|
68
|
+
</Z>
|
|
69
|
+
|
|
70
|
+
<Z onPress={Ge}style={[r.exportButton,{backgroundColor:`${e.emerald500}14`,borderColor:`${e.emerald500}33`}]}hitSlop={6}>
|
|
71
|
+
<Se size={12}color={e.emerald500}/>
|
|
72
|
+
<I style={[r.exportButtonText,{color:e.emerald500}]}>MD</I>
|
|
73
|
+
</Z>
|
|
74
|
+
</$>
|
|
75
75
|
|
|
76
76
|
|
|
77
|
-
|
|
78
|
-
<
|
|
79
|
-
{
|
|
80
|
-
|
|
81
|
-
{f.icon(
|
|
82
|
-
<I style={
|
|
77
|
+
<$ style={r.subTabsWrapper}>
|
|
78
|
+
<Ee horizontal showsHorizontalScrollIndicator={!1}contentContainerStyle={r.subTabsContainer}>
|
|
79
|
+
{We.map(f=>{const R=V===f.key,M=f.themeColor||e.purple,B=R?e.white:M;return<Z key={f.key}onPress={()=>fe(f.key)}>
|
|
80
|
+
<$ style={[r.subTabPill,R&&{backgroundColor:M,borderColor:M},!R&&{backgroundColor:`${M}12`,borderColor:`${M}30`}]}>
|
|
81
|
+
{f.icon(B)}
|
|
82
|
+
<I style={[r.subTabPillText,R&&{color:e.white},!R&&{color:e.primaryBlack}]}>
|
|
83
83
|
{f.label}
|
|
84
84
|
</I>
|
|
85
|
-
|
|
86
|
-
</
|
|
87
|
-
</
|
|
88
|
-
|
|
85
|
+
</$>
|
|
86
|
+
</Z>})}
|
|
87
|
+
</Ee>
|
|
88
|
+
</$>
|
|
89
89
|
|
|
90
90
|
|
|
91
|
-
<
|
|
91
|
+
<Ee style={r.scrollArea}contentContainerStyle={r.scrollContent}showsVerticalScrollIndicator={!1}>
|
|
92
|
+
|
|
93
|
+
{(!C.trim()||t("UDID Identifier",k)||t("UUID",k)||t("Device UUID",k))&&<$ style={r.featuredUuidCard}>
|
|
94
|
+
<$ style={r.featuredUuidHeader}>
|
|
95
|
+
<$ style={r.featuredUuidTitleRow}>
|
|
96
|
+
<$ style={r.featuredUuidIconWrap}>
|
|
97
|
+
<Oe size={14}color={e.white}/>
|
|
98
|
+
</$>
|
|
99
|
+
<$ style={{flex:1,minWidth:0}}>
|
|
100
|
+
<$ style={{flexDirection:"row",alignItems:"center",gap:6}}>
|
|
101
|
+
<I style={r.featuredUuidLabel}>DEVICE UUID</I>
|
|
102
|
+
<$ style={r.featuredBadge}>
|
|
103
|
+
<I style={r.featuredBadgeText}>FEATURED</I>
|
|
104
|
+
</$>
|
|
105
|
+
</$>
|
|
106
|
+
<I style={r.featuredUuidSubtext}>
|
|
107
|
+
Deterministic hardware pseudo-identifier
|
|
108
|
+
</I>
|
|
109
|
+
</$>
|
|
110
|
+
</$>
|
|
111
|
+
|
|
112
|
+
<Z onPress={()=>{ae(k,"Device UUID"),ie(A("device.copiedUuid","Copied Device UUID to clipboard!"))}}style={r.featuredCopyBtn}hitSlop={6}accessibilityRole="button"accessibilityLabel="Copy Device UUID">
|
|
113
|
+
<Se size={11}color={e.white}/>
|
|
114
|
+
<I style={r.featuredCopyBtnText}>Copy</I>
|
|
115
|
+
</Z>
|
|
116
|
+
</$>
|
|
117
|
+
|
|
118
|
+
<Z onPress={()=>{ae(k,"Device UUID"),ie(A("device.copiedUuid","Copied Device UUID to clipboard!"))}}style={r.featuredUuidValueBox}hitSlop={4}accessibilityRole="button"accessibilityLabel="Tap to copy UUID">
|
|
119
|
+
<I style={r.featuredUuidValueText}numberOfLines={1}ellipsizeMode="middle"selectable>
|
|
120
|
+
{k}
|
|
121
|
+
</I>
|
|
122
|
+
<Se size={12}color={e.brandPurple}/>
|
|
123
|
+
</Z>
|
|
124
|
+
</$>}
|
|
125
|
+
|
|
92
126
|
|
|
93
|
-
{(
|
|
94
|
-
|
|
95
|
-
|
|
96
|
-
{
|
|
97
|
-
|
|
98
|
-
|
|
99
|
-
<I style={
|
|
100
|
-
{
|
|
127
|
+
{(!C.trim()||$e)&&<$ style={r.heroCard}>
|
|
128
|
+
<$ style={r.heroHeader}>
|
|
129
|
+
<$ style={r.heroIconWrap}>
|
|
130
|
+
{w.OS==="ios"?<Bt size={20}color={e.white}/>:<Dt size={20}color={e.white}/>}
|
|
131
|
+
</$>
|
|
132
|
+
<$ style={{flex:1,minWidth:0}}>
|
|
133
|
+
<I style={r.heroTitle}numberOfLines={1}ellipsizeMode="tail">
|
|
134
|
+
{T?.deviceModel||w.constants?.Model||(w.OS==="ios"?"Apple iPhone":"Android Device")}
|
|
101
135
|
</I>
|
|
102
|
-
<I style={
|
|
103
|
-
{
|
|
136
|
+
<I style={r.heroSubtitle}numberOfLines={1}ellipsizeMode="tail">
|
|
137
|
+
{w.OS==="ios"?`iOS ${w.Version}`:`Android ${w.Version} (API ${T?.apiLevel||w.Version})`}
|
|
104
138
|
</I>
|
|
105
|
-
|
|
106
|
-
|
|
107
|
-
|
|
108
|
-
<I style={
|
|
109
|
-
|
|
110
|
-
|
|
139
|
+
</$>
|
|
140
|
+
<$ style={r.heroBadge}>
|
|
141
|
+
<$ style={r.pulseDot}/>
|
|
142
|
+
<I style={r.heroBadgeText}>LIVE</I>
|
|
143
|
+
</$>
|
|
144
|
+
</$>
|
|
111
145
|
|
|
112
146
|
|
|
113
|
-
|
|
114
|
-
|
|
115
|
-
<I style={
|
|
116
|
-
<I style={
|
|
117
|
-
{
|
|
147
|
+
<$ style={r.heroMetricsStrip}>
|
|
148
|
+
<$ style={r.heroMetricItem}>
|
|
149
|
+
<I style={r.heroMetricLabel}numberOfLines={1}ellipsizeMode="tail">{A("device.ipAddress","IP ADDRESS")}</I>
|
|
150
|
+
<I style={r.heroMetricValue}numberOfLines={1}ellipsizeMode="tail">
|
|
151
|
+
{H}
|
|
118
152
|
</I>
|
|
119
|
-
|
|
120
|
-
|
|
121
|
-
|
|
122
|
-
<I style={
|
|
123
|
-
<I style={
|
|
124
|
-
{
|
|
153
|
+
</$>
|
|
154
|
+
<$ style={r.heroMetricDivider}/>
|
|
155
|
+
<$ style={r.heroMetricItem}>
|
|
156
|
+
<I style={r.heroMetricLabel}numberOfLines={1}ellipsizeMode="tail">{A("device.ramUsedTotal","RAM (USED/TOTAL)")}</I>
|
|
157
|
+
<I style={r.heroMetricValue}numberOfLines={1}ellipsizeMode="tail">
|
|
158
|
+
{K.toLocaleString()}/{P.toLocaleString()} MB
|
|
125
159
|
</I>
|
|
126
|
-
|
|
127
|
-
|
|
128
|
-
|
|
129
|
-
<I style={
|
|
130
|
-
<I style={
|
|
131
|
-
|
|
132
|
-
|
|
133
|
-
|
|
160
|
+
</$>
|
|
161
|
+
<$ style={r.heroMetricDivider}/>
|
|
162
|
+
<$ style={r.heroMetricItem}>
|
|
163
|
+
<I style={r.heroMetricLabel}numberOfLines={1}ellipsizeMode="tail">{A("device.uptime","UPTIME")}</I>
|
|
164
|
+
<I style={r.heroMetricValue}numberOfLines={1}ellipsizeMode="tail">{J}</I>
|
|
165
|
+
</$>
|
|
166
|
+
</$>
|
|
167
|
+
</$>}
|
|
134
168
|
|
|
135
169
|
|
|
136
|
-
{(V==="overview"
|
|
137
|
-
<I style={
|
|
138
|
-
{t("Device Model",
|
|
139
|
-
{t("Manufacturer",
|
|
140
|
-
{t("Operating System",
|
|
141
|
-
{t("IP Address",
|
|
142
|
-
{t("RAM Memory",`${
|
|
143
|
-
{t("Storage Capacity",`${
|
|
144
|
-
{t("App Version",`v${
|
|
145
|
-
{t("JavaScript Engine",
|
|
146
|
-
{t("UDID Identifier",
|
|
147
|
-
|
|
170
|
+
{(V==="overview"||C.length>0)&&Te&&<$ style={r.sectionCard}>
|
|
171
|
+
<I style={r.sectionTitle}>DEVICE OVERVIEW</I>
|
|
172
|
+
{t("Device Model",o.hardware.model)&&<S label="Device Model"value={o.hardware.model}/>}
|
|
173
|
+
{t("Manufacturer",o.hardware.brand)&&<S label="Manufacturer / Brand"value={o.hardware.brand}/>}
|
|
174
|
+
{t("Operating System",o.hardware.osVersion)&&<S label="Operating System"value={o.hardware.osVersion}badge={{text:w.OS.toUpperCase(),color:e.blue500,bg:`${e.blue500}18`}}/>}
|
|
175
|
+
{t("IP Address",H)&&<S label="Local IP Address"value={H}badge={{text:"ONLINE",color:e.emerald500,bg:`${e.emerald500}18`}}/>}
|
|
176
|
+
{t("RAM Memory",`${K.toLocaleString()} MB / ${P.toLocaleString()} MB (${se}%)`,`Free Memory: ${O.toLocaleString()} MB`)&&<S label="RAM Memory"value={`${K.toLocaleString()} MB / ${P.toLocaleString()} MB (${se}%)`}subtext={`Free Memory: ${O.toLocaleString()} MB`}/>}
|
|
177
|
+
{t("Storage Capacity",`${_} GB Free / ${W} GB Total`)&&<S label="Internal Storage"value={`${_} GB Free / ${W} GB Total`}/>}
|
|
178
|
+
{t("App Version",`v${o.runtime.appVersion} (${o.runtime.appBuild})`)&&<S label="Host App Version"value={`v${o.runtime.appVersion} (${o.runtime.appBuild})`}/>}
|
|
179
|
+
{t("JavaScript Engine",U?"Hermes Bytecode Engine":"JavaScriptCore (JSC)")&&<S label="JS Runtime Engine"value={U?"Hermes Bytecode Engine":"JavaScriptCore (JSC)"}badge={U?{text:"HERMES",color:e.purple,bg:`${e.purple}18`}:{text:"JSC",color:e.sky500,bg:`${e.sky500}18`}}/>}
|
|
180
|
+
{t("UDID Identifier",k)&&<S label="Pseudo-UDID"value={k}isLast/>}
|
|
181
|
+
</$>}
|
|
148
182
|
|
|
149
183
|
|
|
150
|
-
{(V==="hardware"
|
|
151
|
-
<I style={
|
|
152
|
-
{t("CPU Architecture",
|
|
153
|
-
{t("Total RAM",`${
|
|
154
|
-
{t("Free RAM",`${
|
|
155
|
-
{t("Storage Capacity",`${
|
|
156
|
-
{t("Available Storage",`${
|
|
157
|
-
{t("Battery",`${
|
|
158
|
-
{t("API Level",`API ${
|
|
184
|
+
{(V==="hardware"||C.length>0)&&xe&&<$ style={r.sectionCard}>
|
|
185
|
+
<I style={r.sectionTitle}>HARDWARE & SYSTEM SPECIFICATIONS</I>
|
|
186
|
+
{t("CPU Architecture",o.hardware.cpuAbi)&&<S label="CPU Architecture / ABI"value={o.hardware.cpuAbi}badge={{text:"64-BIT",color:e.purple,bg:`${e.purple}18`}}/>}
|
|
187
|
+
{t("Total RAM",`${P.toLocaleString()} MB`)&&<S label="Total Physical RAM"value={`${P.toLocaleString()} MB`}/>}
|
|
188
|
+
{t("Free RAM",`${O.toLocaleString()} MB`)&&<S label="Available Free RAM"value={`${O.toLocaleString()} MB`}badge={{text:O<500?"LOW":"HEALTHY",color:O<500?e.errorColor:e.emerald500,bg:O<500?`${e.errorColor}18`:`${e.emerald500}18`}}/>}
|
|
189
|
+
{t("Storage Capacity",`${W} GB`)&&<S label="Disk Storage Total"value={`${W} GB`}/>}
|
|
190
|
+
{t("Available Storage",`${_} GB`)&&<S label="Disk Storage Available"value={`${_} GB`}/>}
|
|
191
|
+
{t("Battery",`${T?.batteryPercent??100}%`)&&<S label="Battery Level"value={`${T?.batteryPercent??100}%`}badge={{text:T?.isCharging?"CHARGING":"DISCHARGING",color:T?.isCharging?e.emerald500:e.grayText,bg:T?.isCharging?`${e.emerald500}18`:`${e.grayText}18`}}/>}
|
|
192
|
+
{t("API Level",`API ${T?.apiLevel||w.Version}`)&&w.OS==="android"&&<S label="Android API SDK Level"value={`API ${T?.apiLevel||w.Version}`}/>}
|
|
159
193
|
{t("Thermal State","Nominal (Cool)")&&<S label="Thermal State"value="Nominal (Cool)"badge={{text:"OPTIMAL",color:e.emerald500,bg:`${e.emerald500}18`}}isLast/>}
|
|
160
|
-
|
|
194
|
+
</$>}
|
|
161
195
|
|
|
162
196
|
|
|
163
|
-
{(V==="network"
|
|
164
|
-
<I style={
|
|
165
|
-
{t("IP Address",
|
|
197
|
+
{(V==="network"||C.length>0)&&Ie&&<$ style={r.sectionCard}>
|
|
198
|
+
<I style={r.sectionTitle}>NETWORK & CONNECTIVITY</I>
|
|
199
|
+
{t("IP Address",H)&&<S label="Local Device IP"value={H}badge={{text:"IPV4",color:e.blue500,bg:`${e.blue500}18`}}/>}
|
|
166
200
|
{t("Internet Reachability","Connected")&&<S label="Internet Reachability"value="Connected"badge={{text:"ONLINE",color:e.emerald500,bg:`${e.emerald500}18`}}/>}
|
|
167
201
|
{t("Connection Type","Wi-Fi / Local Area Network")&&<S label="Active Connection Type"value="Wi-Fi / Local Area Network"/>}
|
|
168
|
-
{t("Metro Dev Server",
|
|
202
|
+
{t("Metro Dev Server",q?.PlatformConstants?.serverHost||q?.AndroidConstants?.serverHost||"localhost:8081")&&<S label="Metro Packager Host"value={q?.PlatformConstants?.serverHost||q?.AndroidConstants?.serverHost||"localhost:8081"}/>}
|
|
169
203
|
{t("WebSocket Protocol","Active & Enabled")&&<S label="WebSocket (WSS) Support"value="Active & Enabled"/>}
|
|
170
204
|
{t("Network Inspector Interceptor","Intercepting XHR & Fetch")&&<S label="Network Interceptor Status"value="Intercepting XHR & Fetch"badge={{text:"MONITORING",color:e.purple,bg:`${e.purple}18`}}isLast/>}
|
|
171
|
-
|
|
205
|
+
</$>}
|
|
172
206
|
|
|
173
207
|
|
|
174
|
-
{(V==="display"
|
|
175
|
-
<I style={
|
|
176
|
-
{t("Window Resolution",`${
|
|
177
|
-
{t("Screen Physical Size",`${(
|
|
178
|
-
{t("Pixel Density",`@${
|
|
179
|
-
{t("Font Scale",`${
|
|
180
|
-
{t("Form Factor",
|
|
181
|
-
{t("Orientation",
|
|
182
|
-
{t("Status Bar Height",`${
|
|
183
|
-
|
|
208
|
+
{(V==="display"||C.length>0)&&Me&&<$ style={r.sectionCard}>
|
|
209
|
+
<I style={r.sectionTitle}>DISPLAY & SCREEN GEOMETRY</I>
|
|
210
|
+
{t("Window Resolution",`${Math.round(z.width).toLocaleString()} \xD7 ${Math.round(z.height).toLocaleString()} pt`)&&<S label="Window Logical Size"value={`${Math.round(z.width).toLocaleString()} \xD7 ${Math.round(z.height).toLocaleString()} pt`}/>}
|
|
211
|
+
{t("Screen Physical Size",`${Math.round(E.width*L).toLocaleString()} \xD7 ${Math.round(E.height*L).toLocaleString()} px`)&&<S label="Physical Screen Size"value={`${Math.round(E.width*L).toLocaleString()} \xD7 ${Math.round(E.height*L).toLocaleString()} px`}/>}
|
|
212
|
+
{t("Pixel Density",`@${L}x (${Math.round(L*160).toLocaleString()} dpi)`)&&<S label="Pixel Ratio (DPI Scale)"value={`@${L}x (${Math.round(L*160).toLocaleString()} dpi)`}badge={{text:`@${L}x`,color:e.purple,bg:`${e.purple}18`}}/>}
|
|
213
|
+
{t("Font Scale",`${X}x`)&&<S label="User Font Scale"value={`${X}x (${X===1?"Default":X>1?"Enlarged":"Compact"})`}/>}
|
|
214
|
+
{t("Form Factor",j?"Tablet":"Smartphone")&&<S label="Device Form Factor"value={j?"Tablet":"Smartphone"}badge={{text:j?"TABLET":"PHONE",color:j?e.blue500:e.purple,bg:j?`${e.blue500}18`:`${e.purple}18`}}/>}
|
|
215
|
+
{t("Orientation",Q?"Landscape":"Portrait")&&<S label="Screen Orientation"value={Q?"Landscape":"Portrait"}/>}
|
|
216
|
+
{t("Status Bar Height",`${ee} pt`)&&<S label="Status Bar Inset"value={`${ee} pt`}isLast/>}
|
|
217
|
+
</$>}
|
|
184
218
|
|
|
185
219
|
|
|
186
|
-
{(V==="runtime"
|
|
187
|
-
<I style={
|
|
188
|
-
{t("App Name",
|
|
189
|
-
{t("Bundle ID",
|
|
190
|
-
{t("App Version",`v${
|
|
191
|
-
{t("React Native",`v${
|
|
192
|
-
{t("In-App Inspector Version",`v${
|
|
193
|
-
{t("Hermes Engine",
|
|
194
|
-
{t("New Architecture",
|
|
220
|
+
{(V==="runtime"||C.length>0)&&Be&&<$ style={r.sectionCard}>
|
|
221
|
+
<I style={r.sectionTitle}>RUNTIME & APPLICATION</I>
|
|
222
|
+
{t("App Name",o.runtime.appName)&&<S label="Application Name"value={o.runtime.appName}/>}
|
|
223
|
+
{t("Bundle ID",o.identifiers.bundleId)&&<S label="Bundle Identifier / Package"value={o.identifiers.bundleId}/>}
|
|
224
|
+
{t("App Version",`v${o.runtime.appVersion} (${o.runtime.appBuild})`)&&<S label="Application Version"value={`v${o.runtime.appVersion} (${o.runtime.appBuild})`}/>}
|
|
225
|
+
{t("React Native",`v${te}`)&&<S label="React Native Framework"value={`v${te}`}badge={{text:"RN",color:e.sky500,bg:`${e.sky500}18`}}/>}
|
|
226
|
+
{t("In-App Inspector Version",`v${le}`)&&<S label="In-App Inspector Library"value={`v${le}`}badge={{text:"LATEST",color:e.purple,bg:`${e.purple}18`}}/>}
|
|
227
|
+
{t("Hermes Engine",U?"Enabled (AOT Bytecode)":"Disabled (JSC)")&&<S label="Hermes JavaScript Engine"value={U?"Enabled (AOT Bytecode)":"Disabled (JSC)"}badge={{text:U?"HERMES":"JSC",color:U?e.purple:e.grayText,bg:U?`${e.purple}18`:`${e.grayText}18`}}/>}
|
|
228
|
+
{t("New Architecture",Y?"Enabled":"Legacy Bridge")&&<S label="Bridgeless TurboModules (New Arch)"value={Y?"Enabled":"Legacy Bridge"}badge={{text:Y?"NEW ARCH":"LEGACY",color:Y?e.emerald500:e.blue500,bg:Y?`${e.emerald500}18`:`${e.blue500}18`}}/>}
|
|
195
229
|
{t("Build Type",__DEV__?"Debug (__DEV__ = true)":"Release / Production")&&<S label="Build Configuration"value={__DEV__?"Debug (__DEV__ = true)":"Release / Production"}badge={{text:__DEV__?"DEBUG":"RELEASE",color:__DEV__?e.warningIconGold:e.emerald500,bg:__DEV__?`${e.warningIconGold}18`:`${e.emerald500}18`}}/>}
|
|
196
|
-
{t("Timezone",
|
|
197
|
-
{t("Locale",
|
|
198
|
-
{t("Session Uptime",
|
|
199
|
-
|
|
230
|
+
{t("Timezone",o.runtime.timezone)&&<S label="System Timezone"value={o.runtime.timezone}/>}
|
|
231
|
+
{t("Locale",o.runtime.locale)&&<S label="System Language & Locale"value={o.runtime.locale}/>}
|
|
232
|
+
{t("Session Uptime",J)&&<S label="Inspector Session Uptime"value={J}isLast/>}
|
|
233
|
+
</$>}
|
|
200
234
|
|
|
201
235
|
|
|
202
|
-
{(V==="security"
|
|
203
|
-
<I style={
|
|
204
|
-
{t("Pseudo-UDID",
|
|
205
|
-
{t("Bundle ID",
|
|
236
|
+
{(V==="security"||C.length>0)&&De&&<$ style={r.sectionCard}>
|
|
237
|
+
<I style={r.sectionTitle}>DEVICE IDENTIFIERS & SECURITY</I>
|
|
238
|
+
{t("Pseudo-UDID",k)&&<S label="Deterministic Pseudo-UDID"value={k}subtext="Stable hardware signature hash for testing & diagnostics"badge={{text:"PERSISTENT",color:e.purple,bg:`${e.purple}18`}}/>}
|
|
239
|
+
{t("Bundle ID",o.identifiers.bundleId)&&<S label="Application Bundle ID"value={o.identifiers.bundleId}/>}
|
|
206
240
|
{t("Root / Jailbreak","Clean (Standard Sandbox)")&&<S label="Root / Jailbreak Heuristic"value="Clean (Standard Sandbox)"badge={{text:"SECURE",color:e.emerald500,bg:`${e.emerald500}18`}}/>}
|
|
207
|
-
{t("Simulator / Emulator",
|
|
241
|
+
{t("Simulator / Emulator",w.constants?.Model?.includes?.("sdk")||w.constants?.Model?.includes?.("Emulator")||w.constants?.Model?.includes?.("Simulator")?"Virtual Simulator":"Physical Device")&&<S label="Emulator / Physical Device"value={w.constants?.Model?.includes?.("sdk")||w.constants?.Model?.includes?.("Emulator")||w.constants?.Model?.includes?.("Simulator")?"Virtual Simulator":"Physical Device"}/>}
|
|
208
242
|
{t("Sandbox Integrity","Enforced by OS Kernel")&&<S label="App Sandbox File Isolation"value="Enforced by OS Kernel"isLast/>}
|
|
209
|
-
|
|
243
|
+
</$>}
|
|
210
244
|
|
|
211
245
|
|
|
212
|
-
{
|
|
213
|
-
<
|
|
214
|
-
<I style={
|
|
215
|
-
<I style={
|
|
216
|
-
No properties matched “{
|
|
246
|
+
{C.trim().length>0&&!Je&&<$ style={r.emptySearchCard}>
|
|
247
|
+
<He size={26}color={e.grayTextWeak}/>
|
|
248
|
+
<I style={r.emptySearchTitle}>No matching device specifications</I>
|
|
249
|
+
<I style={r.emptySearchSubtitle}>
|
|
250
|
+
No properties matched “{C}”
|
|
217
251
|
</I>
|
|
218
|
-
<
|
|
219
|
-
<I style={
|
|
220
|
-
</
|
|
221
|
-
|
|
222
|
-
|
|
223
|
-
|
|
224
|
-
</
|
|
225
|
-
|
|
252
|
+
<Z onPress={()=>re("")}style={r.clearSearchBtn}>
|
|
253
|
+
<I style={r.clearSearchBtnText}>Clear Search</I>
|
|
254
|
+
</Z>
|
|
255
|
+
</$>}
|
|
256
|
+
|
|
257
|
+
<$ style={{height:48}}/>
|
|
258
|
+
</Ee>
|
|
259
|
+
</$>});const r=Qe.create({container:{flex:1,backgroundColor:e.grayBackground},subTabsWrapper:{backgroundColor:e.primaryLight,borderBottomWidth:1,borderBottomColor:e.dividerColor,paddingVertical:6},subTabsContainer:{paddingHorizontal:12,flexDirection:"row",alignItems:"center",gap:6},subTabPill:{flexDirection:"row",alignItems:"center",gap:5,paddingHorizontal:9,paddingVertical:4.5,borderRadius:8,borderWidth:1},subTabPillText:{fontFamily:D.interBold,fontSize:10.5},featuredUuidCard:{backgroundColor:e.primaryLight,borderRadius:14,borderWidth:1.5,borderColor:`${e.brandPurple}40`,padding:12,gap:10,shadowColor:e.brandPurple,shadowOpacity:.08,shadowRadius:6,shadowOffset:{width:0,height:2},elevation:2},featuredUuidHeader:{flexDirection:"row",alignItems:"center",justifyContent:"space-between",gap:8},featuredUuidTitleRow:{flexDirection:"row",alignItems:"center",gap:8,flex:1,minWidth:0},featuredUuidIconWrap:{width:28,height:28,borderRadius:7,backgroundColor:e.brandPurple,alignItems:"center",justifyContent:"center"},featuredUuidLabel:{fontFamily:D.interBold,fontSize:11,color:e.primaryBlack,letterSpacing:.3},featuredUuidSubtext:{fontFamily:D.interRegular,fontSize:9.5,color:e.grayTextWeak,marginTop:.5},featuredBadge:{backgroundColor:`${e.brandPurple}18`,paddingHorizontal:5,paddingVertical:1.5,borderRadius:4,borderWidth:1,borderColor:`${e.brandPurple}30`},featuredBadgeText:{fontFamily:D.interBold,fontSize:8,color:e.brandPurple,letterSpacing:.4},featuredCopyBtn:{flexDirection:"row",alignItems:"center",gap:4,backgroundColor:e.brandPurple,paddingHorizontal:10,paddingVertical:5.5,borderRadius:7,shadowColor:e.brandPurple,shadowOpacity:.25,shadowRadius:3,shadowOffset:{width:0,height:1},elevation:1},featuredCopyBtnText:{fontFamily:D.interBold,fontSize:10.5,color:e.white},featuredUuidValueBox:{flexDirection:"row",alignItems:"center",justifyContent:"space-between",backgroundColor:`${e.brandPurple}0C`,borderRadius:8,borderWidth:1,borderColor:`${e.brandPurple}28`,paddingHorizontal:10,paddingVertical:7,gap:8},featuredUuidValueText:{flex:1,fontFamily:w.select({ios:"Menlo",android:"monospace",default:"monospace"}),fontSize:11.5,color:e.brandPurple,letterSpacing:.5},actionBar:{flexDirection:"row",alignItems:"center",paddingHorizontal:12,paddingVertical:8,backgroundColor:e.primaryLight,borderBottomWidth:1,borderBottomColor:e.dividerColor,gap:8},searchBar:{flex:1,flexDirection:"row",alignItems:"center",backgroundColor:e.grayBackground,borderRadius:8,paddingHorizontal:9,paddingVertical:w.OS==="ios"?6:2,borderWidth:1,borderColor:e.grayBorderSecondary,gap:6},searchInput:{flex:1,fontFamily:D.interMedium,fontSize:12,color:e.primaryBlack,padding:0},exportButton:{flexDirection:"row",alignItems:"center",gap:4,paddingHorizontal:9,paddingVertical:6,borderRadius:8,backgroundColor:`${e.purple}14`,borderWidth:1,borderColor:`${e.purple}33`},exportButtonText:{fontFamily:D.interBold,fontSize:11,color:e.purple},scrollArea:{flex:1},scrollContent:{padding:12,gap:12,paddingBottom:100},heroCard:{backgroundColor:e.primaryLight,borderRadius:14,borderWidth:1,borderColor:e.grayBorderSecondary,padding:14,shadowColor:e.black,shadowOpacity:.04,shadowRadius:4,shadowOffset:{width:0,height:2},elevation:1,gap:12},heroHeader:{flexDirection:"row",alignItems:"center",gap:10},heroIconWrap:{width:38,height:38,borderRadius:10,backgroundColor:e.purple,alignItems:"center",justifyContent:"center",shadowColor:e.purple,shadowOpacity:.25,shadowRadius:4,shadowOffset:{width:0,height:2},elevation:2},heroTitle:{fontFamily:D.interBold,fontSize:15,color:e.primaryBlack,letterSpacing:-.2},heroSubtitle:{fontFamily:D.interRegular,fontSize:11.5,color:e.grayText,marginTop:1},heroBadge:{flexDirection:"row",alignItems:"center",gap:4,backgroundColor:`${e.emerald500}18`,paddingHorizontal:7,paddingVertical:3,borderRadius:6},pulseDot:{width:6,height:6,borderRadius:3,backgroundColor:e.emerald500},heroBadgeText:{fontFamily:D.interBold,fontSize:9.5,color:e.emerald500},heroMetricsStrip:{flexDirection:"row",alignItems:"center",backgroundColor:e.grayBackground,borderRadius:10,paddingVertical:8,paddingHorizontal:10},heroMetricItem:{flex:1,alignItems:"center",paddingHorizontal:2,minWidth:0},heroMetricLabel:{fontFamily:D.interBold,fontSize:8.5,color:e.grayTextWeak,letterSpacing:.4},heroMetricValue:{fontFamily:D.interBold,fontSize:11,color:e.primaryBlack,marginTop:2},heroMetricDivider:{width:1,height:20,backgroundColor:e.dividerColor},sectionCard:{backgroundColor:e.primaryLight,borderRadius:14,borderWidth:1,borderColor:e.grayBorderSecondary,padding:14,shadowColor:e.black,shadowOpacity:.03,shadowRadius:3,shadowOffset:{width:0,height:1},elevation:1},sectionTitle:{fontFamily:D.interBold,fontSize:10.5,color:e.grayTextWeak,letterSpacing:.8,marginBottom:8,textTransform:"uppercase"},infoRow:{flexDirection:"row",alignItems:"center",justifyContent:"space-between",paddingVertical:9,borderBottomWidth:1,borderBottomColor:e.dividerColor},infoLabel:{fontFamily:D.interMedium,fontSize:12.5,color:e.primaryBlack},infoSubtext:{fontFamily:D.interRegular,fontSize:10,color:e.grayTextWeak,marginTop:1},infoBadge:{paddingHorizontal:5,paddingVertical:1,borderRadius:4,borderWidth:1},infoBadgeText:{fontFamily:D.interBold,fontSize:8.5},infoValue:{fontFamily:D.interBold,fontSize:12,color:e.primaryBlack,flexShrink:1,textAlign:"right"},rowCopyBtn:{padding:4,borderRadius:4,backgroundColor:e.grayBackground},emptySearchCard:{backgroundColor:e.primaryLight,borderRadius:14,borderWidth:1,borderColor:e.grayBorderSecondary,padding:24,alignItems:"center",justifyContent:"center",gap:8,marginTop:8},emptySearchTitle:{fontFamily:D.interBold,fontSize:13.5,color:e.primaryBlack,textAlign:"center"},emptySearchSubtitle:{fontFamily:D.interRegular,fontSize:11.5,color:e.grayTextWeak,textAlign:"center"},clearSearchBtn:{marginTop:6,paddingHorizontal:14,paddingVertical:6.5,borderRadius:8,backgroundColor:e.purple},clearSearchBtnText:{fontFamily:D.interBold,fontSize:11,color:e.white}});export default DeviceInfoTab;
|