react-native-debug-toolkit 2.0.0 → 2.1.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 (228) hide show
  1. package/README.md +72 -72
  2. package/README.zh-CN.md +209 -0
  3. package/lib/commonjs/components/ClipboardTab.js +15 -16
  4. package/lib/commonjs/components/ClipboardTab.js.map +1 -1
  5. package/lib/commonjs/components/ConsoleLogTab.js +69 -202
  6. package/lib/commonjs/components/ConsoleLogTab.js.map +1 -1
  7. package/lib/commonjs/components/DebugPanel.js +230 -0
  8. package/lib/commonjs/components/DebugPanel.js.map +1 -0
  9. package/lib/commonjs/components/DebugView.js +66 -0
  10. package/lib/commonjs/components/DebugView.js.map +1 -0
  11. package/lib/commonjs/components/EnvironmentTab.js +22 -23
  12. package/lib/commonjs/components/EnvironmentTab.js.map +1 -1
  13. package/lib/commonjs/components/FeatureTabBar.js +182 -0
  14. package/lib/commonjs/components/FeatureTabBar.js.map +1 -0
  15. package/lib/commonjs/components/FloatIcon.js +187 -0
  16. package/lib/commonjs/components/FloatIcon.js.map +1 -0
  17. package/lib/commonjs/components/FloatPanelView.js +140 -723
  18. package/lib/commonjs/components/FloatPanelView.js.map +1 -1
  19. package/lib/commonjs/components/NavigationLogTab.js +8 -8
  20. package/lib/commonjs/components/NavigationLogTab.js.map +1 -1
  21. package/lib/commonjs/components/NetworkLogTab.js +179 -350
  22. package/lib/commonjs/components/NetworkLogTab.js.map +1 -1
  23. package/lib/commonjs/components/ThirdPartyLibsTab.js +8 -8
  24. package/lib/commonjs/components/ThirdPartyLibsTab.js.map +1 -1
  25. package/lib/commonjs/components/TrackLogTab.js +106 -248
  26. package/lib/commonjs/components/TrackLogTab.js.map +1 -1
  27. package/lib/commonjs/components/ZustandLogTab.js +148 -288
  28. package/lib/commonjs/components/ZustandLogTab.js.map +1 -1
  29. package/lib/commonjs/components/shared/CollapsibleSection.js +4 -4
  30. package/lib/commonjs/components/shared/CollapsibleSection.js.map +1 -1
  31. package/lib/commonjs/components/shared/CopyButton.js +3 -3
  32. package/lib/commonjs/components/shared/CopyButton.js.map +1 -1
  33. package/lib/commonjs/components/shared/LogListScreen.js +174 -0
  34. package/lib/commonjs/components/shared/LogListScreen.js.map +1 -0
  35. package/lib/commonjs/core/DebugToolkit.js +92 -112
  36. package/lib/commonjs/core/DebugToolkit.js.map +1 -1
  37. package/lib/commonjs/core/DebugToolkitProvider.js +30 -28
  38. package/lib/commonjs/core/DebugToolkitProvider.js.map +1 -1
  39. package/lib/commonjs/features/ClipboardFeature.js +6 -2
  40. package/lib/commonjs/features/ClipboardFeature.js.map +1 -1
  41. package/lib/commonjs/features/ConsoleLogFeature.js +66 -49
  42. package/lib/commonjs/features/ConsoleLogFeature.js.map +1 -1
  43. package/lib/commonjs/features/EnvironmentFeature.js +5 -13
  44. package/lib/commonjs/features/EnvironmentFeature.js.map +1 -1
  45. package/lib/commonjs/features/NavigationLogFeature.js +17 -38
  46. package/lib/commonjs/features/NavigationLogFeature.js.map +1 -1
  47. package/lib/commonjs/features/NetworkFeature.js +35 -256
  48. package/lib/commonjs/features/NetworkFeature.js.map +1 -1
  49. package/lib/commonjs/features/TrackFeature.js +17 -38
  50. package/lib/commonjs/features/TrackFeature.js.map +1 -1
  51. package/lib/commonjs/features/ZustandLogFeature.js +21 -38
  52. package/lib/commonjs/features/ZustandLogFeature.js.map +1 -1
  53. package/lib/commonjs/hooks/useNavigationLogger.js.map +1 -1
  54. package/lib/commonjs/index.js +7 -20
  55. package/lib/commonjs/index.js.map +1 -1
  56. package/lib/commonjs/initialize.js +19 -96
  57. package/lib/commonjs/initialize.js.map +1 -1
  58. package/lib/commonjs/interceptors/networkInterceptor.js +466 -0
  59. package/lib/commonjs/interceptors/networkInterceptor.js.map +1 -0
  60. package/lib/commonjs/utils/colors.js +48 -0
  61. package/lib/commonjs/utils/colors.js.map +1 -0
  62. package/lib/commonjs/utils/createChannelFeature.js +48 -0
  63. package/lib/commonjs/utils/createChannelFeature.js.map +1 -0
  64. package/lib/commonjs/utils/layout.js +8 -0
  65. package/lib/commonjs/utils/layout.js.map +1 -0
  66. package/lib/commonjs/utils/urlRewriterRegistry.js +14 -0
  67. package/lib/commonjs/utils/urlRewriterRegistry.js.map +1 -0
  68. package/lib/module/components/ClipboardTab.js +8 -8
  69. package/lib/module/components/ClipboardTab.js.map +1 -1
  70. package/lib/module/components/ConsoleLogTab.js +66 -199
  71. package/lib/module/components/ConsoleLogTab.js.map +1 -1
  72. package/lib/module/components/DebugPanel.js +225 -0
  73. package/lib/module/components/DebugPanel.js.map +1 -0
  74. package/lib/module/components/DebugView.js +61 -0
  75. package/lib/module/components/DebugView.js.map +1 -0
  76. package/lib/module/components/EnvironmentTab.js +3 -3
  77. package/lib/module/components/EnvironmentTab.js.map +1 -1
  78. package/lib/module/components/FeatureTabBar.js +177 -0
  79. package/lib/module/components/FeatureTabBar.js.map +1 -0
  80. package/lib/module/components/FloatIcon.js +182 -0
  81. package/lib/module/components/FloatIcon.js.map +1 -0
  82. package/lib/module/components/FloatPanelView.js +141 -723
  83. package/lib/module/components/FloatPanelView.js.map +1 -1
  84. package/lib/module/components/NavigationLogTab.js +1 -1
  85. package/lib/module/components/NavigationLogTab.js.map +1 -1
  86. package/lib/module/components/NetworkLogTab.js +167 -338
  87. package/lib/module/components/NetworkLogTab.js.map +1 -1
  88. package/lib/module/components/ThirdPartyLibsTab.js +1 -1
  89. package/lib/module/components/ThirdPartyLibsTab.js.map +1 -1
  90. package/lib/module/components/TrackLogTab.js +94 -236
  91. package/lib/module/components/TrackLogTab.js.map +1 -1
  92. package/lib/module/components/ZustandLogTab.js +136 -276
  93. package/lib/module/components/ZustandLogTab.js.map +1 -1
  94. package/lib/module/components/shared/CollapsibleSection.js +1 -1
  95. package/lib/module/components/shared/CollapsibleSection.js.map +1 -1
  96. package/lib/module/components/shared/CopyButton.js +1 -1
  97. package/lib/module/components/shared/CopyButton.js.map +1 -1
  98. package/lib/module/components/shared/LogListScreen.js +169 -0
  99. package/lib/module/components/shared/LogListScreen.js.map +1 -0
  100. package/lib/module/core/DebugToolkit.js +92 -111
  101. package/lib/module/core/DebugToolkit.js.map +1 -1
  102. package/lib/module/core/DebugToolkitProvider.js +31 -29
  103. package/lib/module/core/DebugToolkitProvider.js.map +1 -1
  104. package/lib/module/features/ClipboardFeature.js +6 -2
  105. package/lib/module/features/ClipboardFeature.js.map +1 -1
  106. package/lib/module/features/ConsoleLogFeature.js +65 -49
  107. package/lib/module/features/ConsoleLogFeature.js.map +1 -1
  108. package/lib/module/features/EnvironmentFeature.js +5 -13
  109. package/lib/module/features/EnvironmentFeature.js.map +1 -1
  110. package/lib/module/features/NavigationLogFeature.js +16 -38
  111. package/lib/module/features/NavigationLogFeature.js.map +1 -1
  112. package/lib/module/features/NetworkFeature.js +34 -255
  113. package/lib/module/features/NetworkFeature.js.map +1 -1
  114. package/lib/module/features/TrackFeature.js +16 -38
  115. package/lib/module/features/TrackFeature.js.map +1 -1
  116. package/lib/module/features/ZustandLogFeature.js +22 -38
  117. package/lib/module/features/ZustandLogFeature.js.map +1 -1
  118. package/lib/module/hooks/useNavigationLogger.js.map +1 -1
  119. package/lib/module/index.js +2 -3
  120. package/lib/module/index.js.map +1 -1
  121. package/lib/module/initialize.js +19 -95
  122. package/lib/module/initialize.js.map +1 -1
  123. package/lib/module/interceptors/networkInterceptor.js +460 -0
  124. package/lib/module/interceptors/networkInterceptor.js.map +1 -0
  125. package/lib/module/utils/colors.js +43 -0
  126. package/lib/module/utils/colors.js.map +1 -0
  127. package/lib/module/utils/createChannelFeature.js +44 -0
  128. package/lib/module/utils/createChannelFeature.js.map +1 -0
  129. package/lib/module/utils/layout.js +4 -0
  130. package/lib/module/utils/layout.js.map +1 -0
  131. package/lib/module/utils/urlRewriterRegistry.js +10 -0
  132. package/lib/module/utils/urlRewriterRegistry.js.map +1 -0
  133. package/lib/typescript/src/components/ClipboardTab.d.ts.map +1 -1
  134. package/lib/typescript/src/components/ConsoleLogTab.d.ts.map +1 -1
  135. package/lib/typescript/src/components/DebugPanel.d.ts +9 -0
  136. package/lib/typescript/src/components/DebugPanel.d.ts.map +1 -0
  137. package/lib/typescript/src/components/DebugView.d.ts +19 -0
  138. package/lib/typescript/src/components/DebugView.d.ts.map +1 -0
  139. package/lib/typescript/src/components/EnvironmentTab.d.ts.map +1 -1
  140. package/lib/typescript/src/components/FeatureTabBar.d.ts +13 -0
  141. package/lib/typescript/src/components/FeatureTabBar.d.ts.map +1 -0
  142. package/lib/typescript/src/components/FloatIcon.d.ts +12 -0
  143. package/lib/typescript/src/components/FloatIcon.d.ts.map +1 -0
  144. package/lib/typescript/src/components/FloatPanelView.d.ts +4 -59
  145. package/lib/typescript/src/components/FloatPanelView.d.ts.map +1 -1
  146. package/lib/typescript/src/components/NetworkLogTab.d.ts.map +1 -1
  147. package/lib/typescript/src/components/ThirdPartyLibsTab.d.ts.map +1 -1
  148. package/lib/typescript/src/components/TrackLogTab.d.ts.map +1 -1
  149. package/lib/typescript/src/components/ZustandLogTab.d.ts.map +1 -1
  150. package/lib/typescript/src/components/shared/LogListScreen.d.ts +21 -0
  151. package/lib/typescript/src/components/shared/LogListScreen.d.ts.map +1 -0
  152. package/lib/typescript/src/core/DebugToolkit.d.ts +11 -18
  153. package/lib/typescript/src/core/DebugToolkit.d.ts.map +1 -1
  154. package/lib/typescript/src/core/DebugToolkitProvider.d.ts +2 -5
  155. package/lib/typescript/src/core/DebugToolkitProvider.d.ts.map +1 -1
  156. package/lib/typescript/src/features/ClipboardFeature.d.ts +4 -0
  157. package/lib/typescript/src/features/ClipboardFeature.d.ts.map +1 -1
  158. package/lib/typescript/src/features/ConsoleLogFeature.d.ts +2 -0
  159. package/lib/typescript/src/features/ConsoleLogFeature.d.ts.map +1 -1
  160. package/lib/typescript/src/features/EnvironmentFeature.d.ts.map +1 -1
  161. package/lib/typescript/src/features/NavigationLogFeature.d.ts +2 -0
  162. package/lib/typescript/src/features/NavigationLogFeature.d.ts.map +1 -1
  163. package/lib/typescript/src/features/NetworkFeature.d.ts +7 -20
  164. package/lib/typescript/src/features/NetworkFeature.d.ts.map +1 -1
  165. package/lib/typescript/src/features/TrackFeature.d.ts +2 -0
  166. package/lib/typescript/src/features/TrackFeature.d.ts.map +1 -1
  167. package/lib/typescript/src/features/ZustandLogFeature.d.ts +2 -0
  168. package/lib/typescript/src/features/ZustandLogFeature.d.ts.map +1 -1
  169. package/lib/typescript/src/hooks/useNavigationLogger.d.ts +1 -8
  170. package/lib/typescript/src/hooks/useNavigationLogger.d.ts.map +1 -1
  171. package/lib/typescript/src/index.d.ts +5 -5
  172. package/lib/typescript/src/index.d.ts.map +1 -1
  173. package/lib/typescript/src/initialize.d.ts +3 -22
  174. package/lib/typescript/src/initialize.d.ts.map +1 -1
  175. package/lib/typescript/src/interceptors/networkInterceptor.d.ts +18 -0
  176. package/lib/typescript/src/interceptors/networkInterceptor.d.ts.map +1 -0
  177. package/lib/typescript/src/types/index.d.ts +26 -29
  178. package/lib/typescript/src/types/index.d.ts.map +1 -1
  179. package/lib/typescript/src/utils/colors.d.ts +21 -0
  180. package/lib/typescript/src/utils/colors.d.ts.map +1 -0
  181. package/lib/typescript/src/utils/createChannelFeature.d.ts +18 -0
  182. package/lib/typescript/src/utils/createChannelFeature.d.ts.map +1 -0
  183. package/lib/typescript/src/utils/layout.d.ts +2 -0
  184. package/lib/typescript/src/utils/layout.d.ts.map +1 -0
  185. package/lib/typescript/src/utils/urlRewriterRegistry.d.ts +7 -0
  186. package/lib/typescript/src/utils/urlRewriterRegistry.d.ts.map +1 -0
  187. package/package.json +5 -1
  188. package/src/components/ClipboardTab.tsx +8 -8
  189. package/src/components/ConsoleLogTab.tsx +49 -163
  190. package/src/components/DebugPanel.tsx +215 -0
  191. package/src/components/DebugView.tsx +80 -0
  192. package/src/components/EnvironmentTab.tsx +3 -3
  193. package/src/components/FeatureTabBar.tsx +204 -0
  194. package/src/components/FloatIcon.tsx +171 -0
  195. package/src/components/FloatPanelView.tsx +135 -647
  196. package/src/components/NavigationLogTab.tsx +1 -1
  197. package/src/components/NetworkLogTab.tsx +128 -269
  198. package/src/components/ThirdPartyLibsTab.tsx +3 -3
  199. package/src/components/TrackLogTab.tsx +53 -188
  200. package/src/components/ZustandLogTab.tsx +79 -181
  201. package/src/components/shared/CollapsibleSection.tsx +1 -1
  202. package/src/components/shared/CopyButton.tsx +1 -1
  203. package/src/components/shared/LogListScreen.tsx +164 -0
  204. package/src/core/DebugToolkit.tsx +114 -138
  205. package/src/core/DebugToolkitProvider.tsx +32 -38
  206. package/src/features/ClipboardFeature.ts +6 -2
  207. package/src/features/ConsoleLogFeature.ts +66 -68
  208. package/src/features/EnvironmentFeature.ts +5 -13
  209. package/src/features/NavigationLogFeature.ts +12 -42
  210. package/src/features/NetworkFeature.ts +43 -405
  211. package/src/features/TrackFeature.ts +14 -49
  212. package/src/features/ZustandLogFeature.ts +16 -42
  213. package/src/hooks/useNavigationLogger.ts +1 -6
  214. package/src/index.ts +5 -9
  215. package/src/initialize.ts +28 -120
  216. package/src/interceptors/networkInterceptor.ts +646 -0
  217. package/src/types/index.ts +25 -36
  218. package/src/utils/colors.ts +38 -0
  219. package/src/utils/createChannelFeature.ts +55 -0
  220. package/src/utils/layout.ts +1 -0
  221. package/src/utils/urlRewriterRegistry.ts +10 -0
  222. package/lib/commonjs/utils/constants.js +0 -135
  223. package/lib/commonjs/utils/constants.js.map +0 -1
  224. package/lib/module/utils/constants.js +0 -130
  225. package/lib/module/utils/constants.js.map +0 -1
  226. package/lib/typescript/src/utils/constants.d.ts +0 -96
  227. package/lib/typescript/src/utils/constants.d.ts.map +0 -1
  228. package/src/utils/constants.ts +0 -91
