@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.
Files changed (69) hide show
  1. package/dist/adapter/backtester/backtester-cursor.spec.js.map +1 -1
  2. package/dist/adapter/backtester/backtester-streamer.js +3 -0
  3. package/dist/adapter/backtester/backtester-streamer.js.map +1 -1
  4. package/dist/bootstrap.d.ts +11 -0
  5. package/dist/bootstrap.js +58 -0
  6. package/dist/bootstrap.js.map +1 -0
  7. package/dist/index.d.ts +1 -1
  8. package/dist/index.js +1 -1
  9. package/dist/index.js.map +1 -1
  10. package/dist/ipc.js +21 -37
  11. package/dist/ipc.js.map +1 -1
  12. package/dist/session/session.spec.js +2 -2
  13. package/dist/session/session.spec.js.map +1 -1
  14. package/dist/store/event/store-balance.event.d.ts +5 -6
  15. package/dist/store/event/store-balance.event.js +8 -8
  16. package/dist/store/event/store-balance.event.js.map +1 -1
  17. package/dist/store/event/store-candle.event.d.ts +2 -1
  18. package/dist/store/event/store-candle.event.js +25 -19
  19. package/dist/store/event/store-candle.event.js.map +1 -1
  20. package/dist/store/event/store-candle.event.spec.js +7 -8
  21. package/dist/store/event/store-candle.event.spec.js.map +1 -1
  22. package/dist/store/event/store-instrument.event.d.ts +6 -6
  23. package/dist/store/event/store-instrument.event.js +7 -7
  24. package/dist/store/event/store-instrument.event.js.map +1 -1
  25. package/dist/store/event/store-order.event.d.ts +9 -9
  26. package/dist/store/event/store-order.event.js +16 -16
  27. package/dist/store/event/store-order.event.js.map +1 -1
  28. package/dist/store/event/store-order.event.spec.js +7 -7
  29. package/dist/store/event/store-order.event.spec.js.map +1 -1
  30. package/dist/store/event/store-orderbook.event.d.ts +2 -3
  31. package/dist/store/event/store-orderbook.event.js +2 -2
  32. package/dist/store/event/store-orderbook.event.js.map +1 -1
  33. package/dist/store/event/store-position.event.d.ts +3 -3
  34. package/dist/store/event/store-position.event.js +6 -5
  35. package/dist/store/event/store-position.event.js.map +1 -1
  36. package/dist/store/event/store-trade.event.d.ts +2 -3
  37. package/dist/store/event/store-trade.event.js +2 -2
  38. package/dist/store/event/store-trade.event.js.map +1 -1
  39. package/dist/store/event/store-trade.event.spec.js +16 -17
  40. package/dist/store/event/store-trade.event.spec.js.map +1 -1
  41. package/dist/store/store.d.ts +23 -20
  42. package/dist/store/store.js +29 -28
  43. package/dist/store/store.js.map +1 -1
  44. package/dist/store/store.state.d.ts +5 -1
  45. package/dist/store/store.state.js.map +1 -1
  46. package/dist/tsconfig.tsbuildinfo +1 -1
  47. package/package.json +1 -1
  48. package/src/adapter/backtester/backtester-cursor.spec.ts +2 -2
  49. package/src/adapter/backtester/backtester-streamer.ts +5 -1
  50. package/src/bootstrap.ts +103 -0
  51. package/src/index.ts +1 -1
  52. package/src/ipc.ts +22 -40
  53. package/src/session/session.spec.ts +2 -4
  54. package/src/store/event/store-balance.event.ts +25 -9
  55. package/src/store/event/store-candle.event.spec.ts +8 -10
  56. package/src/store/event/store-candle.event.ts +44 -30
  57. package/src/store/event/store-instrument.event.ts +12 -7
  58. package/src/store/event/store-order.event.spec.ts +8 -8
  59. package/src/store/event/store-order.event.ts +46 -17
  60. package/src/store/event/store-orderbook.event.ts +7 -3
  61. package/src/store/event/store-position.event.ts +15 -7
  62. package/src/store/event/store-trade.event.spec.ts +18 -20
  63. package/src/store/event/store-trade.event.ts +7 -3
  64. package/src/store/store.state.ts +8 -2
  65. package/src/store/store.ts +33 -31
  66. package/dist/bin.d.ts +0 -5
  67. package/dist/bin.js +0 -28
  68. package/dist/bin.js.map +0 -1
  69. 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 { Instrument, InstrumentSelector } from '../../domain/instrument';
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 commision: Commission;
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, commision: Commission, raw: string, leverage?: number);
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): Instrument;
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): Instrument;
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, commision, raw, leverage) {
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.commision = commision;
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.commision;
44
+ instrument.commission = event.commission;
45
45
  if (event.leverage) {
46
46
  instrument.leverage = event.leverage;
47
47
  }
48
- return instrument;
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
- return instrument;
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":"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"}
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): Order;
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): Order;
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): Order;
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): Order;
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): Order;
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): Order;
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): Order;
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): Order;
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
- return event.order;
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
- return event.order;
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
- return order;
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
- return order;
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
- return order;
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
- return order;
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
- return order;
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
- return order;
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":"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"}
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 state = new __1.State();
11
+ const store = new store_1.Store();
12
12
  const order = domain_1.Order.buyMarket(instrument, 1.0);
