Skip to content

Commit 57f577e

Browse files
author
Karl Ranna
authored
feat: change config logic (#108)
* feat: rename OPENDEX_BASEASSET/QUOTEASSET -> BASEASSET/QUOTEASSET * feat: make CEX_BASEASSET and CEX_QUOTEASSET optional * fixup! feat: make CEX_BASEASSET and CEX_QUOTEASSET optional * fixup! feat: make CEX_BASEASSET and CEX_QUOTEASSET optional
1 parent e25675b commit 57f577e

18 files changed

+138
-110
lines changed

.env-example

Lines changed: 12 additions & 7 deletions
Original file line numberDiff line numberDiff line change
@@ -1,11 +1,16 @@
1+
LOG_LEVEL=trace
12
CEX=Binance
2-
CEX_API_KEY=123
3-
CEX_API_SECRET=abc
4-
DATA_DIR=/home/user/arby/data
5-
OPENDEX_CERT_PATH=/home/user/.xud/tls.cert
3+
CEX_API_KEY=abc
4+
CEX_API_SECRET=123
5+
DATA_DIR=/path/to/arby/data/dir
6+
OPENDEX_CERT_PATH=/path/to/.xud/tls.cert
67
OPENDEX_RPC_HOST=localhost
78
OPENDEX_RPC_PORT=8886
89
MARGIN=0.06
9-
TEST_CENTRALIZED_EXCHANGE_BASEASSET_BALANCE=40
10-
TEST_CENTRALIZED_EXCHANGE_QUOTEASSET_BALANCE=1
11-
LIVE_CEX=true
10+
BASEASSET=BTC
11+
QUOTEASSET=USDT
12+
CEX_BASEASSET=BTC
13+
CEX_QUOTEASSET=USDT
14+
TEST_CENTRALIZED_EXCHANGE_BASEASSET_BALANCE=10
15+
TEST_CENTRALIZED_EXCHANGE_QUOTEASSET_BALANCE=100000
16+
LIVE_CEX=false

src/arby.ts

Lines changed: 4 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -49,8 +49,8 @@ const logConfig = (config: Config, logger: Logger) => {
4949
MARGIN,
5050
CEX_BASEASSET,
5151
CEX_QUOTEASSET,
52-
OPENDEX_BASEASSET,
53-
OPENDEX_QUOTEASSET,
52+
BASEASSET,
53+
QUOTEASSET,
5454
TEST_CENTRALIZED_EXCHANGE_QUOTEASSET_BALANCE,
5555
TEST_CENTRALIZED_EXCHANGE_BASEASSET_BALANCE,
5656
LIVE_CEX,
@@ -65,8 +65,8 @@ OPENDEX_CERT_PATH: ${OPENDEX_CERT_PATH}
6565
OPENDEX_RPC_HOST: ${OPENDEX_RPC_HOST}
6666
OPENDEX_RPC_PORT: ${OPENDEX_RPC_PORT}
6767
MARGIN: ${MARGIN}
68-
OPENDEX_BASEASSET: ${OPENDEX_BASEASSET}
69-
OPENDEX_QUOTEASSET: ${OPENDEX_QUOTEASSET}
68+
BASEASSET: ${BASEASSET}
69+
QUOTEASSET: ${QUOTEASSET}
7070
CEX_BASEASSET: ${CEX_BASEASSET}
7171
CEX_QUOTEASSET: ${CEX_QUOTEASSET}
7272
TEST_CENTRALIZED_EXCHANGE_BASEASSET_BALANCE: ${TEST_CENTRALIZED_EXCHANGE_BASEASSET_BALANCE}

src/centralized/order-builder.spec.ts

Lines changed: 4 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -119,8 +119,8 @@ describe('getCentralizedExchangeOrder$', () => {
119119
...testConfig(),
120120
CEX_BASEASSET: BASEASSET,
121121
CEX_QUOTEASSET: QUOTEASSET,
122-
OPENDEX_BASEASSET: BASEASSET,
123-
OPENDEX_QUOTEASSET: QUOTEASSET,
122+
BASEASSET: BASEASSET,
123+
QUOTEASSET: QUOTEASSET,
124124
};
125125
const expectedAssetToTradeOnCEX = BASEASSET;
126126
const store = {
@@ -173,8 +173,8 @@ describe('getCentralizedExchangeOrder$', () => {
173173
...testConfig(),
174174
CEX_BASEASSET: BASEASSET,
175175
CEX_QUOTEASSET: QUOTEASSET,
176-
OPENDEX_BASEASSET: BASEASSET,
177-
OPENDEX_QUOTEASSET: QUOTEASSET,
176+
BASEASSET: BASEASSET,
177+
QUOTEASSET: QUOTEASSET,
178178
};
179179
const expectedAssetToTradeOnCEX = QUOTEASSET;
180180
const store = {

src/config.spec.ts

Lines changed: 42 additions & 28 deletions
Original file line numberDiff line numberDiff line change
@@ -10,10 +10,8 @@ describe('checkConfigOptions', () => {
1010
OPENDEX_RPC_HOST: 'localhost',
1111
OPENDEX_RPC_PORT: '1234',
1212
MARGIN: '0.06',
13-
CEX_BASEASSET: 'btc',
14-
CEX_QUOTEASSET: 'usdt',
15-
OPENDEX_BASEASSET: 'btc',
16-
OPENDEX_QUOTEASSET: 'usdt',
13+
BASEASSET: 'btc',
14+
QUOTEASSET: 'usdt',
1715
TEST_CENTRALIZED_EXCHANGE_BASEASSET_BALANCE: '321',
1816
TEST_CENTRALIZED_EXCHANGE_QUOTEASSET_BALANCE: '123',
1917
LIVE_CEX: 'false',
@@ -26,29 +24,47 @@ describe('checkConfigOptions', () => {
2624
...config,
2725
CEX: 'BINANCE',
2826
LIVE_CEX: false,
29-
OPENDEX_BASEASSET: 'BTC',
30-
OPENDEX_QUOTEASSET: 'USDT',
27+
BASEASSET: 'BTC',
28+
QUOTEASSET: 'USDT',
3129
CEX_BASEASSET: 'BTC',
3230
CEX_QUOTEASSET: 'USDT',
3331
});
3432
});
3533

34+
it('allows BTC/USDT with custom CEX_BASEASSET/CEX_QUOTEASSET', () => {
35+
expect.assertions(1);
36+
const config = checkConfigOptions({
37+
...validLiveCEXdisabledConf,
38+
CEX_BASEASSET: 'XBT',
39+
CEX_QUOTEASSET: 'USD',
40+
});
41+
expect(config).toEqual({
42+
...config,
43+
CEX: 'BINANCE',
44+
LIVE_CEX: false,
45+
BASEASSET: 'BTC',
46+
QUOTEASSET: 'USDT',
47+
CEX_BASEASSET: 'XBT',
48+
CEX_QUOTEASSET: 'USD',
49+
});
50+
});
51+
3652
it('allows ETH/BTC trading pair', () => {
3753
const config = checkConfigOptions({
3854
...validLiveCEXdisabledConf,
3955
...{
4056
CEX_BASEASSET: 'eth',
4157
CEX_QUOTEASSET: 'btc',
42-
OPENDEX_BASEASSET: 'eth',
43-
OPENDEX_QUOTEASSET: 'btc',
58+
BASEASSET: 'eth',
59+
QUOTEASSET: 'btc',
4460
},
4561
});
4662
expect(config).toEqual({
4763
...config,
4864
CEX: 'BINANCE',
4965
LIVE_CEX: false,
50-
OPENDEX_BASEASSET: 'ETH',
51-
OPENDEX_QUOTEASSET: 'BTC',
66+
BASEASSET: 'ETH',
67+
QUOTEASSET: 'BTC',
5268
CEX_BASEASSET: 'ETH',
5369
CEX_QUOTEASSET: 'BTC',
5470
});
@@ -88,10 +104,8 @@ describe('checkConfigOptions', () => {
88104
OPENDEX_RPC_HOST: 'localhost',
89105
OPENDEX_RPC_PORT: '1234',
90106
MARGIN: '0.06',
91-
CEX_BASEASSET: 'BTC',
92-
CEX_QUOTEASSET: 'USDT',
93-
OPENDEX_BASEASSET: 'BTC',
94-
OPENDEX_QUOTEASSET: 'USDT',
107+
BASEASSET: 'BTC',
108+
QUOTEASSET: 'USDT',
95109
LIVE_CEX: 'true',
96110
};
97111

@@ -111,8 +125,8 @@ describe('checkConfigOptions', () => {
111125
...{
112126
CEX_BASEASSET: 'USDT',
113127
CEX_QUOTEASSET: 'DAI',
114-
OPENDEX_BASEASSET: 'USDT',
115-
OPENDEX_QUOTEASSET: 'DAI',
128+
BASEASSET: 'USDT',
129+
QUOTEASSET: 'DAI',
116130
},
117131
});
118132
expect(config).toEqual({
@@ -121,8 +135,8 @@ describe('checkConfigOptions', () => {
121135
LIVE_CEX: true,
122136
CEX_BASEASSET: 'USDT',
123137
CEX_QUOTEASSET: 'DAI',
124-
OPENDEX_BASEASSET: 'USDT',
125-
OPENDEX_QUOTEASSET: 'DAI',
138+
BASEASSET: 'USDT',
139+
QUOTEASSET: 'DAI',
126140
});
127141
});
128142

@@ -133,8 +147,8 @@ describe('checkConfigOptions', () => {
133147
...{
134148
CEX_BASEASSET: 'BTC',
135149
CEX_QUOTEASSET: 'USD',
136-
OPENDEX_BASEASSET: 'BTC',
137-
OPENDEX_QUOTEASSET: 'USDT',
150+
BASEASSET: 'BTC',
151+
QUOTEASSET: 'USDT',
138152
},
139153
});
140154
expect(config).toEqual({
@@ -143,8 +157,8 @@ describe('checkConfigOptions', () => {
143157
LIVE_CEX: true,
144158
CEX_BASEASSET: 'BTC',
145159
CEX_QUOTEASSET: 'USD',
146-
OPENDEX_BASEASSET: 'BTC',
147-
OPENDEX_QUOTEASSET: 'USDT',
160+
BASEASSET: 'BTC',
161+
QUOTEASSET: 'USDT',
148162
});
149163
});
150164

@@ -155,8 +169,8 @@ describe('checkConfigOptions', () => {
155169
...{
156170
CEX_BASEASSET: 'USD',
157171
CEX_QUOTEASSET: 'DAI',
158-
OPENDEX_BASEASSET: 'USDT',
159-
OPENDEX_QUOTEASSET: 'DAI',
172+
BASEASSET: 'USDT',
173+
QUOTEASSET: 'DAI',
160174
},
161175
});
162176
expect(config).toEqual({
@@ -165,8 +179,8 @@ describe('checkConfigOptions', () => {
165179
LIVE_CEX: true,
166180
CEX_BASEASSET: 'USD',
167181
CEX_QUOTEASSET: 'DAI',
168-
OPENDEX_BASEASSET: 'USDT',
169-
OPENDEX_QUOTEASSET: 'DAI',
182+
BASEASSET: 'USDT',
183+
QUOTEASSET: 'DAI',
170184
});
171185
});
172186

@@ -176,8 +190,8 @@ describe('checkConfigOptions', () => {
176190
...{
177191
CEX_BASEASSET: 'ETH',
178192
CEX_QUOTEASSET: 'BTC',
179-
OPENDEX_BASEASSET: 'ETH',
180-
OPENDEX_QUOTEASSET: 'BTC',
193+
BASEASSET: 'ETH',
194+
QUOTEASSET: 'BTC',
181195
},
182196
});
183197
expect(config).toEqual({

src/config.ts

Lines changed: 20 additions & 11 deletions
Original file line numberDiff line numberDiff line change
@@ -14,8 +14,8 @@ export type Config = {
1414
OPENDEX_RPC_HOST: string;
1515
OPENDEX_RPC_PORT: string;
1616
MARGIN: string;
17-
OPENDEX_BASEASSET: Asset;
18-
OPENDEX_QUOTEASSET: Asset;
17+
BASEASSET: Asset;
18+
QUOTEASSET: Asset;
1919
CEX_BASEASSET: Asset;
2020
CEX_QUOTEASSET: Asset;
2121
TEST_CENTRALIZED_EXCHANGE_BASEASSET_BALANCE: string;
@@ -31,10 +31,8 @@ const REQUIRED_CONFIGURATION_OPTIONS = [
3131
'OPENDEX_RPC_HOST',
3232
'OPENDEX_RPC_PORT',
3333
'MARGIN',
34-
'OPENDEX_BASEASSET',
35-
'OPENDEX_QUOTEASSET',
36-
'CEX_BASEASSET',
37-
'CEX_QUOTEASSET',
34+
'BASEASSET',
35+
'QUOTEASSET',
3836
'LIVE_CEX',
3937
];
4038

@@ -48,6 +46,8 @@ const REQUIRED_CONFIGURATION_OPTIONS_LIVE_CEX_DISABLED = [
4846
'TEST_CENTRALIZED_EXCHANGE_QUOTEASSET_BALANCE',
4947
];
5048

49+
const OPTIONAL_CONFIG = ['CEX_BASEASSET', 'CEX_QUOTEASSET'];
50+
5151
const setLogLevel = (logLevel: string): Level => {
5252
return Object.values(Level).reduce((finalLevel, level) => {
5353
if (logLevel === level) {
@@ -60,7 +60,8 @@ const setLogLevel = (logLevel: string): Level => {
6060
const getEnvironmentConfig = (): DotenvParseOutput => {
6161
const environmentConfig = REQUIRED_CONFIGURATION_OPTIONS.concat(
6262
REQUIRED_CONFIGURATION_OPTIONS_LIVE_CEX_ENABLED,
63-
REQUIRED_CONFIGURATION_OPTIONS_LIVE_CEX_DISABLED
63+
REQUIRED_CONFIGURATION_OPTIONS_LIVE_CEX_DISABLED,
64+
OPTIONAL_CONFIG
6465
).reduce((envConfig: DotenvParseOutput, configOption) => {
6566
if (process.env[configOption]) {
6667
return {
@@ -99,15 +100,23 @@ const checkConfigOptions = (dotEnvConfig: DotenvParseOutput): Config => {
99100
`Incomplete configuration. Please add the following options to .env or as environment variables: ${missingOptions}`
100101
);
101102
}
103+
const BASEASSET = config.BASEASSET.toUpperCase();
104+
const QUOTEASSET = config.QUOTEASSET.toUpperCase();
105+
const CEX_BASEASSET = config.CEX_BASEASSET
106+
? config.CEX_BASEASSET.toUpperCase()
107+
: BASEASSET;
108+
const CEX_QUOTEASSET = config.CEX_QUOTEASSET
109+
? config.CEX_QUOTEASSET.toUpperCase()
110+
: QUOTEASSET;
102111
const verifiedConfig = {
103112
...config,
104113
LOG_LEVEL: setLogLevel(config.LOG_LEVEL),
105114
LIVE_CEX: config.LIVE_CEX === 'true' ? true : false,
106115
CEX: config.CEX.toUpperCase(),
107-
OPENDEX_BASEASSET: config.OPENDEX_BASEASSET.toUpperCase(),
108-
OPENDEX_QUOTEASSET: config.OPENDEX_QUOTEASSET.toUpperCase(),
109-
CEX_BASEASSET: config.CEX_BASEASSET.toUpperCase(),
110-
CEX_QUOTEASSET: config.CEX_QUOTEASSET.toUpperCase(),
116+
BASEASSET,
117+
QUOTEASSET,
118+
CEX_BASEASSET,
119+
CEX_QUOTEASSET,
111120
};
112121
return verifiedConfig as Config;
113122
};

0 commit comments

Comments
 (0)