@buoy-gg/network 7.0.26 → 7.0.28

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 (53) hide show
  1. package/lib/commonjs/network/components/NetworkDetailStepper.js +2 -1
  2. package/lib/commonjs/network/components/NetworkEventDetailView.js +74 -72
  3. package/lib/commonjs/network/components/NetworkEventItemCompact.js +26 -20
  4. package/lib/commonjs/network/components/NetworkEventItemCompact.web.js +24 -6
  5. package/lib/commonjs/network/components/NetworkFilterViewV3.js +12 -12
  6. package/lib/commonjs/network/components/NetworkHeaderLive.js +25 -29
  7. package/lib/commonjs/network/components/NetworkHeaderLive.web.js +24 -6
  8. package/lib/commonjs/network/components/NetworkHeaderMenu.js +10 -9
  9. package/lib/commonjs/network/components/NetworkListScreen.js +2 -1
  10. package/lib/commonjs/network/components/NetworkListScreen.web.js +24 -6
  11. package/lib/commonjs/network/components/NetworkModal.js +45 -31
  12. package/lib/commonjs/network/components/NetworkOverrideHeaderButton.js +10 -7
  13. package/lib/commonjs/network/components/NetworkOverridesButton.js +7 -7
  14. package/lib/commonjs/network/sync/networkSyncAdapter.js +36 -16
  15. package/lib/commonjs/network/utils/httpCompletion.js +37 -0
  16. package/lib/commonjs/network/utils/networkEventStore.js +26 -0
  17. package/lib/commonjs/network/utils/networkListener.js +180 -43
  18. package/lib/module/network/components/NetworkDetailStepper.js +2 -1
  19. package/lib/module/network/components/NetworkEventDetailView.js +75 -73
  20. package/lib/module/network/components/NetworkEventItemCompact.js +27 -21
  21. package/lib/module/network/components/NetworkEventItemCompact.web.js +24 -6
  22. package/lib/module/network/components/NetworkFilterViewV3.js +13 -13
  23. package/lib/module/network/components/NetworkHeaderLive.js +26 -30
  24. package/lib/module/network/components/NetworkHeaderLive.web.js +24 -6
  25. package/lib/module/network/components/NetworkHeaderMenu.js +11 -10
  26. package/lib/module/network/components/NetworkListScreen.js +3 -2
  27. package/lib/module/network/components/NetworkListScreen.web.js +24 -6
  28. package/lib/module/network/components/NetworkModal.js +46 -32
  29. package/lib/module/network/components/NetworkOverrideHeaderButton.js +11 -8
  30. package/lib/module/network/components/NetworkOverridesButton.js +8 -8
  31. package/lib/module/network/sync/networkSyncAdapter.js +37 -17
  32. package/lib/module/network/utils/httpCompletion.js +32 -0
  33. package/lib/module/network/utils/networkEventStore.js +26 -0
  34. package/lib/module/network/utils/networkListener.js +178 -42
  35. package/lib/typescript/network/components/NetworkDetailStepper.d.ts.map +1 -1
  36. package/lib/typescript/network/components/NetworkEventDetailView.d.ts.map +1 -1
  37. package/lib/typescript/network/components/NetworkEventItemCompact.d.ts.map +1 -1
  38. package/lib/typescript/network/components/NetworkEventItemCompact.web.d.ts.map +1 -1
  39. package/lib/typescript/network/components/NetworkFilterViewV3.d.ts.map +1 -1
  40. package/lib/typescript/network/components/NetworkHeaderLive.d.ts.map +1 -1
  41. package/lib/typescript/network/components/NetworkHeaderLive.web.d.ts.map +1 -1
  42. package/lib/typescript/network/components/NetworkListScreen.d.ts.map +1 -1
  43. package/lib/typescript/network/components/NetworkListScreen.web.d.ts.map +1 -1
  44. package/lib/typescript/network/components/NetworkModal.d.ts.map +1 -1
  45. package/lib/typescript/network/sync/networkSyncAdapter.d.ts +1 -0
  46. package/lib/typescript/network/sync/networkSyncAdapter.d.ts.map +1 -1
  47. package/lib/typescript/network/utils/httpCompletion.d.ts +11 -0
  48. package/lib/typescript/network/utils/httpCompletion.d.ts.map +1 -0
  49. package/lib/typescript/network/utils/networkEventStore.d.ts +17 -0
  50. package/lib/typescript/network/utils/networkEventStore.d.ts.map +1 -1
  51. package/lib/typescript/network/utils/networkListener.d.ts +61 -5
  52. package/lib/typescript/network/utils/networkListener.d.ts.map +1 -1
  53. package/package.json +2 -2
@@ -9,6 +9,7 @@ import { overrideForRequest } from "../overrides/engine";
9
9
  import { runOverride } from "../overrides/applyToXhr";
10
10
  import { canSynthesizeResponse, sleep, synthesizeFetchError, synthesizeResponse } from "../overrides/applyToFetch";
11
11
  import { markForOutcome } from "../overrides/types";
12
+ import { httpStatusText, xhrCompletionKind } from "./httpCompletion";
12
13
 