13
13
  order.state = 'PENDING';
14
- state.universe.instrument[instrument.toString()] = instrument;
15
- state.subscription.instrument[instrument.toString()] = instrument;
16
- (0, store_order_event_1.OrderLoadEventHandler)(new store_order_event_1.OrderLoadEvent(order, timestamp), state);
17
- expect(Object.keys(state.order.pending).length).toEqual(1);
18
- expect(state.order.pending[order.id]).toEqual(order);
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,2BAA4B;AAC5B,yCAAmC;AACnC,yCAAwD;AACxD,2DAA4E;AAE5E,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,SAAK,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,UAAU,CAAC,UAAU,CAAC,QAAQ,EAAE,CAAC,GAAG,UAAU,CAAC;QAC9D,KAAK,CAAC,YAAY,CAAC,UAAU,CAAC,UAAU,CAAC,QAAQ,EAAE,CAAC,GAAG,UAAU,CAAC;QAElE,IAAA,yCAAqB,EAAC,IAAI,kCAAc,CAAC,KAAK,EAAE,SAAS,CAAC,EAAE,KAAK,CAAC,CAAC;QAEnE,MAAM,CAAC,MAAM,CAAC,IAAI,CAAC,KAAK,CAAC,KAAK,CAAC,OAAO,CAAC,CAAC,MAAM,CAAC,CAAC,OAAO,CAAC,CAAC,CAAC,CAAC;QAC3D,MAAM,CAAC,KAAK,CAAC,KAAK,CAAC,OAAO,CAAC,KAAK,CAAC,EAAE,CAAC,CAAC,CAAC,OAAO,CAAC,KAAK,CAAC,CAAC;IACvD,CAAC,CAAC,CAAC;AACL,CAAC,CAAC,CAAC"}
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 { Orderbook } from '../../domain/orderbook';
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): Orderbook;
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
- return orderbook;
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,CAAC,KAA0B,EAAE,KAAY;IACjF,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,SAAS,CAAC;AACnB,CAAC;AA5CD,gEA4CC"}
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): (Position | import("../../domain").Balance)[];
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
- return [position, balance];
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
- return [position, balance];
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":"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"}
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): Trade;
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
- return trade;
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,CAAC,KAAsB,EAAE,KAAY;IACzE,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,KAAK,CAAC;AACf,CAAC;AArBD,wDAqBC"}
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 state = new store_state_1.State();
12
- state.universe.instrument[instrument.toString()] = instrument;
13
- state.subscription.instrument[instrument.toString()] = instrument;
14
- const event = new _1.TradePatchEvent(instrument, 1000, 0.1, timestamp);
15
- (0, _1.TradePatchEventHandler)(event, state);
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(state.timestamp).toEqual(timestamp);
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 state = new store_state_1.State();
25
- state.universe.instrument[instrument.toString()] = instrument;
26
- state.subscription.instrument[instrument.toString()] = instrument;
27
- (0, _1.TradePatchEventHandler)(new _1.TradePatchEvent(instrument, 1000, 0.1, (0, shared_1.now)()), state);
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 = state.trade[instrument.toString()];
30
- (0, _1.TradePatchEventHandler)(new _1.TradePatchEvent(instrument, 2000, 0.2, timestamp), state);
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(state.timestamp).toEqual(timestamp);
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
- const event = new _1.TradePatchEvent(instrument, 1000, 0.1, (0, shared_1.now)());
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
  });