@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.
Files changed (521) hide show
  1. package/dist/as-readonly.d.ts +3 -0
  2. package/dist/as-readonly.d.ts.map +1 -0
  3. package/dist/as-readonly.js +8 -0
  4. package/dist/{domain → asset}/asset.d.ts +6 -1
  5. package/dist/asset/asset.d.ts.map +1 -0
  6. package/dist/{domain → asset}/asset.js +16 -7
  7. package/dist/asset/asset.spec.d.ts +2 -0
  8. package/dist/asset/asset.spec.d.ts.map +1 -0
  9. package/dist/asset/asset.spec.js +54 -0
  10. package/dist/asset/index.d.ts +2 -0
  11. package/dist/asset/index.d.ts.map +1 -0
  12. package/dist/{adapter/paper → asset}/index.js +1 -2
  13. package/dist/cli/build.js +1 -1
  14. package/dist/cli/dev.d.ts.map +1 -1
  15. package/dist/cli/dev.js +15 -11
  16. package/dist/cli/index.js +8 -8
  17. package/dist/cli/internal/workspace.js +1 -1
  18. package/dist/cli/pull.d.ts.map +1 -1
  19. package/dist/cli/pull.js +50 -20
  20. package/dist/cli/{test.d.ts → replay.d.ts} +1 -1
  21. package/dist/cli/replay.d.ts.map +1 -0
  22. package/dist/cli/{test.js → replay.js} +18 -20
  23. package/dist/cli/run.d.ts.map +1 -1
  24. package/dist/cli/run.js +16 -11
  25. package/dist/component/distinct-until-timesamp-changed.d.ts +5 -0
  26. package/dist/component/distinct-until-timesamp-changed.d.ts.map +1 -0
  27. package/dist/component/distinct-until-timesamp-changed.js +9 -0
  28. package/dist/component/error.d.ts +17 -0
  29. package/dist/component/error.d.ts.map +1 -0
  30. package/dist/component/error.js +33 -0
  31. package/dist/component/index.d.ts +8 -0
  32. package/dist/component/index.d.ts.map +1 -0
  33. package/dist/{store → component}/index.js +7 -9
  34. package/dist/{domain → component}/ohlc-operator.d.ts +1 -1
  35. package/dist/component/ohlc-operator.d.ts.map +1 -0
  36. package/dist/{domain → component}/ohlc-operator.js +4 -5
  37. package/dist/component/ohlc-operator.spec.d.ts +2 -0
  38. package/dist/component/ohlc-operator.spec.d.ts.map +1 -0
  39. package/dist/component/ohlc-operator.spec.js +110 -0
  40. package/dist/component/ohlc.d.ts.map +1 -0
  41. package/dist/component/ohlc.spec.d.ts +2 -0
  42. package/dist/component/ohlc.spec.d.ts.map +1 -0
  43. package/dist/component/ohlc.spec.js +25 -0
  44. package/dist/component/timeframe.d.ts.map +1 -0
  45. package/dist/core.d.ts +3 -0
  46. package/dist/core.d.ts.map +1 -0
  47. package/dist/core.js +15 -0
  48. package/dist/defined.d.ts +3 -0
  49. package/dist/defined.d.ts.map +1 -0
  50. package/dist/defined.js +8 -0
  51. package/dist/exclude.d.ts +3 -0
  52. package/dist/exclude.d.ts.map +1 -0
  53. package/dist/exclude.js +8 -0
  54. package/dist/index.d.ts +25 -27
  55. package/dist/index.d.ts.map +1 -1
  56. package/dist/index.js +25 -66
  57. package/dist/{domain → instrument/commission}/commission.d.ts +1 -1
  58. package/dist/instrument/commission/commission.d.ts.map +1 -0
  59. package/dist/{domain → instrument/commission}/commission.js +2 -2
  60. package/dist/instrument/commission/commission.spec.d.ts +2 -0
  61. package/dist/instrument/commission/commission.spec.d.ts.map +1 -0
  62. package/dist/instrument/commission/commission.spec.js +30 -0
  63. package/dist/instrument/index.d.ts +3 -0
  64. package/dist/instrument/index.d.ts.map +1 -0
  65. package/dist/{adapter → instrument}/index.js +2 -4
  66. package/dist/{domain → instrument}/instrument.d.ts +4 -4
  67. package/dist/instrument/instrument.d.ts.map +1 -0
  68. package/dist/{domain → instrument}/instrument.js +8 -5
  69. package/dist/instrument/instrument.spec.d.ts +2 -0
  70. package/dist/instrument/instrument.spec.d.ts.map +1 -0
  71. package/dist/instrument/instrument.spec.js +51 -0
  72. package/dist/make-test-module.d.ts +13 -0
  73. package/dist/make-test-module.d.ts.map +1 -0
  74. package/dist/make-test-module.js +46 -0
  75. package/dist/module.d.ts +57 -0
  76. package/dist/module.d.ts.map +1 -0
  77. package/dist/module.js +136 -0
  78. package/dist/module.spec.d.ts +2 -0
  79. package/dist/module.spec.d.ts.map +1 -0
  80. package/dist/module.spec.js +86 -0
  81. package/dist/not-found.d.ts +2 -0
  82. package/dist/not-found.d.ts.map +1 -0
  83. package/dist/{domain/component.js → not-found.js} +2 -0
  84. package/dist/replay/index.d.ts +7 -0
  85. package/dist/replay/index.d.ts.map +1 -0
  86. package/dist/replay/index.js +22 -0
  87. package/dist/replay/use-replay-coordinator.d.ts +10 -0
  88. package/dist/replay/use-replay-coordinator.d.ts.map +1 -0
  89. package/dist/replay/use-replay-coordinator.js +119 -0
  90. package/dist/replay/use-replay-options.d.ts +15 -0
  91. package/dist/replay/use-replay-options.d.ts.map +1 -0
  92. package/dist/replay/use-replay-options.js +20 -0
  93. package/dist/replay/use-replay-reader.d.ts +7 -0
  94. package/dist/replay/use-replay-reader.d.ts.map +1 -0
  95. package/dist/replay/use-replay-reader.js +32 -0
  96. package/dist/replay/use-replay-reader.spec.d.ts +2 -0
  97. package/dist/replay/use-replay-reader.spec.d.ts.map +1 -0
  98. package/dist/replay/use-replay-reader.spec.js +58 -0
  99. package/dist/replay/use-replay-storage.d.ts +10 -0
  100. package/dist/replay/use-replay-storage.d.ts.map +1 -0
  101. package/dist/replay/use-replay-storage.js +10 -0
  102. package/dist/replay/use-replay-writer.d.ts +6 -0
  103. package/dist/replay/use-replay-writer.d.ts.map +1 -0
  104. package/dist/replay/use-replay-writer.js +14 -0
  105. package/dist/replay/use-replay-writer.spec.d.ts +2 -0
  106. package/dist/replay/use-replay-writer.spec.d.ts.map +1 -0
  107. package/dist/replay/use-replay-writer.spec.js +53 -0
  108. package/dist/replay/use-replay.d.ts +10 -0
  109. package/dist/replay/use-replay.d.ts.map +1 -0
  110. package/dist/replay/use-replay.js +32 -0
  111. package/dist/replay/use-replay.spec.d.ts +2 -0
  112. package/dist/replay/use-replay.spec.d.ts.map +1 -0
  113. package/dist/replay/use-replay.spec.js +106 -0
  114. package/dist/replay/with-replay.d.ts +4 -0
  115. package/dist/replay/with-replay.d.ts.map +1 -0
  116. package/dist/replay/with-replay.js +8 -0
  117. package/dist/session/index.d.ts +4 -0
  118. package/dist/session/index.d.ts.map +1 -0
  119. package/dist/session/index.js +19 -0
  120. package/dist/session/use-session-object.d.ts +18 -0
  121. package/dist/session/use-session-object.d.ts.map +1 -0
  122. package/dist/session/use-session-object.js +13 -0
  123. package/dist/session/use-session-storage.d.ts +2 -0
  124. package/dist/session/use-session-storage.d.ts.map +1 -0
  125. package/dist/session/use-session-storage.js +10 -0
  126. package/dist/session/use-session.d.ts +4 -0
  127. package/dist/session/use-session.d.ts.map +1 -0
  128. package/dist/session/use-session.js +7 -0
  129. package/dist/shared/datetime.d.ts +1 -1
  130. package/dist/shared/datetime.d.ts.map +1 -1
  131. package/dist/shared/decimals.d.ts.map +1 -1
  132. package/dist/shared/decimals.js +5 -0
  133. package/dist/shared/decimals.spec.d.ts +2 -0
  134. package/dist/shared/decimals.spec.d.ts.map +1 -0
  135. package/dist/shared/decimals.spec.js +28 -0
  136. package/dist/shared/index.d.ts +3 -7
  137. package/dist/shared/index.d.ts.map +1 -1
  138. package/dist/shared/index.js +3 -7
  139. package/dist/simulator/index.d.ts +2 -0
  140. package/dist/simulator/index.d.ts.map +1 -0
  141. package/dist/{adapter/backtester → simulator}/index.js +1 -2
  142. package/dist/simulator/use-simulator.d.ts +2 -0
  143. package/dist/simulator/use-simulator.d.ts.map +1 -0
  144. package/dist/simulator/use-simulator.js +9 -0
  145. package/dist/simulator/use-simulator.spec.d.ts +2 -0
  146. package/dist/simulator/use-simulator.spec.d.ts.map +1 -0
  147. package/dist/simulator/use-simulator.spec.js +49 -0
  148. package/dist/storage/in-memory/in-memory-storage.d.ts +9 -0
  149. package/dist/storage/in-memory/in-memory-storage.d.ts.map +1 -0
  150. package/dist/storage/in-memory/in-memory-storage.factory.d.ts +6 -0
  151. package/dist/storage/in-memory/in-memory-storage.factory.d.ts.map +1 -0
  152. package/dist/storage/in-memory/in-memory-storage.factory.js +23 -0
  153. package/dist/storage/in-memory/in-memory-storage.js +72 -0
  154. package/dist/storage/in-memory/in-memory-storage.spec.d.ts +2 -0
  155. package/dist/storage/in-memory/in-memory-storage.spec.d.ts.map +1 -0
  156. package/dist/storage/in-memory/in-memory-storage.spec.js +167 -0
  157. package/dist/storage/in-memory/index.d.ts +3 -0
  158. package/dist/storage/in-memory/index.d.ts.map +1 -0
  159. package/dist/storage/in-memory/index.js +18 -0
  160. package/dist/storage/index.d.ts +3 -3
  161. package/dist/storage/index.d.ts.map +1 -1
  162. package/dist/storage/index.js +3 -3
  163. package/dist/storage/storage.d.ts +51 -61
  164. package/dist/storage/storage.d.ts.map +1 -1
  165. package/dist/storage/storage.js +20 -85
  166. package/dist/storage/use-cache.d.ts +4 -0
  167. package/dist/storage/use-cache.d.ts.map +1 -0
  168. package/dist/storage/use-cache.js +34 -0
  169. package/dist/storage/use-cache.spec.d.ts +2 -0
  170. package/dist/storage/use-cache.spec.d.ts.map +1 -0
  171. package/dist/storage/use-cache.spec.js +36 -0
  172. package/dist/storage/use-storage-factory.d.ts +10 -0
  173. package/dist/storage/use-storage-factory.d.ts.map +1 -0
  174. package/dist/storage/use-storage-factory.js +14 -0
  175. package/dist/storage/use-storage.d.ts +3 -0
  176. package/dist/storage/use-storage.d.ts.map +1 -0
  177. package/dist/storage/use-storage.js +11 -0
  178. package/dist/strat.d.ts +7 -0
  179. package/dist/strat.d.ts.map +1 -0
  180. package/dist/strat.js +7 -0
  181. package/dist/use-execution-mode.d.ts +29 -0
  182. package/dist/use-execution-mode.d.ts.map +1 -0
  183. package/dist/use-execution-mode.js +37 -0
  184. package/dist/use-hash.d.ts +5 -0
  185. package/dist/use-hash.d.ts.map +1 -0
  186. package/dist/use-hash.js +7 -0
  187. package/dist/use-hash.spec.d.ts +2 -0
  188. package/dist/use-hash.spec.d.ts.map +1 -0
  189. package/dist/use-hash.spec.js +16 -0
  190. package/dist/use-lock.d.ts +9 -0
  191. package/dist/use-lock.d.ts.map +1 -0
  192. package/dist/use-lock.js +40 -0
  193. package/dist/use-logger.d.ts +10 -0
  194. package/dist/use-logger.d.ts.map +1 -0
  195. package/dist/use-logger.js +37 -0
  196. package/dist/use-memo.d.ts +21 -0
  197. package/dist/use-memo.d.ts.map +1 -0
  198. package/dist/use-memo.js +35 -0
  199. package/dist/use-memo.spec.d.ts +2 -0
  200. package/dist/use-memo.spec.d.ts.map +1 -0
  201. package/dist/use-memo.spec.js +35 -0
  202. package/dist/use-request.d.ts +16 -0
  203. package/dist/use-request.d.ts.map +1 -0
  204. package/dist/use-request.js +27 -0
  205. package/dist/use-socket.d.ts +6 -0
  206. package/dist/use-socket.d.ts.map +1 -0
  207. package/dist/use-socket.js +52 -0
  208. package/dist/use-state.d.ts +4 -0
  209. package/dist/use-state.d.ts.map +1 -0
  210. package/dist/use-state.js +24 -0
  211. package/dist/use-state.spec.d.ts +2 -0
  212. package/dist/use-state.spec.d.ts.map +1 -0
  213. package/dist/use-state.spec.js +36 -0
  214. package/dist/use-timestamp.d.ts +2 -0
  215. package/dist/use-timestamp.d.ts.map +1 -0
  216. package/dist/use-timestamp.js +13 -0
  217. package/dist/use.d.ts +5 -0
  218. package/dist/use.d.ts.map +1 -0
  219. package/dist/use.js +20 -0
  220. package/dist/use.spec.d.ts +2 -0
  221. package/dist/use.spec.d.ts.map +1 -0
  222. package/dist/use.spec.js +47 -0
  223. package/jest.config.ts +23 -2
  224. package/package.json +14 -11
  225. package/src/as-readonly.ts +5 -0
  226. package/src/{domain → asset}/asset.spec.ts +4 -4
  227. package/src/{domain → asset}/asset.ts +17 -6
  228. package/src/asset/index.ts +1 -0
  229. package/src/cli/build.ts +1 -1
  230. package/src/cli/dev.ts +18 -13
  231. package/src/cli/index.ts +7 -7
  232. package/src/cli/internal/workspace.ts +1 -1
  233. package/src/cli/pull.ts +22 -10
  234. package/src/cli/replay.ts +31 -0
  235. package/src/cli/run.ts +17 -13
  236. package/src/component/distinct-until-timesamp-changed.ts +11 -0
  237. package/src/component/error.ts +32 -0
  238. package/src/component/index.ts +7 -0
  239. package/src/{domain → component}/ohlc-operator.spec.ts +5 -6
  240. package/src/{domain → component}/ohlc-operator.ts +2 -3
  241. package/src/{domain → component}/ohlc.spec.ts +2 -2
  242. package/src/{domain → component}/ohlc.ts +2 -2
  243. package/src/core.ts +14 -0
  244. package/src/defined.ts +6 -0
  245. package/src/exclude.ts +9 -0
  246. package/src/index.ts +27 -80
  247. package/src/{domain → instrument/commission}/commission.spec.ts +4 -3
  248. package/src/{domain → instrument/commission}/commission.ts +1 -1
  249. package/src/instrument/index.ts +2 -0
  250. package/src/{domain → instrument}/instrument.spec.ts +11 -6
  251. package/src/{domain → instrument}/instrument.ts +12 -8
  252. package/src/make-test-module.ts +46 -0
  253. package/src/module.spec.ts +74 -0
  254. package/src/module.ts +156 -0
  255. package/src/not-found.ts +1 -0
  256. package/src/replay/index.ts +6 -0
  257. package/src/replay/use-replay-coordinator.ts +142 -0
  258. package/src/replay/use-replay-options.ts +23 -0
  259. package/src/replay/use-replay-reader.spec.ts +64 -0
  260. package/src/replay/use-replay-reader.ts +23 -0
  261. package/src/replay/use-replay-storage.ts +8 -0
  262. package/src/replay/use-replay-writer.spec.ts +56 -0
  263. package/src/replay/use-replay-writer.ts +17 -0
  264. package/src/replay/use-replay.spec.ts +132 -0
  265. package/src/replay/use-replay.ts +34 -0
  266. package/src/replay/with-replay.ts +10 -0
  267. package/src/session/index.ts +3 -0
  268. package/src/session/use-session-object.ts +26 -0
  269. package/src/session/use-session-storage.ts +9 -0
  270. package/src/session/use-session.ts +5 -0
  271. package/src/shared/decimals.spec.ts +1 -1
  272. package/src/shared/decimals.ts +5 -0
  273. package/src/shared/index.ts +3 -7
  274. package/src/simulator/index.ts +1 -0
  275. package/src/simulator/use-simulator.spec.ts +54 -0
  276. package/src/simulator/use-simulator.ts +7 -0
  277. package/src/storage/in-memory/in-memory-storage.factory.ts +16 -0
  278. package/src/storage/in-memory/in-memory-storage.spec.ts +193 -0
  279. package/src/storage/in-memory/in-memory-storage.ts +80 -0
  280. package/src/storage/in-memory/index.ts +2 -0
  281. package/src/storage/index.ts +3 -3
  282. package/src/storage/storage.ts +63 -119
  283. package/src/storage/use-cache.spec.ts +31 -0
  284. package/src/storage/use-cache.ts +50 -0
  285. package/src/storage/use-storage-factory.ts +17 -0
  286. package/src/storage/use-storage.ts +11 -0
  287. package/src/strat.ts +7 -0
  288. package/src/use-execution-mode.ts +41 -0
  289. package/src/use-hash.spec.ts +16 -0
  290. package/src/use-hash.ts +5 -0
  291. package/src/use-lock.ts +52 -0
  292. package/src/use-logger.ts +47 -0
  293. package/src/use-memo.spec.ts +30 -0
  294. package/src/use-memo.ts +35 -0
  295. package/src/use-request.ts +47 -0
  296. package/src/use-socket.ts +59 -0
  297. package/src/use-state.spec.ts +31 -0
  298. package/src/use-state.ts +30 -0
  299. package/src/use-timestamp.ts +12 -0
  300. package/src/use.spec.ts +46 -0
  301. package/src/use.ts +33 -0
  302. package/tsconfig.json +7 -4
  303. package/dist/adapter/adapter-aggregate.d.ts +0 -57
  304. package/dist/adapter/adapter-aggregate.d.ts.map +0 -1
  305. package/dist/adapter/adapter-aggregate.js +0 -157
  306. package/dist/adapter/adapter.d.ts +0 -54
  307. package/dist/adapter/adapter.d.ts.map +0 -1
  308. package/dist/adapter/adapter.js +0 -20
  309. package/dist/adapter/backtester/backtester-adapter.d.ts +0 -30
  310. package/dist/adapter/backtester/backtester-adapter.d.ts.map +0 -1
  311. package/dist/adapter/backtester/backtester-adapter.js +0 -67
  312. package/dist/adapter/backtester/backtester-cursor.d.ts +0 -16
  313. package/dist/adapter/backtester/backtester-cursor.d.ts.map +0 -1
  314. package/dist/adapter/backtester/backtester-cursor.js +0 -52
  315. package/dist/adapter/backtester/backtester-streamer.d.ts +0 -50
  316. package/dist/adapter/backtester/backtester-streamer.d.ts.map +0 -1
  317. package/dist/adapter/backtester/backtester-streamer.js +0 -119
  318. package/dist/adapter/backtester/error.d.ts +0 -3
  319. package/dist/adapter/backtester/error.d.ts.map +0 -1
  320. package/dist/adapter/backtester/error.js +0 -11
  321. package/dist/adapter/backtester/index.d.ts +0 -3
  322. package/dist/adapter/backtester/index.d.ts.map +0 -1
  323. package/dist/adapter/error.d.ts +0 -4
  324. package/dist/adapter/error.d.ts.map +0 -1
  325. package/dist/adapter/error.js +0 -15
  326. package/dist/adapter/index.d.ts +0 -5
  327. package/dist/adapter/index.d.ts.map +0 -1
  328. package/dist/adapter/paper/engine/paper-engine.d.ts +0 -12
  329. package/dist/adapter/paper/engine/paper-engine.d.ts.map +0 -1
  330. package/dist/adapter/paper/engine/paper-engine.js +0 -109
  331. package/dist/adapter/paper/index.d.ts +0 -3
  332. package/dist/adapter/paper/index.d.ts.map +0 -1
  333. package/dist/adapter/paper/paper-adapter.d.ts +0 -30
  334. package/dist/adapter/paper/paper-adapter.d.ts.map +0 -1
  335. package/dist/adapter/paper/paper-adapter.js +0 -87
  336. package/dist/cli/error.d.ts +0 -2
  337. package/dist/cli/error.d.ts.map +0 -1
  338. package/dist/cli/error.js +0 -7
  339. package/dist/cli/test.d.ts.map +0 -1
  340. package/dist/domain/asset.d.ts.map +0 -1
  341. package/dist/domain/balance-operator.d.ts +0 -7
  342. package/dist/domain/balance-operator.d.ts.map +0 -1
  343. package/dist/domain/balance-operator.js +0 -9
  344. package/dist/domain/balance.d.ts +0 -47
  345. package/dist/domain/balance.d.ts.map +0 -1
  346. package/dist/domain/balance.js +0 -97
  347. package/dist/domain/commission.d.ts.map +0 -1
  348. package/dist/domain/component.d.ts +0 -6
  349. package/dist/domain/component.d.ts.map +0 -1
  350. package/dist/domain/error.d.ts +0 -7
  351. package/dist/domain/error.d.ts.map +0 -1
  352. package/dist/domain/error.js +0 -23
  353. package/dist/domain/index.d.ts +0 -22
  354. package/dist/domain/index.d.ts.map +0 -1
  355. package/dist/domain/index.js +0 -37
  356. package/dist/domain/instrument-operator.d.ts +0 -7
  357. package/dist/domain/instrument-operator.d.ts.map +0 -1
  358. package/dist/domain/instrument-operator.js +0 -13
  359. package/dist/domain/instrument.d.ts.map +0 -1
  360. package/dist/domain/ohlc-operator.d.ts.map +0 -1
  361. package/dist/domain/ohlc.d.ts.map +0 -1
  362. package/dist/domain/order-operator.d.ts +0 -8
  363. package/dist/domain/order-operator.d.ts.map +0 -1
  364. package/dist/domain/order-operator.js +0 -16
  365. package/dist/domain/order.d.ts +0 -24
  366. package/dist/domain/order.d.ts.map +0 -1
  367. package/dist/domain/order.js +0 -49
  368. package/dist/domain/orderbook-operator.d.ts +0 -7
  369. package/dist/domain/orderbook-operator.d.ts.map +0 -1
  370. package/dist/domain/orderbook-operator.js +0 -9
  371. package/dist/domain/orderbook.d.ts +0 -30
  372. package/dist/domain/orderbook.d.ts.map +0 -1
  373. package/dist/domain/orderbook.js +0 -20
  374. package/dist/domain/position-operator.d.ts +0 -13
  375. package/dist/domain/position-operator.d.ts.map +0 -1
  376. package/dist/domain/position-operator.js +0 -45
  377. package/dist/domain/position.d.ts +0 -18
  378. package/dist/domain/position.d.ts.map +0 -1
  379. package/dist/domain/position.js +0 -23
  380. package/dist/domain/session-builder.d.ts +0 -54
  381. package/dist/domain/session-builder.d.ts.map +0 -1
  382. package/dist/domain/session-builder.js +0 -106
  383. package/dist/domain/session.d.ts +0 -77
  384. package/dist/domain/session.d.ts.map +0 -1
  385. package/dist/domain/session.js +0 -162
  386. package/dist/domain/timeframe.d.ts.map +0 -1
  387. package/dist/domain/trade-operator.d.ts +0 -7
  388. package/dist/domain/trade-operator.d.ts.map +0 -1
  389. package/dist/domain/trade-operator.js +0 -9
  390. package/dist/domain/trade.d.ts +0 -16
  391. package/dist/domain/trade.d.ts.map +0 -1
  392. package/dist/domain/trade.js +0 -17
  393. package/dist/shared/collections.d.ts +0 -29
  394. package/dist/shared/collections.d.ts.map +0 -1
  395. package/dist/shared/collections.js +0 -123
  396. package/dist/shared/logger.d.ts +0 -8
  397. package/dist/shared/logger.d.ts.map +0 -1
  398. package/dist/shared/logger.js +0 -33
  399. package/dist/shared/pipe.d.ts +0 -5
  400. package/dist/shared/pipe.d.ts.map +0 -1
  401. package/dist/shared/pipe.js +0 -8
  402. package/dist/shared/policy.d.ts +0 -2
  403. package/dist/shared/policy.d.ts.map +0 -1
  404. package/dist/shared/policy.js +0 -8
  405. package/dist/storage/cache.d.ts +0 -10
  406. package/dist/storage/cache.d.ts.map +0 -1
  407. package/dist/storage/cache.js +0 -43
  408. package/dist/storage/feed.d.ts +0 -38
  409. package/dist/storage/feed.d.ts.map +0 -1
  410. package/dist/storage/feed.js +0 -108
  411. package/dist/storage/measurement.d.ts +0 -34
  412. package/dist/storage/measurement.d.ts.map +0 -1
  413. package/dist/storage/measurement.js +0 -59
  414. package/dist/store/error.d.ts +0 -9
  415. package/dist/store/error.d.ts.map +0 -1
  416. package/dist/store/error.js +0 -31
  417. package/dist/store/index.d.ts +0 -10
  418. package/dist/store/index.d.ts.map +0 -1
  419. package/dist/store/store-balance-event.d.ts +0 -46
  420. package/dist/store/store-balance-event.d.ts.map +0 -1
  421. package/dist/store/store-balance-event.js +0 -134
  422. package/dist/store/store-event.d.ts +0 -7
  423. package/dist/store/store-event.d.ts.map +0 -1
  424. package/dist/store/store-event.js +0 -2
  425. package/dist/store/store-instrument-event.d.ts +0 -22
  426. package/dist/store/store-instrument-event.d.ts.map +0 -1
  427. package/dist/store/store-instrument-event.js +0 -60
  428. package/dist/store/store-order-event.d.ts +0 -64
  429. package/dist/store/store-order-event.d.ts.map +0 -1
  430. package/dist/store/store-order-event.js +0 -185
  431. package/dist/store/store-orderbook-event.d.ts +0 -13
  432. package/dist/store/store-orderbook-event.d.ts.map +0 -1
  433. package/dist/store/store-orderbook-event.js +0 -43
  434. package/dist/store/store-position-event.d.ts +0 -22
  435. package/dist/store/store-position-event.d.ts.map +0 -1
  436. package/dist/store/store-position-event.js +0 -96
  437. package/dist/store/store-state.d.ts +0 -28
  438. package/dist/store/store-state.d.ts.map +0 -1
  439. package/dist/store/store-state.js +0 -29
  440. package/dist/store/store-trade-event.d.ts +0 -17
  441. package/dist/store/store-trade-event.d.ts.map +0 -1
  442. package/dist/store/store-trade-event.js +0 -34
  443. package/dist/store/store.d.ts +0 -15
  444. package/dist/store/store.d.ts.map +0 -1
  445. package/dist/store/store.js +0 -32
  446. package/src/adapter/adapter-aggregate.ts +0 -171
  447. package/src/adapter/adapter.ts +0 -83
  448. package/src/adapter/backtester/backtester-adapter.ts +0 -96
  449. package/src/adapter/backtester/backtester-cursor.spec.ts +0 -44
  450. package/src/adapter/backtester/backtester-cursor.ts +0 -47
  451. package/src/adapter/backtester/backtester-streamer.spec.ts +0 -60
  452. package/src/adapter/backtester/backtester-streamer.ts +0 -155
  453. package/src/adapter/backtester/error.ts +0 -7
  454. package/src/adapter/backtester/index.ts +0 -2
  455. package/src/adapter/error.ts +0 -13
  456. package/src/adapter/index.ts +0 -4
  457. package/src/adapter/paper/engine/paper-engine.spec.ts +0 -116
  458. package/src/adapter/paper/engine/paper-engine.ts +0 -151
  459. package/src/adapter/paper/index.ts +0 -2
  460. package/src/adapter/paper/paper-adapter.ts +0 -111
  461. package/src/cli/error.ts +0 -5
  462. package/src/cli/test.ts +0 -40
  463. package/src/domain/balance-operator.spec.ts +0 -26
  464. package/src/domain/balance-operator.ts +0 -15
  465. package/src/domain/balance.spec.ts +0 -116
  466. package/src/domain/balance.ts +0 -123
  467. package/src/domain/component.ts +0 -6
  468. package/src/domain/error.ts +0 -27
  469. package/src/domain/index.ts +0 -21
  470. package/src/domain/instrument-operator.spec.ts +0 -35
  471. package/src/domain/instrument-operator.ts +0 -25
  472. package/src/domain/order-operator.spec.ts +0 -85
  473. package/src/domain/order-operator.ts +0 -23
  474. package/src/domain/order.spec.ts +0 -43
  475. package/src/domain/order.ts +0 -68
  476. package/src/domain/orderbook-operator.spec.ts +0 -40
  477. package/src/domain/orderbook-operator.ts +0 -15
  478. package/src/domain/orderbook.spec.ts +0 -26
  479. package/src/domain/orderbook.ts +0 -30
  480. package/src/domain/position-operator.spec.ts +0 -64
  481. package/src/domain/position-operator.ts +0 -71
  482. package/src/domain/position.spec.ts +0 -43
  483. package/src/domain/position.ts +0 -31
  484. package/src/domain/session-builder.ts +0 -158
  485. package/src/domain/session.spec.ts +0 -33
  486. package/src/domain/session.ts +0 -256
  487. package/src/domain/trade-operator.spec.ts +0 -35
  488. package/src/domain/trade-operator.ts +0 -15
  489. package/src/domain/trade.spec.ts +0 -21
  490. package/src/domain/trade.ts +0 -20
  491. package/src/shared/collections.spec.ts +0 -34
  492. package/src/shared/collections.ts +0 -154
  493. package/src/shared/logger.ts +0 -39
  494. package/src/shared/pipe.ts +0 -12
  495. package/src/shared/policy.ts +0 -5
  496. package/src/storage/cache.spec.ts +0 -18
  497. package/src/storage/cache.ts +0 -37
  498. package/src/storage/feed.ts +0 -124
  499. package/src/storage/measurement.ts +0 -56
  500. package/src/store/error.ts +0 -36
  501. package/src/store/index.ts +0 -9
  502. package/src/store/store-balance-event.spec.ts +0 -30
  503. package/src/store/store-balance-event.ts +0 -167
  504. package/src/store/store-event.ts +0 -8
  505. package/src/store/store-instrument-event.spec.ts +0 -26
  506. package/src/store/store-instrument-event.ts +0 -83
  507. package/src/store/store-order-event.spec.ts +0 -32
  508. package/src/store/store-order-event.ts +0 -219
  509. package/src/store/store-orderbook-event.spec.ts +0 -39
  510. package/src/store/store-orderbook-event.ts +0 -56
  511. package/src/store/store-position-event.ts +0 -121
  512. package/src/store/store-state.ts +0 -48
  513. package/src/store/store-trade-event.spec.ts +0 -62
  514. package/src/store/store-trade-event.ts +0 -42
  515. package/src/store/store.spec.ts +0 -182
  516. package/src/store/store.ts +0 -37
  517. package/dist/{domain → component}/ohlc.d.ts +0 -0
  518. package/dist/{domain → component}/ohlc.js +0 -0
  519. package/dist/{domain → component}/timeframe.d.ts +0 -0
  520. package/dist/{domain → component}/timeframe.js +1 -1
  521. /package/src/{domain → component}/timeframe.ts +0 -0
