endless-luffa-sdk
Version:
luffa endless ts sdk
2 lines • 12.6 kB
JavaScript
;Object.defineProperty(exports, "__esModule", {value: true}); function _nullishCoalesce(lhs, rhsFn) { if (lhs != null) { return lhs; } else { return rhsFn(); } } function _optionalChain(ops) { let lastAccessLHS = undefined; let value = ops[0]; let i = 1; while (i < ops.length) { const op = ops[i]; const fn = ops[i + 1]; i += 2; if ((op === 'optionalAccess' || op === 'optionalCall') && value == null) { return undefined; } if (op === 'access' || op === 'optionalAccess') { lastAccessLHS = value; value = fn(value); } else if (op === 'call' || op === 'optionalCall') { value = fn((...args) => value.call(lastAccessLHS, ...args)); lastAccessLHS = undefined; } } return value; }var C=Object.defineProperty;var M=(u,e,s)=>e in u?C(u,e,{enumerable:!0,configurable:!0,writable:!0,value:s}):u[e]=s;var n=(u,e,s)=>M(u,typeof e!="symbol"?e+"":e,s);var f=(o=>(o.CONNECT="connect",o.GETACCOUNT="getAccount",o.DISCONNECT="disconnect",o.ACCOUNT_CHANGE="accountChange",o.NETWORK_CHANGE="networkChange",o))(f||{});var _endlesstssdk = require('endless-ts-sdk');var S=u=>({name:_endlesstssdk.NetworkToNetworkName[u],chainId:_endlesstssdk.NetworkToChainId[u],url:_endlesstssdk.NetworkToNodeAPI[u]}),g= exports.isLuffa =()=>window&&_optionalChain([window, 'optionalAccess', _2 => _2._endlessWallet])!==void 0||_optionalChain([window, 'optionalAccess', _3 => _3.webkit, 'optionalAccess', _4 => _4.messageHandlers, 'optionalAccess', _5 => _5._endlessWallet])!==void 0||!1,l= exports.isLuffaMiniProgramWebview =()=>(window&&_optionalChain([window, 'optionalAccess', _6 => _6.navigator, 'optionalAccess', _7 => _7.userAgent])||"").includes("miniProgram"),m= exports.isLuffaMiniProgram =()=>_optionalChain([window, 'optionalAccess', _8 => _8.wx])&&_optionalChain([window, 'optionalAccess', _9 => _9.wx, 'optionalAccess', _10 => _10.canIUse])||!1,w={[_endlesstssdk.Network.MAINNET]:"endless",[_endlesstssdk.Network.TESTNET]:"eds"};var p=class p{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"networkChange":{let t=e.data.data.network;this.emit(s,S(t));break}case"connect":case"accountChange":{let t={...e.data.data};_optionalChain([e, 'optionalAccess', _11 => _11.data, 'optionalAccess', _12 => _12.data, 'optionalAccess', _13 => _13.account])?c.setAccountAddress(e.data.data.account):c.setAccountAddress(null),this.emit(s,t);break}case"disconnect":{c.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=_nullishCoalesce(_optionalChain([this, 'access', _14 => _14.listeners, 'access', _15 => _15[e], 'optionalAccess', _16 => _16.indexOf, 'call', _17 => _17(s)]), () => (-1));t>-1&&_optionalChain([this, 'access', _18 => _18.listeners, 'optionalAccess', _19 => _19[e], 'optionalAccess', _20 => _20.splice, 'call', _21 => _21(t,1)])}else this.listeners[e]=[]});n(this,"emit",(e,s)=>{_optionalChain([this, 'access', _22 => _22.listeners, 'optionalAccess', _23 => _23[e], 'optionalAccess', _24 => _24.forEach, 'call', _25 => _25(t=>t(s))])});n(this,"sendMessage",(e,s)=>{try{if(g()){this.sendLuffaMessage(e,s);return}if(m()||l()){this.sendMiniProgramMessage(e,s);return}}catch (e2){}});if(p._instance)return p._instance;p._instance=this,g()&&(window.endlessWallet={sendResponse:this.sendResponse.bind(this)})}sendLuffaMessage(e,s){let t=c.getIninData();e.initData={network:w[t.network]},e.from=c.getAccountAddress(),s&&(this.callbacks[e.uuid+e.methodName]=s),_optionalChain([window, 'optionalAccess', _26 => _26._endlessWallet])?_optionalChain([window, 'access', _27 => _27._endlessWallet, 'optionalAccess', _28 => _28.sendMessage, 'call', _29 => _29(JSON.stringify(e))]):_optionalChain([window, 'optionalAccess', _30 => _30.webkit])&&_optionalChain([window, 'optionalAccess', _31 => _31.webkit, 'optionalAccess', _32 => _32.messageHandlers, 'optionalAccess', _33 => _33._endlessWallet])&&_optionalChain([window, 'access', _34 => _34.webkit, 'access', _35 => _35.messageHandlers, 'access', _36 => _36._endlessWallet, 'optionalAccess', _37 => _37.postMessage, 'call', _38 => _38(e)])}sendResponse(e){let s=JSON.parse(e);this.receive({data:s})}sendMiniProgramMessage(e,s){let t="invokeNativePlugin",a=c.getAccountAddress(),o=c.getIninData(),T={api_name:"luffaWebRequest",data:{func:e.methodName,chainType:"endless",...e,initData:{...o,network:w[o.network]},from:a}},E=i=>{},d=i=>{};switch(e.methodName){case"switchNetwork":this.emit(e.methodName,e.data);return;case"disconnect":c.setAccountAddress(null),this.emit(e.methodName,void 0);case"connect":case"getAccount":E=i=>{c.setAccountAddress(i.data.account),s&&s({account:_optionalChain([i, 'optionalAccess', _39 => _39.data, 'optionalAccess', _40 => _40.address])||""})},d=i=>{s&&s({account:""})};break;case"signMessage":case"signBuildTransaction":case"signAndSubmitTransaction":E=i=>{s&&s({status:"success",...i.data||{}})},d=i=>{s&&s({status:"error",...i.data||{}})};break;default:E=i=>{s&&s({status:"success",...i.data||{}})},d=i=>{s&&s({status:"error",...i.data||{}})};break}m()?window.wx[t]({...T,complete:i=>{i.status==="success"?(E(i),this.receive({data:i})):d(i)}}):l()&&_optionalChain([window, 'access', _41 => _41.WeixinJSBridge, 'optionalAccess', _42 => _42.invoke, 'call', _43 => _43(t,T,i=>{i.status==="success"?(E(i),this.receive({data:i})):d(i)})])}};n(p,"_instance");var N=p;var A=(s=>(s.APPROVED="Approved",s.REJECTED="Rejected",s))(A||{}),y= exports.EndlessSendTransactionType =(s=>(s.SIGNATURE_ONLY="signatureOnly",s.SIGN_AND_SUBMIT="signAndSubmit",s))(y||{}),h= exports.EndlessWalletTransactionType =(s=>(s.SIMPLE="simple",s.MULTI_AGENT="multiAgent",s))(h||{});var D=(d=>(d.CONNECT="connect",d.GETACCOUNT="getAccount",d.DISCONNECT="disconnect",d.NETWORK_CHANGE="switchNetwork",d.SIGN_MESSAGE="signMessage",d.SEND_TRANSACTION="sendTransaction",d.SIGN_AND_SUBMIT_TRANSACTION="signAndSubmitTransaction",d.SIGN_BUILD_TRANSACTION="signBuildTransaction",d.ACCOUNT_CHANGE="accountChange",d))(D||{}),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)=>{_optionalChain([this, 'access', _44 => _44.message, 'optionalAccess', _45 => _45.sendMessage, 'call', _46 => _46({uuid:new Date().getTime().toString(),methodName:e.method,metadata:this._metadata,data:e.data},s)])});n(this,"getAccount",()=>new Promise(e=>{_optionalChain([this, 'access', _47 => _47.message, 'optionalAccess', _48 => _48.sendMessage, 'call', _49 => _49({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:_optionalChain([s, 'optionalAccess', _50 => _50.message])||"Wallet is not connected"};e(t)}})])}));n(this,"connect",e=>new Promise(s=>{_optionalChain([this, 'access', _51 => _51.message, 'optionalAccess', _52 => _52.sendMessage, 'call', _53 => _53({uuid:new Date().getTime().toString(),methodName:"connect",metadata:this._metadata,data:{}},t=>{if(t.account){this.accountAddress=t.account;let a={status:"Approved",args:{...t}};s(a)}else{let a={status:"Rejected",message:_optionalChain([t, 'optionalAccess', _54 => _54.message])};s(a)}e&&e({...t})})])}));n(this,"disconnect",e=>new Promise((s,t)=>{_optionalChain([this, 'access', _55 => _55.message, 'optionalAccess', _56 => _56.sendMessage, 'call', _57 => _57({uuid:new Date().getTime().toString(),methodName:"disconnect",metadata:this._metadata,data:{}},a=>{this.accountAddress=null,e&&e(a),s()})])}));n(this,"signMessage",(e,s)=>new Promise(t=>{_optionalChain([this, 'access', _58 => _58.message, 'optionalAccess', _59 => _59.sendMessage, 'call', _60 => _60({uuid:new Date().getTime().toString(),methodName:"signMessage",metadata:this._metadata,data:e},a=>{if(a.status==="success"){let o={status:"Approved",args:{fullMessage:e.message,signature:a.signature,publicKey:a.publicKey,nonce:"",message:e.message,prefix:"Endless"}};t(o)}else{let o={status:"Rejected",message:_optionalChain([a, 'optionalAccess', _61 => _61.message])};t(o)}s&&s(a)})])}));n(this,"on",(e,s)=>{_optionalChain([this, 'access', _62 => _62.message, 'optionalAccess', _63 => _63.addListener])&&_optionalChain([this, 'access', _64 => _64.message, 'optionalAccess', _65 => _65.addListener, 'call', _66 => _66(e,s)])});n(this,"off",(e,s)=>{_optionalChain([this, 'access', _67 => _67.message, 'optionalAccess', _68 => _68.removeListener])&&_optionalChain([this, 'access', _69 => _69.message, 'optionalAccess', _70 => _70.removeListener, 'call', _71 => _71(e,s)])});n(this,"signAndSubmitTransaction",e=>new Promise(async s=>{if(!this.accountAddress||!this._endless){let a={status:"Rejected",message:"Wallet not linked"};s(a);return}let t;g()||l()?t=await this._endless.transaction.build.simple({sender:this.accountAddress,data:e.payload,options:{...e.options||{}}}):m(),_optionalChain([this, 'access', _72 => _72.message, 'optionalAccess', _73 => _73.sendMessage, 'call', _74 => _74({uuid:new Date().getTime().toString(),methodName:"signAndSubmitTransaction",metadata:this._metadata,data:{serializedTransaction:{data:t&&t.bcsToHex().toString(),sender:this.accountAddress}}},a=>{if(a.status==="success"){let o={status:"Approved",args:{hash:a.hash}};s(o)}else{let o={status:"Rejected",message:_optionalChain([a, 'optionalAccess', _75 => _75.message])};s(o)}})])}));n(this,"signTransaction",(e,s="simple")=>new Promise(async t=>{if(!this.accountAddress||!this._endless){let a={status:"Rejected",message:"Wallet not linked"};t(a);return}_optionalChain([this, 'access', _76 => _76.message, 'optionalAccess', _77 => _77.sendMessage, 'call', _78 => _78({uuid:new Date().getTime().toString(),methodName:"signBuildTransaction",metadata:this._metadata,data:{transactionData:e,sender:this.accountAddress,type:s}},a=>{if(a.status==="success"){let o={status:"Approved",args:{data:a.signature}};t(o)}else{let o={status:"Rejected",message:_optionalChain([a, 'optionalAccess', _79 => _79.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 N,this.initWalletEvent(),this.getMetadata(),this.initConfig(e),r._instance=this}initConfig(e){if(e.network===_endlesstssdk.Network.CUSTOM){if(!e.fullnode||!e.indexer)throw new Error("Custom network must provide fullnode and indexer");this._initData.fullnode=e.fullnode,this._initData.indexer=e.indexer,this._initData.prover=e.prover,this._initData.network=e.network,this._initData.miniprogram=e.miniprogram,this._endlessConfig=new (0, _endlesstssdk.EndlessConfig)({network:e.network,indexer:e.indexer,fullnode:e.fullnode,prover:e.prover,miniprogram:e.miniprogram})}else this._initData.network=e.network,this._endlessConfig=new (0, _endlesstssdk.EndlessConfig)({network:e.network,miniprogram:e.miniprogram});this._endless=new (0, _endlesstssdk.Endless)(this._endlessConfig)}initWalletEvent(){this.on("networkChange",e=>{this.initConfig({network:e.name})})}changeNetwork(e){_optionalChain([this, 'access', _80 => _80.message, 'optionalAccess', _81 => _81.sendMessage, 'call', _82 => _82({uuid:new Date().getTime().toString(),methodName:"switchNetwork",metadata:this._metadata,data:{...this._initData,...e}})])}getMetadata(){if(!window)return;let s=_optionalChain([(document.querySelector('link[rel="icon"]')||document.querySelector('link[rel="shortcut icon"]')), 'optionalAccess', _83 => _83.getAttribute, 'call', _84 => _84("href")])||"";s&&!s.startsWith("http")&&(s=new URL(s,window.location.origin).href),this._metadata.title=window.document.title,this._metadata.url=window.location.href,this._metadata.origin=window.location.origin,this._metadata.icon=s}};n(r,"version","1.0.0"),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 c=r;exports.EndLessSDKEvent = f; exports.EndlessLuffaSdk = c; exports.EndlessSendTransactionType = y; exports.EndlessWalletTransactionType = h; exports.MethodName = D; exports.UserResponseStatus = A; exports.isLuffa = g; exports.isLuffaMiniProgram = m; exports.isLuffaMiniProgramWebview = l;
//# sourceMappingURL=index.js.map