@luffalab/luffa-endless-sdk
Version:
luffa endless ts sdk
2 lines • 7.62 kB
JavaScript
import{e as g,f as p,h as c}from"./chunk-6E5NTVNG.mjs";import{a as n}from"./chunk-V57JCP3U.mjs";import{Endless as w,EndlessConfig as S}from"@endlesslab/endless-ts-sdk";var A=(a=>(a.CONNECT="connect",a.GETACCOUNT="getAccount",a.DISCONNECT="disconnect",a.NETWORK_CHANGE="luffa_switchChain",a.SIGN_MESSAGE="signMessage",a.SEND_TRANSACTION="sendTransaction",a.SIGN_AND_SUBMIT_TRANSACTION="signAndSubmitTransaction",a.SIGN_BUILD_TRANSACTION="signBuildTransaction",a.PACKAGETRANSACTIONV2="packageTransactionV2",a.ACCOUNT_CHANGE="accountChange",a))(A||{}),r=class r{constructor(e){n(this,"message",null);n(this,"_metadata",{});n(this,"_initData",{});n(this,"_endless",null);n(this,"_endlessConfig",null);n(this,"accountAddress",null);n(this,"request",(e,s)=>{this.message?.sendMessage({uuid:new Date().getTime().toString(),methodName:e.method,metadata:this._metadata,data:e.data,initData:e?.initData},s)});n(this,"getAccount",()=>new Promise(e=>{this.message?.sendMessage({uuid:new Date().getTime().toString(),methodName:"getAccount",metadata:this._metadata,data:{}},s=>{if(s?.account){this.accountAddress=s.account;let t={status:"Approved",args:{...s}};e(t)}else{let t={status:"Rejected",message:s?.message||"Wallet is not connected"};e(t)}})}));n(this,"connect",e=>new Promise(s=>{this.message?.sendMessage({uuid:new Date().getTime().toString(),methodName:"connect",metadata:this._metadata,data:{}},t=>{if(t?.account){this.accountAddress=t.account;let i={status:"Approved",args:{...t}};s(i)}else{let i={status:"Rejected",message:t?.message};s(i)}e&&e({...t||{}})})}));n(this,"disconnect",e=>new Promise((s,t)=>{this.message?.sendMessage({uuid:new Date().getTime().toString(),methodName:"disconnect",metadata:this._metadata,data:{}},i=>{this.accountAddress=null,e&&e(i),s()})}));n(this,"signMessage",(e,s)=>new Promise(async t=>{this.accountAddress||await this.connect(),this.message?.sendMessage({uuid:new Date().getTime().toString(),methodName:"signMessage",metadata:this._metadata,data:e},i=>{if(i?.signature){let o={status:"Approved",args:i};t(o)}else{let o={status:"Rejected",message:i?.message};t(o)}s&&s(i)})}));n(this,"on",(e,s)=>{this.message?.addListener&&this.message?.addListener(e,s)});n(this,"off",(e,s)=>{this.message?.removeListener&&this.message?.removeListener(e,s)});n(this,"signAndSubmitTransaction",e=>new Promise(async s=>{if(this.accountAddress||await this.connect(),!this.accountAddress){let o={status:"Rejected",message:"Wallet not linked"};s(o);return}let t,i="signAndSubmitTransaction";if(!this._endless){let o={status:"Rejected",message:"Wallet not linked"};s(o);return}t=await this._endless.transaction.build.simple({sender:this.accountAddress,data:e.payload,options:{...e.options||{}}}),t=t.bcsToHex().toString(),this.message?.sendMessage({uuid:new Date().getTime().toString(),methodName:i,metadata:this._metadata,data:{serializedTransaction:{data:t,sender:this.accountAddress}}},o=>{if(o?.hash){let l={status:"Approved",args:{hash:o.hash}};s(l)}else{let l={status:"Rejected",message:o?.message};s(l)}})}));n(this,"signTransaction",(e,s="simple")=>new Promise(async t=>{if(!this.accountAddress||!this._endless){let i={status:"Rejected",message:"Wallet not linked"};t(i);return}this.message?.sendMessage({uuid:new Date().getTime().toString(),methodName:"signBuildTransaction",metadata:this._metadata,data:{transactionData:e,sender:this.accountAddress,type:s}},i=>{if(i?.signature){let o={status:"Approved",args:{data:i.signature}};t(o)}else{let o={status:"Rejected",message:i?.message};t(o)}})}));n(this,"onAccountChange",e=>{this.on("accountChange",e)});n(this,"onNetworkChange",e=>{this.on("networkChange",e)});if(r._instance)return r._instance;this.message=new m,this.initWalletEvent(),this.initConfig(e),r._instance=this}initConfig(e){this._initData={...e||{},callbackWalletName:"endlessWallet"},this._endlessConfig=new S({network:e.network,miniprogram:e.miniprogram}),this._endless=new w(this._endlessConfig),this.getMetadata()}initWalletEvent(){this.on("networkChange",e=>{this.initConfig({network:e.name})})}async changeNetwork(e){return new Promise(s=>{this.message?.sendMessage({uuid:new Date().getTime().toString(),methodName:"luffa_switchChain",metadata:this._metadata,data:{targetNet:c[e.network]??e.network}},t=>{t?.network&&(this._initData.network=t.network);let i={...t};s(i)})})}getMetadata(){if(!window)return;let s=(document.querySelector('link[rel="icon"]')||document.querySelector('link[rel="shortcut icon"]'))?.getAttribute("href")||"";s&&!s.startsWith("http")&&(s=new URL(s,window.location.origin).href),this.setMetaData({title:window.document.title,url:window.location.href,origin:window.location.origin,icon:s})}setMetaData(e){Object.assign(this._metadata,e)}};n(r,"version","1.1.9"),n(r,"_instance"),n(r,"getIninData",()=>r._instance?r._instance._initData:{}),n(r,"getAccountAddress",()=>r._instance?r._instance.accountAddress:null),n(r,"setAccountAddress",e=>{r._instance&&(r._instance.accountAddress=e)});var d=r;var u=class u{constructor(){n(this,"callbacks",{});n(this,"listeners",{});n(this,"receive",e=>{let s=e.data.methodName;switch(this.callbacks[e.data.uuid+s]&&(this.callbacks[e.data.uuid+s](e.data.data),delete this.callbacks[e.data.uuid+s]),s){case"luffa_switchChain":{let t=c[e.data?.data?.network]??e.data?.data?.network;this.emit("networkChange",{name:t,chainId:e.data?.data?.blockChainId});break}case"connect":case"accountChange":{let t={...e.data.data};e?.data?.data?.account?d.setAccountAddress(e.data.data.account):d.setAccountAddress(null),this.emit(s,t);break}case"disconnect":{d.setAccountAddress(null),this.emit(s,e.data.data);break}default:this.emit(s,e.data.data);break}});n(this,"addListener",(e,s)=>{this.listeners[e]||(this.listeners[e]=[]),this.listeners[e].push(s)});n(this,"removeListener",(e,s)=>{if(s){let t=this.listeners[e]?.indexOf(s)??-1;t>-1&&this.listeners?.[e]?.splice(t,1)}else this.listeners[e]=[]});n(this,"emit",(e,s)=>{this.listeners?.[e]?.forEach(t=>t(s))});n(this,"sendMessage",(e,s)=>{try{if(g()){this.sendLuffaMessage(e,s);return}else this.sendMiniProgramMessage(e,s)}catch(t){s&&s({error:t})}});if(u._instance)return u._instance;u._instance=this,g()&&(window.endlessWallet={sendResponse:this.sendResponse.bind(this)})}sendLuffaMessage(e,s){let t=e?.initData||d.getIninData();e.initData={...t||{},network:c[t.network]??t.network},e.from=d.getAccountAddress(),s&&(this.callbacks[e.uuid+e.methodName]=s),window?._endlessWallet?window._endlessWallet?.sendMessage(JSON.stringify(e)):window?.webkit&&window?.webkit?.messageHandlers?._endlessWallet&&window.webkit.messageHandlers._endlessWallet?.postMessage(e)}sendResponse(e){let s=JSON.parse(e);this.receive({data:s})}sendMiniProgramMessage(e,s){let t="invokeNativePlugin",i=d.getAccountAddress(),o=e?.initData||d.getIninData(),T={api_name:"luffaWebRequest",data:{func:e.methodName,chainType:"endless",...e,initData:{...o,network:c[o.network]??o.network},from:i}},E=a=>{s&&s({status:"success",...a.data||{}})},f=a=>{s&&s({status:"error",...a.data||{}})};switch(e.methodName){case"connect":case"getAccount":E=a=>{d.setAccountAddress(a.data.account),s&&s({account:a?.data?.address||"",...a.data||{}})},f=()=>{s&&s({account:""})};break;case"signMessage":case"signBuildTransaction":case"signAndSubmitTransaction":case"packageTransactionV2":E=a=>{s&&s({status:"success",...a.data||{}})},f=a=>{s&&s({status:"error",...a.data||{}})};break;default:break}p()&&window.WeixinJSBridge?.invoke(t,T,a=>{a.status===void 0?s&&s({...a}):a.status==="success"?(E(a),this.receive({data:a})):f(a)})}};n(u,"_instance");var m=u;export{m as a,A as b,d as c};
//# sourceMappingURL=chunk-S33PAHUI.mjs.map