react-native-debug-toolkit 0.6.3 → 2.0.0

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (283) hide show
  1. package/LICENSE +21 -0
  2. package/README.md +150 -212
  3. package/lib/commonjs/components/ClipboardTab.js +92 -0
  4. package/lib/commonjs/components/ClipboardTab.js.map +1 -0
  5. package/lib/commonjs/components/ConsoleLogTab.js +295 -0
  6. package/lib/commonjs/components/ConsoleLogTab.js.map +1 -0
  7. package/lib/commonjs/components/EnvironmentTab.js +288 -0
  8. package/lib/commonjs/components/EnvironmentTab.js.map +1 -0
  9. package/lib/commonjs/components/FloatPanelView.js +797 -0
  10. package/lib/commonjs/components/FloatPanelView.js.map +1 -0
  11. package/lib/commonjs/components/NavigationLogTab.js +131 -0
  12. package/lib/commonjs/components/NavigationLogTab.js.map +1 -0
  13. package/lib/commonjs/components/NetworkLogTab.js +575 -0
  14. package/lib/commonjs/components/NetworkLogTab.js.map +1 -0
  15. package/lib/commonjs/components/ThirdPartyLibsTab.js +97 -0
  16. package/lib/commonjs/components/ThirdPartyLibsTab.js.map +1 -0
  17. package/lib/commonjs/components/TrackLogTab.js +372 -0
  18. package/lib/commonjs/components/TrackLogTab.js.map +1 -0
  19. package/lib/commonjs/components/ZustandLogTab.js +451 -0
  20. package/lib/commonjs/components/ZustandLogTab.js.map +1 -0
  21. package/lib/commonjs/components/shared/CollapsibleSection.js +84 -0
  22. package/lib/commonjs/components/shared/CollapsibleSection.js.map +1 -0
  23. package/lib/commonjs/components/shared/CopyButton.js +64 -0
  24. package/lib/commonjs/components/shared/CopyButton.js.map +1 -0
  25. package/lib/commonjs/components/shared/JsonView.js +157 -0
  26. package/lib/commonjs/components/shared/JsonView.js.map +1 -0
  27. package/lib/commonjs/core/DebugToolkit.js +142 -0
  28. package/lib/commonjs/core/DebugToolkit.js.map +1 -0
  29. package/lib/commonjs/core/DebugToolkitProvider.js +64 -0
  30. package/lib/commonjs/core/DebugToolkitProvider.js.map +1 -0
  31. package/lib/commonjs/features/ClipboardFeature.js +17 -0
  32. package/lib/commonjs/features/ClipboardFeature.js.map +1 -0
  33. package/lib/commonjs/features/ConsoleLogFeature.js +98 -0
  34. package/lib/commonjs/features/ConsoleLogFeature.js.map +1 -0
  35. package/lib/commonjs/features/EnvironmentFeature.js +168 -0
  36. package/lib/commonjs/features/EnvironmentFeature.js.map +1 -0
  37. package/lib/commonjs/features/NavigationLogFeature.js +60 -0
  38. package/lib/commonjs/features/NavigationLogFeature.js.map +1 -0
  39. package/lib/commonjs/features/NetworkFeature.js +328 -0
  40. package/lib/commonjs/features/NetworkFeature.js.map +1 -0
  41. package/lib/commonjs/features/ThirdPartyLibsFeature.js +51 -0
  42. package/lib/commonjs/features/ThirdPartyLibsFeature.js.map +1 -0
  43. package/lib/commonjs/features/TrackFeature.js +55 -0
  44. package/lib/commonjs/features/TrackFeature.js.map +1 -0
  45. package/lib/commonjs/features/ZustandLogFeature.js +76 -0
  46. package/lib/commonjs/features/ZustandLogFeature.js.map +1 -0
  47. package/lib/commonjs/hooks/useNavigationLogger.js +78 -0
  48. package/lib/commonjs/hooks/useNavigationLogger.js.map +1 -0
  49. package/lib/commonjs/hooks/useSlideDetailAnimation.js +53 -0
  50. package/lib/commonjs/hooks/useSlideDetailAnimation.js.map +1 -0
  51. package/lib/commonjs/index.js +165 -0
  52. package/lib/commonjs/index.js.map +1 -0
  53. package/lib/commonjs/initialize.js +161 -0
  54. package/lib/commonjs/initialize.js.map +1 -0
  55. package/lib/commonjs/native/NativeDebugLibs.js +58 -0
  56. package/lib/commonjs/native/NativeDebugLibs.js.map +1 -0
  57. package/lib/commonjs/package.json +1 -0
  58. package/lib/commonjs/types/index.js +6 -0
  59. package/lib/commonjs/types/index.js.map +1 -0
  60. package/lib/commonjs/utils/constants.js +135 -0
  61. package/lib/commonjs/utils/constants.js.map +1 -0
  62. package/lib/commonjs/utils/copyToComputer.js +97 -0
  63. package/lib/commonjs/utils/copyToComputer.js.map +1 -0
  64. package/lib/commonjs/utils/createEventChannel.js +21 -0
  65. package/lib/commonjs/utils/createEventChannel.js.map +1 -0
  66. package/lib/commonjs/utils/createObservableStore.js +38 -0
  67. package/lib/commonjs/utils/createObservableStore.js.map +1 -0
  68. package/lib/commonjs/utils/safeStringify.js +27 -0
  69. package/lib/commonjs/utils/safeStringify.js.map +1 -0
  70. package/lib/module/components/ClipboardTab.js +86 -0
  71. package/lib/module/components/ClipboardTab.js.map +1 -0
  72. package/lib/module/components/ConsoleLogTab.js +290 -0
  73. package/lib/module/components/ConsoleLogTab.js.map +1 -0
  74. package/lib/module/components/EnvironmentTab.js +282 -0
  75. package/lib/module/components/EnvironmentTab.js.map +1 -0
  76. package/lib/module/components/FloatPanelView.js +791 -0
  77. package/lib/module/components/FloatPanelView.js.map +1 -0
  78. package/lib/module/components/NavigationLogTab.js +126 -0
  79. package/lib/module/components/NavigationLogTab.js.map +1 -0
  80. package/lib/module/components/NetworkLogTab.js +570 -0
  81. package/lib/module/components/NetworkLogTab.js.map +1 -0
  82. package/lib/module/components/ThirdPartyLibsTab.js +91 -0
  83. package/lib/module/components/ThirdPartyLibsTab.js.map +1 -0
  84. package/lib/module/components/TrackLogTab.js +367 -0
  85. package/lib/module/components/TrackLogTab.js.map +1 -0
  86. package/lib/module/components/ZustandLogTab.js +446 -0
  87. package/lib/module/components/ZustandLogTab.js.map +1 -0
  88. package/lib/module/components/shared/CollapsibleSection.js +78 -0
  89. package/lib/module/components/shared/CollapsibleSection.js.map +1 -0
  90. package/lib/module/components/shared/CopyButton.js +58 -0
  91. package/lib/module/components/shared/CopyButton.js.map +1 -0
  92. package/lib/module/components/shared/JsonView.js +152 -0
  93. package/lib/module/components/shared/JsonView.js.map +1 -0
  94. package/lib/module/core/DebugToolkit.js +137 -0
  95. package/lib/module/core/DebugToolkit.js.map +1 -0
  96. package/lib/module/core/DebugToolkitProvider.js +58 -0
  97. package/lib/module/core/DebugToolkitProvider.js.map +1 -0
  98. package/lib/module/features/ClipboardFeature.js +12 -0
  99. package/lib/module/features/ClipboardFeature.js.map +1 -0
  100. package/lib/module/features/ConsoleLogFeature.js +93 -0
  101. package/lib/module/features/ConsoleLogFeature.js.map +1 -0
  102. package/lib/module/features/EnvironmentFeature.js +164 -0
  103. package/lib/module/features/EnvironmentFeature.js.map +1 -0
  104. package/lib/module/features/NavigationLogFeature.js +54 -0
  105. package/lib/module/features/NavigationLogFeature.js.map +1 -0
  106. package/lib/module/features/NetworkFeature.js +322 -0
  107. package/lib/module/features/NetworkFeature.js.map +1 -0
  108. package/lib/module/features/ThirdPartyLibsFeature.js +46 -0
  109. package/lib/module/features/ThirdPartyLibsFeature.js.map +1 -0
  110. package/lib/module/features/TrackFeature.js +49 -0
  111. package/lib/module/features/TrackFeature.js.map +1 -0
  112. package/lib/module/features/ZustandLogFeature.js +69 -0
  113. package/lib/module/features/ZustandLogFeature.js.map +1 -0
  114. package/lib/module/hooks/useNavigationLogger.js +74 -0
  115. package/lib/module/hooks/useNavigationLogger.js.map +1 -0
  116. package/lib/module/hooks/useSlideDetailAnimation.js +50 -0
  117. package/lib/module/hooks/useSlideDetailAnimation.js.map +1 -0
  118. package/lib/module/index.js +29 -0
  119. package/lib/module/index.js.map +1 -0
  120. package/lib/module/initialize.js +156 -0
  121. package/lib/module/initialize.js.map +1 -0
  122. package/lib/module/native/NativeDebugLibs.js +54 -0
  123. package/lib/module/native/NativeDebugLibs.js.map +1 -0
  124. package/lib/module/package.json +1 -0
  125. package/lib/module/types/index.js +4 -0
  126. package/lib/module/types/index.js.map +1 -0
  127. package/lib/module/utils/constants.js +130 -0
  128. package/lib/module/utils/constants.js.map +1 -0
  129. package/lib/module/utils/copyToComputer.js +91 -0
  130. package/lib/module/utils/copyToComputer.js.map +1 -0
  131. package/lib/module/utils/createEventChannel.js +17 -0
  132. package/lib/module/utils/createEventChannel.js.map +1 -0
  133. package/lib/module/utils/createObservableStore.js +34 -0
  134. package/lib/module/utils/createObservableStore.js.map +1 -0
  135. package/lib/module/utils/safeStringify.js +23 -0
  136. package/lib/module/utils/safeStringify.js.map +1 -0
  137. package/lib/typescript/src/components/ClipboardTab.d.ts +4 -0
  138. package/lib/typescript/src/components/ClipboardTab.d.ts.map +1 -0
  139. package/lib/typescript/src/components/ConsoleLogTab.d.ts +4 -0
  140. package/lib/typescript/src/components/ConsoleLogTab.d.ts.map +1 -0
  141. package/lib/typescript/src/components/EnvironmentTab.d.ts +4 -0
  142. package/lib/typescript/src/components/EnvironmentTab.d.ts.map +1 -0
  143. package/lib/typescript/src/components/FloatPanelView.d.ts +64 -0
  144. package/lib/typescript/src/components/FloatPanelView.d.ts.map +1 -0
  145. package/lib/typescript/src/components/NavigationLogTab.d.ts +4 -0
  146. package/lib/typescript/src/components/NavigationLogTab.d.ts.map +1 -0
  147. package/lib/typescript/src/components/NetworkLogTab.d.ts +4 -0
  148. package/lib/typescript/src/components/NetworkLogTab.d.ts.map +1 -0
  149. package/lib/typescript/src/components/ThirdPartyLibsTab.d.ts +4 -0
  150. package/lib/typescript/src/components/ThirdPartyLibsTab.d.ts.map +1 -0
  151. package/lib/typescript/src/components/TrackLogTab.d.ts +4 -0
  152. package/lib/typescript/src/components/TrackLogTab.d.ts.map +1 -0
  153. package/lib/typescript/src/components/ZustandLogTab.d.ts +4 -0
  154. package/lib/typescript/src/components/ZustandLogTab.d.ts.map +1 -0
  155. package/lib/typescript/src/components/shared/CollapsibleSection.d.ts +9 -0
  156. package/lib/typescript/src/components/shared/CollapsibleSection.d.ts.map +1 -0
  157. package/lib/typescript/src/components/shared/CopyButton.d.ts +12 -0
  158. package/lib/typescript/src/components/shared/CopyButton.d.ts.map +1 -0
  159. package/lib/typescript/src/components/shared/JsonView.d.ts +6 -0
  160. package/lib/typescript/src/components/shared/JsonView.d.ts.map +1 -0
  161. package/lib/typescript/src/core/DebugToolkit.d.ts +27 -0
  162. package/lib/typescript/src/core/DebugToolkit.d.ts.map +1 -0
  163. package/lib/typescript/src/core/DebugToolkitProvider.d.ts +18 -0
  164. package/lib/typescript/src/core/DebugToolkitProvider.d.ts.map +1 -0
  165. package/lib/typescript/src/features/ClipboardFeature.d.ts +3 -0
  166. package/lib/typescript/src/features/ClipboardFeature.d.ts.map +1 -0
  167. package/lib/typescript/src/features/ConsoleLogFeature.d.ts +7 -0
  168. package/lib/typescript/src/features/ConsoleLogFeature.d.ts.map +1 -0
  169. package/lib/typescript/src/features/EnvironmentFeature.d.ts +8 -0
  170. package/lib/typescript/src/features/EnvironmentFeature.d.ts.map +1 -0
  171. package/lib/typescript/src/features/NavigationLogFeature.d.ts +8 -0
  172. package/lib/typescript/src/features/NavigationLogFeature.d.ts.map +1 -0
  173. package/lib/typescript/src/features/NetworkFeature.d.ts +28 -0
  174. package/lib/typescript/src/features/NetworkFeature.d.ts.map +1 -0
  175. package/lib/typescript/src/features/ThirdPartyLibsFeature.d.ts +3 -0
  176. package/lib/typescript/src/features/ThirdPartyLibsFeature.d.ts.map +1 -0
  177. package/lib/typescript/src/features/TrackFeature.d.ts +12 -0
  178. package/lib/typescript/src/features/TrackFeature.d.ts.map +1 -0
  179. package/lib/typescript/src/features/ZustandLogFeature.d.ts +29 -0
  180. package/lib/typescript/src/features/ZustandLogFeature.d.ts.map +1 -0
  181. package/lib/typescript/src/hooks/useNavigationLogger.d.ts +20 -0
  182. package/lib/typescript/src/hooks/useNavigationLogger.d.ts.map +1 -0
  183. package/lib/typescript/src/hooks/useSlideDetailAnimation.d.ts +11 -0
  184. package/lib/typescript/src/hooks/useSlideDetailAnimation.d.ts.map +1 -0
  185. package/lib/typescript/src/index.d.ts +26 -0
  186. package/lib/typescript/src/index.d.ts.map +1 -0
  187. package/lib/typescript/src/initialize.d.ts +51 -0
  188. package/lib/typescript/src/initialize.d.ts.map +1 -0
  189. package/lib/typescript/src/native/NativeDebugLibs.d.ts +11 -0
  190. package/lib/typescript/src/native/NativeDebugLibs.d.ts.map +1 -0
  191. package/lib/typescript/src/types/index.d.ts +112 -0
  192. package/lib/typescript/src/types/index.d.ts.map +1 -0
  193. package/lib/typescript/src/utils/constants.d.ts +96 -0
  194. package/lib/typescript/src/utils/constants.d.ts.map +1 -0
  195. package/lib/typescript/src/utils/copyToComputer.d.ts +30 -0
  196. package/lib/typescript/src/utils/copyToComputer.d.ts.map +1 -0
  197. package/lib/typescript/src/utils/createEventChannel.d.ts +7 -0
  198. package/lib/typescript/src/utils/createEventChannel.d.ts.map +1 -0
  199. package/lib/typescript/src/utils/createObservableStore.d.ts +9 -0
  200. package/lib/typescript/src/utils/createObservableStore.d.ts.map +1 -0
  201. package/lib/typescript/src/utils/safeStringify.d.ts +6 -0
  202. package/lib/typescript/src/utils/safeStringify.d.ts.map +1 -0
  203. package/package.json +63 -24
  204. package/src/components/ClipboardTab.tsx +81 -0
  205. package/src/components/ConsoleLogTab.tsx +209 -0
  206. package/src/components/EnvironmentTab.tsx +276 -0
  207. package/src/components/FloatPanelView.tsx +714 -0
  208. package/src/components/NavigationLogTab.tsx +66 -0
  209. package/src/components/NetworkLogTab.tsx +411 -0
  210. package/src/components/ThirdPartyLibsTab.tsx +63 -0
  211. package/src/components/TrackLogTab.tsx +245 -0
  212. package/src/components/ZustandLogTab.tsx +305 -0
  213. package/src/components/shared/CollapsibleSection.tsx +78 -0
  214. package/src/components/shared/CopyButton.tsx +68 -0
  215. package/src/components/shared/JsonView.tsx +125 -0
  216. package/src/core/DebugToolkit.tsx +174 -0
  217. package/src/core/DebugToolkitProvider.tsx +89 -0
  218. package/src/features/ClipboardFeature.ts +11 -0
  219. package/src/features/ConsoleLogFeature.ts +118 -0
  220. package/src/features/EnvironmentFeature.ts +194 -0
  221. package/src/features/NavigationLogFeature.ts +74 -0
  222. package/src/features/NetworkFeature.ts +488 -0
  223. package/src/features/ThirdPartyLibsFeature.ts +42 -0
  224. package/src/features/TrackFeature.ts +69 -0
  225. package/src/features/ZustandLogFeature.ts +127 -0
  226. package/src/hooks/useNavigationLogger.ts +107 -0
  227. package/src/hooks/useSlideDetailAnimation.ts +45 -0
  228. package/src/index.ts +52 -0
  229. package/src/initialize.ts +214 -0
  230. package/src/native/NativeDebugLibs.ts +74 -0
  231. package/src/types/index.ts +138 -0
  232. package/src/utils/constants.ts +91 -0
  233. package/src/utils/copyToComputer.ts +104 -0
  234. package/src/utils/createEventChannel.ts +22 -0
  235. package/src/utils/createObservableStore.ts +42 -0
  236. package/src/utils/safeStringify.ts +25 -0
  237. package/.cursor/rules/react-native.mdc +0 -41
  238. package/README.zh-CN.md +0 -230
  239. package/android/build.gradle +0 -34
  240. package/android/src/main/AndroidManifest.xml +0 -8
  241. package/android/src/main/java/com/reactnative/debuglibs/BuildTypeModule.java +0 -44
  242. package/android/src/main/java/com/reactnative/debuglibs/BuildTypePackage.java +0 -25
  243. package/android/src/main/java/com/reactnative/debuglibs/RNDebugLibsModule.java +0 -75
  244. package/android/src/main/java/com/reactnative/debuglibs/RNDebugLibsPackage.java +0 -28
  245. package/index.js +0 -41
  246. package/ios/BuildTypeModule.h +0 -9
  247. package/ios/BuildTypeModule.m +0 -42
  248. package/ios/RNDebugLibs.h +0 -10
  249. package/ios/RNDebugLibs.m +0 -79
  250. package/lib/DebugToolKit.js +0 -126
  251. package/lib/EnvironmentManager.ts +0 -80
  252. package/lib/NativeDebugLibs.js +0 -67
  253. package/lib/features/ConsoleLogFeature.js +0 -70
  254. package/lib/features/NavigationLogFeature.js +0 -45
  255. package/lib/features/NetworkFeature.js +0 -389
  256. package/lib/features/PerformanceFeature.js +0 -390
  257. package/lib/features/ThirdPartyLibsFeature.js +0 -63
  258. package/lib/features/TrackFeature.js +0 -94
  259. package/lib/features/ZustandLogFeature.js +0 -44
  260. package/lib/hooks/useNavigationLogger.js +0 -92
  261. package/lib/index.js +0 -114
  262. package/lib/navigation/NavigationLogger.js +0 -1
  263. package/lib/types/TrackTypes.ts +0 -92
  264. package/lib/utils/DebugConst.js +0 -67
  265. package/lib/utils/StorageUtils.js +0 -80
  266. package/lib/views/ConsoleLogDetails.js +0 -314
  267. package/lib/views/FloatPanelView.js +0 -697
  268. package/lib/views/HttpLogDetails.js +0 -648
  269. package/lib/views/NavigationLogDetails.js +0 -302
  270. package/lib/views/RestartModal.js +0 -75
  271. package/lib/views/SubViewConsoleLogs.js +0 -209
  272. package/lib/views/SubViewEnvironment.js +0 -73
  273. package/lib/views/SubViewHTTPLogs.js +0 -235
  274. package/lib/views/SubViewNavigationLogs.js +0 -199
  275. package/lib/views/SubViewPerformance.js +0 -515
  276. package/lib/views/SubViewThirdPartyLibs.js +0 -239
  277. package/lib/views/SubViewTrackLogs.js +0 -318
  278. package/lib/views/SubViewZustandLogs.js +0 -279
  279. package/lib/views/TabView.js +0 -66
  280. package/lib/views/TrackLogDetails.js +0 -481
  281. package/lib/views/ZustandLogDetails.js +0 -355
  282. package/react-native-debug-toolkit.podspec +0 -25
  283. package/react-native.config.js +0 -18
