rn-backstage 1.0.0 → 1.2.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 (72) hide show
  1. package/README.md +74 -23
  2. package/lib/commonjs/Backstage.js +55 -5
  3. package/lib/commonjs/Backstage.js.map +1 -1
  4. package/lib/commonjs/components/BackstagePanel.js +36 -5
  5. package/lib/commonjs/components/BackstagePanel.js.map +1 -1
  6. package/lib/commonjs/components/FlagsTab.js +255 -0
  7. package/lib/commonjs/components/FlagsTab.js.map +1 -0
  8. package/lib/commonjs/components/NetworkItem.js +537 -0
  9. package/lib/commonjs/components/NetworkItem.js.map +1 -0
  10. package/lib/commonjs/components/NetworkTab.js +274 -0
  11. package/lib/commonjs/components/NetworkTab.js.map +1 -0
  12. package/lib/commonjs/constants.js +11 -3
  13. package/lib/commonjs/constants.js.map +1 -1
  14. package/lib/commonjs/index.js +6 -0
  15. package/lib/commonjs/index.js.map +1 -1
  16. package/lib/commonjs/log-interceptor.js +8 -1
  17. package/lib/commonjs/log-interceptor.js.map +1 -1
  18. package/lib/commonjs/network-interceptor.js +417 -0
  19. package/lib/commonjs/network-interceptor.js.map +1 -0
  20. package/lib/commonjs/types.js +9 -1
  21. package/lib/commonjs/types.js.map +1 -1
  22. package/lib/module/Backstage.js +56 -6
  23. package/lib/module/Backstage.js.map +1 -1
  24. package/lib/module/components/BackstagePanel.js +36 -5
  25. package/lib/module/components/BackstagePanel.js.map +1 -1
  26. package/lib/module/components/FlagsTab.js +250 -0
  27. package/lib/module/components/FlagsTab.js.map +1 -0
  28. package/lib/module/components/NetworkItem.js +532 -0
  29. package/lib/module/components/NetworkItem.js.map +1 -0
  30. package/lib/module/components/NetworkTab.js +269 -0
  31. package/lib/module/components/NetworkTab.js.map +1 -0
  32. package/lib/module/constants.js +10 -2
  33. package/lib/module/constants.js.map +1 -1
  34. package/lib/module/index.js +1 -1
  35. package/lib/module/index.js.map +1 -1
  36. package/lib/module/log-interceptor.js +8 -1
  37. package/lib/module/log-interceptor.js.map +1 -1
  38. package/lib/module/network-interceptor.js +409 -0
  39. package/lib/module/network-interceptor.js.map +1 -0
  40. package/lib/module/types.js +10 -0
  41. package/lib/module/types.js.map +1 -1
  42. package/lib/typescript/Backstage.d.ts.map +1 -1
  43. package/lib/typescript/components/BackstagePanel.d.ts +7 -1
  44. package/lib/typescript/components/BackstagePanel.d.ts.map +1 -1
  45. package/lib/typescript/components/FlagsTab.d.ts +9 -0
  46. package/lib/typescript/components/FlagsTab.d.ts.map +1 -0
  47. package/lib/typescript/components/NetworkItem.d.ts +9 -0
  48. package/lib/typescript/components/NetworkItem.d.ts.map +1 -0
  49. package/lib/typescript/components/NetworkTab.d.ts +11 -0
  50. package/lib/typescript/components/NetworkTab.d.ts.map +1 -0
  51. package/lib/typescript/constants.d.ts +8 -0
  52. package/lib/typescript/constants.d.ts.map +1 -1
  53. package/lib/typescript/index.d.ts +2 -2
  54. package/lib/typescript/index.d.ts.map +1 -1
  55. package/lib/typescript/log-interceptor.d.ts +3 -1
  56. package/lib/typescript/log-interceptor.d.ts.map +1 -1
  57. package/lib/typescript/network-interceptor.d.ts +35 -0
  58. package/lib/typescript/network-interceptor.d.ts.map +1 -0
  59. package/lib/typescript/types.d.ts +46 -0
  60. package/lib/typescript/types.d.ts.map +1 -1
  61. package/package.json +1 -1
  62. package/src/Backstage.tsx +64 -6
  63. package/src/components/BackstagePanel.tsx +46 -5
  64. package/src/components/FlagsTab.tsx +249 -0
  65. package/src/components/InfoTab.tsx +1 -1
  66. package/src/components/NetworkItem.tsx +536 -0
  67. package/src/components/NetworkTab.tsx +274 -0
  68. package/src/constants.ts +11 -2
  69. package/src/index.ts +3 -1
  70. package/src/log-interceptor.ts +12 -1
  71. package/src/network-interceptor.ts +468 -0
  72. package/src/types.ts +60 -0