@@ -3,240 +3,27 @@
3
3
  import { NetworkLogTab } from '../components/NetworkLogTab';
4
4
  import { createEventChannel } from '../utils/createEventChannel';
5
5
  import { createObservableStore } from '../utils/createObservableStore';
6
- const DEFAULT_MAX_LOGS = 200;
7
- const networkChannel = createEventChannel();
8
- const pendingAxiosRequests = new Map();
9
- const axiosRegistrations = new WeakMap();
10
- let originalFetch = null;
11
- let fetchInterceptorRefCount = 0;
12
- let urlRewriter = null;
13
- export function setUrlRewriter(rewriter) {
14
- urlRewriter = rewriter;
15
- }
16
- function rewriteUrl(url) {
17
- if (!urlRewriter) return url;
18
- try {
19
- return urlRewriter(url);
20
- } catch {
21
- return url;
22
- }
23
- }
24
- function emitNetworkLog(entry) {
25
- networkChannel.emit(entry);
26
- }
27
- function headersToObject(headers) {
28
- const result = {};
29
- if (!headers) {
30
- return result;
31
- }
32
- if (typeof headers.forEach === 'function') {
33
- headers.forEach((value, key) => {
34
- result[key] = value;
35
- });
36
- return result;
37
- }
38
- Object.keys(headers).forEach(key => {
39
- result[key] = headers[key];
40
- });
41
- return result;
42
- }
43
- function getRequestSnapshot(input, init) {
44
- const request = input instanceof Request ? input : null;
45
- return {
46
- url: typeof input === 'string' ? input : request?.url ?? String(input),
47
- method: (init?.method || request?.method || 'GET').toUpperCase(),
48
- headers: init?.headers ? headersToObject(init.headers) : request?.headers ? headersToObject(request.headers) : undefined,
49
- body: init?.body
50
- };
51
- }
52
- async function parseResponseBody(response) {
53
- const raw = await response.clone().text();
54
- if (!raw) {
55
- return undefined;
56
- }
57
- try {
58
- return JSON.parse(raw);
59
- } catch {
60
- return raw;
61
- }
62
- }
63
- function stopFetchInterceptor() {
64
- fetchInterceptorRefCount = Math.max(0, fetchInterceptorRefCount - 1);
65
- if (fetchInterceptorRefCount === 0 && originalFetch) {
66
- globalThis.fetch = originalFetch;
67
- originalFetch = null;
68
- }
69
- }
70
- function startFetchInterceptor() {
71
- fetchInterceptorRefCount += 1;
72
- if (originalFetch) {
73
- return () => {
74
- stopFetchInterceptor();
75
- };
76
- }
77
- originalFetch = globalThis.fetch;
78
- globalThis.fetch = async function interceptedFetch(input, init) {
79
- const startTime = Date.now();
80
- let rewrittenInput = input;
81
- if (urlRewriter) {
82
- if (typeof input === 'string') {
83
- rewrittenInput = rewriteUrl(input);
84
- } else if (input instanceof Request) {
85
- rewrittenInput = new Request(rewriteUrl(input.url), input);
86
- }
87
- }
88
- const request = getRequestSnapshot(rewrittenInput, init);
89
- try {
90
- const response = await originalFetch.call(globalThis, rewrittenInput, init);
91
- const duration = Date.now() - startTime;
92
- try {
93
- const data = await parseResponseBody(response);
94
- emitNetworkLog({
95
- timestamp: startTime,
96
- duration,
97
- request,
98
- response: {
99
- status: response.status,
100
- statusText: response.statusText,
101
- data
102
- }
103
- });
104
- } catch {
105
- emitNetworkLog({
106
- timestamp: startTime,
107
- duration,
108
- request,
109
- response: {
110
- status: response.status,
111
- statusText: response.statusText
112
- }
113
- });
114
- }
115
- return response;
116
- } catch (error) {
117
- emitNetworkLog({
118
- timestamp: startTime,
119
- duration: Date.now() - startTime,
120
- request,
121
- error: error instanceof Error ? error.message : String(error)
122
- });
123
- throw error;
124
- }
125
- };
126
- return () => {
127
- stopFetchInterceptor();
128
- };
129
- }
130
- function teardownAxiosInterceptors(axiosInstance) {
131
- const registration = axiosRegistrations.get(axiosInstance);
132
- if (!registration) {
133
- return;
134
- }
135
- registration.refCount -= 1;
136
- if (registration.refCount > 0) {
137
- return;
138
- }
139
- if (typeof registration.requestId === 'number') {
140
- axiosInstance.interceptors.request.eject?.(registration.requestId);
141
- }
142
- if (typeof registration.responseId === 'number') {
143
- axiosInstance.interceptors.response.eject?.(registration.responseId);
144
- }
145
- axiosRegistrations.delete(axiosInstance);
146
- }
147
- function setupAxiosInterceptorsInternal(axiosInstance) {
148
- const existingRegistration = axiosRegistrations.get(axiosInstance);
149
- if (existingRegistration) {
150
- existingRegistration.refCount += 1;
151
- return () => {
152
- teardownAxiosInterceptors(axiosInstance);
153
- };
154
- }
155
- const requestId = axiosInstance.interceptors.request.use(config => {
156
- // Rewrite URL if rewriter is set
157
- if (urlRewriter && config.url) {
158
- const fullUrl = config.baseURL ? `${config.baseURL}${config.url}` : config.url;
159
- const rewritten = rewriteUrl(fullUrl);
160
- if (rewritten !== fullUrl) {
161
- if (config.baseURL && rewritten.startsWith(config.baseURL)) {
162
- config.url = rewritten.slice(config.baseURL.length);
163
- } else {
164
- config.baseURL = '';
165
- config.url = rewritten;
166
- }
167
- }
168
- }
169
- if (!config.headers) {
170
- config.headers = {};
171
- }
172
- if (!config.headers['X-Request-Id']) {
173
- config.headers['X-Request-Id'] = Date.now().toString() + Math.random().toString(36).substring(2, 10);
174
- }
175
- const trackId = config.headers['X-Request-Id'];
176
- pendingAxiosRequests.set(trackId, {
177
- startTime: Date.now(),
178
- timestamp: Date.now()
179
- });
180
- return config;
181
- }, error => Promise.reject(error));
182
- const responseId = axiosInstance.interceptors.response.use(response => {
183
- const trackId = response.config?.headers?.['X-Request-Id'];
184
- const pending = pendingAxiosRequests.get(trackId);
185
- if (pending) {
186
- emitNetworkLog({
187
- timestamp: pending.timestamp,
188
- duration: Date.now() - pending.startTime,
189
- request: {
190
- url: `${response.config.baseURL || ''}${response.config.url}`,
191
- method: (response.config.method || 'GET').toUpperCase(),
192
- headers: response.config.headers,
193
- body: response.config.data || response.config.params
194
- },
195
- response: {
196
- status: response.status,
197
- statusText: response.statusText,
198
- headers: response.headers,
199
- data: response.data,
200
- success: response.data && typeof response.data === 'object' ? response.data.success !== false : response.status >= 200 && response.status < 300
201
- }
202
- });
203
- pendingAxiosRequests.delete(trackId);
204
- }
205
- return response;
206
- }, error => {
207
- if (error.config) {
208
- const trackId = error.config.headers?.['X-Request-Id'];
209
- const pending = pendingAxiosRequests.get(trackId);
210
- emitNetworkLog({
211
- timestamp: pending ? pending.timestamp : Date.now(),
212
- duration: pending ? Date.now() - pending.startTime : undefined,
213
- request: {
214
- url: `${error.config.baseURL || ''}${error.config.url}`,
215
- method: (error.config.method || 'GET').toUpperCase(),
216
- headers: error.config.headers,
217
- body: error.config.data || error.config.params
218
- },
219
- error: error.message
220
- });
221
- pendingAxiosRequests.delete(trackId);
222
- }
223
- return Promise.reject(error);
224
- });
225
- axiosRegistrations.set(axiosInstance, {
226
- refCount: 1,
227
- requestId: typeof requestId === 'number' ? requestId : undefined,
228
- responseId: typeof responseId === 'number' ? responseId : undefined
229
- });
230
- return () => {
231
- teardownAxiosInterceptors(axiosInstance);
232
- };
233
- }
6
+ import { urlRewriter } from '../utils/urlRewriterRegistry';
7
+ import { startFetch, startXMLHttpRequest, setupAxios, resetInterceptors } from '../interceptors/networkInterceptor';
8
+ // ─── Utilities ────────────────────────────────────────
9
+
234
10
  function isUrlBlacklisted(url, blacklist) {
235
11
  if (!url) {
236
12
  return false;
237
13
  }
238
14
  return blacklist.some(pattern => pattern instanceof RegExp ? pattern.test(url) : url.includes(pattern));
239
15
  }
