@luffalab/luffa-endless-sdk
Version:
luffa endless ts sdk
2 lines • 13 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 S=Object.defineProperty;var y=(c,e,t)=>e in c?S(c,e,{enumerable:!0,configurable:!0,writable:!0,value:t}):c[e]=t;var n=(c,e,t)=>y(c,typeof e!="symbol"?e+"":e,t);var p=(i=>(i.CONNECT="connect",i.GETACCOUNT="getAccount",i.DISCONNECT="disconnect",i.ACCOUNT_CHANGE="accountChange",i.NETWORK_CHANGE="networkChange",i))(p||{});var N=(t=>(t.APPROVED="Approved",t.REJECTED="Rejected",t))(N||{}),I= exports.EndlessSendTransactionType =(t=>(t.SIGNATURE_ONLY="signatureOnly",t.SIGN_AND_SUBMIT="signAndSubmit",t))(I||{}),T= exports.EndlessWalletTransactionType =(t=>(t.SIMPLE="simple",t.MULTI_AGENT="multiAgent",t))(T||{});var O={mainnet:"mainnet",testnet:"testnet"};var m=()=>window&&_optionalChain([window, 'optionalAccess', _ => _._endlessWallet])!==void 0||_optionalChain([window, 'optionalAccess', _2 => _2.webkit, 'optionalAccess', _3 => _3.messageHandlers, 'optionalAccess', _4 => _4._endlessWallet])!==void 0||!1,h= exports.isLuffaMiniProgramWebview =()=>(window&&_optionalChain([window, 'optionalAccess', _5 => _5.navigator, 'optionalAccess', _6 => _6.userAgent])||"").includes("miniProgram"),C= exports.isLuffaMiniProgram =()=>!!(typeof wx<"u"&&_optionalChain([wx, 'optionalAccess', _7 => _7.getWindowInfo])),u={mainnet:"endless",testnet:"eds",endless:"mainnet",eds:"testnet"};var g=class g{constructor(){n(this,"callbacks",{});n(this,"listeners",{});n(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 s=_nullishCoalesce(u[_optionalChain([e, 'access', _8 => _8.data, 'optionalAccess', _9 => _9.data, 'optionalAccess', _10 => _10.network])], () => (_optionalChain([e, 'access', _11 => _11.data, 'optionalAccess', _12 => _12.data, 'optionalAccess', _13 => _13.network])));this.emit("networkChange",{name:s,chainId:_optionalChain([e, 'access', _14 => _14.data, 'optionalAccess', _15 => _15.data, 'optionalAccess', _16 => _16.blockChainId])});break}case"connect":case"accountChange":{let s={...e.data.data};_optionalChain([e, 'optionalAccess', _17 => _17.data, 'optionalAccess', _18 => _18.data, 'optionalAccess', _19 => _19.account])?d.setAccountAddress(e.data.data.account):d.setAccountAddress(null),this.emit(t,s);break}case"disconnect":{d.setAccountAddress(null),this.emit(t,e.data.data);break}default:this.emit(t,e.data.data);break}});n(this,"addListener",(e,t)=>{this.listeners[e]||(this.listeners[e]=[]),this.listeners[e].push(t)});n(this,"removeListener",(e,t)=>{if(t){let s=_nullishCoalesce(_optionalChain([this, 'access', _20 => _20.listeners, 'access', _21 => _21[e], 'optionalAccess', _22 => _22.indexOf, 'call', _23 => _23(t)]), () => (-1));s>-1&&_optionalChain([this, 'access', _24 => _24.listeners, 'optionalAccess', _25 => _25[e], 'optionalAccess', _26 => _26.splice, 'call', _27 => _27(s,1)])}else this.listeners[e]=[]});n(this,"emit",(e,t)=>{_optionalChain([this, 'access', _28 => _28.listeners, 'optionalAccess', _29 => _29[e], 'optionalAccess', _30 => _30.forEach, 'call', _31 => _31(s=>s(t))])});n(this,"sendMessage",(e,t)=>{try{if(m()){this.sendLuffaMessage(e,t);return}else this.sendMiniProgramMessage(e,t)}catch(s){t&&t({error:s})}});if(g._instance)return g._instance;g._instance=this,m()&&(window.endlessWallet={sendResponse:this.sendResponse.bind(this)})}sendLuffaMessage(e,t){let s=_optionalChain([e, 'optionalAccess', _32 => _32.initData])||d.getIninData();e.initData={...s||{},network:_nullishCoalesce(u[s.network], () => (s.network))},e.from=d.getAccountAddress(),t&&(this.callbacks[e.uuid+e.methodName]=t),_optionalChain([window, 'optionalAccess', _33 => _33._endlessWallet])?_optionalChain([window, 'access', _34 => _34._endlessWallet, 'optionalAccess', _35 => _35.sendMessage, 'call', _36 => _36(JSON.stringify(e))]):_optionalChain([window, 'optionalAccess', _37 => _37.webkit])&&_optionalChain([window, 'optionalAccess', _38 => _38.webkit, 'optionalAccess', _39 => _39.messageHandlers, 'optionalAccess', _40 => _40._endlessWallet])&&_optionalChain([window, 'access', _41 => _41.webkit, 'access', _42 => _42.messageHandlers, 'access', _43 => _43._endlessWallet, 'optionalAccess', _44 => _44.postMessage, 'call', _45 => _45(e)])}sendResponse(e){let t=JSON.parse(e);this.receive({data:t})}sendMiniProgramMessage(e,t){let s="invokeNativePlugin",o=d.getAccountAddress(),i=_optionalChain([e, 'optionalAccess', _46 => _46.initData])||d.getIninData(),w={api_name:"luffaWebRequest",data:{func:e.methodName,chainType:"endless",...e,initData:{...i,network:_nullishCoalesce(u[i.network], () => (i.network))},from:o}},f=a=>{t&&t({status:"success",...a.data||{}})},A=a=>{t&&t({status:"error",...a.data||{}})};switch(e.methodName){case"connect":case"getAccount":f=a=>{d.setAccountAddress(a.data.account),t&&t({account:_optionalChain([a, 'optionalAccess', _47 => _47.data, 'optionalAccess', _48 => _48.address])||"",...a.data||{}})},A=()=>{t&&t({account:""})};break;case"signMessage":case"signBuildTransaction":case"signAndSubmitTransaction":case"packageTransactionV2":f=a=>{t&&t({status:"success",...a.data||{}})},A=a=>{t&&t({status:"error",...a.data||{}})};break;default:break}h()&&_optionalChain([window, 'access', _49 => _49.WeixinJSBridge, 'optionalAccess', _50 => _50.invoke, 'call', _51 => _51(s,w,a=>{a.status===void 0?t&&t({...a}):a.status==="success"?(f(a),this.receive({data:a})):A(a)})])}};n(g,"_instance");var E=g;var _endlesstssdk = require('@endlesslab/endless-ts-sdk');var D=(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))(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,t)=>{_optionalChain([this, 'access', _52 => _52.message, 'optionalAccess', _53 => _53.sendMessage, 'call', _54 => _54({uuid:new Date().getTime().toString(),methodName:e.method,metadata:this._metadata,data:e.data,initData:_optionalChain([e, 'optionalAccess', _55 => _55.initData])},t)])});n(this,"getAccount",()=>new Promise(e=>{_optionalChain([this, 'access', _56 => _56.message, 'optionalAccess', _57 => _57.sendMessage, 'call', _58 => _58({uuid:new Date().getTime().toString(),methodName:"getAccount",metadata:this._metadata,data:{}},t=>{if(_optionalChain([t, 'optionalAccess', _59 => _59.account])){this.accountAddress=t.account;let s={status:"Approved",args:{...t}};e(s)}else{let s={status:"Rejected",message:_optionalChain([t, 'optionalAccess', _60 => _60.message])||"Wallet is not connected"};e(s)}})])}));n(this,"connect",e=>new Promise(t=>{_optionalChain([this, 'access', _61 => _61.message, 'optionalAccess', _62 => _62.sendMessage, 'call', _63 => _63({uuid:new Date().getTime().toString(),methodName:"connect",metadata:this._metadata,data:{}},s=>{if(_optionalChain([s, 'optionalAccess', _64 => _64.account])){this.accountAddress=s.account;let o={status:"Approved",args:{...s}};t(o)}else{let o={status:"Rejected",message:_optionalChain([s, 'optionalAccess', _65 => _65.message])};t(o)}e&&e({...s||{}})})])}));n(this,"disconnect",e=>new Promise((t,s)=>{_optionalChain([this, 'access', _66 => _66.message, 'optionalAccess', _67 => _67.sendMessage, 'call', _68 => _68({uuid:new Date().getTime().toString(),methodName:"disconnect",metadata:this._metadata,data:{}},o=>{this.accountAddress=null,e&&e(o),t()})])}));n(this,"signMessage",(e,t)=>new Promise(async s=>{this.accountAddress||await this.connect(),_optionalChain([this, 'access', _69 => _69.message, 'optionalAccess', _70 => _70.sendMessage, 'call', _71 => _71({uuid:new Date().getTime().toString(),methodName:"signMessage",metadata:this._metadata,data:e},o=>{if(_optionalChain([o, 'optionalAccess', _72 => _72.signature])){let i={status:"Approved",args:o};s(i)}else{let i={status:"Rejected",message:_optionalChain([o, 'optionalAccess', _73 => _73.message])};s(i)}t&&t(o)})])}));n(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)])});n(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)])});n(this,"signAndSubmitTransaction",e=>new Promise(async t=>{if(this.accountAddress||await this.connect(),!this.accountAddress){let i={status:"Rejected",message:"Wallet not linked"};t(i);return}let s,o="signAndSubmitTransaction";if(!this._endless){let i={status:"Rejected",message:"Wallet not linked"};t(i);return}s=await this._endless.transaction.build.simple({sender:this.accountAddress,data:e.payload,options:{...e.options||{}}}),s=s.bcsToHex().toString(),_optionalChain([this, 'access', _84 => _84.message, 'optionalAccess', _85 => _85.sendMessage, 'call', _86 => _86({uuid:new Date().getTime().toString(),methodName:o,metadata:this._metadata,data:{serializedTransaction:{data:s,sender:this.accountAddress}}},i=>{if(_optionalChain([i, 'optionalAccess', _87 => _87.hash])){let l={status:"Approved",args:{hash:i.hash}};t(l)}else{let l={status:"Rejected",message:_optionalChain([i, 'optionalAccess', _88 => _88.message])};t(l)}})])}));n(this,"signTransaction",(e,t="simple")=>new Promise(async s=>{if(!this.accountAddress||!this._endless){let o={status:"Rejected",message:"Wallet not linked"};s(o);return}_optionalChain([this, 'access', _89 => _89.message, 'optionalAccess', _90 => _90.sendMessage, 'call', _91 => _91({uuid:new Date().getTime().toString(),methodName:"signBuildTransaction",metadata:this._metadata,data:{transactionData:e,sender:this.accountAddress,type:t}},o=>{if(_optionalChain([o, 'optionalAccess', _92 => _92.signature])){let i={status:"Approved",args:{data:o.signature}};s(i)}else{let i={status:"Rejected",message:_optionalChain([o, 'optionalAccess', _93 => _93.message])};s(i)}})])}));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 E,this.initWalletEvent(),this.initConfig(e),r._instance=this}initConfig(e){this._initData={...e||{},callbackWalletName:"endlessWallet"},this._endlessConfig=new (0, _endlesstssdk.EndlessConfig)({network:e.network,miniprogram:e.miniprogram}),this._endless=new (0, _endlesstssdk.Endless)(this._endlessConfig),this.getMetadata()}initWalletEvent(){this.on("networkChange",e=>{this.initConfig({network:e.name})})}async changeNetwork(e){return new Promise(t=>{_optionalChain([this, 'access', _94 => _94.message, 'optionalAccess', _95 => _95.sendMessage, 'call', _96 => _96({uuid:new Date().getTime().toString(),methodName:"luffa_switchChain",metadata:this._metadata,data:{targetNet:_nullishCoalesce(u[e.network], () => (e.network))}},s=>{_optionalChain([s, 'optionalAccess', _97 => _97.network])&&(this._initData.network=s.network);let o={...s};t(o)})])})}getMetadata(){if(!window)return;let t=_optionalChain([(document.querySelector('link[rel="icon"]')||document.querySelector('link[rel="shortcut icon"]')), 'optionalAccess', _98 => _98.getAttribute, 'call', _99 => _99("href")])||"";t&&!t.startsWith("http")&&(t=new URL(t,window.location.origin).href),this.setMetaData({title:window.document.title,url:window.location.href,origin:window.location.origin,icon:t})}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;exports.EndLessSDKEvent = p; exports.EndlessLuffaSdk = d; exports.EndlessSendTransactionType = I; exports.EndlessWalletTransactionType = T; exports.MethodName = D; exports.UserResponseStatus = N; exports.isLuffa = m; exports.isLuffaMiniProgram = C; exports.isLuffaMiniProgramWebview = h;
//# sourceMappingURL=index.js.map