package/LICENSE ADDED
@@ -0,0 +1,21 @@
1
+ MIT License
2
+
3
+ Copyright (c) 2024 zcj
4
+
5
+ Permission is hereby granted, free of charge, to any person obtaining a copy
6
+ of this software and associated documentation files (the "Software"), to deal
7
+ in the Software without restriction, including without limitation the rights
8
+ to use, copy, modify, merge, publish, distribute, sublicense, and/or sell
9
+ copies of the Software, and to permit persons to whom the Software is
10
+ furnished to do so, subject to the following conditions:
11
+
12
+ The above copyright notice and this permission notice shall be included in all
13
+ copies or substantial portions of the Software.
14
+
15
+ THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
16
+ IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
17
+ FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
18
+ AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
19
+ LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,
20
+ OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE
21
+ SOFTWARE.
package/README.md CHANGED
@@ -1,271 +1,209 @@
1
1
  # React Native Debug Toolkit
2
2
 
3
- A simple yet powerful debugging toolkit for React Native with a convenient floating UI for development.
3
+ A dev-only floating debug panel for React Native inspect network, console, state, navigation and more, right on your device.
4
+
5
+ > Zero impact on production builds (`__DEV__` only).
6
+
7
+ ## Features
8
+
9
+ - **Network** — Inspect fetch / Axios requests & responses, copy as cURL
10
+ - **Console** — Capture `console.log / info / warn / error`
11
+ - **Zustand** — Log state transitions via middleware
12
+ - **Navigation** — Track route changes
13
+ - **Track** — Record custom analytics events
14
+ - **Environment** — Switch API hosts on the fly
15
+ - **Clipboard** — Inspect clipboard content
16
+ - **Third-party** — Launch FLEX / DoraemonKit
17
+ - **Export** — Share debug data via system share sheet
4
18
 
