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,245 +3,32 @@
3
3
  Object.defineProperty(exports, "__esModule", {
4
4
  value: true
5
5
  });
6
+ exports._resetNetworkForTesting = _resetNetworkForTesting;
6
7
  exports.createNetworkFeature = void 0;
7
- exports.setUrlRewriter = setUrlRewriter;
8
8
  var _NetworkLogTab = require("../components/NetworkLogTab");
9
9
  var _createEventChannel = require("../utils/createEventChannel");
10
10
  var _createObservableStore = require("../utils/createObservableStore");
11
- const DEFAULT_MAX_LOGS = 200;
12
- const networkChannel = (0, _createEventChannel.createEventChannel)();
13
- const pendingAxiosRequests = new Map();
14
- const axiosRegistrations = new WeakMap();
15
- let originalFetch = null;
16
- let fetchInterceptorRefCount = 0;
17
- let urlRewriter = null;
18
- function setUrlRewriter(rewriter) {
19
- urlRewriter = rewriter;
20
- }
21
- function rewriteUrl(url) {
22
- if (!urlRewriter) return url;
23
- try {
24
- return urlRewriter(url);
25
- } catch {
26
- return url;
27
- }
28
- }
29
- function emitNetworkLog(entry) {
30
- networkChannel.emit(entry);
31
- }
32
- function headersToObject(headers) {
33
- const result = {};
34
- if (!headers) {
35
- return result;
36
- }
37
- if (typeof headers.forEach === 'function') {
38
- headers.forEach((value, key) => {
39
- result[key] = value;
40
- });
41
- return result;
42
- }
43
- Object.keys(headers).forEach(key => {
44
- result[key] = headers[key];
45
- });
46
- return result;
47
- }
48
- function getRequestSnapshot(input, init) {
49
- const request = input instanceof Request ? input : null;
50
- return {
51
- url: typeof input === 'string' ? input : request?.url ?? String(input),
52
- method: (init?.method || request?.method || 'GET').toUpperCase(),
53
- headers: init?.headers ? headersToObject(init.headers) : request?.headers ? headersToObject(request.headers) : undefined,
54
- body: init?.body
55
- };
56
- }
57
- async function parseResponseBody(response) {
58
- const raw = await response.clone().text();
59
- if (!raw) {
60
- return undefined;
61
- }
62
- try {
63
- return JSON.parse(raw);
64
- } catch {
65
- return raw;
66
- }
67
- }
68
- function stopFetchInterceptor() {
69
- fetchInterceptorRefCount = Math.max(0, fetchInterceptorRefCount - 1);
70
- if (fetchInterceptorRefCount === 0 && originalFetch) {
71
- globalThis.fetch = originalFetch;
72
- originalFetch = null;
73
- }
74
- }
75
- function startFetchInterceptor() {
76
- fetchInterceptorRefCount += 1;
77
- if (originalFetch) {
78
- return () => {
79
- stopFetchInterceptor();
80
- };
81
- }
82
- originalFetch = globalThis.fetch;
83
- globalThis.fetch = async function interceptedFetch(input, init) {
84
- const startTime = Date.now();
85
- let rewrittenInput = input;
86
- if (urlRewriter) {
87
- if (typeof input === 'string') {
88
- rewrittenInput = rewriteUrl(input);
89
- } else if (input instanceof Request) {
90
- rewrittenInput = new Request(rewriteUrl(input.url), input);
91
- }
92
- }
93
- const request = getRequestSnapshot(rewrittenInput, init);
94
- try {
95
- const response = await originalFetch.call(globalThis, rewrittenInput, init);
96
- const duration = Date.now() - startTime;
97
- try {
98
- const data = await parseResponseBody(response);
99
- emitNetworkLog({
100
- timestamp: startTime,
101
- duration,
102
- request,
103
- response: {
104
- status: response.status,
105
- statusText: response.statusText,
106
- data
107
- }
108
- });
109
- } catch {
110
- emitNetworkLog({
111
- timestamp: startTime,
112
- duration,
113
- request,
114
- response: {
115
- status: response.status,
116
- statusText: response.statusText
117
- }
118
- });
119
- }
120
- return response;
121
- } catch (error) {
122
- emitNetworkLog({
123
- timestamp: startTime,
124
- duration: Date.now() - startTime,
125
- request,
126
- error: error instanceof Error ? error.message : String(error)
127
- });
128
- throw error;
129
- }
130
- };
131
- return () => {
132
- stopFetchInterceptor();
133
- };
134
- }
135
- function teardownAxiosInterceptors(axiosInstance) {
136
- const registration = axiosRegistrations.get(axiosInstance);
137
- if (!registration) {
138
- return;
139
- }
140
- registration.refCount -= 1;
141
- if (registration.refCount > 0) {
142
- return;
143
- }
144
- if (typeof registration.requestId === 'number') {
145
- axiosInstance.interceptors.request.eject?.(registration.requestId);
146
- }
147
- if (typeof registration.responseId === 'number') {
148
- axiosInstance.interceptors.response.eject?.(registration.responseId);
149
- }
150
- axiosRegistrations.delete(axiosInstance);
151
- }
152
- function setupAxiosInterceptorsInternal(axiosInstance) {
153
- const existingRegistration = axiosRegistrations.get(axiosInstance);
154
- if (existingRegistration) {
155
- existingRegistration.refCount += 1;
156
- return () => {
157
- teardownAxiosInterceptors(axiosInstance);
158
- };
159
- }
160
- const requestId = axiosInstance.interceptors.request.use(config => {
161
- // Rewrite URL if rewriter is set
162
- if (urlRewriter && config.url) {
163
- const fullUrl = config.baseURL ? `${config.baseURL}${config.url}` : config.url;
164
- const rewritten = rewriteUrl(fullUrl);
165
- if (rewritten !== fullUrl) {
166
- if (config.baseURL && rewritten.startsWith(config.baseURL)) {
167
- config.url = rewritten.slice(config.baseURL.length);
168
- } else {
169
- config.baseURL = '';
170
- config.url = rewritten;
171
- }
172
- }
173
- }
174
- if (!config.headers) {
175
- config.headers = {};
176
- }
177
- if (!config.headers['X-Request-Id']) {
178
- config.headers['X-Request-Id'] = Date.now().toString() + Math.random().toString(36).substring(2, 10);
179
- }
180
- const trackId = config.headers['X-Request-Id'];
181
- pendingAxiosRequests.set(trackId, {
182
- startTime: Date.now(),
183
- timestamp: Date.now()
184
- });
185
- return config;
186
- }, error => Promise.reject(error));
187
- const responseId = axiosInstance.interceptors.response.use(response => {
188
- const trackId = response.config?.headers?.['X-Request-Id'];
189
- const pending = pendingAxiosRequests.get(trackId);
190
- if (pending) {
191
- emitNetworkLog({
192
- timestamp: pending.timestamp,
193
- duration: Date.now() - pending.startTime,
194
- request: {
195
- url: `${response.config.baseURL || ''}${response.config.url}`,
196
- method: (response.config.method || 'GET').toUpperCase(),
197
- headers: response.config.headers,
198
- body: response.config.data || response.config.params
199
- },
200
- response: {
201
- status: response.status,
202
- statusText: response.statusText,
203
- headers: response.headers,
204
- data: response.data,
205
- success: response.data && typeof response.data === 'object' ? response.data.success !== false : response.status >= 200 && response.status < 300
206
- }
207
- });
208
- pendingAxiosRequests.delete(trackId);
209
- }
210
- return response;
211
- }, error => {
212
- if (error.config) {
213
- const trackId = error.config.headers?.['X-Request-Id'];
214
- const pending = pendingAxiosRequests.get(trackId);
215
- emitNetworkLog({
216
- timestamp: pending ? pending.timestamp : Date.now(),
217
- duration: pending ? Date.now() - pending.startTime : undefined,
218
- request: {
219
- url: `${error.config.baseURL || ''}${error.config.url}`,
220
- method: (error.config.method || 'GET').toUpperCase(),
221
- headers: error.config.headers,
222
- body: error.config.data || error.config.params
223
- },
224
- error: error.message
225
- });
226
- pendingAxiosRequests.delete(trackId);
227
- }
228
- return Promise.reject(error);
229
- });
230
- axiosRegistrations.set(axiosInstance, {
231
- refCount: 1,
232
- requestId: typeof requestId === 'number' ? requestId : undefined,
233
- responseId: typeof responseId === 'number' ? responseId : undefined
234
- });
235
- return () => {
236
- teardownAxiosInterceptors(axiosInstance);
237
- };
238
- }
11
+ var _urlRewriterRegistry = require("../utils/urlRewriterRegistry");
12
+ var _networkInterceptor = require("../interceptors/networkInterceptor");
13
+ // ─── Utilities ────────────────────────────────────────
14
+
239
15
  function isUrlBlacklisted(url, blacklist) {
240
16
  if (!url) {
241
17
  return false;
242
18
  }
243
19
  return blacklist.some(pattern => pattern instanceof RegExp ? pattern.test(url) : url.includes(pattern));
244
20
  }
