@@ -4,6 +4,7 @@ import EthQuery from 'ethjs-query';
44import  EthAbi  from  'ethjs-abi' ; 
55import  Web3  from  'web3' ; 
66import  logger  from  './logger' ; 
7+ import  BigNumber  from  'bignumber.js' ; 
78
89const  sleep  =  timeout  =>  new  Promise ( accept  =>  setTimeout ( ( )  =>  accept ( ) ,  timeout ) ) ; 
910
@@ -18,6 +19,20 @@ const chunk = (arr, len) => {
1819  return  chunks ; 
1920} ; 
2021
22+ const  normalizeEvent  =  ( event )  =>  { 
23+   const  normalizedEvent  =  Object . assign ( { } ,  event ) ; 
24+   if  ( typeof  normalizeEvent . blockNumber  ===  'number' )  { 
25+     normalizeEvent . blockNumber  =  new  BigNumber ( normalizeEvent . blockNumber ) ; 
26+   } 
27+   if  ( typeof  normalizeEvent . transactionIndex  ===  'number' )  { 
28+     normalizeEvent . transactionIndex  =  new  BigNumber ( normalizeEvent . transactionIndex ) ; 
29+   } 
30+   if  ( typeof  normalizeEvent . logIndex  ===  'number' )  { 
31+     normalizeEvent . logIndex  =  new  BigNumber ( normalizeEvent . logIndex ) ; 
32+   } 
33+   return  normalizedEvent ; 
34+ } ; 
35+ 
2136export  default  class  Ethereum  { 
2237  constructor ( abi ,  contractAddress ,  readProviderUrl  =  'http://127.0.0.1:8545' )  { 
2338    this . readProviderUrl  =  readProviderUrl ; 
@@ -58,11 +73,11 @@ export default class Ethereum {
5873    const  options  =  {  fromBlock,  toBlock : 'latest'  } ; 
5974    const  filter  =  this . readWeb3Contract . allEvents ( { } ,  options ) ; 
6075    filter . watch ( ( error ,  event )  =>  { 
61-       // console.log('watch', error,  event);
76+       const   normalizedEvent   =   normalizeEvent ( event ) ; 
6277      if  ( error )  { 
6378        logger . log ( 'warn' ,  `Got error while reading realtime events from contract: ${ error . message }  ) ; 
6479      }  else  { 
65-         fn ( event ) . then ( ( )  =>  { } ) ; 
80+         fn ( normalizedEvent ) . then ( ( )  =>  { } ) ; 
6681      } 
6782    } ) ; 
6883  } 
0 commit comments