16
+
17
+ // ─── Channel (shared pub-sub backbone) ─────────────────
18
+
19
+ let networkChannel = createEventChannel();
20
+ function emitNetworkLog(entry) {
21
+ networkChannel.emit(entry);
22
+ }
23
+
24
+ // ─── Feature factory ──────────────────────────────────
25
+
26
+ const DEFAULT_MAX_LOGS = 200;
240
27
  export const createNetworkFeature = config => {
241
28
  const maxLogs = config?.maxLogs ?? DEFAULT_MAX_LOGS;
242
29
  const blacklist = config?.blacklist ? [...config.blacklist] : [];
@@ -245,7 +32,8 @@ export const createNetworkFeature = config => {
245
32
  let nextId = 0;
246
33
  let initialized = false;
247
34
  let unsubscribeLogs = null;
248
- let stopFetch = null;
35
+ let stopFetchFn = null;
36
+ let stopXMLHttpRequestFn = null;
249
37
  const handleLog = entry => {
250
38
  if (isUrlBlacklisted(entry.request.url, blacklist)) {
251
39
  return;
@@ -255,10 +43,6 @@ export const createNetworkFeature = config => {
255
43
  id: String(nextId++)
256
44
  }, maxLogs);
257
45
  };
258
- const cleanupAxiosRegistrations = () => {
259
- axiosCleanupMap.forEach(cleanup => cleanup());
260
- axiosCleanupMap.clear();
261
- };
262
46
  return {
263
47
  name: 'network',
264
48
  label: 'Network',
@@ -268,7 +52,8 @@ export const createNetworkFeature = config => {
268
52
  return;
269
53
  }
270
54
  unsubscribeLogs = networkChannel.subscribe(handleLog);
271
- stopFetch = startFetchInterceptor();
55
+ stopFetchFn = startFetch(emitNetworkLog);
56
+ stopXMLHttpRequestFn = startXMLHttpRequest(emitNetworkLog);
272
57
  initialized = true;
273
58
  },
274
59
  getData: () => logStore.getData(),
@@ -279,12 +64,15 @@ export const createNetworkFeature = config => {
279
64
  if (!initialized) {
280
65
  return;
281
66
  }
282
- setUrlRewriter(null);
67
+ urlRewriter.set(null);
283
68
  unsubscribeLogs?.();
284
69
  unsubscribeLogs = null;
285
- stopFetch?.();
286
- stopFetch = null;
287
- cleanupAxiosRegistrations();
70
+ stopFetchFn?.();
71
+ stopFetchFn = null;
72
+ stopXMLHttpRequestFn?.();
73
+ stopXMLHttpRequestFn = null;
74
+ axiosCleanupMap.forEach(c => c());
75
+ axiosCleanupMap.clear();
288
76
  logStore.clear();
289
77
  initialized = false;
290
78
  },
@@ -294,29 +82,20 @@ export const createNetworkFeature = config => {
294
82
  if (existingCleanup) {
295
83
  return existingCleanup;
296
84
  }
297
- const cleanup = setupAxiosInterceptorsInternal(axiosInstance);
85
+ const cleanup = setupAxios(axiosInstance, emitNetworkLog);
298
86
  const trackedCleanup = () => {
299
87
  cleanup();
300
88
  axiosCleanupMap.delete(axiosInstance);
301
89
  };
302
90
  axiosCleanupMap.set(axiosInstance, trackedCleanup);
303
91
  return trackedCleanup;
304
- },
305
- addUrlToBlacklist: pattern => {
306
- const alreadyExists = blacklist.some(item => item instanceof RegExp && pattern instanceof RegExp ? item.toString() === pattern.toString() : item === pattern);
307
- if (!alreadyExists) {
308
- blacklist.push(pattern);
309
- }
310
- },
311
- removeUrlFromBlacklist: pattern => {
312
- const nextBlacklist = blacklist.filter(item => item instanceof RegExp && pattern instanceof RegExp ? item.toString() !== pattern.toString() : item !== pattern);
313
- blacklist.length = 0;
314
- blacklist.push(...nextBlacklist);
315
- },
316
- clearBlacklist: () => {
317
- blacklist.length = 0;
318
- },
319
- getBlacklist: () => [...blacklist]
92
+ }
320
93
  };
