react-native-debug-toolkit 3.3.8 → 3.5.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 (192) hide show
  1. package/lib/commonjs/constants/logLevels.js +19 -0
  2. package/lib/commonjs/constants/logLevels.js.map +1 -0
  3. package/lib/commonjs/core/initialize.js +30 -19
  4. package/lib/commonjs/core/initialize.js.map +1 -1
  5. package/lib/commonjs/features/console/ConsoleLogTab.js +4 -15
  6. package/lib/commonjs/features/console/ConsoleLogTab.js.map +1 -1
  7. package/lib/commonjs/features/console/index.js +15 -8
  8. package/lib/commonjs/features/console/index.js.map +1 -1
  9. package/lib/commonjs/features/network/NetworkLogTab.js +91 -93
  10. package/lib/commonjs/features/network/NetworkLogTab.js.map +1 -1
  11. package/lib/commonjs/features/network/index.js +7 -4
  12. package/lib/commonjs/features/network/index.js.map +1 -1
  13. package/lib/commonjs/features/sessionHistory/SessionHistoryTab.js +1044 -0
  14. package/lib/commonjs/features/sessionHistory/SessionHistoryTab.js.map +1 -0
  15. package/lib/commonjs/features/sessionHistory/index.js +103 -0
  16. package/lib/commonjs/features/sessionHistory/index.js.map +1 -0
  17. package/lib/commonjs/features/track/index.js +4 -3
  18. package/lib/commonjs/features/track/index.js.map +1 -1
  19. package/lib/commonjs/index.js +20 -0
  20. package/lib/commonjs/index.js.map +1 -1
  21. package/lib/commonjs/ui/DebugView.js +1 -0
  22. package/lib/commonjs/ui/DebugView.js.map +1 -1
  23. package/lib/commonjs/ui/panel/DebugPanel.js +67 -34
  24. package/lib/commonjs/ui/panel/DebugPanel.js.map +1 -1
  25. package/lib/commonjs/ui/panel/FeatureIntroCard.js +131 -0
  26. package/lib/commonjs/ui/panel/FeatureIntroCard.js.map +1 -0
  27. package/lib/commonjs/ui/panel/FeatureRail.js +163 -0
  28. package/lib/commonjs/ui/panel/FeatureRail.js.map +1 -0
  29. package/lib/commonjs/ui/panel/FloatPanelView.js +147 -22
  30. package/lib/commonjs/ui/panel/FloatPanelView.js.map +1 -1
  31. package/lib/commonjs/ui/panel/buildFeatureSummary.js +207 -0
  32. package/lib/commonjs/ui/panel/buildFeatureSummary.js.map +1 -0
  33. package/lib/commonjs/ui/panel/filterFeatureSnapshot.js +43 -0
  34. package/lib/commonjs/ui/panel/filterFeatureSnapshot.js.map +1 -0
  35. package/lib/commonjs/ui/theme/colors.js +6 -0
  36. package/lib/commonjs/ui/theme/colors.js.map +1 -1
  37. package/lib/commonjs/utils/DaemonClient.js +30 -8
  38. package/lib/commonjs/utils/DaemonClient.js.map +1 -1
  39. package/lib/commonjs/utils/SessionManager.js +132 -0
  40. package/lib/commonjs/utils/SessionManager.js.map +1 -0
  41. package/lib/commonjs/utils/StorageAdapter.js +104 -0
  42. package/lib/commonjs/utils/StorageAdapter.js.map +1 -0
  43. package/lib/commonjs/utils/createChannelFeature.js +22 -5
  44. package/lib/commonjs/utils/createChannelFeature.js.map +1 -1
  45. package/lib/commonjs/utils/createPersistedObservableStore.js +14 -8
  46. package/lib/commonjs/utils/createPersistedObservableStore.js.map +1 -1
  47. package/lib/commonjs/utils/debugPreferences.js +28 -5
  48. package/lib/commonjs/utils/debugPreferences.js.map +1 -1
  49. package/lib/commonjs/utils/deviceReport.js +5 -1
  50. package/lib/commonjs/utils/deviceReport.js.map +1 -1
  51. package/lib/commonjs/utils/logRuntime.js +32 -0
  52. package/lib/commonjs/utils/logRuntime.js.map +1 -0
  53. package/lib/module/constants/logLevels.js +15 -0
  54. package/lib/module/constants/logLevels.js.map +1 -0
  55. package/lib/module/core/initialize.js +30 -19
  56. package/lib/module/core/initialize.js.map +1 -1
  57. package/lib/module/features/console/ConsoleLogTab.js +1 -12
  58. package/lib/module/features/console/ConsoleLogTab.js.map +1 -1
  59. package/lib/module/features/console/index.js +15 -8
  60. package/lib/module/features/console/index.js.map +1 -1
  61. package/lib/module/features/network/NetworkLogTab.js +91 -93
  62. package/lib/module/features/network/NetworkLogTab.js.map +1 -1
  63. package/lib/module/features/network/index.js +7 -4
  64. package/lib/module/features/network/index.js.map +1 -1
  65. package/lib/module/features/sessionHistory/SessionHistoryTab.js +1039 -0
  66. package/lib/module/features/sessionHistory/SessionHistoryTab.js.map +1 -0
  67. package/lib/module/features/sessionHistory/index.js +99 -0
  68. package/lib/module/features/sessionHistory/index.js.map +1 -0
  69. package/lib/module/features/track/index.js +4 -3
  70. package/lib/module/features/track/index.js.map +1 -1
  71. package/lib/module/index.js +3 -0
  72. package/lib/module/index.js.map +1 -1
  73. package/lib/module/ui/DebugView.js +1 -0
  74. package/lib/module/ui/DebugView.js.map +1 -1
  75. package/lib/module/ui/panel/DebugPanel.js +67 -34
  76. package/lib/module/ui/panel/DebugPanel.js.map +1 -1
  77. package/lib/module/ui/panel/FeatureIntroCard.js +126 -0
  78. package/lib/module/ui/panel/FeatureIntroCard.js.map +1 -0
  79. package/lib/module/ui/panel/FeatureRail.js +158 -0
  80. package/lib/module/ui/panel/FeatureRail.js.map +1 -0
  81. package/lib/module/ui/panel/FloatPanelView.js +148 -23
  82. package/lib/module/ui/panel/FloatPanelView.js.map +1 -1
  83. package/lib/module/ui/panel/buildFeatureSummary.js +203 -0
  84. package/lib/module/ui/panel/buildFeatureSummary.js.map +1 -0
  85. package/lib/module/ui/panel/filterFeatureSnapshot.js +39 -0
  86. package/lib/module/ui/panel/filterFeatureSnapshot.js.map +1 -0
  87. package/lib/module/ui/theme/colors.js +6 -0
  88. package/lib/module/ui/theme/colors.js.map +1 -1
  89. package/lib/module/utils/DaemonClient.js +30 -8
  90. package/lib/module/utils/DaemonClient.js.map +1 -1
  91. package/lib/module/utils/SessionManager.js +127 -0
  92. package/lib/module/utils/SessionManager.js.map +1 -0
  93. package/lib/module/utils/StorageAdapter.js +96 -0
  94. package/lib/module/utils/StorageAdapter.js.map +1 -0
  95. package/lib/module/utils/createChannelFeature.js +22 -5
  96. package/lib/module/utils/createChannelFeature.js.map +1 -1
  97. package/lib/module/utils/createPersistedObservableStore.js +14 -8
  98. package/lib/module/utils/createPersistedObservableStore.js.map +1 -1
  99. package/lib/module/utils/debugPreferences.js +27 -5
  100. package/lib/module/utils/debugPreferences.js.map +1 -1
  101. package/lib/module/utils/deviceReport.js +4 -1
  102. package/lib/module/utils/deviceReport.js.map +1 -1
  103. package/lib/module/utils/logRuntime.js +26 -0
  104. package/lib/module/utils/logRuntime.js.map +1 -0
  105. package/lib/typescript/src/constants/logLevels.d.ts +3 -0
  106. package/lib/typescript/src/constants/logLevels.d.ts.map +1 -0
  107. package/lib/typescript/src/core/initialize.d.ts +4 -0
  108. package/lib/typescript/src/core/initialize.d.ts.map +1 -1
  109. package/lib/typescript/src/features/console/ConsoleLogTab.d.ts.map +1 -1
  110. package/lib/typescript/src/features/console/index.d.ts +2 -1
  111. package/lib/typescript/src/features/console/index.d.ts.map +1 -1
  112. package/lib/typescript/src/features/network/NetworkLogTab.d.ts.map +1 -1
  113. package/lib/typescript/src/features/network/index.d.ts +2 -1
  114. package/lib/typescript/src/features/network/index.d.ts.map +1 -1
  115. package/lib/typescript/src/features/sessionHistory/SessionHistoryTab.d.ts +20 -0
  116. package/lib/typescript/src/features/sessionHistory/SessionHistoryTab.d.ts.map +1 -0
  117. package/lib/typescript/src/features/sessionHistory/index.d.ts +4 -0
  118. package/lib/typescript/src/features/sessionHistory/index.d.ts.map +1 -0
  119. package/lib/typescript/src/features/track/index.d.ts +2 -1
  120. package/lib/typescript/src/features/track/index.d.ts.map +1 -1
  121. package/lib/typescript/src/index.d.ts +4 -0
  122. package/lib/typescript/src/index.d.ts.map +1 -1
  123. package/lib/typescript/src/types/feature.d.ts +1 -1
  124. package/lib/typescript/src/types/feature.d.ts.map +1 -1
  125. package/lib/typescript/src/types/index.d.ts +2 -0
  126. package/lib/typescript/src/types/index.d.ts.map +1 -1
  127. package/lib/typescript/src/ui/DebugView.d.ts.map +1 -1
  128. package/lib/typescript/src/ui/panel/DebugPanel.d.ts +3 -1
  129. package/lib/typescript/src/ui/panel/DebugPanel.d.ts.map +1 -1
  130. package/lib/typescript/src/ui/panel/FeatureIntroCard.d.ts +11 -0
  131. package/lib/typescript/src/ui/panel/FeatureIntroCard.d.ts.map +1 -0
  132. package/lib/typescript/src/ui/panel/FeatureRail.d.ts +16 -0
  133. package/lib/typescript/src/ui/panel/FeatureRail.d.ts.map +1 -0
  134. package/lib/typescript/src/ui/panel/FloatPanelView.d.ts.map +1 -1
  135. package/lib/typescript/src/ui/panel/buildFeatureSummary.d.ts +13 -0
  136. package/lib/typescript/src/ui/panel/buildFeatureSummary.d.ts.map +1 -0
  137. package/lib/typescript/src/ui/panel/filterFeatureSnapshot.d.ts +3 -0
  138. package/lib/typescript/src/ui/panel/filterFeatureSnapshot.d.ts.map +1 -0
  139. package/lib/typescript/src/ui/theme/colors.d.ts +5 -0
  140. package/lib/typescript/src/ui/theme/colors.d.ts.map +1 -1
  141. package/lib/typescript/src/utils/DaemonClient.d.ts +7 -1
  142. package/lib/typescript/src/utils/DaemonClient.d.ts.map +1 -1
  143. package/lib/typescript/src/utils/SessionManager.d.ts +30 -0
  144. package/lib/typescript/src/utils/SessionManager.d.ts.map +1 -0
  145. package/lib/typescript/src/utils/StorageAdapter.d.ts +38 -0
  146. package/lib/typescript/src/utils/StorageAdapter.d.ts.map +1 -0
  147. package/lib/typescript/src/utils/createChannelFeature.d.ts +2 -0
  148. package/lib/typescript/src/utils/createChannelFeature.d.ts.map +1 -1
  149. package/lib/typescript/src/utils/createPersistedObservableStore.d.ts +4 -1
  150. package/lib/typescript/src/utils/createPersistedObservableStore.d.ts.map +1 -1
  151. package/lib/typescript/src/utils/debugPreferences.d.ts +1 -3
  152. package/lib/typescript/src/utils/debugPreferences.d.ts.map +1 -1
  153. package/lib/typescript/src/utils/deviceReport.d.ts +1 -0
  154. package/lib/typescript/src/utils/deviceReport.d.ts.map +1 -1
  155. package/lib/typescript/src/utils/logRuntime.d.ts +13 -0
  156. package/lib/typescript/src/utils/logRuntime.d.ts.map +1 -0
  157. package/package.json +9 -1
  158. package/src/constants/logLevels.ts +13 -0
  159. package/src/core/initialize.ts +49 -25
  160. package/src/features/console/ConsoleLogTab.tsx +1 -14
  161. package/src/features/console/index.ts +18 -8
  162. package/src/features/network/NetworkLogTab.tsx +61 -71
  163. package/src/features/network/index.ts +12 -3
  164. package/src/features/sessionHistory/SessionHistoryTab.tsx +691 -0
  165. package/src/features/sessionHistory/index.ts +102 -0
  166. package/src/features/track/index.ts +10 -3
  167. package/src/index.ts +11 -0
  168. package/src/types/feature.ts +2 -1
  169. package/src/types/index.ts +10 -0
  170. package/src/ui/DebugView.tsx +1 -0
  171. package/src/ui/panel/DebugPanel.tsx +60 -30
  172. package/src/ui/panel/FeatureIntroCard.tsx +127 -0
  173. package/src/ui/panel/FeatureRail.tsx +165 -0
  174. package/src/ui/panel/FloatPanelView.tsx +154 -15
  175. package/src/ui/panel/buildFeatureSummary.ts +288 -0
  176. package/src/ui/panel/filterFeatureSnapshot.ts +51 -0
  177. package/src/ui/theme/colors.ts +7 -0
  178. package/src/utils/DaemonClient.ts +33 -5
  179. package/src/utils/SessionManager.ts +174 -0
  180. package/src/utils/StorageAdapter.ts +135 -0
  181. package/src/utils/createChannelFeature.ts +28 -6
  182. package/src/utils/createPersistedObservableStore.ts +18 -10
  183. package/src/utils/debugPreferences.ts +38 -7
  184. package/src/utils/deviceReport.ts +5 -1
  185. package/src/utils/logRuntime.ts +39 -0
  186. package/lib/commonjs/ui/panel/FeatureTabBar.js +0 -182
  187. package/lib/commonjs/ui/panel/FeatureTabBar.js.map +0 -1
  188. package/lib/module/ui/panel/FeatureTabBar.js +0 -177
  189. package/lib/module/ui/panel/FeatureTabBar.js.map +0 -1
  190. package/lib/typescript/src/ui/panel/FeatureTabBar.d.ts +0 -13
  191. package/lib/typescript/src/ui/panel/FeatureTabBar.d.ts.map +0 -1
  192. package/src/ui/panel/FeatureTabBar.tsx +0 -204
