@quantform/core 0.3.256 → 0.3.262

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 (55) hide show
  1. package/dist/adapter/adapter-aggregate.d.ts +4 -5
  2. package/dist/adapter/adapter-aggregate.js +50 -21
  3. package/dist/adapter/adapter-aggregate.js.map +1 -1
  4. package/dist/adapter/adapter.d.ts +30 -7
  5. package/dist/adapter/adapter.js +29 -2
  6. package/dist/adapter/adapter.js.map +1 -1
  7. package/dist/adapter/backtester/backtester-adapter.d.ts +13 -8
  8. package/dist/adapter/backtester/backtester-adapter.js +25 -32
  9. package/dist/adapter/backtester/backtester-adapter.js.map +1 -1
  10. package/dist/adapter/index.d.ts +0 -1
  11. package/dist/adapter/index.js +0 -1
  12. package/dist/adapter/index.js.map +1 -1
  13. package/dist/adapter/paper/paper-adapter.d.ts +10 -7
  14. package/dist/adapter/paper/paper-adapter.js +24 -42
  15. package/dist/adapter/paper/paper-adapter.js.map +1 -1
  16. package/dist/adapter/paper/paper-adapter.spec.js +25 -7
  17. package/dist/adapter/paper/paper-adapter.spec.js.map +1 -1
  18. package/dist/bootstrap.js +1 -1
  19. package/dist/bootstrap.js.map +1 -1
  20. package/dist/ipc.js +11 -5
  21. package/dist/ipc.js.map +1 -1
  22. package/dist/ipc.spec.js +4 -57
  23. package/dist/ipc.spec.js.map +1 -1
  24. package/dist/session/session.d.ts +8 -11
  25. package/dist/session/session.js +14 -28
  26. package/dist/session/session.js.map +1 -1
  27. package/dist/store/event/store-order.event.js +11 -32
  28. package/dist/store/event/store-order.event.js.map +1 -1
  29. package/dist/store/event/store-order.event.spec.js +2 -2
  30. package/dist/store/event/store-order.event.spec.js.map +1 -1
  31. package/dist/store/store.state.d.ts +1 -6
  32. package/dist/store/store.state.js +1 -6
  33. package/dist/store/store.state.js.map +1 -1
  34. package/dist/tests/backtester-adapter.spec.js +7 -24
  35. package/dist/tests/backtester-adapter.spec.js.map +1 -1
  36. package/dist/tsconfig.tsbuildinfo +1 -1
  37. package/package.json +1 -1
  38. package/src/adapter/adapter-aggregate.ts +55 -75
  39. package/src/adapter/adapter.ts +83 -5
  40. package/src/adapter/backtester/backtester-adapter.ts +39 -19
  41. package/src/adapter/index.ts +0 -1
  42. package/src/adapter/paper/paper-adapter.spec.ts +42 -7
  43. package/src/adapter/paper/paper-adapter.ts +31 -23
  44. package/src/bootstrap.ts +1 -1
  45. package/src/ipc.spec.ts +7 -45
  46. package/src/ipc.ts +6 -6
  47. package/src/session/session.ts +39 -62
  48. package/src/store/event/store-order.event.spec.ts +2 -2
  49. package/src/store/event/store-order.event.ts +11 -38
  50. package/src/store/store.state.ts +1 -12
  51. package/src/tests/backtester-adapter.spec.ts +6 -12
  52. package/dist/adapter/adapter.event.d.ts +0 -43
  53. package/dist/adapter/adapter.event.js +0 -104
  54. package/dist/adapter/adapter.event.js.map +0 -1
  55. package/src/adapter/adapter.event.ts +0 -64
@@ -146,19 +146,29 @@ export class Session {
146
146
  }
147
147
 
148
148
  /**
149
- * Opens collection of orders.
149
+ * Opens a new order.
150
150
  * Example:
151
151
  * session.open(Order.buyMarket(instrument, 100));
152
152
  */