@@ -0,0 +1,417 @@
1
+ "use strict";
2
+
3
+ Object.defineProperty(exports, "__esModule", {
4
+ value: true
5
+ });
6
+ exports.NetworkBuffer = void 0;
7
+ exports.installNetworkInterceptor = installNetworkInterceptor;
8
+ exports.isInsideNetworkCallback = isInsideNetworkCallback;
9
+ exports.toCurl = toCurl;
10
+ exports.uninstallNetworkInterceptor = uninstallNetworkInterceptor;
11
+ var _types = require("./types");
12
+ var _constants = require("./constants");
13
+ // ─── Types ───────────────────────────────────────────────────────────────────
14
+
15
+ // ─── State ───────────────────────────────────────────────────────────────────
16
+
17
+ let activeCallback = null;
18
+ let isInstalled = false;
19
+ let interceptorOptions = {};
20
+
21
+ // Track if we're inside a network callback context.
22
+ // Used by the log interceptor to auto-filter network-related console.logs.
23
+ let _activeNetworkCallbacks = 0;
24
+
25
+ /**
26
+ * Returns true if the current call stack originated from within a network
27
+ * response handler (XHR load/error, fetch .then()). Used by the log
28
+ * interceptor to suppress network-related console.logs from the Logs tab.
29
+ */
30
+ function isInsideNetworkCallback() {
31
+ return _activeNetworkCallbacks > 0;
32
+ }
33
+ function enterNetworkContext() {
34
+ _activeNetworkCallbacks++;
35
+ }
36
+ function exitNetworkContext() {
37
+ // Defer decrement through microtask queue so developer's .then() chains
38
+ // that fire after our return are also covered.
39
+ queueMicrotask(() => {
40
+ _activeNetworkCallbacks--;
41
+ });
42
+ }
43
+
44
+ // Store originals before patching
45
+ const originals = {
46
+ fetch: null,
47
+ XMLHttpRequest: null
48
+ };
49
+
50
+ // ─── Helpers ─────────────────────────────────────────────────────────────────
51
+
52
+ function generateId() {
53
+ return `net_${Date.now()}_${Math.random().toString(36).substring(2, 9)}`;
54
+ }
55
+ function shouldCapture(url, filters) {
56
+ if (filters.length === 0) return true;
57
+ const lower = url.toLowerCase();
58
+ return !filters.some(f => lower.includes(f.toLowerCase()));
59
+ }
60
+ function truncateBody(body, maxSize) {
61
+ if (!body) return undefined;
62
+ const limit = maxSize ?? _constants.DEFAULT_MAX_NETWORK_BODY_SIZE;
63
+ if (body.length <= limit) return body;
64
+ return body.substring(0, limit) + '\n... [truncated]';
65
+ }
66
+ function parseHeaders(headers) {
67
+ if (!headers) return undefined;
68
+ const result = {};
69
+ headers.forEach((value, key) => {
70
+ result[key] = value;
71
+ });
72
+ return Object.keys(result).length > 0 ? result : undefined;
73
+ }
74
+
75
+ /**
76
+ * Generates a cURL command string from a NetworkEntry.
77
+ */
78
+ function toCurl(entry) {
79
+ const parts = ['curl'];
80
+
81
+ // Method
82
+ if (entry.method && entry.method !== 'GET') {
83
+ parts.push(`-X ${entry.method}`);
84
+ }
85
+
86
+ // Request headers
87
+ if (entry.requestHeaders) {
88
+ for (const [key, value] of Object.entries(entry.requestHeaders)) {
89
+ parts.push(`-H '${key}: ${value}'`);
90
+ }
91
+ }
92
+
93
+ // Request body
94
+ if (entry.requestBody) {
95
+ // Escape single quotes in body
96
+ const escaped = entry.requestBody.replace(/'/g, "'\\''");
97
+ parts.push(`-d '${escaped}'`);
98
+ }
99
+
100
+ // URL (must be last)
101
+ parts.push(`'${entry.url}'`);
102
+ return parts.join(' \\\n ');
103
+ }
104
+
105
+ // ─── Fetch Interceptor ──────────────────────────────────────────────────────
106
+
107
+ function installFetchInterceptor() {
108
+ const originalFetch = global.fetch;
109
+ if (!originalFetch) return;
110
+ originals.fetch = originalFetch;
111
+ global.fetch = async function interceptedFetch(input, init) {
112
+ const url = typeof input === 'string' ? input : input instanceof URL ? input.toString() : input.url;
113
+ const method = init?.method ?? (typeof input !== 'string' && !(input instanceof URL) ? input.method : 'GET') ?? 'GET';
114
+
115
+ // Check filters
116
+ if (!shouldCapture(url, interceptorOptions.filters ?? [])) {
117
+ return originalFetch(input, init);
118
+ }
119
+
120
+ // Build entry
121
+ const entry = {
122
+ id: generateId(),
123
+ method: method.toUpperCase(),
124
+ url,
125
+ startTime: Date.now(),
126
+ state: _types.NetworkState.pending
127
+ };
128
+
129
+ // Capture request headers
130
+ if (init?.headers) {
131
+ try {
132
+ const h = new Headers(init.headers);
133
+ entry.requestHeaders = parseHeaders(h);
134
+ } catch {
135
+ // Skip if headers can't be parsed
136
+ }
137
+ }
138
+
139
+ // Capture request body
140
+ if (init?.body) {
141
+ try {
142
+ entry.requestBody = truncateBody(typeof init.body === 'string' ? init.body : JSON.stringify(init.body), interceptorOptions.maxBodySize);
143
+ } catch {
144
+ entry.requestBody = '[unable to serialize body]';
145
+ }
146
+ }
147
+
148
+ // Notify: request started
149
+ activeCallback?.(entry);
150
+ try {
151
+ const response = await originalFetch(input, init);
152
+ entry.endTime = Date.now();
153
+ entry.duration = entry.endTime - entry.startTime;
154
+ entry.status = response.status;
155
+ entry.statusText = response.statusText;
156
+ entry.responseHeaders = parseHeaders(response.headers);
157
+ entry.state = _types.NetworkState.completed;
158
+
159
+ // Clone response to read body without consuming it
160
+ try {
161
+ const clone = response.clone();
162
+ const text = await clone.text();
163
+ entry.responseSize = text.length;
164
+ entry.responseBody = truncateBody(text, interceptorOptions.maxBodySize);
165
+ } catch {
166
+ // Body may not be readable (e.g., stream already consumed)
167
+ }
168
+
169
+ // Notify: request completed
170
+ activeCallback?.(entry);
171
+
172
+ // Mark network context so developer's .then() console.logs are filtered
173
+ enterNetworkContext();
174
+
175
+ // Return the ORIGINAL response untouched
176
+ // Developer's .then() runs in the next microtask — exitNetworkContext
177
+ // defers via queueMicrotask to cover it.
178
+ const result = response;
179
+ exitNetworkContext();
180
+ return result;
181
+ } catch (err) {
182
+ entry.endTime = Date.now();
183
+ entry.duration = entry.endTime - entry.startTime;
184
+ entry.state = _types.NetworkState.error;
185
+ entry.error = err instanceof Error ? err.message : String(err);
186
+
187
+ // Notify: request failed
188
+ activeCallback?.(entry);
189
+
190
+ // Re-throw the original error
191
+ throw err;
192
+ }
193
+ };
194
+ }
195
+
196
+ // ─── XMLHttpRequest Interceptor ──────────────────────────────────────────────
197
+
198
+ function installXHRInterceptor() {
199
+ const OriginalXHR = global.XMLHttpRequest;
200
+ if (!OriginalXHR) return;
201
+ originals.XMLHttpRequest = OriginalXHR;
202
+ global.XMLHttpRequest = function InterceptedXHR() {
203
+ const xhr = new OriginalXHR();
204
+ const entry = {
205
+ id: generateId(),
206
+ method: 'GET',
207
+ url: '',
208
+ startTime: Date.now(),
209
+ state: _types.NetworkState.pending,
210
+ requestHeaders: {}
211
+ };
212
+ let shouldTrack = true;
213
+
214
+ // Intercept open()
215
+ const originalOpen = xhr.open.bind(xhr);
216
+ xhr.open = function (method, url, ...rest) {
217
+ entry.method = method.toUpperCase();
218
+ entry.url = url;
219
+ shouldTrack = shouldCapture(url, interceptorOptions.filters ?? []);
220
+ // @ts-expect-error — forwarding args to original
221
+ return originalOpen(method, url, ...rest);
222
+ };
223
+
224
+ // Intercept setRequestHeader()
225
+ const originalSetRequestHeader = xhr.setRequestHeader.bind(xhr);
226
+ xhr.setRequestHeader = function (name, value) {
227
+ if (shouldTrack && entry.requestHeaders) {
228
+ entry.requestHeaders[name] = value;
229
+ }
230
+ return originalSetRequestHeader(name, value);
231
+ };
232
+
233
+ // Intercept send()
234
+ const originalSend = xhr.send.bind(xhr);
235
+ xhr.send = function (body) {
236
+ if (!shouldTrack) {
237
+ return originalSend(body);
238
+ }
239
+ entry.startTime = Date.now();
240
+
241
+ // Capture request body
242
+ if (body) {
243
+ try {
244
+ entry.requestBody = truncateBody(typeof body === 'string' ? body : JSON.stringify(body), interceptorOptions.maxBodySize);
245
+ } catch {
246
+ entry.requestBody = '[unable to serialize body]';
247
+ }
248
+ }
249
+
250
+ // Clean up empty request headers
251
+ if (entry.requestHeaders && Object.keys(entry.requestHeaders).length === 0) {
252
+ entry.requestHeaders = undefined;
253
+ }
254
+
255
+ // Notify: request started
256
+ activeCallback?.(entry);
257
+
258
+ // Listen for completion
259
+ xhr.addEventListener('load', () => {
260
+ enterNetworkContext();
261
+ entry.endTime = Date.now();
262
+ entry.duration = entry.endTime - entry.startTime;
263
+ entry.status = xhr.status;
264
+ entry.statusText = xhr.statusText;
265
+ entry.state = _types.NetworkState.completed;
266
+
267
+ // Parse response headers
268
+ const rawHeaders = xhr.getAllResponseHeaders();
269
+ if (rawHeaders) {
270
+ const parsed = {};
271
+ rawHeaders.trim().split(/[\r\n]+/).forEach(line => {
272
+ const idx = line.indexOf(': ');
273
+ if (idx > 0) {
274
+ parsed[line.substring(0, idx).toLowerCase()] = line.substring(idx + 2);
275
+ }
276
+ });
277
+ entry.responseHeaders = Object.keys(parsed).length > 0 ? parsed : undefined;
278
+ }
279
+
280
+ // Capture response body
281
+ try {
282
+ const responseText = xhr.responseType === '' || xhr.responseType === 'text' ? xhr.responseText : JSON.stringify(xhr.response);
283
+ entry.responseSize = responseText?.length;
284
+ entry.responseBody = truncateBody(responseText, interceptorOptions.maxBodySize);
285
+ } catch {
286
+ // Response may not be text-readable
287
+ }
288
+ activeCallback?.(entry);
289
+ exitNetworkContext();
290
+ });
291
+ xhr.addEventListener('error', () => {
292
+ enterNetworkContext();
293
+ entry.endTime = Date.now();
294
+ entry.duration = entry.endTime - entry.startTime;
295
+ entry.state = _types.NetworkState.error;
296
+ entry.error = 'Network request failed';
297
+ activeCallback?.(entry);
298
+ exitNetworkContext();
299
+ });
300
+ xhr.addEventListener('timeout', () => {
301
+ enterNetworkContext();
302
+ entry.endTime = Date.now();
303
+ entry.duration = entry.endTime - entry.startTime;
304
+ entry.state = _types.NetworkState.error;
305
+ entry.error = 'Request timed out';
306
+ activeCallback?.(entry);
307
+ exitNetworkContext();
308
+ });
309
+ xhr.addEventListener('abort', () => {
310
+ enterNetworkContext();
311
+ entry.endTime = Date.now();
312
+ entry.duration = entry.endTime - entry.startTime;
313
+ entry.state = _types.NetworkState.error;
314
+ entry.error = 'Request aborted';
315
+ activeCallback?.(entry);
316
+ exitNetworkContext();
317
+ });
318
+ return originalSend(body);
319
+ };
320
+ return xhr;
321
+ };
322
+
323
+ // Copy static properties and prototype
324
+ Object.defineProperty(global.XMLHttpRequest, 'UNSENT', {
325
+ value: 0
326
+ });
327
+ Object.defineProperty(global.XMLHttpRequest, 'OPENED', {
328
+ value: 1
329
+ });
330
+ Object.defineProperty(global.XMLHttpRequest, 'HEADERS_RECEIVED', {
331
+ value: 2
332
+ });
333
+ Object.defineProperty(global.XMLHttpRequest, 'LOADING', {
334
+ value: 3
335
+ });
336
+ Object.defineProperty(global.XMLHttpRequest, 'DONE', {
337
+ value: 4
338
+ });
339
+ global.XMLHttpRequest.prototype = OriginalXHR.prototype;
340
+ }
341
+
342
+ // ─── Install / Uninstall ─────────────────────────────────────────────────────
343
+
344
+ function installNetworkInterceptor(callback, options = {}) {
345
+ if (isInstalled) {
346
+ // Update callback and options if already installed
347
+ activeCallback = callback;
348
+ interceptorOptions = options;
349
+ return;
350
+ }
351
+ activeCallback = callback;
352
+ interceptorOptions = options;
353
+ isInstalled = true;
354
+ installFetchInterceptor();
355
+ installXHRInterceptor();
356
+ }
357
+ function uninstallNetworkInterceptor() {
358
+ if (!isInstalled) return;
359
+
360
+ // Restore originals
361
+ if (originals.fetch) {
362
+ global.fetch = originals.fetch;
363
+ originals.fetch = null;
364
+ }
365
+ if (originals.XMLHttpRequest) {
366
+ global.XMLHttpRequest = originals.XMLHttpRequest;
367
+ originals.XMLHttpRequest = null;
368
+ }
369
+ activeCallback = null;
370
+ isInstalled = false;
371
+ }
372
+
373
+ // ─── Network Buffer ──────────────────────────────────────────────────────────
374
+
375
+ class NetworkBuffer {
376
+ entries = new Map();
377
+ order = [];
378
+ constructor(maxSize = _constants.DEFAULT_MAX_NETWORK_ENTRIES) {
379
+ this.maxSize = maxSize;
380
+ }
381
+
382
+ /**
383
+ * Upsert a network entry. If the entry already exists (same id),
384
+ * update it in place (e.g., pending → completed). Otherwise add new.
385
+ */
386
+ upsert(entry) {
387
+ if (this.entries.has(entry.id)) {
388
+ // Update existing entry (pending → completed/error)
389
+ this.entries.set(entry.id, entry);
390
+ } else {
391
+ // Add new entry at the front
392
+ this.order.unshift(entry.id);
393
+ this.entries.set(entry.id, entry);
394
+
395
+ // Evict oldest if over capacity
396
+ while (this.order.length > this.maxSize) {
397
+ const oldId = this.order.pop();
398
+ if (oldId) this.entries.delete(oldId);
399
+ }
400
+ }
401
+ }
402
+ getAll() {
403
+ return this.order.map(id => this.entries.get(id)).filter(Boolean);
404
+ }
405
+ clear() {
406
+ this.entries.clear();
407
+ this.order = [];
408
+ }
409
+ get hasErrors() {
410
+ return this.order.some(id => this.entries.get(id)?.state === _types.NetworkState.error);
411
+ }
412
+ get size() {
413
+ return this.order.length;
414
+ }
415
+ }
416
+ exports.NetworkBuffer = NetworkBuffer;
417
+ //# sourceMappingURL=network-interceptor.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"names":["_types","require","_constants","activeCallback","isInstalled","interceptorOptions","_activeNetworkCallbacks","isInsideNetworkCallback","enterNetworkContext","exitNetworkContext","queueMicrotask","originals","fetch","XMLHttpRequest","generateId","Date","now","Math","random","toString","substring","shouldCapture","url","filters","length","lower","toLowerCase","some","f","includes","truncateBody","body","maxSize","undefined","limit","DEFAULT_MAX_NETWORK_BODY_SIZE","parseHeaders","headers","result","forEach","value","key","Object","keys","toCurl","entry","parts","method","push","requestHeaders","entries","requestBody","escaped","replace","join","installFetchInterceptor","originalFetch","global","interceptedFetch","input","init","URL","id","toUpperCase","startTime","state","NetworkState","pending","h","Headers","JSON","stringify","maxBodySize","response","endTime","duration","status","statusText","responseHeaders","completed","clone","text","responseSize","responseBody","err","error","Error","message","String","installXHRInterceptor","OriginalXHR","InterceptedXHR","xhr","shouldTrack","originalOpen","open","bind","rest","originalSetRequestHeader","setRequestHeader","name","originalSend","send","addEventListener","rawHeaders","getAllResponseHeaders","parsed","trim","split","line","idx","indexOf","responseText","responseType","defineProperty","prototype","installNetworkInterceptor","callback","options","uninstallNetworkInterceptor","NetworkBuffer","Map","order","constructor","DEFAULT_MAX_NETWORK_ENTRIES","upsert","has","set","unshift","oldId","pop","delete","getAll","map","get","filter","Boolean","clear","hasErrors","size","exports"],"sourceRoot":"../../src","sources":["network-interceptor.ts"],"mappings":"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","ignoreList":[]}
@@ -3,7 +3,7 @@
3
3
  Object.defineProperty(exports, "__esModule", {
4
4
  value: true
5
5
  });
6
- exports.LogLevel = void 0;
6
+ exports.NetworkState = exports.LogLevel = void 0;
7
7
  // ─── Log Types ───────────────────────────────────────────────────────────────
8
8
  let LogLevel = exports.LogLevel = /*#__PURE__*/function (LogLevel) {
9
9
  LogLevel["log"] = "log";
@@ -12,8 +12,16 @@ let LogLevel = exports.LogLevel = /*#__PURE__*/function (LogLevel) {
12
12
  LogLevel["warn"] = "warn";
13
13
  LogLevel["error"] = "error";
14
14
  return LogLevel;
15
+ }({});
16
+ // ─── Network Types ───────────────────────────────────────────────────────────
17
+ let NetworkState = exports.NetworkState = /*#__PURE__*/function (NetworkState) {
18
+ NetworkState["pending"] = "pending";
19
+ NetworkState["completed"] = "completed";
20
+ NetworkState["error"] = "error";
21
+ return NetworkState;
15
22
  }({}); // ─── App Info ────────────────────────────────────────────────────────────────
16
23
  // ─── Quick Actions ───────────────────────────────────────────────────────────
24
+ // ─── Feature Flags ─────────────────────────────────────────────────────────
17
25
  // ─── Extensible Tabs ─────────────────────────────────────────────────────────
18
26
  // ─── Theme ───────────────────────────────────────────────────────────────────
19
27
  // ─── Main Props ──────────────────────────────────────────────────────────────
@@ -1 +1 @@
1
- {"version":3,"names":["LogLevel","exports"],"sourceRoot":"../../src","sources":["types.ts"],"mappings":";;;;;;AAGA;AAAA,IAEYA,QAAQ,GAAAC,OAAA,CAAAD,QAAA,0BAARA,QAAQ;EAARA,QAAQ;EAARA,QAAQ;EAARA,QAAQ;EAARA,QAAQ;EAARA,QAAQ;EAAA,OAARA,QAAQ;AAAA,OAgBpB;AAOA;AAWA;AASA;AAuBA;AAkEA","ignoreList":[]}
1
+ {"version":3,"names":["LogLevel","exports","NetworkState"],"sourceRoot":"../../src","sources":["types.ts"],"mappings":";;;;;;AAGA;AAAA,IAEYA,QAAQ,GAAAC,OAAA,CAAAD,QAAA,0BAARA,QAAQ;EAARA,QAAQ;EAARA,QAAQ;EAARA,QAAQ;EAARA,QAAQ;EAARA,QAAQ;EAAA,OAARA,QAAQ;AAAA;AAgBpB;AAAA,IAEYE,YAAY,GAAAD,OAAA,CAAAC,YAAA,0BAAZA,YAAY;EAAZA,YAAY;EAAZA,YAAY;EAAZA,YAAY;EAAA,OAAZA,YAAY;AAAA,OAwBxB;AAOA;AAWA;AAaA;AASA;AAuBA;AAuFA","ignoreList":[]}
@@ -2,8 +2,9 @@
2
2
 
3
3
  import React, { forwardRef, useCallback, useEffect, useImperativeHandle, useRef, useState } from 'react';
4
4
  import { StyleSheet, View } from 'react-native';
5
- import { DEFAULT_MAX_LOGS } from './constants';
5
+ import { DEFAULT_MAX_LOGS, DEFAULT_MAX_NETWORK_ENTRIES } from './constants';
6
6
  import { installInterceptor, LogBuffer, uninstallInterceptor } from './log-interceptor';
7
+ import { installNetworkInterceptor, NetworkBuffer, uninstallNetworkInterceptor } from './network-interceptor';
7
8
  import { FloatingPill } from './components/FloatingPill';
8
9
  import { BackstagePanel } from './components/BackstagePanel';
9
10
  import { jsx as _jsx, jsxs as _jsxs } from "react/jsx-runtime";
@@ -17,6 +18,8 @@ export const Backstage = /*#__PURE__*/forwardRef(({
17
18
  deviceInfo,
18
19
  state,
19
20
  quickActions,
21
+ featureFlags,
22
+ onToggleFeatureFlag,
20
23
  maxLogs = DEFAULT_MAX_LOGS,
21
24
  logFilters,
22
25
  onCopyLogs,
@@ -25,19 +28,27 @@ export const Backstage = /*#__PURE__*/forwardRef(({
25
28
  styles: propStyles,
26
29
  initialX,
27
30
  initialY,
28
- pillText
31
+ pillText,
32
+ enableNetworkInspector = true,
33
+ maxNetworkEntries = DEFAULT_MAX_NETWORK_ENTRIES,
34
+ maxNetworkBodySize,
35
+ networkFilters,
36
+ autoFilterNetworkLogs = true
29
37
  }, ref) => {
30
38
  const [panelVisible, setPanelVisible] = useState(false);
31
39
  const [hasError, setHasError] = useState(false);
32
40
  const [logs, setLogs] = useState([]);
41
+ const [networkEntries, setNetworkEntries] = useState([]);
33
42
  const logBuffer = useRef(new LogBuffer(maxLogs));
43
+ const networkBuffer = useRef(new NetworkBuffer(maxNetworkEntries));
34
44
 
35
45
  // ── Panel controls ────────────────────────────────────────
36
46
 
37
47
  const openPanel = useCallback(() => {
38
48
  setPanelVisible(true);
39
- // Sync logs when opening panel
49
+ // Sync logs and network entries when opening panel
40
50
  setLogs(logBuffer.current.getAll());
51
+ setNetworkEntries(networkBuffer.current.getAll());
41
52
  }, []);
42
53
  const closePanel = useCallback(() => {
43
54
  setPanelVisible(false);
@@ -48,12 +59,22 @@ export const Backstage = /*#__PURE__*/forwardRef(({
48
59
  setHasError(false);
49
60
  }, []);
50
61
 
51
- // ── Refresh logs ──────────────────────────────────────────
62
+ // ── Refresh logs ──────────────────────────────────────────────────
52
63
 
53
64
  const refreshLogs = useCallback(() => {
54
65
  setLogs(logBuffer.current.getAll());
55
66
  }, []);
56
67
 
68
+ // ── Network controls ──────────────────────────────────────────────
69
+
70
+ const refreshNetwork = useCallback(() => {
71
+ setNetworkEntries(networkBuffer.current.getAll());
72
+ }, []);
73
+ const clearNetwork = useCallback(() => {
74
+ networkBuffer.current.clear();
75
+ setNetworkEntries([]);
76
+ }, []);
77
+
57
78
  // ── Install console interceptor ───────────────────────────
58
79
 
59
80
  useEffect(() => {
@@ -65,11 +86,34 @@ export const Backstage = /*#__PURE__*/forwardRef(({
65
86
  setHasError(true);
66
87
  }
67
88
  };
68
- installInterceptor(handleLogEntry, logFilters);
89
+ installInterceptor(handleLogEntry, logFilters, {
90
+ autoFilterNetworkLogs: enableNetworkInspector && autoFilterNetworkLogs
91
+ });
69
92
  return () => {
70
93
  uninstallInterceptor();
71
94
  };
72
- }, [logFilters]);
95
+ }, [logFilters, enableNetworkInspector, autoFilterNetworkLogs]);
96
+
97
+ // ── Install network interceptor ───────────────────────────────
98
+
99
+ useEffect(() => {
100
+ if (!enableNetworkInspector) return;
101
+ const handleNetworkEntry = entry => {
102
+ networkBuffer.current.upsert(entry);
103
+
104
+ // Auto-refresh if panel is open
105
+ if (panelVisible) {
106
+ setNetworkEntries(networkBuffer.current.getAll());
107
+ }
108
+ };
109
+ installNetworkInterceptor(handleNetworkEntry, {
110
+ filters: networkFilters,
111
+ maxBodySize: maxNetworkBodySize
112
+ });
113
+ return () => {
114
+ uninstallNetworkInterceptor();
115
+ };
116
+ }, [enableNetworkInspector, networkFilters, maxNetworkBodySize, panelVisible]);
73
117
 
74
118
  // ── Expose ref methods ────────────────────────────────────
75
119
 
@@ -102,9 +146,15 @@ export const Backstage = /*#__PURE__*/forwardRef(({
102
146
  deviceInfo: deviceInfo,
103
147
  state: state,
104
148
  quickActions: quickActions,
149
+ featureFlags: featureFlags,
150
+ onToggleFeatureFlag: onToggleFeatureFlag,
105
151
  logs: logs,
106
152
  onRefreshLogs: refreshLogs,
107
153
  onCopyLogs: onCopyLogs,
154
+ networkEntries: networkEntries,
155
+ onRefreshNetwork: refreshNetwork,
156
+ onClearNetwork: clearNetwork,
157
+ onCopyNetwork: onCopyLogs,
108
158
  extraTabs: extraTabs,
109
159
  styles: propStyles,
110
160
  children: children
@@ -1 +1 @@
1
- {"version":3,"names":["React","forwardRef","useCallback","useEffect","useImperativeHandle","useRef","useState","StyleSheet","View","DEFAULT_MAX_LOGS","installInterceptor","LogBuffer","uninstallInterceptor","FloatingPill","BackstagePanel","jsx","_jsx","jsxs","_jsxs","Backstage","visible","appVersion","buildNumber","bundleId","deviceInfo","state","quickActions","maxLogs","logFilters","onCopyLogs","extraTabs","children","styles","propStyles","initialX","initialY","pillText","ref","panelVisible","setPanelVisible","hasError","setHasError","logs","setLogs","logBuffer","openPanel","current","getAll","closePanel","clearLogs","clear","refreshLogs","handleLogEntry","entry","push","level","open","close","displayText","style","container","pointerEvents","text","onPress","onClose","onRefreshLogs","displayName","create","absoluteFillObject","zIndex","elevation"],"sourceRoot":"../../src","sources":["Backstage.tsx"],"mappings":"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","ignoreList":[]}
1
+ {"version":3,"names":["React","forwardRef","useCallback","useEffect","useImperativeHandle","useRef","useState","StyleSheet","View","DEFAULT_MAX_LOGS","DEFAULT_MAX_NETWORK_ENTRIES","installInterceptor","LogBuffer","uninstallInterceptor","installNetworkInterceptor","NetworkBuffer","uninstallNetworkInterceptor","FloatingPill","BackstagePanel","jsx","_jsx","jsxs","_jsxs","Backstage","visible","appVersion","buildNumber","bundleId","deviceInfo","state","quickActions","featureFlags","onToggleFeatureFlag","maxLogs","logFilters","onCopyLogs","extraTabs","children","styles","propStyles","initialX","initialY","pillText","enableNetworkInspector","maxNetworkEntries","maxNetworkBodySize","networkFilters","autoFilterNetworkLogs","ref","panelVisible","setPanelVisible","hasError","setHasError","logs","setLogs","networkEntries","setNetworkEntries","logBuffer","networkBuffer","openPanel","current","getAll","closePanel","clearLogs","clear","refreshLogs","refreshNetwork","clearNetwork","handleLogEntry","entry","push","level","handleNetworkEntry","upsert","filters","maxBodySize","open","close","displayText","style","container","pointerEvents","text","onPress","onClose","onRefreshLogs","onRefreshNetwork","onClearNetwork","onCopyNetwork","displayName","create","absoluteFillObject","zIndex","elevation"],"sourceRoot":"../../src","sources":["Backstage.tsx"],"mappings":"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","ignoreList":[]}