@buoy-gg/network 7.0.62 → 7.0.64

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/lib/web/index.mjs CHANGED
@@ -1,84 +1,84 @@
1
- "use client";var ro=Object.defineProperty;var xs=Object.getOwnPropertyDescriptor;var ws=Object.getOwnPropertyNames;var Cs=Object.prototype.hasOwnProperty;var Qo=(e,t)=>()=>(e&&(t=e(e=0)),t);var Ts=(e,t)=>{for(var r in t)ro(e,r,{get:t[r],enumerable:true})},oo=(e,t,r,o)=>{if(t&&typeof t=="object"||typeof t=="function")for(let n of ws(t))!Cs.call(e,n)&&n!==r&&ro(e,n,{get:()=>t[n],enumerable:!(o=xs(t,n))||o.enumerable});return e},Rs=(e,t,r)=>(oo(e,t,"default"),r&&oo(r,t,"default"));var ks=e=>oo(ro({},"__esModule",{value:true}),e);var me,D=Qo(()=>{"use strict";me=(()=>{try{let e=globalThis.Capacitor;if(e&&typeof e.isNativePlatform=="function"&&e.isNativePlatform())return e.DEBUG===true}catch{}return process.env.NODE_ENV!=="production"})();typeof window<"u"&&typeof globalThis.global>"u"&&(globalThis.global=globalThis)});var no={};Ts(no,{AccessibilityInfo:()=>Ls,ActivityIndicator:()=>so,Alert:()=>dn,Animated:()=>Bs,AppRegistry:()=>Os,AppState:()=>Ds,Appearance:()=>qs,BackHandler:()=>zs,Button:()=>an,CheckBox:()=>Ys,Clipboard:()=>As,DeviceEventEmitter:()=>ha,Dimensions:()=>Hs,Easing:()=>Ms,FlatList:()=>io,I18nManager:()=>Ns,Image:()=>Zs,ImageBackground:()=>Qs,InteractionManager:()=>Fs,Keyboard:()=>$s,KeyboardAvoidingView:()=>ea,LayoutAnimation:()=>js,Linking:()=>Ws,LogBox:()=>ca,Modal:()=>nn,NativeEventEmitter:()=>Vs,NativeModules:()=>Is,PanResponder:()=>Us,Picker:()=>ta,PixelRatio:()=>_s,Platform:()=>Xs,Pressable:()=>on,ProgressBar:()=>ra,RefreshControl:()=>oa,SafeAreaView:()=>na,ScrollView:()=>ut,SectionList:()=>ia,Share:()=>Js,StatusBar:()=>sa,StyleSheet:()=>fe,Switch:()=>sn,Text:()=>y,TextInput:()=>Lt,Touchable:()=>aa,TouchableHighlight:()=>tn,TouchableNativeFeedback:()=>la,TouchableOpacity:()=>N,TouchableWithoutFeedback:()=>rn,UIManager:()=>Gs,Vibration:()=>Ks,View:()=>p,VirtualizedList:()=>da,YellowBox:()=>ua,findNodeHandle:()=>ln,unstable_createElement:()=>Ps,useColorScheme:()=>pa,useLocaleContext:()=>fa,useWindowDimensions:()=>en});import*as Es from"react-native-web";import{unstable_createElement as Ps,NativeModules as Is,AccessibilityInfo as Ls,Animated as Bs,Appearance as qs,AppRegistry as Os,AppState as Ds,BackHandler as zs,Clipboard as As,Dimensions as Hs,Easing as Ms,I18nManager as Ns,Keyboard as $s,InteractionManager as Fs,LayoutAnimation as js,Linking as Ws,NativeEventEmitter as Vs,PanResponder as Us,PixelRatio as _s,Platform as Xs,Share as Js,StyleSheet as fe,UIManager as Gs,Vibration as Ks,CheckBox as Ys,FlatList as io,Image as Zs,ImageBackground as Qs,KeyboardAvoidingView as ea,Picker as ta,ProgressBar as ra,RefreshControl as oa,SafeAreaView as na,SectionList as ia,StatusBar as sa,Touchable as aa,TouchableNativeFeedback as la,VirtualizedList as da,YellowBox as ua,LogBox as ca,DeviceEventEmitter as ha,useColorScheme as pa,useLocaleContext as fa,useWindowDimensions as en}from"react-native-web";import*as Le from"react-native-web";import{createElement as ga,forwardRef as ma}from"react";function ze(e){let t=ma((o,n)=>{let{accessibilityState:i,accessibilityValue:s,...l}=o;for(let a of["busy","checked","disabled","expanded","selected"])i?.[a]!==void 0&&l[`aria-${a}`]===void 0&&(l[`aria-${a}`]=i[a]);for(let[a,d]of Object.entries({min:"valuemin",max:"valuemax",now:"valuenow",text:"valuetext"}))s?.[a]!==void 0&&l[`aria-${d}`]===void 0&&(l[`aria-${d}`]=s[a]);return ga(e,{...l,ref:n})}),r=e.State;return r&&Object.assign(t,{State:r}),t.displayName=e.displayName??e.name??"NativeWebView",t}var p,y,Lt,N,tn,rn,on,ut,nn,sn,so,an,ln,dn,ce=Qo(()=>{D();Rs(no,Es);p=ze(Le.View),y=ze(Le.Text),Lt=ze(Le.TextInput),N=ze(Le.TouchableOpacity),tn=ze(Le.TouchableHighlight),rn=ze(Le.TouchableWithoutFeedback),on=ze(Le.Pressable),ut=ze(Le.ScrollView),nn=ze(Le.Modal),sn=ze(Le.Switch),so=ze(Le.ActivityIndicator),an=ze(Le.Button),ln=Le.findNodeHandle,dn={alert(e,t,r,o){if(typeof document>"u")return;let n=document.createElement("dialog");n.dataset.buoyRoot="",n.setAttribute("aria-label",e),n.style.cssText="position:fixed;inset:0;margin:auto;width:min(440px,90vw);padding:24px;border:1px solid #475569;border-radius:14px;background:#17212e;color:#f1f5f9;font:14px system-ui;box-shadow:0 20px 80px #0008;z-index:2147483647";let i=document.createElement("h2");if(i.textContent=e,i.style.cssText="font-size:18px;margin:0 0 12px",n.appendChild(i),t){let d=document.createElement("p");d.textContent=t,d.style.cssText="line-height:1.5;white-space:pre-wrap;margin:0 0 20px",n.appendChild(d)}let s=document.createElement("div");s.style.cssText="display:flex;justify-content:flex-end;flex-wrap:wrap;gap:8px";let l=r?.length?r:[{text:"OK"}],a=()=>{n.close?.(),n.remove()};for(let d of l){let b=document.createElement("button");b.type="button",b.textContent=d.text??"OK",b.style.cssText=`padding:9px 14px;border:1px solid #64748b;border-radius:7px;color:white;background:${d.style==="destructive"?"#a52b38":"#283a4d"};cursor:pointer;font:inherit`,b.onclick=()=>{a(),d.onPress?.()},s.appendChild(b)}n.addEventListener("cancel",d=>{d.preventDefault(),o?.cancelable!==false&&(a(),o?.onDismiss?.())}),n.appendChild(s),document.body.appendChild(n),n.showModal?n.showModal():n.setAttribute("open","")}}});D();D();D();ce();import{useSyncExternalStore as ya}from"react";import{NetworkIcon as ba}from"@buoy-gg/shared-ui/web";D();import{hasAccountAccess as un,subscribeAccountAccess as va}from"@buoy-gg/shared-ui/web";D();D();function ur(e){if(typeof document>"u")return e;try{return new URL(e,document.baseURI).href}catch{return e}}D();var cn=globalThis;function cr(e){let t=cn.__BUOY_NETWORK_REQUEST_SEQUENCE__??(cn.__BUOY_NETWORK_REQUEST_SEQUENCE__={session:`${Date.now().toString(36)}-${Math.random().toString(36).slice(2)}`,next:0});return`${e}_${t.session}_${++t.next}`}D();D();D();function ue(){let e=globalThis.__buoyRealNow;return typeof e=="function"?e():Date.now()}function hn(){return globalThis.__buoyRealTimers??globalThis}function pn(e,t){return hn().setTimeout(e,t)}function hr(e){hn().clearTimeout(e)}var fn=2,gn=3,Wt=4,pr=e=>e,mn=false;function yn(e){let t=pr(e);return typeof t.setReadyState=="function"&&typeof t.setResponseHeaders=="function"}function Sa(e){return typeof e.addEventListener=="function"&&typeof e.removeEventListener=="function"&&typeof e.dispatchEvent=="function"}function xa(){mn||(mn=true,typeof me<"u"&&me&&console.warn("[Buoy] Network overrides need an XMLHttpRequest they can drive (React Native's, or a standards EventTarget one) and this environment provides neither \u2014 requests will run normally."))}function bn(e,t,r){let o=pr(e);o.responseURL=t,o.status=r.status,o.statusText=r.statusText,o.setResponseHeaders?.(r.headers),o.setReadyState?.(fn),!o._aborted&&(o._responseType="text",o._response=r.body,o._cachedResponse=void 0,o.setReadyState?.(gn),!o._aborted&&o.setReadyState?.(Wt))}function vn(e,t){let r=pr(e),o=t.failKind==="timeout";r._hasError=true,r._timedOut=o,r._responseType="text",r._response=o?"Request timed out (Buoy override)":"Network request failed (Buoy override)",r._cachedResponse=void 0,r.setReadyState?.(Wt)}function Ge(e,t,r){Object.defineProperty(e,t,{value:r,configurable:true,enumerable:true,writable:false})}function wa(e){if(e!=="readystatechange"&&typeof ProgressEvent=="function")try{return new ProgressEvent(e)}catch{}if(typeof Event=="function")try{return new Event(e)}catch{}return{type:e}}function ct(e,t){e.dispatchEvent(wa(t))}function Vt(e,t){Ge(e,"readyState",t),ct(e,"readystatechange")}function Ca(e,t){let r="";try{r=e.responseType}catch{}switch(r){case"":case"text":return t.body;case"json":try{return JSON.parse(t.body)}catch{return null}case"arraybuffer":return typeof TextEncoder=="function"?new TextEncoder().encode(t.body).buffer:t.body;case"blob":if(typeof Blob=="function"){let o=Object.entries(t.headers).find(([n])=>n.toLowerCase()==="content-type")?.[1]??"";return new Blob([t.body],{type:o})}return t.body;default:return t.body}}function Ta(e,t,r,o){let n=r.headers,i=Object.entries(n).map(([s,l])=>`${s.toLowerCase()}: ${l}\r
2
- `).join("");Ge(e,"getAllResponseHeaders",()=>i),Ge(e,"getResponseHeader",s=>{let l=String(s).toLowerCase();for(let[a,d]of Object.entries(n))if(a.toLowerCase()===l)return d;return null}),Ge(e,"responseURL",t),Ge(e,"status",r.status),Ge(e,"statusText",r.statusText),Ge(e,"response",Ca(e,r)),Ge(e,"responseText",r.body),Vt(e,fn),!o()&&(Vt(e,gn),!o()&&(Vt(e,Wt),!o()&&(ct(e,"load"),ct(e,"loadend"))))}function ao(e,t){Vt(e,Wt),ct(e,t.failKind==="timeout"?"timeout":"error"),ct(e,"loadend")}var Bt=new WeakMap;function Ra(e){return Bt.has(e)}function ka(e,t,r,o){let n=ue(),i={},s,l,a=false,d=false,b=false,E=e.timeout,C=e.abort,S=e.open,q=["abort","open","timeout","readyState","status","statusText","response","responseText","responseURL","getAllResponseHeaders","getResponseHeader"],g=new Map(q.map(I=>[I,Object.getOwnPropertyDescriptor(e,I)])),T=Object.getPrototypeOf(e),k;for(;T&&!k;)k=Object.getOwnPropertyDescriptor(T,"timeout"),T=Object.getPrototypeOf(T);let f=()=>{a=true,Bt.get(e)===i&&Bt.delete(e),clearTimeout(s),hr(l),e.removeEventListener("loadend",f)},P=()=>{f();for(let[I,w]of g)w?Object.defineProperty(e,I,w):delete e[I];e.timeout=E},z=()=>{hr(l),b?k?.set?.call(e,E>0?Math.max(1,E-(ue()-n)):0):E>0&&(l=pn(()=>{a||(clearTimeout(s),ao(e,{...r,kind:"fail",failKind:"timeout"}),f())},Math.max(0,E-(ue()-n))))};return Object.defineProperty(e,"timeout",{configurable:true,get:()=>E,set:I=>{E=Math.max(0,Number(I)||0),z()}}),Object.defineProperty(e,"open",{configurable:true,value:(...I)=>(P(),Reflect.apply(S,e,I))}),Object.defineProperty(e,"abort",{configurable:true,value:()=>{if(b||a){P(),C.call(e);return}d=true,clearTimeout(s),Vt(e,Wt),ct(e,"abort"),ct(e,"loadend"),f(),Bt.has(e)||Ge(e,"readyState",0)}}),Bt.set(e,i),e.addEventListener("loadend",f),z(),s=setTimeout(()=>{if(!(a||d)){if(r.kind==="delay"){b=true,z();try{o()}catch{ao(e,{...r,kind:"fail",failKind:"network"}),f()}return}r.kind==="fail"?ao(e,r):Ta(e,t,r,()=>d||Bt.get(e)!==i),f()}},r.delayMs),true}function Sn(e,t,r,o){if(!yn(e))return Sa(e)?ka(e,t,r,o):(xa(),false);let n=pr(e);n._sent=true,n._requestId=null;let i=null,s=()=>{e.removeEventListener("abort",s),i!==null&&(clearTimeout(i),i=null)};return e.addEventListener("abort",s),i=setTimeout(()=>{if(i=null,e.removeEventListener("abort",s),!n._aborted){if(r.kind==="delay"){n._sent=false,o();return}if(r.kind==="fail"){vn(e,r);return}bn(e,t,r)}},r.delayMs),true}function Ea(e,t,r){r.kind==="fail"?vn(e,r):r.kind==="respond"&&bn(e,t,r)}function Pa(e,t,r,o,n){if(!yn(e)){let w={id:"condition",enabled:true,urlPattern:t,kind:"delay",hits:0,seen:0,createdAt:Date.now()},H=r.profile==="offline"?{kind:"fail",rule:w,failKind:"network",delayMs:0}:o?{...o,delayMs:r.delayMs+o.delayMs}:{kind:"delay",rule:w,delayMs:r.delayMs};if(!Sn(e,t,H,n))throw new Error("Network conditions are unavailable for this XMLHttpRequest implementation.");return}let i=e;if(i.readyState!==1||i._sent)throw new Error("Request is not open or has already been sent.");let s=ue(),l=i.timeout,a=false,d=false,b,E,C=i.abort,S=i.open,q=Object.getOwnPropertyDescriptor(i,"abort"),g=Object.getOwnPropertyDescriptor(i,"open"),T=Object.getOwnPropertyDescriptor(i,"timeout"),k=(w,H)=>{H?Object.defineProperty(i,w,H):delete i[w]},f=()=>{a||(a=true,clearTimeout(E),hr(b),i.removeEventListener("loadend",f),k("abort",q),k("open",g),k("timeout",T),i.timeout=l)},P=w=>{a||(Object.assign(i,{readyState:4}),C.call(i),i._aborted=false,i._hasError=true,i._timedOut=w,i._response=w?"Request timed out (Buoy conditions)":"Network request failed (Buoy Offline)",i.setReadyState(4),f())},z=()=>l>0&&ue()-s>=l,I=()=>{hr(b),l>0&&(b=pn(()=>P(true),Math.max(0,l-(ue()-s))))};Object.defineProperty(i,"timeout",{configurable:true,get:()=>d?0:l,set:w=>{l=Math.max(0,Number(w)||0),I()}}),Object.defineProperty(i,"abort",{configurable:true,value:()=>{a||(C.call(i),f())}}),Object.defineProperty(i,"open",{configurable:true,value:(...w)=>{let H=Reflect.apply(S,i,w);return f(),H}}),i._sent=true,i._requestId=null,i.addEventListener("loadend",f),I(),E=setTimeout(()=>{if(!a){if(z()){P(true);return}if(r.profile==="offline"){P(false);return}if(o&&o.kind!=="delay"){Ea(i,t,o);return}i._sent=false,d=true;try{n()}catch{P(false)}finally{d=false}}},r.delayMs+(o?.delayMs??0))}D();function fr(e){if(!e?.aborted)return;if(e.reason!==void 0)throw e.reason;let t=new Error("The request was aborted.");throw t.name="AbortError",t}function Ia(e,t){return new Promise((r,o)=>{try{fr(t)}catch(l){o(l);return}let n=()=>t?.removeEventListener("abort",i),i=()=>{clearTimeout(s),n();try{fr(t)}catch(l){o(l)}},s=setTimeout(()=>{n(),r()},e);t?.addEventListener("abort",i,{once:true})})}D();import{hasAccountAccess as La}from"@buoy-gg/shared-ui/web";D();D();var Ba="[]{}()\\.^$+|-,?";function xn(e){let t="";for(let r=0;r<e.length;r++){let o=e.charAt(r);Ba.indexOf(o)!==-1&&(t+="\\"),t+=o}return t.split("*").join(".*")}var gr=new Map;function qa(e){let t=gr.get(e);if(t)return t;let r=e.startsWith("/")?`[a-zA-Z][a-zA-Z0-9+.-]*://[^/]*${xn(e)}`:xn(e),o=new RegExp(`^${r}$`);return gr.size>200&&gr.clear(),gr.set(e,o),o}function Oa(e,t){if(!e)return false;let r=t.toLowerCase();for(let o of Object.keys(e))if(o.toLowerCase()===r&&e[o]!==void 0&&e[o]!=="")return true;return false}function lo(e,t,r,o){if(e.methods&&e.methods.length>0&&!e.methods.includes(r.toUpperCase())||e.requireHeader&&!Oa(o,e.requireHeader))return false;try{return qa(e.urlPattern).test(t)}catch{return false}}D();import{TIER_LIMITS as Da}from"@buoy-gg/shared-ui/web";var Ut=200,_t=599,rt=50,wn=Da["network.overrideRules"].free;function Cn(e){return{ruleId:e.rule.id,ruleName:e.rule.name,kind:e.kind,delayMs:e.delayMs||void 0}}var za=[/(^|\.)keygen\.sh/i,/^https?:\/\/(www\.)?buoy\.gg\/api\/license(\/|$)/i];function Aa(e){return za.some(t=>t.test(e))}function Ha(e){let t=e.trim();if(t==="")return"text/plain; charset=utf-8";if(t.startsWith("{")||t.startsWith("["))try{return JSON.parse(t),"application/json"}catch{}return"text/plain; charset=utf-8"}function Ma(e,t){let r=t.toLowerCase();return Object.keys(e).some(o=>o.toLowerCase()===r)}function Na(e){let t=Math.max(0,e.delayMs??0);if(e.kind==="delay")return{kind:"delay",rule:e,delayMs:t};if(e.kind==="fail")return{kind:"fail",rule:e,delayMs:t,failKind:e.failKind??"network"};let r=e.body??"",o={...e.headers??{}};return Ma(o,"content-type")||(o["content-type"]=Ha(r)),{kind:"respond",rule:e,delayMs:t,status:Math.min(_t,Math.max(Ut,e.status??200)),statusText:e.statusText??"",headers:o,body:r}}function uo(e){return typeof e.times=="number"&&e.hits>=e.times}function $a(e){return e.alternate?e.seen%2===1:true}function Tn(e,t,r,o){if(r.length===0||t.toUpperCase()==="OPTIONS"||Aa(e))return null;for(let n of r)if(n.enabled&&!uo(n)&&lo(n,e,t,o))return n;return null}var Fe=null;function Fa(e){Fe=e}function Rn(){return La()&&!(typeof me<"u"&&!me)}var ja="Response overrides never apply in a release build \u2014 the rule is saved but will not affect any request.";function Wa(e,t){return{hooksInstalled:Fe!==null,devFlag:typeof me>"u"?"undefined":me,ruleCount:Fe?Fe.getRules().length:0,matches:Fe?Tn(e,t,Fe.getRules())!==null:false}}function kn(e,t,r){if(!Fe||!Rn())return null;let o=Fe.getRules();if(o.length===0)return null;let n=Tn(e,t,o,r);if(!n)return null;let i=$a(n);return Fe.recordMatch(n.id),i?(Fe.recordHit(n.id),Na(n)):null}D();function Va(){return typeof Response=="function"}function Ua(e,t){let r=new Response(t.body,{status:t.status,statusText:t.statusText,headers:t.headers});try{Object.defineProperty(r,"url",{value:e,configurable:true})}catch{}return r}function _a(e){return new TypeError(e.failKind==="timeout"?"Network request timed out":"Network request failed")}D();var Xa={400:"Bad Request",401:"Unauthorized",403:"Forbidden",404:"Not Found",408:"Request Timeout",429:"Too Many Requests",500:"Internal Server Error",502:"Bad Gateway",503:"Service Unavailable",504:"Gateway Timeout"};function Ja(e){return typeof e=="number"&&e>0?"response":"error"}function Ga(e,t){let r=(t??"").trim();return r||(Xa[e]??"")}var ht;function En(e){let t=globalThis.__buoyHeaderInjectors;if(!t||t.length===0)return;let r;for(let o of t)try{let n=o(e);n&&(r={...r,...n})}catch{}return r}function Ka(){if(ht!==void 0)return ht;ht=null;try{if(typeof me<"u"&&!me)return ht;let e=(ce(),ks(no))?.NativeModules?.SourceCode,t=e?.getConstants?.().scriptURL??e?.scriptURL;if(typeof t=="string"&&/^https?:\/\//.test(t)){let r=new URL(t);ht=`${r.protocol}//${r.host}`}}catch{ht=null}return ht}var mr=false;function Ya(e){let t={};if(!e)return t;if(typeof Headers<"u"&&e instanceof Headers)e.forEach((r,o)=>{t[o]=r});else if(Array.isArray(e))for(let[r,o]of e)t[r]=o;else Object.assign(t,e);return t}var Pn="__buoyNetworkFetchIntercepted",In="__buoyNetworkXhrIntercepted",Za=["text/event-stream","application/x-ndjson","application/stream+json"],Ln="[streaming\u2026]";function Qa(e){if(!e)return false;let t=e.toLowerCase();return Za.some(r=>t.includes(r))}var el="__BUOY_INTERNAL_HOSTS__";function tl(e){let t=globalThis[el];if(!(t instanceof Set)||t.size===0)return false;let r;try{r=new URL(e).host.toLowerCase()}catch{return false}for(let o of t)if(typeof o=="string"&&o&&r===o.toLowerCase())return true;return false}var rl=class{constructor(){this.listeners=[];this.isListening=false;this.patchedFetch=null;this.patchedXHROpen=null;this.patchedXHRSend=null;this.patchedXHRSetRequestHeader=null;this.fetchGeneration=0;this.xhrGeneration=0;this.originalFetch=globalThis.fetch,this.originalXHROpen=XMLHttpRequest.prototype.open,this.originalXHRSend=XMLHttpRequest.prototype.send,this.originalXHRSetRequestHeader=XMLHttpRequest.prototype.setRequestHeader}shouldIgnoreUrl(e){try{let t=new URL(e);if(t.hostname==="keygen.sh"||t.hostname.endsWith(".keygen.sh")||(t.hostname==="buoy.gg"||t.hostname==="www.buoy.gg")&&t.pathname.startsWith("/api/license")||(t.hostname==="localhost"||t.hostname==="127.0.0.1"||t.hostname==="10.0.2.2")&&["8081","8802"].includes(t.port))return true;let r=Ka();if(r&&`${t.protocol}//${t.host}`===r)return true}catch{return false}return tl(e)}emit(e){this.listeners.forEach(t=>{try{t(e)}catch{}})}parseUrl(e){let t=null,r=e.indexOf("?");return r>-1&&(t={},e.substring(r+1).split("&").forEach(o=>{let[n,i]=o.split("=");n&&i!==void 0&&(t[n]=decodeURIComponent(i.replace(/\+/g," ")))})),{url:r>-1?e.substring(0,r):e,params:t}}async readStreamedBody(e,t=256*1024){let r=e.body;if(!r||typeof r.getReader!="function"){let a=await e.text();return a.length>t?{body:`${a.slice(0,t)}
1
+ "use client";var no=Object.defineProperty;var Bs=Object.getOwnPropertyDescriptor;var qs=Object.getOwnPropertyNames;var Os=Object.prototype.hasOwnProperty;var hr=(e,t)=>()=>(e&&(t=e(e=0)),t);var Ds=(e,t)=>{for(var r in t)no(e,r,{get:t[r],enumerable:true})},io=(e,t,r,o)=>{if(t&&typeof t=="object"||typeof t=="function")for(let n of qs(t))!Os.call(e,n)&&n!==r&&no(e,n,{get:()=>t[n],enumerable:!(o=Bs(t,n))||o.enumerable});return e},zs=(e,t,r)=>(io(e,t,"default"),r&&io(r,t,"default"));var As=e=>io(no({},"__esModule",{value:true}),e);var me,O=hr(()=>{"use strict";me=(()=>{try{let e=globalThis.Capacitor;if(e&&typeof e.isNativePlatform=="function"&&e.isNativePlatform())return e.DEBUG===true}catch{}return process.env.NODE_ENV!=="production"})();typeof window<"u"&&typeof globalThis.global>"u"&&(globalThis.global=globalThis)});var an,Hs=hr(()=>{"use strict";O();an='-apple-system, BlinkMacSystemFont, "Segoe UI", Roboto, "Helvetica Neue", Arial, sans-serif'});import{useEffect as Ms,useState as Ns}from"react";import{createPortal as js}from"react-dom";import{jsx as Fs}from"react/jsx-runtime";function ln(){let e=document;if(e[Bt])return e[Bt].host;let t=document.createElement("div");t.dataset.buoyPortalHost="",Object.assign(t.style,{position:"fixed",inset:"0",zIndex:"2147483647",pointerEvents:"none",fontFamily:an});let r=()=>{let c=document.fullscreenElement,x=c&&c.tagName!=="CANVAS"?c:document.body;t.parentElement!==x&&x.appendChild(t)},o=new Map,n=c=>{(!t.contains(c.target)||!so(c.target))&&o.set(c.code||c.key,{key:c.key,code:c.code,location:c.location,keyCode:c.keyCode,which:c.which,altKey:c.altKey,ctrlKey:c.ctrlKey,metaKey:c.metaKey,shiftKey:c.shiftKey})},i=c=>{o.delete(c.code||c.key)},s=()=>o.clear(),l=()=>{let c=[...o.values()];o.clear();for(let x of c)document.dispatchEvent(new KeyboardEvent("keyup",{...x,bubbles:true}))},a=c=>{so(c.target)&&c.stopPropagation()},d=c=>c.stopPropagation();return r(),document.addEventListener("fullscreenchange",r),document.addEventListener("keydown",n,true),document.addEventListener("keyup",i,true),window.addEventListener("blur",s),t.addEventListener("focusin",l),t.addEventListener("keydown",a),t.addEventListener("keyup",a),t.addEventListener("keypress",a),t.addEventListener("wheel",d,{passive:true}),e[Bt]={host:t,users:0,dispose:()=>{document.removeEventListener("fullscreenchange",r),document.removeEventListener("keydown",n,true),document.removeEventListener("keyup",i,true),window.removeEventListener("blur",s),t.remove(),delete e[Bt]}},t}function $s({children:e}){let[t,r]=Ns(null);return Ms(()=>{let o=ln(),n=document[Bt];return n.users++,r(o),()=>{--n.users===0&&n.dispose()}},[]),t?js(Fs("div",{"data-buoy-root":"",style:{display:"contents",pointerEvents:"auto"},children:e}),t):null}var Bt,so,Ws=hr(()=>{"use strict";O();Hs();Bt=Symbol.for("@buoy-gg/portal-host"),so=e=>{if(!(e instanceof Element))return false;if(e.closest("input, textarea, select"))return true;let t=e.closest("[contenteditable]")?.getAttribute("contenteditable")?.toLowerCase();return t===""||t==="true"||t==="plaintext-only"}});var ao={};Ds(ao,{AccessibilityInfo:()=>Xs,ActivityIndicator:()=>ho,Alert:()=>bn,Animated:()=>Js,AppRegistry:()=>Ks,AppState:()=>Ys,Appearance:()=>Gs,BackHandler:()=>Zs,Button:()=>mn,CheckBox:()=>fa,Clipboard:()=>Qs,DeviceEventEmitter:()=>Pa,Dimensions:()=>ea,Easing:()=>ta,FlatList:()=>lo,I18nManager:()=>ra,Image:()=>ga,ImageBackground:()=>ma,InteractionManager:()=>na,Keyboard:()=>oa,KeyboardAvoidingView:()=>ya,LayoutAnimation:()=>ia,Linking:()=>sa,LogBox:()=>Ia,Modal:()=>fn,NativeEventEmitter:()=>aa,NativeModules:()=>_s,PanResponder:()=>la,Picker:()=>ba,PixelRatio:()=>da,Platform:()=>ua,Pressable:()=>pn,ProgressBar:()=>va,RefreshControl:()=>Sa,SafeAreaView:()=>xa,ScrollView:()=>ut,SectionList:()=>wa,Share:()=>ca,StatusBar:()=>Ca,StyleSheet:()=>fe,Switch:()=>gn,Text:()=>b,TextInput:()=>qt,Touchable:()=>Ta,TouchableHighlight:()=>cn,TouchableNativeFeedback:()=>ka,TouchableOpacity:()=>N,TouchableWithoutFeedback:()=>hn,UIManager:()=>ha,Vibration:()=>pa,View:()=>f,VirtualizedList:()=>Ra,YellowBox:()=>Ea,findNodeHandle:()=>yn,unstable_createElement:()=>Us,useColorScheme:()=>La,useLocaleContext:()=>Ba,useWindowDimensions:()=>dn});import*as Vs from"react-native-web";import{unstable_createElement as Us,NativeModules as _s,AccessibilityInfo as Xs,Animated as Js,Appearance as Gs,AppRegistry as Ks,AppState as Ys,BackHandler as Zs,Clipboard as Qs,Dimensions as ea,Easing as ta,I18nManager as ra,Keyboard as oa,InteractionManager as na,LayoutAnimation as ia,Linking as sa,NativeEventEmitter as aa,PanResponder as la,PixelRatio as da,Platform as ua,Share as ca,StyleSheet as fe,UIManager as ha,Vibration as pa,CheckBox as fa,FlatList as lo,Image as ga,ImageBackground as ma,KeyboardAvoidingView as ya,Picker as ba,ProgressBar as va,RefreshControl as Sa,SafeAreaView as xa,SectionList as wa,StatusBar as Ca,Touchable as Ta,TouchableNativeFeedback as ka,VirtualizedList as Ra,YellowBox as Ea,LogBox as Ia,DeviceEventEmitter as Pa,useColorScheme as La,useLocaleContext as Ba,useWindowDimensions as dn}from"react-native-web";import*as Le from"react-native-web";import{createElement as uo,forwardRef as un,useCallback as qa,useRef as Oa}from"react";function ze(e){let t=un((o,n)=>{let{accessibilityState:i,accessibilityValue:s,...l}=o;for(let a of["busy","checked","disabled","expanded","selected"])i?.[a]!==void 0&&l[`aria-${a}`]===void 0&&(l[`aria-${a}`]=i[a]);for(let[a,d]of Object.entries({min:"valuemin",max:"valuemax",now:"valuenow",text:"valuetext"}))s?.[a]!==void 0&&l[`aria-${d}`]===void 0&&(l[`aria-${d}`]=s[a]);return uo(e,{...l,ref:n})}),r=e.State;return r&&Object.assign(t,{State:r}),t.displayName=e.displayName??e.name??"NativeWebView",t}var f,b,qt,N,cn,hn,pn,ut,co,fn,gn,ho,mn,yn,bn,ce=hr(()=>{O();zs(ao,Vs);Ws();f=ze(Le.View),b=ze(Le.Text),qt=ze(Le.TextInput),N=ze(Le.TouchableOpacity),cn=ze(Le.TouchableHighlight),hn=ze(Le.TouchableWithoutFeedback),pn=ze(Le.Pressable),ut=ze(Le.ScrollView),co=un((e,t)=>{let r=Oa(null),o=qa(n=>{if(n){let i=n;for(;i.parentElement&&i.parentElement!==document.body;)i=i.parentElement;i.parentElement===document.body&&(r.current=i,Object.assign(i.style,{position:"relative",zIndex:"2147483647",pointerEvents:"auto"}),ln().appendChild(i))}else r.current&&(document.body.appendChild(r.current),r.current=null);typeof t=="function"?t(n):t&&(t.current=n)},[t]);return uo($s,null,uo(Le.Modal,{...e,ref:o}))});co.displayName="Modal";fn=ze(co),gn=ze(Le.Switch),ho=ze(Le.ActivityIndicator),mn=ze(Le.Button),yn=Le.findNodeHandle,bn={alert(e,t,r,o){if(typeof document>"u")return;let n=document.createElement("dialog");n.dataset.buoyRoot="",n.setAttribute("aria-label",e),n.style.cssText="position:fixed;inset:0;margin:auto;width:min(440px,90vw);padding:24px;border:1px solid #475569;border-radius:14px;background:#17212e;color:#f1f5f9;font:14px system-ui;box-shadow:0 20px 80px #0008;z-index:2147483647";let i=document.createElement("h2");if(i.textContent=e,i.style.cssText="font-size:18px;margin:0 0 12px",n.appendChild(i),t){let d=document.createElement("p");d.textContent=t,d.style.cssText="line-height:1.5;white-space:pre-wrap;margin:0 0 20px",n.appendChild(d)}let s=document.createElement("div");s.style.cssText="display:flex;justify-content:flex-end;flex-wrap:wrap;gap:8px";let l=r?.length?r:[{text:"OK"}],a=()=>{n.close?.(),n.remove()};for(let d of l){let c=document.createElement("button");c.type="button",c.textContent=d.text??"OK",c.style.cssText=`padding:9px 14px;border:1px solid #64748b;border-radius:7px;color:white;background:${d.style==="destructive"?"#a52b38":"#283a4d"};cursor:pointer;font:inherit`,c.onclick=()=>{a(),d.onPress?.()},s.appendChild(c)}n.addEventListener("cancel",d=>{d.preventDefault(),o?.cancelable!==false&&(a(),o?.onDismiss?.())}),n.appendChild(s),document.body.appendChild(n),n.showModal?n.showModal():n.setAttribute("open","")}}});O();O();O();ce();import{useSyncExternalStore as Da}from"react";import{NetworkIcon as za}from"@buoy-gg/shared-ui/web";O();import{hasAccountAccess as vn,subscribeAccountAccess as Aa}from"@buoy-gg/shared-ui/web";O();import{isBuoyRequest as Ha}from"@buoy-gg/shared-ui/web";O();function pr(e){if(typeof document>"u")return e;try{return new URL(e,document.baseURI).href}catch{return e}}O();var Sn=globalThis;function fr(e){let t=Sn.__BUOY_NETWORK_REQUEST_SEQUENCE__??(Sn.__BUOY_NETWORK_REQUEST_SEQUENCE__={session:`${Date.now().toString(36)}-${Math.random().toString(36).slice(2)}`,next:0});return`${e}_${t.session}_${++t.next}`}O();O();O();function ue(){let e=globalThis.__buoyRealNow;return typeof e=="function"?e():Date.now()}function xn(){return globalThis.__buoyRealTimers??globalThis}function wn(e,t){return xn().setTimeout(e,t)}function gr(e){xn().clearTimeout(e)}var Cn=2,Tn=3,Ut=4,mr=e=>e,kn=false;function Rn(e){let t=mr(e);return typeof t.setReadyState=="function"&&typeof t.setResponseHeaders=="function"}function Ma(e){return typeof e.addEventListener=="function"&&typeof e.removeEventListener=="function"&&typeof e.dispatchEvent=="function"}function Na(){kn||(kn=true,typeof me<"u"&&me&&console.warn("[Buoy] Network overrides need an XMLHttpRequest they can drive (React Native's, or a standards EventTarget one) and this environment provides neither \u2014 requests will run normally."))}function En(e,t,r){let o=mr(e);o.responseURL=t,o.status=r.status,o.statusText=r.statusText,o.setResponseHeaders?.(r.headers),o.setReadyState?.(Cn),!o._aborted&&(o._responseType="text",o._response=r.body,o._cachedResponse=void 0,o.setReadyState?.(Tn),!o._aborted&&o.setReadyState?.(Ut))}function In(e,t){let r=mr(e),o=t.failKind==="timeout";r._hasError=true,r._timedOut=o,r._responseType="text",r._response=o?"Request timed out (Buoy override)":"Network request failed (Buoy override)",r._cachedResponse=void 0,r.setReadyState?.(Ut)}function Ge(e,t,r){Object.defineProperty(e,t,{value:r,configurable:true,enumerable:true,writable:false})}function ja(e){if(e!=="readystatechange"&&typeof ProgressEvent=="function")try{return new ProgressEvent(e)}catch{}if(typeof Event=="function")try{return new Event(e)}catch{}return{type:e}}function ct(e,t){e.dispatchEvent(ja(t))}function _t(e,t){Ge(e,"readyState",t),ct(e,"readystatechange")}function Fa(e,t){let r="";try{r=e.responseType}catch{}switch(r){case"":case"text":return t.body;case"json":try{return JSON.parse(t.body)}catch{return null}case"arraybuffer":return typeof TextEncoder=="function"?new TextEncoder().encode(t.body).buffer:t.body;case"blob":if(typeof Blob=="function"){let o=Object.entries(t.headers).find(([n])=>n.toLowerCase()==="content-type")?.[1]??"";return new Blob([t.body],{type:o})}return t.body;default:return t.body}}function $a(e,t,r,o){let n=r.headers,i=Object.entries(n).map(([s,l])=>`${s.toLowerCase()}: ${l}\r
2
+ `).join("");Ge(e,"getAllResponseHeaders",()=>i),Ge(e,"getResponseHeader",s=>{let l=String(s).toLowerCase();for(let[a,d]of Object.entries(n))if(a.toLowerCase()===l)return d;return null}),Ge(e,"responseURL",t),Ge(e,"status",r.status),Ge(e,"statusText",r.statusText),Ge(e,"response",Fa(e,r)),Ge(e,"responseText",r.body),_t(e,Cn),!o()&&(_t(e,Tn),!o()&&(_t(e,Ut),!o()&&(ct(e,"load"),ct(e,"loadend"))))}function po(e,t){_t(e,Ut),ct(e,t.failKind==="timeout"?"timeout":"error"),ct(e,"loadend")}var Ot=new WeakMap;function Wa(e){return Ot.has(e)}function Va(e,t,r,o){let n=ue(),i={},s,l,a=false,d=false,c=false,x=e.timeout,T=e.abort,S=e.open,q=["abort","open","timeout","readyState","status","statusText","response","responseText","responseURL","getAllResponseHeaders","getResponseHeader"],m=new Map(q.map(P=>[P,Object.getOwnPropertyDescriptor(e,P)])),k=Object.getPrototypeOf(e),E;for(;k&&!E;)E=Object.getOwnPropertyDescriptor(k,"timeout"),k=Object.getPrototypeOf(k);let g=()=>{a=true,Ot.get(e)===i&&Ot.delete(e),clearTimeout(s),gr(l),e.removeEventListener("loadend",g)},I=()=>{g();for(let[P,C]of m)C?Object.defineProperty(e,P,C):delete e[P];e.timeout=x},z=()=>{gr(l),c?E?.set?.call(e,x>0?Math.max(1,x-(ue()-n)):0):x>0&&(l=wn(()=>{a||(clearTimeout(s),po(e,{...r,kind:"fail",failKind:"timeout"}),g())},Math.max(0,x-(ue()-n))))};return Object.defineProperty(e,"timeout",{configurable:true,get:()=>x,set:P=>{x=Math.max(0,Number(P)||0),z()}}),Object.defineProperty(e,"open",{configurable:true,value:(...P)=>(I(),Reflect.apply(S,e,P))}),Object.defineProperty(e,"abort",{configurable:true,value:()=>{if(c||a){I(),T.call(e);return}d=true,clearTimeout(s),_t(e,Ut),ct(e,"abort"),ct(e,"loadend"),g(),Ot.has(e)||Ge(e,"readyState",0)}}),Ot.set(e,i),e.addEventListener("loadend",g),z(),s=setTimeout(()=>{if(!(a||d)){if(r.kind==="delay"){c=true,z();try{o()}catch{po(e,{...r,kind:"fail",failKind:"network"}),g()}return}r.kind==="fail"?po(e,r):$a(e,t,r,()=>d||Ot.get(e)!==i),g()}},r.delayMs),true}function Pn(e,t,r,o){if(!Rn(e))return Ma(e)?Va(e,t,r,o):(Na(),false);let n=mr(e);n._sent=true,n._requestId=null;let i=null,s=()=>{e.removeEventListener("abort",s),i!==null&&(clearTimeout(i),i=null)};return e.addEventListener("abort",s),i=setTimeout(()=>{if(i=null,e.removeEventListener("abort",s),!n._aborted){if(r.kind==="delay"){n._sent=false,o();return}if(r.kind==="fail"){In(e,r);return}En(e,t,r)}},r.delayMs),true}function Ua(e,t,r){r.kind==="fail"?In(e,r):r.kind==="respond"&&En(e,t,r)}function _a(e,t,r,o,n){if(!Rn(e)){let C={id:"condition",enabled:true,urlPattern:t,kind:"delay",hits:0,seen:0,createdAt:Date.now()},H=r.profile==="offline"?{kind:"fail",rule:C,failKind:"network",delayMs:0}:o?{...o,delayMs:r.delayMs+o.delayMs}:{kind:"delay",rule:C,delayMs:r.delayMs};if(!Pn(e,t,H,n))throw new Error("Network conditions are unavailable for this XMLHttpRequest implementation.");return}let i=e;if(i.readyState!==1||i._sent)throw new Error("Request is not open or has already been sent.");let s=ue(),l=i.timeout,a=false,d=false,c,x,T=i.abort,S=i.open,q=Object.getOwnPropertyDescriptor(i,"abort"),m=Object.getOwnPropertyDescriptor(i,"open"),k=Object.getOwnPropertyDescriptor(i,"timeout"),E=(C,H)=>{H?Object.defineProperty(i,C,H):delete i[C]},g=()=>{a||(a=true,clearTimeout(x),gr(c),i.removeEventListener("loadend",g),E("abort",q),E("open",m),E("timeout",k),i.timeout=l)},I=C=>{a||(Object.assign(i,{readyState:4}),T.call(i),i._aborted=false,i._hasError=true,i._timedOut=C,i._response=C?"Request timed out (Buoy conditions)":"Network request failed (Buoy Offline)",i.setReadyState(4),g())},z=()=>l>0&&ue()-s>=l,P=()=>{gr(c),l>0&&(c=wn(()=>I(true),Math.max(0,l-(ue()-s))))};Object.defineProperty(i,"timeout",{configurable:true,get:()=>d?0:l,set:C=>{l=Math.max(0,Number(C)||0),P()}}),Object.defineProperty(i,"abort",{configurable:true,value:()=>{a||(T.call(i),g())}}),Object.defineProperty(i,"open",{configurable:true,value:(...C)=>{let H=Reflect.apply(S,i,C);return g(),H}}),i._sent=true,i._requestId=null,i.addEventListener("loadend",g),P(),x=setTimeout(()=>{if(!a){if(z()){I(true);return}if(r.profile==="offline"){I(false);return}if(o&&o.kind!=="delay"){Ua(i,t,o);return}i._sent=false,d=true;try{n()}catch{I(false)}finally{d=false}}},r.delayMs+(o?.delayMs??0))}O();function yr(e){if(!e?.aborted)return;if(e.reason!==void 0)throw e.reason;let t=new Error("The request was aborted.");throw t.name="AbortError",t}function Xa(e,t){return new Promise((r,o)=>{try{yr(t)}catch(l){o(l);return}let n=()=>t?.removeEventListener("abort",i),i=()=>{clearTimeout(s),n();try{yr(t)}catch(l){o(l)}},s=setTimeout(()=>{n(),r()},e);t?.addEventListener("abort",i,{once:true})})}O();import{hasAccountAccess as Ja}from"@buoy-gg/shared-ui/web";O();O();var Ga="[]{}()\\.^$+|-,?";function Ln(e){let t="";for(let r=0;r<e.length;r++){let o=e.charAt(r);Ga.indexOf(o)!==-1&&(t+="\\"),t+=o}return t.split("*").join(".*")}var br=new Map;function Ka(e){let t=br.get(e);if(t)return t;let r=e.startsWith("/")?`[a-zA-Z][a-zA-Z0-9+.-]*://[^/]*${Ln(e)}`:Ln(e),o=new RegExp(`^${r}$`);return br.size>200&&br.clear(),br.set(e,o),o}function Ya(e,t){if(!e)return false;let r=t.toLowerCase();for(let o of Object.keys(e))if(o.toLowerCase()===r&&e[o]!==void 0&&e[o]!=="")return true;return false}function fo(e,t,r,o){if(e.methods&&e.methods.length>0&&!e.methods.includes(r.toUpperCase())||e.requireHeader&&!Ya(o,e.requireHeader))return false;try{return Ka(e.urlPattern).test(t)}catch{return false}}O();import{TIER_LIMITS as Za}from"@buoy-gg/shared-ui/web";var Xt=200,Jt=599,rt=50,Bn=Za["network.overrideRules"].free;function qn(e){return{ruleId:e.rule.id,ruleName:e.rule.name,kind:e.kind,delayMs:e.delayMs||void 0}}var Qa=[/(^|\.)keygen\.sh/i,/^https?:\/\/(www\.)?buoy\.gg\/api\/license(\/|$)/i];function el(e){return Qa.some(t=>t.test(e))}function tl(e){let t=e.trim();if(t==="")return"text/plain; charset=utf-8";if(t.startsWith("{")||t.startsWith("["))try{return JSON.parse(t),"application/json"}catch{}return"text/plain; charset=utf-8"}function rl(e,t){let r=t.toLowerCase();return Object.keys(e).some(o=>o.toLowerCase()===r)}function ol(e){let t=Math.max(0,e.delayMs??0);if(e.kind==="delay")return{kind:"delay",rule:e,delayMs:t};if(e.kind==="fail")return{kind:"fail",rule:e,delayMs:t,failKind:e.failKind??"network"};let r=e.body??"",o={...e.headers??{}};return rl(o,"content-type")||(o["content-type"]=tl(r)),{kind:"respond",rule:e,delayMs:t,status:Math.min(Jt,Math.max(Xt,e.status??200)),statusText:e.statusText??"",headers:o,body:r}}function go(e){return typeof e.times=="number"&&e.hits>=e.times}function nl(e){return e.alternate?e.seen%2===1:true}function On(e,t,r,o){if(r.length===0||t.toUpperCase()==="OPTIONS"||el(e))return null;for(let n of r)if(n.enabled&&!go(n)&&fo(n,e,t,o))return n;return null}var Fe=null;function il(e){Fe=e}function Dn(){return Ja()&&!(typeof me<"u"&&!me)}var sl="Response overrides never apply in a release build \u2014 the rule is saved but will not affect any request.";function al(e,t){return{hooksInstalled:Fe!==null,devFlag:typeof me>"u"?"undefined":me,ruleCount:Fe?Fe.getRules().length:0,matches:Fe?On(e,t,Fe.getRules())!==null:false}}function zn(e,t,r){if(!Fe||!Dn())return null;let o=Fe.getRules();if(o.length===0)return null;let n=On(e,t,o,r);if(!n)return null;let i=nl(n);return Fe.recordMatch(n.id),i?(Fe.recordHit(n.id),ol(n)):null}O();function ll(){return typeof Response=="function"}function dl(e,t){let r=new Response(t.body,{status:t.status,statusText:t.statusText,headers:t.headers});try{Object.defineProperty(r,"url",{value:e,configurable:true})}catch{}return r}function ul(e){return new TypeError(e.failKind==="timeout"?"Network request timed out":"Network request failed")}O();var cl={400:"Bad Request",401:"Unauthorized",403:"Forbidden",404:"Not Found",408:"Request Timeout",429:"Too Many Requests",500:"Internal Server Error",502:"Bad Gateway",503:"Service Unavailable",504:"Gateway Timeout"};function hl(e){return typeof e=="number"&&e>0?"response":"error"}function pl(e,t){let r=(t??"").trim();return r||(cl[e]??"")}var ht;function An(e){let t=globalThis.__buoyHeaderInjectors;if(!t||t.length===0)return;let r;for(let o of t)try{let n=o(e);n&&(r={...r,...n})}catch{}return r}function fl(){if(ht!==void 0)return ht;ht=null;try{if(typeof me<"u"&&!me)return ht;let e=(ce(),As(ao))?.NativeModules?.SourceCode,t=e?.getConstants?.().scriptURL??e?.scriptURL;if(typeof t=="string"&&/^https?:\/\//.test(t)){let r=new URL(t);ht=`${r.protocol}//${r.host}`}}catch{ht=null}return ht}var pt=false;function gl(e){let t={};if(!e)return t;if(typeof Headers<"u"&&e instanceof Headers)e.forEach((r,o)=>{t[o]=r});else if(Array.isArray(e))for(let[r,o]of e)t[r]=o;else Object.assign(t,e);return t}var Hn="__buoyNetworkFetchIntercepted",Mn="__buoyNetworkXhrIntercepted",ml=["text/event-stream","application/x-ndjson","application/stream+json"],Nn="[streaming\u2026]",mo=false;function yl(){return mo?true:(mo=!!globalThis.document?.querySelector?.("[ng-version]"),mo)}function jn(e){if(!e)return false;let t=e.toLowerCase();return ml.some(r=>t.includes(r))}var bl="__BUOY_INTERNAL_HOSTS__";function vl(e){let t=globalThis[bl];if(!(t instanceof Set)||t.size===0)return false;let r;try{r=new URL(e).host.toLowerCase()}catch{return false}for(let o of t)if(typeof o=="string"&&o&&r===o.toLowerCase())return true;return false}var Sl=class{constructor(){this.listeners=[];this.isListening=false;this.patchedFetch=null;this.patchedXHROpen=null;this.patchedXHRSend=null;this.patchedXHRSetRequestHeader=null;this.fetchGeneration=0;this.xhrGeneration=0;this.originalFetch=globalThis.fetch,this.originalXHROpen=XMLHttpRequest.prototype.open,this.originalXHRSend=XMLHttpRequest.prototype.send,this.originalXHRSetRequestHeader=XMLHttpRequest.prototype.setRequestHeader}shouldIgnoreUrl(e){if(Ha(e))return true;try{let t=new URL(e);if(t.hostname==="keygen.sh"||t.hostname.endsWith(".keygen.sh")||(t.hostname==="buoy.gg"||t.hostname==="www.buoy.gg")&&(t.pathname.startsWith("/api/license")||t.pathname.startsWith("/api/settings/"))||(t.hostname==="localhost"||t.hostname==="127.0.0.1"||t.hostname==="10.0.2.2")&&["8081","8802"].includes(t.port))return true;let r=fl();if(r&&`${t.protocol}//${t.host}`===r)return true}catch{return false}return vl(e)}emit(e){this.listeners.forEach(t=>{try{t(e)}catch{}})}parseUrl(e){let t=null,r=e.indexOf("?");return r>-1&&(t={},e.substring(r+1).split("&").forEach(o=>{let[n,i]=o.split("=");n&&i!==void 0&&(t[n]=decodeURIComponent(i.replace(/\+/g," ")))})),{url:r>-1?e.substring(0,r):e,params:t}}async readStreamedBody(e,t=256*1024){let r=e.body;if(!r||typeof r.getReader!="function"){let a=await e.text();return a.length>t?{body:`${a.slice(0,t)}
3
3
 
4
4
  ... [truncated]`,size:a.length}:{body:a,size:a.length}}let o=r.getReader(),n=new TextDecoder,i="",s=0,l=false;try{for(;;){let{done:a,value:d}=await o.read();if(a)break;if(s+=d?.byteLength??0,!l&&(i+=n.decode(d,{stream:true}),s>=t)){i=`${i.slice(0,t)}
5
5
 
6
6
  ... [truncated]`,l=true;break}}l||(i+=n.decode())}finally{try{Promise.resolve(o.cancel()).catch(()=>{})}catch{}try{o.releaseLock()}catch{}}return{body:i,size:s}}async processResponseBody(e,t=1024*1024){try{let r=e.headers.get("content-length");if(r){let i=parseInt(r,10);if(!isNaN(i)&&i>t)return{body:`[Response too large: ${this.formatBytes(i)}]`,size:i,truncated:true}}let o=await e.text(),n=o.length;if(n>t){let i=o.substring(0,t),s=n-t;return{body:`${i}
7
7
 
8
- ... [truncated, ${this.formatBytes(s)} omitted]`,size:n,truncated:true}}try{return{body:JSON.parse(o),size:n,truncated:false}}catch{return{body:o,size:n,truncated:false}}}catch{return{body:"~~~ unable to read body ~~~",size:0,truncated:false}}}formatBytes(e){if(e===0)return"0 B";let t=1024,r=["B","KB","MB","GB"],o=Math.floor(Math.log(e)/Math.log(t));return`${Math.round(e/Math.pow(t,o)*100)/100} ${r[o]}`}handleXHRResponse(e,t,r,o,n,i,s,l,a=false,d="xhr",b,E){let C=l?ue()-l:0,S=e._buoyTtfb,q=S===void 0?void 0:{ttfb:S,download:Math.max(0,C-S)};if(a||e.status===0){this.emit({type:"error",timestamp:new Date,duration:C,request:{id:t||"unknown",url:r,method:o,headers:n,data:i,params:s||void 0,client:d},error:{message:a?"Request failed":"Network error or request aborted"},override:b,condition:E});return}let g,T=0;try{let f=e.response;if(e.responseType==="json"&&f)g=f,T=JSON.stringify(f).length;else if(e.responseType===""||e.responseType==="text"){if(e.responseText){T=e.responseText.length;try{g=JSON.parse(e.responseText)}catch{g=e.responseText}}}else if(e.responseType==="arraybuffer")if(f)try{let P=new TextDecoder("utf-8").decode(f);T=P.length;try{g=JSON.parse(P)}catch{g=P}}catch{g=`[arraybuffer response - ${f.byteLength||0} bytes]`,T=f.byteLength||0}else g="[arraybuffer response - no data]",T=0;else if(e.responseType==="blob")if(f instanceof Blob)g=`[blob response - ${f.size} bytes, type: ${f.type||"unknown"}]`,T=f.size;else if(f)try{g=typeof f=="string"?JSON.parse(f):f,T=JSON.stringify(g).length}catch{g="[blob response - unable to parse]",T=0}else g="[blob response - no data]",T=0;else if(f)if(typeof f=="string"){g=f,T=f.length;try{g=JSON.parse(f)}catch{}}else typeof f=="object"?(g=f,T=JSON.stringify(f).length):(g=String(f),T=String(f).length)}catch{g="~~~ unable to read body ~~~"}let k={};try{let f=e.getAllResponseHeaders();f&&f.split(`\r
9
- `).forEach(P=>{if(P){let z=P.indexOf(": ");if(z>0){let I=P.substring(0,z).toLowerCase(),w=P.substring(z+2);k[I]=w}}})}catch{}Ja(e.status)==="response"?this.emit({type:"response",timestamp:new Date,duration:C,timings:q,request:{id:t||"unknown",url:r,method:o,headers:n,data:i,params:s||void 0,client:d},response:{status:e.status,statusText:Ga(e.status,e.statusText),headers:k,body:g,size:T},override:b,condition:E}):this.emit({type:"error",timestamp:new Date,duration:C,request:{id:t||"unknown",url:r,method:o,headers:n,data:i,params:s||void 0,client:d},response:{status:e.status,statusText:e.statusText,headers:k,body:g,size:T},error:{message:"Network Error"},override:b,condition:E})}isFetchInterceptionLive(){return globalThis.fetch[Pn]===true}isXhrInterceptionLive(){return XMLHttpRequest.prototype.send[In]===true}isInterceptionLive(){return this.isFetchInterceptionLive()&&this.isXhrInterceptionLive()}startListening(){let e=this.isListening&&this.isFetchInterceptionLive(),t=this.isListening&&this.isXhrInterceptionLive();e&&t||(e||this.installFetchInterceptor(),t||this.installXhrInterceptor(),this.isListening=true)}installFetchInterceptor(){let e=this,t=globalThis.fetch.bind(globalThis);this.originalFetch=globalThis.fetch;let r=++this.fetchGeneration,o=async(n,i)=>{let s=ur(typeof n=="string"?n:n instanceof URL?n.href:n.url);if(r!==e.fetchGeneration||e.shouldIgnoreUrl(s))return t(n,i);let l=ue(),a=cr("fetch"),d=typeof n=="object"&&"method"in n?n:void 0,b=i?.method??d?.method??"GET",E=i?.signal!==void 0?i.signal:d?.signal;fr(E);let C=On(s),{url:S,params:q}=e.parseUrl(s),g={},T=i?.headers??d?.headers;T&&(T instanceof Headers?T.forEach((I,w)=>{g[w]=I}):Array.isArray(T)?T.forEach(([I,w])=>{g[I]=w}):g={...T}),Object.assign(g,En(s));let k;if(i?.body)if(typeof i.body=="string")try{k=JSON.parse(i.body)}catch{k=i.body}else k=i.body;let f=g["X-Request-Client"]||g["x-request-client"]||"fetch",P=C?.profile!=="offline"&&Va()?kn(s,b,g):null,z=P?Cn(P):void 0;if(e.emit({type:"request",timestamp:new Date,request:{id:a||"unknown",url:S,method:b,headers:g,data:k,params:q||void 0,client:f},override:z,condition:C}),i?.body===void 0&&d?.body&&!d.bodyUsed)try{let I=d.clone();e.readStreamedBody(I).then(({body:w})=>{try{k=JSON.parse(w)}catch{k=w}e.emit({type:"request-body",timestamp:new Date,request:{id:a||"unknown",url:S,method:b,data:k,client:f}})}).catch(()=>{})}catch{}try{if((C||P)&&await Ia((C?.delayMs??0)+(P?.delayMs??0),E),fr(E),C?.profile==="offline")throw new TypeError("Network request failed (Buoy Offline)");if(P?.kind==="fail")throw _a(P);let I;if(P?.kind==="respond")I=Ua(s,P);else{let Z=mr;mr=true;let ee;try{ee=t(n,i)}finally{mr=Z}I=await ee}let w=ue()-l,H=typeof I.body?.getReader=="function"||Qa(I.headers?.get?.("content-type")),v=I.clone(),{body:h,size:c}=H?{body:Ln,size:0}:await e.processResponseBody(v),u=ue()-l,m=Math.max(0,u-w),O=m>0?{ttfb:w,download:m}:void 0,re={};return I.headers.forEach((Z,ee)=>{re[ee.toLowerCase()]=Z}),e.emit({type:"response",timestamp:new Date,duration:u,timings:O,request:{id:a||"unknown",url:S,method:b,headers:g,data:k,params:q||void 0,client:f},response:{status:I.status,statusText:I.statusText,headers:re,body:h,size:c},override:z,condition:C}),H&&e.readStreamedBody(v).then(Z=>{let ee=Z.body;if(I.headers?.get?.("content-type")?.includes("json"))try{ee=JSON.parse(Z.body)}catch{}e.emit({type:"response",timestamp:new Date,duration:ue()-l,timings:O,request:{id:a||"unknown",url:S,method:b,headers:g,data:k,params:q||void 0,client:f},response:{status:I.status,statusText:I.statusText,headers:re,body:ee,size:Z.size},override:z,condition:C})}).catch(()=>{}),I}catch(I){let w=ue()-l;throw e.emit({type:"error",timestamp:new Date,duration:w,request:{id:a||"unknown",url:S,method:b,headers:g,data:k,params:q||void 0,client:f},error:{message:I instanceof Error?I.message:"Network error",stack:I instanceof Error?I.stack:void 0},override:z,condition:C}),I}};o[Pn]=true,this.patchedFetch=o,globalThis.fetch=this.patchedFetch}installXhrInterceptor(){let e=this,t=XMLHttpRequest.prototype.open,r=XMLHttpRequest.prototype.send,o=XMLHttpRequest.prototype.setRequestHeader;this.originalXHROpen=t,this.originalXHRSend=r,this.originalXHRSetRequestHeader=o;let n=++this.xhrGeneration,i=new WeakMap,s=function(d,b,E,C,S){let q=t.call(this,d,b,E??true,C,S);if(n===e.xhrGeneration){i.get(this)?.();let g=this;g._buoyRequestId=cr("xhr"),g._method=d,g._url=ur(b),g._buoyStartTime=ue(),g._requestHeaders={}}return q},l=function(d,b){let E=this;return n===e.xhrGeneration&&E._requestHeaders&&(E._requestHeaders[d]=b),o.call(this,d,b)},a=function(d){if(n!==e.xhrGeneration||mr)return r.call(this,d);if(Ra(this))throw new DOMException("The request has already been sent.","InvalidStateError");if(this.readyState!==1||this._sent)return r.call(this,d);let b=this,E=b._buoyRequestId,C=b._method||"GET",S=b._url||"",q=ue();b._buoyStartTime=q,b._buoyTtfb=void 0;let g=b._requestHeaders||{};if(Object.assign(g,En(S)),e.shouldIgnoreUrl(S))return r.call(this,d);let{url:T,params:k}=e.parseUrl(S),f;if(d)if(typeof d=="string")try{f=JSON.parse(d)}catch{f=d}else f=d;let P=g["X-Request-Client"]||g["x-request-client"],z=g.Accept||g.accept||"",I=z.includes("application/json")&&z.includes("text/plain")&&z.includes("*/*"),w=P||(I?"axios":"xhr"),H=On(S),v=H?.profile==="offline"?null:kn(S,C,g),h=v?Cn(v):void 0;e.emit({type:"request",timestamp:new Date,request:{id:E||"unknown",url:T,method:C,headers:g,data:f,params:k||void 0,client:w},override:h,condition:H});let c=false,u=(G=false)=>{c||(c=true,e.handleXHRResponse(this,E||"unknown",T,C,g,f,k,q||0,G,w,h,H),m())},m=()=>{i.delete(this),this.removeEventListener("load",O),this.removeEventListener("error",re),this.removeEventListener("abort",Z),this.removeEventListener("readystatechange",ee)};i.set(this,m);let O=()=>{u(false)},re=()=>{u(true)},Z=()=>{u(true)},ee=()=>{if(this.readyState===2){let G=this;G._buoyTtfb===void 0&&G._buoyStartTime&&(G._buoyTtfb=ue()-G._buoyStartTime)}this.readyState===4&&!c&&u(false)};if(this.addEventListener("load",O),this.addEventListener("error",re),this.addEventListener("abort",Z),this.addEventListener("readystatechange",ee),H){Pa(this,S,H,v,()=>r.call(this,d));return}if(!(v&&Sn(this,S,v,()=>r.call(this,d))))return r.call(this,d)};a[In]=true,this.patchedXHROpen=s,this.patchedXHRSend=a,this.patchedXHRSetRequestHeader=l,XMLHttpRequest.prototype.open=this.patchedXHROpen,XMLHttpRequest.prototype.send=this.patchedXHRSend,XMLHttpRequest.prototype.setRequestHeader=this.patchedXHRSetRequestHeader}stopListening(){this.isListening&&(this.fetchGeneration++,this.xhrGeneration++,this.patchedFetch&&globalThis.fetch===this.patchedFetch&&(globalThis.fetch=this.originalFetch),this.patchedXHROpen&&XMLHttpRequest.prototype.open===this.patchedXHROpen&&(XMLHttpRequest.prototype.open=this.originalXHROpen),this.patchedXHRSend&&XMLHttpRequest.prototype.send===this.patchedXHRSend&&(XMLHttpRequest.prototype.send=this.originalXHRSend),this.patchedXHRSetRequestHeader&&XMLHttpRequest.prototype.setRequestHeader===this.patchedXHRSetRequestHeader&&(XMLHttpRequest.prototype.setRequestHeader=this.originalXHRSetRequestHeader),this.patchedFetch=null,this.patchedXHROpen=null,this.patchedXHRSend=null,this.patchedXHRSetRequestHeader=null,this.isListening=false)}adoptEarlyRequests(){let e=globalThis.__BUOY_EARLY_NETWORK__;if(e?.version===1)for(let t of e.adopt())try{t.kind==="fetch"?this.adoptEarlyFetch(t):this.adoptEarlyXhr(t)}catch{}}adoptEarlyFetch(e){let{input:t,init:r}=e,o=typeof t=="object"&&"method"in t?t:void 0,n=ur(typeof t=="string"?t:t instanceof URL?t.href:t.url);if(this.shouldIgnoreUrl(n))return;let i=cr("fetch"),s=r?.method??o?.method??"GET",{url:l,params:a}=this.parseUrl(n),d=Ya(r?.headers??o?.headers),b=r?.body;if(typeof b=="string")try{b=JSON.parse(b)}catch{}let E=d["X-Request-Client"]||d["x-request-client"]||"fetch",C=()=>({id:i,url:l,method:s,headers:d,data:b,params:a||void 0,client:E});this.emit({type:"request",timestamp:new Date(e.start),request:C()}),e.requestCopy&&this.readStreamedBody(e.requestCopy).then(({body:S})=>{try{b=JSON.parse(S)}catch{b=S}this.emit({type:"request-body",timestamp:new Date,request:{id:i,url:l,method:s,data:b,client:E}})}).catch(()=>{}),e.settled.then(async({response:S,clone:q,error:g,headersAt:T})=>{if(!S){this.emit({type:"error",timestamp:new Date,duration:T-e.start,request:C(),error:{message:g instanceof Error?g.message:"Network error",stack:g instanceof Error?g.stack:void 0}});return}let{body:k,size:f}=q?await this.processResponseBody(q):{body:Ln,size:0},P=Math.max(0,ue()-e.start),z=T-e.start,I={};S.headers.forEach((w,H)=>{I[H.toLowerCase()]=w}),this.emit({type:"response",timestamp:new Date,duration:P,timings:P>z?{ttfb:z,download:P-z}:void 0,request:C(),response:{status:S.status,statusText:S.statusText,headers:I,body:k,size:f}})})}adoptEarlyXhr(e){let t=ur(e.url);if(this.shouldIgnoreUrl(t))return;let r=cr("xhr"),o=e.method.toUpperCase(),{url:n,params:i}=this.parseUrl(t),s=e.body;if(typeof s=="string")try{s=JSON.parse(s)}catch{}let l=e.headers["X-Request-Client"]||e.headers["x-request-client"]||"xhr";this.emit({type:"request",timestamp:new Date(e.start),request:{id:r,url:n,method:o,headers:e.headers,data:s,params:i||void 0,client:l}});let a=e.xhr,d=()=>{let b=(a._buoyEarlyEnd??ue())-e.start;this.handleXHRResponse(a,r,n,o,e.headers,s,i,ue()-b,false,l)};a.readyState===4?d():a.addEventListener("loadend",d,{once:true})}addListener(e){return this.listeners.push(e),()=>{let t=this.listeners.indexOf(e);t>-1&&this.listeners.splice(t,1)}}removeAllListeners(){this.listeners=[]}get isActive(){return this.isListening}get listenerCount(){return this.listeners.length}},ot=null,co=()=>(ot||(ot=new rl),ot),yr=co,Bn=()=>co().startListening(),Xt=()=>ot?.stopListening(),Jt=e=>co().addListener(e),ol=()=>ot?.removeAllListeners(),qn=()=>ot?.isActive??false,pt=()=>ot?.listenerCount??0,nl=()=>ot?.isInterceptionLive()??false;var Gt={normal:{label:"Normal",delayMs:0},offline:{label:"Offline (requests)",delayMs:0},slow:{label:"Slow (+500 ms)",delayMs:500},verySlow:{label:"Very slow (+2000 ms)",delayMs:2e3}},ho=`${Date.now()}-${Math.random().toString(36).slice(2)}`,ft="normal",br,vr=new Set,gt=()=>typeof me<"u"&&me&&un(),mt=()=>ft,Kt=e=>(vr.add(e),()=>{vr.delete(e)});function Sr(e){if(typeof e!="string"||!Object.prototype.hasOwnProperty.call(Gt,e))throw new Error("Choose normal, offline, slow, or verySlow.");if(e!=="normal"&&!gt())throw new Error("Network conditions require an admitted account and a development build.");return e===ft||(e!=="normal"&&!br?(Bn(),br=Jt(()=>{})):e==="normal"&&(br?.(),br=void 0,pt()===0&&Xt()),ft=e,vr.forEach(t=>t())),ft}function On(e){if(!(ft==="normal"||!gt()||!/^https?:\/\//i.test(e)))return Object.freeze({profile:ft,delayMs:Gt[ft].delayMs})}va(()=>{un()||Sr("normal"),vr.forEach(e=>e())});import{jsx as Dn,jsxs as il}from"react/jsx-runtime";function sl({size:e}){let t=ya(Kt,mt,mt);return il(p,{accessibilityLabel:t==="normal"?"Network":`Network: ${Gt[t].label}`,children:[Dn(ba,{size:e}),t!=="normal"&&Dn(y,{testID:"buoy-network-condition-indicator",style:{position:"absolute",top:-6,right:-8,color:"#FFCC66",fontSize:10,fontWeight:"700"},children:t==="offline"?"OFF":`+${Gt[t].delayMs}`})]})}import{createToolFactory as al,defineToolPreset as ll}from"@buoy-gg/shared-ui/web";D();D();ce();import{useEffect as zn,useRef as po,useState as An,useSyncExternalStore as fo}from"react";import{FloatingTool as dl,night as Re,openFloatingTool as ul,persistentStorage as cl,registerPersistentFloatingTool as hl}from"@buoy-gg/shared-ui/web";import{jsx as ke,jsxs as Hn}from"react/jsx-runtime";function pl(){let e,t=new Set;return{getSnapshot:()=>e,subscribe:r=>(t.add(r),()=>{t.delete(r)}),update(r){e=r,t.forEach(o=>o())}}}var fl=()=>()=>{},Mn=()=>{},xr=[{id:"normal",label:"No throttling",detail:"No added delay"},{id:"slow",label:"Slow",detail:"+500 ms before sending"},{id:"verySlow",label:"Very slow",detail:"+2 seconds before sending"},{id:"offline",label:"Offline",detail:"New requests fail"}],gl={id:"network-throttling",render:e=>ke($n,{...e})};function Nn(){return typeof me>"u"||!me?()=>{}:hl(gl,cl)}typeof me<"u"&&me&&typeof navigator<"u"&&navigator.product==="ReactNative"&&Nn();function ml(e){ul({id:"network-throttling",render:t=>ke($n,{...t,source:e})})}function $n({id:e,revealToken:t,dismiss:r,source:o}){let n=fo(Kt,mt,mt),i=fo(Kt,gt,gt),s=fo(o?.subscribe??fl,o?.getSnapshot??Mn,Mn),l=o?s?.profile??null:n,a=o?s?.available===true:i,[d,b]=An(false),[E,C]=An(),S=po(false),q=po(0),g=po(true),{width:T}=en();zn(()=>(g.current=true,()=>{g.current=false}),[]),zn(()=>{q.current+=1,S.current=false,b(false),C(void 0)},[o,s?.targetId]);let k=l!==null&&l!=="normal",f=l??"normal",P=xr.find(h=>h.id===f),z=xr[(xr.findIndex(h=>h.id===f)+1)%xr.length],I=!a||f==="offline"?0:f==="verySlow"?1:f==="slow"?2:4,w=d?"Applying\u2026":a?f==="normal"?"0 ms":f==="slow"?"+500 ms":f==="verySlow"?"+2000 ms":"Blocked":"Unavailable";async function H(h,c=false){if(S.current)return;let u=++q.current;S.current=true,b(true),C(void 0);let m=o?.getSnapshot();try{if(o){if(!m?.available)throw new Error("Device unavailable. Open Network again to reconnect these controls.");await m.onChange(h)}else Sr(h);g.current&&q.current===u&&c&&r()}catch(O){g.current&&q.current===u&&C(O instanceof Error?O.message:String(O))}finally{q.current===u&&(S.current=false,g.current&&b(false))}}let v=E?ke(p,{style:Be.menu,children:ke(y,{accessibilityRole:"alert",style:Be.error,children:E})}):void 0;return ke(dl,{id:e,revealToken:t,variant:"strip",dragFromSurface:true,accessibilityLabel:`Move or hide network throttling. ${k?"Active":"Off"}`,accessory:v,children:Hn(p,{style:[Be.row,{width:Math.max(220,Math.min(292,T-64))}],children:[ke(N,{testID:"throttling-cycle",accessibilityRole:"button",accessibilityLabel:`Network: ${P.label}. Switch to ${z.label}`,accessibilityState:{disabled:d||!a},disabled:d||!a,onPress:()=>void H(z.id),style:Be.signalButton,children:d?ke(so,{size:"small",color:Re.color.accent}):Hn(p,{testID:`throttling-signal-${f}`,style:Be.signal,children:[[7,12,18,24].map((h,c)=>ke(p,{style:{width:4,height:h,borderRadius:2,backgroundColor:c<I?f==="offline"?Re.color.danger:Re.color.accent:Re.color.fillTertiary}},h)),f==="offline"&&ke(p,{style:Be.slash})]})}),ke(p,{style:Be.profile,children:ke(y,{testID:"throttling-profile",accessibilityLabel:`Connection profile: ${P.label}`,accessibilityLiveRegion:"polite",numberOfLines:1,style:Be.profileLabel,children:P.label})}),ke(y,{testID:"throttling-status",numberOfLines:1,accessibilityLiveRegion:"polite",style:Be.status,children:w}),ke(p,{style:Be.separator}),ke(N,{testID:"throttling-close",accessibilityRole:"button",accessibilityLabel:"Close and turn off throttling",disabled:d,accessibilityState:{disabled:d},onPress:()=>{l==="normal"?r():H("normal",true)},style:[Be.action,d&&Be.disabled],children:ke(y,{style:Be.actionText,children:"Close"})})]})})}var Be=fe.create({row:{flexDirection:"row",alignItems:"center",gap:6,paddingVertical:4,minHeight:48},signalButton:{width:36,minHeight:44,alignItems:"center",justifyContent:"center"},signal:{flexDirection:"row",alignItems:"flex-end",gap:3,height:24},slash:{position:"absolute",width:30,height:2,backgroundColor:Re.color.danger,top:11,left:-2,transform:[{rotate:"-45deg"}]},separator:{height:20,width:1,backgroundColor:Re.color.separator,marginHorizontal:2},status:{color:Re.color.textSecondary,fontSize:10,lineHeight:15,flexShrink:1},profile:{flex:1,flexDirection:"row",alignItems:"center",gap:6,minHeight:44},profileLabel:{color:Re.color.text,fontSize:13,fontWeight:"500",flexShrink:1},action:{minHeight:36,minWidth:52,borderRadius:Re.radius.input,borderWidth:1,borderColor:Re.color.accentBorderStrong,alignItems:"center",justifyContent:"center",paddingHorizontal:10},actionText:{color:Re.color.accent,fontSize:12,fontWeight:"600"},disabled:{opacity:.4},menu:{marginVertical:8,padding:6,borderRadius:Re.radius.card,borderWidth:1,borderColor:Re.color.separator,backgroundColor:Re.color.surface,shadowColor:"#000",shadowOffset:{width:0,height:6},shadowOpacity:.25,shadowRadius:16,elevation:8},error:{color:Re.color.danger,fontSize:12,lineHeight:18,padding:10}});ce();import{useState as ye,useRef as wr,useEffect as yt,useCallback as go}from"react";import{Search as yl,Wifi as bl,Filter as vl,Bookmark as Sl,JsModal as xl,ModalHeader as ge,devToolsStorageKeys as Cr,macOSColors as wl,night as Ke,persistentStorage as Fn,NightSegmented as Cl,useFeatureGate as Tl,UpgradeModal as Rl,PowerToggleButton as kl,useIgnoredPatterns as El,windowDragProps as Pl}from"@buoy-gg/shared-ui/web";D();ce();import{CheckCircle as Il,Clock as Ll,DynamicFilterView as Bl,Film as ql,FileJson as Ol,FileText as Dl,Filter as jn,Globe as Wn,Image as zl,macOSColors as be,night as Ee,Music as Al,XCircle as Hl,monoFont as mo}from"@buoy-gg/shared-ui/web";import{useCallback as Tr,useMemo as je,useState as Ml}from"react";import{jsx as Ye,jsxs as Vn}from"react/jsx-runtime";var Nl=()=>false;function yo(e){let t=e.responseHeaders||e.requestHeaders,r=t?.["content-type"]||t?.["Content-Type"]||"";return r.includes("json")?{type:"JSON",color:be.semantic.info}:r.includes("xml")?{type:"XML",color:be.semantic.success}:r.includes("html")?{type:"HTML",color:be.semantic.warning}:r.includes("text")?{type:"TEXT",color:be.semantic.success}:r.includes("image")?{type:"IMAGE",color:be.semantic.error}:r.includes("video")?{type:"VIDEO",color:be.semantic.error}:r.includes("audio")?{type:"AUDIO",color:be.semantic.debug}:r.includes("form")?{type:"FORM",color:be.semantic.info}:{type:"OTHER",color:Ee.color.textTertiary}}function $l(e){switch(e){case"JSON":return Ol;case"HTML":case"XML":case"TEXT":return Dl;case"IMAGE":return zl;case"VIDEO":return ql;case"AUDIO":return Al;default:return Wn}}function Fl(e){switch(e){case"GET":return be.semantic.success;case"POST":return be.semantic.info;case"PUT":return be.semantic.warning;case"DELETE":return be.semantic.error;case"PATCH":return be.semantic.success;default:return Ee.color.textTertiary}}function jl({events:e,filter:t,onFilterChange:r,ignoredPatterns:o=[],onRemovePattern:n=()=>{},isTeamPattern:i=Nl,onAddPattern:s=()=>{},onTogglePatternMode:l=()=>{}}){let[a,d]=Ml("contains"),b=je(()=>{let v=new Map;for(let h of o)v.set(h.value,h.mode);return v},[o]),E=je(()=>new Set(o.map(v=>v.value)),[o]),C=Tr(v=>{s({value:v,mode:a})},[s,a]),S=Tr(v=>{if(i(v)){let m=Ee.color.accent;return Ye(p,{accessibilityLabel:"Set by your team on buoy.gg",style:[Ae.modeBadge,{borderColor:`${m}60`,backgroundColor:`${m}15`}],children:Ye(y,{style:[Ae.modeBadgeText,{color:m}],children:"TEAM"})})}let h=b.get(v)??"contains",c=h==="exact",u=c?Ee.color.warning:Ee.color.info;return Ye(N,{accessibilityRole:"button",accessibilityLabel:`Match mode: ${h}. Tap to toggle.`,onPress:()=>l(v),style:[Ae.modeBadge,{borderColor:`${u}60`,backgroundColor:`${u}15`}],hitSlop:{top:6,bottom:6,left:6,right:6},children:Ye(y,{style:[Ae.modeBadgeText,{color:u}],children:c?"EXACT":"CONTAINS"})})},[b,l,i]),q=Tr(()=>{let v=[{label:"Contains",value:"contains",hint:"substring"},{label:"Exact",value:"exact",hint:"whole path/host/url"}];return Vn(p,{style:Ae.modeToggleRow,children:[Ye(y,{style:Ae.modeToggleLabel,children:"Match:"}),Ye(p,{style:Ae.modeToggleGroup,children:v.map(h=>{let c=a===h.value;return Vn(N,{onPress:()=>d(h.value),style:[Ae.modeToggleButton,c&&Ae.modeToggleButtonActive],accessibilityRole:"button",accessibilityState:{selected:c},children:[Ye(y,{style:[Ae.modeToggleButtonText,c&&Ae.modeToggleButtonTextActive],children:h.label}),Ye(y,{style:Ae.modeToggleButtonHint,children:h.hint})]},h.value)})})]})},[a]),g=je(()=>{let v={all:e.length,success:0,error:0,pending:0};return e.forEach(h=>{if(h.error||h.status&&h.status>=400){v.error+=1;return}if(h.status&&h.status>=200&&h.status<300){v.success+=1;return}!h.status&&!h.error&&(v.pending+=1)}),v},[e]),T=je(()=>e.reduce((v,h)=>(h.method&&(v[h.method]=(v[h.method]||0)+1),v),{}),[e]),k=je(()=>e.reduce((v,h)=>{let{type:c}=yo(h);return v[c]=(v[c]||0)+1,v},{}),[e]),f=je(()=>{let v=new Set;return e.forEach(h=>{if(h.host){v.add(h.host);return}try{if(h.url){let c=new URL(h.url),u=String(c.host||"");u&&v.add(u)}}catch{}}),Array.from(v).filter(h=>h&&h!=="").sort((h,c)=>h.localeCompare(c))},[e]),P=je(()=>{let v=new Set;return e.forEach(h=>{if(h.url)try{let c=new URL(h.url),u=String(c.origin||""),m=String(c.pathname||""),O=`${u}${m}`;v.add(O)}catch{v.add(h.url)}}),Array.from(v).filter(h=>h&&h!=="").sort((h,c)=>h.localeCompare(c))},[e]),z=je(()=>{let v=f.slice(0,30),h=P.slice(0,30);return[...v,...h]},[f,P]),I=Tr((v,h)=>{let[c]=v.split("::");if(c==="status"){r({...t,status:h==="all"?void 0:h});return}if(c==="method"){let u=String(h),m=t.method||[],O=m.includes(u)?m.filter(re=>re!==u):[u];r({...t,method:O.length>0?O:void 0});return}if(c==="contentType"){let u=String(h),m=t.contentType||[],O=m.includes(u)?m.filter(re=>re!==u):[u];r({...t,contentType:O.length>0?O:void 0})}},[t,r]),w=je(()=>{let v=[];v.push({id:"status",title:"Status",type:"status",data:["all","success","error","pending"].map(u=>({id:`status::${u}`,label:u.charAt(0).toUpperCase()+u.slice(1),count:g[u],icon:u==="success"?Il:u==="error"?Hl:u==="pending"?Ll:Wn,color:u==="success"?be.semantic.success:u==="error"?be.semantic.error:u==="pending"?be.semantic.warning:be.semantic.info,isActive:t.status===u||!t.status&&u==="all",value:u}))});let h=Object.entries(T);h.length>0&&v.push({id:"method",title:"Method",type:"method",data:h.map(([u,m])=>({id:`method::${u}`,label:u,count:m,color:Fl(u),isActive:t.method?.includes(u)??false,value:u}))});let c=Object.entries(k);return c.length>0&&v.push({id:"contentType",title:"Content Type",type:"contentType",data:c.map(([u,m])=>{let O=e.find(Z=>yo(Z).type===u),{color:re}=O?yo(O):{color:Ee.color.textTertiary};return{id:`contentType::${u}`,label:u,count:m,icon:$l(u),color:re,isActive:t.contentType?.includes(u)??false,value:u}})}),v},[k,e,t.contentType,t.method,t.status,T,g]),H=je(()=>({sections:w,addFilterSection:{enabled:true,placeholder:"Enter domain or URL pattern...",title:"ACTIVE FILTERS",icon:jn,renderExtra:q},availableItemsSection:{enabled:true,title:"AVAILABLE DOMAINS & URLS",emptyMessage:"No network events captured yet. Domains and URLs will appear here.",items:z},howItWorksSection:{enabled:true,title:"HOW NETWORK FILTERS WORK",description:"Patterns hide matching requests from the network event list. Each pattern has a match mode you can toggle on its badge: CONTAINS hides any URL containing the text; EXACT hides only an exact path/host/url match.",examples:["\u2022 example.com (CONTAINS) \u2192 any request whose URL contains example.com","\u2022 example.com (EXACT) \u2192 only requests served by that exact host","\u2022 /v1 (CONTAINS) \u2192 any URL containing /v1 (e.g. /v1, /v1/users)","\u2022 /v1 (EXACT) \u2192 only requests whose pathname is exactly /v1"],icon:jn},onFilterChange:I,onPatternAdd:C,onPatternToggle:n,activePatterns:E,renderPatternMeta:S}),[E,w,I,C,n,q,S,z]);return Ye(Bl,{...H})}var Ae=fe.create({modeBadge:{paddingHorizontal:8,paddingVertical:3,borderRadius:6,borderWidth:1},modeBadgeText:{fontSize:9,fontFamily:mo,fontWeight:"700",letterSpacing:.5},modeToggleRow:{flexDirection:"row",alignItems:"center",gap:8,marginBottom:8},modeToggleLabel:{fontSize:11,fontWeight:"600",color:Ee.color.textSecondary,fontFamily:mo,letterSpacing:.3},modeToggleGroup:{flexDirection:"row",gap:6,flex:1},modeToggleButton:{flex:1,paddingVertical:6,paddingHorizontal:10,borderRadius:8,borderWidth:1,borderColor:Ee.color.border,backgroundColor:Ee.color.buttonSurface,alignItems:"center"},modeToggleButtonActive:{borderColor:Ee.color.accentBorderStrong,backgroundColor:Ee.color.accentSoft},modeToggleButtonText:{fontSize:11,fontWeight:"700",color:Ee.color.textSecondary,fontFamily:mo,letterSpacing:.3},modeToggleButtonTextActive:{color:Ee.color.accent},modeToggleButtonHint:{fontSize:9,color:Ee.color.textTertiary,marginTop:1}});D();import{TickProvider as bo}from"@buoy-gg/shared-ui/web";import{useTick as Wl}from"@buoy-gg/shared-ui/web";function vo(){return Wl()??Date.now()}D();ce();import{useState as Yt,useEffect as Un,useMemo as Vl,memo as Ul}from"react";import{Clock as So,Upload as _n,Download as Xn,AlertCircle as _l,ChevronDown as Jn,ChevronUp as Gn,Lock as Xl,Unlock as Jl,FileJson as Rr,Filter as Gl,Globe as Kl,Link as Yl,Copy as Kn,FlaskConical as Zl,InlineCopyButton as Yn,macOSColors as kr,night as B,useFeatureGate as Ql,UpgradeModal as ed,monoFont as qt}from"@buoy-gg/shared-ui/web";D();import{formatBytes as Ze,formatDuration as Er,formatHttpStatus as Zn,getMethodColor as Ip}from"@buoy-gg/shared-ui/web";import{formatRelativeTime as td}from"@buoy-gg/shared-ui/web";import{DataViewer as Zt}from"@buoy-gg/shared-ui/web/dataViewer";D();function xo(e,t=30){if(e==null)return null;if(typeof e=="boolean"||typeof e=="number")return String(e);if(typeof e=="string")return e.length>t?e.substring(0,t-1)+"\u2026":e;if(Array.isArray(e))return e.length===0?null:e.length===1?xo(e[0],t):`${e.length} items`;if(typeof e=="object"){let r=Object.entries(e);if(r.length===0)return null;for(let[o,n]of r){let i=xo(n,t);if(i)return i}return null}return null}function rd(e,t=3){if(!e||typeof e!="object")return null;let r=[];for(let[o,n]of Object.entries(e)){let i=xo(n);if(i&&r.push(i),r.length>=t)break}return r.length>0?r:null}function Qn(e,t){let r=rd(t);return!r||r.length===0?e:[e,...r].join(" \u203A ")}function ei(e,t){if(!e||typeof e!="object")return false;for(let r of Object.values(e))if(wo(r,t))return true;return false}function wo(e,t){return typeof e=="string"?e.toLowerCase().includes(t):typeof e=="number"||typeof e=="boolean"?String(e).includes(t):Array.isArray(e)?e.some(r=>wo(r,t)):typeof e=="object"&&e!==null?Object.values(e).some(r=>wo(r,t)):false}D();import{createContext as od,useContext as nd}from"react";import{jsx as id}from"react/jsx-runtime";var ti=od(null);function sd({resolver:e,children:t}){return id(ti.Provider,{value:e,children:t})}function ad(){return nd(ti)}import{Fragment as Co,jsx as x,jsxs as X}from"react/jsx-runtime";var Pr=B.color.accent,ld=new Set,dd=()=>{},ud=({timings:e,total:t})=>{let r=Math.max(1,t),o=[{label:"Waiting (TTFB)",hint:"incl. queue, DNS, TLS",value:e.ttfb,color:kr.semantic.warning},{label:"Content download",hint:void 0,value:e.download,color:kr.semantic.success}];return x(p,{style:R.phaseList,children:o.map(n=>X(p,{style:R.phaseRow,children:[X(p,{style:R.phaseLabelGroup,children:[x(y,{style:R.phaseLabel,children:n.label}),n.hint?x(y,{style:R.phaseHint,children:n.hint}):null]}),x(p,{style:R.phaseTrack,children:x(p,{style:[R.phaseBar,{backgroundColor:n.color,width:`${Math.min(100,Math.max(1,n.value/r*100))}%`}]})}),x(y,{style:R.phaseValue,children:Er(n.value)})]},n.label))})},ri=()=>x(p,{style:R.bodyDeferred}),bt=({title:e,icon:t,children:r,defaultOpen:o=false,count:n})=>{let[i,s]=Yt(o);return X(p,{style:R.collapsibleSection,children:[X(N,{style:R.collapsibleHeader,onPress:()=>s(!i),testID:`buoy-network-section-${e.toLowerCase().replace(/\s+/g,"-")}`,accessibilityRole:"button",accessibilityLabel:e,children:[X(p,{style:R.collapsibleTitle,children:[t,x(y,{style:R.collapsibleTitleText,children:e}),n!==void 0?x(y,{style:R.collapsibleCount,children:n}):null]}),i?x(Gn,{size:16,color:B.color.textSecondary}):x(Jn,{size:16,color:B.color.textSecondary})]}),i?x(p,{style:R.collapsibleContent,children:r}):null]})},cd=({url:e,requestData:t,operationName:r,graphqlVariables:o,requestClient:n,isPro:i=false,onUpgradePress:s})=>{let l=E=>{try{let C=new URL(E),S=String(C.protocol||""),q=String(C.host||""),g=S==="https:",T=String(C.pathname||"");if(n==="graphql"&&r){let P=Qn(r,o);T=`${T} (${P})`}else r&&(T=`${T} (${r})`);let k={},f=C.searchParams;return f&&typeof f.forEach=="function"&&f.forEach((P,z)=>{k[z]=P}),{protocol:S.replace(":",""),host:q,pathname:T,params:Object.keys(k).length>0?k:null,isSecure:g}}catch{return{protocol:"",host:e,pathname:"",params:null,isSecure:false}}},a=Vl(()=>l(e),[e,n,r,o]),[d,b]=Yt(false);return X(p,{style:R.urlBreakdown,children:[X(p,{style:R.urlRow,children:[a.isSecure?x(Xl,{size:12,color:kr.semantic.success}):x(Jl,{size:12,color:kr.semantic.warning}),x(y,{style:R.urlDomain,children:a.host}),X(y,{style:R.urlProtocol,children:["(",a.protocol.toUpperCase(),")"]}),i?x(Yn,{value:e,buttonStyle:R.copyButton}):x(N,{style:R.copyButton,onPress:s,activeOpacity:.7,children:x(Kn,{size:14,color:B.color.textSecondary})})]}),x(p,{style:R.urlPathRow,children:X(y,{style:R.urlPath,numberOfLines:2,children:[a.pathname,a.params?X(y,{style:R.urlQueryString,children:["?",new URLSearchParams(a.params).toString()]}):null]})}),a.params?X(p,{style:R.queryParamsCollapsible,children:[X(N,{style:R.queryParamsToggle,onPress:()=>b(!d),activeOpacity:.7,children:[x(y,{style:R.queryParamsToggleText,children:"Query Parameters"}),x(y,{style:R.collapsibleCount,children:Object.keys(a.params).length}),d?x(Gn,{size:14,color:B.color.textSecondary}):x(Jn,{size:14,color:B.color.textSecondary})]}),d?x(Zt,{title:"",data:a.params,showTypeFilter:true,rawMode:true,initialExpanded:true}):null]}):null]})},oi=Ul(function({event:e,ignoredPatterns:t=ld,onTogglePattern:r=dd,showBodies:o=true}){let n=e.status?Zn(e.status):null,i=!e.status&&!e.error,{isPro:s}=Ql(),[l,a]=Yt(false);Un(()=>{l&&s&&a(false)},[l,s]);let d=ad(),b=e.requestData===void 0&&(e.requestBodyOmitted===true||(e.requestSize??0)>0),E=e.responseData===void 0&&(e.responseBodyOmitted===true||(e.responseSize??0)>0),C=e.headersOmitted===true,[S,q]=Yt(null),[g,T]=Yt(false);Un(()=>{if(q(null),!d||!b&&!E&&!C){T(false);return}let w=false;return T(true),d(e.id).then(H=>{w||q(H)}).catch(()=>{}).finally(()=>{w||T(false)}),()=>{w=true}},[e.id,d,b,E,C]);let k=e.requestData??S?.requestData??void 0,f=e.responseData??S?.responseData??void 0,P=(C?S?.requestHeaders:void 0)??e.requestHeaders,z=(C?S?.responseHeaders:void 0)??e.responseHeaders,I=()=>{let w={method:e.method,url:e.url,status:e.status,statusText:e.statusText,timestamp:new Date(e.timestamp).toISOString(),duration:e.duration?`${e.duration}ms`:"N/A",requestHeaders:P,requestData:k,responseHeaders:z,responseData:f,requestSize:e.requestSize?Ze(e.requestSize):"N/A",responseSize:e.responseSize?Ze(e.responseSize):"N/A",error:e.error,client:e.requestClient};return`# Network Request Details
8
+ ... [truncated, ${this.formatBytes(s)} omitted]`,size:n,truncated:true}}try{return{body:JSON.parse(o),size:n,truncated:false}}catch{return{body:o,size:n,truncated:false}}}catch{return{body:"~~~ unable to read body ~~~",size:0,truncated:false}}}formatBytes(e){if(e===0)return"0 B";let t=1024,r=["B","KB","MB","GB"],o=Math.floor(Math.log(e)/Math.log(t));return`${Math.round(e/Math.pow(t,o)*100)/100} ${r[o]}`}handleXHRResponse(e,t,r,o,n,i,s,l,a=false,d="xhr",c,x){let T=l?ue()-l:0,S=e._buoyTtfb,q=S===void 0?void 0:{ttfb:S,download:Math.max(0,T-S)};if(a||e.status===0){this.emit({type:"error",timestamp:new Date,duration:T,request:{id:t||"unknown",url:r,method:o,headers:n,data:i,params:s||void 0,client:d},error:{message:a?"Request failed":"Network error or request aborted"},override:c,condition:x});return}let m,k=0;try{let g=e.response;if(e.responseType==="json"&&g)m=g,k=JSON.stringify(g).length;else if(e.responseType===""||e.responseType==="text"){if(e.responseText){k=e.responseText.length;try{m=JSON.parse(e.responseText)}catch{m=e.responseText}}}else if(e.responseType==="arraybuffer")if(g)try{let I=new TextDecoder("utf-8").decode(g);k=I.length;try{m=JSON.parse(I)}catch{m=I}}catch{m=`[arraybuffer response - ${g.byteLength||0} bytes]`,k=g.byteLength||0}else m="[arraybuffer response - no data]",k=0;else if(e.responseType==="blob")if(g instanceof Blob)m=`[blob response - ${g.size} bytes, type: ${g.type||"unknown"}]`,k=g.size;else if(g)try{m=typeof g=="string"?JSON.parse(g):g,k=JSON.stringify(m).length}catch{m="[blob response - unable to parse]",k=0}else m="[blob response - no data]",k=0;else if(g)if(typeof g=="string"){m=g,k=g.length;try{m=JSON.parse(g)}catch{}}else typeof g=="object"?(m=g,k=JSON.stringify(g).length):(m=String(g),k=String(g).length)}catch{m="~~~ unable to read body ~~~"}let E={};try{let g=e.getAllResponseHeaders();g&&g.split(`\r
9
+ `).forEach(I=>{if(I){let z=I.indexOf(": ");if(z>0){let P=I.substring(0,z).toLowerCase(),C=I.substring(z+2);E[P]=C}}})}catch{}hl(e.status)==="response"?this.emit({type:"response",timestamp:new Date,duration:T,timings:q,request:{id:t||"unknown",url:r,method:o,headers:n,data:i,params:s||void 0,client:d},response:{status:e.status,statusText:pl(e.status,e.statusText),headers:E,body:m,size:k},override:c,condition:x}):this.emit({type:"error",timestamp:new Date,duration:T,request:{id:t||"unknown",url:r,method:o,headers:n,data:i,params:s||void 0,client:d},response:{status:e.status,statusText:e.statusText,headers:E,body:m,size:k},error:{message:"Network Error"},override:c,condition:x})}isFetchInterceptionLive(){return globalThis.fetch[Hn]===true}isXhrInterceptionLive(){return XMLHttpRequest.prototype.send[Mn]===true}isInterceptionLive(){return this.isFetchInterceptionLive()&&this.isXhrInterceptionLive()}startListening(){let e=this.isListening&&this.isFetchInterceptionLive(),t=this.isListening&&this.isXhrInterceptionLive();e&&t||(e||this.installFetchInterceptor(),t||this.installXhrInterceptor(),this.isListening=true)}installFetchInterceptor(){let e=this,t=globalThis.fetch.bind(globalThis);this.originalFetch=globalThis.fetch;let r=++this.fetchGeneration,o=async(n,i)=>{let s=pr(typeof n=="string"?n:n instanceof URL?n.href:n.url);if(r!==e.fetchGeneration)return t(n,i);if(i?.__buoyInternal||e.shouldIgnoreUrl(s)){let P=pt;pt=true;try{return t(n,i)}finally{pt=P}}let l=ue(),a=fr("fetch"),d=typeof n=="object"&&"method"in n?n:void 0,c=i?.method??d?.method??"GET",x=i?.signal!==void 0?i.signal:d?.signal;yr(x);let T=Wn(s),{url:S,params:q}=e.parseUrl(s),m={},k=i?.headers??d?.headers;k&&(k instanceof Headers?k.forEach((P,C)=>{m[C]=P}):Array.isArray(k)?k.forEach(([P,C])=>{m[P]=C}):m={...k}),Object.assign(m,An(s));let E;if(i?.body)if(typeof i.body=="string")try{E=JSON.parse(i.body)}catch{E=i.body}else E=i.body;let g=m["X-Request-Client"]||m["x-request-client"]||"fetch",I=T?.profile!=="offline"&&ll()?zn(s,c,m):null,z=I?qn(I):void 0;if(e.emit({type:"request",timestamp:new Date,request:{id:a||"unknown",url:S,method:c,headers:m,data:E,params:q||void 0,client:g},override:z,condition:T}),i?.body===void 0&&d?.body&&!d.bodyUsed)try{let P=d.clone();e.readStreamedBody(P).then(({body:C})=>{try{E=JSON.parse(C)}catch{E=C}e.emit({type:"request-body",timestamp:new Date,request:{id:a||"unknown",url:S,method:c,data:E,client:g}})}).catch(()=>{})}catch{}try{if((T||I)&&await Xa((T?.delayMs??0)+(I?.delayMs??0),x),yr(x),T?.profile==="offline")throw new TypeError("Network request failed (Buoy Offline)");if(I?.kind==="fail")throw ul(I);let P;if(I?.kind==="respond")P=dl(s,I);else{let ee=pt;pt=true;let Z;try{Z=t(n,i)}finally{pt=ee}P=await Z}let C=ue()-l,H=typeof P.body?.getReader=="function"||jn(P.headers?.get?.("content-type")),v=P.clone(),{body:p,size:h}=H?{body:Nn,size:0}:await e.processResponseBody(v),u=ue()-l,y=Math.max(0,u-C),D=y>0?{ttfb:C,download:y}:void 0,re={};if(P.headers.forEach((ee,Z)=>{re[Z.toLowerCase()]=ee}),e.emit({type:"response",timestamp:new Date,duration:u,timings:D,request:{id:a||"unknown",url:S,method:c,headers:m,data:E,params:q||void 0,client:g},response:{status:P.status,statusText:P.statusText,headers:re,body:p,size:h},override:z,condition:T}),H){let ee=P.headers?.get?.("content-type");e.readStreamedBody(v,jn(ee)?void 0:1024*1024).then(Z=>{let J=Z.body;if(ee?.includes("json"))try{J=JSON.parse(Z.body)}catch{}e.emit({type:"response",timestamp:new Date,duration:ue()-l,timings:D,request:{id:a||"unknown",url:S,method:c,headers:m,data:E,params:q||void 0,client:g},response:{status:P.status,statusText:P.statusText,headers:re,body:J,size:Z.size},override:z,condition:T})}).catch(()=>{})}return P}catch(P){let C=ue()-l;throw e.emit({type:"error",timestamp:new Date,duration:C,request:{id:a||"unknown",url:S,method:c,headers:m,data:E,params:q||void 0,client:g},error:{message:P instanceof Error?P.message:"Network error",stack:P instanceof Error?P.stack:void 0},override:z,condition:T}),P}};o[Hn]=true,this.patchedFetch=o,globalThis.fetch=this.patchedFetch}installXhrInterceptor(){let e=this,t=XMLHttpRequest.prototype.open,r=XMLHttpRequest.prototype.send,o=XMLHttpRequest.prototype.setRequestHeader;this.originalXHROpen=t,this.originalXHRSend=r,this.originalXHRSetRequestHeader=o;let n=++this.xhrGeneration,i=new WeakMap,s=function(d,c,x,T,S){let q=t.call(this,d,c,x??true,T,S);if(n===e.xhrGeneration){i.get(this)?.();let m=this;m._buoyRequestId=fr("xhr"),m._method=d,m._url=pr(c),m._buoyStartTime=ue(),m._requestHeaders={}}return q},l=function(d,c){let x=this;return n===e.xhrGeneration&&x._requestHeaders&&(x._requestHeaders[d]=c),o.call(this,d,c)},a=function(d){if(n!==e.xhrGeneration||pt)return r.call(this,d);if(Wa(this))throw new DOMException("The request has already been sent.","InvalidStateError");if(this.readyState!==1||this._sent)return r.call(this,d);let c=this,x=c._buoyRequestId,T=c._method||"GET",S=c._url||"",q=ue();c._buoyStartTime=q,c._buoyTtfb=void 0;let m=c._requestHeaders||{};if(Object.assign(m,An(S)),e.shouldIgnoreUrl(S))return r.call(this,d);let{url:k,params:E}=e.parseUrl(S),g;if(d)if(typeof d=="string")try{g=JSON.parse(d)}catch{g=d}else g=d;let I=m["X-Request-Client"]||m["x-request-client"],z=m.Accept||m.accept||"",P=z.includes("application/json")&&z.includes("text/plain")&&z.includes("*/*")&&!yl(),C=I||(P?"axios":"xhr"),H=Wn(S),v=H?.profile==="offline"?null:zn(S,T,m),p=v?qn(v):void 0;e.emit({type:"request",timestamp:new Date,request:{id:x||"unknown",url:k,method:T,headers:m,data:g,params:E||void 0,client:C},override:p,condition:H});let h=false,u=(J=false)=>{h||(h=true,e.handleXHRResponse(this,x||"unknown",k,T,m,g,E,q||0,J,C,p,H),y())},y=()=>{i.delete(this),this.removeEventListener("load",D),this.removeEventListener("error",re),this.removeEventListener("abort",ee),this.removeEventListener("readystatechange",Z)};i.set(this,y);let D=()=>{u(false)},re=()=>{u(true)},ee=()=>{u(true)},Z=()=>{if(this.readyState===2){let J=this;J._buoyTtfb===void 0&&J._buoyStartTime&&(J._buoyTtfb=ue()-J._buoyStartTime)}this.readyState===4&&!h&&u(false)};if(this.addEventListener("load",D),this.addEventListener("error",re),this.addEventListener("abort",ee),this.addEventListener("readystatechange",Z),H){_a(this,S,H,v,()=>r.call(this,d));return}if(!(v&&Pn(this,S,v,()=>r.call(this,d))))return r.call(this,d)};a[Mn]=true,this.patchedXHROpen=s,this.patchedXHRSend=a,this.patchedXHRSetRequestHeader=l,XMLHttpRequest.prototype.open=this.patchedXHROpen,XMLHttpRequest.prototype.send=this.patchedXHRSend,XMLHttpRequest.prototype.setRequestHeader=this.patchedXHRSetRequestHeader}stopListening(){this.isListening&&(this.fetchGeneration++,this.xhrGeneration++,this.patchedFetch&&globalThis.fetch===this.patchedFetch&&(globalThis.fetch=this.originalFetch),this.patchedXHROpen&&XMLHttpRequest.prototype.open===this.patchedXHROpen&&(XMLHttpRequest.prototype.open=this.originalXHROpen),this.patchedXHRSend&&XMLHttpRequest.prototype.send===this.patchedXHRSend&&(XMLHttpRequest.prototype.send=this.originalXHRSend),this.patchedXHRSetRequestHeader&&XMLHttpRequest.prototype.setRequestHeader===this.patchedXHRSetRequestHeader&&(XMLHttpRequest.prototype.setRequestHeader=this.originalXHRSetRequestHeader),this.patchedFetch=null,this.patchedXHROpen=null,this.patchedXHRSend=null,this.patchedXHRSetRequestHeader=null,this.isListening=false)}adoptEarlyRequests(){let e=globalThis.__BUOY_EARLY_NETWORK__;if(e?.version===1)for(let t of e.adopt())try{t.kind==="fetch"?this.adoptEarlyFetch(t):this.adoptEarlyXhr(t)}catch{}}adoptEarlyFetch(e){let{input:t,init:r}=e,o=typeof t=="object"&&"method"in t?t:void 0,n=pr(typeof t=="string"?t:t instanceof URL?t.href:t.url);if(this.shouldIgnoreUrl(n))return;let i=fr("fetch"),s=r?.method??o?.method??"GET",{url:l,params:a}=this.parseUrl(n),d=gl(r?.headers??o?.headers),c=r?.body;if(typeof c=="string")try{c=JSON.parse(c)}catch{}let x=d["X-Request-Client"]||d["x-request-client"]||"fetch",T=()=>({id:i,url:l,method:s,headers:d,data:c,params:a||void 0,client:x});this.emit({type:"request",timestamp:new Date(e.start),request:T()}),e.requestCopy&&this.readStreamedBody(e.requestCopy).then(({body:S})=>{try{c=JSON.parse(S)}catch{c=S}this.emit({type:"request-body",timestamp:new Date,request:{id:i,url:l,method:s,data:c,client:x}})}).catch(()=>{}),e.settled.then(async({response:S,clone:q,error:m,headersAt:k})=>{if(!S){this.emit({type:"error",timestamp:new Date,duration:k-e.start,request:T(),error:{message:m instanceof Error?m.message:"Network error",stack:m instanceof Error?m.stack:void 0}});return}let{body:E,size:g}=q?await this.processResponseBody(q):{body:Nn,size:0},I=Math.max(0,ue()-e.start),z=k-e.start,P={};S.headers.forEach((C,H)=>{P[H.toLowerCase()]=C}),this.emit({type:"response",timestamp:new Date,duration:I,timings:I>z?{ttfb:z,download:I-z}:void 0,request:T(),response:{status:S.status,statusText:S.statusText,headers:P,body:E,size:g}})})}adoptEarlyXhr(e){let t=pr(e.url);if(this.shouldIgnoreUrl(t))return;let r=fr("xhr"),o=e.method.toUpperCase(),{url:n,params:i}=this.parseUrl(t),s=e.body;if(typeof s=="string")try{s=JSON.parse(s)}catch{}let l=e.headers["X-Request-Client"]||e.headers["x-request-client"]||"xhr";this.emit({type:"request",timestamp:new Date(e.start),request:{id:r,url:n,method:o,headers:e.headers,data:s,params:i||void 0,client:l}});let a=e.xhr,d=()=>{let c=(a._buoyEarlyEnd??ue())-e.start;this.handleXHRResponse(a,r,n,o,e.headers,s,i,ue()-c,false,l)};a.readyState===4?d():a.addEventListener("loadend",d,{once:true})}addListener(e){return this.listeners.push(e),()=>{let t=this.listeners.indexOf(e);t>-1&&this.listeners.splice(t,1)}}removeAllListeners(){this.listeners=[]}get isActive(){return this.isListening}get listenerCount(){return this.listeners.length}},ot=null,yo=()=>(ot||(ot=new Sl),ot),vr=yo,Fn=()=>yo().startListening(),Gt=()=>ot?.stopListening(),Kt=e=>yo().addListener(e),xl=()=>ot?.removeAllListeners(),$n=()=>ot?.isActive??false,ft=()=>ot?.listenerCount??0,wl=()=>ot?.isInterceptionLive()??false;var Yt={normal:{label:"Normal",delayMs:0},offline:{label:"Offline (requests)",delayMs:0},slow:{label:"Slow (+500 ms)",delayMs:500},verySlow:{label:"Very slow (+2000 ms)",delayMs:2e3}},bo=`${Date.now()}-${Math.random().toString(36).slice(2)}`,gt="normal",Sr,xr=new Set,mt=()=>typeof me<"u"&&me&&vn(),yt=()=>gt,Zt=e=>(xr.add(e),()=>{xr.delete(e)});function wr(e){if(typeof e!="string"||!Object.prototype.hasOwnProperty.call(Yt,e))throw new Error("Choose normal, offline, slow, or verySlow.");if(e!=="normal"&&!mt())throw new Error("Network conditions require an admitted account and a development build.");return e===gt||(e!=="normal"&&!Sr?(Fn(),Sr=Kt(()=>{})):e==="normal"&&(Sr?.(),Sr=void 0,ft()===0&&Gt()),gt=e,xr.forEach(t=>t())),gt}function Wn(e){if(!(gt==="normal"||!mt()||!/^https?:\/\//i.test(e)))return Object.freeze({profile:gt,delayMs:Yt[gt].delayMs})}Aa(()=>{vn()||wr("normal"),xr.forEach(e=>e())});import{jsx as Vn,jsxs as Cl}from"react/jsx-runtime";function Tl({size:e}){let t=Da(Zt,yt,yt);return Cl(f,{accessibilityLabel:t==="normal"?"Network":`Network: ${Yt[t].label}`,children:[Vn(za,{size:e}),t!=="normal"&&Vn(b,{testID:"buoy-network-condition-indicator",style:{position:"absolute",top:-6,right:-8,color:"#FFCC66",fontSize:10,fontWeight:"700"},children:t==="offline"?"OFF":`+${Yt[t].delayMs}`})]})}import{createToolFactory as kl,defineToolPreset as Rl}from"@buoy-gg/shared-ui/web";O();O();ce();import{useEffect as Un,useRef as vo,useState as _n,useSyncExternalStore as So}from"react";import{FloatingTool as El,night as ke,openFloatingTool as Il,persistentStorage as Pl,registerPersistentFloatingTool as Ll}from"@buoy-gg/shared-ui/web";import{jsx as Re,jsxs as Xn}from"react/jsx-runtime";function Bl(){let e,t=new Set;return{getSnapshot:()=>e,subscribe:r=>(t.add(r),()=>{t.delete(r)}),update(r){e=r,t.forEach(o=>o())}}}var ql=()=>()=>{},Jn=()=>{},Cr=[{id:"normal",label:"No throttling",detail:"No added delay"},{id:"slow",label:"Slow",detail:"+500 ms before sending"},{id:"verySlow",label:"Very slow",detail:"+2 seconds before sending"},{id:"offline",label:"Offline",detail:"New requests fail"}],Ol={id:"network-throttling",render:e=>Re(Kn,{...e})};function Gn(){return typeof me>"u"||!me?()=>{}:Ll(Ol,Pl)}typeof me<"u"&&me&&typeof navigator<"u"&&navigator.product==="ReactNative"&&Gn();function Dl(e){Il({id:"network-throttling",render:t=>Re(Kn,{...t,source:e})})}function Kn({id:e,revealToken:t,dismiss:r,source:o}){let n=So(Zt,yt,yt),i=So(Zt,mt,mt),s=So(o?.subscribe??ql,o?.getSnapshot??Jn,Jn),l=o?s?.profile??null:n,a=o?s?.available===true:i,[d,c]=_n(false),[x,T]=_n(),S=vo(false),q=vo(0),m=vo(true),{width:k}=dn();Un(()=>(m.current=true,()=>{m.current=false}),[]),Un(()=>{q.current+=1,S.current=false,c(false),T(void 0)},[o,s?.targetId]);let E=l!==null&&l!=="normal",g=l??"normal",I=Cr.find(p=>p.id===g),z=Cr[(Cr.findIndex(p=>p.id===g)+1)%Cr.length],P=!a||g==="offline"?0:g==="verySlow"?1:g==="slow"?2:4,C=d?"Applying\u2026":a?g==="normal"?"0 ms":g==="slow"?"+500 ms":g==="verySlow"?"+2000 ms":"Blocked":"Unavailable";async function H(p,h=false){if(S.current)return;let u=++q.current;S.current=true,c(true),T(void 0);let y=o?.getSnapshot();try{if(o){if(!y?.available)throw new Error("Device unavailable. Open Network again to reconnect these controls.");await y.onChange(p)}else wr(p);m.current&&q.current===u&&h&&r()}catch(D){m.current&&q.current===u&&T(D instanceof Error?D.message:String(D))}finally{q.current===u&&(S.current=false,m.current&&c(false))}}let v=x?Re(f,{style:Be.menu,children:Re(b,{accessibilityRole:"alert",style:Be.error,children:x})}):void 0;return Re(El,{id:e,revealToken:t,variant:"strip",dragFromSurface:true,accessibilityLabel:`Move or hide network throttling. ${E?"Active":"Off"}`,accessory:v,children:Xn(f,{style:[Be.row,{width:Math.max(220,Math.min(292,k-64))}],children:[Re(N,{testID:"throttling-cycle",accessibilityRole:"button",accessibilityLabel:`Network: ${I.label}. Switch to ${z.label}`,accessibilityState:{disabled:d||!a},disabled:d||!a,onPress:()=>void H(z.id),style:Be.signalButton,children:d?Re(ho,{size:"small",color:ke.color.accent}):Xn(f,{testID:`throttling-signal-${g}`,style:Be.signal,children:[[7,12,18,24].map((p,h)=>Re(f,{style:{width:4,height:p,borderRadius:2,backgroundColor:h<P?g==="offline"?ke.color.danger:ke.color.accent:ke.color.fillTertiary}},p)),g==="offline"&&Re(f,{style:Be.slash})]})}),Re(f,{style:Be.profile,children:Re(b,{testID:"throttling-profile",accessibilityLabel:`Connection profile: ${I.label}`,accessibilityLiveRegion:"polite",numberOfLines:1,style:Be.profileLabel,children:I.label})}),Re(b,{testID:"throttling-status",numberOfLines:1,accessibilityLiveRegion:"polite",style:Be.status,children:C}),Re(f,{style:Be.separator}),Re(N,{testID:"throttling-close",accessibilityRole:"button",accessibilityLabel:"Close and turn off throttling",disabled:d,accessibilityState:{disabled:d},onPress:()=>{l==="normal"?r():H("normal",true)},style:[Be.action,d&&Be.disabled],children:Re(b,{style:Be.actionText,children:"Close"})})]})})}var Be=fe.create({row:{flexDirection:"row",alignItems:"center",gap:6,paddingVertical:4,minHeight:48},signalButton:{width:36,minHeight:44,alignItems:"center",justifyContent:"center"},signal:{flexDirection:"row",alignItems:"flex-end",gap:3,height:24},slash:{position:"absolute",width:30,height:2,backgroundColor:ke.color.danger,top:11,left:-2,transform:[{rotate:"-45deg"}]},separator:{height:20,width:1,backgroundColor:ke.color.separator,marginHorizontal:2},status:{color:ke.color.textSecondary,fontSize:10,lineHeight:15,flexShrink:1},profile:{flex:1,flexDirection:"row",alignItems:"center",gap:6,minHeight:44},profileLabel:{color:ke.color.text,fontSize:13,fontWeight:"500",flexShrink:1},action:{minHeight:36,minWidth:52,borderRadius:ke.radius.input,borderWidth:1,borderColor:ke.color.accentBorderStrong,alignItems:"center",justifyContent:"center",paddingHorizontal:10},actionText:{color:ke.color.accent,fontSize:12,fontWeight:"600"},disabled:{opacity:.4},menu:{marginVertical:8,padding:6,borderRadius:ke.radius.card,borderWidth:1,borderColor:ke.color.separator,backgroundColor:ke.color.surface,shadowColor:"#000",shadowOffset:{width:0,height:6},shadowOpacity:.25,shadowRadius:16,elevation:8},error:{color:ke.color.danger,fontSize:12,lineHeight:18,padding:10}});ce();import{useState as ye,useRef as Tr,useEffect as bt,useCallback as xo}from"react";import{Search as zl,Wifi as Al,Filter as Hl,Bookmark as Ml,JsModal as Nl,ModalHeader as ge,devToolsStorageKeys as kr,macOSColors as jl,night as Ke,persistentStorage as Yn,NightSegmented as Fl,useFeatureGate as $l,UpgradeModal as Wl,PowerToggleButton as Vl,useIgnoredPatterns as Ul,windowDragProps as _l}from"@buoy-gg/shared-ui/web";O();ce();import{CheckCircle as Xl,Clock as Jl,DynamicFilterView as Gl,Film as Kl,FileJson as Yl,FileText as Zl,Filter as Zn,Globe as Qn,Image as Ql,macOSColors as be,night as Ee,Music as ed,XCircle as td,monoFont as wo}from"@buoy-gg/shared-ui/web";import{useCallback as Rr,useMemo as $e,useState as rd}from"react";import{jsx as Ye,jsxs as ei}from"react/jsx-runtime";var od=()=>false;function Co(e){let t=e.responseHeaders||e.requestHeaders,r=t?.["content-type"]||t?.["Content-Type"]||"";return r.includes("json")?{type:"JSON",color:be.semantic.info}:r.includes("xml")?{type:"XML",color:be.semantic.success}:r.includes("html")?{type:"HTML",color:be.semantic.warning}:r.includes("text")?{type:"TEXT",color:be.semantic.success}:r.includes("image")?{type:"IMAGE",color:be.semantic.error}:r.includes("video")?{type:"VIDEO",color:be.semantic.error}:r.includes("audio")?{type:"AUDIO",color:be.semantic.debug}:r.includes("form")?{type:"FORM",color:be.semantic.info}:{type:"OTHER",color:Ee.color.textTertiary}}function nd(e){switch(e){case"JSON":return Yl;case"HTML":case"XML":case"TEXT":return Zl;case"IMAGE":return Ql;case"VIDEO":return Kl;case"AUDIO":return ed;default:return Qn}}function id(e){switch(e){case"GET":return be.semantic.success;case"POST":return be.semantic.info;case"PUT":return be.semantic.warning;case"DELETE":return be.semantic.error;case"PATCH":return be.semantic.success;default:return Ee.color.textTertiary}}function sd({events:e,filter:t,onFilterChange:r,ignoredPatterns:o=[],onRemovePattern:n=()=>{},isTeamPattern:i=od,onAddPattern:s=()=>{},onTogglePatternMode:l=()=>{}}){let[a,d]=rd("contains"),c=$e(()=>{let v=new Map;for(let p of o)v.set(p.value,p.mode);return v},[o]),x=$e(()=>new Set(o.map(v=>v.value)),[o]),T=Rr(v=>{s({value:v,mode:a})},[s,a]),S=Rr(v=>{if(i(v)){let y=Ee.color.accent;return Ye(f,{accessibilityLabel:"Set by your team on buoy.gg",style:[Ae.modeBadge,{borderColor:`${y}60`,backgroundColor:`${y}15`}],children:Ye(b,{style:[Ae.modeBadgeText,{color:y}],children:"TEAM"})})}let p=c.get(v)??"contains",h=p==="exact",u=h?Ee.color.warning:Ee.color.info;return Ye(N,{accessibilityRole:"button",accessibilityLabel:`Match mode: ${p}. Tap to toggle.`,onPress:()=>l(v),style:[Ae.modeBadge,{borderColor:`${u}60`,backgroundColor:`${u}15`}],hitSlop:{top:6,bottom:6,left:6,right:6},children:Ye(b,{style:[Ae.modeBadgeText,{color:u}],children:h?"EXACT":"CONTAINS"})})},[c,l,i]),q=Rr(()=>{let v=[{label:"Contains",value:"contains",hint:"substring"},{label:"Exact",value:"exact",hint:"whole path/host/url"}];return ei(f,{style:Ae.modeToggleRow,children:[Ye(b,{style:Ae.modeToggleLabel,children:"Match:"}),Ye(f,{style:Ae.modeToggleGroup,children:v.map(p=>{let h=a===p.value;return ei(N,{onPress:()=>d(p.value),style:[Ae.modeToggleButton,h&&Ae.modeToggleButtonActive],accessibilityRole:"button",accessibilityState:{selected:h},children:[Ye(b,{style:[Ae.modeToggleButtonText,h&&Ae.modeToggleButtonTextActive],children:p.label}),Ye(b,{style:Ae.modeToggleButtonHint,children:p.hint})]},p.value)})})]})},[a]),m=$e(()=>{let v={all:e.length,success:0,error:0,pending:0};return e.forEach(p=>{if(p.error||p.status&&p.status>=400){v.error+=1;return}if(p.status&&p.status>=200&&p.status<300){v.success+=1;return}!p.status&&!p.error&&(v.pending+=1)}),v},[e]),k=$e(()=>e.reduce((v,p)=>(p.method&&(v[p.method]=(v[p.method]||0)+1),v),{}),[e]),E=$e(()=>e.reduce((v,p)=>{let{type:h}=Co(p);return v[h]=(v[h]||0)+1,v},{}),[e]),g=$e(()=>{let v=new Set;return e.forEach(p=>{if(p.host){v.add(p.host);return}try{if(p.url){let h=new URL(p.url),u=String(h.host||"");u&&v.add(u)}}catch{}}),Array.from(v).filter(p=>p&&p!=="").sort((p,h)=>p.localeCompare(h))},[e]),I=$e(()=>{let v=new Set;return e.forEach(p=>{if(p.url)try{let h=new URL(p.url),u=String(h.origin||""),y=String(h.pathname||""),D=`${u}${y}`;v.add(D)}catch{v.add(p.url)}}),Array.from(v).filter(p=>p&&p!=="").sort((p,h)=>p.localeCompare(h))},[e]),z=$e(()=>{let v=g.slice(0,30),p=I.slice(0,30);return[...v,...p]},[g,I]),P=Rr((v,p)=>{let[h]=v.split("::");if(h==="status"){r({...t,status:p==="all"?void 0:p});return}if(h==="method"){let u=String(p),y=t.method||[],D=y.includes(u)?y.filter(re=>re!==u):[u];r({...t,method:D.length>0?D:void 0});return}if(h==="contentType"){let u=String(p),y=t.contentType||[],D=y.includes(u)?y.filter(re=>re!==u):[u];r({...t,contentType:D.length>0?D:void 0})}},[t,r]),C=$e(()=>{let v=[];v.push({id:"status",title:"Status",type:"status",data:["all","success","error","pending"].map(u=>({id:`status::${u}`,label:u.charAt(0).toUpperCase()+u.slice(1),count:m[u],icon:u==="success"?Xl:u==="error"?td:u==="pending"?Jl:Qn,color:u==="success"?be.semantic.success:u==="error"?be.semantic.error:u==="pending"?be.semantic.warning:be.semantic.info,isActive:t.status===u||!t.status&&u==="all",value:u}))});let p=Object.entries(k);p.length>0&&v.push({id:"method",title:"Method",type:"method",data:p.map(([u,y])=>({id:`method::${u}`,label:u,count:y,color:id(u),isActive:t.method?.includes(u)??false,value:u}))});let h=Object.entries(E);return h.length>0&&v.push({id:"contentType",title:"Content Type",type:"contentType",data:h.map(([u,y])=>{let D=e.find(ee=>Co(ee).type===u),{color:re}=D?Co(D):{color:Ee.color.textTertiary};return{id:`contentType::${u}`,label:u,count:y,icon:nd(u),color:re,isActive:t.contentType?.includes(u)??false,value:u}})}),v},[E,e,t.contentType,t.method,t.status,k,m]),H=$e(()=>({sections:C,addFilterSection:{enabled:true,placeholder:"Enter domain or URL pattern...",title:"ACTIVE FILTERS",icon:Zn,renderExtra:q},availableItemsSection:{enabled:true,title:"AVAILABLE DOMAINS & URLS",emptyMessage:"No network events captured yet. Domains and URLs will appear here.",items:z},howItWorksSection:{enabled:true,title:"HOW NETWORK FILTERS WORK",description:"Patterns hide matching requests from the network event list. Each pattern has a match mode you can toggle on its badge: CONTAINS hides any URL containing the text; EXACT hides only an exact path/host/url match.",examples:["\u2022 example.com (CONTAINS) \u2192 any request whose URL contains example.com","\u2022 example.com (EXACT) \u2192 only requests served by that exact host","\u2022 /v1 (CONTAINS) \u2192 any URL containing /v1 (e.g. /v1, /v1/users)","\u2022 /v1 (EXACT) \u2192 only requests whose pathname is exactly /v1"],icon:Zn},onFilterChange:P,onPatternAdd:T,onPatternToggle:n,activePatterns:x,renderPatternMeta:S}),[x,C,P,T,n,q,S,z]);return Ye(Gl,{...H})}var Ae=fe.create({modeBadge:{paddingHorizontal:8,paddingVertical:3,borderRadius:6,borderWidth:1},modeBadgeText:{fontSize:9,fontFamily:wo,fontWeight:"700",letterSpacing:.5},modeToggleRow:{flexDirection:"row",alignItems:"center",gap:8,marginBottom:8},modeToggleLabel:{fontSize:11,fontWeight:"600",color:Ee.color.textSecondary,fontFamily:wo,letterSpacing:.3},modeToggleGroup:{flexDirection:"row",gap:6,flex:1},modeToggleButton:{flex:1,paddingVertical:6,paddingHorizontal:10,borderRadius:8,borderWidth:1,borderColor:Ee.color.border,backgroundColor:Ee.color.buttonSurface,alignItems:"center"},modeToggleButtonActive:{borderColor:Ee.color.accentBorderStrong,backgroundColor:Ee.color.accentSoft},modeToggleButtonText:{fontSize:11,fontWeight:"700",color:Ee.color.textSecondary,fontFamily:wo,letterSpacing:.3},modeToggleButtonTextActive:{color:Ee.color.accent},modeToggleButtonHint:{fontSize:9,color:Ee.color.textTertiary,marginTop:1}});O();import{TickProvider as To}from"@buoy-gg/shared-ui/web";import{useTick as ad}from"@buoy-gg/shared-ui/web";function ko(){return ad()??Date.now()}O();ce();import{useState as Qt,useEffect as ti,useMemo as ld,memo as dd}from"react";import{Clock as Ro,Upload as ri,Download as oi,AlertCircle as ud,ChevronDown as ni,ChevronUp as ii,Lock as cd,Unlock as hd,FileJson as Er,Filter as pd,Globe as fd,Link as gd,Copy as si,FlaskConical as md,InlineCopyButton as ai,macOSColors as Ir,night as B,useFeatureGate as yd,UpgradeModal as bd,monoFont as Dt}from"@buoy-gg/shared-ui/web";O();import{formatBytes as Ze,formatDuration as Pr,formatHttpStatus as li,getMethodColor as Zp}from"@buoy-gg/shared-ui/web";import{formatRelativeTime as vd}from"@buoy-gg/shared-ui/web";import{DataViewer as er}from"@buoy-gg/shared-ui/web/dataViewer";O();function Eo(e,t=30){if(e==null)return null;if(typeof e=="boolean"||typeof e=="number")return String(e);if(typeof e=="string")return e.length>t?e.substring(0,t-1)+"\u2026":e;if(Array.isArray(e))return e.length===0?null:e.length===1?Eo(e[0],t):`${e.length} items`;if(typeof e=="object"){let r=Object.entries(e);if(r.length===0)return null;for(let[o,n]of r){let i=Eo(n,t);if(i)return i}return null}return null}function Sd(e,t=3){if(!e||typeof e!="object")return null;let r=[];for(let[o,n]of Object.entries(e)){let i=Eo(n);if(i&&r.push(i),r.length>=t)break}return r.length>0?r:null}function di(e,t){let r=Sd(t);return!r||r.length===0?e:[e,...r].join(" \u203A ")}function ui(e,t){if(!e||typeof e!="object")return false;for(let r of Object.values(e))if(Io(r,t))return true;return false}function Io(e,t){return typeof e=="string"?e.toLowerCase().includes(t):typeof e=="number"||typeof e=="boolean"?String(e).includes(t):Array.isArray(e)?e.some(r=>Io(r,t)):typeof e=="object"&&e!==null?Object.values(e).some(r=>Io(r,t)):false}O();import{createContext as xd,useContext as wd}from"react";import{jsx as Cd}from"react/jsx-runtime";var ci=xd(null);function Td({resolver:e,children:t}){return Cd(ci.Provider,{value:e,children:t})}function kd(){return wd(ci)}import{Fragment as Po,jsx as w,jsxs as X}from"react/jsx-runtime";var Lr=B.color.accent,Rd=new Set,Ed=()=>{},Id=({timings:e,total:t})=>{let r=Math.max(1,t),o=[{label:"Waiting (TTFB)",hint:"incl. queue, DNS, TLS",value:e.ttfb,color:Ir.semantic.warning},{label:"Content download",hint:void 0,value:e.download,color:Ir.semantic.success}];return w(f,{style:R.phaseList,children:o.map(n=>X(f,{style:R.phaseRow,children:[X(f,{style:R.phaseLabelGroup,children:[w(b,{style:R.phaseLabel,children:n.label}),n.hint?w(b,{style:R.phaseHint,children:n.hint}):null]}),w(f,{style:R.phaseTrack,children:w(f,{style:[R.phaseBar,{backgroundColor:n.color,width:`${Math.min(100,Math.max(1,n.value/r*100))}%`}]})}),w(b,{style:R.phaseValue,children:Pr(n.value)})]},n.label))})},hi=()=>w(f,{style:R.bodyDeferred}),vt=({title:e,icon:t,children:r,defaultOpen:o=false,count:n})=>{let[i,s]=Qt(o);return X(f,{style:R.collapsibleSection,children:[X(N,{style:R.collapsibleHeader,onPress:()=>s(!i),testID:`buoy-network-section-${e.toLowerCase().replace(/\s+/g,"-")}`,accessibilityRole:"button",accessibilityLabel:e,children:[X(f,{style:R.collapsibleTitle,children:[t,w(b,{style:R.collapsibleTitleText,children:e}),n!==void 0?w(b,{style:R.collapsibleCount,children:n}):null]}),i?w(ii,{size:16,color:B.color.textSecondary}):w(ni,{size:16,color:B.color.textSecondary})]}),i?w(f,{style:R.collapsibleContent,children:r}):null]})},Pd=({url:e,requestData:t,operationName:r,graphqlVariables:o,requestClient:n,isPro:i=false,onUpgradePress:s})=>{let l=x=>{try{let T=new URL(x),S=String(T.protocol||""),q=String(T.host||""),m=S==="https:",k=String(T.pathname||"");if(n==="graphql"&&r){let I=di(r,o);k=`${k} (${I})`}else r&&(k=`${k} (${r})`);let E={},g=T.searchParams;return g&&typeof g.forEach=="function"&&g.forEach((I,z)=>{E[z]=I}),{protocol:S.replace(":",""),host:q,pathname:k,params:Object.keys(E).length>0?E:null,isSecure:m}}catch{return{protocol:"",host:e,pathname:"",params:null,isSecure:false}}},a=ld(()=>l(e),[e,n,r,o]),[d,c]=Qt(false);return X(f,{style:R.urlBreakdown,children:[X(f,{style:R.urlRow,children:[a.isSecure?w(cd,{size:12,color:Ir.semantic.success}):w(hd,{size:12,color:Ir.semantic.warning}),w(b,{style:R.urlDomain,children:a.host}),X(b,{style:R.urlProtocol,children:["(",a.protocol.toUpperCase(),")"]}),i?w(ai,{value:e,buttonStyle:R.copyButton}):w(N,{style:R.copyButton,onPress:s,activeOpacity:.7,children:w(si,{size:14,color:B.color.textSecondary})})]}),w(f,{style:R.urlPathRow,children:X(b,{style:R.urlPath,numberOfLines:2,children:[a.pathname,a.params?X(b,{style:R.urlQueryString,children:["?",new URLSearchParams(a.params).toString()]}):null]})}),a.params?X(f,{style:R.queryParamsCollapsible,children:[X(N,{style:R.queryParamsToggle,onPress:()=>c(!d),activeOpacity:.7,children:[w(b,{style:R.queryParamsToggleText,children:"Query Parameters"}),w(b,{style:R.collapsibleCount,children:Object.keys(a.params).length}),d?w(ii,{size:14,color:B.color.textSecondary}):w(ni,{size:14,color:B.color.textSecondary})]}),d?w(er,{title:"",data:a.params,showTypeFilter:true,rawMode:true,initialExpanded:true}):null]}):null]})},pi=dd(function({event:e,ignoredPatterns:t=Rd,onTogglePattern:r=Ed,showBodies:o=true}){let n=e.status?li(e.status):null,i=!e.status&&!e.error,{isPro:s}=yd(),[l,a]=Qt(false);ti(()=>{l&&s&&a(false)},[l,s]);let d=kd(),c=e.requestData===void 0&&(e.requestBodyOmitted===true||(e.requestSize??0)>0),x=e.responseData===void 0&&(e.responseBodyOmitted===true||(e.responseSize??0)>0),T=e.headersOmitted===true,[S,q]=Qt(null),[m,k]=Qt(false);ti(()=>{if(q(null),!d||!c&&!x&&!T){k(false);return}let C=false;return k(true),d(e.id).then(H=>{C||q(H)}).catch(()=>{}).finally(()=>{C||k(false)}),()=>{C=true}},[e.id,d,c,x,T]);let E=e.requestData??S?.requestData??void 0,g=e.responseData??S?.responseData??void 0,I=(T?S?.requestHeaders:void 0)??e.requestHeaders,z=(T?S?.responseHeaders:void 0)??e.responseHeaders,P=()=>{let C={method:e.method,url:e.url,status:e.status,statusText:e.statusText,timestamp:new Date(e.timestamp).toISOString(),duration:e.duration?`${e.duration}ms`:"N/A",requestHeaders:I,requestData:E,responseHeaders:z,responseData:g,requestSize:e.requestSize?Ze(e.requestSize):"N/A",responseSize:e.responseSize?Ze(e.responseSize):"N/A",error:e.error,client:e.requestClient};return`# Network Request Details
10
10
 
11
11
  ## Request
12
- - **Method:** ${w.method}
13
- - **URL:** ${w.url}
14
- - **Client:** ${w.client||"N/A"}
15
- - **Timestamp:** ${w.timestamp}
12
+ - **Method:** ${C.method}
13
+ - **URL:** ${C.url}
14
+ - **Client:** ${C.client||"N/A"}
15
+ - **Timestamp:** ${C.timestamp}
16
16
 
17
17
  ## Response
18
- - **Status:** ${w.status||"Pending"}${w.statusText?` (${w.statusText})`:""}
19
- - **Duration:** ${w.duration}
20
- - **Request Size:** ${w.requestSize}
21
- - **Response Size:** ${w.responseSize}
22
- ${w.error?`- **Error:** ${w.error}`:""}
18
+ - **Status:** ${C.status||"Pending"}${C.statusText?` (${C.statusText})`:""}
19
+ - **Duration:** ${C.duration}
20
+ - **Request Size:** ${C.requestSize}
21
+ - **Response Size:** ${C.responseSize}
22
+ ${C.error?`- **Error:** ${C.error}`:""}
23
23
 
24
24
  ## Request Headers
25
25
  \`\`\`json
26
- ${JSON.stringify(w.requestHeaders,null,2)}
26
+ ${JSON.stringify(C.requestHeaders,null,2)}
27
27
  \`\`\`
28
28
 
29
29
  ## Request Data
30
30
  \`\`\`json
31
- ${JSON.stringify(w.requestData,null,2)}
31
+ ${JSON.stringify(C.requestData,null,2)}
32
32
  \`\`\`
33
33
 
34
34
  ## Response Headers
35
35
  \`\`\`json
36
- ${JSON.stringify(w.responseHeaders,null,2)}
36
+ ${JSON.stringify(C.responseHeaders,null,2)}
37
37
  \`\`\`
38
38
 
39
39
  ## Response Data
40
40
  \`\`\`json
41
- ${JSON.stringify(w.responseData,null,2)}
41
+ ${JSON.stringify(C.responseData,null,2)}
42
42
  \`\`\`
43
- `};return X(Co,{children:[X(ut,{testID:"buoy-network-detail-scroll",style:R.container,children:[X(p,{style:R.requestDetailsSection,children:[X(p,{style:R.httpHeader,children:[x(p,{style:R.httpMethodBadge,children:x(y,{style:R.httpMethod,children:e.method})}),e.status?x(p,{style:[R.httpStatusBadge,{backgroundColor:`${n?.color}20`}],children:X(y,{style:[R.httpStatusText,{color:n?.color}],children:[n?.text," ",n?.meaning]})}):i?X(p,{style:R.pendingBadge,children:[x(So,{size:10,color:B.color.warning}),x(y,{style:R.pendingBadgeText,children:"Pending"})]}):null,e.condition&&X(y,{style:{color:"#FFCC66"},children:["Conditions: ",e.condition.profile," (+",e.condition.delayMs," ms)"]}),e.duration?X(p,{style:R.httpDuration,children:[x(So,{size:10,color:B.color.textTertiary}),x(y,{style:R.httpDurationText,children:Er(e.duration)})]}):null,e.override?X(p,{style:R.overrideBadge,children:[x(Zl,{size:10,color:B.color.warning}),x(y,{style:R.overrideBadgeText,children:e.override.ruleName||"Overridden"})]}):null,s?x(Yn,{value:I,buttonStyle:R.copyFullButton}):x(N,{style:R.copyFullButton,onPress:()=>a(true),activeOpacity:.7,children:x(Kn,{size:14,color:B.color.textSecondary})})]}),x(cd,{url:e.url,requestData:k,operationName:e.operationName,graphqlVariables:e.graphqlVariables,requestClient:e.requestClient,isPro:s,onUpgradePress:()=>a(true)}),e.error?X(p,{style:R.errorBox,children:[x(_l,{size:12,color:B.color.danger}),x(y,{style:R.errorText,children:e.error})]}):null]}),X(p,{style:R.timingSection,children:[X(p,{style:R.timingRow,children:[x(So,{size:12,color:B.color.textSecondary}),x(y,{style:R.timingLabel,children:"Started:"}),x(y,{style:R.timingValue,children:td(e.timestamp)}),X(y,{style:R.timingExact,children:["(",new Date(e.timestamp).toLocaleTimeString(),")"]}),e.requestSize||e.responseSize?X(p,{style:R.sizeRow,children:[e.requestSize!==void 0?X(p,{style:R.sizeItem,children:[x(_n,{size:10,color:B.color.info}),x(y,{style:R.sizeLabel,children:"Sent:"}),x(y,{style:R.sizeValue,children:Ze(e.requestSize)})]}):null,e.responseSize!==void 0?X(p,{style:R.sizeItem,children:[x(Xn,{size:10,color:Pr}),x(y,{style:R.sizeLabel,children:"Received:"}),x(y,{style:R.sizeValue,children:Ze(e.responseSize)})]}):null]}):null]}),e.timings?X(Co,{children:[x(p,{style:R.phaseDivider}),x(ud,{timings:e.timings,total:e.duration??e.timings.ttfb+e.timings.download})]}):null]}),x(bt,{title:"Request Headers",icon:x(_n,{size:14,color:B.color.info}),defaultOpen:false,count:Object.keys(P).length,children:Object.keys(P).length>0?x(p,{style:R.dataViewerContainer,children:x(Zt,{title:"",data:P,showTypeFilter:true,rawMode:true,initialExpanded:true,disableCopy:!s})}):x(y,{style:R.emptyText,children:"No request headers"})}),x(bt,{title:"Response Headers",icon:x(Xn,{size:14,color:Pr}),defaultOpen:false,count:Object.keys(z).length,children:Object.keys(z).length>0?x(p,{style:R.dataViewerContainer,children:x(Zt,{title:"",data:z,showTypeFilter:true,rawMode:true,initialExpanded:true,disableCopy:!s})}):x(y,{style:R.emptyText,children:"No response headers yet"})}),k!==void 0?x(bt,{title:"Request Body",icon:x(Rr,{size:14,color:B.color.accent}),defaultOpen:false,children:x(p,{style:R.dataViewerContainer,children:o?x(Zt,{title:"",data:k,showTypeFilter:true,rawMode:true,initialExpanded:true,disableCopy:!s}):x(ri,{})})}):b?x(bt,{title:"Request Body",icon:x(Rr,{size:14,color:B.color.accent}),defaultOpen:true,children:x(y,{style:R.emptyText,children:g?`Loading request body (${Ze(e.requestSize??0)})\u2026`:"Request body unavailable"})}):null,f!==void 0?x(bt,{title:"Response Body",icon:x(Rr,{size:14,color:Pr}),defaultOpen:true,children:x(p,{style:R.dataViewerContainer,children:o?x(Zt,{title:"",data:f,showTypeFilter:true,rawMode:true,initialExpanded:true,disableCopy:!s}):x(ri,{})})}):E?x(bt,{title:"Response Body",icon:x(Rr,{size:14,color:Pr}),defaultOpen:true,children:x(y,{style:R.emptyText,children:g?`Loading response body (${Ze(e.responseSize??0)})\u2026`:"Response body unavailable"})}):null,x(bt,{title:"Filter Options",icon:x(Gl,{size:14,color:B.color.warning}),defaultOpen:false,children:x(p,{style:R.filterOptionsContainer,children:(()=>{let w="",H="";try{let c=new URL(e.url);w=c.hostname,H=c.pathname}catch{H=e.url}let v=t.has(w),h=t.has(H);return X(Co,{children:[X(N,{style:[R.filterOption,v&&R.filterOptionActive],onPress:()=>w&&r(w),children:[X(p,{style:R.filterOptionLeft,children:[x(Kl,{size:16,color:v?B.color.warning:B.color.textTertiary}),X(p,{style:R.filterOptionContent,children:[x(y,{style:R.filterOptionLabel,children:"Ignore Domain"}),x(y,{style:R.filterOptionValue,children:w||"N/A"})]})]}),x(p,{style:[R.filterToggle,v&&R.filterToggleActive],children:x(y,{style:[R.filterToggleText,v&&R.filterToggleTextActive],children:v?"IGNORED":"IGNORE"})})]}),X(N,{style:[R.filterOption,h&&R.filterOptionActive],onPress:()=>H&&r(H),children:[X(p,{style:R.filterOptionLeft,children:[x(Yl,{size:16,color:h?B.color.warning:B.color.textTertiary}),X(p,{style:R.filterOptionContent,children:[x(y,{style:R.filterOptionLabel,children:"Ignore URL Pattern"}),x(y,{style:R.filterOptionValue,numberOfLines:1,children:H||"N/A"})]})]}),x(p,{style:[R.filterToggle,h&&R.filterToggleActive],children:x(y,{style:[R.filterToggleText,h&&R.filterToggleTextActive],children:h?"IGNORED":"IGNORE"})})]}),x(p,{style:R.filterInfoBox,children:x(y,{style:R.filterInfoText,children:"Ignored requests will be hidden from the network list. You can manage filters in the Filters tab."})})]})})()})})]}),x(ed,{visible:l,onClose:()=>a(false),featureName:"Copy Request Details",description:"Copy network request details to share or debug issues.",benefits:["Copy full request details including headers and body","Export to JSON, Markdown, or plain text","Share request data with teammates","Feed data to AI assistants for debugging"]})]})}),R=fe.create({container:{flex:1,backgroundColor:"transparent"},requestDetailsSection:{marginHorizontal:12,marginTop:12,backgroundColor:B.color.surface,borderRadius:8,borderWidth:1,borderColor:B.color.border,padding:12},httpHeader:{flexDirection:"row",alignItems:"center",gap:8,marginBottom:12,flexWrap:"nowrap"},httpMethodBadge:{backgroundColor:B.color.infoSoft,paddingHorizontal:8,paddingVertical:4,borderRadius:4},httpMethod:{color:B.color.info,fontSize:11,fontWeight:"700",letterSpacing:.5},httpStatusBadge:{paddingHorizontal:8,paddingVertical:4,borderRadius:4},httpStatusText:{fontSize:11,fontWeight:"600"},pendingBadge:{flexDirection:"row",alignItems:"center",gap:4,backgroundColor:B.color.warningSoft,paddingHorizontal:8,paddingVertical:4,borderRadius:4},pendingBadgeText:{color:B.color.warning,fontSize:11,fontWeight:"600"},httpDuration:{flexDirection:"row",alignItems:"center",gap:4},httpDurationText:{color:B.color.textSecondary,fontSize:11},overrideBadge:{flexDirection:"row",alignItems:"center",gap:4,paddingHorizontal:6,paddingVertical:3,borderRadius:4,backgroundColor:B.color.warningSoft},overrideBadgeText:{color:B.color.warning,fontSize:10,fontWeight:"700"},copyFullButton:{marginLeft:"auto",flexShrink:0,padding:4},urlBreakdown:{backgroundColor:B.color.bg,borderRadius:4,padding:8},urlRow:{flexDirection:"row",alignItems:"center",gap:6,marginBottom:4},urlDomain:{color:B.color.text,fontSize:12,fontWeight:"600",flex:1},urlProtocol:{color:B.color.textTertiary,fontSize:10},copyButton:{padding:4},urlPathRow:{paddingLeft:18},urlPath:{color:B.color.textSecondary,fontSize:11,fontFamily:qt},urlQueryString:{color:B.color.info,fontSize:11,fontFamily:qt},queryParamsCollapsible:{marginTop:8},queryParamsToggle:{flexDirection:"row",alignItems:"center",justifyContent:"space-between",paddingHorizontal:12,paddingVertical:10,backgroundColor:B.color.surfaceElevated,borderRadius:8,borderWidth:1,borderColor:B.color.border,marginBottom:8},queryParamsToggleText:{flexGrow:0,color:B.color.text,fontSize:12,fontWeight:"600",letterSpacing:.3},timingSection:{marginHorizontal:12,marginTop:8,backgroundColor:B.color.surface,borderRadius:8,borderWidth:1,borderColor:B.color.border,padding:12},timingRow:{flexDirection:"row",alignItems:"center",gap:6,flexWrap:"wrap"},timingLabel:{color:B.color.textSecondary,fontSize:11},timingValue:{color:B.color.text,fontSize:11,fontWeight:"600"},timingExact:{color:B.color.textTertiary,fontSize:10,marginLeft:4},sizeRow:{flexDirection:"row",alignItems:"center",gap:16,marginLeft:"auto"},sizeItem:{flexDirection:"row",alignItems:"center",gap:4},sizeLabel:{color:B.color.textTertiary,fontSize:10},sizeValue:{color:B.color.info,fontSize:10,fontFamily:qt,fontWeight:"600"},phaseDivider:{height:1,backgroundColor:B.color.border,marginTop:12,marginBottom:12},phaseList:{gap:8},phaseRow:{flexDirection:"row",alignItems:"center",gap:14},phaseLabelGroup:{width:150},phaseLabel:{fontSize:12,color:B.color.textSecondary},phaseHint:{fontSize:10,color:B.color.textTertiary},phaseTrack:{flex:1,height:7,borderRadius:4,backgroundColor:B.color.surfaceElevated,justifyContent:"center",overflow:"hidden"},phaseBar:{height:7,borderRadius:4},phaseValue:{width:72,textAlign:"right",fontSize:12,fontFamily:qt,color:B.color.text},collapsibleSection:{marginHorizontal:12,marginTop:8,backgroundColor:B.color.surface,borderRadius:8,borderWidth:1,borderColor:B.color.border,overflow:"hidden"},collapsibleHeader:{flexDirection:"row",alignItems:"center",justifyContent:"space-between",padding:12,backgroundColor:B.color.surfaceElevated},collapsibleTitle:{flexDirection:"row",alignItems:"center",gap:8},collapsibleTitleText:{color:B.color.text,fontSize:13,fontWeight:"600"},collapsibleCount:{color:B.color.textTertiary,fontSize:11.5,fontFamily:qt},collapsibleContent:{padding:12},dataViewerContainer:{marginTop:-12,marginHorizontal:-12,marginBottom:-12},bodyDeferred:{height:120},errorBox:{flexDirection:"row",alignItems:"center",gap:6,backgroundColor:B.color.dangerSoft,padding:8,borderRadius:4,marginTop:8},errorText:{color:B.color.danger,fontSize:11,flex:1},emptyText:{color:B.color.textTertiary,fontSize:12,fontStyle:"italic",textAlign:"center"},filterOptionsContainer:{gap:12},filterOption:{flexDirection:"row",alignItems:"center",justifyContent:"space-between",backgroundColor:B.color.surfaceElevated,borderRadius:8,padding:12,borderWidth:1,borderColor:B.color.border},filterOptionActive:{backgroundColor:B.color.warningSoft,borderColor:B.color.warning+"33"},filterOptionLeft:{flexDirection:"row",alignItems:"center",gap:12,flex:1},filterOptionContent:{flex:1},filterOptionLabel:{color:B.color.textSecondary,fontSize:11,marginBottom:2,textTransform:"uppercase",letterSpacing:.5},filterOptionValue:{color:B.color.text,fontSize:13,fontFamily:qt},filterToggle:{paddingHorizontal:10,paddingVertical:6,borderRadius:4,backgroundColor:B.color.bg,borderWidth:1,borderColor:B.color.border},filterToggleActive:{backgroundColor:B.color.warningSoft,borderColor:B.color.warning+"4D"},filterToggleText:{fontSize:10,fontWeight:"600",color:B.color.textTertiary,letterSpacing:.5},filterToggleTextActive:{color:B.color.warning},filterInfoBox:{backgroundColor:B.color.infoSoft,borderRadius:6,padding:10,borderWidth:1,borderColor:B.color.info+"33"},filterInfoText:{color:B.color.textSecondary,fontSize:11,lineHeight:16}});D();ce();import{DynamicFilterView as ni,macOSColors as $e,FileText as ii,FileCode as si,Link as hd,Zap as pd,Settings as fd,Hash as gd,Eye as md,ToolbarCopyButton as yd,formatRelativeTime as bd,useFeatureGate as vd,ProFeatureBanner as Sd,ExportPreview as xd,monoFont as ai}from"@buoy-gg/shared-ui/web";import{DataViewer as wd}from"@buoy-gg/shared-ui/web/dataViewer";import{useCallback as We,useMemo as vt,useState as Cd}from"react";import{Fragment as Td,jsx as He,jsxs as li}from"react/jsx-runtime";var Rd={includeMethod:true,includeStatus:true,includeDuration:true,includeTimestamp:true,includeClient:true,includeSizes:true,includeErrors:true,includeRequestHeaders:true,includeResponseHeaders:true,includeRequestBody:true,includeResponseBody:true,bodySizeThreshold:10,format:"markdown",filterMode:"all"},Qt={urls:{includeMethod:true,includeStatus:false,includeDuration:false,includeTimestamp:false,includeClient:false,includeSizes:false,includeErrors:false,includeRequestHeaders:false,includeResponseHeaders:false,includeRequestBody:false,includeResponseBody:false,bodySizeThreshold:10,format:"plaintext",filterMode:"all"},llm:{includeMethod:true,includeStatus:true,includeDuration:true,includeTimestamp:true,includeClient:true,includeSizes:true,includeErrors:true,includeRequestHeaders:true,includeResponseHeaders:true,includeRequestBody:true,includeResponseBody:true,bodySizeThreshold:10,format:"markdown",filterMode:"all"},json:{includeMethod:true,includeStatus:true,includeDuration:true,includeTimestamp:true,includeClient:true,includeSizes:true,includeErrors:true,includeRequestHeaders:true,includeResponseHeaders:true,includeRequestBody:true,includeResponseBody:true,bodySizeThreshold:-1,format:"json",filterMode:"all"},full:{includeMethod:true,includeStatus:true,includeDuration:true,includeTimestamp:true,includeClient:true,includeSizes:true,includeErrors:true,includeRequestHeaders:true,includeResponseHeaders:true,includeRequestBody:true,includeResponseBody:true,bodySizeThreshold:-1,format:"markdown",filterMode:"all"}};function kd(e){for(let[t,r]of Object.entries(Qt))if(Object.keys(r).every(o=>r[o]===e[o]))return t;return null}var Ed=100*1024,Pd=500*1024;function Id(e){return e<1024?`${e} B`:e<1024*1024?`${(e/1024).toFixed(1)} KB`:`${(e/(1024*1024)).toFixed(1)} MB`}function Ld({settings:e,onSettingsChange:t,events:r=[]}){let{isPro:o}=vd(),n=vo(),[i,s]=Cd(false),l=r.length>0,a=vt(()=>{if(!l)return null;let h=r.map(c=>typeof c.timestamp=="number"?c.timestamp:new Date(c.timestamp).getTime());return Math.max(...h)},[r,l]),d=vt(()=>kd(e),[e]),b=We(()=>{t(Qt.urls)},[t]),E=We(()=>{t(Qt.llm)},[t]),C=We(()=>{t(Qt.json)},[t]),S=We(()=>{t(Qt.full)},[t]),q=We((h,c)=>{let[u,m]=h.split("::");if(u==="preset"){switch(m){case"urls":b();break;case"llm":E();break;case"json":C();break;case"full":S();break}return}if(u==="requestInfo"){t({...e,[m]:!e[m]});return}if(u==="headers"){t({...e,[m]:!e[m]});return}if(u==="body"){t(m==="bodySizeThreshold"?{...e,bodySizeThreshold:c}:{...e,[m]:!e[m]});return}if(u==="format"){t({...e,format:c});return}u==="filter"&&t({...e,filterMode:c})},[e,t,b,E,C,S]),g=vt(()=>({method:"POST",url:"https://api.example.com/v1/users",status:201,duration:342,timestamp:new Date().toISOString(),requestHeaders:{"Content-Type":"application/json",Authorization:"Bearer ***"},responseHeaders:{"Content-Type":"application/json","X-Request-ID":"abc123"},requestBody:{name:"John Doe",email:"john@example.com"},responseBody:{id:"user_123",name:"John Doe",email:"john@example.com",createdAt:"2025-01-10T12:00:00Z"}}),[]),T=vt(()=>l?r:[g],[l,r,g]),k=vt(()=>{let h=l?r:[g],c=0;for(let u of h){if(e.includeMethod&&(c+=(u.url?.length||0)+10),e.includeStatus&&(c+=30),e.includeTimestamp&&(c+=30),e.includeRequestHeaders)try{c+=JSON.stringify(u.requestHeaders||{}).length}catch{c+=100}if(e.includeRequestBody){let m="requestBody"in u?u.requestBody:u.requestData;try{c+=JSON.stringify(m||{}).length}catch{c+=100}}if(e.includeResponseBody){let m="responseBody"in u?u.responseBody:u.responseData;try{c+=JSON.stringify(m||{}).length}catch{c+=100}}}return c},[l,r,g,e]),f=vt(()=>k>=Pd?"danger":k>=Ed?"warning":"none",[k]),P=We(()=>{let h=l?r:[g],{format:c,includeMethod:u,includeStatus:m,includeTimestamp:O,includeRequestHeaders:re,includeRequestBody:Z,includeResponseBody:ee}=e,G=A=>{let W={};return u&&(W.method=A.method,W.url=A.url),m&&(W.status=A.status,W.duration=A.duration),O&&(W.timestamp=A.timestamp),re&&(W.requestHeaders=A.requestHeaders),Z&&(W.requestBody="requestBody"in A?A.requestBody:A.requestData),ee&&(W.responseBody="responseBody"in A?A.responseBody:A.responseData),W};if(c==="json"){let A=h.map(G);return JSON.stringify(A,null,2)}return c==="markdown"?h.map((A,W)=>{let $=[];$.push(`# Request ${W+1}`),u&&$.push(`
44
- **${A.method}** ${A.url}`);let ne=[];if(m&&(ne.push(`**Status:** ${A.status}`),ne.push(`**Duration:** ${A.duration}ms`)),O&&ne.push(`**Timestamp:** ${A.timestamp}`),ne.length>0&&$.push(`
43
+ `};return X(Po,{children:[X(ut,{testID:"buoy-network-detail-scroll",style:R.container,children:[X(f,{style:R.requestDetailsSection,children:[X(f,{style:R.httpHeader,children:[w(f,{style:R.httpMethodBadge,children:w(b,{style:R.httpMethod,children:e.method})}),e.status?w(f,{style:[R.httpStatusBadge,{backgroundColor:`${n?.color}20`}],children:X(b,{style:[R.httpStatusText,{color:n?.color}],children:[n?.text," ",n?.meaning]})}):i?X(f,{style:R.pendingBadge,children:[w(Ro,{size:10,color:B.color.warning}),w(b,{style:R.pendingBadgeText,children:"Pending"})]}):null,e.condition&&X(b,{style:{color:"#FFCC66"},children:["Conditions: ",e.condition.profile," (+",e.condition.delayMs," ms)"]}),e.duration?X(f,{style:R.httpDuration,children:[w(Ro,{size:10,color:B.color.textTertiary}),w(b,{style:R.httpDurationText,children:Pr(e.duration)})]}):null,e.override?X(f,{style:R.overrideBadge,children:[w(md,{size:10,color:B.color.warning}),w(b,{style:R.overrideBadgeText,children:e.override.ruleName||"Overridden"})]}):null,s?w(ai,{value:P,buttonStyle:R.copyFullButton}):w(N,{style:R.copyFullButton,onPress:()=>a(true),activeOpacity:.7,children:w(si,{size:14,color:B.color.textSecondary})})]}),w(Pd,{url:e.url,requestData:E,operationName:e.operationName,graphqlVariables:e.graphqlVariables,requestClient:e.requestClient,isPro:s,onUpgradePress:()=>a(true)}),e.error?X(f,{style:R.errorBox,children:[w(ud,{size:12,color:B.color.danger}),w(b,{style:R.errorText,children:e.error})]}):null]}),X(f,{style:R.timingSection,children:[X(f,{style:R.timingRow,children:[w(Ro,{size:12,color:B.color.textSecondary}),w(b,{style:R.timingLabel,children:"Started:"}),w(b,{style:R.timingValue,children:vd(e.timestamp)}),X(b,{style:R.timingExact,children:["(",new Date(e.timestamp).toLocaleTimeString(),")"]}),e.requestSize||e.responseSize?X(f,{style:R.sizeRow,children:[e.requestSize!==void 0?X(f,{style:R.sizeItem,children:[w(ri,{size:10,color:B.color.info}),w(b,{style:R.sizeLabel,children:"Sent:"}),w(b,{style:R.sizeValue,children:Ze(e.requestSize)})]}):null,e.responseSize!==void 0?X(f,{style:R.sizeItem,children:[w(oi,{size:10,color:Lr}),w(b,{style:R.sizeLabel,children:"Received:"}),w(b,{style:R.sizeValue,children:Ze(e.responseSize)})]}):null]}):null]}),e.timings?X(Po,{children:[w(f,{style:R.phaseDivider}),w(Id,{timings:e.timings,total:e.duration??e.timings.ttfb+e.timings.download})]}):null]}),w(vt,{title:"Request Headers",icon:w(ri,{size:14,color:B.color.info}),defaultOpen:false,count:Object.keys(I).length,children:Object.keys(I).length>0?w(f,{style:R.dataViewerContainer,children:w(er,{title:"",data:I,showTypeFilter:true,rawMode:true,initialExpanded:true,disableCopy:!s})}):w(b,{style:R.emptyText,children:"No request headers"})}),w(vt,{title:"Response Headers",icon:w(oi,{size:14,color:Lr}),defaultOpen:false,count:Object.keys(z).length,children:Object.keys(z).length>0?w(f,{style:R.dataViewerContainer,children:w(er,{title:"",data:z,showTypeFilter:true,rawMode:true,initialExpanded:true,disableCopy:!s})}):w(b,{style:R.emptyText,children:"No response headers yet"})}),E!==void 0?w(vt,{title:"Request Body",icon:w(Er,{size:14,color:B.color.accent}),defaultOpen:false,children:w(f,{style:R.dataViewerContainer,children:o?w(er,{title:"",data:E,showTypeFilter:true,rawMode:true,initialExpanded:true,disableCopy:!s}):w(hi,{})})}):c?w(vt,{title:"Request Body",icon:w(Er,{size:14,color:B.color.accent}),defaultOpen:true,children:w(b,{style:R.emptyText,children:m?`Loading request body (${Ze(e.requestSize??0)})\u2026`:"Request body unavailable"})}):null,g!==void 0?w(vt,{title:"Response Body",icon:w(Er,{size:14,color:Lr}),defaultOpen:true,children:w(f,{style:R.dataViewerContainer,children:o?w(er,{title:"",data:g,showTypeFilter:true,rawMode:true,initialExpanded:true,disableCopy:!s}):w(hi,{})})}):x?w(vt,{title:"Response Body",icon:w(Er,{size:14,color:Lr}),defaultOpen:true,children:w(b,{style:R.emptyText,children:m?`Loading response body (${Ze(e.responseSize??0)})\u2026`:"Response body unavailable"})}):null,w(vt,{title:"Filter Options",icon:w(pd,{size:14,color:B.color.warning}),defaultOpen:false,children:w(f,{style:R.filterOptionsContainer,children:(()=>{let C="",H="";try{let h=new URL(e.url);C=h.hostname,H=h.pathname}catch{H=e.url}let v=t.has(C),p=t.has(H);return X(Po,{children:[X(N,{style:[R.filterOption,v&&R.filterOptionActive],onPress:()=>C&&r(C),children:[X(f,{style:R.filterOptionLeft,children:[w(fd,{size:16,color:v?B.color.warning:B.color.textTertiary}),X(f,{style:R.filterOptionContent,children:[w(b,{style:R.filterOptionLabel,children:"Ignore Domain"}),w(b,{style:R.filterOptionValue,children:C||"N/A"})]})]}),w(f,{style:[R.filterToggle,v&&R.filterToggleActive],children:w(b,{style:[R.filterToggleText,v&&R.filterToggleTextActive],children:v?"IGNORED":"IGNORE"})})]}),X(N,{style:[R.filterOption,p&&R.filterOptionActive],onPress:()=>H&&r(H),children:[X(f,{style:R.filterOptionLeft,children:[w(gd,{size:16,color:p?B.color.warning:B.color.textTertiary}),X(f,{style:R.filterOptionContent,children:[w(b,{style:R.filterOptionLabel,children:"Ignore URL Pattern"}),w(b,{style:R.filterOptionValue,numberOfLines:1,children:H||"N/A"})]})]}),w(f,{style:[R.filterToggle,p&&R.filterToggleActive],children:w(b,{style:[R.filterToggleText,p&&R.filterToggleTextActive],children:p?"IGNORED":"IGNORE"})})]}),w(f,{style:R.filterInfoBox,children:w(b,{style:R.filterInfoText,children:"Ignored requests will be hidden from the network list. You can manage filters in the Filters tab."})})]})})()})})]}),w(bd,{visible:l,onClose:()=>a(false),featureName:"Copy Request Details",description:"Copy network request details to share or debug issues.",benefits:["Copy full request details including headers and body","Export to JSON, Markdown, or plain text","Share request data with teammates","Feed data to AI assistants for debugging"]})]})}),R=fe.create({container:{flex:1,backgroundColor:"transparent"},requestDetailsSection:{marginHorizontal:12,marginTop:12,backgroundColor:B.color.surface,borderRadius:8,borderWidth:1,borderColor:B.color.border,padding:12},httpHeader:{flexDirection:"row",alignItems:"center",gap:8,marginBottom:12,flexWrap:"nowrap"},httpMethodBadge:{backgroundColor:B.color.infoSoft,paddingHorizontal:8,paddingVertical:4,borderRadius:4},httpMethod:{color:B.color.info,fontSize:11,fontWeight:"700",letterSpacing:.5},httpStatusBadge:{paddingHorizontal:8,paddingVertical:4,borderRadius:4},httpStatusText:{fontSize:11,fontWeight:"600"},pendingBadge:{flexDirection:"row",alignItems:"center",gap:4,backgroundColor:B.color.warningSoft,paddingHorizontal:8,paddingVertical:4,borderRadius:4},pendingBadgeText:{color:B.color.warning,fontSize:11,fontWeight:"600"},httpDuration:{flexDirection:"row",alignItems:"center",gap:4},httpDurationText:{color:B.color.textSecondary,fontSize:11},overrideBadge:{flexDirection:"row",alignItems:"center",gap:4,paddingHorizontal:6,paddingVertical:3,borderRadius:4,backgroundColor:B.color.warningSoft},overrideBadgeText:{color:B.color.warning,fontSize:10,fontWeight:"700"},copyFullButton:{marginLeft:"auto",flexShrink:0,padding:4},urlBreakdown:{backgroundColor:B.color.bg,borderRadius:4,padding:8},urlRow:{flexDirection:"row",alignItems:"center",gap:6,marginBottom:4},urlDomain:{color:B.color.text,fontSize:12,fontWeight:"600",flex:1},urlProtocol:{color:B.color.textTertiary,fontSize:10},copyButton:{padding:4},urlPathRow:{paddingLeft:18},urlPath:{color:B.color.textSecondary,fontSize:11,fontFamily:Dt},urlQueryString:{color:B.color.info,fontSize:11,fontFamily:Dt},queryParamsCollapsible:{marginTop:8},queryParamsToggle:{flexDirection:"row",alignItems:"center",justifyContent:"space-between",paddingHorizontal:12,paddingVertical:10,backgroundColor:B.color.surfaceElevated,borderRadius:8,borderWidth:1,borderColor:B.color.border,marginBottom:8},queryParamsToggleText:{flexGrow:0,color:B.color.text,fontSize:12,fontWeight:"600",letterSpacing:.3},timingSection:{marginHorizontal:12,marginTop:8,backgroundColor:B.color.surface,borderRadius:8,borderWidth:1,borderColor:B.color.border,padding:12},timingRow:{flexDirection:"row",alignItems:"center",gap:6,flexWrap:"wrap"},timingLabel:{color:B.color.textSecondary,fontSize:11},timingValue:{color:B.color.text,fontSize:11,fontWeight:"600"},timingExact:{color:B.color.textTertiary,fontSize:10,marginLeft:4},sizeRow:{flexDirection:"row",alignItems:"center",gap:16,marginLeft:"auto"},sizeItem:{flexDirection:"row",alignItems:"center",gap:4},sizeLabel:{color:B.color.textTertiary,fontSize:10},sizeValue:{color:B.color.info,fontSize:10,fontFamily:Dt,fontWeight:"600"},phaseDivider:{height:1,backgroundColor:B.color.border,marginTop:12,marginBottom:12},phaseList:{gap:8},phaseRow:{flexDirection:"row",alignItems:"center",gap:14},phaseLabelGroup:{width:150},phaseLabel:{fontSize:12,color:B.color.textSecondary},phaseHint:{fontSize:10,color:B.color.textTertiary},phaseTrack:{flex:1,height:7,borderRadius:4,backgroundColor:B.color.surfaceElevated,justifyContent:"center",overflow:"hidden"},phaseBar:{height:7,borderRadius:4},phaseValue:{width:72,textAlign:"right",fontSize:12,fontFamily:Dt,color:B.color.text},collapsibleSection:{marginHorizontal:12,marginTop:8,backgroundColor:B.color.surface,borderRadius:8,borderWidth:1,borderColor:B.color.border,overflow:"hidden"},collapsibleHeader:{flexDirection:"row",alignItems:"center",justifyContent:"space-between",padding:12,backgroundColor:B.color.surfaceElevated},collapsibleTitle:{flexDirection:"row",alignItems:"center",gap:8},collapsibleTitleText:{color:B.color.text,fontSize:13,fontWeight:"600"},collapsibleCount:{color:B.color.textTertiary,fontSize:11.5,fontFamily:Dt},collapsibleContent:{padding:12},dataViewerContainer:{marginTop:-12,marginHorizontal:-12,marginBottom:-12},bodyDeferred:{height:120},errorBox:{flexDirection:"row",alignItems:"center",gap:6,backgroundColor:B.color.dangerSoft,padding:8,borderRadius:4,marginTop:8},errorText:{color:B.color.danger,fontSize:11,flex:1},emptyText:{color:B.color.textTertiary,fontSize:12,fontStyle:"italic",textAlign:"center"},filterOptionsContainer:{gap:12},filterOption:{flexDirection:"row",alignItems:"center",justifyContent:"space-between",backgroundColor:B.color.surfaceElevated,borderRadius:8,padding:12,borderWidth:1,borderColor:B.color.border},filterOptionActive:{backgroundColor:B.color.warningSoft,borderColor:B.color.warning+"33"},filterOptionLeft:{flexDirection:"row",alignItems:"center",gap:12,flex:1},filterOptionContent:{flex:1},filterOptionLabel:{color:B.color.textSecondary,fontSize:11,marginBottom:2,textTransform:"uppercase",letterSpacing:.5},filterOptionValue:{color:B.color.text,fontSize:13,fontFamily:Dt},filterToggle:{paddingHorizontal:10,paddingVertical:6,borderRadius:4,backgroundColor:B.color.bg,borderWidth:1,borderColor:B.color.border},filterToggleActive:{backgroundColor:B.color.warningSoft,borderColor:B.color.warning+"4D"},filterToggleText:{fontSize:10,fontWeight:"600",color:B.color.textTertiary,letterSpacing:.5},filterToggleTextActive:{color:B.color.warning},filterInfoBox:{backgroundColor:B.color.infoSoft,borderRadius:6,padding:10,borderWidth:1,borderColor:B.color.info+"33"},filterInfoText:{color:B.color.textSecondary,fontSize:11,lineHeight:16}});O();ce();import{DynamicFilterView as fi,macOSColors as je,FileText as gi,FileCode as mi,Link as Ld,Zap as Bd,Settings as qd,Hash as Od,Eye as Dd,ToolbarCopyButton as zd,formatRelativeTime as Ad,useFeatureGate as Hd,ProFeatureBanner as Md,ExportPreview as Nd,monoFont as yi}from"@buoy-gg/shared-ui/web";import{DataViewer as jd}from"@buoy-gg/shared-ui/web/dataViewer";import{useCallback as We,useMemo as St,useState as Fd}from"react";import{Fragment as $d,jsx as He,jsxs as bi}from"react/jsx-runtime";var Wd={includeMethod:true,includeStatus:true,includeDuration:true,includeTimestamp:true,includeClient:true,includeSizes:true,includeErrors:true,includeRequestHeaders:true,includeResponseHeaders:true,includeRequestBody:true,includeResponseBody:true,bodySizeThreshold:10,format:"markdown",filterMode:"all"},tr={urls:{includeMethod:true,includeStatus:false,includeDuration:false,includeTimestamp:false,includeClient:false,includeSizes:false,includeErrors:false,includeRequestHeaders:false,includeResponseHeaders:false,includeRequestBody:false,includeResponseBody:false,bodySizeThreshold:10,format:"plaintext",filterMode:"all"},llm:{includeMethod:true,includeStatus:true,includeDuration:true,includeTimestamp:true,includeClient:true,includeSizes:true,includeErrors:true,includeRequestHeaders:true,includeResponseHeaders:true,includeRequestBody:true,includeResponseBody:true,bodySizeThreshold:10,format:"markdown",filterMode:"all"},json:{includeMethod:true,includeStatus:true,includeDuration:true,includeTimestamp:true,includeClient:true,includeSizes:true,includeErrors:true,includeRequestHeaders:true,includeResponseHeaders:true,includeRequestBody:true,includeResponseBody:true,bodySizeThreshold:-1,format:"json",filterMode:"all"},full:{includeMethod:true,includeStatus:true,includeDuration:true,includeTimestamp:true,includeClient:true,includeSizes:true,includeErrors:true,includeRequestHeaders:true,includeResponseHeaders:true,includeRequestBody:true,includeResponseBody:true,bodySizeThreshold:-1,format:"markdown",filterMode:"all"}};function Vd(e){for(let[t,r]of Object.entries(tr))if(Object.keys(r).every(o=>r[o]===e[o]))return t;return null}var Ud=100*1024,_d=500*1024;function Xd(e){return e<1024?`${e} B`:e<1024*1024?`${(e/1024).toFixed(1)} KB`:`${(e/(1024*1024)).toFixed(1)} MB`}function Jd({settings:e,onSettingsChange:t,events:r=[]}){let{isPro:o}=Hd(),n=ko(),[i,s]=Fd(false),l=r.length>0,a=St(()=>{if(!l)return null;let p=r.map(h=>typeof h.timestamp=="number"?h.timestamp:new Date(h.timestamp).getTime());return Math.max(...p)},[r,l]),d=St(()=>Vd(e),[e]),c=We(()=>{t(tr.urls)},[t]),x=We(()=>{t(tr.llm)},[t]),T=We(()=>{t(tr.json)},[t]),S=We(()=>{t(tr.full)},[t]),q=We((p,h)=>{let[u,y]=p.split("::");if(u==="preset"){switch(y){case"urls":c();break;case"llm":x();break;case"json":T();break;case"full":S();break}return}if(u==="requestInfo"){t({...e,[y]:!e[y]});return}if(u==="headers"){t({...e,[y]:!e[y]});return}if(u==="body"){t(y==="bodySizeThreshold"?{...e,bodySizeThreshold:h}:{...e,[y]:!e[y]});return}if(u==="format"){t({...e,format:h});return}u==="filter"&&t({...e,filterMode:h})},[e,t,c,x,T,S]),m=St(()=>({method:"POST",url:"https://api.example.com/v1/users",status:201,duration:342,timestamp:new Date().toISOString(),requestHeaders:{"Content-Type":"application/json",Authorization:"Bearer ***"},responseHeaders:{"Content-Type":"application/json","X-Request-ID":"abc123"},requestBody:{name:"John Doe",email:"john@example.com"},responseBody:{id:"user_123",name:"John Doe",email:"john@example.com",createdAt:"2025-01-10T12:00:00Z"}}),[]),k=St(()=>l?r:[m],[l,r,m]),E=St(()=>{let p=l?r:[m],h=0;for(let u of p){if(e.includeMethod&&(h+=(u.url?.length||0)+10),e.includeStatus&&(h+=30),e.includeTimestamp&&(h+=30),e.includeRequestHeaders)try{h+=JSON.stringify(u.requestHeaders||{}).length}catch{h+=100}if(e.includeRequestBody){let y="requestBody"in u?u.requestBody:u.requestData;try{h+=JSON.stringify(y||{}).length}catch{h+=100}}if(e.includeResponseBody){let y="responseBody"in u?u.responseBody:u.responseData;try{h+=JSON.stringify(y||{}).length}catch{h+=100}}}return h},[l,r,m,e]),g=St(()=>E>=_d?"danger":E>=Ud?"warning":"none",[E]),I=We(()=>{let p=l?r:[m],{format:h,includeMethod:u,includeStatus:y,includeTimestamp:D,includeRequestHeaders:re,includeRequestBody:ee,includeResponseBody:Z}=e,J=A=>{let W={};return u&&(W.method=A.method,W.url=A.url),y&&(W.status=A.status,W.duration=A.duration),D&&(W.timestamp=A.timestamp),re&&(W.requestHeaders=A.requestHeaders),ee&&(W.requestBody="requestBody"in A?A.requestBody:A.requestData),Z&&(W.responseBody="responseBody"in A?A.responseBody:A.responseData),W};if(h==="json"){let A=p.map(J);return JSON.stringify(A,null,2)}return h==="markdown"?p.map((A,W)=>{let j=[];j.push(`# Request ${W+1}`),u&&j.push(`
44
+ **${A.method}** ${A.url}`);let ne=[];if(y&&(ne.push(`**Status:** ${A.status}`),ne.push(`**Duration:** ${A.duration}ms`)),D&&ne.push(`**Timestamp:** ${A.timestamp}`),ne.length>0&&j.push(`
45
45
  `+ne.join(`
46
- `)),re){let pe=A.requestHeaders||{};$.push(`
46
+ `)),re){let pe=A.requestHeaders||{};j.push(`
47
47
  ## Request Headers
48
48
  \`\`\`json
49
49
  ${JSON.stringify(pe,null,2)}
50
- \`\`\``)}if(Z){let pe="requestBody"in A?A.requestBody:A.requestData;$.push(`
50
+ \`\`\``)}if(ee){let pe="requestBody"in A?A.requestBody:A.requestData;j.push(`
51
51
  ## Request Body
52
52
  \`\`\`json
53
53
  ${JSON.stringify(pe||{},null,2)}
54
- \`\`\``)}if(ee){let pe="responseBody"in A?A.responseBody:A.responseData;$.push(`
54
+ \`\`\``)}if(Z){let pe="responseBody"in A?A.responseBody:A.responseData;j.push(`
55
55
  ## Response Body
56
56
  \`\`\`json
57
57
  ${JSON.stringify(pe||{},null,2)}
58
- \`\`\``)}return $.join(`
58
+ \`\`\``)}return j.join(`
59
59
  `)}).join(`
60
60
 
61
61
  ---
62
62
 
63
- `)||"No data included":h.map((A,W)=>{let $=[];if($.push(`Request ${W+1}:`),u&&$.push(`${A.method} ${A.url}`),m&&($.push(`Status: ${A.status}`),$.push(`Duration: ${A.duration}ms`)),O&&$.push(`Timestamp: ${A.timestamp}`),Z){let ne="requestBody"in A?A.requestBody:A.requestData;$.push(`
64
- Request:`),$.push(JSON.stringify(ne||{},null,2))}if(ee){let ne="responseBody"in A?A.responseBody:A.responseData;$.push(`
65
- Response:`),$.push(JSON.stringify(ne||{},null,2))}return $.join(`
63
+ `)||"No data included":p.map((A,W)=>{let j=[];if(j.push(`Request ${W+1}:`),u&&j.push(`${A.method} ${A.url}`),y&&(j.push(`Status: ${A.status}`),j.push(`Duration: ${A.duration}ms`)),D&&j.push(`Timestamp: ${A.timestamp}`),ee){let ne="requestBody"in A?A.requestBody:A.requestData;j.push(`
64
+ Request:`),j.push(JSON.stringify(ne||{},null,2))}if(Z){let ne="responseBody"in A?A.responseBody:A.responseData;j.push(`
65
+ Response:`),j.push(JSON.stringify(ne||{},null,2))}return j.join(`
66
66
  `)}).join(`
67
67
 
68
68
  ---
69
69
 
70
- `)||"No data included"},[l,r,g,e]),z=We(()=>{let h=l?r:[g],{format:c,includeMethod:u,includeStatus:m,includeTimestamp:O,includeRequestHeaders:re,includeRequestBody:Z,includeResponseBody:ee}=e,G=W=>{let $={};return u&&($.method=W.method,$.url=W.url),m&&($.status=W.status,$.duration=W.duration),O&&($.timestamp=W.timestamp),re&&($.requestHeaders=W.requestHeaders),Z&&($.requestBody="requestBody"in W?W.requestBody:W.requestData),ee&&($.responseBody="responseBody"in W?W.responseBody:W.responseData),$};if(c==="json"){let W=h.map(G);return He(wd,{data:W,title:"",showTypeFilter:false})}if(c==="markdown"){let W=h.map(($,ne)=>{let pe=[];pe.push(`# Request ${ne+1}`),u&&pe.push(`
71
- **${$.method}** ${$.url}`);let tt=[];if(m&&(tt.push(`**Status:** ${$.status}`),tt.push(`**Duration:** ${$.duration}ms`)),O&&tt.push(`**Timestamp:** ${$.timestamp}`),tt.length>0&&pe.push(`
70
+ `)||"No data included"},[l,r,m,e]),z=We(()=>{let p=l?r:[m],{format:h,includeMethod:u,includeStatus:y,includeTimestamp:D,includeRequestHeaders:re,includeRequestBody:ee,includeResponseBody:Z}=e,J=W=>{let j={};return u&&(j.method=W.method,j.url=W.url),y&&(j.status=W.status,j.duration=W.duration),D&&(j.timestamp=W.timestamp),re&&(j.requestHeaders=W.requestHeaders),ee&&(j.requestBody="requestBody"in W?W.requestBody:W.requestData),Z&&(j.responseBody="responseBody"in W?W.responseBody:W.responseData),j};if(h==="json"){let W=p.map(J);return He(jd,{data:W,title:"",showTypeFilter:false})}if(h==="markdown"){let W=p.map((j,ne)=>{let pe=[];pe.push(`# Request ${ne+1}`),u&&pe.push(`
71
+ **${j.method}** ${j.url}`);let tt=[];if(y&&(tt.push(`**Status:** ${j.status}`),tt.push(`**Duration:** ${j.duration}ms`)),D&&tt.push(`**Timestamp:** ${j.timestamp}`),tt.length>0&&pe.push(`
72
72
  `+tt.join(`
73
- `)),re){let dt=$.requestHeaders||{};pe.push(`
73
+ `)),re){let dt=j.requestHeaders||{};pe.push(`
74
74
  ## Request Headers
75
75
  \`\`\`json
76
76
  ${JSON.stringify(dt,null,2)}
77
- \`\`\``)}if(Z){let dt="requestBody"in $?$.requestBody:$.requestData;pe.push(`
77
+ \`\`\``)}if(ee){let dt="requestBody"in j?j.requestBody:j.requestData;pe.push(`
78
78
  ## Request Body
79
79
  \`\`\`json
80
80
  ${JSON.stringify(dt||{},null,2)}
81
- \`\`\``)}if(ee){let dt="responseBody"in $?$.responseBody:$.responseData;pe.push(`
81
+ \`\`\``)}if(Z){let dt="responseBody"in j?j.responseBody:j.responseData;pe.push(`
82
82
  ## Response Body
83
83
  \`\`\`json
84
84
  ${JSON.stringify(dt||{},null,2)}
@@ -87,19 +87,19 @@ ${JSON.stringify(dt||{},null,2)}
87
87
 
88
88
  ---
89
89
 
90
- `);return He(ut,{style:St.previewScroll,nestedScrollEnabled:true,children:He(y,{style:St.markdownText,selectable:o,children:W||"No data included"})})}let A=h.map((W,$)=>{let ne=[];if(ne.push(`Request ${$+1}:`),u&&ne.push(`${W.method} ${W.url}`),m&&(ne.push(`Status: ${W.status}`),ne.push(`Duration: ${W.duration}ms`)),O&&ne.push(`Timestamp: ${W.timestamp}`),Z){let pe="requestBody"in W?W.requestBody:W.requestData;ne.push(`
91
- Request:`),ne.push(JSON.stringify(pe||{},null,2))}if(ee){let pe="responseBody"in W?W.responseBody:W.responseData;ne.push(`
90
+ `);return He(ut,{style:xt.previewScroll,nestedScrollEnabled:true,children:He(b,{style:xt.markdownText,selectable:o,children:W||"No data included"})})}let A=p.map((W,j)=>{let ne=[];if(ne.push(`Request ${j+1}:`),u&&ne.push(`${W.method} ${W.url}`),y&&(ne.push(`Status: ${W.status}`),ne.push(`Duration: ${W.duration}ms`)),D&&ne.push(`Timestamp: ${W.timestamp}`),ee){let pe="requestBody"in W?W.requestBody:W.requestData;ne.push(`
91
+ Request:`),ne.push(JSON.stringify(pe||{},null,2))}if(Z){let pe="responseBody"in W?W.responseBody:W.responseData;ne.push(`
92
92
  Response:`),ne.push(JSON.stringify(pe||{},null,2))}return ne.join(`
93
93
  `)}).join(`
94
94
 
95
95
  ---
96
96
 
97
- `);return He(ut,{style:St.previewScroll,nestedScrollEnabled:true,children:He(y,{style:St.plaintextText,selectable:o,children:A||"No data included"})})},[e,l,r,g,o]),I=We(()=>{let h=(l?r:[g]).length;return He(xd,{expanded:i,onExpandedChange:s,summary:`${h} request${h!==1?"s":""} \u2022 ~${Id(k)}`,warningLevel:f,warningText:{warning:"Large payload - preview may be slow",danger:"Very large payload - may cause performance issues"},renderBody:z})},[e,l,r,g,i,k,f,z]),w=We(()=>{let h=l&&a?`Live data \u2022 Updated ${bd(a,n)}`:"Mock data (no events captured)";return li(Td,{children:[He(y,{style:St.statusLabel,children:h}),He(yd,{value:P()})]})},[l,a,n,P]),H=We(()=>I(),[I]),v=vt(()=>({sections:[{id:"presets",title:"Presets",type:"custom",data:[{id:"preset::urls",label:"URLs",icon:hd,color:$e.semantic.info,value:"urls",isActive:d==="urls"},{id:"preset::llm",label:"LLM",icon:pd,color:$e.semantic.success,value:"llm",isActive:d==="llm"},{id:"preset::json",label:"JSON",icon:si,color:$e.semantic.warning,value:"json",isActive:d==="json"},{id:"preset::full",label:"Full",icon:ii,color:$e.semantic.info,value:"full",isActive:d==="full"},{id:"preset::custom",label:"Custom",icon:fd,color:$e.text.secondary,value:"custom",isActive:d===null}]},{id:"include",title:"Include",type:"custom",data:[{id:"requestInfo::includeMethod",label:"URL",value:"includeMethod",isActive:e.includeMethod},{id:"requestInfo::includeStatus",label:"Status",value:"includeStatus",isActive:e.includeStatus},{id:"requestInfo::includeTimestamp",label:"Time",value:"includeTimestamp",isActive:e.includeTimestamp},{id:"headers::includeRequestHeaders",label:"Headers",value:"includeRequestHeaders",isActive:e.includeRequestHeaders},{id:"body::includeRequestBody",label:"Req Body",value:"includeRequestBody",isActive:e.includeRequestBody},{id:"body::includeResponseBody",label:"Res Body",value:"includeResponseBody",isActive:e.includeResponseBody},{id:"requestInfo::includeErrors",label:"Errors",value:"includeErrors",isActive:e.includeErrors}]},{id:"format",title:"Format",type:"custom",data:[{id:"format::markdown",label:"Markdown",icon:ii,color:$e.semantic.info,value:"markdown",isActive:e.format==="markdown"},{id:"format::json",label:"JSON",icon:si,color:$e.semantic.warning,value:"json",isActive:e.format==="json"},{id:"format::plaintext",label:"Text",icon:gd,color:$e.text.secondary,value:"plaintext",isActive:e.format==="plaintext"}]}],previewSection:{enabled:true,title:"PREVIEW",icon:md,content:H,headerActions:w},onFilterChange:q}),[e,q,H,w,d]);return o?He(ni,{...v}):li(p,{style:St.gatedContainer,children:[He(Sd,{featureName:"Network Export",description:"Export network requests to share with your team, debug APIs, or feed into AI tools.",benefits:["Export to JSON, Markdown, or plain text","Customizable copy presets (URLs only, LLM-ready, full data)","Share request details with teammates","Feed network data directly to AI assistants"]}),He(p,{style:St.gatedPreview,children:He(ni,{...v})})]})}var St=fe.create({previewScroll:{maxHeight:300},markdownText:{fontFamily:ai,fontSize:11,color:$e.text.primary,lineHeight:18},plaintextText:{fontFamily:ai,fontSize:11,color:$e.text.primary,lineHeight:18},statusLabel:{fontSize:11,fontWeight:"600",color:$e.text.muted,marginRight:8},gatedContainer:{flex:1,padding:12},gatedPreview:{flex:1}});D();ce();import{Bookmark as di,CheckCircle as Bd,XCircle as qd,Clock as Od,Copy as Dd,Pin as zd,Trash2 as Ad,CopyButton as Hd,macOSColors as nt,night as oe,useLimit as Md,monoFont as ui}from"@buoy-gg/shared-ui/web";D();import{getAccountAccess as ci}from"@buoy-gg/shared-ui/web";import{BaseEventStore as Nd}from"@buoy-gg/shared-ui/web";D();function hi(e){if(!e||typeof e!="object")return null;if("operationName"in e&&e.operationName){let t=e.operationName;if(typeof t=="string"&&t.trim().length>0)return t.trim()}if("query"in e&&typeof e.query=="string"){let t=e.query.match(/(?:query|mutation|subscription)\s+(\w+)/);if(t&&t[1])return t[1]}return null}D();import{devToolsStorageKeys as pi,persistentStorage as fi}from"@buoy-gg/shared-ui/web";import{TIER_LIMITS as $d}from"@buoy-gg/shared-ui/web";var To=`${Date.now().toString(36)}_${Math.random().toString(36).slice(2,8)}`,Ir=25,it=50,gi=$d["network.saved"].free,st=16*1024,mi=512*1024;function yi(e){if(!e||typeof e!="object")return false;let t=e;return typeof t.id=="string"&&typeof t.url=="string"}var Fd=800;function Lr(e,t){if(!t)return{pinned:false,saved:false};let r=e.pinnedLiveIds.has(t),o=e.savedLiveIds.has(t);if(r||o)return{pinned:r,saved:o};let n=e.records.find(i=>i.event.id===t);return n?{pinned:n.pinned,saved:n.saved}:{pinned:false,saved:false}}var jd={records:[],pinnedEvents:[],savedRecords:[],pinnedLiveIds:new Set,savedLiveIds:new Set};function bi(e){if(e==null)return{value:e,truncated:false};if(typeof e=="string")return e.length<=st?{value:e,truncated:false}:{value:`${e.slice(0,st)}
97
+ `);return He(ut,{style:xt.previewScroll,nestedScrollEnabled:true,children:He(b,{style:xt.plaintextText,selectable:o,children:A||"No data included"})})},[e,l,r,m,o]),P=We(()=>{let p=(l?r:[m]).length;return He(Nd,{expanded:i,onExpandedChange:s,summary:`${p} request${p!==1?"s":""} \u2022 ~${Xd(E)}`,warningLevel:g,warningText:{warning:"Large payload - preview may be slow",danger:"Very large payload - may cause performance issues"},renderBody:z})},[e,l,r,m,i,E,g,z]),C=We(()=>{let p=l&&a?`Live data \u2022 Updated ${Ad(a,n)}`:"Mock data (no events captured)";return bi($d,{children:[He(b,{style:xt.statusLabel,children:p}),He(zd,{value:I()})]})},[l,a,n,I]),H=We(()=>P(),[P]),v=St(()=>({sections:[{id:"presets",title:"Presets",type:"custom",data:[{id:"preset::urls",label:"URLs",icon:Ld,color:je.semantic.info,value:"urls",isActive:d==="urls"},{id:"preset::llm",label:"LLM",icon:Bd,color:je.semantic.success,value:"llm",isActive:d==="llm"},{id:"preset::json",label:"JSON",icon:mi,color:je.semantic.warning,value:"json",isActive:d==="json"},{id:"preset::full",label:"Full",icon:gi,color:je.semantic.info,value:"full",isActive:d==="full"},{id:"preset::custom",label:"Custom",icon:qd,color:je.text.secondary,value:"custom",isActive:d===null}]},{id:"include",title:"Include",type:"custom",data:[{id:"requestInfo::includeMethod",label:"URL",value:"includeMethod",isActive:e.includeMethod},{id:"requestInfo::includeStatus",label:"Status",value:"includeStatus",isActive:e.includeStatus},{id:"requestInfo::includeTimestamp",label:"Time",value:"includeTimestamp",isActive:e.includeTimestamp},{id:"headers::includeRequestHeaders",label:"Headers",value:"includeRequestHeaders",isActive:e.includeRequestHeaders},{id:"body::includeRequestBody",label:"Req Body",value:"includeRequestBody",isActive:e.includeRequestBody},{id:"body::includeResponseBody",label:"Res Body",value:"includeResponseBody",isActive:e.includeResponseBody},{id:"requestInfo::includeErrors",label:"Errors",value:"includeErrors",isActive:e.includeErrors}]},{id:"format",title:"Format",type:"custom",data:[{id:"format::markdown",label:"Markdown",icon:gi,color:je.semantic.info,value:"markdown",isActive:e.format==="markdown"},{id:"format::json",label:"JSON",icon:mi,color:je.semantic.warning,value:"json",isActive:e.format==="json"},{id:"format::plaintext",label:"Text",icon:Od,color:je.text.secondary,value:"plaintext",isActive:e.format==="plaintext"}]}],previewSection:{enabled:true,title:"PREVIEW",icon:Dd,content:H,headerActions:C},onFilterChange:q}),[e,q,H,C,d]);return o?He(fi,{...v}):bi(f,{style:xt.gatedContainer,children:[He(Md,{featureName:"Network Export",description:"Export network requests to share with your team, debug APIs, or feed into AI tools.",benefits:["Export to JSON, Markdown, or plain text","Customizable copy presets (URLs only, LLM-ready, full data)","Share request details with teammates","Feed network data directly to AI assistants"]}),He(f,{style:xt.gatedPreview,children:He(fi,{...v})})]})}var xt=fe.create({previewScroll:{maxHeight:300},markdownText:{fontFamily:yi,fontSize:11,color:je.text.primary,lineHeight:18},plaintextText:{fontFamily:yi,fontSize:11,color:je.text.primary,lineHeight:18},statusLabel:{fontSize:11,fontWeight:"600",color:je.text.muted,marginRight:8},gatedContainer:{flex:1,padding:12},gatedPreview:{flex:1}});O();ce();import{Bookmark as vi,CheckCircle as Gd,XCircle as Kd,Clock as Yd,Copy as Zd,Pin as Qd,Trash2 as eu,CopyButton as tu,macOSColors as nt,night as oe,useLimit as ru,monoFont as Si}from"@buoy-gg/shared-ui/web";O();import{isBuoyRequest as xi,getAccountAccess as wi}from"@buoy-gg/shared-ui/web";import{BaseEventStore as ou}from"@buoy-gg/shared-ui/web";O();function Ci(e){if(!e||typeof e!="object")return null;if("operationName"in e&&e.operationName){let t=e.operationName;if(typeof t=="string"&&t.trim().length>0)return t.trim()}if("query"in e&&typeof e.query=="string"){let t=e.query.match(/(?:query|mutation|subscription)\s+(\w+)/);if(t&&t[1])return t[1]}return null}O();import{isBuoyRequest as nu,devToolsStorageKeys as Ti,persistentStorage as ki}from"@buoy-gg/shared-ui/web";import{TIER_LIMITS as iu}from"@buoy-gg/shared-ui/web";var Lo=`${Date.now().toString(36)}_${Math.random().toString(36).slice(2,8)}`,Br=25,it=50,Ri=iu["network.saved"].free,st=16*1024,Ei=512*1024;function Bo(e){if(!e||typeof e!="object")return false;let t=e;return typeof t.id=="string"&&typeof t.url=="string"&&!nu(t.url)}var su=800;function qr(e,t){if(!t)return{pinned:false,saved:false};let r=e.pinnedLiveIds.has(t),o=e.savedLiveIds.has(t);if(r||o)return{pinned:r,saved:o};let n=e.records.find(i=>i.event.id===t);return n?{pinned:n.pinned,saved:n.saved}:{pinned:false,saved:false}}var au={records:[],pinnedEvents:[],savedRecords:[],pinnedLiveIds:new Set,savedLiveIds:new Set};function Ii(e){if(e==null)return{value:e,truncated:false};if(typeof e=="string")return e.length<=st?{value:e,truncated:false}:{value:`${e.slice(0,st)}
98
98
 
99
99
  \u2026 truncated by Buoy (body exceeded ${st} bytes)`,truncated:true};try{let t=JSON.stringify(e);return t===void 0?{value:void 0,truncated:false}:t.length<=st?{value:e,truncated:false}:{value:`${t.slice(0,st)}
100
100
 
101
- \u2026 truncated by Buoy (body exceeded ${st} bytes)`,truncated:true}}catch{return{value:"[unserializable body]",truncated:true}}}function vi(e){let t=bi(e.requestData),r=bi(e.responseData);return!t.truncated&&!r.truncated?{event:{...e},bodyTruncated:false}:{event:{...e,requestData:t.value,responseData:r.value},bodyTruncated:true}}function Si(e){let t=0;return e.requestData!=null&&(t+=Math.min(e.requestSize??0,st)),e.responseData!=null&&(t+=Math.min(e.responseSize??0,st)),t}function Wd(e){let t=0;for(let i of e)t+=Si(i.event);if(t<=mi)return e;let r=[...e].sort((i,s)=>i.pinned!==s.pinned?i.pinned?-1:1:s.savedAt-i.savedAt),o=new Set,n=0;for(let i of r){let s=Si(i.event);n+s<=mi?n+=s:o.add(i.key)}return o.size===0?e:e.map(i=>o.has(i.key)?{...i,event:{...i.event,requestData:void 0,responseData:void 0},bodyTruncated:true}:i)}function Vd(e){if(!Array.isArray(e))return[];let t=[];for(let r of e){if(!r||typeof r!="object")continue;let o=r;typeof o.key=="string"&&yi(o.event)&&(!o.pinned&&!o.saved||t.push({key:o.key,event:{...o.event,id:`saved:${o.key}`},pinned:!!o.pinned,saved:!!o.saved,savedAt:typeof o.savedAt=="number"?o.savedAt:0,sessionId:typeof o.sessionId=="string"?o.sessionId:"unknown",liveId:typeof o.liveId=="string"?o.liveId:"",bodyTruncated:!!o.bodyTruncated}))}return t}var Ud=class{constructor(){this.records=[];this.listeners=new Set;this.loaded=false;this.loadPromise=null;this.dirty=false;this.keyCounter=0;this.trackedLiveIds=new Set;this.state=jd;this.remote=null;this.remoteEchoUntil=0}getState(){return this.state}enableRemoteMode(e){this.remote=e}disableRemoteMode(){this.remote=null}replaceRecords(e,t=false){this.remote&&(!t&&Date.now()<this.remoteEchoUntil||(this.records=e,this.rebuild(),this.emit()))}sessionMatches(e){return this.remote!==null||e.sessionId===To}getRecords(){return this.records}subscribe(e){return this.listeners.add(e),this.ensureLoaded(),()=>{this.listeners.delete(e)}}getEventById(e){for(let t of this.records)if(t.event.id===e)return t.event;return null}isPinned(e){return this.state.pinnedLiveIds.has(e)}isSaved(e){return this.state.savedLiveIds.has(e)}syncFromLive(e){if(this.trackedLiveIds.size===0||!this.trackedLiveIds.has(e.id))return;let t=this.records.findIndex(o=>this.sessionMatches(o)&&o.liveId===e.id);if(t===-1)return;let r=vi(e);this.commit(this.records.map((o,n)=>n===t?{...o,event:r.event,bodyTruncated:r.bodyTruncated}:o))}togglePin(e){return this.setFlag(e,"pinned")}toggleSave(e){return this.setFlag(e,"saved")}remove(e){this.records.some(t=>t.key===e)&&(this.remote?.removeRecord(e),this.commit(this.records.filter(t=>t.key!==e)))}clearSaved(){this.records.some(e=>e.saved)&&(this.remote?.clearSaved(),this.commit(this.records.filter(e=>e.pinned).map(e=>({...e,saved:false}))))}clearPinned(){this.records.some(e=>e.pinned)&&(this.remote?.clearPinned(),this.commit(this.records.filter(e=>e.saved).map(e=>({...e,pinned:false}))))}setFlag(e,t){if(!yi(e))return{ok:false,reason:"invalid-event"};let r=this.findRecordFor(e);if(this.remote){let s=r?!r[t]:true;t==="pinned"?this.remote.setPinned(e.id,s):this.remote.setSaved(e.id,s),this.remoteEchoUntil=Date.now()+Fd}if(r){let s=!r[t];if(s&&!this.hasRoomFor(t,r.key))return{ok:false,reason:t==="pinned"?"pin-cap":"saved-cap"};let l={...r,[t]:s};return this.commit(l.pinned||l.saved?this.records.map(a=>a.key===r.key?l:a):this.records.filter(a=>a.key!==r.key)),{ok:true,active:s}}if(!this.hasRoomFor(t,null))return{ok:false,reason:t==="pinned"?"pin-cap":"saved-cap"};let o=Date.now(),n=vi(e),i={key:`${To}_${++this.keyCounter}`,event:n.event,pinned:t==="pinned",saved:t==="saved",savedAt:o,sessionId:To,liveId:e.id,bodyTruncated:n.bodyTruncated};return this.commit(this.evictIfNeeded([i,...this.records])),{ok:true,active:true}}findRecordFor(e){return this.records.find(t=>t.event.id===e.id||this.sessionMatches(t)&&t.liveId===e.id)}hasRoomFor(e,t){let r=e==="pinned"?Ir:it;return this.records.filter(o=>o[e]&&o.key!==t).length<r}evictIfNeeded(e){let t=e.filter(n=>n.saved);if(t.length<=it)return e;let r=t.filter(n=>!n.pinned).sort((n,i)=>n.savedAt-i.savedAt).slice(0,t.length-it);if(r.length===0)return e;let o=new Set(r.map(n=>n.key));return e.filter(n=>!o.has(n.key))}ensureLoaded(){return this.remote||this.loaded?Promise.resolve():this.loadPromise?this.loadPromise:(this.loadPromise=(async()=>{try{let e=await fi.getItem(pi.network.saved());e&&!this.dirty&&(this.records=Vd(JSON.parse(e)),this.rebuild())}catch{}finally{this.loaded=true,this.emit()}})(),this.loadPromise)}persist(){this.remote||fi.setItem(pi.network.saved(),JSON.stringify(this.records)).catch(()=>{})}commit(e){this.dirty=true,this.records=Wd(e),this.rebuild(),this.emit(),this.persist()}rebuild(){let e=[],t=[],r=new Set,o=new Set,n=new Set;for(let i of this.records)i.pinned&&e.push(i),i.saved&&t.push(i),!(!this.sessionMatches(i)||!i.liveId)&&(n.add(i.liveId),i.pinned&&r.add(i.liveId),i.saved&&o.add(i.liveId));this.trackedLiveIds=n,this.state={records:this.records,pinnedEvents:e.map(i=>i.event),savedRecords:t,pinnedLiveIds:r,savedLiveIds:o}}emit(){this.listeners.forEach(e=>e())}},ae=new Ud;var _d=200,Xd=class extends Nd{constructor(){super({storeName:"network",maxEvents:500});this.pendingRequests=new Map;this.rawListenerUnsubscribe=null;this.bootBuffer=[];this.bootBufferUnsubscribe=null;this.mirrorMode=false}startBootCapture(){if(ci().status==="locked"||this.mirrorMode||this.bootBufferUnsubscribe||this.isCapturing())return;let e=yr();e.isActive||e.startListening(),this.bootBufferUnsubscribe=Jt(t=>{this.bootBuffer.push(t),this.bootBuffer.length>_d&&this.bootBuffer.shift()})}takeBootBuffer(){this.bootBufferUnsubscribe&&(this.bootBufferUnsubscribe(),this.bootBufferUnsubscribe=null);let e=this.bootBuffer;return this.bootBuffer=[],e}startCapturing(){let e=yr();e.isActive||e.startListening();for(let t of this.takeBootBuffer())this.processNetworkEvent(t);this.rawListenerUnsubscribe||(this.rawListenerUnsubscribe=Jt(t=>{this.processNetworkEvent(t)})),e.adoptEarlyRequests()}stopCapturing(){this.takeBootBuffer(),this.rawListenerUnsubscribe&&(this.rawListenerUnsubscribe(),this.rawListenerUnsubscribe=null),pt()===0&&Xt()}disableCapture(){this.mirrorMode=true,this.takeBootBuffer(),pt()===0&&Xt(),super.disableCapture()}isCapturing(){return this.rawListenerUnsubscribe!==null}ensureInterception(){this.isCapturing()&&yr().startListening()}subscribeToEvents(e){let t=super.subscribeToEvents(e);return this.ensureInterception(),t}processNetworkEvent(e){if(ci().status==="locked")return;let{request:t}=e;if(e.type==="request"){if(this.events.some(l=>l.id===t.id))return;let r=t.params?`?${new URLSearchParams(t.params).toString()}`:"",o=`${t.url}${r}`,n,i;t.client==="graphql"&&(n=hi(t.data)||void 0,t.data&&typeof t.data=="object"&&"variables"in t.data&&t.data.variables&&typeof t.data.variables=="object"&&(i=t.data.variables));let s={id:t.id,method:t.method,url:o,host:this.extractHost(t.url),path:this.extractPath(t.url),query:r,timestamp:e.timestamp.getTime(),requestHeaders:t.headers||{},requestData:t.data,requestSize:this.getDataSize(t.data),responseHeaders:{},requestClient:t.client,operationName:n,graphqlVariables:i,override:e.override,condition:e.condition};this.pendingRequests.set(t.id,s),this.events=[s,...this.events].slice(0,this.maxEvents),this.notify(s),this.notifyArrayListeners()}else if(e.type==="request-body"){let r=this.events.find(n=>n.id===t.id);if(!r)return;let o={...r,requestData:t.data,requestSize:this.getDataSize(t.data)};if(t.client==="graphql"){o.operationName=hi(t.data)||void 0;let n=t.data?.variables;n&&typeof n=="object"&&(o.graphqlVariables=n)}this.events=this.events.map(n=>n.id===t.id?o:n),this.pendingRequests.has(t.id)&&this.pendingRequests.set(t.id,o),ae.syncFromLive(o),this.notify(o),this.notifyArrayListeners()}else if(e.type==="response"||e.type==="error"){let r=this.events.findIndex(o=>o.id===t.id);if(r!==-1){let o={...this.events[r],duration:e.duration,timings:e.timings};e.response&&(o.status=e.response.status,o.statusText=e.response.statusText,o.responseHeaders=e.response.headers||{},o.responseData=e.response.body,o.responseSize=e.response.size||0,o.responseType=e.response.headers?.["content-type"]),e.error&&(o.error=e.error.message,o.status=o.status||0),e.override&&(o.override=e.override),this.events=this.events.map((n,i)=>i===r?o:n),this.pendingRequests.delete(t.id),ae.syncFromLive(o),this.notify(o),this.notifyArrayListeners()}}}extractHost(e){try{return new URL(e).hostname}catch{return""}}extractPath(e){try{return new URL(e).pathname}catch{return e}}getDataSize(e){if(!e)return 0;if(typeof e=="string")return e.length;try{return JSON.stringify(e).length}catch{return 0}}getEventById(e){return this.events.find(t=>t.id===e)}clearEvents(){super.clearEvents(),this.pendingRequests.clear()}onEvent(e,t=true){let r=this.subscribe(e);if(t&&this.events.length>0){let o=[...this.events].reverse();for(let n of o)try{e(n)}catch{}}return r}getStats(){let e=this.events.length,t=this.events.filter(a=>a.status&&a.status>=200&&a.status<300).length,r=this.events.filter(a=>a.error||a.status&&a.status>=400).length,o=this.events.filter(a=>!a.status&&!a.error).length,n=this.events.filter(a=>a.duration).map(a=>a.duration),i=n.length>0?n.reduce((a,d)=>a+d,0)/n.length:0,s=this.events.reduce((a,d)=>a+(d.requestSize||0),0),l=this.events.reduce((a,d)=>a+(d.responseSize||0),0);return{totalRequests:e,successfulRequests:t,failedRequests:r,pendingRequests:o,totalDataSent:s,totalDataReceived:l,averageDuration:Math.round(i)}}filterEvents(e){let t=[...this.events];if(e.method&&(t=t.filter(r=>r.method===e.method)),e.status)switch(e.status){case"success":t=t.filter(r=>r.status&&r.status>=200&&r.status<300);break;case"error":t=t.filter(r=>r.error||r.status&&r.status>=400);break;case"pending":t=t.filter(r=>!r.status&&!r.error);break}if(e.searchText){let r=e.searchText.toLowerCase();t=t.filter(o=>o.url.toLowerCase().includes(r)||o.method.toLowerCase().includes(r)||o.error&&o.error.toLowerCase().includes(r))}return e.host&&(t=t.filter(r=>r.host===e.host)),t}},K=new Xd;D();import{useEffect as Jd,useState as Gd}from"react";var Kd=e=>ae.togglePin(e),Yd=e=>ae.toggleSave(e),Zd=e=>ae.remove(e),Qd=()=>ae.clearSaved(),eu=()=>ae.clearPinned();function Ot(){let[e,t]=Gd(()=>ae.getState());return Jd(()=>ae.subscribe(()=>{t(ae.getState())}),[]),{...e,togglePin:Kd,toggleSave:Yd,remove:Zd,clearSaved:Qd,clearPinned:eu}}D();import{useSyncExternalStore as er}from"react";D();var tu=120,ru=class{constructor(){this.ids=[];this.index=-1;this.selectedId=null;this.bodyId=null;this.renderedId=null;this.settleMs=120;this.settleTimer=null;this.subscribers=new Set;this.snapshot=this.buildSnapshot()}buildSnapshot(){return{ids:this.ids,index:this.index,selectedId:this.selectedId,bodyId:this.bodyId,renderedId:this.renderedId}}emit(){this.snapshot=this.buildSnapshot();for(let e of this.subscribers)e(this.snapshot)}getState(){return this.snapshot}subscribe(e){return this.subscribers.add(e),()=>{this.subscribers.delete(e)}}setIds(e){e.length===this.ids.length&&e.every((t,r)=>t===this.ids[r])||(this.ids=e,this.index=this.selectedId==null?-1:e.indexOf(this.selectedId),this.emit())}select(e){e!==this.selectedId&&(this.selectedId=e,this.index=e==null?-1:this.ids.indexOf(e),this.scheduleBody(e),this.emit())}clear(){this.select(null)}step(e){if(this.index<0)return null;let t=this.index+e;if(t<0||t>=this.ids.length)return null;let r=this.ids[t];return this.selectedId=r,this.index=t,this.scheduleBody(r),this.emit(),r}scheduleBody(e){if(this.settleTimer!=null&&(clearTimeout(this.settleTimer),this.settleTimer=null),e==null||this.bodyId==null||this.settleMs<=0){this.bodyId=e;return}this.settleTimer=setTimeout(()=>{this.settleTimer=null,this.bodyId!==this.selectedId&&(this.bodyId=this.selectedId,this.emit())},this.settleMs)}setSettleMs(e){this.settleMs=Math.max(0,e)}getSettleMs(){return this.settleMs}reportRendered(e){e!==this.renderedId&&(this.renderedId=e,this.emit())}reset(){this.settleTimer!=null&&clearTimeout(this.settleTimer),this.settleTimer=null,this.ids=[],this.index=-1,this.selectedId=null,this.bodyId=null,this.renderedId=null,this.emit()}},Ve=new ru;function ou(e){return e.map(t=>t.id)}var tr=e=>Ve.subscribe(e),Ue=()=>Ve.getState();function nu(){return er(tr,()=>Ue().selectedId!=null,()=>Ue().selectedId!=null)}function Ro(){return er(tr,()=>Ue().selectedId,()=>Ue().selectedId)}function iu(){return er(tr,()=>Ue().bodyId,()=>Ue().bodyId)}function su(){let e=er(tr,()=>Ue().index,()=>Ue().index),t=er(tr,()=>Ue().ids.length,()=>Ue().ids.length);return{index:e,total:t}}D();import{useEffect as xi,useState as au}from"react";D();import{urlMatchesIgnoredPattern as lu}from"@buoy-gg/shared-ui/web";function rr(e,t){let r=t.searchText?t.searchText.toLowerCase():null,o=t.method&&t.method.length>0?new Set(t.method):null,n=t.contentType&&t.contentType.length>0?new Set(t.contentType):null,i=[...e];if(o&&(i=i.filter(s=>o.has(s.method))),t.status&&t.status!=="all")switch(t.status){case"success":i=i.filter(s=>s.status&&s.status>=200&&s.status<300);break;case"error":i=i.filter(s=>s.error||s.status&&s.status>=400);break;case"pending":i=i.filter(s=>!s.status&&!s.error);break}return r&&(i=i.filter(s=>s.url.toLowerCase().includes(r)||s.method.toLowerCase().includes(r)||s.path?.toLowerCase().includes(r)||s.host?.toLowerCase().includes(r)||s.error&&s.error.toLowerCase().includes(r)||s.operationName&&s.operationName.toLowerCase().includes(r)||ei(s.graphqlVariables,r))),t.host&&(i=i.filter(s=>s.host===t.host)),n&&(i=i.filter(s=>{let l=s.responseHeaders||s.requestHeaders,a=l?.["content-type"]||l?.["Content-Type"]||"";for(let d of n)switch(d){case"JSON":if(a.includes("json"))return true;break;case"XML":if(a.includes("xml"))return true;break;case"HTML":if(a.includes("html"))return true;break;case"TEXT":if(a.includes("text"))return true;break;case"IMAGE":if(a.includes("image"))return true;break;case"VIDEO":if(a.includes("video"))return true;break;case"AUDIO":if(a.includes("audio"))return true;break;case"FORM":if(a.includes("form"))return true;break;case"OTHER":if(!a||!a.includes("json")&&!a.includes("xml")&&!a.includes("html")&&!a.includes("text")&&!a.includes("image")&&!a.includes("video")&&!a.includes("audio")&&!a.includes("form"))return true;break}return false})),i}function or(e,t){return t.length===0?e:e.filter(r=>!t.some(o=>lu(r.url,o)))}function wi(e,t){let r=0,o=0,n=0;for(let i of or(e,t))i.status&&i.status>=200&&i.status<300?r++:i.error||i.status&&i.status>=400?o++:!i.status&&!i.error&&n++;return{successful:r,failed:o,pending:n,total:e.length}}function du(e,t){return e.successful===t.successful&&e.failed===t.failed&&e.pending===t.pending&&e.total===t.total}function Ci(e){let{ignoredPatterns:t,paused:r}=e,[o,n]=au(()=>wi(K.getEvents(),t));return xi(()=>{if(r)return;let i=null,s=null,l=K.subscribeToEvents(a=>{s=a,i==null&&(i=requestAnimationFrame(()=>{if(i=null,!s)return;let d=wi(s,t);s=null,n(b=>du(b,d)?b:d)}))});return()=>{l(),i!=null&&cancelAnimationFrame(i)}},[r,t]),xi(()=>K.onClear(()=>{n({successful:0,failed:0,pending:0,total:0})}),[]),o}D();import{useEffect as Br,useState as Ti}from"react";function uu(e){let{paused:t}=e,[r,o]=Ti(()=>K.getEvents().length>0);return Br(()=>{if(!t)return K.subscribeToEvents(n=>{let i=n.length>0;o(s=>s===i?s:i)})},[t]),Br(()=>K.onClear(()=>o(false)),[]),r}function cu(e){let{filter:t,ignoredPatterns:r,paused:o}=e,[n,i]=Ti(()=>rr(or(K.getEvents(),r),t).length>0);return Br(()=>{if(!o)return K.subscribeToEvents(s=>{let l=rr(or(s,r),t).length>0;i(a=>a===l?a:l)})},[o,t,r]),Br(()=>K.onClear(()=>i(false)),[]),n}D();function qr(e){if(e==null)return"N/A";if(e===0)return"0 B";let t=1024,r=["B","KB","MB","GB","TB"],o=Math.floor(Math.log(e)/Math.log(t));return`${(e/Math.pow(t,o)).toFixed(1)} ${r[o]}`}function Or(e,t){if(t===-1||!e)return true;try{return JSON.stringify(e).length<t*1024}catch{return false}}function Ri(e,t){let r=e;if(t.filterMode==="failed"?r=r.filter(n=>n.error||n.status&&n.status>=400):t.filterMode==="success"&&(r=r.filter(n=>n.status&&n.status>=200&&n.status<300)),r.length===0)return"No requests to copy";if(t.format==="plaintext")return r.map(n=>`${n.method} ${n.url}`).join(`
102
- `);if(t.format==="json"){let n=r.map(i=>{let s={};return t.includeMethod&&(s.method=i.method,s.url=i.url),t.includeStatus&&(s.status=i.status,s.statusText=i.statusText),t.includeDuration&&(s.duration=i.duration),i.condition&&(s.condition=i.condition),t.includeTimestamp&&(s.timestamp=i.timestamp),t.includeClient&&(s.requestClient=i.requestClient),t.includeSizes&&(s.requestSize=i.requestSize,s.responseSize=i.responseSize),t.includeErrors&&i.error&&(s.error=i.error),t.includeRequestHeaders&&(s.requestHeaders=i.requestHeaders),t.includeResponseHeaders&&(s.responseHeaders=i.responseHeaders),t.includeRequestBody&&Or(i.requestData,t.bodySizeThreshold)&&(s.requestData=i.requestData),t.includeResponseBody&&Or(i.responseData,t.bodySizeThreshold)&&(s.responseData=i.responseData),s});return JSON.stringify(n,null,2)}let o=r.map((n,i)=>{let s=`# Request ${i+1}
101
+ \u2026 truncated by Buoy (body exceeded ${st} bytes)`,truncated:true}}catch{return{value:"[unserializable body]",truncated:true}}}function Pi(e){let t=Ii(e.requestData),r=Ii(e.responseData);return!t.truncated&&!r.truncated?{event:{...e},bodyTruncated:false}:{event:{...e,requestData:t.value,responseData:r.value},bodyTruncated:true}}function Li(e){let t=0;return e.requestData!=null&&(t+=Math.min(e.requestSize??0,st)),e.responseData!=null&&(t+=Math.min(e.responseSize??0,st)),t}function lu(e){let t=0;for(let i of e)t+=Li(i.event);if(t<=Ei)return e;let r=[...e].sort((i,s)=>i.pinned!==s.pinned?i.pinned?-1:1:s.savedAt-i.savedAt),o=new Set,n=0;for(let i of r){let s=Li(i.event);n+s<=Ei?n+=s:o.add(i.key)}return o.size===0?e:e.map(i=>o.has(i.key)?{...i,event:{...i.event,requestData:void 0,responseData:void 0},bodyTruncated:true}:i)}function du(e){if(!Array.isArray(e))return[];let t=[];for(let r of e){if(!r||typeof r!="object")continue;let o=r;typeof o.key=="string"&&Bo(o.event)&&(!o.pinned&&!o.saved||t.push({key:o.key,event:{...o.event,id:`saved:${o.key}`},pinned:!!o.pinned,saved:!!o.saved,savedAt:typeof o.savedAt=="number"?o.savedAt:0,sessionId:typeof o.sessionId=="string"?o.sessionId:"unknown",liveId:typeof o.liveId=="string"?o.liveId:"",bodyTruncated:!!o.bodyTruncated}))}return t}var uu=class{constructor(){this.records=[];this.listeners=new Set;this.loaded=false;this.loadPromise=null;this.dirty=false;this.keyCounter=0;this.trackedLiveIds=new Set;this.state=au;this.remote=null;this.remoteEchoUntil=0}getState(){return this.state}enableRemoteMode(e){this.remote=e}disableRemoteMode(){this.remote=null}replaceRecords(e,t=false){this.remote&&(!t&&Date.now()<this.remoteEchoUntil||(this.records=e.filter(r=>Bo(r.event)),this.rebuild(),this.emit()))}sessionMatches(e){return this.remote!==null||e.sessionId===Lo}getRecords(){return this.records}subscribe(e){return this.listeners.add(e),this.ensureLoaded(),()=>{this.listeners.delete(e)}}getEventById(e){for(let t of this.records)if(t.event.id===e)return t.event;return null}isPinned(e){return this.state.pinnedLiveIds.has(e)}isSaved(e){return this.state.savedLiveIds.has(e)}syncFromLive(e){if(this.trackedLiveIds.size===0||!this.trackedLiveIds.has(e.id))return;let t=this.records.findIndex(o=>this.sessionMatches(o)&&o.liveId===e.id);if(t===-1)return;let r=Pi(e);this.commit(this.records.map((o,n)=>n===t?{...o,event:r.event,bodyTruncated:r.bodyTruncated}:o))}togglePin(e){return this.setFlag(e,"pinned")}toggleSave(e){return this.setFlag(e,"saved")}remove(e){this.records.some(t=>t.key===e)&&(this.remote?.removeRecord(e),this.commit(this.records.filter(t=>t.key!==e)))}clearSaved(){this.records.some(e=>e.saved)&&(this.remote?.clearSaved(),this.commit(this.records.filter(e=>e.pinned).map(e=>({...e,saved:false}))))}clearPinned(){this.records.some(e=>e.pinned)&&(this.remote?.clearPinned(),this.commit(this.records.filter(e=>e.saved).map(e=>({...e,pinned:false}))))}setFlag(e,t){if(!Bo(e))return{ok:false,reason:"invalid-event"};let r=this.findRecordFor(e);if(this.remote){let s=r?!r[t]:true;t==="pinned"?this.remote.setPinned(e.id,s):this.remote.setSaved(e.id,s),this.remoteEchoUntil=Date.now()+su}if(r){let s=!r[t];if(s&&!this.hasRoomFor(t,r.key))return{ok:false,reason:t==="pinned"?"pin-cap":"saved-cap"};let l={...r,[t]:s};return this.commit(l.pinned||l.saved?this.records.map(a=>a.key===r.key?l:a):this.records.filter(a=>a.key!==r.key)),{ok:true,active:s}}if(!this.hasRoomFor(t,null))return{ok:false,reason:t==="pinned"?"pin-cap":"saved-cap"};let o=Date.now(),n=Pi(e),i={key:`${Lo}_${++this.keyCounter}`,event:n.event,pinned:t==="pinned",saved:t==="saved",savedAt:o,sessionId:Lo,liveId:e.id,bodyTruncated:n.bodyTruncated};return this.commit(this.evictIfNeeded([i,...this.records])),{ok:true,active:true}}findRecordFor(e){return this.records.find(t=>t.event.id===e.id||this.sessionMatches(t)&&t.liveId===e.id)}hasRoomFor(e,t){let r=e==="pinned"?Br:it;return this.records.filter(o=>o[e]&&o.key!==t).length<r}evictIfNeeded(e){let t=e.filter(n=>n.saved);if(t.length<=it)return e;let r=t.filter(n=>!n.pinned).sort((n,i)=>n.savedAt-i.savedAt).slice(0,t.length-it);if(r.length===0)return e;let o=new Set(r.map(n=>n.key));return e.filter(n=>!o.has(n.key))}ensureLoaded(){return this.remote||this.loaded?Promise.resolve():this.loadPromise?this.loadPromise:(this.loadPromise=(async()=>{try{let e=await ki.getItem(Ti.network.saved());e&&!this.dirty&&(this.records=du(JSON.parse(e)),this.rebuild())}catch{}finally{this.loaded=true,this.emit()}})(),this.loadPromise)}persist(){this.remote||ki.setItem(Ti.network.saved(),JSON.stringify(this.records)).catch(()=>{})}commit(e){this.dirty=true,this.records=lu(e),this.rebuild(),this.emit(),this.persist()}rebuild(){let e=[],t=[],r=new Set,o=new Set,n=new Set;for(let i of this.records)i.pinned&&e.push(i),i.saved&&t.push(i),!(!this.sessionMatches(i)||!i.liveId)&&(n.add(i.liveId),i.pinned&&r.add(i.liveId),i.saved&&o.add(i.liveId));this.trackedLiveIds=n,this.state={records:this.records,pinnedEvents:e.map(i=>i.event),savedRecords:t,pinnedLiveIds:r,savedLiveIds:o}}emit(){this.listeners.forEach(e=>e())}},ae=new uu;var cu=200,hu=class extends ou{constructor(){super({storeName:"network",maxEvents:500});this.pendingRequests=new Map;this.rawListenerUnsubscribe=null;this.bootBuffer=[];this.bootBufferUnsubscribe=null;this.mirrorMode=false}replaceEvents(e){super.replaceEvents(e.filter(t=>!xi(t.url)))}startBootCapture(){if(wi().status==="locked"||this.mirrorMode||this.bootBufferUnsubscribe||this.isCapturing())return;let e=vr();e.isActive||e.startListening(),this.bootBufferUnsubscribe=Kt(t=>{this.bootBuffer.push(t),this.bootBuffer.length>cu&&this.bootBuffer.shift()})}takeBootBuffer(){this.bootBufferUnsubscribe&&(this.bootBufferUnsubscribe(),this.bootBufferUnsubscribe=null);let e=this.bootBuffer;return this.bootBuffer=[],e}startCapturing(){let e=vr();e.isActive||e.startListening();for(let t of this.takeBootBuffer())this.processNetworkEvent(t);this.rawListenerUnsubscribe||(this.rawListenerUnsubscribe=Kt(t=>{this.processNetworkEvent(t)})),e.adoptEarlyRequests()}stopCapturing(){this.takeBootBuffer(),this.rawListenerUnsubscribe&&(this.rawListenerUnsubscribe(),this.rawListenerUnsubscribe=null),ft()===0&&Gt()}disableCapture(){this.mirrorMode=true,this.takeBootBuffer(),ft()===0&&Gt(),super.disableCapture()}isCapturing(){return this.rawListenerUnsubscribe!==null}ensureInterception(){this.isCapturing()&&vr().startListening()}subscribeToEvents(e){let t=super.subscribeToEvents(e);return this.ensureInterception(),t}processNetworkEvent(e){if(wi().status==="locked")return;let{request:t}=e;if(!xi(t.url)){if(e.type==="request"){if(this.events.some(l=>l.id===t.id))return;let r=t.params?`?${new URLSearchParams(t.params).toString()}`:"",o=`${t.url}${r}`,n,i;t.client==="graphql"&&(n=Ci(t.data)||void 0,t.data&&typeof t.data=="object"&&"variables"in t.data&&t.data.variables&&typeof t.data.variables=="object"&&(i=t.data.variables));let s={id:t.id,method:t.method,url:o,host:this.extractHost(t.url),path:this.extractPath(t.url),query:r,timestamp:e.timestamp.getTime(),requestHeaders:t.headers||{},requestData:t.data,requestSize:this.getDataSize(t.data),responseHeaders:{},requestClient:t.client,operationName:n,graphqlVariables:i,override:e.override,condition:e.condition};this.pendingRequests.set(t.id,s),this.events=[s,...this.events].slice(0,this.maxEvents),this.notify(s),this.notifyArrayListeners()}else if(e.type==="request-body"){let r=this.events.find(n=>n.id===t.id);if(!r)return;let o={...r,requestData:t.data,requestSize:this.getDataSize(t.data)};if(t.client==="graphql"){o.operationName=Ci(t.data)||void 0;let n=t.data?.variables;n&&typeof n=="object"&&(o.graphqlVariables=n)}this.events=this.events.map(n=>n.id===t.id?o:n),this.pendingRequests.has(t.id)&&this.pendingRequests.set(t.id,o),ae.syncFromLive(o),this.notify(o),this.notifyArrayListeners()}else if(e.type==="response"||e.type==="error"){let r=this.events.findIndex(o=>o.id===t.id);if(r!==-1){let o={...this.events[r],duration:e.duration,timings:e.timings};e.response&&(o.status=e.response.status,o.statusText=e.response.statusText,o.responseHeaders=e.response.headers||{},o.responseData=e.response.body,o.responseSize=e.response.size||0,o.responseType=e.response.headers?.["content-type"]),e.error&&(o.error=e.error.message,o.status=o.status||0),e.override&&(o.override=e.override),this.events=this.events.map((n,i)=>i===r?o:n),this.pendingRequests.delete(t.id),ae.syncFromLive(o),this.notify(o),this.notifyArrayListeners()}}}}extractHost(e){try{return new URL(e).hostname}catch{return""}}extractPath(e){try{return new URL(e).pathname}catch{return e}}getDataSize(e){if(!e)return 0;if(typeof e=="string")return e.length;try{return JSON.stringify(e).length}catch{return 0}}getEventById(e){return this.events.find(t=>t.id===e)}clearEvents(){super.clearEvents(),this.pendingRequests.clear()}onEvent(e,t=true){let r=this.subscribe(e);if(t&&this.events.length>0){let o=[...this.events].reverse();for(let n of o)try{e(n)}catch{}}return r}getStats(){let e=this.events.length,t=this.events.filter(a=>a.status&&a.status>=200&&a.status<300).length,r=this.events.filter(a=>a.error||a.status&&a.status>=400).length,o=this.events.filter(a=>!a.status&&!a.error).length,n=this.events.filter(a=>a.duration).map(a=>a.duration),i=n.length>0?n.reduce((a,d)=>a+d,0)/n.length:0,s=this.events.reduce((a,d)=>a+(d.requestSize||0),0),l=this.events.reduce((a,d)=>a+(d.responseSize||0),0);return{totalRequests:e,successfulRequests:t,failedRequests:r,pendingRequests:o,totalDataSent:s,totalDataReceived:l,averageDuration:Math.round(i)}}filterEvents(e){let t=[...this.events];if(e.method&&(t=t.filter(r=>r.method===e.method)),e.status)switch(e.status){case"success":t=t.filter(r=>r.status&&r.status>=200&&r.status<300);break;case"error":t=t.filter(r=>r.error||r.status&&r.status>=400);break;case"pending":t=t.filter(r=>!r.status&&!r.error);break}if(e.searchText){let r=e.searchText.toLowerCase();t=t.filter(o=>o.url.toLowerCase().includes(r)||o.method.toLowerCase().includes(r)||o.error&&o.error.toLowerCase().includes(r))}return e.host&&(t=t.filter(r=>r.host===e.host)),t}},K=new hu;O();import{useEffect as pu,useState as fu}from"react";var gu=e=>ae.togglePin(e),mu=e=>ae.toggleSave(e),yu=e=>ae.remove(e),bu=()=>ae.clearSaved(),vu=()=>ae.clearPinned();function zt(){let[e,t]=fu(()=>ae.getState());return pu(()=>ae.subscribe(()=>{t(ae.getState())}),[]),{...e,togglePin:gu,toggleSave:mu,remove:yu,clearSaved:bu,clearPinned:vu}}O();import{useSyncExternalStore as rr}from"react";O();var Su=120,xu=class{constructor(){this.ids=[];this.index=-1;this.selectedId=null;this.bodyId=null;this.renderedId=null;this.settleMs=120;this.settleTimer=null;this.subscribers=new Set;this.snapshot=this.buildSnapshot()}buildSnapshot(){return{ids:this.ids,index:this.index,selectedId:this.selectedId,bodyId:this.bodyId,renderedId:this.renderedId}}emit(){this.snapshot=this.buildSnapshot();for(let e of this.subscribers)e(this.snapshot)}getState(){return this.snapshot}subscribe(e){return this.subscribers.add(e),()=>{this.subscribers.delete(e)}}setIds(e){e.length===this.ids.length&&e.every((t,r)=>t===this.ids[r])||(this.ids=e,this.index=this.selectedId==null?-1:e.indexOf(this.selectedId),this.emit())}select(e){e!==this.selectedId&&(this.selectedId=e,this.index=e==null?-1:this.ids.indexOf(e),this.scheduleBody(e),this.emit())}clear(){this.select(null)}step(e){if(this.index<0)return null;let t=this.index+e;if(t<0||t>=this.ids.length)return null;let r=this.ids[t];return this.selectedId=r,this.index=t,this.scheduleBody(r),this.emit(),r}scheduleBody(e){if(this.settleTimer!=null&&(clearTimeout(this.settleTimer),this.settleTimer=null),e==null||this.bodyId==null||this.settleMs<=0){this.bodyId=e;return}this.settleTimer=setTimeout(()=>{this.settleTimer=null,this.bodyId!==this.selectedId&&(this.bodyId=this.selectedId,this.emit())},this.settleMs)}setSettleMs(e){this.settleMs=Math.max(0,e)}getSettleMs(){return this.settleMs}reportRendered(e){e!==this.renderedId&&(this.renderedId=e,this.emit())}reset(){this.settleTimer!=null&&clearTimeout(this.settleTimer),this.settleTimer=null,this.ids=[],this.index=-1,this.selectedId=null,this.bodyId=null,this.renderedId=null,this.emit()}},Ve=new xu;function wu(e){return e.map(t=>t.id)}var or=e=>Ve.subscribe(e),Ue=()=>Ve.getState();function Cu(){return rr(or,()=>Ue().selectedId!=null,()=>Ue().selectedId!=null)}function qo(){return rr(or,()=>Ue().selectedId,()=>Ue().selectedId)}function Tu(){return rr(or,()=>Ue().bodyId,()=>Ue().bodyId)}function ku(){let e=rr(or,()=>Ue().index,()=>Ue().index),t=rr(or,()=>Ue().ids.length,()=>Ue().ids.length);return{index:e,total:t}}O();import{useEffect as Bi,useState as Ru}from"react";O();import{urlMatchesIgnoredPattern as Eu}from"@buoy-gg/shared-ui/web";function nr(e,t){let r=t.searchText?t.searchText.toLowerCase():null,o=t.method&&t.method.length>0?new Set(t.method):null,n=t.contentType&&t.contentType.length>0?new Set(t.contentType):null,i=[...e];if(o&&(i=i.filter(s=>o.has(s.method))),t.status&&t.status!=="all")switch(t.status){case"success":i=i.filter(s=>s.status&&s.status>=200&&s.status<300);break;case"error":i=i.filter(s=>s.error||s.status&&s.status>=400);break;case"pending":i=i.filter(s=>!s.status&&!s.error);break}return r&&(i=i.filter(s=>s.url.toLowerCase().includes(r)||s.method.toLowerCase().includes(r)||s.path?.toLowerCase().includes(r)||s.host?.toLowerCase().includes(r)||s.error&&s.error.toLowerCase().includes(r)||s.operationName&&s.operationName.toLowerCase().includes(r)||ui(s.graphqlVariables,r))),t.host&&(i=i.filter(s=>s.host===t.host)),n&&(i=i.filter(s=>{let l=s.responseHeaders||s.requestHeaders,a=l?.["content-type"]||l?.["Content-Type"]||"";for(let d of n)switch(d){case"JSON":if(a.includes("json"))return true;break;case"XML":if(a.includes("xml"))return true;break;case"HTML":if(a.includes("html"))return true;break;case"TEXT":if(a.includes("text"))return true;break;case"IMAGE":if(a.includes("image"))return true;break;case"VIDEO":if(a.includes("video"))return true;break;case"AUDIO":if(a.includes("audio"))return true;break;case"FORM":if(a.includes("form"))return true;break;case"OTHER":if(!a||!a.includes("json")&&!a.includes("xml")&&!a.includes("html")&&!a.includes("text")&&!a.includes("image")&&!a.includes("video")&&!a.includes("audio")&&!a.includes("form"))return true;break}return false})),i}function ir(e,t){return t.length===0?e:e.filter(r=>!t.some(o=>Eu(r.url,o)))}function qi(e,t){let r=0,o=0,n=0;for(let i of ir(e,t))i.status&&i.status>=200&&i.status<300?r++:i.error||i.status&&i.status>=400?o++:!i.status&&!i.error&&n++;return{successful:r,failed:o,pending:n,total:e.length}}function Iu(e,t){return e.successful===t.successful&&e.failed===t.failed&&e.pending===t.pending&&e.total===t.total}function Oi(e){let{ignoredPatterns:t,paused:r}=e,[o,n]=Ru(()=>qi(K.getEvents(),t));return Bi(()=>{if(r)return;let i=null,s=null,l=K.subscribeToEvents(a=>{s=a,i==null&&(i=requestAnimationFrame(()=>{if(i=null,!s)return;let d=qi(s,t);s=null,n(c=>Iu(c,d)?c:d)}))});return()=>{l(),i!=null&&cancelAnimationFrame(i)}},[r,t]),Bi(()=>K.onClear(()=>{n({successful:0,failed:0,pending:0,total:0})}),[]),o}O();import{useEffect as Or,useState as Di}from"react";function Pu(e){let{paused:t}=e,[r,o]=Di(()=>K.getEvents().length>0);return Or(()=>{if(!t)return K.subscribeToEvents(n=>{let i=n.length>0;o(s=>s===i?s:i)})},[t]),Or(()=>K.onClear(()=>o(false)),[]),r}function Lu(e){let{filter:t,ignoredPatterns:r,paused:o}=e,[n,i]=Di(()=>nr(ir(K.getEvents(),r),t).length>0);return Or(()=>{if(!o)return K.subscribeToEvents(s=>{let l=nr(ir(s,r),t).length>0;i(a=>a===l?a:l)})},[o,t,r]),Or(()=>K.onClear(()=>i(false)),[]),n}O();function Dr(e){if(e==null)return"N/A";if(e===0)return"0 B";let t=1024,r=["B","KB","MB","GB","TB"],o=Math.floor(Math.log(e)/Math.log(t));return`${(e/Math.pow(t,o)).toFixed(1)} ${r[o]}`}function zr(e,t){if(t===-1||!e)return true;try{return JSON.stringify(e).length<t*1024}catch{return false}}function zi(e,t){let r=e;if(t.filterMode==="failed"?r=r.filter(n=>n.error||n.status&&n.status>=400):t.filterMode==="success"&&(r=r.filter(n=>n.status&&n.status>=200&&n.status<300)),r.length===0)return"No requests to copy";if(t.format==="plaintext")return r.map(n=>`${n.method} ${n.url}`).join(`
102
+ `);if(t.format==="json"){let n=r.map(i=>{let s={};return t.includeMethod&&(s.method=i.method,s.url=i.url),t.includeStatus&&(s.status=i.status,s.statusText=i.statusText),t.includeDuration&&(s.duration=i.duration),i.condition&&(s.condition=i.condition),t.includeTimestamp&&(s.timestamp=i.timestamp),t.includeClient&&(s.requestClient=i.requestClient),t.includeSizes&&(s.requestSize=i.requestSize,s.responseSize=i.responseSize),t.includeErrors&&i.error&&(s.error=i.error),t.includeRequestHeaders&&(s.requestHeaders=i.requestHeaders),t.includeResponseHeaders&&(s.responseHeaders=i.responseHeaders),t.includeRequestBody&&zr(i.requestData,t.bodySizeThreshold)&&(s.requestData=i.requestData),t.includeResponseBody&&zr(i.responseData,t.bodySizeThreshold)&&(s.responseData=i.responseData),s});return JSON.stringify(n,null,2)}let o=r.map((n,i)=>{let s=`# Request ${i+1}
103
103
 
104
104
  `;if(t.includeMethod&&(s+=`**Method:** ${n.method}
105
105
  `,s+=`**URL:** ${n.url}
@@ -108,7 +108,7 @@ Response:`),ne.push(JSON.stringify(pe||{},null,2))}return ne.join(`
108
108
  `),n.condition&&(s+=`Conditions: ${n.condition.profile} (+${n.condition.delayMs} ms)
109
109
  `),t.includeDuration&&n.duration&&(s+=`**Duration:** ${n.duration}ms
110
110
  `),t.includeTimestamp&&(s+=`**Timestamp:** ${new Date(n.timestamp).toISOString()}
111
- `),t.includeSizes){let l=n.requestSize?qr(n.requestSize):"N/A",a=n.responseSize?qr(n.responseSize):"N/A";s+=`**Request Size:** ${l}
111
+ `),t.includeSizes){let l=n.requestSize?Dr(n.requestSize):"N/A",a=n.responseSize?Dr(n.responseSize):"N/A";s+=`**Request Size:** ${l}
112
112
  `,s+=`**Response Size:** ${a}
113
113
  `}if(t.includeErrors&&n.error&&(s+=`**Error:** ${n.error}
114
114
  `),t.includeRequestHeaders&&Object.keys(n.requestHeaders).length>0&&(s+=`
@@ -118,10 +118,10 @@ ${JSON.stringify(n.requestHeaders,null,2)}
118
118
  \`\`\`
119
119
  `),t.includeRequestBody)if(s+=`
120
120
  ## Request Data
121
- `,Or(n.requestData,t.bodySizeThreshold))s+=`\`\`\`json
121
+ `,zr(n.requestData,t.bodySizeThreshold))s+=`\`\`\`json
122
122
  ${JSON.stringify(n.requestData,null,2)}
123
123
  \`\`\`
124
- `;else{let l=n.requestSize?qr(n.requestSize):"Unknown size";s+=`_Payload omitted (${l}). Exceeds ${t.bodySizeThreshold}KB threshold._
124
+ `;else{let l=n.requestSize?Dr(n.requestSize):"Unknown size";s+=`_Payload omitted (${l}). Exceeds ${t.bodySizeThreshold}KB threshold._
125
125
  `}if(t.includeResponseHeaders&&Object.keys(n.responseHeaders).length>0&&(s+=`
126
126
  ## Response Headers
127
127
  \`\`\`json
@@ -129,17 +129,17 @@ ${JSON.stringify(n.responseHeaders,null,2)}
129
129
  \`\`\`
130
130
  `),t.includeResponseBody)if(s+=`
131
131
  ## Response Data
132
- `,Or(n.responseData,t.bodySizeThreshold))s+=`\`\`\`json
132
+ `,zr(n.responseData,t.bodySizeThreshold))s+=`\`\`\`json
133
133
  ${JSON.stringify(n.responseData,null,2)}
134
134
  \`\`\`
135
- `;else{let l=n.responseSize?qr(n.responseSize):"Unknown size";s+=`_Payload omitted (${l}). Exceeds ${t.bodySizeThreshold}KB threshold._
135
+ `;else{let l=n.responseSize?Dr(n.responseSize):"Unknown size";s+=`_Payload omitted (${l}). Exceeds ${t.bodySizeThreshold}KB threshold._
136
136
  `}return s+=`
137
137
  ---
138
138
  `,s}).join(`
139
139
  `);return`# Network Requests (${r.length} total)
140
140
 
141
- `+o}import{Fragment as hu,jsx as he,jsxs as xt}from"react/jsx-runtime";function pu({activeStatus:e,onToggleStatus:t,ignoredPatterns:r,paused:o}){let n=Ci({ignoredPatterns:r,paused:o});return he(ki,{counts:n,activeStatus:e,onToggleStatus:t})}function ki({counts:e,activeStatus:t,onToggleStatus:r}){return xt(p,{style:te.headerChipRow,children:[xt(N,{style:[te.headerChip,t==="success"&&te.headerChipActive],onPress:()=>r("success"),children:[he(Bd,{size:12,color:nt.semantic.success}),he(y,{style:[te.headerChipValue,{color:nt.semantic.success}],children:e.successful})]}),xt(N,{style:[te.headerChip,t==="error"&&te.headerChipActive],onPress:()=>r("error"),children:[he(qd,{size:12,color:nt.semantic.error}),he(y,{style:[te.headerChipValue,{color:nt.semantic.error}],children:e.failed})]}),xt(N,{style:[te.headerChip,t==="pending"&&te.headerChipActive],onPress:()=>r("pending"),children:[he(Od,{size:12,color:nt.semantic.warning}),he(y,{style:[te.headerChipValue,{color:nt.semantic.warning}],children:e.pending})]})]})}function fu({paused:e}){let t=uu({paused:e});return he(N,{"sentry-label":"ignore clear events",testID:"buoy-network-clear",accessibilityLabel:"Clear network requests",accessibilityRole:"button",onPress:()=>K.clearEvents(),style:[te.headerActionButton,!t&&te.headerActionButtonDisabled],disabled:!t,children:he(Ad,{size:14,color:t?oe.color.textSecondary:oe.color.textTertiary})})}function gu({onPress:e}){let{savedRecords:t}=Ot(),r=t.length;return xt(N,{"sentry-label":"ignore open saved",onPress:e,accessibilityLabel:"Saved requests",style:te.headerActionButton,children:[he(di,{size:14,color:r>0?oe.color.accent:oe.color.textSecondary}),r>0?he(p,{style:te.savedBadge,children:he(y,{style:te.savedBadgeText,children:r>99?"99+":r})}):null]})}function Ei({isPro:e,onUpgradePress:t}){let r=Ro(),o=Ot(),{pinned:n,saved:i}=Lr(o,r),s=Md("network.saved"),l=!n&&o.pinnedEvents.length>=Ir,a=!i&&o.savedRecords.length>=s,d=()=>r?K.getEvents().find(C=>C.id===r)??ae.getEventById(r):null,b=()=>{let C=d();C&&o.togglePin(C)},E=()=>{if(a&&!e){t();return}let C=d();C&&o.toggleSave(C)};return xt(hu,{children:[he(N,{"sentry-label":"ignore pin request",onPress:b,disabled:l,testID:"buoy-network-pin",accessibilityRole:"button",accessibilityLabel:n?"Unpin request":"Pin request",accessibilityHint:l?`Pin limit reached (${Ir})`:void 0,style:[te.headerActionButton,n&&te.headerActionButtonActive,l&&te.headerActionButtonDisabled],children:he(zd,{size:14,active:n,color:n?oe.color.accent:l?oe.color.textTertiary:oe.color.textSecondary})}),he(N,{"sentry-label":"ignore save request",onPress:E,disabled:a&&e,testID:"buoy-network-save",accessibilityRole:"button",accessibilityLabel:i?"Remove from saved":"Save request",accessibilityHint:a&&e?`Saved limit reached (${it})`:void 0,style:[te.headerActionButton,i&&te.headerActionButtonSaved,a&&e&&te.headerActionButtonDisabled],children:he(di,{size:14,color:i?oe.color.accent:a&&e?oe.color.textTertiary:oe.color.textSecondary})})]})}function mu({isPro:e,filter:t,ignoredPatterns:r,copySettings:o,paused:n,onUpgradePress:i,label:s}){let l=cu({filter:t,ignoredPatterns:r,paused:n});return e?he(Hd,{value:()=>Ri(rr(or(K.getEvents(),r),t),o),size:14,label:s,buttonStyle:s?te.copyMenuRow:te.headerActionButton,labelStyle:te.copyMenuLabel,colors:{idle:l?oe.color.textSecondary:oe.color.textTertiary,success:nt.semantic.success,error:nt.semantic.error},disabled:!l}):xt(N,{"sentry-label":"ignore copy pro",onPress:i,style:[s?te.copyMenuRow:te.headerActionButton,!l&&te.headerActionButtonDisabled],disabled:!l,children:[he(Dd,{size:14,color:l?oe.color.textSecondary:oe.color.textTertiary}),s?he(y,{style:te.copyMenuLabel,children:s}):null]})}var te=fe.create({copyMenuRow:{flexDirection:"row",alignItems:"center",gap:10,paddingHorizontal:6,paddingVertical:11,justifyContent:"flex-start"},copyMenuLabel:{fontSize:13,fontWeight:"600",color:oe.color.text},headerChipRow:{flexDirection:"row",alignItems:"center",gap:8},headerChip:{flexDirection:"row",alignItems:"center",gap:4,backgroundColor:oe.color.buttonSurface,paddingHorizontal:10,paddingVertical:5,borderRadius:12,borderWidth:1,borderColor:oe.color.border},headerChipActive:{backgroundColor:oe.color.accentSoft,borderColor:oe.color.accentBorderStrong},headerChipValue:{fontSize:12,fontWeight:"600",fontFamily:ui},headerActionButton:{width:32,height:32,borderRadius:8,backgroundColor:oe.color.buttonSurface,borderWidth:1,borderColor:oe.color.border,alignItems:"center",justifyContent:"center"},headerActionButtonDisabled:{opacity:.55},headerActionButtonActive:{backgroundColor:oe.color.accentSoft,borderColor:oe.color.accentBorderStrong},headerActionButtonSaved:{backgroundColor:oe.color.accentSoft,borderColor:oe.color.accentBorderStrong},savedBadge:{position:"absolute",top:-3,right:-3,minWidth:14,height:14,paddingHorizontal:3,borderRadius:7,backgroundColor:oe.color.accent,alignItems:"center",justifyContent:"center"},savedBadgeText:{color:oe.color.onAccent,fontSize:9,fontWeight:"700",fontFamily:ui}});D();ce();import{useCallback as yu}from"react";import{FlaskConical as bu,Pin as vu,Power as Su,macOSColors as ve,ToolEmptyState as xu,resolveListEmptyState as wu,EVENT_LIST_PRESET as Cu,monoFont as Tu}from"@buoy-gg/shared-ui/web";D();ce();import{memo as Ru}from"react";import{ChevronRight as ku,Upload as Eu,Download as Pu,Clock as Iu,AlertCircle as Lu,Bookmark as Bu,FlaskConical as qu,Pin as Ou,DevToolsCard as Du,MethodBadge as zu,TypeBadge as Au,night as Ce,macOSColors as Dt,monoFont as ko}from"@buoy-gg/shared-ui/web";import{formatRelativeTime as Hu}from"@buoy-gg/shared-ui/web";import{jsx as ie,jsxs as _e}from"react/jsx-runtime";function Mu(e,t){return t?Dt.semantic.error:e?e>=200&&e<300?Dt.semantic.success:e>=300&&e<400?Dt.semantic.info:e>=400?Dt.semantic.error:Dt.text.muted:Dt.semantic.warning}function Nu(e){let t=e?.["content-type"]||e?.["Content-Type"]||"";return t.includes("json")?"JSON":t.includes("xml")?"XML":t.includes("html")?"HTML":t.includes("text")?"TEXT":t.includes("image")?"IMG":t.includes("video")?"VIDEO":t.includes("audio")?"AUDIO":t.includes("form")?"FORM":null}function Pi(e){switch(e){case"fetch":return{backgroundColor:"rgba(74, 144, 226, 0.15)",color:"#4A90E2"};case"graphql":return{backgroundColor:"rgba(229, 53, 171, 0.15)",color:"#E535AB"};case"grpc-web":return{backgroundColor:"rgba(16, 185, 129, 0.15)",color:"#10B981"};case"xhr":return{backgroundColor:"rgba(245, 158, 11, 0.15)",color:"#F59E0B"};default:return{backgroundColor:"rgba(147, 51, 234, 0.15)",color:"#9333EA"}}}function $u({event:e,isPending:t,statusColor:r}){return t?_e(p,{style:le.pendingBadge,children:[ie(Iu,{size:10,color:Ce.color.warning}),ie(y,{style:le.pendingText,children:"..."})]}):e.error?_e(p,{style:le.errorBadge,children:[ie(Lu,{size:10,color:Ce.color.danger}),ie(y,{style:le.errorText,children:"ERR"})]}):ie(p,{style:le.statusBadge,children:ie(y,{style:[le.statusText,{color:r}],children:String(e.status)})})}function Fu({requestSize:e,responseSize:t}){return!e&&!t?null:_e(p,{style:le.sizeRow,children:[e?_e(p,{style:le.sizeItem,children:[ie(Eu,{size:8,color:Ce.color.info}),ie(y,{style:le.sizeText,children:Ze(e)})]}):null,t?_e(p,{style:le.sizeItem,children:[ie(Pu,{size:8,color:Ce.color.accent}),ie(y,{style:le.sizeText,children:Ze(t)})]}):null]})}function ju({timestamp:e,duration:t}){let r=vo(),o=Hu(e,r);return t?_e(y,{style:le.bottomRightText,children:[Er(t)," ",o]}):ie(y,{style:le.bottomRightText,children:o})}var zt=Ru(function({event:e,onPress:t,pinned:r=false,saved:o=false,overridden:n=false,onLongPress:i}){let s=Mu(e.status,e.error),l=!e.status&&!e.error,a=Nu(e.responseHeaders),d=e.path||e.url.replace(/^https?:\/\/[^/]+/,"");return e.requestClient==="graphql"?e.operationName?d=Qn(e.operationName,e.graphqlVariables):d=d.replace(/\/graphql[^?]*/,"/graphql"):e.operationName&&(d=`${d}
142
- (${e.operationName})`),_e(Du,{onPress:()=>t(e),onLongPress:i?()=>i(e):void 0,style:le.cardWrapper,contentStyle:[le.container,{borderLeftColor:s}],testID:`buoy-network-row-${e.id}`,accessibilityLabel:`${e.method} ${e.path||e.url}`,children:[_e(p,{style:le.topRightContainer,children:[r?ie(Ou,{size:10,active:true,color:Ce.color.info}):null,o?ie(Bu,{size:10,color:Ce.color.accent}):null,n||e.override?ie(qu,{size:10,color:Ce.color.warning}):null,ie($u,{event:e,isPending:l,statusColor:s}),e.requestClient?ie(p,{style:[le.topRightBadge,{backgroundColor:Pi(e.requestClient).backgroundColor}],children:ie(y,{style:[le.clientText,{color:Pi(e.requestClient).color}],children:e.requestClient==="graphql"?"GQL":e.requestClient==="grpc-web"?"gRPC":e.requestClient==="xhr"?"XHR":e.requestClient})}):null]}),_e(p,{style:le.leftSection,children:[ie(zu,{method:e.method,size:"small"}),ie(Fu,{requestSize:e.requestSize,responseSize:e.responseSize})]}),ie(p,{style:le.middleSection,children:ie(y,{style:le.urlText,numberOfLines:2,children:d})}),_e(p,{style:le.rightSection,children:[a?ie(Au,{type:a,size:"small"}):null,ie(ku,{size:14,color:Ce.color.textTertiary})]}),ie(p,{style:le.bottomRightContainer,children:ie(ju,{timestamp:e.timestamp,duration:e.duration})})]})});zt.displayName="NetworkEventItemCompact";var le=fe.create({cardWrapper:{marginHorizontal:8},container:{flexDirection:"row",alignItems:"center",backgroundColor:"rgba(12, 12, 12, 0.9)",borderLeftWidth:3,borderLeftColor:"transparent",borderBottomWidth:1},leftSection:{marginRight:8,alignItems:"flex-start"},topRightContainer:{position:"absolute",top:1,right:1,flexDirection:"row",alignItems:"center",gap:4},topRightBadge:{paddingHorizontal:4,paddingVertical:2,borderRadius:4},middleSection:{flex:1,justifyContent:"center",paddingRight:8},urlText:{fontSize:12,color:Ce.color.text,lineHeight:16,fontFamily:ko},rightSection:{flexDirection:"row",alignItems:"center",gap:6},bottomRightContainer:{position:"absolute",bottom:4,right:8},bottomRightText:{fontSize:9,color:Ce.color.textTertiary,fontFamily:ko},statusBadge:{paddingHorizontal:4,paddingVertical:1,borderRadius:3},statusText:{fontSize:10,fontWeight:"600"},pendingBadge:{flexDirection:"row",alignItems:"center",gap:2,paddingHorizontal:4,paddingVertical:1,backgroundColor:Ce.color.warningSoft,borderRadius:3},pendingText:{fontSize:10,color:Ce.color.warning,fontWeight:"600"},errorBadge:{flexDirection:"row",alignItems:"center",gap:2,paddingHorizontal:4,paddingVertical:1,backgroundColor:Ce.color.dangerSoft,borderRadius:3},errorText:{fontSize:10,color:Ce.color.danger,fontWeight:"600"},durationText:{fontSize:9,color:Ce.color.textSecondary},sizeRow:{flexDirection:"row",gap:4,marginTop:4},sizeItem:{flexDirection:"row",alignItems:"center",gap:2},sizeText:{fontSize:8,color:Ce.color.textSecondary,fontFamily:ko},clientText:{fontSize:8,fontWeight:"700",letterSpacing:.3,textTransform:"uppercase"}});D();ce();import{ProBadge as Wu,Zap as Vu,buoyColors as nr}from"@buoy-gg/shared-ui/web";import{jsx as Dr,jsxs as Eo}from"react/jsx-runtime";function Ii({title:e,subtitle:t,onPress:r}){return Eo(N,{style:ir.banner,onPress:r,activeOpacity:.8,children:[Eo(p,{style:ir.content,children:[Eo(p,{style:ir.left,children:[Dr(Vu,{size:16,color:nr.primary}),Dr(y,{style:ir.title,children:e})]}),Dr(Wu,{})]}),Dr(y,{style:ir.subtitle,children:t})]})}var ir=fe.create({banner:{backgroundColor:nr.card,borderRadius:10,borderWidth:1,borderColor:nr.primary+"40",padding:12,marginHorizontal:12,marginTop:12,marginBottom:34},content:{flexDirection:"row",alignItems:"center",justifyContent:"space-between",marginBottom:4},left:{flexDirection:"row",alignItems:"center",gap:8},title:{color:nr.text,fontSize:13,fontWeight:"600"},subtitle:{color:nr.textMuted,fontSize:11}});D();import{useEffect as Li,useMemo as zr,useState as Uu}from"react";import{useLimit as _u}from"@buoy-gg/shared-ui/web";function sr(e){let{filter:t,ignoredPatterns:r,paused:o,visible:n=true,isPro:i}=e,s=_u("network.requests"),l=i?1/0:s,[a,d]=Uu(()=>K.getEvents());Li(()=>{if(!n)return;if(o){d(K.getEvents());return}let g=null,T=null,k=K.subscribeToEvents(f=>{T=f,g==null&&(g=requestAnimationFrame(()=>{g=null,T&&d(T),T=null}))});return()=>{k(),g!=null&&cancelAnimationFrame(g)}},[o,n]),Li(()=>K.onClear(()=>{d([])}),[]);let b=zr(()=>or(a,r),[a,r]),E=zr(()=>rr(b,t),[b,t]),C=zr(()=>{let g=new Set;return a.slice(l).forEach(T=>{g.add(T.id)}),g},[a,l]),S=zr(()=>C.size===0?E:E.filter(g=>!C.has(g.id)),[E,C]),q=E.length-S.length;return{events:E,visibleEvents:S,hasLockedEvents:q>0,lockedEventCount:q,totalEvents:b.length}}D();import{useCallback as At,useSyncExternalStore as Xu}from"react";D();import{devToolsStorageKeys as Bi,persistentStorage as qi}from"@buoy-gg/shared-ui/web";var Ju=800,Gu=3,Ku=Object.freeze([]),Yu=250,Zu=["respond","fail","delay"];function Qu(e){if(!Array.isArray(e))return[];let t=[];for(let r of e){if(!r||typeof r!="object")continue;let o=r;if(typeof o.id!="string"||typeof o.urlPattern!="string"||!o.urlPattern)continue;let n=Zu.includes(o.kind)?o.kind:"respond";t.push({id:o.id,enabled:o.enabled!==false,name:typeof o.name=="string"?o.name:void 0,urlPattern:o.urlPattern,methods:Array.isArray(o.methods)?o.methods.filter(i=>typeof i=="string"):void 0,requireHeader:typeof o.requireHeader=="string"&&o.requireHeader?o.requireHeader:void 0,kind:n,status:typeof o.status=="number"?Math.min(_t,Math.max(Ut,o.status)):void 0,statusText:typeof o.statusText=="string"?o.statusText:void 0,headers:o.headers&&typeof o.headers=="object"?o.headers:void 0,body:typeof o.body=="string"?o.body:void 0,failKind:o.failKind==="timeout"?"timeout":void 0,delayMs:typeof o.delayMs=="number"?o.delayMs:void 0,times:typeof o.times=="number"?o.times:null,alternate:o.alternate===true,hits:0,seen:0,createdAt:typeof o.createdAt=="number"?o.createdAt:0})}return t.slice(0,rt)}var ec=class{constructor(){this.rules=[];this.enabled=true;this.listeners=new Set;this.loaded=false;this.loadPromise=null;this.dirty=false;this.idCounter=0;this.state={enabled:true,rules:[],autoPaused:false};this.launchStreak=0;this.autoPaused=false;this.keepAlive=null;this.hitEmitTimer=null;this.engineDisabled=false;this.remote=null;this.remoteEchoUntil=0}enableRemoteMode(e){this.remote=e,this.disableEngine()}disableRemoteMode(){this.remote=null}replaceRules(e,t=false){this.remote&&(!t&&ue()<this.remoteEchoUntil||(this.enabled=e.enabled,this.rules=e.rules,this.rebuild(),this.emit()))}markLocalEdit(){this.remote&&(this.remoteEchoUntil=ue()+Ju)}disableEngine(){this.engineDisabled=true,this.keepAlive&&(this.keepAlive(),this.keepAlive=null,pt()===0&&Xt())}getState(){return this.state}getRules(){return this.engineDisabled||!this.enabled?Ku:this.rules}async fetchRuleBody(e){let t=this.rules.find(r=>r.id===e);if(!t)return null;if(!t.bodyOmitted)return t.body??null;if(!this.remote?.getRuleBody)return null;try{return await this.remote.getRuleBody(e)}catch{return null}}activeCount(){return this.enabled?this.rules.filter(e=>e.enabled&&!uo(e)).length:0}subscribe(e){return this.listeners.add(e),this.ensureLoaded(),()=>{this.listeners.delete(e)}}setEnabled(e){this.enabled!==e&&(this.remote?.setEnabled(e),this.markLocalEdit(),this.markTouched(),this.enabled=e,this.commit(this.rules))}addRule(e){if(this.rules.length>=rt)return null;let t={...e,id:`ovr_${Date.now().toString(36)}_${++this.idCounter}`,hits:0,seen:0,createdAt:Date.now()};return this.commit([t,...this.rules]),t}upsertRule(e){this.remote?.upsertRule(e),this.markLocalEdit(),this.markTouched();let{id:t,...r}=e;return t&&this.rules.some(o=>o.id===t)?(this.updateRule(t,r),this.rules.find(o=>o.id===t)??null):this.addRule(r)}updateRule(e,t){let r=this.rules.findIndex(n=>n.id===e);if(r===-1)return;let o=[...this.rules];o[r]={...o[r],...t,hits:0,seen:0},this.commit(o)}setRuleEnabled(e,t){let r=this.rules.findIndex(n=>n.id===e);if(r===-1||this.rules[r].enabled===t)return;this.remote?.setRuleEnabled(e,t),this.markLocalEdit(),this.markTouched();let o=[...this.rules];o[r]={...o[r],enabled:t,hits:t?0:o[r].hits,seen:t?0:o[r].seen},this.commit(o)}removeRule(e){let t=this.rules.filter(r=>r.id!==e);t.length!==this.rules.length&&(this.remote?.removeRule(e),this.markLocalEdit(),this.markTouched(),this.commit(t))}clearRules(){this.rules.length!==0&&(this.remote?.clearRules(),this.markLocalEdit(),this.markTouched(),this.commit([]))}recordMatch(e){let t=this.rules.findIndex(o=>o.id===e);if(t===-1)return;let r=[...this.rules];r[t]={...r[t],seen:r[t].seen+1},this.rules=r,this.rebuild()}recordHit(e){let t=this.rules.findIndex(s=>s.id===e);if(t===-1)return;let r=this.rules[t],o=r.hits+1,n=typeof r.times=="number"&&o>=r.times,i=[...this.rules];if(i[t]={...r,hits:o,enabled:n?false:r.enabled},n){this.commit(i);return}this.rules=i,this.rebuild(),this.scheduleHitEmit()}ensureLoaded(){return this.remote||this.loaded?Promise.resolve():this.loadPromise?this.loadPromise:(this.loadPromise=(async()=>{try{let e=await qi.getItem(Bi.network.overrides());if(e&&!this.dirty){let t=JSON.parse(e);this.enabled=t?.enabled!==false,this.rules=Qu(t?.rules),this.launchStreak=typeof t?.launchStreak=="number"?t.launchStreak:0,this.applyLaunchGuard(),this.rebuild()}}catch{}finally{this.loaded=true,this.syncKeepAlive(),this.emit()}})(),this.loadPromise)}applyLaunchGuard(){if(!this.enabled||this.activeCount()===0){this.launchStreak=0;return}this.launchStreak+=1,this.launchStreak>=Gu&&(this.enabled=false,this.autoPaused=true,this.launchStreak=0),this.persist()}syncKeepAlive(){let e=!this.engineDisabled&&this.activeCount()>0;if(e&&!this.keepAlive){Bn(),this.keepAlive=Jt(()=>{});return}!e&&this.keepAlive&&(this.keepAlive(),this.keepAlive=null,pt()===0&&Xt())}scheduleHitEmit(){this.hitEmitTimer===null&&(this.hitEmitTimer=setTimeout(()=>{this.hitEmitTimer=null,this.emit()},Yu))}commit(e){this.dirty=true,this.rules=e.slice(0,rt),this.rebuild(),this.syncKeepAlive(),this.emit(),this.persist()}rebuild(){this.state={enabled:this.enabled,rules:this.rules,autoPaused:this.autoPaused}}markTouched(){this.launchStreak=0,this.autoPaused=false}noteHealthyLaunch(){this.launchStreak===0&&!this.autoPaused||(this.markTouched(),this.persist(),this.rebuild(),this.emit())}persist(){this.remote||qi.setItem(Bi.network.overrides(),JSON.stringify({enabled:this.enabled,rules:this.rules,launchStreak:this.launchStreak})).catch(()=>{})}emit(){this.listeners.forEach(e=>e())}},_=new ec;Fa({getRules:()=>_.getRules(),recordHit:e=>_.recordHit(e),recordMatch:e=>_.recordMatch(e)});function Ar(){let e=Xu(At(s=>_.subscribe(s),[]),()=>_.getState(),()=>_.getState()),t=At(s=>_.setEnabled(s),[]),r=At(s=>_.upsertRule(s),[]),o=At((s,l)=>_.setRuleEnabled(s,l),[]),n=At(s=>_.removeRule(s),[]),i=At(()=>_.clearRules(),[]);return{enabled:e.enabled,rules:e.rules,autoPaused:e.autoPaused,activeCount:_.activeCount(),setEnabled:t,upsertRule:r,setRuleEnabled:o,removeRule:n,clearRules:i,isRuleSpent:uo}}D();function tc(e,t){if(t.length===0)return[];let r=new Set(t.map(n=>n.id)),o=new Set;for(let n of t){let i;for(let s of e){if(s.override&&r.has(s.override.ruleId)){o.add(s.id);continue}lo(n,s.url,String(s.method||"GET"),s.requestHeaders)&&(s.timestamp>=n.createdAt?o.add(s.id):(!i||s.timestamp>i.timestamp)&&(i=s))}i&&o.add(i.id)}return e.filter(n=>o.has(n.id))}D();var rc=[];function Po(e,t,r){return t.length===0?{pinned:rc,rest:e}:{pinned:t,rest:r.size===0?e:e.filter(o=>!r.has(o.id))}}import{jsx as Se,jsxs as wt}from"react/jsx-runtime";var oc=e=>e.id;function nc({events:e,onEventPress:t,onLongPress:r,savedLiveIds:o,onClearPinned:n}){return e.length===0?null:wt(p,{style:xe.pinnedSection,children:[wt(p,{style:xe.pinnedHeader,children:[Se(vu,{size:11,active:true,color:ve.semantic.info}),wt(y,{style:xe.pinnedTitle,children:["PINNED \xB7 ",e.length]}),Se(N,{onPress:n,"sentry-label":"ignore unpin all",style:xe.pinnedClear,children:Se(y,{style:xe.pinnedClearText,children:"Unpin all"})})]}),e.map(i=>Se(zt,{event:i,onPress:t,onLongPress:r,pinned:true,saved:o.has(i.id)},i.id))]})}function ic({events:e,onEventPress:t,onLongPress:r,savedLiveIds:o,paused:n,onTogglePaused:i}){return e.length===0?null:wt(p,{style:[xe.overriddenSection,n&&xe.overriddenSectionOff],children:[wt(p,{style:xe.overriddenHeader,children:[Se(bu,{size:11,color:n?ve.text.muted:ve.semantic.warning}),Se(y,{testID:"buoy-network-overridden-strip",style:[xe.overriddenTitle,n&&xe.overriddenTitleOff],children:n?`PAUSED \xB7 ${e.length}`:`OVERRIDDEN \xB7 ${e.length}`}),Se(N,{onPress:i,"sentry-label":"ignore pause overrides",style:xe.overriddenManage,children:Se(y,{style:[xe.overriddenManageText,n&&xe.overriddenTitleOff],children:n?"Resume":"Pause"})})]}),e.map(s=>Se(zt,{event:s,onPress:t,onLongPress:r,overridden:true,saved:o.has(s.id)},s.id))]})}function sc({visible:e,paused:t,filter:r,ignoredPatterns:o,isPro:n,searchText:i,onEventPress:s,onUpgradePress:l}){let{visibleEvents:a,hasLockedEvents:d,lockedEventCount:b,totalEvents:E}=sr({filter:r,ignoredPatterns:o,paused:t,visible:e,isPro:n}),{pinnedEvents:C,pinnedLiveIds:S,savedLiveIds:q,togglePin:g,clearPinned:T}=Ot(),{rules:k,enabled:f,setEnabled:P,isRuleSpent:z}=Ar(),I=yu(G=>{g(G)},[g]);if(!e)return null;let{pinned:w,rest:H}=Po(a,C,S),v=k.filter(G=>G.enabled&&!z(G)),h=tc([...w,...H],v),c=new Set(h.map(G=>G.id)),u=w.filter(G=>!c.has(G.id)),m=c.size?H.filter(G=>!c.has(G.id)):H,O=!t,re=({item:G})=>Se(zt,{event:G,onPress:s,onLongPress:I,saved:q.has(G.id)}),Z=()=>u.length>0||h.length>0?null:Se(xu,{testID:"buoy-network-empty",...wu({subject:"requests",search:i,total:E,capturing:O,waiting:{otto:"fishing",title:"No network events",message:"Network requests will appear here"},paused:{title:"No network events",message:"Enable interception to start capturing"}})}),ee=()=>{if(!d)return null;let G=i.length>0,A=G?`${b} matching ${b===1?"request":"requests"} in locked history`:`${b} requests locked`;return Se(Ii,{title:A,subtitle:G?"Upgrade to Pro to search your full request history":"Upgrade to Pro to unlock full request history",onPress:l})};return wt(p,{style:xe.root,children:[O?null:wt(p,{style:xe.disabledBanner,children:[Se(Su,{size:14,color:ve.semantic.warning}),Se(y,{style:xe.disabledText,children:"Network interception is disabled"})]}),Se(ic,{events:h,onEventPress:s,onLongPress:I,savedLiveIds:q,paused:!f,onTogglePaused:()=>P(!f)}),Se(nc,{events:u,onEventPress:s,onLongPress:I,savedLiveIds:q,onClearPinned:T}),m.length>0||d?Se(io,{testID:"buoy-network-list",data:m,renderItem:re,keyExtractor:oc,contentContainerStyle:xe.listContent,showsVerticalScrollIndicator:true,onEndReachedThreshold:.8,scrollEnabled:true,...Cu,extraData:q,"sentry-label":"ignore network events list",ListFooterComponent:ee}):Z()]})}var xe=fe.create({root:{flex:1,minHeight:0},overriddenSection:{borderBottomWidth:1,borderBottomColor:ve.semantic.warning+"44",backgroundColor:ve.semantic.warningBackground},overriddenSectionOff:{borderBottomColor:ve.border.default,backgroundColor:ve.background.card},overriddenTitleOff:{color:ve.text.muted},overriddenHeader:{flexDirection:"row",alignItems:"center",gap:6,paddingHorizontal:12,paddingTop:8,paddingBottom:4},overriddenTitle:{flex:1,fontSize:10,fontWeight:"700",letterSpacing:.8,color:ve.semantic.warning},overriddenManage:{paddingHorizontal:6,paddingVertical:2},overriddenManageText:{fontSize:10,fontWeight:"600",color:ve.semantic.warning},pinnedSection:{borderBottomWidth:1,borderBottomColor:ve.border.default,paddingBottom:4},pinnedHeader:{flexDirection:"row",alignItems:"center",gap:6,paddingHorizontal:20,paddingTop:10,paddingBottom:6},pinnedTitle:{flex:1,color:ve.semantic.info,fontSize:10,fontWeight:"700",letterSpacing:.6,fontFamily:Tu},pinnedClear:{paddingHorizontal:6,paddingVertical:2},pinnedClearText:{color:ve.text.muted,fontSize:10},disabledBanner:{flexDirection:"row",alignItems:"center",gap:8,padding:10,marginHorizontal:12,marginTop:8,backgroundColor:ve.semantic.warningBackground,borderRadius:8,borderWidth:1,borderColor:ve.semantic.warning+"20"},disabledText:{color:ve.semantic.warning,fontSize:11,flex:1},listContent:{paddingTop:8}});D();ce();import{useState as ac}from"react";import{Bookmark as lc,CopyButton as dc,Search as uc,macOSColors as Me,useLimit as cc,ToolEmptyState as hc,resolveListEmptyState as pc,EVENT_LIST_PRESET as fc,monoFont as gc}from"@buoy-gg/shared-ui/web";D();function Oi(e,t,r){let o=e.slice(0,Math.min(t,it)),n=o.map(i=>i.event);return{events:r?rr(n,{searchText:r}):n,lockedCount:e.length-o.length}}import{jsx as Xe,jsxs as Hr}from"react/jsx-runtime";var mc=e=>e.id;function Di({visible:e,isPro:t,copySettings:r,search:o,onSearchChange:n,onEventPress:i,onUpgradePress:s}){let{savedRecords:l,pinnedLiveIds:a,toggleSave:d,clearSaved:b}=Ot(),E=cc("network.saved"),[C,S]=ac(""),q=o!=null&&n!=null,g=q?o:C,T=q?n:S;if(!e)return null;let{events:k,lockedCount:f}=Oi(l,E,g),P=w=>{d(w)},z=({item:w})=>Xe(zt,{event:w,onPress:i,onLongPress:P,saved:true,pinned:a.has(w.id)}),I=()=>f===0?null:Xe(Ii,{title:`${f} saved ${f===1?"request":"requests"} locked`,subtitle:`Your plan keeps ${E}. Upgrade to Pro to unlock the rest.`,onPress:s});return Hr(p,{style:Je.root,children:[Hr(p,{style:Je.toolbar,children:[Xe(lc,{size:11,color:Me.semantic.debug}),Hr(y,{style:Je.toolbarTitle,children:["SAVED \xB7 ",l.length,E>=it?"":`/${E}`]}),t?Xe(dc,{value:()=>Ri(k,r),size:13,buttonStyle:Je.toolbarButton,colors:{idle:Me.text.secondary,success:Me.semantic.success,error:Me.semantic.error},disabled:k.length===0}):null,Xe(N,{onPress:b,"sentry-label":"ignore clear saved",style:Je.toolbarClear,disabled:l.length===0,children:Xe(y,{style:[Je.toolbarClearText,l.length===0&&Je.toolbarClearTextDisabled],children:"Clear all"})})]}),l.length>0?Hr(p,{style:Je.searchRow,children:[Xe(uc,{size:13,color:Me.text.secondary}),Xe(Lt,{style:Je.searchInput,placeholder:"Search saved requests\u2026",placeholderTextColor:Me.text.muted,value:g,onChangeText:T,"sentry-label":"ignore saved search",accessibilityLabel:"Search saved requests",autoCapitalize:"none",autoCorrect:false,returnKeyType:"search"})]}):null,l.length===0||g.trim().length>0&&k.length===0&&f===0?Xe(hc,{testID:"buoy-network-saved-empty",...pc({subject:"saved requests",verb:"kept",search:l.length===0?"":g,total:l.length,waiting:{otto:"empty",title:"No saved requests",message:"Open a request and tap the bookmark to keep it here \u2014 saved requests survive Clear and app restarts."}})}):Xe(io,{data:k,renderItem:z,keyExtractor:mc,contentContainerStyle:Je.listContent,showsVerticalScrollIndicator:true,scrollEnabled:true,...fc,extraData:a,"sentry-label":"ignore saved requests list",ListFooterComponent:I})]})}var Je=fe.create({root:{flex:1,minHeight:0},toolbar:{flexDirection:"row",alignItems:"center",gap:6,paddingHorizontal:20,paddingTop:10,paddingBottom:6},toolbarTitle:{flex:1,color:Me.semantic.debug,fontSize:10,fontWeight:"700",letterSpacing:.6,fontFamily:gc},toolbarButton:{width:26,height:26,borderRadius:6,alignItems:"center",justifyContent:"center"},toolbarClear:{paddingHorizontal:6,paddingVertical:2},toolbarClearText:{color:Me.text.muted,fontSize:10},toolbarClearTextDisabled:{color:Me.text.disabled},searchRow:{flexDirection:"row",alignItems:"center",gap:6,marginHorizontal:12,marginBottom:8,paddingHorizontal:10,paddingVertical:5,backgroundColor:Me.background.input,borderRadius:10,borderWidth:1,borderColor:Me.border.default},searchInput:{flex:1,color:Me.text.primary,fontSize:13,paddingVertical:2},listContent:{paddingTop:4}});D();ce();import{useCallback as yc,useEffect as Mr,useState as bc}from"react";import{AlertCircle as vc,AlertTriangle as Sc,DevToolsCard as xc,EmptyState as wc,MethodBadge as Cc,Plus as Tc,Trash2 as Rc,macOSColors as Y,useLimit as kc,monoFont as Ec}from"@buoy-gg/shared-ui/web";D();ce();import{useMemo as zi,useState as Nr}from"react";import{ChevronDown as Pc,ChevronRight as Ic,macOSColors as U,useSafeAreaInsets as Lc,monoFont as Bc}from"@buoy-gg/shared-ui/web";D();ce();import{useState as $r,useMemo as Fr,useCallback as ar,useRef as Io,useEffect as qc,memo as jr}from"react";import{displayValue as Oc,buoyColors as L,monoFont as qe}from"@buoy-gg/shared-ui/web";import{CopyButton as Dc}from"@buoy-gg/shared-ui/web";import{ChevronRight as zc,ChevronDown as Ac,Trash as Ai}from"@buoy-gg/shared-ui/web";import{CyberpunkInput as Hc}from"@buoy-gg/shared-ui/web/dataViewer";D();var Ct=(e,t,r)=>{if(t.length===0)return r;if(e instanceof Map){let o=new Map(e);if(t.length===1)return o.set(t[0],r),o;let[n,...i]=t,s=o.get(n);return o.set(n,Ct(s??null,i,r)),o}if(e instanceof Set){let o=Ct(Array.from(e),t,r);return new Set(Array.isArray(o)?o:[])}if(Array.isArray(e)){let o=[...e];if(t.length===1)return o[t[0]]=r,o;let[n,...i]=t;return o[n]=Ct(o[n],i,r),o}if(e instanceof Object){let o={...e};if(t.length===1)return o[t[0]]=r,o;let[n,...i]=t;return o[n]=Ct(o[n],i,r),o}return e};D();var Tt=(e,t)=>{if(e instanceof Map){let r=new Map(e);if(t.length===1)return r.delete(t[0]),r;let[o,...n]=t;return r.set(o,Tt(r.get(o),n)),r}if(e instanceof Set){let r=Tt(Array.from(e),t);return new Set(r)}if(Array.isArray(e)){let r=[...e];if(t.length===1)return r.filter((i,s)=>s.toString()!==t[0]);let[o,...n]=t;return r[o]=Tt(r[o],n),r}if(e instanceof Object){let r={...e};if(t.length===1)return delete r[t[0]],r;let[o,...n]=t;return r[o]=Tt(r[o],n),r}return e};D();import{createContext as Mc,useContext as Nc}from"react";var Hi=Mc(null);function Wr(){return Nc(Hi)}import{Fragment as Vr,jsx as J,jsxs as Pe}from"react/jsx-runtime";var lr=100,Ht={top:8,bottom:8,left:8,right:8},Mi=12,$c=(e,t=lr)=>{if(t<1||e.length===0)return[];let r=[];for(let o=0;o<e.length;o+=t)r.push(e.slice(o,o+t));return r},Lo=jr(({expanded:e,isFocused:t=false,isMain:r=false})=>J(p,{style:[j.expanderIcon,r&&j.expanderIconMain,e?j.expanded:j.collapsed],children:e?J(Ac,{size:r?14:Mi,color:t?L.primary:r?L.text:L.textSecondary,strokeWidth:2.5}):J(zc,{size:r?14:Mi,color:t?L.primary:r?L.text:L.textSecondary,strokeWidth:2.5})}));Lo.displayName="Expander";var Ni=jr(({value:e,isFocused:t=false})=>J(Dc,{value:e,isFocused:t,buttonStyle:t?{...j.buttonStyle,...j.buttonStyleFocused}:j.buttonStyle}));Ni.displayName="CopyButton";var Bo=jr(({dataPath:e,isFocused:t=false})=>{let r=Wr(),o=ar(()=>{r&&r.onChange(Tt(r.root,e))},[r,e]);return r?J(N,{"sentry-label":"ignore devtools explorer delete button",onPress:o,style:[j.deleteButton,t&&j.deleteButtonFocused],accessibilityLabel:"Delete item",hitSlop:Ht,activeOpacity:.7,children:J(Ai,{size:14,strokeWidth:2,color:t?L.error:L.error+"CC"})}):null});Bo.displayName="DeleteItemButton";var $i=jr(({dataPath:e,isFocused:t=false})=>{let r=Wr(),o=ar(()=>{r&&r.onChange(Ct(r.root,e,[]))},[r,e]);return r?J(N,{"sentry-label":"ignore devtools explorer clear button",style:[j.clearButton,t&&j.clearButtonFocused],"aria-label":"Remove all items",onPress:o,hitSlop:Ht,activeOpacity:.7,children:J(y,{style:[j.clearButtonText,{color:t?L.warning:L.warning+"CC"}],children:"[]"})}):null});$i.displayName="ClearArrayButton";function Fc({dataPath:e,value:t,itemsDeletable:r}){let o=Wr(),n=ar(()=>{if(!o)return;let a=typeof t=="boolean"?t:false;o.onChange(Ct(o.root,e,!a))},[o,e,t]),i=ar(()=>{o&&o.onChange(Tt(o.root,e))},[o,e]);if(!o)return null;let s=t?j.toggleBadgeTrue:j.toggleBadgeFalse,l=t?j.toggleTextTrue:j.toggleTextFalse;return Pe(N,{"sentry-label":"ignore devtools explorer toggle button",style:j.modernToggleButton,onPress:n,hitSlop:Ht,activeOpacity:.8,children:[J(p,{style:[j.toggleBadge,s],children:J(y,{style:[j.toggleBadgeText,l],children:t?"TRUE":"FALSE"})}),r&&J(N,{"sentry-label":"ignore devtools explorer delete button in toggle",onPress:i,style:j.deleteButtonInToggle,accessibilityLabel:"Delete item",hitSlop:Ht,activeOpacity:.7,children:J(Ai,{size:14,strokeWidth:2,color:L.error+"CC"})})]})}function qo({editable:e,label:t,value:r,defaultExpanded:o,dataPath:n,itemsDeletable:i,dataVersion:s=0}){let l=Wr(),[a,d]=$r(false),[b,E]=$r("");qc(()=>{if(r!=null&&(typeof r=="string"||typeof r=="number")){let c=r.toString();E(c)}},[r,t,s]);let C=Fr(()=>{let c=t.toUpperCase();return["DATA","QUERY","QUERYKEY","TYPES","STATS","OPTIONS","OBSERVERS"].includes(c)},[t]),[S,q]=$r((o||[]).includes(t)),g=()=>q(c=>!c),[T,k]=$r([]),f=Fr(()=>r==null||typeof r!="object"?[]:Array.isArray(r)?(r.length>1e3?r.slice(0,1e3):r).map((c,u)=>({label:u.toString(),value:c})):r instanceof Map?Array.from(r.entries()).slice(0,1e3).map(([c,u])=>({label:c.toString(),value:u})):r instanceof Set?Array.from(r).slice(0,1e3).map((c,u)=>({label:u.toString(),value:c})):Object.entries(r).slice(0,1e3).map(([c,u])=>({label:c,value:u})),[r]),P=Fr(()=>Array.isArray(r)?"array":r===null||typeof r!="object"?typeof r:r instanceof Map||r instanceof Set?"Iterable":"object",[r]),z=Fr(()=>$c(f,lr),[f]),I=n??[],w=Io(l),H=Io(I),v=Io(P);w.current=l,H.current=I,v.current=P;let h=ar((c,u)=>{E(u);let m=w.current;if(!m||c&&isNaN(Number(u)))return;let O=v.current==="number"?Number(u):u;m.onChange(Ct(m.root,H.current,O))},[E]);return J(p,{style:j.minWidthWrapper,children:Pe(p,{style:j.fullWidthMarginRight,children:[z.length>0&&Pe(Vr,{children:[Pe(p,{style:[j.flexRowItemsCenterGap,C&&j.flexRowItemsCenterGapMain],children:[Pe(N,{"sentry-label":"ignore devtools explorer expander button",style:j.expanderButton,onPress:g,hitSlop:Ht,activeOpacity:.6,children:[J(Lo,{expanded:S,isFocused:a,isMain:C}),J(y,{style:[j.labelText,a&&j.labelTextFocused,C&&j.labelTextMain],children:t}),J(y,{style:j.textGray500,children:`${String(P).toLowerCase()==="iterable"?"(Iterable) ":""}${f.length} ${f.length>1?"items":"item"}`})]}),e&&Pe(p,{style:j.flexRowGapItemsCenter,children:[J(Ni,{value:r,isFocused:a}),i&&l!==null&&J(Bo,{dataPath:I,isFocused:a}),P==="array"&&l!==null&&J($i,{dataPath:I,isFocused:a})]})]}),S&&Pe(Vr,{children:[z.length===1&&J(p,{style:[j.singleEntryContainer,C&&j.singleEntryContainerMain],children:f.map((c,u)=>J(qo,{defaultExpanded:o,label:c.label,value:c.value,editable:e,dataPath:[...I,c.label],itemsDeletable:P==="array"||P==="Iterable"||P==="object",dataVersion:s},c.label+u))}),z.length>1&&J(p,{style:j.multiEntryContainer,children:z.map((c,u)=>J(p,{children:Pe(p,{style:j.relativeOutlineNone,children:[Pe(N,{"sentry-label":"ignore devtools explorer page toggle",onPress:()=>k(m=>m.includes(u)?m.filter(O=>O!==u):[...m,u]),style:j.pageExpanderButton,hitSlop:Ht,children:[J(Lo,{expanded:T.includes(u)}),Pe(y,{style:j.pageRangeText,children:["[",u*lr,"...",u*lr+lr-1,"]"]})]}),T.includes(u)&&J(p,{style:j.entriesContainer,children:c.map(m=>J(qo,{defaultExpanded:o,label:m.label,value:m.value,editable:e,dataPath:[...I,m.label],dataVersion:s},m.label))})]})},u))})]})]}),z.length===0&&Pe(p,{style:j.flexRowGapFullWidth,children:[e&&l!==null&&(P==="string"||P==="number"||P==="boolean")?Pe(Vr,{children:[e&&l&&(P==="string"||P==="number")&&J(p,{style:j.nebulaInputWrapper,children:J(Hc,{label:t,accessibilityLabel:"Data input field for editing values",style:[P==="number"?j.textNumber:j.textString],keyboardType:P==="number"?"numeric":"default",value:b,onChangeText:c=>h(P==="number",c),onFocus:()=>d(true),onBlur:()=>d(false),showNumberControls:P==="number",onIncrement:()=>{let c=Number(b)||0;h(true,String(c+1))},onDecrement:()=>{let c=Number(b)||0;h(true,String(c-1))},showDeleteButton:i,onDelete:()=>{l.onChange(Tt(l.root,I))}})}),P==="boolean"&&Pe(p,{style:j.booleanRowContainer,children:[J(y,{style:j.booleanLabel,children:t}),J(p,{style:j.booleanToggleWrapper,children:J(Fc,{dataPath:I,value:r,itemsDeletable:i})})]})]}):Pe(Vr,{children:[J(y,{style:j.text344054,children:t}),J(y,{style:j.displayValueText,children:Oc(r)})]}),e&&i&&l!==null&&P!=="string"&&P!=="number"&&P!=="boolean"&&J(Bo,{dataPath:I,isFocused:a})]})]})})}var j=fe.create({buttonStyle:{backgroundColor:L.card+"E6",borderWidth:1,borderColor:L.textSecondary+"33",borderRadius:6,flexDirection:"row",alignItems:"center",justifyContent:"center",width:28,height:28,position:"relative",shadowColor:"#000",shadowOffset:{width:0,height:1},shadowOpacity:.2,shadowRadius:2},buttonStyleFocused:{borderColor:L.primary+"CC",backgroundColor:L.primary+"26",shadowColor:L.primary,shadowOpacity:.3,shadowRadius:4},deleteButton:{backgroundColor:L.error+"1A",borderColor:L.error+"4D",borderWidth:1,borderRadius:6,padding:0,alignItems:"center",justifyContent:"center",width:28,height:28,position:"relative",shadowColor:L.error,shadowOffset:{width:0,height:0},shadowOpacity:.15,shadowRadius:3},deleteButtonFocused:{borderColor:L.error+"CC",backgroundColor:L.error+"33",shadowOpacity:.3,shadowRadius:5},deleteButtonInToggle:{backgroundColor:L.error+"1A",borderColor:L.error+"4D",borderWidth:1,borderRadius:6,padding:0,alignItems:"center",justifyContent:"center",width:28,height:28,shadowColor:L.error,shadowOffset:{width:0,height:0},shadowOpacity:.15,shadowRadius:3},clearButton:{backgroundColor:L.warning+"1A",borderWidth:1,borderColor:L.warning+"4D",borderRadius:6,flexDirection:"row",padding:0,alignItems:"center",justifyContent:"center",width:28,height:28,position:"relative",zIndex:10,shadowColor:L.warning,shadowOffset:{width:0,height:0},shadowOpacity:.15,shadowRadius:3},clearButtonFocused:{borderColor:L.warning+"CC",backgroundColor:L.warning+"33",shadowOpacity:.3,shadowRadius:5},clearButtonText:{fontSize:12,fontWeight:"700",fontFamily:qe},expanderIcon:{width:18,height:18,alignItems:"center",justifyContent:"center",marginRight:1,backgroundColor:L.textSecondary+"14",borderRadius:3},expanderIconMain:{backgroundColor:L.textSecondary+"1A",width:20,height:20,borderRadius:4,borderWidth:.5,borderColor:L.textSecondary+"33"},expanded:{transform:[{rotate:"0deg"}]},collapsed:{transform:[{rotate:"0deg"}]},minWidthWrapper:{minWidth:180,fontSize:11,flexDirection:"row",flexWrap:"wrap",width:"100%",marginVertical:.5},fullWidthMarginRight:{position:"relative",width:"100%",marginRight:1},flexRowItemsCenterGap:{flexDirection:"row",alignItems:"center",justifyContent:"space-between",paddingVertical:3,paddingHorizontal:6,marginVertical:1,borderRadius:4,backgroundColor:L.card+"66",borderWidth:.5,borderColor:L.textSecondary+"1A"},flexRowItemsCenterGapMain:{backgroundColor:L.card+"E6",borderLeftWidth:2.5,borderLeftColor:L.textSecondary+"80",borderColor:L.textSecondary+"26",paddingVertical:5,paddingHorizontal:8,marginBottom:3,borderWidth:1,shadowColor:"#000",shadowOffset:{width:0,height:0},shadowOpacity:.08,shadowRadius:3},expanderButton:{flexDirection:"row",alignItems:"center",backgroundColor:"transparent",paddingVertical:1,paddingHorizontal:2,gap:6,borderWidth:0,minHeight:24,flex:1},labelText:{color:L.textSecondary,fontSize:10,fontWeight:"600",marginRight:4,fontFamily:qe,letterSpacing:.4},labelTextFocused:{color:L.text},labelTextMain:{color:L.text,fontSize:11,fontWeight:"700",letterSpacing:.6},textGray500:{color:L.textMuted,fontSize:10,fontWeight:"400",fontFamily:qe,opacity:.7},pageRangeText:{color:L.textSecondary,fontSize:10,fontWeight:"600",fontFamily:qe},flexRowGapItemsCenter:{flexDirection:"row",alignItems:"center",gap:4,paddingLeft:2},singleEntryContainer:{marginLeft:2,marginTop:2,paddingLeft:8,borderLeftWidth:1.5,borderLeftColor:L.textSecondary+"40"},singleEntryContainerMain:{borderLeftColor:L.textSecondary+"4D",marginLeft:4,paddingLeft:10},multiEntryContainer:{marginLeft:2,marginTop:2,paddingLeft:8,borderLeftWidth:1.5,borderLeftColor:L.textSecondary+"40"},multiEntryContainerMain:{borderLeftColor:L.textSecondary+"4D",marginLeft:4,paddingLeft:10},relativeOutlineNone:{position:"relative"},pageExpanderButton:{flexDirection:"row",alignItems:"center",backgroundColor:L.card+"66",paddingVertical:3,paddingHorizontal:6,gap:6,borderRadius:4,borderWidth:.5,borderColor:L.textSecondary+"1A",marginBottom:2,minHeight:24},entriesContainer:{marginLeft:2,paddingLeft:8,marginTop:2,borderLeftWidth:1.5,borderLeftColor:L.textSecondary+"40"},textNumber:{color:L.text,fontWeight:"600",fontFamily:qe},textString:{color:L.text,fontFamily:qe},flexRowGapFullWidth:{flexDirection:"row",width:"100%",alignItems:"center",marginVertical:1,gap:6,paddingHorizontal:4,paddingVertical:2,borderRadius:3},text344054:{color:L.textSecondary,fontWeight:"600",fontSize:9,minWidth:50,fontFamily:qe,letterSpacing:.4,opacity:.8},numberInputButtons:{position:"absolute",right:8,top:"50%",transform:[{translateY:-18}],flexDirection:"row",gap:4,zIndex:10},touchableButton:{width:32,height:32,borderRadius:6,backgroundColor:L.card+"E6",borderWidth:1,borderColor:L.textSecondary+"33",alignItems:"center",justifyContent:"center",marginLeft:2,shadowColor:"#000",shadowOffset:{width:0,height:1},shadowOpacity:.2,shadowRadius:2},touchableButtonFocused:{borderColor:L.primary+"CC",backgroundColor:L.primary+"26",shadowColor:L.primary,shadowOffset:{width:0,height:0},shadowOpacity:.3,shadowRadius:4,elevation:3},nebulaInputWrapper:{flex:1,width:"100%",position:"relative"},displayValueText:{flex:1,color:L.text,fontWeight:"400",fontFamily:qe,fontSize:12,paddingVertical:6,paddingHorizontal:10,borderRadius:6,borderWidth:1,borderColor:L.textMuted+"66",minHeight:34},dataRow:{flexDirection:"row",alignItems:"center",paddingVertical:4,paddingHorizontal:8,minHeight:44,gap:12},dataLabel:{color:L.textSecondary,fontSize:13,fontWeight:"500",minWidth:80,flexShrink:0},dataValueContainer:{flex:1,flexDirection:"row",alignItems:"center"},inputWithActions:{flex:1,position:"relative"},numberControls:{position:"absolute",right:8,top:"50%",transform:[{translateY:-16}],flexDirection:"column",gap:2},numberButton:{width:32,height:16,borderRadius:4,alignItems:"center",justifyContent:"center",borderWidth:1,borderColor:L.primary+"0F"},readOnlyValue:{color:L.text,fontSize:13,fontFamily:qe,paddingVertical:8,paddingHorizontal:12,borderRadius:6,borderWidth:1,borderColor:L.textMuted+"33",flex:1},actionButtons:{flexDirection:"row",gap:6,paddingLeft:8},booleanContainer:{flexDirection:"row",alignItems:"center",padding:8,borderRadius:6,borderWidth:1,borderColor:L.textMuted+"4D",flex:1},booleanText:{marginLeft:8,color:L.warning,fontWeight:"500",fontFamily:qe},modernToggleButton:{flexDirection:"row",alignItems:"center",justifyContent:"space-between",borderRadius:6,borderWidth:1,borderColor:L.textMuted+"99",paddingHorizontal:8,paddingVertical:6,marginVertical:2,minHeight:34,gap:8},toggleIconContainer:{marginRight:6},toggleIcon:{padding:8,borderRadius:8,alignItems:"center",justifyContent:"center",width:32,height:32},toggleIconSmall:{width:8,height:8,borderRadius:4},toggleContent:{flex:1,minWidth:0},toggleLabel:{color:"#E5E7EB",fontSize:11,fontWeight:"600",fontFamily:qe,letterSpacing:.3},toggleStatus:{color:"#9CA3AF",fontSize:11},toggleBadge:{marginLeft:6,paddingHorizontal:6,paddingVertical:3,borderRadius:4,borderWidth:1},toggleBadgeText:{fontSize:9,fontWeight:"700",textTransform:"uppercase",letterSpacing:.8,fontFamily:qe},toggleIconTrue:{backgroundColor:L.primary},toggleIconFalse:{backgroundColor:L.textMuted},toggleBadgeTrue:{backgroundColor:L.primary+"1A",borderColor:L.primary+"4D"},toggleBadgeFalse:{backgroundColor:L.textMuted+"1A",borderColor:L.textMuted+"4D"},toggleTextTrue:{color:L.primary,fontWeight:"600"},toggleTextFalse:{color:L.textSecondary,fontWeight:"500"},booleanRowContainer:{flexDirection:"row",alignItems:"center",width:"100%",gap:8,paddingVertical:2},booleanLabel:{color:L.textSecondary,fontSize:10,fontWeight:"600",fontFamily:qe,letterSpacing:.4,minWidth:60,flexShrink:0},booleanToggleWrapper:{flex:1}});D();ce();import{useState as jc}from"react";import{absoluteFill as Fi,macOSColors as Ie}from"@buoy-gg/shared-ui/web";import{jsx as at,jsxs as Oo}from"react/jsx-runtime";function Do({title:e,hint:t,value:r,placeholder:o="Number",min:n,max:i,onSubmit:s,onCancel:l}){let[a,d]=jc(r!=null?String(r):""),b=()=>{let E=a.trim();if(!E){s(null);return}let C=Number(E);if(!Number.isFinite(C)){s(null);return}let S=C;n!=null&&(S=Math.max(n,S)),i!=null&&(S=Math.min(i,S)),s(S)};return Oo(p,{style:Oe.overlay,children:[at(N,{style:Oe.backdrop,activeOpacity:1,onPress:l,"sentry-label":"ignore dismiss number prompt"}),Oo(p,{style:Oe.panel,children:[at(y,{style:Oe.title,children:e}),at(Lt,{style:Oe.input,value:a,onChangeText:d,placeholder:o,placeholderTextColor:Ie.text.muted,keyboardType:"number-pad",autoFocus:true,selectTextOnFocus:true,onSubmitEditing:b,returnKeyType:"done","sentry-label":"ignore number prompt input",accessibilityLabel:e}),t?at(y,{style:Oe.hint,children:t}):null,Oo(p,{style:Oe.actions,children:[at(N,{onPress:l,"sentry-label":"ignore cancel number prompt",style:[Oe.button,Oe.cancelButton],children:at(y,{style:Oe.cancelText,children:"Cancel"})}),at(N,{onPress:b,"sentry-label":"ignore save number prompt",style:[Oe.button,Oe.saveButton],children:at(y,{style:Oe.saveText,children:"Set"})})]})]})]})}var Oe=fe.create({overlay:{...Fi,zIndex:40},backdrop:{...Fi,backgroundColor:"rgba(0,0,0,0.6)"},panel:{marginHorizontal:12,marginTop:12,padding:14,borderRadius:10,borderWidth:1,borderColor:Ie.border.hover,backgroundColor:Ie.background.card,gap:10},title:{fontSize:13,fontWeight:"700",color:Ie.text.primary},input:{backgroundColor:Ie.background.input,borderWidth:1,borderColor:Ie.border.input,borderRadius:6,paddingHorizontal:12,paddingVertical:10,fontSize:16,fontWeight:"700",color:Ie.text.primary},hint:{fontSize:10,color:Ie.text.muted},actions:{flexDirection:"row",gap:8},button:{flex:1,paddingVertical:10,borderRadius:6,alignItems:"center",borderWidth:1},cancelButton:{borderColor:Ie.border.default,backgroundColor:Ie.background.base},cancelText:{fontSize:12,fontWeight:"600",color:Ie.text.secondary},saveButton:{borderColor:Ie.semantic.info,backgroundColor:`${Ie.semantic.info}22`},saveText:{fontSize:12,fontWeight:"700",color:Ie.semantic.info}});import{Fragment as ji,jsx as V,jsxs as Te}from"react/jsx-runtime";var Wc=["GET","POST","PUT","PATCH","DELETE"],Wi=[0,500,1e3,3e3,1e4],Vi=[{id:"500",label:"Server error",code:"500",danger:true,patch:{kind:"respond",status:500,statusText:"Internal Server Error"}},{id:"401",label:"Unauthorized",code:"401",danger:true,patch:{kind:"respond",status:401,statusText:"Unauthorized"}},{id:"404",label:"Not found",code:"404",danger:true,patch:{kind:"respond",status:404,statusText:"Not Found"}},{id:"403",label:"Forbidden",code:"403",danger:true,patch:{kind:"respond",status:403,statusText:"Forbidden"}},{id:"429",label:"Rate limited",code:"429",danger:true,patch:{kind:"respond",status:429,statusText:"Too Many Requests"}},{id:"503",label:"Unavailable",code:"503",danger:true,patch:{kind:"respond",status:503,statusText:"Service Unavailable"}},{id:"400",label:"Bad request",code:"400",danger:true,patch:{kind:"respond",status:400,statusText:"Bad Request"}},{id:"200",label:"Success",code:"200",patch:{kind:"respond",status:200,statusText:"OK"}},{id:"offline",label:"Offline",danger:true,patch:{kind:"fail",failKind:"network"}},{id:"timeout",label:"Timeout",danger:true,patch:{kind:"fail",failKind:"timeout"}},{id:"passthrough",label:"Real response",patch:{kind:"delay"}}];function Vc(e){return e.kind==="delay"?"passthrough":e.kind==="fail"?e.failKind==="timeout"?"timeout":"offline":String(e.status??200)}function Uc({outcome:e,active:t,onPress:r}){let o=e.danger?U.semantic.error:U.semantic.info;return Te(N,{onPress:r,"sentry-label":"ignore override outcome",testID:`buoy-network-outcome-${e.label.toLowerCase().replace(/\s+/g,"-")}${e.code?`-${e.code}`:""}`,accessibilityRole:"button",accessibilityLabel:`${e.label}${e.code?` ${e.code}`:""}`,style:[M.outcome,t&&{borderColor:o,backgroundColor:`${o}1F`}],children:[V(y,{style:[M.outcomeLabel,t&&{color:o}],children:e.label}),e.code?V(y,{style:[M.outcomeCode,t&&{color:o}],children:e.code}):null]})}function Ui({title:e,summary:t,open:r,onToggle:o,children:n}){return Te(p,{style:M.disclosure,children:[Te(N,{onPress:o,"sentry-label":"ignore override disclosure",testID:`buoy-network-disclosure-${e.toLowerCase().replace(/\s+/g,"-")}`,accessibilityRole:"button",accessibilityLabel:e,style:M.disclosureHeader,children:[r?V(Pc,{size:12,color:U.text.muted}):V(Ic,{size:12,color:U.text.muted}),V(y,{style:M.disclosureTitle,children:e}),t&&!r?V(y,{style:M.disclosureSummary,numberOfLines:1,children:t}):null]}),r?V(p,{style:M.disclosureBody,children:n}):null]})}function Mt({label:e,active:t,onPress:r}){return V(N,{onPress:r,"sentry-label":"ignore override chip",testID:`buoy-network-chip-${e.toLowerCase().replace(/\s+/g,"-")}`,accessibilityRole:"button",accessibilityLabel:e,style:[M.chip,t&&M.chipActive],children:V(y,{style:[M.chipText,t&&M.chipTextActive],children:e})})}function _c({draft:e,onChange:t,onSave:r,onCancel:o,saveLabel:n="Save",applySafeAreaInset:i=false}){let s=Lc({minBottom:16}),l=i?s.bottom:0,a=m=>t({...e,...m}),[d,b]=Nr(!e.urlPattern.trim()),[E,C]=Nr(false),[S,q]=Nr(null),[g,T]=Nr(null),k=Vc(e),f=e.kind==="respond"&&typeof e.status=="number"&&!Vi.some(m=>m.code===String(e.status)),P=e.kind==="respond",z=e.methods?.[0],I=`${z??"Any"} ${e.urlPattern||"No URL yet"}`,w=zi(()=>{let m=(e.body??"").trim();if(!m)return"Empty";let O=m.split(`
143
- `).length;return`${O} line${O===1?"":"s"}`},[e.body]),H=zi(()=>{let m=(e.body??"").trim();if(!m)return null;try{return JSON.parse(m)}catch{return null}},[e.body]),v=(e.body??"").trim().length>0&&!H,h=e.delayMs??0,c=h>0&&!Wi.includes(h),u=!e.alternate&&typeof e.times=="number"&&e.times!==1;return Te(p,{style:M.root,children:[Te(ut,{testID:"buoy-network-editor-scroll",style:M.scroll,contentContainerStyle:M.scrollContent,keyboardShouldPersistTaps:"handled",children:[Te(Ui,{title:"Applies to",summary:I,open:d,onToggle:()=>b(m=>!m),children:[V(Lt,{style:M.input,value:e.urlPattern,onChangeText:m=>a({urlPattern:m}),testID:"buoy-network-override-pattern",accessibilityLabel:"Override URL pattern",placeholder:"https://api.example.com/v1/users*",placeholderTextColor:U.text.muted,autoCapitalize:"none",autoCorrect:false,multiline:true,"sentry-label":"ignore override url pattern"}),Te(p,{style:M.chipRow,children:[V(Mt,{label:"Any",active:!z,onPress:()=>a({methods:void 0})}),Wc.map(m=>V(Mt,{label:m,active:z===m,onPress:()=>a({methods:[m]})},m))]})]}),Te(p,{style:M.outcomeGrid,children:[Vi.map(m=>V(Uc,{outcome:m,active:k===m.id,onPress:()=>a(m.patch)},m.id)),V(N,{onPress:()=>T("status"),"sentry-label":"ignore custom status",accessibilityLabel:"Custom status code",style:[M.customField,f&&M.customFieldActive],children:V(y,{style:[M.customValue,f&&M.customInputActive],children:f?String(e.status):"Custom"})})]}),P?V(Ui,{title:"Response body",summary:w,open:E,onToggle:()=>C(m=>!m),children:S!==null?Te(ji,{children:[V(Lt,{style:[M.input,M.bodyInput],value:S,onChangeText:q,placeholder:"Paste a new body\u2026",placeholderTextColor:U.text.muted,autoCapitalize:"none",autoCorrect:false,autoFocus:true,multiline:true,"sentry-label":"ignore override body paste"}),Te(p,{style:M.inlineActions,children:[V(N,{onPress:()=>q(null),"sentry-label":"ignore cancel body paste",style:M.textButton,children:V(y,{style:M.textButtonMuted,children:"Cancel"})}),V(N,{onPress:()=>{let m=S.trim();try{a({body:JSON.stringify(JSON.parse(m),null,2)})}catch{a({body:m})}q(null)},disabled:!S.trim(),"sentry-label":"ignore apply body paste",style:M.textButton,children:V(y,{style:[M.textButtonLabel,!S.trim()&&M.textButtonDisabled],children:"Replace"})})]})]}):Te(ji,{children:[H!==null?V(Hi.Provider,{value:{root:H,onChange:m=>a({body:JSON.stringify(m,null,2)})},children:V(qo,{editable:true,label:"",value:H,defaultExpanded:[""]})}):V(y,{style:M.emptyBody,children:v?"This body isn't JSON, so there's no tree to show.":"No body yet."}),V(N,{onPress:()=>q(""),"sentry-label":"ignore edit all body",style:M.textButton,children:V(y,{style:M.textButtonLabel,children:"Edit all"})})]})}):null,Te(p,{style:M.field,children:[V(y,{style:M.subLabel,children:"Delay"}),Te(p,{style:M.chipRow,children:[Wi.map(m=>V(Mt,{label:m===0?"None":`${m/1e3}s`,active:h===m,onPress:()=>a({delayMs:m})},m)),V(N,{onPress:()=>T("delay"),"sentry-label":"ignore custom delay",accessibilityLabel:"Custom delay in seconds",style:[M.customField,c&&M.customFieldActive],children:V(y,{style:[M.customValue,c&&M.customInputActive],children:c?`${h/1e3}s`:"Custom"})})]})]}),Te(p,{style:M.field,children:[V(y,{style:M.subLabel,children:"Fires"}),V(y,{style:M.subHint,children:"A limited rule switches itself off once it's used up. Every other alternates forever \u2014 the first request through, the next overridden."}),Te(p,{style:M.chipRow,children:[V(Mt,{label:"Always",active:!e.alternate&&e.times==null,onPress:()=>a({alternate:false,times:null})}),V(Mt,{label:"Once",active:!e.alternate&&e.times===1,onPress:()=>a({alternate:false,times:1})}),V(Mt,{label:"Every other",active:e.alternate===true,onPress:()=>a({alternate:true,times:null})}),V(N,{onPress:()=>{a({alternate:false}),T("times")},"sentry-label":"ignore custom times",accessibilityLabel:"Custom number of times",style:[M.customField,u&&M.customFieldActive],children:V(y,{style:[M.customValue,u&&M.customInputActive],children:u?`${e.times}\xD7`:"Custom"})})]})]})]}),g==="status"?V(Do,{title:"Custom status code",hint:`${Ut}\u2013${_t}`,value:f?e.status:void 0,min:Ut,max:_t,onSubmit:m=>{a({kind:"respond",status:m??void 0,statusText:void 0}),T(null)},onCancel:()=>T(null)}):null,g==="delay"?V(Do,{title:"Custom delay",hint:"Seconds",value:c?h/1e3:void 0,min:0,onSubmit:m=>{a({delayMs:m!=null?Math.round(m*1e3):0}),T(null)},onCancel:()=>T(null)}):null,g==="times"?V(Do,{title:"Fires how many times",hint:"Leave empty for always",value:u?e.times:void 0,min:1,onSubmit:m=>{a({alternate:false,times:m&&m>0?m:null}),T(null)},onCancel:()=>T(null)}):null,Te(p,{style:[M.footer,{paddingBottom:12+l}],children:[V(N,{onPress:o,"sentry-label":"ignore cancel override",testID:"buoy-network-editor-cancel",accessibilityRole:"button",accessibilityLabel:"Cancel",style:[M.footerButton,M.cancelButton],children:V(y,{style:M.cancelText,children:"Cancel"})}),V(N,{onPress:r,disabled:!e.urlPattern.trim(),"sentry-label":"ignore save override",testID:"buoy-network-editor-save",accessibilityRole:"button",accessibilityLabel:n,style:[M.footerButton,M.saveButton,!e.urlPattern.trim()&&M.saveButtonDisabled],children:V(y,{style:M.saveText,children:n})})]})]})}var M=fe.create({root:{flex:1},scroll:{flex:1},scrollContent:{padding:12,paddingBottom:24,gap:4},field:{gap:8,paddingVertical:6},outcomeGrid:{flexDirection:"row",flexWrap:"wrap",gap:6,paddingVertical:10},outcome:{flexDirection:"row",alignItems:"center",gap:6,paddingHorizontal:10,paddingVertical:9,borderRadius:6,borderWidth:1,borderColor:U.border.default,backgroundColor:U.background.card},outcomeLabel:{fontSize:12,fontWeight:"600",color:U.text.primary},outcomeCode:{fontSize:10,fontWeight:"700",color:U.text.muted},disclosure:{borderRadius:6,borderWidth:1,borderColor:U.border.default,backgroundColor:U.background.card,overflow:"hidden"},disclosureHeader:{flexDirection:"row",alignItems:"center",gap:6,paddingHorizontal:10,paddingVertical:10},disclosureTitle:{fontSize:12,fontWeight:"600",color:U.text.primary},disclosureSummary:{flex:1,textAlign:"right",fontSize:11,color:U.text.muted},disclosureBody:{paddingHorizontal:10,paddingBottom:10,gap:8},input:{backgroundColor:U.background.input,borderWidth:1,borderColor:U.border.input,borderRadius:6,paddingHorizontal:10,paddingVertical:8,color:U.text.primary,fontSize:12,fontFamily:Bc,minHeight:40},bodyInput:{minHeight:140,textAlignVertical:"top"},chipRow:{flexDirection:"row",flexWrap:"wrap",gap:6},chip:{paddingHorizontal:10,paddingVertical:6,borderRadius:5,borderWidth:1,borderColor:U.border.default,backgroundColor:U.background.base},chipActive:{borderColor:U.semantic.info,backgroundColor:`${U.semantic.info}1F`},chipText:{fontSize:11,fontWeight:"600",color:U.text.secondary},chipTextActive:{color:U.semantic.info},customField:{flexDirection:"row",alignItems:"center",paddingHorizontal:8,borderRadius:5,borderWidth:1,borderColor:U.border.default,backgroundColor:U.background.base},customFieldActive:{borderColor:U.semantic.info,backgroundColor:`${U.semantic.info}1F`},customValue:{paddingVertical:6,fontSize:11,fontWeight:"600",color:U.text.secondary},customInputActive:{color:U.semantic.info},subHint:{fontSize:10,lineHeight:14,color:U.text.muted,marginTop:-2},subLabel:{fontSize:10,fontWeight:"700",letterSpacing:.6,color:U.text.muted,textTransform:"uppercase"},textButton:{alignSelf:"flex-start",paddingVertical:4},textButtonLabel:{fontSize:11,fontWeight:"600",color:U.semantic.info},textButtonMuted:{fontSize:11,fontWeight:"600",color:U.text.secondary},textButtonDisabled:{opacity:.4},inlineActions:{flexDirection:"row",alignItems:"center",justifyContent:"space-between"},emptyBody:{fontSize:11,color:U.text.muted,paddingVertical:6},footer:{flexDirection:"row",gap:8,padding:12,borderTopWidth:1,borderTopColor:U.border.default,backgroundColor:U.background.base},footerButton:{flex:1,paddingVertical:11,borderRadius:6,alignItems:"center",borderWidth:1},cancelButton:{borderColor:U.border.default,backgroundColor:U.background.card},cancelText:{fontSize:12,fontWeight:"600",color:U.text.secondary},saveButton:{borderColor:U.semantic.info,backgroundColor:`${U.semantic.info}22`},saveButtonDisabled:{opacity:.4},saveText:{fontSize:12,fontWeight:"700",color:U.semantic.info}});import{jsx as de,jsxs as Rt}from"react/jsx-runtime";function Xc(){return{enabled:true,urlPattern:"",kind:"respond",status:500,body:"",times:null}}function Jc(e){let{id:t,hits:r,seen:o,createdAt:n,...i}=e;return i}function Gc(e){let t=e.urlPattern,r=t.indexOf("://");if(r===-1)return t;let o=t.indexOf("/",r+3);return o===-1?t.slice(r+3):t.slice(o)}function Kc(e){let t=[];return e.delayMs&&t.push(`${e.delayMs/1e3}s delay`),e.alternate?t.push("every other"):e.times===1?t.push("once"):typeof e.times=="number"&&t.push(`${e.times}\xD7`),t.join(" \xB7 ")}function Yc(e){if(e.kind==="fail")return Y.semantic.error;if(e.kind==="delay")return Y.semantic.info;let t=e.status??200;return t>=200&&t<300?Y.semantic.success:t>=300&&t<400?Y.semantic.info:Y.semantic.error}function Zc({rule:e,spent:t,onEdit:r,onDelete:o}){let n=e.enabled&&!t,i=Yc(e),s=Kc(e),l=e.methods?.length?e.methods.join("/"):"ANY";return Rt(xc,{onPress:r,style:se.cardWrapper,contentStyle:[se.card,{borderLeftColor:n?i:"transparent"}],children:[de(Cc,{method:l,size:"small"}),Rt(p,{style:se.cardMiddle,children:[de(y,{style:[se.urlText,!n&&se.urlTextOff],numberOfLines:2,children:Gc(e)}),s?de(y,{style:se.extrasText,children:s}):null]}),e.hits>0?de(y,{style:se.rowHits,children:e.hits}):null,e.kind==="fail"?Rt(p,{style:se.failBadge,children:[de(vc,{size:10,color:Y.semantic.error}),de(y,{style:se.failText,children:e.failKind==="timeout"?"TIMEOUT":"OFFLINE"})]}):de(y,{style:[se.statusText,{color:i}],children:e.kind==="delay"?"PASS":String(e.status??200)}),de(N,{onPress:o,"sentry-label":"ignore delete override rule",testID:"buoy-network-rule-delete",accessibilityRole:"button",accessibilityLabel:"Delete rule",hitSlop:{top:8,bottom:8,left:4,right:4},style:se.rowDelete,children:de(Rc,{size:13,color:Y.text.muted})})]})}function Qc(e){return e.visible?de(eh,{...e}):null}function eh({isPro:e,onUpgradePress:t,pendingDraft:r,onPendingConsumed:o,backHandlerRef:n,applySafeAreaInset:i}){let s=kc("network.overrideRules"),l=e?rt:s,{enabled:a,autoPaused:d,rules:b,activeCount:E,setEnabled:C,upsertRule:S,setRuleEnabled:q,removeRule:g,isRuleSpent:T}=Ar(),[k,f]=bc(null);Mr(()=>{_.noteHealthyLaunch()},[]),Mr(()=>{if(n)return n.current=k?()=>(f(null),true):null,()=>{n.current=null}},[n,k]);let P=yc(v=>{_.fetchRuleBody(v).then(h=>{h!=null&&f(c=>c?.id===v?{...c,draft:{...c.draft,body:h,bodyOmitted:void 0}}:c)})},[]);Mr(()=>{if(!r)return;let{id:v,...h}=r;f({id:v,draft:h}),v&&h.bodyOmitted&&P(v),o?.()},[r,o,P]),Mr(()=>{k?.id&&(b.some(v=>v.id===k.id)||f(null))},[k?.id,b]);let z=v=>{f({id:v.id,draft:Jc(v)}),v.bodyOmitted&&P(v.id)},I=v=>{b.filter(h=>h.enabled&&!T(h)).length<=l||b.filter(h=>h.enabled&&!T(h)&&h.id!==v).forEach(h=>q(h.id,false))},w=()=>{if(!k)return;let v={...k.draft,enabled:true,urlPattern:k.draft.urlPattern.trim()};if(!v.urlPattern)return;let h=S({...v,id:k.id});I(h?.id??k.id),C(true),f(null)};if(k)return de(_c,{draft:k.draft,onChange:v=>f({...k,draft:v}),onSave:w,onCancel:()=>f(null),saveLabel:k.id?"Save":"Add",applySafeAreaInset:i});let H=b.length>0;return Rt(p,{style:se.root,children:[H?Rt(p,{style:[se.bar,a&&E>0&&se.barOn],children:[a&&E>0?de(Sc,{size:12,color:Y.semantic.warning}):null,de(y,{style:[se.barText,a&&E>0&&se.barTextOn],numberOfLines:2,children:d?"Overrides paused \u2014 they'd been on for 3 launches":a&&E>0?`${E} override${E===1?" is":"s are"} on`:"Overrides are off"}),de(N,{onPress:()=>C(!(a&&E>0)),"sentry-label":"ignore toggle overrides master",testID:"buoy-network-overrides-master",accessibilityRole:"button",style:se.barButton,children:de(y,{style:se.barButtonText,children:a&&E>0?"Turn all off":d?"Turn back on":"Turn on"})})]}):null,Rt(p,{style:se.listHeader,children:[de(y,{style:se.listHeaderText,children:H?`${b.length} rule${b.length===1?"":"s"}`:""}),de(N,{onPress:()=>f({draft:Xc()}),"sentry-label":"ignore new override rule",accessibilityLabel:"New override rule",style:se.newButton,children:de(Tc,{size:14,color:Y.semantic.info})})]}),H?Rt(ut,{style:se.list,contentContainerStyle:se.listContent,keyboardShouldPersistTaps:"handled",children:[b.map(v=>de(Zc,{rule:v,spent:T(v),onEdit:()=>z(v),onDelete:()=>g(v.id)},v.id)),l<rt?de(y,{style:se.footNote,children:`Your plan: ${l} override at a time. Pro: up to ${rt}.`}):null]}):de(p,{style:se.emptyWrap,children:de(wc,{otto:"empty",iconSize:32,title:"Nothing overridden",description:"Open any request and tap Override, or + to write a rule."})})]})}var se=fe.create({root:{flex:1},bar:{flexDirection:"row",alignItems:"center",gap:8,paddingHorizontal:12,paddingVertical:10,borderBottomWidth:1,borderBottomColor:Y.border.default,backgroundColor:Y.background.card},barOn:{borderBottomColor:Y.semantic.warning+"44",backgroundColor:Y.semantic.warningBackground},barText:{flex:1,fontSize:12,fontWeight:"600",color:Y.text.secondary},barTextOn:{color:Y.semantic.warning},barButton:{paddingHorizontal:10,paddingVertical:6,borderRadius:5,borderWidth:1,borderColor:Y.border.hover,backgroundColor:Y.background.base},barButtonText:{fontSize:11,fontWeight:"700",color:Y.text.primary},listHeader:{flexDirection:"row",alignItems:"center",justifyContent:"space-between",paddingHorizontal:12,paddingTop:10,paddingBottom:4},listHeaderText:{fontSize:10,fontWeight:"700",letterSpacing:.6,color:Y.text.muted,textTransform:"uppercase"},newButton:{padding:6,borderRadius:5,borderWidth:1,borderColor:Y.border.default,backgroundColor:Y.background.card},emptyWrap:{flex:1,justifyContent:"center"},list:{flex:1},listContent:{padding:10,gap:6},cardWrapper:{marginHorizontal:0,marginVertical:0},card:{flexDirection:"row",alignItems:"center",gap:8,borderLeftWidth:3,borderLeftColor:"transparent"},cardMiddle:{flex:1},urlText:{fontSize:12,color:Y.text.primary,lineHeight:16,fontFamily:Ec},urlTextOff:{color:Y.text.muted},extrasText:{fontSize:10,color:Y.text.secondary,marginTop:2},statusText:{fontSize:11,fontWeight:"600"},failBadge:{flexDirection:"row",alignItems:"center",gap:2,paddingHorizontal:4,paddingVertical:1,backgroundColor:Y.semantic.error+"26",borderRadius:3},failText:{fontSize:10,color:Y.semantic.error,fontWeight:"600"},rowHits:{fontSize:11,fontWeight:"700",color:Y.semantic.warning},rowDelete:{padding:5,borderRadius:5,borderWidth:1,borderColor:Y.border.default,backgroundColor:Y.background.base},footNote:{fontSize:10,lineHeight:14,color:Y.text.muted,paddingHorizontal:4,paddingTop:8}});D();ce();import{FlaskConical as th,night as kt}from"@buoy-gg/shared-ui/web";import{jsx as zo,jsxs as rh}from"react/jsx-runtime";function oh({onPress:e}){let{activeCount:t}=Ar(),r=t>0;return rh(N,{onPress:e,"sentry-label":"ignore open overrides",testID:"buoy-network-overrides",accessibilityRole:"button",style:[Ur.button,r&&Ur.buttonActive],accessibilityLabel:r?`Response overrides \u2014 ${t} active`:"Response overrides",children:[zo(th,{size:14,color:r?kt.color.warning:kt.color.textSecondary}),r?zo(p,{style:Ur.badge,children:zo(y,{style:Ur.badgeText,children:t})}):null]})}var Ur=fe.create({button:{width:32,height:32,borderRadius:8,alignItems:"center",justifyContent:"center",backgroundColor:kt.color.buttonSurface,borderWidth:1,borderColor:kt.color.border},buttonActive:{backgroundColor:kt.color.warningSoft,borderColor:kt.color.warning+"77"},badge:{position:"absolute",top:1,right:1,minWidth:12,height:12,borderRadius:6,paddingHorizontal:3,alignItems:"center",justifyContent:"center",backgroundColor:kt.color.warning},badgeText:{fontSize:8,fontWeight:"800",color:"#000000"}});D();ce();import{night as Nt}from"@buoy-gg/shared-ui/web";D();function nh(e){let t=e.indexOf("?");return t===-1?e:`${e.slice(0,t)}*`}function ih(e){if(e==null)return"";if(typeof e=="string")return e;try{return JSON.stringify(e,null,2)}catch{return""}}function Ao(e){return{enabled:true,name:void 0,urlPattern:nh(e.url),methods:[String(e.method||"GET").toUpperCase()],kind:"respond",status:e.status&&e.status>=200?e.status:200,statusText:e.statusText,body:ih(e.responseData),times:null}}import{jsx as _i}from"react/jsx-runtime";function sh({onOpen:e}){let t=Ro(),{rules:r,isRuleSpent:o}=Ar(),n=t?K.getEvents().find(l=>l.id===t)??ae.getEventById(t):null,i=n?r.find(l=>l.enabled&&!o(l)&&lo(l,n.url,String(n.method||"GET")))??null:null,s=i!==null;return _i(N,{onPress:()=>{if(n){if(i){let{id:l,hits:a,seen:d,createdAt:b,...E}=i;e(E,l);return}e(Ao(n))}},"sentry-label":"ignore open overrides",testID:"buoy-network-override-request",accessibilityRole:"button",accessibilityLabel:s?"Edit the override on this request":"Override this request",style:[_r.button,s&&_r.buttonActive],children:_i(y,{style:[_r.label,s&&_r.labelActive],children:"Override"})})}var _r=fe.create({button:{paddingHorizontal:10,paddingVertical:6,borderRadius:8,borderWidth:1,borderColor:Nt.color.border,backgroundColor:Nt.color.buttonSurface},buttonActive:{borderColor:Nt.color.warning+"77",backgroundColor:Nt.color.warningSoft},label:{fontSize:11,fontWeight:"700",color:Nt.color.accent},labelActive:{color:Nt.color.warning}});D();ce();import{absoluteFill as Xi,night as lt}from"@buoy-gg/shared-ui/web";import{jsx as Qe,jsxs as Xr}from"react/jsx-runtime";function ah({onPress:e,isOpen:t,hasIndicator:r}){return Xr(N,{onPress:e,"sentry-label":"ignore toggle header menu",testID:"buoy-network-menu",accessibilityRole:"button",accessibilityLabel:t?"Close menu":"More actions",style:[we.button,t&&we.buttonOpen],children:[Xr(p,{style:we.dots,children:[Qe(p,{style:[we.dot,t&&we.dotOpen]}),Qe(p,{style:[we.dot,t&&we.dotOpen]}),Qe(p,{style:[we.dot,t&&we.dotOpen]})]}),r?Qe(p,{style:we.indicator}):null]})}function lh({onClose:e,children:t}){return Xr(p,{style:we.overlay,children:[Qe(N,{style:we.backdrop,activeOpacity:1,onPress:e,"sentry-label":"ignore dismiss header menu"}),Qe(p,{style:we.panel,children:t})]})}function Ho({icon:e,label:t,detail:r,testID:o,onPress:n}){return Xr(N,{onPress:n,"sentry-label":"ignore header menu item",testID:o,accessibilityRole:"button",accessibilityLabel:t,style:we.item,children:[Qe(p,{style:we.itemIcon,children:e}),Qe(y,{style:we.itemLabel,children:t}),r?Qe(y,{style:we.itemDetail,children:r}):null]})}var we=fe.create({button:{width:32,height:32,borderRadius:8,alignItems:"center",justifyContent:"center"},buttonOpen:{backgroundColor:lt.color.surfaceElevated},dots:{flexDirection:"column",gap:2.5,alignItems:"center"},dot:{width:3,height:3,borderRadius:2,backgroundColor:lt.color.textSecondary},dotOpen:{backgroundColor:lt.color.text},indicator:{position:"absolute",top:6,right:8,width:6,height:6,borderRadius:3,backgroundColor:lt.color.accent},overlay:{...Xi,zIndex:50},backdrop:{...Xi,backgroundColor:"rgba(0,0,0,0.5)"},panel:{position:"absolute",top:6,right:8,minWidth:196,paddingVertical:4,borderRadius:10,borderWidth:1,borderColor:lt.color.border,backgroundColor:lt.color.surface},item:{flexDirection:"row",alignItems:"center",gap:10,paddingHorizontal:12,paddingVertical:11},itemIcon:{width:16,alignItems:"center"},itemLabel:{flex:1,fontSize:13,fontWeight:"600",color:lt.color.text},itemDetail:{fontSize:11,color:lt.color.textTertiary}});D();import{memo as dh,useEffect as uh,useMemo as ch}from"react";import{EventStepperFooter as hh,useLimit as ph}from"@buoy-gg/shared-ui/web";import{jsx as fh}from"react/jsx-runtime";var gh=()=>Ve.step(-1),mh=()=>Ve.step(1),yh=dh(function({paused:e,filter:t,ignoredPatterns:r,isPro:o,fromSaved:n,savedSearch:i,applySafeAreaInset:s}){let{visibleEvents:l}=sr({filter:t,ignoredPatterns:r,paused:e,isPro:o}),{pinnedEvents:a,pinnedLiveIds:d,savedRecords:b}=Ot(),E=ph("network.saved"),C=ch(()=>{if(n)return Oi(b,E,i).events;let{pinned:g,rest:T}=Po(l,a,d);return g.length===0?T:[...g,...T]},[n,b,i,o,l,a,d]);uh(()=>{Ve.setIds(ou(C))},[C]);let{index:S,total:q}=su();return S<0?null:fh(hh,{currentIndex:S,totalItems:q,itemLabel:"Request",applySafeAreaInset:s,onPrevious:gh,onNext:mh,variant:"night"})});D();import{useEffect as bh,useState as vh}from"react";function Sh(e){return K.getEvents().find(t=>t.id===e)??ae.getEventById(e)}function Ji(e,t={}){let{paused:r=false}=t,[o,n]=vh(null);return bh(()=>{if(!(!e||r))return K.subscribeToEvents(i=>{let s=i.find(l=>l.id===e);s&&n(l=>l&&l.id===e&&l.event===s?l:{id:e,event:s})})},[e,r]),e?o&&o.id===e?o.event:Sh(e):null}import{Fragment as xh,jsx as F,jsxs as Ne}from"react/jsx-runtime";function wh({visible:e,paused:t,ignoredPatternValues:r,onTogglePattern:o,isPro:n,filter:i,ignoredPatterns:s,fromSaved:l,savedSearch:a,applySafeAreaInset:d}){let b=Ro(),E=iu(),C=b!=null&&b===E,S=Ji(b,{paused:t||!e});return yt(()=>{e&&S&&C&&Ve.reportRendered(S.id)},[e,S,C]),e?Ne(p,{style:Et.detailRoot,children:[S?F(oi,{event:S,ignoredPatterns:r,onTogglePattern:o,showBodies:C}):F(p,{style:Et.detailBodyFallback}),F(yh,{paused:t,filter:i,ignoredPatterns:s,isPro:n,fromSaved:l,savedSearch:a,applySafeAreaInset:d})]}):null}function Ch({visible:e,paused:t,isPro:r,filter:o,onFilterChange:n,ignoredPatterns:i,onRemovePattern:s,onAddPattern:l,onTogglePatternMode:a,isTeamPattern:d}){let{events:b}=sr({filter:o,ignoredPatterns:i,paused:t,visible:e,isPro:r});return e?F(jl,{events:b,filter:o,onFilterChange:n,ignoredPatterns:i,onRemovePattern:s,onAddPattern:l,onTogglePatternMode:a,isTeamPattern:d}):null}function Th({visible:e,paused:t,isPro:r,filter:o,ignoredPatterns:n,settings:i,onSettingsChange:s}){let{events:l}=sr({filter:o,ignoredPatterns:n,paused:t,visible:e,isPro:r});return e?F(Ld,{settings:i,onSettingsChange:s,events:l}):null}function Gi({visible:e,onClose:t,onBack:r,onMinimize:o,enableSharedModalDimensions:n=false,inline:i=false,paused:s,onPausedChange:l,remoteConditions:a}){let{isPro:d}=Tl(),[b,E]=ye(false),C=s!=null&&l!=null,S=C?s:b,q=Q=>{let De=typeof Q=="function"?Q(S):Q;C?l(De):E(De)},[g,T]=ye({}),k=nu(),[f,P]=ye(false),[z,I]=ye(false),[w,H]=ye(false),[v,h]=ye(false),[c,u]=ye(0),[m]=ye(pl);yt(()=>{m.update(a)},[m,a]),yt(()=>()=>m.update(void 0),[m]);let O=true,[re,Z]=ye(null),[ee,G]=ye("filters"),[A,W]=ye(""),[$,ne]=ye(false),pe=wr(false),[tt,dt]=ye(""),is=wr(null),{patterns:Pt,values:ss,add:as,remove:ls,toggle:ds,toggleMode:us,isTeamOnly:cs}=El(),[Ft,_o]=ye(Rd),Zr=wr(false),[Qr,eo]=ye(false),[It,hs]=ye("export"),jt=Q=>{hs(Q),eo(true)};yt(()=>{Qr&&d&&eo(false)},[Qr,d]),yt(()=>{if(!e||Zr.current)return;(async()=>{try{let Q=await Fn.getItem(Cr.network.copyOptions());if(Q){let De=JSON.parse(Q);_o(De)}}catch{}finally{Zr.current=true}})()},[e]),yt(()=>{if(!Zr.current)return;(async()=>{try{await Fn.setItem(Cr.network.copyOptions(),JSON.stringify(Ft))}catch{}})()},[Ft]);let ps=()=>{Ve.clear()},Xo=go(Q=>{Ve.select(Q.id)},[]),fs=go((Q,De)=>{Z(De?{...Q,id:De}:Q),H(true),Ve.clear()},[]),gs=go(()=>Z(null),[]),Jo=wr(null),Go=Q=>{W(Q),T(De=>({...De,searchText:Q}))},ms=Q=>{T(De=>({...De,status:De.status===Q?void 0:Q}))},[Ko,ys]=ye("bottomSheet"),bs=Q=>{ys(Q)};yt(()=>{$&&requestAnimationFrame(()=>{is.current?.focus()})},[$]);let Yo=()=>f?Ne(ge,{children:[F(ge.Navigation,{onBack:()=>P(false)}),F(ge.Content,{title:"",noMargin:true,children:F(Cl,{size:"sm",tabs:[{key:"filters",label:"Filters"},{key:"copy",label:"Copy"}],activeKey:ee,onChange:Q=>G(Q)})})]}):k?Ne(ge,{children:[F(ge.Navigation,{onBack:ps}),F(ge.Content,{title:"Request Details",centered:true}),Ne(ge.Actions,{children:[O?F(sh,{onOpen:fs}):null,F(Ei,{isPro:d,onUpgradePress:()=>jt("saved")})]})]}):w&&O?Ne(ge,{children:[F(ge.Navigation,{onBack:()=>{Jo.current?.()||(H(false),Z(null))}}),F(ge.Content,{title:"Response Overrides",centered:true})]}):z?Ne(ge,{children:[F(ge.Navigation,{onBack:()=>I(false)}),F(ge.Content,{title:"Saved Requests",centered:true})]}):Ne(ge,{children:[r&&F(ge.Navigation,{onBack:r}),F(ge.Content,{title:"",children:$?F(ge.Search,{value:A,onChangeText:Go,onCancel:()=>{Go(""),ne(false)},onDismiss:()=>ne(false),dismissOnBlur:true,clearOnlyWhenText:true,placeholder:"Search URL, method, operation, error...",accessibilityLabel:"Search network requests",iconSize:14,testID:"buoy-network-search-input",clearTestID:"buoy-network-search-clear",inputProps:{"sentry-label":"ignore network search header"}}):F(pu,{activeStatus:g.status,onToggleStatus:ms,ignoredPatterns:Pt,paused:S})}),Ne(ge.Actions,{children:[F(N,{"sentry-label":"ignore open search",testID:"buoy-network-search-open",accessibilityLabel:"Open search",accessibilityRole:"button",onPress:()=>ne(true),style:Et.headerActionButton,children:F(yl,{size:14,color:Ke.color.textSecondary})}),O?F(oh,{onPress:()=>H(true)}):null,F(kl,{isEnabled:!S,onToggle:()=>q(Q=>!Q),accessibilityLabel:S?"Resume network capture":"Pause network capture",testID:"buoy-network-power"}),F(fu,{paused:S}),F(ah,{onPress:()=>h(Q=>!Q),isOpen:v,hasIndicator:to})]})]}),to=!!(g.status||g.method||g.contentType),vs=n?Cr.modal.root():Cr.network.modal();if(!e)return null;let Ss=k||!f,Zo=Ne(xh,{children:[Ne(p,{style:Et.container,children:[F(wh,{visible:k,paused:S,ignoredPatternValues:ss,onTogglePattern:ds,isPro:d,filter:g,ignoredPatterns:Pt,fromSaved:z,savedSearch:tt,applySafeAreaInset:!i&&Ko==="bottomSheet"}),F(Ch,{visible:f&&ee==="filters"&&!k,paused:S,isPro:d,filter:g,onFilterChange:T,ignoredPatterns:Pt,onRemovePattern:ls,onAddPattern:as,onTogglePatternMode:us,isTeamPattern:cs}),F(Th,{visible:f&&ee==="copy"&&!k,paused:S,isPro:d,filter:g,ignoredPatterns:Pt,settings:Ft,onSettingsChange:_o}),F(Qc,{visible:O&&w&&!k&&!f,isPro:d,onUpgradePress:()=>jt("overrides"),pendingDraft:re,onPendingConsumed:gs,backHandlerRef:Jo,applySafeAreaInset:!i&&Ko==="bottomSheet"}),F(Di,{visible:z&&!k&&!f&&!(w&&O),isPro:d,copySettings:Ft,search:tt,onSearchChange:dt,onEventPress:Xo,onUpgradePress:()=>jt("saved")}),F(sc,{visible:!k&&!f&&!z&&!(w&&O),paused:S,filter:g,ignoredPatterns:Pt,isPro:d,searchText:A,onEventPress:Xo,onUpgradePress:()=>jt("export")})]}),v?Ne(lh,{onClose:()=>h(false),children:[F(Ho,{icon:F(bl,{size:14,color:Ke.color.textSecondary}),label:"Network throttling",testID:"buoy-network-menu-throttling",onPress:()=>{h(false),ml(a?m:void 0),i||u(Q=>Q+1)}}),F(Ho,{icon:F(vl,{size:14,color:to?Ke.color.accent:Ke.color.textSecondary}),label:"Filters",detail:to?"Active":void 0,onPress:()=>{h(false),G("filters"),P(true)}}),F(Ho,{icon:F(Sl,{size:14,color:Ke.color.textSecondary}),label:"Saved requests",onPress:()=>{h(false),I(true)}}),F(p,{style:Et.menuCopyRow,children:F(mu,{isPro:d,filter:g,ignoredPatterns:Pt,copySettings:Ft,paused:S,onUpgradePress:()=>{h(false),jt("export")},label:"Copy requests"})})]}):null,F(Rl,{visible:Qr,onClose:()=>eo(false),featureName:It==="saved"?"Saved Requests":It==="overrides"?"Response Overrides":"Network Export",description:It==="saved"?"Keep the requests that matter. Saved requests survive Clear, app restarts, and the 500-request history cap.":It==="overrides"?"Force any endpoint to fail, stall or return something else \u2014 no backend changes, no code changes. Free keeps one active rule.":"Export network requests to share with your team, debug APIs, or feed into AI tools.",benefits:It==="overrides"?[`Run ${rt} rules at once (free keeps ${wn})`,"Force a 500, a 401 or an empty list in one tap","Simulate offline, timeouts and slow connections","Rules survive an app reload, so you can test the boot path"]:It==="saved"?[`Save up to ${it} requests (free keeps ${gi})`,"Failed requests stay put through a Clear","Snapshots survive an app restart","Export saved requests to teammates or AI assistants"]:["Export to JSON, Markdown, or plain text","Customizable copy presets (URLs only, LLM-ready, full data)","Share request details with teammates","Feed network data directly to AI assistants"]})]});return i?Ne(p,{style:Et.inlineRoot,children:[F(p,{style:Et.inlineHeader,...Pl,children:Yo()}),Zo]}):F(xl,{visible:e,onClose:t,onMinimize:o,minimizeRequest:c,persistenceKey:vs,variant:"night",header:{showToggleButton:true,customContent:Yo()},onModeChange:bs,enablePersistence:true,initialMode:"bottomSheet",enableGlitchEffects:true,disableScrollWrapper:Ss,styles:{},children:Zo})}var Et=fe.create({container:{flex:1,backgroundColor:"transparent"},detailRoot:{flex:1,minHeight:0},detailBodyFallback:{flex:1},inlineRoot:{flex:1,minHeight:0,backgroundColor:"transparent"},inlineHeader:{paddingHorizontal:12,paddingVertical:8,borderBottomWidth:1,borderBottomColor:wl.border.default,backgroundColor:"transparent"},menuCopyRow:{paddingHorizontal:6},headerActionButton:{width:32,height:32,borderRadius:8,backgroundColor:Ke.color.buttonSurface,borderWidth:1,borderColor:Ke.color.border,alignItems:"center",justifyContent:"center"},activeFilterButton:{backgroundColor:Ke.color.accentSoft,borderColor:Ke.color.accentBorderStrong}});function Ki(e){return F(bo,{children:F(Gi,{...e})})}function Rh(e={}){return F(bo,{children:F(Gi,{...e,inline:true,visible:true,onClose:kh})})}var kh=()=>{};import{jsx as Eh}from"react/jsx-runtime";var Yi=typeof navigator<"u"&&navigator.product==="ReactNative";Yi&&_.ensureLoaded();Yi&&typeof me<"u"&&me&&K.startBootCapture();var Zi=ll({id:"network",name:"NET",description:"Network request logger",slot:"both",icon:({size:e})=>Eh(sl,{size:e}),component:Ki,props:{enableSharedModalDimensions:false}}),Ph=al(Zi,e=>({enableSharedModalDimensions:e.enableSharedModalDimensions??false}));D();function Ih(){let e=typeof navigator<"u"&&navigator.product==="ReactNative";if(!e&&(typeof window>"u"||typeof document>"u"))return()=>{};_.ensureLoaded();let t=e?()=>{}:Nn(),r=K.subscribeToEvents(()=>{}),o=false;return()=>{o||(o=true,t(),r())}}D();import{useState as Mo,useEffect as Lh,useCallback as Jr,useMemo as et,useRef as Bh}from"react";import{useLimit as qh,TIER_LIMITS as Oh}from"@buoy-gg/shared-ui/web";var Wf=Oh["network.requests"].free;function Dh(e={}){let{isPro:t=false}=e,r=qh("network.requests"),o=t?1/0:r,[n,i]=Mo([]),[s,l]=Mo({}),[a,d]=Mo(true),b=Bh(null);Lh(()=>(a&&(b.current=K.subscribeToEvents(i)),()=>{b.current&&(b.current(),b.current=null)}),[a]);let E=Jr(()=>{K.clearEvents(),i([])},[]),C=Jr(()=>{d(false)},[]),S=Jr(()=>{d(true)},[]),q=et(()=>s.searchText?s.searchText.toLowerCase():null,[s.searchText]),g=et(()=>s.method&&s.method.length>0?new Set(s.method):null,[s.method]),T=et(()=>s.contentType&&s.contentType.length>0?new Set(s.contentType):null,[s.contentType]),k=et(()=>{let c=[...n];if(g&&(c=c.filter(u=>g.has(u.method))),s.status&&s.status!=="all")switch(s.status){case"success":c=c.filter(u=>u.status&&u.status>=200&&u.status<300);break;case"error":c=c.filter(u=>u.error||u.status&&u.status>=400);break;case"pending":c=c.filter(u=>!u.status&&!u.error);break}return q&&(c=c.filter(u=>u.url.toLowerCase().includes(q)||u.method.toLowerCase().includes(q)||u.path?.toLowerCase().includes(q)||u.host?.toLowerCase().includes(q)||u.error&&u.error.toLowerCase().includes(q)||u.operationName&&u.operationName.toLowerCase().includes(q)||ei(u.graphqlVariables,q))),s.host&&(c=c.filter(u=>u.host===s.host)),T&&(c=c.filter(u=>{let m=u.responseHeaders||u.requestHeaders,O=m?.["content-type"]||m?.["Content-Type"]||"";for(let re of T)switch(re){case"JSON":if(O.includes("json"))return true;break;case"XML":if(O.includes("xml"))return true;break;case"HTML":if(O.includes("html"))return true;break;case"TEXT":if(O.includes("text"))return true;break;case"IMAGE":if(O.includes("image"))return true;break;case"VIDEO":if(O.includes("video"))return true;break;case"AUDIO":if(O.includes("audio"))return true;break;case"FORM":if(O.includes("form"))return true;break;case"OTHER":if(!O||!O.includes("json")&&!O.includes("xml")&&!O.includes("html")&&!O.includes("text")&&!O.includes("image")&&!O.includes("video")&&!O.includes("audio")&&!O.includes("form"))return true;break}return false})),c},[n,s,q,g,T]),f=et(()=>{let c=new Set;return n.slice(o).forEach(u=>{c.add(u.id)}),c},[n,o]),P=et(()=>k.filter(c=>f.has(c.id)),[k,f]),z=P.length>0,I=P.length,w=Jr(c=>f.has(c),[f]),H=et(()=>{let c=0,u=0,m=0,O=0,re=0,Z=0,ee=0;for(let A of n)A.status&&A.status>=200&&A.status<300?c++:A.error||A.status&&A.status>=400?u++:!A.status&&!A.error&&m++,O+=A.requestSize||0,re+=A.responseSize||0,A.duration&&(Z+=A.duration,ee++);let G=ee>0?Z/ee:0;return{totalRequests:n.length,successfulRequests:c,failedRequests:u,pendingRequests:m,totalDataSent:O,totalDataReceived:re,averageDuration:Math.round(G)}},[n]),v=et(()=>{let c=new Set;for(let u of n)u.host&&c.add(u.host);return Array.from(c)},[n]),h=et(()=>{let c=new Set;for(let u of n)c.add(u.method);return Array.from(c)},[n]);return{events:k,allEvents:n,stats:H,filter:s,setFilter:l,clearEvents:E,isCapturing:a,pauseCapturing:C,resumeCapturing:S,hosts:v,methods:h,hasLockedEvents:z,lockedEventCount:I,isEventLocked:w,requestLimit:o,getSubscriberCounts:()=>K.getSubscriberCounts()}}import{useIgnoredPatterns as zh,ignoredPatternsStore as Ah,urlMatchesIgnoredPattern as Hh,isUrlIgnored as Mh}from"@buoy-gg/shared-ui/web";D();import{approxJsonSize as No,isOverWireBudget as Nh}from"@buoy-gg/shared-ui/web";import{expandKeyedArrays as $h,patchFromPath as Fh,refusalText as jh,shapeKind as Qi,suggestedPatch as Wh,typedEditViolations as Vh}from"@buoy-gg/shared-ui/web";var $o=16*1024,Gr=1.25*1024*1024;function Fo(e,t){return e===void 0?false:(t??0)>$o?true:Nh(e,$o)}var es=new WeakMap,ts=new WeakMap;function jo(e){let t=es.get(e);if(t)return t;let r;try{r=_h(e)}catch{r=Uh(e)}return es.set(e,r),r}function Uh(e){let t={...e,requestData:void 0,responseData:void 0,graphqlVariables:void 0,requestBodyOmitted:e.requestData!==void 0?true:void 0,responseBodyOmitted:e.responseData!==void 0?true:void 0},r=1024;try{r=No(t,Gr).bytes}catch{}return{event:t,bytes:r}}function _h(e){let t=Fo(e.requestData,e.requestSize),r=Fo(e.responseData,e.responseSize),o=rs(e.graphqlVariables),n=os(e.requestHeaders),i=os(e.responseHeaders),s=t||r||o!==e.graphqlVariables||n!==e.requestHeaders||i!==e.responseHeaders,l=e;return s&&(l={...e},t&&(l.requestData=void 0,l.requestBodyOmitted=true),r&&(l.responseData=void 0,l.responseBodyOmitted=true),o!==e.graphqlVariables&&(l.graphqlVariables=o),n!==e.requestHeaders&&(l.requestHeaders=n,l.headersOmitted=true),i!==e.responseHeaders&&(l.responseHeaders=i,l.headersOmitted=true)),{event:l,bytes:No(l,Gr).bytes}}function Xh(e){let t=ts.get(e);if(t)return t;let{event:r}=jo(e),o={...r};o.requestData!==void 0&&(o.requestData=void 0,o.requestBodyOmitted=true),o.responseData!==void 0&&(o.responseData=void 0,o.responseBodyOmitted=true),o.graphqlVariables!==void 0&&(o.graphqlVariables=rs(o.graphqlVariables,true));let n={event:o,bytes:No(o,Gr).bytes};return ts.set(e,n),n}function Jh(e){let t=new Array(e.length),r=0;for(let o=0;o<e.length;o++){let n=jo(e[o]);if(r+n.bytes<=Gr)t[o]=n.event,r+=n.bytes;else{let i=Xh(e[o]);t[o]=i.event,r+=i.bytes}}return t}function rs(e,t=false){if(!e||!t&&!Fo(e,void 0))return e;let r={};for(let[o,n]of Object.entries(e))(typeof n=="string"&&n.length<=64||typeof n=="number"||typeof n=="boolean")&&(r[o]=n);return Object.keys(r).length>0?r:void 0}var Wo=64;function os(e){if(!e)return e;let t=false,r={};for(let[o,n]of Object.entries(e))typeof n=="string"&&(n.length<=Wo?r[o]=n:(r[o]=`${n.slice(0,Wo)}\u2026 [${n.length-Wo} more]`,t=true));return t?r:e}var Gh=e=>{let t=false,r=e.rules.map(o=>!o.body||o.body.length<=$o?o:(t=true,{...o,body:void 0,bodyOmitted:true}));return t?{...e,rules:r}:e},Kr=e=>K.getEventById(e)??ae.getEventById(e),$t=e=>e&&typeof e=="object"?e.id:void 0,Yr=(e,t)=>!!(e&&typeof e=="object"&&e[t]),Vo=()=>Rn()?{}:{active:false,inactiveReason:ja},Kh=["respond","fail","delay"];function Yh(e,t){if(!e||typeof e!="object")return null;let r=e.rule??e;if(!r||typeof r!="object")return null;let o=r,n=typeof o.urlPattern=="string"&&o.urlPattern.trim()?o.urlPattern.trim():t?.urlPattern??"";if(!n)return null;let i=Kh.includes(o.kind)?o.kind:t?.kind??"respond";return{id:typeof o.id=="string"?o.id:void 0,enabled:o.enabled!==false,name:typeof o.name=="string"?o.name:t?.name,urlPattern:n,methods:Array.isArray(o.methods)?o.methods.filter(s=>typeof s=="string").map(s=>s.toUpperCase()):t?.methods,requireHeader:typeof o.requireHeader=="string"&&o.requireHeader.trim()?o.requireHeader.trim():void 0,kind:i,status:typeof o.status=="number"?o.status:t?.status,statusText:typeof o.statusText=="string"?o.statusText:t?.statusText,headers:o.headers&&typeof o.headers=="object"?o.headers:t?.headers,body:Qh(o,t),failKind:o.failKind==="timeout"?"timeout":void 0,delayMs:typeof o.delayMs=="number"?o.delayMs:void 0,times:typeof o.times=="number"?o.times:null,alternate:o.alternate===true}}var dr=e=>!!e&&typeof e=="object"&&!Array.isArray(e);function ns(e,t,r="",o={shrunk:[],breaks:[]}){if(Array.isArray(e)&&Array.isArray(t))return t.length>0&&t.length<e.length&&o.shrunk.push({path:r||"(root)",have:e.length,sent:t.length}),t;if(!dr(e)||!dr(t))return t;let n={...e};for(let[i,s]of Object.entries(t)){let l=r?`${r}.${i}`:i;if(i in e){let a=Qi(e[i]),d=Qi(s);(a==="array"||a==="object")&&a!==d&&o.breaks.push({path:l,from:a,to:d}),n[i]=ns(e[i],s,l,o)}else n[i]=s}return n}function Zh(e,t){if(e.body!=null||!dr(e.bodyPatch)||typeof t!="string")return[];try{return Vh(JSON.parse(t),e.bodyPatch,{noun:"response body"})}catch{return[]}}function Qh(e,t){if(typeof e.body=="string")return e.body;if(e.body!=null)return JSON.stringify(e.body,null,2);let r=t?.body??(typeof e.id=="string"?_.getState().rules.find(o=>o.id===e.id)?.body:void 0);if(dr(e.bodyPatch)&&typeof r=="string")try{return JSON.stringify(ns(JSON.parse(r),e.bodyPatch),null,2)}catch{return r}return r}function ep(e){if(!e||typeof e!="object")return null;let t=e.rule??e;if(!t||typeof t!="object")return null;let r=t.id;if(typeof r!="string")return null;let o=_.getState().rules.find(n=>n.id===r);return o?{...o}:null}function tp(e){if(!e||typeof e!="object")return null;let t=e.rule??e;if(!t||typeof t!="object")return null;let r=t;if(r.bodyOmitted!==true||typeof r.id!="string")return null;let o=_.getState().rules.find(n=>n.id===r.id);return o?{body:o.body}:null}function rp(e){if(!e||typeof e!="object")return null;let t=e.fromRequestId;if(typeof t!="string"||!t)return null;let r=Kr(t);return r?Ao(r):null}var op={dispose:()=>{_.setEnabled(false)},version:6,getSnapshot:()=>(K.ensureInterception(),{conditions:{version:1,runtimeId:ho,profile:mt(),available:gt()},events:Jh(K.getEvents()),overrides:Gh(_.getState()),saved:ae.getRecords().map(e=>({...e,event:jo(e.event).event}))}),subscribe:e=>{let t=K.subscribeToEvents(e),r=Kt(e),o=ae.subscribe(e),n=_.subscribe(e);return()=>{r(),t(),o(),n()}},actions:{getNetworkConditions:()=>({runtimeId:ho,profile:mt(),available:gt()}),setNetworkConditions:e=>{let t=e&&typeof e=="object"?e.profile:void 0;return{runtimeId:ho,profile:Sr(t),available:gt()}},clearEvents:()=>{K.clearEvents()},getEventBody:e=>{let t=$t(e);if(!t)return null;let r=Kr(t);return r?{url:r.url??null,method:r.method??null,status:r.status??null,override:r.override??null,requestData:r.requestData??null,responseData:r.responseData??null,requestHeaders:r.requestHeaders??null,responseHeaders:r.responseHeaders??null}:null},setPinned:e=>{let t=$t(e);if(!t)return null;let r=Kr(t);if(!r)return null;let o=Yr(e,"pinned");return Lr(ae.getState(),t).pinned===o?{ok:true}:ae.togglePin(r)},setSaved:e=>{let t=$t(e);if(!t)return null;let r=Kr(t);if(!r)return null;let o=Yr(e,"saved");return Lr(ae.getState(),t).saved===o?{ok:true}:ae.toggleSave(r)},removeSavedRecord:e=>{let t=e&&typeof e=="object"?e.key:void 0;return t?(ae.remove(t),{ok:true}):null},clearSavedRequests:()=>(ae.clearSaved(),{ok:true}),clearPinnedRequests:()=>(ae.clearPinned(),{ok:true}),setOverridesEnabled:e=>(_.setEnabled(Yr(e,"enabled")),{ok:true,enabled:_.getState().enabled,...Vo()}),upsertOverrideRule:e=>{let t=rp(e)??tp(e)??ep(e),r=e?.rule??e;if(r&&typeof r.bodyPath=="string"&&r.body==null){let i=t?.body??(typeof r.id=="string"?_.getState().rules.find(a=>a.id===r.id)?.body:void 0);if(typeof i!="string")return{ok:false,error:"bodyPath needs something to patch: send fromRequestId (the captured request whose real response it addresses) or the id of an existing rule."};if(r.bodyValue===void 0)return{ok:false,error:`Refused: sent \`bodyPath\` without \`bodyValue\`. Say what to set "${r.bodyPath}" to.`};let s;try{s=JSON.parse(i)}catch{return{ok:false,error:"The captured response body is not JSON, so it cannot be addressed by path. Send a whole `body` instead."}}let l=Fh(s,r.bodyPath,r.bodyValue);if(!l.ok)return{ok:false,error:`Refused: ${l.error}`};r.bodyPatch=l.patch,delete r.bodyPath,delete r.bodyValue}if(r&&dr(r.bodyPatch)&&r.body==null){let i=t?.body??(typeof r.id=="string"?_.getState().rules.find(s=>s.id===r.id)?.body:void 0);if(typeof i!="string")return{ok:false,error:"bodyPatch needs something to patch: send fromRequestId (the captured request whose real response the patch is merged into) or the id of an existing rule."};if(r.force!==true){let s;try{let a=$h(JSON.parse(i),r.bodyPatch);s=a.error,a.notes.length&&(r.bodyPatch=a.patch)}catch{}if(s)return{ok:false,error:`Refused: ${s}`};let l=Zh(r,i);if(l.length>0)return{ok:false,error:jh(l,"response body",Wh(r.bodyPatch,l)),violations:l}}}let o=Yh(e,t);if(!o){let i=e?.fromRequestId;return{ok:false,error:i?`No captured request \`${i}\` \u2014 it may have been cleared. Send a urlPattern instead.`:"A rule needs a non-empty urlPattern."}}let n=_.upsertRule(o);return n?(n.enabled&&_.setEnabled(true),{ok:true,rule:{id:n.id,urlPattern:n.urlPattern,enabled:n.enabled,kind:n.kind,status:n.status,times:n.times,bodySize:n.body?n.body.length:0},...n.times===void 0||n.times===null?{lingers:`This rule has no \`times\` budget, so it overrides EVERY matching request until it is disabled or deleted (id \`${n.id}\`). If you meant only the next one, set times:1.`}:{},...Vo()}):{ok:false,error:"Override rule limit reached."}},setOverrideRuleEnabled:e=>{let t=$t(e);return t?(_.setRuleEnabled(t,Yr(e,"enabled")),{ok:true,...Vo()}):{ok:false,error:"Missing rule id."}},deleteOverrideRule:e=>{let t=$t(e);return t?(_.removeRule(t),{ok:true}):{ok:false,error:"Missing rule id."}},clearOverrideRules:()=>(_.clearRules(),{ok:true}),listOverrideRules:async()=>(await _.ensureLoaded(),_.getState()),getOverrideRuleBody:e=>{let t=$t(e);if(!t)return null;let r=_.getState().rules.find(o=>o.id===t);return r?{body:r.body??null}:null},getCaptureStatus:()=>{let e=K.getSubscriberCounts().total,t=null,r=null;try{t=qn(),r=pt()}catch{}let o=null;try{o=nl()}catch{}return{capturing:e>0,subscribers:e,interceptorInstalled:t,interceptorLive:o,listenerCount:r,eventCount:K.getEvents().length}},debugOverrides:e=>{let t=(e&&typeof e=="object"?e.url:void 0)??"https://example.com/";return{interceptorInstalled:qn(),listenerCount:pt(),engine:Wa(t,"GET"),store:{enabled:_.getState().enabled,ruleCount:_.getState().rules.length,rulesVisibleToEngine:_.getRules().length}}}}};D();var np=new Set(["content-length","host","connection","accept-encoding"]);function Uo(e){return`'${e.replace(/'/g,"'\\''")}'`}function ip(e){if(e==null)return null;if(typeof e=="string")return e;try{return JSON.stringify(e)}catch{return null}}function sp(e){let t=(e.method||"GET").toUpperCase(),r=ip(e.requestData),o=[];t!=="GET"&&!(t==="POST"&&r!==null)&&o.push(`-X ${t}`);for(let[i,s]of Object.entries(e.requestHeaders||{}))np.has(i.toLowerCase())||o.push(`-H ${Uo(`${i}: ${s}`)}`);r!==null&&o.push(`--data-raw ${Uo(r)}`);let n=`curl ${Uo(e.url)}`;return o.length===0?n:`${n} \\
141
+ `+o}import{Fragment as Bu,jsx as he,jsxs as wt}from"react/jsx-runtime";function qu({activeStatus:e,onToggleStatus:t,ignoredPatterns:r,paused:o}){let n=Oi({ignoredPatterns:r,paused:o});return he(Ai,{counts:n,activeStatus:e,onToggleStatus:t})}function Ai({counts:e,activeStatus:t,onToggleStatus:r}){return wt(f,{style:te.headerChipRow,children:[wt(N,{style:[te.headerChip,t==="success"&&te.headerChipActive],onPress:()=>r("success"),children:[he(Gd,{size:12,color:nt.semantic.success}),he(b,{style:[te.headerChipValue,{color:nt.semantic.success}],children:e.successful})]}),wt(N,{style:[te.headerChip,t==="error"&&te.headerChipActive],onPress:()=>r("error"),children:[he(Kd,{size:12,color:nt.semantic.error}),he(b,{style:[te.headerChipValue,{color:nt.semantic.error}],children:e.failed})]}),wt(N,{style:[te.headerChip,t==="pending"&&te.headerChipActive],onPress:()=>r("pending"),children:[he(Yd,{size:12,color:nt.semantic.warning}),he(b,{style:[te.headerChipValue,{color:nt.semantic.warning}],children:e.pending})]})]})}function Ou({paused:e}){let t=Pu({paused:e});return he(N,{"sentry-label":"ignore clear events",testID:"buoy-network-clear",accessibilityLabel:"Clear network requests",accessibilityRole:"button",onPress:()=>K.clearEvents(),style:[te.headerActionButton,!t&&te.headerActionButtonDisabled],disabled:!t,children:he(eu,{size:14,color:t?oe.color.textSecondary:oe.color.textTertiary})})}function Du({onPress:e}){let{savedRecords:t}=zt(),r=t.length;return wt(N,{"sentry-label":"ignore open saved",onPress:e,accessibilityLabel:"Saved requests",style:te.headerActionButton,children:[he(vi,{size:14,color:r>0?oe.color.accent:oe.color.textSecondary}),r>0?he(f,{style:te.savedBadge,children:he(b,{style:te.savedBadgeText,children:r>99?"99+":r})}):null]})}function Hi({isPro:e,onUpgradePress:t}){let r=qo(),o=zt(),{pinned:n,saved:i}=qr(o,r),s=ru("network.saved"),l=!n&&o.pinnedEvents.length>=Br,a=!i&&o.savedRecords.length>=s,d=()=>r?K.getEvents().find(T=>T.id===r)??ae.getEventById(r):null,c=()=>{let T=d();T&&o.togglePin(T)},x=()=>{if(a&&!e){t();return}let T=d();T&&o.toggleSave(T)};return wt(Bu,{children:[he(N,{"sentry-label":"ignore pin request",onPress:c,disabled:l,testID:"buoy-network-pin",accessibilityRole:"button",accessibilityLabel:n?"Unpin request":"Pin request",accessibilityHint:l?`Pin limit reached (${Br})`:void 0,style:[te.headerActionButton,n&&te.headerActionButtonActive,l&&te.headerActionButtonDisabled],children:he(Qd,{size:14,active:n,color:n?oe.color.accent:l?oe.color.textTertiary:oe.color.textSecondary})}),he(N,{"sentry-label":"ignore save request",onPress:x,disabled:a&&e,testID:"buoy-network-save",accessibilityRole:"button",accessibilityLabel:i?"Remove from saved":"Save request",accessibilityHint:a&&e?`Saved limit reached (${it})`:void 0,style:[te.headerActionButton,i&&te.headerActionButtonSaved,a&&e&&te.headerActionButtonDisabled],children:he(vi,{size:14,color:i?oe.color.accent:a&&e?oe.color.textTertiary:oe.color.textSecondary})})]})}function zu({isPro:e,filter:t,ignoredPatterns:r,copySettings:o,paused:n,onUpgradePress:i,label:s}){let l=Lu({filter:t,ignoredPatterns:r,paused:n});return e?he(tu,{value:()=>zi(nr(ir(K.getEvents(),r),t),o),size:14,label:s,buttonStyle:s?te.copyMenuRow:te.headerActionButton,labelStyle:te.copyMenuLabel,colors:{idle:l?oe.color.textSecondary:oe.color.textTertiary,success:nt.semantic.success,error:nt.semantic.error},disabled:!l}):wt(N,{"sentry-label":"ignore copy pro",onPress:i,style:[s?te.copyMenuRow:te.headerActionButton,!l&&te.headerActionButtonDisabled],disabled:!l,children:[he(Zd,{size:14,color:l?oe.color.textSecondary:oe.color.textTertiary}),s?he(b,{style:te.copyMenuLabel,children:s}):null]})}var te=fe.create({copyMenuRow:{flexDirection:"row",alignItems:"center",gap:10,paddingHorizontal:6,paddingVertical:11,justifyContent:"flex-start"},copyMenuLabel:{fontSize:13,fontWeight:"600",color:oe.color.text},headerChipRow:{flexDirection:"row",alignItems:"center",gap:8},headerChip:{flexDirection:"row",alignItems:"center",gap:4,backgroundColor:oe.color.buttonSurface,paddingHorizontal:10,paddingVertical:5,borderRadius:12,borderWidth:1,borderColor:oe.color.border},headerChipActive:{backgroundColor:oe.color.accentSoft,borderColor:oe.color.accentBorderStrong},headerChipValue:{fontSize:12,fontWeight:"600",fontFamily:Si},headerActionButton:{width:32,height:32,borderRadius:8,backgroundColor:oe.color.buttonSurface,borderWidth:1,borderColor:oe.color.border,alignItems:"center",justifyContent:"center"},headerActionButtonDisabled:{opacity:.55},headerActionButtonActive:{backgroundColor:oe.color.accentSoft,borderColor:oe.color.accentBorderStrong},headerActionButtonSaved:{backgroundColor:oe.color.accentSoft,borderColor:oe.color.accentBorderStrong},savedBadge:{position:"absolute",top:-3,right:-3,minWidth:14,height:14,paddingHorizontal:3,borderRadius:7,backgroundColor:oe.color.accent,alignItems:"center",justifyContent:"center"},savedBadgeText:{color:oe.color.onAccent,fontSize:9,fontWeight:"700",fontFamily:Si}});O();ce();import{useCallback as Au}from"react";import{FlaskConical as Hu,Pin as Mu,Power as Nu,macOSColors as ve,ToolEmptyState as ju,resolveListEmptyState as Fu,EVENT_LIST_PRESET as $u,monoFont as Wu}from"@buoy-gg/shared-ui/web";O();ce();import{memo as Vu}from"react";import{ChevronRight as Uu,Upload as _u,Download as Xu,Clock as Ju,AlertCircle as Gu,Bookmark as Ku,FlaskConical as Yu,Pin as Zu,DevToolsCard as Qu,MethodBadge as ec,TypeBadge as tc,night as Ce,macOSColors as At,monoFont as Oo}from"@buoy-gg/shared-ui/web";import{formatRelativeTime as rc}from"@buoy-gg/shared-ui/web";import{jsx as ie,jsxs as _e}from"react/jsx-runtime";function oc(e,t){return t?At.semantic.error:e?e>=200&&e<300?At.semantic.success:e>=300&&e<400?At.semantic.info:e>=400?At.semantic.error:At.text.muted:At.semantic.warning}function nc(e){let t=e?.["content-type"]||e?.["Content-Type"]||"";return t.includes("json")?"JSON":t.includes("xml")?"XML":t.includes("html")?"HTML":t.includes("text")?"TEXT":t.includes("image")?"IMG":t.includes("video")?"VIDEO":t.includes("audio")?"AUDIO":t.includes("form")?"FORM":null}function Mi(e){switch(e){case"fetch":return{backgroundColor:"rgba(74, 144, 226, 0.15)",color:"#4A90E2"};case"graphql":return{backgroundColor:"rgba(229, 53, 171, 0.15)",color:"#E535AB"};case"grpc-web":return{backgroundColor:"rgba(16, 185, 129, 0.15)",color:"#10B981"};case"xhr":return{backgroundColor:"rgba(245, 158, 11, 0.15)",color:"#F59E0B"};default:return{backgroundColor:"rgba(147, 51, 234, 0.15)",color:"#9333EA"}}}function ic({event:e,isPending:t,statusColor:r}){return t?_e(f,{style:le.pendingBadge,children:[ie(Ju,{size:10,color:Ce.color.warning}),ie(b,{style:le.pendingText,children:"..."})]}):e.error?_e(f,{style:le.errorBadge,children:[ie(Gu,{size:10,color:Ce.color.danger}),ie(b,{style:le.errorText,children:"ERR"})]}):ie(f,{style:le.statusBadge,children:ie(b,{style:[le.statusText,{color:r}],children:String(e.status)})})}function sc({requestSize:e,responseSize:t}){return!e&&!t?null:_e(f,{style:le.sizeRow,children:[e?_e(f,{style:le.sizeItem,children:[ie(_u,{size:8,color:Ce.color.info}),ie(b,{style:le.sizeText,children:Ze(e)})]}):null,t?_e(f,{style:le.sizeItem,children:[ie(Xu,{size:8,color:Ce.color.accent}),ie(b,{style:le.sizeText,children:Ze(t)})]}):null]})}function ac({timestamp:e,duration:t}){let r=ko(),o=rc(e,r);return t?_e(b,{style:le.bottomRightText,children:[Pr(t)," ",o]}):ie(b,{style:le.bottomRightText,children:o})}var Ht=Vu(function({event:e,onPress:t,pinned:r=false,saved:o=false,overridden:n=false,onLongPress:i}){let s=oc(e.status,e.error),l=!e.status&&!e.error,a=nc(e.responseHeaders),d=e.path||e.url.replace(/^https?:\/\/[^/]+/,"");return e.requestClient==="graphql"?e.operationName?d=di(e.operationName,e.graphqlVariables):d=d.replace(/\/graphql[^?]*/,"/graphql"):e.operationName&&(d=`${d}
142
+ (${e.operationName})`),_e(Qu,{onPress:()=>t(e),onLongPress:i?()=>i(e):void 0,style:le.cardWrapper,contentStyle:[le.container,{borderLeftColor:s}],testID:`buoy-network-row-${e.id}`,accessibilityLabel:`${e.method} ${e.path||e.url}`,children:[_e(f,{style:le.topRightContainer,children:[r?ie(Zu,{size:10,active:true,color:Ce.color.info}):null,o?ie(Ku,{size:10,color:Ce.color.accent}):null,n||e.override?ie(Yu,{size:10,color:Ce.color.warning}):null,ie(ic,{event:e,isPending:l,statusColor:s}),e.requestClient?ie(f,{style:[le.topRightBadge,{backgroundColor:Mi(e.requestClient).backgroundColor}],children:ie(b,{style:[le.clientText,{color:Mi(e.requestClient).color}],children:e.requestClient==="graphql"?"GQL":e.requestClient==="grpc-web"?"gRPC":e.requestClient==="xhr"?"XHR":e.requestClient})}):null]}),_e(f,{style:le.leftSection,children:[ie(ec,{method:e.method,size:"small"}),ie(sc,{requestSize:e.requestSize,responseSize:e.responseSize})]}),ie(f,{style:le.middleSection,children:ie(b,{style:le.urlText,numberOfLines:2,children:d})}),_e(f,{style:le.rightSection,children:[a?ie(tc,{type:a,size:"small"}):null,ie(Uu,{size:14,color:Ce.color.textTertiary})]}),ie(f,{style:le.bottomRightContainer,children:ie(ac,{timestamp:e.timestamp,duration:e.duration})})]})});Ht.displayName="NetworkEventItemCompact";var le=fe.create({cardWrapper:{marginHorizontal:8},container:{flexDirection:"row",alignItems:"center",backgroundColor:"rgba(12, 12, 12, 0.9)",borderLeftWidth:3,borderLeftColor:"transparent",borderBottomWidth:1},leftSection:{marginRight:8,alignItems:"flex-start"},topRightContainer:{position:"absolute",top:1,right:1,flexDirection:"row",alignItems:"center",gap:4},topRightBadge:{paddingHorizontal:4,paddingVertical:2,borderRadius:4},middleSection:{flex:1,justifyContent:"center",paddingRight:8},urlText:{fontSize:12,color:Ce.color.text,lineHeight:16,fontFamily:Oo},rightSection:{flexDirection:"row",alignItems:"center",gap:6},bottomRightContainer:{position:"absolute",bottom:4,right:8},bottomRightText:{fontSize:9,color:Ce.color.textTertiary,fontFamily:Oo},statusBadge:{paddingHorizontal:4,paddingVertical:1,borderRadius:3},statusText:{fontSize:10,fontWeight:"600"},pendingBadge:{flexDirection:"row",alignItems:"center",gap:2,paddingHorizontal:4,paddingVertical:1,backgroundColor:Ce.color.warningSoft,borderRadius:3},pendingText:{fontSize:10,color:Ce.color.warning,fontWeight:"600"},errorBadge:{flexDirection:"row",alignItems:"center",gap:2,paddingHorizontal:4,paddingVertical:1,backgroundColor:Ce.color.dangerSoft,borderRadius:3},errorText:{fontSize:10,color:Ce.color.danger,fontWeight:"600"},durationText:{fontSize:9,color:Ce.color.textSecondary},sizeRow:{flexDirection:"row",gap:4,marginTop:4},sizeItem:{flexDirection:"row",alignItems:"center",gap:2},sizeText:{fontSize:8,color:Ce.color.textSecondary,fontFamily:Oo},clientText:{fontSize:8,fontWeight:"700",letterSpacing:.3,textTransform:"uppercase"}});O();ce();import{ProBadge as lc,Zap as dc,buoyColors as sr}from"@buoy-gg/shared-ui/web";import{jsx as Ar,jsxs as Do}from"react/jsx-runtime";function Ni({title:e,subtitle:t,onPress:r}){return Do(N,{style:ar.banner,onPress:r,activeOpacity:.8,children:[Do(f,{style:ar.content,children:[Do(f,{style:ar.left,children:[Ar(dc,{size:16,color:sr.primary}),Ar(b,{style:ar.title,children:e})]}),Ar(lc,{})]}),Ar(b,{style:ar.subtitle,children:t})]})}var ar=fe.create({banner:{backgroundColor:sr.card,borderRadius:10,borderWidth:1,borderColor:sr.primary+"40",padding:12,marginHorizontal:12,marginTop:12,marginBottom:34},content:{flexDirection:"row",alignItems:"center",justifyContent:"space-between",marginBottom:4},left:{flexDirection:"row",alignItems:"center",gap:8},title:{color:sr.text,fontSize:13,fontWeight:"600"},subtitle:{color:sr.textMuted,fontSize:11}});O();import{useEffect as ji,useMemo as Hr,useState as uc}from"react";import{useLimit as cc}from"@buoy-gg/shared-ui/web";function lr(e){let{filter:t,ignoredPatterns:r,paused:o,visible:n=true,isPro:i}=e,s=cc("network.requests"),l=i?1/0:s,[a,d]=uc(()=>K.getEvents());ji(()=>{if(!n)return;if(o){d(K.getEvents());return}let m=null,k=null,E=K.subscribeToEvents(g=>{k=g,m==null&&(m=requestAnimationFrame(()=>{m=null,k&&d(k),k=null}))});return()=>{E(),m!=null&&cancelAnimationFrame(m)}},[o,n]),ji(()=>K.onClear(()=>{d([])}),[]);let c=Hr(()=>ir(a,r),[a,r]),x=Hr(()=>nr(c,t),[c,t]),T=Hr(()=>{let m=new Set;return a.slice(l).forEach(k=>{m.add(k.id)}),m},[a,l]),S=Hr(()=>T.size===0?x:x.filter(m=>!T.has(m.id)),[x,T]),q=x.length-S.length;return{events:x,visibleEvents:S,hasLockedEvents:q>0,lockedEventCount:q,totalEvents:c.length}}O();import{useCallback as Mt,useSyncExternalStore as hc}from"react";O();import{devToolsStorageKeys as Fi,persistentStorage as $i}from"@buoy-gg/shared-ui/web";var pc=800,fc=3,gc=Object.freeze([]),mc=250,yc=["respond","fail","delay"];function bc(e){if(!Array.isArray(e))return[];let t=[];for(let r of e){if(!r||typeof r!="object")continue;let o=r;if(typeof o.id!="string"||typeof o.urlPattern!="string"||!o.urlPattern)continue;let n=yc.includes(o.kind)?o.kind:"respond";t.push({id:o.id,enabled:o.enabled!==false,name:typeof o.name=="string"?o.name:void 0,urlPattern:o.urlPattern,methods:Array.isArray(o.methods)?o.methods.filter(i=>typeof i=="string"):void 0,requireHeader:typeof o.requireHeader=="string"&&o.requireHeader?o.requireHeader:void 0,kind:n,status:typeof o.status=="number"?Math.min(Jt,Math.max(Xt,o.status)):void 0,statusText:typeof o.statusText=="string"?o.statusText:void 0,headers:o.headers&&typeof o.headers=="object"?o.headers:void 0,body:typeof o.body=="string"?o.body:void 0,failKind:o.failKind==="timeout"?"timeout":void 0,delayMs:typeof o.delayMs=="number"?o.delayMs:void 0,times:typeof o.times=="number"?o.times:null,alternate:o.alternate===true,hits:0,seen:0,createdAt:typeof o.createdAt=="number"?o.createdAt:0})}return t.slice(0,rt)}var vc=class{constructor(){this.rules=[];this.enabled=true;this.listeners=new Set;this.loaded=false;this.loadPromise=null;this.dirty=false;this.idCounter=0;this.state={enabled:true,rules:[],autoPaused:false};this.launchStreak=0;this.autoPaused=false;this.keepAlive=null;this.hitEmitTimer=null;this.engineDisabled=false;this.remote=null;this.remoteEchoUntil=0}enableRemoteMode(e){this.remote=e,this.disableEngine()}disableRemoteMode(){this.remote=null}replaceRules(e,t=false){this.remote&&(!t&&ue()<this.remoteEchoUntil||(this.enabled=e.enabled,this.rules=e.rules,this.rebuild(),this.emit()))}markLocalEdit(){this.remote&&(this.remoteEchoUntil=ue()+pc)}disableEngine(){this.engineDisabled=true,this.keepAlive&&(this.keepAlive(),this.keepAlive=null,ft()===0&&Gt())}getState(){return this.state}getRules(){return this.engineDisabled||!this.enabled?gc:this.rules}async fetchRuleBody(e){let t=this.rules.find(r=>r.id===e);if(!t)return null;if(!t.bodyOmitted)return t.body??null;if(!this.remote?.getRuleBody)return null;try{return await this.remote.getRuleBody(e)}catch{return null}}activeCount(){return this.enabled?this.rules.filter(e=>e.enabled&&!go(e)).length:0}subscribe(e){return this.listeners.add(e),this.ensureLoaded(),()=>{this.listeners.delete(e)}}setEnabled(e){this.enabled!==e&&(this.remote?.setEnabled(e),this.markLocalEdit(),this.markTouched(),this.enabled=e,this.commit(this.rules))}addRule(e){if(this.rules.length>=rt)return null;let t={...e,id:`ovr_${Date.now().toString(36)}_${++this.idCounter}`,hits:0,seen:0,createdAt:Date.now()};return this.commit([t,...this.rules]),t}upsertRule(e){this.remote?.upsertRule(e),this.markLocalEdit(),this.markTouched();let{id:t,...r}=e;return t&&this.rules.some(o=>o.id===t)?(this.updateRule(t,r),this.rules.find(o=>o.id===t)??null):this.addRule(r)}updateRule(e,t){let r=this.rules.findIndex(n=>n.id===e);if(r===-1)return;let o=[...this.rules];o[r]={...o[r],...t,hits:0,seen:0},this.commit(o)}setRuleEnabled(e,t){let r=this.rules.findIndex(n=>n.id===e);if(r===-1||this.rules[r].enabled===t)return;this.remote?.setRuleEnabled(e,t),this.markLocalEdit(),this.markTouched();let o=[...this.rules];o[r]={...o[r],enabled:t,hits:t?0:o[r].hits,seen:t?0:o[r].seen},this.commit(o)}removeRule(e){let t=this.rules.filter(r=>r.id!==e);t.length!==this.rules.length&&(this.remote?.removeRule(e),this.markLocalEdit(),this.markTouched(),this.commit(t))}clearRules(){this.rules.length!==0&&(this.remote?.clearRules(),this.markLocalEdit(),this.markTouched(),this.commit([]))}recordMatch(e){let t=this.rules.findIndex(o=>o.id===e);if(t===-1)return;let r=[...this.rules];r[t]={...r[t],seen:r[t].seen+1},this.rules=r,this.rebuild()}recordHit(e){let t=this.rules.findIndex(s=>s.id===e);if(t===-1)return;let r=this.rules[t],o=r.hits+1,n=typeof r.times=="number"&&o>=r.times,i=[...this.rules];if(i[t]={...r,hits:o,enabled:n?false:r.enabled},n){this.commit(i);return}this.rules=i,this.rebuild(),this.scheduleHitEmit()}ensureLoaded(){return this.remote||this.loaded?Promise.resolve():this.loadPromise?this.loadPromise:(this.loadPromise=(async()=>{try{let e=await $i.getItem(Fi.network.overrides());if(e&&!this.dirty){let t=JSON.parse(e);this.enabled=t?.enabled!==false,this.rules=bc(t?.rules),this.launchStreak=typeof t?.launchStreak=="number"?t.launchStreak:0,this.applyLaunchGuard(),this.rebuild()}}catch{}finally{this.loaded=true,this.syncKeepAlive(),this.emit()}})(),this.loadPromise)}applyLaunchGuard(){if(!this.enabled||this.activeCount()===0){this.launchStreak=0;return}this.launchStreak+=1,this.launchStreak>=fc&&(this.enabled=false,this.autoPaused=true,this.launchStreak=0),this.persist()}syncKeepAlive(){let e=!this.engineDisabled&&this.activeCount()>0;if(e&&!this.keepAlive){Fn(),this.keepAlive=Kt(()=>{});return}!e&&this.keepAlive&&(this.keepAlive(),this.keepAlive=null,ft()===0&&Gt())}scheduleHitEmit(){this.hitEmitTimer===null&&(this.hitEmitTimer=setTimeout(()=>{this.hitEmitTimer=null,this.emit()},mc))}commit(e){this.dirty=true,this.rules=e.slice(0,rt),this.rebuild(),this.syncKeepAlive(),this.emit(),this.persist()}rebuild(){this.state={enabled:this.enabled,rules:this.rules,autoPaused:this.autoPaused}}markTouched(){this.launchStreak=0,this.autoPaused=false}noteHealthyLaunch(){this.launchStreak===0&&!this.autoPaused||(this.markTouched(),this.persist(),this.rebuild(),this.emit())}persist(){this.remote||$i.setItem(Fi.network.overrides(),JSON.stringify({enabled:this.enabled,rules:this.rules,launchStreak:this.launchStreak})).catch(()=>{})}emit(){this.listeners.forEach(e=>e())}},_=new vc;il({getRules:()=>_.getRules(),recordHit:e=>_.recordHit(e),recordMatch:e=>_.recordMatch(e)});function Mr(){let e=hc(Mt(s=>_.subscribe(s),[]),()=>_.getState(),()=>_.getState()),t=Mt(s=>_.setEnabled(s),[]),r=Mt(s=>_.upsertRule(s),[]),o=Mt((s,l)=>_.setRuleEnabled(s,l),[]),n=Mt(s=>_.removeRule(s),[]),i=Mt(()=>_.clearRules(),[]);return{enabled:e.enabled,rules:e.rules,autoPaused:e.autoPaused,activeCount:_.activeCount(),setEnabled:t,upsertRule:r,setRuleEnabled:o,removeRule:n,clearRules:i,isRuleSpent:go}}O();function Sc(e,t){if(t.length===0)return[];let r=new Set(t.map(n=>n.id)),o=new Set;for(let n of t){let i;for(let s of e){if(s.override&&r.has(s.override.ruleId)){o.add(s.id);continue}fo(n,s.url,String(s.method||"GET"),s.requestHeaders)&&(s.timestamp>=n.createdAt?o.add(s.id):(!i||s.timestamp>i.timestamp)&&(i=s))}i&&o.add(i.id)}return e.filter(n=>o.has(n.id))}O();var xc=[];function zo(e,t,r){return t.length===0?{pinned:xc,rest:e}:{pinned:t,rest:r.size===0?e:e.filter(o=>!r.has(o.id))}}import{jsx as Se,jsxs as Ct}from"react/jsx-runtime";var wc=e=>e.id;function Cc({events:e,onEventPress:t,onLongPress:r,savedLiveIds:o,onClearPinned:n}){return e.length===0?null:Ct(f,{style:xe.pinnedSection,children:[Ct(f,{style:xe.pinnedHeader,children:[Se(Mu,{size:11,active:true,color:ve.semantic.info}),Ct(b,{style:xe.pinnedTitle,children:["PINNED \xB7 ",e.length]}),Se(N,{onPress:n,"sentry-label":"ignore unpin all",style:xe.pinnedClear,children:Se(b,{style:xe.pinnedClearText,children:"Unpin all"})})]}),e.map(i=>Se(Ht,{event:i,onPress:t,onLongPress:r,pinned:true,saved:o.has(i.id)},i.id))]})}function Tc({events:e,onEventPress:t,onLongPress:r,savedLiveIds:o,paused:n,onTogglePaused:i}){return e.length===0?null:Ct(f,{style:[xe.overriddenSection,n&&xe.overriddenSectionOff],children:[Ct(f,{style:xe.overriddenHeader,children:[Se(Hu,{size:11,color:n?ve.text.muted:ve.semantic.warning}),Se(b,{testID:"buoy-network-overridden-strip",style:[xe.overriddenTitle,n&&xe.overriddenTitleOff],children:n?`PAUSED \xB7 ${e.length}`:`OVERRIDDEN \xB7 ${e.length}`}),Se(N,{onPress:i,"sentry-label":"ignore pause overrides",style:xe.overriddenManage,children:Se(b,{style:[xe.overriddenManageText,n&&xe.overriddenTitleOff],children:n?"Resume":"Pause"})})]}),e.map(s=>Se(Ht,{event:s,onPress:t,onLongPress:r,overridden:true,saved:o.has(s.id)},s.id))]})}function kc({visible:e,paused:t,filter:r,ignoredPatterns:o,isPro:n,searchText:i,onEventPress:s,onUpgradePress:l}){let{visibleEvents:a,hasLockedEvents:d,lockedEventCount:c,totalEvents:x}=lr({filter:r,ignoredPatterns:o,paused:t,visible:e,isPro:n}),{pinnedEvents:T,pinnedLiveIds:S,savedLiveIds:q,togglePin:m,clearPinned:k}=zt(),{rules:E,enabled:g,setEnabled:I,isRuleSpent:z}=Mr(),P=Au(J=>{m(J)},[m]);if(!e)return null;let{pinned:C,rest:H}=zo(a,T,S),v=E.filter(J=>J.enabled&&!z(J)),p=Sc([...C,...H],v),h=new Set(p.map(J=>J.id)),u=C.filter(J=>!h.has(J.id)),y=h.size?H.filter(J=>!h.has(J.id)):H,D=!t,re=({item:J})=>Se(Ht,{event:J,onPress:s,onLongPress:P,saved:q.has(J.id)}),ee=()=>u.length>0||p.length>0?null:Se(ju,{testID:"buoy-network-empty",...Fu({subject:"requests",search:i,total:x,capturing:D,waiting:{otto:"fishing",title:"No network events",message:"Network requests will appear here"},paused:{title:"No network events",message:"Enable interception to start capturing"}})}),Z=()=>{if(!d)return null;let J=i.length>0,A=J?`${c} matching ${c===1?"request":"requests"} in locked history`:`${c} requests locked`;return Se(Ni,{title:A,subtitle:J?"Upgrade to Pro to search your full request history":"Upgrade to Pro to unlock full request history",onPress:l})};return Ct(f,{style:xe.root,children:[D?null:Ct(f,{style:xe.disabledBanner,children:[Se(Nu,{size:14,color:ve.semantic.warning}),Se(b,{style:xe.disabledText,children:"Network interception is disabled"})]}),Se(Tc,{events:p,onEventPress:s,onLongPress:P,savedLiveIds:q,paused:!g,onTogglePaused:()=>I(!g)}),Se(Cc,{events:u,onEventPress:s,onLongPress:P,savedLiveIds:q,onClearPinned:k}),y.length>0||d?Se(lo,{testID:"buoy-network-list",data:y,renderItem:re,keyExtractor:wc,contentContainerStyle:xe.listContent,showsVerticalScrollIndicator:true,onEndReachedThreshold:.8,scrollEnabled:true,...$u,extraData:q,"sentry-label":"ignore network events list",ListFooterComponent:Z}):ee()]})}var xe=fe.create({root:{flex:1,minHeight:0},overriddenSection:{borderBottomWidth:1,borderBottomColor:ve.semantic.warning+"44",backgroundColor:ve.semantic.warningBackground},overriddenSectionOff:{borderBottomColor:ve.border.default,backgroundColor:ve.background.card},overriddenTitleOff:{color:ve.text.muted},overriddenHeader:{flexDirection:"row",alignItems:"center",gap:6,paddingHorizontal:12,paddingTop:8,paddingBottom:4},overriddenTitle:{flex:1,fontSize:10,fontWeight:"700",letterSpacing:.8,color:ve.semantic.warning},overriddenManage:{paddingHorizontal:6,paddingVertical:2},overriddenManageText:{fontSize:10,fontWeight:"600",color:ve.semantic.warning},pinnedSection:{borderBottomWidth:1,borderBottomColor:ve.border.default,paddingBottom:4},pinnedHeader:{flexDirection:"row",alignItems:"center",gap:6,paddingHorizontal:20,paddingTop:10,paddingBottom:6},pinnedTitle:{flex:1,color:ve.semantic.info,fontSize:10,fontWeight:"700",letterSpacing:.6,fontFamily:Wu},pinnedClear:{paddingHorizontal:6,paddingVertical:2},pinnedClearText:{color:ve.text.muted,fontSize:10},disabledBanner:{flexDirection:"row",alignItems:"center",gap:8,padding:10,marginHorizontal:12,marginTop:8,backgroundColor:ve.semantic.warningBackground,borderRadius:8,borderWidth:1,borderColor:ve.semantic.warning+"20"},disabledText:{color:ve.semantic.warning,fontSize:11,flex:1},listContent:{paddingTop:8}});O();ce();import{useState as Rc}from"react";import{Bookmark as Ec,CopyButton as Ic,Search as Pc,macOSColors as Me,useLimit as Lc,ToolEmptyState as Bc,resolveListEmptyState as qc,EVENT_LIST_PRESET as Oc,monoFont as Dc}from"@buoy-gg/shared-ui/web";O();function Wi(e,t,r){let o=e.slice(0,Math.min(t,it)),n=o.map(i=>i.event);return{events:r?nr(n,{searchText:r}):n,lockedCount:e.length-o.length}}import{jsx as Xe,jsxs as Nr}from"react/jsx-runtime";var zc=e=>e.id;function Vi({visible:e,isPro:t,copySettings:r,search:o,onSearchChange:n,onEventPress:i,onUpgradePress:s}){let{savedRecords:l,pinnedLiveIds:a,toggleSave:d,clearSaved:c}=zt(),x=Lc("network.saved"),[T,S]=Rc(""),q=o!=null&&n!=null,m=q?o:T,k=q?n:S;if(!e)return null;let{events:E,lockedCount:g}=Wi(l,x,m),I=C=>{d(C)},z=({item:C})=>Xe(Ht,{event:C,onPress:i,onLongPress:I,saved:true,pinned:a.has(C.id)}),P=()=>g===0?null:Xe(Ni,{title:`${g} saved ${g===1?"request":"requests"} locked`,subtitle:`Your plan keeps ${x}. Upgrade to Pro to unlock the rest.`,onPress:s});return Nr(f,{style:Je.root,children:[Nr(f,{style:Je.toolbar,children:[Xe(Ec,{size:11,color:Me.semantic.debug}),Nr(b,{style:Je.toolbarTitle,children:["SAVED \xB7 ",l.length,x>=it?"":`/${x}`]}),t?Xe(Ic,{value:()=>zi(E,r),size:13,buttonStyle:Je.toolbarButton,colors:{idle:Me.text.secondary,success:Me.semantic.success,error:Me.semantic.error},disabled:E.length===0}):null,Xe(N,{onPress:c,"sentry-label":"ignore clear saved",style:Je.toolbarClear,disabled:l.length===0,children:Xe(b,{style:[Je.toolbarClearText,l.length===0&&Je.toolbarClearTextDisabled],children:"Clear all"})})]}),l.length>0?Nr(f,{style:Je.searchRow,children:[Xe(Pc,{size:13,color:Me.text.secondary}),Xe(qt,{style:Je.searchInput,placeholder:"Search saved requests\u2026",placeholderTextColor:Me.text.muted,value:m,onChangeText:k,"sentry-label":"ignore saved search",accessibilityLabel:"Search saved requests",autoCapitalize:"none",autoCorrect:false,returnKeyType:"search"})]}):null,l.length===0||m.trim().length>0&&E.length===0&&g===0?Xe(Bc,{testID:"buoy-network-saved-empty",...qc({subject:"saved requests",verb:"kept",search:l.length===0?"":m,total:l.length,waiting:{otto:"empty",title:"No saved requests",message:"Open a request and tap the bookmark to keep it here \u2014 saved requests survive Clear and app restarts."}})}):Xe(lo,{data:E,renderItem:z,keyExtractor:zc,contentContainerStyle:Je.listContent,showsVerticalScrollIndicator:true,scrollEnabled:true,...Oc,extraData:a,"sentry-label":"ignore saved requests list",ListFooterComponent:P})]})}var Je=fe.create({root:{flex:1,minHeight:0},toolbar:{flexDirection:"row",alignItems:"center",gap:6,paddingHorizontal:20,paddingTop:10,paddingBottom:6},toolbarTitle:{flex:1,color:Me.semantic.debug,fontSize:10,fontWeight:"700",letterSpacing:.6,fontFamily:Dc},toolbarButton:{width:26,height:26,borderRadius:6,alignItems:"center",justifyContent:"center"},toolbarClear:{paddingHorizontal:6,paddingVertical:2},toolbarClearText:{color:Me.text.muted,fontSize:10},toolbarClearTextDisabled:{color:Me.text.disabled},searchRow:{flexDirection:"row",alignItems:"center",gap:6,marginHorizontal:12,marginBottom:8,paddingHorizontal:10,paddingVertical:5,backgroundColor:Me.background.input,borderRadius:10,borderWidth:1,borderColor:Me.border.default},searchInput:{flex:1,color:Me.text.primary,fontSize:13,paddingVertical:2},listContent:{paddingTop:4}});O();ce();import{useCallback as Ac,useEffect as jr,useState as Hc}from"react";import{AlertCircle as Mc,AlertTriangle as Nc,DevToolsCard as jc,EmptyState as Fc,MethodBadge as $c,Plus as Wc,Trash2 as Vc,macOSColors as Y,useLimit as Uc,monoFont as _c}from"@buoy-gg/shared-ui/web";O();ce();import{useMemo as Ui,useState as Fr}from"react";import{ChevronDown as Xc,ChevronRight as Jc,macOSColors as U,useSafeAreaInsets as Gc,monoFont as Kc}from"@buoy-gg/shared-ui/web";O();ce();import{useState as $r,useMemo as Wr,useCallback as dr,useRef as Ao,useEffect as Yc,memo as Vr}from"react";import{displayValue as Zc,buoyColors as L,monoFont as qe}from"@buoy-gg/shared-ui/web";import{CopyButton as Qc}from"@buoy-gg/shared-ui/web";import{ChevronRight as eh,ChevronDown as th,Trash as _i}from"@buoy-gg/shared-ui/web";import{CyberpunkInput as rh}from"@buoy-gg/shared-ui/web/dataViewer";O();var Tt=(e,t,r)=>{if(t.length===0)return r;if(e instanceof Map){let o=new Map(e);if(t.length===1)return o.set(t[0],r),o;let[n,...i]=t,s=o.get(n);return o.set(n,Tt(s??null,i,r)),o}if(e instanceof Set){let o=Tt(Array.from(e),t,r);return new Set(Array.isArray(o)?o:[])}if(Array.isArray(e)){let o=[...e];if(t.length===1)return o[t[0]]=r,o;let[n,...i]=t;return o[n]=Tt(o[n],i,r),o}if(e instanceof Object){let o={...e};if(t.length===1)return o[t[0]]=r,o;let[n,...i]=t;return o[n]=Tt(o[n],i,r),o}return e};O();var kt=(e,t)=>{if(e instanceof Map){let r=new Map(e);if(t.length===1)return r.delete(t[0]),r;let[o,...n]=t;return r.set(o,kt(r.get(o),n)),r}if(e instanceof Set){let r=kt(Array.from(e),t);return new Set(r)}if(Array.isArray(e)){let r=[...e];if(t.length===1)return r.filter((i,s)=>s.toString()!==t[0]);let[o,...n]=t;return r[o]=kt(r[o],n),r}if(e instanceof Object){let r={...e};if(t.length===1)return delete r[t[0]],r;let[o,...n]=t;return r[o]=kt(r[o],n),r}return e};O();import{createContext as oh,useContext as nh}from"react";var Xi=oh(null);function Ur(){return nh(Xi)}import{Fragment as _r,jsx as G,jsxs as Ie}from"react/jsx-runtime";var ur=100,Nt={top:8,bottom:8,left:8,right:8},Ji=12,ih=(e,t=ur)=>{if(t<1||e.length===0)return[];let r=[];for(let o=0;o<e.length;o+=t)r.push(e.slice(o,o+t));return r},Ho=Vr(({expanded:e,isFocused:t=false,isMain:r=false})=>G(f,{style:[$.expanderIcon,r&&$.expanderIconMain,e?$.expanded:$.collapsed],children:e?G(th,{size:r?14:Ji,color:t?L.primary:r?L.text:L.textSecondary,strokeWidth:2.5}):G(eh,{size:r?14:Ji,color:t?L.primary:r?L.text:L.textSecondary,strokeWidth:2.5})}));Ho.displayName="Expander";var Gi=Vr(({value:e,isFocused:t=false})=>G(Qc,{value:e,isFocused:t,buttonStyle:t?{...$.buttonStyle,...$.buttonStyleFocused}:$.buttonStyle}));Gi.displayName="CopyButton";var Mo=Vr(({dataPath:e,isFocused:t=false})=>{let r=Ur(),o=dr(()=>{r&&r.onChange(kt(r.root,e))},[r,e]);return r?G(N,{"sentry-label":"ignore devtools explorer delete button",onPress:o,style:[$.deleteButton,t&&$.deleteButtonFocused],accessibilityLabel:"Delete item",hitSlop:Nt,activeOpacity:.7,children:G(_i,{size:14,strokeWidth:2,color:t?L.error:L.error+"CC"})}):null});Mo.displayName="DeleteItemButton";var Ki=Vr(({dataPath:e,isFocused:t=false})=>{let r=Ur(),o=dr(()=>{r&&r.onChange(Tt(r.root,e,[]))},[r,e]);return r?G(N,{"sentry-label":"ignore devtools explorer clear button",style:[$.clearButton,t&&$.clearButtonFocused],"aria-label":"Remove all items",onPress:o,hitSlop:Nt,activeOpacity:.7,children:G(b,{style:[$.clearButtonText,{color:t?L.warning:L.warning+"CC"}],children:"[]"})}):null});Ki.displayName="ClearArrayButton";function sh({dataPath:e,value:t,itemsDeletable:r}){let o=Ur(),n=dr(()=>{if(!o)return;let a=typeof t=="boolean"?t:false;o.onChange(Tt(o.root,e,!a))},[o,e,t]),i=dr(()=>{o&&o.onChange(kt(o.root,e))},[o,e]);if(!o)return null;let s=t?$.toggleBadgeTrue:$.toggleBadgeFalse,l=t?$.toggleTextTrue:$.toggleTextFalse;return Ie(N,{"sentry-label":"ignore devtools explorer toggle button",style:$.modernToggleButton,onPress:n,hitSlop:Nt,activeOpacity:.8,children:[G(f,{style:[$.toggleBadge,s],children:G(b,{style:[$.toggleBadgeText,l],children:t?"TRUE":"FALSE"})}),r&&G(N,{"sentry-label":"ignore devtools explorer delete button in toggle",onPress:i,style:$.deleteButtonInToggle,accessibilityLabel:"Delete item",hitSlop:Nt,activeOpacity:.7,children:G(_i,{size:14,strokeWidth:2,color:L.error+"CC"})})]})}function No({editable:e,label:t,value:r,defaultExpanded:o,dataPath:n,itemsDeletable:i,dataVersion:s=0}){let l=Ur(),[a,d]=$r(false),[c,x]=$r("");Yc(()=>{if(r!=null&&(typeof r=="string"||typeof r=="number")){let h=r.toString();x(h)}},[r,t,s]);let T=Wr(()=>{let h=t.toUpperCase();return["DATA","QUERY","QUERYKEY","TYPES","STATS","OPTIONS","OBSERVERS"].includes(h)},[t]),[S,q]=$r((o||[]).includes(t)),m=()=>q(h=>!h),[k,E]=$r([]),g=Wr(()=>r==null||typeof r!="object"?[]:Array.isArray(r)?(r.length>1e3?r.slice(0,1e3):r).map((h,u)=>({label:u.toString(),value:h})):r instanceof Map?Array.from(r.entries()).slice(0,1e3).map(([h,u])=>({label:h.toString(),value:u})):r instanceof Set?Array.from(r).slice(0,1e3).map((h,u)=>({label:u.toString(),value:h})):Object.entries(r).slice(0,1e3).map(([h,u])=>({label:h,value:u})),[r]),I=Wr(()=>Array.isArray(r)?"array":r===null||typeof r!="object"?typeof r:r instanceof Map||r instanceof Set?"Iterable":"object",[r]),z=Wr(()=>ih(g,ur),[g]),P=n??[],C=Ao(l),H=Ao(P),v=Ao(I);C.current=l,H.current=P,v.current=I;let p=dr((h,u)=>{x(u);let y=C.current;if(!y||h&&isNaN(Number(u)))return;let D=v.current==="number"?Number(u):u;y.onChange(Tt(y.root,H.current,D))},[x]);return G(f,{style:$.minWidthWrapper,children:Ie(f,{style:$.fullWidthMarginRight,children:[z.length>0&&Ie(_r,{children:[Ie(f,{style:[$.flexRowItemsCenterGap,T&&$.flexRowItemsCenterGapMain],children:[Ie(N,{"sentry-label":"ignore devtools explorer expander button",style:$.expanderButton,onPress:m,hitSlop:Nt,activeOpacity:.6,children:[G(Ho,{expanded:S,isFocused:a,isMain:T}),G(b,{style:[$.labelText,a&&$.labelTextFocused,T&&$.labelTextMain],children:t}),G(b,{style:$.textGray500,children:`${String(I).toLowerCase()==="iterable"?"(Iterable) ":""}${g.length} ${g.length>1?"items":"item"}`})]}),e&&Ie(f,{style:$.flexRowGapItemsCenter,children:[G(Gi,{value:r,isFocused:a}),i&&l!==null&&G(Mo,{dataPath:P,isFocused:a}),I==="array"&&l!==null&&G(Ki,{dataPath:P,isFocused:a})]})]}),S&&Ie(_r,{children:[z.length===1&&G(f,{style:[$.singleEntryContainer,T&&$.singleEntryContainerMain],children:g.map((h,u)=>G(No,{defaultExpanded:o,label:h.label,value:h.value,editable:e,dataPath:[...P,h.label],itemsDeletable:I==="array"||I==="Iterable"||I==="object",dataVersion:s},h.label+u))}),z.length>1&&G(f,{style:$.multiEntryContainer,children:z.map((h,u)=>G(f,{children:Ie(f,{style:$.relativeOutlineNone,children:[Ie(N,{"sentry-label":"ignore devtools explorer page toggle",onPress:()=>E(y=>y.includes(u)?y.filter(D=>D!==u):[...y,u]),style:$.pageExpanderButton,hitSlop:Nt,children:[G(Ho,{expanded:k.includes(u)}),Ie(b,{style:$.pageRangeText,children:["[",u*ur,"...",u*ur+ur-1,"]"]})]}),k.includes(u)&&G(f,{style:$.entriesContainer,children:h.map(y=>G(No,{defaultExpanded:o,label:y.label,value:y.value,editable:e,dataPath:[...P,y.label],dataVersion:s},y.label))})]})},u))})]})]}),z.length===0&&Ie(f,{style:$.flexRowGapFullWidth,children:[e&&l!==null&&(I==="string"||I==="number"||I==="boolean")?Ie(_r,{children:[e&&l&&(I==="string"||I==="number")&&G(f,{style:$.nebulaInputWrapper,children:G(rh,{label:t,accessibilityLabel:"Data input field for editing values",style:[I==="number"?$.textNumber:$.textString],keyboardType:I==="number"?"numeric":"default",value:c,onChangeText:h=>p(I==="number",h),onFocus:()=>d(true),onBlur:()=>d(false),showNumberControls:I==="number",onIncrement:()=>{let h=Number(c)||0;p(true,String(h+1))},onDecrement:()=>{let h=Number(c)||0;p(true,String(h-1))},showDeleteButton:i,onDelete:()=>{l.onChange(kt(l.root,P))}})}),I==="boolean"&&Ie(f,{style:$.booleanRowContainer,children:[G(b,{style:$.booleanLabel,children:t}),G(f,{style:$.booleanToggleWrapper,children:G(sh,{dataPath:P,value:r,itemsDeletable:i})})]})]}):Ie(_r,{children:[G(b,{style:$.text344054,children:t}),G(b,{style:$.displayValueText,children:Zc(r)})]}),e&&i&&l!==null&&I!=="string"&&I!=="number"&&I!=="boolean"&&G(Mo,{dataPath:P,isFocused:a})]})]})})}var $=fe.create({buttonStyle:{backgroundColor:L.card+"E6",borderWidth:1,borderColor:L.textSecondary+"33",borderRadius:6,flexDirection:"row",alignItems:"center",justifyContent:"center",width:28,height:28,position:"relative",shadowColor:"#000",shadowOffset:{width:0,height:1},shadowOpacity:.2,shadowRadius:2},buttonStyleFocused:{borderColor:L.primary+"CC",backgroundColor:L.primary+"26",shadowColor:L.primary,shadowOpacity:.3,shadowRadius:4},deleteButton:{backgroundColor:L.error+"1A",borderColor:L.error+"4D",borderWidth:1,borderRadius:6,padding:0,alignItems:"center",justifyContent:"center",width:28,height:28,position:"relative",shadowColor:L.error,shadowOffset:{width:0,height:0},shadowOpacity:.15,shadowRadius:3},deleteButtonFocused:{borderColor:L.error+"CC",backgroundColor:L.error+"33",shadowOpacity:.3,shadowRadius:5},deleteButtonInToggle:{backgroundColor:L.error+"1A",borderColor:L.error+"4D",borderWidth:1,borderRadius:6,padding:0,alignItems:"center",justifyContent:"center",width:28,height:28,shadowColor:L.error,shadowOffset:{width:0,height:0},shadowOpacity:.15,shadowRadius:3},clearButton:{backgroundColor:L.warning+"1A",borderWidth:1,borderColor:L.warning+"4D",borderRadius:6,flexDirection:"row",padding:0,alignItems:"center",justifyContent:"center",width:28,height:28,position:"relative",zIndex:10,shadowColor:L.warning,shadowOffset:{width:0,height:0},shadowOpacity:.15,shadowRadius:3},clearButtonFocused:{borderColor:L.warning+"CC",backgroundColor:L.warning+"33",shadowOpacity:.3,shadowRadius:5},clearButtonText:{fontSize:12,fontWeight:"700",fontFamily:qe},expanderIcon:{width:18,height:18,alignItems:"center",justifyContent:"center",marginRight:1,backgroundColor:L.textSecondary+"14",borderRadius:3},expanderIconMain:{backgroundColor:L.textSecondary+"1A",width:20,height:20,borderRadius:4,borderWidth:.5,borderColor:L.textSecondary+"33"},expanded:{transform:[{rotate:"0deg"}]},collapsed:{transform:[{rotate:"0deg"}]},minWidthWrapper:{minWidth:180,fontSize:11,flexDirection:"row",flexWrap:"wrap",width:"100%",marginVertical:.5},fullWidthMarginRight:{position:"relative",width:"100%",marginRight:1},flexRowItemsCenterGap:{flexDirection:"row",alignItems:"center",justifyContent:"space-between",paddingVertical:3,paddingHorizontal:6,marginVertical:1,borderRadius:4,backgroundColor:L.card+"66",borderWidth:.5,borderColor:L.textSecondary+"1A"},flexRowItemsCenterGapMain:{backgroundColor:L.card+"E6",borderLeftWidth:2.5,borderLeftColor:L.textSecondary+"80",borderColor:L.textSecondary+"26",paddingVertical:5,paddingHorizontal:8,marginBottom:3,borderWidth:1,shadowColor:"#000",shadowOffset:{width:0,height:0},shadowOpacity:.08,shadowRadius:3},expanderButton:{flexDirection:"row",alignItems:"center",backgroundColor:"transparent",paddingVertical:1,paddingHorizontal:2,gap:6,borderWidth:0,minHeight:24,flex:1},labelText:{color:L.textSecondary,fontSize:10,fontWeight:"600",marginRight:4,fontFamily:qe,letterSpacing:.4},labelTextFocused:{color:L.text},labelTextMain:{color:L.text,fontSize:11,fontWeight:"700",letterSpacing:.6},textGray500:{color:L.textMuted,fontSize:10,fontWeight:"400",fontFamily:qe,opacity:.7},pageRangeText:{color:L.textSecondary,fontSize:10,fontWeight:"600",fontFamily:qe},flexRowGapItemsCenter:{flexDirection:"row",alignItems:"center",gap:4,paddingLeft:2},singleEntryContainer:{marginLeft:2,marginTop:2,paddingLeft:8,borderLeftWidth:1.5,borderLeftColor:L.textSecondary+"40"},singleEntryContainerMain:{borderLeftColor:L.textSecondary+"4D",marginLeft:4,paddingLeft:10},multiEntryContainer:{marginLeft:2,marginTop:2,paddingLeft:8,borderLeftWidth:1.5,borderLeftColor:L.textSecondary+"40"},multiEntryContainerMain:{borderLeftColor:L.textSecondary+"4D",marginLeft:4,paddingLeft:10},relativeOutlineNone:{position:"relative"},pageExpanderButton:{flexDirection:"row",alignItems:"center",backgroundColor:L.card+"66",paddingVertical:3,paddingHorizontal:6,gap:6,borderRadius:4,borderWidth:.5,borderColor:L.textSecondary+"1A",marginBottom:2,minHeight:24},entriesContainer:{marginLeft:2,paddingLeft:8,marginTop:2,borderLeftWidth:1.5,borderLeftColor:L.textSecondary+"40"},textNumber:{color:L.text,fontWeight:"600",fontFamily:qe},textString:{color:L.text,fontFamily:qe},flexRowGapFullWidth:{flexDirection:"row",width:"100%",alignItems:"center",marginVertical:1,gap:6,paddingHorizontal:4,paddingVertical:2,borderRadius:3},text344054:{color:L.textSecondary,fontWeight:"600",fontSize:9,minWidth:50,fontFamily:qe,letterSpacing:.4,opacity:.8},numberInputButtons:{position:"absolute",right:8,top:"50%",transform:[{translateY:-18}],flexDirection:"row",gap:4,zIndex:10},touchableButton:{width:32,height:32,borderRadius:6,backgroundColor:L.card+"E6",borderWidth:1,borderColor:L.textSecondary+"33",alignItems:"center",justifyContent:"center",marginLeft:2,shadowColor:"#000",shadowOffset:{width:0,height:1},shadowOpacity:.2,shadowRadius:2},touchableButtonFocused:{borderColor:L.primary+"CC",backgroundColor:L.primary+"26",shadowColor:L.primary,shadowOffset:{width:0,height:0},shadowOpacity:.3,shadowRadius:4,elevation:3},nebulaInputWrapper:{flex:1,width:"100%",position:"relative"},displayValueText:{flex:1,color:L.text,fontWeight:"400",fontFamily:qe,fontSize:12,paddingVertical:6,paddingHorizontal:10,borderRadius:6,borderWidth:1,borderColor:L.textMuted+"66",minHeight:34},dataRow:{flexDirection:"row",alignItems:"center",paddingVertical:4,paddingHorizontal:8,minHeight:44,gap:12},dataLabel:{color:L.textSecondary,fontSize:13,fontWeight:"500",minWidth:80,flexShrink:0},dataValueContainer:{flex:1,flexDirection:"row",alignItems:"center"},inputWithActions:{flex:1,position:"relative"},numberControls:{position:"absolute",right:8,top:"50%",transform:[{translateY:-16}],flexDirection:"column",gap:2},numberButton:{width:32,height:16,borderRadius:4,alignItems:"center",justifyContent:"center",borderWidth:1,borderColor:L.primary+"0F"},readOnlyValue:{color:L.text,fontSize:13,fontFamily:qe,paddingVertical:8,paddingHorizontal:12,borderRadius:6,borderWidth:1,borderColor:L.textMuted+"33",flex:1},actionButtons:{flexDirection:"row",gap:6,paddingLeft:8},booleanContainer:{flexDirection:"row",alignItems:"center",padding:8,borderRadius:6,borderWidth:1,borderColor:L.textMuted+"4D",flex:1},booleanText:{marginLeft:8,color:L.warning,fontWeight:"500",fontFamily:qe},modernToggleButton:{flexDirection:"row",alignItems:"center",justifyContent:"space-between",borderRadius:6,borderWidth:1,borderColor:L.textMuted+"99",paddingHorizontal:8,paddingVertical:6,marginVertical:2,minHeight:34,gap:8},toggleIconContainer:{marginRight:6},toggleIcon:{padding:8,borderRadius:8,alignItems:"center",justifyContent:"center",width:32,height:32},toggleIconSmall:{width:8,height:8,borderRadius:4},toggleContent:{flex:1,minWidth:0},toggleLabel:{color:"#E5E7EB",fontSize:11,fontWeight:"600",fontFamily:qe,letterSpacing:.3},toggleStatus:{color:"#9CA3AF",fontSize:11},toggleBadge:{marginLeft:6,paddingHorizontal:6,paddingVertical:3,borderRadius:4,borderWidth:1},toggleBadgeText:{fontSize:9,fontWeight:"700",textTransform:"uppercase",letterSpacing:.8,fontFamily:qe},toggleIconTrue:{backgroundColor:L.primary},toggleIconFalse:{backgroundColor:L.textMuted},toggleBadgeTrue:{backgroundColor:L.primary+"1A",borderColor:L.primary+"4D"},toggleBadgeFalse:{backgroundColor:L.textMuted+"1A",borderColor:L.textMuted+"4D"},toggleTextTrue:{color:L.primary,fontWeight:"600"},toggleTextFalse:{color:L.textSecondary,fontWeight:"500"},booleanRowContainer:{flexDirection:"row",alignItems:"center",width:"100%",gap:8,paddingVertical:2},booleanLabel:{color:L.textSecondary,fontSize:10,fontWeight:"600",fontFamily:qe,letterSpacing:.4,minWidth:60,flexShrink:0},booleanToggleWrapper:{flex:1}});O();ce();import{useState as ah}from"react";import{absoluteFill as Yi,macOSColors as Pe}from"@buoy-gg/shared-ui/web";import{jsx as at,jsxs as jo}from"react/jsx-runtime";function Fo({title:e,hint:t,value:r,placeholder:o="Number",min:n,max:i,onSubmit:s,onCancel:l}){let[a,d]=ah(r!=null?String(r):""),c=()=>{let x=a.trim();if(!x){s(null);return}let T=Number(x);if(!Number.isFinite(T)){s(null);return}let S=T;n!=null&&(S=Math.max(n,S)),i!=null&&(S=Math.min(i,S)),s(S)};return jo(f,{style:Oe.overlay,children:[at(N,{style:Oe.backdrop,activeOpacity:1,onPress:l,"sentry-label":"ignore dismiss number prompt"}),jo(f,{style:Oe.panel,children:[at(b,{style:Oe.title,children:e}),at(qt,{style:Oe.input,value:a,onChangeText:d,placeholder:o,placeholderTextColor:Pe.text.muted,keyboardType:"number-pad",autoFocus:true,selectTextOnFocus:true,onSubmitEditing:c,returnKeyType:"done","sentry-label":"ignore number prompt input",accessibilityLabel:e}),t?at(b,{style:Oe.hint,children:t}):null,jo(f,{style:Oe.actions,children:[at(N,{onPress:l,"sentry-label":"ignore cancel number prompt",style:[Oe.button,Oe.cancelButton],children:at(b,{style:Oe.cancelText,children:"Cancel"})}),at(N,{onPress:c,"sentry-label":"ignore save number prompt",style:[Oe.button,Oe.saveButton],children:at(b,{style:Oe.saveText,children:"Set"})})]})]})]})}var Oe=fe.create({overlay:{...Yi,zIndex:40},backdrop:{...Yi,backgroundColor:"rgba(0,0,0,0.6)"},panel:{marginHorizontal:12,marginTop:12,padding:14,borderRadius:10,borderWidth:1,borderColor:Pe.border.hover,backgroundColor:Pe.background.card,gap:10},title:{fontSize:13,fontWeight:"700",color:Pe.text.primary},input:{backgroundColor:Pe.background.input,borderWidth:1,borderColor:Pe.border.input,borderRadius:6,paddingHorizontal:12,paddingVertical:10,fontSize:16,fontWeight:"700",color:Pe.text.primary},hint:{fontSize:10,color:Pe.text.muted},actions:{flexDirection:"row",gap:8},button:{flex:1,paddingVertical:10,borderRadius:6,alignItems:"center",borderWidth:1},cancelButton:{borderColor:Pe.border.default,backgroundColor:Pe.background.base},cancelText:{fontSize:12,fontWeight:"600",color:Pe.text.secondary},saveButton:{borderColor:Pe.semantic.info,backgroundColor:`${Pe.semantic.info}22`},saveText:{fontSize:12,fontWeight:"700",color:Pe.semantic.info}});import{Fragment as Zi,jsx as V,jsxs as Te}from"react/jsx-runtime";var lh=["GET","POST","PUT","PATCH","DELETE"],Qi=[0,500,1e3,3e3,1e4],es=[{id:"500",label:"Server error",code:"500",danger:true,patch:{kind:"respond",status:500,statusText:"Internal Server Error"}},{id:"401",label:"Unauthorized",code:"401",danger:true,patch:{kind:"respond",status:401,statusText:"Unauthorized"}},{id:"404",label:"Not found",code:"404",danger:true,patch:{kind:"respond",status:404,statusText:"Not Found"}},{id:"403",label:"Forbidden",code:"403",danger:true,patch:{kind:"respond",status:403,statusText:"Forbidden"}},{id:"429",label:"Rate limited",code:"429",danger:true,patch:{kind:"respond",status:429,statusText:"Too Many Requests"}},{id:"503",label:"Unavailable",code:"503",danger:true,patch:{kind:"respond",status:503,statusText:"Service Unavailable"}},{id:"400",label:"Bad request",code:"400",danger:true,patch:{kind:"respond",status:400,statusText:"Bad Request"}},{id:"200",label:"Success",code:"200",patch:{kind:"respond",status:200,statusText:"OK"}},{id:"offline",label:"Offline",danger:true,patch:{kind:"fail",failKind:"network"}},{id:"timeout",label:"Timeout",danger:true,patch:{kind:"fail",failKind:"timeout"}},{id:"passthrough",label:"Real response",patch:{kind:"delay"}}];function dh(e){return e.kind==="delay"?"passthrough":e.kind==="fail"?e.failKind==="timeout"?"timeout":"offline":String(e.status??200)}function uh({outcome:e,active:t,onPress:r}){let o=e.danger?U.semantic.error:U.semantic.info;return Te(N,{onPress:r,"sentry-label":"ignore override outcome",testID:`buoy-network-outcome-${e.label.toLowerCase().replace(/\s+/g,"-")}${e.code?`-${e.code}`:""}`,accessibilityRole:"button",accessibilityLabel:`${e.label}${e.code?` ${e.code}`:""}`,style:[M.outcome,t&&{borderColor:o,backgroundColor:`${o}1F`}],children:[V(b,{style:[M.outcomeLabel,t&&{color:o}],children:e.label}),e.code?V(b,{style:[M.outcomeCode,t&&{color:o}],children:e.code}):null]})}function ts({title:e,summary:t,open:r,onToggle:o,children:n}){return Te(f,{style:M.disclosure,children:[Te(N,{onPress:o,"sentry-label":"ignore override disclosure",testID:`buoy-network-disclosure-${e.toLowerCase().replace(/\s+/g,"-")}`,accessibilityRole:"button",accessibilityLabel:e,style:M.disclosureHeader,children:[r?V(Xc,{size:12,color:U.text.muted}):V(Jc,{size:12,color:U.text.muted}),V(b,{style:M.disclosureTitle,children:e}),t&&!r?V(b,{style:M.disclosureSummary,numberOfLines:1,children:t}):null]}),r?V(f,{style:M.disclosureBody,children:n}):null]})}function jt({label:e,active:t,onPress:r}){return V(N,{onPress:r,"sentry-label":"ignore override chip",testID:`buoy-network-chip-${e.toLowerCase().replace(/\s+/g,"-")}`,accessibilityRole:"button",accessibilityLabel:e,style:[M.chip,t&&M.chipActive],children:V(b,{style:[M.chipText,t&&M.chipTextActive],children:e})})}function ch({draft:e,onChange:t,onSave:r,onCancel:o,saveLabel:n="Save",applySafeAreaInset:i=false}){let s=Gc({minBottom:16}),l=i?s.bottom:0,a=y=>t({...e,...y}),[d,c]=Fr(!e.urlPattern.trim()),[x,T]=Fr(false),[S,q]=Fr(null),[m,k]=Fr(null),E=dh(e),g=e.kind==="respond"&&typeof e.status=="number"&&!es.some(y=>y.code===String(e.status)),I=e.kind==="respond",z=e.methods?.[0],P=`${z??"Any"} ${e.urlPattern||"No URL yet"}`,C=Ui(()=>{let y=(e.body??"").trim();if(!y)return"Empty";let D=y.split(`
143
+ `).length;return`${D} line${D===1?"":"s"}`},[e.body]),H=Ui(()=>{let y=(e.body??"").trim();if(!y)return null;try{return JSON.parse(y)}catch{return null}},[e.body]),v=(e.body??"").trim().length>0&&!H,p=e.delayMs??0,h=p>0&&!Qi.includes(p),u=!e.alternate&&typeof e.times=="number"&&e.times!==1;return Te(f,{style:M.root,children:[Te(ut,{testID:"buoy-network-editor-scroll",style:M.scroll,contentContainerStyle:M.scrollContent,keyboardShouldPersistTaps:"handled",children:[Te(ts,{title:"Applies to",summary:P,open:d,onToggle:()=>c(y=>!y),children:[V(qt,{style:M.input,value:e.urlPattern,onChangeText:y=>a({urlPattern:y}),testID:"buoy-network-override-pattern",accessibilityLabel:"Override URL pattern",placeholder:"https://api.example.com/v1/users*",placeholderTextColor:U.text.muted,autoCapitalize:"none",autoCorrect:false,multiline:true,"sentry-label":"ignore override url pattern"}),Te(f,{style:M.chipRow,children:[V(jt,{label:"Any",active:!z,onPress:()=>a({methods:void 0})}),lh.map(y=>V(jt,{label:y,active:z===y,onPress:()=>a({methods:[y]})},y))]})]}),Te(f,{style:M.outcomeGrid,children:[es.map(y=>V(uh,{outcome:y,active:E===y.id,onPress:()=>a(y.patch)},y.id)),V(N,{onPress:()=>k("status"),"sentry-label":"ignore custom status",accessibilityLabel:"Custom status code",style:[M.customField,g&&M.customFieldActive],children:V(b,{style:[M.customValue,g&&M.customInputActive],children:g?String(e.status):"Custom"})})]}),I?V(ts,{title:"Response body",summary:C,open:x,onToggle:()=>T(y=>!y),children:S!==null?Te(Zi,{children:[V(qt,{style:[M.input,M.bodyInput],value:S,onChangeText:q,placeholder:"Paste a new body\u2026",placeholderTextColor:U.text.muted,autoCapitalize:"none",autoCorrect:false,autoFocus:true,multiline:true,"sentry-label":"ignore override body paste"}),Te(f,{style:M.inlineActions,children:[V(N,{onPress:()=>q(null),"sentry-label":"ignore cancel body paste",style:M.textButton,children:V(b,{style:M.textButtonMuted,children:"Cancel"})}),V(N,{onPress:()=>{let y=S.trim();try{a({body:JSON.stringify(JSON.parse(y),null,2)})}catch{a({body:y})}q(null)},disabled:!S.trim(),"sentry-label":"ignore apply body paste",style:M.textButton,children:V(b,{style:[M.textButtonLabel,!S.trim()&&M.textButtonDisabled],children:"Replace"})})]})]}):Te(Zi,{children:[H!==null?V(Xi.Provider,{value:{root:H,onChange:y=>a({body:JSON.stringify(y,null,2)})},children:V(No,{editable:true,label:"",value:H,defaultExpanded:[""]})}):V(b,{style:M.emptyBody,children:v?"This body isn't JSON, so there's no tree to show.":"No body yet."}),V(N,{onPress:()=>q(""),"sentry-label":"ignore edit all body",style:M.textButton,children:V(b,{style:M.textButtonLabel,children:"Edit all"})})]})}):null,Te(f,{style:M.field,children:[V(b,{style:M.subLabel,children:"Delay"}),Te(f,{style:M.chipRow,children:[Qi.map(y=>V(jt,{label:y===0?"None":`${y/1e3}s`,active:p===y,onPress:()=>a({delayMs:y})},y)),V(N,{onPress:()=>k("delay"),"sentry-label":"ignore custom delay",accessibilityLabel:"Custom delay in seconds",style:[M.customField,h&&M.customFieldActive],children:V(b,{style:[M.customValue,h&&M.customInputActive],children:h?`${p/1e3}s`:"Custom"})})]})]}),Te(f,{style:M.field,children:[V(b,{style:M.subLabel,children:"Fires"}),V(b,{style:M.subHint,children:"A limited rule switches itself off once it's used up. Every other alternates forever \u2014 the first request through, the next overridden."}),Te(f,{style:M.chipRow,children:[V(jt,{label:"Always",active:!e.alternate&&e.times==null,onPress:()=>a({alternate:false,times:null})}),V(jt,{label:"Once",active:!e.alternate&&e.times===1,onPress:()=>a({alternate:false,times:1})}),V(jt,{label:"Every other",active:e.alternate===true,onPress:()=>a({alternate:true,times:null})}),V(N,{onPress:()=>{a({alternate:false}),k("times")},"sentry-label":"ignore custom times",accessibilityLabel:"Custom number of times",style:[M.customField,u&&M.customFieldActive],children:V(b,{style:[M.customValue,u&&M.customInputActive],children:u?`${e.times}\xD7`:"Custom"})})]})]})]}),m==="status"?V(Fo,{title:"Custom status code",hint:`${Xt}\u2013${Jt}`,value:g?e.status:void 0,min:Xt,max:Jt,onSubmit:y=>{a({kind:"respond",status:y??void 0,statusText:void 0}),k(null)},onCancel:()=>k(null)}):null,m==="delay"?V(Fo,{title:"Custom delay",hint:"Seconds",value:h?p/1e3:void 0,min:0,onSubmit:y=>{a({delayMs:y!=null?Math.round(y*1e3):0}),k(null)},onCancel:()=>k(null)}):null,m==="times"?V(Fo,{title:"Fires how many times",hint:"Leave empty for always",value:u?e.times:void 0,min:1,onSubmit:y=>{a({alternate:false,times:y&&y>0?y:null}),k(null)},onCancel:()=>k(null)}):null,Te(f,{style:[M.footer,{paddingBottom:12+l}],children:[V(N,{onPress:o,"sentry-label":"ignore cancel override",testID:"buoy-network-editor-cancel",accessibilityRole:"button",accessibilityLabel:"Cancel",style:[M.footerButton,M.cancelButton],children:V(b,{style:M.cancelText,children:"Cancel"})}),V(N,{onPress:r,disabled:!e.urlPattern.trim(),"sentry-label":"ignore save override",testID:"buoy-network-editor-save",accessibilityRole:"button",accessibilityLabel:n,style:[M.footerButton,M.saveButton,!e.urlPattern.trim()&&M.saveButtonDisabled],children:V(b,{style:M.saveText,children:n})})]})]})}var M=fe.create({root:{flex:1},scroll:{flex:1},scrollContent:{padding:12,paddingBottom:24,gap:4},field:{gap:8,paddingVertical:6},outcomeGrid:{flexDirection:"row",flexWrap:"wrap",gap:6,paddingVertical:10},outcome:{flexDirection:"row",alignItems:"center",gap:6,paddingHorizontal:10,paddingVertical:9,borderRadius:6,borderWidth:1,borderColor:U.border.default,backgroundColor:U.background.card},outcomeLabel:{fontSize:12,fontWeight:"600",color:U.text.primary},outcomeCode:{fontSize:10,fontWeight:"700",color:U.text.muted},disclosure:{borderRadius:6,borderWidth:1,borderColor:U.border.default,backgroundColor:U.background.card,overflow:"hidden"},disclosureHeader:{flexDirection:"row",alignItems:"center",gap:6,paddingHorizontal:10,paddingVertical:10},disclosureTitle:{fontSize:12,fontWeight:"600",color:U.text.primary},disclosureSummary:{flex:1,textAlign:"right",fontSize:11,color:U.text.muted},disclosureBody:{paddingHorizontal:10,paddingBottom:10,gap:8},input:{backgroundColor:U.background.input,borderWidth:1,borderColor:U.border.input,borderRadius:6,paddingHorizontal:10,paddingVertical:8,color:U.text.primary,fontSize:12,fontFamily:Kc,minHeight:40},bodyInput:{minHeight:140,textAlignVertical:"top"},chipRow:{flexDirection:"row",flexWrap:"wrap",gap:6},chip:{paddingHorizontal:10,paddingVertical:6,borderRadius:5,borderWidth:1,borderColor:U.border.default,backgroundColor:U.background.base},chipActive:{borderColor:U.semantic.info,backgroundColor:`${U.semantic.info}1F`},chipText:{fontSize:11,fontWeight:"600",color:U.text.secondary},chipTextActive:{color:U.semantic.info},customField:{flexDirection:"row",alignItems:"center",paddingHorizontal:8,borderRadius:5,borderWidth:1,borderColor:U.border.default,backgroundColor:U.background.base},customFieldActive:{borderColor:U.semantic.info,backgroundColor:`${U.semantic.info}1F`},customValue:{paddingVertical:6,fontSize:11,fontWeight:"600",color:U.text.secondary},customInputActive:{color:U.semantic.info},subHint:{fontSize:10,lineHeight:14,color:U.text.muted,marginTop:-2},subLabel:{fontSize:10,fontWeight:"700",letterSpacing:.6,color:U.text.muted,textTransform:"uppercase"},textButton:{alignSelf:"flex-start",paddingVertical:4},textButtonLabel:{fontSize:11,fontWeight:"600",color:U.semantic.info},textButtonMuted:{fontSize:11,fontWeight:"600",color:U.text.secondary},textButtonDisabled:{opacity:.4},inlineActions:{flexDirection:"row",alignItems:"center",justifyContent:"space-between"},emptyBody:{fontSize:11,color:U.text.muted,paddingVertical:6},footer:{flexDirection:"row",gap:8,padding:12,borderTopWidth:1,borderTopColor:U.border.default,backgroundColor:U.background.base},footerButton:{flex:1,paddingVertical:11,borderRadius:6,alignItems:"center",borderWidth:1},cancelButton:{borderColor:U.border.default,backgroundColor:U.background.card},cancelText:{fontSize:12,fontWeight:"600",color:U.text.secondary},saveButton:{borderColor:U.semantic.info,backgroundColor:`${U.semantic.info}22`},saveButtonDisabled:{opacity:.4},saveText:{fontSize:12,fontWeight:"700",color:U.semantic.info}});import{jsx as de,jsxs as Rt}from"react/jsx-runtime";function hh(){return{enabled:true,urlPattern:"",kind:"respond",status:500,body:"",times:null}}function ph(e){let{id:t,hits:r,seen:o,createdAt:n,...i}=e;return i}function fh(e){let t=e.urlPattern,r=t.indexOf("://");if(r===-1)return t;let o=t.indexOf("/",r+3);return o===-1?t.slice(r+3):t.slice(o)}function gh(e){let t=[];return e.delayMs&&t.push(`${e.delayMs/1e3}s delay`),e.alternate?t.push("every other"):e.times===1?t.push("once"):typeof e.times=="number"&&t.push(`${e.times}\xD7`),t.join(" \xB7 ")}function mh(e){if(e.kind==="fail")return Y.semantic.error;if(e.kind==="delay")return Y.semantic.info;let t=e.status??200;return t>=200&&t<300?Y.semantic.success:t>=300&&t<400?Y.semantic.info:Y.semantic.error}function yh({rule:e,spent:t,onEdit:r,onDelete:o}){let n=e.enabled&&!t,i=mh(e),s=gh(e),l=e.methods?.length?e.methods.join("/"):"ANY";return Rt(jc,{onPress:r,style:se.cardWrapper,contentStyle:[se.card,{borderLeftColor:n?i:"transparent"}],children:[de($c,{method:l,size:"small"}),Rt(f,{style:se.cardMiddle,children:[de(b,{style:[se.urlText,!n&&se.urlTextOff],numberOfLines:2,children:fh(e)}),s?de(b,{style:se.extrasText,children:s}):null]}),e.hits>0?de(b,{style:se.rowHits,children:e.hits}):null,e.kind==="fail"?Rt(f,{style:se.failBadge,children:[de(Mc,{size:10,color:Y.semantic.error}),de(b,{style:se.failText,children:e.failKind==="timeout"?"TIMEOUT":"OFFLINE"})]}):de(b,{style:[se.statusText,{color:i}],children:e.kind==="delay"?"PASS":String(e.status??200)}),de(N,{onPress:o,"sentry-label":"ignore delete override rule",testID:"buoy-network-rule-delete",accessibilityRole:"button",accessibilityLabel:"Delete rule",hitSlop:{top:8,bottom:8,left:4,right:4},style:se.rowDelete,children:de(Vc,{size:13,color:Y.text.muted})})]})}function bh(e){return e.visible?de(vh,{...e}):null}function vh({isPro:e,onUpgradePress:t,pendingDraft:r,onPendingConsumed:o,backHandlerRef:n,applySafeAreaInset:i}){let s=Uc("network.overrideRules"),l=e?rt:s,{enabled:a,autoPaused:d,rules:c,activeCount:x,setEnabled:T,upsertRule:S,setRuleEnabled:q,removeRule:m,isRuleSpent:k}=Mr(),[E,g]=Hc(null);jr(()=>{_.noteHealthyLaunch()},[]),jr(()=>{if(n)return n.current=E?()=>(g(null),true):null,()=>{n.current=null}},[n,E]);let I=Ac(v=>{_.fetchRuleBody(v).then(p=>{p!=null&&g(h=>h?.id===v?{...h,draft:{...h.draft,body:p,bodyOmitted:void 0}}:h)})},[]);jr(()=>{if(!r)return;let{id:v,...p}=r;g({id:v,draft:p}),v&&p.bodyOmitted&&I(v),o?.()},[r,o,I]),jr(()=>{E?.id&&(c.some(v=>v.id===E.id)||g(null))},[E?.id,c]);let z=v=>{g({id:v.id,draft:ph(v)}),v.bodyOmitted&&I(v.id)},P=v=>{c.filter(p=>p.enabled&&!k(p)).length<=l||c.filter(p=>p.enabled&&!k(p)&&p.id!==v).forEach(p=>q(p.id,false))},C=()=>{if(!E)return;let v={...E.draft,enabled:true,urlPattern:E.draft.urlPattern.trim()};if(!v.urlPattern)return;let p=S({...v,id:E.id});P(p?.id??E.id),T(true),g(null)};if(E)return de(ch,{draft:E.draft,onChange:v=>g({...E,draft:v}),onSave:C,onCancel:()=>g(null),saveLabel:E.id?"Save":"Add",applySafeAreaInset:i});let H=c.length>0;return Rt(f,{style:se.root,children:[H?Rt(f,{style:[se.bar,a&&x>0&&se.barOn],children:[a&&x>0?de(Nc,{size:12,color:Y.semantic.warning}):null,de(b,{style:[se.barText,a&&x>0&&se.barTextOn],numberOfLines:2,children:d?"Overrides paused \u2014 they'd been on for 3 launches":a&&x>0?`${x} override${x===1?" is":"s are"} on`:"Overrides are off"}),de(N,{onPress:()=>T(!(a&&x>0)),"sentry-label":"ignore toggle overrides master",testID:"buoy-network-overrides-master",accessibilityRole:"button",style:se.barButton,children:de(b,{style:se.barButtonText,children:a&&x>0?"Turn all off":d?"Turn back on":"Turn on"})})]}):null,Rt(f,{style:se.listHeader,children:[de(b,{style:se.listHeaderText,children:H?`${c.length} rule${c.length===1?"":"s"}`:""}),de(N,{onPress:()=>g({draft:hh()}),"sentry-label":"ignore new override rule",accessibilityLabel:"New override rule",style:se.newButton,children:de(Wc,{size:14,color:Y.semantic.info})})]}),H?Rt(ut,{style:se.list,contentContainerStyle:se.listContent,keyboardShouldPersistTaps:"handled",children:[c.map(v=>de(yh,{rule:v,spent:k(v),onEdit:()=>z(v),onDelete:()=>m(v.id)},v.id)),l<rt?de(b,{style:se.footNote,children:`Your plan: ${l} override at a time. Pro: up to ${rt}.`}):null]}):de(f,{style:se.emptyWrap,children:de(Fc,{otto:"empty",iconSize:32,title:"Nothing overridden",description:"Open any request and tap Override, or + to write a rule."})})]})}var se=fe.create({root:{flex:1},bar:{flexDirection:"row",alignItems:"center",gap:8,paddingHorizontal:12,paddingVertical:10,borderBottomWidth:1,borderBottomColor:Y.border.default,backgroundColor:Y.background.card},barOn:{borderBottomColor:Y.semantic.warning+"44",backgroundColor:Y.semantic.warningBackground},barText:{flex:1,fontSize:12,fontWeight:"600",color:Y.text.secondary},barTextOn:{color:Y.semantic.warning},barButton:{paddingHorizontal:10,paddingVertical:6,borderRadius:5,borderWidth:1,borderColor:Y.border.hover,backgroundColor:Y.background.base},barButtonText:{fontSize:11,fontWeight:"700",color:Y.text.primary},listHeader:{flexDirection:"row",alignItems:"center",justifyContent:"space-between",paddingHorizontal:12,paddingTop:10,paddingBottom:4},listHeaderText:{fontSize:10,fontWeight:"700",letterSpacing:.6,color:Y.text.muted,textTransform:"uppercase"},newButton:{padding:6,borderRadius:5,borderWidth:1,borderColor:Y.border.default,backgroundColor:Y.background.card},emptyWrap:{flex:1,justifyContent:"center"},list:{flex:1},listContent:{padding:10,gap:6},cardWrapper:{marginHorizontal:0,marginVertical:0},card:{flexDirection:"row",alignItems:"center",gap:8,borderLeftWidth:3,borderLeftColor:"transparent"},cardMiddle:{flex:1},urlText:{fontSize:12,color:Y.text.primary,lineHeight:16,fontFamily:_c},urlTextOff:{color:Y.text.muted},extrasText:{fontSize:10,color:Y.text.secondary,marginTop:2},statusText:{fontSize:11,fontWeight:"600"},failBadge:{flexDirection:"row",alignItems:"center",gap:2,paddingHorizontal:4,paddingVertical:1,backgroundColor:Y.semantic.error+"26",borderRadius:3},failText:{fontSize:10,color:Y.semantic.error,fontWeight:"600"},rowHits:{fontSize:11,fontWeight:"700",color:Y.semantic.warning},rowDelete:{padding:5,borderRadius:5,borderWidth:1,borderColor:Y.border.default,backgroundColor:Y.background.base},footNote:{fontSize:10,lineHeight:14,color:Y.text.muted,paddingHorizontal:4,paddingTop:8}});O();ce();import{FlaskConical as Sh,night as Et}from"@buoy-gg/shared-ui/web";import{jsx as $o,jsxs as xh}from"react/jsx-runtime";function wh({onPress:e}){let{activeCount:t}=Mr(),r=t>0;return xh(N,{onPress:e,"sentry-label":"ignore open overrides",testID:"buoy-network-overrides",accessibilityRole:"button",style:[Xr.button,r&&Xr.buttonActive],accessibilityLabel:r?`Response overrides \u2014 ${t} active`:"Response overrides",children:[$o(Sh,{size:14,color:r?Et.color.warning:Et.color.textSecondary}),r?$o(f,{style:Xr.badge,children:$o(b,{style:Xr.badgeText,children:t})}):null]})}var Xr=fe.create({button:{width:32,height:32,borderRadius:8,alignItems:"center",justifyContent:"center",backgroundColor:Et.color.buttonSurface,borderWidth:1,borderColor:Et.color.border},buttonActive:{backgroundColor:Et.color.warningSoft,borderColor:Et.color.warning+"77"},badge:{position:"absolute",top:1,right:1,minWidth:12,height:12,borderRadius:6,paddingHorizontal:3,alignItems:"center",justifyContent:"center",backgroundColor:Et.color.warning},badgeText:{fontSize:8,fontWeight:"800",color:"#000000"}});O();ce();import{night as Ft}from"@buoy-gg/shared-ui/web";O();function Ch(e){let t=e.indexOf("?");return t===-1?e:`${e.slice(0,t)}*`}function Th(e){if(e==null)return"";if(typeof e=="string")return e;try{return JSON.stringify(e,null,2)}catch{return""}}function Wo(e){return{enabled:true,name:void 0,urlPattern:Ch(e.url),methods:[String(e.method||"GET").toUpperCase()],kind:"respond",status:e.status&&e.status>=200?e.status:200,statusText:e.statusText,body:Th(e.responseData),times:null}}import{jsx as rs}from"react/jsx-runtime";function kh({onOpen:e}){let t=qo(),{rules:r,isRuleSpent:o}=Mr(),n=t?K.getEvents().find(l=>l.id===t)??ae.getEventById(t):null,i=n?r.find(l=>l.enabled&&!o(l)&&fo(l,n.url,String(n.method||"GET")))??null:null,s=i!==null;return rs(N,{onPress:()=>{if(n){if(i){let{id:l,hits:a,seen:d,createdAt:c,...x}=i;e(x,l);return}e(Wo(n))}},"sentry-label":"ignore open overrides",testID:"buoy-network-override-request",accessibilityRole:"button",accessibilityLabel:s?"Edit the override on this request":"Override this request",style:[Jr.button,s&&Jr.buttonActive],children:rs(b,{style:[Jr.label,s&&Jr.labelActive],children:"Override"})})}var Jr=fe.create({button:{paddingHorizontal:10,paddingVertical:6,borderRadius:8,borderWidth:1,borderColor:Ft.color.border,backgroundColor:Ft.color.buttonSurface},buttonActive:{borderColor:Ft.color.warning+"77",backgroundColor:Ft.color.warningSoft},label:{fontSize:11,fontWeight:"700",color:Ft.color.accent},labelActive:{color:Ft.color.warning}});O();ce();import{absoluteFill as os,night as lt}from"@buoy-gg/shared-ui/web";import{jsx as Qe,jsxs as Gr}from"react/jsx-runtime";function Rh({onPress:e,isOpen:t,hasIndicator:r}){return Gr(N,{onPress:e,"sentry-label":"ignore toggle header menu",testID:"buoy-network-menu",accessibilityRole:"button",accessibilityLabel:t?"Close menu":"More actions",style:[we.button,t&&we.buttonOpen],children:[Gr(f,{style:we.dots,children:[Qe(f,{style:[we.dot,t&&we.dotOpen]}),Qe(f,{style:[we.dot,t&&we.dotOpen]}),Qe(f,{style:[we.dot,t&&we.dotOpen]})]}),r?Qe(f,{style:we.indicator}):null]})}function Eh({onClose:e,children:t}){return Gr(f,{style:we.overlay,children:[Qe(N,{style:we.backdrop,activeOpacity:1,onPress:e,"sentry-label":"ignore dismiss header menu"}),Qe(f,{style:we.panel,children:t})]})}function Vo({icon:e,label:t,detail:r,testID:o,onPress:n}){return Gr(N,{onPress:n,"sentry-label":"ignore header menu item",testID:o,accessibilityRole:"button",accessibilityLabel:t,style:we.item,children:[Qe(f,{style:we.itemIcon,children:e}),Qe(b,{style:we.itemLabel,children:t}),r?Qe(b,{style:we.itemDetail,children:r}):null]})}var we=fe.create({button:{width:32,height:32,borderRadius:8,alignItems:"center",justifyContent:"center"},buttonOpen:{backgroundColor:lt.color.surfaceElevated},dots:{flexDirection:"column",gap:2.5,alignItems:"center"},dot:{width:3,height:3,borderRadius:2,backgroundColor:lt.color.textSecondary},dotOpen:{backgroundColor:lt.color.text},indicator:{position:"absolute",top:6,right:8,width:6,height:6,borderRadius:3,backgroundColor:lt.color.accent},overlay:{...os,zIndex:50},backdrop:{...os,backgroundColor:"rgba(0,0,0,0.5)"},panel:{position:"absolute",top:6,right:8,minWidth:196,paddingVertical:4,borderRadius:10,borderWidth:1,borderColor:lt.color.border,backgroundColor:lt.color.surface},item:{flexDirection:"row",alignItems:"center",gap:10,paddingHorizontal:12,paddingVertical:11},itemIcon:{width:16,alignItems:"center"},itemLabel:{flex:1,fontSize:13,fontWeight:"600",color:lt.color.text},itemDetail:{fontSize:11,color:lt.color.textTertiary}});O();import{memo as Ih,useEffect as Ph,useMemo as Lh}from"react";import{EventStepperFooter as Bh,useLimit as qh}from"@buoy-gg/shared-ui/web";import{jsx as Oh}from"react/jsx-runtime";var Dh=()=>Ve.step(-1),zh=()=>Ve.step(1),Ah=Ih(function({paused:e,filter:t,ignoredPatterns:r,isPro:o,fromSaved:n,savedSearch:i,applySafeAreaInset:s}){let{visibleEvents:l}=lr({filter:t,ignoredPatterns:r,paused:e,isPro:o}),{pinnedEvents:a,pinnedLiveIds:d,savedRecords:c}=zt(),x=qh("network.saved"),T=Lh(()=>{if(n)return Wi(c,x,i).events;let{pinned:m,rest:k}=zo(l,a,d);return m.length===0?k:[...m,...k]},[n,c,i,o,l,a,d]);Ph(()=>{Ve.setIds(wu(T))},[T]);let{index:S,total:q}=ku();return S<0?null:Oh(Bh,{currentIndex:S,totalItems:q,itemLabel:"Request",applySafeAreaInset:s,onPrevious:Dh,onNext:zh,variant:"night"})});O();import{useEffect as Hh,useState as Mh}from"react";function Nh(e){return K.getEvents().find(t=>t.id===e)??ae.getEventById(e)}function ns(e,t={}){let{paused:r=false}=t,[o,n]=Mh(null);return Hh(()=>{if(!(!e||r))return K.subscribeToEvents(i=>{let s=i.find(l=>l.id===e);s&&n(l=>l&&l.id===e&&l.event===s?l:{id:e,event:s})})},[e,r]),e?o&&o.id===e?o.event:Nh(e):null}import{Fragment as jh,jsx as F,jsxs as Ne}from"react/jsx-runtime";function Fh({visible:e,paused:t,ignoredPatternValues:r,onTogglePattern:o,isPro:n,filter:i,ignoredPatterns:s,fromSaved:l,savedSearch:a,applySafeAreaInset:d}){let c=qo(),x=Tu(),T=c!=null&&c===x,S=ns(c,{paused:t||!e});return bt(()=>{e&&S&&T&&Ve.reportRendered(S.id)},[e,S,T]),e?Ne(f,{style:It.detailRoot,children:[S?F(pi,{event:S,ignoredPatterns:r,onTogglePattern:o,showBodies:T}):F(f,{style:It.detailBodyFallback}),F(Ah,{paused:t,filter:i,ignoredPatterns:s,isPro:n,fromSaved:l,savedSearch:a,applySafeAreaInset:d})]}):null}function $h({visible:e,paused:t,isPro:r,filter:o,onFilterChange:n,ignoredPatterns:i,onRemovePattern:s,onAddPattern:l,onTogglePatternMode:a,isTeamPattern:d}){let{events:c}=lr({filter:o,ignoredPatterns:i,paused:t,visible:e,isPro:r});return e?F(sd,{events:c,filter:o,onFilterChange:n,ignoredPatterns:i,onRemovePattern:s,onAddPattern:l,onTogglePatternMode:a,isTeamPattern:d}):null}function Wh({visible:e,paused:t,isPro:r,filter:o,ignoredPatterns:n,settings:i,onSettingsChange:s}){let{events:l}=lr({filter:o,ignoredPatterns:n,paused:t,visible:e,isPro:r});return e?F(Jd,{settings:i,onSettingsChange:s,events:l}):null}function is({visible:e,onClose:t,onBack:r,onMinimize:o,enableSharedModalDimensions:n=false,inline:i=false,paused:s,onPausedChange:l,remoteConditions:a}){let{isPro:d}=$l(),[c,x]=ye(false),T=s!=null&&l!=null,S=T?s:c,q=Q=>{let De=typeof Q=="function"?Q(S):Q;T?l(De):x(De)},[m,k]=ye({}),E=Cu(),[g,I]=ye(false),[z,P]=ye(false),[C,H]=ye(false),[v,p]=ye(false),[h,u]=ye(0),[y]=ye(Bl);bt(()=>{y.update(a)},[y,a]),bt(()=>()=>y.update(void 0),[y]);let D=true,[re,ee]=ye(null),[Z,J]=ye("filters"),[A,W]=ye(""),[j,ne]=ye(false),pe=Tr(false),[tt,dt]=ye(""),gs=Tr(null),{patterns:Pt,values:ms,add:ys,remove:bs,toggle:vs,toggleMode:Ss,isTeamOnly:xs}=Ul(),[Wt,Qo]=ye(Wd),eo=Tr(false),[to,ro]=ye(false),[Lt,ws]=ye("export"),Vt=Q=>{ws(Q),ro(true)};bt(()=>{to&&d&&ro(false)},[to,d]),bt(()=>{if(!e||eo.current)return;(async()=>{try{let Q=await Yn.getItem(kr.network.copyOptions());if(Q){let De=JSON.parse(Q);Qo(De)}}catch{}finally{eo.current=true}})()},[e]),bt(()=>{if(!eo.current)return;(async()=>{try{await Yn.setItem(kr.network.copyOptions(),JSON.stringify(Wt))}catch{}})()},[Wt]);let Cs=()=>{Ve.clear()},en=xo(Q=>{Ve.select(Q.id)},[]),Ts=xo((Q,De)=>{ee(De?{...Q,id:De}:Q),H(true),Ve.clear()},[]),ks=xo(()=>ee(null),[]),tn=Tr(null),rn=Q=>{W(Q),k(De=>({...De,searchText:Q}))},Rs=Q=>{k(De=>({...De,status:De.status===Q?void 0:Q}))},[on,Es]=ye("bottomSheet"),Is=Q=>{Es(Q)};bt(()=>{j&&requestAnimationFrame(()=>{gs.current?.focus()})},[j]);let nn=()=>g?Ne(ge,{children:[F(ge.Navigation,{onBack:()=>I(false)}),F(ge.Content,{title:"",noMargin:true,children:F(Fl,{size:"sm",tabs:[{key:"filters",label:"Filters"},{key:"copy",label:"Copy"}],activeKey:Z,onChange:Q=>J(Q)})})]}):E?Ne(ge,{children:[F(ge.Navigation,{onBack:Cs}),F(ge.Content,{title:"Request Details",centered:true}),Ne(ge.Actions,{children:[D?F(kh,{onOpen:Ts}):null,F(Hi,{isPro:d,onUpgradePress:()=>Vt("saved")})]})]}):C&&D?Ne(ge,{children:[F(ge.Navigation,{onBack:()=>{tn.current?.()||(H(false),ee(null))}}),F(ge.Content,{title:"Response Overrides",centered:true})]}):z?Ne(ge,{children:[F(ge.Navigation,{onBack:()=>P(false)}),F(ge.Content,{title:"Saved Requests",centered:true})]}):Ne(ge,{children:[r&&F(ge.Navigation,{onBack:r}),F(ge.Content,{title:"",children:j?F(ge.Search,{value:A,onChangeText:rn,onCancel:()=>{rn(""),ne(false)},onDismiss:()=>ne(false),dismissOnBlur:true,clearOnlyWhenText:true,placeholder:"Search URL, method, operation, error...",accessibilityLabel:"Search network requests",iconSize:14,testID:"buoy-network-search-input",clearTestID:"buoy-network-search-clear",inputProps:{"sentry-label":"ignore network search header"}}):F(qu,{activeStatus:m.status,onToggleStatus:Rs,ignoredPatterns:Pt,paused:S})}),Ne(ge.Actions,{children:[F(N,{"sentry-label":"ignore open search",testID:"buoy-network-search-open",accessibilityLabel:"Open search",accessibilityRole:"button",onPress:()=>ne(true),style:It.headerActionButton,children:F(zl,{size:14,color:Ke.color.textSecondary})}),D?F(wh,{onPress:()=>H(true)}):null,F(Vl,{isEnabled:!S,onToggle:()=>q(Q=>!Q),accessibilityLabel:S?"Resume network capture":"Pause network capture",testID:"buoy-network-power"}),F(Ou,{paused:S}),F(Rh,{onPress:()=>p(Q=>!Q),isOpen:v,hasIndicator:oo})]})]}),oo=!!(m.status||m.method||m.contentType),Ps=n?kr.modal.root():kr.network.modal();if(!e)return null;let Ls=E||!g,sn=Ne(jh,{children:[Ne(f,{style:It.container,children:[F(Fh,{visible:E,paused:S,ignoredPatternValues:ms,onTogglePattern:vs,isPro:d,filter:m,ignoredPatterns:Pt,fromSaved:z,savedSearch:tt,applySafeAreaInset:!i&&on==="bottomSheet"}),F($h,{visible:g&&Z==="filters"&&!E,paused:S,isPro:d,filter:m,onFilterChange:k,ignoredPatterns:Pt,onRemovePattern:bs,onAddPattern:ys,onTogglePatternMode:Ss,isTeamPattern:xs}),F(Wh,{visible:g&&Z==="copy"&&!E,paused:S,isPro:d,filter:m,ignoredPatterns:Pt,settings:Wt,onSettingsChange:Qo}),F(bh,{visible:D&&C&&!E&&!g,isPro:d,onUpgradePress:()=>Vt("overrides"),pendingDraft:re,onPendingConsumed:ks,backHandlerRef:tn,applySafeAreaInset:!i&&on==="bottomSheet"}),F(Vi,{visible:z&&!E&&!g&&!(C&&D),isPro:d,copySettings:Wt,search:tt,onSearchChange:dt,onEventPress:en,onUpgradePress:()=>Vt("saved")}),F(kc,{visible:!E&&!g&&!z&&!(C&&D),paused:S,filter:m,ignoredPatterns:Pt,isPro:d,searchText:A,onEventPress:en,onUpgradePress:()=>Vt("export")})]}),v?Ne(Eh,{onClose:()=>p(false),children:[F(Vo,{icon:F(Al,{size:14,color:Ke.color.textSecondary}),label:"Network throttling",testID:"buoy-network-menu-throttling",onPress:()=>{p(false),Dl(a?y:void 0),i||u(Q=>Q+1)}}),F(Vo,{icon:F(Hl,{size:14,color:oo?Ke.color.accent:Ke.color.textSecondary}),label:"Filters",detail:oo?"Active":void 0,onPress:()=>{p(false),J("filters"),I(true)}}),F(Vo,{icon:F(Ml,{size:14,color:Ke.color.textSecondary}),label:"Saved requests",onPress:()=>{p(false),P(true)}}),F(f,{style:It.menuCopyRow,children:F(zu,{isPro:d,filter:m,ignoredPatterns:Pt,copySettings:Wt,paused:S,onUpgradePress:()=>{p(false),Vt("export")},label:"Copy requests"})})]}):null,F(Wl,{visible:to,onClose:()=>ro(false),featureName:Lt==="saved"?"Saved Requests":Lt==="overrides"?"Response Overrides":"Network Export",description:Lt==="saved"?"Keep the requests that matter. Saved requests survive Clear, app restarts, and the 500-request history cap.":Lt==="overrides"?"Force any endpoint to fail, stall or return something else \u2014 no backend changes, no code changes. Free keeps one active rule.":"Export network requests to share with your team, debug APIs, or feed into AI tools.",benefits:Lt==="overrides"?[`Run ${rt} rules at once (free keeps ${Bn})`,"Force a 500, a 401 or an empty list in one tap","Simulate offline, timeouts and slow connections","Rules survive an app reload, so you can test the boot path"]:Lt==="saved"?[`Save up to ${it} requests (free keeps ${Ri})`,"Failed requests stay put through a Clear","Snapshots survive an app restart","Export saved requests to teammates or AI assistants"]:["Export to JSON, Markdown, or plain text","Customizable copy presets (URLs only, LLM-ready, full data)","Share request details with teammates","Feed network data directly to AI assistants"]})]});return i?Ne(f,{style:It.inlineRoot,children:[F(f,{style:It.inlineHeader,..._l,children:nn()}),sn]}):F(Nl,{visible:e,onClose:t,onMinimize:o,minimizeRequest:h,persistenceKey:Ps,variant:"night",header:{showToggleButton:true,customContent:nn()},onModeChange:Is,enablePersistence:true,initialMode:"bottomSheet",enableGlitchEffects:true,disableScrollWrapper:Ls,styles:{},children:sn})}var It=fe.create({container:{flex:1,backgroundColor:"transparent"},detailRoot:{flex:1,minHeight:0},detailBodyFallback:{flex:1},inlineRoot:{flex:1,minHeight:0,backgroundColor:"transparent"},inlineHeader:{paddingHorizontal:12,paddingVertical:8,borderBottomWidth:1,borderBottomColor:jl.border.default,backgroundColor:"transparent"},menuCopyRow:{paddingHorizontal:6},headerActionButton:{width:32,height:32,borderRadius:8,backgroundColor:Ke.color.buttonSurface,borderWidth:1,borderColor:Ke.color.border,alignItems:"center",justifyContent:"center"},activeFilterButton:{backgroundColor:Ke.color.accentSoft,borderColor:Ke.color.accentBorderStrong}});function ss(e){return F(To,{children:F(is,{...e})})}function Vh(e={}){return F(To,{children:F(is,{...e,inline:true,visible:true,onClose:Uh})})}var Uh=()=>{};import{jsx as _h}from"react/jsx-runtime";var as=typeof navigator<"u"&&navigator.product==="ReactNative";as&&_.ensureLoaded();as&&typeof me<"u"&&me&&K.startBootCapture();var ls=Rl({id:"network",name:"NET",description:"Network request logger",slot:"both",icon:({size:e})=>_h(Tl,{size:e}),component:ss,props:{enableSharedModalDimensions:false}}),Xh=kl(ls,e=>({enableSharedModalDimensions:e.enableSharedModalDimensions??false}));O();function Jh(){let e=typeof navigator<"u"&&navigator.product==="ReactNative";if(!e&&(typeof window>"u"||typeof document>"u"))return()=>{};_.ensureLoaded();let t=e?()=>{}:Gn(),r=K.subscribeToEvents(()=>{}),o=false;return()=>{o||(o=true,t(),r())}}O();import{useState as Uo,useEffect as Gh,useCallback as Kr,useMemo as et,useRef as Kh}from"react";import{useLimit as Yh,TIER_LIMITS as Zh}from"@buoy-gg/shared-ui/web";var hg=Zh["network.requests"].free;function Qh(e={}){let{isPro:t=false}=e,r=Yh("network.requests"),o=t?1/0:r,[n,i]=Uo([]),[s,l]=Uo({}),[a,d]=Uo(true),c=Kh(null);Gh(()=>(a&&(c.current=K.subscribeToEvents(i)),()=>{c.current&&(c.current(),c.current=null)}),[a]);let x=Kr(()=>{K.clearEvents(),i([])},[]),T=Kr(()=>{d(false)},[]),S=Kr(()=>{d(true)},[]),q=et(()=>s.searchText?s.searchText.toLowerCase():null,[s.searchText]),m=et(()=>s.method&&s.method.length>0?new Set(s.method):null,[s.method]),k=et(()=>s.contentType&&s.contentType.length>0?new Set(s.contentType):null,[s.contentType]),E=et(()=>{let h=[...n];if(m&&(h=h.filter(u=>m.has(u.method))),s.status&&s.status!=="all")switch(s.status){case"success":h=h.filter(u=>u.status&&u.status>=200&&u.status<300);break;case"error":h=h.filter(u=>u.error||u.status&&u.status>=400);break;case"pending":h=h.filter(u=>!u.status&&!u.error);break}return q&&(h=h.filter(u=>u.url.toLowerCase().includes(q)||u.method.toLowerCase().includes(q)||u.path?.toLowerCase().includes(q)||u.host?.toLowerCase().includes(q)||u.error&&u.error.toLowerCase().includes(q)||u.operationName&&u.operationName.toLowerCase().includes(q)||ui(u.graphqlVariables,q))),s.host&&(h=h.filter(u=>u.host===s.host)),k&&(h=h.filter(u=>{let y=u.responseHeaders||u.requestHeaders,D=y?.["content-type"]||y?.["Content-Type"]||"";for(let re of k)switch(re){case"JSON":if(D.includes("json"))return true;break;case"XML":if(D.includes("xml"))return true;break;case"HTML":if(D.includes("html"))return true;break;case"TEXT":if(D.includes("text"))return true;break;case"IMAGE":if(D.includes("image"))return true;break;case"VIDEO":if(D.includes("video"))return true;break;case"AUDIO":if(D.includes("audio"))return true;break;case"FORM":if(D.includes("form"))return true;break;case"OTHER":if(!D||!D.includes("json")&&!D.includes("xml")&&!D.includes("html")&&!D.includes("text")&&!D.includes("image")&&!D.includes("video")&&!D.includes("audio")&&!D.includes("form"))return true;break}return false})),h},[n,s,q,m,k]),g=et(()=>{let h=new Set;return n.slice(o).forEach(u=>{h.add(u.id)}),h},[n,o]),I=et(()=>E.filter(h=>g.has(h.id)),[E,g]),z=I.length>0,P=I.length,C=Kr(h=>g.has(h),[g]),H=et(()=>{let h=0,u=0,y=0,D=0,re=0,ee=0,Z=0;for(let A of n)A.status&&A.status>=200&&A.status<300?h++:A.error||A.status&&A.status>=400?u++:!A.status&&!A.error&&y++,D+=A.requestSize||0,re+=A.responseSize||0,A.duration&&(ee+=A.duration,Z++);let J=Z>0?ee/Z:0;return{totalRequests:n.length,successfulRequests:h,failedRequests:u,pendingRequests:y,totalDataSent:D,totalDataReceived:re,averageDuration:Math.round(J)}},[n]),v=et(()=>{let h=new Set;for(let u of n)u.host&&h.add(u.host);return Array.from(h)},[n]),p=et(()=>{let h=new Set;for(let u of n)h.add(u.method);return Array.from(h)},[n]);return{events:E,allEvents:n,stats:H,filter:s,setFilter:l,clearEvents:x,isCapturing:a,pauseCapturing:T,resumeCapturing:S,hosts:v,methods:p,hasLockedEvents:z,lockedEventCount:P,isEventLocked:C,requestLimit:o,getSubscriberCounts:()=>K.getSubscriberCounts()}}import{useIgnoredPatterns as ep,ignoredPatternsStore as tp,urlMatchesIgnoredPattern as rp,isUrlIgnored as op}from"@buoy-gg/shared-ui/web";O();import{approxJsonSize as _o,isOverWireBudget as np}from"@buoy-gg/shared-ui/web";import{expandKeyedArrays as ip,patchFromPath as sp,refusalText as ap,shapeKind as ds,suggestedPatch as lp,typedEditViolations as dp}from"@buoy-gg/shared-ui/web";var Xo=16*1024,Yr=1.25*1024*1024;function Jo(e,t){return e===void 0?false:(t??0)>Xo?true:np(e,Xo)}var us=new WeakMap,cs=new WeakMap;function Go(e){let t=us.get(e);if(t)return t;let r;try{r=cp(e)}catch{r=up(e)}return us.set(e,r),r}function up(e){let t={...e,requestData:void 0,responseData:void 0,graphqlVariables:void 0,requestBodyOmitted:e.requestData!==void 0?true:void 0,responseBodyOmitted:e.responseData!==void 0?true:void 0},r=1024;try{r=_o(t,Yr).bytes}catch{}return{event:t,bytes:r}}function cp(e){let t=Jo(e.requestData,e.requestSize),r=Jo(e.responseData,e.responseSize),o=hs(e.graphqlVariables),n=ps(e.requestHeaders),i=ps(e.responseHeaders),s=t||r||o!==e.graphqlVariables||n!==e.requestHeaders||i!==e.responseHeaders,l=e;return s&&(l={...e},t&&(l.requestData=void 0,l.requestBodyOmitted=true),r&&(l.responseData=void 0,l.responseBodyOmitted=true),o!==e.graphqlVariables&&(l.graphqlVariables=o),n!==e.requestHeaders&&(l.requestHeaders=n,l.headersOmitted=true),i!==e.responseHeaders&&(l.responseHeaders=i,l.headersOmitted=true)),{event:l,bytes:_o(l,Yr).bytes}}function hp(e){let t=cs.get(e);if(t)return t;let{event:r}=Go(e),o={...r};o.requestData!==void 0&&(o.requestData=void 0,o.requestBodyOmitted=true),o.responseData!==void 0&&(o.responseData=void 0,o.responseBodyOmitted=true),o.graphqlVariables!==void 0&&(o.graphqlVariables=hs(o.graphqlVariables,true));let n={event:o,bytes:_o(o,Yr).bytes};return cs.set(e,n),n}function pp(e){let t=new Array(e.length),r=0;for(let o=0;o<e.length;o++){let n=Go(e[o]);if(r+n.bytes<=Yr)t[o]=n.event,r+=n.bytes;else{let i=hp(e[o]);t[o]=i.event,r+=i.bytes}}return t}function hs(e,t=false){if(!e||!t&&!Jo(e,void 0))return e;let r={};for(let[o,n]of Object.entries(e))(typeof n=="string"&&n.length<=64||typeof n=="number"||typeof n=="boolean")&&(r[o]=n);return Object.keys(r).length>0?r:void 0}var Ko=64;function ps(e){if(!e)return e;let t=false,r={};for(let[o,n]of Object.entries(e))typeof n=="string"&&(n.length<=Ko?r[o]=n:(r[o]=`${n.slice(0,Ko)}\u2026 [${n.length-Ko} more]`,t=true));return t?r:e}var fp=e=>{let t=false,r=e.rules.map(o=>!o.body||o.body.length<=Xo?o:(t=true,{...o,body:void 0,bodyOmitted:true}));return t?{...e,rules:r}:e},Zr=e=>K.getEventById(e)??ae.getEventById(e),$t=e=>e&&typeof e=="object"?e.id:void 0,Qr=(e,t)=>!!(e&&typeof e=="object"&&e[t]),Yo=()=>Dn()?{}:{active:false,inactiveReason:sl},gp=["respond","fail","delay"];function mp(e,t){if(!e||typeof e!="object")return null;let r=e.rule??e;if(!r||typeof r!="object")return null;let o=r,n=typeof o.urlPattern=="string"&&o.urlPattern.trim()?o.urlPattern.trim():t?.urlPattern??"";if(!n)return null;let i=gp.includes(o.kind)?o.kind:t?.kind??"respond";return{id:typeof o.id=="string"?o.id:void 0,enabled:o.enabled!==false,name:typeof o.name=="string"?o.name:t?.name,urlPattern:n,methods:Array.isArray(o.methods)?o.methods.filter(s=>typeof s=="string").map(s=>s.toUpperCase()):t?.methods,requireHeader:typeof o.requireHeader=="string"&&o.requireHeader.trim()?o.requireHeader.trim():void 0,kind:i,status:typeof o.status=="number"?o.status:t?.status,statusText:typeof o.statusText=="string"?o.statusText:t?.statusText,headers:o.headers&&typeof o.headers=="object"?o.headers:t?.headers,body:bp(o,t),failKind:o.failKind==="timeout"?"timeout":void 0,delayMs:typeof o.delayMs=="number"?o.delayMs:void 0,times:typeof o.times=="number"?o.times:null,alternate:o.alternate===true}}var cr=e=>!!e&&typeof e=="object"&&!Array.isArray(e);function fs(e,t,r="",o={shrunk:[],breaks:[]}){if(Array.isArray(e)&&Array.isArray(t))return t.length>0&&t.length<e.length&&o.shrunk.push({path:r||"(root)",have:e.length,sent:t.length}),t;if(!cr(e)||!cr(t))return t;let n={...e};for(let[i,s]of Object.entries(t)){let l=r?`${r}.${i}`:i;if(i in e){let a=ds(e[i]),d=ds(s);(a==="array"||a==="object")&&a!==d&&o.breaks.push({path:l,from:a,to:d}),n[i]=fs(e[i],s,l,o)}else n[i]=s}return n}function yp(e,t){if(e.body!=null||!cr(e.bodyPatch)||typeof t!="string")return[];try{return dp(JSON.parse(t),e.bodyPatch,{noun:"response body"})}catch{return[]}}function bp(e,t){if(typeof e.body=="string")return e.body;if(e.body!=null)return JSON.stringify(e.body,null,2);let r=t?.body??(typeof e.id=="string"?_.getState().rules.find(o=>o.id===e.id)?.body:void 0);if(cr(e.bodyPatch)&&typeof r=="string")try{return JSON.stringify(fs(JSON.parse(r),e.bodyPatch),null,2)}catch{return r}return r}function vp(e){if(!e||typeof e!="object")return null;let t=e.rule??e;if(!t||typeof t!="object")return null;let r=t.id;if(typeof r!="string")return null;let o=_.getState().rules.find(n=>n.id===r);return o?{...o}:null}function Sp(e){if(!e||typeof e!="object")return null;let t=e.rule??e;if(!t||typeof t!="object")return null;let r=t;if(r.bodyOmitted!==true||typeof r.id!="string")return null;let o=_.getState().rules.find(n=>n.id===r.id);return o?{body:o.body}:null}function xp(e){if(!e||typeof e!="object")return null;let t=e.fromRequestId;if(typeof t!="string"||!t)return null;let r=Zr(t);return r?Wo(r):null}var wp={dispose:()=>{_.setEnabled(false)},version:6,getSnapshot:()=>(K.ensureInterception(),{conditions:{version:1,runtimeId:bo,profile:yt(),available:mt()},events:pp(K.getEvents()),overrides:fp(_.getState()),saved:ae.getRecords().map(e=>({...e,event:Go(e.event).event}))}),subscribe:e=>{let t=K.subscribeToEvents(e),r=Zt(e),o=ae.subscribe(e),n=_.subscribe(e);return()=>{r(),t(),o(),n()}},actions:{getNetworkConditions:()=>({runtimeId:bo,profile:yt(),available:mt()}),setNetworkConditions:e=>{let t=e&&typeof e=="object"?e.profile:void 0;return{runtimeId:bo,profile:wr(t),available:mt()}},clearEvents:()=>{K.clearEvents()},getEventBody:e=>{let t=$t(e);if(!t)return null;let r=Zr(t);return r?{url:r.url??null,method:r.method??null,status:r.status??null,override:r.override??null,requestData:r.requestData??null,responseData:r.responseData??null,requestHeaders:r.requestHeaders??null,responseHeaders:r.responseHeaders??null}:null},setPinned:e=>{let t=$t(e);if(!t)return null;let r=Zr(t);if(!r)return null;let o=Qr(e,"pinned");return qr(ae.getState(),t).pinned===o?{ok:true}:ae.togglePin(r)},setSaved:e=>{let t=$t(e);if(!t)return null;let r=Zr(t);if(!r)return null;let o=Qr(e,"saved");return qr(ae.getState(),t).saved===o?{ok:true}:ae.toggleSave(r)},removeSavedRecord:e=>{let t=e&&typeof e=="object"?e.key:void 0;return t?(ae.remove(t),{ok:true}):null},clearSavedRequests:()=>(ae.clearSaved(),{ok:true}),clearPinnedRequests:()=>(ae.clearPinned(),{ok:true}),setOverridesEnabled:e=>(_.setEnabled(Qr(e,"enabled")),{ok:true,enabled:_.getState().enabled,...Yo()}),upsertOverrideRule:e=>{let t=xp(e)??Sp(e)??vp(e),r=e?.rule??e;if(r&&typeof r.bodyPath=="string"&&r.body==null){let i=t?.body??(typeof r.id=="string"?_.getState().rules.find(a=>a.id===r.id)?.body:void 0);if(typeof i!="string")return{ok:false,error:"bodyPath needs something to patch: send fromRequestId (the captured request whose real response it addresses) or the id of an existing rule."};if(r.bodyValue===void 0)return{ok:false,error:`Refused: sent \`bodyPath\` without \`bodyValue\`. Say what to set "${r.bodyPath}" to.`};let s;try{s=JSON.parse(i)}catch{return{ok:false,error:"The captured response body is not JSON, so it cannot be addressed by path. Send a whole `body` instead."}}let l=sp(s,r.bodyPath,r.bodyValue);if(!l.ok)return{ok:false,error:`Refused: ${l.error}`};r.bodyPatch=l.patch,delete r.bodyPath,delete r.bodyValue}if(r&&cr(r.bodyPatch)&&r.body==null){let i=t?.body??(typeof r.id=="string"?_.getState().rules.find(s=>s.id===r.id)?.body:void 0);if(typeof i!="string")return{ok:false,error:"bodyPatch needs something to patch: send fromRequestId (the captured request whose real response the patch is merged into) or the id of an existing rule."};if(r.force!==true){let s;try{let a=ip(JSON.parse(i),r.bodyPatch);s=a.error,a.notes.length&&(r.bodyPatch=a.patch)}catch{}if(s)return{ok:false,error:`Refused: ${s}`};let l=yp(r,i);if(l.length>0)return{ok:false,error:ap(l,"response body",lp(r.bodyPatch,l)),violations:l}}}let o=mp(e,t);if(!o){let i=e?.fromRequestId;return{ok:false,error:i?`No captured request \`${i}\` \u2014 it may have been cleared. Send a urlPattern instead.`:"A rule needs a non-empty urlPattern."}}let n=_.upsertRule(o);return n?(n.enabled&&_.setEnabled(true),{ok:true,rule:{id:n.id,urlPattern:n.urlPattern,enabled:n.enabled,kind:n.kind,status:n.status,times:n.times,bodySize:n.body?n.body.length:0},...n.times===void 0||n.times===null?{lingers:`This rule has no \`times\` budget, so it overrides EVERY matching request until it is disabled or deleted (id \`${n.id}\`). If you meant only the next one, set times:1.`}:{},...Yo()}):{ok:false,error:"Override rule limit reached."}},setOverrideRuleEnabled:e=>{let t=$t(e);return t?(_.setRuleEnabled(t,Qr(e,"enabled")),{ok:true,...Yo()}):{ok:false,error:"Missing rule id."}},deleteOverrideRule:e=>{let t=$t(e);return t?(_.removeRule(t),{ok:true}):{ok:false,error:"Missing rule id."}},clearOverrideRules:()=>(_.clearRules(),{ok:true}),listOverrideRules:async()=>(await _.ensureLoaded(),_.getState()),getOverrideRuleBody:e=>{let t=$t(e);if(!t)return null;let r=_.getState().rules.find(o=>o.id===t);return r?{body:r.body??null}:null},getCaptureStatus:()=>{let e=K.getSubscriberCounts().total,t=null,r=null;try{t=$n(),r=ft()}catch{}let o=null;try{o=wl()}catch{}return{capturing:e>0,subscribers:e,interceptorInstalled:t,interceptorLive:o,listenerCount:r,eventCount:K.getEvents().length}},debugOverrides:e=>{let t=(e&&typeof e=="object"?e.url:void 0)??"https://example.com/";return{interceptorInstalled:$n(),listenerCount:ft(),engine:al(t,"GET"),store:{enabled:_.getState().enabled,ruleCount:_.getState().rules.length,rulesVisibleToEngine:_.getRules().length}}}}};O();var Cp=new Set(["content-length","host","connection","accept-encoding"]);function Zo(e){return`'${e.replace(/'/g,"'\\''")}'`}function Tp(e){if(e==null)return null;if(typeof e=="string")return e;try{return JSON.stringify(e)}catch{return null}}function kp(e){let t=(e.method||"GET").toUpperCase(),r=Tp(e.requestData),o=[];t!=="GET"&&!(t==="POST"&&r!==null)&&o.push(`-X ${t}`);for(let[i,s]of Object.entries(e.requestHeaders||{}))Cp.has(i.toLowerCase())||o.push(`-H ${Zo(`${i}: ${s}`)}`);r!==null&&o.push(`--data-raw ${Zo(r)}`);let n=`curl ${Zo(e.url)}`;return o.length===0?n:`${n} \\
144
144
  ${o.join(` \\
145
- `)}`}export{tu as DEFAULT_SETTLE_MS,wn as FREE_TIER_OVERRIDE_LIMIT,gi as FREE_TIER_SAVED_LIMIT,rt as MAX_OVERRIDE_RULES,Ir as MAX_PINNED,it as MAX_SAVED,Gt as NETWORK_CONDITIONS,sd as NetworkBodyResolverProvider,Ei as NetworkDetailPinActions,oi as NetworkEventDetailView,zt as NetworkEventItemCompact,ki as NetworkHeaderBadgesView,Ki as NetworkModal,gu as NetworkSavedButton,Di as NetworkSavedScreen,Rh as NetworkToolView,_t as OVERRIDE_STATUS_MAX,Ut as OVERRIDE_STATUS_MIN,bo as TickProvider,Jt as addNetworkListener,Ph as createNetworkTool,Ao as draftFromEvent,Lr as flagsForEventId,Ze as formatBytes,Er as formatDuration,Zn as formatHttpStatus,sp as generateCurl,mt as getNetworkCondition,Ah as ignoredPatternsStore,Mh as isUrlIgnored,K as networkEventStore,yr as networkListener,ae as networkSavedStore,Ve as networkSelectionStore,op as networkSyncAdapter,Zi as networkToolPreset,_ as overrideRulesStore,ol as removeAllNetworkListeners,Sr as setNetworkCondition,Po as splitPinned,Ih as startNetworkCapture,Kt as subscribeNetworkConditions,Hh as urlMatchesIgnoredPattern,zh as useIgnoredPatterns,Ji as useLiveNetworkEvent,Ci as useNetworkBadgeCounts,sr as useNetworkEventList,Dh as useNetworkEvents,Ot as useNetworkSaved,vo as useTickEveryMinute};
145
+ `)}`}export{Su as DEFAULT_SETTLE_MS,Bn as FREE_TIER_OVERRIDE_LIMIT,Ri as FREE_TIER_SAVED_LIMIT,rt as MAX_OVERRIDE_RULES,Br as MAX_PINNED,it as MAX_SAVED,Yt as NETWORK_CONDITIONS,Td as NetworkBodyResolverProvider,Hi as NetworkDetailPinActions,pi as NetworkEventDetailView,Ht as NetworkEventItemCompact,Ai as NetworkHeaderBadgesView,ss as NetworkModal,Du as NetworkSavedButton,Vi as NetworkSavedScreen,Vh as NetworkToolView,Jt as OVERRIDE_STATUS_MAX,Xt as OVERRIDE_STATUS_MIN,To as TickProvider,Kt as addNetworkListener,Xh as createNetworkTool,Wo as draftFromEvent,qr as flagsForEventId,Ze as formatBytes,Pr as formatDuration,li as formatHttpStatus,kp as generateCurl,yt as getNetworkCondition,tp as ignoredPatternsStore,op as isUrlIgnored,K as networkEventStore,vr as networkListener,ae as networkSavedStore,Ve as networkSelectionStore,wp as networkSyncAdapter,ls as networkToolPreset,_ as overrideRulesStore,xl as removeAllNetworkListeners,wr as setNetworkCondition,zo as splitPinned,Jh as startNetworkCapture,Zt as subscribeNetworkConditions,rp as urlMatchesIgnoredPattern,ep as useIgnoredPatterns,ns as useLiveNetworkEvent,Oi as useNetworkBadgeCounts,lr as useNetworkEventList,Qh as useNetworkEvents,zt as useNetworkSaved,ko as useTickEveryMinute};