react-native-debug-toolkit 2.2.0 → 2.3.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.
@@ -5,7 +5,7 @@ import { createEventChannel } from '../../utils/createEventChannel';
5
5
  import { createPersistedObservableStore } from '../../utils/createPersistedObservableStore';
6
6
  import { KEYS } from '../../utils/debugPreferences';
7
7
  import { urlRewriter } from '../../utils/urlRewriterRegistry';
8
- import { startFetch, startAxios, resetInterceptors } from './networkInterceptor';
8
+ import { startXMLHttpRequest, resetInterceptors } from './networkInterceptor';
9
9
  // ─── Utilities ────────────────────────────────────────
10
10
 
11
11
  function isUrlBlacklisted(url, blacklist) {
@@ -34,8 +34,7 @@ export const createNetworkFeature = config => {
34
34
  });
35
35
  let initialized = false;
36
36
  let unsubscribeLogs = null;
37
- let stopFetchFn = null;
38
- let stopAxiosFn = null;
37
+ let stopXhrFn = null;
39
38
  const handleLog = entry => {
40
39
  if (isUrlBlacklisted(entry.request.url, blacklist)) {
41
40
  return;
@@ -54,10 +53,7 @@ export const createNetworkFeature = config => {
54
53
  return;
55
54
  }
56
55
  unsubscribeLogs = networkChannel.subscribe(handleLog);
57
- stopFetchFn = startFetch(emitNetworkLog);
58
- if (config?.axiosInstance) {
59
- stopAxiosFn = startAxios(config.axiosInstance, emitNetworkLog);
60
- }
56
+ stopXhrFn = startXMLHttpRequest(emitNetworkLog);
61
57
  initialized = true;
62
58
  },
63
59
  getSnapshot: () => logStore.getData(),
@@ -71,10 +67,8 @@ export const createNetworkFeature = config => {
71
67
  urlRewriter.set(null);
72
68
  unsubscribeLogs?.();
73
69
  unsubscribeLogs = null;
74
- stopFetchFn?.();
75
- stopFetchFn = null;
76
- stopAxiosFn?.();
77
- stopAxiosFn = null;
70
+ stopXhrFn?.();
71
+ stopXhrFn = null;
78
72
  logStore.clear();
79
73
  initialized = false;
80
74
  },
@@ -1 +1 @@
1
- {"version":3,"names":["NetworkLogTab","createEventChannel","createPersistedObservableStore","KEYS","urlRewriter","startFetch","startAxios","resetInterceptors","isUrlBlacklisted","url","blacklist","some","pattern","RegExp","test","includes","networkChannel","emitNetworkLog","entry","emit","DEFAULT_MAX_LOGS","createNetworkFeature","config","maxLogs","logStore","storageKey","networkLogs","maxPersist","initialized","unsubscribeLogs","stopFetchFn","stopAxiosFn","handleLog","request","push","id","nextId","name","label","renderContent","setup","subscribe","axiosInstance","getSnapshot","getData","clear","cleanup","set","listener","_resetNetworkForTesting"],"sourceRoot":"../../../../src","sources":["features/network/index.ts"],"mappings":"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","ignoreList":[]}
1
+ {"version":3,"names":["NetworkLogTab","createEventChannel","createPersistedObservableStore","KEYS","urlRewriter","startXMLHttpRequest","resetInterceptors","isUrlBlacklisted","url","blacklist","some","pattern","RegExp","test","includes","networkChannel","emitNetworkLog","entry","emit","DEFAULT_MAX_LOGS","createNetworkFeature","config","maxLogs","logStore","storageKey","networkLogs","maxPersist","initialized","unsubscribeLogs","stopXhrFn","handleLog","request","push","id","nextId","name","label","renderContent","setup","subscribe","getSnapshot","getData","clear","cleanup","set","listener","_resetNetworkForTesting"],"sourceRoot":"../../../../src","sources":["features/network/index.ts"],"mappings":"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","ignoreList":[]}
@@ -1,12 +1,8 @@
1
1
  "use strict";
2
2
 
3
3
  import { urlRewriter } from '../../utils/urlRewriterRegistry';
4
-
5
- // Intercepts fetch requests and optionally axios via interceptors.
6
- // Axios response data is captured directly through interceptor callbacks,
7
- // avoiding the unreliable XHR response interception in React Native.
8
-
9
- // ─── Minimal axios interface (no hard dependency) ──────
4
+ // Intercepts React Native's XMLHttpRequest transport layer.
5
+ // RN fetch and axios (default adapter) both go through XHR — one hook captures everything.
10
6
 
11
7
  // ─── Shared helpers ────────────────────────────────────
12
8
 
@@ -21,236 +17,195 @@ function rewriteUrl(url) {
21
17
  return url;
22
18
  }
23
19
  }
