1import{$ as e,nt as t}from"./components-Ci5L6AId.js";import{t as n}from"./logger-B1QT87ne.js";import{t as r}from"./compiler-runtime-zYppZB_r.js";var i=t(e(),1),a=r(),o=`/sse`,s=e=>`/sse/${e}/topics`;function c(e){let t=new Map,r=new Set,i=new Set,a=null,o=`CLOSED`,s=null,c=null,l=!1,u=e=>{if(o!==e){o=e;for(let e of r)e()}},d=()=>[...t.keys()].sort(),f=async()=>{if(!l){l=!0;try{for(;;){await Promise.resolve();let t=s;if(!t)break;let r=d(),i=`${t} ${r.join(` `)}`;if(i===c)break;if(r.length===0&&c===null){c=i;break}let a=await e.replaceTopics(t,r);a.status>=400&&a.status!==404&&n.error(`Replacing SSE topics failed (${a.status})`),c=i}}catch(e){n.error(`Replacing SSE topics failed`,e)}finally{l=!1}}},p=e=>{let t;try{t=JSON.parse(e)}catch{return}if(t.kind===`hello`){s=t.connectionId,c=null,u(`CONNECTED`),f();return}for(let e of i)e(t)};return{connect:()=>{a||=(u(`CONNECTING`),e.openEventSource({onMessage:p,onError:()=>{s=null,c=null,a&&u(`CONNECTING`)}}))},disconnect:()=>{a&&(a.close(),a=null,s=null,c=null,u(`CLOSED`))},getReadyState:()=>o,subscribeToReadyState:e=>(r.add(e),()=>r.delete(e)),addEventListener:e=>(i.add(e),()=>i.delete(e)),subscribeTopic:e=>{let n=t.get(e)??0;t.set(e,n+1),n===0&&f();let r=!1;return()=>{if(r)return;r=!0;let n=(t.get(e)??0)-1;if(n>0){t.set(e,n);return}t.delete(e),f()}}}}var l=c({openEventSource:e=>{let t=new EventSource(o);return t.addEventListener(`message`,t=>e.onMessage(t.data)),t.addEventListener(`error`,e.onError),{close:()=>t.close()}},replaceTopics:async(e,t)=>({status:(await fetch(s(e),{method:`PUT`,headers:{"Content-Type":`application/json`},body:JSON.stringify({topics:t})})).status})}),u=2e4,d=5e3,f=12e4,p=3e3,m=2e3;function h(e){let t=(0,a.c)(3),n,r;t[0]===e?(n=t[1],r=t[2]):(n=()=>{if(e)return l.connect(),g},r=[e],t[0]=e,t[1]=n,t[2]=r),i.useEffect(n,r)}function g(){return l.disconnect()}function _(){return i.useSyncExternalStore(l.subscribeToReadyState,l.getReadyState,O)}function v(){return i.useSyncExternalStore(l.subscribeToReadyState,k,A)}function y(e){let t=(0,a.c)(3),n=i.useEffectEvent(e),r;t[0]===n?r=t[1]:(r=()=>l.addEventListener(n),t[0]=n,t[1]=r);let o;t[2]===Symbol.for(`react.memo_cache_sentinel`)?(o=[],t[2]=o):o=t[2],i.useEffect(r,o)}function b(e,t){let n=(0,a.c)(4),r=t===void 0||t,o,s;n[0]!==r||n[1]!==e?(o=()=>{if(r)return l.subscribeTopic(e)},s=[e,r],n[0]=r,n[1]=e,n[2]=o,n[3]=s):(o=n[2],s=n[3]),i.useEffect(o,s)}function x({enabled:e,onCatchUp:t,heldSince:n}){let r=v(),a=i.useRef(t);a.current=t;let o=i.useRef(null),s=i.useCallback(()=>{o.current===null&&(o.current=setTimeout(()=>{o.current=null,a.current()},Math.random()*p))},[]);return i.useEffect(()=>()=>{o.current!==null&&clearTimeout(o.current)},[]),S(e,r,s,n),i.useEffect(()=>{if(e)return E(s)},[e,s]),i.useEffect(()=>{if(!e||r)return;let t=setInterval(s,f);return()=>clearInterval(t)},[e,r,s]),s}function S(e,t,n,r){let a=i.useRef(!1),o=i.useRef(null);i.useEffect(()=>{if(!e){o.current=null;return}if(o.current??=Date.now(),!t)return;let i=!a.current;a.current=!0,!(i&&Date.now()-(r??o.current)<m)&&n()},[e,t,n,r])}var C=new Set,w=null,T=0;function E(e){return C.add(e),C.size===1&&(T=Date.now(),w=setInterval(D,d),document.addEventListener(`visibilitychange`,D),window.addEventListener(`pageshow`,D)),()=>{C.delete(e),!(C.size>0)&&(w!==null&&clearInterval(w),w=null,document.removeEventListener(`visibilitychange`,D),window.removeEventListener(`pageshow`,D))}}function D(){if(document.visibilityState!==`visible`)return;let e=Date.now()-T;if(T=Date.now(),!(e<u))for(let e of C)e()}var O=()=>`CLOSED`,k=()=>l.getReadyState()===`CONNECTED`,A=()=>!1;export{b as a,_ as i,v as n,y as o,h as r,l as s,x as t};
Line numbers count LF bytes from the start of the resource, as the search results do. Vendor segments are library code the classifier recognised; they are stored but not indexed. Bytes are shown as Latin1 characters, one per byte.