react-native-debug-toolkit 3.5.0 → 3.5.1

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.
Files changed (100) hide show
  1. package/README.md +40 -26
  2. package/README.zh-CN.md +52 -38
  3. package/android/src/main/java/com/reactnativedebugtoolkit/DebugToolkitNativeLogsModule.java +146 -0
  4. package/android/src/main/java/com/reactnativedebugtoolkit/ReactNativeDebugToolkitPackage.java +5 -3
  5. package/ios/DebugToolkitNativeLogs.mm +92 -0
  6. package/lib/commonjs/core/initialize.js +3 -1
  7. package/lib/commonjs/core/initialize.js.map +1 -1
  8. package/lib/commonjs/features/nativeLogs/NativeLogTab.js +156 -0
  9. package/lib/commonjs/features/nativeLogs/NativeLogTab.js.map +1 -0
  10. package/lib/commonjs/features/nativeLogs/index.js +97 -0
  11. package/lib/commonjs/features/nativeLogs/index.js.map +1 -0
  12. package/lib/commonjs/features/nativeLogs/nativeLogsBridge.js +71 -0
  13. package/lib/commonjs/features/nativeLogs/nativeLogsBridge.js.map +1 -0
  14. package/lib/commonjs/features/network/NetworkLogTab.js +5 -8
  15. package/lib/commonjs/features/network/NetworkLogTab.js.map +1 -1
  16. package/lib/commonjs/features/sessionHistory/SessionHistoryTab.js +2 -0
  17. package/lib/commonjs/features/sessionHistory/SessionHistoryTab.js.map +1 -1
  18. package/lib/commonjs/features/sessionHistory/index.js +2 -1
  19. package/lib/commonjs/features/sessionHistory/index.js.map +1 -1
  20. package/lib/commonjs/index.js +7 -0
  21. package/lib/commonjs/index.js.map +1 -1
  22. package/lib/commonjs/ui/DebugView.js +1 -0
  23. package/lib/commonjs/ui/DebugView.js.map +1 -1
  24. package/lib/commonjs/ui/panel/FeatureIntroCard.js +49 -29
  25. package/lib/commonjs/ui/panel/FeatureIntroCard.js.map +1 -1
  26. package/lib/commonjs/ui/panel/FeatureRail.js +3 -3
  27. package/lib/commonjs/ui/panel/FeatureRail.js.map +1 -1
  28. package/lib/commonjs/ui/panel/FloatPanelView.js +4 -32
  29. package/lib/commonjs/ui/panel/FloatPanelView.js.map +1 -1
  30. package/lib/commonjs/utils/SessionManager.js +1 -1
  31. package/lib/commonjs/utils/SessionManager.js.map +1 -1
  32. package/lib/module/core/initialize.js +3 -1
  33. package/lib/module/core/initialize.js.map +1 -1
  34. package/lib/module/features/nativeLogs/NativeLogTab.js +151 -0
  35. package/lib/module/features/nativeLogs/NativeLogTab.js.map +1 -0
  36. package/lib/module/features/nativeLogs/index.js +91 -0
  37. package/lib/module/features/nativeLogs/index.js.map +1 -0
  38. package/lib/module/features/nativeLogs/nativeLogsBridge.js +63 -0
  39. package/lib/module/features/nativeLogs/nativeLogsBridge.js.map +1 -0
  40. package/lib/module/features/network/NetworkLogTab.js +5 -8
  41. package/lib/module/features/network/NetworkLogTab.js.map +1 -1
  42. package/lib/module/features/sessionHistory/SessionHistoryTab.js +2 -0
  43. package/lib/module/features/sessionHistory/SessionHistoryTab.js.map +1 -1
  44. package/lib/module/features/sessionHistory/index.js +2 -1
  45. package/lib/module/features/sessionHistory/index.js.map +1 -1
  46. package/lib/module/index.js +1 -1
  47. package/lib/module/index.js.map +1 -1
  48. package/lib/module/ui/DebugView.js +1 -0
  49. package/lib/module/ui/DebugView.js.map +1 -1
  50. package/lib/module/ui/panel/FeatureIntroCard.js +50 -30
  51. package/lib/module/ui/panel/FeatureIntroCard.js.map +1 -1
  52. package/lib/module/ui/panel/FeatureRail.js +3 -3
  53. package/lib/module/ui/panel/FeatureRail.js.map +1 -1
  54. package/lib/module/ui/panel/FloatPanelView.js +5 -33
  55. package/lib/module/ui/panel/FloatPanelView.js.map +1 -1
  56. package/lib/module/utils/SessionManager.js +1 -1
  57. package/lib/module/utils/SessionManager.js.map +1 -1
  58. package/lib/typescript/src/core/initialize.d.ts +2 -0
  59. package/lib/typescript/src/core/initialize.d.ts.map +1 -1
  60. package/lib/typescript/src/features/nativeLogs/NativeLogTab.d.ts +4 -0
  61. package/lib/typescript/src/features/nativeLogs/NativeLogTab.d.ts.map +1 -0
  62. package/lib/typescript/src/features/nativeLogs/index.d.ts +12 -0
  63. package/lib/typescript/src/features/nativeLogs/index.d.ts.map +1 -0
  64. package/lib/typescript/src/features/nativeLogs/nativeLogsBridge.d.ts +11 -0
  65. package/lib/typescript/src/features/nativeLogs/nativeLogsBridge.d.ts.map +1 -0
  66. package/lib/typescript/src/features/network/NetworkLogTab.d.ts.map +1 -1
  67. package/lib/typescript/src/features/sessionHistory/SessionHistoryTab.d.ts.map +1 -1
  68. package/lib/typescript/src/index.d.ts +3 -1
  69. package/lib/typescript/src/index.d.ts.map +1 -1
  70. package/lib/typescript/src/types/feature.d.ts +1 -1
  71. package/lib/typescript/src/types/feature.d.ts.map +1 -1
  72. package/lib/typescript/src/types/index.d.ts +1 -1
  73. package/lib/typescript/src/types/index.d.ts.map +1 -1
  74. package/lib/typescript/src/types/logs.d.ts +15 -0
  75. package/lib/typescript/src/types/logs.d.ts.map +1 -1
  76. package/lib/typescript/src/ui/DebugView.d.ts.map +1 -1
  77. package/lib/typescript/src/ui/panel/FeatureIntroCard.d.ts +4 -1
  78. package/lib/typescript/src/ui/panel/FeatureIntroCard.d.ts.map +1 -1
  79. package/lib/typescript/src/ui/panel/FloatPanelView.d.ts.map +1 -1
  80. package/lib/typescript/src/utils/SessionManager.d.ts +1 -1
  81. package/lib/typescript/src/utils/SessionManager.d.ts.map +1 -1
  82. package/node/daemon/src/console/console.html +18 -0
  83. package/node/mcp/src/logs.js +1 -1
  84. package/package.json +1 -1
  85. package/src/core/initialize.ts +5 -0
  86. package/src/features/nativeLogs/NativeLogTab.tsx +66 -0
  87. package/src/features/nativeLogs/index.ts +94 -0
  88. package/src/features/nativeLogs/nativeLogsBridge.ts +51 -0
  89. package/src/features/network/NetworkLogTab.tsx +3 -4
  90. package/src/features/sessionHistory/SessionHistoryTab.tsx +2 -0
  91. package/src/features/sessionHistory/index.ts +2 -2
  92. package/src/index.ts +5 -0
  93. package/src/types/feature.ts +1 -0
  94. package/src/types/index.ts +3 -0
  95. package/src/types/logs.ts +17 -0
  96. package/src/ui/DebugView.tsx +1 -0
  97. package/src/ui/panel/FeatureIntroCard.tsx +47 -27
  98. package/src/ui/panel/FeatureRail.tsx +3 -3
  99. package/src/ui/panel/FloatPanelView.tsx +3 -34
  100. package/src/utils/SessionManager.ts +2 -2
@@ -1 +1 @@
1
- {"version":3,"names":["SESSION_INDEX_KEY","DEFAULT_MAX_SESSIONS","DEFAULT_FEATURE_KEYS","randomHex","Math","floor","random","toString","padStart","createSession","startedAt","Date","now","id","isLogSession","value","Boolean","parseSessionIndex","raw","parsed","JSON","parse","Array","isArray","sessions","currentSessionId","filter","maxSessions","compareNewestFirst","left","right","SessionManager","constructor","storage","options","currentSession","max","featureKeys","length","initialize","existing","getItem","byId","Map","set","session","from","values","sort","retained","slice","removed","index","setItem","stringify","cleanupSessionLogs","getCurrentSession","getSessionHistory","getLogStorageKey","featureKey","sessionId","loadSessionLogs","getSessionLogCount","clearCurrentSessionLogs","cleanupOldSessions","removeItem"],"sourceRoot":"../../../src","sources":["utils/SessionManager.ts"],"mappings":"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","ignoreList":[]}
1
+ {"version":3,"names":["SESSION_INDEX_KEY","DEFAULT_MAX_SESSIONS","DEFAULT_FEATURE_KEYS","randomHex","Math","floor","random","toString","padStart","createSession","startedAt","Date","now","id","isLogSession","value","Boolean","parseSessionIndex","raw","parsed","JSON","parse","Array","isArray","sessions","currentSessionId","filter","maxSessions","compareNewestFirst","left","right","SessionManager","constructor","storage","options","currentSession","max","featureKeys","length","initialize","existing","getItem","byId","Map","set","session","from","values","sort","retained","slice","removed","index","setItem","stringify","cleanupSessionLogs","getCurrentSession","getSessionHistory","getLogStorageKey","featureKey","sessionId","loadSessionLogs","getSessionLogCount","clearCurrentSessionLogs","cleanupOldSessions","removeItem"],"sourceRoot":"../../../src","sources":["utils/SessionManager.ts"],"mappings":"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","ignoreList":[]}
@@ -5,12 +5,14 @@ import type { ZustandFeatureConfig } from '../features/zustand';
5
5
  import type { NavigationFeatureConfig } from '../features/navigation';
6
6
  import type { TrackFeatureConfig } from '../features/track';