24
- function headersToObject(headers) {
25
- const result = {};
26
- if (!headers) {
27
- return result;
28
- }
29
- if (typeof headers.forEach === 'function') {
30
- headers.forEach((value, key) => {
31
- result[key] = value;
32
- });
33
- return result;
20
+ function parseRawHeaders(rawHeaders) {
21
+ if (!rawHeaders) {
22
+ return undefined;
34
23
  }
35
- Object.keys(headers).forEach(key => {
36
- result[key] = headers[key];
24
+ const headers = {};
25
+ rawHeaders.trim().split(/[\r\n]+/).forEach(line => {
26
+ const separatorIndex = line.indexOf(':');
27
+ if (separatorIndex <= 0) {
28
+ return;
29
+ }
30
+ const key = line.slice(0, separatorIndex).trim();
31
+ const value = line.slice(separatorIndex + 1).trim();
32
+ if (key) {
33
+ headers[key] = value;
34
+ }
37
35
  });
38
- return result;
36
+ return Object.keys(headers).length > 0 ? headers : undefined;
39
37
  }
40
- function getRequestSnapshot(input, init) {
41
- const request = input instanceof Request ? input : null;
42
- return {
43
- url: typeof input === 'string' ? input : request?.url ?? String(input),
44
- method: (init?.method || request?.method || 'GET').toUpperCase(),
45
- headers: init?.headers ? headersToObject(init.headers) : request?.headers ? headersToObject(request.headers) : undefined,
46
- body: init?.body
47
- };
48
- }
49
- async function parseResponseBody(response) {
50
- const raw = await response.clone().text();
51
- if (!raw) {
52
- return undefined;
53
- }
38
+ function parseBodyText(raw) {
39
+ if (!raw) return undefined;
54
40
  try {
55
41
  return JSON.parse(raw);
56
42
  } catch {
57
43
  return raw;
58
44
  }
59
45
  }
60
- function normalizeAxiosHeaders(headers) {
61
- if (!headers || typeof headers !== 'object') {
62
- return undefined;
63
- }
64
- // AxiosHeaders instance
65
- if (typeof headers.forEach === 'function') {
66
- const result = {};
67
- headers.forEach((value, key) => {
68
- result[key] = value;
69
- });
70
- return Object.keys(result).length > 0 ? result : undefined;
71
- }
72
- // Plain object
73
- const result = {};
74
- const obj = headers;
75
- for (const key of Object.keys(obj)) {
76
- const val = obj[key];
77
- if (typeof val === 'string') {
78
- result[key] = val;
79
- }
46
+ function normalizeXhrResponseBody(xhr) {
47
+ const text = safeRead(() => xhr.responseText);
48
+ if (typeof text === 'string' && text) {
49
+ return parseBodyText(text);
80
50
  }
81
- return Object.keys(result).length > 0 ? result : undefined;
82
- }
83
- function buildFullUrl(config) {
84
- const base = config.baseURL ?? '';
85
- const url = config.url ?? '';
86
- if (!base || url.startsWith('http')) {
87
- return url;
51
+ const response = safeRead(() => xhr.response);
52
+ if (response != null) {
53
+ return response;
88
54
  }
89
- return base.replace(/\/$/, '') + '/' + url.replace(/^\//, '');
55
+ return undefined;
90
56
  }
91
57
 
92
- // ─── Fetch interceptor ─────────────────────────────────
58
+ // ─── XMLHttpRequest interceptor ───────────────────────
93
59
 
94
- let originalFetch = null;
95
- let fetchRefCount = 0;
96
- function stopFetch() {
97
- fetchRefCount = Math.max(0, fetchRefCount - 1);
98
- if (fetchRefCount === 0 && originalFetch) {
99
- globalThis.fetch = originalFetch;
100
- originalFetch = null;
60
+ let originalXMLHttpRequest = null;
61
+ let originalXhrOpen = null;
62
+ let originalXhrSend = null;
63
+ let originalXhrSetRequestHeader = null;
64
+ let xhrRefCount = 0;
65
+ const pendingXhrRequests = new WeakMap();
66
+ function safeRead(read) {
67
+ try {
68
+ return read();
69
+ } catch {
70
+ return undefined;
101
71
  }
102
72
  }
103
- export function startFetch(emit) {
104
- fetchRefCount += 1;
105
- if (originalFetch) {
106
- return () => {
107
- stopFetch();
108
- };
73
+ function getGlobalXMLHttpRequest() {
74
+ return globalThis.XMLHttpRequest;
75
+ }
76
+ function getXhrResponseHeaders(xhr) {
77
+ const rawHeaders = safeRead(() => xhr.getAllResponseHeaders?.());
78
+ const parsedHeaders = parseRawHeaders(rawHeaders);
79
+ if (parsedHeaders) {
80
+ return parsedHeaders;
109
81
  }
110
- originalFetch = globalThis.fetch;
111
- globalThis.fetch = async function interceptedFetch(input, init) {
112
- const startTime = Date.now();
113
- let rewrittenInput = input;
114
- if (urlRewriter.get()) {
115
- if (typeof input === 'string') {
116
- rewrittenInput = rewriteUrl(input);
117
- } else if (input instanceof Request) {
118
- rewrittenInput = new Request(rewriteUrl(input.url), input);
119
- }
82
+ const headers = xhr.responseHeaders;
83
+ if (!headers) {
84
+ return undefined;
85
+ }
86
+ return Object.keys(headers).length > 0 ? headers : undefined;
87
+ }
88
+ function stopXMLHttpRequest() {
89
+ xhrRefCount = Math.max(0, xhrRefCount - 1);
90
+ if (xhrRefCount > 0 || !originalXMLHttpRequest) {
91
+ return;
92
+ }
93
+ const CurrentXMLHttpRequest = getGlobalXMLHttpRequest();
94
+ if (CurrentXMLHttpRequest) {
95
+ if (originalXhrOpen) {
96
+ CurrentXMLHttpRequest.prototype.open = originalXhrOpen;
120
97
  }
121
- const request = getRequestSnapshot(rewrittenInput, init);
122
- try {
123
- const response = await originalFetch.call(globalThis, rewrittenInput, init);
124
- const duration = Date.now() - startTime;
125
- try {
126
- const data = await parseResponseBody(response);
127
- emit({
128
- timestamp: startTime,
129
- duration,
130
- request,
131
- response: {
132
- status: response.status,
133
- statusText: response.statusText,
134
- data
135
- }
136
- });
137
- } catch {
138
- emit({
139
- timestamp: startTime,
140
- duration,
141
- request,
142
- response: {
143
- status: response.status,
144
- statusText: response.statusText
145
- }
146
- });
147
- }
148
- return response;
149
- } catch (error) {
150
- emit({
151
- timestamp: startTime,
152
- duration: Date.now() - startTime,
153
- request,
154
- error: error instanceof Error ? error.message : String(error)
155
- });
156
- throw error;
98
+ if (originalXhrSend) {
99
+ CurrentXMLHttpRequest.prototype.send = originalXhrSend;
157
100
  }
158
- };
159
- return () => {
160
- stopFetch();
161
- };
101
+ if (originalXhrSetRequestHeader) {
102
+ CurrentXMLHttpRequest.prototype.setRequestHeader = originalXhrSetRequestHeader;
103
+ }
104
+ }
105
+ originalXMLHttpRequest = null;
106
+ originalXhrOpen = null;
107
+ originalXhrSend = null;
108
+ originalXhrSetRequestHeader = null;
162
109
  }
163
-
164
- // ─── Axios interceptor ─────────────────────────────────
165
-
166
- // eslint-disable-next-line @typescript-eslint/no-explicit-any
167
- const pendingAxiosRequests = new WeakMap();
168
- export function startAxios(axiosInstance, emit) {
169
- const requestInterceptorId = axiosInstance.interceptors.request.use(
170
- // eslint-disable-next-line @typescript-eslint/no-explicit-any
171
- config => {
172
- const now = Date.now();
173
- pendingAxiosRequests.set(config, {
174
- startTime: now,
175
- timestamp: now
110
+ export function startXMLHttpRequest(emit) {
111
+ const CurrentXMLHttpRequest = getGlobalXMLHttpRequest();
112
+ if (!CurrentXMLHttpRequest) {
113
+ return () => {};
114
+ }
115
+ xhrRefCount += 1;
116
+ if (originalXMLHttpRequest) {
117
+ return () => {
118
+ stopXMLHttpRequest();
119
+ };
120
+ }
121
+ originalXMLHttpRequest = CurrentXMLHttpRequest;
122
+ originalXhrOpen = CurrentXMLHttpRequest.prototype.open;
123
+ originalXhrSend = CurrentXMLHttpRequest.prototype.send;
124
+ originalXhrSetRequestHeader = CurrentXMLHttpRequest.prototype.setRequestHeader;
125
+ CurrentXMLHttpRequest.prototype.open = function interceptedOpen(method, url, ...args) {
126
+ const rewrittenUrl = urlRewriter.get() ? rewriteUrl(url) : url;
127
+ pendingXhrRequests.set(this, {
128
+ method: (method || 'GET').toUpperCase(),
129
+ url: rewrittenUrl,
130
+ headers: {},
131
+ timestamp: Date.now()
176
132
  });
177
- if (urlRewriter.get() && config.url) {
178
- const fullUrl = buildFullUrl(config);
179
- const rewritten = rewriteUrl(fullUrl);
180
- if (rewritten !== fullUrl) {
181
- config.url = rewritten;
182
- if (config.baseURL) {
183
- config.baseURL = undefined;
184
- }
185
- }
133
+ return originalXhrOpen.call(this, method, rewrittenUrl, ...args);
134
+ };
135
+ CurrentXMLHttpRequest.prototype.setRequestHeader = function interceptedSetRequestHeader(header, value) {
136
+ const state = pendingXhrRequests.get(this);
137
+ if (state) {
138
+ state.headers[header] = value;
186
139
  }
187
- return config;
188
- });
189
- const responseInterceptorId = axiosInstance.interceptors.response.use(
190
- // eslint-disable-next-line @typescript-eslint/no-explicit-any
191
- response => {
192
- const config = response.config;
193
- const pending = config ? pendingAxiosRequests.get(config) : undefined;
194
- const startTime = pending?.timestamp ?? Date.now();
195
- emit({
196
- timestamp: startTime,
197
- duration: Date.now() - startTime,
198
- request: {
199
- url: buildFullUrl(config),
200
- method: (config?.method ?? 'GET').toUpperCase(),
201
- headers: normalizeAxiosHeaders(config?.headers),
202
- body: config?.data
203
- },
204
- response: {
205
- status: response.status,
206
- statusText: response.statusText,
207
- headers: normalizeAxiosHeaders(response.headers),
208
- data: response.data,
209
- success: response.status >= 200 && response.status < 300
140
+ return originalXhrSetRequestHeader.call(this, header, value);
141
+ };
142
+ CurrentXMLHttpRequest.prototype.send = function interceptedSend(body) {
143
+ const that = this;
144
+ const state = pendingXhrRequests.get(that) ?? {
145
+ method: 'GET',
146
+ url: '',
147
+ headers: {},
148
+ timestamp: Date.now()
149
+ };
150
+ state.body = body;
151
+ state.timestamp = Date.now();
152
+ pendingXhrRequests.set(that, state);
153
+ const complete = () => {
154
+ const currentState = pendingXhrRequests.get(that);
155
+ if (!currentState || currentState.completed) {
156
+ return;
210
157
  }
211
- });
212
- return response;
213
- },
214
- // eslint-disable-next-line @typescript-eslint/no-explicit-any
215
- error => {
216
- const config = error.config;
217
- const pending = config ? pendingAxiosRequests.get(config) : undefined;
218
- const startTime = pending?.timestamp ?? Date.now();
219
- if (config) {
158
+ currentState.completed = true;
159
+ const headers = getXhrResponseHeaders(that);
220
160
  emit({
221
- timestamp: startTime,
222
- duration: Date.now() - startTime,
161
+ timestamp: currentState.timestamp,
162
+ duration: Date.now() - currentState.timestamp,
223
163
  request: {
224
- url: buildFullUrl(config),
225
- method: (config.method ?? 'GET').toUpperCase(),
226
- headers: normalizeAxiosHeaders(config.headers),
227
- body: config.data
164
+ url: currentState.url,
165
+ method: currentState.method,
166
+ headers: Object.keys(currentState.headers).length > 0 ? currentState.headers : undefined,
167
+ body: currentState.body
168
+ },
169
+ response: {
170
+ status: that.status,
171
+ statusText: that.statusText,
172
+ headers,
173
+ data: normalizeXhrResponseBody(that),
174
+ success: that.status >= 200 && that.status < 300
228
175
  },
229
- response: error.response ? {
230
- status: error.response.status,
231
- statusText: error.response.statusText,
232
- headers: normalizeAxiosHeaders(error.response.headers),
233
- data: error.response.data,
234
- success: false
235
- } : undefined,
236
- error: error.message ?? String(error)
176
+ error: currentState.error
237
177
  });
238
- }
239
- return Promise.reject(error);
240
- });
178
+ };
179
+ const markError = message => {
180
+ const currentState = pendingXhrRequests.get(that);
181
+ if (currentState) {
182
+ currentState.error = message;
183
+ }
184
+ };
185
+ that.addEventListener('error', () => {
186
+ markError('Network Error');
187
+ });
188
+ that.addEventListener('timeout', () => {
189
+ markError('Timeout');
190
+ });
191
+ that.addEventListener('abort', () => {
192
+ markError('Aborted');
193
+ });
194
+ that.addEventListener('loadend', complete);
195
+ return originalXhrSend.call(that, body);
196
+ };
241
197
  return () => {
242
- axiosInstance.interceptors.request.eject(requestInterceptorId);
243
- axiosInstance.interceptors.response.eject(responseInterceptorId);
198
+ stopXMLHttpRequest();
244
199
  };
245
200
  }
246
201
 
247
202
  // ─── Cleanup ───────────────────────────────────────────
248
203
 
249
204
  export function resetInterceptors() {
250
- if (originalFetch) {
251
- globalThis.fetch = originalFetch;
252
- originalFetch = null;
205
+ if (originalXMLHttpRequest) {
206
+ xhrRefCount = 1;
207
+ stopXMLHttpRequest();
253
208
  }
254
- fetchRefCount = 0;
209
+ xhrRefCount = 0;
255
210
  }
256
211
  //# sourceMappingURL=networkInterceptor.js.map
@@ -1 +1 @@
1
- {"version":3,"names":["urlRewriter","rewriteUrl","url","rewriter","get","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","normalizeAxiosHeaders","length","obj","val","buildFullUrl","config","base","baseURL","startsWith","replace","originalFetch","fetchRefCount","stopFetch","Math","max","globalThis","fetch","startFetch","emit","interceptedFetch","startTime","Date","now","rewrittenInput","call","duration","data","timestamp","status","statusText","error","Error","message","pendingAxiosRequests","WeakMap","startAxios","axiosInstance","requestInterceptorId","interceptors","use","set","fullUrl","rewritten","responseInterceptorId","pending","success","Promise","reject","eject","resetInterceptors"],"sourceRoot":"../../../../src","sources":["features/network/networkInterceptor.ts"],"mappings":"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","ignoreList":[]}
1
+ {"version":3,"names":["urlRewriter","rewriteUrl","url","rewriter","get","parseRawHeaders","rawHeaders","undefined","headers","trim","split","forEach","line","separatorIndex","indexOf","key","slice","value","Object","keys","length","parseBodyText","raw","JSON","parse","normalizeXhrResponseBody","xhr","text","safeRead","responseText","response","originalXMLHttpRequest","originalXhrOpen","originalXhrSend","originalXhrSetRequestHeader","xhrRefCount","pendingXhrRequests","WeakMap","read","getGlobalXMLHttpRequest","globalThis","XMLHttpRequest","getXhrResponseHeaders","getAllResponseHeaders","parsedHeaders","responseHeaders","stopXMLHttpRequest","Math","max","CurrentXMLHttpRequest","prototype","open","send","setRequestHeader","startXMLHttpRequest","emit","interceptedOpen","method","args","rewrittenUrl","set","toUpperCase","timestamp","Date","now","call","interceptedSetRequestHeader","header","state","interceptedSend","body","that","complete","currentState","completed","duration","request","status","statusText","data","success","error","markError","message","addEventListener","resetInterceptors"],"sourceRoot":"../../../../src","sources":["features/network/networkInterceptor.ts"],"mappings":"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","ignoreList":[]}
@@ -1,13 +1,9 @@
1
- export type { AxiosInstanceLike } from './networkInterceptor';
2
1
  import type { DebugFeature, NetworkLogEntry } from '../../types';
3
- import type { AxiosInstanceLike } from './networkInterceptor';
4
2
  export interface NetworkFeatureConfig {
5
3
  /** Maximum number of network logs to keep (default: 200) */
6
4
  maxLogs?: number;
7
5
  /** URLs to filter out from logging */
8
6
  blacklist?: Array<string | RegExp>;
9
- /** Axios instance to intercept. Pass your axios.create() instance to capture axios requests. */
10
- axiosInstance?: AxiosInstanceLike;
11
7
  }
12
8
  export declare const createNetworkFeature: (config?: NetworkFeatureConfig) => DebugFeature<NetworkLogEntry[]>;
13
9
  /** Reset module-level state for testing */
@@ -1 +1 @@
1
- {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../../../../src/features/network/index.ts"],"names":[],"mappings":"AAEA,YAAY,EAAE,iBAAiB,EAAE,MAAM,sBAAsB,CAAC;AAC9D,OAAO,KAAK,EAAE,YAAY,EAAE,eAAe,EAAE,MAAM,aAAa,CAAC;AAKjE,OAAO,KAAK,EAAE,iBAAiB,EAAE,MAAM,sBAAsB,CAAC;AAmC9D,MAAM,WAAW,oBAAoB;IACnC,4DAA4D;IAC5D,OAAO,CAAC,EAAE,MAAM,CAAC;IACjB,sCAAsC;IACtC,SAAS,CAAC,EAAE,KAAK,CAAC,MAAM,GAAG,MAAM,CAAC,CAAC;IACnC,gGAAgG;IAChG,aAAa,CAAC,EAAE,iBAAiB,CAAC;CACnC;AAED,eAAO,MAAM,oBAAoB,GAAI,SAAS,oBAAoB,KAAG,YAAY,CAAC,eAAe,EAAE,CAsDlG,CAAC;AAEF,2CAA2C;AAC3C,wBAAgB,uBAAuB,IAAI,IAAI,CAG9C"}
1
+ {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../../../../src/features/network/index.ts"],"names":[],"mappings":"AAEA,OAAO,KAAK,EAAE,YAAY,EAAE,eAAe,EAAE,MAAM,aAAa,CAAC;AAsCjE,MAAM,WAAW,oBAAoB;IACnC,4DAA4D;IAC5D,OAAO,CAAC,EAAE,MAAM,CAAC;IACjB,sCAAsC;IACtC,SAAS,CAAC,EAAE,KAAK,CAAC,MAAM,GAAG,MAAM,CAAC,CAAC;CACpC;AAED,eAAO,MAAM,oBAAoB,GAAI,SAAS,oBAAoB,KAAG,YAAY,CAAC,eAAe,EAAE,CAgDlG,CAAC;AAEF,2CAA2C;AAC3C,wBAAgB,uBAAuB,IAAI,IAAI,CAG9C"}
@@ -1,19 +1,6 @@
1
1
  import type { NetworkLogEntry } from '../../types';
2
2
  type NetworkLogPayload = Omit<NetworkLogEntry, 'id'>;
3
- export interface AxiosInstanceLike {
4
- interceptors: {
5
- request: {
6
- use(onFulfilled?: (config: any) => any, onRejected?: (error: any) => any): number;
7
- eject(id: number): void;
8
- };
9
- response: {
10
- use(onFulfilled?: (response: any) => any, onRejected?: (error: any) => any): number;
11
- eject(id: number): void;
12
- };
13
- };
14
- }
15
- export declare function startFetch(emit: (entry: NetworkLogPayload) => void): () => void;
16
- export declare function startAxios(axiosInstance: AxiosInstanceLike, emit: (entry: NetworkLogPayload) => void): () => void;
3
+ export declare function startXMLHttpRequest(emit: (entry: NetworkLogPayload) => void): () => void;
17
4
  export declare function resetInterceptors(): void;
18
5
  export {};
19
6
  //# sourceMappingURL=networkInterceptor.d.ts.map
@@ -1 +1 @@
1
- {"version":3,"file":"networkInterceptor.d.ts","sourceRoot":"","sources":["../../../../../src/features/network/networkInterceptor.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,eAAe,EAAE,MAAM,aAAa,CAAC;AAGnD,KAAK,iBAAiB,GAAG,IAAI,CAAC,eAAe,EAAE,IAAI,CAAC,CAAC;AAQrD,MAAM,WAAW,iBAAiB;IAChC,YAAY,EAAE;QACZ,OAAO,EAAE;YAEP,GAAG,CAAC,WAAW,CAAC,EAAE,CAAC,MAAM,EAAE,GAAG,KAAK,GAAG,EAAE,UAAU,CAAC,EAAE,CAAC,KAAK,EAAE,GAAG,KAAK,GAAG,GAAG,MAAM,CAAC;YAClF,KAAK,CAAC,EAAE,EAAE,MAAM,GAAG,IAAI,CAAC;SACzB,CAAC;QACF,QAAQ,EAAE;YAER,GAAG,CAAC,WAAW,CAAC,EAAE,CAAC,QAAQ,EAAE,GAAG,KAAK,GAAG,EAAE,UAAU,CAAC,EAAE,CAAC,KAAK,EAAE,GAAG,KAAK,GAAG,GAAG,MAAM,CAAC;YACpF,KAAK,CAAC,EAAE,EAAE,MAAM,GAAG,IAAI,CAAC;SACzB,CAAC;KACH,CAAC;CACH;AAqHD,wBAAgB,UAAU,CAAC,IAAI,EAAE,CAAC,KAAK,EAAE,iBAAiB,KAAK,IAAI,GAAG,MAAM,IAAI,CA+D/E;AAOD,wBAAgB,UAAU,CACxB,aAAa,EAAE,iBAAiB,EAChC,IAAI,EAAE,CAAC,KAAK,EAAE,iBAAiB,KAAK,IAAI,GACvC,MAAM,IAAI,CAsFZ;AAID,wBAAgB,iBAAiB,IAAI,IAAI,CAMxC"}
1
+ {"version":3,"file":"networkInterceptor.d.ts","sourceRoot":"","sources":["../../../../../src/features/network/networkInterceptor.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,eAAe,EAAE,MAAM,aAAa,CAAC;AAGnD,KAAK,iBAAiB,GAAG,IAAI,CAAC,eAAe,EAAE,IAAI,CAAC,CAAC;AA2JrD,wBAAgB,mBAAmB,CACjC,IAAI,EAAE,CAAC,KAAK,EAAE,iBAAiB,KAAK,IAAI,GACvC,MAAM,IAAI,CAmHZ;AAID,wBAAgB,iBAAiB,IAAI,IAAI,CAMxC"}
@@ -5,7 +5,7 @@ export type { DebugViewProps } from './ui/DebugView';
5
5
  export { initializeDebugToolkit } from './core/initialize';
6
6
  export type { InitializeOptions, FeatureConfigs } from './core/initialize';
7
7
  export { createNetworkFeature } from './features/network';
8
- export type { NetworkFeatureConfig, AxiosInstanceLike } from './features/network';
8
+ export type { NetworkFeatureConfig } from './features/network';
9
9
  export { createConsoleLogFeature } from './features/console';
10
10
  export type { ConsoleFeatureConfig } from './features/console';
11
11
  export { createZustandLogFeature, zustandLogMiddleware, addZustandLog } from './features/zustand';
@@ -1 +1 @@
1
- {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../../src/index.ts"],"names":[],"mappings":"AACA,OAAO,EAAE,YAAY,EAAE,MAAM,qBAAqB,CAAC;AACnD,OAAO,EAAE,oBAAoB,EAAE,eAAe,EAAE,MAAM,6BAA6B,CAAC;AACpF,OAAO,EAAE,SAAS,EAAE,MAAM,gBAAgB,CAAC;AAC3C,YAAY,EAAE,cAAc,EAAE,MAAM,gBAAgB,CAAC;AACrD,OAAO,EAAE,sBAAsB,EAAE,MAAM,mBAAmB,CAAC;AAC3D,YAAY,EAAE,iBAAiB,EAAE,cAAc,EAAE,MAAM,mBAAmB,CAAC;AAG3E,OAAO,EAAE,oBAAoB,EAAE,MAAM,oBAAoB,CAAC;AAC1D,YAAY,EAAE,oBAAoB,EAAE,iBAAiB,EAAE,MAAM,oBAAoB,CAAC;AAClF,OAAO,EAAE,uBAAuB,EAAE,MAAM,oBAAoB,CAAC;AAC7D,YAAY,EAAE,oBAAoB,EAAE,MAAM,oBAAoB,CAAC;AAC/D,OAAO,EAAE,uBAAuB,EAAE,oBAAoB,EAAE,aAAa,EAAE,MAAM,oBAAoB,CAAC;AAClG,YAAY,EAAE,oBAAoB,EAAE,MAAM,oBAAoB,CAAC;AAC/D,OAAO,EAAE,0BAA0B,EAAE,gBAAgB,EAAE,MAAM,uBAAuB,CAAC;AACrF,YAAY,EAAE,uBAAuB,EAAE,MAAM,uBAAuB,CAAC;AACrE,OAAO,EAAE,kBAAkB,EAAE,WAAW,EAAE,MAAM,kBAAkB,CAAC;AACnE,YAAY,EAAE,kBAAkB,EAAE,cAAc,EAAE,MAAM,kBAAkB,CAAC;AAC3E,OAAO,EAAE,wBAAwB,EAAE,MAAM,wBAAwB,CAAC;AAClE,YAAY,EAAE,qBAAqB,EAAE,MAAM,wBAAwB,CAAC;AACpE,OAAO,EAAE,sBAAsB,EAAE,MAAM,sBAAsB,CAAC;AAG9D,OAAO,EAAE,mBAAmB,EAAE,MAAM,2CAA2C,CAAC;AAGhF,OAAO,EAAE,aAAa,EAAE,MAAM,uBAAuB,CAAC;AACtD,OAAO,EAAE,cAAc,EAAE,aAAa,EAAE,GAAG,EAAE,MAAM,wBAAwB,CAAC;AAC5E,YAAY,EAAE,UAAU,EAAE,WAAW,EAAE,UAAU,EAAE,MAAM,wBAAwB,CAAC;AAGlF,YAAY,EACV,eAAe,EACf,kBAAkB,EAClB,YAAY,EACZ,uBAAuB,EACvB,eAAe,EACf,eAAe,EACf,eAAe,EACf,kBAAkB,EAClB,aAAa,EACb,iBAAiB,EACjB,gBAAgB,GACjB,MAAM,SAAS,CAAC;AAGjB,OAAO,EAAE,sBAAsB,IAAI,OAAO,EAAE,MAAM,mBAAmB,CAAC"}
1
+ {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../../src/index.ts"],"names":[],"mappings":"AACA,OAAO,EAAE,YAAY,EAAE,MAAM,qBAAqB,CAAC;AACnD,OAAO,EAAE,oBAAoB,EAAE,eAAe,EAAE,MAAM,6BAA6B,CAAC;AACpF,OAAO,EAAE,SAAS,EAAE,MAAM,gBAAgB,CAAC;AAC3C,YAAY,EAAE,cAAc,EAAE,MAAM,gBAAgB,CAAC;AACrD,OAAO,EAAE,sBAAsB,EAAE,MAAM,mBAAmB,CAAC;AAC3D,YAAY,EAAE,iBAAiB,EAAE,cAAc,EAAE,MAAM,mBAAmB,CAAC;AAG3E,OAAO,EAAE,oBAAoB,EAAE,MAAM,oBAAoB,CAAC;AAC1D,YAAY,EAAE,oBAAoB,EAAE,MAAM,oBAAoB,CAAC;AAC/D,OAAO,EAAE,uBAAuB,EAAE,MAAM,oBAAoB,CAAC;AAC7D,YAAY,EAAE,oBAAoB,EAAE,MAAM,oBAAoB,CAAC;AAC/D,OAAO,EAAE,uBAAuB,EAAE,oBAAoB,EAAE,aAAa,EAAE,MAAM,oBAAoB,CAAC;AAClG,YAAY,EAAE,oBAAoB,EAAE,MAAM,oBAAoB,CAAC;AAC/D,OAAO,EAAE,0BAA0B,EAAE,gBAAgB,EAAE,MAAM,uBAAuB,CAAC;AACrF,YAAY,EAAE,uBAAuB,EAAE,MAAM,uBAAuB,CAAC;AACrE,OAAO,EAAE,kBAAkB,EAAE,WAAW,EAAE,MAAM,kBAAkB,CAAC;AACnE,YAAY,EAAE,kBAAkB,EAAE,cAAc,EAAE,MAAM,kBAAkB,CAAC;AAC3E,OAAO,EAAE,wBAAwB,EAAE,MAAM,wBAAwB,CAAC;AAClE,YAAY,EAAE,qBAAqB,EAAE,MAAM,wBAAwB,CAAC;AACpE,OAAO,EAAE,sBAAsB,EAAE,MAAM,sBAAsB,CAAC;AAG9D,OAAO,EAAE,mBAAmB,EAAE,MAAM,2CAA2C,CAAC;AAGhF,OAAO,EAAE,aAAa,EAAE,MAAM,uBAAuB,CAAC;AACtD,OAAO,EAAE,cAAc,EAAE,aAAa,EAAE,GAAG,EAAE,MAAM,wBAAwB,CAAC;AAC5E,YAAY,EAAE,UAAU,EAAE,WAAW,EAAE,UAAU,EAAE,MAAM,wBAAwB,CAAC;AAGlF,YAAY,EACV,eAAe,EACf,kBAAkB,EAClB,YAAY,EACZ,uBAAuB,EACvB,eAAe,EACf,eAAe,EACf,eAAe,EACf,kBAAkB,EAClB,aAAa,EACb,iBAAiB,EACjB,gBAAgB,GACjB,MAAM,SAAS,CAAC;AAGjB,OAAO,EAAE,sBAAsB,IAAI,OAAO,EAAE,MAAM,mBAAmB,CAAC"}