@quantform/core 0.3.251 → 0.3.255
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/dist/adapter/backtester/backtester-cursor.spec.js.map +1 -1
- package/dist/adapter/backtester/backtester-streamer.js +3 -0
- package/dist/adapter/backtester/backtester-streamer.js.map +1 -1
- package/dist/bootstrap.d.ts +11 -0
- package/dist/bootstrap.js +58 -0
- package/dist/bootstrap.js.map +1 -0
- package/dist/index.d.ts +1 -1
- package/dist/index.js +1 -1
- package/dist/index.js.map +1 -1
- package/dist/ipc.js +21 -37
- package/dist/ipc.js.map +1 -1
- package/dist/session/session.spec.js +2 -2
- package/dist/session/session.spec.js.map +1 -1
- package/dist/store/event/store-balance.event.d.ts +5 -6
- package/dist/store/event/store-balance.event.js +8 -8
- package/dist/store/event/store-balance.event.js.map +1 -1
- package/dist/store/event/store-candle.event.d.ts +2 -1
- package/dist/store/event/store-candle.event.js +25 -19
- package/dist/store/event/store-candle.event.js.map +1 -1
- package/dist/store/event/store-candle.event.spec.js +7 -8
- package/dist/store/event/store-candle.event.spec.js.map +1 -1
- package/dist/store/event/store-instrument.event.d.ts +6 -6
- package/dist/store/event/store-instrument.event.js +7 -7
- package/dist/store/event/store-instrument.event.js.map +1 -1
- package/dist/store/event/store-order.event.d.ts +9 -9
- package/dist/store/event/store-order.event.js +16 -16
- package/dist/store/event/store-order.event.js.map +1 -1
- package/dist/store/event/store-order.event.spec.js +7 -7
- package/dist/store/event/store-order.event.spec.js.map +1 -1
- package/dist/store/event/store-orderbook.event.d.ts +2 -3
- package/dist/store/event/store-orderbook.event.js +2 -2
- package/dist/store/event/store-orderbook.event.js.map +1 -1
- package/dist/store/event/store-position.event.d.ts +3 -3
- package/dist/store/event/store-position.event.js +6 -5
- package/dist/store/event/store-position.event.js.map +1 -1
- package/dist/store/event/store-trade.event.d.ts +2 -3
- package/dist/store/event/store-trade.event.js +2 -2
- package/dist/store/event/store-trade.event.js.map +1 -1
- package/dist/store/event/store-trade.event.spec.js +16 -17
- package/dist/store/event/store-trade.event.spec.js.map +1 -1
- package/dist/store/store.d.ts +23 -20
- package/dist/store/store.js +29 -28
- package/dist/store/store.js.map +1 -1
- package/dist/store/store.state.d.ts +5 -1
- package/dist/store/store.state.js.map +1 -1
- package/dist/tsconfig.tsbuildinfo +1 -1
- package/package.json +1 -1
- package/src/adapter/backtester/backtester-cursor.spec.ts +2 -2
- package/src/adapter/backtester/backtester-streamer.ts +5 -1
- package/src/bootstrap.ts +103 -0
- package/src/index.ts +1 -1
- package/src/ipc.ts +22 -40
- package/src/session/session.spec.ts +2 -4
- package/src/store/event/store-balance.event.ts +25 -9
- package/src/store/event/store-candle.event.spec.ts +8 -10
- package/src/store/event/store-candle.event.ts +44 -30
- package/src/store/event/store-instrument.event.ts +12 -7
- package/src/store/event/store-order.event.spec.ts +8 -8
- package/src/store/event/store-order.event.ts +46 -17
- package/src/store/event/store-orderbook.event.ts +7 -3
- package/src/store/event/store-position.event.ts +15 -7
- package/src/store/event/store-trade.event.spec.ts +18 -20
- package/src/store/event/store-trade.event.ts +7 -3
- package/src/store/store.state.ts +8 -2
- package/src/store/store.ts +33 -31
- package/dist/bin.d.ts +0 -5
- package/dist/bin.js +0 -28
- package/dist/bin.js.map +0 -1
- package/src/bin.ts +0 -71
|
@@ -1,19 +1,19 @@
|
|
|
1
1
|
import { timestamp } from '../../shared';
|
|
2
2
|
import { Asset, Commission } from '../../domain';
|
|
3
|
-
import {
|
|
4
|
-
import { State } from '../../store';
|
|
3
|
+
import { InstrumentSelector } from '../../domain/instrument';
|
|
4
|
+
import { State, StateChangeTracker } from '../../store';
|
|
5
5
|
import { StoreEvent } from './store.event';
|
|
6
6
|
export declare class InstrumentPatchEvent implements StoreEvent {
|
|
7
7
|
readonly timestamp: timestamp;
|
|
8
8
|
readonly base: Asset;
|
|
9
9
|
readonly quote: Asset;
|
|
10
|
-
readonly
|
|
10
|
+
readonly commission: Commission;
|
|
11
11
|
readonly raw: string;
|
|
12
12
|
readonly leverage?: number;
|
|
13
13
|
type: string;
|
|
14
|
-
constructor(timestamp: timestamp, base: Asset, quote: Asset,
|
|
14
|
+
constructor(timestamp: timestamp, base: Asset, quote: Asset, commission: Commission, raw: string, leverage?: number);
|
|
15
15
|
}
|
|
16
|
-
export declare function InstrumentPatchEventHandler(event: InstrumentPatchEvent, state: State):
|
|
16
|
+
export declare function InstrumentPatchEventHandler(event: InstrumentPatchEvent, state: State, changes: StateChangeTracker): void;
|
|
17
17
|
export declare class InstrumentSubscriptionEvent implements StoreEvent {
|
|
18
18
|
readonly timestamp: timestamp;
|
|
19
19
|
readonly instrument: InstrumentSelector;
|
|
@@ -21,4 +21,4 @@ export declare class InstrumentSubscriptionEvent implements StoreEvent {
|
|
|
21
21
|
type: string;
|
|
22
22
|
constructor(timestamp: timestamp, instrument: InstrumentSelector, subscribed: boolean);
|
|
23
23
|
}
|
|
24
|
-
export declare function InstrumentSubscriptionEventHandler(event: InstrumentSubscriptionEvent, state: State):
|
|
24
|
+
export declare function InstrumentSubscriptionEventHandler(event: InstrumentSubscriptionEvent, state: State, changes: StateChangeTracker): void;
|
|
@@ -14,11 +14,11 @@ const topic_1 = require("../../shared/topic");
|
|
|
14
14
|
const domain_1 = require("../../domain");
|
|
15
15
|
const instrument_1 = require("../../domain/instrument");
|
|
16
16
|
let InstrumentPatchEvent = class InstrumentPatchEvent {
|
|
17
|
-
constructor(timestamp, base, quote,
|
|
17
|
+
constructor(timestamp, base, quote, commission, raw, leverage) {
|
|
18
18
|
this.timestamp = timestamp;
|
|
19
19
|
this.base = base;
|
|
20
20
|
this.quote = quote;
|
|
21
|
-
this.
|
|
21
|
+
this.commission = commission;
|
|
22
22
|
this.raw = raw;
|
|
23
23
|
this.leverage = leverage;
|
|
24
24
|
this.type = 'instrument-patch';
|
|
@@ -31,7 +31,7 @@ InstrumentPatchEvent = __decorate([
|
|
|
31
31
|
domain_1.Commission, String, Number])
|
|
32
32
|
], InstrumentPatchEvent);
|
|
33
33
|
exports.InstrumentPatchEvent = InstrumentPatchEvent;
|
|
34
|
-
function InstrumentPatchEventHandler(event, state) {
|
|
34
|
+
function InstrumentPatchEventHandler(event, state, changes) {
|
|
35
35
|
const selector = new instrument_1.InstrumentSelector(event.base.name, event.quote.name, event.base.adapter);
|
|
36
36
|
let instrument = state.universe.instrument[selector.toString()];
|
|
37
37
|
if (!instrument) {
|
|
@@ -41,11 +41,11 @@ function InstrumentPatchEventHandler(event, state) {
|
|
|
41
41
|
state.universe.instrument[selector.toString()] = instrument;
|
|
42
42
|
}
|
|
43
43
|
instrument.timestamp = event.timestamp;
|
|
44
|
-
instrument.commission = event.
|
|
44
|
+
instrument.commission = event.commission;
|
|
45
45
|
if (event.leverage) {
|
|
46
46
|
instrument.leverage = event.leverage;
|
|
47
47
|
}
|
|
48
|
-
|
|
48
|
+
changes.commit(instrument);
|
|
49
49
|
}
|
|
50
50
|
exports.InstrumentPatchEventHandler = InstrumentPatchEventHandler;
|
|
51
51
|
let InstrumentSubscriptionEvent = class InstrumentSubscriptionEvent {
|
|
@@ -61,7 +61,7 @@ InstrumentSubscriptionEvent = __decorate([
|
|
|
61
61
|
__metadata("design:paramtypes", [Number, instrument_1.InstrumentSelector, Boolean])
|
|
62
62
|
], InstrumentSubscriptionEvent);
|
|
63
63
|
exports.InstrumentSubscriptionEvent = InstrumentSubscriptionEvent;
|
|
64
|
-
function InstrumentSubscriptionEventHandler(event, state) {
|
|
64
|
+
function InstrumentSubscriptionEventHandler(event, state, changes) {
|
|
65
65
|
const instrumentKey = event.instrument.toString();
|
|
66
66
|
if (!(instrumentKey in state.universe.instrument)) {
|
|
67
67
|
throw new Error(`Trying to patch not existing instrument: ${instrumentKey}`);
|
|
@@ -72,7 +72,7 @@ function InstrumentSubscriptionEventHandler(event, state) {
|
|
|
72
72
|
state.subscription.asset[instrument.base.toString()] = instrument.base;
|
|
73
73
|
state.subscription.asset[instrument.quote.toString()] = instrument.quote;
|
|
74
74
|
}
|
|
75
|
-
|
|
75
|
+
changes.commit(instrument);
|
|
76
76
|
}
|
|
77
77
|
exports.InstrumentSubscriptionEventHandler = InstrumentSubscriptionEventHandler;
|
|
78
78
|
//# sourceMappingURL=store-instrument.event.js.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"store-instrument.event.js","sourceRoot":"","sources":["../../../src/store/event/store-instrument.event.ts"],"names":[],"mappings":";;;;;;;;;;;;AAAA,8CAA2C;AAE3C,yCAAiD;AACjD,wDAAyE;AAKzE,IAAa,oBAAoB,GAAjC,MAAa,oBAAoB;IAG/B,YACW,SAAoB,EACpB,IAAW,EACX,KAAY,EACZ,
|
|
1
|
+
{"version":3,"file":"store-instrument.event.js","sourceRoot":"","sources":["../../../src/store/event/store-instrument.event.ts"],"names":[],"mappings":"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"}
|
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
import { timestamp } from '../../shared';
|
|
2
2
|
import { Order } from '../../domain';
|
|
3
|
-
import { State } from '../store.state';
|
|
3
|
+
import { State, StateChangeTracker } from '../store.state';
|
|
4
4
|
import { StoreEvent } from './store.event';
|
|
5
5
|
export declare class OrderLoadEvent implements StoreEvent {
|
|
6
6
|
readonly order: Order;
|
|
@@ -8,21 +8,21 @@ export declare class OrderLoadEvent implements StoreEvent {
|
|
|
8
8
|
type: string;
|
|
9
9
|
constructor(order: Order, timestamp: timestamp);
|
|
10
10
|
}
|
|
11
|
-
export declare function OrderLoadEventHandler(event: OrderLoadEvent, state: State):
|
|
11
|
+
export declare function OrderLoadEventHandler(event: OrderLoadEvent, state: State, changes: StateChangeTracker): void;
|
|
12
12
|
export declare class OrderNewEvent implements StoreEvent {
|
|
13
13
|
readonly order: Order;
|
|
14
14
|
readonly timestamp: timestamp;
|
|
15
15
|
type: string;
|
|
16
16
|
constructor(order: Order, timestamp: timestamp);
|
|
17
17
|
}
|
|
18
|
-
export declare function OrderNewEventHandler(event: OrderNewEvent, state: State):
|
|
18
|
+
export declare function OrderNewEventHandler(event: OrderNewEvent, state: State, changes: StateChangeTracker): void;
|
|
19
19
|
export declare class OrderPendingEvent implements StoreEvent {
|
|
20
20
|
readonly id: string;
|
|
21
21
|
readonly timestamp: timestamp;
|
|
22
22
|
type: string;
|
|
23
23
|
constructor(id: string, timestamp: timestamp);
|
|
24
24
|
}
|
|
25
|
-
export declare function OrderPendingEventHandler(event: OrderPendingEvent, state: State):
|
|
25
|
+
export declare function OrderPendingEventHandler(event: OrderPendingEvent, state: State, changes: StateChangeTracker): void;
|
|
26
26
|
export declare class OrderFilledEvent implements StoreEvent {
|
|
27
27
|
readonly id: string;
|
|
28
28
|
readonly averageExecutionRate: number;
|
|
@@ -30,32 +30,32 @@ export declare class OrderFilledEvent implements StoreEvent {
|
|
|
30
30
|
type: string;
|
|
31
31
|
constructor(id: string, averageExecutionRate: number, timestamp: timestamp);
|
|
32
32
|
}
|
|
33
|
-
export declare function OrderFilledEventHandler(event: OrderFilledEvent, state: State):
|
|
33
|
+
export declare function OrderFilledEventHandler(event: OrderFilledEvent, state: State, changes: StateChangeTracker): void;
|
|
34
34
|
export declare class OrderCancelingEvent implements StoreEvent {
|
|
35
35
|
readonly id: string;
|
|
36
36
|
readonly timestamp: timestamp;
|
|
37
37
|
type: string;
|
|
38
38
|
constructor(id: string, timestamp: timestamp);
|
|
39
39
|
}
|
|
40
|
-
export declare function OrderCancelingEventHandler(event: OrderCancelingEvent, state: State):
|
|
40
|
+
export declare function OrderCancelingEventHandler(event: OrderCancelingEvent, state: State, changes: StateChangeTracker): void;
|
|
41
41
|
export declare class OrderCanceledEvent implements StoreEvent {
|
|
42
42
|
readonly id: string;
|
|
43
43
|
readonly timestamp: timestamp;
|
|
44
44
|
type: string;
|
|
45
45
|
constructor(id: string, timestamp: timestamp);
|
|
46
46
|
}
|
|
47
|
-
export declare function OrderCanceledEventHandler(event: OrderCanceledEvent, state: State):
|
|
47
|
+
export declare function OrderCanceledEventHandler(event: OrderCanceledEvent, state: State, changes: StateChangeTracker): void;
|
|
48
48
|
export declare class OrderCancelFailedEvent implements StoreEvent {
|
|
49
49
|
readonly id: string;
|
|
50
50
|
readonly timestamp: timestamp;
|
|
51
51
|
type: string;
|
|
52
52
|
constructor(id: string, timestamp: timestamp);
|
|
53
53
|
}
|
|
54
|
-
export declare function OrderCancelFailedEventHandler(event: OrderCancelFailedEvent, state: State):
|
|
54
|
+
export declare function OrderCancelFailedEventHandler(event: OrderCancelFailedEvent, state: State, changes: StateChangeTracker): void;
|
|
55
55
|
export declare class OrderRejectedEvent implements StoreEvent {
|
|
56
56
|
readonly id: string;
|
|
57
57
|
readonly timestamp: timestamp;
|
|
58
58
|
type: string;
|
|
59
59
|
constructor(id: string, timestamp: timestamp);
|
|
60
60
|
}
|
|
61
|
-
export declare function OrderRejectedEventHandler(event: OrderRejectedEvent, state: State):
|
|
61
|
+
export declare function OrderRejectedEventHandler(event: OrderRejectedEvent, state: State, changes: StateChangeTracker): void;
|
|
@@ -24,7 +24,7 @@ OrderLoadEvent = __decorate([
|
|
|
24
24
|
__metadata("design:paramtypes", [domain_1.Order, Number])
|
|
25
25
|
], OrderLoadEvent);
|
|
26
26
|
exports.OrderLoadEvent = OrderLoadEvent;
|
|
27
|
-
function OrderLoadEventHandler(event, state) {
|
|
27
|
+
function OrderLoadEventHandler(event, state, changes) {
|
|
28
28
|
event.order.timestamp = event.timestamp;
|
|
29
29
|
switch (event.order.state) {
|
|
30
30
|
case 'NEW':
|
|
@@ -42,7 +42,7 @@ function OrderLoadEventHandler(event, state) {
|
|
|
42
42
|
state.order.rejected[event.order.id] = event.order;
|
|
43
43
|
break;
|
|
44
44
|
}
|
|
45
|
-
|
|
45
|
+
changes.commit(event.order);
|
|
46
46
|
}
|
|
47
47
|
exports.OrderLoadEventHandler = OrderLoadEventHandler;
|
|
48
48
|
let OrderNewEvent = class OrderNewEvent {
|
|
@@ -57,14 +57,14 @@ OrderNewEvent = __decorate([
|
|
|
57
57
|
__metadata("design:paramtypes", [domain_1.Order, Number])
|
|
58
58
|
], OrderNewEvent);
|
|
59
59
|
exports.OrderNewEvent = OrderNewEvent;
|
|
60
|
-
function OrderNewEventHandler(event, state) {
|
|
60
|
+
function OrderNewEventHandler(event, state, changes) {
|
|
61
61
|
if (event.order.state != 'NEW') {
|
|
62
62
|
throw new Error(`Order is not new`);
|
|
63
63
|
}
|
|
64
64
|
event.order.createdAt = event.timestamp;
|
|
65
65
|
event.order.timestamp = event.timestamp;
|
|
66
66
|
state.order.pending[event.order.id] = event.order;
|
|
67
|
-
|
|
67
|
+
changes.commit(event.order);
|
|
68
68
|
}
|
|
69
69
|
exports.OrderNewEventHandler = OrderNewEventHandler;
|
|
70
70
|
let OrderPendingEvent = class OrderPendingEvent {
|
|
@@ -79,7 +79,7 @@ OrderPendingEvent = __decorate([
|
|
|
79
79
|
__metadata("design:paramtypes", [String, Number])
|
|
80
80
|
], OrderPendingEvent);
|
|
81
81
|
exports.OrderPendingEvent = OrderPendingEvent;
|
|
82
|
-
function OrderPendingEventHandler(event, state) {
|
|
82
|
+
function OrderPendingEventHandler(event, state, changes) {
|
|
83
83
|
if (!(event.id in state.order.pending)) {
|
|
84
84
|
throw new Error(`Trying to patch unknown order: ${event.id}`);
|
|
85
85
|
}
|
|
@@ -89,7 +89,7 @@ function OrderPendingEventHandler(event, state) {
|
|
|
89
89
|
}
|
|
90
90
|
order.state = 'PENDING';
|
|
91
91
|
order.timestamp = event.timestamp;
|
|
92
|
-
|
|
92
|
+
changes.commit(order);
|
|
93
93
|
}
|
|
94
94
|
exports.OrderPendingEventHandler = OrderPendingEventHandler;
|
|
95
95
|
let OrderFilledEvent = class OrderFilledEvent {
|
|
@@ -105,7 +105,7 @@ OrderFilledEvent = __decorate([
|
|
|
105
105
|
__metadata("design:paramtypes", [String, Number, Number])
|
|
106
106
|
], OrderFilledEvent);
|
|
107
107
|
exports.OrderFilledEvent = OrderFilledEvent;
|
|
108
|
-
function OrderFilledEventHandler(event, state) {
|
|
108
|
+
function OrderFilledEventHandler(event, state, changes) {
|
|
109
109
|
if (!(event.id in state.order.pending)) {
|
|
110
110
|
throw new Error(`Trying to patch unknown order: ${event.id}`);
|
|
111
111
|
}
|
|
@@ -119,7 +119,7 @@ function OrderFilledEventHandler(event, state) {
|
|
|
119
119
|
order.averageExecutionRate = event.averageExecutionRate;
|
|
120
120
|
delete state.order.pending[event.id];
|
|
121
121
|
state.order.filled[event.id] = order;
|
|
122
|
-
|
|
122
|
+
changes.commit(order);
|
|
123
123
|
}
|
|
124
124
|
exports.OrderFilledEventHandler = OrderFilledEventHandler;
|
|
125
125
|
let OrderCancelingEvent = class OrderCancelingEvent {
|
|
@@ -134,7 +134,7 @@ OrderCancelingEvent = __decorate([
|
|
|
134
134
|
__metadata("design:paramtypes", [String, Number])
|
|
135
135
|
], OrderCancelingEvent);
|
|
136
136
|
exports.OrderCancelingEvent = OrderCancelingEvent;
|
|
137
|
-
function OrderCancelingEventHandler(event, state) {
|
|
137
|
+
function OrderCancelingEventHandler(event, state, changes) {
|
|
138
138
|
if (!(event.id in state.order.pending)) {
|
|
139
139
|
throw new Error(`Trying to patch unknown order: ${event.id}`);
|
|
140
140
|
}
|
|
@@ -147,7 +147,7 @@ function OrderCancelingEventHandler(event, state) {
|
|
|
147
147
|
}
|
|
148
148
|
order.state = 'CANCELING';
|
|
149
149
|
order.timestamp = event.timestamp;
|
|
150
|
-
|
|
150
|
+
changes.commit(order);
|
|
151
151
|
}
|
|
152
152
|
exports.OrderCancelingEventHandler = OrderCancelingEventHandler;
|
|
153
153
|
let OrderCanceledEvent = class OrderCanceledEvent {
|
|
@@ -162,7 +162,7 @@ OrderCanceledEvent = __decorate([
|
|
|
162
162
|
__metadata("design:paramtypes", [String, Number])
|
|
163
163
|
], OrderCanceledEvent);
|
|
164
164
|
exports.OrderCanceledEvent = OrderCanceledEvent;
|
|
165
|
-
function OrderCanceledEventHandler(event, state) {
|
|
165
|
+
function OrderCanceledEventHandler(event, state, changes) {
|
|
166
166
|
const order = state.order.pending[event.id];
|
|
167
167
|
if (order.state == 'CANCELED') {
|
|
168
168
|
return;
|
|
@@ -174,7 +174,7 @@ function OrderCanceledEventHandler(event, state) {
|
|
|
174
174
|
order.timestamp = event.timestamp;
|
|
175
175
|
delete state.order.pending[event.id];
|
|
176
176
|
state.order.canceled[event.id] = order;
|
|
177
|
-
|
|
177
|
+
changes.commit(order);
|
|
178
178
|
}
|
|
179
179
|
exports.OrderCanceledEventHandler = OrderCanceledEventHandler;
|
|
180
180
|
let OrderCancelFailedEvent = class OrderCancelFailedEvent {
|
|
@@ -189,14 +189,14 @@ OrderCancelFailedEvent = __decorate([
|
|
|
189
189
|
__metadata("design:paramtypes", [String, Number])
|
|
190
190
|
], OrderCancelFailedEvent);
|
|
191
191
|
exports.OrderCancelFailedEvent = OrderCancelFailedEvent;
|
|
192
|
-
function OrderCancelFailedEventHandler(event, state) {
|
|
192
|
+
function OrderCancelFailedEventHandler(event, state, changes) {
|
|
193
193
|
const order = state.order.pending[event.id];
|
|
194
194
|
if (order.state != 'CANCELING') {
|
|
195
195
|
return;
|
|
196
196
|
}
|
|
197
197
|
order.state = 'PENDING';
|
|
198
198
|
order.timestamp = event.timestamp;
|
|
199
|
-
|
|
199
|
+
changes.commit(order);
|
|
200
200
|
}
|
|
201
201
|
exports.OrderCancelFailedEventHandler = OrderCancelFailedEventHandler;
|
|
202
202
|
let OrderRejectedEvent = class OrderRejectedEvent {
|
|
@@ -211,7 +211,7 @@ OrderRejectedEvent = __decorate([
|
|
|
211
211
|
__metadata("design:paramtypes", [String, Number])
|
|
212
212
|
], OrderRejectedEvent);
|
|
213
213
|
exports.OrderRejectedEvent = OrderRejectedEvent;
|
|
214
|
-
function OrderRejectedEventHandler(event, state) {
|
|
214
|
+
function OrderRejectedEventHandler(event, state, changes) {
|
|
215
215
|
const order = state.order.pending[event.id];
|
|
216
216
|
if (order.state != 'NEW') {
|
|
217
217
|
throw new Error('Order is not new.');
|
|
@@ -220,7 +220,7 @@ function OrderRejectedEventHandler(event, state) {
|
|
|
220
220
|
order.timestamp = event.timestamp;
|
|
221
221
|
delete state.order.pending[event.id];
|
|
222
222
|
state.order.rejected[event.id] = order;
|
|
223
|
-
|
|
223
|
+
changes.commit(order);
|
|
224
224
|
}
|
|
225
225
|
exports.OrderRejectedEventHandler = OrderRejectedEventHandler;
|
|
226
226
|
//# sourceMappingURL=store-order.event.js.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"store-order.event.js","sourceRoot":"","sources":["../../../src/store/event/store-order.event.ts"],"names":[],"mappings":";;;;;;;;;;;;AAAA,8CAA2C;AAE3C,yCAAqC;AAKrC,IAAa,cAAc,GAA3B,MAAa,cAAc;IAGzB,YAAqB,KAAY,EAAW,SAAoB;QAA3C,UAAK,GAAL,KAAK,CAAO;QAAW,cAAS,GAAT,SAAS,CAAW;QAFhE,SAAI,GAAG,YAAY,CAAC;IAE+C,CAAC;CACrE,CAAA;AAJY,cAAc;IAD1B,aAAK;qCAIwB,cAAK;GAHtB,cAAc,CAI1B;AAJY,wCAAc;AAM3B,SAAgB,qBAAqB,
|
|
1
|
+
{"version":3,"file":"store-order.event.js","sourceRoot":"","sources":["../../../src/store/event/store-order.event.ts"],"names":[],"mappings":"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"}
|
|
@@ -1,21 +1,21 @@
|
|
|
1
1
|
"use strict";
|
|
2
2
|
Object.defineProperty(exports, "__esModule", { value: true });
|
|
3
|
-
const __1 = require("../");
|
|
4
3
|
const shared_1 = require("../../shared");
|
|
5
4
|
const domain_1 = require("../../domain");
|
|
6
5
|
const store_order_event_1 = require("./store-order.event");
|
|
6
|
+
const store_1 = require("../store");
|
|
7
7
|
const instrument = new domain_1.Instrument(new domain_1.Asset('btc', 'binance', 8), new domain_1.Asset('usdt', 'binance', 2), 'binance:btc-usdt');
|
|
8
8
|
describe('order load event tests', () => {
|
|
9
9
|
test('should load order to store', () => {
|
|
10
10
|
const timestamp = (0, shared_1.now)();
|
|
11
|
-
const
|
|
11
|
+
const store = new store_1.Store();
|
|
12
12
|
const order = domain_1.Order.buyMarket(instrument, 1.0);
|
|
13
13
|
order.state = 'PENDING';
|
|
14
|
-
|
|
15
|
-
|
|
16
|
-
|
|
17
|
-
expect(Object.keys(
|
|
18
|
-
expect(
|
|
14
|
+
store.snapshot.universe.instrument[instrument.toString()] = instrument;
|
|
15
|
+
store.snapshot.subscription.instrument[instrument.toString()] = instrument;
|
|
16
|
+
store.dispatch(new store_order_event_1.OrderLoadEvent(order, timestamp));
|
|
17
|
+
expect(Object.keys(store.snapshot.order.pending).length).toEqual(1);
|
|
18
|
+
expect(store.snapshot.order.pending[order.id]).toEqual(order);
|
|
19
19
|
});
|
|
20
20
|
});
|
|
21
21
|
//# sourceMappingURL=store-order.event.spec.js.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"store-order.event.spec.js","sourceRoot":"","sources":["../../../src/store/event/store-order.event.spec.ts"],"names":[],"mappings":";;AAAA,
|
|
1
|
+
{"version":3,"file":"store-order.event.spec.js","sourceRoot":"","sources":["../../../src/store/event/store-order.event.spec.ts"],"names":[],"mappings":";;AAAA,yCAAmC;AACnC,yCAAwD;AACxD,2DAAqD;AACrD,oCAAiC;AAEjC,MAAM,UAAU,GAAG,IAAI,mBAAU,CAC/B,IAAI,cAAK,CAAC,KAAK,EAAE,SAAS,EAAE,CAAC,CAAC,EAC9B,IAAI,cAAK,CAAC,MAAM,EAAE,SAAS,EAAE,CAAC,CAAC,EAC/B,kBAAkB,CACnB,CAAC;AAEF,QAAQ,CAAC,wBAAwB,EAAE,GAAG,EAAE;IACtC,IAAI,CAAC,4BAA4B,EAAE,GAAG,EAAE;QACtC,MAAM,SAAS,GAAG,IAAA,YAAG,GAAE,CAAC;QACxB,MAAM,KAAK,GAAG,IAAI,aAAK,EAAE,CAAC;QAC1B,MAAM,KAAK,GAAG,cAAK,CAAC,SAAS,CAAC,UAAU,EAAE,GAAG,CAAC,CAAC;QAE/C,KAAK,CAAC,KAAK,GAAG,SAAS,CAAC;QAExB,KAAK,CAAC,QAAQ,CAAC,QAAQ,CAAC,UAAU,CAAC,UAAU,CAAC,QAAQ,EAAE,CAAC,GAAG,UAAU,CAAC;QACvE,KAAK,CAAC,QAAQ,CAAC,YAAY,CAAC,UAAU,CAAC,UAAU,CAAC,QAAQ,EAAE,CAAC,GAAG,UAAU,CAAC;QAE3E,KAAK,CAAC,QAAQ,CAAC,IAAI,kCAAc,CAAC,KAAK,EAAE,SAAS,CAAC,CAAC,CAAC;QAErD,MAAM,CAAC,MAAM,CAAC,IAAI,CAAC,KAAK,CAAC,QAAQ,CAAC,KAAK,CAAC,OAAO,CAAC,CAAC,MAAM,CAAC,CAAC,OAAO,CAAC,CAAC,CAAC,CAAC;QACpE,MAAM,CAAC,KAAK,CAAC,QAAQ,CAAC,KAAK,CAAC,OAAO,CAAC,KAAK,CAAC,EAAE,CAAC,CAAC,CAAC,OAAO,CAAC,KAAK,CAAC,CAAC;IAChE,CAAC,CAAC,CAAC;AACL,CAAC,CAAC,CAAC"}
|
|
@@ -1,7 +1,6 @@
|
|
|
1
1
|
import { timestamp } from '../../shared';
|
|
2
2
|
import { InstrumentSelector } from '../../domain/instrument';
|
|
3
|
-
import {
|
|
4
|
-
import { State } from '../store.state';
|
|
3
|
+
import { State, StateChangeTracker } from '../store.state';
|
|
5
4
|
import { StoreEvent } from './store.event';
|
|
6
5
|
export declare class OrderbookPatchEvent implements StoreEvent {
|
|
7
6
|
readonly instrument: InstrumentSelector;
|
|
@@ -13,4 +12,4 @@ export declare class OrderbookPatchEvent implements StoreEvent {
|
|
|
13
12
|
type: string;
|
|
14
13
|
constructor(instrument: InstrumentSelector, bestAskRate: number, bestAskQuantity: number, bestBidRate: number, bestBidQuantity: number, timestamp: timestamp);
|
|
15
14
|
}
|
|
16
|
-
export declare function OrderbookPatchEventHandler(event: OrderbookPatchEvent, state: State):
|
|
15
|
+
export declare function OrderbookPatchEventHandler(event: OrderbookPatchEvent, state: State, changes: StateChangeTracker): void;
|
|
@@ -29,7 +29,7 @@ OrderbookPatchEvent = __decorate([
|
|
|
29
29
|
__metadata("design:paramtypes", [instrument_1.InstrumentSelector, Number, Number, Number, Number, Number])
|
|
30
30
|
], OrderbookPatchEvent);
|
|
31
31
|
exports.OrderbookPatchEvent = OrderbookPatchEvent;
|
|
32
|
-
function OrderbookPatchEventHandler(event, state) {
|
|
32
|
+
function OrderbookPatchEventHandler(event, state, changes) {
|
|
33
33
|
const instrumentKey = event.instrument.toString();
|
|
34
34
|
if (!(instrumentKey in state.subscription.instrument)) {
|
|
35
35
|
throw new Error(`Trying to patch unsubscribed instrument: ${instrumentKey}`);
|
|
@@ -59,7 +59,7 @@ function OrderbookPatchEventHandler(event, state) {
|
|
|
59
59
|
throw new Error('liquidated');
|
|
60
60
|
}
|
|
61
61
|
}
|
|
62
|
-
|
|
62
|
+
changes.commit(orderbook);
|
|
63
63
|
}
|
|
64
64
|
exports.OrderbookPatchEventHandler = OrderbookPatchEventHandler;
|
|
65
65
|
//# sourceMappingURL=store-orderbook.event.js.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"store-orderbook.event.js","sourceRoot":"","sources":["../../../src/store/event/store-orderbook.event.ts"],"names":[],"mappings":";;;;;;;;;;;;AAAA,8CAA2C;AAE3C,wDAA6D;AAC7D,sDAAmD;AAKnD,IAAa,mBAAmB,GAAhC,MAAa,mBAAmB;IAG9B,YACW,UAA8B,EAC9B,WAAmB,EACnB,eAAuB,EACvB,WAAmB,EACnB,eAAuB,EACvB,SAAoB;QALpB,eAAU,GAAV,UAAU,CAAoB;QAC9B,gBAAW,GAAX,WAAW,CAAQ;QACnB,oBAAe,GAAf,eAAe,CAAQ;QACvB,gBAAW,GAAX,WAAW,CAAQ;QACnB,oBAAe,GAAf,eAAe,CAAQ;QACvB,cAAS,GAAT,SAAS,CAAW;QAR/B,SAAI,GAAG,iBAAiB,CAAC;IAStB,CAAC;CACL,CAAA;AAXY,mBAAmB;IAD/B,aAAK;qCAKmB,+BAAkB;GAJ9B,mBAAmB,CAW/B;AAXY,kDAAmB;AAahC,SAAgB,0BAA0B,
|
|
1
|
+
{"version":3,"file":"store-orderbook.event.js","sourceRoot":"","sources":["../../../src/store/event/store-orderbook.event.ts"],"names":[],"mappings":";;;;;;;;;;;;AAAA,8CAA2C;AAE3C,wDAA6D;AAC7D,sDAAmD;AAKnD,IAAa,mBAAmB,GAAhC,MAAa,mBAAmB;IAG9B,YACW,UAA8B,EAC9B,WAAmB,EACnB,eAAuB,EACvB,WAAmB,EACnB,eAAuB,EACvB,SAAoB;QALpB,eAAU,GAAV,UAAU,CAAoB;QAC9B,gBAAW,GAAX,WAAW,CAAQ;QACnB,oBAAe,GAAf,eAAe,CAAQ;QACvB,gBAAW,GAAX,WAAW,CAAQ;QACnB,oBAAe,GAAf,eAAe,CAAQ;QACvB,cAAS,GAAT,SAAS,CAAW;QAR/B,SAAI,GAAG,iBAAiB,CAAC;IAStB,CAAC;CACL,CAAA;AAXY,mBAAmB;IAD/B,aAAK;qCAKmB,+BAAkB;GAJ9B,mBAAmB,CAW/B;AAXY,kDAAmB;AAahC,SAAgB,0BAA0B,CACxC,KAA0B,EAC1B,KAAY,EACZ,OAA2B;IAE3B,MAAM,aAAa,GAAG,KAAK,CAAC,UAAU,CAAC,QAAQ,EAAE,CAAC;IAElD,IAAI,CAAC,CAAC,aAAa,IAAI,KAAK,CAAC,YAAY,CAAC,UAAU,CAAC,EAAE;QACrD,MAAM,IAAI,KAAK,CAAC,4CAA4C,aAAa,EAAE,CAAC,CAAC;KAC9E;IAED,IAAI,SAAS,GAAG,KAAK,CAAC,SAAS,CAAC,aAAa,CAAC,CAAC;IAE/C,IAAI,CAAC,SAAS,EAAE;QACd,MAAM,UAAU,GAAG,KAAK,CAAC,QAAQ,CAAC,UAAU,CAAC,aAAa,CAAC,CAAC;QAE5D,SAAS,GAAG,IAAI,qBAAS,CAAC,UAAU,CAAC,CAAC;QAEtC,KAAK,CAAC,SAAS,CAAC,aAAa,CAAC,GAAG,SAAS,CAAC;KAC5C;IAED,KAAK,CAAC,SAAS,GAAG,KAAK,CAAC,SAAS,CAAC;IAElC,SAAS,CAAC,SAAS,GAAG,KAAK,CAAC,SAAS,CAAC;IACtC,SAAS,CAAC,WAAW,GAAG,SAAS,CAAC,UAAU,CAAC,KAAK,CAAC,KAAK,CAAC,KAAK,CAAC,WAAW,CAAC,CAAC;IAC5E,SAAS,CAAC,eAAe,GAAG,SAAS,CAAC,UAAU,CAAC,IAAI,CAAC,KAAK,CAAC,KAAK,CAAC,eAAe,CAAC,CAAC;IACnF,SAAS,CAAC,WAAW,GAAG,SAAS,CAAC,UAAU,CAAC,KAAK,CAAC,KAAK,CAAC,KAAK,CAAC,WAAW,CAAC,CAAC;IAC5E,SAAS,CAAC,eAAe,GAAG,SAAS,CAAC,UAAU,CAAC,IAAI,CAAC,KAAK,CAAC,KAAK,CAAC,eAAe,CAAC,CAAC;IAEnF,MAAM,KAAK,GAAG,KAAK,CAAC,OAAO,CAAC,SAAS,CAAC,UAAU,CAAC,KAAK,CAAC,QAAQ,EAAE,CAAC,CAAC;IAEnE,IAAI,KAAK,EAAE;QACT,KAAK,MAAM,QAAQ,IAAI,MAAM,CAAC,MAAM,CAAC,KAAK,CAAC,QAAQ,CAAC,EAAE;YACpD,IAAI,QAAQ,CAAC,UAAU,CAAC,QAAQ,EAAE,IAAI,SAAS,CAAC,QAAQ,EAAE,EAAE;gBAC1D,SAAS;aACV;YAED,MAAM,IAAI,GAAG,QAAQ,CAAC,IAAI,IAAI,CAAC,CAAC,CAAC,CAAC,SAAS,CAAC,WAAW,CAAC,CAAC,CAAC,SAAS,CAAC,WAAW,CAAC;YAEhF,QAAQ,CAAC,YAAY,CAAC,IAAI,CAAC,CAAC;SAC7B;QAED,IAAI,KAAK,CAAC,KAAK,GAAG,CAAC,EAAE;YACnB,MAAM,IAAI,KAAK,CAAC,YAAY,CAAC,CAAC;SAC/B;KACF;IAED,OAAO,CAAC,MAAM,CAAC,SAAS,CAAC,CAAC;AAC5B,CAAC;AAhDD,gEAgDC"}
|
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
import { timestamp } from '../../shared';
|
|
2
2
|
import { Position, Instrument, PositionMode } from '../../domain';
|
|
3
|
-
import { State } from '../store.state';
|
|
3
|
+
import { State, StateChangeTracker } from '../store.state';
|
|
4
4
|
import { StoreEvent } from './store.event';
|
|
5
5
|
export declare class PositionLoadEvent implements StoreEvent {
|
|
6
6
|
readonly position: Position;
|
|
@@ -8,7 +8,7 @@ export declare class PositionLoadEvent implements StoreEvent {
|
|
|
8
8
|
type: string;
|
|
9
9
|
constructor(position: Position, timestamp: timestamp);
|
|
10
10
|
}
|
|
11
|
-
export declare function PositionLoadEventHandler(event: PositionLoadEvent, state: State): Position;
|
|
11
|
+
export declare function PositionLoadEventHandler(event: PositionLoadEvent, state: State, changes: StateChangeTracker): Position;
|
|
12
12
|
export declare class PositionPatchEvent implements StoreEvent {
|
|
13
13
|
readonly id: string;
|
|
14
14
|
readonly instrument: Instrument;
|
|
@@ -20,4 +20,4 @@ export declare class PositionPatchEvent implements StoreEvent {
|
|
|
20
20
|
type: string;
|
|
21
21
|
constructor(id: string, instrument: Instrument, rate: number, size: number, leverage: number, mode: PositionMode, timestamp: timestamp);
|
|
22
22
|
}
|
|
23
|
-
export declare function PositionPatchEventHandler(event: PositionPatchEvent, state: State):
|
|
23
|
+
export declare function PositionPatchEventHandler(event: PositionPatchEvent, state: State, changes: StateChangeTracker): void;
|
|
@@ -24,7 +24,7 @@ PositionLoadEvent = __decorate([
|
|
|
24
24
|
__metadata("design:paramtypes", [domain_1.Position, Number])
|
|
25
25
|
], PositionLoadEvent);
|
|
26
26
|
exports.PositionLoadEvent = PositionLoadEvent;
|
|
27
|
-
function PositionLoadEventHandler(event, state) {
|
|
27
|
+
function PositionLoadEventHandler(event, state, changes) {
|
|
28
28
|
if (event.position.instrument.toString() in state.subscription.instrument ||
|
|
29
29
|
event.position.size == 0) {
|
|
30
30
|
return;
|
|
@@ -57,7 +57,7 @@ PositionPatchEvent = __decorate([
|
|
|
57
57
|
__metadata("design:paramtypes", [String, domain_1.Instrument, Number, Number, Number, String, Number])
|
|
58
58
|
], PositionPatchEvent);
|
|
59
59
|
exports.PositionPatchEvent = PositionPatchEvent;
|
|
60
|
-
function PositionPatchEventHandler(event, state) {
|
|
60
|
+
function PositionPatchEventHandler(event, state, changes) {
|
|
61
61
|
if (!(event.instrument.toString() in state.subscription.instrument)) {
|
|
62
62
|
return;
|
|
63
63
|
}
|
|
@@ -74,9 +74,9 @@ function PositionPatchEventHandler(event, state) {
|
|
|
74
74
|
const rate = position.size >= 0 ? orderbook.bestBidRate : orderbook.bestAskRate;
|
|
75
75
|
position.calculatePnL(rate);
|
|
76
76
|
}
|
|
77
|
-
|
|
77
|
+
changes.commit(position);
|
|
78
|
+
changes.commit(balance);
|
|
78
79
|
}
|
|
79
|
-
return;
|
|
80
80
|
}
|
|
81
81
|
if (!position) {
|
|
82
82
|
position = new domain_1.Position(event.id, event.instrument);
|
|
@@ -90,7 +90,8 @@ function PositionPatchEventHandler(event, state) {
|
|
|
90
90
|
const rate = position.size >= 0 ? orderbook.bestBidRate : orderbook.bestAskRate;
|
|
91
91
|
position.calculatePnL(rate);
|
|
92
92
|
}
|
|
93
|
-
|
|
93
|
+
changes.commit(position);
|
|
94
|
+
changes.commit(balance);
|
|
94
95
|
}
|
|
95
96
|
exports.PositionPatchEventHandler = PositionPatchEventHandler;
|
|
96
97
|
//# sourceMappingURL=store-position.event.js.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"store-position.event.js","sourceRoot":"","sources":["../../../src/store/event/store-position.event.ts"],"names":[],"mappings":";;;;;;;;;;;;AAAA,8CAA2C;AAE3C,yCAAkE;AAKlE,IAAa,iBAAiB,GAA9B,MAAa,iBAAiB;IAG5B,YAAqB,QAAkB,EAAW,SAAoB;QAAjD,aAAQ,GAAR,QAAQ,CAAU;QAAW,cAAS,GAAT,SAAS,CAAW;QAFtE,SAAI,GAAG,eAAe,CAAC;IAEkD,CAAC;CAC3E,CAAA;AAJY,iBAAiB;IAD7B,aAAK;qCAI2B,iBAAQ;GAH5B,iBAAiB,CAI7B;AAJY,8CAAiB;AAM9B,SAAgB,wBAAwB,
|
|
1
|
+
{"version":3,"file":"store-position.event.js","sourceRoot":"","sources":["../../../src/store/event/store-position.event.ts"],"names":[],"mappings":"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"}
|
|
@@ -1,7 +1,6 @@
|
|
|
1
1
|
import { timestamp } from '../../shared';
|
|
2
|
-
import { Trade } from '../../domain';
|
|
3
2
|
import { InstrumentSelector } from '../../domain/instrument';
|
|
4
|
-
import { State } from '../store.state';
|
|
3
|
+
import { State, StateChangeTracker } from '../store.state';
|
|
5
4
|
import { StoreEvent } from './store.event';
|
|
6
5
|
export declare class TradePatchEvent implements StoreEvent {
|
|
7
6
|
readonly instrument: InstrumentSelector;
|
|
@@ -11,4 +10,4 @@ export declare class TradePatchEvent implements StoreEvent {
|
|
|
11
10
|
type: string;
|
|
12
11
|
constructor(instrument: InstrumentSelector, rate: number, quantity: number, timestamp: timestamp);
|
|
13
12
|
}
|
|
14
|
-
export declare function TradePatchEventHandler(event: TradePatchEvent, state: State):
|
|
13
|
+
export declare function TradePatchEventHandler(event: TradePatchEvent, state: State, changes: StateChangeTracker): void;
|
|
@@ -27,7 +27,7 @@ TradePatchEvent = __decorate([
|
|
|
27
27
|
__metadata("design:paramtypes", [instrument_1.InstrumentSelector, Number, Number, Number])
|
|
28
28
|
], TradePatchEvent);
|
|
29
29
|
exports.TradePatchEvent = TradePatchEvent;
|
|
30
|
-
function TradePatchEventHandler(event, state) {
|
|
30
|
+
function TradePatchEventHandler(event, state, changes) {
|
|
31
31
|
const instrumentKey = event.instrument.toString();
|
|
32
32
|
if (!(instrumentKey in state.subscription.instrument)) {
|
|
33
33
|
throw new Error(`Trying to patch unsubscribed instrument: ${instrumentKey}`);
|
|
@@ -41,7 +41,7 @@ function TradePatchEventHandler(event, state) {
|
|
|
41
41
|
trade.timestamp = event.timestamp;
|
|
42
42
|
trade.rate = trade.instrument.quote.fixed(event.rate);
|
|
43
43
|
trade.quantity = trade.instrument.base.fixed(event.quantity);
|
|
44
|
-
|
|
44
|
+
changes.commit(trade);
|
|
45
45
|
}
|
|
46
46
|
exports.TradePatchEventHandler = TradePatchEventHandler;
|
|
47
47
|
//# sourceMappingURL=store-trade.event.js.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"store-trade.event.js","sourceRoot":"","sources":["../../../src/store/event/store-trade.event.ts"],"names":[],"mappings":";;;;;;;;;;;;AAAA,8CAA2C;AAE3C,yCAAqC;AACrC,wDAA6D;AAQ7D,IAAa,eAAe,GAA5B,MAAa,eAAe;IAG1B,YACW,UAA8B,EAC9B,IAAY,EACZ,QAAgB,EAChB,SAAoB;QAHpB,eAAU,GAAV,UAAU,CAAoB;QAC9B,SAAI,GAAJ,IAAI,CAAQ;QACZ,aAAQ,GAAR,QAAQ,CAAQ;QAChB,cAAS,GAAT,SAAS,CAAW;QAN/B,SAAI,GAAG,aAAa,CAAC;IAOlB,CAAC;CACL,CAAA;AATY,eAAe;IAD3B,aAAK;qCAKmB,+BAAkB;GAJ9B,eAAe,CAS3B;AATY,0CAAe;AAe5B,SAAgB,sBAAsB,
|
|
1
|
+
{"version":3,"file":"store-trade.event.js","sourceRoot":"","sources":["../../../src/store/event/store-trade.event.ts"],"names":[],"mappings":";;;;;;;;;;;;AAAA,8CAA2C;AAE3C,yCAAqC;AACrC,wDAA6D;AAQ7D,IAAa,eAAe,GAA5B,MAAa,eAAe;IAG1B,YACW,UAA8B,EAC9B,IAAY,EACZ,QAAgB,EAChB,SAAoB;QAHpB,eAAU,GAAV,UAAU,CAAoB;QAC9B,SAAI,GAAJ,IAAI,CAAQ;QACZ,aAAQ,GAAR,QAAQ,CAAQ;QAChB,cAAS,GAAT,SAAS,CAAW;QAN/B,SAAI,GAAG,aAAa,CAAC;IAOlB,CAAC;CACL,CAAA;AATY,eAAe;IAD3B,aAAK;qCAKmB,+BAAkB;GAJ9B,eAAe,CAS3B;AATY,0CAAe;AAe5B,SAAgB,sBAAsB,CACpC,KAAsB,EACtB,KAAY,EACZ,OAA2B;IAE3B,MAAM,aAAa,GAAG,KAAK,CAAC,UAAU,CAAC,QAAQ,EAAE,CAAC;IAElD,IAAI,CAAC,CAAC,aAAa,IAAI,KAAK,CAAC,YAAY,CAAC,UAAU,CAAC,EAAE;QACrD,MAAM,IAAI,KAAK,CAAC,4CAA4C,aAAa,EAAE,CAAC,CAAC;KAC9E;IAED,IAAI,KAAK,GAAG,KAAK,CAAC,KAAK,CAAC,aAAa,CAAC,CAAC;IACvC,IAAI,CAAC,KAAK,EAAE;QACV,KAAK,GAAG,IAAI,cAAK,CAAC,KAAK,CAAC,QAAQ,CAAC,UAAU,CAAC,aAAa,CAAC,CAAC,CAAC;QAE5D,KAAK,CAAC,KAAK,CAAC,aAAa,CAAC,GAAG,KAAK,CAAC;KACpC;IAED,KAAK,CAAC,SAAS,GAAG,KAAK,CAAC,SAAS,CAAC;IAElC,KAAK,CAAC,SAAS,GAAG,KAAK,CAAC,SAAS,CAAC;IAClC,KAAK,CAAC,IAAI,GAAG,KAAK,CAAC,UAAU,CAAC,KAAK,CAAC,KAAK,CAAC,KAAK,CAAC,IAAI,CAAC,CAAC;IACtD,KAAK,CAAC,QAAQ,GAAG,KAAK,CAAC,UAAU,CAAC,IAAI,CAAC,KAAK,CAAC,KAAK,CAAC,QAAQ,CAAC,CAAC;IAE7D,OAAO,CAAC,MAAM,CAAC,KAAK,CAAC,CAAC;AACxB,CAAC;AAzBD,wDAyBC"}
|
|
@@ -2,42 +2,41 @@
|
|
|
2
2
|
Object.defineProperty(exports, "__esModule", { value: true });
|
|
3
3
|
const domain_1 = require("../../domain");
|
|
4
4
|
const _1 = require(".");
|
|
5
|
-
const store_state_1 = require("../store.state");
|
|
6
5
|
const shared_1 = require("../../shared");
|
|
6
|
+
const __1 = require("..");
|
|
7
7
|
const instrument = new domain_1.Instrument(new domain_1.Asset('btc', 'binance', 8), new domain_1.Asset('usdt', 'binance', 2), 'binance:btc-usdt');
|
|
8
8
|
describe('trade patch event tests', () => {
|
|
9
9
|
test('should create a new trade object and patch a store', () => {
|
|
10
10
|
const timestamp = (0, shared_1.now)();
|
|
11
|
-
const
|
|
12
|
-
|
|
13
|
-
|
|
14
|
-
|
|
15
|
-
|
|
16
|
-
const trade = state.trade[instrument.toString()];
|
|
11
|
+
const store = new __1.Store();
|
|
12
|
+
store.snapshot.universe.instrument[instrument.toString()] = instrument;
|
|
13
|
+
store.snapshot.subscription.instrument[instrument.toString()] = instrument;
|
|
14
|
+
store.dispatch(new _1.TradePatchEvent(instrument, 1000, 0.1, timestamp));
|
|
15
|
+
const trade = store.snapshot.trade[instrument.toString()];
|
|
17
16
|
expect(trade.timestamp).toEqual(timestamp);
|
|
18
17
|
expect(trade.instrument.toString()).toEqual(trade.instrument.toString());
|
|
19
18
|
expect(trade.rate).toEqual(1000);
|
|
20
19
|
expect(trade.quantity).toEqual(0.1);
|
|
21
|
-
expect(
|
|
20
|
+
expect(store.snapshot.timestamp).toEqual(timestamp);
|
|
22
21
|
});
|
|
23
22
|
test('should use the existing instance of trade when patching a store', () => {
|
|
24
|
-
const
|
|
25
|
-
|
|
26
|
-
|
|
27
|
-
|
|
23
|
+
const store = new __1.Store();
|
|
24
|
+
store.snapshot.universe.instrument[instrument.toString()] = instrument;
|
|
25
|
+
store.snapshot.subscription.instrument[instrument.toString()] = instrument;
|
|
26
|
+
store.dispatch(new _1.TradePatchEvent(instrument, 1000, 0.1, (0, shared_1.now)()));
|
|
28
27
|
const timestamp = (0, shared_1.now)();
|
|
29
|
-
const trade =
|
|
30
|
-
|
|
28
|
+
const trade = store.snapshot.trade[instrument.toString()];
|
|
29
|
+
store.dispatch(new _1.TradePatchEvent(instrument, 2000, 0.2, (0, shared_1.now)()));
|
|
31
30
|
expect(trade.timestamp).toEqual(timestamp);
|
|
32
31
|
expect(trade.instrument.toString()).toEqual(instrument.toString());
|
|
33
32
|
expect(trade.rate).toEqual(2000);
|
|
34
33
|
expect(trade.quantity).toEqual(0.2);
|
|
35
|
-
expect(
|
|
34
|
+
expect(store.snapshot.timestamp).toEqual(timestamp);
|
|
36
35
|
});
|
|
37
36
|
test('should throw exception when patching unsubscribed instrument', () => {
|
|
37
|
+
const store = new __1.Store();
|
|
38
38
|
const fn = () => {
|
|
39
|
-
|
|
40
|
-
(0, _1.TradePatchEventHandler)(event, new store_state_1.State());
|
|
39
|
+
store.dispatch(new _1.TradePatchEvent(instrument, 1000, 0.1, (0, shared_1.now)()));
|
|
41
40
|
};
|
|
42
41
|
expect(fn).toThrow(Error);
|
|
43
42
|
});
|