321
94
  };
95
+
96
+ /** Reset module-level state for testing */
97
+ export function _resetNetworkForTesting() {
98
+ networkChannel = createEventChannel();
99
+ resetInterceptors();
100
+ }
322
101
  //# sourceMappingURL=NetworkFeature.js.map
@@ -1 +1 @@
1
- {"version":3,"names":["NetworkLogTab","createEventChannel","createObservableStore","DEFAULT_MAX_LOGS","networkChannel","pendingAxiosRequests","Map","axiosRegistrations","WeakMap","originalFetch","fetchInterceptorRefCount","urlRewriter","setUrlRewriter","rewriter","rewriteUrl","url","emitNetworkLog","entry","emit","headersToObject","headers","result","forEach","value","key","Object","keys","getRequestSnapshot","input","init","request","Request","String","method","toUpperCase","undefined","body","parseResponseBody","response","raw","clone","text","JSON","parse","stopFetchInterceptor","Math","max","globalThis","fetch","startFetchInterceptor","interceptedFetch","startTime","Date","now","rewrittenInput","call","duration","data","timestamp","status","statusText","error","Error","message","teardownAxiosInterceptors","axiosInstance","registration","get","refCount","requestId","interceptors","eject","responseId","delete","setupAxiosInterceptorsInternal","existingRegistration","use","config","fullUrl","baseURL","rewritten","startsWith","slice","length","toString","random","substring","trackId","set","Promise","reject","pending","params","success","isUrlBlacklisted","blacklist","some","pattern","RegExp","test","includes","createNetworkFeature","maxLogs","logStore","axiosCleanupMap","nextId","initialized","unsubscribeLogs","stopFetch","handleLog","push","id","cleanupAxiosRegistrations","cleanup","clear","name","label","renderContent","setup","subscribe","getData","listener","setupAxiosInterceptors","existingCleanup","trackedCleanup","addUrlToBlacklist","alreadyExists","item","removeUrlFromBlacklist","nextBlacklist","filter","clearBlacklist","getBlacklist"],"sourceRoot":"../../../src","sources":["features/NetworkFeature.ts"],"mappings":"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","ignoreList":[]}
1
+ {"version":3,"names":["NetworkLogTab","createEventChannel","createObservableStore","urlRewriter","startFetch","startXMLHttpRequest","setupAxios","resetInterceptors","isUrlBlacklisted","url","blacklist","some","pattern","RegExp","test","includes","networkChannel","emitNetworkLog","entry","emit","DEFAULT_MAX_LOGS","createNetworkFeature","config","maxLogs","logStore","axiosCleanupMap","Map","nextId","initialized","unsubscribeLogs","stopFetchFn","stopXMLHttpRequestFn","handleLog","request","push","id","String","name","label","renderContent","setup","subscribe","getData","clear","cleanup","set","forEach","c","listener","setupAxiosInterceptors","axiosInstance","existingCleanup","get","trackedCleanup","delete","_resetNetworkForTesting"],"sourceRoot":"../../../src","sources":["features/NetworkFeature.ts"],"mappings":";;AAAA,SAASA,aAAa,QAAQ,6BAA6B;AAE3D,SAASC,kBAAkB,QAAQ,6BAA6B;AAChE,SAASC,qBAAqB,QAAQ,gCAAgC;AACtE,SAASC,WAAW,QAAQ,8BAA8B;AAC1D,SACEC,UAAU,EACVC,mBAAmB,EACnBC,UAAU,EACVC,iBAAiB,QACZ,oCAAoC;AAK3C;;AAEA,SAASC,gBAAgBA,CACvBC,GAAW,EACXC,SAAiC,EACxB;EACT,IAAI,CAACD,GAAG,EAAE;IACR,OAAO,KAAK;EACd;EACA,OAAOC,SAAS,CAACC,IAAI,CAAEC,OAAO,IAC5BA,OAAO,YAAYC,MAAM,GAAGD,OAAO,CAACE,IAAI,CAACL,GAAG,CAAC,GAAGA,GAAG,CAACM,QAAQ,CAACH,OAAO,CACtE,CAAC;AACH;;AAEA;;AAEA,IAAII,cAAc,GAAGf,kBAAkB,CAAoB,CAAC;AAE5D,SAASgB,cAAcA,CAACC,KAAwB,EAAQ;EACtDF,cAAc,CAACG,IAAI,CAACD,KAAK,CAAC;AAC5B;;AAEA;;AAEA,MAAME,gBAAgB,GAAG,GAAG;AAW5B,OAAO,MAAMC,oBAAoB,GAAIC,MAA6B,IAE7D;EACH,MAAMC,OAAO,GAAGD,MAAM,EAAEC,OAAO,IAAIH,gBAAgB;EACnD,MAAMV,SAAiC,GAAGY,MAAM,EAAEZ,SAAS,GAAG,CAAC,GAAGY,MAAM,CAACZ,SAAS,CAAC,GAAG,EAAE;EACxF,MAAMc,QAAQ,GAAGtB,qBAAqB,CAAkB,CAAC;EACzD,MAAMuB,eAAe,GAAG,IAAIC,GAAG,CAAgC,CAAC;EAEhE,IAAIC,MAAM,GAAG,CAAC;EACd,IAAIC,WAAW,GAAG,KAAK;EACvB,IAAIC,eAAoC,GAAG,IAAI;EAC/C,IAAIC,WAAgC,GAAG,IAAI;EAC3C,IAAIC,oBAAyC,GAAG,IAAI;EAEpD,MAAMC,SAAS,GAAId,KAAwB,IAAK;IAC9C,IAAIV,gBAAgB,CAACU,KAAK,CAACe,OAAO,CAACxB,GAAG,EAAEC,SAAS,CAAC,EAAE;MAClD;IACF;IACAc,QAAQ,CAACU,IAAI,CAAC;MAAE,GAAGhB,KAAK;MAAEiB,EAAE,EAAEC,MAAM,CAACT,MAAM,EAAE;IAAE,CAAC,EAAEJ,OAAO,CAAC;EAC5D,CAAC;EAED,OAAO;IACLc,IAAI,EAAE,SAAS;IACfC,KAAK,EAAE,SAAS;IAChBC,aAAa,EAAEvC,aAAa;IAC5BwC,KAAK,EAAEA,CAAA,KAAM;MACX,IAAIZ,WAAW,EAAE;QACf;MACF;MACAC,eAAe,GAAGb,cAAc,CAACyB,SAAS,CAACT,SAAS,CAAC;MACrDF,WAAW,GAAG1B,UAAU,CAACa,cAAc,CAAC;MACxCc,oBAAoB,GAAG1B,mBAAmB,CAACY,cAAc,CAAC;MAC1DW,WAAW,GAAG,IAAI;IACpB,CAAC;IACDc,OAAO,EAAEA,CAAA,KAAMlB,QAAQ,CAACkB,OAAO,CAAC,CAAC;IACjCC,KAAK,EAAEA,CAAA,KAAM;MACXnB,QAAQ,CAACmB,KAAK,CAAC,CAAC;IAClB,CAAC;IACDC,OAAO,EAAEA,CAAA,KAAM;MACb,IAAI,CAAChB,WAAW,EAAE;QAChB;MACF;MACAzB,WAAW,CAAC0C,GAAG,CAAC,IAAI,CAAC;MACrBhB,eAAe,GAAG,CAAC;MACnBA,eAAe,GAAG,IAAI;MACtBC,WAAW,GAAG,CAAC;MACfA,WAAW,GAAG,IAAI;MAClBC,oBAAoB,GAAG,CAAC;MACxBA,oBAAoB,GAAG,IAAI;MAC3BN,eAAe,CAACqB,OAAO,CAAEC,CAAC,IAAKA,CAAC,CAAC,CAAC,CAAC;MACnCtB,eAAe,CAACkB,KAAK,CAAC,CAAC;MACvBnB,QAAQ,CAACmB,KAAK,CAAC,CAAC;MAChBf,WAAW,GAAG,KAAK;IACrB,CAAC;IACDa,SAAS,EAAGO,QAAQ,IAAKxB,QAAQ,CAACiB,SAAS,CAACO,QAAQ,CAAC;IACrDC,sBAAsB,EAAGC,aAAa,IAAK;MACzC,MAAMC,eAAe,GAAG1B,eAAe,CAAC2B,GAAG,CAACF,aAAa,CAAC;MAC1D,IAAIC,eAAe,EAAE;QACnB,OAAOA,eAAe;MACxB;MACA,MAAMP,OAAO,GAAGtC,UAAU,CAAC4C,aAAa,EAAEjC,cAAc,CAAC;MACzD,MAAMoC,cAAc,GAAGA,CAAA,KAAM;QAC3BT,OAAO,CAAC,CAAC;QACTnB,eAAe,CAAC6B,MAAM,CAACJ,aAAa,CAAC;MACvC,CAAC;MACDzB,eAAe,CAACoB,GAAG,CAACK,aAAa,EAAEG,cAAc,CAAC;MAClD,OAAOA,cAAc;IACvB;EACF,CAAC;AACH,CAAC;;AAED;AACA,OAAO,SAASE,uBAAuBA,CAAA,EAAS;EAC9CvC,cAAc,GAAGf,kBAAkB,CAAoB,CAAC;EACxDM,iBAAiB,CAAC,CAAC;AACrB","ignoreList":[]}
@@ -2,48 +2,26 @@
2
2
 
