wowok
Version:
Wowok Blockchain TypeScript API
1 lines • 1.75 kB
JavaScript
import{TypeTagSerializer}from'../bcs/type-tag-serializer.js';import{deriveDynamicFieldID}from'../utils/dynamic-fields.js';import{normalizeStructTag,parseStructTag,WOW_ADDRESS_LENGTH}from'../utils/wow-types.js';import{Experimental_BaseClient}from'./client.js';export class Experimental_CoreClient extends Experimental_BaseClient{['core']=this;constructor(a){super(a);}async['getObject'](a){const {objectId:b}=a,{objects:[c]}=await this['getObjects']({'objectIds':[b],'signal':a['signal']});if(c instanceof Error)throw c;return{'object':c};}async['getDynamicField'](a){const b=TypeTagSerializer['parseFromStr'](a['name']['type']),c=deriveDynamicFieldID(a['parentId'],b,a['name']['bcs']),{objects:[d]}=await this['getObjects']({'objectIds':[c],'signal':a['signal']});if(d instanceof Error)throw d;const e=parseStructTag(d['type']),f=await d['content'];return{'dynamicField':{'id':d['id'],'digest':d['digest'],'version':d['version'],'type':d['type'],'previousTransaction':d['previousTransaction'],'name':{'type':typeof e['typeParams'][0x0]==='string'?e['typeParams'][0x0]:normalizeStructTag(e['typeParams'][0x0]),'bcs':a['name']['bcs']},'value':{'type':typeof e['typeParams'][0x1]==='string'?e['typeParams'][0x1]:normalizeStructTag(e['typeParams'][0x1]),'bcs':f['slice'](WOW_ADDRESS_LENGTH+a['name']['bcs']['length'])}}};}async['waitForTransaction']({signal:a,timeout:timeout=0x3c*0x3e8,...b}){const c=a?AbortSignal['any']([AbortSignal['timeout'](timeout),a]):AbortSignal['timeout'](timeout),d=new Promise((e,f)=>{c['addEventListener']('abort',()=>f(c['reason']));});d['catch'](()=>{});while(!![]){c['throwIfAborted']();try{return await this['getTransaction']({...b,'signal':c});}catch{await Promise['race']([new Promise(e=>setTimeout(e,0x7d0)),d]);}}}}