@buoy-gg/network 7.0.19 → 7.0.21
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.
- package/README.md +1 -0
- package/lib/commonjs/network/utils/networkEventStore.js +85 -2
- package/lib/commonjs/preset.js +22 -0
- package/lib/module/network/utils/networkEventStore.js +85 -2
- package/lib/module/preset.js +22 -0
- package/lib/typescript/network/utils/networkEventStore.d.ts +32 -0
- package/lib/typescript/network/utils/networkEventStore.d.ts.map +1 -1
- package/lib/typescript/preset.d.ts.map +1 -1
- package/package.json +2 -2
package/README.md
CHANGED
|
@@ -36,6 +36,7 @@ Want a different label or color? Build the tool with `createNetworkTool({ name,
|
|
|
36
36
|
## What you get
|
|
37
37
|
|
|
38
38
|
- **Every request, zero config** — intercepts `fetch` and `XMLHttpRequest`, so fetch, axios, GraphQL clients, and gRPC-web all show up automatically.
|
|
39
|
+
- **Boot requests included** — interception installs at app launch (dev builds), so module-scope fetches, session bootstrap, and your first queries are captured even though they fired before any tool or dashboard was open.
|
|
39
40
|
- **GraphQL gets special treatment** — operation names are extracted from queries, mutations, and subscriptions and shown with variables in arrow notation: `GetUser › 123`. No more guessing which `/graphql` request is which.
|
|
40
41
|
- **Full request detail** — request/response headers, payloads, HTTP status, and duration for every call, with status-colored rows.
|
|
41
42
|
- **Filter and search** — narrow by status code, HTTP method, or URL pattern; search captured events; pause/resume capture; clear history.
|
|
@@ -37,6 +37,13 @@ var _networkSavedStore = require("./networkSavedStore");
|
|
|
37
37
|
* Callback type for full events array notifications
|
|
38
38
|
*/
|
|
39
39
|
|
|
40
|
+
/**
|
|
41
|
+
* Cap on raw events held in the boot buffer before the first consumer
|
|
42
|
+
* subscribes (request + response are separate raw events, so this is ~100
|
|
43
|
+
* requests). Old events are dropped first; a response whose request was
|
|
44
|
+
* evicted is simply ignored at flush (processNetworkEvent finds no match).
|
|
45
|
+
*/
|
|
46
|
+
const BOOT_BUFFER_MAX = 200;
|
|
40
47
|
class NetworkEventStore extends _sharedUi.BaseEventStore {
|
|
41
48
|
pendingRequests = new Map();
|
|
42
49
|
/**
|
|
@@ -48,6 +55,11 @@ class NetworkEventStore extends _sharedUi.BaseEventStore {
|
|
|
48
55
|
*/
|
|
49
56
|
recentRequests = new Map();
|
|
50
57
|
rawListenerUnsubscribe = null;
|
|
58
|
+
/** Raw events captured before the first consumer subscribed — see startBootCapture. */
|
|
59
|
+
bootBuffer = [];
|
|
60
|
+
bootBufferUnsubscribe = null;
|
|
61
|
+
/** Set by disableCapture (remote-mirror mode) — boot capture must never (re)start. */
|
|
62
|
+
mirrorMode = false;
|
|
51
63
|
constructor() {
|
|
52
64
|
super({
|
|
53
65
|
storeName: "network",
|
|
@@ -55,6 +67,48 @@ class NetworkEventStore extends _sharedUi.BaseEventStore {
|
|
|
55
67
|
});
|
|
56
68
|
}
|
|
57
69
|
|
|
70
|
+
/**
|
|
71
|
+
* Install the interceptor NOW and buffer raw events until the first real
|
|
72
|
+
* consumer subscribes.
|
|
73
|
+
*
|
|
74
|
+
* Why: capture normally starts with the first subscriber — the Network modal
|
|
75
|
+
* opening, a dashboard watch, an MCP watch — which is long after the app's
|
|
76
|
+
* startup requests (module-scope fetches, session bootstrap, the first
|
|
77
|
+
* query) have already fired. Those were unrecoverable: by the time anything
|
|
78
|
+
* subscribed, boot traffic was gone. Called as a dev-only import-time side
|
|
79
|
+
* effect from the preset, this hooks fetch/XHR at bundle-eval and parks the
|
|
80
|
+
* raw events in a bounded buffer; `startCapturing` flushes them into the
|
|
81
|
+
* store in order, so every consumer sees boot requests too.
|
|
82
|
+
*
|
|
83
|
+
* If no consumer EVER subscribes, nothing is flushed — the buffer just sits
|
|
84
|
+
* bounded at BOOT_BUFFER_MAX raw events (an explicit user "capture off"
|
|
85
|
+
* state therefore never gains events it didn't ask for).
|
|
86
|
+
*/
|
|
87
|
+
startBootCapture() {
|
|
88
|
+
if (this.mirrorMode || this.bootBufferUnsubscribe || this.isCapturing()) {
|
|
89
|
+
return;
|
|
90
|
+
}
|
|
91
|
+
const listener = (0, _networkListener.networkListener)();
|
|
92
|
+
if (!listener.isActive) {
|
|
93
|
+
listener.startListening();
|
|
94
|
+
}
|
|
95
|
+
this.bootBufferUnsubscribe = (0, _networkListener.addNetworkListener)(event => {
|
|
96
|
+
this.bootBuffer.push(event);
|
|
97
|
+
if (this.bootBuffer.length > BOOT_BUFFER_MAX) this.bootBuffer.shift();
|
|
98
|
+
});
|
|
99
|
+
}
|
|
100
|
+
|
|
101
|
+
/** Detach the boot-buffer listener; optionally hand back what it caught. */
|
|
102
|
+
takeBootBuffer() {
|
|
103
|
+
if (this.bootBufferUnsubscribe) {
|
|
104
|
+
this.bootBufferUnsubscribe();
|
|
105
|
+
this.bootBufferUnsubscribe = null;
|
|
106
|
+
}
|
|
107
|
+
const buffered = this.bootBuffer;
|
|
108
|
+
this.bootBuffer = [];
|
|
109
|
+
return buffered;
|
|
110
|
+
}
|
|
111
|
+
|
|
58
112
|
/**
|
|
59
113
|
* Start capturing network events
|
|
60
114
|
*/
|
|
@@ -66,6 +120,13 @@ class NetworkEventStore extends _sharedUi.BaseEventStore {
|
|
|
66
120
|
listener.startListening();
|
|
67
121
|
}
|
|
68
122
|
|
|
123
|
+
// Flush boot-buffered events (in capture order) BEFORE attaching the live
|
|
124
|
+
// listener: the boot listener is detached first, so no event can be seen
|
|
125
|
+
// by both. All synchronous — nothing interleaves.
|
|
126
|
+
for (const event of this.takeBootBuffer()) {
|
|
127
|
+
this.processNetworkEvent(event);
|
|
128
|
+
}
|
|
129
|
+
|
|
69
130
|
// Add our listener to push raw events into the store
|
|
70
131
|
if (!this.rawListenerUnsubscribe) {
|
|
71
132
|
this.rawListenerUnsubscribe = (0, _networkListener.addNetworkListener)(event => {
|
|
@@ -91,6 +152,22 @@ class NetworkEventStore extends _sharedUi.BaseEventStore {
|
|
|
91
152
|
}
|
|
92
153
|
}
|
|
93
154
|
|
|
155
|
+
/**
|
|
156
|
+
* Remote-mirror mode (desktop dashboard): on top of the base behavior, tear
|
|
157
|
+
* down boot capture and drop its buffer — a mirror must never intercept its
|
|
158
|
+
* OWN process's traffic, and must never flush host requests into the
|
|
159
|
+
* device-event list it mirrors.
|
|
160
|
+
*/
|
|
161
|
+
disableCapture() {
|
|
162
|
+
this.mirrorMode = true;
|
|
163
|
+
this.takeBootBuffer();
|
|
164
|
+
const listener = (0, _networkListener.networkListener)();
|
|
165
|
+
if (listener.listenerCount === 0 && listener.isActive) {
|
|
166
|
+
listener.stopListening();
|
|
167
|
+
}
|
|
168
|
+
super.disableCapture();
|
|
169
|
+
}
|
|
170
|
+
|
|
94
171
|
/**
|
|
95
172
|
* Check if the store is actively capturing network events
|
|
96
173
|
*/
|
|
@@ -106,9 +183,15 @@ class NetworkEventStore extends _sharedUi.BaseEventStore {
|
|
|
106
183
|
request
|
|
107
184
|
} = event;
|
|
108
185
|
if (event.type === "request") {
|
|
109
|
-
// Check for duplicate request based on URL, method, and timing
|
|
186
|
+
// Check for duplicate request based on URL, method, and timing.
|
|
187
|
+
// The clock is the event's CAPTURE time, not Date.now(): boot-buffered
|
|
188
|
+
// events are flushed in one synchronous burst, and wall-clock "now"
|
|
189
|
+
// would put two genuinely separate boot requests to the same endpoint
|
|
190
|
+
// inside the 50ms dual-interception window, silently dropping one. For
|
|
191
|
+
// live events the two clocks are the same (the raw event is emitted
|
|
192
|
+
// synchronously at capture).
|
|
110
193
|
const requestKey = `${request.method}:${request.url}`;
|
|
111
|
-
const now = Date.now();
|
|
194
|
+
const now = event.timestamp instanceof Date ? event.timestamp.getTime() : Date.now();
|
|
112
195
|
const recent = this.recentRequests.get(requestKey);
|
|
113
196
|
|
|
114
197
|
// If same request within 50ms, likely a duplicate from XHR/fetch dual
|
package/lib/commonjs/preset.js
CHANGED
|
@@ -8,6 +8,7 @@ exports.networkToolPreset = void 0;
|
|
|
8
8
|
var _sharedUi = require("@buoy-gg/shared-ui");
|
|
9
9
|
var _NetworkModal = require("./network/components/NetworkModal");
|
|
10
10
|
var _overrideRulesStore = require("./network/overrides/overrideRulesStore");
|
|
11
|
+
var _networkEventStore = require("./network/utils/networkEventStore");
|
|
11
12
|
var _jsxRuntime = require("react/jsx-runtime");
|
|
12
13
|
/**
|
|
13
14
|
* Pre-configured network monitoring tool for FloatingDevTools
|
|
@@ -36,6 +37,27 @@ var _jsxRuntime = require("react/jsx-runtime");
|
|
|
36
37
|
* the interceptor if any rule is still active. One storage read, dev-only.
|
|
37
38
|
*/void _overrideRulesStore.overrideRulesStore.ensureLoaded();
|
|
38
39
|
|
|
40
|
+
/**
|
|
41
|
+
* Install interception at IMPORT time and buffer boot traffic.
|
|
42
|
+
*
|
|
43
|
+
* Capture used to start with the first subscriber (Network modal open,
|
|
44
|
+
* dashboard/MCP watch) — long after the app's startup requests (module-scope
|
|
45
|
+
* fetches, session bootstrap, the first query) had fired, so boot traffic was
|
|
46
|
+
* permanently invisible. The boot buffer holds those raw events until the
|
|
47
|
+
* first consumer subscribes, then flushes them into the store; if nothing
|
|
48
|
+
* ever subscribes, nothing is flushed (see startBootCapture).
|
|
49
|
+
*
|
|
50
|
+
* Guards:
|
|
51
|
+
* - `navigator.product === "ReactNative"` — a real RN runtime only. The
|
|
52
|
+
* desktop dashboard and web mirrors also evaluate this module and must
|
|
53
|
+
* never intercept their OWN process's traffic.
|
|
54
|
+
* - Dev-only, like the rest of the automatic capture behavior.
|
|
55
|
+
*/
|
|
56
|
+
const isReactNativeRuntime = typeof navigator !== "undefined" && navigator.product === "ReactNative";
|
|
57
|
+
if (isReactNativeRuntime && typeof __DEV__ !== "undefined" && __DEV__) {
|
|
58
|
+
_networkEventStore.networkEventStore.startBootCapture();
|
|
59
|
+
}
|
|
60
|
+
|
|
39
61
|
/**
|
|
40
62
|
* Pre-configured network monitoring tool for FloatingDevTools.
|
|
41
63
|
* Includes:
|
|
@@ -34,6 +34,13 @@ import { networkSavedStore } from "./networkSavedStore";
|
|
|
34
34
|
* Callback type for full events array notifications
|
|
35
35
|
*/
|
|
36
36
|
|
|
37
|
+
/**
|
|
38
|
+
* Cap on raw events held in the boot buffer before the first consumer
|
|
39
|
+
* subscribes (request + response are separate raw events, so this is ~100
|
|
40
|
+
* requests). Old events are dropped first; a response whose request was
|
|
41
|
+
* evicted is simply ignored at flush (processNetworkEvent finds no match).
|
|
42
|
+
*/
|
|
43
|
+
const BOOT_BUFFER_MAX = 200;
|
|
37
44
|
class NetworkEventStore extends BaseEventStore {
|
|
38
45
|
pendingRequests = new Map();
|
|
39
46
|
/**
|
|
@@ -45,6 +52,11 @@ class NetworkEventStore extends BaseEventStore {
|
|
|
45
52
|
*/
|
|
46
53
|
recentRequests = new Map();
|
|
47
54
|
rawListenerUnsubscribe = null;
|
|
55
|
+
/** Raw events captured before the first consumer subscribed — see startBootCapture. */
|
|
56
|
+
bootBuffer = [];
|
|
57
|
+
bootBufferUnsubscribe = null;
|
|
58
|
+
/** Set by disableCapture (remote-mirror mode) — boot capture must never (re)start. */
|
|
59
|
+
mirrorMode = false;
|
|
48
60
|
constructor() {
|
|
49
61
|
super({
|
|
50
62
|
storeName: "network",
|
|
@@ -52,6 +64,48 @@ class NetworkEventStore extends BaseEventStore {
|
|
|
52
64
|
});
|
|
53
65
|
}
|
|
54
66
|
|
|
67
|
+
/**
|
|
68
|
+
* Install the interceptor NOW and buffer raw events until the first real
|
|
69
|
+
* consumer subscribes.
|
|
70
|
+
*
|
|
71
|
+
* Why: capture normally starts with the first subscriber — the Network modal
|
|
72
|
+
* opening, a dashboard watch, an MCP watch — which is long after the app's
|
|
73
|
+
* startup requests (module-scope fetches, session bootstrap, the first
|
|
74
|
+
* query) have already fired. Those were unrecoverable: by the time anything
|
|
75
|
+
* subscribed, boot traffic was gone. Called as a dev-only import-time side
|
|
76
|
+
* effect from the preset, this hooks fetch/XHR at bundle-eval and parks the
|
|
77
|
+
* raw events in a bounded buffer; `startCapturing` flushes them into the
|
|
78
|
+
* store in order, so every consumer sees boot requests too.
|
|
79
|
+
*
|
|
80
|
+
* If no consumer EVER subscribes, nothing is flushed — the buffer just sits
|
|
81
|
+
* bounded at BOOT_BUFFER_MAX raw events (an explicit user "capture off"
|
|
82
|
+
* state therefore never gains events it didn't ask for).
|
|
83
|
+
*/
|
|
84
|
+
startBootCapture() {
|
|
85
|
+
if (this.mirrorMode || this.bootBufferUnsubscribe || this.isCapturing()) {
|
|
86
|
+
return;
|
|
87
|
+
}
|
|
88
|
+
const listener = networkListener();
|
|
89
|
+
if (!listener.isActive) {
|
|
90
|
+
listener.startListening();
|
|
91
|
+
}
|
|
92
|
+
this.bootBufferUnsubscribe = addNetworkListener(event => {
|
|
93
|
+
this.bootBuffer.push(event);
|
|
94
|
+
if (this.bootBuffer.length > BOOT_BUFFER_MAX) this.bootBuffer.shift();
|
|
95
|
+
});
|
|
96
|
+
}
|
|
97
|
+
|
|
98
|
+
/** Detach the boot-buffer listener; optionally hand back what it caught. */
|
|
99
|
+
takeBootBuffer() {
|
|
100
|
+
if (this.bootBufferUnsubscribe) {
|
|
101
|
+
this.bootBufferUnsubscribe();
|
|
102
|
+
this.bootBufferUnsubscribe = null;
|
|
103
|
+
}
|
|
104
|
+
const buffered = this.bootBuffer;
|
|
105
|
+
this.bootBuffer = [];
|
|
106
|
+
return buffered;
|
|
107
|
+
}
|
|
108
|
+
|
|
55
109
|
/**
|
|
56
110
|
* Start capturing network events
|
|
57
111
|
*/
|
|
@@ -63,6 +117,13 @@ class NetworkEventStore extends BaseEventStore {
|
|
|
63
117
|
listener.startListening();
|
|
64
118
|
}
|
|
65
119
|
|
|
120
|
+
// Flush boot-buffered events (in capture order) BEFORE attaching the live
|
|
121
|
+
// listener: the boot listener is detached first, so no event can be seen
|
|
122
|
+
// by both. All synchronous — nothing interleaves.
|
|
123
|
+
for (const event of this.takeBootBuffer()) {
|
|
124
|
+
this.processNetworkEvent(event);
|
|
125
|
+
}
|
|
126
|
+
|
|
66
127
|
// Add our listener to push raw events into the store
|
|
67
128
|
if (!this.rawListenerUnsubscribe) {
|
|
68
129
|
this.rawListenerUnsubscribe = addNetworkListener(event => {
|
|
@@ -88,6 +149,22 @@ class NetworkEventStore extends BaseEventStore {
|
|
|
88
149
|
}
|
|
89
150
|
}
|
|
90
151
|
|
|
152
|
+
/**
|
|
153
|
+
* Remote-mirror mode (desktop dashboard): on top of the base behavior, tear
|
|
154
|
+
* down boot capture and drop its buffer — a mirror must never intercept its
|
|
155
|
+
* OWN process's traffic, and must never flush host requests into the
|
|
156
|
+
* device-event list it mirrors.
|
|
157
|
+
*/
|
|
158
|
+
disableCapture() {
|
|
159
|
+
this.mirrorMode = true;
|
|
160
|
+
this.takeBootBuffer();
|
|
161
|
+
const listener = networkListener();
|
|
162
|
+
if (listener.listenerCount === 0 && listener.isActive) {
|
|
163
|
+
listener.stopListening();
|
|
164
|
+
}
|
|
165
|
+
super.disableCapture();
|
|
166
|
+
}
|
|
167
|
+
|
|
91
168
|
/**
|
|
92
169
|
* Check if the store is actively capturing network events
|
|
93
170
|
*/
|
|
@@ -103,9 +180,15 @@ class NetworkEventStore extends BaseEventStore {
|
|
|
103
180
|
request
|
|
104
181
|
} = event;
|
|
105
182
|
if (event.type === "request") {
|
|
106
|
-
// Check for duplicate request based on URL, method, and timing
|
|
183
|
+
// Check for duplicate request based on URL, method, and timing.
|
|
184
|
+
// The clock is the event's CAPTURE time, not Date.now(): boot-buffered
|
|
185
|
+
// events are flushed in one synchronous burst, and wall-clock "now"
|
|
186
|
+
// would put two genuinely separate boot requests to the same endpoint
|
|
187
|
+
// inside the 50ms dual-interception window, silently dropping one. For
|
|
188
|
+
// live events the two clocks are the same (the raw event is emitted
|
|
189
|
+
// synchronously at capture).
|
|
107
190
|
const requestKey = `${request.method}:${request.url}`;
|
|
108
|
-
const now = Date.now();
|
|
191
|
+
const now = event.timestamp instanceof Date ? event.timestamp.getTime() : Date.now();
|
|
109
192
|
const recent = this.recentRequests.get(requestKey);
|
|
110
193
|
|
|
111
194
|
// If same request within 50ms, likely a duplicate from XHR/fetch dual
|
package/lib/module/preset.js
CHANGED
|
@@ -20,6 +20,7 @@
|
|
|
20
20
|
import { NetworkIcon } from "@buoy-gg/shared-ui";
|
|
21
21
|
import { NetworkModal } from "./network/components/NetworkModal";
|
|
22
22
|
import { overrideRulesStore } from "./network/overrides/overrideRulesStore";
|
|
23
|
+
import { networkEventStore } from "./network/utils/networkEventStore";
|
|
23
24
|
|
|
24
25
|
/**
|
|
25
26
|
* Load persisted response-override rules as soon as the tool is registered.
|
|
@@ -33,6 +34,27 @@ import { overrideRulesStore } from "./network/overrides/overrideRulesStore";
|
|
|
33
34
|
import { jsx as _jsx } from "react/jsx-runtime";
|
|
34
35
|
void overrideRulesStore.ensureLoaded();
|
|
35
36
|
|
|
37
|
+
/**
|
|
38
|
+
* Install interception at IMPORT time and buffer boot traffic.
|
|
39
|
+
*
|
|
40
|
+
* Capture used to start with the first subscriber (Network modal open,
|
|
41
|
+
* dashboard/MCP watch) — long after the app's startup requests (module-scope
|
|
42
|
+
* fetches, session bootstrap, the first query) had fired, so boot traffic was
|
|
43
|
+
* permanently invisible. The boot buffer holds those raw events until the
|
|
44
|
+
* first consumer subscribes, then flushes them into the store; if nothing
|
|
45
|
+
* ever subscribes, nothing is flushed (see startBootCapture).
|
|
46
|
+
*
|
|
47
|
+
* Guards:
|
|
48
|
+
* - `navigator.product === "ReactNative"` — a real RN runtime only. The
|
|
49
|
+
* desktop dashboard and web mirrors also evaluate this module and must
|
|
50
|
+
* never intercept their OWN process's traffic.
|
|
51
|
+
* - Dev-only, like the rest of the automatic capture behavior.
|
|
52
|
+
*/
|
|
53
|
+
const isReactNativeRuntime = typeof navigator !== "undefined" && navigator.product === "ReactNative";
|
|
54
|
+
if (isReactNativeRuntime && typeof __DEV__ !== "undefined" && __DEV__) {
|
|
55
|
+
networkEventStore.startBootCapture();
|
|
56
|
+
}
|
|
57
|
+
|
|
36
58
|
/**
|
|
37
59
|
* Pre-configured network monitoring tool for FloatingDevTools.
|
|
38
60
|
* Includes:
|
|
@@ -40,7 +40,32 @@ declare class NetworkEventStore extends BaseEventStore<NetworkEvent> {
|
|
|
40
40
|
*/
|
|
41
41
|
private recentRequests;
|
|
42
42
|
private rawListenerUnsubscribe;
|
|
43
|
+
/** Raw events captured before the first consumer subscribed — see startBootCapture. */
|
|
44
|
+
private bootBuffer;
|
|
45
|
+
private bootBufferUnsubscribe;
|
|
46
|
+
/** Set by disableCapture (remote-mirror mode) — boot capture must never (re)start. */
|
|
47
|
+
private mirrorMode;
|
|
43
48
|
constructor();
|
|
49
|
+
/**
|
|
50
|
+
* Install the interceptor NOW and buffer raw events until the first real
|
|
51
|
+
* consumer subscribes.
|
|
52
|
+
*
|
|
53
|
+
* Why: capture normally starts with the first subscriber — the Network modal
|
|
54
|
+
* opening, a dashboard watch, an MCP watch — which is long after the app's
|
|
55
|
+
* startup requests (module-scope fetches, session bootstrap, the first
|
|
56
|
+
* query) have already fired. Those were unrecoverable: by the time anything
|
|
57
|
+
* subscribed, boot traffic was gone. Called as a dev-only import-time side
|
|
58
|
+
* effect from the preset, this hooks fetch/XHR at bundle-eval and parks the
|
|
59
|
+
* raw events in a bounded buffer; `startCapturing` flushes them into the
|
|
60
|
+
* store in order, so every consumer sees boot requests too.
|
|
61
|
+
*
|
|
62
|
+
* If no consumer EVER subscribes, nothing is flushed — the buffer just sits
|
|
63
|
+
* bounded at BOOT_BUFFER_MAX raw events (an explicit user "capture off"
|
|
64
|
+
* state therefore never gains events it didn't ask for).
|
|
65
|
+
*/
|
|
66
|
+
startBootCapture(): void;
|
|
67
|
+
/** Detach the boot-buffer listener; optionally hand back what it caught. */
|
|
68
|
+
private takeBootBuffer;
|
|
44
69
|
/**
|
|
45
70
|
* Start capturing network events
|
|
46
71
|
*/
|
|
@@ -49,6 +74,13 @@ declare class NetworkEventStore extends BaseEventStore<NetworkEvent> {
|
|
|
49
74
|
* Stop capturing network events
|
|
50
75
|
*/
|
|
51
76
|
protected stopCapturing(): void;
|
|
77
|
+
/**
|
|
78
|
+
* Remote-mirror mode (desktop dashboard): on top of the base behavior, tear
|
|
79
|
+
* down boot capture and drop its buffer — a mirror must never intercept its
|
|
80
|
+
* OWN process's traffic, and must never flush host requests into the
|
|
81
|
+
* device-event list it mirrors.
|
|
82
|
+
*/
|
|
83
|
+
disableCapture(): void;
|
|
52
84
|
/**
|
|
53
85
|
* Check if the store is actively capturing network events
|
|
54
86
|
*/
|
|
@@ -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;
|
|
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 +1 @@
|
|
|
1
|
-
{"version":3,"file":"preset.d.ts","sourceRoot":"","sources":["../../src/preset.tsx"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;;;GAeG;AAGH,OAAO,EAAE,YAAY,EAAE,MAAM,mCAAmC,CAAC;
|
|
1
|
+
{"version":3,"file":"preset.d.ts","sourceRoot":"","sources":["../../src/preset.tsx"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;;;GAeG;AAGH,OAAO,EAAE,YAAY,EAAE,MAAM,mCAAmC,CAAC;AAqCjE;;;;;;;GAOG;AACH,eAAO,MAAM,iBAAiB;;;;;qBAKX;QAAE,IAAI,EAAE,MAAM,CAAA;KAAE;;;;;CAKlC,CAAC;AAEF;;;;;;;;;;;;;;GAcG;AACH,wBAAgB,iBAAiB,CAAC,OAAO,CAAC,EAAE;IAC1C,iCAAiC;IACjC,IAAI,CAAC,EAAE,MAAM,CAAC;IACd,uBAAuB;IACvB,WAAW,CAAC,EAAE,MAAM,CAAC;IACrB,0CAA0C;IAC1C,EAAE,CAAC,EAAE,MAAM,CAAC;IACZ,qCAAqC;IACrC,2BAA2B,CAAC,EAAE,OAAO,CAAC;CACvC;;;;;qBAMoB;QAAE,IAAI,EAAE,MAAM,CAAA;KAAE;;;;;EASpC"}
|
package/package.json
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "@buoy-gg/network",
|
|
3
|
-
"version": "7.0.
|
|
3
|
+
"version": "7.0.21",
|
|
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.
|
|
29
|
+
"@buoy-gg/shared-ui": "^7.0.21"
|
|
30
30
|
},
|
|
31
31
|
"peerDependencies": {
|
|
32
32
|
"react": "*",
|