5
19
  ## Installation
6
20
 
7
21
  ```bash
8
22
  npm install react-native-debug-toolkit
9
- # or
10
- yarn add react-native-debug-toolkit
11
23
  ```
12
24
 
13
- ### iOS Additional Setup
25
+ Optional clipboard copy support:
14
26
 
15
- This toolkit uses FLEX and DoraemonKit for iOS debugging features. To properly integrate:
27
+ ```bash
28
+ npm install @react-native-clipboard/clipboard
29
+ ```
16
30
 
17
- 1. Make sure CocoaPods is installed in your project
18
- 2. Add these dependencies to your Podfile:
31
+ ## Quick Start
19
32
 
20
- ```ruby
21
- pod 'FLEX', :configurations => ['Debug']
22
- pod 'DoraemonKit/Core', :configurations => ['Debug']
23
- ```
33
+ ```tsx
34
+ import { useEffect } from 'react';
35
+ import { initializeDebugToolkit } from 'react-native-debug-toolkit';
24
36
 
25
- 3. Add the following code to your AppDelegate.m in the `didFinishLaunchingWithOptions` method:
37
+ function App() {
38
+ useEffect(() => {
39
+ const toolkit = initializeDebugToolkit();
40
+ return () => toolkit?.destroy();
41
+ }, []);
26
42
 
27
- ```objc
28
- #ifdef DEBUG
29
- #import <DoraemonKit/DoraemonManager.h>
30
- #endif
43
+ return <AppContent />;
44
+ }
45
+ ```
31
46
 
32
- #ifdef DEBUG
33
- DoraemonManager *doKit = [DoraemonManager shareInstance];
34
- doKit.autoDock = false;
35
- [doKit install];
36
- [doKit hiddenDoraemon];
37
- #endif
47
+ That's it. All features are enabled by default.
48
+
49
+ ## Configuration
50
+
51
+ Pass a config object to customize features:
52
+
53
+ ```tsx
54
+ initializeDebugToolkit({
55
+ features: {
56
+ network: { maxLogs: 100, blacklist: ['/auth'] },
57
+ console: true,
58
+ zustand: true,
59
+ track: true,
60
+ environment: [
61
+ { id: 'dev', label: 'Dev', host: 'dev-api.example.com', color: '#34C759' },
62
+ { id: 'prod', label: 'Prod', host: 'api.example.com', color: '#FF3B30' },
63
+ ],
64
+ },
65
+ enabled: true, // force enable (default: __DEV__)
66
+ });
38
67
  ```
39
68
 
40
- 4. Run pod install in your iOS directory:
69
+ Set any feature to `false` to disable it.
41
70
 
42
- ```bash
43
- cd ios && pod install
44
- ```
71
+ ### Per-feature options
45
72
 
46
- ### Android Additional Setup
73
+ | Feature | Options |
74
+ |---------|---------|
75
+ | `network` | `maxLogs`, `blacklist` |
76
+ | `console` | `maxLogs` |
77
+ | `zustand` | `maxLogs` |
78
+ | `navigation` | `maxLogs` |
79
+ | `track` | `maxLogs` |
80
+ | `environment` | `EnvironmentConfig[]` |
81
+ | `thirdPartyLibs` | — |
82
+ | `clipboard` | — |
47
83
 
48
- 1. Add the following to your `android/settings.gradle`:
84
+ All `maxLogs` default to **200**.
49
85
 
50
- ```gradle
51
- include ':react-native-debug-toolkit'
52
- project(':react-native-debug-toolkit').projectDir = new File(rootProject.projectDir, '../node_modules/react-native-debug-toolkit/android')
53
- ```
86
+ ## Usage Examples
54
87
 
55
- 2. Add these dependencies to your `android/app/build.gradle`:
56
-
57
- ```gradle
58
- dependencies {
59
- // Other dependencies...
60
-
61
- debugImplementation 'io.github.didi.dokit:dokitx:3.7.1'
62
- releaseImplementation 'io.github.didi.dokit:dokitx-no-op:3.7.1'
63
- debugImplementation 'com.android.volley:volley:1.2.0'
64
-
65
- implementation project(':react-native-debug-toolkit')
66
- }
67
- ```
88
+ ### Axios interceptor
68
89
 
69
- 3. Initialize DoKit in your `MainApplication.kt`:
90
+ ```tsx
91
+ import { createNetworkFeature } from 'react-native-debug-toolkit';
92
+ import axios from 'axios';
70
93
 