7
7
  import { createEnvironmentFeature } from '../features/environment';
8
+ import type { NativeLogsFeatureConfig } from '../features/nativeLogs';
8
9
  import type { AnyDebugFeature } from '../types';
9
10
  import type { StorageAdapter } from '../utils/StorageAdapter';
10
11
  /** Feature-specific configuration map */
11
12
  export interface FeatureConfigs {
12
13
  network?: boolean | NetworkFeatureConfig;
13
14
  console?: boolean | ConsoleFeatureConfig;
15
+ native?: boolean | NativeLogsFeatureConfig;
14
16
  zustand?: boolean | ZustandFeatureConfig;
15
17
  navigation?: boolean | NavigationFeatureConfig;
16
18
  track?: boolean | TrackFeatureConfig;
@@ -1 +1 @@
1
- {"version":3,"file":"initialize.d.ts","sourceRoot":"","sources":["../../../../src/core/initialize.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,YAAY,EAAE,MAAM,gBAAgB,CAAC;AAE9C,OAAO,KAAK,EAAE,oBAAoB,EAAE,MAAM,qBAAqB,CAAC;AAEhE,OAAO,KAAK,EAAE,oBAAoB,EAAE,MAAM,qBAAqB,CAAC;AAEhE,OAAO,KAAK,EAAE,oBAAoB,EAAE,MAAM,qBAAqB,CAAC;AAEhE,OAAO,KAAK,EAAE,uBAAuB,EAAE,MAAM,wBAAwB,CAAC;AAEtE,OAAO,KAAK,EAAE,kBAAkB,EAAE,MAAM,mBAAmB,CAAC;AAC5D,OAAO,EAAE,wBAAwB,EAAE,MAAM,yBAAyB,CAAC;AAKnE,OAAO,KAAK,EAAE,eAAe,EAAsB,MAAM,UAAU,CAAC;AACpE,OAAO,KAAK,EAAE,cAAc,EAAE,MAAM,yBAAyB,CAAC;AAS9D,yCAAyC;AACzC,MAAM,WAAW,cAAc;IAC7B,OAAO,CAAC,EAAE,OAAO,GAAG,oBAAoB,CAAC;IACzC,OAAO,CAAC,EAAE,OAAO,GAAG,oBAAoB,CAAC;IACzC,OAAO,CAAC,EAAE,OAAO,GAAG,oBAAoB,CAAC;IACzC,UAAU,CAAC,EAAE,OAAO,GAAG,uBAAuB,CAAC;IAC/C,KAAK,CAAC,EAAE,OAAO,GAAG,kBAAkB,CAAC;IACrC,WAAW,CAAC,EAAE,UAAU,CAAC,OAAO,wBAAwB,CAAC,CAAC,CAAC,CAAC,CAAC;IAC7D,SAAS,CAAC,EAAE,OAAO,CAAC;IACpB,UAAU,CAAC,EAAE,OAAO,CAAC;IACrB,cAAc,CAAC,EAAE,OAAO,CAAC;CAC1B;AAED,MAAM,WAAW,iBAAiB;IAChC,QAAQ,CAAC,EAAE,cAAc,CAAC;IAC1B,cAAc,CAAC,EAAE,eAAe,EAAE,CAAC;IACnC,OAAO,CAAC,EAAE,OAAO,CAAC;IAClB,UAAU,CAAC,EAAE,cAAc,CAAC;IAC5B,cAAc,CAAC,EAAE,MAAM,CAAC;CACzB;AAqED;;;;;;;;;;GAUG;AACH,wBAAsB,sBAAsB,CAC1C,OAAO,CAAC,EAAE,iBAAiB,GAC1B,OAAO,CAAC,OAAO,YAAY,CAAC,CA2D9B"}
1
+ {"version":3,"file":"initialize.d.ts","sourceRoot":"","sources":["../../../../src/core/initialize.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,YAAY,EAAE,MAAM,gBAAgB,CAAC;AAE9C,OAAO,KAAK,EAAE,oBAAoB,EAAE,MAAM,qBAAqB,CAAC;AAEhE,OAAO,KAAK,EAAE,oBAAoB,EAAE,MAAM,qBAAqB,CAAC;AAEhE,OAAO,KAAK,EAAE,oBAAoB,EAAE,MAAM,qBAAqB,CAAC;AAEhE,OAAO,KAAK,EAAE,uBAAuB,EAAE,MAAM,wBAAwB,CAAC;AAEtE,OAAO,KAAK,EAAE,kBAAkB,EAAE,MAAM,mBAAmB,CAAC;AAC5D,OAAO,EAAE,wBAAwB,EAAE,MAAM,yBAAyB,CAAC;AAKnE,OAAO,KAAK,EAAE,uBAAuB,EAAE,MAAM,wBAAwB,CAAC;AAEtE,OAAO,KAAK,EAAE,eAAe,EAAsB,MAAM,UAAU,CAAC;AACpE,OAAO,KAAK,EAAE,cAAc,EAAE,MAAM,yBAAyB,CAAC;AAS9D,yCAAyC;AACzC,MAAM,WAAW,cAAc;IAC7B,OAAO,CAAC,EAAE,OAAO,GAAG,oBAAoB,CAAC;IACzC,OAAO,CAAC,EAAE,OAAO,GAAG,oBAAoB,CAAC;IACzC,MAAM,CAAC,EAAE,OAAO,GAAG,uBAAuB,CAAC;IAC3C,OAAO,CAAC,EAAE,OAAO,GAAG,oBAAoB,CAAC;IACzC,UAAU,CAAC,EAAE,OAAO,GAAG,uBAAuB,CAAC;IAC/C,KAAK,CAAC,EAAE,OAAO,GAAG,kBAAkB,CAAC;IACrC,WAAW,CAAC,EAAE,UAAU,CAAC,OAAO,wBAAwB,CAAC,CAAC,CAAC,CAAC,CAAC;IAC7D,SAAS,CAAC,EAAE,OAAO,CAAC;IACpB,UAAU,CAAC,EAAE,OAAO,CAAC;IACrB,cAAc,CAAC,EAAE,OAAO,CAAC;CAC1B;AAED,MAAM,WAAW,iBAAiB;IAChC,QAAQ,CAAC,EAAE,cAAc,CAAC;IAC1B,cAAc,CAAC,EAAE,eAAe,EAAE,CAAC;IACnC,OAAO,CAAC,EAAE,OAAO,CAAC;IAClB,UAAU,CAAC,EAAE,cAAc,CAAC;IAC5B,cAAc,CAAC,EAAE,MAAM,CAAC;CACzB;AAuED;;;;;;;;;;GAUG;AACH,wBAAsB,sBAAsB,CAC1C,OAAO,CAAC,EAAE,iBAAiB,GAC1B,OAAO,CAAC,OAAO,YAAY,CAAC,CA2D9B"}
@@ -0,0 +1,4 @@
1
+ import React from 'react';
2
+ import type { DebugFeatureRenderProps, NativeLogEntry } from '../../types';
3
+ export declare const NativeLogTab: React.FC<DebugFeatureRenderProps<NativeLogEntry[]>>;
4
+ //# sourceMappingURL=NativeLogTab.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"NativeLogTab.d.ts","sourceRoot":"","sources":["../../../../../src/features/nativeLogs/NativeLogTab.tsx"],"names":[],"mappings":"AAAA,OAAO,KAAK,MAAM,OAAO,CAAC;AAM1B,OAAO,KAAK,EAAE,uBAAuB,EAAE,cAAc,EAAE,MAAM,aAAa,CAAC;AAO3E,eAAO,MAAM,YAAY,EAAE,KAAK,CAAC,EAAE,CAAC,uBAAuB,CAAC,cAAc,EAAE,CAAC,CAmC3E,CAAC"}
@@ -0,0 +1,12 @@
1
+ import type { DebugFeature, NativeLogEntry } from '../../types';
2
+ import { type LogRuntimeContext } from '../../utils/logRuntime';
3
+ export interface NativeLogsFeatureConfig {
4
+ maxLogs?: number;
5
+ pollIntervalMs?: number;
6
+ minLevel?: NativeLogEntry['level'];
7
+ includeTags?: Array<string | RegExp>;
8
+ excludeTags?: Array<string | RegExp>;
9
+ }
10
+ export declare const createNativeLogsFeature: (config?: NativeLogsFeatureConfig, runtime?: LogRuntimeContext) => DebugFeature<NativeLogEntry[]>;
11
+ export declare function _resetNativeLogsForTesting(): void;
12
+ //# sourceMappingURL=index.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../../../../src/features/nativeLogs/index.ts"],"names":[],"mappings":"AACA,OAAO,KAAK,EAAE,YAAY,EAAwB,cAAc,EAAE,MAAM,aAAa,CAAC;AAEtF,OAAO,EAAwB,KAAK,iBAAiB,EAAE,MAAM,wBAAwB,CAAC;AAYtF,MAAM,WAAW,uBAAuB;IACtC,OAAO,CAAC,EAAE,MAAM,CAAC;IACjB,cAAc,CAAC,EAAE,MAAM,CAAC;IACxB,QAAQ,CAAC,EAAE,cAAc,CAAC,OAAO,CAAC,CAAC;IACnC,WAAW,CAAC,EAAE,KAAK,CAAC,MAAM,GAAG,MAAM,CAAC,CAAC;IACrC,WAAW,CAAC,EAAE,KAAK,CAAC,MAAM,GAAG,MAAM,CAAC,CAAC;CACtC;AAcD,eAAO,MAAM,uBAAuB,GAClC,SAAS,uBAAuB,EAChC,UAAS,iBAA0C,KAClD,YAAY,CAAC,cAAc,EAAE,CAmD/B,CAAC;AAEF,wBAAgB,0BAA0B,IAAI,IAAI,CAEjD"}
@@ -0,0 +1,11 @@
1
+ import type { NativeLogEntry } from '../../types';
2
+ export declare function isNativeLogsAvailable(): boolean;
3
+ export declare function startNativeLogCapture(options?: Record<string, unknown>): Promise<boolean>;
4
+ export declare function stopNativeLogCapture(): Promise<boolean>;
5
+ export declare function drainNativeLogs(max?: number): Promise<Array<Omit<NativeLogEntry, 'id'>>>;
6
+ export declare function getNativeLogsStatus(): Promise<{
7
+ available: boolean;
8
+ capturing: boolean;
9
+ error?: string;
10
+ }>;
11
+ //# sourceMappingURL=nativeLogsBridge.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"nativeLogsBridge.d.ts","sourceRoot":"","sources":["../../../../../src/features/nativeLogs/nativeLogsBridge.ts"],"names":[],"mappings":"AACA,OAAO,KAAK,EAAE,cAAc,EAAE,MAAM,aAAa,CAAC;AAelD,wBAAgB,qBAAqB,IAAI,OAAO,CAE/C;AAED,wBAAsB,qBAAqB,CAAC,OAAO,CAAC,EAAE,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,GAAG,OAAO,CAAC,OAAO,CAAC,CAK/F;AAED,wBAAsB,oBAAoB,IAAI,OAAO,CAAC,OAAO,CAAC,CAK7D;AAED,wBAAsB,eAAe,CAAC,GAAG,SAAM,GAAG,OAAO,CAAC,KAAK,CAAC,IAAI,CAAC,cAAc,EAAE,IAAI,CAAC,CAAC,CAAC,CAK3F;AAED,wBAAsB,mBAAmB,IAAI,OAAO,CAAC;IAAE,SAAS,EAAE,OAAO,CAAC;IAAC,SAAS,EAAE,OAAO,CAAC;IAAC,KAAK,CAAC,EAAE,MAAM,CAAA;CAAE,CAAC,CAS/G"}
@@ -1 +1 @@
1
- {"version":3,"file":"NetworkLogTab.d.ts","sourceRoot":"","sources":["../../../../../src/features/network/NetworkLogTab.tsx"],"names":[],"mappings":"AAAA,OAAO,KAAK,MAAM,OAAO,CAAC;AAa1B,OAAO,KAAK,EAAE,uBAAuB,EAAE,eAAe,EAAE,MAAM,aAAa,CAAC;AA4B5E,eAAO,MAAM,aAAa,EAAE,KAAK,CAAC,EAAE,CAAC,uBAAuB,CAAC,eAAe,EAAE,CAAC,CA2H7E,CAAC"}
1
+ {"version":3,"file":"NetworkLogTab.d.ts","sourceRoot":"","sources":["../../../../../src/features/network/NetworkLogTab.tsx"],"names":[],"mappings":"AAAA,OAAO,KAAK,MAAM,OAAO,CAAC;AAa1B,OAAO,KAAK,EAAE,uBAAuB,EAAE,eAAe,EAAE,MAAM,aAAa,CAAC;AA4B5E,eAAO,MAAM,aAAa,EAAE,KAAK,CAAC,EAAE,CAAC,uBAAuB,CAAC,eAAe,EAAE,CAAC,CA0H7E,CAAC"}
@@ -1 +1 @@
1
- {"version":3,"file":"SessionHistoryTab.d.ts","sourceRoot":"","sources":["../../../../../src/features/sessionHistory/SessionHistoryTab.tsx"],"names":[],"mappings":"AAAA,OAAO,KAAyC,MAAM,OAAO,CAAC;AAiB9D,OAAO,KAAK,EAAE,YAAY,EAAE,uBAAuB,EAAE,aAAa,EAAE,UAAU,EAAE,MAAM,aAAa,CAAC;AAIpG,MAAM,MAAM,SAAS,GAAG,MAAM,CAAC,aAAa,EAAE,MAAM,CAAC,CAAC;AAEtD,MAAM,WAAW,mBAAmB;IAClC,QAAQ,EAAE,UAAU,EAAE,CAAC;IACvB,gBAAgB,EAAE,MAAM,CAAC;IACzB,OAAO,EAAE,OAAO,CAAC;IACjB,eAAe,EAAE,eAAe,GAAG,IAAI,CAAC;IACxC,WAAW,EAAE,MAAM,CAAC;IACpB,SAAS,EAAE,MAAM,CAAC,MAAM,EAAE,SAAS,CAAC,CAAC;CACtC;AAED,MAAM,WAAW,qBAAsB,SAAQ,YAAY,CAAC,mBAAmB,CAAC;IAC9E,WAAW,EAAE,CAAC,SAAS,EAAE,MAAM,GAAG,IAAI,KAAK,IAAI,CAAC;CACjD;AAED,MAAM,WAAW,eAAe;IAC9B,SAAS,EAAE,MAAM,CAAC;IAClB,IAAI,EAAE,MAAM,CAAC,aAAa,EAAE,OAAO,EAAE,CAAC,CAAC;CACxC;AAqGD,eAAO,MAAM,iBAAiB,EAAE,KAAK,CAAC,EAAE,CAAC,uBAAuB,CAAC,mBAAmB,CAAC,CAqHpF,CAAC"}
1
+ {"version":3,"file":"SessionHistoryTab.d.ts","sourceRoot":"","sources":["../../../../../src/features/sessionHistory/SessionHistoryTab.tsx"],"names":[],"mappings":"AAAA,OAAO,KAAyC,MAAM,OAAO,CAAC;AAiB9D,OAAO,KAAK,EAAE,YAAY,EAAE,uBAAuB,EAAE,aAAa,EAAE,UAAU,EAAE,MAAM,aAAa,CAAC;AAIpG,MAAM,MAAM,SAAS,GAAG,MAAM,CAAC,aAAa,EAAE,MAAM,CAAC,CAAC;AAEtD,MAAM,WAAW,mBAAmB;IAClC,QAAQ,EAAE,UAAU,EAAE,CAAC;IACvB,gBAAgB,EAAE,MAAM,CAAC;IACzB,OAAO,EAAE,OAAO,CAAC;IACjB,eAAe,EAAE,eAAe,GAAG,IAAI,CAAC;IACxC,WAAW,EAAE,MAAM,CAAC;IACpB,SAAS,EAAE,MAAM,CAAC,MAAM,EAAE,SAAS,CAAC,CAAC;CACtC;AAED,MAAM,WAAW,qBAAsB,SAAQ,YAAY,CAAC,mBAAmB,CAAC;IAC9E,WAAW,EAAE,CAAC,SAAS,EAAE,MAAM,GAAG,IAAI,KAAK,IAAI,CAAC;CACjD;AAED,MAAM,WAAW,eAAe;IAC9B,SAAS,EAAE,MAAM,CAAC;IAClB,IAAI,EAAE,MAAM,CAAC,aAAa,EAAE,OAAO,EAAE,CAAC,CAAC;CACxC;AAuGD,eAAO,MAAM,iBAAiB,EAAE,KAAK,CAAC,EAAE,CAAC,uBAAuB,CAAC,mBAAmB,CAAC,CAqHpF,CAAC"}
@@ -20,6 +20,8 @@ export { createClipboardFeature } from './features/clipboard';
20
20
  export { createDevConnectFeature } from './features/devConnect';
21
21
  export type { DevConnectState } from './features/devConnect';
22
22
  export { createSessionHistoryFeature } from './features/sessionHistory';
23
+ export { createNativeLogsFeature } from './features/nativeLogs';
24
+ export type { NativeLogsFeatureConfig } from './features/nativeLogs';
23
25
  export { useNavigationLogger } from './features/navigation/useNavigationLogger';
24
26
  export { safeStringify } from './utils/safeStringify';
25
27
  export { createDebugTab } from './utils/createDebugTab';
@@ -34,6 +36,6 @@ export { getDefaultDaemonEndpoint } from './utils/DaemonClient';
34
36
  export { createDefaultLogStorage, MemoryStorageAdapter, } from './utils/StorageAdapter';
35
37
  export type { StorageAdapter } from './utils/StorageAdapter';
36
38
  export type { LogFeatureKey, LogSession, SessionManagerOptions, } from './utils/SessionManager';
37
- export type { AnyDebugFeature, BuiltInFeatureName, DebugFeature, DebugFeatureListener, DebugFeatureRenderProps, FeatureDataProvider, NetworkLogEntry, ConsoleLogEntry, ZustandLogEntry, NavigationLogEntry, TrackLogEntry, EnvironmentConfig, EnvironmentState, } from './types';
39
+ export type { AnyDebugFeature, BuiltInFeatureName, DebugFeature, DebugFeatureListener, DebugFeatureRenderProps, FeatureDataProvider, NetworkLogEntry, ConsoleLogEntry, NativeLogEntry, NativeLogLevel, NativeLogSource, ZustandLogEntry, NavigationLogEntry, TrackLogEntry, EnvironmentConfig, EnvironmentState, } from './types';
38
40
  export { initializeDebugToolkit as default } from './core/initialize';
39
41
  //# sourceMappingURL=index.d.ts.map
@@ -1 +1 @@
1
- {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../../src/index.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../../src/index.ts"],"names":[],"mappings":"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"}
@@ -1,6 +1,6 @@
1
1
  import type { ComponentType } from 'react';
2
2
  export type DebugFeatureListener = () => void;
3
- export type BuiltInFeatureName = 'network' | 'console' | 'zustand' | 'navigation' | 'track' | 'environment' | 'clipboard' | 'devConnect' | 'sessionHistory';
3
+ export type BuiltInFeatureName = 'network' | 'console' | 'native' | 'zustand' | 'navigation' | 'track' | 'environment' | 'clipboard' | 'devConnect' | 'sessionHistory';
4
4
  export interface DebugFeatureRenderProps<TSnapshot = unknown> {
5
5
  snapshot: TSnapshot;
6
6
  feature: DebugFeature<TSnapshot>;
@@ -1 +1 @@
1
- {"version":3,"file":"feature.d.ts","sourceRoot":"","sources":["../../../../src/types/feature.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,aAAa,EAAE,MAAM,OAAO,CAAC;AAE3C,MAAM,MAAM,oBAAoB,GAAG,MAAM,IAAI,CAAC;AAE9C,MAAM,MAAM,kBAAkB,GAC1B,SAAS,GACT,SAAS,GACT,SAAS,GACT,YAAY,GACZ,OAAO,GACP,aAAa,GACb,WAAW,GACX,YAAY,GACZ,gBAAgB,CAAC;AAErB,MAAM,WAAW,uBAAuB,CAAC,SAAS,GAAG,OAAO;IAC1D,QAAQ,EAAE,SAAS,CAAC;IACpB,OAAO,EAAE,YAAY,CAAC,SAAS,CAAC,CAAC;CAClC;AAGD,MAAM,MAAM,eAAe,GAAG,YAAY,CAAC,GAAG,CAAC,CAAC;AAEhD,wFAAwF;AACxF,MAAM,WAAW,mBAAmB;IAClC,QAAQ,CAAC,QAAQ,EAAE,eAAe,EAAE,CAAC;IACrC,SAAS,CAAC,QAAQ,EAAE,oBAAoB,GAAG,MAAM,IAAI,CAAC;CACvD;AAED,MAAM,WAAW,YAAY,CAAC,SAAS,GAAG,OAAO;IAC/C,IAAI,EAAE,MAAM,CAAC;IACb,KAAK,EAAE,MAAM,CAAC;IACd,KAAK,EAAE,MAAM,IAAI,CAAC;IAClB,WAAW,EAAE,MAAM,SAAS,CAAC;IAC7B,KAAK,CAAC,EAAE,MAAM,IAAI,CAAC;IACnB,OAAO,EAAE,MAAM,IAAI,CAAC;IACpB,SAAS,CAAC,EAAE,CAAC,QAAQ,EAAE,oBAAoB,KAAK,MAAM,IAAI,CAAC;IAC3D,aAAa,CAAC,EAAE,aAAa,CAAC,uBAAuB,CAAC,SAAS,CAAC,CAAC,CAAC;IAClE,KAAK,CAAC,EAAE,MAAM;QAAE,KAAK,EAAE,MAAM,CAAC;QAAC,KAAK,EAAE,MAAM,CAAA;KAAE,GAAG,IAAI,CAAC;CACvD"}
1
+ {"version":3,"file":"feature.d.ts","sourceRoot":"","sources":["../../../../src/types/feature.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,aAAa,EAAE,MAAM,OAAO,CAAC;AAE3C,MAAM,MAAM,oBAAoB,GAAG,MAAM,IAAI,CAAC;AAE9C,MAAM,MAAM,kBAAkB,GAC1B,SAAS,GACT,SAAS,GACT,QAAQ,GACR,SAAS,GACT,YAAY,GACZ,OAAO,GACP,aAAa,GACb,WAAW,GACX,YAAY,GACZ,gBAAgB,CAAC;AAErB,MAAM,WAAW,uBAAuB,CAAC,SAAS,GAAG,OAAO;IAC1D,QAAQ,EAAE,SAAS,CAAC;IACpB,OAAO,EAAE,YAAY,CAAC,SAAS,CAAC,CAAC;CAClC;AAGD,MAAM,MAAM,eAAe,GAAG,YAAY,CAAC,GAAG,CAAC,CAAC;AAEhD,wFAAwF;AACxF,MAAM,WAAW,mBAAmB;IAClC,QAAQ,CAAC,QAAQ,EAAE,eAAe,EAAE,CAAC;IACrC,SAAS,CAAC,QAAQ,EAAE,oBAAoB,GAAG,MAAM,IAAI,CAAC;CACvD;AAED,MAAM,WAAW,YAAY,CAAC,SAAS,GAAG,OAAO;IAC/C,IAAI,EAAE,MAAM,CAAC;IACb,KAAK,EAAE,MAAM,CAAC;IACd,KAAK,EAAE,MAAM,IAAI,CAAC;IAClB,WAAW,EAAE,MAAM,SAAS,CAAC;IAC7B,KAAK,CAAC,EAAE,MAAM,IAAI,CAAC;IACnB,OAAO,EAAE,MAAM,IAAI,CAAC;IACpB,SAAS,CAAC,EAAE,CAAC,QAAQ,EAAE,oBAAoB,KAAK,MAAM,IAAI,CAAC;IAC3D,aAAa,CAAC,EAAE,aAAa,CAAC,uBAAuB,CAAC,SAAS,CAAC,CAAC,CAAC;IAClE,KAAK,CAAC,EAAE,MAAM;QAAE,KAAK,EAAE,MAAM,CAAC;QAAC,KAAK,EAAE,MAAM,CAAA;KAAE,GAAG,IAAI,CAAC;CACvD"}
@@ -1,5 +1,5 @@
1
1
  export type { AnyDebugFeature, BuiltInFeatureName, DebugFeature, DebugFeatureListener, DebugFeatureRenderProps, FeatureDataProvider, } from './feature';
2
- export type { ConsoleLogEntry, NavigationLogEntry, NetworkLogEntry, TrackLogEntry, ZustandLogEntry, } from './logs';
2
+ export type { ConsoleLogEntry, NavigationLogEntry, NativeLogEntry, NativeLogLevel, NativeLogSource, NetworkLogEntry, TrackLogEntry, ZustandLogEntry, } from './logs';
3
3
  export type { EnvironmentConfig, EnvironmentState, } from './environment';
4
4
  export type { NavigationContainerRef, } from './navigation';
5
5
  export type { ThirdPartyLib, ThirdPartyLibAction, } from './thirdPartyLibs';
@@ -1 +1 @@
1
- {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../../../src/types/index.ts"],"names":[],"mappings":"AAAA,YAAY,EACV,eAAe,EACf,kBAAkB,EAClB,YAAY,EACZ,oBAAoB,EACpB,uBAAuB,EACvB,mBAAmB,GACpB,MAAM,WAAW,CAAC;AAEnB,YAAY,EACV,eAAe,EACf,kBAAkB,EAClB,eAAe,EACf,aAAa,EACb,eAAe,GAChB,MAAM,QAAQ,CAAC;AAEhB,YAAY,EACV,iBAAiB,EACjB,gBAAgB,GACjB,MAAM,eAAe,CAAC;AAEvB,YAAY,EACV,sBAAsB,GACvB,MAAM,cAAc,CAAC;AAEtB,YAAY,EACV,aAAa,EACb,mBAAmB,GACpB,MAAM,kBAAkB,CAAC;AAE1B,YAAY,EACV,cAAc,GACf,MAAM,yBAAyB,CAAC;AAEjC,YAAY,EACV,aAAa,EACb,UAAU,EACV,qBAAqB,GACtB,MAAM,yBAAyB,CAAC"}
1
+ {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../../../src/types/index.ts"],"names":[],"mappings":"AAAA,YAAY,EACV,eAAe,EACf,kBAAkB,EAClB,YAAY,EACZ,oBAAoB,EACpB,uBAAuB,EACvB,mBAAmB,GACpB,MAAM,WAAW,CAAC;AAEnB,YAAY,EACV,eAAe,EACf,kBAAkB,EAClB,cAAc,EACd,cAAc,EACd,eAAe,EACf,eAAe,EACf,aAAa,EACb,eAAe,GAChB,MAAM,QAAQ,CAAC;AAEhB,YAAY,EACV,iBAAiB,EACjB,gBAAgB,GACjB,MAAM,eAAe,CAAC;AAEvB,YAAY,EACV,sBAAsB,GACvB,MAAM,cAAc,CAAC;AAEtB,YAAY,EACV,aAAa,EACb,mBAAmB,GACpB,MAAM,kBAAkB,CAAC;AAE1B,YAAY,EACV,cAAc,GACf,MAAM,yBAAyB,CAAC;AAEjC,YAAY,EACV,aAAa,EACb,UAAU,EACV,qBAAqB,GACtB,MAAM,yBAAyB,CAAC"}
@@ -48,4 +48,19 @@ export interface TrackLogEntry {
48
48
  eventName: string;
49
49
  [key: string]: unknown;
50
50
  }
51
+ export type NativeLogLevel = 'trace' | 'debug' | 'info' | 'warn' | 'error' | 'fatal' | 'unknown';
52
+ export type NativeLogSource = 'logcat' | 'rctLog' | 'manual';
53
+ export interface NativeLogEntry {
54
+ id: string;
55
+ timestamp: number;
56
+ platform: 'android' | 'ios' | 'unknown';
57
+ level: NativeLogLevel;
58
+ source: NativeLogSource;
59
+ message: string;
60
+ tag?: string;
61
+ thread?: string;
62
+ file?: string;
63
+ line?: number;
64
+ raw?: string;
65
+ }
51
66
  //# sourceMappingURL=logs.d.ts.map
@@ -1 +1 @@
1
- {"version":3,"file":"logs.d.ts","sourceRoot":"","sources":["../../../../src/types/logs.ts"],"names":[],"mappings":"AAAA,MAAM,WAAW,eAAe;IAC9B,EAAE,EAAE,MAAM,CAAC;IACX,SAAS,EAAE,MAAM,CAAC;IAClB,QAAQ,CAAC,EAAE,MAAM,CAAC;IAClB,OAAO,EAAE;QACP,GAAG,EAAE,MAAM,CAAC;QACZ,MAAM,EAAE,MAAM,CAAC;QACf,OAAO,CAAC,EAAE,MAAM,CAAC,MAAM,EAAE,MAAM,CAAC,CAAC;QACjC,IAAI,CAAC,EAAE,OAAO,CAAC;KAChB,CAAC;IACF,QAAQ,CAAC,EAAE;QACT,MAAM,EAAE,MAAM,CAAC;QACf,UAAU,CAAC,EAAE,MAAM,CAAC;QACpB,OAAO,CAAC,EAAE,MAAM,CAAC,MAAM,EAAE,MAAM,CAAC,CAAC;QACjC,IAAI,CAAC,EAAE,OAAO,CAAC;QACf,OAAO,CAAC,EAAE,OAAO,CAAC;KACnB,CAAC;IACF,KAAK,CAAC,EAAE,MAAM,CAAC;CAChB;AAED,MAAM,WAAW,eAAe;IAC9B,EAAE,EAAE,MAAM,CAAC;IACX,SAAS,EAAE,MAAM,CAAC;IAClB,KAAK,EAAE,KAAK,GAAG,MAAM,GAAG,MAAM,GAAG,OAAO,CAAC;IACzC,IAAI,EAAE,OAAO,EAAE,CAAC;CACjB;AAED,MAAM,WAAW,eAAe;IAC9B,EAAE,EAAE,MAAM,CAAC;IACX,SAAS,EAAE,MAAM,CAAC;IAClB,MAAM,EAAE,MAAM,CAAC;IACf,SAAS,EAAE,OAAO,CAAC;IACnB,SAAS,EAAE,OAAO,CAAC;IACnB,kBAAkB,CAAC,EAAE,MAAM,CAAC;IAC5B,SAAS,CAAC,EAAE,MAAM,CAAC;CACpB;AAED,MAAM,WAAW,kBAAkB;IACjC,EAAE,EAAE,MAAM,CAAC;IACX,SAAS,EAAE,MAAM,CAAC;IAClB,MAAM,EAAE,MAAM,CAAC;IACf,IAAI,EAAE,MAAM,CAAC;IACb,EAAE,EAAE,MAAM,CAAC;IACX,SAAS,CAAC,EAAE,MAAM,CAAC;IACnB,QAAQ,CAAC,EAAE,MAAM,CAAC;IAClB,QAAQ,CAAC,EAAE,MAAM,CAAC;CACnB;AAED,MAAM,WAAW,aAAa;IAC5B,EAAE,EAAE,MAAM,CAAC;IACX,SAAS,EAAE,MAAM,CAAC;IAClB,SAAS,EAAE,MAAM,CAAC;IAClB,CAAC,GAAG,EAAE,MAAM,GAAG,OAAO,CAAC;CACxB"}
1
+ {"version":3,"file":"logs.d.ts","sourceRoot":"","sources":["../../../../src/types/logs.ts"],"names":[],"mappings":"AAAA,MAAM,WAAW,eAAe;IAC9B,EAAE,EAAE,MAAM,CAAC;IACX,SAAS,EAAE,MAAM,CAAC;IAClB,QAAQ,CAAC,EAAE,MAAM,CAAC;IAClB,OAAO,EAAE;QACP,GAAG,EAAE,MAAM,CAAC;QACZ,MAAM,EAAE,MAAM,CAAC;QACf,OAAO,CAAC,EAAE,MAAM,CAAC,MAAM,EAAE,MAAM,CAAC,CAAC;QACjC,IAAI,CAAC,EAAE,OAAO,CAAC;KAChB,CAAC;IACF,QAAQ,CAAC,EAAE;QACT,MAAM,EAAE,MAAM,CAAC;QACf,UAAU,CAAC,EAAE,MAAM,CAAC;QACpB,OAAO,CAAC,EAAE,MAAM,CAAC,MAAM,EAAE,MAAM,CAAC,CAAC;QACjC,IAAI,CAAC,EAAE,OAAO,CAAC;QACf,OAAO,CAAC,EAAE,OAAO,CAAC;KACnB,CAAC;IACF,KAAK,CAAC,EAAE,MAAM,CAAC;CAChB;AAED,MAAM,WAAW,eAAe;IAC9B,EAAE,EAAE,MAAM,CAAC;IACX,SAAS,EAAE,MAAM,CAAC;IAClB,KAAK,EAAE,KAAK,GAAG,MAAM,GAAG,MAAM,GAAG,OAAO,CAAC;IACzC,IAAI,EAAE,OAAO,EAAE,CAAC;CACjB;AAED,MAAM,WAAW,eAAe;IAC9B,EAAE,EAAE,MAAM,CAAC;IACX,SAAS,EAAE,MAAM,CAAC;IAClB,MAAM,EAAE,MAAM,CAAC;IACf,SAAS,EAAE,OAAO,CAAC;IACnB,SAAS,EAAE,OAAO,CAAC;IACnB,kBAAkB,CAAC,EAAE,MAAM,CAAC;IAC5B,SAAS,CAAC,EAAE,MAAM,CAAC;CACpB;AAED,MAAM,WAAW,kBAAkB;IACjC,EAAE,EAAE,MAAM,CAAC;IACX,SAAS,EAAE,MAAM,CAAC;IAClB,MAAM,EAAE,MAAM,CAAC;IACf,IAAI,EAAE,MAAM,CAAC;IACb,EAAE,EAAE,MAAM,CAAC;IACX,SAAS,CAAC,EAAE,MAAM,CAAC;IACnB,QAAQ,CAAC,EAAE,MAAM,CAAC;IAClB,QAAQ,CAAC,EAAE,MAAM,CAAC;CACnB;AAED,MAAM,WAAW,aAAa;IAC5B,EAAE,EAAE,MAAM,CAAC;IACX,SAAS,EAAE,MAAM,CAAC;IAClB,SAAS,EAAE,MAAM,CAAC;IAClB,CAAC,GAAG,EAAE,MAAM,GAAG,OAAO,CAAC;CACxB;AAED,MAAM,MAAM,cAAc,GAAG,OAAO,GAAG,OAAO,GAAG,MAAM,GAAG,MAAM,GAAG,OAAO,GAAG,OAAO,GAAG,SAAS,CAAC;AACjG,MAAM,MAAM,eAAe,GAAG,QAAQ,GAAG,QAAQ,GAAG,QAAQ,CAAC;AAE7D,MAAM,WAAW,cAAc;IAC7B,EAAE,EAAE,MAAM,CAAC;IACX,SAAS,EAAE,MAAM,CAAC;IAClB,QAAQ,EAAE,SAAS,GAAG,KAAK,GAAG,SAAS,CAAC;IACxC,KAAK,EAAE,cAAc,CAAC;IACtB,MAAM,EAAE,eAAe,CAAC;IACxB,OAAO,EAAE,MAAM,CAAC;IAChB,GAAG,CAAC,EAAE,MAAM,CAAC;IACb,MAAM,CAAC,EAAE,MAAM,CAAC;IAChB,IAAI,CAAC,EAAE,MAAM,CAAC;IACd,IAAI,CAAC,EAAE,MAAM,CAAC;IACd,GAAG,CAAC,EAAE,MAAM,CAAC;CACd"}
@@ -1 +1 @@
1
- {"version":3,"file":"DebugView.d.ts","sourceRoot":"","sources":["../../../../src/ui/DebugView.tsx"],"names":[],"mappings":"AAAA,OAAO,KAA4B,MAAM,OAAO,CAAC;AAGjD,OAAO,KAAK,EAAE,cAAc,EAAE,MAAM,oBAAoB,CAAC;AAEzD,OAAO,KAAK,EAAE,eAAe,EAAE,iBAAiB,EAAE,sBAAsB,EAAE,MAAM,UAAU,CAAC;AAI3F,MAAM,WAAW,cAAc;IAC7B,QAAQ,EAAE,KAAK,CAAC,SAAS,CAAC;IAC1B;;;OAGG;IACH,QAAQ,CAAC,EAAE,OAAO,CAAC,cAAc,CAAC,CAAC;IACnC,6DAA6D;IAC7D,cAAc,CAAC,EAAE,eAAe,EAAE,CAAC;IACnC,mDAAmD;IACnD,aAAa,CAAC,EAAE,KAAK,CAAC,SAAS,CAAC,sBAAsB,GAAG,IAAI,CAAC,CAAC;IAC/D,sDAAsD;IACtD,YAAY,CAAC,EAAE,iBAAiB,EAAE,CAAC;IACnC,iDAAiD;IACjD,OAAO,CAAC,EAAE,OAAO,CAAC;CACnB;AAeD,wBAAgB,SAAS,CAAC,EACxB,QAAQ,EACR,QAAQ,EACR,cAAc,EACd,aAAa,EACb,YAAY,EACZ,OAAO,GACR,EAAE,cAAc,qBAgDhB"}
1
+ {"version":3,"file":"DebugView.d.ts","sourceRoot":"","sources":["../../../../src/ui/DebugView.tsx"],"names":[],"mappings":"AAAA,OAAO,KAA4B,MAAM,OAAO,CAAC;AAGjD,OAAO,KAAK,EAAE,cAAc,EAAE,MAAM,oBAAoB,CAAC;AAEzD,OAAO,KAAK,EAAE,eAAe,EAAE,iBAAiB,EAAE,sBAAsB,EAAE,MAAM,UAAU,CAAC;AAI3F,MAAM,WAAW,cAAc;IAC7B,QAAQ,EAAE,KAAK,CAAC,SAAS,CAAC;IAC1B;;;OAGG;IACH,QAAQ,CAAC,EAAE,OAAO,CAAC,cAAc,CAAC,CAAC;IACnC,6DAA6D;IAC7D,cAAc,CAAC,EAAE,eAAe,EAAE,CAAC;IACnC,mDAAmD;IACnD,aAAa,CAAC,EAAE,KAAK,CAAC,SAAS,CAAC,sBAAsB,GAAG,IAAI,CAAC,CAAC;IAC/D,sDAAsD;IACtD,YAAY,CAAC,EAAE,iBAAiB,EAAE,CAAC;IACnC,iDAAiD;IACjD,OAAO,CAAC,EAAE,OAAO,CAAC;CACnB;AAeD,wBAAgB,SAAS,CAAC,EACxB,QAAQ,EACR,QAAQ,EACR,cAAc,EACd,aAAa,EACb,YAAY,EACZ,OAAO,GACR,EAAE,cAAc,qBAiDhB"}
@@ -5,7 +5,10 @@ interface FeatureIntroCardProps {
5
5
  summary: FeatureSummary;
6
6
  filterBad: boolean;
7
7
  onFilterBad: (bad: boolean) => void;
8
+ searchQuery?: string;
9
+ onSearchChange?: (text: string) => void;
10
+ showSearch?: boolean;
8
11
  }
9
- export declare function FeatureIntroCard({ title, summary, filterBad, onFilterBad, }: FeatureIntroCardProps): React.JSX.Element;
12
+ export declare function FeatureIntroCard({ title, summary, filterBad, onFilterBad, searchQuery, onSearchChange, showSearch, }: FeatureIntroCardProps): React.JSX.Element;
10
13
  export {};
11
14
  //# sourceMappingURL=FeatureIntroCard.d.ts.map
@@ -1 +1 @@
1
- {"version":3,"file":"FeatureIntroCard.d.ts","sourceRoot":"","sources":["../../../../../src/ui/panel/FeatureIntroCard.tsx"],"names":[],"mappings":"AAAA,OAAO,KAAK,MAAM,OAAO,CAAC;AAG1B,OAAO,KAAK,EAAE,cAAc,EAAE,MAAM,uBAAuB,CAAC;AAO5D,UAAU,qBAAqB;IAC7B,KAAK,EAAE,MAAM,CAAC;IACd,OAAO,EAAE,cAAc,CAAC;IACxB,SAAS,EAAE,OAAO,CAAC;IACnB,WAAW,EAAE,CAAC,GAAG,EAAE,OAAO,KAAK,IAAI,CAAC;CACrC;AAED,wBAAgB,gBAAgB,CAAC,EAC/B,KAAK,EACL,OAAO,EACP,SAAS,EACT,WAAW,GACZ,EAAE,qBAAqB,qBAuCvB"}
1
+ {"version":3,"file":"FeatureIntroCard.d.ts","sourceRoot":"","sources":["../../../../../src/ui/panel/FeatureIntroCard.tsx"],"names":[],"mappings":"AAAA,OAAO,KAAK,MAAM,OAAO,CAAC;AAG1B,OAAO,KAAK,EAAE,cAAc,EAAE,MAAM,uBAAuB,CAAC;AAO5D,UAAU,qBAAqB;IAC7B,KAAK,EAAE,MAAM,CAAC;IACd,OAAO,EAAE,cAAc,CAAC;IACxB,SAAS,EAAE,OAAO,CAAC;IACnB,WAAW,EAAE,CAAC,GAAG,EAAE,OAAO,KAAK,IAAI,CAAC;IACpC,WAAW,CAAC,EAAE,MAAM,CAAC;IACrB,cAAc,CAAC,EAAE,CAAC,IAAI,EAAE,MAAM,KAAK,IAAI,CAAC;IACxC,UAAU,CAAC,EAAE,OAAO,CAAC;CACtB;AAED,wBAAgB,gBAAgB,CAAC,EAC/B,KAAK,EACL,OAAO,EACP,SAAS,EACT,WAAW,EACX,WAAW,EACX,cAAc,EACd,UAAU,GACX,EAAE,qBAAqB,qBA2CvB"}
@@ -1 +1 @@
1
- {"version":3,"file":"FloatPanelView.d.ts","sourceRoot":"","sources":["../../../../../src/ui/panel/FloatPanelView.tsx"],"names":[],"mappings":"AAAA,OAAO,KAA8D,MAAM,OAAO,CAAC;AAQnF,OAAO,KAAK,EAAE,eAAe,EAAE,MAAM,aAAa,CAAC;AA0FnD,UAAU,mBAAmB;IAC3B,QAAQ,EAAE,eAAe,EAAE,CAAC;IAC5B,SAAS,EAAE,OAAO,CAAC;IACnB,WAAW,EAAE,MAAM,IAAI,CAAC;IACxB,YAAY,EAAE,MAAM,IAAI,CAAC;IACzB,UAAU,EAAE,MAAM,IAAI,CAAC;CACxB;AAED,wBAAgB,cAAc,CAAC,EAAE,QAAQ,EAAE,SAAS,EAAE,WAAW,EAAE,YAAY,EAAE,UAAU,EAAE,EAAE,mBAAmB,qBAqKjH"}
1
+ {"version":3,"file":"FloatPanelView.d.ts","sourceRoot":"","sources":["../../../../../src/ui/panel/FloatPanelView.tsx"],"names":[],"mappings":"AAAA,OAAO,KAA8D,MAAM,OAAO,CAAC;AAOnF,OAAO,KAAK,EAAE,eAAe,EAAE,MAAM,aAAa,CAAC;AA0FnD,UAAU,mBAAmB;IAC3B,QAAQ,EAAE,eAAe,EAAE,CAAC;IAC5B,SAAS,EAAE,OAAO,CAAC;IACnB,WAAW,EAAE,MAAM,IAAI,CAAC;IACxB,YAAY,EAAE,MAAM,IAAI,CAAC;IACzB,UAAU,EAAE,MAAM,IAAI,CAAC;CACxB;AAED,wBAAgB,cAAc,CAAC,EAAE,QAAQ,EAAE,SAAS,EAAE,WAAW,EAAE,YAAY,EAAE,UAAU,EAAE,EAAE,mBAAmB,qBA4JjH"}
@@ -1,6 +1,6 @@
1
1
  import type { SessionInfo } from './deviceReport';
2
2
  import type { StorageAdapter } from './StorageAdapter';
3
- export type LogFeatureKey = 'console_logs' | 'network_logs' | 'track_logs';
3
+ export type LogFeatureKey = 'console_logs' | 'network_logs' | 'native_logs' | 'track_logs';
4
4
  export type LogSession = SessionInfo;
5
5
  export interface SessionIndex {
6
6
  currentSessionId: string;
@@ -1 +1 @@
1
- {"version":3,"file":"SessionManager.d.ts","sourceRoot":"","sources":["../../../../src/utils/SessionManager.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,WAAW,EAAE,MAAM,gBAAgB,CAAC;AAClD,OAAO,KAAK,EAAE,cAAc,EAAE,MAAM,kBAAkB,CAAC;AAEvD,MAAM,MAAM,aAAa,GAAG,cAAc,GAAG,cAAc,GAAG,YAAY,CAAC;AAE3E,MAAM,MAAM,UAAU,GAAG,WAAW,CAAC;AAErC,MAAM,WAAW,YAAY;IAC3B,gBAAgB,EAAE,MAAM,CAAC;IACzB,QAAQ,EAAE,UAAU,EAAE,CAAC;IACvB,WAAW,EAAE,MAAM,CAAC;CACrB;AAED,MAAM,WAAW,qBAAqB;IACpC,WAAW,CAAC,EAAE,MAAM,CAAC;IACrB,WAAW,CAAC,EAAE,aAAa,EAAE,CAAC;CAC/B;AAmDD,qBAAa,cAAc;IACzB,OAAO,CAAC,QAAQ,CAAC,OAAO,CAAiB;IACzC,OAAO,CAAC,QAAQ,CAAC,cAAc,CAAa;IAC5C,OAAO,CAAC,QAAQ,CAAC,WAAW,CAAS;IACrC,OAAO,CAAC,QAAQ,CAAC,WAAW,CAAkB;gBAElC,OAAO,EAAE,cAAc,EAAE,OAAO,GAAE,qBAA0B;IAOlE,UAAU,IAAI,OAAO,CAAC,IAAI,CAAC;IAsBjC,iBAAiB,IAAI,UAAU;IAIzB,iBAAiB,IAAI,OAAO,CAAC,UAAU,EAAE,CAAC;IAKhD,gBAAgB,CAAC,UAAU,EAAE,aAAa,EAAE,SAAS,SAAyB,GAAG,MAAM;IAIjF,eAAe,CAAC,CAAC,EAAE,SAAS,EAAE,MAAM,EAAE,UAAU,EAAE,aAAa,GAAG,OAAO,CAAC,CAAC,EAAE,CAAC;IAc9E,kBAAkB,CAAC,SAAS,EAAE,MAAM,EAAE,UAAU,EAAE,aAAa,GAAG,OAAO,CAAC,MAAM,CAAC;IAWjF,uBAAuB,CAAC,UAAU,EAAE,aAAa,GAAG,OAAO,CAAC,IAAI,CAAC;IAIjE,kBAAkB,IAAI,OAAO,CAAC,MAAM,CAAC;YAsB7B,kBAAkB;CAOjC"}
1
+ {"version":3,"file":"SessionManager.d.ts","sourceRoot":"","sources":["../../../../src/utils/SessionManager.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,WAAW,EAAE,MAAM,gBAAgB,CAAC;AAClD,OAAO,KAAK,EAAE,cAAc,EAAE,MAAM,kBAAkB,CAAC;AAEvD,MAAM,MAAM,aAAa,GAAG,cAAc,GAAG,cAAc,GAAG,aAAa,GAAG,YAAY,CAAC;AAE3F,MAAM,MAAM,UAAU,GAAG,WAAW,CAAC;AAErC,MAAM,WAAW,YAAY;IAC3B,gBAAgB,EAAE,MAAM,CAAC;IACzB,QAAQ,EAAE,UAAU,EAAE,CAAC;IACvB,WAAW,EAAE,MAAM,CAAC;CACrB;AAED,MAAM,WAAW,qBAAqB;IACpC,WAAW,CAAC,EAAE,MAAM,CAAC;IACrB,WAAW,CAAC,EAAE,aAAa,EAAE,CAAC;CAC/B;AAmDD,qBAAa,cAAc;IACzB,OAAO,CAAC,QAAQ,CAAC,OAAO,CAAiB;IACzC,OAAO,CAAC,QAAQ,CAAC,cAAc,CAAa;IAC5C,OAAO,CAAC,QAAQ,CAAC,WAAW,CAAS;IACrC,OAAO,CAAC,QAAQ,CAAC,WAAW,CAAkB;gBAElC,OAAO,EAAE,cAAc,EAAE,OAAO,GAAE,qBAA0B;IAOlE,UAAU,IAAI,OAAO,CAAC,IAAI,CAAC;IAsBjC,iBAAiB,IAAI,UAAU;IAIzB,iBAAiB,IAAI,OAAO,CAAC,UAAU,EAAE,CAAC;IAKhD,gBAAgB,CAAC,UAAU,EAAE,aAAa,EAAE,SAAS,SAAyB,GAAG,MAAM;IAIjF,eAAe,CAAC,CAAC,EAAE,SAAS,EAAE,MAAM,EAAE,UAAU,EAAE,aAAa,GAAG,OAAO,CAAC,CAAC,EAAE,CAAC;IAc9E,kBAAkB,CAAC,SAAS,EAAE,MAAM,EAAE,UAAU,EAAE,aAAa,GAAG,OAAO,CAAC,MAAM,CAAC;IAWjF,uBAAuB,CAAC,UAAU,EAAE,aAAa,GAAG,OAAO,CAAC,IAAI,CAAC;IAIjE,kBAAkB,IAAI,OAAO,CAAC,MAAM,CAAC;YAsB7B,kBAAkB;CAOjC"}
@@ -300,6 +300,7 @@ header h1 span{color:var(--text3);font-weight:400}
300
300
  }
301
301
  .log-type-network{color:var(--cyan)}
302
302
  .log-type-console{color:var(--green)}
303
+ .log-type-native{color:var(--amber)}
303
304
  .log-type-navigation{color:var(--purple)}
304
305
  .log-type-track{color:var(--orange)}
305
306
  .log-type-zustand{color:var(--pink)}
@@ -713,6 +714,7 @@ mark{
713
714
  navigation: 'Navigation',
714
715
  track: 'Track',
715
716
  zustand: 'State',
717
+ native: 'Native',
716
718
  clipboard: 'Clipboard',
717
719
  environment: 'Environment',
718
720
  };
@@ -764,6 +766,9 @@ mark{
764
766
  var data = Array.isArray(entry.data) ? entry.data.map(formatInlineValue).join(' ') : formatInlineValue(entry.data);
765
767
  return escapeHtml(data.substring(0, 200));
766
768
  }
769
+ if (entry.source === 'logcat' || entry.source === 'rctLog') {
770
+ return escapeHtml([entry.tag, entry.message].filter(Boolean).join(': ').substring(0, 200));
771
+ }
767
772
  if (entry.from || entry.to) return escapeHtml((entry.from || '-') + ' -> ' + (entry.to || '-'));
768
773
  if (entry.eventName) return escapeHtml(String(entry.eventName));
769
774
  if (entry.event) return escapeHtml(String(entry.event));
@@ -778,6 +783,7 @@ mark{
778
783
  if (entry.from || entry.to || entry.path) return 'navigation';
779
784
  if (entry.eventName || entry.event) return 'track';
780
785
  if (entry.prevState !== undefined || entry.nextState !== undefined || entry.storeName) return 'zustand';
786
+ if (entry.source === 'logcat' || entry.source === 'rctLog' || entry.platform === 'android' || entry.platform === 'ios') return 'native';
781
787
  if (entry.action) return 'zustand';
782
788
  return 'unknown';
783
789
  }
@@ -919,6 +925,17 @@ mark{
919
925
  entry.data);
920
926
  }
921
927
 
928
+ function renderNativeDetails(entry) {
929
+ return renderSection('Native Log', renderRows([
930
+ ['Level', entry.level], ['Platform', entry.platform], ['Source', entry.source],
931
+ ['Tag', entry.tag], ['Thread', entry.thread], ['File', entry.file],
932
+ ['Line', entry.line], ['Time', entry.timestamp ? formatTime(new Date(entry.timestamp).toISOString()) : ''],
933
+ ])) +
934
+ renderSection('Message', renderValue(entry.message || ''), entry.message || '') +
935
+ (entry.raw ? renderSection('Raw', renderValue(entry.raw), entry.raw) : '') +
936
+ renderSection('Entry JSON', renderValue(entry), entry);
937
+ }
938
+
922
939
  function estimateByteSize(value) {
923
940
  if (value == null) return 0;
924
941
  if (typeof value === 'string') return new Blob([value]).size;
@@ -1084,6 +1101,7 @@ mark{
1084
1101
  }
1085
1102
  if (logType === 'network') return renderNetworkDetails(entry);
1086
1103
  if (logType === 'console') return renderConsoleDetails(entry);
1104
+ if (logType === 'native') return renderNativeDetails(entry);
1087
1105
  if (logType === 'navigation') return renderNavigationDetails(entry);
1088
1106
  if (logType === 'track') return renderTrackDetails(entry);
1089
1107
  if (logType === 'zustand') return renderStateDetails(entry);
@@ -1,6 +1,6 @@
1
1
  'use strict';
2
2
 
3
- const KNOWN_LOG_TYPES = ['network', 'console', 'navigation', 'track', 'zustand'];
3
+ const KNOWN_LOG_TYPES = ['network', 'console', 'native', 'navigation', 'track', 'zustand'];
4
4
 
5
5
  function isFailedLog(entry) {
6
6
  return Boolean(
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "react-native-debug-toolkit",
3
- "version": "3.5.0",
3
+ "version": "3.5.1",
4
4
  "description": "A local-first React Native debug toolkit with Web Console, HTTP API, and MCP support for AI-readable app logs",
5
5
  "main": "lib/commonjs/index.js",
6
6
  "module": "lib/module/index.js",
@@ -13,6 +13,8 @@ import { createEnvironmentFeature } from '../features/environment';
13
13
  import { createClipboardFeature } from '../features/clipboard';
14
14
  import { createDevConnectFeature, restoreDevConnectSettingsToDaemon, nativeIsDebugBuild } from '../features/devConnect';
15
15
  import { createSessionHistoryFeature } from '../features/sessionHistory';
16
+ import { createNativeLogsFeature } from '../features/nativeLogs';
17
+ import type { NativeLogsFeatureConfig } from '../features/nativeLogs';
16
18
  import { daemonClient } from '../utils/DaemonClient';
17
19
  import type { AnyDebugFeature, BuiltInFeatureName } from '../types';
18
20
  import type { StorageAdapter } from '../utils/StorageAdapter';
@@ -28,6 +30,7 @@ const isDebugMode = __DEV__;
28
30
  export interface FeatureConfigs {
29
31
  network?: boolean | NetworkFeatureConfig;
30
32
  console?: boolean | ConsoleFeatureConfig;
33
+ native?: boolean | NativeLogsFeatureConfig;
31
34
  zustand?: boolean | ZustandFeatureConfig;
32
35
  navigation?: boolean | NavigationFeatureConfig;
33
36
  track?: boolean | TrackFeatureConfig;
@@ -52,6 +55,7 @@ type BuiltInFeatureCreator = (config?: unknown, runtime?: LogRuntimeContext) =>
52
55
  const featureRegistry: Record<BuiltInFeatureName, BuiltInFeatureCreator> = {
53
56
  network: (config, runtime) => createNetworkFeature(config as NetworkFeatureConfig | undefined, runtime),
54
57
  console: (config, runtime) => createConsoleLogFeature(config as ConsoleFeatureConfig | undefined, runtime),
58
+ native: (config) => createNativeLogsFeature(config as NativeLogsFeatureConfig | undefined),
55
59
  zustand: (config) => createZustandLogFeature(config as ZustandFeatureConfig | undefined),
56
60
  navigation: (config) => createNavigationLogFeature(config as NavigationFeatureConfig | undefined),
57
61
  track: (config, runtime) => createTrackFeature(config as TrackFeatureConfig | undefined, runtime),
@@ -64,6 +68,7 @@ const featureRegistry: Record<BuiltInFeatureName, BuiltInFeatureCreator> = {
64
68
  const DEFAULT_FEATURES: BuiltInFeatureName[] = [
65
69
  'network',
66
70
  'console',
71
+ 'native',
67
72
  'navigation',
68
73
  'zustand',
69
74
  'track',
@@ -0,0 +1,66 @@
1
+ import React from 'react';
2
+ import { ScrollView, StyleSheet, Text, View } from 'react-native';
3
+ import { CopyButton } from '../../ui/shared/CopyButton';
4
+ import { LogListScreen } from '../../ui/shared/LogListScreen';
5
+ import { Colors } from '../../ui/theme/colors';
6
+ import { fmt } from '../../utils/copyToComputer';
7
+ import type { DebugFeatureRenderProps, NativeLogEntry } from '../../types';
8
+
9
+ const LEVEL_COLORS: Record<string, string> = {
10
+ trace: '#8E8E93', debug: '#8E8E93', info: '#007AFF',
11
+ warn: '#FF9500', error: '#FF3B30', fatal: '#AF52DE', unknown: '#8E8E93',
12
+ };
13
+
14
+ export const NativeLogTab: React.FC<DebugFeatureRenderProps<NativeLogEntry[]>> = React.memo(({ snapshot }) => (
15
+ <LogListScreen
16
+ data={snapshot}
17
+ emptyText="No native logs"
18
+ renderRow={(item) => (
19
+ <View style={s.row}>
20
+ <View style={[s.level, { backgroundColor: LEVEL_COLORS[item.level] ?? LEVEL_COLORS.unknown }]}>
21
+ <Text style={s.levelText}>{item.level.slice(0, 1).toUpperCase()}</Text>
22
+ </View>
23
+ <View style={s.content}>
24
+ <Text style={s.message} numberOfLines={2}>{item.message}</Text>
25
+ <Text style={s.meta}>
26
+ {[item.platform, item.source, item.tag].filter(Boolean).join(' / ')} · {new Date(item.timestamp).toLocaleTimeString()}
27
+ </Text>
28
+ </View>
29
+ </View>
30
+ )}
31
+ renderDetailHeader={(item) => (
32
+ <>
33
+ <View style={[s.badge, { backgroundColor: LEVEL_COLORS[item.level] ?? LEVEL_COLORS.unknown }]}>
34
+ <Text style={s.badgeText}>{item.level.toUpperCase()}</Text>
35
+ </View>
36
+ <Text style={s.detailTime}>{new Date(item.timestamp).toLocaleString()}</Text>
37
+ </>
38
+ )}
39
+ renderDetailBody={(item) => (
40
+ <ScrollView style={s.detailBody} contentContainerStyle={s.detailContent}>
41
+ <View style={s.copyRow}>
42
+ <CopyButton text={fmt(item)} label="Native Log" />
43
+ </View>
44
+ <Text style={s.messageBlock} selectable>{item.message}</Text>
45
+ <Text style={s.rawBlock} selectable>{fmt(item)}</Text>
46
+ </ScrollView>
47
+ )}
48
+ />
49
+ ));
50
+
51
+ const s = StyleSheet.create({
52
+ row: { flexDirection: 'row', padding: 14, alignItems: 'flex-start' },
53
+ level: { width: 24, height: 24, borderRadius: 12, alignItems: 'center', justifyContent: 'center', marginRight: 12 },
54
+ levelText: { color: '#FFF', fontSize: 11, fontWeight: '700' },
55
+ content: { flex: 1 },
56
+ message: { fontSize: 14, color: Colors.text, lineHeight: 20 },
57
+ meta: { fontSize: 12, color: Colors.textSecondary, marginTop: 4 },
58
+ badge: { paddingHorizontal: 10, paddingVertical: 4, borderRadius: 6 },
59
+ badgeText: { color: '#FFF', fontSize: 12, fontWeight: '700' },
60
+ detailTime: { flex: 1, fontSize: 13, color: Colors.textSecondary, textAlign: 'right' },
61
+ detailBody: { flex: 1 },
62
+ detailContent: { padding: 12, gap: 12 },
63
+ copyRow: { alignItems: 'flex-end' },
64
+ messageBlock: { fontFamily: 'Courier', fontSize: 13, color: Colors.text, lineHeight: 20 },
65
+ rawBlock: { fontFamily: 'Courier', fontSize: 12, color: Colors.textSecondary, lineHeight: 18 },
66
+ });
@@ -0,0 +1,94 @@
1
+ import { NativeLogTab } from './NativeLogTab';
2
+ import type { DebugFeature, DebugFeatureListener, NativeLogEntry } from '../../types';
3
+ import { createPersistedObservableStore } from '../../utils/createPersistedObservableStore';
4
+ import { getDefaultLogRuntime, type LogRuntimeContext } from '../../utils/logRuntime';
5
+ import { drainNativeLogs, startNativeLogCapture, stopNativeLogCapture } from './nativeLogsBridge';
6
+
7
+ const DEFAULT_MAX_LOGS = 200;
8
+ const DEFAULT_MAX_PERSIST = 50;
9
+ const DEFAULT_POLL_INTERVAL_MS = 500;
10
+ const DEFAULT_DRAIN_LIMIT = 100;
11
+
12
+ const LEVEL_RANK: Record<NativeLogEntry['level'], number> = {
13
+ trace: 0, debug: 1, info: 2, warn: 3, error: 4, fatal: 5, unknown: 0,
14
+ };
15
+
16
+ export interface NativeLogsFeatureConfig {
17
+ maxLogs?: number;
18
+ pollIntervalMs?: number;
19
+ minLevel?: NativeLogEntry['level'];
20
+ includeTags?: Array<string | RegExp>;
21
+ excludeTags?: Array<string | RegExp>;
22
+ }
23
+
24
+ function matchesPattern(value: string | undefined, patterns: Array<string | RegExp> | undefined): boolean {
25
+ if (!value || !patterns?.length) return false;
26
+ return patterns.some((p) => p instanceof RegExp ? p.test(value) : value.includes(p));
27
+ }
28
+
29
+ function shouldKeepEntry(entry: Omit<NativeLogEntry, 'id'>, config?: NativeLogsFeatureConfig): boolean {
30
+ if (config?.minLevel && LEVEL_RANK[entry.level] < LEVEL_RANK[config.minLevel]) return false;
31
+ if (config?.includeTags?.length && !matchesPattern(entry.tag, config.includeTags)) return false;
32
+ if (matchesPattern(entry.tag, config?.excludeTags)) return false;
33
+ return true;
34
+ }
35
+
36
+ export const createNativeLogsFeature = (
37
+ config?: NativeLogsFeatureConfig,
38
+ runtime: LogRuntimeContext = getDefaultLogRuntime(),
39
+ ): DebugFeature<NativeLogEntry[]> => {
40
+ const maxLogs = config?.maxLogs ?? DEFAULT_MAX_LOGS;
41
+ const pollIntervalMs = Math.max(100, Math.floor(config?.pollIntervalMs ?? DEFAULT_POLL_INTERVAL_MS));
42
+ const logStore = createPersistedObservableStore<NativeLogEntry>({
43
+ storage: runtime.logStorage,
44
+ storageKey: runtime.sessionManager.getLogStorageKey('native_logs'),
45
+ maxPersist: DEFAULT_MAX_PERSIST,
46
+ });
47
+
48
+ let initialized = false;
49
+ let timer: ReturnType<typeof setInterval> | null = null;
50
+ let draining = false;
51
+
52
+ async function drainOnce(): Promise<void> {
53
+ if (draining) return;
54
+ draining = true;
55
+ try {
56
+ const entries = await drainNativeLogs(DEFAULT_DRAIN_LIMIT);
57
+ entries.filter((e) => shouldKeepEntry(e, config)).forEach((entry) => {
58
+ logStore.push({ ...entry, id: logStore.nextId() }, maxLogs);
59
+ });
60
+ } finally { draining = false; }
61
+ }
62
+
63
+ return {
64
+ name: 'native',
65
+ label: 'Native',
66
+ renderContent: NativeLogTab,
67
+ setup: () => {
68
+ if (initialized) return;
69
+ initialized = true;
70
+ startNativeLogCapture({
71
+ minLevel: config?.minLevel,
72
+ includeTags: config?.includeTags?.filter((p) => typeof p === 'string'),
73
+ excludeTags: config?.excludeTags?.filter((p) => typeof p === 'string'),
74
+ }).catch(() => {});
75
+ timer = setInterval(() => { drainOnce().catch(() => {}); }, pollIntervalMs);
76
+ },
77
+ getSnapshot: () => logStore.getData(),
78
+ clear: () => { logStore.clearPersisted(); },
79
+ cleanup: () => {
80
+ if (!initialized) return;
81
+ if (timer) clearInterval(timer);
82
+ timer = null;
83
+ stopNativeLogCapture().catch(() => {});
84
+ logStore.dispose();
85
+ initialized = false;
86
+ draining = false;
87
+ },
88
+ subscribe: (listener: DebugFeatureListener) => logStore.subscribe(listener),
89
+ };
90
+ };
91
+
92
+ export function _resetNativeLogsForTesting(): void {
93
+ stopNativeLogCapture().catch(() => {});
94
+ }
@@ -0,0 +1,51 @@
1
+ import { NativeModules } from 'react-native';
2
+ import type { NativeLogEntry } from '../../types';
3
+
4
+ interface NativeLogsModule {
5
+ startCapture?: (options?: Record<string, unknown>) => Promise<{ ok: boolean }>;
6
+ stopCapture?: () => Promise<{ ok: boolean }>;
7
+ drainLogs?: (max?: number) => Promise<Array<Omit<NativeLogEntry, 'id'>>>;
8
+ getStatus?: () => Promise<{ available: boolean; capturing: boolean; error?: string }>;
9
+ }
10
+
11
+ function getNativeModule(): NativeLogsModule | null {
12
+ const mod = NativeModules.DebugToolkitNativeLogs as NativeLogsModule | undefined;
13
+ if (!mod || typeof mod.drainLogs !== 'function') return null;
14
+ return mod;
15
+ }
16
+
17
+ export function isNativeLogsAvailable(): boolean {
18
+ return getNativeModule() !== null;
19
+ }
20
+
21
+ export async function startNativeLogCapture(options?: Record<string, unknown>): Promise<boolean> {
22
+ const mod = getNativeModule();
23
+ if (!mod?.startCapture) return false;
24
+ try { const r = await mod.startCapture(options ?? {}); return r?.ok === true; }
25
+ catch { return false; }
26
+ }
27
+
28
+ export async function stopNativeLogCapture(): Promise<boolean> {
29
+ const mod = getNativeModule();
30
+ if (!mod?.stopCapture) return false;
31
+ try { const r = await mod.stopCapture(); return r?.ok === true; }
32
+ catch { return false; }
33
+ }
34
+
35
+ export async function drainNativeLogs(max = 100): Promise<Array<Omit<NativeLogEntry, 'id'>>> {
36
+ const mod = getNativeModule();
37
+ if (!mod?.drainLogs) return [];
38
+ try { const entries = await mod.drainLogs(Math.max(1, Math.floor(max))); return Array.isArray(entries) ? entries : []; }
39
+ catch { return []; }
40
+ }
41
+
42
+ export async function getNativeLogsStatus(): Promise<{ available: boolean; capturing: boolean; error?: string }> {
43
+ const mod = getNativeModule();
44
+ if (!mod?.getStatus) return { available: false, capturing: false };
45
+ try {
46
+ const s = await mod.getStatus();
47
+ return { available: s?.available === true, capturing: s?.capturing === true, error: typeof s?.error === 'string' ? s.error : undefined };
48
+ } catch (error) {
49
+ return { available: true, capturing: false, error: error instanceof Error ? error.message : String(error) };
50
+ }
51
+ }
@@ -62,15 +62,14 @@ export const NetworkLogTab: React.FC<DebugFeatureRenderProps<NetworkLogEntry[]>>
62
62
  <View style={[s.methodChip, { backgroundColor: getMethodColor(item.request.method) }]}>
63
63
  <Text style={s.methodChipText}>{item.request.method}</Text>
64
64
  </View>
65
- <Text style={[s.pathText, !ok && { color: Colors.error }]} numberOfLines={1}>
65
+ <Text style={[s.pathText, !ok && { color: Colors.error }]} numberOfLines={2}>
66
66
  {urlParts.path}
67
67
  </Text>
68
+ </View>
69
+ <View style={s.metaRow}>
68
70
  <View style={[s.statusChip, { backgroundColor: statusColor }]}>
69
71
  <Text style={s.statusChipText}>{item.response?.status ?? 'ERR'}</Text>
70
72
  </View>
71
- </View>
72
- <View style={s.metaRow}>
73
- {item.duration != null && <Text style={s.metaText}>{item.duration}ms</Text>}
74
73
  {!!urlParts.host && <Text style={[s.metaText, s.hostText]} numberOfLines={1}>{urlParts.host}</Text>}
75
74
  <Text style={s.time}>{new Date(item.timestamp).toLocaleTimeString()}</Text>
76
75
  </View>