@quantform/core 0.6.6 → 0.7.0-beta.4
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/as-readonly.d.ts +3 -0
- package/dist/as-readonly.d.ts.map +1 -0
- package/dist/as-readonly.js +8 -0
- package/dist/{domain → asset}/asset.d.ts +6 -1
- package/dist/asset/asset.d.ts.map +1 -0
- package/dist/{domain → asset}/asset.js +16 -7
- package/dist/asset/asset.spec.d.ts +2 -0
- package/dist/asset/asset.spec.d.ts.map +1 -0
- package/dist/asset/asset.spec.js +54 -0
- package/dist/asset/index.d.ts +2 -0
- package/dist/asset/index.d.ts.map +1 -0
- package/dist/{adapter/paper → asset}/index.js +1 -2
- package/dist/cli/build.js +1 -1
- package/dist/cli/dev.d.ts.map +1 -1
- package/dist/cli/dev.js +15 -11
- package/dist/cli/index.js +8 -8
- package/dist/cli/internal/workspace.js +1 -1
- package/dist/cli/pull.d.ts.map +1 -1
- package/dist/cli/pull.js +50 -20
- package/dist/cli/{test.d.ts → replay.d.ts} +1 -1
- package/dist/cli/replay.d.ts.map +1 -0
- package/dist/cli/{test.js → replay.js} +18 -20
- package/dist/cli/run.d.ts.map +1 -1
- package/dist/cli/run.js +16 -11
- package/dist/component/distinct-until-timesamp-changed.d.ts +5 -0
- package/dist/component/distinct-until-timesamp-changed.d.ts.map +1 -0
- package/dist/component/distinct-until-timesamp-changed.js +9 -0
- package/dist/component/error.d.ts +17 -0
- package/dist/component/error.d.ts.map +1 -0
- package/dist/component/error.js +33 -0
- package/dist/component/index.d.ts +8 -0
- package/dist/component/index.d.ts.map +1 -0
- package/dist/{store → component}/index.js +7 -9
- package/dist/{domain → component}/ohlc-operator.d.ts +1 -1
- package/dist/component/ohlc-operator.d.ts.map +1 -0
- package/dist/{domain → component}/ohlc-operator.js +4 -5
- package/dist/component/ohlc-operator.spec.d.ts +2 -0
- package/dist/component/ohlc-operator.spec.d.ts.map +1 -0
- package/dist/component/ohlc-operator.spec.js +110 -0
- package/dist/component/ohlc.d.ts.map +1 -0
- package/dist/component/ohlc.spec.d.ts +2 -0
- package/dist/component/ohlc.spec.d.ts.map +1 -0
- package/dist/component/ohlc.spec.js +25 -0
- package/dist/component/timeframe.d.ts.map +1 -0
- package/dist/core.d.ts +3 -0
- package/dist/core.d.ts.map +1 -0
- package/dist/core.js +15 -0
- package/dist/defined.d.ts +3 -0
- package/dist/defined.d.ts.map +1 -0
- package/dist/defined.js +8 -0
- package/dist/exclude.d.ts +3 -0
- package/dist/exclude.d.ts.map +1 -0
- package/dist/exclude.js +8 -0
- package/dist/index.d.ts +25 -27
- package/dist/index.d.ts.map +1 -1
- package/dist/index.js +25 -66
- package/dist/{domain → instrument/commission}/commission.d.ts +1 -1
- package/dist/instrument/commission/commission.d.ts.map +1 -0
- package/dist/{domain → instrument/commission}/commission.js +2 -2
- package/dist/instrument/commission/commission.spec.d.ts +2 -0
- package/dist/instrument/commission/commission.spec.d.ts.map +1 -0
- package/dist/instrument/commission/commission.spec.js +30 -0
- package/dist/instrument/index.d.ts +3 -0
- package/dist/instrument/index.d.ts.map +1 -0
- package/dist/{adapter → instrument}/index.js +2 -4
- package/dist/{domain → instrument}/instrument.d.ts +4 -4
- package/dist/instrument/instrument.d.ts.map +1 -0
- package/dist/{domain → instrument}/instrument.js +8 -5
- package/dist/instrument/instrument.spec.d.ts +2 -0
- package/dist/instrument/instrument.spec.d.ts.map +1 -0
- package/dist/instrument/instrument.spec.js +51 -0
- package/dist/make-test-module.d.ts +13 -0
- package/dist/make-test-module.d.ts.map +1 -0
- package/dist/make-test-module.js +46 -0
- package/dist/module.d.ts +57 -0
- package/dist/module.d.ts.map +1 -0
- package/dist/module.js +136 -0
- package/dist/module.spec.d.ts +2 -0
- package/dist/module.spec.d.ts.map +1 -0
- package/dist/module.spec.js +86 -0
- package/dist/not-found.d.ts +2 -0
- package/dist/not-found.d.ts.map +1 -0
- package/dist/{domain/component.js → not-found.js} +2 -0
- package/dist/replay/index.d.ts +7 -0
- package/dist/replay/index.d.ts.map +1 -0
- package/dist/replay/index.js +22 -0
- package/dist/replay/use-replay-coordinator.d.ts +10 -0
- package/dist/replay/use-replay-coordinator.d.ts.map +1 -0
- package/dist/replay/use-replay-coordinator.js +119 -0
- package/dist/replay/use-replay-options.d.ts +15 -0
- package/dist/replay/use-replay-options.d.ts.map +1 -0
- package/dist/replay/use-replay-options.js +20 -0
- package/dist/replay/use-replay-reader.d.ts +7 -0
- package/dist/replay/use-replay-reader.d.ts.map +1 -0
- package/dist/replay/use-replay-reader.js +32 -0
- package/dist/replay/use-replay-reader.spec.d.ts +2 -0
- package/dist/replay/use-replay-reader.spec.d.ts.map +1 -0
- package/dist/replay/use-replay-reader.spec.js +58 -0
- package/dist/replay/use-replay-storage.d.ts +10 -0
- package/dist/replay/use-replay-storage.d.ts.map +1 -0
- package/dist/replay/use-replay-storage.js +10 -0
- package/dist/replay/use-replay-writer.d.ts +6 -0
- package/dist/replay/use-replay-writer.d.ts.map +1 -0
- package/dist/replay/use-replay-writer.js +14 -0
- package/dist/replay/use-replay-writer.spec.d.ts +2 -0
- package/dist/replay/use-replay-writer.spec.d.ts.map +1 -0
- package/dist/replay/use-replay-writer.spec.js +53 -0
- package/dist/replay/use-replay.d.ts +10 -0
- package/dist/replay/use-replay.d.ts.map +1 -0
- package/dist/replay/use-replay.js +32 -0
- package/dist/replay/use-replay.spec.d.ts +2 -0
- package/dist/replay/use-replay.spec.d.ts.map +1 -0
- package/dist/replay/use-replay.spec.js +106 -0
- package/dist/replay/with-replay.d.ts +4 -0
- package/dist/replay/with-replay.d.ts.map +1 -0
- package/dist/replay/with-replay.js +8 -0
- package/dist/session/index.d.ts +4 -0
- package/dist/session/index.d.ts.map +1 -0
- package/dist/session/index.js +19 -0
- package/dist/session/use-session-object.d.ts +18 -0
- package/dist/session/use-session-object.d.ts.map +1 -0
- package/dist/session/use-session-object.js +13 -0
- package/dist/session/use-session-storage.d.ts +2 -0
- package/dist/session/use-session-storage.d.ts.map +1 -0
- package/dist/session/use-session-storage.js +10 -0
- package/dist/session/use-session.d.ts +4 -0
- package/dist/session/use-session.d.ts.map +1 -0
- package/dist/session/use-session.js +7 -0
- package/dist/shared/datetime.d.ts +1 -1
- package/dist/shared/datetime.d.ts.map +1 -1
- package/dist/shared/decimals.d.ts.map +1 -1
- package/dist/shared/decimals.js +5 -0
- package/dist/shared/decimals.spec.d.ts +2 -0
- package/dist/shared/decimals.spec.d.ts.map +1 -0
- package/dist/shared/decimals.spec.js +28 -0
- package/dist/shared/index.d.ts +3 -7
- package/dist/shared/index.d.ts.map +1 -1
- package/dist/shared/index.js +3 -7
- package/dist/simulator/index.d.ts +2 -0
- package/dist/simulator/index.d.ts.map +1 -0
- package/dist/{adapter/backtester → simulator}/index.js +1 -2
- package/dist/simulator/use-simulator.d.ts +2 -0
- package/dist/simulator/use-simulator.d.ts.map +1 -0
- package/dist/simulator/use-simulator.js +9 -0
- package/dist/simulator/use-simulator.spec.d.ts +2 -0
- package/dist/simulator/use-simulator.spec.d.ts.map +1 -0
- package/dist/simulator/use-simulator.spec.js +49 -0
- package/dist/storage/in-memory/in-memory-storage.d.ts +9 -0
- package/dist/storage/in-memory/in-memory-storage.d.ts.map +1 -0
- package/dist/storage/in-memory/in-memory-storage.factory.d.ts +6 -0
- package/dist/storage/in-memory/in-memory-storage.factory.d.ts.map +1 -0
- package/dist/storage/in-memory/in-memory-storage.factory.js +23 -0
- package/dist/storage/in-memory/in-memory-storage.js +72 -0
- package/dist/storage/in-memory/in-memory-storage.spec.d.ts +2 -0
- package/dist/storage/in-memory/in-memory-storage.spec.d.ts.map +1 -0
- package/dist/storage/in-memory/in-memory-storage.spec.js +167 -0
- package/dist/storage/in-memory/index.d.ts +3 -0
- package/dist/storage/in-memory/index.d.ts.map +1 -0
- package/dist/storage/in-memory/index.js +18 -0
- package/dist/storage/index.d.ts +3 -3
- package/dist/storage/index.d.ts.map +1 -1
- package/dist/storage/index.js +3 -3
- package/dist/storage/storage.d.ts +51 -61
- package/dist/storage/storage.d.ts.map +1 -1
- package/dist/storage/storage.js +20 -85
- package/dist/storage/use-cache.d.ts +4 -0
- package/dist/storage/use-cache.d.ts.map +1 -0
- package/dist/storage/use-cache.js +34 -0
- package/dist/storage/use-cache.spec.d.ts +2 -0
- package/dist/storage/use-cache.spec.d.ts.map +1 -0
- package/dist/storage/use-cache.spec.js +36 -0
- package/dist/storage/use-storage-factory.d.ts +10 -0
- package/dist/storage/use-storage-factory.d.ts.map +1 -0
- package/dist/storage/use-storage-factory.js +14 -0
- package/dist/storage/use-storage.d.ts +3 -0
- package/dist/storage/use-storage.d.ts.map +1 -0
- package/dist/storage/use-storage.js +11 -0
- package/dist/strat.d.ts +7 -0
- package/dist/strat.d.ts.map +1 -0
- package/dist/strat.js +7 -0
- package/dist/use-execution-mode.d.ts +29 -0
- package/dist/use-execution-mode.d.ts.map +1 -0
- package/dist/use-execution-mode.js +37 -0
- package/dist/use-hash.d.ts +5 -0
- package/dist/use-hash.d.ts.map +1 -0
- package/dist/use-hash.js +7 -0
- package/dist/use-hash.spec.d.ts +2 -0
- package/dist/use-hash.spec.d.ts.map +1 -0
- package/dist/use-hash.spec.js +16 -0
- package/dist/use-lock.d.ts +9 -0
- package/dist/use-lock.d.ts.map +1 -0
- package/dist/use-lock.js +40 -0
- package/dist/use-logger.d.ts +10 -0
- package/dist/use-logger.d.ts.map +1 -0
- package/dist/use-logger.js +37 -0
- package/dist/use-memo.d.ts +21 -0
- package/dist/use-memo.d.ts.map +1 -0
- package/dist/use-memo.js +35 -0
- package/dist/use-memo.spec.d.ts +2 -0
- package/dist/use-memo.spec.d.ts.map +1 -0
- package/dist/use-memo.spec.js +35 -0
- package/dist/use-request.d.ts +16 -0
- package/dist/use-request.d.ts.map +1 -0
- package/dist/use-request.js +27 -0
- package/dist/use-socket.d.ts +6 -0
- package/dist/use-socket.d.ts.map +1 -0
- package/dist/use-socket.js +52 -0
- package/dist/use-state.d.ts +4 -0
- package/dist/use-state.d.ts.map +1 -0
- package/dist/use-state.js +24 -0
- package/dist/use-state.spec.d.ts +2 -0
- package/dist/use-state.spec.d.ts.map +1 -0
- package/dist/use-state.spec.js +36 -0
- package/dist/use-timestamp.d.ts +2 -0
- package/dist/use-timestamp.d.ts.map +1 -0
- package/dist/use-timestamp.js +13 -0
- package/dist/use.d.ts +5 -0
- package/dist/use.d.ts.map +1 -0
- package/dist/use.js +20 -0
- package/dist/use.spec.d.ts +2 -0
- package/dist/use.spec.d.ts.map +1 -0
- package/dist/use.spec.js +47 -0
- package/jest.config.ts +23 -2
- package/package.json +14 -11
- package/src/as-readonly.ts +5 -0
- package/src/{domain → asset}/asset.spec.ts +4 -4
- package/src/{domain → asset}/asset.ts +17 -6
- package/src/asset/index.ts +1 -0
- package/src/cli/build.ts +1 -1
- package/src/cli/dev.ts +18 -13
- package/src/cli/index.ts +7 -7
- package/src/cli/internal/workspace.ts +1 -1
- package/src/cli/pull.ts +22 -10
- package/src/cli/replay.ts +31 -0
- package/src/cli/run.ts +17 -13
- package/src/component/distinct-until-timesamp-changed.ts +11 -0
- package/src/component/error.ts +32 -0
- package/src/component/index.ts +7 -0
- package/src/{domain → component}/ohlc-operator.spec.ts +5 -6
- package/src/{domain → component}/ohlc-operator.ts +2 -3
- package/src/{domain → component}/ohlc.spec.ts +2 -2
- package/src/{domain → component}/ohlc.ts +2 -2
- package/src/core.ts +14 -0
- package/src/defined.ts +6 -0
- package/src/exclude.ts +9 -0
- package/src/index.ts +27 -80
- package/src/{domain → instrument/commission}/commission.spec.ts +4 -3
- package/src/{domain → instrument/commission}/commission.ts +1 -1
- package/src/instrument/index.ts +2 -0
- package/src/{domain → instrument}/instrument.spec.ts +11 -6
- package/src/{domain → instrument}/instrument.ts +12 -8
- package/src/make-test-module.ts +46 -0
- package/src/module.spec.ts +74 -0
- package/src/module.ts +156 -0
- package/src/not-found.ts +1 -0
- package/src/replay/index.ts +6 -0
- package/src/replay/use-replay-coordinator.ts +142 -0
- package/src/replay/use-replay-options.ts +23 -0
- package/src/replay/use-replay-reader.spec.ts +64 -0
- package/src/replay/use-replay-reader.ts +23 -0
- package/src/replay/use-replay-storage.ts +8 -0
- package/src/replay/use-replay-writer.spec.ts +56 -0
- package/src/replay/use-replay-writer.ts +17 -0
- package/src/replay/use-replay.spec.ts +132 -0
- package/src/replay/use-replay.ts +34 -0
- package/src/replay/with-replay.ts +10 -0
- package/src/session/index.ts +3 -0
- package/src/session/use-session-object.ts +26 -0
- package/src/session/use-session-storage.ts +9 -0
- package/src/session/use-session.ts +5 -0
- package/src/shared/decimals.spec.ts +1 -1
- package/src/shared/decimals.ts +5 -0
- package/src/shared/index.ts +3 -7
- package/src/simulator/index.ts +1 -0
- package/src/simulator/use-simulator.spec.ts +54 -0
- package/src/simulator/use-simulator.ts +7 -0
- package/src/storage/in-memory/in-memory-storage.factory.ts +16 -0
- package/src/storage/in-memory/in-memory-storage.spec.ts +193 -0
- package/src/storage/in-memory/in-memory-storage.ts +80 -0
- package/src/storage/in-memory/index.ts +2 -0
- package/src/storage/index.ts +3 -3
- package/src/storage/storage.ts +63 -119
- package/src/storage/use-cache.spec.ts +31 -0
- package/src/storage/use-cache.ts +50 -0
- package/src/storage/use-storage-factory.ts +17 -0
- package/src/storage/use-storage.ts +11 -0
- package/src/strat.ts +7 -0
- package/src/use-execution-mode.ts +41 -0
- package/src/use-hash.spec.ts +16 -0
- package/src/use-hash.ts +5 -0
- package/src/use-lock.ts +52 -0
- package/src/use-logger.ts +47 -0
- package/src/use-memo.spec.ts +30 -0
- package/src/use-memo.ts +35 -0
- package/src/use-request.ts +47 -0
- package/src/use-socket.ts +59 -0
- package/src/use-state.spec.ts +31 -0
- package/src/use-state.ts +30 -0
- package/src/use-timestamp.ts +12 -0
- package/src/use.spec.ts +46 -0
- package/src/use.ts +33 -0
- package/tsconfig.json +7 -4
- package/dist/adapter/adapter-aggregate.d.ts +0 -57
- package/dist/adapter/adapter-aggregate.d.ts.map +0 -1
- package/dist/adapter/adapter-aggregate.js +0 -157
- package/dist/adapter/adapter.d.ts +0 -54
- package/dist/adapter/adapter.d.ts.map +0 -1
- package/dist/adapter/adapter.js +0 -20
- package/dist/adapter/backtester/backtester-adapter.d.ts +0 -30
- package/dist/adapter/backtester/backtester-adapter.d.ts.map +0 -1
- package/dist/adapter/backtester/backtester-adapter.js +0 -67
- package/dist/adapter/backtester/backtester-cursor.d.ts +0 -16
- package/dist/adapter/backtester/backtester-cursor.d.ts.map +0 -1
- package/dist/adapter/backtester/backtester-cursor.js +0 -52
- package/dist/adapter/backtester/backtester-streamer.d.ts +0 -50
- package/dist/adapter/backtester/backtester-streamer.d.ts.map +0 -1
- package/dist/adapter/backtester/backtester-streamer.js +0 -119
- package/dist/adapter/backtester/error.d.ts +0 -3
- package/dist/adapter/backtester/error.d.ts.map +0 -1
- package/dist/adapter/backtester/error.js +0 -11
- package/dist/adapter/backtester/index.d.ts +0 -3
- package/dist/adapter/backtester/index.d.ts.map +0 -1
- package/dist/adapter/error.d.ts +0 -4
- package/dist/adapter/error.d.ts.map +0 -1
- package/dist/adapter/error.js +0 -15
- package/dist/adapter/index.d.ts +0 -5
- package/dist/adapter/index.d.ts.map +0 -1
- package/dist/adapter/paper/engine/paper-engine.d.ts +0 -12
- package/dist/adapter/paper/engine/paper-engine.d.ts.map +0 -1
- package/dist/adapter/paper/engine/paper-engine.js +0 -109
- package/dist/adapter/paper/index.d.ts +0 -3
- package/dist/adapter/paper/index.d.ts.map +0 -1
- package/dist/adapter/paper/paper-adapter.d.ts +0 -30
- package/dist/adapter/paper/paper-adapter.d.ts.map +0 -1
- package/dist/adapter/paper/paper-adapter.js +0 -87
- package/dist/cli/error.d.ts +0 -2
- package/dist/cli/error.d.ts.map +0 -1
- package/dist/cli/error.js +0 -7
- package/dist/cli/test.d.ts.map +0 -1
- package/dist/domain/asset.d.ts.map +0 -1
- package/dist/domain/balance-operator.d.ts +0 -7
- package/dist/domain/balance-operator.d.ts.map +0 -1
- package/dist/domain/balance-operator.js +0 -9
- package/dist/domain/balance.d.ts +0 -47
- package/dist/domain/balance.d.ts.map +0 -1
- package/dist/domain/balance.js +0 -97
- package/dist/domain/commission.d.ts.map +0 -1
- package/dist/domain/component.d.ts +0 -6
- package/dist/domain/component.d.ts.map +0 -1
- package/dist/domain/error.d.ts +0 -7
- package/dist/domain/error.d.ts.map +0 -1
- package/dist/domain/error.js +0 -23
- package/dist/domain/index.d.ts +0 -22
- package/dist/domain/index.d.ts.map +0 -1
- package/dist/domain/index.js +0 -37
- package/dist/domain/instrument-operator.d.ts +0 -7
- package/dist/domain/instrument-operator.d.ts.map +0 -1
- package/dist/domain/instrument-operator.js +0 -13
- package/dist/domain/instrument.d.ts.map +0 -1
- package/dist/domain/ohlc-operator.d.ts.map +0 -1
- package/dist/domain/ohlc.d.ts.map +0 -1
- package/dist/domain/order-operator.d.ts +0 -8
- package/dist/domain/order-operator.d.ts.map +0 -1
- package/dist/domain/order-operator.js +0 -16
- package/dist/domain/order.d.ts +0 -24
- package/dist/domain/order.d.ts.map +0 -1
- package/dist/domain/order.js +0 -49
- package/dist/domain/orderbook-operator.d.ts +0 -7
- package/dist/domain/orderbook-operator.d.ts.map +0 -1
- package/dist/domain/orderbook-operator.js +0 -9
- package/dist/domain/orderbook.d.ts +0 -30
- package/dist/domain/orderbook.d.ts.map +0 -1
- package/dist/domain/orderbook.js +0 -20
- package/dist/domain/position-operator.d.ts +0 -13
- package/dist/domain/position-operator.d.ts.map +0 -1
- package/dist/domain/position-operator.js +0 -45
- package/dist/domain/position.d.ts +0 -18
- package/dist/domain/position.d.ts.map +0 -1
- package/dist/domain/position.js +0 -23
- package/dist/domain/session-builder.d.ts +0 -54
- package/dist/domain/session-builder.d.ts.map +0 -1
- package/dist/domain/session-builder.js +0 -106
- package/dist/domain/session.d.ts +0 -77
- package/dist/domain/session.d.ts.map +0 -1
- package/dist/domain/session.js +0 -162
- package/dist/domain/timeframe.d.ts.map +0 -1
- package/dist/domain/trade-operator.d.ts +0 -7
- package/dist/domain/trade-operator.d.ts.map +0 -1
- package/dist/domain/trade-operator.js +0 -9
- package/dist/domain/trade.d.ts +0 -16
- package/dist/domain/trade.d.ts.map +0 -1
- package/dist/domain/trade.js +0 -17
- package/dist/shared/collections.d.ts +0 -29
- package/dist/shared/collections.d.ts.map +0 -1
- package/dist/shared/collections.js +0 -123
- package/dist/shared/logger.d.ts +0 -8
- package/dist/shared/logger.d.ts.map +0 -1
- package/dist/shared/logger.js +0 -33
- package/dist/shared/pipe.d.ts +0 -5
- package/dist/shared/pipe.d.ts.map +0 -1
- package/dist/shared/pipe.js +0 -8
- package/dist/shared/policy.d.ts +0 -2
- package/dist/shared/policy.d.ts.map +0 -1
- package/dist/shared/policy.js +0 -8
- package/dist/storage/cache.d.ts +0 -10
- package/dist/storage/cache.d.ts.map +0 -1
- package/dist/storage/cache.js +0 -43
- package/dist/storage/feed.d.ts +0 -38
- package/dist/storage/feed.d.ts.map +0 -1
- package/dist/storage/feed.js +0 -108
- package/dist/storage/measurement.d.ts +0 -34
- package/dist/storage/measurement.d.ts.map +0 -1
- package/dist/storage/measurement.js +0 -59
- package/dist/store/error.d.ts +0 -9
- package/dist/store/error.d.ts.map +0 -1
- package/dist/store/error.js +0 -31
- package/dist/store/index.d.ts +0 -10
- package/dist/store/index.d.ts.map +0 -1
- package/dist/store/store-balance-event.d.ts +0 -46
- package/dist/store/store-balance-event.d.ts.map +0 -1
- package/dist/store/store-balance-event.js +0 -134
- package/dist/store/store-event.d.ts +0 -7
- package/dist/store/store-event.d.ts.map +0 -1
- package/dist/store/store-event.js +0 -2
- package/dist/store/store-instrument-event.d.ts +0 -22
- package/dist/store/store-instrument-event.d.ts.map +0 -1
- package/dist/store/store-instrument-event.js +0 -60
- package/dist/store/store-order-event.d.ts +0 -64
- package/dist/store/store-order-event.d.ts.map +0 -1
- package/dist/store/store-order-event.js +0 -185
- package/dist/store/store-orderbook-event.d.ts +0 -13
- package/dist/store/store-orderbook-event.d.ts.map +0 -1
- package/dist/store/store-orderbook-event.js +0 -43
- package/dist/store/store-position-event.d.ts +0 -22
- package/dist/store/store-position-event.d.ts.map +0 -1
- package/dist/store/store-position-event.js +0 -96
- package/dist/store/store-state.d.ts +0 -28
- package/dist/store/store-state.d.ts.map +0 -1
- package/dist/store/store-state.js +0 -29
- package/dist/store/store-trade-event.d.ts +0 -17
- package/dist/store/store-trade-event.d.ts.map +0 -1
- package/dist/store/store-trade-event.js +0 -34
- package/dist/store/store.d.ts +0 -15
- package/dist/store/store.d.ts.map +0 -1
- package/dist/store/store.js +0 -32
- package/src/adapter/adapter-aggregate.ts +0 -171
- package/src/adapter/adapter.ts +0 -83
- package/src/adapter/backtester/backtester-adapter.ts +0 -96
- package/src/adapter/backtester/backtester-cursor.spec.ts +0 -44
- package/src/adapter/backtester/backtester-cursor.ts +0 -47
- package/src/adapter/backtester/backtester-streamer.spec.ts +0 -60
- package/src/adapter/backtester/backtester-streamer.ts +0 -155
- package/src/adapter/backtester/error.ts +0 -7
- package/src/adapter/backtester/index.ts +0 -2
- package/src/adapter/error.ts +0 -13
- package/src/adapter/index.ts +0 -4
- package/src/adapter/paper/engine/paper-engine.spec.ts +0 -116
- package/src/adapter/paper/engine/paper-engine.ts +0 -151
- package/src/adapter/paper/index.ts +0 -2
- package/src/adapter/paper/paper-adapter.ts +0 -111
- package/src/cli/error.ts +0 -5
- package/src/cli/test.ts +0 -40
- package/src/domain/balance-operator.spec.ts +0 -26
- package/src/domain/balance-operator.ts +0 -15
- package/src/domain/balance.spec.ts +0 -116
- package/src/domain/balance.ts +0 -123
- package/src/domain/component.ts +0 -6
- package/src/domain/error.ts +0 -27
- package/src/domain/index.ts +0 -21
- package/src/domain/instrument-operator.spec.ts +0 -35
- package/src/domain/instrument-operator.ts +0 -25
- package/src/domain/order-operator.spec.ts +0 -85
- package/src/domain/order-operator.ts +0 -23
- package/src/domain/order.spec.ts +0 -43
- package/src/domain/order.ts +0 -68
- package/src/domain/orderbook-operator.spec.ts +0 -40
- package/src/domain/orderbook-operator.ts +0 -15
- package/src/domain/orderbook.spec.ts +0 -26
- package/src/domain/orderbook.ts +0 -30
- package/src/domain/position-operator.spec.ts +0 -64
- package/src/domain/position-operator.ts +0 -71
- package/src/domain/position.spec.ts +0 -43
- package/src/domain/position.ts +0 -31
- package/src/domain/session-builder.ts +0 -158
- package/src/domain/session.spec.ts +0 -33
- package/src/domain/session.ts +0 -256
- package/src/domain/trade-operator.spec.ts +0 -35
- package/src/domain/trade-operator.ts +0 -15
- package/src/domain/trade.spec.ts +0 -21
- package/src/domain/trade.ts +0 -20
- package/src/shared/collections.spec.ts +0 -34
- package/src/shared/collections.ts +0 -154
- package/src/shared/logger.ts +0 -39
- package/src/shared/pipe.ts +0 -12
- package/src/shared/policy.ts +0 -5
- package/src/storage/cache.spec.ts +0 -18
- package/src/storage/cache.ts +0 -37
- package/src/storage/feed.ts +0 -124
- package/src/storage/measurement.ts +0 -56
- package/src/store/error.ts +0 -36
- package/src/store/index.ts +0 -9
- package/src/store/store-balance-event.spec.ts +0 -30
- package/src/store/store-balance-event.ts +0 -167
- package/src/store/store-event.ts +0 -8
- package/src/store/store-instrument-event.spec.ts +0 -26
- package/src/store/store-instrument-event.ts +0 -83
- package/src/store/store-order-event.spec.ts +0 -32
- package/src/store/store-order-event.ts +0 -219
- package/src/store/store-orderbook-event.spec.ts +0 -39
- package/src/store/store-orderbook-event.ts +0 -56
- package/src/store/store-position-event.ts +0 -121
- package/src/store/store-state.ts +0 -48
- package/src/store/store-trade-event.spec.ts +0 -62
- package/src/store/store-trade-event.ts +0 -42
- package/src/store/store.spec.ts +0 -182
- package/src/store/store.ts +0 -37
- package/dist/{domain → component}/ohlc.d.ts +0 -0
- package/dist/{domain → component}/ohlc.js +0 -0
- package/dist/{domain → component}/timeframe.d.ts +0 -0
- package/dist/{domain → component}/timeframe.js +1 -1
- /package/src/{domain → component}/timeframe.ts +0 -0
|
@@ -0,0 +1,51 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
Object.defineProperty(exports, "__esModule", { value: true });
|
|
3
|
+
const component_1 = require("../component");
|
|
4
|
+
const shared_1 = require("../shared");
|
|
5
|
+
describe(component_1.Instrument.name, () => {
|
|
6
|
+
test('should construct a instrument', () => {
|
|
7
|
+
const sut = new component_1.Instrument(0, new component_1.Asset('abc', 'xyz', 4), new component_1.Asset('def', 'xyz', 4), 'abc-def', (0, component_1.commissionPercentOf)({
|
|
8
|
+
maker: shared_1.d.Zero,
|
|
9
|
+
taker: shared_1.d.Zero
|
|
10
|
+
}));
|
|
11
|
+
expect(sut.base.name).toEqual('abc');
|
|
12
|
+
expect(sut.base.adapterName).toEqual('xyz');
|
|
13
|
+
expect(sut.quote.name).toEqual('def');
|
|
14
|
+
expect(sut.quote.adapterName).toEqual('xyz');
|
|
15
|
+
expect(sut.id).toEqual('xyz:abc-def');
|
|
16
|
+
});
|
|
17
|
+
});
|
|
18
|
+
describe(component_1.InstrumentSelector.name, () => {
|
|
19
|
+
test('should construct a instrument selector', () => {
|
|
20
|
+
const sut = (0, component_1.instrumentOf)('xyz:abc-def');
|
|
21
|
+
expect(sut.base.name).toEqual('abc');
|
|
22
|
+
expect(sut.base.adapterName).toEqual('xyz');
|
|
23
|
+
expect(sut.quote.name).toEqual('def');
|
|
24
|
+
expect(sut.quote.adapterName).toEqual('xyz');
|
|
25
|
+
expect(sut.id).toEqual('xyz:abc-def');
|
|
26
|
+
});
|
|
27
|
+
test('should construct a instrument selector capital case', () => {
|
|
28
|
+
const sut = (0, component_1.instrumentOf)('XYZ:ABC-DEF');
|
|
29
|
+
expect(sut.base.name).toEqual('abc');
|
|
30
|
+
expect(sut.base.adapterName).toEqual('xyz');
|
|
31
|
+
expect(sut.quote.name).toEqual('def');
|
|
32
|
+
expect(sut.quote.adapterName).toEqual('xyz');
|
|
33
|
+
expect(sut.id).toEqual('xyz:abc-def');
|
|
34
|
+
});
|
|
35
|
+
test('should throw invalid format message for missing separator', () => {
|
|
36
|
+
const fn = () => (0, component_1.instrumentOf)('xyzabc-def');
|
|
37
|
+
expect(fn).toThrowError();
|
|
38
|
+
});
|
|
39
|
+
test('should throw invalid format message for multiple separators', () => {
|
|
40
|
+
const fn = () => (0, component_1.instrumentOf)('xyz:abc:-def');
|
|
41
|
+
expect(fn).toThrowError();
|
|
42
|
+
});
|
|
43
|
+
test('should throw invalid format message for missing pair name', () => {
|
|
44
|
+
const fn = () => (0, component_1.instrumentOf)('xyz:');
|
|
45
|
+
expect(fn).toThrowError();
|
|
46
|
+
});
|
|
47
|
+
test('should throw invalid format message for missing adapter name', () => {
|
|
48
|
+
const fn = () => (0, component_1.assetOf)(':abc-def');
|
|
49
|
+
expect(fn).toThrowError();
|
|
50
|
+
});
|
|
51
|
+
});
|
|
@@ -0,0 +1,13 @@
|
|
|
1
|
+
/// <reference types="jest" />
|
|
2
|
+
import { Observable } from 'rxjs';
|
|
3
|
+
import { Dependency } from './module';
|
|
4
|
+
export declare function makeTestModule(dependencies: Dependency[]): Promise<{
|
|
5
|
+
act: <T>(func: () => T) => T;
|
|
6
|
+
get: <T_1>(token: import("tsyringe/dist/typings/providers/injection-token").default<T_1>) => T_1;
|
|
7
|
+
}>;
|
|
8
|
+
type MockableFunction = (...args: any[]) => any;
|
|
9
|
+
export declare const mockedFunc: <Func extends MockableFunction>(mockedFunc: Func) => jest.MockedFunction<Func>;
|
|
10
|
+
export declare function toArray<T>(observable: Observable<T>): T[];
|
|
11
|
+
export type InferObservableType<T> = T extends Observable<infer U> ? U : never;
|
|
12
|
+
export {};
|
|
13
|
+
//# sourceMappingURL=make-test-module.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"make-test-module.d.ts","sourceRoot":"","sources":["../src/make-test-module.ts"],"names":[],"mappings":";AAAA,OAAO,EAAE,UAAU,EAAO,MAAM,MAAM,CAAC;AAGvC,OAAO,EAAE,UAAU,EAAU,MAAM,aAAa,CAAC;AAEjD,wBAAsB,cAAc,CAAC,YAAY,EAAE,UAAU,EAAE;;;GAS9D;AAED,KAAK,gBAAgB,GAAG,CAAC,GAAG,IAAI,EAAE,GAAG,EAAE,KAAK,GAAG,CAAC;AAEhD,eAAO,MAAM,UAAU,gFAC+B,CAAC;AAEvD,wBAAgB,OAAO,CAAC,CAAC,EAAE,UAAU,EAAE,UAAU,CAAC,CAAC,CAAC,OAsBnD;AAED,MAAM,MAAM,mBAAmB,CAAC,CAAC,IAAI,CAAC,SAAS,UAAU,CAAC,MAAM,CAAC,CAAC,GAAG,CAAC,GAAG,KAAK,CAAC"}
|
|
@@ -0,0 +1,46 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
var __awaiter = (this && this.__awaiter) || function (thisArg, _arguments, P, generator) {
|
|
3
|
+
function adopt(value) { return value instanceof P ? value : new P(function (resolve) { resolve(value); }); }
|
|
4
|
+
return new (P || (P = Promise))(function (resolve, reject) {
|
|
5
|
+
function fulfilled(value) { try { step(generator.next(value)); } catch (e) { reject(e); } }
|
|
6
|
+
function rejected(value) { try { step(generator["throw"](value)); } catch (e) { reject(e); } }
|
|
7
|
+
function step(result) { result.done ? resolve(result.value) : adopt(result.value).then(fulfilled, rejected); }
|
|
8
|
+
step((generator = generator.apply(thisArg, _arguments || [])).next());
|
|
9
|
+
});
|
|
10
|
+
};
|
|
11
|
+
Object.defineProperty(exports, "__esModule", { value: true });
|
|
12
|
+
exports.toArray = exports.mockedFunc = exports.makeTestModule = void 0;
|
|
13
|
+
const rxjs_1 = require("rxjs");
|
|
14
|
+
const core_1 = require("./core");
|
|
15
|
+
const module_1 = require("./module");
|
|
16
|
+
function makeTestModule(dependencies) {
|
|
17
|
+
return __awaiter(this, void 0, void 0, function* () {
|
|
18
|
+
const module = new module_1.Module([...(0, core_1.core)(), ...dependencies]);
|
|
19
|
+
const { act } = yield module.awake();
|
|
20
|
+
return {
|
|
21
|
+
act,
|
|
22
|
+
get: module.get.bind(module)
|
|
23
|
+
};
|
|
24
|
+
});
|
|
25
|
+
}
|
|
26
|
+
exports.makeTestModule = makeTestModule;
|
|
27
|
+
const mockedFunc = (mockedFunc) => mockedFunc;
|
|
28
|
+
exports.mockedFunc = mockedFunc;
|
|
29
|
+
function toArray(observable) {
|
|
30
|
+
const array = Array.of();
|
|
31
|
+
const clone = (it) => {
|
|
32
|
+
if (typeof it === 'symbol') {
|
|
33
|
+
return it;
|
|
34
|
+
}
|
|
35
|
+
if (Array.isArray(it)) {
|
|
36
|
+
return it.map(it => clone(it));
|
|
37
|
+
}
|
|
38
|
+
if (typeof it === 'object') {
|
|
39
|
+
return Object.assign({}, it);
|
|
40
|
+
}
|
|
41
|
+
return it;
|
|
42
|
+
};
|
|
43
|
+
observable.pipe((0, rxjs_1.tap)(it => array.push(clone(it)))).subscribe();
|
|
44
|
+
return array;
|
|
45
|
+
}
|
|
46
|
+
exports.toArray = toArray;
|
package/dist/module.d.ts
ADDED
|
@@ -0,0 +1,57 @@
|
|
|
1
|
+
import 'reflect-metadata';
|
|
2
|
+
import { DependencyContainer, inject, injectable, injectAll, InjectionToken } from 'tsyringe';
|
|
3
|
+
export declare const provider: typeof injectable;
|
|
4
|
+
export declare const provide: typeof inject;
|
|
5
|
+
export declare const provideAll: typeof injectAll;
|
|
6
|
+
export type Dependency = {
|
|
7
|
+
provide: InjectionToken;
|
|
8
|
+
useClass?: any;
|
|
9
|
+
useValue?: any;
|
|
10
|
+
};
|
|
11
|
+
/**
|
|
12
|
+
* Hook to get access to current execution module dependencies.
|
|
13
|
+
*/
|
|
14
|
+
export declare const useContext: <T>(token: InjectionToken<T>) => T;
|
|
15
|
+
/**
|
|
16
|
+
* Hook to get access to current execution module dependencies.
|
|
17
|
+
*/
|
|
18
|
+
export declare const throwWithContext: () => void;
|
|
19
|
+
/**
|
|
20
|
+
* A module is a collection of services, values, and factories that can be
|
|
21
|
+
* registered with a dependency container.
|
|
22
|
+
*/
|
|
23
|
+
export declare class Module {
|
|
24
|
+
private readonly dependencies;
|
|
25
|
+
private container?;
|
|
26
|
+
constructor(dependencies: Dependency[]);
|
|
27
|
+
/**
|
|
28
|
+
* Builds and initializes dependencies.
|
|
29
|
+
*/
|
|
30
|
+
awake(): Promise<{
|
|
31
|
+
act: <T>(func: () => T) => T;
|
|
32
|
+
}>;
|
|
33
|
+
/**
|
|
34
|
+
* Disposes all dependencies instantiated by this module.
|
|
35
|
+
* @returns
|
|
36
|
+
*/
|
|
37
|
+
dispose(): void;
|
|
38
|
+
/**
|
|
39
|
+
* Builds a new instance of dependency container based on module definition.
|
|
40
|
+
* @returns
|
|
41
|
+
*/
|
|
42
|
+
protected buildContainer(): DependencyContainer;
|
|
43
|
+
/**
|
|
44
|
+
* Resolves a dependency from the module.
|
|
45
|
+
* @param token represents the identifier for the dependency that you want to
|
|
46
|
+
* resolve from the container.
|
|
47
|
+
* @returns instance of the dependency.
|
|
48
|
+
*/
|
|
49
|
+
get<T>(token: InjectionToken<T>): T;
|
|
50
|
+
/**
|
|
51
|
+
* Resolves a collection of dependencies from the module.
|
|
52
|
+
* @param token
|
|
53
|
+
* @returns
|
|
54
|
+
*/
|
|
55
|
+
getAll<T>(token: InjectionToken<T>): T[];
|
|
56
|
+
}
|
|
57
|
+
//# sourceMappingURL=module.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"module.d.ts","sourceRoot":"","sources":["../src/module.ts"],"names":[],"mappings":"AAAA,OAAO,kBAAkB,CAAC;AAG1B,OAAO,EAEL,mBAAmB,EACnB,MAAM,EACN,UAAU,EACV,SAAS,EACT,cAAc,EAEf,MAAM,UAAU,CAAC;AAElB,eAAO,MAAM,QAAQ,mBAAa,CAAC;AACnC,eAAO,MAAM,OAAO,eAAS,CAAC;AAC9B,eAAO,MAAM,UAAU,kBAAY,CAAC;AAEpC,MAAM,MAAM,UAAU,GAAG;IACvB,OAAO,EAAE,cAAc,CAAC;IACxB,QAAQ,CAAC,EAAE,GAAG,CAAC;IACf,QAAQ,CAAC,EAAE,GAAG,CAAC;CAChB,CAAC;AAuBF;;GAEG;AACH,eAAO,MAAM,UAAU,oCAQtB,CAAC;AAEF;;GAEG;AACH,eAAO,MAAM,gBAAgB,YAI5B,CAAC;AAEF;;;GAGG;AACH,qBAAa,MAAM;IAGL,OAAO,CAAC,QAAQ,CAAC,YAAY;IAFzC,OAAO,CAAC,SAAS,CAAC,CAAsB;gBAEX,YAAY,EAAE,UAAU,EAAE;IAEvD;;OAEG;IACG,KAAK,IAAI,OAAO,CAAC;QAAE,GAAG,EAAE,CAAC,CAAC,EAAE,IAAI,EAAE,MAAM,CAAC,KAAK,CAAC,CAAA;KAAE,CAAC;IAWxD;;;OAGG;IACH,OAAO;IAQP;;;OAGG;IACH,SAAS,CAAC,cAAc,IAAI,mBAAmB;IAgB/C;;;;;OAKG;IACH,GAAG,CAAC,CAAC,EAAE,KAAK,EAAE,cAAc,CAAC,CAAC,CAAC,GAAG,CAAC;IAYnC;;;;OAIG;IACH,MAAM,CAAC,CAAC,EAAE,KAAK,EAAE,cAAc,CAAC,CAAC,CAAC,GAAG,CAAC,EAAE;CAWzC"}
|
package/dist/module.js
ADDED
|
@@ -0,0 +1,136 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
var __awaiter = (this && this.__awaiter) || function (thisArg, _arguments, P, generator) {
|
|
3
|
+
function adopt(value) { return value instanceof P ? value : new P(function (resolve) { resolve(value); }); }
|
|
4
|
+
return new (P || (P = Promise))(function (resolve, reject) {
|
|
5
|
+
function fulfilled(value) { try { step(generator.next(value)); } catch (e) { reject(e); } }
|
|
6
|
+
function rejected(value) { try { step(generator["throw"](value)); } catch (e) { reject(e); } }
|
|
7
|
+
function step(result) { result.done ? resolve(result.value) : adopt(result.value).then(fulfilled, rejected); }
|
|
8
|
+
step((generator = generator.apply(thisArg, _arguments || [])).next());
|
|
9
|
+
});
|
|
10
|
+
};
|
|
11
|
+
Object.defineProperty(exports, "__esModule", { value: true });
|
|
12
|
+
exports.Module = exports.throwWithContext = exports.useContext = exports.provideAll = exports.provide = exports.provider = void 0;
|
|
13
|
+
require("reflect-metadata");
|
|
14
|
+
const node_async_hooks_1 = require("node:async_hooks");
|
|
15
|
+
const tsyringe_1 = require("tsyringe");
|
|
16
|
+
exports.provider = tsyringe_1.injectable;
|
|
17
|
+
exports.provide = tsyringe_1.inject;
|
|
18
|
+
exports.provideAll = tsyringe_1.injectAll;
|
|
19
|
+
function noModuleError() {
|
|
20
|
+
return new Error('Please do not use dependency injection outside of hooks context.');
|
|
21
|
+
}
|
|
22
|
+
function withModuleError() {
|
|
23
|
+
return new Error('Please do not use with hooks in context.');
|
|
24
|
+
}
|
|
25
|
+
function notInitializedModuleError() {
|
|
26
|
+
return new Error('You need to initialize a module before use.');
|
|
27
|
+
}
|
|
28
|
+
function missingInjectionTokenError(token) {
|
|
29
|
+
return new Error(`Unable to resolve unregistered dependency: ${token.toString()}`);
|
|
30
|
+
}
|
|
31
|
+
/**
|
|
32
|
+
*
|
|
33
|
+
*/
|
|
34
|
+
const moduleLocalStorage = new node_async_hooks_1.AsyncLocalStorage();
|
|
35
|
+
/**
|
|
36
|
+
* Hook to get access to current execution module dependencies.
|
|
37
|
+
*/
|
|
38
|
+
const useContext = (token) => {
|
|
39
|
+
const module = moduleLocalStorage.getStore();
|
|
40
|
+
if (!module) {
|
|
41
|
+
throw noModuleError();
|
|
42
|
+
}
|
|
43
|
+
return module.get(token);
|
|
44
|
+
};
|
|
45
|
+
exports.useContext = useContext;
|
|
46
|
+
/**
|
|
47
|
+
* Hook to get access to current execution module dependencies.
|
|
48
|
+
*/
|
|
49
|
+
const throwWithContext = () => {
|
|
50
|
+
if (moduleLocalStorage.getStore()) {
|
|
51
|
+
throw withModuleError();
|
|
52
|
+
}
|
|
53
|
+
};
|
|
54
|
+
exports.throwWithContext = throwWithContext;
|
|
55
|
+
/**
|
|
56
|
+
* A module is a collection of services, values, and factories that can be
|
|
57
|
+
* registered with a dependency container.
|
|
58
|
+
*/
|
|
59
|
+
class Module {
|
|
60
|
+
constructor(dependencies) {
|
|
61
|
+
this.dependencies = dependencies;
|
|
62
|
+
}
|
|
63
|
+
/**
|
|
64
|
+
* Builds and initializes dependencies.
|
|
65
|
+
*/
|
|
66
|
+
awake() {
|
|
67
|
+
return __awaiter(this, void 0, void 0, function* () {
|
|
68
|
+
this.container = this.buildContainer();
|
|
69
|
+
return {
|
|
70
|
+
/**
|
|
71
|
+
* Associate callback function with current executing module
|
|
72
|
+
*/
|
|
73
|
+
act: (func) => moduleLocalStorage.run(this, func)
|
|
74
|
+
};
|
|
75
|
+
});
|
|
76
|
+
}
|
|
77
|
+
/**
|
|
78
|
+
* Disposes all dependencies instantiated by this module.
|
|
79
|
+
* @returns
|
|
80
|
+
*/
|
|
81
|
+
dispose() {
|
|
82
|
+
if (!this.container) {
|
|
83
|
+
return;
|
|
84
|
+
}
|
|
85
|
+
this.container = undefined;
|
|
86
|
+
}
|
|
87
|
+
/**
|
|
88
|
+
* Builds a new instance of dependency container based on module definition.
|
|
89
|
+
* @returns
|
|
90
|
+
*/
|
|
91
|
+
buildContainer() {
|
|
92
|
+
const childContainer = tsyringe_1.container.createChildContainer();
|
|
93
|
+
this.dependencies.forEach(it => {
|
|
94
|
+
var _a;
|
|
95
|
+
if (it.useValue) {
|
|
96
|
+
childContainer.register(it.provide, { useValue: it.useValue });
|
|
97
|
+
}
|
|
98
|
+
else {
|
|
99
|
+
childContainer.register(it.provide, (_a = it.useClass) !== null && _a !== void 0 ? _a : it.provide, {
|
|
100
|
+
lifecycle: tsyringe_1.Lifecycle.Singleton
|
|
101
|
+
});
|
|
102
|
+
}
|
|
103
|
+
});
|
|
104
|
+
return childContainer;
|
|
105
|
+
}
|
|
106
|
+
/**
|
|
107
|
+
* Resolves a dependency from the module.
|
|
108
|
+
* @param token represents the identifier for the dependency that you want to
|
|
109
|
+
* resolve from the container.
|
|
110
|
+
* @returns instance of the dependency.
|
|
111
|
+
*/
|
|
112
|
+
get(token) {
|
|
113
|
+
if (!this.container) {
|
|
114
|
+
throw notInitializedModuleError();
|
|
115
|
+
}
|
|
116
|
+
if (!this.container.isRegistered(token)) {
|
|
117
|
+
throw missingInjectionTokenError(token);
|
|
118
|
+
}
|
|
119
|
+
return this.container.resolve(token);
|
|
120
|
+
}
|
|
121
|
+
/**
|
|
122
|
+
* Resolves a collection of dependencies from the module.
|
|
123
|
+
* @param token
|
|
124
|
+
* @returns
|
|
125
|
+
*/
|
|
126
|
+
getAll(token) {
|
|
127
|
+
if (!this.container) {
|
|
128
|
+
throw notInitializedModuleError();
|
|
129
|
+
}
|
|
130
|
+
if (!this.container.isRegistered(token)) {
|
|
131
|
+
throw missingInjectionTokenError(token);
|
|
132
|
+
}
|
|
133
|
+
return tsyringe_1.container.resolveAll(token);
|
|
134
|
+
}
|
|
135
|
+
}
|
|
136
|
+
exports.Module = Module;
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"module.spec.d.ts","sourceRoot":"","sources":["../src/module.spec.ts"],"names":[],"mappings":""}
|
|
@@ -0,0 +1,86 @@
|
|
|
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 __awaiter = (this && this.__awaiter) || function (thisArg, _arguments, P, generator) {
|
|
9
|
+
function adopt(value) { return value instanceof P ? value : new P(function (resolve) { resolve(value); }); }
|
|
10
|
+
return new (P || (P = Promise))(function (resolve, reject) {
|
|
11
|
+
function fulfilled(value) { try { step(generator.next(value)); } catch (e) { reject(e); } }
|
|
12
|
+
function rejected(value) { try { step(generator["throw"](value)); } catch (e) { reject(e); } }
|
|
13
|
+
function step(result) { result.done ? resolve(result.value) : adopt(result.value).then(fulfilled, rejected); }
|
|
14
|
+
step((generator = generator.apply(thisArg, _arguments || [])).next());
|
|
15
|
+
});
|
|
16
|
+
};
|
|
17
|
+
Object.defineProperty(exports, "__esModule", { value: true });
|
|
18
|
+
const module_1 = require("./module");
|
|
19
|
+
describe(module_1.Module.name, () => {
|
|
20
|
+
let fixtures;
|
|
21
|
+
beforeEach(() => {
|
|
22
|
+
fixtures = getFixtures();
|
|
23
|
+
});
|
|
24
|
+
test('builds empty module', () => __awaiter(void 0, void 0, void 0, function* () {
|
|
25
|
+
const module = fixtures.givenModuleCreated([]);
|
|
26
|
+
fixtures.whenModuleBuilt(module);
|
|
27
|
+
}));
|
|
28
|
+
test('builds module and resolves single value dependency', () => __awaiter(void 0, void 0, void 0, function* () {
|
|
29
|
+
const definition = fixtures.definitions.singleValue;
|
|
30
|
+
const module = fixtures.givenModuleCreated(definition);
|
|
31
|
+
fixtures.whenModuleBuilt(module);
|
|
32
|
+
fixtures.thenCanResolveDependencies(module, definition);
|
|
33
|
+
}));
|
|
34
|
+
test('builds module and resolves single class dependency', () => __awaiter(void 0, void 0, void 0, function* () {
|
|
35
|
+
const definition = fixtures.definitions.singleClass;
|
|
36
|
+
const module = fixtures.givenModuleCreated(definition);
|
|
37
|
+
fixtures.whenModuleBuilt(module);
|
|
38
|
+
fixtures.thenCanResolveDependencies(module, definition);
|
|
39
|
+
}));
|
|
40
|
+
test('builds module and resolves many class dependencies', () => __awaiter(void 0, void 0, void 0, function* () {
|
|
41
|
+
const definition = fixtures.definitions.manyClass;
|
|
42
|
+
const module = fixtures.givenModuleCreated(definition);
|
|
43
|
+
fixtures.whenModuleBuilt(module);
|
|
44
|
+
fixtures.thenCanResolveDependencies(module, definition);
|
|
45
|
+
}));
|
|
46
|
+
});
|
|
47
|
+
function getFixtures() {
|
|
48
|
+
return {
|
|
49
|
+
definitions: {
|
|
50
|
+
singleClass: [
|
|
51
|
+
{
|
|
52
|
+
provide: FakeService,
|
|
53
|
+
useClass: FakeService
|
|
54
|
+
}
|
|
55
|
+
],
|
|
56
|
+
manyClass: [
|
|
57
|
+
{
|
|
58
|
+
provide: FakeService,
|
|
59
|
+
useClass: FakeService
|
|
60
|
+
},
|
|
61
|
+
{
|
|
62
|
+
provide: FakeService,
|
|
63
|
+
useClass: FakeService
|
|
64
|
+
}
|
|
65
|
+
],
|
|
66
|
+
singleValue: [
|
|
67
|
+
{
|
|
68
|
+
provide: FakeService,
|
|
69
|
+
useValue: new FakeService()
|
|
70
|
+
}
|
|
71
|
+
]
|
|
72
|
+
},
|
|
73
|
+
givenModuleCreated: (dependencies) => new module_1.Module(dependencies),
|
|
74
|
+
whenModuleBuilt: (module) => module.awake(),
|
|
75
|
+
thenCanResolveDependencies: (module, dependencies) => {
|
|
76
|
+
dependencies.forEach(it => {
|
|
77
|
+
expect(module.get(it.provide)).toBeTruthy();
|
|
78
|
+
});
|
|
79
|
+
}
|
|
80
|
+
};
|
|
81
|
+
}
|
|
82
|
+
let FakeService = class FakeService {
|
|
83
|
+
};
|
|
84
|
+
FakeService = __decorate([
|
|
85
|
+
(0, module_1.provider)()
|
|
86
|
+
], FakeService);
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"not-found.d.ts","sourceRoot":"","sources":["../src/not-found.ts"],"names":[],"mappings":"AAAA,eAAO,MAAM,QAAQ,eAA0B,CAAC"}
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../src/replay/index.ts"],"names":[],"mappings":"AAAA,cAAc,cAAc,CAAC;AAC7B,cAAc,0BAA0B,CAAC;AACzC,cAAc,sBAAsB,CAAC;AACrC,cAAc,qBAAqB,CAAC;AACpC,cAAc,qBAAqB,CAAC;AACpC,cAAc,eAAe,CAAC"}
|
|
@@ -0,0 +1,22 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
var __createBinding = (this && this.__createBinding) || (Object.create ? (function(o, m, k, k2) {
|
|
3
|
+
if (k2 === undefined) k2 = k;
|
|
4
|
+
var desc = Object.getOwnPropertyDescriptor(m, k);
|
|
5
|
+
if (!desc || ("get" in desc ? !m.__esModule : desc.writable || desc.configurable)) {
|
|
6
|
+
desc = { enumerable: true, get: function() { return m[k]; } };
|
|
7
|
+
}
|
|
8
|
+
Object.defineProperty(o, k2, desc);
|
|
9
|
+
}) : (function(o, m, k, k2) {
|
|
10
|
+
if (k2 === undefined) k2 = k;
|
|
11
|
+
o[k2] = m[k];
|
|
12
|
+
}));
|
|
13
|
+
var __exportStar = (this && this.__exportStar) || function(m, exports) {
|
|
14
|
+
for (var p in m) if (p !== "default" && !Object.prototype.hasOwnProperty.call(exports, p)) __createBinding(exports, m, p);
|
|
15
|
+
};
|
|
16
|
+
Object.defineProperty(exports, "__esModule", { value: true });
|
|
17
|
+
__exportStar(require("./use-replay"), exports);
|
|
18
|
+
__exportStar(require("./use-replay-coordinator"), exports);
|
|
19
|
+
__exportStar(require("./use-replay-options"), exports);
|
|
20
|
+
__exportStar(require("./use-replay-reader"), exports);
|
|
21
|
+
__exportStar(require("./use-replay-writer"), exports);
|
|
22
|
+
__exportStar(require("./with-replay"), exports);
|
|
@@ -0,0 +1,10 @@
|
|
|
1
|
+
import { dependency } from '../use-hash';
|
|
2
|
+
export declare function useReplayCoordinator(): {
|
|
3
|
+
timestamp: () => number;
|
|
4
|
+
stop: () => number;
|
|
5
|
+
tryContinue: () => void;
|
|
6
|
+
subscribe: (dependencies: dependency[]) => import("rxjs").Observable<{
|
|
7
|
+
timestamp: number;
|
|
8
|
+
}>;
|
|
9
|
+
};
|
|
10
|
+
//# sourceMappingURL=use-replay-coordinator.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"use-replay-coordinator.d.ts","sourceRoot":"","sources":["../../src/replay/use-replay-coordinator.ts"],"names":[],"mappings":"AAEA,OAAO,EAAE,UAAU,EAAE,MAAM,eAAe,CAAC;AAO3C,wBAAgB,oBAAoB;;;;8BAUC,UAAU,EAAE;mBAFW,MAAM;;EAsFjE"}
|
|
@@ -0,0 +1,119 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
var __awaiter = (this && this.__awaiter) || function (thisArg, _arguments, P, generator) {
|
|
3
|
+
function adopt(value) { return value instanceof P ? value : new P(function (resolve) { resolve(value); }); }
|
|
4
|
+
return new (P || (P = Promise))(function (resolve, reject) {
|
|
5
|
+
function fulfilled(value) { try { step(generator.next(value)); } catch (e) { reject(e); } }
|
|
6
|
+
function rejected(value) { try { step(generator["throw"](value)); } catch (e) { reject(e); } }
|
|
7
|
+
function step(result) { result.done ? resolve(result.value) : adopt(result.value).then(fulfilled, rejected); }
|
|
8
|
+
step((generator = generator.apply(thisArg, _arguments || [])).next());
|
|
9
|
+
});
|
|
10
|
+
};
|
|
11
|
+
Object.defineProperty(exports, "__esModule", { value: true });
|
|
12
|
+
exports.useReplayCoordinator = void 0;
|
|
13
|
+
const rxjs_1 = require("rxjs");
|
|
14
|
+
const use_memo_1 = require("../use-memo");
|
|
15
|
+
const __1 = require("..");
|
|
16
|
+
const use_replay_options_1 = require("./use-replay-options");
|
|
17
|
+
const use_replay_reader_1 = require("./use-replay-reader");
|
|
18
|
+
function useReplayCoordinator() {
|
|
19
|
+
const options = (0, use_replay_options_1.useReplayOptions)();
|
|
20
|
+
return (0, use_memo_1.useMemo)(() => {
|
|
21
|
+
let timestamp = options.from;
|
|
22
|
+
let stopAcquire = 1;
|
|
23
|
+
let sequence = 0;
|
|
24
|
+
const subscriptions = Array.of();
|
|
25
|
+
const stream$ = new rxjs_1.Subject();
|
|
26
|
+
const subscribe = (dependencies) => {
|
|
27
|
+
const cursor = useSampleCursor(dependencies);
|
|
28
|
+
if (!subscriptions.includes(cursor)) {
|
|
29
|
+
subscriptions.push(cursor);
|
|
30
|
+
}
|
|
31
|
+
return (0, rxjs_1.defer)(() => {
|
|
32
|
+
tryContinue();
|
|
33
|
+
return stream$.pipe((0, rxjs_1.filter)(([cur]) => cur === cursor), (0, rxjs_1.map)(([, it]) => it));
|
|
34
|
+
});
|
|
35
|
+
};
|
|
36
|
+
const current = () => __awaiter(this, void 0, void 0, function* () {
|
|
37
|
+
let next;
|
|
38
|
+
for (const cursor of subscriptions) {
|
|
39
|
+
if (cursor.size() == 0 && !cursor.completed) {
|
|
40
|
+
yield cursor.fetchNextPage(timestamp, options.to + 1);
|
|
41
|
+
}
|
|
42
|
+
if (cursor.peek()) {
|
|
43
|
+
if (!next || next.peek().timestamp > cursor.peek().timestamp) {
|
|
44
|
+
next = cursor;
|
|
45
|
+
}
|
|
46
|
+
}
|
|
47
|
+
}
|
|
48
|
+
return next;
|
|
49
|
+
});
|
|
50
|
+
const processNext = () => __awaiter(this, void 0, void 0, function* () {
|
|
51
|
+
const cursor = yield current();
|
|
52
|
+
if (!cursor || !cursor.peek()) {
|
|
53
|
+
stream$.complete();
|
|
54
|
+
return false;
|
|
55
|
+
}
|
|
56
|
+
const sample = cursor.dequeue();
|
|
57
|
+
timestamp = sample.timestamp;
|
|
58
|
+
sequence++;
|
|
59
|
+
stream$.next([cursor, sample]);
|
|
60
|
+
return true;
|
|
61
|
+
});
|
|
62
|
+
const next = () => __awaiter(this, void 0, void 0, function* () {
|
|
63
|
+
if (yield processNext()) {
|
|
64
|
+
if (stopAcquire === 0) {
|
|
65
|
+
setImmediate(next);
|
|
66
|
+
}
|
|
67
|
+
}
|
|
68
|
+
});
|
|
69
|
+
const stop = () => stopAcquire++;
|
|
70
|
+
const tryContinue = () => {
|
|
71
|
+
if (stopAcquire == 0) {
|
|
72
|
+
return;
|
|
73
|
+
}
|
|
74
|
+
stopAcquire = Math.max(0, stopAcquire - 1);
|
|
75
|
+
if (stopAcquire != 0) {
|
|
76
|
+
return;
|
|
77
|
+
}
|
|
78
|
+
next();
|
|
79
|
+
};
|
|
80
|
+
return {
|
|
81
|
+
timestamp: () => timestamp,
|
|
82
|
+
stop,
|
|
83
|
+
tryContinue,
|
|
84
|
+
subscribe
|
|
85
|
+
};
|
|
86
|
+
}, [useReplayCoordinator.name]);
|
|
87
|
+
}
|
|
88
|
+
exports.useReplayCoordinator = useReplayCoordinator;
|
|
89
|
+
function useSampleCursor(dependencies) {
|
|
90
|
+
return (0, use_memo_1.useMemo)(() => {
|
|
91
|
+
const read = (0, use_replay_reader_1.useReplayReader)(dependencies);
|
|
92
|
+
let page = new Array();
|
|
93
|
+
let index = 0;
|
|
94
|
+
let completed = false;
|
|
95
|
+
const size = () => page.length - index;
|
|
96
|
+
const peek = () => page[index];
|
|
97
|
+
const dequeue = () => page[index++];
|
|
98
|
+
const fetchNextPage = (from, to) => __awaiter(this, void 0, void 0, function* () {
|
|
99
|
+
if (completed) {
|
|
100
|
+
return;
|
|
101
|
+
}
|
|
102
|
+
index = 0;
|
|
103
|
+
page = yield read({
|
|
104
|
+
where: {
|
|
105
|
+
timestamp: (0, __1.between)(from, to)
|
|
106
|
+
},
|
|
107
|
+
limit: 10000
|
|
108
|
+
});
|
|
109
|
+
completed = page.length == 0;
|
|
110
|
+
});
|
|
111
|
+
return {
|
|
112
|
+
size,
|
|
113
|
+
peek,
|
|
114
|
+
dequeue,
|
|
115
|
+
fetchNextPage,
|
|
116
|
+
completed
|
|
117
|
+
};
|
|
118
|
+
}, [useSampleCursor.name, ...dependencies]);
|
|
119
|
+
}
|
|
@@ -0,0 +1,15 @@
|
|
|
1
|
+
import { Dependency } from '../module';
|
|
2
|
+
type ReplayOptions = {
|
|
3
|
+
from: number;
|
|
4
|
+
to: number;
|
|
5
|
+
};
|
|
6
|
+
/**
|
|
7
|
+
*
|
|
8
|
+
*/
|
|
9
|
+
export declare function replayOptions(options: ReplayOptions): Dependency;
|
|
10
|
+
/**
|
|
11
|
+
* Will return current replay execution options.
|
|
12
|
+
*/
|
|
13
|
+
export declare const useReplayOptions: () => ReplayOptions;
|
|
14
|
+
export {};
|
|
15
|
+
//# sourceMappingURL=use-replay-options.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"use-replay-options.d.ts","sourceRoot":"","sources":["../../src/replay/use-replay-options.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,UAAU,EAAc,MAAM,aAAa,CAAC;AAIrD,KAAK,aAAa,GAAG;IACnB,IAAI,EAAE,MAAM,CAAC;IACb,EAAE,EAAE,MAAM,CAAC;CACZ,CAAC;AAEF;;GAEG;AACH,wBAAgB,aAAa,CAAC,OAAO,EAAE,aAAa,GAAG,UAAU,CAKhE;AAED;;GAEG;AACH,eAAO,MAAM,gBAAgB,qBAAkD,CAAC"}
|
|
@@ -0,0 +1,20 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
Object.defineProperty(exports, "__esModule", { value: true });
|
|
3
|
+
exports.useReplayOptions = exports.replayOptions = void 0;
|
|
4
|
+
const module_1 = require("../module");
|
|
5
|
+
const injectionToken = Symbol('replay-options');
|
|
6
|
+
/**
|
|
7
|
+
*
|
|
8
|
+
*/
|
|
9
|
+
function replayOptions(options) {
|
|
10
|
+
return {
|
|
11
|
+
provide: injectionToken,
|
|
12
|
+
useValue: options
|
|
13
|
+
};
|
|
14
|
+
}
|
|
15
|
+
exports.replayOptions = replayOptions;
|
|
16
|
+
/**
|
|
17
|
+
* Will return current replay execution options.
|
|
18
|
+
*/
|
|
19
|
+
const useReplayOptions = () => (0, module_1.useContext)(injectionToken);
|
|
20
|
+
exports.useReplayOptions = useReplayOptions;
|
|
@@ -0,0 +1,7 @@
|
|
|
1
|
+
import { Query, QueryObject } from '../storage';
|
|
2
|
+
import { dependency } from '../use-hash';
|
|
3
|
+
export declare function useReplayReader<T>(dependencies: dependency[]): (query: Query<QueryObject>) => Promise<{
|
|
4
|
+
timestamp: number;
|
|
5
|
+
payload: T;
|
|
6
|
+
}[]>;
|
|
7
|
+
//# sourceMappingURL=use-replay-reader.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"use-replay-reader.d.ts","sourceRoot":"","sources":["../../src/replay/use-replay-reader.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,KAAK,EAAE,WAAW,EAAE,MAAM,cAAc,CAAC;AAClD,OAAO,EAAE,UAAU,EAAW,MAAM,eAAe,CAAC;AAIpD,wBAAgB,eAAe,CAAC,CAAC,EAAE,YAAY,EAAE,UAAU,EAAE,WAItC,MAAM,WAAW,CAAC;;;KAaxC"}
|