71
- ```kotlin
72
- import com.didichuxing.doraemonkit.DoKit
94
+ const network = createNetworkFeature({ maxLogs: 100 });
95
+ network.setupAxiosInterceptors(axios);
73
96
 
74
- // Inside onCreate method
75
- if (BuildConfig.DEBUG) {
76
- DoKit.Builder(this)
77
- .build()
78
- DoKit.hide()
79
- }
97
+ initializeDebugToolkit({ features: { network, console: true } });
80
98
  ```
81
99
 
82
- ## Basic Usage
100
+ ### Zustand middleware
83
101
 
84
- The easiest way to add the debug toolkit to your app is using the `initializeDebugToolkit` function with default features:
85
-
86
- ```javascript
87
- // In your App.js or other initialization file
88
- import React, { useEffect } from 'react';
89
- import { initializeDebugToolkit, isDebugMode } from 'react-native-debug-toolkit';
102
+ ```tsx
103
+ import { zustandLogMiddleware } from 'react-native-debug-toolkit';
90
104
 
91
- function App() {
92
- useEffect(() => {
93
- if (isDebugMode) {
94
- // Initialize with all default features
95
- initializeDebugToolkit();
96
-
97
- // Or select specific built-in features
98
- // initializeDebugToolkit(['network', 'console', 'zustand', 'navigation', 'thirdPartyLibs']);
99
- }
100
-
101
- return () => {
102
- // Cleanup happens automatically
103
- };
104
- }, []);
105
-
106
- return <YourApp />;
107
- }
105
+ const useStore = create(
106
+ zustandLogMiddleware((set) => ({
107
+ count: 0,
108
+ increment: () => set((s) => ({ count: s.count + 1 }), false, 'increment'),
109
+ }))
110
+ );
108
111
  ```
109
112
 
110
- That's it! Your app will now display a floating debug panel in development mode, giving you access to all debugging features.
111
-
112
- ## Built-in Features
113
-
114
- By initializing with the single line of code above, you'll automatically get access to all these debugging features:
113
+ ### Navigation logging
115
114
 
116
- - **Network**: Track and inspect all network requests and responses
117
- - **Console**: View all console logs within the app
118
- - **Zustand**: Monitor Zustand state management (if your app uses Zustand)
119
- - **Navigation**: Automatically track navigation events in your app
120
- - **ThirdPartyLibs**: Quick access to native debugging tools (FLEX for iOS, DoraemonKit)
115
+ ```tsx
116
+ import { useNavigationLogger } from 'react-native-debug-toolkit';
121
117
 
