UNPKG

@luffalab/luffa-tron-sdk

Version:

luffa tron ts sdk

2 lines 13.6 kB
"use strict";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 _=Object.defineProperty;var x=(o,e,t)=>e in o?_(o,e,{enumerable:!0,configurable:!0,writable:!0,value:t}):o[e]=t;var s=(o,e,t)=>x(o,typeof e!="symbol"?e+"":e,t);var h=(g=>(g.CONNECT="connect",g.GETACCOUNT="getAccount",g.DISCONNECT="disconnect",g.ACCOUNT_CHANGE="accountChange",g.NETWORK_CHANGE="luffa_switchChain",g.CHAIN_CHANGED="chainChanged",g))(h||{});var A=()=>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,w= exports.isLuffaMiniProgramWebview =()=>!!(window&&_optionalChain([window, 'optionalAccess', _6 => _6.navigator, 'optionalAccess', _7 => _7.userAgent])||"").includes("miniProgram"),l= exports.isLuffaMiniProgram =()=>!!(_optionalChain([window, 'optionalAccess', _8 => _8.wx])&&_optionalChain([window, 'optionalAccess', _9 => _9.wx, 'optionalAccess', _10 => _10.getSystemInfoSync])),y={mainnet:"endless",testnet:"eds"};var v=o=>{let e;switch(o){case"eth":e=1;break;case"eth_sepolia":e=11155111;break;case"bsc":e=56;break;case"bsc_test":e=97;break;case"tron":e=728126428;break;case"tron_nile":e=3448148188;break;case"endless":e=220;break;case"eds":e=221;break}return e},C=o=>{let e=_optionalChain([o, 'access', _11 => _11.raw_data, 'optionalAccess', _12 => _12.contract, 'optionalAccess', _13 => _13[0]]);if(!e||e.type!=="TriggerSmartContract")return{isApprove:!1,spender:""};let n=_optionalChain([e, 'access', _14 => _14.parameter, 'optionalAccess', _15 => _15.value, 'optionalAccess', _16 => _16.data, 'optionalAccess', _17 => _17.slice, 'call', _18 => _18(0,8)])==="095ea7b3",a="";if(n)try{a=window.tronWeb.address.fromHex("41"+o.raw_data.contract[0].parameter.value.data.slice(32,72))}catch (e2){}return{isApprove:n,spender:a}},M=o=>typeof o=="string"&&o.startsWith("0x")&&o.length%2===0&&/^[0-9a-fA-F]+$/.test(o.slice(2)),k=o=>{let e=o.slice(2),t=new Uint8Array(e.length/2);for(let a=0;a<e.length;a+=2)t[a/2]=parseInt(e.slice(a,a+2),16);return new TextDecoder("utf-8").decode(t)},D=o=>M(o)?k(o):o;var f=class f{constructor(){s(this,"callbacks",{});s(this,"listeners",{});s(this,"receive",e=>{let t=e.data.methodName;switch(this.callbacks[e.data.uuid+t]&&(this.callbacks[e.data.uuid+t](e.data.data),delete this.callbacks[e.data.uuid+t]),t){case"luffa_switchChain":{let n=e.data.data.network;if(!n)break;l()&&(n=e.data.data),this.emit(t,n),this.emit("chainChanged",`0x${_optionalChain([v, 'call', _19 => _19(n), 'optionalAccess', _20 => _20.toString, 'call', _21 => _21(16)])}`);break}case"connect":case"accountChange":{let n={...e.data.data};_optionalChain([e, 'optionalAccess', _22 => _22.data, 'optionalAccess', _23 => _23.data, 'optionalAccess', _24 => _24.account])?u.setAccountAddress(e.data.data.account):u.setAccountAddress(null),this.emit(t,n);break}case"disconnect":{u.setAccountAddress(null),this.emit(t,e.data.data);break}default:this.emit(t,e.data.data);break}});s(this,"addListener",(e,t)=>{this.listeners[e]||(this.listeners[e]=[]),this.listeners[e].push(t)});s(this,"removeListener",(e,t)=>{if(t){let n=_nullishCoalesce(_optionalChain([this, 'access', _25 => _25.listeners, 'access', _26 => _26[e], 'optionalAccess', _27 => _27.indexOf, 'call', _28 => _28(t)]), () => (-1));n>-1&&_optionalChain([this, 'access', _29 => _29.listeners, 'optionalAccess', _30 => _30[e], 'optionalAccess', _31 => _31.splice, 'call', _32 => _32(n,1)])}else this.listeners[e]=[]});s(this,"emit",(e,t)=>{_optionalChain([this, 'access', _33 => _33.listeners, 'optionalAccess', _34 => _34[e], 'optionalAccess', _35 => _35.forEach, 'call', _36 => _36(n=>n(t))]),this.emitTronEvent(e,t)});s(this,"sendMessage",(e,t)=>{try{if(A()){this.sendLuffaMessage(e,t);return}if(l()||w()){this.sendMiniProgramMessage(e,t);return}}catch (e3){}});if(f._instance)return f._instance;f._instance=this,A()&&(window.tronWallet={sendResponse:this.sendResponse.bind(this)})}emitTronEvent(e,t){if(typeof window>"u"||!window.tron)return;let n;switch(e){case"connect":case"accountChange":n={action:"accountsChanged",data:{address:_optionalChain([t, 'optionalAccess', _37 => _37.account])||_optionalChain([t, 'optionalAccess', _38 => _38.address])}};break;case"disconnect":n=void 0;break;default:n=t;break}try{let a=new MessageEvent("message",{data:{isTronLink:!0,message:n}});window.dispatchEvent(a)}catch (e4){}}sendLuffaMessage(e,t){let n=_optionalChain([e, 'optionalAccess', _39 => _39.initData])||u.getIninData();e.initData={...n||{},network:_nullishCoalesce(y[n.network], () => (n.network))},e.from=u.getAccountAddress(),t&&(this.callbacks[e.uuid+e.methodName]=t),_optionalChain([window, 'optionalAccess', _40 => _40._tronWallet])?_optionalChain([window, 'access', _41 => _41._tronWallet, 'optionalAccess', _42 => _42.sendMessage, 'call', _43 => _43(JSON.stringify(e))]):_optionalChain([window, 'optionalAccess', _44 => _44.webkit])&&_optionalChain([window, 'optionalAccess', _45 => _45.webkit, 'optionalAccess', _46 => _46.messageHandlers, 'optionalAccess', _47 => _47._tronWallet])&&_optionalChain([window, 'access', _48 => _48.webkit, 'access', _49 => _49.messageHandlers, 'access', _50 => _50._tronWallet, 'optionalAccess', _51 => _51.postMessage, 'call', _52 => _52(e)])}sendResponse(e){let t=JSON.parse(e);this.receive({data:t})}sendMiniProgramMessage(e,t){let n="invokeNativePlugin",a=u.getAccountAddress(),d=u.getIninData(),p={api_name:"luffaWebRequest",data:{func:e.methodName,chainType:"endless",...e,initData:{...d,network:_nullishCoalesce(y[d.network], () => (d.network))},from:a}},m=r=>{t&&t({status:"success",...r.data||{}})},T=r=>{t&&t({status:"error",...r.data||{}})};switch(e.methodName){case"connect":case"getAccount":m=r=>{u.setAccountAddress(r.data.account),t&&t({account:_optionalChain([r, 'optionalAccess', _53 => _53.data, 'optionalAccess', _54 => _54.address])||"",...r.data||{}})},T=r=>{t&&t({account:""})};break;case"signMessage":case"signTransaction":case"signBuildTransaction":case"signAndSubmitTransaction":case"evmApprove":m=r=>{t&&t({status:"success",...r.data||{}})},T=r=>{t&&t({status:"error",...r.data||{}})};break;default:break}l()?wx[n]({...p,complete:r=>{r.status===void 0?t&&t({...r}):r.status==="success"?(m(r),this.receive({data:r})):T(r)}}):w()&&_optionalChain([window, 'access', _55 => _55.WeixinJSBridge, 'optionalAccess', _56 => _56.invoke, 'call', _57 => _57(n,p,r=>{r.status===void 0?t&&t({...r}):r.status==="success"?(m(r),this.receive({data:r})):T(r)})])}};s(f,"_instance");var N=f;var E=(t=>(t.APPROVED="Approved",t.REJECTED="Rejected",t))(E||{}),S= exports.EndlessSendTransactionType =(t=>(t.SIGNATURE_ONLY="signatureOnly",t.SIGN_AND_SUBMIT="signAndSubmit",t))(S||{}),b= exports.EndlessWalletTransactionType =(t=>(t.SIMPLE="simple",t.MULTI_AGENT="multiAgent",t))(b||{});var I=(c=>(c.CONNECT="connect",c.GETACCOUNT="getAccount",c.DISCONNECT="disconnect",c.NETWORK_CHANGE="luffa_switchChain",c.SIGN_MESSAGE="signMessage",c.SEND_TRANSACTION="sendTransaction",c.SIGN_AND_SUBMIT_TRANSACTION="signAndSubmitTransaction",c.SIGN_TRANSACTION="signTransaction",c.SIGN_BUILD_TRANSACTION="signBuildTransaction",c.EVM_APPROVE="evmApprove",c.ACCOUNT_CHANGE="accountChange",c))(I||{}),i=class i{constructor(e){s(this,"message",null);s(this,"_metadata",{});s(this,"_initData",{});s(this,"accountAddress",null);s(this,"_wallet",null);s(this,"request",(e,t)=>{_optionalChain([this, 'access', _58 => _58.message, 'optionalAccess', _59 => _59.sendMessage, 'call', _60 => _60({uuid:new Date().getTime().toString(),methodName:e.method,metadata:this._metadata,data:e.data,initData:_optionalChain([e, 'optionalAccess', _61 => _61.initData])},t)])});s(this,"getAccount",()=>new Promise(e=>{_optionalChain([this, 'access', _62 => _62.message, 'optionalAccess', _63 => _63.sendMessage, 'call', _64 => _64({uuid:new Date().getTime().toString(),methodName:"getAccount",metadata:this._metadata,data:{}},t=>{if(_optionalChain([t, 'optionalAccess', _65 => _65.account]))this._wallet.setAddress(t.account),this.accountAddress=t.account,e([t.account]);else{let n={status:"Rejected",message:_optionalChain([t, 'optionalAccess', _66 => _66.message])||"Wallet is not connected"};e([])}})])}));s(this,"connect",()=>new Promise((e,t)=>{_optionalChain([this, 'access', _67 => _67.message, 'optionalAccess', _68 => _68.sendMessage, 'call', _69 => _69({uuid:new Date().getTime().toString(),methodName:"connect",metadata:this._metadata,data:{}},n=>{let a;_optionalChain([n, 'optionalAccess', _70 => _70.account])?(this._wallet.setAddress(n.account),this.accountAddress=n.account,a=[n.account],e(a)):(a={code:4001,message:"User rejected the request."},t(a))})])}));s(this,"disconnect",e=>new Promise((t,n)=>{_optionalChain([this, 'access', _71 => _71.message, 'optionalAccess', _72 => _72.sendMessage, 'call', _73 => _73({uuid:new Date().getTime().toString(),methodName:"disconnect",metadata:this._metadata,data:{}},a=>{this.accountAddress=null,e&&e(a),t()})])}));s(this,"on",(e,t)=>{_optionalChain([this, 'access', _74 => _74.message, 'optionalAccess', _75 => _75.addListener])&&_optionalChain([this, 'access', _76 => _76.message, 'optionalAccess', _77 => _77.addListener, 'call', _78 => _78(e,t)])});s(this,"off",(e,t)=>{_optionalChain([this, 'access', _79 => _79.message, 'optionalAccess', _80 => _80.removeListener])&&_optionalChain([this, 'access', _81 => _81.message, 'optionalAccess', _82 => _82.removeListener, 'call', _83 => _83(e,t)])});s(this,"signAndSubmitTransaction",e=>new Promise(async t=>{_optionalChain([this, 'access', _84 => _84.message, 'optionalAccess', _85 => _85.sendMessage, 'call', _86 => _86({uuid:new Date().getTime().toString(),methodName:"signAndSubmitTransaction",metadata:this._metadata,data:e},n=>{_optionalChain([n, 'optionalAccess', _87 => _87.hash])?t(n.hash):t({code:4001,message:_optionalChain([n, 'optionalAccess', _88 => _88.message])})})])}));s(this,"signTransaction",(e,t="signBuildTransaction")=>new Promise(async(n,a)=>{let d={raw_data_hex:e.raw_data_hex};e.to&&(d.to=e.to),_optionalChain([this, 'access', _89 => _89.message, 'optionalAccess', _90 => _90.sendMessage, 'call', _91 => _91({uuid:new Date().getTime().toString(),methodName:t,metadata:this._metadata,data:d},g=>{let p=_optionalChain([g, 'optionalAccess', _92 => _92.signature, 'optionalAccess', _93 => _93.split, 'call', _94 => _94(",")])||[];if(Array.isArray(p)&&p.length>0){let m={...e,signature:p};n(m)}else a("Confirmation declined by user")})])}));s(this,"signMessage",(e,t)=>new Promise(async n=>{_optionalChain([this, 'access', _95 => _95.message, 'optionalAccess', _96 => _96.sendMessage, 'call', _97 => _97({uuid:new Date().getTime().toString(),methodName:"signMessage",metadata:this._metadata,data:{message:D(e)}},a=>{if(_optionalChain([a, 'optionalAccess', _98 => _98.signature])){let d={status:"Approved",args:a};n(d)}else{let d={status:"Rejected",message:_optionalChain([a, 'optionalAccess', _99 => _99.message])};n(d)}t&&t(a)})])}));s(this,"onAccountChange",e=>{this.on("accountChange",e)});s(this,"onNetworkChange",e=>{this.on("luffa_switchChain",e)});if(i._instance)return i._instance;this.message=new N,this.getMetadata(),this.initConfig(e),i._instance=this}initConfig(e){this._initData.callbackWalletName="tronWallet",this._initData.network=e.network,l()}async sendTransaction(e){if(this.accountAddress||await this.connect(),typeof e=="string")return this.signMessage(e);let{isApprove:t,spender:n}=C(e);return t?(e.to=n,this.signTransaction(e,"evmApprove")):this.signTransaction(e)}changeNetwork(e){_optionalChain([this, 'access', _100 => _100.message, 'optionalAccess', _101 => _101.sendMessage, 'call', _102 => _102({uuid:new Date().getTime().toString(),methodName:"luffa_switchChain",metadata:this._metadata,data:{...e}})])}getMetadata(){if(!window)return;let t=_optionalChain([(document.querySelector('link[rel="icon"]')||document.querySelector('link[rel="shortcut icon"]')), 'optionalAccess', _103 => _103.getAttribute, 'call', _104 => _104("href")])||"";t&&!t.startsWith("http")&&(t=new URL(t,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=t}};s(i,"version","1.0.5"),s(i,"_instance"),s(i,"getIninData",()=>i._instance?i._instance._initData:{}),s(i,"getAccountAddress",()=>i._instance?i._instance.accountAddress:null),s(i,"setAccountAddress",e=>{i._instance&&(_optionalChain([i, 'access', _105 => _105._instance, 'optionalAccess', _106 => _106._wallet, 'optionalAccess', _107 => _107.setAddress, 'call', _108 => _108(e)]),i._instance.accountAddress=e)});var u=i;exports.EndlessSendTransactionType = S; exports.EndlessWalletTransactionType = b; exports.LuffaTronSdk = u; exports.MethodName = I; exports.TronSDKEvent = h; exports.UserResponseStatus = E; exports.isLuffa = A; exports.isLuffaMiniProgram = l; exports.isLuffaMiniProgramWebview = w; //# sourceMappingURL=index.js.map