21
+
22
+ // ─── Channel (shared pub-sub backbone) ─────────────────
23
+
24
+ let networkChannel = (0, _createEventChannel.createEventChannel)();
25
+ function emitNetworkLog(entry) {
26
+ networkChannel.emit(entry);
27
+ }
28
+
29
+ // ─── Feature factory ──────────────────────────────────
30
+
31
+ const DEFAULT_MAX_LOGS = 200;
245
32
  const createNetworkFeature = config => {
246
33
  const maxLogs = config?.maxLogs ?? DEFAULT_MAX_LOGS;
247
34
  const blacklist = config?.blacklist ? [...config.blacklist] : [];
@@ -250,7 +37,8 @@ const createNetworkFeature = config => {
250
37
  let nextId = 0;
251
38
  let initialized = false;
252
39
  let unsubscribeLogs = null;
253
- let stopFetch = null;
40
+ let stopFetchFn = null;
41
+ let stopXMLHttpRequestFn = null;
254
42
  const handleLog = entry => {
255
43
  if (isUrlBlacklisted(entry.request.url, blacklist)) {
256
44
  return;
@@ -260,10 +48,6 @@ const createNetworkFeature = config => {
260
48
  id: String(nextId++)
261
49
  }, maxLogs);
262
50
  };
263
- const cleanupAxiosRegistrations = () => {
264
- axiosCleanupMap.forEach(cleanup => cleanup());
265
- axiosCleanupMap.clear();
266
- };
267
51
  return {
268
52
  name: 'network',
269
53
  label: 'Network',
@@ -273,7 +57,8 @@ const createNetworkFeature = config => {
273
57
  return;
274
58
  }
275
59
  unsubscribeLogs = networkChannel.subscribe(handleLog);
276
- stopFetch = startFetchInterceptor();
60
+ stopFetchFn = (0, _networkInterceptor.startFetch)(emitNetworkLog);
61
+ stopXMLHttpRequestFn = (0, _networkInterceptor.startXMLHttpRequest)(emitNetworkLog);
277
62
  initialized = true;
278
63
  },
279
64
  getData: () => logStore.getData(),
@@ -284,12 +69,15 @@ const createNetworkFeature = config => {
284
69
  if (!initialized) {
285
70
  return;
286
71
  }
287
- setUrlRewriter(null);
72
+ _urlRewriterRegistry.urlRewriter.set(null);
288
73
  unsubscribeLogs?.();
289
74
  unsubscribeLogs = null;
290
- stopFetch?.();
291
- stopFetch = null;
292
- cleanupAxiosRegistrations();
75
+ stopFetchFn?.();
76
+ stopFetchFn = null;
77
+ stopXMLHttpRequestFn?.();
78
+ stopXMLHttpRequestFn = null;
79
+ axiosCleanupMap.forEach(c => c());
80
+ axiosCleanupMap.clear();
293
81
  logStore.clear();
294
82
  initialized = false;
295
83
  },
@@ -299,30 +87,21 @@ const createNetworkFeature = config => {
299
87
  if (existingCleanup) {
300
88
  return existingCleanup;
301
89
  }
302
- const cleanup = setupAxiosInterceptorsInternal(axiosInstance);
90
+ const cleanup = (0, _networkInterceptor.setupAxios)(axiosInstance, emitNetworkLog);
303
91
  const trackedCleanup = () => {
304
92
  cleanup();
305
93
  axiosCleanupMap.delete(axiosInstance);
306
94
  };
307
95
  axiosCleanupMap.set(axiosInstance, trackedCleanup);
308
96
  return trackedCleanup;
309
- },
310
- addUrlToBlacklist: pattern => {
311
- const alreadyExists = blacklist.some(item => item instanceof RegExp && pattern instanceof RegExp ? item.toString() === pattern.toString() : item === pattern);
312
- if (!alreadyExists) {
313
- blacklist.push(pattern);
314
- }
315
- },
316
- removeUrlFromBlacklist: pattern => {
317
- const nextBlacklist = blacklist.filter(item => item instanceof RegExp && pattern instanceof RegExp ? item.toString() !== pattern.toString() : item !== pattern);
318
- blacklist.length = 0;
319
- blacklist.push(...nextBlacklist);
320
- },
321
- clearBlacklist: () => {
322
- blacklist.length = 0;
323
- },
324
- getBlacklist: () => [...blacklist]
97
+ }
325
98
  };
