Skip to content

Commit bebfc47

Browse files
committed
refactor
1 parent b9693f5 commit bebfc47

File tree

12 files changed

+109
-108
lines changed

12 files changed

+109
-108
lines changed

src/core/Queue.ts

Lines changed: 6 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -1,11 +1,14 @@
11
import {AddTransaction, MessagesQueue, Transaction, Transactions} from '../interface/Interface'
22
import {Listener} from '../modules/Listener'
3-
import {Time, Timer, Utils} from '..'
3+
import {Time, Timer} from '..'
44
import {ConnectionStatus, errorCode, Listeners, TransactionStatus, TransactionType} from '../enum/Enum'
55
import {WebSocketWrapper} from '../modules/WebSocketWrapper'
66
import {JsonError} from 'logger4'
77
import {XAPI} from './XAPI'
88
import {transactionToJSONString} from '../utils/transactionToJSONString'
9+
import {formatNumber} from '../utils/formatNumber'
10+
import {getUTCTimestampString} from '../utils/getUTCTimestampString'
11+
import {hideSecretInfo} from '../utils/hideSecretInfo'
912

1013
export class Queue extends Listener {
1114
public transactions: Transactions = {}
@@ -66,7 +69,7 @@ export class Queue extends Listener {
6669
if (this._transactionIdIncrement > 9999) {
6770
this._transactionIdIncrement = 0
6871
}
69-
return Utils.getUTCTimestampString() + Utils.formatNumber(this._transactionIdIncrement, 4) + (this.type === TransactionType.SOCKET ? '0' : '1')
72+
return getUTCTimestampString() + formatNumber(this._transactionIdIncrement, 4) + (this.type === TransactionType.SOCKET ? '0' : '1')
7073
}
7174

7275
public rejectOldTransactions(): void {
@@ -176,7 +179,7 @@ export class Queue extends Listener {
176179
transaction.transactionPromise = {resolve: null, reject: null}
177180
const error = new JsonError('Transaction Rejected', {
178181
reason: json,
179-
transaction: transaction.command === 'login' ? Utils.hideSecretInfo(transaction) : transaction
182+
transaction: transaction.command === 'login' ? hideSecretInfo(transaction) : transaction
180183
})
181184
error.stack = transaction.stack
182185
reject(error)

src/core/Socket/SocketConnection.ts

Lines changed: 4 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -1,9 +1,10 @@
11
import {TransactionResolveSocket} from '../../interface/Interface'
2-
import {Time, Timer, Utils} from '../..'
2+
import {Time, Timer} from '../..'
33
import {WebSocketWrapper} from '../../modules/WebSocketWrapper'
44
import {ConnectionStatus, errorCode, Listeners, TransactionStatus, TransactionType} from '../../enum/Enum'
55
import {Queue} from '../Queue'
66
import {XAPI} from '../XAPI'
7+
import {parseCustomTag} from '../../utils/parseCustomTag'
78

89
export class SocketConnection extends Queue {
910
private _password: string
@@ -169,7 +170,7 @@ export class SocketConnection extends Queue {
169170
}
170171

171172
private handleError(code: any, explain: any, customTag: string | null, received: Time) {
172-
const {transactionId} = Utils.parseCustomTag(customTag)
173+
const {transactionId} = parseCustomTag(customTag)
173174

174175
if (transactionId !== null && this.transactions[transactionId] !== undefined) {
175176
this.rejectTransaction({code, explain}, this.transactions[transactionId], false, received)
@@ -190,7 +191,7 @@ export class SocketConnection extends Queue {
190191
const customTag = typeof (message.customTag) === 'string'
191192
? message.customTag
192193
: null
193-
const {transactionId, command} = Utils.parseCustomTag(customTag)
194+
const {transactionId, command} = parseCustomTag(customTag)
194195

195196
if (transactionId !== null && command !== null && this.transactions[transactionId] !== undefined) {
196197
this.resolveTransaction(json, returnData, time, this.transactions[transactionId])

src/core/XAPI.ts

Lines changed: 9 additions & 8 deletions
Original file line numberDiff line numberDiff line change
@@ -8,12 +8,13 @@ import {
88
STREAMING_TRADE_RECORD,
99
Time,
1010
TYPE_FIELD,
11-
Utils
1211
} from '..'
1312
import {TradePosition, TradePositions, TradeStatus} from '../interface/Interface'
1413
import {CHART_RATE_LIMIT_BY_PERIOD, Currency2Pair, Listeners, PositionType, RelevantCurrencies} from '../enum/Enum'
1514
import {Socket} from './Socket/Socket'
1615
import {Stream} from './Stream/Stream'
16+
import {getObjectChanges} from '../utils/getObjectChanges'
17+
import {formatPosition} from '../utils/formatPosition'
1718

1819
export const DefaultHostname = 'ws.xapi.pro'
1920
export const DefaultRateLimit = 850
@@ -154,7 +155,7 @@ export class XAPI extends Listener {
154155
data.forEach(t => {
155156
if (this._positions[t.position] === undefined || this._positions[t.position].value !== null) {
156157
obj[t.position] = {
157-
value: Utils.formatPosition(t),
158+
value: formatPosition(t),
158159
lastUpdated: sent
159160
}
160161
}
@@ -186,27 +187,27 @@ export class XAPI extends Listener {
186187
&& t.cmd !== CMD_FIELD.SELL_LIMIT
187188
&& t.cmd !== CMD_FIELD.BUY_STOP
188189
&& t.cmd !== CMD_FIELD.SELL_STOP) {
189-
this.callListener(Listeners.xapi_onPendingPosition, [Utils.formatPosition(t)])
190+
this.callListener(Listeners.xapi_onPendingPosition, [formatPosition(t)])
190191
} else if (t.state === 'Deleted') {
191192
if (this._positions[t.position] !== undefined && this._positions[t.position].value !== null) {
192193
this._positions[t.position] = {value: null, lastUpdated: time}
193-
this.callListener(Listeners.xapi_onDeletePosition, [Utils.formatPosition(t)])
194+
this.callListener(Listeners.xapi_onDeletePosition, [formatPosition(t)])
194195
}
195196
} else if (this._positions[t.position] === undefined || this._positions[t.position].value !== null) {
196197
if (this._positions[t.position] !== undefined) {
197198
const {value} = this._positions[t.position]
198199

199200
if (value) {
200-
const changes = Utils.getObjectChanges(value, Utils.formatPosition(t))
201+
const changes = getObjectChanges(value, formatPosition(t))
201202
if (Object.keys(changes).length > 0) {
202-
this.callListener(Listeners.xapi_onChangePosition, [Utils.formatPosition(t)])
203+
this.callListener(Listeners.xapi_onChangePosition, [formatPosition(t)])
203204
}
204205
}
205206
} else {
206-
this.callListener(Listeners.xapi_onCreatePosition, [Utils.formatPosition(t)])
207+
this.callListener(Listeners.xapi_onCreatePosition, [formatPosition(t)])
207208
}
208209

209-
this._positions[t.position] = {value: Utils.formatPosition(t), lastUpdated: time}
210+
this._positions[t.position] = {value: formatPosition(t), lastUpdated: time}
210211
}
211212
})
212213

src/index.ts

Lines changed: 1 addition & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -37,7 +37,6 @@ import {
3737
TYPE_FIELD,
3838
} from './enum/Enum'
3939
import {parseJsonLogin} from './modules/parseJsonLogin'
40-
import {Utils} from './utils/Utils'
4140
import {Time} from './modules/Time'
4241
import {TradePosition, TradeStatus} from './interface/Interface'
4342
import {Timer} from './modules/Timer'
@@ -85,7 +84,7 @@ export {
8584
errorCode,
8685
}
8786

88-
export {parseJsonLogin, Utils, Time, TradePosition, Timer, TradeStatus, ListenerChild}
87+
export {parseJsonLogin, Time, TradePosition, Timer, TradeStatus, ListenerChild}
8988

9089
export function getContractValue({price, lot, contractSize, currency, currencyProfit}:
9190
{ price: number, lot: number, contractSize: number, currency: string, currencyProfit: string }) {

src/utils/Utils.ts

Lines changed: 0 additions & 92 deletions
This file was deleted.

src/utils/formatNumber.ts

Lines changed: 6 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,6 @@
1+
export function formatNumber(number: number, length: number): string {
2+
let result = number.toString()
3+
return (length - result.length > 0)
4+
? '0'.repeat(length - result.length) + result
5+
: result
6+
}

src/utils/formatPosition.ts

Lines changed: 28 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,28 @@
1+
import {STREAMING_TRADE_RECORD, TRADE_RECORD, TradePosition} from '..'
2+
import {getPositionType} from './getPositionType'
3+
4+
export function formatPosition(t: STREAMING_TRADE_RECORD | TRADE_RECORD): TradePosition {
5+
return {
6+
close_time: t.close_time,
7+
closed: t.closed,
8+
cmd: t.cmd,
9+
comment: t.comment,
10+
commission: t.commission,
11+
customComment: t.customComment,
12+
digits: t.digits,
13+
expiration: t.expiration,
14+
margin_rate: t.margin_rate,
15+
offset: t.offset,
16+
open_price: t.open_price,
17+
open_time: t.open_time,
18+
order: t.order,
19+
order2: t.order2,
20+
position: t.position,
21+
sl: t.sl,
22+
storage: t.storage,
23+
symbol: t.symbol,
24+
tp: t.tp,
25+
volume: t.volume,
26+
position_type: getPositionType({cmd: t.cmd, closed: t.closed, close_time: t.close_time})
27+
}
28+
}

src/utils/getObjectChanges.ts

Lines changed: 11 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,11 @@
1+
import {TradeRecord} from '../core/TradeRecord'
2+
3+
export function getObjectChanges(from: TradeRecord, to: TradeRecord) {
4+
const obj: any = {}
5+
// @ts-ignore
6+
Object.keys(from).filter(key => from[key] !== to[key]).forEach(key => {
7+
// @ts-ignore
8+
obj[key] = to[key]
9+
})
10+
return obj
11+
}

src/utils/getPositionType.ts

Lines changed: 17 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,17 @@
1+
import {CMD_FIELD, PositionType} from '../enum/Enum'
2+
3+
export function getPositionType({
4+
cmd,
5+
closed,
6+
close_time
7+
}: { cmd: CMD_FIELD, closed: boolean, close_time: number }): PositionType {
8+
if (cmd === CMD_FIELD.SELL || cmd === CMD_FIELD.BUY) {
9+
return close_time === null && !closed
10+
? PositionType.open
11+
: PositionType.closed
12+
} else {
13+
return cmd === CMD_FIELD.BALANCE || cmd === CMD_FIELD.CREDIT
14+
? PositionType.source
15+
: PositionType.limit
16+
}
17+
}

src/utils/getUTCTimestampString.ts

Lines changed: 3 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,3 @@
1+
export function getUTCTimestampString(): string {
2+
return new Date().getTime().toString()
3+
}

0 commit comments

Comments
 (0)