122
- ## Integration
118
+ const ref = useRef(null);
119
+ useNavigationLogger(ref);
120
+ // pass ref to <NavigationContainer ref={ref}>
121
+ ```
123
122
 
124
- ### Advanced Axios Network Tracking
123
+ ### Custom events
125
124
 
126
- For projects using Axios, you can enable more detailed network request tracking:
125
+ ```tsx
126
+ import { addTrackLog } from 'react-native-debug-toolkit';
127
127
 
128
- ```javascript
129
- import axios from 'axios';
130
- import { createNetworkFeature, isDebugMode } from 'react-native-debug-toolkit';
131
-
132
- // Get network feature instance and set up Axios interceptors
133
- if (isDebugMode) {
134
- const networkFeature = createNetworkFeature();
135
- networkFeature.setupAxiosInterceptors(axios);
136
-
137
- // Optional: exclude sensitive URLs (like authentication endpoints)
138
- networkFeature.addUrlToBlacklist('api.example.com/auth');
139
- networkFeature.addUrlToBlacklist(/password/i); // Regex patterns supported
140
- }
128
+ addTrackLog({ eventName: 'button_click', buttonId: 'submit' });
141
129
  ```
142
130
 
143
- ### Monitoring Zustand Stores (If You Use Zustand)
131
+ ### Export debug data
144
132
 