3
3
  import { TrackLogTab } from '../components/TrackLogTab';
4
4
  import { createEventChannel } from '../utils/createEventChannel';
5
- import { createObservableStore } from '../utils/createObservableStore';
6
- const DEFAULT_MAX_LOGS = 200;
7
- const trackChannel = createEventChannel();
5
+ import { createChannelFeature } from '../utils/createChannelFeature';
6
+ let trackChannel = createEventChannel();
8
7
  export const addTrackLog = eventData => {
9
8
  trackChannel.emit({
10
9
  timestamp: Date.now(),
11
10
  ...eventData
12
11
  });
13
12
  };
14
- export const createTrackFeature = config => {
15
- const maxLogs = config?.maxLogs ?? DEFAULT_MAX_LOGS;
16
- const logStore = createObservableStore();
17
- let nextId = 0;
18
- let unsubscribeLogs = null;
19
- let initialized = false;
20
- return {
21
- name: 'track',
22
- label: 'Track',
23
- renderContent: TrackLogTab,
24
- setup: () => {
25
- if (initialized) {
26
- return;
27
- }
28
- unsubscribeLogs = trackChannel.subscribe(entry => {
29
- logStore.push({
30
- ...entry,
31
- id: String(nextId++)
32
- }, maxLogs);
33
- });
34
- initialized = true;
35
- },
36
- getData: () => logStore.getData(),
37
- clear: () => {
38
- logStore.clear();
39
- },
40
- cleanup: () => {
41
- unsubscribeLogs?.();
42
- unsubscribeLogs = null;
43
- logStore.clear();
44
- initialized = false;
45
- },
46
- subscribe: listener => logStore.subscribe(listener)
47
- };
48
- };
13
+ export const createTrackFeature = config => createChannelFeature(() => trackChannel, (payload, id) => ({
14
+ ...payload,
15
+ id
16
+ }), {
17
+ name: 'track',
18
+ label: 'Track',
19
+ renderContent: TrackLogTab,
20
+ maxLogs: config?.maxLogs
21
+ });
22
+
23
+ /** Reset module-level state for testing */
24
+ export function _resetTrackForTesting() {
25
+ trackChannel = createEventChannel();
26
+ }
49
27
  //# sourceMappingURL=TrackFeature.js.map
@@ -1 +1 @@
1
- {"version":3,"names":["TrackLogTab","createEventChannel","createObservableStore","DEFAULT_MAX_LOGS","trackChannel","addTrackLog","eventData","emit","timestamp","Date","now","createTrackFeature","config","maxLogs","logStore","nextId","unsubscribeLogs","initialized","name","label","renderContent","setup","subscribe","entry","push","id","String","getData","clear","cleanup","listener"],"sourceRoot":"../../../src","sources":["features/TrackFeature.ts"],"mappings":";;AAAA,SAASA,WAAW,QAAQ,2BAA2B;AAEvD,SAASC,kBAAkB,QAAQ,6BAA6B;AAChE,SAASC,qBAAqB,QAAQ,gCAAgC;AAWtE,MAAMC,gBAAgB,GAAG,GAAG;AAC5B,MAAMC,YAAY,GAAGH,kBAAkB,CAAkB,CAAC;AAE1D,OAAO,MAAMI,WAAW,GAAIC,SAAyB,IAAW;EAC9DF,YAAY,CAACG,IAAI,CAAC;IAChBC,SAAS,EAAEC,IAAI,CAACC,GAAG,CAAC,CAAC;IACrB,GAAGJ;EACL,CAAC,CAAC;AACJ,CAAC;AAOD,OAAO,MAAMK,kBAAkB,GAAIC,MAA2B,IAAkC;EAC9F,MAAMC,OAAO,GAAGD,MAAM,EAAEC,OAAO,IAAIV,gBAAgB;EACnD,MAAMW,QAAQ,GAAGZ,qBAAqB,CAAgB,CAAC;EACvD,IAAIa,MAAM,GAAG,CAAC;EACd,IAAIC,eAAoC,GAAG,IAAI;EAC/C,IAAIC,WAAW,GAAG,KAAK;EAEvB,OAAO;IACLC,IAAI,EAAE,OAAO;IACbC,KAAK,EAAE,OAAO;IACdC,aAAa,EAAEpB,WAAW;IAC1BqB,KAAK,EAAEA,CAAA,KAAM;MACX,IAAIJ,WAAW,EAAE;QACf;MACF;MAEAD,eAAe,GAAGZ,YAAY,CAACkB,SAAS,CAAEC,KAAK,IAAK;QAClDT,QAAQ,CAACU,IAAI,CACX;UACE,GAAGD,KAAK;UACRE,EAAE,EAAEC,MAAM,CAACX,MAAM,EAAE;QACrB,CAAC,EACDF,OACF,CAAC;MACH,CAAC,CAAC;MACFI,WAAW,GAAG,IAAI;IACpB,CAAC;IACDU,OAAO,EAAEA,CAAA,KAAMb,QAAQ,CAACa,OAAO,CAAC,CAAC;IACjCC,KAAK,EAAEA,CAAA,KAAM;MACXd,QAAQ,CAACc,KAAK,CAAC,CAAC;IAClB,CAAC;IACDC,OAAO,EAAEA,CAAA,KAAM;MACbb,eAAe,GAAG,CAAC;MACnBA,eAAe,GAAG,IAAI;MACtBF,QAAQ,CAACc,KAAK,CAAC,CAAC;MAChBX,WAAW,GAAG,KAAK;IACrB,CAAC;IACDK,SAAS,EAAGQ,QAAQ,IAAKhB,QAAQ,CAACQ,SAAS,CAACQ,QAAQ;EACtD,CAAC;AACH,CAAC","ignoreList":[]}
1
+ {"version":3,"names":["TrackLogTab","createEventChannel","createChannelFeature","trackChannel","addTrackLog","eventData","emit","timestamp","Date","now","createTrackFeature","config","payload","id","name","label","renderContent","maxLogs","_resetTrackForTesting"],"sourceRoot":"../../../src","sources":["features/TrackFeature.ts"],"mappings":";;AAAA,SAASA,WAAW,QAAQ,2BAA2B;AAEvD,SAASC,kBAAkB,QAAQ,6BAA6B;AAChE,SAASC,oBAAoB,QAAQ,+BAA+B;AASpE,IAAIC,YAAY,GAAGF,kBAAkB,CAAkB,CAAC;AAExD,OAAO,MAAMG,WAAW,GAAIC,SAAyB,IAAW;EAC9DF,YAAY,CAACG,IAAI,CAAC;IAAEC,SAAS,EAAEC,IAAI,CAACC,GAAG,CAAC,CAAC;IAAE,GAAGJ;EAAU,CAAC,CAAC;AAC5D,CAAC;AAOD,OAAO,MAAMK,kBAAkB,GAAIC,MAA2B,IAC5DT,oBAAoB,CAClB,MAAMC,YAAY,EAClB,CAACS,OAAO,EAAEC,EAAE,MAAM;EAAE,GAAGD,OAAO;EAAEC;AAAG,CAAC,CAAC,EACrC;EAAEC,IAAI,EAAE,OAAO;EAAEC,KAAK,EAAE,OAAO;EAAEC,aAAa,EAAEhB,WAAW;EAAEiB,OAAO,EAAEN,MAAM,EAAEM;AAAQ,CACxF,CAAC;;AAEH;AACA,OAAO,SAASC,qBAAqBA,CAAA,EAAS;EAC5Cf,YAAY,GAAGF,kBAAkB,CAAkB,CAAC;AACtD","ignoreList":[]}
@@ -2,9 +2,8 @@
2
2
 
