aboutsummaryrefslogtreecommitdiffstats
path: root/packages/utils/src/abi_encoder/abstract_data_types
diff options
context:
space:
mode:
authorGreg Hysen <greg.hysen@gmail.com>2018-11-26 10:24:46 +0800
committerGreg Hysen <greg.hysen@gmail.com>2018-11-29 08:38:11 +0800
commit9a51af46ee4a35b3d1ce2fcdc6f561aa68307cf0 (patch)
tree1978be0aa6086aeba0337d37dae01e26871278f9 /packages/utils/src/abi_encoder/abstract_data_types
parentbb4d02e413119132f283ee17549cf5e1732d75b5 (diff)
downloaddexon-sol-tools-9a51af46ee4a35b3d1ce2fcdc6f561aa68307cf0.tar
dexon-sol-tools-9a51af46ee4a35b3d1ce2fcdc6f561aa68307cf0.tar.gz
dexon-sol-tools-9a51af46ee4a35b3d1ce2fcdc6f561aa68307cf0.tar.bz2
dexon-sol-tools-9a51af46ee4a35b3d1ce2fcdc6f561aa68307cf0.tar.lz
dexon-sol-tools-9a51af46ee4a35b3d1ce2fcdc6f561aa68307cf0.tar.xz
dexon-sol-tools-9a51af46ee4a35b3d1ce2fcdc6f561aa68307cf0.tar.zst
dexon-sol-tools-9a51af46ee4a35b3d1ce2fcdc6f561aa68307cf0.zip
Payload -> Blob, Dependent -> Pointer, Member -> Set
Diffstat (limited to 'packages/utils/src/abi_encoder/abstract_data_types')
-rw-r--r--packages/utils/src/abi_encoder/abstract_data_types/index.ts5
-rw-r--r--packages/utils/src/abi_encoder/abstract_data_types/types/blob.ts (renamed from packages/utils/src/abi_encoder/abstract_data_types/payload_data_type.ts)14
-rw-r--r--packages/utils/src/abi_encoder/abstract_data_types/types/index.ts3
-rw-r--r--packages/utils/src/abi_encoder/abstract_data_types/types/pointer.ts (renamed from packages/utils/src/abi_encoder/abstract_data_types/dependent_data_type.ts)16
-rw-r--r--packages/utils/src/abi_encoder/abstract_data_types/types/set.ts (renamed from packages/utils/src/abi_encoder/abstract_data_types/member_data_type.ts)41
5 files changed, 41 insertions, 38 deletions
diff --git a/packages/utils/src/abi_encoder/abstract_data_types/index.ts b/packages/utils/src/abi_encoder/abstract_data_types/index.ts
index 9ad568134..d1c7d93e4 100644
--- a/packages/utils/src/abi_encoder/abstract_data_types/index.ts
+++ b/packages/utils/src/abi_encoder/abstract_data_types/index.ts
@@ -1,5 +1,4 @@
export * from './interfaces';
export * from './data_type';
-export * from './dependent_data_type';
-export * from './member_data_type';
-export * from './payload_data_type';
+import * as AbstractDataTypes from './types';
+export { AbstractDataTypes };
diff --git a/packages/utils/src/abi_encoder/abstract_data_types/payload_data_type.ts b/packages/utils/src/abi_encoder/abstract_data_types/types/blob.ts
index fa420bc74..f4246c893 100644
--- a/packages/utils/src/abi_encoder/abstract_data_types/payload_data_type.ts
+++ b/packages/utils/src/abi_encoder/abstract_data_types/types/blob.ts
@@ -1,13 +1,13 @@
import { DataItem } from 'ethereum-types';
import * as _ from 'lodash';
-import { CalldataBlock, PayloadCalldataBlock, RawCalldata } from '../calldata';
-import { DecodingRules } from '../utils/rules';
+import { CalldataBlock, CalldataBlocks, RawCalldata } from '../../calldata';
+import { DecodingRules } from '../../utils/rules';
-import { DataType } from './data_type';
-import { DataTypeFactory } from './interfaces';
+import { DataType } from '../data_type';
+import { DataTypeFactory } from '../interfaces';
-export abstract class PayloadDataType extends DataType {
+export abstract class Blob extends DataType {
protected _hasConstantSize: boolean;
public constructor(dataItem: DataItem, factory: DataTypeFactory, hasConstantSize: boolean) {
@@ -15,12 +15,12 @@ export abstract class PayloadDataType extends DataType {
this._hasConstantSize = hasConstantSize;
}
- public generateCalldataBlock(value: any, parentBlock?: CalldataBlock): PayloadCalldataBlock {
+ public generateCalldataBlock(value: any, parentBlock?: CalldataBlock): CalldataBlocks.Blob {
const encodedValue = this.encodeValue(value);
const name = this.getDataItem().name;
const signature = this.getSignature();
const parentName = parentBlock ? parentBlock.getName() : '';
- const block = new PayloadCalldataBlock(name, signature, parentName, encodedValue);
+ const block = new CalldataBlocks.Blob(name, signature, parentName, encodedValue);
return block;
}
diff --git a/packages/utils/src/abi_encoder/abstract_data_types/types/index.ts b/packages/utils/src/abi_encoder/abstract_data_types/types/index.ts
new file mode 100644
index 000000000..958582dae
--- /dev/null
+++ b/packages/utils/src/abi_encoder/abstract_data_types/types/index.ts
@@ -0,0 +1,3 @@
+export * from './blob';
+export * from './pointer';
+export * from './set';
diff --git a/packages/utils/src/abi_encoder/abstract_data_types/dependent_data_type.ts b/packages/utils/src/abi_encoder/abstract_data_types/types/pointer.ts
index 7649b1836..47efac521 100644
--- a/packages/utils/src/abi_encoder/abstract_data_types/dependent_data_type.ts
+++ b/packages/utils/src/abi_encoder/abstract_data_types/types/pointer.ts
@@ -2,14 +2,14 @@ import { DataItem } from 'ethereum-types';
import * as ethUtil from 'ethereumjs-util';
import * as _ from 'lodash';
-import { CalldataBlock, DependentCalldataBlock, RawCalldata } from '../calldata';
-import * as Constants from '../utils/constants';
-import { DecodingRules } from '../utils/rules';
+import { CalldataBlock, CalldataBlocks, RawCalldata } from '../../calldata';
+import * as Constants from '../../utils/constants';
+import { DecodingRules } from '../../utils/rules';
-import { DataType } from './data_type';
-import { DataTypeFactory } from './interfaces';
+import { DataType } from '../data_type';
+import { DataTypeFactory } from '../interfaces';
-export abstract class DependentDataType extends DataType {
+export abstract class Pointer extends DataType {
protected _dependency: DataType;
protected _parent: DataType;
private readonly _isStatic: boolean;
@@ -21,7 +21,7 @@ export abstract class DependentDataType extends DataType {
this._isStatic = true;
}
- public generateCalldataBlock(value: any, parentBlock?: CalldataBlock): DependentCalldataBlock {
+ public generateCalldataBlock(value: any, parentBlock?: CalldataBlock): CalldataBlocks.Pointer {
if (parentBlock === undefined) {
throw new Error(`DependentDataType requires a parent block to generate its block`);
}
@@ -29,7 +29,7 @@ export abstract class DependentDataType extends DataType {
const name = this.getDataItem().name;
const signature = this.getSignature();
const parentName = parentBlock ? parentBlock.getName() : '';
- const block = new DependentCalldataBlock(name, signature, parentName, dependencyBlock, parentBlock);
+ const block = new CalldataBlocks.Pointer(name, signature, parentName, dependencyBlock, parentBlock);
return block;
}
diff --git a/packages/utils/src/abi_encoder/abstract_data_types/member_data_type.ts b/packages/utils/src/abi_encoder/abstract_data_types/types/set.ts
index dacdbf8af..77fd7b3ea 100644
--- a/packages/utils/src/abi_encoder/abstract_data_types/member_data_type.ts
+++ b/packages/utils/src/abi_encoder/abstract_data_types/types/set.ts
@@ -2,16 +2,17 @@ import { DataItem } from 'ethereum-types';
import * as ethUtil from 'ethereumjs-util';
import * as _ from 'lodash';
-import { BigNumber } from '../../configured_bignumber';
-import { CalldataBlock, MemberCalldataBlock, RawCalldata } from '../calldata';
-import * as Constants from '../utils/constants';
-import { DecodingRules } from '../utils/rules';
+import { BigNumber } from '../../../configured_bignumber';
+import { CalldataBlock, CalldataBlocks, RawCalldata } from '../../calldata';
+import * as Constants from '../../utils/constants';
+import { DecodingRules } from '../../utils/rules';
-import { DataType } from './data_type';
-import { DependentDataType } from './dependent_data_type';
-import { DataTypeFactory, MemberIndexByName } from './interfaces';
+import { DataType } from '../data_type';
+import { DataTypeFactory, MemberIndexByName } from '../interfaces';
-export abstract class MemberDataType extends DataType {
+import { Pointer } from './pointer';
+
+export abstract class Set extends DataType {
protected readonly _arrayLength: number | undefined;
protected readonly _arrayElementType: string | undefined;
private readonly _memberIndexByName: MemberIndexByName;
@@ -38,7 +39,7 @@ export abstract class MemberDataType extends DataType {
}
}
- public generateCalldataBlock(value: any[] | object, parentBlock?: CalldataBlock): MemberCalldataBlock {
+ public generateCalldataBlock(value: any[] | object, parentBlock?: CalldataBlock): CalldataBlocks.Set {
const block =
value instanceof Array
? this._generateCalldataBlockFromArray(value, parentBlock)
@@ -94,13 +95,13 @@ export abstract class MemberDataType extends DataType {
// Search for dependent members
const dependentMember = _.find(this._members, (member: DataType) => {
- return member instanceof DependentDataType;
+ return member instanceof Pointer;
});
const isStatic = dependentMember === undefined; // static if we couldn't find a dependent member
return isStatic;
}
- protected _generateCalldataBlockFromArray(value: any[], parentBlock?: CalldataBlock): MemberCalldataBlock {
+ protected _generateCalldataBlockFromArray(value: any[], parentBlock?: CalldataBlock): CalldataBlocks.Set {
// Sanity check length
if (this._arrayLength !== undefined && value.length !== this._arrayLength) {
throw new Error(
@@ -111,7 +112,7 @@ export abstract class MemberDataType extends DataType {
}
const parentName = parentBlock === undefined ? '' : parentBlock.getName();
- const methodBlock: MemberCalldataBlock = new MemberCalldataBlock(
+ const methodBlock: CalldataBlocks.Set = new CalldataBlocks.Set(
this.getDataItem().name,
this.getSignature(),
parentName,
@@ -128,23 +129,23 @@ export abstract class MemberDataType extends DataType {
methodBlock.setHeader(lenBuf);
}
- const memberBlocks: CalldataBlock[] = [];
+ const memberCalldataBlocks: CalldataBlock[] = [];
_.each(members, (member: DataType, idx: number) => {
const block = member.generateCalldataBlock(value[idx], methodBlock);
- memberBlocks.push(block);
+ memberCalldataBlocks.push(block);
});
- methodBlock.setMembers(memberBlocks);
+ methodBlock.setMembers(memberCalldataBlocks);
return methodBlock;
}
- protected _generateCalldataBlockFromObject(obj: object, parentBlock?: CalldataBlock): MemberCalldataBlock {
+ protected _generateCalldataBlockFromObject(obj: object, parentBlock?: CalldataBlock): CalldataBlocks.Set {
const parentName = parentBlock === undefined ? '' : parentBlock.getName();
- const methodBlock: MemberCalldataBlock = new MemberCalldataBlock(
+ const methodBlock: CalldataBlocks.Set = new CalldataBlocks.Set(
this.getDataItem().name,
this.getSignature(),
parentName,
);
- const memberBlocks: CalldataBlock[] = [];
+ const memberCalldataBlocks: CalldataBlock[] = [];
const childMap = _.cloneDeep(this._memberIndexByName);
_.forOwn(obj, (value: any, key: string) => {
if (!(key in childMap)) {
@@ -153,7 +154,7 @@ export abstract class MemberDataType extends DataType {
);
}
const block = this._members[this._memberIndexByName[key]].generateCalldataBlock(value, methodBlock);
- memberBlocks.push(block);
+ memberCalldataBlocks.push(block);
delete childMap[key];
});
@@ -161,7 +162,7 @@ export abstract class MemberDataType extends DataType {
throw new Error(`Could not assign tuple to object: missing keys ${Object.keys(childMap)}`);
}
- methodBlock.setMembers(memberBlocks);
+ methodBlock.setMembers(memberCalldataBlocks);
return methodBlock;
}