326
99
  };
100
+
101
+ /** Reset module-level state for testing */
327
102
  exports.createNetworkFeature = createNetworkFeature;
103
+ function _resetNetworkForTesting() {
104
+ networkChannel = (0, _createEventChannel.createEventChannel)();
105
+ (0, _networkInterceptor.resetInterceptors)();
106
+ }
328
107
  //# sourceMappingURL=NetworkFeature.js.map
@@ -1 +1 @@
1
- {"version":3,"names":["_NetworkLogTab","require","_createEventChannel","_createObservableStore","DEFAULT_MAX_LOGS","networkChannel","createEventChannel","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","createObservableStore","axiosCleanupMap","nextId","initialized","unsubscribeLogs","stopFetch","handleLog","push","id","cleanupAxiosRegistrations","cleanup","clear","name","label","renderContent","NetworkLogTab","setup","subscribe","getData","listener","setupAxiosInterceptors","existingCleanup","trackedCleanup","addUrlToBlacklist","alreadyExists","item","removeUrlFromBlacklist","nextBlacklist","filter","clearBlacklist","getBlacklist","exports"],"sourceRoot":"../../../src","sources":["features/NetworkFeature.ts"],"mappings":"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","ignoreList":[]}
1
+ {"version":3,"names":["_NetworkLogTab","require","_createEventChannel","_createObservableStore","_urlRewriterRegistry","_networkInterceptor","isUrlBlacklisted","url","blacklist","some","pattern","RegExp","test","includes","networkChannel","createEventChannel","emitNetworkLog","entry","emit","DEFAULT_MAX_LOGS","createNetworkFeature","config","maxLogs","logStore","createObservableStore","axiosCleanupMap","Map","nextId","initialized","unsubscribeLogs","stopFetchFn","stopXMLHttpRequestFn","handleLog","request","push","id","String","name","label","renderContent","NetworkLogTab","setup","subscribe","startFetch","startXMLHttpRequest","getData","clear","cleanup","urlRewriter","set","forEach","c","listener","setupAxiosInterceptors","axiosInstance","existingCleanup","get","setupAxios","trackedCleanup","delete","exports","_resetNetworkForTesting","resetInterceptors"],"sourceRoot":"../../../src","sources":["features/NetworkFeature.ts"],"mappings":"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","ignoreList":[]}
@@ -3,12 +3,12 @@
3
3
  Object.defineProperty(exports, "__esModule", {
4
4
  value: true
5
5
  });
