@randombits/use-siwe
Version:
React hook and API endpoints that provide Sign In With Ethereum support
2 lines • 3.24 kB
JavaScript
var N=Object.create;var m=Object.defineProperty;var R=Object.getOwnPropertyDescriptor;var W=Object.getOwnPropertyNames;var $=Object.getPrototypeOf,D=Object.prototype.hasOwnProperty;var J=(e,t)=>{for(var s in t)m(e,s,{get:t[s],enumerable:!0})},q=(e,t,s,r)=>{if(t&&typeof t=="object"||typeof t=="function")for(let o of W(t))!D.call(e,o)&&o!==s&&m(e,o,{get:()=>t[o],enumerable:!(r=R(t,o))||r.enumerable});return e};var z=(e,t,s)=>(s=e!=null?N($(e)):{},q(t||!e||!e.__esModule?m(s,"default",{value:e,enumerable:!0}):s,e)),H=e=>q(m({},"__esModule",{value:!0}),e);var Y={};J(Y,{SiweProvider:()=>Q,createMessage:()=>U,getMessageBody:()=>h,getSession:()=>C,signOut:()=>v,useOptions:()=>I,useSession:()=>c,useSignIn:()=>j,useSignOut:()=>K,verify:()=>P});module.exports=H(Y);var y=require("@tanstack/react-query"),u=z(require("react"),1),n=(0,u.createContext)(void 0),i=(0,u.createContext)({}),L=new y.QueryClient({defaultOptions:{queries:{staleTime:30*1e3}}}),Q=({children:e,options:t={}})=>u.default.createElement(i.Provider,{value:t},u.default.createElement(y.QueryClientProvider,{client:L,context:n},e));var b=require("@tanstack/react-query"),k=require("react");var A=require("react");var X={baseUrl:"/api/auth"},p=(e={})=>({...X,...e}),I=()=>{let e=(0,A.useContext)(i);return p(e)};var C=async e=>{let{baseUrl:t}=p(e),s=await fetch(t);if(!s.ok)throw new Error(s.statusText);return s.json()},c=()=>{let e=(0,k.useContext)(i),{data:t,...s}=(0,b.useQuery)({queryKey:["session"],queryFn:()=>C(e),context:n});return{...s,...t}};var f=require("@tanstack/react-query"),T=require("react"),E=require("siwe"),a=require("wagmi");var U=e=>new E.SiweMessage({...e,domain:window.location.host,uri:window.location.origin,version:"1"}),h=({message:e})=>e.prepareMessage(),P=async(e,t)=>{let{baseUrl:s}=p(t);return(await fetch(`${s}/signin`,{headers:{"Content-Type":"application/json"},method:"POST",body:JSON.stringify(e)})).ok},j=({onSuccess:e,onError:t}={})=>{let{address:s}=(0,a.useAccount)(),{chain:r}=(0,a.useNetwork)(),{nonce:o}=c(),{signMessageAsync:d}=(0,a.useSignMessage)(),x=(0,f.useQueryClient)({context:n}),w=(0,T.useContext)(i),{mutate:O,mutateAsync:l,...V}=(0,f.useMutation)(async()=>{let M=U({address:s,chainId:r.id,nonce:o}),F=h({message:M}),G=await d({message:F});if(!await P({message:M,signature:G},w))throw new Error("Verification Failed")},{onSuccess:()=>{x.invalidateQueries({queryKey:["session"]}),e&&e()},onError:t,context:n});return{...V,signIn:O,SignInAsync:l}};var g=require("@tanstack/react-query"),B=require("react"),S=require("wagmi");var v=async e=>{let{baseUrl:t}=p(e),s=await fetch(`${t}/signout`,{method:"POST"});if(!s.ok)throw new Error(s.statusText)},K=({onSuccess:e,onError:t}={})=>{let{authenticated:s}=c(),{isConnected:r}=(0,S.useAccount)(),{disconnectAsync:o}=(0,S.useDisconnect)(),d=(0,g.useQueryClient)({context:n}),x=(0,B.useContext)(i),{mutate:w,mutateAsync:O,...l}=(0,g.useMutation)(async()=>{s&&await v(x),r&&await o()},{onSuccess:()=>{d.invalidateQueries({queryKey:["session"]}),e&&e()},onError:t,context:n});return{...l,signOut:w,SignOutAsync:O}};0&&(module.exports={SiweProvider,createMessage,getMessageBody,getSession,signOut,useOptions,useSession,useSignIn,useSignOut,verify});
//# sourceMappingURL=index.cjs.map