@quantform/core 0.4.11 → 0.5.15
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/adapter-aggregate.d.ts +7 -3
- package/dist/adapter/adapter-aggregate.js +17 -18
- package/dist/adapter/adapter-aggregate.js.map +1 -1
- package/dist/adapter/adapter.d.ts +21 -21
- package/dist/adapter/adapter.js +8 -40
- package/dist/adapter/adapter.js.map +1 -1
- package/dist/adapter/backtester/backtester-adapter.d.ts +9 -7
- package/dist/adapter/backtester/backtester-adapter.js +15 -13
- package/dist/adapter/backtester/backtester-adapter.js.map +1 -1
- package/dist/{tests → adapter/backtester}/backtester-adapter.spec.d.ts +0 -0
- package/dist/adapter/backtester/backtester-adapter.spec.js +82 -0
- package/dist/adapter/backtester/backtester-adapter.spec.js.map +1 -0
- package/dist/adapter/backtester/backtester-cursor.d.ts +3 -4
- package/dist/adapter/backtester/backtester-cursor.js +2 -1
- package/dist/adapter/backtester/backtester-cursor.js.map +1 -1
- package/dist/adapter/backtester/backtester-cursor.spec.js +17 -18
- package/dist/adapter/backtester/backtester-cursor.spec.js.map +1 -1
- package/dist/adapter/backtester/backtester-streamer.d.ts +4 -1
- package/dist/adapter/backtester/backtester-streamer.js +39 -18
- package/dist/adapter/backtester/backtester-streamer.js.map +1 -1
- package/dist/adapter/backtester/backtester-streamer.spec.js +13 -13
- package/dist/adapter/backtester/backtester-streamer.spec.js.map +1 -1
- package/dist/adapter/backtester/index.js +5 -1
- package/dist/adapter/backtester/index.js.map +1 -1
- package/dist/adapter/error.d.ts +2 -0
- package/dist/adapter/error.js +12 -0
- package/dist/adapter/error.js.map +1 -0
- package/dist/adapter/index.js +5 -1
- package/dist/adapter/index.js.map +1 -1
- package/dist/adapter/paper/engine/paper-engine.d.ts +11 -0
- package/dist/adapter/paper/engine/paper-engine.js +103 -0
- package/dist/adapter/paper/engine/paper-engine.js.map +1 -0
- package/dist/adapter/paper/{simulator/paper-spot-simulator.spec.d.ts → engine/paper-engine.spec.d.ts} +0 -0
- package/dist/adapter/paper/engine/paper-engine.spec.js +54 -0
- package/dist/adapter/paper/engine/paper-engine.spec.js.map +1 -0
- package/dist/adapter/paper/index.d.ts +1 -2
- package/dist/adapter/paper/index.js +6 -3
- package/dist/adapter/paper/index.js.map +1 -1
- package/dist/adapter/paper/paper-adapter.d.ts +7 -7
- package/dist/adapter/paper/paper-adapter.js +21 -19
- package/dist/adapter/paper/paper-adapter.js.map +1 -1
- package/dist/adapter/paper/paper-adapter.spec.js +35 -15
- package/dist/adapter/paper/paper-adapter.spec.js.map +1 -1
- package/dist/bootstrap.js +32 -15
- package/dist/bootstrap.js.map +1 -1
- package/dist/cli/build.d.ts +1 -0
- package/dist/cli/build.js +16 -0
- package/dist/cli/build.js.map +1 -0
- package/dist/cli/dev.d.ts +1 -0
- package/dist/cli/dev.js +17 -0
- package/dist/cli/dev.js.map +1 -0
- package/dist/cli/index.d.ts +2 -0
- package/dist/cli/index.js +72 -0
- package/dist/cli/index.js.map +1 -0
- package/dist/cli/internal/workspace.d.ts +8 -0
- package/dist/cli/internal/workspace.js +14 -0
- package/dist/cli/internal/workspace.js.map +1 -0
- package/dist/cli/pull.d.ts +1 -0
- package/dist/cli/pull.js +52 -0
- package/dist/cli/pull.js.map +1 -0
- package/dist/cli/run.d.ts +1 -0
- package/dist/cli/run.js +19 -0
- package/dist/cli/run.js.map +1 -0
- package/dist/cli/test.d.ts +1 -0
- package/dist/cli/test.js +41 -0
- package/dist/cli/test.js.map +1 -0
- package/dist/domain/asset.d.ts +6 -5
- package/dist/domain/asset.js +22 -16
- package/dist/domain/asset.js.map +1 -1
- package/dist/domain/asset.spec.js +32 -32
- package/dist/domain/asset.spec.js.map +1 -1
- package/dist/domain/balance.d.ts +11 -10
- package/dist/domain/balance.js +38 -32
- package/dist/domain/balance.js.map +1 -1
- package/dist/domain/balance.operator.d.ts +6 -0
- package/dist/domain/balance.operator.js +10 -0
- package/dist/domain/balance.operator.js.map +1 -0
- package/dist/{ipc.spec.d.ts → domain/balance.operator.spec.d.ts} +0 -0
- package/dist/domain/balance.operator.spec.js +23 -0
- package/dist/domain/balance.operator.spec.js.map +1 -0
- package/dist/domain/balance.spec.js +69 -9
- package/dist/domain/balance.spec.js.map +1 -1
- package/dist/domain/candle.d.ts +2 -15
- package/dist/domain/candle.js +3 -66
- package/dist/domain/candle.js.map +1 -1
- package/dist/domain/candle.operator.d.ts +9 -0
- package/dist/domain/candle.operator.js +64 -0
- package/dist/domain/candle.operator.js.map +1 -0
- package/dist/{shared/policy.spec.d.ts → domain/candle.operator.spec.d.ts} +0 -0
- package/dist/domain/candle.operator.spec.js +111 -0
- package/dist/domain/candle.operator.spec.js.map +1 -0
- package/dist/domain/candle.spec.js +11 -53
- package/dist/domain/candle.spec.js.map +1 -1
- package/dist/domain/commission.d.ts +4 -1
- package/dist/domain/commission.js +2 -2
- package/dist/domain/commission.js.map +1 -1
- package/dist/{shared/topic.spec.d.ts → domain/commission.spec.d.ts} +0 -0
- package/dist/domain/commission.spec.js +30 -0
- package/dist/domain/commission.spec.js.map +1 -0
- package/dist/domain/component.d.ts +2 -0
- package/dist/domain/error.d.ts +5 -0
- package/dist/domain/error.js +24 -0
- package/dist/domain/error.js.map +1 -0
- package/dist/domain/index.d.ts +8 -1
- package/dist/domain/index.js +13 -2
- package/dist/domain/index.js.map +1 -1
- package/dist/domain/instrument.d.ts +4 -2
- package/dist/domain/instrument.js +18 -9
- package/dist/domain/instrument.js.map +1 -1
- package/dist/domain/instrument.operator.d.ts +6 -0
- package/dist/domain/instrument.operator.js +14 -0
- package/dist/domain/instrument.operator.js.map +1 -0
- package/dist/{shared/worker.spec.d.ts → domain/instrument.operator.spec.d.ts} +0 -0
- package/dist/domain/instrument.operator.spec.js +24 -0
- package/dist/domain/instrument.operator.spec.js.map +1 -0
- package/dist/domain/instrument.spec.js +22 -30
- package/dist/domain/instrument.spec.js.map +1 -1
- package/dist/domain/order.d.ts +15 -16
- package/dist/domain/order.js +39 -26
- package/dist/domain/order.js.map +1 -1
- package/dist/domain/order.operator.d.ts +7 -0
- package/dist/domain/order.operator.js +14 -0
- package/dist/domain/order.operator.js.map +1 -0
- package/dist/{store/event/store-balance.event.spec.d.ts → domain/order.operator.spec.d.ts} +0 -0
- package/dist/domain/order.operator.spec.js +64 -0
- package/dist/domain/order.operator.spec.js.map +1 -0
- package/dist/{store/event/store-candle.event.spec.d.ts → domain/order.spec.d.ts} +0 -0
- package/dist/domain/order.spec.js +33 -0
- package/dist/domain/order.spec.js.map +1 -0
- package/dist/domain/orderbook.d.ts +2 -0
- package/dist/domain/orderbook.js +2 -0
- package/dist/domain/orderbook.js.map +1 -1
- package/dist/domain/orderbook.operator.d.ts +6 -0
- package/dist/domain/orderbook.operator.js +10 -0
- package/dist/domain/orderbook.operator.js.map +1 -0
- package/dist/{store/event/store-instrument.event.spec.d.ts → domain/orderbook.operator.spec.d.ts} +0 -0
- package/dist/domain/orderbook.operator.spec.js +22 -0
- package/dist/domain/orderbook.operator.spec.js.map +1 -0
- package/dist/{store/event/store-order.event.spec.d.ts → domain/orderbook.spec.d.ts} +0 -0
- package/dist/domain/orderbook.spec.js +13 -0
- package/dist/domain/orderbook.spec.js.map +1 -0
- package/dist/domain/position.d.ts +6 -10
- package/dist/domain/position.js +10 -31
- package/dist/domain/position.js.map +1 -1
- package/dist/domain/position.operator.d.ts +10 -0
- package/dist/domain/position.operator.js +38 -0
- package/dist/domain/position.operator.js.map +1 -0
- package/dist/{store/event/store-trade.event.spec.d.ts → domain/position.operator.spec.d.ts} +0 -0
- package/dist/domain/position.operator.spec.js +48 -0
- package/dist/domain/position.operator.spec.js.map +1 -0
- package/dist/domain/position.spec.js +21 -17
- package/dist/domain/position.spec.js.map +1 -1
- package/dist/domain/session.d.ts +18 -35
- package/dist/domain/session.js +27 -53
- package/dist/domain/session.js.map +1 -1
- package/dist/domain/session.spec.js +1 -1
- package/dist/domain/session.spec.js.map +1 -1
- package/dist/domain/trade.d.ts +3 -1
- package/dist/domain/trade.js +2 -0
- package/dist/domain/trade.js.map +1 -1
- package/dist/domain/trade.operator.d.ts +6 -0
- package/dist/domain/trade.operator.js +10 -0
- package/dist/domain/trade.operator.js.map +1 -0
- package/dist/domain/trade.operator.spec.d.ts +1 -0
- package/dist/domain/trade.operator.spec.js +24 -0
- package/dist/domain/trade.operator.spec.js.map +1 -0
- package/dist/domain/trade.spec.d.ts +1 -0
- package/dist/domain/trade.spec.js +13 -0
- package/dist/domain/trade.spec.js.map +1 -0
- package/dist/index.d.ts +0 -1
- package/dist/index.js +5 -2
- package/dist/index.js.map +1 -1
- package/dist/indicator/atr.js.map +1 -1
- package/dist/indicator/cross.spec.js +2 -2
- package/dist/indicator/cross.spec.js.map +1 -1
- package/dist/indicator/donchian.js.map +1 -1
- package/dist/indicator/ema.js.map +1 -1
- package/dist/indicator/ema.spec.js +1 -1
- package/dist/indicator/ema.spec.js.map +1 -1
- package/dist/indicator/envelope.js.map +1 -1
- package/dist/indicator/index.js +5 -1
- package/dist/indicator/index.js.map +1 -1
- package/dist/indicator/macd.js.map +1 -1
- package/dist/indicator/min-max.js.map +1 -1
- package/dist/indicator/rma.js.map +1 -1
- package/dist/indicator/sma.js.map +1 -1
- package/dist/indicator/sma.spec.js +1 -1
- package/dist/indicator/sma.spec.js.map +1 -1
- package/dist/indicator/swma.js.map +1 -1
- package/dist/indicator/tma.js.map +1 -1
- package/dist/indicator/tma.spec.js +1 -1
- package/dist/indicator/tma.spec.js.map +1 -1
- package/dist/indicator/trailing.spec.js +2 -2
- package/dist/indicator/trailing.spec.js.map +1 -1
- package/dist/indicator/truerange.js.map +1 -1
- package/dist/indicator/truerange.spec.js +1 -1
- package/dist/indicator/truerange.spec.js.map +1 -1
- package/dist/indicator/window.js.map +1 -1
- package/dist/indicator/wma.js.map +1 -1
- package/dist/indicator/wma.spec.js +1 -1
- package/dist/indicator/wma.spec.js.map +1 -1
- package/dist/shared/collections.d.ts +10 -0
- package/dist/shared/collections.js +33 -0
- package/dist/shared/collections.js.map +1 -0
- package/dist/shared/datetime.d.ts +0 -1
- package/dist/shared/datetime.js +1 -12
- package/dist/shared/datetime.js.map +1 -1
- package/dist/shared/decimals.d.ts +1 -1
- package/dist/shared/decimals.js +4 -5
- package/dist/shared/decimals.js.map +1 -1
- package/dist/shared/decimals.spec.js +2 -1
- package/dist/shared/decimals.spec.js.map +1 -1
- package/dist/shared/index.d.ts +1 -3
- package/dist/shared/index.js +6 -4
- package/dist/shared/index.js.map +1 -1
- package/dist/shared/io.js.map +1 -1
- package/dist/shared/policy.d.ts +0 -1
- package/dist/shared/policy.js +1 -11
- package/dist/shared/policy.js.map +1 -1
- package/dist/storage/cache.d.ts +9 -0
- package/dist/storage/cache.js +32 -0
- package/dist/storage/cache.js.map +1 -0
- package/dist/storage/cache.spec.d.ts +1 -0
- package/dist/storage/cache.spec.js +18 -0
- package/dist/storage/cache.spec.js.map +1 -0
- package/dist/storage/feed.d.ts +3 -4
- package/dist/storage/feed.js +16 -6
- package/dist/storage/feed.js.map +1 -1
- package/dist/storage/index.d.ts +1 -0
- package/dist/storage/index.js +6 -1
- package/dist/storage/index.js.map +1 -1
- package/dist/storage/storage.d.ts +2 -0
- package/dist/storage/storage.js +6 -1
- package/dist/storage/storage.js.map +1 -1
- package/dist/store/index.d.ts +8 -2
- package/dist/store/index.js +13 -3
- package/dist/store/index.js.map +1 -1
- package/dist/store/store-balance.event.d.ts +33 -0
- package/dist/store/store-balance.event.js +90 -0
- package/dist/store/store-balance.event.js.map +1 -0
- package/dist/store/store-balance.event.spec.d.ts +1 -0
- package/dist/store/{event/store-balance.event.spec.js → store-balance.event.spec.js} +8 -8
- package/dist/store/store-balance.event.spec.js.map +1 -0
- package/dist/store/{event/store-instrument.event.d.ts → store-instrument.event.d.ts} +5 -8
- package/dist/store/store-instrument.event.js +52 -0
- package/dist/store/store-instrument.event.js.map +1 -0
- package/dist/store/store-instrument.event.spec.d.ts +1 -0
- package/dist/store/store-instrument.event.spec.js +22 -0
- package/dist/store/store-instrument.event.spec.js.map +1 -0
- package/dist/store/store-order.event.d.ts +59 -0
- package/dist/store/store-order.event.js +181 -0
- package/dist/store/store-order.event.js.map +1 -0
- package/dist/store/store-order.event.spec.d.ts +1 -0
- package/dist/store/{event/store-order.event.spec.js → store-order.event.spec.js} +8 -8
- package/dist/store/store-order.event.spec.js.map +1 -0
- package/dist/store/{event/store-orderbook.event.d.ts → store-orderbook.event.d.ts} +4 -5
- package/dist/store/store-orderbook.event.js +42 -0
- package/dist/store/store-orderbook.event.js.map +1 -0
- package/dist/store/{event/store-position.event.d.ts → store-position.event.d.ts} +5 -7
- package/dist/store/store-position.event.js +77 -0
- package/dist/store/store-position.event.js.map +1 -0
- package/dist/store/store-state.d.ts +27 -0
- package/dist/store/store-state.js +29 -0
- package/dist/store/store-state.js.map +1 -0
- package/dist/store/{event/store-trade.event.d.ts → store-trade.event.d.ts} +4 -5
- package/dist/store/store-trade.event.js +25 -0
- package/dist/store/store-trade.event.js.map +1 -0
- package/dist/store/store-trade.event.spec.d.ts +1 -0
- package/dist/store/{event/store-trade.event.spec.js → store-trade.event.spec.js} +14 -14
- package/dist/store/store-trade.event.spec.js.map +1 -0
- package/dist/store/store.d.ts +4 -25
- package/dist/store/store.event.d.ts +6 -0
- package/dist/store/{event/store.event.js → store.event.js} +0 -0
- package/dist/store/store.event.js.map +1 -0
- package/dist/store/store.js +7 -195
- package/dist/store/store.js.map +1 -1
- package/dist/store/store.spec.d.ts +1 -0
- package/dist/store/store.spec.js +119 -0
- package/dist/store/store.spec.js.map +1 -0
- package/dist/tsconfig.tsbuildinfo +1 -1
- package/{jestconfig.unit.json → jestconfig.json} +1 -2
- package/package.json +24 -20
- package/src/adapter/adapter-aggregate.ts +31 -34
- package/src/adapter/adapter.ts +26 -49
- package/src/adapter/backtester/backtester-adapter.spec.ts +124 -0
- package/src/adapter/backtester/backtester-adapter.ts +30 -17
- package/src/adapter/backtester/backtester-cursor.spec.ts +18 -19
- package/src/adapter/backtester/backtester-cursor.ts +7 -7
- package/src/adapter/backtester/backtester-streamer.spec.ts +19 -19
- package/src/adapter/backtester/backtester-streamer.ts +50 -20
- package/src/adapter/error.ts +9 -0
- package/src/adapter/paper/engine/paper-engine.spec.ts +92 -0
- package/src/adapter/paper/engine/paper-engine.ts +135 -0
- package/src/adapter/paper/index.ts +1 -2
- package/src/adapter/paper/paper-adapter.spec.ts +55 -17
- package/src/adapter/paper/paper-adapter.ts +27 -24
- package/src/bootstrap.ts +57 -21
- package/src/cli/build.ts +15 -0
- package/src/cli/dev.ts +18 -0
- package/src/cli/index.ts +81 -0
- package/src/cli/internal/workspace.ts +18 -0
- package/src/cli/pull.ts +71 -0
- package/src/cli/run.ts +22 -0
- package/src/cli/test.ts +53 -0
- package/src/domain/asset.spec.ts +33 -29
- package/src/domain/asset.ts +27 -21
- package/src/domain/balance.operator.spec.ts +25 -0
- package/src/domain/balance.operator.ts +15 -0
- package/src/domain/balance.spec.ts +97 -9
- package/src/domain/balance.ts +48 -41
- package/src/domain/candle.operator.spec.ts +125 -0
- package/src/domain/candle.operator.ts +106 -0
- package/src/domain/candle.spec.ts +12 -67
- package/src/domain/candle.ts +2 -104
- package/src/domain/commission.spec.ts +33 -0
- package/src/domain/commission.ts +2 -2
- package/src/domain/component.ts +2 -0
- package/src/domain/error.ts +25 -0
- package/src/domain/index.ts +8 -1
- package/src/domain/instrument.operator.spec.ts +28 -0
- package/src/domain/instrument.operator.ts +25 -0
- package/src/domain/instrument.spec.ts +22 -30
- package/src/domain/instrument.ts +21 -11
- package/src/domain/order.operator.spec.ts +81 -0
- package/src/domain/order.operator.ts +23 -0
- package/src/domain/order.spec.ts +43 -0
- package/src/domain/order.ts +46 -47
- package/src/domain/orderbook.operator.spec.ts +28 -0
- package/src/domain/orderbook.operator.ts +15 -0
- package/src/domain/orderbook.spec.ts +17 -0
- package/src/domain/orderbook.ts +5 -1
- package/src/domain/position.operator.spec.ts +58 -0
- package/src/domain/position.operator.ts +61 -0
- package/src/domain/position.spec.ts +28 -24
- package/src/domain/position.ts +17 -47
- package/src/domain/session.spec.ts +1 -1
- package/src/domain/session.ts +57 -197
- package/src/domain/trade.operator.spec.ts +31 -0
- package/src/domain/trade.operator.ts +15 -0
- package/src/domain/trade.spec.ts +17 -0
- package/src/domain/trade.ts +6 -2
- package/src/index.ts +0 -1
- package/src/indicator/atr.ts +1 -0
- package/src/indicator/cross.spec.ts +3 -2
- package/src/indicator/donchian.ts +1 -0
- package/src/indicator/ema.spec.ts +2 -1
- package/src/indicator/ema.ts +1 -0
- package/src/indicator/envelope.ts +1 -0
- package/src/indicator/macd.ts +1 -0
- package/src/indicator/min-max.ts +1 -0
- package/src/indicator/rma.ts +1 -0
- package/src/indicator/sma.spec.ts +2 -1
- package/src/indicator/sma.ts +1 -0
- package/src/indicator/swma.ts +1 -0
- package/src/indicator/tma.spec.ts +2 -1
- package/src/indicator/tma.ts +1 -0
- package/src/indicator/trailing.spec.ts +3 -2
- package/src/indicator/truerange.spec.ts +2 -1
- package/src/indicator/truerange.ts +1 -0
- package/src/indicator/window.ts +1 -0
- package/src/indicator/wma.spec.ts +2 -1
- package/src/indicator/wma.ts +1 -0
- package/src/shared/collections.ts +35 -0
- package/src/shared/datetime.ts +0 -12
- package/src/shared/decimals.spec.ts +2 -1
- package/src/shared/decimals.ts +6 -6
- package/src/shared/index.ts +1 -3
- package/src/shared/io.ts +0 -2
- package/src/shared/policy.ts +0 -13
- package/src/storage/cache.spec.ts +18 -0
- package/src/storage/cache.ts +35 -0
- package/src/storage/feed.ts +26 -16
- package/src/storage/index.ts +1 -0
- package/src/storage/storage.ts +11 -0
- package/src/store/index.ts +8 -2
- package/src/store/{event/store-balance.event.spec.ts → store-balance.event.spec.ts} +7 -7
- package/src/store/store-balance.event.ts +124 -0
- package/src/store/store-instrument.event.spec.ts +25 -0
- package/src/store/store-instrument.event.ts +72 -0
- package/src/store/store-order.event.spec.ts +28 -0
- package/src/store/store-order.event.ts +214 -0
- package/src/store/store-orderbook.event.ts +54 -0
- package/src/store/store-position.event.ts +102 -0
- package/src/store/store-state.ts +48 -0
- package/src/store/{event/store-trade.event.spec.ts → store-trade.event.spec.ts} +15 -15
- package/src/store/store-trade.event.ts +36 -0
- package/src/store/store.event.ts +8 -0
- package/src/store/store.spec.ts +180 -0
- package/src/store/store.ts +11 -208
- package/tsconfig.json +2 -2
- package/dist/adapter/paper/simulator/paper-margin-simulator.d.ts +0 -10
- package/dist/adapter/paper/simulator/paper-margin-simulator.js +0 -69
- package/dist/adapter/paper/simulator/paper-margin-simulator.js.map +0 -1
- package/dist/adapter/paper/simulator/paper-simulator.d.ts +0 -16
- package/dist/adapter/paper/simulator/paper-simulator.js +0 -93
- package/dist/adapter/paper/simulator/paper-simulator.js.map +0 -1
- package/dist/adapter/paper/simulator/paper-spot-simulator.d.ts +0 -13
- package/dist/adapter/paper/simulator/paper-spot-simulator.js +0 -81
- package/dist/adapter/paper/simulator/paper-spot-simulator.js.map +0 -1
- package/dist/adapter/paper/simulator/paper-spot-simulator.spec.js +0 -49
- package/dist/adapter/paper/simulator/paper-spot-simulator.spec.js.map +0 -1
- package/dist/domain/statement.d.ts +0 -4
- package/dist/domain/statement.js +0 -87
- package/dist/domain/statement.js.map +0 -1
- package/dist/ipc.d.ts +0 -33
- package/dist/ipc.js +0 -244
- package/dist/ipc.js.map +0 -1
- package/dist/ipc.spec.js +0 -57
- package/dist/ipc.spec.js.map +0 -1
- package/dist/shared/policy.spec.js +0 -26
- package/dist/shared/policy.spec.js.map +0 -1
- package/dist/shared/task.d.ts +0 -6
- package/dist/shared/task.js +0 -25
- package/dist/shared/task.js.map +0 -1
- package/dist/shared/topic.d.ts +0 -14
- package/dist/shared/topic.js +0 -40
- package/dist/shared/topic.js.map +0 -1
- package/dist/shared/topic.spec.js +0 -43
- package/dist/shared/topic.spec.js.map +0 -1
- package/dist/shared/worker.d.ts +0 -10
- package/dist/shared/worker.js +0 -46
- package/dist/shared/worker.js.map +0 -1
- package/dist/shared/worker.spec.js +0 -18
- package/dist/shared/worker.spec.js.map +0 -1
- package/dist/store/event/index.d.ts +0 -8
- package/dist/store/event/index.js +0 -21
- package/dist/store/event/index.js.map +0 -1
- package/dist/store/event/store-balance.event.d.ts +0 -37
- package/dist/store/event/store-balance.event.js +0 -119
- package/dist/store/event/store-balance.event.js.map +0 -1
- package/dist/store/event/store-balance.event.spec.js.map +0 -1
- package/dist/store/event/store-candle.event.d.ts +0 -18
- package/dist/store/event/store-candle.event.js +0 -63
- package/dist/store/event/store-candle.event.js.map +0 -1
- package/dist/store/event/store-candle.event.spec.js +0 -23
- package/dist/store/event/store-candle.event.spec.js.map +0 -1
- package/dist/store/event/store-instrument.event.js +0 -78
- package/dist/store/event/store-instrument.event.js.map +0 -1
- package/dist/store/event/store-instrument.event.spec.js +0 -21
- package/dist/store/event/store-instrument.event.spec.js.map +0 -1
- package/dist/store/event/store-order.event.d.ts +0 -61
- package/dist/store/event/store-order.event.js +0 -205
- package/dist/store/event/store-order.event.js.map +0 -1
- package/dist/store/event/store-order.event.spec.js.map +0 -1
- package/dist/store/event/store-orderbook.event.js +0 -65
- package/dist/store/event/store-orderbook.event.js.map +0 -1
- package/dist/store/event/store-position.event.js +0 -97
- package/dist/store/event/store-position.event.js.map +0 -1
- package/dist/store/event/store-trade.event.js +0 -47
- package/dist/store/event/store-trade.event.js.map +0 -1
- package/dist/store/event/store-trade.event.spec.js.map +0 -1
- package/dist/store/event/store.event.d.ts +0 -5
- package/dist/store/event/store.event.js.map +0 -1
- package/dist/store/store.state.d.ts +0 -21
- package/dist/store/store.state.js +0 -21
- package/dist/store/store.state.js.map +0 -1
- package/dist/tests/backtester-adapter.spec.js +0 -60
- package/dist/tests/backtester-adapter.spec.js.map +0 -1
- package/dist/tests/session.spec.d.ts +0 -0
- package/dist/tests/session.spec.js +0 -1
- package/dist/tests/session.spec.js.map +0 -1
- package/jestconfig.integration.json +0 -12
- package/src/adapter/paper/simulator/paper-margin-simulator.ts +0 -108
- package/src/adapter/paper/simulator/paper-simulator.ts +0 -120
- package/src/adapter/paper/simulator/paper-spot-simulator.spec.ts +0 -87
- package/src/adapter/paper/simulator/paper-spot-simulator.ts +0 -134
- package/src/domain/statement.ts +0 -118
- package/src/ipc.spec.ts +0 -73
- package/src/ipc.ts +0 -321
- package/src/shared/policy.spec.ts +0 -29
- package/src/shared/task.ts +0 -30
- package/src/shared/topic.spec.ts +0 -34
- package/src/shared/topic.ts +0 -43
- package/src/shared/worker.spec.ts +0 -25
- package/src/shared/worker.ts +0 -55
- package/src/store/event/index.ts +0 -8
- package/src/store/event/store-balance.event.ts +0 -161
- package/src/store/event/store-candle.event.spec.ts +0 -30
- package/src/store/event/store-candle.event.ts +0 -71
- package/src/store/event/store-instrument.event.spec.ts +0 -25
- package/src/store/event/store-instrument.event.ts +0 -84
- package/src/store/event/store-order.event.spec.ts +0 -28
- package/src/store/event/store-order.event.ts +0 -218
- package/src/store/event/store-orderbook.event.ts +0 -70
- package/src/store/event/store-position.event.ts +0 -109
- package/src/store/event/store-trade.event.ts +0 -52
- package/src/store/event/store.event.ts +0 -6
- package/src/store/store.state.ts +0 -43
- package/src/tests/backtester-adapter.spec.ts +0 -87
- package/src/tests/session.spec.ts +0 -121
package/dist/shared/task.js
DELETED
|
@@ -1,25 +0,0 @@
|
|
|
1
|
-
"use strict";
|
|
2
|
-
Object.defineProperty(exports, "__esModule", { value: true });
|
|
3
|
-
exports.runTask = exports.task = void 0;
|
|
4
|
-
const rxjs_1 = require("rxjs");
|
|
5
|
-
const tasks = {};
|
|
6
|
-
function task(name, fn) {
|
|
7
|
-
tasks[name] = fn;
|
|
8
|
-
}
|
|
9
|
-
exports.task = task;
|
|
10
|
-
async function runTask(name, session) {
|
|
11
|
-
const task = tasks[name];
|
|
12
|
-
if (!task) {
|
|
13
|
-
throw new Error('Unknown task: ' + name);
|
|
14
|
-
}
|
|
15
|
-
const result = tasks[name](session);
|
|
16
|
-
if (result instanceof rxjs_1.Observable) {
|
|
17
|
-
return (0, rxjs_1.lastValueFrom)(result);
|
|
18
|
-
}
|
|
19
|
-
if (result instanceof Promise) {
|
|
20
|
-
return await result;
|
|
21
|
-
}
|
|
22
|
-
return result;
|
|
23
|
-
}
|
|
24
|
-
exports.runTask = runTask;
|
|
25
|
-
//# sourceMappingURL=task.js.map
|
package/dist/shared/task.js.map
DELETED
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"file":"task.js","sourceRoot":"","sources":["../../src/shared/task.ts"],"names":[],"mappings":";;;AAAA,+BAAiD;AAKjD,MAAM,KAAK,GAAyB,EAAE,CAAC;AAEvC,SAAgB,IAAI,CAAC,IAAY,EAAE,EAAQ;IACzC,KAAK,CAAC,IAAI,CAAC,GAAG,EAAE,CAAC;AACnB,CAAC;AAFD,oBAEC;AAEM,KAAK,UAAU,OAAO,CAAC,IAAY,EAAE,OAAgB;IAC1D,MAAM,IAAI,GAAG,KAAK,CAAC,IAAI,CAAC,CAAC;IAEzB,IAAI,CAAC,IAAI,EAAE;QACT,MAAM,IAAI,KAAK,CAAC,gBAAgB,GAAG,IAAI,CAAC,CAAC;KAC1C;IAED,MAAM,MAAM,GAAG,KAAK,CAAC,IAAI,CAAC,CAAC,OAAO,CAAC,CAAC;IAEpC,IAAI,MAAM,YAAY,iBAAU,EAAE;QAChC,OAAO,IAAA,oBAAa,EAAC,MAAM,CAAC,CAAC;KAC9B;IAED,IAAI,MAAM,YAAY,OAAO,EAAE;QAC7B,OAAO,MAAM,MAAM,CAAC;KACrB;IAED,OAAO,MAAM,CAAC;AAChB,CAAC;AAlBD,0BAkBC"}
|
package/dist/shared/topic.d.ts
DELETED
|
@@ -1,14 +0,0 @@
|
|
|
1
|
-
import 'reflect-metadata';
|
|
2
|
-
export declare class Topic<T extends {
|
|
3
|
-
type: string;
|
|
4
|
-
} = {
|
|
5
|
-
type: string;
|
|
6
|
-
}, C = any> {
|
|
7
|
-
private readonly handler;
|
|
8
|
-
constructor();
|
|
9
|
-
register(target: any): void;
|
|
10
|
-
dispatch(event: T, context: C): any;
|
|
11
|
-
onUnknownEvent(event: T, context: C): void;
|
|
12
|
-
}
|
|
13
|
-
export declare function handler(event: any): (target: any, key: string) => void;
|
|
14
|
-
export declare const event: (target: any) => void;
|
package/dist/shared/topic.js
DELETED
|
@@ -1,40 +0,0 @@
|
|
|
1
|
-
"use strict";
|
|
2
|
-
Object.defineProperty(exports, "__esModule", { value: true });
|
|
3
|
-
exports.event = exports.handler = exports.Topic = void 0;
|
|
4
|
-
require("reflect-metadata");
|
|
5
|
-
class Topic {
|
|
6
|
-
constructor() {
|
|
7
|
-
this.handler = {};
|
|
8
|
-
this.register(this);
|
|
9
|
-
}
|
|
10
|
-
register(target) {
|
|
11
|
-
for (const key of Reflect.getMetadataKeys(target.constructor.prototype)) {
|
|
12
|
-
if (!key.startsWith('event:')) {
|
|
13
|
-
continue;
|
|
14
|
-
}
|
|
15
|
-
this.handler[key] = Reflect.getMetadata(key, target.constructor.prototype);
|
|
16
|
-
}
|
|
17
|
-
}
|
|
18
|
-
dispatch(event, context) {
|
|
19
|
-
const handler = this.handler['event:' + event.type];
|
|
20
|
-
return handler
|
|
21
|
-
? handler.call(this, event, context)
|
|
22
|
-
: this.onUnknownEvent(event, context);
|
|
23
|
-
}
|
|
24
|
-
onUnknownEvent(event, context) {
|
|
25
|
-
throw new Error(`No handler for event ${event.type}`);
|
|
26
|
-
}
|
|
27
|
-
}
|
|
28
|
-
exports.Topic = Topic;
|
|
29
|
-
function handler(event) {
|
|
30
|
-
return function (target, key) {
|
|
31
|
-
const type = Reflect.getMetadata('event:type', event.prototype);
|
|
32
|
-
Reflect.defineMetadata('event:' + type, target[key], target);
|
|
33
|
-
};
|
|
34
|
-
}
|
|
35
|
-
exports.handler = handler;
|
|
36
|
-
const event = (target) => {
|
|
37
|
-
Reflect.defineMetadata('event:type', new target().type, target.prototype);
|
|
38
|
-
};
|
|
39
|
-
exports.event = event;
|
|
40
|
-
//# sourceMappingURL=topic.js.map
|
package/dist/shared/topic.js.map
DELETED
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"file":"topic.js","sourceRoot":"","sources":["../../src/shared/topic.ts"],"names":[],"mappings":";;;AAAA,4BAA0B;AAE1B,MAAa,KAAK;IAGhB;QAFiB,YAAO,GAA6B,EAAE,CAAC;QAGtD,IAAI,CAAC,QAAQ,CAAC,IAAI,CAAC,CAAC;IACtB,CAAC;IAED,QAAQ,CAAC,MAAW;QAClB,KAAK,MAAM,GAAG,IAAI,OAAO,CAAC,eAAe,CAAC,MAAM,CAAC,WAAW,CAAC,SAAS,CAAC,EAAE;YACvE,IAAI,CAAC,GAAG,CAAC,UAAU,CAAC,QAAQ,CAAC,EAAE;gBAC7B,SAAS;aACV;YAED,IAAI,CAAC,OAAO,CAAC,GAAG,CAAC,GAAG,OAAO,CAAC,WAAW,CAAC,GAAG,EAAE,MAAM,CAAC,WAAW,CAAC,SAAS,CAAC,CAAC;SAC5E;IACH,CAAC;IAED,QAAQ,CAAC,KAAQ,EAAE,OAAU;QAC3B,MAAM,OAAO,GAAG,IAAI,CAAC,OAAO,CAAC,QAAQ,GAAG,KAAK,CAAC,IAAI,CAAC,CAAC;QAEpD,OAAO,OAAO;YACZ,CAAC,CAAC,OAAO,CAAC,IAAI,CAAC,IAAI,EAAE,KAAK,EAAE,OAAO,CAAC;YACpC,CAAC,CAAC,IAAI,CAAC,cAAc,CAAC,KAAK,EAAE,OAAO,CAAC,CAAC;IAC1C,CAAC;IAED,cAAc,CAAC,KAAQ,EAAE,OAAU;QACjC,MAAM,IAAI,KAAK,CAAC,wBAAwB,KAAK,CAAC,IAAI,EAAE,CAAC,CAAC;IACxD,CAAC;CACF;AA5BD,sBA4BC;AAED,SAAgB,OAAO,CAAC,KAAU;IAChC,OAAO,UAAU,MAAW,EAAE,GAAW;QACvC,MAAM,IAAI,GAAG,OAAO,CAAC,WAAW,CAAC,YAAY,EAAE,KAAK,CAAC,SAAS,CAAC,CAAC;QAEhE,OAAO,CAAC,cAAc,CAAC,QAAQ,GAAG,IAAI,EAAE,MAAM,CAAC,GAAG,CAAC,EAAE,MAAM,CAAC,CAAC;IAC/D,CAAC,CAAC;AACJ,CAAC;AAND,0BAMC;AAEM,MAAM,KAAK,GAAG,CAAC,MAAW,EAAE,EAAE;IACnC,OAAO,CAAC,cAAc,CAAC,YAAY,EAAE,IAAI,MAAM,EAAE,CAAC,IAAI,EAAE,MAAM,CAAC,SAAS,CAAC,CAAC;AAC5E,CAAC,CAAC;AAFW,QAAA,KAAK,SAEhB"}
|
|
@@ -1,43 +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
|
-
const topic_1 = require("./topic");
|
|
13
|
-
describe('topic tests', () => {
|
|
14
|
-
test('string as key cache', () => {
|
|
15
|
-
const context = {
|
|
16
|
-
counter: 1
|
|
17
|
-
};
|
|
18
|
-
let IncrementEvent = class IncrementEvent {
|
|
19
|
-
constructor() {
|
|
20
|
-
this.type = 'increment';
|
|
21
|
-
}
|
|
22
|
-
};
|
|
23
|
-
IncrementEvent = __decorate([
|
|
24
|
-
topic_1.event
|
|
25
|
-
], IncrementEvent);
|
|
26
|
-
class MathematicBaseTopic extends topic_1.Topic {
|
|
27
|
-
}
|
|
28
|
-
class MathematicTopic extends MathematicBaseTopic {
|
|
29
|
-
increment(event, context) {
|
|
30
|
-
context.counter++;
|
|
31
|
-
}
|
|
32
|
-
}
|
|
33
|
-
__decorate([
|
|
34
|
-
(0, topic_1.handler)(IncrementEvent),
|
|
35
|
-
__metadata("design:type", Function),
|
|
36
|
-
__metadata("design:paramtypes", [IncrementEvent, Object]),
|
|
37
|
-
__metadata("design:returntype", void 0)
|
|
38
|
-
], MathematicTopic.prototype, "increment", null);
|
|
39
|
-
new MathematicTopic().dispatch(new IncrementEvent(), context);
|
|
40
|
-
expect(context.counter).toBe(2);
|
|
41
|
-
});
|
|
42
|
-
});
|
|
43
|
-
//# sourceMappingURL=topic.spec.js.map
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"file":"topic.spec.js","sourceRoot":"","sources":["../../src/shared/topic.spec.ts"],"names":[],"mappings":";;;;;;;;;;;AAAA,mCAAgD;AAEhD,QAAQ,CAAC,aAAa,EAAE,GAAG,EAAE;IAC3B,IAAI,CAAC,qBAAqB,EAAE,GAAG,EAAE;QAS/B,MAAM,OAAO,GAAY;YACvB,OAAO,EAAE,CAAC;SACX,CAAC;QAGF,IAAM,cAAc,GAApB,MAAM,cAAc;YAApB;gBACE,SAAI,GAAG,WAAW,CAAC;YACrB,CAAC;SAAA,CAAA;QAFK,cAAc;YADnB,aAAK;WACA,cAAc,CAEnB;QAED,MAAM,mBAAoB,SAAQ,aAAqB;SAAG;QAC1D,MAAM,eAAgB,SAAQ,mBAAmB;YAE/C,SAAS,CAAC,KAAqB,EAAE,OAAgB;gBAC/C,OAAO,CAAC,OAAO,EAAE,CAAC;YACpB,CAAC;SACF;QAHC;YADC,IAAA,eAAO,EAAC,cAAc,CAAC;;6CACP,cAAc;;wDAE9B;QAGH,IAAI,eAAe,EAAE,CAAC,QAAQ,CAAC,IAAI,cAAc,EAAE,EAAE,OAAO,CAAC,CAAC;QAE9D,MAAM,CAAC,OAAO,CAAC,OAAO,CAAC,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC;IAClC,CAAC,CAAC,CAAC;AACL,CAAC,CAAC,CAAC"}
|
package/dist/shared/worker.d.ts
DELETED
|
@@ -1,10 +0,0 @@
|
|
|
1
|
-
/// <reference types="node" />
|
|
2
|
-
import { EventEmitter } from 'stream';
|
|
3
|
-
export declare type Work = () => Promise<void>;
|
|
4
|
-
export declare class Worker extends EventEmitter {
|
|
5
|
-
private readonly queue;
|
|
6
|
-
private promise;
|
|
7
|
-
enqueue(job: Work): void;
|
|
8
|
-
wait(): Promise<void>;
|
|
9
|
-
private tryNext;
|
|
10
|
-
}
|
package/dist/shared/worker.js
DELETED
|
@@ -1,46 +0,0 @@
|
|
|
1
|
-
"use strict";
|
|
2
|
-
Object.defineProperty(exports, "__esModule", { value: true });
|
|
3
|
-
exports.Worker = void 0;
|
|
4
|
-
const stream_1 = require("stream");
|
|
5
|
-
class Worker extends stream_1.EventEmitter {
|
|
6
|
-
constructor() {
|
|
7
|
-
super(...arguments);
|
|
8
|
-
this.queue = new Array();
|
|
9
|
-
}
|
|
10
|
-
enqueue(job) {
|
|
11
|
-
this.queue.push(job);
|
|
12
|
-
this.tryNext();
|
|
13
|
-
}
|
|
14
|
-
wait() {
|
|
15
|
-
if (!this.queue.length) {
|
|
16
|
-
return Promise.resolve();
|
|
17
|
-
}
|
|
18
|
-
return new Promise(resolve => {
|
|
19
|
-
const listener = () => {
|
|
20
|
-
if (this.queue.length) {
|
|
21
|
-
return;
|
|
22
|
-
}
|
|
23
|
-
this.removeListener('completed', listener);
|
|
24
|
-
resolve();
|
|
25
|
-
};
|
|
26
|
-
this.addListener('completed', listener);
|
|
27
|
-
});
|
|
28
|
-
}
|
|
29
|
-
tryNext() {
|
|
30
|
-
if (!this.queue.length) {
|
|
31
|
-
return;
|
|
32
|
-
}
|
|
33
|
-
if (!this.promise) {
|
|
34
|
-
const queued = this.queue[0];
|
|
35
|
-
this.emit('started');
|
|
36
|
-
this.promise = queued().finally(() => {
|
|
37
|
-
this.queue.shift();
|
|
38
|
-
this.promise = null;
|
|
39
|
-
this.emit('completed');
|
|
40
|
-
this.tryNext();
|
|
41
|
-
});
|
|
42
|
-
}
|
|
43
|
-
}
|
|
44
|
-
}
|
|
45
|
-
exports.Worker = Worker;
|
|
46
|
-
//# sourceMappingURL=worker.js.map
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"file":"worker.js","sourceRoot":"","sources":["../../src/shared/worker.ts"],"names":[],"mappings":";;;AAAA,mCAAsC;AAItC,MAAa,MAAO,SAAQ,qBAAY;IAAxC;;QACmB,UAAK,GAAG,IAAI,KAAK,EAAQ,CAAC;IAiD7C,CAAC;IA9CC,OAAO,CAAC,GAAS;QACf,IAAI,CAAC,KAAK,CAAC,IAAI,CAAC,GAAG,CAAC,CAAC;QAErB,IAAI,CAAC,OAAO,EAAE,CAAC;IACjB,CAAC;IAED,IAAI;QACF,IAAI,CAAC,IAAI,CAAC,KAAK,CAAC,MAAM,EAAE;YACtB,OAAO,OAAO,CAAC,OAAO,EAAE,CAAC;SAC1B;QAED,OAAO,IAAI,OAAO,CAAO,OAAO,CAAC,EAAE;YACjC,MAAM,QAAQ,GAAG,GAAG,EAAE;gBACpB,IAAI,IAAI,CAAC,KAAK,CAAC,MAAM,EAAE;oBACrB,OAAO;iBACR;gBAED,IAAI,CAAC,cAAc,CAAC,WAAW,EAAE,QAAQ,CAAC,CAAC;gBAE3C,OAAO,EAAE,CAAC;YACZ,CAAC,CAAC;YAEF,IAAI,CAAC,WAAW,CAAC,WAAW,EAAE,QAAQ,CAAC,CAAC;QAC1C,CAAC,CAAC,CAAC;IACL,CAAC;IAEO,OAAO;QACb,IAAI,CAAC,IAAI,CAAC,KAAK,CAAC,MAAM,EAAE;YACtB,OAAO;SACR;QAED,IAAI,CAAC,IAAI,CAAC,OAAO,EAAE;YACjB,MAAM,MAAM,GAAG,IAAI,CAAC,KAAK,CAAC,CAAC,CAAC,CAAC;YAE7B,IAAI,CAAC,IAAI,CAAC,SAAS,CAAC,CAAC;YAErB,IAAI,CAAC,OAAO,GAAG,MAAM,EAAE,CAAC,OAAO,CAAC,GAAG,EAAE;gBACnC,IAAI,CAAC,KAAK,CAAC,KAAK,EAAE,CAAC;gBAEnB,IAAI,CAAC,OAAO,GAAG,IAAI,CAAC;gBAEpB,IAAI,CAAC,IAAI,CAAC,WAAW,CAAC,CAAC;gBACvB,IAAI,CAAC,OAAO,EAAE,CAAC;YACjB,CAAC,CAAC,CAAC;SACJ;IACH,CAAC;CACF;AAlDD,wBAkDC"}
|
|
@@ -1,18 +0,0 @@
|
|
|
1
|
-
"use strict";
|
|
2
|
-
Object.defineProperty(exports, "__esModule", { value: true });
|
|
3
|
-
const worker_1 = require("./worker");
|
|
4
|
-
describe('worker tests', () => {
|
|
5
|
-
test('event handler tests', async () => {
|
|
6
|
-
const sut = new worker_1.Worker();
|
|
7
|
-
let started = 0, completed = 0;
|
|
8
|
-
sut.addListener('started', () => started++);
|
|
9
|
-
sut.addListener('completed', () => completed++);
|
|
10
|
-
sut.enqueue(() => new Promise(resolve => {
|
|
11
|
-
setTimeout(() => resolve(), 1);
|
|
12
|
-
}));
|
|
13
|
-
await sut.wait();
|
|
14
|
-
expect(started).toBe(1);
|
|
15
|
-
expect(completed).toBe(1);
|
|
16
|
-
});
|
|
17
|
-
});
|
|
18
|
-
//# sourceMappingURL=worker.spec.js.map
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"file":"worker.spec.js","sourceRoot":"","sources":["../../src/shared/worker.spec.ts"],"names":[],"mappings":";;AAAA,qCAAkC;AAElC,QAAQ,CAAC,cAAc,EAAE,GAAG,EAAE;IAC5B,IAAI,CAAC,qBAAqB,EAAE,KAAK,IAAI,EAAE;QACrC,MAAM,GAAG,GAAG,IAAI,eAAM,EAAE,CAAC;QAEzB,IAAI,OAAO,GAAG,CAAC,EACb,SAAS,GAAG,CAAC,CAAC;QAEhB,GAAG,CAAC,WAAW,CAAC,SAAS,EAAE,GAAG,EAAE,CAAC,OAAO,EAAE,CAAC,CAAC;QAC5C,GAAG,CAAC,WAAW,CAAC,WAAW,EAAE,GAAG,EAAE,CAAC,SAAS,EAAE,CAAC,CAAC;QAEhD,GAAG,CAAC,OAAO,CACT,GAAG,EAAE,CACH,IAAI,OAAO,CAAO,OAAO,CAAC,EAAE;YAC1B,UAAU,CAAC,GAAG,EAAE,CAAC,OAAO,EAAE,EAAE,CAAC,CAAC,CAAC;QACjC,CAAC,CAAC,CACL,CAAC;QAEF,MAAM,GAAG,CAAC,IAAI,EAAE,CAAC;QAEjB,MAAM,CAAC,OAAO,CAAC,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC;QACxB,MAAM,CAAC,SAAS,CAAC,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC;IAC5B,CAAC,CAAC,CAAC;AACL,CAAC,CAAC,CAAC"}
|
|
@@ -1,8 +0,0 @@
|
|
|
1
|
-
export * from './store-balance.event';
|
|
2
|
-
export * from './store-candle.event';
|
|
3
|
-
export * from './store-instrument.event';
|
|
4
|
-
export * from './store-order.event';
|
|
5
|
-
export * from './store-orderbook.event';
|
|
6
|
-
export * from './store-position.event';
|
|
7
|
-
export * from './store-trade.event';
|
|
8
|
-
export * from './store.event';
|
|
@@ -1,21 +0,0 @@
|
|
|
1
|
-
"use strict";
|
|
2
|
-
var __createBinding = (this && this.__createBinding) || (Object.create ? (function(o, m, k, k2) {
|
|
3
|
-
if (k2 === undefined) k2 = k;
|
|
4
|
-
Object.defineProperty(o, k2, { enumerable: true, get: function() { return m[k]; } });
|
|
5
|
-
}) : (function(o, m, k, k2) {
|
|
6
|
-
if (k2 === undefined) k2 = k;
|
|
7
|
-
o[k2] = m[k];
|
|
8
|
-
}));
|
|
9
|
-
var __exportStar = (this && this.__exportStar) || function(m, exports) {
|
|
10
|
-
for (var p in m) if (p !== "default" && !Object.prototype.hasOwnProperty.call(exports, p)) __createBinding(exports, m, p);
|
|
11
|
-
};
|
|
12
|
-
Object.defineProperty(exports, "__esModule", { value: true });
|
|
13
|
-
__exportStar(require("./store-balance.event"), exports);
|
|
14
|
-
__exportStar(require("./store-candle.event"), exports);
|
|
15
|
-
__exportStar(require("./store-instrument.event"), exports);
|
|
16
|
-
__exportStar(require("./store-order.event"), exports);
|
|
17
|
-
__exportStar(require("./store-orderbook.event"), exports);
|
|
18
|
-
__exportStar(require("./store-position.event"), exports);
|
|
19
|
-
__exportStar(require("./store-trade.event"), exports);
|
|
20
|
-
__exportStar(require("./store.event"), exports);
|
|
21
|
-
//# sourceMappingURL=index.js.map
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"file":"index.js","sourceRoot":"","sources":["../../../src/store/event/index.ts"],"names":[],"mappings":";;;;;;;;;;;;AAAA,wDAAsC;AACtC,uDAAqC;AACrC,2DAAyC;AACzC,sDAAoC;AACpC,0DAAwC;AACxC,yDAAuC;AACvC,sDAAoC;AACpC,gDAA8B"}
|
|
@@ -1,37 +0,0 @@
|
|
|
1
|
-
import { AssetSelector } from '../../domain/asset';
|
|
2
|
-
import { timestamp } from '../../shared';
|
|
3
|
-
import { State, StateChangeTracker } from '../store.state';
|
|
4
|
-
import { StoreEvent } from './store.event';
|
|
5
|
-
export declare class BalancePatchEvent implements StoreEvent {
|
|
6
|
-
readonly asset: AssetSelector;
|
|
7
|
-
readonly free: number;
|
|
8
|
-
readonly freezed: number;
|
|
9
|
-
readonly timestamp: timestamp;
|
|
10
|
-
type: string;
|
|
11
|
-
constructor(asset: AssetSelector, free: number, freezed: number, timestamp: timestamp);
|
|
12
|
-
}
|
|
13
|
-
export declare function BalancePatchEventHandler(event: BalancePatchEvent, state: State, changes: StateChangeTracker): void;
|
|
14
|
-
export declare class BalanceTransactEvent implements StoreEvent {
|
|
15
|
-
readonly asset: AssetSelector;
|
|
16
|
-
readonly amount: number;
|
|
17
|
-
readonly timestamp: timestamp;
|
|
18
|
-
type: string;
|
|
19
|
-
constructor(asset: AssetSelector, amount: number, timestamp: timestamp);
|
|
20
|
-
}
|
|
21
|
-
export declare function BalanceTransactEventHandler(event: BalanceTransactEvent, state: State, changes: StateChangeTracker): void;
|
|
22
|
-
export declare class BalanceFreezEvent implements StoreEvent {
|
|
23
|
-
readonly asset: AssetSelector;
|
|
24
|
-
readonly amount: number;
|
|
25
|
-
readonly timestamp: timestamp;
|
|
26
|
-
type: string;
|
|
27
|
-
constructor(asset: AssetSelector, amount: number, timestamp: timestamp);
|
|
28
|
-
}
|
|
29
|
-
export declare function BalanceFreezEventHandler(event: BalanceFreezEvent, state: State, changes: StateChangeTracker): void;
|
|
30
|
-
export declare class BalanceUnfreezEvent implements StoreEvent {
|
|
31
|
-
readonly asset: AssetSelector;
|
|
32
|
-
readonly amount: number;
|
|
33
|
-
readonly timestamp: timestamp;
|
|
34
|
-
type: string;
|
|
35
|
-
constructor(asset: AssetSelector, amount: number, timestamp: timestamp);
|
|
36
|
-
}
|
|
37
|
-
export declare function BalanceUnfreezEventHandler(event: BalanceUnfreezEvent, state: State, changes: StateChangeTracker): void;
|
|
@@ -1,119 +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.BalanceUnfreezEventHandler = exports.BalanceUnfreezEvent = exports.BalanceFreezEventHandler = exports.BalanceFreezEvent = exports.BalanceTransactEventHandler = exports.BalanceTransactEvent = exports.BalancePatchEventHandler = exports.BalancePatchEvent = void 0;
|
|
13
|
-
const asset_1 = require("../../domain/asset");
|
|
14
|
-
const balance_1 = require("../../domain/balance");
|
|
15
|
-
const topic_1 = require("../../shared/topic");
|
|
16
|
-
let BalancePatchEvent = class BalancePatchEvent {
|
|
17
|
-
constructor(asset, free, freezed, timestamp) {
|
|
18
|
-
this.asset = asset;
|
|
19
|
-
this.free = free;
|
|
20
|
-
this.freezed = freezed;
|
|
21
|
-
this.timestamp = timestamp;
|
|
22
|
-
this.type = 'balance-patch';
|
|
23
|
-
}
|
|
24
|
-
};
|
|
25
|
-
BalancePatchEvent = __decorate([
|
|
26
|
-
topic_1.event,
|
|
27
|
-
__metadata("design:paramtypes", [asset_1.AssetSelector, Number, Number, Number])
|
|
28
|
-
], BalancePatchEvent);
|
|
29
|
-
exports.BalancePatchEvent = BalancePatchEvent;
|
|
30
|
-
function BalancePatchEventHandler(event, state, changes) {
|
|
31
|
-
let balance = state.balance[event.asset.toString()];
|
|
32
|
-
if (!balance) {
|
|
33
|
-
const asset = state.universe.asset[event.asset.toString()];
|
|
34
|
-
if (!asset) {
|
|
35
|
-
return;
|
|
36
|
-
}
|
|
37
|
-
balance = state.balance[asset.toString()] = new balance_1.Balance(asset);
|
|
38
|
-
}
|
|
39
|
-
balance.timestamp = event.timestamp;
|
|
40
|
-
balance.set(event.free, event.freezed);
|
|
41
|
-
state.timestamp = event.timestamp;
|
|
42
|
-
changes.commit(balance);
|
|
43
|
-
}
|
|
44
|
-
exports.BalancePatchEventHandler = BalancePatchEventHandler;
|
|
45
|
-
let BalanceTransactEvent = class BalanceTransactEvent {
|
|
46
|
-
constructor(asset, amount, timestamp) {
|
|
47
|
-
this.asset = asset;
|
|
48
|
-
this.amount = amount;
|
|
49
|
-
this.timestamp = timestamp;
|
|
50
|
-
this.type = 'balance-transact';
|
|
51
|
-
}
|
|
52
|
-
};
|
|
53
|
-
BalanceTransactEvent = __decorate([
|
|
54
|
-
topic_1.event,
|
|
55
|
-
__metadata("design:paramtypes", [asset_1.AssetSelector, Number, Number])
|
|
56
|
-
], BalanceTransactEvent);
|
|
57
|
-
exports.BalanceTransactEvent = BalanceTransactEvent;
|
|
58
|
-
function BalanceTransactEventHandler(event, state, changes) {
|
|
59
|
-
let balance = state.balance[event.asset.toString()];
|
|
60
|
-
if (!balance) {
|
|
61
|
-
const asset = state.universe.asset[event.asset.toString()];
|
|
62
|
-
balance = new balance_1.Balance(asset);
|
|
63
|
-
state.balance[asset.toString()] = balance;
|
|
64
|
-
}
|
|
65
|
-
balance.timestamp = event.timestamp;
|
|
66
|
-
balance.transact(event.amount);
|
|
67
|
-
state.timestamp = event.timestamp;
|
|
68
|
-
changes.commit(balance);
|
|
69
|
-
}
|
|
70
|
-
exports.BalanceTransactEventHandler = BalanceTransactEventHandler;
|
|
71
|
-
let BalanceFreezEvent = class BalanceFreezEvent {
|
|
72
|
-
constructor(asset, amount, timestamp) {
|
|
73
|
-
this.asset = asset;
|
|
74
|
-
this.amount = amount;
|
|
75
|
-
this.timestamp = timestamp;
|
|
76
|
-
this.type = 'balance-freez';
|
|
77
|
-
}
|
|
78
|
-
};
|
|
79
|
-
BalanceFreezEvent = __decorate([
|
|
80
|
-
topic_1.event,
|
|
81
|
-
__metadata("design:paramtypes", [asset_1.AssetSelector, Number, Number])
|
|
82
|
-
], BalanceFreezEvent);
|
|
83
|
-
exports.BalanceFreezEvent = BalanceFreezEvent;
|
|
84
|
-
function BalanceFreezEventHandler(event, state, changes) {
|
|
85
|
-
const balance = state.balance[event.asset.toString()];
|
|
86
|
-
if (!balance) {
|
|
87
|
-
throw new Error('invalid balance');
|
|
88
|
-
}
|
|
89
|
-
balance.timestamp = event.timestamp;
|
|
90
|
-
balance.freez(event.amount);
|
|
91
|
-
state.timestamp = event.timestamp;
|
|
92
|
-
changes.commit(balance);
|
|
93
|
-
}
|
|
94
|
-
exports.BalanceFreezEventHandler = BalanceFreezEventHandler;
|
|
95
|
-
let BalanceUnfreezEvent = class BalanceUnfreezEvent {
|
|
96
|
-
constructor(asset, amount, timestamp) {
|
|
97
|
-
this.asset = asset;
|
|
98
|
-
this.amount = amount;
|
|
99
|
-
this.timestamp = timestamp;
|
|
100
|
-
this.type = 'balance-unfreez';
|
|
101
|
-
}
|
|
102
|
-
};
|
|
103
|
-
BalanceUnfreezEvent = __decorate([
|
|
104
|
-
topic_1.event,
|
|
105
|
-
__metadata("design:paramtypes", [asset_1.AssetSelector, Number, Number])
|
|
106
|
-
], BalanceUnfreezEvent);
|
|
107
|
-
exports.BalanceUnfreezEvent = BalanceUnfreezEvent;
|
|
108
|
-
function BalanceUnfreezEventHandler(event, state, changes) {
|
|
109
|
-
const balance = state.balance[event.asset.toString()];
|
|
110
|
-
if (!balance) {
|
|
111
|
-
throw new Error('invalid balance');
|
|
112
|
-
}
|
|
113
|
-
balance.timestamp = event.timestamp;
|
|
114
|
-
balance.unfreez(event.amount);
|
|
115
|
-
state.timestamp = event.timestamp;
|
|
116
|
-
changes.commit(balance);
|
|
117
|
-
}
|
|
118
|
-
exports.BalanceUnfreezEventHandler = BalanceUnfreezEventHandler;
|
|
119
|
-
//# sourceMappingURL=store-balance.event.js.map
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"file":"store-balance.event.js","sourceRoot":"","sources":["../../../src/store/event/store-balance.event.ts"],"names":[],"mappings":"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"}
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"file":"store-balance.event.spec.js","sourceRoot":"","sources":["../../../src/store/event/store-balance.event.spec.ts"],"names":[],"mappings":";;AAAA,wBAAsC;AACtC,0BAA2B;AAC3B,yCAAiD;AACjD,yCAAmC;AACnC,qEAAgE;AAEhE,QAAQ,CAAC,qBAAqB,EAAE,GAAG,EAAE;IACnC,IAAI,CAAC,sBAAsB,EAAE,GAAG,EAAE;QAChC,MAAM,IAAI,GAAG,IAAI,cAAK,CAAC,MAAM,EAAE,KAAK,EAAE,CAAC,CAAC,CAAC;QACzC,MAAM,KAAK,GAAG,IAAI,cAAK,CAAC,KAAK,EAAE,KAAK,EAAE,CAAC,CAAC,CAAC;QACzC,MAAM,SAAS,GAAG,IAAA,YAAG,GAAE,CAAC;QACxB,MAAM,KAAK,GAAG,IAAI,SAAK,EAAE,CAAC;QAC1B,IAAI,SAAS,CAAC;QAEd,KAAK,CAAC,QAAQ,CAAC,SAAS,CAAC,EAAE,CAAC,EAAE,CAAC,CAAC,SAAS,GAAG,EAAE,CAAC,CAAC,CAAC;QAEjD,KAAK,CAAC,QAAQ,CACZ,IAAI,6CAAoB,CAAC,SAAS,EAAE,IAAI,EAAE,KAAK,EAAE,IAAI,mBAAU,CAAC,CAAC,EAAE,CAAC,CAAC,EAAE,EAAE,CAAC,CAC3E,CAAC;QACF,KAAK,CAAC,QAAQ,CAAC,IAAI,oBAAiB,CAAC,IAAI,EAAE,GAAG,EAAE,CAAC,EAAE,SAAS,CAAC,CAAC,CAAC;QAE/D,MAAM,OAAO,GAAG,KAAK,CAAC,QAAQ,CAAC,OAAO,CAAC,IAAI,CAAC,QAAQ,EAAE,CAAC,CAAC;QAExD,MAAM,CAAC,OAAO,CAAC,CAAC,OAAO,CAAC,SAAS,CAAC,CAAC;QACnC,MAAM,CAAC,OAAO,CAAC,IAAI,CAAC,CAAC,OAAO,CAAC,GAAG,CAAC,CAAC;QAClC,MAAM,CAAC,OAAO,CAAC,OAAO,CAAC,CAAC,OAAO,CAAC,CAAC,CAAC,CAAC;QACnC,MAAM,CAAC,OAAO,CAAC,SAAS,CAAC,CAAC,OAAO,CAAC,SAAS,CAAC,CAAC;QAC7C,MAAM,CAAC,KAAK,CAAC,QAAQ,CAAC,SAAS,CAAC,CAAC,OAAO,CAAC,SAAS,CAAC,CAAC;IACtD,CAAC,CAAC,CAAC;AACL,CAAC,CAAC,CAAC"}
|
|
@@ -1,18 +0,0 @@
|
|
|
1
|
-
import { StateChangeTracker } from '..';
|
|
2
|
-
import { InstrumentSelector } from '../../domain';
|
|
3
|
-
import { timestamp } from '../../shared/datetime';
|
|
4
|
-
import { State } from '../store.state';
|
|
5
|
-
import { StoreEvent } from './store.event';
|
|
6
|
-
export declare class CandleEvent implements StoreEvent {
|
|
7
|
-
readonly instrument: InstrumentSelector;
|
|
8
|
-
readonly timeframe: number;
|
|
9
|
-
readonly open: number;
|
|
10
|
-
readonly high: number;
|
|
11
|
-
readonly low: number;
|
|
12
|
-
readonly close: number;
|
|
13
|
-
readonly volume: number;
|
|
14
|
-
readonly timestamp: timestamp;
|
|
15
|
-
type: string;
|
|
16
|
-
constructor(instrument: InstrumentSelector, timeframe: number, open: number, high: number, low: number, close: number, volume: number, timestamp: timestamp);
|
|
17
|
-
}
|
|
18
|
-
export declare function CandleEventHandler(event: CandleEvent, state: State, changes: StateChangeTracker): void;
|
|
@@ -1,63 +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.CandleEventHandler = exports.CandleEvent = void 0;
|
|
13
|
-
const domain_1 = require("../../domain");
|
|
14
|
-
const topic_1 = require("../../shared/topic");
|
|
15
|
-
const store_orderbook_event_1 = require("./store-orderbook.event");
|
|
16
|
-
const store_trade_event_1 = require("./store-trade.event");
|
|
17
|
-
let CandleEvent = class CandleEvent {
|
|
18
|
-
constructor(instrument, timeframe, open, high, low, close, volume, timestamp) {
|
|
19
|
-
this.instrument = instrument;
|
|
20
|
-
this.timeframe = timeframe;
|
|
21
|
-
this.open = open;
|
|
22
|
-
this.high = high;
|
|
23
|
-
this.low = low;
|
|
24
|
-
this.close = close;
|
|
25
|
-
this.volume = volume;
|
|
26
|
-
this.timestamp = timestamp;
|
|
27
|
-
this.type = 'candle';
|
|
28
|
-
}
|
|
29
|
-
};
|
|
30
|
-
CandleEvent = __decorate([
|
|
31
|
-
topic_1.event,
|
|
32
|
-
__metadata("design:paramtypes", [domain_1.InstrumentSelector, Number, Number, Number, Number, Number, Number, Number])
|
|
33
|
-
], CandleEvent);
|
|
34
|
-
exports.CandleEvent = CandleEvent;
|
|
35
|
-
function CandleEventHandler(event, state, changes) {
|
|
36
|
-
const instrument = state.universe.instrument[event.instrument.toString()];
|
|
37
|
-
const patch = (timestamp, rate) => {
|
|
38
|
-
(0, store_trade_event_1.TradePatchEventHandler)({
|
|
39
|
-
type: 'trade-patch',
|
|
40
|
-
instrument: event.instrument,
|
|
41
|
-
quantity: event.volume,
|
|
42
|
-
rate,
|
|
43
|
-
timestamp
|
|
44
|
-
}, state, changes);
|
|
45
|
-
(0, store_orderbook_event_1.OrderbookPatchEventHandler)({
|
|
46
|
-
type: 'orderbook-patch',
|
|
47
|
-
instrument: event.instrument,
|
|
48
|
-
bestAskQuantity: instrument.base.fixed(event.volume * 0.5),
|
|
49
|
-
bestAskRate: rate,
|
|
50
|
-
bestBidQuantity: instrument.base.fixed(event.volume * 0.5),
|
|
51
|
-
bestBidRate: rate,
|
|
52
|
-
timestamp
|
|
53
|
-
}, state, changes);
|
|
54
|
-
state.timestamp = event.timestamp;
|
|
55
|
-
changes.commitPendingChanges();
|
|
56
|
-
};
|
|
57
|
-
patch(event.timestamp, instrument.quote.fixed(event.open));
|
|
58
|
-
patch(event.timestamp, instrument.quote.fixed(event.high));
|
|
59
|
-
patch(event.timestamp, instrument.quote.fixed(event.low));
|
|
60
|
-
patch(event.timestamp, instrument.quote.fixed(event.close));
|
|
61
|
-
}
|
|
62
|
-
exports.CandleEventHandler = CandleEventHandler;
|
|
63
|
-
//# sourceMappingURL=store-candle.event.js.map
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"file":"store-candle.event.js","sourceRoot":"","sources":["../../../src/store/event/store-candle.event.ts"],"names":[],"mappings":";;;;;;;;;;;;AACA,yCAAkD;AAElD,8CAA2C;AAE3C,mEAAqE;AACrE,2DAA6D;AAI7D,IAAa,WAAW,GAAxB,MAAa,WAAW;IAGtB,YACW,UAA8B,EAC9B,SAAiB,EACjB,IAAY,EACZ,IAAY,EACZ,GAAW,EACX,KAAa,EACb,MAAc,EACd,SAAoB;QAPpB,eAAU,GAAV,UAAU,CAAoB;QAC9B,cAAS,GAAT,SAAS,CAAQ;QACjB,SAAI,GAAJ,IAAI,CAAQ;QACZ,SAAI,GAAJ,IAAI,CAAQ;QACZ,QAAG,GAAH,GAAG,CAAQ;QACX,UAAK,GAAL,KAAK,CAAQ;QACb,WAAM,GAAN,MAAM,CAAQ;QACd,cAAS,GAAT,SAAS,CAAW;QAV/B,SAAI,GAAG,QAAQ,CAAC;IAWb,CAAC;CACL,CAAA;AAbY,WAAW;IADvB,aAAK;qCAKmB,2BAAkB;GAJ9B,WAAW,CAavB;AAbY,kCAAW;AAexB,SAAgB,kBAAkB,CAChC,KAAkB,EAClB,KAAY,EACZ,OAA2B;IAE3B,MAAM,UAAU,GAAG,KAAK,CAAC,QAAQ,CAAC,UAAU,CAAC,KAAK,CAAC,UAAU,CAAC,QAAQ,EAAE,CAAC,CAAC;IAE1E,MAAM,KAAK,GAAG,CAAC,SAAiB,EAAE,IAAY,EAAE,EAAE;QAEhD,IAAA,0CAAsB,EACpB;YACE,IAAI,EAAE,aAAa;YACnB,UAAU,EAAE,KAAK,CAAC,UAAU;YAC5B,QAAQ,EAAE,KAAK,CAAC,MAAM;YACtB,IAAI;YACJ,SAAS;SACV,EACD,KAAK,EACL,OAAO,CACR,CAAC;QAGF,IAAA,kDAA0B,EACxB;YACE,IAAI,EAAE,iBAAiB;YACvB,UAAU,EAAE,KAAK,CAAC,UAAU;YAC5B,eAAe,EAAE,UAAU,CAAC,IAAI,CAAC,KAAK,CAAC,KAAK,CAAC,MAAM,GAAG,GAAG,CAAC;YAC1D,WAAW,EAAE,IAAI;YACjB,eAAe,EAAE,UAAU,CAAC,IAAI,CAAC,KAAK,CAAC,KAAK,CAAC,MAAM,GAAG,GAAG,CAAC;YAC1D,WAAW,EAAE,IAAI;YACjB,SAAS;SACV,EACD,KAAK,EACL,OAAO,CACR,CAAC;QAEF,KAAK,CAAC,SAAS,GAAG,KAAK,CAAC,SAAS,CAAC;QAElC,OAAO,CAAC,oBAAoB,EAAE,CAAC;IACjC,CAAC,CAAC;IAEF,KAAK,CAAC,KAAK,CAAC,SAAS,EAAE,UAAU,CAAC,KAAK,CAAC,KAAK,CAAC,KAAK,CAAC,IAAI,CAAC,CAAC,CAAC;IAC3D,KAAK,CAAC,KAAK,CAAC,SAAS,EAAE,UAAU,CAAC,KAAK,CAAC,KAAK,CAAC,KAAK,CAAC,IAAI,CAAC,CAAC,CAAC;IAC3D,KAAK,CAAC,KAAK,CAAC,SAAS,EAAE,UAAU,CAAC,KAAK,CAAC,KAAK,CAAC,KAAK,CAAC,GAAG,CAAC,CAAC,CAAC;IAC1D,KAAK,CAAC,KAAK,CAAC,SAAS,EAAE,UAAU,CAAC,KAAK,CAAC,KAAK,CAAC,KAAK,CAAC,KAAK,CAAC,CAAC,CAAC;AAC9D,CAAC;AA7CD,gDA6CC"}
|
|
@@ -1,23 +0,0 @@
|
|
|
1
|
-
"use strict";
|
|
2
|
-
Object.defineProperty(exports, "__esModule", { value: true });
|
|
3
|
-
const _1 = require(".");
|
|
4
|
-
const domain_1 = require("../../domain");
|
|
5
|
-
const shared_1 = require("../../shared");
|
|
6
|
-
const store_1 = require("../store");
|
|
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
|
-
describe('candle patch event tests', () => {
|
|
9
|
-
test('should patch trade object', () => {
|
|
10
|
-
const timestamp = (0, shared_1.now)();
|
|
11
|
-
const store = new store_1.Store();
|
|
12
|
-
store.snapshot.universe.instrument[instrument.toString()] = instrument;
|
|
13
|
-
store.snapshot.subscription.instrument[instrument.toString()] = instrument;
|
|
14
|
-
store.dispatch(new _1.CandleEvent(instrument, 1, 1, 1, 1, 1, 1, timestamp));
|
|
15
|
-
const trade = store.snapshot.trade[instrument.toString()];
|
|
16
|
-
expect(trade.timestamp).toEqual(timestamp);
|
|
17
|
-
expect(trade.instrument.toString()).toEqual(instrument.toString());
|
|
18
|
-
expect(trade.rate).toEqual(1);
|
|
19
|
-
expect(trade.quantity).toEqual(1);
|
|
20
|
-
expect(store.snapshot.timestamp).toEqual(timestamp);
|
|
21
|
-
});
|
|
22
|
-
});
|
|
23
|
-
//# sourceMappingURL=store-candle.event.spec.js.map
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"file":"store-candle.event.spec.js","sourceRoot":"","sources":["../../../src/store/event/store-candle.event.spec.ts"],"names":[],"mappings":";;AAAA,wBAAgC;AAChC,yCAAiD;AACjD,yCAAmC;AACnC,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,0BAA0B,EAAE,GAAG,EAAE;IACxC,IAAI,CAAC,2BAA2B,EAAE,GAAG,EAAE;QACrC,MAAM,SAAS,GAAG,IAAA,YAAG,GAAE,CAAC;QACxB,MAAM,KAAK,GAAG,IAAI,aAAK,EAAE,CAAC;QAE1B,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,cAAW,CAAC,UAAU,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,SAAS,CAAC,CAAC,CAAC;QAEzE,MAAM,KAAK,GAAG,KAAK,CAAC,QAAQ,CAAC,KAAK,CAAC,UAAU,CAAC,QAAQ,EAAE,CAAC,CAAC;QAE1D,MAAM,CAAC,KAAK,CAAC,SAAS,CAAC,CAAC,OAAO,CAAC,SAAS,CAAC,CAAC;QAC3C,MAAM,CAAC,KAAK,CAAC,UAAU,CAAC,QAAQ,EAAE,CAAC,CAAC,OAAO,CAAC,UAAU,CAAC,QAAQ,EAAE,CAAC,CAAC;QACnE,MAAM,CAAC,KAAK,CAAC,IAAI,CAAC,CAAC,OAAO,CAAC,CAAC,CAAC,CAAC;QAC9B,MAAM,CAAC,KAAK,CAAC,QAAQ,CAAC,CAAC,OAAO,CAAC,CAAC,CAAC,CAAC;QAClC,MAAM,CAAC,KAAK,CAAC,QAAQ,CAAC,SAAS,CAAC,CAAC,OAAO,CAAC,SAAS,CAAC,CAAC;IACtD,CAAC,CAAC,CAAC;AACL,CAAC,CAAC,CAAC"}
|
|
@@ -1,78 +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.InstrumentSubscriptionEventHandler = exports.InstrumentSubscriptionEvent = exports.InstrumentPatchEventHandler = exports.InstrumentPatchEvent = void 0;
|
|
13
|
-
const domain_1 = require("../../domain");
|
|
14
|
-
const instrument_1 = require("../../domain/instrument");
|
|
15
|
-
const topic_1 = require("../../shared/topic");
|
|
16
|
-
let InstrumentPatchEvent = class InstrumentPatchEvent {
|
|
17
|
-
constructor(timestamp, base, quote, commission, raw, leverage) {
|
|
18
|
-
this.timestamp = timestamp;
|
|
19
|
-
this.base = base;
|
|
20
|
-
this.quote = quote;
|
|
21
|
-
this.commission = commission;
|
|
22
|
-
this.raw = raw;
|
|
23
|
-
this.leverage = leverage;
|
|
24
|
-
this.type = 'instrument-patch';
|
|
25
|
-
}
|
|
26
|
-
};
|
|
27
|
-
InstrumentPatchEvent = __decorate([
|
|
28
|
-
topic_1.event,
|
|
29
|
-
__metadata("design:paramtypes", [Number, domain_1.Asset,
|
|
30
|
-
domain_1.Asset,
|
|
31
|
-
domain_1.Commission, String, Number])
|
|
32
|
-
], InstrumentPatchEvent);
|
|
33
|
-
exports.InstrumentPatchEvent = InstrumentPatchEvent;
|
|
34
|
-
function InstrumentPatchEventHandler(event, state, changes) {
|
|
35
|
-
const selector = new instrument_1.InstrumentSelector(event.base.name, event.quote.name, event.base.adapter);
|
|
36
|
-
let instrument = state.universe.instrument[selector.toString()];
|
|
37
|
-
if (!instrument) {
|
|
38
|
-
instrument = new instrument_1.Instrument(event.base, event.quote, event.raw);
|
|
39
|
-
state.universe.asset[event.base.toString()] = event.base;
|
|
40
|
-
state.universe.asset[event.quote.toString()] = event.quote;
|
|
41
|
-
state.universe.instrument[selector.toString()] = instrument;
|
|
42
|
-
}
|
|
43
|
-
instrument.timestamp = event.timestamp;
|
|
44
|
-
instrument.commission = event.commission;
|
|
45
|
-
if (event.leverage) {
|
|
46
|
-
instrument.leverage = event.leverage;
|
|
47
|
-
}
|
|
48
|
-
changes.commit(instrument);
|
|
49
|
-
}
|
|
50
|
-
exports.InstrumentPatchEventHandler = InstrumentPatchEventHandler;
|
|
51
|
-
let InstrumentSubscriptionEvent = class InstrumentSubscriptionEvent {
|
|
52
|
-
constructor(timestamp, instrument, subscribed) {
|
|
53
|
-
this.timestamp = timestamp;
|
|
54
|
-
this.instrument = instrument;
|
|
55
|
-
this.subscribed = subscribed;
|
|
56
|
-
this.type = 'instrument-subscription';
|
|
57
|
-
}
|
|
58
|
-
};
|
|
59
|
-
InstrumentSubscriptionEvent = __decorate([
|
|
60
|
-
topic_1.event,
|
|
61
|
-
__metadata("design:paramtypes", [Number, instrument_1.InstrumentSelector, Boolean])
|
|
62
|
-
], InstrumentSubscriptionEvent);
|
|
63
|
-
exports.InstrumentSubscriptionEvent = InstrumentSubscriptionEvent;
|
|
64
|
-
function InstrumentSubscriptionEventHandler(event, state, changes) {
|
|
65
|
-
const instrumentKey = event.instrument.toString();
|
|
66
|
-
if (!(instrumentKey in state.universe.instrument)) {
|
|
67
|
-
throw new Error(`Trying to patch not existing instrument: ${instrumentKey}`);
|
|
68
|
-
}
|
|
69
|
-
const instrument = state.universe.instrument[instrumentKey];
|
|
70
|
-
if (event.subscribed) {
|
|
71
|
-
state.subscription.instrument[instrument.toString()] = instrument;
|
|
72
|
-
state.subscription.asset[instrument.base.toString()] = instrument.base;
|
|
73
|
-
state.subscription.asset[instrument.quote.toString()] = instrument.quote;
|
|
74
|
-
}
|
|
75
|
-
changes.commit(instrument);
|
|
76
|
-
}
|
|
77
|
-
exports.InstrumentSubscriptionEventHandler = InstrumentSubscriptionEventHandler;
|
|
78
|
-
//# sourceMappingURL=store-instrument.event.js.map
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"file":"store-instrument.event.js","sourceRoot":"","sources":["../../../src/store/event/store-instrument.event.ts"],"names":[],"mappings":"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"}
|