@@ -1,167 +0,0 @@
1
- import { AssetSelector, Balance, InstrumentSelector } from '../domain';
2
- import { decimal, timestamp } from '../shared';
3
- import {
4
- assetNotSupportedError,
5
- balanceNotFoundError,
6
- instrumentNotSubscribedError,
7
- orderNotFoundError
8
- } from './error';
9
- import { StoreEvent } from './store-event';
10
- import { State, StateChangeTracker } from './store-state';
11
-
12
- /**
13
- * Updates the free and freezed balance of the given asset.
14
- */
15
- export class BalancePatchEvent implements StoreEvent {
16
- constructor(
17
- readonly asset: AssetSelector,
18
- readonly free: decimal,
19
- readonly freezed: decimal,
20
- readonly timestamp: timestamp
21
- ) {}
22
-
23
- handle(state: State, changes: StateChangeTracker) {
24
- /*
25
- * skip not tradeable assets (for example, you can have an unlisted
26
- * asset in your wallet).
27
- */
28
- const asset = state.universe.asset.get(this.asset.id);
29
- if (!asset) {
30
- return;
31
- }
32
-
33
- const balance = state.balance.tryGetOrSet(this.asset.id, () => new Balance(0, asset));
34
-
35
- balance.timestamp = this.timestamp;
36
- balance.set(this.free, this.freezed);
37
-
38
- state.timestamp = this.timestamp;
39
-
40
- changes.commit(balance);
41
- }
42
- }
43
-
44
- /**
45
- *
46
- */
47
- export class BalanceTransactEvent implements StoreEvent {
48
- constructor(
49
- readonly asset: AssetSelector,
50
- readonly amount: decimal,
51
- readonly timestamp: timestamp
52
- ) {}
53
-
54
- handle(state: State, changes: StateChangeTracker) {
55
- const asset = state.universe.asset.get(this.asset.id);
56
- if (!asset) {
57
- throw assetNotSupportedError(this.asset);
58
- }
59
-
60
- const balance = state.balance.tryGetOrSet(this.asset.id, () => new Balance(0, asset));
61
-
62
- balance.timestamp = this.timestamp;
63
- balance.account(this.amount);
64
-
65
- state.timestamp = this.timestamp;
66
-
67
- changes.commit(balance);
68
- }
69
- }
70
-
71
- /**
72
- *
73
- */
74
- export class BalanceLockOrderEvent implements StoreEvent {
75
- constructor(
76
- readonly orderId: string,
77
- readonly instrument: InstrumentSelector,
78
- readonly timestamp: timestamp
79
- ) {}
80
-
81
- handle(state: State, changes: StateChangeTracker) {
82
- const orders = state.order.get(this.instrument.id);
83
- if (!orders) {
84
- throw instrumentNotSubscribedError(this.instrument);
85
- }
86
-
87
- const order = orders.get(this.orderId);
88
- if (!order) {
89
- throw orderNotFoundError(this.orderId);
90
- }
91
-
92
- const base = state.balance.get(order.instrument.base.id);
93
- if (!base) {
94
- throw balanceNotFoundError(order.instrument.base);
95
- }
96
-
97
- const quote = state.balance.get(order.instrument.quote.id);
98
- if (!quote) {
99
- throw balanceNotFoundError(order.instrument.quote);
100
- }
101
-
102
- const balanceToLock = order.calculateBalanceToLock(base, quote);
103
-
104
- state.timestamp = this.timestamp;
105
-
106
- if (balanceToLock.base?.greaterThan(0)) {
107
- base.timestamp = this.timestamp;
108
- base.lock(this.orderId, balanceToLock.base);
109
-
110
- changes.commit(base);
111
- }
112
-
113
- if (balanceToLock.quote?.greaterThan(0)) {
114
- quote.timestamp = this.timestamp;
115
- quote.lock(this.orderId, balanceToLock.quote);
116
-
117
- changes.commit(quote);
118
- }
119
- }
120
- }
121
-
122
- /**
123
- *
124
- */
125
- export class BalanceUnlockOrderEvent implements StoreEvent {
126
- constructor(
127
- readonly orderId: string,
128
- readonly instrument: InstrumentSelector,
129
- readonly timestamp: timestamp
130
- ) {}
131
-
132
- handle(state: State, changes: StateChangeTracker) {
133
- const orders = state.order.get(this.instrument.id);
134
- if (!orders) {
135
- throw instrumentNotSubscribedError(this.instrument);
136
- }
137
-
138
- const order = orders.get(this.orderId);
139
- if (!order) {
140
- throw orderNotFoundError(this.orderId);
141
- }
142
-
143
- const base = state.balance.get(order.instrument.base.id);
144
- if (!base) {
145
- throw balanceNotFoundError(order.instrument.base);
146
- }
147
-
148
- const quote = state.balance.get(order.instrument.quote.id);
149
- if (!quote) {
150
- throw balanceNotFoundError(order.instrument.quote);
151
- }
152
-
153
- state.timestamp = this.timestamp;
154
-
155
- if (base.tryUnlock(this.orderId)) {
156
- base.timestamp = this.timestamp;
157
-
158
- changes.commit(base);
159
- }
160
-
161
- if (quote.tryUnlock(this.orderId)) {
162
- quote.timestamp = this.timestamp;
163
-
164
- changes.commit(quote);
165
- }
166
- }
167
- }
@@ -1,8 +0,0 @@
1
- import { timestamp } from '../shared';
2
- import { State, StateChangeTracker } from './store-state';
3
-
4
- export interface StoreEvent {
5
- timestamp: timestamp;
6
-
7
- handle(state: State, changes: StateChangeTracker): void;
8
- }
@@ -1,26 +0,0 @@
1
- import { Asset, Commission } from '../domain';
2
- import { d, now } from '../shared';
3
- import { Store } from './store';
4
- import { InstrumentPatchEvent } from './store-instrument-event';
5
-
6
- describe('InstrumentPatchEvent', () => {
7
- test('should patch a store', () => {
8
- const timestamp = now();
9
- const store = new Store();
10
- const base = new Asset('de30', 'cex', 2);
11
- const quote = new Asset('usd', 'cex', 2);
12
-
13
- store.dispatch(
14
- new InstrumentPatchEvent(timestamp, base, quote, new Commission(d.Zero, d.Zero), '')
15
- );
16
-
17
- const { universe } = store.snapshot;
18
- const instrument = universe.instrument.get('cex:de30-usd') ?? fail();
19
-
20
- expect(instrument.base).toEqual(base);
21
- expect(instrument.quote).toEqual(quote);
22
- expect(instrument.timestamp).toEqual(timestamp);
23
- expect(universe.instrument.asReadonlyArray().length).toEqual(1);
24
- expect(universe.asset.asReadonlyArray().length).toEqual(2);
25
- });
26
- });
@@ -1,83 +0,0 @@
1
- import { Asset, Commission, Instrument, InstrumentSelector } from '../domain';
2
- import { timestamp } from '../shared';
3
- import { State, StateChangeTracker } from '.';
4
- import { assetNotSupportedError, instrumentNotSupportedError } from './error';
5
- import { StoreEvent } from './store-event';
6
- import { InnerSet } from './store-state';
7
-
8
- export class InstrumentPatchEvent implements StoreEvent {
9
- constructor(
10
- readonly timestamp: timestamp,
11
- readonly base: Asset,
12
- readonly quote: Asset,
13
- readonly commission: Commission,
14
- readonly raw: string,
15
- readonly leverage?: number
16
- ) {}
17
-
18
- handle(state: State, changes: StateChangeTracker): void {
19
- const selector = new InstrumentSelector(
20
- this.base.name,
21
- this.quote.name,
22
- this.base.adapterName
23
- );
24
-
25
- const instrument = state.universe.instrument.tryGetOrSet(selector.id, () => {
26
- state.universe.asset.tryGetOrSet(
27
- this.base.id,
28
- () => new Asset(this.base.name, this.base.adapterName, 8)
29
- );
30
-
31
- state.universe.asset.tryGetOrSet(
32
- this.quote.id,
33
- () => new Asset(this.quote.name, this.quote.adapterName, 8)
34
- );
35
-
36
- state.order.tryGetOrSet(selector.id, () => new InnerSet(selector.id));
37
-
38
- return new Instrument(0, this.base, this.quote, this.raw, Commission.Zero);
39
- });
40
-
41
- instrument.timestamp = this.timestamp;
42
- instrument.commission = this.commission;
43
-
44
- if (this.leverage) {
45
- instrument.leverage = this.leverage;
46
- }
47
-
48
- changes.commit(instrument);
49
- }
50
- }
51
-
52
- export class InstrumentSubscriptionEvent implements StoreEvent {
53
- constructor(
54
- readonly timestamp: timestamp,
55
- readonly instrument: InstrumentSelector,
56
- readonly subscribed: boolean
57
- ) {}
58
-
59
- handle(state: State, changes: StateChangeTracker): void {
60
- const instrument = state.universe.instrument.get(this.instrument.id);
61
- if (!instrument) {
62
- throw instrumentNotSupportedError(this.instrument);
63
- }
64
-
65
- if (this.subscribed) {
66
- const base = state.universe.asset.get(instrument.base.id);
67
- if (!base) {
68
- throw assetNotSupportedError(instrument.base);
69
- }
70
-
71
- const quote = state.universe.asset.get(instrument.quote.id);
72
- if (!quote) {
73
- throw assetNotSupportedError(instrument.quote);
74
- }
75
-
76
- state.subscription.instrument.upsert(instrument);
77
- state.subscription.asset.upsert(base);
78
- state.subscription.asset.upsert(quote);
79
- }
80
-
81
- changes.commit(instrument);
82
- }
83
- }
@@ -1,32 +0,0 @@
1
- import { Asset, Commission, Instrument, Order } from '../domain';
2
- import { d, now } from '../shared';
3
- import { Store } from '.';
4
- import { OrderLoadEvent } from './store-order-event';
5
-
6
- describe('OrderLoadEvent', () => {
7
- const instrument = new Instrument(
8
- 0,
9
- new Asset('btc', 'binance', 8),
10
- new Asset('usdt', 'binance', 2),
11
- 'binance:btc-usdt',
12
- Commission.Zero
13
- );
14
-
15
- test('should load order to store', () => {
16
- const timestamp = now();
17
- const store = new Store();
18
- const order = new Order(0, '1', instrument, d(1.0), 0);
19
-
20
- order.state = 'PENDING';
21
-
22
- store.snapshot.universe.instrument.upsert(instrument);
23
- store.snapshot.subscription.instrument.upsert(instrument);
24
-
25
- store.dispatch(new OrderLoadEvent(order, timestamp));
26
-
27
- const pendingOrder = store.snapshot.order.get(instrument.id)?.get('1') ?? fail();
28
-
29
- expect(store.snapshot.order.asReadonlyArray().length).toEqual(1);
30
- expect(pendingOrder).toEqual(order);
31
- });
32
- });
@@ -1,219 +0,0 @@
1
- import { InstrumentSelector, Order } from '../domain';
2
- import { decimal, timestamp } from '../shared';
3
- import { orderInvalidStateError, orderNotFoundError } from './error';
4
- import { StoreEvent } from './store-event';
5
- import { InnerSet, State, StateChangeTracker } from './store-state';
6
-
7
- /**
8
- * Patches a store with an existing pending order.
9
- * No store changing events are propagated.
10
- */
11
- export class OrderLoadEvent implements StoreEvent {
12
- constructor(readonly order: Order, readonly timestamp: timestamp) {}
13
-
14
- handle(state: State): void {
15
- this.order.timestamp = this.timestamp;
16
-
17
- const orderByInstrument = state.order.tryGetOrSet(
18
- this.order.instrument.id,
19
- () => new InnerSet<Order>(this.order.instrument.id)
20
- );
21
-
22
- orderByInstrument.upsert(this.order);
23
- }
24
- }
25
-
26
- export class OrderNewEvent implements StoreEvent {
27
- constructor(readonly order: Order, readonly timestamp: timestamp) {}
28
-
29
- handle(state: State, changes: StateChangeTracker): void {
30
- if (this.order.state != 'NEW') {
31
- throw orderInvalidStateError(this.order.state, ['NEW']);
32
- }
33
-
34
- this.order.createdAt = this.timestamp;
35
- this.order.timestamp = this.timestamp;
36
-
37
- const orderByInstrument = state.order.tryGetOrSet(
38
- this.order.instrument.id,
39
- () => new InnerSet<Order>(this.order.instrument.id)
40
- );
41
-
42
- orderByInstrument.upsert(this.order);
43
-
44
- changes.commit(this.order);
45
- }
46
- }
47
-
48
- export class OrderPendingEvent implements StoreEvent {
49
- constructor(
50
- readonly id: string,
51
- readonly instrument: InstrumentSelector,
52
- readonly timestamp: timestamp
53
- ) {}
54
-
55
- handle(state: State, changes: StateChangeTracker): void {
56
- const order = state.order
57
- .tryGetOrSet(this.instrument.id, () => {
58
- throw orderNotFoundError(this.id);
59
- })
60
- .tryGetOrSet(this.id, () => {
61
- throw orderNotFoundError(this.id);
62
- });
63
-
64
- if (order.state != 'NEW') {
65
- throw orderInvalidStateError(order.state, ['NEW']);
66
- }
67
-
68
- order.state = 'PENDING';
69
- order.timestamp = this.timestamp;
70
-
71
- changes.commit(order);
72
- }
73
- }
74
-
75
- export class OrderFilledEvent implements StoreEvent {
76
- constructor(
77
- readonly id: string,
78
- readonly instrument: InstrumentSelector,
79
- readonly averageExecutionRate: decimal,
80
- readonly timestamp: timestamp
81
- ) {}
82
-
83
- handle(state: State, changes: StateChangeTracker): void {
84
- const order = state.order
85
- .tryGetOrSet(this.instrument.id, () => {
86
- throw orderNotFoundError(this.id);
87
- })
88
- .tryGetOrSet(this.id, () => {
89
- throw orderNotFoundError(this.id);
90
- });
91
-
92
- if (order.state != 'PENDING' && order.state != 'CANCELING') {
93
- throw orderInvalidStateError(order.state, ['PENDING', 'CANCELING']);
94
- }
95
-
96
- order.state = 'FILLED';
97
- order.timestamp = this.timestamp;
98
- order.quantityExecuted = order.quantity;
99
- order.averageExecutionRate = this.averageExecutionRate;
100
-
101
- changes.commit(order);
102
- }
103
- }
104
-
105
- export class OrderCancelingEvent implements StoreEvent {
106
- constructor(
107
- readonly id: string,
108
- readonly instrument: InstrumentSelector,
109
- readonly timestamp: timestamp
110
- ) {}
111
-
112
- handle(state: State, changes: StateChangeTracker): void {
113
- const order = state.order
114
- .tryGetOrSet(this.instrument.id, () => {
115
- throw orderNotFoundError(this.id);
116
- })
117
- .tryGetOrSet(this.id, () => {
118
- throw orderNotFoundError(this.id);
119
- });
120
-
121
- if (order.state == 'CANCELING' || order.state == 'CANCELED') {
122
- return;
123
- }
124
-
125
- if (order.state != 'PENDING') {
126
- throw orderInvalidStateError(order.state, ['PENDING']);
127
- }
128
-
129
- order.state = 'CANCELING';
130
- order.timestamp = this.timestamp;
131
-
132
- changes.commit(order);
133
- }
134
- }
135
-
136
- export class OrderCanceledEvent implements StoreEvent {
137
- constructor(
138
- readonly id: string,
139
- readonly instrument: InstrumentSelector,
140
- readonly timestamp: timestamp
141
- ) {}
142
-
143
- handle(state: State, changes: StateChangeTracker): void {
144
- const order = state.order
145
- .tryGetOrSet(this.instrument.id, () => {
146
- throw orderNotFoundError(this.id);
147
- })
148
- .tryGetOrSet(this.id, () => {
149
- throw orderNotFoundError(this.id);
150
- });
151
-
152
- if (order.state == 'CANCELED') {
153
- return;
154
- }
155
-
156
- if (order.state != 'CANCELING') {
157
- throw orderInvalidStateError(order.state, ['CANCELING']);
158
- }
159
-
160
- order.state = 'CANCELED';
161
- order.timestamp = this.timestamp;
162
-
163
- changes.commit(order);
164
- }
165
- }
166
-
167
- export class OrderCancelFailedEvent implements StoreEvent {
168
- constructor(
169
- readonly id: string,
170
- readonly instrument: InstrumentSelector,
171
- readonly timestamp: timestamp
172
- ) {}
173
-
174
- handle(state: State, changes: StateChangeTracker): void {
175
- const order = state.order
176
- .tryGetOrSet(this.instrument.id, () => {
177
- throw orderNotFoundError(this.id);
178
- })
179
- .tryGetOrSet(this.id, () => {
180
- throw orderNotFoundError(this.id);
181
- });
182
-
183
- if (order.state != 'CANCELING') {
184
- return;
185
- }
186
-
187
- order.state = 'PENDING';
188
- order.timestamp = this.timestamp;
189
-
190
- changes.commit(order);
191
- }
192
- }
193
-
194
- export class OrderRejectedEvent implements StoreEvent {
195
- constructor(
196
- readonly id: string,
197
- readonly instrument: InstrumentSelector,
198
- readonly timestamp: timestamp
199
- ) {}
200
-
201
- handle(state: State, changes: StateChangeTracker): void {
202
- const order = state.order
203
- .tryGetOrSet(this.instrument.id, () => {
204
- throw orderNotFoundError(this.id);
205
- })
206
- .tryGetOrSet(this.id, () => {
207
- throw orderNotFoundError(this.id);
208
- });
209
-
210
- if (order.state != 'NEW') {
211
- throw orderInvalidStateError(order.state, ['NEW']);
212
- }
213
-
214
- order.state = 'REJECTED';
215
- order.timestamp = this.timestamp;
216
-
217
- changes.commit(order);
218
- }
219
- }
@@ -1,39 +0,0 @@
1
- import { Asset, Commission, Instrument, Liquidity } from '../domain';
2
- import { d, now } from '../shared';
3
- import { OrderbookPatchEvent } from '.';
4
- import { Store } from './store';
5
-
6
- describe('OrderbookPatchEvent', () => {
7
- const instrument = new Instrument(
8
- 0,
9
- new Asset('btc', 'binance', 8),
10
- new Asset('usdt', 'binance', 2),
11
- 'binance:btc-usdt',
12
- Commission.Zero
13
- );
14
-
15
- let store: Store;
16
-
17
- beforeEach(() => {
18
- store = new Store();
19
- store.snapshot.universe.instrument.upsert(instrument);
20
- store.snapshot.subscription.instrument.upsert(instrument);
21
- });
22
-
23
- test('should set a best bid and ask', () => {
24
- const timestamp = now();
25
-
26
- const ask: Liquidity = { rate: d(2), quantity: d(2), next: undefined };
27
- const bid: Liquidity = { rate: d(1), quantity: d(1), next: undefined };
28
-
29
- store.dispatch(new OrderbookPatchEvent(instrument, ask, bid, timestamp));
30
-
31
- const orderbook = store.snapshot.orderbook.get(instrument.id) ?? fail();
32
-
33
- expect(orderbook.timestamp).toEqual(timestamp);
34
- expect(orderbook.instrument.id).toEqual(orderbook.instrument.id);
35
- expect(orderbook.asks).toEqual(ask);
36
- expect(orderbook.bids).toEqual(bid);
37
- expect(store.snapshot.timestamp).toEqual(timestamp);
38
- });
39
- });
@@ -1,56 +0,0 @@
1
- import { InstrumentSelector, Liquidity, Orderbook } from '../domain';
2
- import { timestamp } from '../shared';
3
- import { instrumentNotSupportedError, liquidationError } from './error';
4
- import { StoreEvent } from './store-event';
5
- import { State, StateChangeTracker } from './store-state';
6
-
7
- export class OrderbookPatchEvent implements StoreEvent {
8
- constructor(
9
- readonly instrument: InstrumentSelector,
10
- readonly ask: Liquidity,
11
- readonly bid: Liquidity,
12
- readonly timestamp: timestamp
13
- ) {}
14
-
15
- handle(state: State, changes: StateChangeTracker): void {
16
- const instrument = state.universe.instrument.get(this.instrument.id);
17
- if (!instrument) {
18
- throw instrumentNotSupportedError(this.instrument);
19
- }
20
-
21
- const orderbook = state.orderbook.tryGetOrSet(
22
- this.instrument.id,
23
- () => new Orderbook(0, instrument, this.ask, this.bid)
24
- );
25
-
26
- state.timestamp = this.timestamp;
27
-
28
- orderbook.timestamp = this.timestamp;
29
- orderbook.asks = this.ask;
30
- orderbook.bids = this.bid;
31
-
32
- const quote = state.balance.get(orderbook.instrument.quote.id);
33
-
34
- if (quote) {
35
- for (const position of Object.values(quote.position)) {
36
- if (position.instrument.id != orderbook.instrument.id) {
37
- continue;
38
- }
39
-
40
- const rate = position.size.greaterThanOrEqualTo(0)
41
- ? orderbook.bids.rate
42
- : orderbook.asks.rate;
43
-
44
- if (rate) {
45
- position.calculateEstimatedUnrealizedPnL(rate);
46
- }
47
- }
48
-
49
- if (quote.total.lessThan(0)) {
50
- throw liquidationError();
51
- }
52
- }
53
-
54
- changes.commit(orderbook);
55
- }
56
- }