6
+ exports._resetTrackForTesting = _resetTrackForTesting;
6
7
  exports.createTrackFeature = exports.addTrackLog = void 0;
7
8
  var _TrackLogTab = require("../components/TrackLogTab");
8
9
  var _createEventChannel = require("../utils/createEventChannel");
9
- var _createObservableStore = require("../utils/createObservableStore");
10
- const DEFAULT_MAX_LOGS = 200;
11
- const trackChannel = (0, _createEventChannel.createEventChannel)();
10
+ var _createChannelFeature = require("../utils/createChannelFeature");
11
+ let trackChannel = (0, _createEventChannel.createEventChannel)();
12
12
  const addTrackLog = eventData => {
13
13
  trackChannel.emit({
14
14
  timestamp: Date.now(),
@@ -16,40 +16,19 @@ const addTrackLog = eventData => {
16
16
  });
17
17
  };
18
18
  exports.addTrackLog = addTrackLog;
19
- const createTrackFeature = config => {
20
- const maxLogs = config?.maxLogs ?? DEFAULT_MAX_LOGS;
21
- const logStore = (0, _createObservableStore.createObservableStore)();
22
- let nextId = 0;
23
- let unsubscribeLogs = null;
24
- let initialized = false;
25
- return {
26
- name: 'track',
27
- label: 'Track',
28
- renderContent: _TrackLogTab.TrackLogTab,
29
- setup: () => {
30
- if (initialized) {
31
- return;
32
- }
33
- unsubscribeLogs = trackChannel.subscribe(entry => {
34
- logStore.push({
35
- ...entry,
36
- id: String(nextId++)
37
- }, maxLogs);
38
- });
39
- initialized = true;
40
- },
41
- getData: () => logStore.getData(),
42
- clear: () => {
43
- logStore.clear();
44
- },
45
- cleanup: () => {
46
- unsubscribeLogs?.();
47
- unsubscribeLogs = null;
48
- logStore.clear();
49
- initialized = false;
50
- },
51
- subscribe: listener => logStore.subscribe(listener)
52
- };
53
- };
19
+ const createTrackFeature = config => (0, _createChannelFeature.createChannelFeature)(() => trackChannel, (payload, id) => ({
20
+ ...payload,
21
+ id
22
+ }), {
23
+ name: 'track',
24
+ label: 'Track',
25
+ renderContent: _TrackLogTab.TrackLogTab,
26
+ maxLogs: config?.maxLogs
27
+ });
28
+
29
+ /** Reset module-level state for testing */
54
30
  exports.createTrackFeature = createTrackFeature;
31
+ function _resetTrackForTesting() {
32
+ trackChannel = (0, _createEventChannel.createEventChannel)();
33
+ }
55
34
  //# sourceMappingURL=TrackFeature.js.map
@@ -1 +1 @@
1
- {"version":3,"names":["_TrackLogTab","require","_createEventChannel","_createObservableStore","DEFAULT_MAX_LOGS","trackChannel","createEventChannel","addTrackLog","eventData","emit","timestamp","Date","now","exports","createTrackFeature","config","maxLogs","logStore","createObservableStore","nextId","unsubscribeLogs","initialized","name","label","renderContent","TrackLogTab","setup","subscribe","entry","push","id","String","getData","clear","cleanup","listener"],"sourceRoot":"../../../src","sources":["features/TrackFeature.ts"],"mappings":";;;;;;AAAA,IAAAA,YAAA,GAAAC,OAAA;AAEA,IAAAC,mBAAA,GAAAD,OAAA;AACA,IAAAE,sBAAA,GAAAF,OAAA;AAWA,MAAMG,gBAAgB,GAAG,GAAG;AAC5B,MAAMC,YAAY,GAAG,IAAAC,sCAAkB,EAAkB,CAAC;AAEnD,MAAMC,WAAW,GAAIC,SAAyB,IAAW;EAC9DH,YAAY,CAACI,IAAI,CAAC;IAChBC,SAAS,EAAEC,IAAI,CAACC,GAAG,CAAC,CAAC;IACrB,GAAGJ;EACL,CAAC,CAAC;AACJ,CAAC;AAACK,OAAA,CAAAN,WAAA,GAAAA,WAAA;AAOK,MAAMO,kBAAkB,GAAIC,MAA2B,IAAkC;EAC9F,MAAMC,OAAO,GAAGD,MAAM,EAAEC,OAAO,IAAIZ,gBAAgB;EACnD,MAAMa,QAAQ,GAAG,IAAAC,4CAAqB,EAAgB,CAAC;EACvD,IAAIC,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,EAAEC,wBAAW;IAC1BC,KAAK,EAAEA,CAAA,KAAM;MACX,IAAIL,WAAW,EAAE;QACf;MACF;MAEAD,eAAe,GAAGf,YAAY,CAACsB,SAAS,CAAEC,KAAK,IAAK;QAClDX,QAAQ,CAACY,IAAI,CACX;UACE,GAAGD,KAAK;UACRE,EAAE,EAAEC,MAAM,CAACZ,MAAM,EAAE;QACrB,CAAC,EACDH,OACF,CAAC;MACH,CAAC,CAAC;MACFK,WAAW,GAAG,IAAI;IACpB,CAAC;IACDW,OAAO,EAAEA,CAAA,KAAMf,QAAQ,CAACe,OAAO,CAAC,CAAC;IACjCC,KAAK,EAAEA,CAAA,KAAM;MACXhB,QAAQ,CAACgB,KAAK,CAAC,CAAC;IAClB,CAAC;IACDC,OAAO,EAAEA,CAAA,KAAM;MACbd,eAAe,GAAG,CAAC;MACnBA,eAAe,GAAG,IAAI;MACtBH,QAAQ,CAACgB,KAAK,CAAC,CAAC;MAChBZ,WAAW,GAAG,KAAK;IACrB,CAAC;IACDM,SAAS,EAAGQ,QAAQ,IAAKlB,QAAQ,CAACU,SAAS,CAACQ,QAAQ;EACtD,CAAC;AACH,CAAC;AAACtB,OAAA,CAAAC,kBAAA,GAAAA,kBAAA","ignoreList":[]}
1
+ {"version":3,"names":["_TrackLogTab","require","_createEventChannel","_createChannelFeature","trackChannel","createEventChannel","addTrackLog","eventData","emit","timestamp","Date","now","exports","createTrackFeature","config","createChannelFeature","payload","id","name","label","renderContent","TrackLogTab","maxLogs","_resetTrackForTesting"],"sourceRoot":"../../../src","sources":["features/TrackFeature.ts"],"mappings":";;;;;;;AAAA,IAAAA,YAAA,GAAAC,OAAA;AAEA,IAAAC,mBAAA,GAAAD,OAAA;AACA,IAAAE,qBAAA,GAAAF,OAAA;AASA,IAAIG,YAAY,GAAG,IAAAC,sCAAkB,EAAkB,CAAC;AAEjD,MAAMC,WAAW,GAAIC,SAAyB,IAAW;EAC9DH,YAAY,CAACI,IAAI,CAAC;IAAEC,SAAS,EAAEC,IAAI,CAACC,GAAG,CAAC,CAAC;IAAE,GAAGJ;EAAU,CAAC,CAAC;AAC5D,CAAC;AAACK,OAAA,CAAAN,WAAA,GAAAA,WAAA;AAOK,MAAMO,kBAAkB,GAAIC,MAA2B,IAC5D,IAAAC,0CAAoB,EAClB,MAAMX,YAAY,EAClB,CAACY,OAAO,EAAEC,EAAE,MAAM;EAAE,GAAGD,OAAO;EAAEC;AAAG,CAAC,CAAC,EACrC;EAAEC,IAAI,EAAE,OAAO;EAAEC,KAAK,EAAE,OAAO;EAAEC,aAAa,EAAEC,wBAAW;EAAEC,OAAO,EAAER,MAAM,EAAEQ;AAAQ,CACxF,CAAC;;AAEH;AAAAV,OAAA,CAAAC,kBAAA,GAAAA,kBAAA;AACO,SAASU,qBAAqBA,CAAA,EAAS;EAC5CnB,YAAY,GAAG,IAAAC,sCAAkB,EAAkB,CAAC;AACtD","ignoreList":[]}
@@ -3,12 +3,12 @@
3
3
  Object.defineProperty(exports, "__esModule", {
4
4
  value: true
5
5
  });
6
+ exports._resetZustandForTesting = _resetZustandForTesting;
6
7
  exports.zustandLogMiddleware = exports.createZustandLogFeature = exports.addZustandLog = void 0;
7
8
  var _ZustandLogTab = require("../components/ZustandLogTab");
8
9
  var _createEventChannel = require("../utils/createEventChannel");
9
- var _createObservableStore = require("../utils/createObservableStore");
10
- const DEFAULT_MAX_LOGS = 200;
11
- const zustandChannel = (0, _createEventChannel.createEventChannel)();
10
+ var _createChannelFeature = require("../utils/createChannelFeature");
11
+ let zustandChannel = (0, _createEventChannel.createEventChannel)();
12
12
  const addZustandLog = (action, prevState, nextState, actionCompleteTime, storeName) => {
13
13
  zustandChannel.emit({
14
14
  timestamp: Date.now(),
@@ -19,6 +19,8 @@ const addZustandLog = (action, prevState, nextState, actionCompleteTime, storeNa
19
19
  storeName
20
20
  });
21
21
  };
22
+
23
+ // ─── Zustand middleware (remains here — it's user-facing API) ──────────
22
24
  exports.addZustandLog = addZustandLog;
23
25
  /**
24
26
  * Zustand middleware that logs all state changes to the debug toolkit.
@@ -36,41 +38,22 @@ const zustandLogMiddleware = config => (set, get, api) => config((args, replace,
36
38
  const label = typeof actionName === 'string' ? actionName : typeof args === 'function' ? 'setState' : 'object-set';
37
39
  addZustandLog(label, prevState, get(), duration, api.name);
38
40
  }, get, api);
41
+
42
+ // ─── Feature factory ──────────────────────────────────────────────────
39
43
  exports.zustandLogMiddleware = zustandLogMiddleware;
40
- const createZustandLogFeature = config => {
41
- const maxLogs = config?.maxLogs ?? DEFAULT_MAX_LOGS;
42
- const logStore = (0, _createObservableStore.createObservableStore)();
43
- let nextId = 0;
44
- let unsubscribeLogs = null;
45
- let initialized = false;
46
- return {
47
- name: 'zustand',
48
- label: 'Zustand',
49
- renderContent: _ZustandLogTab.ZustandLogTab,
50
- setup: () => {
51
- if (initialized) {
52
- return;
53
- }
54
- unsubscribeLogs = zustandChannel.subscribe(entry => {
55
- logStore.push({
56
- ...entry,
57
- id: String(nextId++)
58
- }, maxLogs);
59
- });
60
- initialized = true;
61
- },
62
- getData: () => logStore.getData(),
63
- clear: () => {
64
- logStore.clear();
65
- },
66
- cleanup: () => {
67
- unsubscribeLogs?.();
68
- unsubscribeLogs = null;
69
- logStore.clear();
70
- initialized = false;
71
- },
72
- subscribe: listener => logStore.subscribe(listener)
73
- };
74
- };
44
+ const createZustandLogFeature = config => (0, _createChannelFeature.createChannelFeature)(() => zustandChannel, (payload, id) => ({
45
+ ...payload,
46
+ id
47
+ }), {
48
+ name: 'zustand',
49
+ label: 'Zustand',
50
+ renderContent: _ZustandLogTab.ZustandLogTab,
51
+ maxLogs: config?.maxLogs
52
+ });
53
+
54
+ /** Reset module-level state for testing */
75
55
  exports.createZustandLogFeature = createZustandLogFeature;
56
+ function _resetZustandForTesting() {
57
+ zustandChannel = (0, _createEventChannel.createEventChannel)();
58
+ }
76
59
  //# sourceMappingURL=ZustandLogFeature.js.map
@@ -1 +1 @@
1
- {"version":3,"names":["_ZustandLogTab","require","_createEventChannel","_createObservableStore","DEFAULT_MAX_LOGS","zustandChannel","createEventChannel","addZustandLog","action","prevState","nextState","actionCompleteTime","storeName","emit","timestamp","Date","now","exports","zustandLogMiddleware","config","set","get","api","args","replace","actionName","startTime","duration","label","name","createZustandLogFeature","maxLogs","logStore","createObservableStore","nextId","unsubscribeLogs","initialized","renderContent","ZustandLogTab","setup","subscribe","entry","push","id","String","getData","clear","cleanup","listener"],"sourceRoot":"../../../src","sources":["features/ZustandLogFeature.ts"],"mappings":"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","ignoreList":[]}
1
+ {"version":3,"names":["_ZustandLogTab","require","_createEventChannel","_createChannelFeature","zustandChannel","createEventChannel","addZustandLog","action","prevState","nextState","actionCompleteTime","storeName","emit","timestamp","Date","now","exports","zustandLogMiddleware","config","set","get","api","args","replace","actionName","startTime","duration","label","name","createZustandLogFeature","createChannelFeature","payload","id","renderContent","ZustandLogTab","maxLogs","_resetZustandForTesting"],"sourceRoot":"../../../src","sources":["features/ZustandLogFeature.ts"],"mappings":";;;;;;;AAAA,IAAAA,cAAA,GAAAC,OAAA;AAEA,IAAAC,mBAAA,GAAAD,OAAA;AACA,IAAAE,qBAAA,GAAAF,OAAA;AAIA,IAAIG,cAAc,GAAG,IAAAC,sCAAkB,EAAoB,CAAC;AAErD,MAAMC,aAAa,GAAGA,CAC3BC,MAAc,EACdC,SAAkB,EAClBC,SAAkB,EAClBC,kBAA2B,EAC3BC,SAAkB,KACT;EACTP,cAAc,CAACQ,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;AAAAK,OAAA,CAAAV,aAAA,GAAAA,aAAA;AAuBA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACO,MAAMW,oBAAoB,GAAOC,MAAwB,IAAK,CACnEC,GAAuB,EACvBC,GAAuB,EACvBC,GAAuB,KAEvBH,MAAM,CACJ,CAACI,IAAuC,EAAEC,OAAiB,EAAEC,UAAuC,KAAK;EACvG,MAAMhB,SAAS,GAAGY,GAAG,CAAC,CAAC;EACvB,MAAMK,SAAS,GAAGX,IAAI,CAACC,GAAG,CAAC,CAAC;EAC5BI,GAAG,CAACG,IAAI,EAAEC,OAAO,EAAEC,UAAU,CAAC;EAC9B,MAAME,QAAQ,GAAGZ,IAAI,CAACC,GAAG,CAAC,CAAC,GAAGU,SAAS;EACvC,MAAME,KAAK,GAAG,OAAOH,UAAU,KAAK,QAAQ,GACxCA,UAAU,GACV,OAAOF,IAAI,KAAK,UAAU,GAAG,UAAU,GAAG,YAAY;EAC1DhB,aAAa,CACXqB,KAAK,EACLnB,SAAS,EACTY,GAAG,CAAC,CAAC,EACLM,QAAQ,EACRL,GAAG,CAACO,IACN,CAAC;AACH,CAAC,EACDR,GAAG,EACHC,GACF,CAAC;;AAEH;AAAAL,OAAA,CAAAC,oBAAA,GAAAA,oBAAA;AAOO,MAAMY,uBAAuB,GAAIX,MAA6B,IACnE,IAAAY,0CAAoB,EAClB,MAAM1B,cAAc,EACpB,CAAC2B,OAAO,EAAEC,EAAE,MAAM;EAAE,GAAGD,OAAO;EAAEC;AAAG,CAAC,CAAC,EACrC;EAAEJ,IAAI,EAAE,SAAS;EAAED,KAAK,EAAE,SAAS;EAAEM,aAAa,EAAEC,4BAAa;EAAEC,OAAO,EAAEjB,MAAM,EAAEiB;AAAQ,CAC9F,CAAC;;AAEH;AAAAnB,OAAA,CAAAa,uBAAA,GAAAA,uBAAA;AACO,SAASO,uBAAuBA,CAAA,EAAS;EAC9ChC,cAAc,GAAG,IAAAC,sCAAkB,EAAoB,CAAC;AAC1D","ignoreList":[]}
@@ -1 +1 @@
1
- {"version":3,"names":["_react","require","_NavigationLogFeature","_safeStringify","getActiveRouteName","state","currentState","routes","index","route","name","useNavigationLogger","navigationRef","previousRouteNameRef","useRef","useEffect","timeoutId","unsubscribe","disposed","attachListener","ref","current","addListener","setTimeout","currentRouteName","getCurrentRoute","getRootState","navState","nextRouteName","addNavigationLog","undefined","safeStringify","clearTimeout"],"sourceRoot":"../../../src","sources":["hooks/useNavigationLogger.ts"],"mappings":";;;;;;AAAA,IAAAA,MAAA,GAAAC,OAAA;AACA,IAAAC,qBAAA,GAAAD,OAAA;AACA,IAAAE,cAAA,GAAAF,OAAA;AAQA,SAASG,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;AACO,SAASM,mBAAmBA,CAACC,aAA6D,EAAE;EACjG,MAAMC,oBAAoB,GAAG,IAAAC,aAAM,EAAC,EAAE,CAAC;EAEvC,IAAAC,gBAAS,EAAC,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,GAAGR,aAAa,CAACS,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,EAAEf,IAAI,IAC7BN,kBAAkB,CAACgB,GAAG,CAACM,YAAY,GAAG,CAAC,CAAC;MAC1C,IAAIF,gBAAgB,EAAE;QACpBX,oBAAoB,CAACQ,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,EAAEf,IAAI,IAC7BN,kBAAkB,CAACuB,QAAQ,CAAC;UAE9B,IAAI,CAACC,aAAa,IAAIA,aAAa,KAAKf,oBAAoB,CAACQ,OAAO,EAAE;YACpE;UACF;UAEA,IAAAQ,sCAAgB,EACd,UAAU,EACVhB,oBAAoB,CAACQ,OAAO,EAC5BO,aAAa,EACbE,SAAS,EACTA,SAAS,EACT,IAAAC,4BAAa,EAACJ,QAAQ,CACxB,CAAC;UAEDd,oBAAoB,CAACQ,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;QACbgB,YAAY,CAAChB,SAAS,CAAC;MACzB;MACAC,WAAW,GAAG,CAAC;IACjB,CAAC;EACH,CAAC,EAAE,CAACL,aAAa,CAAC,CAAC;AACrB","ignoreList":[]}
1
+ {"version":3,"names":["_react","require","_NavigationLogFeature","_safeStringify","getActiveRouteName","state","currentState","routes","index","route","name","useNavigationLogger","navigationRef","previousRouteNameRef","useRef","useEffect","timeoutId","unsubscribe","disposed","attachListener","ref","current","addListener","setTimeout","currentRouteName","getCurrentRoute","getRootState","navState","nextRouteName","addNavigationLog","undefined","safeStringify","clearTimeout"],"sourceRoot":"../../../src","sources":["hooks/useNavigationLogger.ts"],"mappings":";;;;;;AAAA,IAAAA,MAAA,GAAAC,OAAA;AACA,IAAAC,qBAAA,GAAAD,OAAA;AACA,IAAAE,cAAA,GAAAF,OAAA;AAGA,SAASG,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;AACO,SAASM,mBAAmBA,CAACC,aAA6D,EAAE;EACjG,MAAMC,oBAAoB,GAAG,IAAAC,aAAM,EAAC,EAAE,CAAC;EAEvC,IAAAC,gBAAS,EAAC,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,GAAGR,aAAa,CAACS,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,EAAEf,IAAI,IAC7BN,kBAAkB,CAACgB,GAAG,CAACM,YAAY,GAAG,CAAC,CAAC;MAC1C,IAAIF,gBAAgB,EAAE;QACpBX,oBAAoB,CAACQ,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,EAAEf,IAAI,IAC7BN,kBAAkB,CAACuB,QAAQ,CAAC;UAE9B,IAAI,CAACC,aAAa,IAAIA,aAAa,KAAKf,oBAAoB,CAACQ,OAAO,EAAE;YACpE;UACF;UAEA,IAAAQ,sCAAgB,EACd,UAAU,EACVhB,oBAAoB,CAACQ,OAAO,EAC5BO,aAAa,EACbE,SAAS,EACTA,SAAS,EACT,IAAAC,4BAAa,EAACJ,QAAQ,CACxB,CAAC;UAEDd,oBAAoB,CAACQ,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;QACbgB,YAAY,CAAChB,SAAS,CAAC;MACzB;MACAC,WAAW,GAAG,CAAC;IACjB,CAAC;EACH,CAAC,EAAE,CAACL,aAAa,CAAC,CAAC;AACrB","ignoreList":[]}
@@ -15,6 +15,12 @@ Object.defineProperty(exports, "DebugToolkitProvider", {
15
15
  return _DebugToolkitProvider.DebugToolkitProvider;
16
16
  }
17
17
  });
18
+ Object.defineProperty(exports, "DebugView", {
19
+ enumerable: true,
20
+ get: function () {
21
+ return _DebugView.DebugView;
22
+ }
23
+ });
18
24
  Object.defineProperty(exports, "addNavigationLog", {
19
25
  enumerable: true,
20
26
  get: function () {
@@ -69,12 +75,6 @@ Object.defineProperty(exports, "createNetworkFeature", {
69
75
  return _NetworkFeature.createNetworkFeature;
70
76
  }
71
77
  });
72
- Object.defineProperty(exports, "createThirdPartyLibsFeature", {
73
- enumerable: true,
74
- get: function () {
75
- return _ThirdPartyLibsFeature.createThirdPartyLibsFeature;
76
- }
77
- });
78
78
  Object.defineProperty(exports, "createTrackFeature", {
79
79
  enumerable: true,
80
80
  get: function () {
@@ -105,12 +105,6 @@ Object.defineProperty(exports, "initializeDebugToolkit", {
105
105
  return _initialize.initializeDebugToolkit;
106
106
  }
107
107
  });
108
- Object.defineProperty(exports, "isDebugMode", {
109
- enumerable: true,
110
- get: function () {
111
- return _initialize.isDebugMode;
112
- }
113
- });
114
108
  Object.defineProperty(exports, "logToComputer", {
115
109
  enumerable: true,
116
110
  get: function () {
@@ -135,12 +129,6 @@ Object.defineProperty(exports, "useNavigationLogger", {
135
129
  return _useNavigationLogger.useNavigationLogger;
136
130
  }
137
131
  });
138
- Object.defineProperty(exports, "useSlideDetailAnimation", {
139
- enumerable: true,
140
- get: function () {
141
- return _useSlideDetailAnimation.useSlideDetailAnimation;
142
- }
143
- });
144
132
  Object.defineProperty(exports, "zustandLogMiddleware", {
145
133
  enumerable: true,
146
134
  get: function () {
@@ -149,17 +137,16 @@ Object.defineProperty(exports, "zustandLogMiddleware", {
149
137
  });
150
138
  var _DebugToolkit = require("./core/DebugToolkit");
151
139
  var _DebugToolkitProvider = require("./core/DebugToolkitProvider");
140
+ var _DebugView = require("./components/DebugView");
152
141
  var _initialize = require("./initialize");
153
142
  var _NetworkFeature = require("./features/NetworkFeature");
154
143
  var _ConsoleLogFeature = require("./features/ConsoleLogFeature");
155
144
  var _ZustandLogFeature = require("./features/ZustandLogFeature");
156
145
  var _NavigationLogFeature = require("./features/NavigationLogFeature");
157
146
  var _TrackFeature = require("./features/TrackFeature");
158
- var _ThirdPartyLibsFeature = require("./features/ThirdPartyLibsFeature");
159
147
  var _EnvironmentFeature = require("./features/EnvironmentFeature");
160
148
  var _ClipboardFeature = require("./features/ClipboardFeature");
161
149
  var _useNavigationLogger = require("./hooks/useNavigationLogger");
162
- var _useSlideDetailAnimation = require("./hooks/useSlideDetailAnimation");
163
150
  var _safeStringify = require("./utils/safeStringify");
164
151
  var _copyToComputer = require("./utils/copyToComputer");
165
152
  //# sourceMappingURL=index.js.map