aboutsummaryrefslogtreecommitdiffstats
path: root/packages/connect/src/utils/type_converters.ts
blob: bf17a562986351f9b9578e88e82b6392a448b2ea (plain) (blame)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
import * as _ from 'lodash';
import {BigNumber} from 'bignumber.js';

// TODO: convert all of these to non-mutating, pure functions
export const typeConverters = {
    convertOrderbookStringFieldsToBigNumber(orderbook: object): void {
        _.each(orderbook, (orders: object[]) => {
            _.each(orders, (order: object) => this.convertOrderStringFieldsToBigNumber(order));
        });
    },
    convertOrderStringFieldsToBigNumber(order: object): void {
        this.convertStringsFieldsToBigNumbers(order, [
            'makerTokenAmount',
            'takerTokenAmount',
            'makerFee',
            'takerFee',
            'expirationUnixTimestampSec',
            'salt',
        ]);
    },
    convertBigNumberFieldsToStrings(obj: object, fields: string[]): void {
        _.each(fields, field => {
            _.update(obj, field, (value: BigNumber) => value.toString());
        });
    },
    convertStringsFieldsToBigNumbers(obj: object, fields: string[]): void {
        _.each(fields, field => {
            _.update(obj, field, (value: string) => new BigNumber(value));
        });
    },
};