Skip to content

Commit 60ae974

Browse files
committed
Making sure transaction information is properly serialized
1 parent 1504291 commit 60ae974

File tree

3 files changed

+39
-11
lines changed

3 files changed

+39
-11
lines changed

CHANGELOG.md

Lines changed: 4 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -1,4 +1,8 @@
11

2+
# 0.1.10 -- Bugfixes
3+
4+
- Ensuring transaction information is properly serialized
5+
26
# 0.1.9 -- Bugfixes
37

48
- Fix for BigNumber serialization

package.json

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -1,6 +1,6 @@
11
{
22
"name": "eth-indexer",
3-
"version": "0.1.9",
3+
"version": "0.1.10",
44
"description": "High performance Ethereum smart contract event indexing for fast local retrieval",
55
"author": "Dominiek Ter Heide <[email protected]>",
66
"license": "MIT",

src/utils.js

Lines changed: 34 additions & 10 deletions
Original file line numberDiff line numberDiff line change
@@ -2,28 +2,52 @@
22
import BigNumber from 'bignumber.js';
33

44
const isBigNumber = value =>
5-
(value && value.isBigNumber === true) ||
6-
(value && value instanceof BigNumber) ||
7-
(value && value.lte && value.toNumber);
5+
(value.isBigNumber === true) ||
6+
(value instanceof BigNumber) ||
7+
(value.lte && value.toNumber);
8+
9+
const serializeBigNumber = (value) => {
10+
if (isBigNumber(value)) {
11+
return {
12+
type: 'BigNumber',
13+
value: value.toString(),
14+
};
15+
}
16+
return value;
17+
};
18+
19+
const unserializeBigNumber = (value) => {
20+
if (value && value.type === 'BigNumber') {
21+
return new BigNumber(value.value);
22+
}
23+
return value;
24+
};
825

926
export const serialize = (event) => {
1027
const doc = Object.assign({}, event);
28+
for (const key in event) {
29+
if (event[key]) {
30+
doc[key] = serializeBigNumber(event[key]);
31+
}
32+
}
1133
for (const key in event.args) {
12-
if (isBigNumber(event.args[key])) {
13-
doc.args[key] = {
14-
type: 'BigNumber',
15-
value: event.args[key].toString(),
16-
};
34+
if (event.args[key]) {
35+
doc.args[key] = serializeBigNumber(event.args[key]);
1736
}
1837
}
1938
return doc;
2039
};
2140

2241
export const unserialize = (doc) => {
2342
const event = Object.assign({}, doc);
43+
for (const key in doc) {
44+
if (doc[key]) {
45+
event[key] = unserializeBigNumber(doc[key]);
46+
}
47+
}
2448
for (const key in doc.args) {
25-
if (doc.args[key] && doc.args[key].type === 'BigNumber') {
26-
event.args[key] = new BigNumber(doc.args[key].value);
49+
if (doc.args[key]) {
50+
event.args[key] = unserializeBigNumber(doc.args[key]);
2751
}
2852
}
2953
return event;

0 commit comments

Comments
 (0)