153
- async open(...orders: Order[]): Promise<void> {
154
- await Promise.all(orders.map(it => this.aggregate.open(it)));
153
+ open(order: Order): Observable<Order> {
154
+ return from(this.aggregate.open(order)).pipe(
155
+ switchMap(it =>
156
+ this.store.changes$.pipe(filter(it => it instanceof Order && it.id == it.id))
157
+ ),
158
+ map(it => it as Order)
159
+ );
155
160
  }
156
161
 
157
162
  /**
158
163
  * Cancels specific order.
159
164
  */
160
- cancel(order: Order): Promise<void> {
161
- return this.aggregate.cancel(order);
165
+ cancel(order: Order): Observable<Order> {
166
+ return from(this.aggregate.cancel(order)).pipe(
167
+ switchMap(it =>
168
+ this.store.changes$.pipe(filter(it => it instanceof Order && it.id == it.id))
169
+ ),
170
+ map(it => it as Order)
171
+ );
162
172
  }
163
173
 
164
174
  /**
@@ -191,14 +201,12 @@ export class Session {
191
201
  /**
192
202
  * Subscribes to trade/ticker changes.
193
203
  */
194
- trade(selector?: InstrumentSelector): Observable<Trade> {
204
+ trade(selector: InstrumentSelector): Observable<Trade> {
195
205
  this.subscribe([selector]);
196
206
 
197
207
  return this.store.changes$.pipe(
198
208
  filter(
199
- it =>
200
- it instanceof Trade &&
201
- (!selector || it.instrument.toString() == selector.toString())
209
+ it => it instanceof Trade && it.instrument.toString() == selector.toString()
202
210
  ),
203
211
  map(it => it as Trade)
204
212
  );
@@ -208,14 +216,12 @@ export class Session {
208
216
  * Subscribes to orderbook changes.
209
217
  * Right now you can access only best bid and best ask.
210
218
  */
211
- orderbook(selector?: InstrumentSelector): Observable<Orderbook> {
219
+ orderbook(selector: InstrumentSelector): Observable<Orderbook> {
212
220
  this.subscribe([selector]);
213
221
 
214
222
  return this.store.changes$.pipe(
215
223
  filter(
216
- it =>
217
- it instanceof Orderbook &&
218
- (!selector || it.instrument.toString() == selector.toString())
224
+ it => it instanceof Orderbook && it.instrument.toString() == selector.toString()
219
225
  ),
220
226
  map(it => it as Orderbook)
221
227
  );
@@ -224,14 +230,12 @@ export class Session {
224
230
  /**
225
231
  * Subscribes to position on leveraged market.
226
232
  */
227
- position(selector?: InstrumentSelector): Observable<Position> {
233
+ position(selector: InstrumentSelector): Observable<Position> {
228
234
  this.subscribe([selector]);
229
235
 
230
236
  return this.store.changes$.pipe(
231
237
  filter(
232
- it =>
233
- it instanceof Position &&
234
- (!selector || it.instrument.toString() == selector.toString())
238
+ it => it instanceof Position && it.instrument.toString() == selector.toString()
235
239
  ),
236
240
  map(it => it as Position)
237
241
  );
@@ -256,73 +260,44 @@ export class Session {
256
260
  );
257
261
  }
258
262
 
259
- order(selector?: InstrumentSelector): Observable<Order> {
263
+ order(selector: InstrumentSelector): Observable<Order> {
260
264
  this.subscribe([selector]);
261
265
 
262
266
  return this.store.changes$.pipe(
263
267
  filter(
264
- it =>
265
- it instanceof Order &&
266
- (!selector || it.instrument.toString() == selector.toString())
268
+ it => it instanceof Order && it.instrument.toString() == selector.toString()
267
269
  ),
268
270
  map(it => it as Order)
269
271
  );
270
272
  }
271
273
 
272
- private ordersOf(
273
- orders: Order[],
274
- states: OrderState[],
275
- selector?: InstrumentSelector
276
- ): Observable<Order[]> {
274
+ orders(selector: InstrumentSelector, states?: OrderState[]): Observable<Order[]> {
277
275
  this.subscribe([selector]);
278
276
 
279
277
  return this.store.changes$.pipe(
280
278
  filter(
281
279
  it =>
282
280
  it instanceof Order &&
283
- (!selector || it.instrument.toString() == selector.toString()) &&
284
- (states.indexOf(it.state) >= 0 || states.length == 0)
285
- ),
286
- map(() =>
287
- Object.values(orders)
288
- .filter(it => !selector || it.instrument.toString() == selector.toString())
289
- .sort((lhs, rhs) => rhs.createdAt - lhs.createdAt)
281
+ it.instrument.toString() == selector.toString() &&
282
+ (!states || states.includes(it.state))
290
283
  ),
291
- startWith(
292
- Object.values(orders)
293
- .filter(it => !selector || it.instrument.toString() == selector.toString())
284
+ map(() => this.store.snapshot.order),
285
+ startWith(this.store.snapshot.order),
286
+ map(it =>
287
+ Object.values(it)
288
+ .filter(
289
+ it =>
290
+ it.instrument.toString() == selector.toString() &&
291
+ (states ? states.includes(it.state) : true)
292
+ )
294
293
  .sort((lhs, rhs) => rhs.createdAt - lhs.createdAt)
295
294
  )
296
295
  );
297
296
  }
298
297
 
299
- pending(selector?: InstrumentSelector): Observable<Order[]> {
300
- return this.ordersOf(
301
- Object.values(this.store.snapshot.order.pending),
302
- ['PENDING', 'NEW'],
303
- selector
304
- );
305
- }
306
-
307
- filled(selector?: InstrumentSelector): Observable<Order[]> {
308
- return this.ordersOf(
309
- Object.values(this.store.snapshot.order.filled),
310
- ['FILLED'],
311
- selector
312
- );
313
- }
314
-
315
- canceled(selector?: InstrumentSelector): Observable<Order[]> {
316
- return this.ordersOf(
317
- Object.values(this.store.snapshot.order.canceled),
318
- ['CANCELING', 'CANCELED'],
319
- selector
320
- );
321
- }
322
-
323
298
  balance(selector: AssetSelector): Observable<Balance> {
324
299
  return this.store.changes$.pipe(
325
- startWith(selector ? this.store.snapshot.balance[selector.toString()] : null),
300
+ startWith(this.store.snapshot.balance[selector.toString()]),
326
301
  filter(
327
302
  it =>
328
303
  it instanceof Balance &&
@@ -340,7 +315,9 @@ export class Session {
340
315
  return this.store.changes$.pipe(
341
316
  startWith(this.store.snapshot.universe.instrument[selector.toString()]),
342
317
  filter(it => it instanceof Instrument && it.toString() == selector.toString()),
343
- switchMap(() => from(this.aggregate.history(selector, timeframe, length))),
318
+ switchMap(() =>
319
+ from(this.aggregate.history({ instrument: selector, timeframe, length }))
320
+ ),
344
321
  take(1),
345
322
  shareReplay(),
346
323
  mergeMap(it => it)
@@ -22,7 +22,7 @@ describe('order load event tests', () => {
22
22
 
23
23
  store.dispatch(new OrderLoadEvent(order, timestamp));
24
24
 
25
- expect(Object.keys(store.snapshot.order.pending).length).toEqual(1);
26
- expect(store.snapshot.order.pending[order.id]).toEqual(order);
25
+ expect(Object.keys(store.snapshot.order).length).toEqual(1);
26
+ expect(store.snapshot.order[order.id]).toEqual(order);
27
27
  });
28
28
  });
@@ -18,22 +18,7 @@ export function OrderLoadEventHandler(
18
18
  ) {
19
19
  event.order.timestamp = event.timestamp;
20
20
 
21
- switch (event.order.state) {
22
- case 'NEW':
23
- case 'PENDING':
24
- state.order.pending[event.order.id] = event.order;
25
- break;
26
- case 'FILLED':
27
- state.order.filled[event.order.id] = event.order;
28
- break;
29
- case 'CANCELING':
30
- case 'CANCELED':
31
- state.order.canceled[event.order.id] = event.order;
32
- break;
33
- case 'REJECTED':
34
- state.order.rejected[event.order.id] = event.order;
35
- break;
36
- }
21
+ state.order[event.order.id] = event.order;
37
22
 
38
23
  changes.commit(event.order);
39
24
  }
@@ -57,7 +42,7 @@ export function OrderNewEventHandler(
57
42
  event.order.createdAt = event.timestamp;
58
43
  event.order.timestamp = event.timestamp;
59
44
 
60
- state.order.pending[event.order.id] = event.order;
45
+ state.order[event.order.id] = event.order;
61
46
 
62
47
  changes.commit(event.order);
63
48
  }
@@ -74,11 +59,11 @@ export function OrderPendingEventHandler(
74
59
  state: State,
75
60
  changes: StateChangeTracker
76
61
  ) {
77
- if (!(event.id in state.order.pending)) {
62
+ if (!(event.id in state.order)) {
78
63
  throw new Error(`Trying to patch unknown order: ${event.id}`);
79
64
  }
80
65
 
81
- const order = state.order.pending[event.id];
66
+ const order = state.order[event.id];
82
67
 
83
68
  if (order.state != 'NEW') {
84
69
  throw new Error(`Order is not new`);
@@ -106,11 +91,11 @@ export function OrderFilledEventHandler(
106
91
  state: State,
107
92
  changes: StateChangeTracker
108
93
  ) {
109
- if (!(event.id in state.order.pending)) {
94
+ if (!(event.id in state.order)) {
110
95
  throw new Error(`Trying to patch unknown order: ${event.id}`);
111
96
  }
112
97
 
113
- const order = state.order.pending[event.id];
98
+ const order = state.order[event.id];
114
99
 
115
100
  if (order.state != 'PENDING' && order.state != 'CANCELING') {
116
101
  throw new Error('Order is not pending');
@@ -121,10 +106,6 @@ export function OrderFilledEventHandler(
121
106
  order.quantityExecuted = order.quantity;
122
107
  order.averageExecutionRate = event.averageExecutionRate;
123
108
 
124
- delete state.order.pending[event.id];
125
-
126
- state.order.filled[event.id] = order;
127
-
128
109
  changes.commit(order);
129
110
  }
130
111
 
@@ -140,11 +121,11 @@ export function OrderCancelingEventHandler(
140
121
  state: State,
141
122
  changes: StateChangeTracker
142
123
  ) {
143
- if (!(event.id in state.order.pending)) {
124
+ if (!(event.id in state.order)) {
144
125
  throw new Error(`Trying to patch unknown order: ${event.id}`);
145
126
  }
146
127
 
147
- const order = state.order.pending[event.id];
128
+ const order = state.order[event.id];
148
129
 
149
130
  if (order.state == 'CANCELING' || order.state == 'CANCELED') {
150
131
  return;
@@ -172,7 +153,7 @@ export function OrderCanceledEventHandler(
172
153
  state: State,
173
154
  changes: StateChangeTracker
174
155
  ) {
175
- const order = state.order.pending[event.id];
156
+ const order = state.order[event.id];
176
157
 
177
158
  if (order.state == 'CANCELED') {
178
159
  return;
@@ -185,10 +166,6 @@ export function OrderCanceledEventHandler(
185
166
  order.state = 'CANCELED';
186
167
  order.timestamp = event.timestamp;
187
168
 
188
- delete state.order.pending[event.id];
189
-
190
- state.order.canceled[event.id] = order;
191
-
192
169
  changes.commit(order);
193
170
  }
194
171
 
@@ -204,7 +181,7 @@ export function OrderCancelFailedEventHandler(
204
181
  state: State,
205
182
  changes: StateChangeTracker
206
183
  ) {
207
- const order = state.order.pending[event.id];
184
+ const order = state.order[event.id];
208
185
 
209
186
  if (order.state != 'CANCELING') {
210
187
  return;
@@ -228,7 +205,7 @@ export function OrderRejectedEventHandler(
228
205
  state: State,
229
206
  changes: StateChangeTracker
230
207
  ) {
231
- const order = state.order.pending[event.id];
208
+ const order = state.order[event.id];
232
209
 
233
210
  if (order.state != 'NEW') {
234
211
  throw new Error('Order is not new.');
@@ -237,9 +214,5 @@ export function OrderRejectedEventHandler(
237
214
  order.state = 'REJECTED';
238
215
  order.timestamp = event.timestamp;
239
216
 
240
- delete state.order.pending[event.id];
241
-
242
- state.order.rejected[event.id] = order;
243
-
244
217
  changes.commit(order);
245
218
  }
@@ -39,16 +39,5 @@ export class State {
39
39
  trade: Record<string, Trade> = {};
40
40
  orderbook: Record<string, Orderbook> = {};
41
41
  balance: Record<string, Balance> = {};
42
-
43
- order: {
44
- pending: Record<string, Order>;
45
- filled: Record<string, Order>;
46
- canceled: Record<string, Order>;
47
- rejected: Record<string, Order>;
48
- } = {
49
- pending: {},
50
- filled: {},
51
- canceled: {},
52
- rejected: {}
53
- };
42
+ order: Record<string, Order> = {};
54
43
  }
@@ -1,5 +1,3 @@
1
- import { AdapterAwakeCommand } from '../adapter';
2
- import { AdapterSubscribeCommand } from '../adapter';
3
1
  import { Asset, Commission, instrumentOf } from '../domain';
4
2
  import { InMemoryStorage, Feed } from '../storage';
5
3
  import { Store } from '../store';
@@ -10,7 +8,6 @@ import { PaperExecutor } from '../adapter/paper/executor/paper-executor';
10
8
  import { PaperAdapter } from '../adapter/paper/paper-adapter';
11
9
  import { BacktesterAdapter } from '../adapter/backtester/backtester-adapter';
12
10
  import { BacktesterStreamer } from '../adapter/backtester/backtester-streamer';
13
- import { handler } from '../shared';
14
11
 
15
12
  const base = new Asset('btc', 'binance', 8);
16
13
  const quote = new Asset('usdt', 'binance', 4);
@@ -26,9 +23,10 @@ class DefaultAdapter extends Adapter {
26
23
  return new PaperSpotExecutor(adapter);
27
24
  }
28
25
 
29
- @handler(AdapterAwakeCommand)
30
- onAwake(command: AdapterAwakeCommand, context: AdapterContext) {
31
- context.store.dispatch(
26
+ async awake(context: AdapterContext): Promise<void> {
27
+ await super.awake(context);
28
+
29
+ context.dispatch(
32
30
  new InstrumentPatchEvent(
33
31
  context.timestamp,
34
32
  base,
@@ -88,12 +86,8 @@ describe('backtester adapter tests', () => {
88
86
 
89
87
  const sut = new BacktesterAdapter(adapter, streamer);
90
88
 
91
- sut.dispatch(new AdapterAwakeCommand(), new AdapterContext(sut, store));
92
-
93
- sut.dispatch(
94
- new AdapterSubscribeCommand([instrument]),
95
- new AdapterContext(sut, store)
96
- );
89
+ sut.awake(new AdapterContext(sut, store));
90
+ sut.subscribe([instrument]);
97
91
 
98
92
  expect(sut.name).toEqual('default');
99
93
  });
@@ -1,43 +0,0 @@
1
- import { Feed } from '../storage';
2
- import { timestamp } from '../shared';
3
- import { InstrumentSelector, Order } from '../domain';
4
- export declare class AdapterAwakeCommand {
5
- type: string;
6
- }
7
- export declare class AdapterDisposeCommand {
8
- type: string;
9
- }
10
- export declare class AdapterAccountCommand {
11
- type: string;
12
- }
13
- export declare class AdapterSubscribeCommand {
14
- readonly instrument: Array<InstrumentSelector>;
15
- type: string;
16
- constructor(instrument: Array<InstrumentSelector>);
17
- }
18
- export declare class AdapterOrderOpenCommand {
19
- readonly order: Order;
20
- type: string;
21
- constructor(order: Order);
22
- }
23
- export declare class AdapterOrderCancelCommand {
24
- readonly order: Order;
25
- type: string;
26
- constructor(order: Order);
27
- }
28
- export declare class AdapterHistoryQuery {
29
- readonly instrument: InstrumentSelector;
30
- readonly timeframe: number;
31
- readonly length: number;
32
- type: string;
33
- constructor(instrument: InstrumentSelector, timeframe: number, length: number);
34
- }
35
- export declare class AdapterFeedCommand {
36
- readonly instrument: InstrumentSelector;
37
- readonly from: timestamp;
38
- readonly to: timestamp;
39
- readonly feed: Feed;
40
- readonly progress: (timestamp: number) => void;
41
- type: string;
42
- constructor(instrument: InstrumentSelector, from: timestamp, to: timestamp, feed: Feed, progress: (timestamp: number) => void);
43
- }
@@ -1,104 +0,0 @@
1
- "use strict";
2
- var __decorate = (this && this.__decorate) || function (decorators, target, key, desc) {
3
- var c = arguments.length, r = c < 3 ? target : desc === null ? desc = Object.getOwnPropertyDescriptor(target, key) : desc, d;
4
- if (typeof Reflect === "object" && typeof Reflect.decorate === "function") r = Reflect.decorate(decorators, target, key, desc);
5
- else for (var i = decorators.length - 1; i >= 0; i--) if (d = decorators[i]) r = (c < 3 ? d(r) : c > 3 ? d(target, key, r) : d(target, key)) || r;
6
- return c > 3 && r && Object.defineProperty(target, key, r), r;
7
- };
8
- var __metadata = (this && this.__metadata) || function (k, v) {
9
- if (typeof Reflect === "object" && typeof Reflect.metadata === "function") return Reflect.metadata(k, v);
10
- };
11
- Object.defineProperty(exports, "__esModule", { value: true });
12
- exports.AdapterFeedCommand = exports.AdapterHistoryQuery = exports.AdapterOrderCancelCommand = exports.AdapterOrderOpenCommand = exports.AdapterSubscribeCommand = exports.AdapterAccountCommand = exports.AdapterDisposeCommand = exports.AdapterAwakeCommand = void 0;
13
- const storage_1 = require("../storage");
14
- const domain_1 = require("../domain");
15
- const topic_1 = require("../shared/topic");
16
- let AdapterAwakeCommand = class AdapterAwakeCommand {
17
- constructor() {
18
- this.type = 'awake';
19
- }
20
- };
21
- AdapterAwakeCommand = __decorate([
22
- topic_1.event
23
- ], AdapterAwakeCommand);
24
- exports.AdapterAwakeCommand = AdapterAwakeCommand;
25
- let AdapterDisposeCommand = class AdapterDisposeCommand {
26
- constructor() {
27
- this.type = 'dispose';
28
- }
29
- };
30
- AdapterDisposeCommand = __decorate([
31
- topic_1.event
32
- ], AdapterDisposeCommand);
33
- exports.AdapterDisposeCommand = AdapterDisposeCommand;
34
- let AdapterAccountCommand = class AdapterAccountCommand {
35
- constructor() {
36
- this.type = 'account';
37
- }
38
- };
39
- AdapterAccountCommand = __decorate([
40
- topic_1.event
41
- ], AdapterAccountCommand);
42
- exports.AdapterAccountCommand = AdapterAccountCommand;
43
- let AdapterSubscribeCommand = class AdapterSubscribeCommand {
44
- constructor(instrument) {
45
- this.instrument = instrument;
46
- this.type = 'subscribe';
47
- }
48
- };
49
- AdapterSubscribeCommand = __decorate([
50
- topic_1.event,
51
- __metadata("design:paramtypes", [Array])
52
- ], AdapterSubscribeCommand);
53
- exports.AdapterSubscribeCommand = AdapterSubscribeCommand;
54
- let AdapterOrderOpenCommand = class AdapterOrderOpenCommand {
55
- constructor(order) {
56
- this.order = order;
57
- this.type = 'order-open';
58
- }
59
- };
60
- AdapterOrderOpenCommand = __decorate([
61
- topic_1.event,
62
- __metadata("design:paramtypes", [domain_1.Order])
63
- ], AdapterOrderOpenCommand);
64
- exports.AdapterOrderOpenCommand = AdapterOrderOpenCommand;
65
- let AdapterOrderCancelCommand = class AdapterOrderCancelCommand {
66
- constructor(order) {
67
- this.order = order;
68
- this.type = 'order-cancel';
69
- }
70
- };
71
- AdapterOrderCancelCommand = __decorate([
72
- topic_1.event,
73
- __metadata("design:paramtypes", [domain_1.Order])
74
- ], AdapterOrderCancelCommand);
75
- exports.AdapterOrderCancelCommand = AdapterOrderCancelCommand;
76
- let AdapterHistoryQuery = class AdapterHistoryQuery {
77
- constructor(instrument, timeframe, length) {
78
- this.instrument = instrument;
79
- this.timeframe = timeframe;
80
- this.length = length;
81
- this.type = 'history';
82
- }
83
- };
84
- AdapterHistoryQuery = __decorate([
85
- topic_1.event,
86
- __metadata("design:paramtypes", [domain_1.InstrumentSelector, Number, Number])
87
- ], AdapterHistoryQuery);
88
- exports.AdapterHistoryQuery = AdapterHistoryQuery;
89
- let AdapterFeedCommand = class AdapterFeedCommand {
90
- constructor(instrument, from, to, feed, progress) {
91
- this.instrument = instrument;
92
- this.from = from;
93
- this.to = to;
94
- this.feed = feed;
95
- this.progress = progress;
96
- this.type = 'feed';
97
- }
98
- };
99
- AdapterFeedCommand = __decorate([
100
- topic_1.event,
101
- __metadata("design:paramtypes", [domain_1.InstrumentSelector, Number, Number, storage_1.Feed, Function])
102
- ], AdapterFeedCommand);
103
- exports.AdapterFeedCommand = AdapterFeedCommand;
104
- //# sourceMappingURL=adapter.event.js.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"adapter.event.js","sourceRoot":"","sources":["../../src/adapter/adapter.event.ts"],"names":[],"mappings":";;;;;;;;;;;;AAAA,wCAAkC;AAElC,sCAAsD;AACtD,2CAAwC;AAGxC,IAAa,mBAAmB,GAAhC,MAAa,mBAAmB;IAAhC;QACE,SAAI,GAAG,OAAO,CAAC;IACjB,CAAC;CAAA,CAAA;AAFY,mBAAmB;IAD/B,aAAK;GACO,mBAAmB,CAE/B;AAFY,kDAAmB;AAKhC,IAAa,qBAAqB,GAAlC,MAAa,qBAAqB;IAAlC;QACE,SAAI,GAAG,SAAS,CAAC;IACnB,CAAC;CAAA,CAAA;AAFY,qBAAqB;IADjC,aAAK;GACO,qBAAqB,CAEjC;AAFY,sDAAqB;AAKlC,IAAa,qBAAqB,GAAlC,MAAa,qBAAqB;IAAlC;QACE,SAAI,GAAG,SAAS,CAAC;IACnB,CAAC;CAAA,CAAA;AAFY,qBAAqB;IADjC,aAAK;GACO,qBAAqB,CAEjC;AAFY,sDAAqB;AAKlC,IAAa,uBAAuB,GAApC,MAAa,uBAAuB;IAGlC,YAAqB,UAAqC;QAArC,eAAU,GAAV,UAAU,CAA2B;QAF1D,SAAI,GAAG,WAAW,CAAC;IAE0C,CAAC;CAC/D,CAAA;AAJY,uBAAuB;IADnC,aAAK;qCAI6B,KAAK;GAH3B,uBAAuB,CAInC;AAJY,0DAAuB;AAOpC,IAAa,uBAAuB,GAApC,MAAa,uBAAuB;IAGlC,YAAqB,KAAY;QAAZ,UAAK,GAAL,KAAK,CAAO;QAFjC,SAAI,GAAG,YAAY,CAAC;IAEgB,CAAC;CACtC,CAAA;AAJY,uBAAuB;IADnC,aAAK;qCAIwB,cAAK;GAHtB,uBAAuB,CAInC;AAJY,0DAAuB;AAOpC,IAAa,yBAAyB,GAAtC,MAAa,yBAAyB;IAGpC,YAAqB,KAAY;QAAZ,UAAK,GAAL,KAAK,CAAO;QAFjC,SAAI,GAAG,cAAc,CAAC;IAEc,CAAC;CACtC,CAAA;AAJY,yBAAyB;IADrC,aAAK;qCAIwB,cAAK;GAHtB,yBAAyB,CAIrC;AAJY,8DAAyB;AAOtC,IAAa,mBAAmB,GAAhC,MAAa,mBAAmB;IAG9B,YACW,UAA8B,EAC9B,SAAiB,EACjB,MAAc;QAFd,eAAU,GAAV,UAAU,CAAoB;QAC9B,cAAS,GAAT,SAAS,CAAQ;QACjB,WAAM,GAAN,MAAM,CAAQ;QALzB,SAAI,GAAG,SAAS,CAAC;IAMd,CAAC;CACL,CAAA;AARY,mBAAmB;IAD/B,aAAK;qCAKmB,2BAAkB;GAJ9B,mBAAmB,CAQ/B;AARY,kDAAmB;AAWhC,IAAa,kBAAkB,GAA/B,MAAa,kBAAkB;IAG7B,YACW,UAA8B,EAC9B,IAAe,EACf,EAAa,EACb,IAAU,EACV,QAAqC;QAJrC,eAAU,GAAV,UAAU,CAAoB;QAC9B,SAAI,GAAJ,IAAI,CAAW;QACf,OAAE,GAAF,EAAE,CAAW;QACb,SAAI,GAAJ,IAAI,CAAM;QACV,aAAQ,GAAR,QAAQ,CAA6B;QAPhD,SAAI,GAAG,MAAM,CAAC;IAQX,CAAC;CACL,CAAA;AAVY,kBAAkB;IAD9B,aAAK;qCAKmB,2BAAkB,kBAGxB,cAAI;GAPV,kBAAkB,CAU9B;AAVY,gDAAkB"}
@@ -1,64 +0,0 @@
1
- import { Feed } from '../storage';
2
- import { timestamp } from '../shared';
3
- import { InstrumentSelector, Order } from '../domain';
4
- import { event } from '../shared/topic';
5
-
6
- @event
7
- export class AdapterAwakeCommand {
8
- type = 'awake';
9
- }
10
-
11
- @event
12
- export class AdapterDisposeCommand {
13
- type = 'dispose';
14
- }
15
-
16
- @event
17
- export class AdapterAccountCommand {
18
- type = 'account';
19
- }
20
-
21
- @event
22
- export class AdapterSubscribeCommand {
23
- type = 'subscribe';
24
-
25
- constructor(readonly instrument: Array<InstrumentSelector>) {}
26
- }
27
-
28
- @event
29
- export class AdapterOrderOpenCommand {
30
- type = 'order-open';
31
-
32
- constructor(readonly order: Order) {}
33
- }
34
-
35
- @event
36
- export class AdapterOrderCancelCommand {
37
- type = 'order-cancel';
38
-
39
- constructor(readonly order: Order) {}
40
- }
41
-
42
- @event
43
- export class AdapterHistoryQuery {
44
- type = 'history';
45
-
46
- constructor(
47
- readonly instrument: InstrumentSelector,
48
- readonly timeframe: number,
49
- readonly length: number
50
- ) {}
51
- }
52
-
53
- @event
54
- export class AdapterFeedCommand {
55
- type = 'feed';
56
-
57
- constructor(
58
- readonly instrument: InstrumentSelector,
59
- readonly from: timestamp,
60
- readonly to: timestamp,
61
- readonly feed: Feed,
62
- readonly progress: (timestamp: number) => void
63
- ) {}
64
- }