wowok
Version:
Wowok Blockchain TypeScript API
1 lines • 4.09 kB
JavaScript
import{getFullnodeUrl,WowClient}from'../../client/index.js';import{PackageAddress}from'../common.js';import{Config}from'../local/index.js';import{Cache,CachePrefix}from'../local/cache.js';export const query_events_json=async a=>{try{const b=JSON['parse'](a);return JSON['stringify']({'data':await query_events(b)});}catch(c){return JSON['stringify']({'error':c?.['toString']()});}};export const query_events=async a=>{const b=await Config['Instance']()['network_get'](a['network']),c=a['cursor']?a['cursor']['eventSeq']+':'+a['cursor']['txDigest']:'',e=a['limit']?.['toString']()??'',f=a['order']??'',g=await Cache['read']([CachePrefix['event'],a['type'],c,e,f,b],async()=>{const h=await events(a['type'],a);return{'expire':Cache['DefaultExpireTime'](),'data':h};},a['no_cache']);if(g){const h=g['data'];return h['cache_expire']=g['expire'],h;}return undefined;};const events=async(a,b)=>{const c=await Config['Instance']()['network_get'](b['network']),d=new WowClient({'url':getFullnodeUrl(c)}),e=a==='ArbEvent'||a==='NewOrderEvent'||a==='ProgressEvent'||a==='DemandPresentEvent'||a==='DemandFeedbackEvent'||a==='NewEntityEvent';let f;if(e){const i={'ArbEvent':'::arb::ArbEvent','NewOrderEvent':'::order::NewOrderEvent','ProgressEvent':'::progress::ProgressEvent','DemandPresentEvent':'::demand::PresentEvent','DemandFeedbackEvent':'::demand::DemandEvent','NewEntityEvent':'::entity::NewEntityEvent'};f=''+PackageAddress+i[a];}else f=a;const g=await d['queryEvents']({'query':{'MoveEventType':f},'cursor':b['cursor'],'limit':b['limit'],'order':b['order']}),h=g?.['data']?.['map'](j=>{if(j?.['packageId']===PackageAddress){if(j?.['type']?.['includes']('::order::NewOrderEvent'))return{'id':j?.['id'],'time':j?.['timestampMs'],'type_raw':j?.['type'],'sender':j?.['sender'],'type':'NewOrderEvent','order':j?.['parsedJson']?.['object'],'service':j?.['parsedJson']?.['service'],'progress':j?.['parsedJson']?.['progress']?.['some']??null,'amount':j?.['parsedJson']?.['amount'],'discount':j?.['parsedJson']?.['discount']?.['some']??null,'allocation':j?.['parsedJson']?.['allocation']?.['some']??null};else{if(j?.['type']?.['includes']('::demand::PresentEvent'))return{'id':j?.['id'],'time':j?.['timestampMs'],'type_raw':j?.['type'],'sender':j?.['sender'],'type':'DemandPresentEvent','demand':j?.['parsedJson']?.['object'],'service':j?.['parsedJson']?.['service']?.['some']??null,'recommend':j?.['parsedJson']?.['tips']};else{if(j?.['type']?.['includes']('::demand::DemandEvent'))return{'id':j?.['id'],'time':j?.['timestampMs'],'type_raw':j?.['type'],'sender':j?.['sender'],'type':'DemandFeedbackEvent','demand':j?.['parsedJson']?.['object'],'service':j?.['parsedJson']?.['service']?.['some']??null,'feedback':j?.['parsedJson']?.['feedback'],'acceptance_score':j?.['parsedJson']?.['acceptance_score']?.['some']??null};else{if(j?.['type']?.['includes']('::progress::ProgressEvent'))return{'id':j?.['id'],'time':j?.['timestampMs'],'type_raw':j?.['type'],'sender':j?.['sender'],'type':'ProgressEvent','progress':j?.['parsedJson']?.['object'],'machine':j?.['parsedJson']?.['machine'],'task':j?.['parsedJson']?.['task'],'node':j?.['parsedJson']?.['node'],'forward':j?.['parsedJson']?.['forward'],'hold':j?.['parsedJson']?.['hold']};else{if(j?.['type']?.['includes']('::arb::ArbEvent'))return{'id':j?.['id'],'time':j?.['timestampMs'],'type_raw':j?.['type'],'sender':j?.['sender'],'type':'ArbEvent','arb':j?.['parsedJson']?.['object'],'arbitration':j?.['parsedJson']?.['arbitration'],'order':j?.['parsedJson']?.['order'],'status':j?.['parsedJson']?.['status']};else{if(j?.['type']?.['includes']('::entity::NewEntityEvent'))return{'id':j?.['id'],'time':j?.['timestampMs'],'type_raw':j?.['type'],'sender':j?.['sender'],'type':'NewEntityEvent','resource':j?.['parsedJson']?.['resource'],'address':j?.['sender'],'referrer':j?.['parsedJson']?.['referrer']?.['some']??null};}}}}}}return{'id':j?.['id'],'time':j?.['timestampMs'],'type_raw':j?.['type'],'sender':j?.['sender'],'type':j?.['type'],'parsedJson_raw':j?.['parsedJson']};});return{'data':h,'hasNextPage':g?.['hasNextPage'],'nextCursor':g?.['nextCursor']};};