aboutsummaryrefslogtreecommitdiffstats
path: root/packages/utils/src/abi_encoder
diff options
context:
space:
mode:
Diffstat (limited to 'packages/utils/src/abi_encoder')
-rw-r--r--packages/utils/src/abi_encoder/abstract_data_types/types/set.ts22
-rw-r--r--packages/utils/src/abi_encoder/calldata/blocks/pointer.ts3
-rw-r--r--packages/utils/src/abi_encoder/calldata/calldata.ts8
-rw-r--r--packages/utils/src/abi_encoder/calldata/iterator.ts4
-rw-r--r--packages/utils/src/abi_encoder/calldata/raw_calldata.ts3
-rw-r--r--packages/utils/src/abi_encoder/evm_data_types/array.ts13
-rw-r--r--packages/utils/src/abi_encoder/evm_data_types/int.ts3
-rw-r--r--packages/utils/src/abi_encoder/evm_data_types/static_bytes.ts2
-rw-r--r--packages/utils/src/abi_encoder/evm_data_types/uint.ts3
9 files changed, 33 insertions, 28 deletions
diff --git a/packages/utils/src/abi_encoder/abstract_data_types/types/set.ts b/packages/utils/src/abi_encoder/abstract_data_types/types/set.ts
index 427122ad6..5a188d6fa 100644
--- a/packages/utils/src/abi_encoder/abstract_data_types/types/set.ts
+++ b/packages/utils/src/abi_encoder/abstract_data_types/types/set.ts
@@ -32,7 +32,7 @@ export abstract class Set extends DataType {
this._isArray = isArray;
this._arrayLength = arrayLength;
this._arrayElementType = arrayElementType;
- if (isArray && arrayLength !== undefined) {
+ if (isArray && !_.isUndefined(arrayLength)) {
[this._members, this._memberIndexByName] = this._createMembersWithLength(dataItem, arrayLength);
} else if (!isArray) {
[this._members, this._memberIndexByName] = this._createMembersWithKeys(dataItem);
@@ -51,7 +51,7 @@ export abstract class Set extends DataType {
let members = this._members;
// Case 1: This is an array of undefined length, which means that `this._members` was not
// populated in the constructor. So, construct the set of members it now.
- if (this._isArray && this._arrayLength === undefined) {
+ if (this._isArray && _.isUndefined(this._arrayLength)) {
const arrayLengthBuf = calldata.popWord();
const arrayLengthHex = ethUtil.bufferToHex(arrayLengthBuf);
const arrayLength = new BigNumber(arrayLengthHex, Constants.HEX_BASE);
@@ -83,20 +83,20 @@ export abstract class Set extends DataType {
public isStatic(): boolean {
// An array with an undefined length is never static.
- if (this._isArray && this._arrayLength === undefined) {
+ if (this._isArray && _.isUndefined(this._arrayLength)) {
return false;
}
// If any member of the set is a pointer then the set is not static.
const dependentMember = _.find(this._members, (member: DataType) => {
return member instanceof Pointer;
});
- const isStatic = dependentMember === undefined;
+ const isStatic = _.isUndefined(dependentMember);
return isStatic;
}
protected _generateCalldataBlockFromArray(value: any[], parentBlock?: CalldataBlock): CalldataBlocks.Set {
// Sanity check: if the set has a defined length then `value` must have the same length.
- if (this._arrayLength !== undefined && value.length !== this._arrayLength) {
+ if (!_.isUndefined(this._arrayLength) && value.length !== this._arrayLength) {
throw new Error(
`Expected array of ${JSON.stringify(
this._arrayLength,
@@ -104,7 +104,7 @@ export abstract class Set extends DataType {
);
}
// Create a new calldata block for this set.
- const parentName = parentBlock === undefined ? '' : parentBlock.getName();
+ const parentName = _.isUndefined(parentBlock) ? '' : parentBlock.getName();
const block: CalldataBlocks.Set = new CalldataBlocks.Set(
this.getDataItem().name,
this.getSignature(),
@@ -112,7 +112,7 @@ export abstract class Set extends DataType {
);
// If this set has an undefined length then set its header to be the number of elements.
let members = this._members;
- if (this._isArray && this._arrayLength === undefined) {
+ if (this._isArray && _.isUndefined(this._arrayLength)) {
[members] = this._createMembersWithLength(this.getDataItem(), value.length);
const lenBuf = ethUtil.setLengthLeft(
ethUtil.toBuffer(`0x${value.length.toString(Constants.HEX_BASE)}`),
@@ -132,7 +132,7 @@ export abstract class Set extends DataType {
protected _generateCalldataBlockFromObject(obj: object, parentBlock?: CalldataBlock): CalldataBlocks.Set {
// Create a new calldata block for this set.
- const parentName = parentBlock === undefined ? '' : parentBlock.getName();
+ const parentName = _.isUndefined(parentBlock) ? '' : parentBlock.getName();
const block: CalldataBlocks.Set = new CalldataBlocks.Set(
this.getDataItem().name,
this.getSignature(),
@@ -175,7 +175,7 @@ export abstract class Set extends DataType {
private _createMembersWithKeys(dataItem: DataItem): [DataType[], MemberIndexByName] {
// Sanity check
- if (dataItem.components === undefined) {
+ if (_.isUndefined(dataItem.components)) {
throw new Error(`Expected components`);
}
// Create one member for each component of `dataItem`
@@ -187,7 +187,7 @@ export abstract class Set extends DataType {
name: `${dataItem.name}.${memberItem.name}`,
};
const components = memberItem.components;
- if (components !== undefined) {
+ if (!_.isUndefined(components)) {
childDataItem.components = components;
}
const child = this.getFactory().create(childDataItem, this);
@@ -208,7 +208,7 @@ export abstract class Set extends DataType {
name: `${dataItem.name}[${idx.toString(Constants.DEC_BASE)}]`,
};
const components = dataItem.components;
- if (components !== undefined) {
+ if (!_.isUndefined(components)) {
memberDataItem.components = components;
}
const memberType = this.getFactory().create(memberDataItem, this);
diff --git a/packages/utils/src/abi_encoder/calldata/blocks/pointer.ts b/packages/utils/src/abi_encoder/calldata/blocks/pointer.ts
index 1c49a8c6c..654cbe26c 100644
--- a/packages/utils/src/abi_encoder/calldata/blocks/pointer.ts
+++ b/packages/utils/src/abi_encoder/calldata/blocks/pointer.ts
@@ -1,4 +1,5 @@
import * as ethUtil from 'ethereumjs-util';
+import * as _ from 'lodash';
import * as Constants from '../../utils/constants';
@@ -24,7 +25,7 @@ export class Pointer extends CalldataBlock {
public toBuffer(): Buffer {
const destinationOffset =
- this._aliasFor !== undefined ? this._aliasFor.getOffsetInBytes() : this._dependency.getOffsetInBytes();
+ !_.isUndefined(this._aliasFor) ? this._aliasFor.getOffsetInBytes() : this._dependency.getOffsetInBytes();
const parentOffset = this._parent.getOffsetInBytes();
const parentHeaderSize = this._parent.getHeaderSizeInBytes();
const pointer: number = destinationOffset - (parentOffset + parentHeaderSize);
diff --git a/packages/utils/src/abi_encoder/calldata/calldata.ts b/packages/utils/src/abi_encoder/calldata/calldata.ts
index a662f30b9..e93d63803 100644
--- a/packages/utils/src/abi_encoder/calldata/calldata.ts
+++ b/packages/utils/src/abi_encoder/calldata/calldata.ts
@@ -44,7 +44,7 @@ export class Calldata {
*/
public toString(): string {
// Sanity check: root block must be set
- if (this._root === undefined) {
+ if (_.isUndefined(this._root)) {
throw new Error('expected root');
}
// Optimize, if flag set
@@ -103,7 +103,7 @@ export class Calldata {
*/
private _optimize(): void {
// Step 1/1 Create a reverse iterator (starts from the end of the calldata to the beginning)
- if (this._root === undefined) {
+ if (_.isUndefined(this._root)) {
throw new Error('expected root');
}
const iterator = new ReverseCalldataIterator(this._root);
@@ -136,7 +136,7 @@ export class Calldata {
*/
private _toCondensedString(): string {
// Sanity check: must have a root block.
- if (this._root === undefined) {
+ if (_.isUndefined(this._root)) {
throw new Error('expected root');
}
// Construct an array of buffers (one buffer for each block).
@@ -175,7 +175,7 @@ export class Calldata {
*/
private _toAnnotatedString(): string {
// Sanity check: must have a root block.
- if (this._root === undefined) {
+ if (_.isUndefined(this._root)) {
throw new Error('expected root');
}
// Constants for constructing annotated string
diff --git a/packages/utils/src/abi_encoder/calldata/iterator.ts b/packages/utils/src/abi_encoder/calldata/iterator.ts
index 8e2b16a5a..5307f7944 100644
--- a/packages/utils/src/abi_encoder/calldata/iterator.ts
+++ b/packages/utils/src/abi_encoder/calldata/iterator.ts
@@ -55,7 +55,7 @@ abstract class BaseIterator implements Iterable<CalldataBlock> {
_.each(set.getMembers(), (member: CalldataBlock) => {
// Traverse child if it is a unique pointer.
// A pointer that is an alias for another pointer is ignored.
- if (member instanceof CalldataBlocks.Pointer && member.getAlias() === undefined) {
+ if (member instanceof CalldataBlocks.Pointer && _.isUndefined(member.getAlias())) {
const dependency = member.getDependency();
queue.mergeBack(BaseIterator._createQueue(dependency));
}
@@ -74,7 +74,7 @@ abstract class BaseIterator implements Iterable<CalldataBlock> {
return {
next: () => {
const nextBlock = this.nextBlock();
- if (nextBlock !== undefined) {
+ if (!_.isUndefined(nextBlock)) {
return {
value: nextBlock,
done: false,
diff --git a/packages/utils/src/abi_encoder/calldata/raw_calldata.ts b/packages/utils/src/abi_encoder/calldata/raw_calldata.ts
index b13cbdfd9..dfd4cfa72 100644
--- a/packages/utils/src/abi_encoder/calldata/raw_calldata.ts
+++ b/packages/utils/src/abi_encoder/calldata/raw_calldata.ts
@@ -1,4 +1,5 @@
import * as ethUtil from 'ethereumjs-util';
+import * as _ from 'lodash';
import * as Constants from '../utils/constants';
import { Queue } from '../utils/queue';
@@ -68,7 +69,7 @@ export class RawCalldata {
public toAbsoluteOffset(relativeOffset: number): number {
const scopeOffset = this._scopes.peekFront();
- if (scopeOffset === undefined) {
+ if (_.isUndefined(scopeOffset)) {
throw new Error(`Tried to access undefined scope.`);
}
const absoluteOffset = relativeOffset + scopeOffset;
diff --git a/packages/utils/src/abi_encoder/evm_data_types/array.ts b/packages/utils/src/abi_encoder/evm_data_types/array.ts
index 8cf2cf7cf..a86283c2a 100644
--- a/packages/utils/src/abi_encoder/evm_data_types/array.ts
+++ b/packages/utils/src/abi_encoder/evm_data_types/array.ts
@@ -1,4 +1,5 @@
import { DataItem } from 'ethereum-types';
+import * as _ from 'lodash';
import { AbstractDataTypes, DataTypeFactory } from '../abstract_data_types';
import * as Constants from '../utils/constants';
@@ -14,15 +15,15 @@ export class Array extends AbstractDataTypes.Set {
private static _decodeElementTypeAndLengthFromType(type: string): [string, undefined | number] {
const matches = Array._MATCHER.exec(type);
- if (matches === null || matches.length !== 3) {
+ if (_.isNull(matches) || matches.length !== 3) {
throw new Error(`Could not parse array: ${type}`);
- } else if (matches[1] === undefined) {
+ } else if (_.isUndefined(matches[1])) {
throw new Error(`Could not parse array type: ${type}`);
- } else if (matches[2] === undefined) {
+ } else if (_.isUndefined(matches[2])) {
throw new Error(`Could not parse array length: ${type}`);
}
const arrayElementType = matches[1];
- const arrayLength = matches[2] === '' ? undefined : parseInt(matches[2], Constants.DEC_BASE);
+ const arrayLength = _.isEmpty(matches[2]) ? undefined : parseInt(matches[2], Constants.DEC_BASE);
return [arrayElementType, arrayLength];
}
@@ -47,13 +48,13 @@ export class Array extends AbstractDataTypes.Set {
name: 'N/A',
};
const elementComponents = this.getDataItem().components;
- if (elementComponents !== undefined) {
+ if (!_.isUndefined(elementComponents)) {
elementDataItem.components = elementComponents;
}
const elementDataType = this.getFactory().create(elementDataItem);
const elementSignature = elementDataType.getSignature();
// Construct signature for array of type `element`
- if (this._arrayLength === undefined) {
+ if (_.isUndefined(this._arrayLength)) {
return `${elementSignature}[]`;
} else {
return `${elementSignature}[${this._arrayLength}]`;
diff --git a/packages/utils/src/abi_encoder/evm_data_types/int.ts b/packages/utils/src/abi_encoder/evm_data_types/int.ts
index 032cd045a..5c5193644 100644
--- a/packages/utils/src/abi_encoder/evm_data_types/int.ts
+++ b/packages/utils/src/abi_encoder/evm_data_types/int.ts
@@ -1,5 +1,6 @@
/* tslint:disable prefer-function-over-method */
import { DataItem } from 'ethereum-types';
+import * as _ from 'lodash';
import { BigNumber } from '../../configured_bignumber';
import { AbstractDataTypes, DataTypeFactory } from '../abstract_data_types';
@@ -25,7 +26,7 @@ export class Int extends AbstractDataTypes.Blob {
private static _decodeWidthFromType(type: string): number {
const matches = Int._MATCHER.exec(type);
const width =
- matches !== null && matches.length === 2 && matches[1] !== undefined
+ !_.isNull(matches) && matches.length === 2 && !_.isUndefined(matches[1])
? parseInt(matches[1], Constants.DEC_BASE)
: Int._DEFAULT_WIDTH;
return width;
diff --git a/packages/utils/src/abi_encoder/evm_data_types/static_bytes.ts b/packages/utils/src/abi_encoder/evm_data_types/static_bytes.ts
index 2c649cb33..3a2ad410f 100644
--- a/packages/utils/src/abi_encoder/evm_data_types/static_bytes.ts
+++ b/packages/utils/src/abi_encoder/evm_data_types/static_bytes.ts
@@ -21,7 +21,7 @@ export class StaticBytes extends AbstractDataTypes.Blob {
private static _decodeWidthFromType(type: string): number {
const matches = StaticBytes._MATCHER.exec(type);
const width =
- matches !== null && matches.length === 3 && matches[2] !== undefined
+ !_.isNull(matches) && matches.length === 3 && !_.isUndefined(matches[2])
? parseInt(matches[2], Constants.DEC_BASE)
: StaticBytes._DEFAULT_WIDTH;
return width;
diff --git a/packages/utils/src/abi_encoder/evm_data_types/uint.ts b/packages/utils/src/abi_encoder/evm_data_types/uint.ts
index b5b7683a2..76b944610 100644
--- a/packages/utils/src/abi_encoder/evm_data_types/uint.ts
+++ b/packages/utils/src/abi_encoder/evm_data_types/uint.ts
@@ -1,5 +1,6 @@
/* tslint:disable prefer-function-over-method */
import { DataItem } from 'ethereum-types';
+import * as _ from 'lodash';
import { BigNumber } from '../../configured_bignumber';
import { AbstractDataTypes, DataTypeFactory } from '../abstract_data_types';
@@ -25,7 +26,7 @@ export class UInt extends AbstractDataTypes.Blob {
private static _decodeWidthFromType(type: string): number {
const matches = UInt._MATCHER.exec(type);
const width =
- matches !== null && matches.length === 2 && matches[1] !== undefined
+ !_.isNull(matches) && matches.length === 2 && !_.isUndefined(matches[1])
? parseInt(matches[1], Constants.DEC_BASE)
: UInt._DEFAULT_WIDTH;
return width;