145
- If your app uses Zustand for state management, just add the middleware to track all state changes:
133
+ Tap **Export** in the panel header, or call programmatically:
146
134
 
147
- ```javascript
148
- import { create } from 'zustand';
149
- import { zustandLogMiddleware } from 'react-native-debug-toolkit';
135
+ ```tsx
136
+ import { exportDebugData } from 'react-native-debug-toolkit';
150
137
 
151
- // Simply add zustandLogMiddleware to wrap your store
152
- const useStore = create(
153
- zustandLogMiddleware(
154
- (set) => ({
155
- count: 0,
156
- increment: () => set((state) => ({ count: state.count + 1 })),
157
- decrement: () => set((state) => ({ count: state.count - 1 })),
158
- })
159
- )
160
- );
138
+ await exportDebugData(data, 'network');
161
139
  ```
162
140
 
163
- ### Navigation Tracking (React Navigation)
141
+ ### Copy to computer
164
142
 
165
- If you're using React Navigation, adding navigation tracking is just one step:
143
+ ```tsx
144
+ import { copyToComputer } from 'react-native-debug-toolkit';
166
145
 
167
- ```javascript
168
- import React, { useRef } from 'react';
169
- import { NavigationContainer } from '@react-navigation/native';
170
- import { useNavigationLogger } from 'react-native-debug-toolkit';
171
-
172
- function AppNavigator() {
173
- const navigationRef = useRef(null);
174
-
175
- // Add this line to enable navigation logging
176
- useNavigationLogger(navigationRef);
177
-
178
- return (
179
- <NavigationContainer ref={navigationRef}>
180
- {/* Your navigation configuration */}
181
- </NavigationContainer>
182
- );
183
- }
146
+ await copyToComputer(jsonString);
184
147
  ```
