@buoy-gg/network 7.0.15 → 7.0.17

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 (107) hide show
  1. package/lib/commonjs/index.web.js +395 -0
  2. package/lib/commonjs/network/components/DataViewer.web.js +879 -0
  3. package/lib/commonjs/network/components/NetworkCopyScreen.web.js +48 -0
  4. package/lib/commonjs/network/components/NetworkCopySettingsView.web.js +1242 -0
  5. package/lib/commonjs/network/components/NetworkDetailScreen.web.js +101 -0
  6. package/lib/commonjs/network/components/NetworkDetailStepper.web.js +296 -0
  7. package/lib/commonjs/network/components/NetworkEventDetailView.web.js +1498 -0
  8. package/lib/commonjs/network/components/NetworkEventItemCompact.web.js +802 -0
  9. package/lib/commonjs/network/components/NetworkFilterScreen.web.js +55 -0
  10. package/lib/commonjs/network/components/NetworkFilterViewV3.web.js +1310 -0
  11. package/lib/commonjs/network/components/NetworkHeaderLive.web.js +604 -0
  12. package/lib/commonjs/network/components/NetworkListScreen.js +2 -1
  13. package/lib/commonjs/network/components/NetworkListScreen.web.js +607 -0
  14. package/lib/commonjs/network/components/NetworkModal.js +12 -3
  15. package/lib/commonjs/network/components/NetworkNumberPrompt.web.js +232 -0
  16. package/lib/commonjs/network/components/NetworkOverrideEditor.web.js +942 -0
  17. package/lib/commonjs/network/components/NetworkOverrideHeaderButton.web.js +133 -0
  18. package/lib/commonjs/network/components/NetworkOverridesButton.web.js +143 -0
  19. package/lib/commonjs/network/components/NetworkOverridesScreen.js +160 -126
  20. package/lib/commonjs/network/components/NetworkOverridesScreen.web.js +830 -0
  21. package/lib/commonjs/network/components/NetworkSavedScreen.web.js +459 -0
  22. package/lib/commonjs/network/components/response-editor/Explorer.web.js +1136 -0
  23. package/lib/commonjs/network/hooks/useNetworkEventList.js +12 -2
  24. package/lib/commonjs/network/overrides/applyToXhr.js +276 -15
  25. package/lib/commonjs/network/utils/generateNetworkCopyText.js +32 -5
  26. package/lib/commonjs/network/utils/networkEventStore.js +12 -4
  27. package/lib/commonjs/network/utils/networkListener.js +1 -16
  28. package/lib/module/index.web.js +81 -0
  29. package/lib/module/network/components/DataViewer.web.js +875 -0
  30. package/lib/module/network/components/NetworkCopyScreen.web.js +44 -0
  31. package/lib/module/network/components/NetworkCopySettingsView.web.js +1237 -0
  32. package/lib/module/network/components/NetworkDetailScreen.web.js +97 -0
  33. package/lib/module/network/components/NetworkDetailStepper.web.js +294 -0
  34. package/lib/module/network/components/NetworkEventDetailView.web.js +1496 -0
  35. package/lib/module/network/components/NetworkEventItemCompact.web.js +800 -0
  36. package/lib/module/network/components/NetworkFilterScreen.web.js +51 -0
  37. package/lib/module/network/components/NetworkFilterViewV3.web.js +1306 -0
  38. package/lib/module/network/components/NetworkHeaderLive.web.js +598 -0
  39. package/lib/module/network/components/NetworkListScreen.js +2 -1
  40. package/lib/module/network/components/NetworkListScreen.web.js +605 -0
  41. package/lib/module/network/components/NetworkModal.js +12 -3
  42. package/lib/module/network/components/NetworkNumberPrompt.web.js +230 -0
  43. package/lib/module/network/components/NetworkOverrideEditor.web.js +939 -0
  44. package/lib/module/network/components/NetworkOverrideHeaderButton.web.js +131 -0
  45. package/lib/module/network/components/NetworkOverridesButton.web.js +141 -0
  46. package/lib/module/network/components/NetworkOverridesScreen.js +161 -127
  47. package/lib/module/network/components/NetworkOverridesScreen.web.js +826 -0
  48. package/lib/module/network/components/NetworkSavedScreen.web.js +457 -0
  49. package/lib/module/network/components/response-editor/Explorer.web.js +1133 -0
  50. package/lib/module/network/hooks/useNetworkEventList.js +12 -2
  51. package/lib/module/network/overrides/applyToXhr.js +275 -15
  52. package/lib/module/network/utils/generateNetworkCopyText.js +28 -1
  53. package/lib/module/network/utils/networkEventStore.js +12 -4
  54. package/lib/module/network/utils/networkListener.js +1 -16
  55. package/lib/typescript/index.web.d.ts +56 -0
  56. package/lib/typescript/index.web.d.ts.map +1 -0
  57. package/lib/typescript/network/components/DataViewer.web.d.ts +78 -0
  58. package/lib/typescript/network/components/DataViewer.web.d.ts.map +1 -0
  59. package/lib/typescript/network/components/NetworkCopyScreen.web.d.ts +27 -0
  60. package/lib/typescript/network/components/NetworkCopyScreen.web.d.ts.map +1 -0
  61. package/lib/typescript/network/components/NetworkCopySettingsView.web.d.ts +68 -0
  62. package/lib/typescript/network/components/NetworkCopySettingsView.web.d.ts.map +1 -0
  63. package/lib/typescript/network/components/NetworkDetailScreen.web.d.ts +45 -0
  64. package/lib/typescript/network/components/NetworkDetailScreen.web.d.ts.map +1 -0
  65. package/lib/typescript/network/components/NetworkDetailStepper.web.d.ts +40 -0
  66. package/lib/typescript/network/components/NetworkDetailStepper.web.d.ts.map +1 -0
  67. package/lib/typescript/network/components/NetworkEventDetailView.web.d.ts +67 -0
  68. package/lib/typescript/network/components/NetworkEventDetailView.web.d.ts.map +1 -0
  69. package/lib/typescript/network/components/NetworkEventItemCompact.web.d.ts +58 -0
  70. package/lib/typescript/network/components/NetworkEventItemCompact.web.d.ts.map +1 -0
  71. package/lib/typescript/network/components/NetworkFilterScreen.web.d.ts +28 -0
  72. package/lib/typescript/network/components/NetworkFilterScreen.web.d.ts.map +1 -0
  73. package/lib/typescript/network/components/NetworkFilterViewV3.web.d.ts +74 -0
  74. package/lib/typescript/network/components/NetworkFilterViewV3.web.d.ts.map +1 -0
  75. package/lib/typescript/network/components/NetworkHeaderLive.web.d.ts +112 -0
  76. package/lib/typescript/network/components/NetworkHeaderLive.web.d.ts.map +1 -0
  77. package/lib/typescript/network/components/NetworkListScreen.d.ts.map +1 -1
  78. package/lib/typescript/network/components/NetworkListScreen.web.d.ts +63 -0
  79. package/lib/typescript/network/components/NetworkListScreen.web.d.ts.map +1 -0
  80. package/lib/typescript/network/components/NetworkModal.d.ts.map +1 -1
  81. package/lib/typescript/network/components/NetworkNumberPrompt.web.d.ts +38 -0
  82. package/lib/typescript/network/components/NetworkNumberPrompt.web.d.ts.map +1 -0
  83. package/lib/typescript/network/components/NetworkOverrideEditor.web.d.ts +43 -0
  84. package/lib/typescript/network/components/NetworkOverrideEditor.web.d.ts.map +1 -0
  85. package/lib/typescript/network/components/NetworkOverrideHeaderButton.web.d.ts +32 -0
  86. package/lib/typescript/network/components/NetworkOverrideHeaderButton.web.d.ts.map +1 -0
  87. package/lib/typescript/network/components/NetworkOverridesButton.web.d.ts +26 -0
  88. package/lib/typescript/network/components/NetworkOverridesButton.web.d.ts.map +1 -0
  89. package/lib/typescript/network/components/NetworkOverridesScreen.d.ts +9 -0
  90. package/lib/typescript/network/components/NetworkOverridesScreen.d.ts.map +1 -1
  91. package/lib/typescript/network/components/NetworkOverridesScreen.web.d.ts +69 -0
  92. package/lib/typescript/network/components/NetworkOverridesScreen.web.d.ts.map +1 -0
  93. package/lib/typescript/network/components/NetworkSavedScreen.web.d.ts +67 -0
  94. package/lib/typescript/network/components/NetworkSavedScreen.web.d.ts.map +1 -0
  95. package/lib/typescript/network/components/response-editor/Explorer.web.d.ts +56 -0
  96. package/lib/typescript/network/components/response-editor/Explorer.web.d.ts.map +1 -0
  97. package/lib/typescript/network/hooks/useNetworkEventList.d.ts +10 -0
  98. package/lib/typescript/network/hooks/useNetworkEventList.d.ts.map +1 -1
  99. package/lib/typescript/network/overrides/__tests__/applyToXhr.test.d.ts.map +1 -1
  100. package/lib/typescript/network/overrides/applyToXhr.d.ts +40 -14
  101. package/lib/typescript/network/overrides/applyToXhr.d.ts.map +1 -1
  102. package/lib/typescript/network/utils/generateNetworkCopyText.d.ts +34 -1
  103. package/lib/typescript/network/utils/generateNetworkCopyText.d.ts.map +1 -1
  104. package/lib/typescript/network/utils/networkEventStore.d.ts.map +1 -1
  105. package/lib/typescript/network/utils/networkListener.d.ts +0 -1
  106. package/lib/typescript/network/utils/networkListener.d.ts.map +1 -1
  107. package/package.json +2 -2