@@ -1,9 +1,8 @@
1
- import React, { useState } from 'react';
1
+ import React from 'react';
2
2
  import {
3
3
  View,
4
4
  Text,
5
5
  StyleSheet,
6
- TextInput,
7
6
  ScrollView,
8
7
  } from 'react-native';
9
8
  import { Colors, getMethodColor } from '../../ui/theme/colors';
@@ -43,58 +42,38 @@ const buildCurl = (log: NetworkLogEntry): string => {
43
42
  export const NetworkLogTab: React.FC<DebugFeatureRenderProps<NetworkLogEntry[]>> = React.memo(({
44
43
  snapshot,
45
44
  }) => {
46
- const [search, setSearch] = useState('');
47
- const data = snapshot;
48
-
49
- const filtered = search
50
- ? data.filter(
51
- (l) =>
52
- l.request.url.toLowerCase().includes(search.toLowerCase()) ||
53
- l.request.method.toLowerCase().includes(search.toLowerCase()),
54
- )
55
- : data;
56
-
57
- const sorted = [...filtered].sort((a, b) => b.timestamp - a.timestamp);
45
+ const sorted = [...snapshot].sort((a, b) => b.timestamp - a.timestamp);
58
46
 
59
47
  return (
60
48
  <LogListScreen
61
49
  data={sorted}
62
50
  reversed={false}
63
51
  emptyText="No HTTP requests logged"
64
- renderListHeader={() => (
65
- <View style={s.searchContainer}>
66
- <View style={s.searchBar}>
67
- <Text style={s.searchIcon}>⌕</Text>
68
- <TextInput
69
- style={s.search}
70
- placeholder="Search URLs..."
71
- placeholderTextColor={Colors.textLight}
72
- value={search}
73
- onChangeText={setSearch}
74
- />
75
- </View>
76
- </View>
77
- )}
78
52
  renderRow={(item) => {
79
53
  const ok = !item.error && (!item.response || item.response.status < 400);
80
- const sc = ok ? Colors.success : Colors.error;
54
+ const statusColor = ok ? Colors.success : Colors.error;
55
+ const urlParts = formatUrlParts(item.request.url);
56
+
81
57
  return (
82
58
  <View style={s.cardRow}>
83
- <View style={[s.statusIndicator, { backgroundColor: sc }]} />
59
+ <View style={[s.statusIndicator, { backgroundColor: statusColor }]} />
84
60
  <View style={s.cardBody}>
85
- <View style={s.cardMeta}>
86
- <Text style={[s.methodText, { color: getMethodColor(item.request.method) }]}>
87
- {item.request.method}
61
+ <View style={s.primaryRow}>
62
+ <View style={[s.methodChip, { backgroundColor: getMethodColor(item.request.method) }]}>
63
+ <Text style={s.methodChipText}>{item.request.method}</Text>
64
+ </View>
65
+ <Text style={[s.pathText, !ok && { color: Colors.error }]} numberOfLines={1}>
66
+ {urlParts.path}
88
67
  </Text>
89
- <View style={[s.miniPill, { backgroundColor: sc }]}>
90
- <Text style={s.miniPillText}>{item.response?.status ?? 'ERR'}</Text>
68
+ <View style={[s.statusChip, { backgroundColor: statusColor }]}>
69
+ <Text style={s.statusChipText}>{item.response?.status ?? 'ERR'}</Text>
91
70
  </View>
92
- {item.duration != null && <Text style={s.durationText}>{item.duration}ms</Text>}
93
71
  </View>
94
- <Text style={[s.url, !ok && { color: Colors.error }]} numberOfLines={2}>
95
- {item.request.url}
96
- </Text>
97
- <Text style={s.time}>{new Date(item.timestamp).toLocaleTimeString()}</Text>
72
+ <View style={s.metaRow}>
73
+ {item.duration != null && <Text style={s.metaText}>{item.duration}ms</Text>}
74
+ {!!urlParts.host && <Text style={[s.metaText, s.hostText]} numberOfLines={1}>{urlParts.host}</Text>}
75
+ <Text style={s.time}>{new Date(item.timestamp).toLocaleTimeString()}</Text>
76
+ </View>
98
77
  </View>
99
78
  </View>
100
79
  );
@@ -185,43 +164,55 @@ export const NetworkLogTab: React.FC<DebugFeatureRenderProps<NetworkLogEntry[]>>
185
164
  );
186
165
  });
187
166
 
167
+ function formatUrlParts(url: string): { host: string; path: string } {
168
+ try {
169
+ const parsed = new URL(url);
170
+ return {
171
+ host: parsed.host,
172
+ path: parsed.pathname + parsed.search,
173
+ };
174
+ } catch {
175
+ return { host: '', path: url };
176
+ }
177
+ }
178
+
188
179
  const s = StyleSheet.create({
189
- // Search
190
- searchContainer: {
191
- paddingHorizontal: 12,
192
- paddingTop: 10,
193
- paddingBottom: 6,
194
- backgroundColor: Colors.background,
195
- },
196
- searchBar: {
180
+ cardRow: { flexDirection: 'row', padding: 12 },
181
+ statusIndicator: { width: 3, borderRadius: 2, marginRight: 10 },
182
+ cardBody: { flex: 1, gap: 7 },
183
+ primaryRow: {
197
184
  flexDirection: 'row',
198
185
  alignItems: 'center',
199
- backgroundColor: Colors.surface,
200
- borderRadius: 10,
201
- paddingHorizontal: 10,
202
- height: 38,
186
+ gap: 7,
187
+ minWidth: 0,
188
+ },
189
+ methodChip: {
190
+ paddingHorizontal: 8,
191
+ paddingVertical: 3,
192
+ borderRadius: 6,
203
193
  },
204
- searchIcon: { fontSize: 16, color: Colors.textLight, marginRight: 6 },
205
- search: {
194
+ methodChipText: {
195
+ color: '#FFF',
196
+ fontSize: 10,
197
+ fontWeight: '800',
198
+ },
199
+ pathText: {
206
200
  flex: 1,
207
- fontSize: 14,
201
+ fontSize: 13,
202
+ fontWeight: '700',
208
203
  color: Colors.text,
209
- padding: 0,
210
204
  },
211
-
212
- // Row
213
- cardRow: { flexDirection: 'row', padding: 14 },
214
- statusIndicator: { width: 3, borderRadius: 2, marginRight: 12 },
215
- cardBody: { flex: 1 },
216
- cardMeta: { flexDirection: 'row', alignItems: 'center', marginBottom: 6, gap: 6 },
217
- methodText: { fontSize: 13, fontWeight: '700' },
218
- miniPill: { paddingHorizontal: 7, paddingVertical: 2, borderRadius: 4 },
219
- miniPillText: { color: '#FFF', fontSize: 10, fontWeight: '700' },
220
- durationText: { fontSize: 12, color: Colors.textSecondary, fontWeight: '500' },
221
- url: { fontSize: 13, color: Colors.textSecondary, marginBottom: 4, lineHeight: 18 },
205
+ statusChip: { paddingHorizontal: 7, paddingVertical: 3, borderRadius: 6 },
206
+ statusChipText: { color: '#FFF', fontSize: 10, fontWeight: '800' },
207
+ metaRow: {
208
+ flexDirection: 'row',
209
+ alignItems: 'center',
210
+ gap: 7,
211
+ minWidth: 0,
212
+ },
213
+ metaText: { fontSize: 11, color: Colors.textSecondary, fontWeight: '600' },
214
+ hostText: { flex: 1 },
222
215
  time: { fontSize: 11, color: Colors.textLight },
223
-
224
- // Detail header
225
216
  detailHeaderCenter: {
226
217
  flexDirection: 'row',
227
218
  alignItems: 'center',
@@ -236,8 +227,7 @@ const s = StyleSheet.create({
236
227
  methodBadgeText: { color: '#FFF', fontSize: 12, fontWeight: '700' },
237
228
  statusPill: { paddingHorizontal: 9, paddingVertical: 3, borderRadius: 6 },
238
229
  statusPillText: { color: '#FFF', fontSize: 11, fontWeight: '700' },
239
-
240
- // Detail body
230
+ durationText: { fontSize: 12, color: Colors.textSecondary, fontWeight: '500' },
241
231
  detailBody: { flex: 1 },
242
232
  detailBodyContent: { padding: 12, paddingBottom: 40 },
243
233
  urlCard: {
@@ -3,7 +3,8 @@ import { NetworkLogTab } from './NetworkLogTab';
3
3
  import type { NetworkLogEntry } from '../../types';
4
4
  import { createChannelFeature } from '../../utils/createChannelFeature';
5
5
  import { createEventChannel } from '../../utils/createEventChannel';
6
- import { KEYS } from '../../utils/debugPreferences';
6
+ import { sanitizeDebugLogEntry } from '../../utils/deviceReport';
7
+ import { getDefaultLogRuntime, type LogRuntimeContext } from '../../utils/logRuntime';
7
8
  import {
8
9
  startXMLHttpRequest,
9
10
  resetInterceptors,
@@ -44,7 +45,10 @@ export interface NetworkFeatureConfig {
44
45
  blacklist?: Array<string | RegExp>;
45
46
  }
46
47
 
47
- export const createNetworkFeature = (config?: NetworkFeatureConfig) => {
48
+ export const createNetworkFeature = (
49
+ config?: NetworkFeatureConfig,
50
+ runtime: LogRuntimeContext = getDefaultLogRuntime(),
51
+ ) => {
48
52
  const userBlacklist = config?.blacklist ? [...config.blacklist] : [];
49
53
 
50
54
  return createChannelFeature<NetworkLogPayload, NetworkLogEntry>(
@@ -55,7 +59,12 @@ export const createNetworkFeature = (config?: NetworkFeatureConfig) => {
55
59
  label: 'Network',
56
60
  renderContent: NetworkLogTab,
57
61
  maxLogs: config?.maxLogs,
58
- persist: { storageKey: KEYS.networkLogs, maxPersist: 30 },
62
+ persist: {
63
+ storage: runtime.logStorage,
64
+ storageKey: runtime.sessionManager.getLogStorageKey('network_logs'),
65
+ maxPersist: 30,
66
+ serialize: (entry) => sanitizeDebugLogEntry(entry),
67
+ },
59
68
  beforePush: (payload) => {
60
69
  if (isUrlBlacklisted(payload.request.url, [...userBlacklist, ...daemonEndpointBlacklist])) {
61
70
  return null;