185
148
 
186
- ## Custom Configuration
149
+ ## API
187
150
 
188
- If you don't need all features, you can selectively enable specific ones:
151
+ ### `initializeDebugToolkit(config?)`
189
152
 
190
- ```javascript
191
- // Only enable network and console logging features
192
- initializeDebugToolkit(['network', 'console']);
193
-
194
- // Or specify a custom set of features
195
- initializeDebugToolkit([
196
- 'network',
197
- 'console',
198
- 'zustand',
199
- 'navigation',
200
- 'thirdPartyLibs'
201
- ]);
153
+ ```ts
154
+ initializeDebugToolkit(config?: {
155
+ features?: FeatureConfigs;
156
+ enabled?: boolean;
157
+ doraemonProductId?: string;
158
+ }): DebugToolkitAPI | null;
202
159
  ```
203
160
 
204
- ## Creating Custom Debug Features
205
-
206
- You can create your own custom debugging features:
207
-
208
- ```javascript
209
- // In myCustomFeature.js
210
- export const createMyCustomFeature = () => {
211
- let customData = [];
212
-
213
- return {
214
- name: 'custom', // Unique identifier
215
- label: 'My Custom Feature', // Display name in UI
216
-
217
- setup: () => {
218
- // Initialize your feature
219
- console.log('My custom feature initialized');
220
-
221
- // Start capturing data, set up listeners, etc.
222
- const interval = setInterval(() => {
223
- customData.push({
224
- timestamp: new Date(),
225
- value: Math.random() * 100
226
- });
227
-
228
- // Limit the amount of data stored
229
- if (customData.length > 100) {
230
- customData.shift();
231
- }
232
- }, 1000);
233
-
234
- // Return cleanup function if needed
235
- return () => clearInterval(interval);
236
- },
237
-
238
- getData: () => {
239
- // Return data to display in the panel
240
- return customData;
241
- },
242
-
243
- cleanup: () => {
244
- // Clean up any listeners or resources
245
- customData = [];
246
- }
247
- };
161
+ ### `DebugToolkitAPI`
162
+
163
+ | Method | Description |
164
+ |--------|-------------|
165
+ | `showPanel()` / `hidePanel()` | Toggle visibility |
166
+ | `clearAll()` | Clear all data |
167
+ | `addFeature(f)` / `removeFeature(name)` | Manage features at runtime |
168
+ | `destroy()` | Full teardown |
169
+ | `features` | Active features (read-only) |
170
+
171
+ ### Custom feature
172
+
173
+ ```tsx
174
+ import type { DebugFeature } from 'react-native-debug-toolkit';
175
+
176
+ const myFeature: DebugFeature<MyData> = {
177
+ name: 'myFeature',
178
+ label: 'My Feature',
179
+ setup: () => { /* start capturing */ },
180
+ getData: () => myDataArray,
181
+ cleanup: () => { /* stop capturing */ },
182
+ clear: () => { /* reset data */ },
183
+ subscribe: (cb) => { emitter.on('change', cb); return () => emitter.off('change', cb); },
184
+ renderContent: MyFeatureTab,
248
185
  };
249
186
 
250
- // Usage with initializeDebugToolkit
251
- initializeDebugToolkit(['network', 'console', createMyCustomFeature]);
187
+ initializeDebugToolkit({ features: { myFeature } });
252
188
  ```
253
189
 
254
- ## Troubleshooting
190
+ ### Utilities
191
+
192
+ | Export | Description |
193
+ |--------|-------------|
194
+ | `safeStringify(value, space?)` | JSON stringify with circular-ref protection |
195
+ | `exportDebugData(data, name)` | Share via system sheet |
196
+ | `copyToComputer(content, options?)` | Copy content to computer |
197
+ | `logToComputer(...args)` | Log to computer console |
255
198
 
256
- ### Debug panel not showing
257
- - Make sure you're in development mode (`isDebugMode` is true)
258
- - Check that you've correctly called `initializeDebugToolkit()`
199
+ ## Peer Dependencies
259
200
 
260
- ### iOS features not working
261
- - Verify that you've added FLEX and DoraemonKit to your Podfile
262
- - Run `pod install` again after making changes
263
- - Make sure you're running a Debug build
201
+ | Package | Version | Required |
202
+ |---------|---------|----------|
203
+ | react | >= 18.0.0 | Yes |
204
+ | react-native | >= 0.72.0 | Yes |
205
+ | @react-native-clipboard/clipboard | >= 1.0.0 | No |
264
206
 
265
- ### Network requests not captured
266
- - For Axios, ensure you've called `setupAxiosInterceptors(axios)`
267
- - For fetch requests, the toolkit should automatically intercept them without additional configuration
207
+ ## License
268
208
 
269
- ### App performance issues
270
- - This debug toolkit is meant for development only, ensure it's not included in production builds
271
- - If performance is affected in development mode, try enabling only specific features
209
+ MIT
@@ -0,0 +1,92 @@
1
+ "use strict";
2
+
3
+ Object.defineProperty(exports, "__esModule", {
4
+ value: true
5
+ });
6
+ exports.ClipboardTab = void 0;
7
+ var _react = _interopRequireWildcard(require("react"));
8
+ var _reactNative = require("react-native");
9
+ var _constants = require("../utils/constants");
10
+ var _copyToComputer = require("../utils/copyToComputer");
11
+ var _jsxRuntime = require("react/jsx-runtime");
12
+ function _interopRequireWildcard(e, t) { if ("function" == typeof WeakMap) var r = new WeakMap(), n = new WeakMap(); return (_interopRequireWildcard = function (e, t) { if (!t && e && e.__esModule) return e; var o, i, f = { __proto__: null, default: e }; if (null === e || "object" != typeof e && "function" != typeof e) return f; if (o = t ? n : r) { if (o.has(e)) return o.get(e); o.set(e, f); } for (const t in e) "default" !== t && {}.hasOwnProperty.call(e, t) && ((i = (o = Object.defineProperty) && Object.getOwnPropertyDescriptor(e, t)) && (i.get || i.set) ? o(f, t, i) : f[t] = e[t]); return f; })(e, t); }
13
+ const ClipboardTab = () => {
14
+ const [text, setText] = (0, _react.useState)('');
15
+ const [feedback, setFeedback] = (0, _react.useState)(null);
16
+ const handleCopy = (0, _react.useCallback)(() => {
17
+ if (!text) return;
18
+ try {
19
+ const result = (0, _copyToComputer.copyToComputer)(text, {
20
+ label: 'Clipboard'
21
+ });
22
+ setFeedback(result.method === 'clipboard' ? 'Copied' : 'Logged');
23
+ } catch {
24
+ setFeedback('Logged');
25
+ }
26
+ setTimeout(() => setFeedback(null), 2000);
27
+ }, [text]);
28
+ return /*#__PURE__*/(0, _jsxRuntime.jsxs)(_reactNative.View, {
29
+ style: s.container,
30
+ children: [/*#__PURE__*/(0, _jsxRuntime.jsx)(_reactNative.TextInput, {
31
+ style: s.input,
32
+ value: text,
33
+ onChangeText: setText,
34
+ placeholder: "Paste or type text here...",
35
+ placeholderTextColor: _constants.Colors.textLight,
36
+ multiline: true,
37
+ textAlignVertical: "top"
38
+ }), /*#__PURE__*/(0, _jsxRuntime.jsx)(_reactNative.View, {
39
+ style: s.footer,
40
+ children: text ? /*#__PURE__*/(0, _jsxRuntime.jsx)(_reactNative.TouchableOpacity, {
41
+ style: s.copyBtn,
42
+ onPress: handleCopy,
43
+ activeOpacity: 0.7,
44
+ children: /*#__PURE__*/(0, _jsxRuntime.jsx)(_reactNative.Text, {
45
+ style: s.copyBtnText,
46
+ children: feedback ?? 'Copy'
47
+ })
48
+ }) : /*#__PURE__*/(0, _jsxRuntime.jsx)(_reactNative.Text, {
49
+ style: s.hint,
50
+ children: "Paste or type content above, then copy to computer"
51
+ })
52
+ })]
53
+ });
54
+ };
55
+ exports.ClipboardTab = ClipboardTab;
56
+ const s = _reactNative.StyleSheet.create({
57
+ container: {
58
+ flex: 1,
59
+ backgroundColor: _constants.Colors.background,
60
+ padding: _constants.Spacing.md
61
+ },
62
+ input: {
63
+ flex: 1,
64
+ backgroundColor: _constants.Colors.surface,
65
+ borderRadius: _constants.Radius.md,
66
+ padding: _constants.Spacing.md,
67
+ fontSize: 14,
68
+ color: _constants.Colors.text,
69
+ lineHeight: 20
70
+ },
71
+ footer: {
72
+ paddingTop: _constants.Spacing.sm,
73
+ minHeight: 36,
74
+ alignItems: 'flex-end'
75
+ },
76
+ hint: {
77
+ fontSize: 12,
78
+ color: _constants.Colors.textLight
79
+ },
80
+ copyBtn: {
81
+ backgroundColor: _constants.Colors.background,
82
+ paddingHorizontal: 16,
83
+ paddingVertical: 6,
84
+ borderRadius: _constants.Radius.sm
85
+ },
86
+ copyBtnText: {
87
+ fontSize: 13,
88
+ color: _constants.Colors.primary,
89
+ fontWeight: '600'
90
+ }
91
+ });
92
+ //# sourceMappingURL=ClipboardTab.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"names":["_react","_interopRequireWildcard","require","_reactNative","_constants","_copyToComputer","_jsxRuntime","e","t","WeakMap","r","n","__esModule","o","i","f","__proto__","default","has","get","set","hasOwnProperty","call","Object","defineProperty","getOwnPropertyDescriptor","ClipboardTab","text","setText","useState","feedback","setFeedback","handleCopy","useCallback","result","copyToComputer","label","method","setTimeout","jsxs","View","style","s","container","children","jsx","TextInput","input","value","onChangeText","placeholder","placeholderTextColor","Colors","textLight","multiline","textAlignVertical","footer","TouchableOpacity","copyBtn","onPress","activeOpacity","Text","copyBtnText","hint","exports","StyleSheet","create","flex","backgroundColor","background","padding","Spacing","md","surface","borderRadius","Radius","fontSize","color","lineHeight","paddingTop","sm","minHeight","alignItems","paddingHorizontal","paddingVertical","primary","fontWeight"],"sourceRoot":"../../../src","sources":["components/ClipboardTab.tsx"],"mappings":"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","ignoreList":[]}