@@ -0,0 +1,38 @@
1
+ /**
2
+ * NetworkNumberPrompt.web — DOM twin of NetworkNumberPrompt.tsx.
3
+ *
4
+ * Entering one number, pinned to the TOP of the tool so the (mobile) keyboard
5
+ * can't cover it — the panel keeps the same placement so the two surfaces
6
+ * read identically. Same clamp-on-submit semantics: a field that takes 999
7
+ * and stores 599 is a field that lies, so min/max clamp BEFORE `onSubmit`.
8
+ *
9
+ * shared-ui RN chrome is replicated as DOM with provenance (web consumers
10
+ * resolve `@buoy-gg/shared-ui` to a minimal shim):
11
+ * - `macOSColors` — inlined verbatim subset from
12
+ * shared/src/ui/gameUI/constants/macOSDesignSystemColors.ts.
13
+ * - `absoluteFill` — inset: 0.
14
+ *
15
+ * Intentional deviations (all logged):
16
+ * - `selectTextOnFocus` → an explicit `select()` in the autoFocus ref
17
+ * callback (DOM inputs don't select-all on focus by default).
18
+ * - `keyboardType="number-pad"` → `inputMode="numeric"`; Enter submits
19
+ * (native `onSubmitEditing`/`returnKeyType="done"`), Escape cancels (the
20
+ * keyboard affordance the backdrop tap covers on touch).
21
+ *
22
+ * @platform React DOM Web
23
+ */
24
+ export interface NetworkNumberPromptProps {
25
+ title: string;
26
+ /** Shown under the field — the range or unit, never a sentence. */
27
+ hint?: string;
28
+ /** Current value, or empty when nothing custom is set yet. */
29
+ value?: number;
30
+ placeholder?: string;
31
+ min?: number;
32
+ max?: number;
33
+ /** `null` means "cleared" — the caller decides what that means. */
34
+ onSubmit: (value: number | null) => void;
35
+ onCancel: () => void;
36
+ }
37
+ export declare function NetworkNumberPrompt({ title, hint, value, placeholder, min, max, onSubmit, onCancel, }: NetworkNumberPromptProps): import("react").JSX.Element;
38
+ //# sourceMappingURL=NetworkNumberPrompt.web.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"NetworkNumberPrompt.web.d.ts","sourceRoot":"","sources":["../../../../src/network/components/NetworkNumberPrompt.web.tsx"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;;;;;;;;;;GAsBG;AA0BH,MAAM,WAAW,wBAAwB;IACvC,KAAK,EAAE,MAAM,CAAC;IACd,mEAAmE;IACnE,IAAI,CAAC,EAAE,MAAM,CAAC;IACd,8DAA8D;IAC9D,KAAK,CAAC,EAAE,MAAM,CAAC;IACf,WAAW,CAAC,EAAE,MAAM,CAAC;IACrB,GAAG,CAAC,EAAE,MAAM,CAAC;IACb,GAAG,CAAC,EAAE,MAAM,CAAC;IACb,mEAAmE;IACnE,QAAQ,EAAE,CAAC,KAAK,EAAE,MAAM,GAAG,IAAI,KAAK,IAAI,CAAC;IACzC,QAAQ,EAAE,MAAM,IAAI,CAAC;CACtB;AAED,wBAAgB,mBAAmB,CAAC,EAClC,KAAK,EACL,IAAI,EACJ,KAAK,EACL,WAAsB,EACtB,GAAG,EACH,GAAG,EACH,QAAQ,EACR,QAAQ,GACT,EAAE,wBAAwB,+BA0E1B"}
@@ -0,0 +1,43 @@
1
+ /**
2
+ * NetworkOverrideEditor.web — DOM twin of NetworkOverrideEditor.tsx.
3
+ *
4
+ * The rule form — one decision, everything else out of the way. Same shape as
5
+ * native: a collapsed "Applies to" disclosure (URL pattern + method chips),
6
+ * the OUTCOME grid (kind + status + failKind folded into one list), the
7
+ * collapsed "Response body" disclosure (the response-editor Explorer tree, or
8
+ * the empty "Edit all" paste buffer), always-visible Delay and Fires rows,
9
+ * the top-pinned NetworkNumberPrompt for custom numbers, and the
10
+ * Cancel/Save footer (Save disabled until a URL pattern exists).
11
+ *
12
+ * REUSED, not forked (all platform-free): `OverrideRuleDraft`,
13
+ * `STATUS_MIN`/`STATUS_MAX`, `ResponseEditorContext` — plus the response
14
+ * tree itself via the Explorer DOM twin (which reuses the pure nested-data
15
+ * ops).
16
+ *
17
+ * shared-ui RN chrome is replicated as DOM with provenance (web consumers
18
+ * resolve `@buoy-gg/shared-ui` to a minimal shim):
19
+ * - `macOSColors` — inlined verbatim subset from
20
+ * shared/src/ui/gameUI/constants/macOSDesignSystemColors.ts.
21
+ * - Icons — inline lucide SVGs (shared-ui's icons are lucide re-exports).
22
+ *
23
+ * Intentional deviations (all logged):
24
+ * - `useSafeAreaInsets` is not ported: `applySafeAreaInset` is accepted for
25
+ * API compatibility and ignored — a floating web panel (and a desktop
26
+ * window) has no home indicator to clear, the exact case native gates OFF.
27
+ * - `keyboardShouldPersistTaps` is a RN-keyboard concern with no DOM
28
+ * equivalent.
29
+ *
30
+ * @platform React DOM Web
31
+ */
32
+ import type { OverrideRuleDraft } from "../overrides/overrideRulesStore";
33
+ export interface NetworkOverrideEditorProps {
34
+ draft: OverrideRuleDraft;
35
+ onChange: (draft: OverrideRuleDraft) => void;
36
+ onSave: () => void;
37
+ onCancel: () => void;
38
+ saveLabel?: string;
39
+ /** Accepted for API compatibility with native; ignored (see deviations). */
40
+ applySafeAreaInset?: boolean;
41
+ }
42
+ export declare function NetworkOverrideEditor({ draft, onChange, onSave, onCancel, saveLabel, applySafeAreaInset: _applySafeAreaInset, }: NetworkOverrideEditorProps): import("react").JSX.Element;
43
+ //# sourceMappingURL=NetworkOverrideEditor.web.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"NetworkOverrideEditor.web.d.ts","sourceRoot":"","sources":["../../../../src/network/components/NetworkOverrideEditor.web.tsx"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;GA8BG;AAOH,OAAO,KAAK,EAAE,iBAAiB,EAAE,MAAM,iCAAiC,CAAC;AA2QzE,MAAM,WAAW,0BAA0B;IACzC,KAAK,EAAE,iBAAiB,CAAC;IACzB,QAAQ,EAAE,CAAC,KAAK,EAAE,iBAAiB,KAAK,IAAI,CAAC;IAC7C,MAAM,EAAE,MAAM,IAAI,CAAC;IACnB,QAAQ,EAAE,MAAM,IAAI,CAAC;IACrB,SAAS,CAAC,EAAE,MAAM,CAAC;IACnB,4EAA4E;IAC5E,kBAAkB,CAAC,EAAE,OAAO,CAAC;CAC9B;AAED,wBAAgB,qBAAqB,CAAC,EACpC,KAAK,EACL,QAAQ,EACR,MAAM,EACN,QAAQ,EACR,SAAkB,EAClB,kBAAkB,EAAE,mBAA2B,GAChD,EAAE,0BAA0B,+BAuY5B"}
@@ -0,0 +1,32 @@
1
+ /**
2
+ * NetworkOverrideHeaderButton.web — DOM twin of
3
+ * NetworkOverrideHeaderButton.tsx.
4
+ *
5
+ * The Override action, in the request-detail header. A labelled word rather
6
+ * than an icon — it's the least familiar action in the tool, and "Override"
7
+ * spelled out is the entire explanation. A self-subscribing leaf: the
8
+ * selected id and the rule list are subscribed HERE so stepping between
9
+ * requests doesn't rebuild the header around a new prop.
10
+ *
11
+ * It lights up while a rule covers the request you're looking at — the same
12
+ * warning tint the OVERRIDDEN strip and the toolbar flask use. Tapping it
13
+ * goes straight to the Overrides screen with the rule open: a new one
14
+ * prefilled from this request (`draftFromEvent`), or the existing one if
15
+ * something already covers it (first enabled match wins, so stacking a
16
+ * second rule the first would shadow is never offered). (Native comments.)
17
+ *
18
+ * REUSED, not forked (all platform-free): `useOverrideRules`,
19
+ * `useSelectedNetworkEventId`, `ruleMatches`, `draftFromEvent`,
20
+ * `networkEventStore`, `networkSavedStore`.
21
+ *
22
+ * shared-ui RN chrome is replicated as DOM with provenance:
23
+ * - `macOSColors` — inlined verbatim subset from
24
+ * shared/src/ui/gameUI/constants/macOSDesignSystemColors.ts.
25
+ *
26
+ * @platform React DOM Web
27
+ */
28
+ import type { OverrideRuleDraft } from "../overrides/overrideRulesStore";
29
+ export declare function NetworkOverrideHeaderButton({ onOpen, }: {
30
+ onOpen: (draft: OverrideRuleDraft, ruleId?: string) => void;
31
+ }): import("react").JSX.Element;
32
+ //# sourceMappingURL=NetworkOverrideHeaderButton.web.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"NetworkOverrideHeaderButton.web.d.ts","sourceRoot":"","sources":["../../../../src/network/components/NetworkOverrideHeaderButton.web.tsx"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;;;;;;;;;;;;;;GA0BG;AAOH,OAAO,KAAK,EAAE,iBAAiB,EAAE,MAAM,iCAAiC,CAAC;AAqBzE,wBAAgB,2BAA2B,CAAC,EAC1C,MAAM,GACP,EAAE;IACD,MAAM,EAAE,CAAC,KAAK,EAAE,iBAAiB,EAAE,MAAM,CAAC,EAAE,MAAM,KAAK,IAAI,CAAC;CAC7D,+BAgDA"}
@@ -0,0 +1,26 @@
1
+ /**
2
+ * NetworkOverridesButton.web — DOM twin of NetworkOverridesButton.tsx.
3
+ *
4
+ * Header button for the Overrides screen, and the always-visible "overrides
5
+ * are active" indicator. A self-subscribing LEAF, like the other live header
6
+ * pieces — the rule list changes on its own schedule (every hit bumps a
7
+ * counter) and the modal shell has no business re-rendering for it.
8
+ *
9
+ * The active tint is not decoration: a rule left enabled from yesterday makes
10
+ * the app behave wrongly in a way that looks exactly like a real bug, so the
11
+ * tool keeps saying so from the top level. (Native comment.)
12
+ *
13
+ * REUSED, not forked: `useOverrideRules` (platform-free).
14
+ *
15
+ * shared-ui RN chrome is replicated as DOM with provenance:
16
+ * - `macOSColors` — inlined verbatim subset from
17
+ * shared/src/ui/gameUI/constants/macOSDesignSystemColors.ts.
18
+ * - `FlaskConical` — inline lucide SVG (shared-ui icons are lucide
19
+ * re-exports).
20
+ *
21
+ * @platform React DOM Web
22
+ */
23
+ export declare function NetworkOverridesButton({ onPress }: {
24
+ onPress: () => void;
25
+ }): import("react").JSX.Element;
26
+ //# sourceMappingURL=NetworkOverridesButton.web.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"NetworkOverridesButton.web.d.ts","sourceRoot":"","sources":["../../../../src/network/components/NetworkOverridesButton.web.tsx"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;;;;;;;;;GAqBG;AAyCH,wBAAgB,sBAAsB,CAAC,EAAE,OAAO,EAAE,EAAE;IAAE,OAAO,EAAE,MAAM,IAAI,CAAA;CAAE,+BA4B1E"}
@@ -1,3 +1,4 @@
1
+ import { type MutableRefObject } from "react";
1
2
  import { type OverrideRuleDraft } from "../overrides/overrideRulesStore";