3
3
  import { ZustandLogTab } from '../components/ZustandLogTab';
4
4
  import { createEventChannel } from '../utils/createEventChannel';
5
- import { createObservableStore } from '../utils/createObservableStore';
6
- const DEFAULT_MAX_LOGS = 200;
7
- const zustandChannel = createEventChannel();
5
+ import { createChannelFeature } from '../utils/createChannelFeature';
6
+ let zustandChannel = createEventChannel();
8
7
  export const addZustandLog = (action, prevState, nextState, actionCompleteTime, storeName) => {
9
8
  zustandChannel.emit({
10
9
  timestamp: Date.now(),
@@ -15,6 +14,9 @@ export const addZustandLog = (action, prevState, nextState, actionCompleteTime,
15
14
  storeName
16
15
  });
17
16
  };
17
+
18
+ // ─── Zustand middleware (remains here — it's user-facing API) ──────────
19
+
18
20
  /**
19
21
  * Zustand middleware that logs all state changes to the debug toolkit.
20
22
  *
@@ -31,39 +33,21 @@ export const zustandLogMiddleware = config => (set, get, api) => config((args, r
31
33
  const label = typeof actionName === 'string' ? actionName : typeof args === 'function' ? 'setState' : 'object-set';
32
34
  addZustandLog(label, prevState, get(), duration, api.name);
33
35
  }, get, api);
34
- export const createZustandLogFeature = config => {
35
- const maxLogs = config?.maxLogs ?? DEFAULT_MAX_LOGS;
36
- const logStore = createObservableStore();
37
- let nextId = 0;
38
- let unsubscribeLogs = null;
39
- let initialized = false;
40
- return {
41
- name: 'zustand',
42
- label: 'Zustand',
43
- renderContent: ZustandLogTab,
44
- setup: () => {
45
- if (initialized) {
46
- return;
47
- }
48
- unsubscribeLogs = zustandChannel.subscribe(entry => {
49
- logStore.push({
50
- ...entry,
51
- id: String(nextId++)
52
- }, maxLogs);
53
- });
54
- initialized = true;
55
- },
56
- getData: () => logStore.getData(),
57
- clear: () => {
58
- logStore.clear();
59
- },
60
- cleanup: () => {
61
- unsubscribeLogs?.();
62
- unsubscribeLogs = null;
63
- logStore.clear();
64
- initialized = false;
65
- },
66
- subscribe: listener => logStore.subscribe(listener)
67
- };
68
- };
36
+
37
+ // ─── Feature factory ──────────────────────────────────────────────────
38
+
39
+ export const createZustandLogFeature = config => createChannelFeature(() => zustandChannel, (payload, id) => ({
40
+ ...payload,
41
+ id
42
+ }), {
43
+ name: 'zustand',
44
+ label: 'Zustand',
45
+ renderContent: ZustandLogTab,
46
+ maxLogs: config?.maxLogs
47
+ });
48
+
49
+ /** Reset module-level state for testing */
50
+ export function _resetZustandForTesting() {
51
+ zustandChannel = createEventChannel();
52
+ }
69
53
  //# sourceMappingURL=ZustandLogFeature.js.map
@@ -1 +1 @@
1
- {"version":3,"names":["ZustandLogTab","createEventChannel","createObservableStore","DEFAULT_MAX_LOGS","zustandChannel","addZustandLog","action","prevState","nextState","actionCompleteTime","storeName","emit","timestamp","Date","now","zustandLogMiddleware","config","set","get","api","args","replace","actionName","startTime","duration","label","name","createZustandLogFeature","maxLogs","logStore","nextId","unsubscribeLogs","initialized","renderContent","setup","subscribe","entry","push","id","String","getData","clear","cleanup","listener"],"sourceRoot":"../../../src","sources":["features/ZustandLogFeature.ts"],"mappings":";;AAAA,SAASA,aAAa,QAAQ,6BAA6B;AAE3D,SAASC,kBAAkB,QAAQ,6BAA6B;AAChE,SAASC,qBAAqB,QAAQ,gCAAgC;AAItE,MAAMC,gBAAgB,GAAG,GAAG;AAC5B,MAAMC,cAAc,GAAGH,kBAAkB,CAAoB,CAAC;AAE9D,OAAO,MAAMI,aAAa,GAAGA,CAC3BC,MAAc,EACdC,SAAkB,EAClBC,SAAkB,EAClBC,kBAA2B,EAC3BC,SAAkB,KACT;EACTN,cAAc,CAACO,IAAI,CAAC;IAClBC,SAAS,EAAEC,IAAI,CAACC,GAAG,CAAC,CAAC;IACrBR,MAAM;IACNC,SAAS;IACTC,SAAS;IACTC,kBAAkB;IAClBC;EACF,CAAC,CAAC;AACJ,CAAC;AAuBD;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,OAAO,MAAMK,oBAAoB,GAAOC,MAAwB,IAAK,CACnEC,GAAuB,EACvBC,GAAuB,EACvBC,GAAuB,KAEvBH,MAAM,CACJ,CAACI,IAAuC,EAAEC,OAAiB,EAAEC,UAAuC,KAAK;EACvG,MAAMf,SAAS,GAAGW,GAAG,CAAC,CAAC;EACvB,MAAMK,SAAS,GAAGV,IAAI,CAACC,GAAG,CAAC,CAAC;EAC5BG,GAAG,CAACG,IAAI,EAAEC,OAAO,EAAEC,UAAU,CAAC;EAC9B,MAAME,QAAQ,GAAGX,IAAI,CAACC,GAAG,CAAC,CAAC,GAAGS,SAAS;EACvC,MAAME,KAAK,GAAG,OAAOH,UAAU,KAAK,QAAQ,GACxCA,UAAU,GACV,OAAOF,IAAI,KAAK,UAAU,GAAG,UAAU,GAAG,YAAY;EAC1Df,aAAa,CACXoB,KAAK,EACLlB,SAAS,EACTW,GAAG,CAAC,CAAC,EACLM,QAAQ,EACRL,GAAG,CAACO,IACN,CAAC;AACH,CAAC,EACDR,GAAG,EACHC,GACF,CAAC;AAOH,OAAO,MAAMQ,uBAAuB,GAAIX,MAA6B,IAAoC;EACvG,MAAMY,OAAO,GAAGZ,MAAM,EAAEY,OAAO,IAAIzB,gBAAgB;EACnD,MAAM0B,QAAQ,GAAG3B,qBAAqB,CAAkB,CAAC;EACzD,IAAI4B,MAAM,GAAG,CAAC;EACd,IAAIC,eAAoC,GAAG,IAAI;EAC/C,IAAIC,WAAW,GAAG,KAAK;EAEvB,OAAO;IACLN,IAAI,EAAE,SAAS;IACfD,KAAK,EAAE,SAAS;IAChBQ,aAAa,EAAEjC,aAAa;IAC5BkC,KAAK,EAAEA,CAAA,KAAM;MACX,IAAIF,WAAW,EAAE;QACf;MACF;MAEAD,eAAe,GAAG3B,cAAc,CAAC+B,SAAS,CAAEC,KAAK,IAAK;QACpDP,QAAQ,CAACQ,IAAI,CACX;UACE,GAAGD,KAAK;UACRE,EAAE,EAAEC,MAAM,CAACT,MAAM,EAAE;QACrB,CAAC,EACDF,OACF,CAAC;MACH,CAAC,CAAC;MACFI,WAAW,GAAG,IAAI;IACpB,CAAC;IACDQ,OAAO,EAAEA,CAAA,KAAMX,QAAQ,CAACW,OAAO,CAAC,CAAC;IACjCC,KAAK,EAAEA,CAAA,KAAM;MACXZ,QAAQ,CAACY,KAAK,CAAC,CAAC;IAClB,CAAC;IACDC,OAAO,EAAEA,CAAA,KAAM;MACbX,eAAe,GAAG,CAAC;MACnBA,eAAe,GAAG,IAAI;MACtBF,QAAQ,CAACY,KAAK,CAAC,CAAC;MAChBT,WAAW,GAAG,KAAK;IACrB,CAAC;IACDG,SAAS,EAAGQ,QAAQ,IAAKd,QAAQ,CAACM,SAAS,CAACQ,QAAQ;EACtD,CAAC;AACH,CAAC","ignoreList":[]}
1
+ {"version":3,"names":["ZustandLogTab","createEventChannel","createChannelFeature","zustandChannel","addZustandLog","action","prevState","nextState","actionCompleteTime","storeName","emit","timestamp","Date","now","zustandLogMiddleware","config","set","get","api","args","replace","actionName","startTime","duration","label","name","createZustandLogFeature","payload","id","renderContent","maxLogs","_resetZustandForTesting"],"sourceRoot":"../../../src","sources":["features/ZustandLogFeature.ts"],"mappings":";;AAAA,SAASA,aAAa,QAAQ,6BAA6B;AAE3D,SAASC,kBAAkB,QAAQ,6BAA6B;AAChE,SAASC,oBAAoB,QAAQ,+BAA+B;AAIpE,IAAIC,cAAc,GAAGF,kBAAkB,CAAoB,CAAC;AAE5D,OAAO,MAAMG,aAAa,GAAGA,CAC3BC,MAAc,EACdC,SAAkB,EAClBC,SAAkB,EAClBC,kBAA2B,EAC3BC,SAAkB,KACT;EACTN,cAAc,CAACO,IAAI,CAAC;IAClBC,SAAS,EAAEC,IAAI,CAACC,GAAG,CAAC,CAAC;IACrBR,MAAM;IACNC,SAAS;IACTC,SAAS;IACTC,kBAAkB;IAClBC;EACF,CAAC,CAAC;AACJ,CAAC;;AAED;;AAuBA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,OAAO,MAAMK,oBAAoB,GAAOC,MAAwB,IAAK,CACnEC,GAAuB,EACvBC,GAAuB,EACvBC,GAAuB,KAEvBH,MAAM,CACJ,CAACI,IAAuC,EAAEC,OAAiB,EAAEC,UAAuC,KAAK;EACvG,MAAMf,SAAS,GAAGW,GAAG,CAAC,CAAC;EACvB,MAAMK,SAAS,GAAGV,IAAI,CAACC,GAAG,CAAC,CAAC;EAC5BG,GAAG,CAACG,IAAI,EAAEC,OAAO,EAAEC,UAAU,CAAC;EAC9B,MAAME,QAAQ,GAAGX,IAAI,CAACC,GAAG,CAAC,CAAC,GAAGS,SAAS;EACvC,MAAME,KAAK,GAAG,OAAOH,UAAU,KAAK,QAAQ,GACxCA,UAAU,GACV,OAAOF,IAAI,KAAK,UAAU,GAAG,UAAU,GAAG,YAAY;EAC1Df,aAAa,CACXoB,KAAK,EACLlB,SAAS,EACTW,GAAG,CAAC,CAAC,EACLM,QAAQ,EACRL,GAAG,CAACO,IACN,CAAC;AACH,CAAC,EACDR,GAAG,EACHC,GACF,CAAC;;AAEH;;AAOA,OAAO,MAAMQ,uBAAuB,GAAIX,MAA6B,IACnEb,oBAAoB,CAClB,MAAMC,cAAc,EACpB,CAACwB,OAAO,EAAEC,EAAE,MAAM;EAAE,GAAGD,OAAO;EAAEC;AAAG,CAAC,CAAC,EACrC;EAAEH,IAAI,EAAE,SAAS;EAAED,KAAK,EAAE,SAAS;EAAEK,aAAa,EAAE7B,aAAa;EAAE8B,OAAO,EAAEf,MAAM,EAAEe;AAAQ,CAC9F,CAAC;;AAEH;AACA,OAAO,SAASC,uBAAuBA,CAAA,EAAS;EAC9C5B,cAAc,GAAGF,kBAAkB,CAAoB,CAAC;AAC1D","ignoreList":[]}
@@ -1 +1 @@
1
- {"version":3,"names":["useEffect","useRef","addNavigationLog","safeStringify","getActiveRouteName","state","currentState","routes","index","route","name","useNavigationLogger","navigationRef","previousRouteNameRef","timeoutId","unsubscribe","disposed","attachListener","ref","current","addListener","setTimeout","currentRouteName","getCurrentRoute","getRootState","navState","nextRouteName","undefined","clearTimeout"],"sourceRoot":"../../../src","sources":["hooks/useNavigationLogger.ts"],"mappings":";;AAAA,SAASA,SAAS,EAAEC,MAAM,QAAQ,OAAO;AACzC,SAASC,gBAAgB,QAAQ,kCAAkC;AACnE,SAASC,aAAa,QAAQ,wBAAwB;AAQtD,SAASC,kBAAkBA,CAACC,KAAc,EAAU;EAClD,IAAIC,YAAY,GAAGD,KAKN;EAEb,OAAOC,YAAY,EAAEC,MAAM,IAAI,OAAOD,YAAY,CAACE,KAAK,KAAK,QAAQ,EAAE;IACrE,MAAMC,KAAK,GAAGH,YAAY,CAACC,MAAM,CAACD,YAAY,CAACE,KAAK,CAAC;IACrD,IAAI,CAACC,KAAK,EAAE;MACV,OAAO,EAAE;IACX;IACA,IAAI,CAACA,KAAK,CAACJ,KAAK,EAAE;MAChB,OAAOI,KAAK,CAACC,IAAI,IAAI,EAAE;IACzB;IACAJ,YAAY,GAAGG,KAAK,CAACJ,KAA4B;EACnD;EAEA,OAAO,EAAE;AACX;;AAGA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,OAAO,SAASM,mBAAmBA,CAACC,aAA6D,EAAE;EACjG,MAAMC,oBAAoB,GAAGZ,MAAM,CAAC,EAAE,CAAC;EAEvCD,SAAS,CAAC,MAAM;IACd,IAAIc,SAAoD;IACxD,IAAIC,WAAqC;IACzC,IAAIC,QAAQ,GAAG,KAAK;IAEpB,MAAMC,cAAc,GAAGA,CAAA,KAAM;MAC3B,IAAID,QAAQ,EAAE;QACZ;MACF;MAEA,MAAME,GAAG,GAAGN,aAAa,CAACO,OAAO;MACjC,IAAI,CAACD,GAAG,IAAI,OAAOA,GAAG,CAACE,WAAW,KAAK,UAAU,EAAE;QACjDN,SAAS,GAAGO,UAAU,CAACJ,cAAc,EAAE,GAAG,CAAC;QAC3C;MACF;MAEA,MAAMK,gBAAgB,GACpBJ,GAAG,CAACK,eAAe,GAAG,CAAC,EAAEb,IAAI,IAC7BN,kBAAkB,CAACc,GAAG,CAACM,YAAY,GAAG,CAAC,CAAC;MAC1C,IAAIF,gBAAgB,EAAE;QACpBT,oBAAoB,CAACM,OAAO,GAAGG,gBAAgB;MACjD;MAEAP,WAAW,GAAGG,GAAG,CAACE,WAAW,CAAC,OAAO,EAAE,MAAM;QAC3C,IAAI;UACF,MAAMK,QAAQ,GAAGP,GAAG,CAACM,YAAY,GAAG,CAAC;UACrC,MAAME,aAAa,GACjBR,GAAG,CAACK,eAAe,GAAG,CAAC,EAAEb,IAAI,IAC7BN,kBAAkB,CAACqB,QAAQ,CAAC;UAE9B,IAAI,CAACC,aAAa,IAAIA,aAAa,KAAKb,oBAAoB,CAACM,OAAO,EAAE;YACpE;UACF;UAEAjB,gBAAgB,CACd,UAAU,EACVW,oBAAoB,CAACM,OAAO,EAC5BO,aAAa,EACbC,SAAS,EACTA,SAAS,EACTxB,aAAa,CAACsB,QAAQ,CACxB,CAAC;UAEDZ,oBAAoB,CAACM,OAAO,GAAGO,aAAa;QAC9C,CAAC,CAAC,MAAM;UACN;QAAA;MAEJ,CAAC,CAAC;IACJ,CAAC;IAEDT,cAAc,CAAC,CAAC;IAEhB,OAAO,MAAM;MACXD,QAAQ,GAAG,IAAI;MACf,IAAIF,SAAS,EAAE;QACbc,YAAY,CAACd,SAAS,CAAC;MACzB;MACAC,WAAW,GAAG,CAAC;IACjB,CAAC;EACH,CAAC,EAAE,CAACH,aAAa,CAAC,CAAC;AACrB","ignoreList":[]}
1
+ {"version":3,"names":["useEffect","useRef","addNavigationLog","safeStringify","getActiveRouteName","state","currentState","routes","index","route","name","useNavigationLogger","navigationRef","previousRouteNameRef","timeoutId","unsubscribe","disposed","attachListener","ref","current","addListener","setTimeout","currentRouteName","getCurrentRoute","getRootState","navState","nextRouteName","undefined","clearTimeout"],"sourceRoot":"../../../src","sources":["hooks/useNavigationLogger.ts"],"mappings":";;AAAA,SAASA,SAAS,EAAEC,MAAM,QAAQ,OAAO;AACzC,SAASC,gBAAgB,QAAQ,kCAAkC;AACnE,SAASC,aAAa,QAAQ,wBAAwB;AAGtD,SAASC,kBAAkBA,CAACC,KAAc,EAAU;EAClD,IAAIC,YAAY,GAAGD,KAKN;EAEb,OAAOC,YAAY,EAAEC,MAAM,IAAI,OAAOD,YAAY,CAACE,KAAK,KAAK,QAAQ,EAAE;IACrE,MAAMC,KAAK,GAAGH,YAAY,CAACC,MAAM,CAACD,YAAY,CAACE,KAAK,CAAC;IACrD,IAAI,CAACC,KAAK,EAAE;MACV,OAAO,EAAE;IACX;IACA,IAAI,CAACA,KAAK,CAACJ,KAAK,EAAE;MAChB,OAAOI,KAAK,CAACC,IAAI,IAAI,EAAE;IACzB;IACAJ,YAAY,GAAGG,KAAK,CAACJ,KAA4B;EACnD;EAEA,OAAO,EAAE;AACX;;AAGA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,OAAO,SAASM,mBAAmBA,CAACC,aAA6D,EAAE;EACjG,MAAMC,oBAAoB,GAAGZ,MAAM,CAAC,EAAE,CAAC;EAEvCD,SAAS,CAAC,MAAM;IACd,IAAIc,SAAoD;IACxD,IAAIC,WAAqC;IACzC,IAAIC,QAAQ,GAAG,KAAK;IAEpB,MAAMC,cAAc,GAAGA,CAAA,KAAM;MAC3B,IAAID,QAAQ,EAAE;QACZ;MACF;MAEA,MAAME,GAAG,GAAGN,aAAa,CAACO,OAAO;MACjC,IAAI,CAACD,GAAG,IAAI,OAAOA,GAAG,CAACE,WAAW,KAAK,UAAU,EAAE;QACjDN,SAAS,GAAGO,UAAU,CAACJ,cAAc,EAAE,GAAG,CAAC;QAC3C;MACF;MAEA,MAAMK,gBAAgB,GACpBJ,GAAG,CAACK,eAAe,GAAG,CAAC,EAAEb,IAAI,IAC7BN,kBAAkB,CAACc,GAAG,CAACM,YAAY,GAAG,CAAC,CAAC;MAC1C,IAAIF,gBAAgB,EAAE;QACpBT,oBAAoB,CAACM,OAAO,GAAGG,gBAAgB;MACjD;MAEAP,WAAW,GAAGG,GAAG,CAACE,WAAW,CAAC,OAAO,EAAE,MAAM;QAC3C,IAAI;UACF,MAAMK,QAAQ,GAAGP,GAAG,CAACM,YAAY,GAAG,CAAC;UACrC,MAAME,aAAa,GACjBR,GAAG,CAACK,eAAe,GAAG,CAAC,EAAEb,IAAI,IAC7BN,kBAAkB,CAACqB,QAAQ,CAAC;UAE9B,IAAI,CAACC,aAAa,IAAIA,aAAa,KAAKb,oBAAoB,CAACM,OAAO,EAAE;YACpE;UACF;UAEAjB,gBAAgB,CACd,UAAU,EACVW,oBAAoB,CAACM,OAAO,EAC5BO,aAAa,EACbC,SAAS,EACTA,SAAS,EACTxB,aAAa,CAACsB,QAAQ,CACxB,CAAC;UAEDZ,oBAAoB,CAACM,OAAO,GAAGO,aAAa;QAC9C,CAAC,CAAC,MAAM;UACN;QAAA;MAEJ,CAAC,CAAC;IACJ,CAAC;IAEDT,cAAc,CAAC,CAAC;IAEhB,OAAO,MAAM;MACXD,QAAQ,GAAG,IAAI;MACf,IAAIF,SAAS,EAAE;QACbc,YAAY,CAACd,SAAS,CAAC;MACzB;MACAC,WAAW,GAAG,CAAC;IACjB,CAAC;EACH,CAAC,EAAE,CAACH,aAAa,CAAC,CAAC;AACrB","ignoreList":[]}
@@ -3,20 +3,19 @@
3
3
  // Core
4
4
  export { DebugToolkit } from './core/DebugToolkit';
5
5
  export { DebugToolkitProvider, useDebugToolkit } from './core/DebugToolkitProvider';
6
- export { initializeDebugToolkit, isDebugMode } from './initialize';
6
+ export { DebugView } from './components/DebugView';
7
+ export { initializeDebugToolkit } from './initialize';
7
8
  // Feature factories
8
9
  export { createNetworkFeature } from './features/NetworkFeature';
9
10
  export { createConsoleLogFeature } from './features/ConsoleLogFeature';
10
11
  export { createZustandLogFeature, zustandLogMiddleware, addZustandLog } from './features/ZustandLogFeature';
11
12
  export { createNavigationLogFeature, addNavigationLog } from './features/NavigationLogFeature';
12
13
  export { createTrackFeature, addTrackLog } from './features/TrackFeature';
13
- export { createThirdPartyLibsFeature } from './features/ThirdPartyLibsFeature';
14
14
  export { createEnvironmentFeature } from './features/EnvironmentFeature';
15
15
  export { createClipboardFeature } from './features/ClipboardFeature';
16
16
 
17
17
  // Hooks
18
18
  export { useNavigationLogger } from './hooks/useNavigationLogger';
19
- export { useSlideDetailAnimation } from './hooks/useSlideDetailAnimation';
20
19
 
21
20
  // Utilities
22
21
  export { safeStringify } from './utils/safeStringify';
@@ -1 +1 @@
1
- {"version":3,"names":["DebugToolkit","DebugToolkitProvider","useDebugToolkit","initializeDebugToolkit","isDebugMode","createNetworkFeature","createConsoleLogFeature","createZustandLogFeature","zustandLogMiddleware","addZustandLog","createNavigationLogFeature","addNavigationLog","createTrackFeature","addTrackLog","createThirdPartyLibsFeature","createEnvironmentFeature","createClipboardFeature","useNavigationLogger","useSlideDetailAnimation","safeStringify","copyToComputer","logToComputer","fmt","default"],"sourceRoot":"../../src","sources":["index.ts"],"mappings":";;AAAA;AACA,SAASA,YAAY,QAAQ,qBAAqB;AAClD,SAASC,oBAAoB,EAAEC,eAAe,QAAQ,6BAA6B;AACnF,SAASC,sBAAsB,EAAEC,WAAW,QAAQ,cAAc;AAGlE;AACA,SAASC,oBAAoB,QAAQ,2BAA2B;AAEhE,SAASC,uBAAuB,QAAQ,8BAA8B;AAEtE,SAASC,uBAAuB,EAAEC,oBAAoB,EAAEC,aAAa,QAAQ,8BAA8B;AAE3G,SAASC,0BAA0B,EAAEC,gBAAgB,QAAQ,iCAAiC;AAE9F,SAASC,kBAAkB,EAAEC,WAAW,QAAQ,yBAAyB;AAEzE,SAASC,2BAA2B,QAAQ,kCAAkC;AAC9E,SAASC,wBAAwB,QAAQ,+BAA+B;AAExE,SAASC,sBAAsB,QAAQ,6BAA6B;;AAEpE;AACA,SAASC,mBAAmB,QAAQ,6BAA6B;AACjE,SAASC,uBAAuB,QAAQ,iCAAiC;;AAEzE;AACA,SAASC,aAAa,QAAQ,uBAAuB;AACrD,SAASC,cAAc,EAAEC,aAAa,EAAEC,GAAG,QAAQ,wBAAwB;;AAG3E;;AAmBA;AACA,SAASnB,sBAAsB,IAAIoB,OAAO,QAAQ,cAAc","ignoreList":[]}
1
+ {"version":3,"names":["DebugToolkit","DebugToolkitProvider","useDebugToolkit","DebugView","initializeDebugToolkit","createNetworkFeature","createConsoleLogFeature","createZustandLogFeature","zustandLogMiddleware","addZustandLog","createNavigationLogFeature","addNavigationLog","createTrackFeature","addTrackLog","createEnvironmentFeature","createClipboardFeature","useNavigationLogger","safeStringify","copyToComputer","logToComputer","fmt","default"],"sourceRoot":"../../src","sources":["index.ts"],"mappings":";;AAAA;AACA,SAASA,YAAY,QAAQ,qBAAqB;AAClD,SAASC,oBAAoB,EAAEC,eAAe,QAAQ,6BAA6B;AACnF,SAASC,SAAS,QAAQ,wBAAwB;AAElD,SAASC,sBAAsB,QAAQ,cAAc;AAGrD;AACA,SAASC,oBAAoB,QAAQ,2BAA2B;AAEhE,SAASC,uBAAuB,QAAQ,8BAA8B;AAEtE,SAASC,uBAAuB,EAAEC,oBAAoB,EAAEC,aAAa,QAAQ,8BAA8B;AAE3G,SAASC,0BAA0B,EAAEC,gBAAgB,QAAQ,iCAAiC;AAE9F,SAASC,kBAAkB,EAAEC,WAAW,QAAQ,yBAAyB;AAEzE,SAASC,wBAAwB,QAAQ,+BAA+B;AAExE,SAASC,sBAAsB,QAAQ,6BAA6B;;AAEpE;AACA,SAASC,mBAAmB,QAAQ,6BAA6B;;AAEjE;AACA,SAASC,aAAa,QAAQ,uBAAuB;AACrD,SAASC,cAAc,EAAEC,aAAa,EAAEC,GAAG,QAAQ,wBAAwB;;AAG3E;;AAeA;AACA,SAAShB,sBAAsB,IAAIiB,OAAO,QAAQ,cAAc","ignoreList":[]}