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
|
@@ -131,6 +131,14 @@ export interface InspectorStorage {
|
|
|
131
131
|
setItem: (key: string, value: string) => void | Promise<void>;
|
|
132
132
|
removeItem?: (key: string) => void | Promise<void>;
|
|
133
133
|
}
|
|
134
|
+
export interface CrashIgnoredTypes {
|
|
135
|
+
js: boolean;
|
|
136
|
+
native: boolean;
|
|
137
|
+
render: boolean;
|
|
138
|
+
promise: boolean;
|
|
139
|
+
custom: boolean;
|
|
140
|
+
}
|
|
141
|
+
export type CrashModalTriggerPolicy = 'fatal_only' | 'all_errors' | 'silent_tab_only';
|
|
134
142
|
export interface PersistedSettings {
|
|
135
143
|
isDark?: boolean;
|
|
136
144
|
language?: string;
|
|
@@ -142,6 +150,9 @@ export interface PersistedSettings {
|
|
|
142
150
|
maxConsoleLogs?: number;
|
|
143
151
|
maxAnalyticsEventsLimit?: number;
|
|
144
152
|
maxCrashLogs?: number;
|
|
153
|
+
crashIgnoredTypes?: CrashIgnoredTypes;
|
|
154
|
+
crashModalTriggerPolicy?: CrashModalTriggerPolicy;
|
|
155
|
+
crashThrottleDuplicates?: boolean;
|
|
145
156
|
maxPushLogsLimit?: number;
|
|
146
157
|
maxSocketLogsLimit?: number;
|
|
147
158
|
isSocketAutoCaptureEnabled?: boolean;
|
|
@@ -175,10 +186,13 @@ export interface PersistedSettings {
|
|
|
175
186
|
captureBitrate?: number;
|
|
176
187
|
captureMaxDurationSeconds?: number;
|
|
177
188
|
captureAutoGif?: boolean;
|
|
189
|
+
captureWidgetEnabled?: boolean;
|
|
178
190
|
peekOpacity?: number;
|
|
191
|
+
hiddenUrlPatterns?: string[];
|
|
179
192
|
}
|
|
180
193
|
export interface NetworkInspectorProps {
|
|
181
194
|
enabled?: boolean;
|
|
195
|
+
captureWidgetEnabled?: boolean;
|
|
182
196
|
telemetry?: boolean;
|
|
183
197
|
storage?: InspectorStorage;
|
|
184
198
|
navigationRef?: any;
|
|
@@ -299,6 +313,8 @@ export interface InspectorContextValue {
|
|
|
299
313
|
handleDelete: () => void;
|
|
300
314
|
isGroupByPageEnabled: boolean;
|
|
301
315
|
setIsGroupByPageEnabled: React.Dispatch<React.SetStateAction<boolean>>;
|
|
316
|
+
hiddenUrlPatterns: string[];
|
|
317
|
+
setHiddenUrlPatterns: React.Dispatch<React.SetStateAction<string[]>>;
|
|
302
318
|
detailTitle: string;
|
|
303
319
|
detailDisplayUrl: string;
|
|
304
320
|
apiDetailActiveTab: 'metadata' | 'headers' | 'request' | 'response';
|
|
@@ -326,6 +342,9 @@ export interface InspectorContextValue {
|
|
|
326
342
|
logCounts: Record<string, string>;
|
|
327
343
|
logSortOrder: SortOrder;
|
|
328
344
|
setLogSortOrder: React.Dispatch<React.SetStateAction<SortOrder>>;
|
|
345
|
+
selectedConsoleLogs: Set<number>;
|
|
346
|
+
setSelectedConsoleLogs: React.Dispatch<React.SetStateAction<Set<number>>>;
|
|
347
|
+
toggleSelectConsoleLog: (id: number) => void;
|
|
329
348
|
analyticsEvents: AnalyticsEvent[];
|
|
330
349
|
filteredAnalyticsEvents: (AnalyticsEvent & {
|
|
331
350
|
count?: number;
|
|
@@ -360,6 +379,11 @@ export interface InspectorContextValue {
|
|
|
360
379
|
maxCrashLogs: number;
|
|
361
380
|
setMaxCrashLogs: React.Dispatch<React.SetStateAction<number>>;
|
|
362
381
|
clearAllCrashes: () => void;
|
|
382
|
+
crashIgnoredTypes: CrashIgnoredTypes;
|
|
383
|
+
setCrashIgnoredTypes: React.Dispatch<React.SetStateAction<CrashIgnoredTypes>>;
|
|
384
|
+
crashModalTriggerPolicy: CrashModalTriggerPolicy;
|
|
385
|
+
setCrashModalTriggerPolicyState: React.Dispatch<React.SetStateAction<CrashModalTriggerPolicy>>;
|
|
386
|
+
applyCrashPolicyPreset: (preset: 'balanced' | 'max_shield' | 'silent') => void;
|
|
363
387
|
pushRecords: PushNotificationRecord[];
|
|
364
388
|
filteredPushRecords: PushNotificationRecord[];
|
|
365
389
|
selectedPush: PushNotificationRecord | null;
|
|
@@ -441,6 +465,8 @@ export interface InspectorContextValue {
|
|
|
441
465
|
setCaptureAutoHide: React.Dispatch<React.SetStateAction<boolean>>;
|
|
442
466
|
captureAutoGif: boolean;
|
|
443
467
|
setCaptureAutoGif: React.Dispatch<React.SetStateAction<boolean>>;
|
|
468
|
+
captureWidgetEnabled: boolean;
|
|
469
|
+
setCaptureWidgetEnabled: React.Dispatch<React.SetStateAction<boolean>>;
|
|
444
470
|
peekMode: boolean;
|
|
445
471
|
setPeekMode: React.Dispatch<React.SetStateAction<boolean>>;
|
|
446
472
|
peekOpacity: number;
|
|
@@ -542,6 +568,8 @@ export interface ConsoleLogCardProps {
|
|
|
542
568
|
searchStr?: string;
|
|
543
569
|
onPress?: (item: ConsoleLog) => void;
|
|
544
570
|
testID?: string;
|
|
571
|
+
isSelected?: boolean;
|
|
572
|
+
onToggleSelect?: (id: number) => void;
|
|
545
573
|
}
|
|
546
574
|
export interface JsonContent {
|
|
547
575
|
header: string;
|
|
@@ -1,95 +1,101 @@
|
|
|
1
|
-
import
|
|
2
|
-
<
|
|
3
|
-
{T.slice(0,2).map((
|
|
4
|
-
<
|
|
5
|
-
<E style={[o.prefixTagText,{color:
|
|
6
|
-
{
|
|
1
|
+
import V from"react";import{useTranslation as K}from"../i18n";import{Pressable as W,StyleSheet as Y,Text as E,View as C}from"react-native";import X,{Path as J}from"react-native-svg";import{AppColors as r}from"../styles/AppColors";import{AppFonts as x}from"../styles/AppFonts";import{formatTime as Q,getJsonContent as Z,getJsonPreviewText as q,parseStackLine as _,openInVSCode as ee,getSize as re,getCleanCallerDisplay as oe}from"../helpers";import Ce from"./TouchableScale";import L from"./LogSyntaxHighlighter";import{ForwardChevronIcon as Ie,ExternalLinkIcon as Te,FlaskIcon as Se,ZapIcon as F,GlobeIcon as me,DiceIcon as xe,AtomIcon as $,BarChartIcon as ye,KeyIcon as Ee,SmartphoneIcon as Re,AlertTriangleIcon as Be,BugIcon as Ae,TagIcon as Pe,MapPinIcon as U,StorageIcon as Oe,SignalIcon as we,FlameIcon as ke,MoneyIcon as Le,CircleCheckIcon as G,CircleAlertIcon as Ne,CircleXIcon as He,RefreshCcwIcon as De,PerformanceIcon as Ve,ChipIcon as Fe,SettingsIcon as Me,TerminalIcon as ze,InfoCircleIcon as v,ShieldAlertIcon as We,LayoutIcon as $e,ClockIcon as Ue,SizeIcon as Ge}from"./NetworkIcons";import{useInspector as ve}from"./Inspector/InspectorContext";const je=(y,t,B,N,H)=>{if(!y)return null;const P=/^((?:\[[^\]]+\]\s*)+)/,A=y.match(P);if(A){const O=A[1],D=y.substring(O.length),T=O.match(/\[[^\]]+\]/g)||[],w=I=>{const e=I.replace(/[\[\]]/g,"").trim().toUpperCase();return e==="AXIOS"?{color:r.emerald600,Icon:F,label:"AXIOS"}:e==="API"||e==="FETCH"||e==="HTTP"||e==="REST"||e==="NETWORK"?{color:r.sky600,Icon:me,label:e}:e==="GRAPHQL"||e==="GQL"||e==="APOLLO"||e==="MUTATION"||e==="QUERY"?{color:r.pink500,Icon:$,label:e}:e==="WS"||e==="WEBSOCKET"||e==="SOCKET"||e==="SOCKET.IO"||e==="REALTIME"?{color:r.cyan600,Icon:we,label:e}:e==="REDUX"||e==="STORE"||e==="STATE"||e==="ZUSTAND"||e==="MOBX"||e==="RECOIL"||e==="ACTION"||e==="DISPATCH"?{color:r.violet600,Icon:$,label:e}:e==="ANALYTICS"||e==="FIREBASE"||e==="GA4"||e==="GA"||e==="SEGMENT"||e==="MIXPANEL"||e==="POSTHOG"||e==="TRACK"||e==="EVENT"?{color:r.teal600,Icon:ye,label:e}:e==="AUTH"||e==="TOKEN"||e==="SESSION"||e==="JWT"||e==="LOGIN"||e==="LOGOUT"||e==="USER"?{color:r.amber600,Icon:Ee,label:e}:e==="SECURITY"||e==="SHIELD"||e==="PERMISSION"||e==="PERMISSIONS"?{color:r.indigo600Alt,Icon:We,label:e}:e==="NAV"||e==="NAVIGATION"||e==="ROUTE"||e==="SCREEN"||e==="ROUTER"||e==="DEEPLINK"?{color:r.indigo600Alt,Icon:U,label:e}:e==="STORAGE"||e==="ASYNCSTORAGE"||e==="MMKV"||e==="SQLITE"||e==="DB"||e==="DATABASE"||e==="REALM"||e==="CACHE"?{color:r.purple500,Icon:Oe,label:e}:e==="PERF"||e==="RENDER"||e==="PERFORMANCE"||e==="FPS"||e==="MEMORY"?{color:r.violet500,Icon:Ve,label:e}:e==="INIT"||e==="BOOT"||e==="STARTUP"||e==="LIFECYCLE"||e==="MOUNT"||e==="UNMOUNT"?{color:r.blue600,Icon:F,label:e}:e==="SYNC"||e==="REFRESH"||e==="BACKGROUND"||e==="JOB"||e==="WORKER"?{color:r.sky600,Icon:De,label:e}:e==="PUSH"||e==="NOTIF"||e==="NOTIFICATION"||e==="FCM"||e==="APNS"?{color:r.darkOrange,Icon:ke,label:e}:e==="PAY"||e==="PAYMENT"||e==="STRIPE"||e==="IAP"||e==="BILLING"||e==="CHECKOUT"||e==="CART"?{color:r.emerald600,Icon:Le,label:e}:e==="DEVICE"||e==="HARDWARE"||e==="BLE"||e==="BLUETOOTH"||e==="NFC"||e==="SENSOR"?{color:r.slate600,Icon:Fe,label:e}:e==="LOCATION"||e==="GPS"||e==="GEO"?{color:r.emerald600,Icon:U,label:e}:e==="APP"?{color:r.indigo600Alt,Icon:Re,label:"APP"}:e==="UI"||e==="VIEW"||e==="THEME"||e==="STYLE"||e==="LAYOUT"?{color:r.pink600,Icon:$e,label:e}:e==="TEST"||e==="MOCK"||e==="SPEC"?{color:r.emerald500,Icon:Se,label:"TEST"}:e==="SAMPLE"||e==="BATCH"?{color:r.indigo600Alt,Icon:xe,label:e}:e==="CONFIG"||e==="ENV"||e==="SETTINGS"?{color:r.slate700,Icon:Me,label:e}:e==="DEBUG"||e==="TRACE"?{color:r.purpleText,Icon:ze,label:e}:e==="INFO"?{color:r.sky600,Icon:v,label:"INFO"}:e==="SUCCESS"||e==="OK"||e==="DONE"||e==="PASSED"?{color:r.green600,Icon:G,label:e}:e==="WARN"||e==="WARNING"?{color:r.amber600,Icon:Be,label:"WARN"}:e==="ERROR"||e==="CRASH"||e==="BUG"||e==="FATAL"||e==="EXCEPTION"||e==="FAIL"?{color:r.red600,Icon:Ae,label:e==="CRASH"||e==="BUG"||e==="FATAL"||e==="EXCEPTION"||e==="FAIL"?e:"ERROR"}:{color:r.slate600,Icon:Pe,label:e}};return<C style={{flexDirection:"column",gap:2}}>
|
|
2
|
+
<C style={{flexDirection:"row",gap:4,overflow:"hidden"}}>
|
|
3
|
+
{T.slice(0,2).map((I,e)=>{const m=w(I),M=m.Icon;return<C key={e}style={[o.prefixTag,{backgroundColor:`${m.color}12`,borderColor:`${m.color}30`}]}>
|
|
4
|
+
<M color={m.color}size={8.5}/>
|
|
5
|
+
<E style={[o.prefixTagText,{color:m.color}]}>
|
|
6
|
+
{m.label}
|
|
7
7
|
</E>
|
|
8
|
-
</
|
|
9
|
-
</
|
|
10
|
-
<L text={
|
|
11
|
-
</
|
|
12
|
-
<
|
|
13
|
-
<
|
|
8
|
+
</C>})}
|
|
9
|
+
</C>
|
|
10
|
+
<L text={D}search={t}style={B}numberOfLines={1}detectLinks={!1}/>
|
|
11
|
+
</C>}return<L text={y}search={t}style={B}numberOfLines={H||2}detectLinks={!1}/>};export const ConsoleLogCard=V.memo(function({item:t,searchStr:B="",onPress:N,testID:H,isSelected:P,onToggleSelect:A}){const{setSelectedLog:O}=ve(),{t:D}=K(),T=Z(t.message),w=t.message.toLowerCase().includes("[analytics error]"),I=V.useMemo(()=>{const S=oe(t.caller);if(!S)return null;const R=_(t.caller,!0);return{...R,display:S.display,fileName:S.fileName,lineNumber:S.lineNumber||R.lineNumber}},[t.caller]),m=(()=>{const S=(t.type||"log").toLowerCase(),R=(t.sourceMethod||S).toLowerCase();return w||S==="error"||R==="error"?{badgeColor:r.errorColor,border:r.errorColor,badgeBg:`${r.errorColor}18`,badgeText:r.errorColor,label:"ERROR",cardBg:r.errorCardBg,statusPillBg:`${r.errorColor}14`,statusPillBorder:`${r.errorColor}33`,statusPillText:r.errorColor,StatusIcon:He}:S==="warn"||R==="warn"?{badgeColor:r.darkOrange,border:r.darkOrange,badgeBg:`${r.darkOrange}18`,badgeText:r.darkOrange,label:"WARN",cardBg:r.warnCardBg,statusPillBg:`${r.darkOrange}14`,statusPillBorder:`${r.darkOrange}33`,statusPillText:r.darkOrange,StatusIcon:Ne}:S==="debug"||R==="debug"?{badgeColor:r.purple,border:r.purple,badgeBg:`${r.purple}18`,badgeText:r.purple,label:"DEBUG",cardBg:r.purpleTintBg,statusPillBg:`${r.purple}14`,statusPillBorder:`${r.purple}33`,statusPillText:r.purple,StatusIcon:F}:R==="info"||S==="info"&&R!=="log"?{badgeColor:r.sky600,border:r.sky600,badgeBg:`${r.sky600}18`,badgeText:r.sky600,label:"INFO",cardBg:r.blueTintBg,statusPillBg:`${r.sky600}14`,statusPillBorder:`${r.sky600}33`,statusPillText:r.sky600,StatusIcon:v}:{badgeColor:r.brandPurple,border:r.brandPurple,badgeBg:`${r.brandPurple}15`,badgeText:r.brandPurple,label:"LOG",cardBg:r.white,statusPillBg:`${r.brandPurple}12`,statusPillBorder:`${r.brandPurple}2E`,statusPillText:r.brandPurple,StatusIcon:G}})(),M=m.StatusIcon,z=T?q(T.data):null,j=()=>{N?N(t):O(t)},Ye=("sourceMethod"in t?t.sourceMethod:void 0)||t.type||"log";return<C style={o.container}>
|
|
12
|
+
<Ce testID={H}onPress={j}style={[o.card,{borderLeftWidth:3.5,borderLeftColor:m.border,backgroundColor:m.cardBg}]}>
|
|
13
|
+
<C style={o.cardBody}>
|
|
14
14
|
|
|
15
|
-
<
|
|
16
|
-
<
|
|
15
|
+
<C style={o.cardHeaderRow}>
|
|
16
|
+
<C style={o.cardHeaderLeft}>
|
|
17
|
+
{A&&t.id!=null&&<W testID={`inspector.console.checkbox.${t.id}`}onPress={S=>{S.stopPropagation(),A(t.id)}}hitSlop={8}style={[o.smallCheckbox,P&&o.smallCheckboxChecked]}>
|
|
18
|
+
{P&&<X width={9}height={9}viewBox="0 0 24 24"fill="none">
|
|
19
|
+
<J d="M20 6L9 17l-5-5"stroke={r.white}strokeWidth="4"strokeLinecap="round"strokeLinejoin="round"/>
|
|
20
|
+
</X>}
|
|
21
|
+
</W>}
|
|
22
|
+
|
|
17
23
|
<E style={o.serialNumber}>
|
|
18
24
|
#{t.id!=null?t.id+1:1}
|
|
19
25
|
</E>
|
|
20
26
|
|
|
21
27
|
|
|
22
|
-
<
|
|
23
|
-
<E style={o.methodBadgeText}>{
|
|
24
|
-
</
|
|
28
|
+
<C style={[o.methodBadge,{backgroundColor:m.badgeColor}]}>
|
|
29
|
+
<E style={o.methodBadgeText}>{m.label}</E>
|
|
30
|
+
</C>
|
|
25
31
|
|
|
26
32
|
|
|
27
|
-
{C
|
|
33
|
+
{T&&<C style={[o.chip,{backgroundColor:`${r.teal600}12`,borderColor:`${r.teal600}2E`}]}>
|
|
28
34
|
<E style={[o.chipText,{color:r.teal600}]}>
|
|
29
|
-
{Array.isArray(
|
|
35
|
+
{Array.isArray(T.data)?`Array[${T.data.length}]`:`Object{${Object.keys(T.data).length}}`}
|
|
30
36
|
</E>
|
|
31
|
-
</
|
|
37
|
+
</C>}
|
|
32
38
|
|
|
33
39
|
|
|
34
|
-
{"duplicateCount"in t&&t.duplicateCount!=null&&t.duplicateCount>1&&<
|
|
40
|
+
{"duplicateCount"in t&&t.duplicateCount!=null&&t.duplicateCount>1&&<C style={o.dupBadge}>
|
|
35
41
|
<E style={o.dupBadgeText}>
|
|
36
42
|
×{t.duplicateCount}
|
|
37
43
|
</E>
|
|
38
|
-
</
|
|
39
|
-
</
|
|
44
|
+
</C>}
|
|
45
|
+
</C>
|
|
40
46
|
|
|
41
47
|
|
|
42
|
-
<
|
|
43
|
-
<
|
|
44
|
-
</
|
|
45
|
-
</
|
|
48
|
+
<C style={o.cardHeaderRight}>
|
|
49
|
+
<Ie color={r.slate400}size={13}/>
|
|
50
|
+
</C>
|
|
51
|
+
</C>
|
|
46
52
|
|
|
47
53
|
|
|
48
|
-
<
|
|
49
|
-
{C
|
|
50
|
-
{
|
|
51
|
-
{
|
|
52
|
-
</
|
|
53
|
-
</
|
|
54
|
+
<C style={o.messageBox}>
|
|
55
|
+
{T?<C style={o.jsonPreviewRow}>
|
|
56
|
+
{T.header?<L text={T.header}search={B}style={o.messageText}detectLinks={!1}numberOfLines={1}/>:null}
|
|
57
|
+
{z&&<L text={z.text.replace(/\s+/g," ")}search={B}style={o.jsonPreviewText}detectLinks={!1}numberOfLines={T.header?2:3}/>}
|
|
58
|
+
</C>:je(t.message,B,o.messageText,o.highlight,3)}
|
|
59
|
+
</C>
|
|
54
60
|
|
|
55
61
|
|
|
56
|
-
<
|
|
57
|
-
<
|
|
58
|
-
<
|
|
59
|
-
|
|
62
|
+
<C style={o.cardFooterRow}>
|
|
63
|
+
<C style={o.footerLeft}>
|
|
64
|
+
<C style={o.cardDateRow}>
|
|
65
|
+
<Ue color={r.grayTextWeak}size={10}/>
|
|
60
66
|
<E style={o.cardDateText}numberOfLines={1}>
|
|
61
|
-
{
|
|
67
|
+
{Q(t.timestamp)}
|
|
62
68
|
</E>
|
|
63
|
-
</
|
|
69
|
+
</C>
|
|
64
70
|
|
|
65
|
-
{
|
|
66
|
-
{
|
|
67
|
-
<E style={[o.extBadgeText,{color:
|
|
68
|
-
{
|
|
71
|
+
{I&&<W onPress={S=>{S.stopPropagation?.(),ee(I.rawFilePath||I.fullPath||I.fileName,I.lineNumber,I.columnNumber)}}hitSlop={8}style={o.callerChip}>
|
|
72
|
+
{I.fileExt&&I.fileExt!=="other"&&<C style={[o.extBadge,{backgroundColor:I.fileExt==="tsx"||I.fileExt==="ts"?`${r.brandPurple}22`:`${r.teal600}22`}]}>
|
|
73
|
+
<E style={[o.extBadgeText,{color:I.fileExt==="tsx"||I.fileExt==="ts"?r.brandPurple:r.teal600}]}>
|
|
74
|
+
{I.fileExt.toUpperCase()}
|
|
69
75
|
</E>
|
|
70
|
-
</
|
|
76
|
+
</C>}
|
|
71
77
|
<E style={o.callerChipText}numberOfLines={1}ellipsizeMode="middle">
|
|
72
|
-
{
|
|
78
|
+
{I.display}
|
|
73
79
|
</E>
|
|
74
|
-
<
|
|
75
|
-
</
|
|
76
|
-
</
|
|
80
|
+
<Te color={r.sky600}size={8}/>
|
|
81
|
+
</W>}
|
|
82
|
+
</C>
|
|
77
83
|
|
|
78
|
-
<
|
|
79
|
-
{C
|
|
80
|
-
<
|
|
84
|
+
<C style={o.footerRight}>
|
|
85
|
+
{T&&<C style={o.metaStatChip}>
|
|
86
|
+
<Ge color={r.purple}size={8.5}/>
|
|
81
87
|
<E style={o.metaStatText}>
|
|
82
|
-
{
|
|
88
|
+
{re(T.data)}
|
|
83
89
|
</E>
|
|
84
|
-
</
|
|
90
|
+
</C>}
|
|
85
91
|
|
|
86
|
-
{
|
|
92
|
+
{w&&<C style={[o.chip,{backgroundColor:`${r.skyBlue}15`,borderColor:`${r.skyBlue}30`}]}>
|
|
87
93
|
<E style={[o.chipText,{color:r.skyBlue}]}>
|
|
88
|
-
{
|
|
94
|
+
{D("console.analyticsBadge")||"ANALYTICS"}
|
|
89
95
|
</E>
|
|
90
|
-
</
|
|
91
|
-
</
|
|
92
|
-
</
|
|
93
|
-
</
|
|
94
|
-
</
|
|
95
|
-
</
|
|
96
|
+
</C>}
|
|
97
|
+
</C>
|
|
98
|
+
</C>
|
|
99
|
+
</C>
|
|
100
|
+
</Ce>
|
|
101
|
+
</C>});const o=Y.create({container:{paddingHorizontal:8,paddingVertical:4,height:148,justifyContent:"center"},card:{height:140,alignSelf:"stretch",borderRadius:10,overflow:"hidden",borderWidth:1,borderColor:r.dividerColor,shadowColor:r.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:4,flexShrink:0},serialNumber:{fontFamily:x.interBold,color:r.grayTextWeak,fontSize:10},methodBadge:{paddingHorizontal:6,paddingVertical:2,borderRadius:5,alignItems:"center",justifyContent:"center"},methodBadgeText:{fontFamily:x.interBold,fontSize:9.5,lineHeight:12,letterSpacing:.5,color:r.white},chip:{paddingHorizontal:5.5,paddingVertical:1.5,borderRadius:4,borderWidth:1},chipText:{fontFamily:x.interBold,fontSize:9,lineHeight:12},dupBadge:{backgroundColor:`${r.purple}14`,borderColor:`${r.purple}2E`,borderWidth:1,paddingHorizontal:4.5,paddingVertical:1,borderRadius:3.5},dupBadgeText:{fontFamily:x.interBold,fontSize:8.5,color:r.purple},statusPill:{flexDirection:"row",alignItems:"center",gap:3.5,paddingHorizontal:6,paddingVertical:2,borderRadius:6,borderWidth:1,flexShrink:0},statusPillText:{fontFamily:x.interBold,fontSize:9.5,lineHeight:12},messageBox:{backgroundColor:r.grayBackground,borderRadius:7,borderWidth:1,borderColor:r.dividerColor,paddingHorizontal:7,paddingVertical:5,height:68,minHeight:68,maxHeight:68,justifyContent:"center",gap:2,overflow:"hidden"},messageText:{fontFamily:x.interMedium,fontSize:12,color:r.primaryBlack,lineHeight:17},highlight:{backgroundColor:r.yellowHighlight,color:r.primaryBlack,borderRadius:2},jsonPreviewRow:{flexDirection:"column",justifyContent:"center",gap:2},jsonPreviewText:{fontFamily:x.interMedium,fontSize:11,color:r.teal700,lineHeight:15},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:x.interRegular,fontSize:10,lineHeight:13,color:r.slate400},callerChip:{flexDirection:"row",alignItems:"center",gap:3,backgroundColor:r.skySoftBg,borderColor:r.skySoftBorder,borderWidth:1,paddingHorizontal:5,paddingVertical:1.5,borderRadius:4,flexShrink:1,minWidth:0},extBadge:{borderRadius:3,paddingHorizontal:3,paddingVertical:.5},extBadgeText:{fontFamily:x.interBold,fontSize:7.5},callerChipText:{color:r.skySoftText,fontSize:9,lineHeight:12,fontFamily:x.interBold},metaStatChip:{flexDirection:"row",alignItems:"center",gap:3,backgroundColor:r.violetSoftBg,borderColor:r.violetSoftBorder,borderWidth:1,paddingHorizontal:5.5,paddingVertical:1.5,borderRadius:4},metaStatText:{fontFamily:x.interBold,color:r.violetSoftText,fontSize:9,lineHeight:12},prefixTag:{flexDirection:"row",alignItems:"center",gap:2.5,paddingHorizontal:5,paddingVertical:1.5,borderRadius:3.5,borderWidth:1},prefixTagText:{fontFamily:x.interBold,fontSize:8.5,letterSpacing:.3},bottomAccentBar:{height:2.5,width:"100%",borderRadius:1.5,marginTop:2},smallCheckbox:{width:14,height:14,borderRadius:3.5,borderWidth:1.2,borderColor:r.grayBorderSecondary,backgroundColor:r.primaryLight,alignItems:"center",justifyContent:"center",marginRight:2},smallCheckboxChecked:{backgroundColor:r.purple,borderColor:r.purple}});function Ke(y,t){return y.item===t.item&&y.searchStr===t.searchStr&&y.onPress===t.onPress&&y.isSelected===t.isSelected&&y.onToggleSelect===t.onToggleSelect}export const MemoizedConsoleLogCard=V.memo(ConsoleLogCard,Ke);export default MemoizedConsoleLogCard;
|
|
@@ -1,17 +1,17 @@
|
|
|
1
|
-
import{Component as v}from"react";import{StyleSheet as _,Text as T,View as C,ScrollView as G,TouchableOpacity as O,SafeAreaView as J}from"react-native";import{AppColors as e}from"../styles/AppColors";import{AppFonts as w}from"../styles/AppFonts";import{copyToClipboard as U}from"../helpers";import{t as S}from"../i18n";import{WarningTriangleIcon as N,CopyIcon as H,RefreshCcwIcon as
|
|
2
|
-
`),B=[];for(const
|
|
1
|
+
import{Component as v}from"react";import{StyleSheet as _,Text as T,View as C,ScrollView as G,TouchableOpacity as O,SafeAreaView as J}from"react-native";import{AppColors as e}from"../styles/AppColors";import{AppFonts as w}from"../styles/AppFonts";import{copyToClipboard as U}from"../helpers";import{t as S}from"../i18n";import{WarningTriangleIcon as N,CopyIcon as H,RefreshCcwIcon as W,ClearIcon as K,CircleAlertIcon as Q}from"./NetworkIcons";import{handleInterceptedCrash as X}from"../customHooks/crashHandler";import{CrashType as Y}from"../types/enums";import{showNativeFloatingButton as Z,setNativeFloatingButtonBadge as ee}from"../native/NativeInspector";function A(E){if(!E)return{rootFrame:null,frames:[]};const k=E.split(`
|
|
2
|
+
`),B=[];for(const V of k){if(V.includes("ErrorBoundary")||V.includes("getDerivedStateFromError")||V.includes("componentDidCatch")||V.includes("handleInterceptedCrash"))continue;const I=V.match(/^([^@]*)@(.*):(\d+):(\d+)$/);if(I){const[,z,R,$,D]=I,j=R.split("?")[0].split("/").pop()||R,M=!R.includes("node_modules")&&!R.includes("Libraries/Core");B.push({method:z.trim()||"anonymous",file:j,fullPath:R.split("?")[0],line:$,column:D,isProjectFile:M});continue}const L=V.match(/^\s*at\s+(.+)\s+\((.+):(\d+):(\d+)\)$/);if(L){const[,z,R,$,D]=L,j=R.split("?")[0].split("/").pop()||R,M=!R.includes("node_modules")&&!R.includes("Libraries/Core");B.push({method:z.trim(),file:j,fullPath:R.split("?")[0],line:$,column:D,isProjectFile:M});continue}const P=V.match(/^\s*at\s+(.+):(\d+):(\d+)$/);if(P){const[,z,R,$]=P,D=z.split("?")[0].split("/").pop()||z,j=!z.includes("node_modules")&&!z.includes("Libraries/Core");B.push({method:"anonymous",file:D,fullPath:z.split("?")[0],line:R,column:$,isProjectFile:j})}}return{rootFrame:B.find(V=>V.isProjectFile)||B[0]||null,frames:B}}export class ErrorBoundary extends v{constructor(){super(...arguments),this.state={hasError:!1,error:null},this.handleReset=()=>{this.setState({hasError:!1,error:null}),this.props.onReset&&this.props.onReset()},this.handleCopyTrace=()=>{const k=this.state.error;if(k){const{rootFrame:B}=A(k.stack||""),F=`\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500
|
|
3
3
|
IN-APP INSPECTOR \u2022 INTERCEPTED CRASH REPORT
|
|
4
4
|
\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500
|
|
5
|
-
Error: ${
|
|
6
|
-
Message: ${
|
|
5
|
+
Error: ${k.name||"Error"}
|
|
6
|
+
Message: ${k.message}
|
|
7
7
|
${B?`Location: ${B.file}:${B.line}:${B.column}
|
|
8
8
|
Method: ${B.method}
|
|
9
9
|
Path: ${B.fullPath}`:""}
|
|
10
10
|
Timestamp: ${new Date().toISOString()}
|
|
11
11
|
|
|
12
12
|
Stack Trace:
|
|
13
|
-
${
|
|
14
|
-
\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500`;U(F,S("errors.errorReport"))}}}static getDerivedStateFromError(
|
|
13
|
+
${k.stack||"No stack trace available"}
|
|
14
|
+
\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500`;U(F,S("errors.errorReport"))}}}static getDerivedStateFromError(k){return{hasError:!0,error:k}}componentDidCatch(k,B){try{const F=k?.stack||B?.componentStack||"",V=X(k,F,!1,Y.Render,B?.componentStack);V&&!V.id.startsWith("crash_ignored_")&&(Z(),ee(!0))}catch{}}render(){const{hasError:k,error:B}=this.state;if(!k||!B)return this.props.children;const{rootFrame:F,frames:V}=A(B.stack||""),I=B.name||S("errors.title"),L=I.includes("Syntax")||I.includes("Type")||I.includes("Reference");return this.props.fallbackType==="inline"?<C style={t.inlineContainer}>
|
|
15
15
|
<C style={t.inlineHeader}>
|
|
16
16
|
<N color={e.red600}size={18}/>
|
|
17
17
|
<C style={{flex:1}}>
|
|
@@ -25,7 +25,7 @@ ${V.stack||"No stack trace available"}
|
|
|
25
25
|
</C>
|
|
26
26
|
<C style={t.inlineActions}>
|
|
27
27
|
<O onPress={this.handleReset}style={t.inlineBtn}activeOpacity={.7}>
|
|
28
|
-
<
|
|
28
|
+
<W size={12}color={e.white}/>
|
|
29
29
|
<T style={t.inlineBtnText}>{S("errors.retry")}</T>
|
|
30
30
|
</O>
|
|
31
31
|
<O onPress={this.handleCopyTrace}style={t.inlineCopyBtn}activeOpacity={.7}>
|
|
@@ -98,11 +98,11 @@ ${V.stack||"No stack trace available"}
|
|
|
98
98
|
<C style={t.stackCardHeader}>
|
|
99
99
|
<T style={t.cardHeaderTitle}>{S("errors.callStack")}</T>
|
|
100
100
|
<T style={t.frameCountText}>
|
|
101
|
-
{S("errors.framesCount",{count:
|
|
101
|
+
{S("errors.framesCount",{count:V.length})}
|
|
102
102
|
</T>
|
|
103
103
|
</C>
|
|
104
104
|
|
|
105
|
-
{
|
|
105
|
+
{V.slice(0,8).map((P,z)=><C key={z}style={[t.frameItem,P.isProjectFile&&t.frameItemProject]}>
|
|
106
106
|
<C style={t.frameNumBadge}>
|
|
107
107
|
<T style={[t.frameNumText,P.isProjectFile&&{color:e.sky400}]}>
|
|
108
108
|
#{z+1}
|
|
@@ -126,7 +126,7 @@ ${V.stack||"No stack trace available"}
|
|
|
126
126
|
|
|
127
127
|
<C style={t.footer}>
|
|
128
128
|
<O onPress={this.handleReset}style={t.retryBtn}activeOpacity={.8}>
|
|
129
|
-
<
|
|
129
|
+
<W size={16}color={e.white}/>
|
|
130
130
|
<T style={t.retryBtnText}>{S("errors.tryAgainRecover")}</T>
|
|
131
131
|
</O>
|
|
132
132
|
|
|
@@ -1,76 +1,81 @@
|
|
|
1
|
-
import F,{useCallback as
|
|
2
|
-
<Ae testID={`inspector.console.item.${t}`}item={e}searchStr={
|
|
3
|
-
</Le>,[
|
|
1
|
+
import F,{useCallback as R,useMemo as $,useRef as pe}from"react";import{FlatList as Se,Pressable as Ce,ScrollView as J,Text as A,TextInput as Ie,View as S}from"react-native";import{useInspector as we}from"./InspectorContext";import{useTranslation as Te}from"../../i18n";import P from"../TouchableScale";import Le from"../AnimatedEntrance";import{ConsoleLogCard as Ae}from"../ConsoleLogCard";import Ee from"../EmptyState";import Ve from"../EndOfListFooter";import Be from"./ConsoleExportModal";import h from"../../styles";import{AppColors as o}from"../../styles/AppColors";import{AppFonts as z}from"../../styles/AppFonts";import{LogFilter as E}from"../../types";import{SearchIcon as Fe,ClearIcon as Pe,SortArrowIcon as He,TrashIcon as Re,LayersIcon as $e,UserIcon as De,InfoCircleIcon as We,WarningTriangleIcon as Oe,ErrorCircleIcon as Me,AnalyticsIcon as Ne,ExportIcon as Ue}from"../NetworkIcons";const Z=10,ve=F.memo(()=>{const{t:w}=Te(),{logSearch:C,setLogSearch:V,logSortOrder:ee,setLogSortOrder:oe,handleDelete:te,logFilters:b,setLogFilters:D,logCounts:x,filteredConsoleLogs:I,visibleConsoleLogs:W,maxConsoleLogs:O,setSelectedLog:U,selectedConsoleLogs:H,toggleSelectConsoleLog:v}=we(),le=O||100,G=pe(null),[_,Q]=F.useState(le),[re,Y]=F.useState(!1);F.useEffect(()=>{Q(O||100),G.current?.scrollToOffset({offset:0,animated:!1})},[C,b,O]);const M=$(()=>I.slice(0,_),[I,_]),K=R(e=>{U(e)},[U]),ne=R(({item:e,index:t})=><Le index={t}distance={8}>
|
|
2
|
+
<Ae testID={`inspector.console.item.${t}`}item={e}searchStr={C}onPress={K}isSelected={H.has(e.id)}onToggleSelect={v}/>
|
|
3
|
+
</Le>,[C,K,H,v]),ie=R((e,t)=>({length:148,offset:148*t,index:t}),[]),se=R((e,t)=>e?.id?.toString()??t.toString(),[]),ae=$(()=>{const e=W.length,t=I.length;if(b.has("all")||!Array.from(b).some(B=>B!=="all"))return<S style={{paddingHorizontal:8,paddingTop:8,paddingBottom:3}}>
|
|
4
4
|
<A style={{fontFamily:z.interMedium,fontSize:11,color:o.grayTextWeak,letterSpacing:.2}}>
|
|
5
5
|
{t===e?`Showing ${e} logs`:`Showing ${t} of ${e} logs`}
|
|
6
6
|
</A>
|
|
7
|
-
</S>;{const B=Array.from(
|
|
7
|
+
</S>;{const B=Array.from(b).filter(T=>T!=="all").map(T=>T==="user-log"?"Log":T==="analytics"?"Analytics":T.charAt(0).toUpperCase()+T.slice(1));return<S style={{paddingHorizontal:12,paddingTop:8,paddingBottom:3}}>
|
|
8
8
|
<A style={{fontFamily:z.interMedium,fontSize:11,color:o.grayTextWeak,letterSpacing:.2}}>
|
|
9
9
|
Filtered by {B.join(", ")} ({t} of {e} logs)
|
|
10
10
|
</A>
|
|
11
|
-
</S>}},[
|
|
11
|
+
</S>}},[W.length,I.length,b]),[N,X]=F.useState(!1),ce=$(()=>["[AXIOS]","[API]","[GRAPHQL]","[REDUX]","[ANALYTICS]","[AUTH]","[NAV]","[STORAGE]","[PERF]","[WS]","[PUSH]","[PAYMENT]","[SYNC]","[BLE]","[LOCATION]","[TEST]","[DEBUG]"],[]),de=$(()=>[{id:E.All,label:w("common.all","All"),count:x.all?.split("/")?.[0]??"0",color:o.purple,Icon:$e},{id:E.UserLog,label:w("console.log","Log"),count:x["user-log"]?.split("/")?.[0]??"0",color:o.teal600,Icon:De},{id:E.Info,label:w("console.info","Info"),count:x.info?.split("/")?.[0]??"0",color:o.sky600,Icon:We},{id:E.Warn,label:w("console.warning","Warn"),count:x.warn?.split("/")?.[0]??"0",color:o.amber600,Icon:Oe},{id:E.Error,label:w("console.error","Error"),count:x.error?.split("/")?.[0]??"0",color:o.errorColor,Icon:Me},{id:E.Analytics,label:w("console.analytics","Analytics"),count:x.analytics?.split("/")?.[0]??"0",color:o.violet600,Icon:Ne}],[x,w]);return<S style={{flex:1}}>
|
|
12
12
|
<S style={{backgroundColor:o.white,borderBottomWidth:1,borderBottomColor:o.dividerColor,paddingBottom:6}}>
|
|
13
|
-
<S style={[
|
|
14
|
-
<S style={[
|
|
15
|
-
<Fe color={
|
|
16
|
-
<Ie placeholder={
|
|
17
|
-
{
|
|
13
|
+
<S style={[h.toolbarRow,{marginTop:12,marginBottom:8}]}>
|
|
14
|
+
<S style={[h.searchContainer,N&&{borderColor:o.purple,borderWidth:1.5}]}>
|
|
15
|
+
<Fe color={N?o.purple:o.grayTextWeak}size={16}/>
|
|
16
|
+
<Ie placeholder={w("console.searchPlaceholder")}placeholderTextColor={o.grayTextWeak}value={C}onChangeText={V}onFocus={()=>X(!0)}onBlur={()=>X(!1)}style={h.searchInput}autoCorrect={!1}autoCapitalize="none"/>
|
|
17
|
+
{C.length>0&&<S style={{flexDirection:"row",alignItems:"center",gap:4}}>
|
|
18
18
|
<S style={{backgroundColor:`${o.purple}20`,borderRadius:10,paddingHorizontal:6,paddingVertical:2}}>
|
|
19
19
|
<A style={{color:o.purple,fontSize:10,fontFamily:z.interBold}}>
|
|
20
|
-
{
|
|
20
|
+
{I.length}
|
|
21
21
|
</A>
|
|
22
22
|
</S>
|
|
23
|
-
<Ce onPress={()=>V("")}hitSlop={10}style={
|
|
23
|
+
<Ce onPress={()=>V("")}hitSlop={10}style={h.clearBtn}>
|
|
24
24
|
<Pe color={o.grayTextWeak}size={14}/>
|
|
25
25
|
</Ce>
|
|
26
26
|
</S>}
|
|
27
27
|
</S>
|
|
28
28
|
|
|
29
|
-
<S style={
|
|
30
|
-
<P style={[
|
|
29
|
+
<S style={h.toolbarRight}>
|
|
30
|
+
<P style={[h.toolbarBtn,{borderColor:`${o.purple}38`,backgroundColor:`${o.purple}0F`}]}onPress={()=>Y(!0)}hitSlop={6}testID="inspector.console.exportBtn">
|
|
31
31
|
<Ue color={o.purple}size={15}/>
|
|
32
32
|
</P>
|
|
33
|
-
<P style={
|
|
34
|
-
<He color={o.grayTextStrong}size={18}direction={
|
|
33
|
+
<P style={h.toolbarBtn}onPress={()=>oe(e=>e==="newest"?"oldest":"newest")}hitSlop={10}>
|
|
34
|
+
<He color={o.grayTextStrong}size={18}direction={ee==="newest"?"down":"up"}/>
|
|
35
35
|
</P>
|
|
36
|
-
<P style={[
|
|
36
|
+
<P style={[h.toolbarBtn,{borderColor:`${o.errorColor}38`,backgroundColor:`${o.errorColor}0F`}]}onPress={te}hitSlop={6}>
|
|
37
37
|
<Re color={o.errorColor}size={15}/>
|
|
38
|
+
{H.size>0&&<S style={h.trashBadge}>
|
|
39
|
+
<A style={h.trashBadgeText}>
|
|
40
|
+
{H.size}
|
|
41
|
+
</A>
|
|
42
|
+
</S>}
|
|
38
43
|
</P>
|
|
39
44
|
</S>
|
|
40
45
|
</S>
|
|
41
46
|
|
|
42
47
|
|
|
43
|
-
{(
|
|
44
|
-
{
|
|
48
|
+
{(N||C.length>0)&&<J horizontal showsHorizontalScrollIndicator={!1}style={{marginBottom:6,maxHeight:30}}contentContainerStyle={{paddingHorizontal:8,flexDirection:"row",alignItems:"center",gap:6}}>
|
|
49
|
+
{ce.map(e=>{const t=C.includes(e);return<P key={e}onPress={()=>{V(t?y=>y.replace(e,"").trim():y=>y?`${y} ${e}`.trim():e)}}>
|
|
45
50
|
<S style={{paddingHorizontal:8,paddingVertical:3,borderRadius:6,backgroundColor:t?o.purple:`${o.purple}14`,borderWidth:1,borderColor:t?o.purple:`${o.purple}30`}}>
|
|
46
51
|
<A style={{fontFamily:z.interBold,fontSize:10,color:t?o.white:o.purple}}>
|
|
47
52
|
{e}
|
|
48
53
|
</A>
|
|
49
54
|
</S>
|
|
50
55
|
</P>})}
|
|
51
|
-
</
|
|
56
|
+
</J>}
|
|
52
57
|
|
|
53
58
|
|
|
54
59
|
<S style={{flexDirection:"row",alignItems:"center",marginBottom:8,paddingHorizontal:8,gap:6}}>
|
|
55
|
-
<
|
|
56
|
-
{
|
|
57
|
-
<S style={{flexDirection:"row",alignItems:"center",paddingHorizontal:9,paddingVertical:4.5,borderRadius:8,backgroundColor:t?
|
|
60
|
+
<J horizontal showsHorizontalScrollIndicator={!1}style={{flex:1}}contentContainerStyle={{flexDirection:"row",alignItems:"center",gap:6,paddingRight:6}}>
|
|
61
|
+
{de.map(e=>{const t=e.id==="all"?b.has("all"):b.has(e.id)&&!b.has("all"),y=e.color||o.purple,B=t?o.white:y,T=e.Icon;return<P testID={`inspector.console.filter.${e.id}`}key={e.id}onPress={()=>{e.id==="all"?D(new Set(["all"])):D(ge=>{const L=new Set(ge);return L.delete("all"),L.has(e.id)?L.delete(e.id):L.add(e.id),L.size===0&&L.add("all"),L})}}>
|
|
62
|
+
<S style={{flexDirection:"row",alignItems:"center",paddingHorizontal:9,paddingVertical:4.5,borderRadius:8,backgroundColor:t?y:`${y}12`,borderWidth:1,borderColor:t?y:`${y}30`,gap:5}}>
|
|
58
63
|
<T size={11}color={B}/>
|
|
59
64
|
<A style={{fontFamily:z.interBold,fontSize:10.5,color:t?o.white:o.primaryBlack}}>
|
|
60
65
|
{e.label}
|
|
61
66
|
</A>
|
|
62
|
-
<S style={{backgroundColor:t?"rgba(255,255,255,0.25)":`${
|
|
63
|
-
<A style={{fontFamily:z.interBold,fontSize:9,color:t?o.white:
|
|
67
|
+
<S style={{backgroundColor:t?"rgba(255,255,255,0.25)":`${y}20`,paddingHorizontal:5,paddingVertical:1,borderRadius:8}}>
|
|
68
|
+
<A style={{fontFamily:z.interBold,fontSize:9,color:t?o.white:y}}>
|
|
64
69
|
{e.count}
|
|
65
70
|
</A>
|
|
66
71
|
</S>
|
|
67
72
|
</S>
|
|
68
73
|
</P>})}
|
|
69
|
-
</
|
|
74
|
+
</J>
|
|
70
75
|
</S>
|
|
71
76
|
</S>
|
|
72
77
|
|
|
73
|
-
<Se ref={
|
|
78
|
+
<Se ref={G}data={M}keyExtractor={se}ListHeaderComponent={ae}renderItem={ne}getItemLayout={ie}initialNumToRender={10}maxToRenderPerBatch={8}windowSize={5}updateCellsBatchingPeriod={40}removeClippedSubviews={!0}renderToHardwareTextureAndroid={!0}showsVerticalScrollIndicator={!1}nestedScrollEnabled={!0}ListEmptyComponent={<Ee isSearch={C.length>0||!b.has("all")}searchQuery={C}customTitle={C.length>0?"No matching console logs":"No console logs"}onClearSearch={()=>{V(""),D(new Set(["all"]))}}/>}ListFooterComponent={I.length>0?<Ve count={M.length}totalCount={I.length}label="logs"loadMoreStep={Z}hasMore={M.length<I.length}onLoadMore={()=>Q(e=>e+Z)}/>:null}style={{flex:1}}contentContainerStyle={[h.listContent,{flexGrow:1}]}keyboardShouldPersistTaps="handled"/>
|
|
74
79
|
|
|
75
|
-
<Be visible={
|
|
80
|
+
<Be visible={re}onClose={()=>Y(!1)}filteredLogs={I}allLogs={W}/>
|
|
76
81
|
</S>});export default ve;
|