2
3
  export interface NetworkOverridesScreenProps {
3
4
  visible: boolean;
@@ -12,6 +13,14 @@ export interface NetworkOverridesScreenProps {
12
13
  id?: string;
13
14
  }) | null;
14
15
  onPendingConsumed?: () => void;
16
+ /**
17
+ * The header's back button lives in NetworkModal, but the rule editor is
18
+ * this screen's own state — so a back press while editing would leave the
19
+ * whole screen instead of the editor. The screen parks a handler here while
20
+ * the editor is open; the header calls it first and only pops the screen
21
+ * when it declined (returned false).
22
+ */
23
+ backHandlerRef?: MutableRefObject<(() => boolean) | null>;
15
24
  /** Bottom-sheet mode only — see the editor's footer. */
16
25
  applySafeAreaInset?: boolean;
17
26
  }
@@ -1 +1 @@
1
- {"version":3,"file":"NetworkOverridesScreen.d.ts","sourceRoot":"","sources":["../../../../src/network/components/NetworkOverridesScreen.tsx"],"names":[],"mappings":"AAWA,OAAO,EAEL,KAAK,iBAAiB,EACvB,MAAM,iCAAiC,CAAC;AAiJzC,MAAM,WAAW,2BAA2B;IAC1C,OAAO,EAAE,OAAO,CAAC;IACjB,KAAK,EAAE,OAAO,CAAC;IACf,cAAc,EAAE,MAAM,IAAI,CAAC;IAC3B;;;;OAIG;IACH,YAAY,CAAC,EAAE,CAAC,iBAAiB,GAAG;QAAE,EAAE,CAAC,EAAE,MAAM,CAAA;KAAE,CAAC,GAAG,IAAI,CAAC;IAC5D,iBAAiB,CAAC,EAAE,MAAM,IAAI,CAAC;IAC/B,wDAAwD;IACxD,kBAAkB,CAAC,EAAE,OAAO,CAAC;CAC9B;AAED;;;;;;;;;GASG;AACH,wBAAgB,sBAAsB,CAAC,KAAK,EAAE,2BAA2B,sCAGxE"}
1
+ {"version":3,"file":"NetworkOverridesScreen.d.ts","sourceRoot":"","sources":["../../../../src/network/components/NetworkOverridesScreen.tsx"],"names":[],"mappings":"AAAA,OAAO,EAAoC,KAAK,gBAAgB,EAAE,MAAM,OAAO,CAAC;AAehF,OAAO,EAEL,KAAK,iBAAiB,EACvB,MAAM,iCAAiC,CAAC;AAsJzC,MAAM,WAAW,2BAA2B;IAC1C,OAAO,EAAE,OAAO,CAAC;IACjB,KAAK,EAAE,OAAO,CAAC;IACf,cAAc,EAAE,MAAM,IAAI,CAAC;IAC3B;;;;OAIG;IACH,YAAY,CAAC,EAAE,CAAC,iBAAiB,GAAG;QAAE,EAAE,CAAC,EAAE,MAAM,CAAA;KAAE,CAAC,GAAG,IAAI,CAAC;IAC5D,iBAAiB,CAAC,EAAE,MAAM,IAAI,CAAC;IAC/B;;;;;;OAMG;IACH,cAAc,CAAC,EAAE,gBAAgB,CAAC,CAAC,MAAM,OAAO,CAAC,GAAG,IAAI,CAAC,CAAC;IAC1D,wDAAwD;IACxD,kBAAkB,CAAC,EAAE,OAAO,CAAC;CAC9B;AAED;;;;;;;;;GASG;AACH,wBAAgB,sBAAsB,CAAC,KAAK,EAAE,2BAA2B,sCAGxE"}
@@ -0,0 +1,69 @@
1
+ /**
2
+ * NetworkOverridesScreen.web — DOM twin of NetworkOverridesScreen.tsx.
3
+ *
4
+ * The rule manager: what's armed, and how to stop all of it. One bar across
5
+ * the top is both the warning and the switch; rules render in the request
6
+ * row's visual language (card, method badge, monospace path, status colors);
7
+ * the rule editor takes over the whole screen while open, with the header's
8
+ * back press routed through `backHandlerRef` (back-while-editing means "back
9
+ * to the rule list", not "leave overrides").
10
+ *
11
+ * REUSED, not forked (all platform-free): `useOverrideRules`,
12
+ * `overrideRulesStore` (persisting via the shared-ui barrel → the web shim's
13
+ * localStorage `persistentStorage`, SAME `@react_buoy_network_overrides` key
14
+ * + JSON shape as the phone), `isRuleSpent`, the free-tier enforcement, and
15
+ * the pending-draft adoption flow. A rule saved here is picked up by the live
16
+ * `networkListener` through the exact hooks native registers
17
+ * (`setOverrideHooks` at overrideRulesStore import).
18
+ *
19
+ * shared-ui RN chrome is replicated as DOM with provenance (web consumers
20
+ * resolve `@buoy-gg/shared-ui` to a minimal shim):
21
+ * - `macOSColors` / `buoyColors` — inlined verbatim subsets from
22
+ * shared/src/ui/gameUI/constants/.
23
+ * - Icons — inline lucide SVGs (shared-ui's icons are lucide re-exports).
24
+ * - `DevToolsCard` / `MethodBadge` — inlined DOM twins, values from
25
+ * shared/src/ui/components/DevToolsCard.tsx and Badge.tsx (same twins the
26
+ * F2 list rows carry).
27
+ * - `EmptyState` — inlined DOM twin, values from
28
+ * shared/src/ui/components/EmptyState.tsx (including its shipped
29
+ * low-contrast description color, documented there).
30
+ *
31
+ * Intentional deviations (all logged):
32
+ * - `hitSlop` on the row delete button has no DOM equivalent — the button
33
+ * keeps its natural hit area.
34
+ *
35
+ * @platform React DOM Web
36
+ */
37
+ import { type MutableRefObject } from "react";
38
+ import { type OverrideRuleDraft } from "../overrides/overrideRulesStore";
39
+ export interface NetworkOverridesScreenProps {
40
+ visible: boolean;
41
+ isPro: boolean;
42
+ onUpgradePress: () => void;
43
+ /**
44
+ * A rule prefilled elsewhere (the request detail's Override action).
45
+ * Adopted once, then handed back via `onPendingConsumed` so re-entering the
46
+ * screen doesn't reopen a stale editor.
47
+ */
48
+ pendingDraft?: (OverrideRuleDraft & {
49
+ id?: string;
50
+ }) | null;
51
+ onPendingConsumed?: () => void;
52
+ /**
53
+ * The header's back button lives in the host root, but the rule editor is
54
+ * this screen's own state — the screen parks a handler here while the
55
+ * editor is open; the header calls it first and only pops the screen when
56
+ * it declined (returned false).
57
+ */
58
+ backHandlerRef?: MutableRefObject<(() => boolean) | null>;
59
+ /** Accepted for API compatibility with native; forwarded to the editor,
60
+ * which ignores it on web (see NetworkOverrideEditor.web's deviations). */
61
+ applySafeAreaInset?: boolean;
62
+ }
63
+ /**
64
+ * Stable-router gate — same convention as native: a HIDDEN screen must not
65
+ * subscribe to anything, so the subscribing body is split out and the shell
66
+ * returns null.
67
+ */
68
+ export declare function NetworkOverridesScreen(props: NetworkOverridesScreenProps): import("react").JSX.Element | null;
69
+ //# sourceMappingURL=NetworkOverridesScreen.web.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"NetworkOverridesScreen.web.d.ts","sourceRoot":"","sources":["../../../../src/network/components/NetworkOverridesScreen.web.tsx"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;GAmCG;AAEH,OAAO,EAKL,KAAK,gBAAgB,EAEtB,MAAM,OAAO,CAAC;AAGf,OAAO,EAEL,KAAK,iBAAiB,EACvB,MAAM,iCAAiC,CAAC;AAqXzC,MAAM,WAAW,2BAA2B;IAC1C,OAAO,EAAE,OAAO,CAAC;IACjB,KAAK,EAAE,OAAO,CAAC;IACf,cAAc,EAAE,MAAM,IAAI,CAAC;IAC3B;;;;OAIG;IACH,YAAY,CAAC,EAAE,CAAC,iBAAiB,GAAG;QAAE,EAAE,CAAC,EAAE,MAAM,CAAA;KAAE,CAAC,GAAG,IAAI,CAAC;IAC5D,iBAAiB,CAAC,EAAE,MAAM,IAAI,CAAC;IAC/B;;;;;OAKG;IACH,cAAc,CAAC,EAAE,gBAAgB,CAAC,CAAC,MAAM,OAAO,CAAC,GAAG,IAAI,CAAC,CAAC;IAC1D;+EAC2E;IAC3E,kBAAkB,CAAC,EAAE,OAAO,CAAC;CAC9B;AAED;;;;GAIG;AACH,wBAAgB,sBAAsB,CAAC,KAAK,EAAE,2BAA2B,sCAGxE"}
@@ -0,0 +1,67 @@
1
+ /**
2
+ * NetworkSavedScreen.web — DOM twin of NetworkSavedScreen.tsx.
3
+ *
4
+ * The SAVED screen — the network tool's favorites list. Everything here is
5
+ * read from the persisted saved store, never from the live event store: these
6
+ * requests survive a Clear, the 500-event cap, and an app restart. Identical
7
+ * prop contract, hook usage and derivation order as the native file — the
8
+ * data layer is REUSED, not forked (`useNetworkSaved`, `selectSavedEvents`,
9
+ * `generateNetworkCopyText` are all platform-free).
10
+ *
11
+ * Rows are the same row component the live list uses
12
+ * (`NetworkEventItemCompact.web`), so a saved request looks exactly like the
13
+ * request it was. Long-press here UNSAVES rather than pins — in this list
14
+ * "get rid of it" is the action the row affords (pinning stays on the detail
15
+ * header). Row tap opens the detail view via `onEventPress` — hosts wire it
16
+ * to `networkSelectionStore.select` and pass `fromSaved` to the detail
17
+ * screen, so the prev/next footer steps through THIS list (native behavior;
18
+ * `NetworkDetailStepper.web` already derives it from `selectSavedEvents`).
19
+ *
20
+ * Stable-tree contract (rule4): hooks run unconditionally, then the
21
+ * component returns null when not visible.
22
+ *
23
+ * shared-ui RN chrome is replicated as DOM with provenance (web consumers
24
+ * resolve `@buoy-gg/shared-ui` to a minimal shim):
25
+ * - `macOSColors` / `buoyColors` — inlined verbatim subsets from
26
+ * shared/src/ui/gameUI/constants/.
27
+ * - Icons — inline lucide SVGs (shared-ui's icons are lucide re-exports).
28
+ * - `CopyButton` — the DOM twin exported by DataViewer.web (same lazy
29
+ * function-value contract, colors and 1500ms feedback as native).
30
+ * - `NetworkUpgradeBanner` — inlined DOM twin, values from
31
+ * NetworkUpgradeBanner.tsx + license/FeatureGate.tsx `proBadge` styles
32
+ * (static gold-less "PRO" — the Weekend Pass variant reads
33
+ * `useProAccess` from @buoy-gg/license, not part of the web port).
34
+ *
35
+ * Intentional deviations (all logged):
36
+ * - FlatList virtualization → a plain scrolled div (same deal as
37
+ * NetworkListScreen.web: MAX_SAVED caps the list at 50 rows, and the
38
+ * window/batch tuning + `extraData` are FlatList-only concerns).
39
+ * - `CopySettings` is imported from the platform-free
40
+ * `generateNetworkCopyText` module (the native screen imports it from
41
+ * NetworkCopySettingsView.tsx, which would drag react-native in).
42
+ *
43
+ * @platform React DOM Web
44
+ */
45
+ import type { NetworkEvent } from "../types";
46
+ import { type CopySettings } from "../utils/generateNetworkCopyText";
47
+ export interface NetworkSavedScreenProps {
48
+ visible: boolean;
49
+ isPro: boolean;
50
+ copySettings: CopySettings;
51
+ /**
52
+ * Controlled search box — pass both halves or neither, same deal as
53
+ * NetworkModal's `paused`.
54
+ *
55
+ * The host root controls it because the detail screen's prev/next footer
56
+ * steps through THIS list, and this screen is unmounted while a detail is
57
+ * open (see NetworkDetailStepper.web). A host rendering the screen on its
58
+ * own can omit both and keep the local state.
59
+ */
60
+ search?: string;
61
+ onSearchChange?: (search: string) => void;
62
+ /** Row tap — the root's setSelectedEvent (inherently stable setter). */
63
+ onEventPress: (event: NetworkEvent) => void;
64
+ onUpgradePress: () => void;
65
+ }
66
+ export declare function NetworkSavedScreen({ visible, isPro, copySettings, search: searchProp, onSearchChange, onEventPress, onUpgradePress, }: NetworkSavedScreenProps): import("react").JSX.Element | null;
67
+ //# sourceMappingURL=NetworkSavedScreen.web.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"NetworkSavedScreen.web.d.ts","sourceRoot":"","sources":["../../../../src/network/components/NetworkSavedScreen.web.tsx"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;GA2CG;AAGH,OAAO,KAAK,EAAE,YAAY,EAAE,MAAM,UAAU,CAAC;AAG7C,OAAO,EAEL,KAAK,YAAY,EAClB,MAAM,kCAAkC,CAAC;AAmI1C,MAAM,WAAW,uBAAuB;IACtC,OAAO,EAAE,OAAO,CAAC;IACjB,KAAK,EAAE,OAAO,CAAC;IACf,YAAY,EAAE,YAAY,CAAC;IAC3B;;;;;;;;OAQG;IACH,MAAM,CAAC,EAAE,MAAM,CAAC;IAChB,cAAc,CAAC,EAAE,CAAC,MAAM,EAAE,MAAM,KAAK,IAAI,CAAC;IAC1C,wEAAwE;IACxE,YAAY,EAAE,CAAC,KAAK,EAAE,YAAY,KAAK,IAAI,CAAC;IAC5C,cAAc,EAAE,MAAM,IAAI,CAAC;CAC5B;AAED,wBAAgB,kBAAkB,CAAC,EACjC,OAAO,EACP,KAAK,EACL,YAAY,EACZ,MAAM,EAAE,UAAU,EAClB,cAAc,EACd,YAAY,EACZ,cAAc,GACf,EAAE,uBAAuB,sCAwHzB"}
@@ -0,0 +1,56 @@
1
+ /**
2
+ * Explorer.web — DOM twin of response-editor/Explorer.tsx (the response-body
3
+ * tree: preview and editor as ONE surface, ported from the React Query tool's
4
+ * Explorer). Same recursion, same chunked pages (CHUNK_SIZE 100), same
5
+ * local-input-state race guard, and the same landing spot for edits: the
6
+ * `onChange` from `ResponseEditorContext`.
7
+ *
8
+ * REUSED, not forked (all platform-free):
9
+ * - `updateNestedDataByPath` / `deleteNestedDataByPath` — the pure tree ops.
10
+ * - `editorContext` (`ResponseEditorContext` / `useResponseEditor`) — the
11
+ * root-document + onChange seam.
12
+ * - `CopyButton` — the DOM twin already ported in DataViewer.web (F3), the
13
+ * same way native Explorer reuses shared-ui's CopyButton.
14
+ *
15
+ * NOTE on DataViewer.web: native Explorer and native VirtualizedDataExplorer
16
+ * are SEPARATE trees (different lineage — this one is the React Query port,
17
+ * the viewer is the flat-row virtualized explorer) sharing only the copy
18
+ * button and `displayValue`. The web twins mirror that exact relationship:
19
+ * this file recurses like native Explorer, and shares DataViewer.web's
20
+ * CopyButton rather than its flatten pipeline.
21
+ *
22
+ * shared-ui RN chrome is replicated as DOM with provenance (web consumers
23
+ * resolve `@buoy-gg/shared-ui` to a minimal shim):
24
+ * - `buoyColors` — inlined verbatim subset from
25
+ * shared/src/ui/gameUI/constants/gameUIColors.ts.
26
+ * - Icons — inline lucide SVGs (shared-ui's icons are lucide re-exports).
27
+ * - `CyberpunkInput` — inlined DOM twin below, values from
28
+ * shared/src/dataViewer/CyberpunkInput.tsx.
29
+ *
30
+ * Intentional deviations (all logged):
31
+ * - CyberpunkInput's RN `Animated` glitch loops (flicker overlay, x/y jitter,
32
+ * scale pulse) are not ported — focus still swaps the border/label/corner
33
+ * accents to the primary color, which is the state the animation decorates.
34
+ * - `displayValue`'s minimal-SuperJSON serialization → JSON.stringify (same
35
+ * deviation DataViewer.web logs; identical output for JSON payloads).
36
+ * - `hitSlop` has no DOM equivalent — buttons keep their natural hit areas.
37
+ *
38
+ * @platform React DOM Web
39
+ */
40
+ import type { JsonValue } from "@buoy-gg/shared-ui/dataViewer";
41
+ type Props = {
42
+ editable?: boolean;
43
+ label: string;
44
+ value: JsonValue;
45
+ defaultExpanded?: string[];
46
+ dataPath?: string[];
47
+ itemsDeletable?: boolean;
48
+ dataVersion?: number;
49
+ };
50
+ /**
51
+ * Recursive data explorer — the editable JSON tree. Same prop contract,
52
+ * derivation order and edit semantics as the native file.
53
+ */
54
+ export default function Explorer({ editable, label, value, defaultExpanded, dataPath, itemsDeletable, dataVersion, }: Props): import("react").JSX.Element;
55
+ export {};
56
+ //# sourceMappingURL=Explorer.web.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"Explorer.web.d.ts","sourceRoot":"","sources":["../../../../../src/network/components/response-editor/Explorer.web.tsx"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;GAsCG;AAYH,OAAO,KAAK,EAAE,SAAS,EAAE,MAAM,+BAA+B,CAAC;AA6c/D,KAAK,KAAK,GAAG;IACX,QAAQ,CAAC,EAAE,OAAO,CAAC;IACnB,KAAK,EAAE,MAAM,CAAC;IACd,KAAK,EAAE,SAAS,CAAC;IACjB,eAAe,CAAC,EAAE,MAAM,EAAE,CAAC;IAC3B,QAAQ,CAAC,EAAE,MAAM,EAAE,CAAC;IACpB,cAAc,CAAC,EAAE,OAAO,CAAC;IACzB,WAAW,CAAC,EAAE,MAAM,CAAC;CACtB,CAAC;AAEF;;;GAGG;AACH,MAAM,CAAC,OAAO,UAAU,QAAQ,CAAC,EAC/B,QAAQ,EACR,KAAK,EACL,KAAK,EACL,eAAe,EACf,QAAQ,EACR,cAAc,EACd,WAAe,GAChB,EAAE,KAAK,+BAuVP"}
@@ -29,6 +29,16 @@ export declare function useNetworkEventList(options: {
29
29
  filter: NetworkFilter;
30
30
  ignoredPatterns: readonly IgnoredPattern[];
31
31
  paused: boolean;
32
+ /**
33
+ * Whether the consuming screen is on-screen. This must be its OWN signal,
34
+ * not folded into `paused`: a screen that first becomes visible while
35
+ * paused sees no `paused` transition at all (true → true), so a fold gives
36
+ * it no chance to sync and it renders its mount-time snapshot forever —
37
+ * the desktop Copy tab showed mock data ("1 request") while the frozen
38
+ * list sat on real events. Defaults to true for callers that are only
39
+ * mounted while shown (the detail stepper).
40
+ */
41
+ visible?: boolean;
32
42
  isPro: boolean;
33
43
  }): NetworkEventListResult;
