@privy-io/cross-app-connect
Version:
Privy cross app wallet connectors for wagmi and RainbowKit
3 lines (2 loc) • 1.62 kB
JavaScript
;var e=require("@privy-io/popup"),r=require("./constants.js"),t=require("./crypto.js");require("@noble/curves/secp256k1"),require("@scure/base"),require("buffer"),require("fflate"),require("@privy-io/encoding");class s extends Error{constructor(e,r){super(e),r?.mwp?.action&&(this.action=r.mwp.action),r?.code&&(this.code=r.code)}}exports.PopupRequestError=s,exports.sendRequestToPopup=async function({request:a,apiUrl:i,publicKey:o,sharedSecret:c,providerAppId:n,timeout:u=r.TWO_MINUTES_IN_MS}){let d=e.trigger();if(!d)throw Error("Failed to initialize request");let p=new URL(i),{encryptedRequest:l,iv:m}=await t.encryptRequest(a,c);return p.searchParams.set("requester_public_key",o),p.searchParams.set("encrypted_request",l),p.searchParams.set("requester_origin",window.location.origin),p.searchParams.set("iv",m),p.searchParams.set("provider_app_id",n),p.searchParams.set("signout_enabled","true"),p.searchParams.set("v","1"),d.location=p.href,new Promise(((e,r)=>{let a=setTimeout((()=>{n(),r(new s("Request timeout"))}),u),i=setInterval((()=>{d.closed&&(n(),r(new s("User rejected request")))}),300),o=async a=>{a.data&&("PRIVY_CROSS_APP_ACTION_RESPONSE"===a.data.type&&a.data.encryptedResult&&(n(),e(await t.decryptResult({encryptedResult:a.data.encryptedResult,iv:a.data.iv,sharedSecret:c}))),"PRIVY_CROSS_APP_ACTION_ERROR"===a.data.type&&a.data.error&&(n(),r(new s(a.data.error,{mwp:a.data.mwp,code:a.data?.errorCode}))))};window.addEventListener("message",o);let n=()=>{d.close(),clearInterval(i),clearTimeout(a),window.removeEventListener("message",o)}}))};
//# sourceMappingURL=request.js.map