@tonightpass/react
Version:
@tonightpass react sdk.
2 lines • 1.27 kB
JavaScript
import d from'swr';import {Client,DEFAULT_API_URL,WebSocketClient}from'tonightpass';import l from'swr/infinite';import R from'swr/subscription';var u=new Client({baseURL:DEFAULT_API_URL});function w(t,a,s){let{requestOptions:e,...i}=s||{};return d(t?[t,a]:null,async([p,n])=>await u.get(p,n,e),i)}function D(t,a){let{requestOptions:s,...e}=a||{};return l(t,async([P,p])=>await u.get(P,p,s),e)}function J(t,a,s){let{data:e,error:i}=R(t?[t,a]:null,([P,p],{next:n})=>{let c=new WebSocketClient({baseURL:DEFAULT_API_URL.replace(/^http/,"ws"),maxReconnectAttempts:s?.maxReconnectAttempts??3,reconnectInterval:s?.reconnectInterval??1e3}),r=false,h=async()=>{try{await c.connect(P,p??{}),r=!0;}catch(o){n(o instanceof Error?o:new Error("Connection failed"));}};c.on("*",o=>{n(null,{type:"message",data:o});});let f=setInterval(()=>{let o=c.connected;o&&!r?(r=true,n(null,{type:"connected"})):!o&&r&&(r=false,n(null,{type:"disconnected"}));},100);return h(),()=>{clearInterval(f),r&&c.disconnect();}});return {data:e,error:i,isConnected:e?.type==="connected",isDisconnected:e?.type==="disconnected",message:e?.type==="message"?e.data:null}}export{u as client,w as useAPI,D as useAPIInfinite,J as useWebSocket};//# sourceMappingURL=index.mjs.map
//# sourceMappingURL=index.mjs.map