34
44
  //# sourceMappingURL=useNetworkEventList.d.ts.map
@@ -1 +1 @@
1
- {"version":3,"file":"useNetworkEventList.d.ts","sourceRoot":"","sources":["../../../../src/network/hooks/useNetworkEventList.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;;;;GAgBG;AAGH,OAAO,KAAK,EAAE,cAAc,EAAE,MAAM,oBAAoB,CAAC;AAEzD,OAAO,KAAK,EAAE,YAAY,EAAE,aAAa,EAAE,MAAM,UAAU,CAAC;AAO5D,MAAM,WAAW,sBAAsB;IACrC,6DAA6D;IAC7D,MAAM,EAAE,YAAY,EAAE,CAAC;IACvB,iEAAiE;IACjE,aAAa,EAAE,YAAY,EAAE,CAAC;IAC9B,eAAe,EAAE,OAAO,CAAC;IACzB,gBAAgB,EAAE,MAAM,CAAC;CAC1B;AAED,wBAAgB,mBAAmB,CAAC,OAAO,EAAE;IAC3C,MAAM,EAAE,aAAa,CAAC;IACtB,eAAe,EAAE,SAAS,cAAc,EAAE,CAAC;IAC3C,MAAM,EAAE,OAAO,CAAC;IAChB,KAAK,EAAE,OAAO,CAAC;CAChB,GAAG,sBAAsB,CAyEzB"}
1
+ {"version":3,"file":"useNetworkEventList.d.ts","sourceRoot":"","sources":["../../../../src/network/hooks/useNetworkEventList.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;;;;GAgBG;AAGH,OAAO,KAAK,EAAE,cAAc,EAAE,MAAM,oBAAoB,CAAC;AAEzD,OAAO,KAAK,EAAE,YAAY,EAAE,aAAa,EAAE,MAAM,UAAU,CAAC;AAO5D,MAAM,WAAW,sBAAsB;IACrC,6DAA6D;IAC7D,MAAM,EAAE,YAAY,EAAE,CAAC;IACvB,iEAAiE;IACjE,aAAa,EAAE,YAAY,EAAE,CAAC;IAC9B,eAAe,EAAE,OAAO,CAAC;IACzB,gBAAgB,EAAE,MAAM,CAAC;CAC1B;AAED,wBAAgB,mBAAmB,CAAC,OAAO,EAAE;IAC3C,MAAM,EAAE,aAAa,CAAC;IACtB,eAAe,EAAE,SAAS,cAAc,EAAE,CAAC;IAC3C,MAAM,EAAE,OAAO,CAAC;IAChB;;;;;;;;OAQG;IACH,OAAO,CAAC,EAAE,OAAO,CAAC;IAClB,KAAK,EAAE,OAAO,CAAC;CAChB,GAAG,sBAAsB,CAkFzB"}
@@ -1 +1 @@
1
- {"version":3,"file":"applyToXhr.test.d.ts","sourceRoot":"","sources":["../../../../../src/network/overrides/__tests__/applyToXhr.test.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;;;GAeG;AAqYH,iBAAe,IAAI,kBAuBlB;AAaD,OAAO,EAAE,IAAI,IAAI,kBAAkB,EAAE,CAAC"}
1
+ {"version":3,"file":"applyToXhr.test.d.ts","sourceRoot":"","sources":["../../../../../src/network/overrides/__tests__/applyToXhr.test.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;;;GAeG;AA2qBH,iBAAe,IAAI,kBAuBlB;AAaD,OAAO,EAAE,IAAI,IAAI,kBAAkB,EAAE,CAAC"}
@@ -1,7 +1,8 @@
1
1
  /**
2
- * Perform an override outcome against a React Native XMLHttpRequest.
2
+ * Perform an override outcome against an XMLHttpRequest — React Native's OR a
3
+ * standards (browser/webview) one.
3
4
  *
4
- * WHY THIS IS POSSIBLE AT ALL: React Native's XMLHttpRequest
5
+ * WHY THIS IS POSSIBLE ON RN: React Native's XMLHttpRequest
5
6
  * (`react-native/Libraries/Network/XMLHttpRequest.js`) is pure JavaScript.
6
7
  * `readyState`, `status`, `responseHeaders` and `responseURL` are plain
7
8
  * writable fields, and `setResponseHeaders()` / `setReadyState()` are real
@@ -10,27 +11,52 @@
10
11
  * `_hasError` → error, otherwise load; always loadend). So a response can be
11
12
  * synthesized end to end without touching native code.
12
13
  *
13
- * WHY XHR IS THE ONLY PLACE WE HOOK: `react-native/Libraries/Network/fetch.js`
14
- * is `require('whatwg-fetch')` — RN's `fetch` IS the polyfill over
15
- * XMLHttpRequest. Overriding here therefore covers `fetch`, `axios` and raw
16
- * XHR through one code path, and the fake response flows back up through the
17
- * polyfill so the tool records it without any extra plumbing.
14
+ * WHY XHR IS THE ONLY PLACE WE HOOK ON RN:
15
+ * `react-native/Libraries/Network/fetch.js` is `require('whatwg-fetch')` —
16
+ * RN's `fetch` IS the polyfill over XMLHttpRequest. Overriding here therefore
17
+ * covers `fetch`, `axios` and raw XHR through one code path, and the fake
18
+ * response flows back up through the polyfill so the tool records it without
19
+ * any extra plumbing.
18
20
  *
19
21
  * Verified field-for-field on React Native 0.81.4 and 0.85.3.
20
22
  *
21
- * Four non-obvious behaviours are handled below; each one is a real bug if you
22
- * skip it, and each is commented at the line that fixes it.
23
+ * WHY THERE IS A SECOND PATH: on a STANDARDS XMLHttpRequest (a webview port —
24
+ * Tauri/Capacitor — or react-native-web) none of the RN internals exist, and
25
+ * `status` / `readyState` / `response` are readonly ACCESSORS on
26
+ * `XMLHttpRequest.prototype`, so plain assignment silently no-ops (or throws
27
+ * in strict mode). This file used to feature-detect that and give up —
28
+ * "degraded, but never broken" — which was right for react-native-web as a
29
+ * by-product of an RN app, and wrong the moment the web ports made the
30
+ * browser XHR a first-class target: the row got FLAGGED as overridden (the
31
+ * rule matched) while the real request went out. The fix is
32
+ * `runStandardOverride` below: `Object.defineProperty` INSTANCE own-properties
33
+ * shadow the prototype accessors (legal on any object), and the lifecycle
34
+ * events are dispatched by hand through the XHR's own EventTarget — which
35
+ * fires `addEventListener` listeners AND the `onload`/`onloadend`/
36
+ * `onreadystatechange` handler attributes, exactly what axios's XHR adapter
37
+ * listens on.
38
+ *
39
+ * Several non-obvious behaviours are handled below; each one is a real bug if
40
+ * you skip it, and each is commented at the line that fixes it.
23
41
  */
24
42
  import type { OverrideOutcome } from "./types";
25
43
  /**
26
- * Can this XMLHttpRequest be driven by hand?
44
+ * Can this XMLHttpRequest be driven through React Native's internals?
27
45
  *
28
- * The whole technique rests on RN internals, so it is feature-detected rather
29
- * than assumed: on a browser XMLHttpRequest (react-native-web) these methods
30
- * don't exist and `status` is a read-only getter. There, overrides no-op and
31
- * the request goes out for real — degraded, but never broken.
46
+ * The RN technique rests on those internals, so it is feature-detected rather
47
+ * than assumed. A request that fails this check is NOT automatically a lost
48
+ * cause — `canSynthesizeStandard` covers the standards XHR next.
32
49
  */
33
50
  export declare function canSynthesize(xhr: XMLHttpRequest): boolean;
51
+ /**
52
+ * Can this XMLHttpRequest be driven as a STANDARDS one?
53
+ *
54
+ * `dispatchEvent` is the load-bearing requirement: the whole standard path
55
+ * works by defining instance own-properties and then dispatching the
56
+ * lifecycle events through the XHR's own EventTarget. `removeEventListener`
57
+ * rules out half-mocks that could take the branch and then leak listeners.
58
+ */
59
+ export declare function canSynthesizeStandard(xhr: XMLHttpRequest): boolean;
34
60
  /**
35
61
  * Apply an outcome to a request that has NOT been sent yet.
36
62
  *
@@ -1 +1 @@
1
- {"version":3,"file":"applyToXhr.d.ts","sourceRoot":"","sources":["../../../../src/network/overrides/applyToXhr.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;;;;;;;;;;GAsBG;AAEH,OAAO,KAAK,EAAE,eAAe,EAAE,MAAM,SAAS,CAAC;AAkC/C;;;;;;;GAOG;AACH,wBAAgB,aAAa,CAAC,GAAG,EAAE,cAAc,GAAG,OAAO,CAM1D;AA+ED;;;;;;;GAOG;AACH,wBAAgB,WAAW,CACzB,GAAG,EAAE,cAAc,EACnB,GAAG,EAAE,MAAM,EACX,OAAO,EAAE,eAAe,EACxB,WAAW,EAAE,MAAM,IAAI,GACtB,OAAO,CAiET"}
1
+ {"version":3,"file":"applyToXhr.d.ts","sourceRoot":"","sources":["../../../../src/network/overrides/applyToXhr.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;GAwCG;AAEH,OAAO,KAAK,EAAE,eAAe,EAAE,MAAM,SAAS,CAAC;AAkC/C;;;;;;GAMG;AACH,wBAAgB,aAAa,CAAC,GAAG,EAAE,cAAc,GAAG,OAAO,CAM1D;AAED;;;;;;;GAOG;AACH,wBAAgB,qBAAqB,CAAC,GAAG,EAAE,cAAc,GAAG,OAAO,CAMlE;AAwUD;;;;;;;GAOG;AACH,wBAAgB,WAAW,CACzB,GAAG,EAAE,cAAc,EACnB,GAAG,EAAE,MAAM,EACX,OAAO,EAAE,eAAe,EACxB,WAAW,EAAE,MAAM,IAAI,GACtB,OAAO,CAwET"}
@@ -4,8 +4,41 @@
4
4
  * callback previously inlined in NetworkModal — kept pure so the header
5
5
  * CopyButton can resolve it LAZILY at copy time (CopyButton accepts a
6
6
  * function value) instead of rebuilding the string on every event.
7
+ *
8
+ * PLATFORM-FREE ON PURPOSE: this module is reused verbatim by the web ports
9
+ * (webview shims resolve `@buoy-gg/shared-ui` to a minimal storage-only shim),
10
+ * so it must not reach the RN component graph or the shared-ui barrel. That is
11
+ * why:
12
+ * - `CopySettings` is defined HERE rather than imported from
13
+ * NetworkCopySettingsView.tsx (which pulls in react-native + shared-ui RN
14
+ * chrome). The RN view keeps its own structurally-identical definition —
15
+ * keep the two shapes in sync.
16
+ * - `formatBytes` is a verbatim copy of
17
+ * shared/src/utils/formatting/dataFormatting.ts rather than the
18
+ * `./formatting` re-export of `@buoy-gg/shared-ui` (not in the web shim).
7
19
  */
8
20
  import type { NetworkEvent } from "../types";
9
- import type { CopySettings } from "../components/NetworkCopySettingsView";
21
+ /**
22
+ * What the copy exporter includes and how it formats it. Structurally
23
+ * identical to (and must stay in sync with) the `CopySettings` exported by
24
+ * NetworkCopySettingsView.tsx — see the platform-free note above for why the
25
+ * definition lives here.
26
+ */
27
+ export interface CopySettings {
28
+ includeMethod: boolean;
29
+ includeStatus: boolean;
30
+ includeDuration: boolean;
31
+ includeTimestamp: boolean;
32
+ includeClient: boolean;
33
+ includeSizes: boolean;
34
+ includeErrors: boolean;
35
+ includeRequestHeaders: boolean;
36
+ includeResponseHeaders: boolean;
37
+ includeRequestBody: boolean;
38
+ includeResponseBody: boolean;
39
+ bodySizeThreshold: 10 | 50 | 100 | -1;
40
+ format: "markdown" | "json" | "plaintext";
41
+ filterMode: "all" | "failed" | "success";
42
+ }
10
43
  export declare function generateNetworkCopyText(events: NetworkEvent[], copySettings: CopySettings): string;
11
44
  //# sourceMappingURL=generateNetworkCopyText.d.ts.map
@@ -1 +1 @@
1
- {"version":3,"file":"generateNetworkCopyText.d.ts","sourceRoot":"","sources":["../../../../src/network/utils/generateNetworkCopyText.ts"],"names":[],"mappings":"AAAA;;;;;;GAMG;AAEH,OAAO,KAAK,EAAE,YAAY,EAAE,MAAM,UAAU,CAAC;AAC7C,OAAO,KAAK,EAAE,YAAY,EAAE,MAAM,uCAAuC,CAAC;AAiB1E,wBAAgB,uBAAuB,CACrC,MAAM,EAAE,YAAY,EAAE,EACtB,YAAY,EAAE,YAAY,GACzB,MAAM,CAyKR"}
1
+ {"version":3,"file":"generateNetworkCopyText.d.ts","sourceRoot":"","sources":["../../../../src/network/utils/generateNetworkCopyText.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;;;;;;GAkBG;AAEH,OAAO,KAAK,EAAE,YAAY,EAAE,MAAM,UAAU,CAAC;AAE7C;;;;;GAKG;AACH,MAAM,WAAW,YAAY;IAE3B,aAAa,EAAE,OAAO,CAAC;IACvB,aAAa,EAAE,OAAO,CAAC;IACvB,eAAe,EAAE,OAAO,CAAC;IACzB,gBAAgB,EAAE,OAAO,CAAC;IAC1B,aAAa,EAAE,OAAO,CAAC;IACvB,YAAY,EAAE,OAAO,CAAC;IACtB,aAAa,EAAE,OAAO,CAAC;IAGvB,qBAAqB,EAAE,OAAO,CAAC;IAC/B,sBAAsB,EAAE,OAAO,CAAC;IAGhC,kBAAkB,EAAE,OAAO,CAAC;IAC5B,mBAAmB,EAAE,OAAO,CAAC;IAC7B,iBAAiB,EAAE,EAAE,GAAG,EAAE,GAAG,GAAG,GAAG,CAAC,CAAC,CAAC;IAGtC,MAAM,EAAE,UAAU,GAAG,MAAM,GAAG,WAAW,CAAC;IAG1C,UAAU,EAAE,KAAK,GAAG,QAAQ,GAAG,SAAS,CAAC;CAC1C;AA4BD,wBAAgB,uBAAuB,CACrC,MAAM,EAAE,YAAY,EAAE,EACtB,YAAY,EAAE,YAAY,GACzB,MAAM,CAyKR"}
@@ -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;AAE1E,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;;IAS3D;;OAEG;IACH,SAAS,CAAC,cAAc,IAAI,IAAI;IAgBhC;;OAEG;IACH,SAAS,CAAC,aAAa,IAAI,IAAI;IAc/B;;OAEG;IACH,WAAW,IAAI,OAAO;IAItB;;OAEG;IACH,mBAAmB,CAAC,KAAK,EAAE,eAAe,GAAG,IAAI;IAgIjD;;;;;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;AAE1E,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;;IAS3D;;OAEG;IACH,SAAS,CAAC,cAAc,IAAI,IAAI;IAgBhC;;OAEG;IACH,SAAS,CAAC,aAAa,IAAI,IAAI;IAc/B;;OAEG;IACH,WAAW,IAAI,OAAO;IAItB;;OAEG;IACH,mBAAmB,CAAC,KAAK,EAAE,eAAe,GAAG,IAAI;IAwIjD;;;;;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"}
@@ -105,7 +105,6 @@ declare class NetworkListener {
105
105
  * @returns Formatted string (e.g., "1.5 MB")
106
106
  */
107
107
  private formatBytes;
108
- private getResponseSize;
109
108
  /**
110
109
  * Handle XMLHttpRequest response processing
111
110
  * This method processes the response and emits appropriate events
@@ -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;IASnB,OAAO,CAAC,eAAe;IAavB;;;OAGG;IACH,OAAO,CAAC,iBAAiB;IA4NzB;;;;;;;;;;OAUG;IACH,cAAc;IAqad;;;;;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":"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"}
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@buoy-gg/network",
3
- "version": "7.0.15",
3
+ "version": "7.0.17",
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.15"
29
+ "@buoy-gg/shared-ui": "^7.0.17"
30
30
  },
31
31
  "peerDependencies": {
32
32
  "react": "*",