13
14
  /**
14
15
  * True only while `originalFetch` is being CALLED (not awaited).
@@ -28,6 +29,18 @@ let insideOverriddenFetch = false;
28
29
 
29
30
  // Event types for network operations
30
31
 
32
+ /**
33
+ * Markers stamped on the installed interceptor functions so their presence in
34
+ * the live chain stays detectable even after another tool wraps them.
35
+ * Cooperating patchers (@buoy-gg/impersonate) copy every `__buoy*` marker from
36
+ * the function they wrap onto their own wrapper; a global fetch/XHR WITHOUT
37
+ * the marker therefore means our interceptor was clobbered — some runtime
38
+ * re-assigned `globalThis.fetch` over it (Expo's winter runtime, React Native
39
+ * DevTools' network panel, a second dev server's tooling, hot-reload churn all
40
+ * do this in the wild) — and capture must re-install. See startListening.
41
+ */
42
+ export const BUOY_FETCH_INTERCEPTOR_FLAG = "__buoyNetworkFetchIntercepted";
43
+ export const BUOY_XHR_INTERCEPTOR_FLAG = "__buoyNetworkXhrIntercepted";
31
44
  /**
32
45
  * Network traffic interceptor for React Native applications
33
46
  *
@@ -68,6 +81,25 @@ class NetworkListener {
68
81
 
69
82
  // Store original methods
70
83
 
84
+ /**
85
+ * The wrappers currently installed by THIS instance, for identity checks:
86
+ * `stopListening` restores a global only when it is still literally ours —
87
+ * assigning our saved original over someone who patched after us would wipe
88
+ * their interceptor exactly the way this class gets wiped (see below).
89
+ */
90
+ patchedFetch = null;
91
+ patchedXHROpen = null;
92
+ patchedXHRSend = null;
93
+ patchedXHRSetRequestHeader = null;
94
+
95
+ /**
96
+ * Bumped on every (re)install and on stop. Each wrapper closes over the
97
+ * generation it was born with and goes silent (pure pass-through — no emit,
98
+ * no counter bump) once a newer generation exists, so a wrapper stranded
99
+ * inside another tool's chain can never double-report a request.
100
+ */
101
+ fetchGeneration = 0;
102
+ xhrGeneration = 0;
71
103
  constructor() {
72
104
  // Store original methods
73
105
  this.originalFetch = globalThis.fetch.bind(globalThis);
@@ -351,8 +383,10 @@ class NetworkListener {
351
383
  // Ignore header parsing errors
352
384
  }
353
385
 
354
- // Emit response or error based on status
355
- if (xhr.status >= 200 && xhr.status < 400) {
386
+ // Emit response or error based on status. A 4xx/5xx is a completed HTTP
387
+ // response, not a transport error — RN XHR leaves statusText empty, which
388
+ // used to become `event.error = "HTTP 500: "` and MCP `ERR HTTP 500: no error`.
389
+ if (xhrCompletionKind(xhr.status) === "response") {
356
390
  this.emit({
357
391
  type: "response",
358
392
  timestamp: new Date(),
@@ -369,7 +403,7 @@ class NetworkListener {
369
403
  },
370
404
  response: {
371
405
  status: xhr.status,
372
- statusText: xhr.statusText,
406
+ statusText: httpStatusText(xhr.status, xhr.statusText),
373
407
  headers: responseHeaders,
374
408
  body,
375
409
  size: responseSize
@@ -398,37 +432,89 @@ class NetworkListener {
398
432
  size: responseSize
399
433
  },
400
434
  error: {
401
- message: `HTTP ${xhr.status}: ${xhr.statusText}`
435
+ message: "Network Error"
402
436
  },
403
437
  override
404
438
  });
405
439
  }
406
440
  }
407
441
 
442
+ /** Is our fetch interceptor still reachable through the global chain? */
443
+ isFetchInterceptionLive() {
444
+ return globalThis.fetch[BUOY_FETCH_INTERCEPTOR_FLAG] === true;
445
+ }
446
+
447
+ /** Is our XHR interceptor still reachable through the prototype chain? */
448
+ isXhrInterceptionLive() {
449
+ return XMLHttpRequest.prototype.send[BUOY_XHR_INTERCEPTOR_FLAG] === true;
450
+ }
451
+
408
452
  /**
409
- * Start intercepting network operations by swizzling fetch and XMLHttpRequest
410
- *
411
- * This method replaces the global fetch function and XMLHttpRequest methods
412
- * with instrumented versions that emit events while preserving original functionality.
453
+ * Both halves of the interceptor are reachable — requests actually flow
454
+ * through capture. `isListening` alone cannot promise that (see
455
+ * startListening); diagnostics should report THIS.
456
+ */
457
+ isInterceptionLive() {
458
+ return this.isFetchInterceptionLive() && this.isXhrInterceptionLive();
459
+ }
460
+
461
+ /**
462
+ * Start (or repair) interception by swizzling fetch and XMLHttpRequest.
413
463
  *
414
- * @throws Will log warnings if already listening
464
+ * NOT guarded by a plain `isListening` flag: `globalThis.fetch` gets
465
+ * re-assigned in the wild — Expo's winter runtime, React Native DevTools'
466
+ * network panel, a second dev server's tooling, hot-reload churn. When that
467
+ * happens the flag still says "listening" while every request bypasses
468
+ * capture, and a flag-only guard makes the outage PERMANENT (observed as
469
+ * "No network events" forever with `interceptorInstalled: true`). So this
470
+ * verifies each interceptor is actually reachable (marker check) and
471
+ * re-installs whichever half was clobbered, wrapping the CURRENT global so
472
+ * whatever replaced us keeps working underneath. When both halves are live
473
+ * this costs two property reads.
415
474
  *
416
475
  * @performance Uses method swizzling for minimal runtime overhead
417
476
  * @performance Includes request deduplication through ignored URL patterns
418
477
  */
419
478
  startListening() {
420
- if (this.isListening) {
479
+ const fetchLive = this.isListening && this.isFetchInterceptionLive();
480
+ const xhrLive = this.isListening && this.isXhrInterceptionLive();
481
+ if (fetchLive && xhrLive) {
421
482
  return;
422
483
  }
423
- const self = this;
484
+ if (!fetchLive) {
485
+ this.installFetchInterceptor();
486
+ }
487
+ if (!xhrLive) {
488
+ this.installXhrInterceptor();
489
+ }
490
+ this.isListening = true;
491
+ if (__DEV__) {
492
+ // Network listener has started monitoring fetch and XMLHttpRequest operations
493
+ }
494
+ }
424
495
 
425
- // Swizzle fetch
426
- globalThis.fetch = async (input, init) => {
496
+ /** Swizzle `globalThis.fetch`, wrapping whatever is installed right now. */
497
+ installFetchInterceptor() {
498
+ const self = this;
499
+ // The pass-through is the CURRENT global (not the construction-time one):
500
+ // re-installing after a clobber must call through the replacement, and a
501
+ // stale generation must replay the chain exactly as it stood beneath it.
502
+ const passthroughFetch = globalThis.fetch.bind(globalThis);
503
+ this.originalFetch = passthroughFetch;
504
+ const generation = ++this.fetchGeneration;
505
+ const wrappedFetch = async (input, init) => {
427
506
  const url = typeof input === "string" ? input : input instanceof URL ? input.href : input.url;
428
507
 
508
+ // A newer install supersedes this wrapper. If it is still stranded in
509
+ // another tool's chain it must pass through silently, or one request
510
+ // would be reported once per stranded generation.
511
+ if (generation !== self.fetchGeneration) {
512
+ return passthroughFetch(input, init);
513
+ }
514
+
429
515
  // Skip ignored URLs
430
516
  if (self.shouldIgnoreUrl(url)) {
431
- return self.originalFetch(input, init);
517
+ return passthroughFetch(input, init);
432
518
  }
433
519
  const startTime = Date.now();
434
520
  const requestId = `fetch_${++self.requestCounter}`;
@@ -511,7 +597,7 @@ class NetworkListener {
511
597
  insideOverriddenFetch = outcome != null;
512
598
  let pending;
513
599
  try {
514
- pending = self.originalFetch(input, init);
600
+ pending = passthroughFetch(input, init);
515
601
  } finally {
516
602
  insideOverriddenFetch = false;
517
603
  }
@@ -614,30 +700,51 @@ class NetworkListener {
614
700
  throw error;
615
701
  }
616
702
  };
703
+ wrappedFetch[BUOY_FETCH_INTERCEPTOR_FLAG] = true;
704
+ this.patchedFetch = wrappedFetch;
705
+ globalThis.fetch = this.patchedFetch;
706
+ }
617
707
 
618
- // Swizzle XMLHttpRequest
619
- XMLHttpRequest.prototype.open = function (method, url, async, user, password) {
620
- // Store request info on the xhr instance
621
- const xhr = this;
622
- xhr._requestId = `xhr_${++self.requestCounter}`;
623
- xhr._method = method;
624
- xhr._url = url;
625
- xhr._startTime = Date.now();
626
- xhr._requestHeaders = {};
627
- return self.originalXHROpen.call(this, method, url, async, user, password);
708
+ /** Swizzle the XHR prototype methods, wrapping whatever is installed now. */
709
+ installXhrInterceptor() {
710
+ const self = this;
711
+ // Same contract as the fetch half: pass through to the CURRENT methods.
712
+ const passthroughOpen = XMLHttpRequest.prototype.open;
713
+ const passthroughSend = XMLHttpRequest.prototype.send;
714
+ const passthroughSetRequestHeader = XMLHttpRequest.prototype.setRequestHeader;
715
+ this.originalXHROpen = passthroughOpen;
716
+ this.originalXHRSend = passthroughSend;
717
+ this.originalXHRSetRequestHeader = passthroughSetRequestHeader;
718
+ const generation = ++this.xhrGeneration;
719
+ const patchedOpen = function (method, url, async, user, password) {
720
+ // Superseded generations must not re-stamp (a double stamp burns two
721
+ // request ids per request) — just pass through.
722
+ if (generation === self.xhrGeneration) {
723
+ const xhr = this;
724
+ xhr._requestId = `xhr_${++self.requestCounter}`;
725
+ xhr._method = method;
726
+ xhr._url = url;
727
+ xhr._startTime = Date.now();
728
+ xhr._requestHeaders = {};
729
+ }
730
+ return passthroughOpen.call(this, method, url, async ?? true, user, password);
628
731
  };
629
732
 
630
733
  // Track request headers
631
- XMLHttpRequest.prototype.setRequestHeader = function (header, value) {
734
+ const patchedSetRequestHeader = function (header, value) {
632
735
  const xhr = this;
633
- if (xhr._requestHeaders) {
736
+ if (generation === self.xhrGeneration && xhr._requestHeaders) {
634
737
  xhr._requestHeaders[header] = value;
635
738
  }
636
- return self.originalXHRSetRequestHeader.call(this, header, value);
739
+ return passthroughSetRequestHeader.call(this, header, value);
637
740
  };
638
- XMLHttpRequest.prototype.send = function (
741
+ const patchedSend = function (
639
742
  // @ts-ignore - this does exist on native
640
743
  data) {
744
+ // Superseded generation: silent pass-through (see the fetch wrapper).
745
+ if (generation !== self.xhrGeneration) {
746
+ return passthroughSend.call(this, data);
747
+ }
641
748
  const xhr = this;
642
749
  const requestId = xhr._requestId;
643
750
  const method = xhr._method || "GET";
@@ -647,7 +754,7 @@ class NetworkListener {
647
754
 
648
755
  // Skip ignored URLs
649
756
  if (self.shouldIgnoreUrl(url)) {
650
- return self.originalXHRSend.call(this, data);
757
+ return passthroughSend.call(this, data);
651
758
  }
652
759
  const {
653
760
  url: cleanUrl,
@@ -764,18 +871,21 @@ class NetworkListener {
764
871
  // Listeners are attached above FIRST: `runOverride` drives the same
765
872
  // readyState transitions a real response would, and the interceptor has
766
873
  // to see them (readyState 2 is where TTFB is stamped).
767
- const handled = runOverride(this, url, outcome, () => self.originalXHRSend.call(this, data));
874
+ const handled = runOverride(this, url, outcome, () => passthroughSend.call(this, data));
768
875
  // `handled` is false only where this isn't React Native's own
769
876
  // XMLHttpRequest and can't be driven by hand. Fall through and send for
770
877
  // real rather than dropping the request on the floor.
771
878
  if (handled) return;
772
879
  }
773
- return self.originalXHRSend.call(this, data);
880
+ return passthroughSend.call(this, data);
774
881
  };
775
- this.isListening = true;
776
- if (__DEV__) {
777
- // Network listener has started monitoring fetch and XMLHttpRequest operations
778
- }
882
+ patchedSend[BUOY_XHR_INTERCEPTOR_FLAG] = true;
883
+ this.patchedXHROpen = patchedOpen;
884
+ this.patchedXHRSend = patchedSend;
885
+ this.patchedXHRSetRequestHeader = patchedSetRequestHeader;
886
+ XMLHttpRequest.prototype.open = this.patchedXHROpen;
887
+ XMLHttpRequest.prototype.send = this.patchedXHRSend;
888
+ XMLHttpRequest.prototype.setRequestHeader = this.patchedXHRSetRequestHeader;
779
889
  }
780
890
 
781
891
  /**
@@ -789,11 +899,30 @@ class NetworkListener {
789
899
  return;
790
900
  }
791
901
 
792
- // Restore original methods
793
- globalThis.fetch = this.originalFetch;
794
- XMLHttpRequest.prototype.open = this.originalXHROpen;
795
- XMLHttpRequest.prototype.send = this.originalXHRSend;
796
- XMLHttpRequest.prototype.setRequestHeader = this.originalXHRSetRequestHeader;
902
+ // Silence any of our wrappers stranded inside another tool's chain — they
903
+ // check the generation on every call and now pass through without emitting.
904
+ this.fetchGeneration++;
905
+ this.xhrGeneration++;
906
+
907
+ // Restore ONLY what is still literally ours. If another tool patched after
908
+ // us (impersonate, a debugger), assigning our saved originals would wipe
909
+ // ITS interceptor — the exact injury startListening defends against.
910
+ if (this.patchedFetch && globalThis.fetch === this.patchedFetch) {
911
+ globalThis.fetch = this.originalFetch;
912
+ }
913
+ if (this.patchedXHROpen && XMLHttpRequest.prototype.open === this.patchedXHROpen) {
914
+ XMLHttpRequest.prototype.open = this.originalXHROpen;
915
+ }
916
+ if (this.patchedXHRSend && XMLHttpRequest.prototype.send === this.patchedXHRSend) {
917
+ XMLHttpRequest.prototype.send = this.originalXHRSend;
918
+ }
919
+ if (this.patchedXHRSetRequestHeader && XMLHttpRequest.prototype.setRequestHeader === this.patchedXHRSetRequestHeader) {
920
+ XMLHttpRequest.prototype.setRequestHeader = this.originalXHRSetRequestHeader;
921
+ }
922
+ this.patchedFetch = null;
923
+ this.patchedXHROpen = null;
924
+ this.patchedXHRSend = null;
925
+ this.patchedXHRSetRequestHeader = null;
797
926
  this.isListening = false;
798
927
  if (__DEV__) {
799
928
  // Network listener has stopped monitoring and restored original methods
@@ -912,4 +1041,11 @@ export const isNetworkListening = () => getNetworkListener().isActive;
912
1041
  *
913
1042
  * @returns Number of active listeners
914
1043
  */
915
- export const getNetworkListenerCount = () => getNetworkListener().listenerCount;
1044
+ export const getNetworkListenerCount = () => getNetworkListener().listenerCount;
1045
+
1046
+ /**
1047
+ * Whether both interceptors are actually reachable through the live global
1048
+ * chain — the honest version of `isNetworkListening` (whose flag stays true
1049
+ * even after another tool re-assigns `globalThis.fetch` over the wrapper).
1050
+ */
1051
+ export const isNetworkInterceptionLive = () => getNetworkListener().isInterceptionLive();
@@ -1 +1 @@
1
- {"version":3,"file":"NetworkDetailStepper.d.ts","sourceRoot":"","sources":["../../../../src/network/components/NetworkDetailStepper.tsx"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;;;;;;;;;;;;GAwBG;AAGH,OAAO,EAAgC,KAAK,cAAc,EAAE,MAAM,oBAAoB,CAAC;AACvF,OAAO,KAAK,EAAgB,aAAa,EAAE,MAAM,UAAU,CAAC;AAW5D,UAAU,yBAAyB;IACjC,MAAM,EAAE,OAAO,CAAC;IAChB,MAAM,EAAE,aAAa,CAAC;IACtB,eAAe,EAAE,SAAS,cAAc,EAAE,CAAC;IAC3C,KAAK,EAAE,OAAO,CAAC;IACf,wEAAwE;IACxE,SAAS,EAAE,OAAO,CAAC;IACnB,8EAA8E;IAC9E,WAAW,EAAE,MAAM,CAAC;IACpB,yEAAyE;IACzE,kBAAkB,EAAE,OAAO,CAAC;CAC7B;AAMD,eAAO,MAAM,oBAAoB,iEAkE/B,CAAC"}
1
+ {"version":3,"file":"NetworkDetailStepper.d.ts","sourceRoot":"","sources":["../../../../src/network/components/NetworkDetailStepper.tsx"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;;;;;;;;;;;;GAwBG;AAGH,OAAO,EAAgC,KAAK,cAAc,EAAE,MAAM,oBAAoB,CAAC;AACvF,OAAO,KAAK,EAAgB,aAAa,EAAE,MAAM,UAAU,CAAC;AAW5D,UAAU,yBAAyB;IACjC,MAAM,EAAE,OAAO,CAAC;IAChB,MAAM,EAAE,aAAa,CAAC;IACtB,eAAe,EAAE,SAAS,cAAc,EAAE,CAAC;IAC3C,KAAK,EAAE,OAAO,CAAC;IACf,wEAAwE;IACxE,SAAS,EAAE,OAAO,CAAC;IACnB,8EAA8E;IAC9E,WAAW,EAAE,MAAM,CAAC;IACpB,yEAAyE;IACzE,kBAAkB,EAAE,OAAO,CAAC;CAC7B;AAMD,eAAO,MAAM,oBAAoB,iEAmE/B,CAAC"}
@@ -1 +1 @@
1
- {"version":3,"file":"NetworkEventDetailView.d.ts","sourceRoot":"","sources":["../../../../src/network/components/NetworkEventDetailView.tsx"],"names":[],"mappings":"AA4BA,OAAO,KAAK,EAAE,YAAY,EAAkB,MAAM,UAAU,CAAC;AA0B7D,UAAU,2BAA2B;IACnC,KAAK,EAAE,YAAY,CAAC;IACpB,eAAe,CAAC,EAAE,GAAG,CAAC,MAAM,CAAC,CAAC;IAC9B,eAAe,CAAC,EAAE,CAAC,OAAO,EAAE,MAAM,KAAK,IAAI,CAAC;IAC5C;;;;;;;;;;;;;;;OAeG;IACH,UAAU,CAAC,EAAE,OAAO,CAAC;CACtB;AA+QD;;;;;;;;;;;;;;;;;;;;;GAqBG;AACH,eAAO,MAAM,sBAAsB,mEAoiBjC,CAAC"}
1
+ {"version":3,"file":"NetworkEventDetailView.d.ts","sourceRoot":"","sources":["../../../../src/network/components/NetworkEventDetailView.tsx"],"names":[],"mappings":"AA6BA,OAAO,KAAK,EAAE,YAAY,EAAkB,MAAM,UAAU,CAAC;AA0B7D,UAAU,2BAA2B;IACnC,KAAK,EAAE,YAAY,CAAC;IACpB,eAAe,CAAC,EAAE,GAAG,CAAC,MAAM,CAAC,CAAC;IAC9B,eAAe,CAAC,EAAE,CAAC,OAAO,EAAE,MAAM,KAAK,IAAI,CAAC;IAC5C;;;;;;;;;;;;;;;OAeG;IACH,UAAU,CAAC,EAAE,OAAO,CAAC;CACtB;AA+QD;;;;;;;;;;;;;;;;;;;;;GAqBG;AACH,eAAO,MAAM,sBAAsB,mEAoiBjC,CAAC"}
@@ -1 +1 @@
1
- {"version":3,"file":"NetworkEventItemCompact.d.ts","sourceRoot":"","sources":["../../../../src/network/components/NetworkEventItemCompact.tsx"],"names":[],"mappings":"AAgBA,OAAO,KAAK,EAAE,YAAY,EAAE,MAAM,UAAU,CAAC;AAM7C,UAAU,4BAA4B;IACpC,KAAK,EAAE,YAAY,CAAC;IACpB,OAAO,EAAE,CAAC,KAAK,EAAE,YAAY,KAAK,IAAI,CAAC;IACvC;;;;;;;;OAQG;IACH,MAAM,CAAC,EAAE,OAAO,CAAC;IACjB,KAAK,CAAC,EAAE,OAAO,CAAC;IAChB,WAAW,CAAC,EAAE,CAAC,KAAK,EAAE,YAAY,KAAK,IAAI,CAAC;IAC5C;;;;OAIG;IACH,UAAU,CAAC,EAAE,OAAO,CAAC;CACtB;AAkJD,eAAO,MAAM,uBAAuB,oEA4HnC,CAAC"}
1
+ {"version":3,"file":"NetworkEventItemCompact.d.ts","sourceRoot":"","sources":["../../../../src/network/components/NetworkEventItemCompact.tsx"],"names":[],"mappings":"AAiBA,OAAO,KAAK,EAAE,YAAY,EAAE,MAAM,UAAU,CAAC;AAM7C,UAAU,4BAA4B;IACpC,KAAK,EAAE,YAAY,CAAC;IACpB,OAAO,EAAE,CAAC,KAAK,EAAE,YAAY,KAAK,IAAI,CAAC;IACvC;;;;;;;;OAQG;IACH,MAAM,CAAC,EAAE,OAAO,CAAC;IACjB,KAAK,CAAC,EAAE,OAAO,CAAC;IAChB,WAAW,CAAC,EAAE,CAAC,KAAK,EAAE,YAAY,KAAK,IAAI,CAAC;IAC5C;;;;OAIG;IACH,UAAU,CAAC,EAAE,OAAO,CAAC;CACtB;AAoJD,eAAO,MAAM,uBAAuB,oEA8HnC,CAAC"}
@@ -1 +1 @@
1
- {"version":3,"file":"NetworkEventItemCompact.web.d.ts","sourceRoot":"","sources":["../../../../src/network/components/NetworkEventItemCompact.web.tsx"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;GAuCG;AAGH,OAAO,KAAK,EAAE,YAAY,EAAE,MAAM,UAAU,CAAC;AA8a7C,UAAU,4BAA4B;IACpC,KAAK,EAAE,YAAY,CAAC;IACpB,OAAO,EAAE,CAAC,KAAK,EAAE,YAAY,KAAK,IAAI,CAAC;IACvC;;;;OAIG;IACH,MAAM,CAAC,EAAE,OAAO,CAAC;IACjB,KAAK,CAAC,EAAE,OAAO,CAAC;IAChB,WAAW,CAAC,EAAE,CAAC,KAAK,EAAE,YAAY,KAAK,IAAI,CAAC;IAC5C,2EAA2E;IAC3E,UAAU,CAAC,EAAE,OAAO,CAAC;CACtB;AAyFD,eAAO,MAAM,uBAAuB,oEAkHnC,CAAC"}
1
+ {"version":3,"file":"NetworkEventItemCompact.web.d.ts","sourceRoot":"","sources":["../../../../src/network/components/NetworkEventItemCompact.web.tsx"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;GAuCG;AAGH,OAAO,KAAK,EAAE,YAAY,EAAE,MAAM,UAAU,CAAC;AAob7C,UAAU,4BAA4B;IACpC,KAAK,EAAE,YAAY,CAAC;IACpB,OAAO,EAAE,CAAC,KAAK,EAAE,YAAY,KAAK,IAAI,CAAC;IACvC;;;;OAIG;IACH,MAAM,CAAC,EAAE,OAAO,CAAC;IACjB,KAAK,CAAC,EAAE,OAAO,CAAC;IAChB,WAAW,CAAC,EAAE,CAAC,KAAK,EAAE,YAAY,KAAK,IAAI,CAAC;IAC5C,2EAA2E;IAC3E,UAAU,CAAC,EAAE,OAAO,CAAC;CACtB;AAyFD,eAAO,MAAM,uBAAuB,oEAkHnC,CAAC"}
@@ -1 +1 @@
1
- {"version":3,"file":"NetworkFilterViewV3.d.ts","sourceRoot":"","sources":["../../../../src/network/components/NetworkFilterViewV3.tsx"],"names":[],"mappings":"AAeA,OAAO,KAAK,EAAE,cAAc,EAA2B,YAAY,EAAE,MAAM,UAAU,CAAC;AAItF,UAAU,aAAa;IACrB,MAAM,CAAC,EAAE,KAAK,GAAG,SAAS,GAAG,OAAO,GAAG,SAAS,CAAC;IACjD,MAAM,CAAC,EAAE,MAAM,EAAE,CAAC;IAClB,WAAW,CAAC,EAAE,MAAM,EAAE,CAAC;IACvB,UAAU,CAAC,EAAE,MAAM,CAAC;CACrB;AAED,UAAU,wBAAwB;IAChC,MAAM,EAAE,YAAY,EAAE,CAAC;IACvB,MAAM,EAAE,aAAa,CAAC;IACtB,cAAc,EAAE,CAAC,MAAM,EAAE,aAAa,KAAK,IAAI,CAAC;IAChD,eAAe,CAAC,EAAE,cAAc,EAAE,CAAC;IACnC,qCAAqC;IACrC,eAAe,CAAC,EAAE,CAAC,OAAO,EAAE,MAAM,KAAK,IAAI,CAAC;IAC5C,qDAAqD;IACrD,YAAY,CAAC,EAAE,CAAC,OAAO,EAAE,cAAc,KAAK,IAAI,CAAC;IACjD,4DAA4D;IAC5D,mBAAmB,CAAC,EAAE,CAAC,OAAO,EAAE,MAAM,KAAK,IAAI,CAAC;CACjD;AA8DD;;;GAGG;AACH,wBAAgB,mBAAmB,CAAC,EAClC,MAAM,EACN,MAAM,EACN,cAAc,EACd,eAAoB,EACpB,eAA0B,EAC1B,YAAuB,EACvB,mBAA8B,GAC/B,EAAE,wBAAwB,+BA0V1B"}
1
+ {"version":3,"file":"NetworkFilterViewV3.d.ts","sourceRoot":"","sources":["../../../../src/network/components/NetworkFilterViewV3.tsx"],"names":[],"mappings":"AAgBA,OAAO,KAAK,EAAE,cAAc,EAA2B,YAAY,EAAE,MAAM,UAAU,CAAC;AAItF,UAAU,aAAa;IACrB,MAAM,CAAC,EAAE,KAAK,GAAG,SAAS,GAAG,OAAO,GAAG,SAAS,CAAC;IACjD,MAAM,CAAC,EAAE,MAAM,EAAE,CAAC;IAClB,WAAW,CAAC,EAAE,MAAM,EAAE,CAAC;IACvB,UAAU,CAAC,EAAE,MAAM,CAAC;CACrB;AAED,UAAU,wBAAwB;IAChC,MAAM,EAAE,YAAY,EAAE,CAAC;IACvB,MAAM,EAAE,aAAa,CAAC;IACtB,cAAc,EAAE,CAAC,MAAM,EAAE,aAAa,KAAK,IAAI,CAAC;IAChD,eAAe,CAAC,EAAE,cAAc,EAAE,CAAC;IACnC,qCAAqC;IACrC,eAAe,CAAC,EAAE,CAAC,OAAO,EAAE,MAAM,KAAK,IAAI,CAAC;IAC5C,qDAAqD;IACrD,YAAY,CAAC,EAAE,CAAC,OAAO,EAAE,cAAc,KAAK,IAAI,CAAC;IACjD,4DAA4D;IAC5D,mBAAmB,CAAC,EAAE,CAAC,OAAO,EAAE,MAAM,KAAK,IAAI,CAAC;CACjD;AA8DD;;;GAGG;AACH,wBAAgB,mBAAmB,CAAC,EAClC,MAAM,EACN,MAAM,EACN,cAAc,EACd,eAAoB,EACpB,eAA0B,EAC1B,YAAuB,EACvB,mBAA8B,GAC/B,EAAE,wBAAwB,+BA0V1B"}
@@ -1 +1 @@
1
- {"version":3,"file":"NetworkHeaderLive.d.ts","sourceRoot":"","sources":["../../../../src/network/components/NetworkHeaderLive.tsx"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;;;;GAgBG;AAGH,OAAO,EAUL,KAAK,cAAc,EAEpB,MAAM,oBAAoB,CAAC;AAE5B,OAAO,KAAK,EAAE,aAAa,EAAE,MAAM,UAAU,CAAC;AAC9C,OAAO,KAAK,EAAE,YAAY,EAAE,MAAM,2BAA2B,CAAC;AAqB9D,KAAK,YAAY,GAAG,SAAS,GAAG,OAAO,GAAG,SAAS,CAAC;AAEpD,UAAU,wBAAwB;IAChC,YAAY,EAAE,aAAa,CAAC,QAAQ,CAAC,CAAC;IACtC,cAAc,EAAE,CAAC,MAAM,EAAE,YAAY,KAAK,IAAI,CAAC;IAC/C,eAAe,EAAE,SAAS,cAAc,EAAE,CAAC;IAC3C,MAAM,EAAE,OAAO,CAAC;CACjB;AAED,yEAAyE;AACzE,wBAAgB,mBAAmB,CAAC,EAClC,YAAY,EACZ,cAAc,EACd,eAAe,EACf,MAAM,GACP,EAAE,wBAAwB,+BA4D1B;AAED,UAAU,uBAAuB;IAC/B,MAAM,EAAE,OAAO,CAAC;CACjB;AAED;;iDAEiD;AACjD,wBAAgB,kBAAkB,CAAC,EAAE,MAAM,EAAE,EAAE,uBAAuB,+BAqBrE;AAED,UAAU,uBAAuB;IAC/B,OAAO,EAAE,MAAM,IAAI,CAAC;CACrB;AAED;;;GAGG;AACH,wBAAgB,kBAAkB,CAAC,EAAE,OAAO,EAAE,EAAE,uBAAuB,+BAwBtE;AAED,UAAU,4BAA4B;IACpC,KAAK,EAAE,OAAO,CAAC;IACf,cAAc,EAAE,MAAM,IAAI,CAAC;CAC5B;AAED;;;;;;;;;;;;;;;;;GAiBG;AACH,wBAAgB,uBAAuB,CAAC,EACtC,KAAK,EACL,cAAc,GACf,EAAE,4BAA4B,+BAuF9B;AAED,UAAU,4BAA4B;IACpC,KAAK,EAAE,OAAO,CAAC;IACf,MAAM,EAAE,aAAa,CAAC;IACtB,eAAe,EAAE,SAAS,cAAc,EAAE,CAAC;IAC3C,YAAY,EAAE,YAAY,CAAC;IAC3B,MAAM,EAAE,OAAO,CAAC;IAChB,cAAc,EAAE,MAAM,IAAI,CAAC;IAC3B;;;;;OAKG;IACH,KAAK,CAAC,EAAE,MAAM,CAAC;CAChB;AAED;;;;GAIG;AACH,wBAAgB,uBAAuB,CAAC,EACtC,KAAK,EACL,MAAM,EACN,eAAe,EACf,YAAY,EACZ,MAAM,EACN,cAAc,EACd,KAAK,GACN,EAAE,4BAA4B,+BAsD9B"}
1
+ {"version":3,"file":"NetworkHeaderLive.d.ts","sourceRoot":"","sources":["../../../../src/network/components/NetworkHeaderLive.tsx"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;;;;GAgBG;AAGH,OAAO,EAWL,KAAK,cAAc,EAEpB,MAAM,oBAAoB,CAAC;AAE5B,OAAO,KAAK,EAAE,aAAa,EAAE,MAAM,UAAU,CAAC;AAC9C,OAAO,KAAK,EAAE,YAAY,EAAE,MAAM,2BAA2B,CAAC;AAqB9D,KAAK,YAAY,GAAG,SAAS,GAAG,OAAO,GAAG,SAAS,CAAC;AAEpD,UAAU,wBAAwB;IAChC,YAAY,EAAE,aAAa,CAAC,QAAQ,CAAC,CAAC;IACtC,cAAc,EAAE,CAAC,MAAM,EAAE,YAAY,KAAK,IAAI,CAAC;IAC/C,eAAe,EAAE,SAAS,cAAc,EAAE,CAAC;IAC3C,MAAM,EAAE,OAAO,CAAC;CACjB;AAED,yEAAyE;AACzE,wBAAgB,mBAAmB,CAAC,EAClC,YAAY,EACZ,cAAc,EACd,eAAe,EACf,MAAM,GACP,EAAE,wBAAwB,+BA4D1B;AAED,UAAU,uBAAuB;IAC/B,MAAM,EAAE,OAAO,CAAC;CACjB;AAED;;iDAEiD;AACjD,wBAAgB,kBAAkB,CAAC,EAAE,MAAM,EAAE,EAAE,uBAAuB,+BAqBrE;AAED,UAAU,uBAAuB;IAC/B,OAAO,EAAE,MAAM,IAAI,CAAC;CACrB;AAED;;;GAGG;AACH,wBAAgB,kBAAkB,CAAC,EAAE,OAAO,EAAE,EAAE,uBAAuB,+BAwBtE;AAED,UAAU,4BAA4B;IACpC,KAAK,EAAE,OAAO,CAAC;IACf,cAAc,EAAE,MAAM,IAAI,CAAC;CAC5B;AAED;;;;;;;;;;;;;;;;;GAiBG;AACH,wBAAgB,uBAAuB,CAAC,EACtC,KAAK,EACL,cAAc,GACf,EAAE,4BAA4B,+BAwF9B;AAED,UAAU,4BAA4B;IACpC,KAAK,EAAE,OAAO,CAAC;IACf,MAAM,EAAE,aAAa,CAAC;IACtB,eAAe,EAAE,SAAS,cAAc,EAAE,CAAC;IAC3C,YAAY,EAAE,YAAY,CAAC;IAC3B,MAAM,EAAE,OAAO,CAAC;IAChB,cAAc,EAAE,MAAM,IAAI,CAAC;IAC3B;;;;;OAKG;IACH,KAAK,CAAC,EAAE,MAAM,CAAC;CAChB;AAED;;;;GAIG;AACH,wBAAgB,uBAAuB,CAAC,EACtC,KAAK,EACL,MAAM,EACN,eAAe,EACf,YAAY,EACZ,MAAM,EACN,cAAc,EACd,KAAK,GACN,EAAE,4BAA4B,+BAsD9B"}
@@ -1 +1 @@
1
- {"version":3,"file":"NetworkHeaderLive.web.d.ts","sourceRoot":"","sources":["../../../../src/network/components/NetworkHeaderLive.web.tsx"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;GAyCG;AASH,OAAO,KAAK,EAAE,cAAc,EAAE,MAAM,oBAAoB,CAAC;AAEzD,OAAO,KAAK,EAAE,aAAa,EAAE,MAAM,UAAU,CAAC;AAe9C,OAAO,EAEL,KAAK,YAAY,EAClB,MAAM,kCAAkC,CAAC;AAwH1C,KAAK,YAAY,GAAG,SAAS,GAAG,OAAO,GAAG,SAAS,CAAC;AAEpD,UAAU,wBAAwB;IAChC,YAAY,EAAE,aAAa,CAAC,QAAQ,CAAC,CAAC;IACtC,cAAc,EAAE,CAAC,MAAM,EAAE,YAAY,KAAK,IAAI,CAAC;IAC/C,eAAe,EAAE,SAAS,cAAc,EAAE,CAAC;IAC3C,MAAM,EAAE,OAAO,CAAC;CACjB;AAED,yEAAyE;AACzE,wBAAgB,mBAAmB,CAAC,EAClC,YAAY,EACZ,cAAc,EACd,eAAe,EACf,MAAM,GACP,EAAE,wBAAwB,+BA+D1B;AAED,UAAU,uBAAuB;IAC/B,MAAM,EAAE,OAAO,CAAC;CACjB;AAED;;iDAEiD;AACjD,wBAAgB,kBAAkB,CAAC,EAAE,MAAM,EAAE,EAAE,uBAAuB,+BAoBrE;AAED,UAAU,uBAAuB;IAC/B,OAAO,EAAE,MAAM,IAAI,CAAC;CACrB;AAED;;;GAGG;AACH,wBAAgB,kBAAkB,CAAC,EAAE,OAAO,EAAE,EAAE,uBAAuB,+BAwBtE;AAED,UAAU,4BAA4B;IACpC,KAAK,EAAE,OAAO,CAAC;IACf,cAAc,EAAE,MAAM,IAAI,CAAC;CAC5B;AAED;;;;;;;;;;GAUG;AACH,wBAAgB,uBAAuB,CAAC,EACtC,KAAK,EACL,cAAc,GACf,EAAE,4BAA4B,+BAqF9B;AAED,UAAU,4BAA4B;IACpC,KAAK,EAAE,OAAO,CAAC;IACf,MAAM,EAAE,aAAa,CAAC;IACtB,eAAe,EAAE,SAAS,cAAc,EAAE,CAAC;IAC3C,YAAY,EAAE,YAAY,CAAC;IAC3B,MAAM,EAAE,OAAO,CAAC;IAChB,cAAc,EAAE,MAAM,IAAI,CAAC;IAC3B;;;;;OAKG;IACH,KAAK,CAAC,EAAE,MAAM,CAAC;CAChB;AAID;;;;;;;;GAQG;AACH,wBAAgB,uBAAuB,CAAC,EACtC,KAAK,EACL,MAAM,EACN,eAAe,EACf,YAAY,EACZ,MAAM,EACN,cAAc,EACd,KAAK,GACN,EAAE,4BAA4B,+BAmG9B"}
1
+ {"version":3,"file":"NetworkHeaderLive.web.d.ts","sourceRoot":"","sources":["../../../../src/network/components/NetworkHeaderLive.web.tsx"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;GAyCG;AASH,OAAO,KAAK,EAAE,cAAc,EAAE,MAAM,oBAAoB,CAAC;AAEzD,OAAO,KAAK,EAAE,aAAa,EAAE,MAAM,UAAU,CAAC;AAe9C,OAAO,EAEL,KAAK,YAAY,EAClB,MAAM,kCAAkC,CAAC;AA8H1C,KAAK,YAAY,GAAG,SAAS,GAAG,OAAO,GAAG,SAAS,CAAC;AAEpD,UAAU,wBAAwB;IAChC,YAAY,EAAE,aAAa,CAAC,QAAQ,CAAC,CAAC;IACtC,cAAc,EAAE,CAAC,MAAM,EAAE,YAAY,KAAK,IAAI,CAAC;IAC/C,eAAe,EAAE,SAAS,cAAc,EAAE,CAAC;IAC3C,MAAM,EAAE,OAAO,CAAC;CACjB;AAED,yEAAyE;AACzE,wBAAgB,mBAAmB,CAAC,EAClC,YAAY,EACZ,cAAc,EACd,eAAe,EACf,MAAM,GACP,EAAE,wBAAwB,+BA+D1B;AAED,UAAU,uBAAuB;IAC/B,MAAM,EAAE,OAAO,CAAC;CACjB;AAED;;iDAEiD;AACjD,wBAAgB,kBAAkB,CAAC,EAAE,MAAM,EAAE,EAAE,uBAAuB,+BAoBrE;AAED,UAAU,uBAAuB;IAC/B,OAAO,EAAE,MAAM,IAAI,CAAC;CACrB;AAED;;;GAGG;AACH,wBAAgB,kBAAkB,CAAC,EAAE,OAAO,EAAE,EAAE,uBAAuB,+BAwBtE;AAED,UAAU,4BAA4B;IACpC,KAAK,EAAE,OAAO,CAAC;IACf,cAAc,EAAE,MAAM,IAAI,CAAC;CAC5B;AAED;;;;;;;;;;GAUG;AACH,wBAAgB,uBAAuB,CAAC,EACtC,KAAK,EACL,cAAc,GACf,EAAE,4BAA4B,+BAsF9B;AAED,UAAU,4BAA4B;IACpC,KAAK,EAAE,OAAO,CAAC;IACf,MAAM,EAAE,aAAa,CAAC;IACtB,eAAe,EAAE,SAAS,cAAc,EAAE,CAAC;IAC3C,YAAY,EAAE,YAAY,CAAC;IAC3B,MAAM,EAAE,OAAO,CAAC;IAChB,cAAc,EAAE,MAAM,IAAI,CAAC;IAC3B;;;;;OAKG;IACH,KAAK,CAAC,EAAE,MAAM,CAAC;CAChB;AAID;;;;;;;;GAQG;AACH,wBAAgB,uBAAuB,CAAC,EACtC,KAAK,EACL,MAAM,EACN,eAAe,EACf,YAAY,EACZ,MAAM,EACN,cAAc,EACd,KAAK,GACN,EAAE,4BAA4B,+BAmG9B"}
@@ -1 +1 @@
1
- {"version":3,"file":"NetworkListScreen.d.ts","sourceRoot":"","sources":["../../../../src/network/components/NetworkListScreen.tsx"],"names":[],"mappings":"AAAA;;;;;;;;;;GAUG;AAIH,OAAO,EAOL,KAAK,cAAc,EACpB,MAAM,oBAAoB,CAAC;AAC5B,OAAO,KAAK,EAAE,YAAY,EAAE,aAAa,EAAE,MAAM,UAAU,CAAC;AA0J5D,UAAU,sBAAsB;IAC9B,OAAO,EAAE,OAAO,CAAC;IACjB,MAAM,EAAE,OAAO,CAAC;IAChB,MAAM,EAAE,aAAa,CAAC;IACtB,eAAe,EAAE,SAAS,cAAc,EAAE,CAAC;IAC3C,KAAK,EAAE,OAAO,CAAC;IACf,UAAU,EAAE,MAAM,CAAC;IACnB,wEAAwE;IACxE,YAAY,EAAE,CAAC,KAAK,EAAE,YAAY,KAAK,IAAI,CAAC;IAC5C,cAAc,EAAE,MAAM,IAAI,CAAC;CAC5B;AAED,wBAAgB,iBAAiB,CAAC,EAChC,OAAO,EACP,MAAM,EACN,MAAM,EACN,eAAe,EACf,KAAK,EACL,UAAU,EACV,YAAY,EACZ,cAAc,GACf,EAAE,sBAAsB,sCA6JxB"}
1
+ {"version":3,"file":"NetworkListScreen.d.ts","sourceRoot":"","sources":["../../../../src/network/components/NetworkListScreen.tsx"],"names":[],"mappings":"AAAA;;;;;;;;;;GAUG;AAIH,OAAO,EAML,KAAK,cAAc,EACpB,MAAM,oBAAoB,CAAC;AAC5B,OAAO,KAAK,EAAE,YAAY,EAAE,aAAa,EAAE,MAAM,UAAU,CAAC;AA0J5D,UAAU,sBAAsB;IAC9B,OAAO,EAAE,OAAO,CAAC;IACjB,MAAM,EAAE,OAAO,CAAC;IAChB,MAAM,EAAE,aAAa,CAAC;IACtB,eAAe,EAAE,SAAS,cAAc,EAAE,CAAC;IAC3C,KAAK,EAAE,OAAO,CAAC;IACf,UAAU,EAAE,MAAM,CAAC;IACnB,wEAAwE;IACxE,YAAY,EAAE,CAAC,KAAK,EAAE,YAAY,KAAK,IAAI,CAAC;IAC5C,cAAc,EAAE,MAAM,IAAI,CAAC;CAC5B;AAED,wBAAgB,iBAAiB,CAAC,EAChC,OAAO,EACP,MAAM,EACN,MAAM,EACN,eAAe,EACf,KAAK,EACL,UAAU,EACV,YAAY,EACZ,cAAc,GACf,EAAE,sBAAsB,sCAwJxB"}
@@ -1 +1 @@
1
- {"version":3,"file":"NetworkListScreen.web.d.ts","sourceRoot":"","sources":["../../../../src/network/components/NetworkListScreen.web.tsx"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;GA8CG;AAGH,OAAO,KAAK,EAAE,cAAc,EAAE,MAAM,oBAAoB,CAAC;AACzD,OAAO,KAAK,EAAE,YAAY,EAAE,aAAa,EAAE,MAAM,UAAU,CAAC;AAwQ5D,UAAU,sBAAsB;IAC9B,OAAO,EAAE,OAAO,CAAC;IACjB,MAAM,EAAE,OAAO,CAAC;IAChB,MAAM,EAAE,aAAa,CAAC;IACtB,eAAe,EAAE,SAAS,cAAc,EAAE,CAAC;IAC3C,KAAK,EAAE,OAAO,CAAC;IACf,UAAU,EAAE,MAAM,CAAC;IACnB,wEAAwE;IACxE,YAAY,EAAE,CAAC,KAAK,EAAE,YAAY,KAAK,IAAI,CAAC;IAC5C,cAAc,EAAE,MAAM,IAAI,CAAC;CAC5B;AAED,wBAAgB,iBAAiB,CAAC,EAChC,OAAO,EACP,MAAM,EACN,MAAM,EACN,eAAe,EACf,KAAK,EACL,UAAU,EACV,YAAY,EACZ,cAAc,GACf,EAAE,sBAAsB,sCA8HxB"}
1
+ {"version":3,"file":"NetworkListScreen.web.d.ts","sourceRoot":"","sources":["../../../../src/network/components/NetworkListScreen.web.tsx"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;GA8CG;AAGH,OAAO,KAAK,EAAE,cAAc,EAAE,MAAM,oBAAoB,CAAC;AACzD,OAAO,KAAK,EAAE,YAAY,EAAE,aAAa,EAAE,MAAM,UAAU,CAAC;AA8Q5D,UAAU,sBAAsB;IAC9B,OAAO,EAAE,OAAO,CAAC;IACjB,MAAM,EAAE,OAAO,CAAC;IAChB,MAAM,EAAE,aAAa,CAAC;IACtB,eAAe,EAAE,SAAS,cAAc,EAAE,CAAC;IAC3C,KAAK,EAAE,OAAO,CAAC;IACf,UAAU,EAAE,MAAM,CAAC;IACnB,wEAAwE;IACxE,YAAY,EAAE,CAAC,KAAK,EAAE,YAAY,KAAK,IAAI,CAAC;IAC5C,cAAc,EAAE,MAAM,IAAI,CAAC;CAC5B;AAED,wBAAgB,iBAAiB,CAAC,EAChC,OAAO,EACP,MAAM,EACN,MAAM,EACN,eAAe,EACf,KAAK,EACL,UAAU,EACV,YAAY,EACZ,cAAc,GACf,EAAE,sBAAsB,sCA8HxB"}
@@ -1 +1 @@
1
- {"version":3,"file":"NetworkModal.d.ts","sourceRoot":"","sources":["../../../../src/network/components/NetworkModal.tsx"],"names":[],"mappings":"AAsEA,UAAU,iBAAiB;IACzB,OAAO,EAAE,OAAO,CAAC;IACjB,OAAO,EAAE,MAAM,IAAI,CAAC;IACpB,MAAM,CAAC,EAAE,MAAM,IAAI,CAAC;IACpB,UAAU,CAAC,EAAE,CAAC,UAAU,EAAE,GAAG,KAAK,IAAI,CAAC;IACvC,2BAA2B,CAAC,EAAE,OAAO,CAAC;IACtC;;;;;;;;OAQG;IACH,MAAM,CAAC,EAAE,OAAO,CAAC;IACjB;;;;;OAKG;IACH,MAAM,CAAC,EAAE,OAAO,CAAC;IACjB,cAAc,CAAC,EAAE,CAAC,MAAM,EAAE,OAAO,KAAK,IAAI,CAAC;CAC5C;AAy2BD;;;GAGG;AACH,wBAAgB,YAAY,CAAC,KAAK,EAAE,iBAAiB,+BAMpD;AAED,MAAM,WAAW,oBAAoB;IACnC,+EAA+E;IAC/E,MAAM,CAAC,EAAE,OAAO,CAAC;IACjB,cAAc,CAAC,EAAE,CAAC,MAAM,EAAE,OAAO,KAAK,IAAI,CAAC;CAC5C;AAED;;;;;;;;;GASG;AACH,wBAAgB,eAAe,CAAC,KAAK,GAAE,oBAAyB,+BAa/D"}
1
+ {"version":3,"file":"NetworkModal.d.ts","sourceRoot":"","sources":["../../../../src/network/components/NetworkModal.tsx"],"names":[],"mappings":"AAsEA,UAAU,iBAAiB;IACzB,OAAO,EAAE,OAAO,CAAC;IACjB,OAAO,EAAE,MAAM,IAAI,CAAC;IACpB,MAAM,CAAC,EAAE,MAAM,IAAI,CAAC;IACpB,UAAU,CAAC,EAAE,CAAC,UAAU,EAAE,GAAG,KAAK,IAAI,CAAC;IACvC,2BAA2B,CAAC,EAAE,OAAO,CAAC;IACtC;;;;;;;;OAQG;IACH,MAAM,CAAC,EAAE,OAAO,CAAC;IACjB;;;;;OAKG;IACH,MAAM,CAAC,EAAE,OAAO,CAAC;IACjB,cAAc,CAAC,EAAE,CAAC,MAAM,EAAE,OAAO,KAAK,IAAI,CAAC;CAC5C;AAq3BD;;;GAGG;AACH,wBAAgB,YAAY,CAAC,KAAK,EAAE,iBAAiB,+BAMpD;AAED,MAAM,WAAW,oBAAoB;IACnC,+EAA+E;IAC/E,MAAM,CAAC,EAAE,OAAO,CAAC;IACjB,cAAc,CAAC,EAAE,CAAC,MAAM,EAAE,OAAO,KAAK,IAAI,CAAC;CAC5C;AAED;;;;;;;;;GASG;AACH,wBAAgB,eAAe,CAAC,KAAK,GAAE,oBAAyB,+BAa/D"}
@@ -176,6 +176,7 @@ export declare const networkSyncAdapter: {
176
176
  capturing: boolean;
177
177
  subscribers: number;
178
178
  interceptorInstalled: boolean | null;
179
+ interceptorLive: boolean | null;
179
180
  listenerCount: number | null;
180
181
  eventCount: number;
181
182
  };
@@ -1 +1 @@
1
- {"version":3,"file":"networkSyncAdapter.d.ts","sourceRoot":"","sources":["../../../../src/network/sync/networkSyncAdapter.ts"],"names":[],"mappings":"AASA,OAAO,KAAK,EAEV,kBAAkB,EACnB,MAAM,iCAAiC,CAAC;AACzC,OAAO,KAAK,EAAE,gBAAgB,EAAE,MAAM,oBAAoB,CAAC;AAC3D,OAAO,KAAK,EAAE,YAAY,EAAE,MAAM,UAAU,CAAC;AAG7C;;;;;GAKG;AACH,eAAO,MAAM,0BAA0B,QAAY,CAAC;AAEpD;;;;;;;GAOG;AACH,eAAO,MAAM,sBAAsB,QAAqB,CAAC;AA2LzD;;;;;;;;;;GAUG;AACH,eAAO,MAAM,2BAA2B,KAAK,CAAC;AA+J9C;;;;;;;;;;;;;;;;;;GAkBG;AACH,eAAO,MAAM,kBAAkB;;;;QAO3B;;;;WAIG;;;;;;;;;;;;;0BAUiB,MAAM,IAAI;;;QAkB9B;;;;;WAKG;gCACqB,OAAO;;;;;;QAY/B,8CAA8C;6BACzB,OAAO;;;;;;;;;QAY5B,gDAAgD;4BAC5B,OAAO;;;;;;;;;QAU3B,sDAAsD;qCACzB,OAAO;;;;;;;;;QAsBpC,uEAAuE;uCACxC,OAAO;;;;QAKtC,2CAA2C;sCACb,OAAO;;;;;;;;;;;;;;;;0CAmCH,OAAO;;;;;;;sCAOX,OAAO;;;;;;;;;;QAYrC,+EAA+E;;QAG/E;;;;WAIG;uCAC4B,OAAO;;;QAYtC,4EAA4E;QAC5E;;;;;;;WAOG;;;;;;;;kCA+BuB,OAAO;;;;;;;;;;;;;;;;CAiBpC,CAAC"}
1
+ {"version":3,"file":"networkSyncAdapter.d.ts","sourceRoot":"","sources":["../../../../src/network/sync/networkSyncAdapter.ts"],"names":[],"mappings":"AAUA,OAAO,KAAK,EAEV,kBAAkB,EACnB,MAAM,iCAAiC,CAAC;AACzC,OAAO,KAAK,EAAE,gBAAgB,EAAE,MAAM,oBAAoB,CAAC;AAC3D,OAAO,KAAK,EAAE,YAAY,EAAE,MAAM,UAAU,CAAC;AAG7C;;;;;GAKG;AACH,eAAO,MAAM,0BAA0B,QAAY,CAAC;AAEpD;;;;;;;GAOG;AACH,eAAO,MAAM,sBAAsB,QAAqB,CAAC;AA2LzD;;;;;;;;;;GAUG;AACH,eAAO,MAAM,2BAA2B,KAAK,CAAC;AA+J9C;;;;;;;;;;;;;;;;;;GAkBG;AACH,eAAO,MAAM,kBAAkB;;;;QAczB;;;;WAIG;;;;;;;;;;;;;0BAWe,MAAM,IAAI;;;QAkB9B;;;;;WAKG;gCACqB,OAAO;;;;;;QAY/B,8CAA8C;6BACzB,OAAO;;;;;;;;;QAY5B,gDAAgD;4BAC5B,OAAO;;;;;;;;;QAU3B,sDAAsD;qCACzB,OAAO;;;;;;;;;QAsBpC,uEAAuE;uCACxC,OAAO;;;;QAKtC,2CAA2C;sCACb,OAAO;;;;;;;;;;;;;;;;0CAmCH,OAAO;;;;;;;sCAOX,OAAO;;;;;;;;;;QAYrC,+EAA+E;;QAG/E;;;;WAIG;uCAC4B,OAAO;;;QAYtC,4EAA4E;QAC5E;;;;;;;WAOG;;;;;;;;;kCA2CuB,OAAO;;;;;;;;;;;;;;;;CAiBpC,CAAC"}
@@ -0,0 +1,11 @@
1
+ /**
2
+ * Classify a completed XHR/fetch HTTP status.
3
+ *
4
+ * A 4xx/5xx is a *response*, not a transport error. RN's XHR leaves
5
+ * `statusText` empty, which used to become `event.error = "HTTP 500: "` and
6
+ * then MCP `ERR HTTP 500: no error`.
7
+ */
8
+ /** status 0 (or missing) means the request never got an HTTP response. */
9
+ export declare function xhrCompletionKind(status: number | undefined): "response" | "error";
10
+ export declare function httpStatusText(status: number, statusText?: string | null): string;
11
+ //# sourceMappingURL=httpCompletion.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"httpCompletion.d.ts","sourceRoot":"","sources":["../../../../src/network/utils/httpCompletion.ts"],"names":[],"mappings":"AAAA;;;;;;GAMG;AAeH,0EAA0E;AAC1E,wBAAgB,iBAAiB,CAAC,MAAM,EAAE,MAAM,GAAG,SAAS,GAAG,UAAU,GAAG,OAAO,CAElF;AAED,wBAAgB,cAAc,CAAC,MAAM,EAAE,MAAM,EAAE,UAAU,CAAC,EAAE,MAAM,GAAG,IAAI,GAAG,MAAM,CAIjF"}
@@ -85,6 +85,23 @@ declare class NetworkEventStore extends BaseEventStore<NetworkEvent> {
85
85
  * Check if the store is actively capturing network events
86
86
  */
87
87
  isCapturing(): boolean;
88
+ /**
89
+ * Re-assert the interceptor if something re-assigned fetch/XHR since capture
90
+ * started (Expo's runtime, RN DevTools, a second dev server's tooling — see
91
+ * networkListener.startListening). A no-op costing two property reads when
92
+ * everything is healthy, and a no-op entirely unless this store is actively
93
+ * capturing — a mirror-mode dashboard must never install an interceptor in
94
+ * its own process.
95
+ */
96
+ ensureInterception(): void;
97
+ /**
98
+ * Every new consumer — the Network modal opening, a badge mounting, a
99
+ * dashboard watch attaching — is a chance to notice and repair a clobbered
100
+ * interceptor, which matters because a long-lived watch can hold the
101
+ * subscriber count above zero for the whole session (so the 0→1
102
+ * startCapturing path would never run again).
103
+ */
104
+ subscribeToEvents(listener: (events: NetworkEvent[]) => void): () => void;
88
105
  /**
89
106
  * Process a network listener event
90
107
  */
@@ -1 +1 @@
1
- {"version":3,"file":"networkEventStore.d.ts","sourceRoot":"","sources":["../../../../src/network/utils/networkEventStore.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;;;;;;;GAmBG;AAEH,OAAO,EAAE,cAAc,EAAE,MAAM,oBAAoB,CAAC;AACpD,OAAO,KAAK,EAAE,YAAY,EAAE,MAAM,UAAU,CAAC;AAE7C,OAAO,KAAK,EAAE,eAAe,EAAE,MAAM,mBAAmB,CAAC;AAQzD;;GAEG;AACH,MAAM,MAAM,oBAAoB,GAAG,CAAC,KAAK,EAAE,YAAY,KAAK,IAAI,CAAC;AAEjE;;GAEG;AACH,MAAM,MAAM,0BAA0B,GAAG,CAAC,MAAM,EAAE,YAAY,EAAE,KAAK,IAAI,CAAC;AAU1E,cAAM,iBAAkB,SAAQ,cAAc,CAAC,YAAY,CAAC;IAC1D,OAAO,CAAC,eAAe,CAAwC;IAC/D;;;;;;OAMG;IACH,OAAO,CAAC,cAAc,CAAsD;IAC5E,OAAO,CAAC,sBAAsB,CAA6B;IAC3D,uFAAuF;IACvF,OAAO,CAAC,UAAU,CAAyB;IAC3C,OAAO,CAAC,qBAAqB,CAA6B;IAC1D,sFAAsF;IACtF,OAAO,CAAC,UAAU,CAAS;;IAS3B;;;;;;;;;;;;;;;;OAgBG;IACH,gBAAgB,IAAI,IAAI;IAcxB,4EAA4E;IAC5E,OAAO,CAAC,cAAc;IAUtB;;OAEG;IACH,SAAS,CAAC,cAAc,IAAI,IAAI;IAuBhC;;OAEG;IACH,SAAS,CAAC,aAAa,IAAI,IAAI;IAc/B;;;;;OAKG;IACH,cAAc,IAAI,IAAI;IAUtB;;OAEG;IACH,WAAW,IAAI,OAAO;IAItB;;OAEG;IACH,mBAAmB,CAAC,KAAK,EAAE,eAAe,GAAG,IAAI;IA+IjD;;;;;OAKG;IACH,OAAO,CAAC,iBAAiB;IAWzB,OAAO,CAAC,WAAW;IAUnB,OAAO,CAAC,WAAW;IAUnB,OAAO,CAAC,WAAW;IAUnB,YAAY,CAAC,EAAE,EAAE,MAAM,GAAG,YAAY,GAAG,SAAS;IAIlD;;OAEG;IACH,WAAW,IAAI,IAAI;IAMnB;;OAEG;IACH,OAAO,CAAC,QAAQ,EAAE,oBAAoB,EAAE,cAAc,UAAO,GAAG,MAAM,IAAI;IAkB1E,QAAQ;;;;;;;;;IAuCR,YAAY,CAAC,MAAM,EAAE;QACnB,MAAM,CAAC,EAAE,MAAM,CAAC;QAChB,MAAM,CAAC,EAAE,SAAS,GAAG,OAAO,GAAG,SAAS,CAAC;QACzC,UAAU,CAAC,EAAE,MAAM,CAAC;QACpB,IAAI,CAAC,EAAE,MAAM,CAAC;KACf,GAAG,YAAY,EAAE;CAyCnB;AAED;;;GAGG;AACH,eAAO,MAAM,iBAAiB,mBAA0B,CAAC"}
1
+ {"version":3,"file":"networkEventStore.d.ts","sourceRoot":"","sources":["../../../../src/network/utils/networkEventStore.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;;;;;;;GAmBG;AAEH,OAAO,EAAE,cAAc,EAAE,MAAM,oBAAoB,CAAC;AACpD,OAAO,KAAK,EAAE,YAAY,EAAE,MAAM,UAAU,CAAC;AAE7C,OAAO,KAAK,EAAE,eAAe,EAAE,MAAM,mBAAmB,CAAC;AAQzD;;GAEG;AACH,MAAM,MAAM,oBAAoB,GAAG,CAAC,KAAK,EAAE,YAAY,KAAK,IAAI,CAAC;AAEjE;;GAEG;AACH,MAAM,MAAM,0BAA0B,GAAG,CAAC,MAAM,EAAE,YAAY,EAAE,KAAK,IAAI,CAAC;AAU1E,cAAM,iBAAkB,SAAQ,cAAc,CAAC,YAAY,CAAC;IAC1D,OAAO,CAAC,eAAe,CAAwC;IAC/D;;;;;;OAMG;IACH,OAAO,CAAC,cAAc,CAAsD;IAC5E,OAAO,CAAC,sBAAsB,CAA6B;IAC3D,uFAAuF;IACvF,OAAO,CAAC,UAAU,CAAyB;IAC3C,OAAO,CAAC,qBAAqB,CAA6B;IAC1D,sFAAsF;IACtF,OAAO,CAAC,UAAU,CAAS;;IAS3B;;;;;;;;;;;;;;;;OAgBG;IACH,gBAAgB,IAAI,IAAI;IAcxB,4EAA4E;IAC5E,OAAO,CAAC,cAAc;IAUtB;;OAEG;IACH,SAAS,CAAC,cAAc,IAAI,IAAI;IAuBhC;;OAEG;IACH,SAAS,CAAC,aAAa,IAAI,IAAI;IAc/B;;;;;OAKG;IACH,cAAc,IAAI,IAAI;IAUtB;;OAEG;IACH,WAAW,IAAI,OAAO;IAItB;;;;;;;OAOG;IACH,kBAAkB,IAAI,IAAI;IAK1B;;;;;;OAMG;IACH,iBAAiB,CAAC,QAAQ,EAAE,CAAC,MAAM,EAAE,YAAY,EAAE,KAAK,IAAI,GAAG,MAAM,IAAI;IAMzE;;OAEG;IACH,mBAAmB,CAAC,KAAK,EAAE,eAAe,GAAG,IAAI;IA+IjD;;;;;OAKG;IACH,OAAO,CAAC,iBAAiB;IAWzB,OAAO,CAAC,WAAW;IAUnB,OAAO,CAAC,WAAW;IAUnB,OAAO,CAAC,WAAW;IAUnB,YAAY,CAAC,EAAE,EAAE,MAAM,GAAG,YAAY,GAAG,SAAS;IAIlD;;OAEG;IACH,WAAW,IAAI,IAAI;IAMnB;;OAEG;IACH,OAAO,CAAC,QAAQ,EAAE,oBAAoB,EAAE,cAAc,UAAO,GAAG,MAAM,IAAI;IAkB1E,QAAQ;;;;;;;;;IAuCR,YAAY,CAAC,MAAM,EAAE;QACnB,MAAM,CAAC,EAAE,MAAM,CAAC;QAChB,MAAM,CAAC,EAAE,SAAS,GAAG,OAAO,GAAG,SAAS,CAAC;QACzC,UAAU,CAAC,EAAE,MAAM,CAAC;QACpB,IAAI,CAAC,EAAE,MAAM,CAAC;KACf,GAAG,YAAY,EAAE;CAyCnB;AAED;;;GAGG;AACH,eAAO,MAAM,iBAAiB,mBAA0B,CAAC"}
@@ -35,6 +35,18 @@ export interface NetworkingEvent {
35
35
  override?: NetworkOverrideMark;
36
36
  }
37
37
  export type NetworkingEventListener = (event: NetworkingEvent) => void;
38
+ /**
39
+ * Markers stamped on the installed interceptor functions so their presence in
40
+ * the live chain stays detectable even after another tool wraps them.
41
+ * Cooperating patchers (@buoy-gg/impersonate) copy every `__buoy*` marker from
42
+ * the function they wrap onto their own wrapper; a global fetch/XHR WITHOUT
43
+ * the marker therefore means our interceptor was clobbered — some runtime
44
+ * re-assigned `globalThis.fetch` over it (Expo's winter runtime, React Native
45
+ * DevTools' network panel, a second dev server's tooling, hot-reload churn all
46
+ * do this in the wild) — and capture must re-install. See startListening.
47
+ */
48
+ export declare const BUOY_FETCH_INTERCEPTOR_FLAG = "__buoyNetworkFetchIntercepted";
49
+ export declare const BUOY_XHR_INTERCEPTOR_FLAG = "__buoyNetworkXhrIntercepted";
38
50
  /**
39
51
  * Network traffic interceptor for React Native applications
40
52
  *
@@ -71,6 +83,24 @@ declare class NetworkListener {
71
83
  private originalXHROpen;
72
84
  private originalXHRSend;
73
85
  private originalXHRSetRequestHeader;
86
+ /**
87
+ * The wrappers currently installed by THIS instance, for identity checks:
88
+ * `stopListening` restores a global only when it is still literally ours —
89
+ * assigning our saved original over someone who patched after us would wipe
90
+ * their interceptor exactly the way this class gets wiped (see below).
91
+ */
92
+ private patchedFetch;
93
+ private patchedXHROpen;
94
+ private patchedXHRSend;
95
+ private patchedXHRSetRequestHeader;
96
+ /**
97
+ * Bumped on every (re)install and on stop. Each wrapper closes over the
98
+ * generation it was born with and goes silent (pure pass-through — no emit,
99
+ * no counter bump) once a newer generation exists, so a wrapper stranded
100
+ * inside another tool's chain can never double-report a request.
101
+ */
102
+ private fetchGeneration;
103
+ private xhrGeneration;
74
104
  constructor();
75
105
  /**
76
106
  * Check if URL should be ignored from network monitoring
@@ -110,18 +140,38 @@ declare class NetworkListener {
110
140
  * This method processes the response and emits appropriate events
111
141
  */
112
142
  private handleXHRResponse;
143
+ /** Is our fetch interceptor still reachable through the global chain? */
144
+ private isFetchInterceptionLive;
145
+ /** Is our XHR interceptor still reachable through the prototype chain? */
146
+ private isXhrInterceptionLive;
113
147
  /**
114
- * Start intercepting network operations by swizzling fetch and XMLHttpRequest
115
- *
116
- * This method replaces the global fetch function and XMLHttpRequest methods
117
- * with instrumented versions that emit events while preserving original functionality.
148
+ * Both halves of the interceptor are reachable — requests actually flow
149
+ * through capture. `isListening` alone cannot promise that (see
150
+ * startListening); diagnostics should report THIS.
151
+ */
152
+ isInterceptionLive(): boolean;
153
+ /**
154
+ * Start (or repair) interception by swizzling fetch and XMLHttpRequest.
118
155
  *
119
- * @throws Will log warnings if already listening
156
+ * NOT guarded by a plain `isListening` flag: `globalThis.fetch` gets
157
+ * re-assigned in the wild — Expo's winter runtime, React Native DevTools'
158
+ * network panel, a second dev server's tooling, hot-reload churn. When that
159
+ * happens the flag still says "listening" while every request bypasses
160
+ * capture, and a flag-only guard makes the outage PERMANENT (observed as
161
+ * "No network events" forever with `interceptorInstalled: true`). So this
162
+ * verifies each interceptor is actually reachable (marker check) and
163
+ * re-installs whichever half was clobbered, wrapping the CURRENT global so
164
+ * whatever replaced us keeps working underneath. When both halves are live
165
+ * this costs two property reads.
120
166
  *
121
167
  * @performance Uses method swizzling for minimal runtime overhead
122
168
  * @performance Includes request deduplication through ignored URL patterns
123
169
  */
124
170
  startListening(): void;
171
+ /** Swizzle `globalThis.fetch`, wrapping whatever is installed right now. */
172
+ private installFetchInterceptor;
173
+ /** Swizzle the XHR prototype methods, wrapping whatever is installed now. */
174
+ private installXhrInterceptor;
125
175
  /**
126
176
  * Stop listening and restore original networking methods
127
177
  *
@@ -193,5 +243,11 @@ export declare const isNetworkListening: () => boolean;
193
243
  * @returns Number of active listeners
194
244
  */
195
245
  export declare const getNetworkListenerCount: () => number;
246
+ /**
247
+ * Whether both interceptors are actually reachable through the live global
248
+ * chain — the honest version of `isNetworkListening` (whose flag stays true
249
+ * even after another tool re-assigns `globalThis.fetch` over the wrapper).
250
+ */
251
+ export declare const isNetworkInterceptionLive: () => boolean;
196
252
  export {};
197
253
  //# sourceMappingURL=networkListener.d.ts.map
@@ -1 +1 @@
1
- {"version":3,"file":"networkListener.d.ts","sourceRoot":"","sources":["../../../../src/network/utils/networkListener.ts"],"names":[],"mappings":"AAAA;;;GAGG;AAEH,OAAO,KAAK,EAAE,cAAc,EAAE,MAAM,UAAU,CAAC;AAS/C,OAAO,EAAkB,KAAK,mBAAmB,EAAE,MAAM,oBAAoB,CAAC;AA8B9E,MAAM,WAAW,eAAe;IAC9B,IAAI,EAAE,SAAS,GAAG,UAAU,GAAG,OAAO,CAAC;IACvC,SAAS,EAAE,IAAI,CAAC;IAChB,kDAAkD;IAClD,QAAQ,CAAC,EAAE,MAAM,CAAC;IAClB,sEAAsE;IACtE,OAAO,CAAC,EAAE,cAAc,CAAC;IACzB,OAAO,EAAE;QACP,EAAE,EAAE,MAAM,CAAC;QACX,GAAG,EAAE,MAAM,CAAC;QACZ,MAAM,EAAE,MAAM,CAAC;QACf,OAAO,CAAC,EAAE,MAAM,CAAC,MAAM,EAAE,MAAM,CAAC,CAAC;QACjC,IAAI,CAAC,EAAE,OAAO,CAAC;QACf,MAAM,CAAC,EAAE,MAAM,CAAC,MAAM,EAAE,MAAM,CAAC,CAAC;QAChC,MAAM,CAAC,EAAE,OAAO,GAAG,OAAO,GAAG,KAAK,GAAG,SAAS,GAAG,UAAU,CAAC;KAC7D,CAAC;IACF,QAAQ,CAAC,EAAE;QACT,MAAM,EAAE,MAAM,CAAC;QACf,UAAU,CAAC,EAAE,MAAM,CAAC;QACpB,OAAO,CAAC,EAAE,MAAM,CAAC,MAAM,EAAE,MAAM,CAAC,CAAC;QACjC,IAAI,CAAC,EAAE,OAAO,CAAC;QACf,IAAI,CAAC,EAAE,MAAM,CAAC;KACf,CAAC;IACF,KAAK,CAAC,EAAE;QACN,OAAO,EAAE,MAAM,CAAC;QAChB,KAAK,CAAC,EAAE,MAAM,CAAC;KAChB,CAAC;IACF,+DAA+D;IAC/D,QAAQ,CAAC,EAAE,mBAAmB,CAAC;CAChC;AAED,MAAM,MAAM,uBAAuB,GAAG,CAAC,KAAK,EAAE,eAAe,KAAK,IAAI,CAAC;AAEvE;;;;;;;;;;;;;;;;;;;;;;;;;;GA0BG;AACH,cAAM,eAAe;IACnB,OAAO,CAAC,SAAS,CAAiC;IAClD,OAAO,CAAC,WAAW,CAAS;IAC5B,OAAO,CAAC,cAAc,CAAQ;IAG9B,OAAO,CAAC,WAAW,CASjB;IAGF,OAAO,CAAC,aAAa,CAAe;IACpC,OAAO,CAAC,eAAe,CAAuC;IAC9D,OAAO,CAAC,eAAe,CAAuC;IAC9D,OAAO,CAAC,2BAA2B,CAAmD;;IAWtF;;;;;;;;OAQG;IACH,OAAO,CAAC,eAAe;IAKvB,OAAO,CAAC,IAAI;IAUZ;;;;;;;OAOG;IACH,OAAO,CAAC,QAAQ;IA0BhB;;;;;OAKG;YACW,mBAAmB;IA2DjC;;;;OAIG;IACH,OAAO,CAAC,WAAW;IAQnB;;;OAGG;IACH,OAAO,CAAC,iBAAiB;IA4NzB;;;;;;;;;;OAUG;IACH,cAAc;IAkad;;;;;OAKG;IACH,aAAa;IAkBb;;;;;OAKG;IACH,WAAW,CAAC,QAAQ,EAAE,uBAAuB;IAa7C,kBAAkB;IAKlB,IAAI,QAAQ,YAEX;IAGD,IAAI,aAAa,WAEhB;CACF;AAsBD;;;;GAIG;AACH,eAAO,MAAM,eAAe,uBAAqB,CAAC;AAElD;;;;;;;;GAQG;AACH,eAAO,MAAM,oBAAoB,YAA8C,CAAC;AAEhF;;GAEG;AACH,eAAO,MAAM,mBAAmB,YAA6C,CAAC;AAE9E;;;;;;;;;;;;;;;GAeG;AACH,eAAO,MAAM,kBAAkB,GAAI,UAAU,uBAAuB,eACxB,CAAC;AAE7C;;GAEG;AACH,eAAO,MAAM,yBAAyB,YACK,CAAC;AAE5C;;;;GAIG;AACH,eAAO,MAAM,kBAAkB,eAAsC,CAAC;AAEtE;;;;GAIG;AACH,eAAO,MAAM,uBAAuB,cAA2C,CAAC"}
1
+ {"version":3,"file":"networkListener.d.ts","sourceRoot":"","sources":["../../../../src/network/utils/networkListener.ts"],"names":[],"mappings":"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"}
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@buoy-gg/network",
3
- "version": "7.0.26",
3
+ "version": "7.0.28",
4
4
  "description": "In-app network inspector for React Native — requests, responses, timing & errors live, with GraphQL operation parsing. Part of Buoy devtools.",
5
5
  "main": "lib/commonjs/index.js",
6
6
  "module": "lib/module/index.js",
@@ -26,7 +26,7 @@
26
26
  ],
27
27
  "sideEffects": false,
28
28
  "dependencies": {
29
- "@buoy-gg/shared-ui": "^7.0.26"
29
+ "@buoy-gg/shared-ui": "^7.0.28"
30
30
  },
31
31
  "peerDependencies": {
32
32
  "react": "*",