@quantform/core 0.7.0-beta.5 → 0.7.0-beta.51

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 (390) hide show
  1. package/jest.config.ts +1 -1
  2. package/{dist → lib}/asset/asset.d.ts +3 -0
  3. package/lib/asset/asset.d.ts.map +1 -0
  4. package/{dist → lib}/asset/asset.js +7 -1
  5. package/{dist → lib}/cli/index.js +9 -6
  6. package/lib/cli/internal/script.d.ts +8 -0
  7. package/lib/cli/internal/script.d.ts.map +1 -0
  8. package/lib/cli/internal/script.js +65 -0
  9. package/lib/cli/live.d.ts +5 -0
  10. package/lib/cli/live.d.ts.map +1 -0
  11. package/lib/cli/live.js +33 -0
  12. package/lib/cli/paper.d.ts +5 -0
  13. package/lib/cli/paper.d.ts.map +1 -0
  14. package/lib/cli/paper.js +33 -0
  15. package/lib/cli/pull.d.ts.map +1 -0
  16. package/lib/cli/pull.js +28 -0
  17. package/lib/cli/replay.d.ts +6 -0
  18. package/lib/cli/replay.d.ts.map +1 -0
  19. package/lib/cli/replay.js +37 -0
  20. package/{dist → lib}/core.js +3 -3
  21. package/lib/index.d.ts +21 -0
  22. package/lib/index.d.ts.map +1 -0
  23. package/{dist → lib}/index.js +6 -13
  24. package/{dist → lib}/instrument/instrument.d.ts +3 -0
  25. package/lib/instrument/instrument.d.ts.map +1 -0
  26. package/{dist → lib}/instrument/instrument.js +7 -1
  27. package/{dist → lib}/make-test-module.d.ts +3 -2
  28. package/lib/make-test-module.d.ts.map +1 -0
  29. package/{dist → lib}/make-test-module.js +11 -2
  30. package/lib/operators.d.ts +5 -0
  31. package/lib/operators.d.ts.map +1 -0
  32. package/lib/operators.js +16 -0
  33. package/lib/replay/index.d.ts +10 -0
  34. package/lib/replay/index.d.ts.map +1 -0
  35. package/{dist → lib}/replay/index.js +7 -4
  36. package/lib/replay/replay-guard.d.ts +10 -0
  37. package/lib/replay/replay-guard.d.ts.map +1 -0
  38. package/lib/replay/replay-guard.js +8 -0
  39. package/lib/replay/replay.d.ts +10 -0
  40. package/lib/replay/replay.d.ts.map +1 -0
  41. package/lib/replay/replay.js +9 -0
  42. package/lib/replay/storage/use-replay-storage-buffer.d.ts +15 -0
  43. package/lib/replay/storage/use-replay-storage-buffer.d.ts.map +1 -0
  44. package/lib/replay/storage/use-replay-storage-buffer.js +57 -0
  45. package/lib/replay/storage/use-replay-storage-cursor.d.ts +30 -0
  46. package/lib/replay/storage/use-replay-storage-cursor.d.ts.map +1 -0
  47. package/lib/replay/storage/use-replay-storage-cursor.js +49 -0
  48. package/lib/replay/storage/use-replay-storage.d.ts +13 -0
  49. package/lib/replay/storage/use-replay-storage.d.ts.map +1 -0
  50. package/lib/replay/storage/use-replay-storage.js +39 -0
  51. package/lib/replay/storage/use-replay-storage.spec.d.ts +2 -0
  52. package/lib/replay/storage/use-replay-storage.spec.d.ts.map +1 -0
  53. package/lib/replay/storage/use-replay-storage.spec.js +74 -0
  54. package/lib/replay/use-replay-lock.d.ts +3 -0
  55. package/lib/replay/use-replay-lock.d.ts.map +1 -0
  56. package/lib/replay/use-replay-lock.js +22 -0
  57. package/lib/replay/use-replay-manager.d.ts +28 -0
  58. package/lib/replay/use-replay-manager.d.ts.map +1 -0
  59. package/lib/replay/use-replay-manager.js +68 -0
  60. package/{dist → lib}/replay/use-replay.d.ts +2 -2
  61. package/lib/replay/use-replay.d.ts.map +1 -0
  62. package/lib/replay/use-replay.js +20 -0
  63. package/lib/replay/use-replay.spec.js +130 -0
  64. package/lib/replay/when-replay-finished.d.ts +2 -0
  65. package/lib/replay/when-replay-finished.d.ts.map +1 -0
  66. package/lib/replay/when-replay-finished.js +15 -0
  67. package/{dist → lib}/session/use-session-storage.js +2 -2
  68. package/lib/session/use-session.d.ts +13 -0
  69. package/lib/session/use-session.d.ts.map +1 -0
  70. package/lib/session/use-session.js +14 -0
  71. package/lib/shared/decimals.d.ts +14 -0
  72. package/lib/shared/decimals.d.ts.map +1 -0
  73. package/lib/shared/decimals.js +18 -0
  74. package/{dist → lib}/simulator/use-simulator.spec.js +12 -18
  75. package/{dist → lib}/storage/index.d.ts +1 -0
  76. package/{dist → lib}/storage/index.d.ts.map +1 -1
  77. package/{dist → lib}/storage/index.js +1 -0
  78. package/lib/storage/use-storage-factory.d.ts +10 -0
  79. package/lib/storage/use-storage-factory.d.ts.map +1 -0
  80. package/lib/storage/use-storage-factory.js +13 -0
  81. package/lib/storage/use-storage.d.ts.map +1 -0
  82. package/{dist → lib}/storage/use-storage.js +2 -2
  83. package/lib/strategy.d.ts +15 -0
  84. package/lib/strategy.d.ts.map +1 -0
  85. package/lib/strategy.js +26 -0
  86. package/lib/strategy.spec.d.ts +2 -0
  87. package/lib/strategy.spec.d.ts.map +1 -0
  88. package/lib/strategy.spec.js +34 -0
  89. package/lib/use-execution-mode.d.ts +20 -0
  90. package/lib/use-execution-mode.d.ts.map +1 -0
  91. package/lib/use-execution-mode.js +33 -0
  92. package/{dist → lib}/use-logger.js +5 -5
  93. package/lib/use-memo.d.ts +8 -0
  94. package/lib/use-memo.d.ts.map +1 -0
  95. package/lib/use-memo.js +19 -0
  96. package/lib/use-socket.d.ts +20 -0
  97. package/lib/use-socket.d.ts.map +1 -0
  98. package/lib/use-socket.js +83 -0
  99. package/{dist → lib}/use-timestamp.js +2 -2
  100. package/lib/when-socket.d.ts +8 -0
  101. package/lib/when-socket.d.ts.map +1 -0
  102. package/{dist/use-socket.js → lib/when-socket.js} +6 -5
  103. package/lib/with-memo.d.ts +5 -0
  104. package/lib/with-memo.d.ts.map +1 -0
  105. package/{dist/use.js → lib/with-memo.js} +5 -5
  106. package/lib/with-memo.spec.d.ts +2 -0
  107. package/lib/with-memo.spec.d.ts.map +1 -0
  108. package/{dist/use.spec.js → lib/with-memo.spec.js} +3 -3
  109. package/{dist/use-request.d.ts → lib/with-request.d.ts} +6 -6
  110. package/lib/with-request.d.ts.map +1 -0
  111. package/lib/with-request.js +68 -0
  112. package/package.json +5 -5
  113. package/src/asset/asset.ts +6 -0
  114. package/src/cli/index.ts +11 -8
  115. package/src/cli/internal/script.ts +70 -0
  116. package/src/cli/live.ts +22 -0
  117. package/src/cli/paper.ts +22 -0
  118. package/src/cli/pull.ts +6 -66
  119. package/src/cli/replay.ts +15 -19
  120. package/src/core.ts +6 -6
  121. package/src/index.ts +6 -13
  122. package/src/instrument/instrument.ts +6 -0
  123. package/src/make-test-module.ts +20 -4
  124. package/src/operators.ts +18 -0
  125. package/src/replay/index.ts +7 -4
  126. package/src/replay/replay-guard.ts +11 -0
  127. package/src/replay/replay.ts +13 -0
  128. package/src/replay/storage/use-replay-storage-buffer.ts +52 -0
  129. package/src/replay/storage/use-replay-storage-cursor.ts +44 -0
  130. package/src/replay/storage/use-replay-storage.spec.ts +84 -0
  131. package/src/replay/storage/use-replay-storage.ts +29 -0
  132. package/src/replay/use-replay-lock.ts +29 -0
  133. package/src/replay/use-replay-manager.ts +83 -0
  134. package/src/replay/use-replay.spec.ts +10 -4
  135. package/src/replay/use-replay.ts +11 -17
  136. package/src/replay/when-replay-finished.ts +20 -0
  137. package/src/session/use-session-storage.ts +2 -2
  138. package/src/session/use-session.ts +16 -4
  139. package/src/shared/decimals.ts +0 -45
  140. package/src/simulator/use-simulator.spec.ts +10 -26
  141. package/src/storage/index.ts +1 -0
  142. package/src/storage/use-storage-factory.ts +7 -7
  143. package/src/storage/use-storage.ts +2 -2
  144. package/src/strategy.spec.ts +42 -0
  145. package/src/strategy.ts +36 -0
  146. package/src/use-execution-mode.ts +27 -27
  147. package/src/use-logger.ts +7 -7
  148. package/src/use-memo.ts +6 -21
  149. package/src/use-socket.ts +82 -44
  150. package/src/use-timestamp.ts +2 -2
  151. package/src/when-socket.ts +61 -0
  152. package/src/{use.spec.ts → with-memo.spec.ts} +3 -3
  153. package/src/{use.ts → with-memo.ts} +4 -4
  154. package/src/with-request.ts +83 -0
  155. package/tsconfig.json +2 -2
  156. package/dist/as-readonly.d.ts +0 -3
  157. package/dist/as-readonly.d.ts.map +0 -1
  158. package/dist/as-readonly.js +0 -8
  159. package/dist/asset/asset.d.ts.map +0 -1
  160. package/dist/cli/dev.d.ts +0 -2
  161. package/dist/cli/dev.d.ts.map +0 -1
  162. package/dist/cli/dev.js +0 -61
  163. package/dist/cli/pull.d.ts.map +0 -1
  164. package/dist/cli/pull.js +0 -107
  165. package/dist/cli/replay.d.ts +0 -2
  166. package/dist/cli/replay.d.ts.map +0 -1
  167. package/dist/cli/replay.js +0 -64
  168. package/dist/cli/run.d.ts +0 -2
  169. package/dist/cli/run.d.ts.map +0 -1
  170. package/dist/cli/run.js +0 -62
  171. package/dist/defined.d.ts +0 -3
  172. package/dist/defined.d.ts.map +0 -1
  173. package/dist/defined.js +0 -8
  174. package/dist/exclude.d.ts +0 -3
  175. package/dist/exclude.d.ts.map +0 -1
  176. package/dist/exclude.js +0 -8
  177. package/dist/index.d.ts +0 -28
  178. package/dist/index.d.ts.map +0 -1
  179. package/dist/instrument/instrument.d.ts.map +0 -1
  180. package/dist/make-test-module.d.ts.map +0 -1
  181. package/dist/not-found.d.ts +0 -2
  182. package/dist/not-found.d.ts.map +0 -1
  183. package/dist/not-found.js +0 -4
  184. package/dist/replay/index.d.ts +0 -7
  185. package/dist/replay/index.d.ts.map +0 -1
  186. package/dist/replay/use-replay-coordinator.d.ts +0 -10
  187. package/dist/replay/use-replay-coordinator.d.ts.map +0 -1
  188. package/dist/replay/use-replay-coordinator.js +0 -119
  189. package/dist/replay/use-replay-reader.d.ts +0 -7
  190. package/dist/replay/use-replay-reader.d.ts.map +0 -1
  191. package/dist/replay/use-replay-reader.js +0 -32
  192. package/dist/replay/use-replay-reader.spec.d.ts +0 -2
  193. package/dist/replay/use-replay-reader.spec.d.ts.map +0 -1
  194. package/dist/replay/use-replay-reader.spec.js +0 -58
  195. package/dist/replay/use-replay-storage.d.ts +0 -10
  196. package/dist/replay/use-replay-storage.d.ts.map +0 -1
  197. package/dist/replay/use-replay-storage.js +0 -10
  198. package/dist/replay/use-replay-writer.d.ts +0 -6
  199. package/dist/replay/use-replay-writer.d.ts.map +0 -1
  200. package/dist/replay/use-replay-writer.js +0 -14
  201. package/dist/replay/use-replay-writer.spec.d.ts +0 -2
  202. package/dist/replay/use-replay-writer.spec.d.ts.map +0 -1
  203. package/dist/replay/use-replay-writer.spec.js +0 -53
  204. package/dist/replay/use-replay.d.ts.map +0 -1
  205. package/dist/replay/use-replay.js +0 -32
  206. package/dist/replay/use-replay.spec.js +0 -106
  207. package/dist/replay/with-replay.d.ts +0 -4
  208. package/dist/replay/with-replay.d.ts.map +0 -1
  209. package/dist/replay/with-replay.js +0 -8
  210. package/dist/session/use-session.d.ts +0 -4
  211. package/dist/session/use-session.d.ts.map +0 -1
  212. package/dist/session/use-session.js +0 -7
  213. package/dist/shared/decimals.d.ts +0 -30
  214. package/dist/shared/decimals.d.ts.map +0 -1
  215. package/dist/shared/decimals.js +0 -61
  216. package/dist/storage/use-storage-factory.d.ts +0 -10
  217. package/dist/storage/use-storage-factory.d.ts.map +0 -1
  218. package/dist/storage/use-storage-factory.js +0 -14
  219. package/dist/storage/use-storage.d.ts.map +0 -1
  220. package/dist/strat.d.ts +0 -7
  221. package/dist/strat.d.ts.map +0 -1
  222. package/dist/strat.js +0 -7
  223. package/dist/use-execution-mode.d.ts +0 -29
  224. package/dist/use-execution-mode.d.ts.map +0 -1
  225. package/dist/use-execution-mode.js +0 -37
  226. package/dist/use-lock.d.ts +0 -9
  227. package/dist/use-lock.d.ts.map +0 -1
  228. package/dist/use-lock.js +0 -40
  229. package/dist/use-memo.d.ts +0 -21
  230. package/dist/use-memo.d.ts.map +0 -1
  231. package/dist/use-memo.js +0 -35
  232. package/dist/use-request.d.ts.map +0 -1
  233. package/dist/use-request.js +0 -27
  234. package/dist/use-socket.d.ts +0 -6
  235. package/dist/use-socket.d.ts.map +0 -1
  236. package/dist/use-state.d.ts +0 -4
  237. package/dist/use-state.d.ts.map +0 -1
  238. package/dist/use-state.js +0 -24
  239. package/dist/use-state.spec.d.ts +0 -2
  240. package/dist/use-state.spec.d.ts.map +0 -1
  241. package/dist/use-state.spec.js +0 -36
  242. package/dist/use.d.ts +0 -5
  243. package/dist/use.d.ts.map +0 -1
  244. package/dist/use.spec.d.ts +0 -2
  245. package/dist/use.spec.d.ts.map +0 -1
  246. package/src/as-readonly.ts +0 -5
  247. package/src/cli/dev.ts +0 -31
  248. package/src/cli/run.ts +0 -29
  249. package/src/defined.ts +0 -6
  250. package/src/exclude.ts +0 -9
  251. package/src/not-found.ts +0 -1
  252. package/src/replay/use-replay-coordinator.ts +0 -142
  253. package/src/replay/use-replay-reader.spec.ts +0 -64
  254. package/src/replay/use-replay-reader.ts +0 -23
  255. package/src/replay/use-replay-storage.ts +0 -8
  256. package/src/replay/use-replay-writer.spec.ts +0 -56
  257. package/src/replay/use-replay-writer.ts +0 -17
  258. package/src/replay/with-replay.ts +0 -10
  259. package/src/strat.ts +0 -7
  260. package/src/use-lock.ts +0 -52
  261. package/src/use-request.ts +0 -47
  262. package/src/use-state.spec.ts +0 -31
  263. package/src/use-state.ts +0 -30
  264. /package/{dist → lib}/asset/asset.spec.d.ts +0 -0
  265. /package/{dist → lib}/asset/asset.spec.d.ts.map +0 -0
  266. /package/{dist → lib}/asset/asset.spec.js +0 -0
  267. /package/{dist → lib}/asset/index.d.ts +0 -0
  268. /package/{dist → lib}/asset/index.d.ts.map +0 -0
  269. /package/{dist → lib}/asset/index.js +0 -0
  270. /package/{dist → lib}/cli/build.d.ts +0 -0
  271. /package/{dist → lib}/cli/build.d.ts.map +0 -0
  272. /package/{dist → lib}/cli/build.js +0 -0
  273. /package/{dist → lib}/cli/index.d.ts +0 -0
  274. /package/{dist → lib}/cli/index.d.ts.map +0 -0
  275. /package/{dist → lib}/cli/internal/workspace.d.ts +0 -0
  276. /package/{dist → lib}/cli/internal/workspace.d.ts.map +0 -0
  277. /package/{dist → lib}/cli/internal/workspace.js +0 -0
  278. /package/{dist → lib}/cli/pull.d.ts +0 -0
  279. /package/{dist → lib}/component/distinct-until-timesamp-changed.d.ts +0 -0
  280. /package/{dist → lib}/component/distinct-until-timesamp-changed.d.ts.map +0 -0
  281. /package/{dist → lib}/component/distinct-until-timesamp-changed.js +0 -0
  282. /package/{dist → lib}/component/error.d.ts +0 -0
  283. /package/{dist → lib}/component/error.d.ts.map +0 -0
  284. /package/{dist → lib}/component/error.js +0 -0
  285. /package/{dist → lib}/component/index.d.ts +0 -0
  286. /package/{dist → lib}/component/index.d.ts.map +0 -0
  287. /package/{dist → lib}/component/index.js +0 -0
  288. /package/{dist → lib}/component/ohlc-operator.d.ts +0 -0
  289. /package/{dist → lib}/component/ohlc-operator.d.ts.map +0 -0
  290. /package/{dist → lib}/component/ohlc-operator.js +0 -0
  291. /package/{dist → lib}/component/ohlc-operator.spec.d.ts +0 -0
  292. /package/{dist → lib}/component/ohlc-operator.spec.d.ts.map +0 -0
  293. /package/{dist → lib}/component/ohlc-operator.spec.js +0 -0
  294. /package/{dist → lib}/component/ohlc.d.ts +0 -0
  295. /package/{dist → lib}/component/ohlc.d.ts.map +0 -0
  296. /package/{dist → lib}/component/ohlc.js +0 -0
  297. /package/{dist → lib}/component/ohlc.spec.d.ts +0 -0
  298. /package/{dist → lib}/component/ohlc.spec.d.ts.map +0 -0
  299. /package/{dist → lib}/component/ohlc.spec.js +0 -0
  300. /package/{dist → lib}/component/timeframe.d.ts +0 -0
  301. /package/{dist → lib}/component/timeframe.d.ts.map +0 -0
  302. /package/{dist → lib}/component/timeframe.js +0 -0
  303. /package/{dist → lib}/core.d.ts +0 -0
  304. /package/{dist → lib}/core.d.ts.map +0 -0
  305. /package/{dist → lib}/instrument/commission/commission.d.ts +0 -0
  306. /package/{dist → lib}/instrument/commission/commission.d.ts.map +0 -0
  307. /package/{dist → lib}/instrument/commission/commission.js +0 -0
  308. /package/{dist → lib}/instrument/commission/commission.spec.d.ts +0 -0
  309. /package/{dist → lib}/instrument/commission/commission.spec.d.ts.map +0 -0
  310. /package/{dist → lib}/instrument/commission/commission.spec.js +0 -0
  311. /package/{dist → lib}/instrument/index.d.ts +0 -0
  312. /package/{dist → lib}/instrument/index.d.ts.map +0 -0
  313. /package/{dist → lib}/instrument/index.js +0 -0
  314. /package/{dist → lib}/instrument/instrument.spec.d.ts +0 -0
  315. /package/{dist → lib}/instrument/instrument.spec.d.ts.map +0 -0
  316. /package/{dist → lib}/instrument/instrument.spec.js +0 -0
  317. /package/{dist → lib}/module.d.ts +0 -0
  318. /package/{dist → lib}/module.d.ts.map +0 -0
  319. /package/{dist → lib}/module.js +0 -0
  320. /package/{dist → lib}/module.spec.d.ts +0 -0
  321. /package/{dist → lib}/module.spec.d.ts.map +0 -0
  322. /package/{dist → lib}/module.spec.js +0 -0
  323. /package/{dist → lib}/replay/use-replay-options.d.ts +0 -0
  324. /package/{dist → lib}/replay/use-replay-options.d.ts.map +0 -0
  325. /package/{dist → lib}/replay/use-replay-options.js +0 -0
  326. /package/{dist → lib}/replay/use-replay.spec.d.ts +0 -0
  327. /package/{dist → lib}/replay/use-replay.spec.d.ts.map +0 -0
  328. /package/{dist → lib}/session/index.d.ts +0 -0
  329. /package/{dist → lib}/session/index.d.ts.map +0 -0
  330. /package/{dist → lib}/session/index.js +0 -0
  331. /package/{dist → lib}/session/use-session-object.d.ts +0 -0
  332. /package/{dist → lib}/session/use-session-object.d.ts.map +0 -0
  333. /package/{dist → lib}/session/use-session-object.js +0 -0
  334. /package/{dist → lib}/session/use-session-storage.d.ts +0 -0
  335. /package/{dist → lib}/session/use-session-storage.d.ts.map +0 -0
  336. /package/{dist → lib}/shared/datetime.d.ts +0 -0
  337. /package/{dist → lib}/shared/datetime.d.ts.map +0 -0
  338. /package/{dist → lib}/shared/datetime.js +0 -0
  339. /package/{dist → lib}/shared/decimals.spec.d.ts +0 -0
  340. /package/{dist → lib}/shared/decimals.spec.d.ts.map +0 -0
  341. /package/{dist → lib}/shared/decimals.spec.js +0 -0
  342. /package/{dist → lib}/shared/environment.d.ts +0 -0
  343. /package/{dist → lib}/shared/environment.d.ts.map +0 -0
  344. /package/{dist → lib}/shared/environment.js +0 -0
  345. /package/{dist → lib}/shared/index.d.ts +0 -0
  346. /package/{dist → lib}/shared/index.d.ts.map +0 -0
  347. /package/{dist → lib}/shared/index.js +0 -0
  348. /package/{dist → lib}/simulator/index.d.ts +0 -0
  349. /package/{dist → lib}/simulator/index.d.ts.map +0 -0
  350. /package/{dist → lib}/simulator/index.js +0 -0
  351. /package/{dist → lib}/simulator/use-simulator.d.ts +0 -0
  352. /package/{dist → lib}/simulator/use-simulator.d.ts.map +0 -0
  353. /package/{dist → lib}/simulator/use-simulator.js +0 -0
  354. /package/{dist → lib}/simulator/use-simulator.spec.d.ts +0 -0
  355. /package/{dist → lib}/simulator/use-simulator.spec.d.ts.map +0 -0
  356. /package/{dist → lib}/storage/in-memory/in-memory-storage.d.ts +0 -0
  357. /package/{dist → lib}/storage/in-memory/in-memory-storage.d.ts.map +0 -0
  358. /package/{dist → lib}/storage/in-memory/in-memory-storage.factory.d.ts +0 -0
  359. /package/{dist → lib}/storage/in-memory/in-memory-storage.factory.d.ts.map +0 -0
  360. /package/{dist → lib}/storage/in-memory/in-memory-storage.factory.js +0 -0
  361. /package/{dist → lib}/storage/in-memory/in-memory-storage.js +0 -0
  362. /package/{dist → lib}/storage/in-memory/in-memory-storage.spec.d.ts +0 -0
  363. /package/{dist → lib}/storage/in-memory/in-memory-storage.spec.d.ts.map +0 -0
  364. /package/{dist → lib}/storage/in-memory/in-memory-storage.spec.js +0 -0
  365. /package/{dist → lib}/storage/in-memory/index.d.ts +0 -0
  366. /package/{dist → lib}/storage/in-memory/index.d.ts.map +0 -0
  367. /package/{dist → lib}/storage/in-memory/index.js +0 -0
  368. /package/{dist → lib}/storage/storage.d.ts +0 -0
  369. /package/{dist → lib}/storage/storage.d.ts.map +0 -0
  370. /package/{dist → lib}/storage/storage.js +0 -0
  371. /package/{dist → lib}/storage/use-cache.d.ts +0 -0
  372. /package/{dist → lib}/storage/use-cache.d.ts.map +0 -0
  373. /package/{dist → lib}/storage/use-cache.js +0 -0
  374. /package/{dist → lib}/storage/use-cache.spec.d.ts +0 -0
  375. /package/{dist → lib}/storage/use-cache.spec.d.ts.map +0 -0
  376. /package/{dist → lib}/storage/use-cache.spec.js +0 -0
  377. /package/{dist → lib}/storage/use-storage.d.ts +0 -0
  378. /package/{dist → lib}/use-hash.d.ts +0 -0
  379. /package/{dist → lib}/use-hash.d.ts.map +0 -0
  380. /package/{dist → lib}/use-hash.js +0 -0
  381. /package/{dist → lib}/use-hash.spec.d.ts +0 -0
  382. /package/{dist → lib}/use-hash.spec.d.ts.map +0 -0
  383. /package/{dist → lib}/use-hash.spec.js +0 -0
  384. /package/{dist → lib}/use-logger.d.ts +0 -0
  385. /package/{dist → lib}/use-logger.d.ts.map +0 -0
  386. /package/{dist → lib}/use-memo.spec.d.ts +0 -0
  387. /package/{dist → lib}/use-memo.spec.d.ts.map +0 -0
  388. /package/{dist → lib}/use-memo.spec.js +0 -0
  389. /package/{dist → lib}/use-timestamp.d.ts +0 -0
  390. /package/{dist → lib}/use-timestamp.d.ts.map +0 -0
@@ -0,0 +1,44 @@
1
+ import { dependency, useHash } from '@lib/use-hash';
2
+ import { useLogger } from '@lib/use-logger';
3
+ import { withMemo } from '@lib/with-memo';
4
+
5
+ import { useReplayStorageBuffer } from './use-replay-storage-buffer';
6
+
7
+ export const useReplayStorageCursor = withMemo(() => {
8
+ const { info } = useLogger('useReplayStorageCursor');
9
+ const storages = Array.of<ReturnType<typeof useReplayStorageBuffer<any>>>();
10
+
11
+ return {
12
+ get<T>(dependencies: dependency[]) {
13
+ const storage = useReplayStorageBuffer<T>(dependencies);
14
+
15
+ if (!storages.includes(storage)) {
16
+ info('opening a new replay buffer', useHash(dependencies));
17
+ storages.push(storage);
18
+ }
19
+
20
+ return storage;
21
+ },
22
+ async cursor() {
23
+ let current: ReturnType<typeof useReplayStorageBuffer<any>> | undefined;
24
+
25
+ for (const storage of storages) {
26
+ if (storage.completed()) {
27
+ continue;
28
+ }
29
+
30
+ if (storage.size() == 0) {
31
+ await storage.fetchNextPage();
32
+ }
33
+
34
+ if (storage.peek()) {
35
+ if (!current || current.peek().timestamp > storage.peek().timestamp) {
36
+ current = storage;
37
+ }
38
+ }
39
+ }
40
+
41
+ return current;
42
+ }
43
+ };
44
+ });
@@ -0,0 +1,84 @@
1
+ import { makeTestModule, mockedFunc } from '@lib/make-test-module';
2
+ import { Query, QueryObject, Storage } from '@lib/storage';
3
+ import { useStorage } from '@lib/storage';
4
+
5
+ import { useReplayStorage } from './use-replay-storage';
6
+
7
+ jest.mock('@lib/storage', () => ({
8
+ ...jest.requireActual('@lib/storage'),
9
+ useStorage: jest.fn()
10
+ }));
11
+
12
+ describe(useReplayStorage.name, () => {
13
+ let fixtures: Awaited<ReturnType<typeof getFixtures>>;
14
+
15
+ beforeEach(async () => {
16
+ fixtures = await getFixtures();
17
+ });
18
+
19
+ describe('query', () => {
20
+ test('happy path', async () => {
21
+ await fixtures.given.stored(fixtures.sample);
22
+ const sample = await fixtures.when.queried({});
23
+
24
+ expect(sample).toEqual(fixtures.sample);
25
+ });
26
+ });
27
+
28
+ describe('save', () => {
29
+ test('happy path', async () => {
30
+ await fixtures.when.saved(fixtures.sample);
31
+ await fixtures.then.stored(fixtures.sample);
32
+ });
33
+ });
34
+ });
35
+
36
+ async function getFixtures() {
37
+ const { act } = await makeTestModule([]);
38
+
39
+ const dependencies = ['binance:btc-usdt', 'candle', 'h1'];
40
+ const save: Storage['save'] = jest.fn();
41
+ const query: jest.MockedFunction<Storage['query']> = jest.fn();
42
+
43
+ mockedFunc(useStorage).mockReturnValue({ save, query } as any);
44
+
45
+ return {
46
+ sample: [
47
+ { timestamp: 1, payload: { o: 1.1, h: 1.1, l: 1.1, c: 1.1 } },
48
+ { timestamp: 2, payload: { o: 1.1, h: 2.2, l: 1.1, c: 2.2 } },
49
+ { timestamp: 3, payload: { o: 1.1, h: 3.3, l: 1.1, c: 3.3 } }
50
+ ],
51
+
52
+ given: {
53
+ stored<T>(sample: { timestamp: number; payload: T }[]) {
54
+ return query.mockReturnValue(
55
+ Promise.resolve(
56
+ sample.map(it => ({
57
+ timestamp: it.timestamp,
58
+ payload: JSON.stringify(it.payload)
59
+ }))
60
+ )
61
+ );
62
+ }
63
+ },
64
+ when: {
65
+ saved<T>(sample: { timestamp: number; payload: T }[]) {
66
+ return act(() => useReplayStorage(dependencies).save(sample));
67
+ },
68
+ queried<T>(query: Query<QueryObject>) {
69
+ return act(() => useReplayStorage<T>(dependencies).query(query));
70
+ }
71
+ },
72
+ then: {
73
+ stored<T>(sample: { timestamp: number; payload: T }[]) {
74
+ expect(save).toHaveBeenCalledWith(
75
+ expect.anything(),
76
+ sample.map(it => ({
77
+ timestamp: it.timestamp,
78
+ payload: JSON.stringify(it.payload)
79
+ }))
80
+ );
81
+ }
82
+ }
83
+ };
84
+ }
@@ -0,0 +1,29 @@
1
+ import { Query, QueryObject, Storage, useStorage } from '@lib/storage';
2
+ import { dependency, useHash } from '@lib/use-hash';
3
+
4
+ export function useReplayStorage<T>(dependencies: dependency[]) {
5
+ const storage = useStorage(['replay']);
6
+ const storageObjectKey = useHash(dependencies);
7
+ const storageObject = Storage.createObject(storageObjectKey, {
8
+ timestamp: 'number',
9
+ payload: 'string'
10
+ });
11
+
12
+ return {
13
+ async query(query: Query<QueryObject>) {
14
+ return (await storage.query(storageObject, query)).map(it => ({
15
+ timestamp: it.timestamp,
16
+ payload: JSON.parse(it.payload) as T
17
+ }));
18
+ },
19
+ save(objects: { timestamp: number; payload: T }[]) {
20
+ return storage.save(
21
+ storageObject,
22
+ objects.map(it => ({
23
+ timestamp: it.timestamp,
24
+ payload: JSON.stringify(it.payload)
25
+ }))
26
+ );
27
+ }
28
+ };
29
+ }
@@ -0,0 +1,29 @@
1
+ import { finalize, Observable } from 'rxjs';
2
+
3
+ import { useExecutionMode } from '@lib/use-execution-mode';
4
+ import { useLogger } from '@lib/use-logger';
5
+
6
+ import { useReplayManager } from './use-replay-manager';
7
+
8
+ export function useReplayLock<T>(input: Observable<T>): Observable<T> {
9
+ const { isReplay } = useExecutionMode();
10
+
11
+ if (!isReplay) {
12
+ return input;
13
+ }
14
+
15
+ const { info } = useLogger('replay');
16
+ const { stop, tryContinue } = useReplayManager();
17
+
18
+ info('lock acquired');
19
+
20
+ stop();
21
+
22
+ return input.pipe(
23
+ finalize(() => {
24
+ info('lock released');
25
+
26
+ tryContinue();
27
+ })
28
+ );
29
+ }
@@ -0,0 +1,83 @@
1
+ import { defer, filter, map, Observable, Subject } from 'rxjs';
2
+
3
+ import { dependency } from '@lib/use-hash';
4
+ import { withMemo } from '@lib/with-memo';
5
+
6
+ import { useReplayStorageBuffer } from './storage/use-replay-storage-buffer';
7
+ import { useReplayStorageCursor } from './storage/use-replay-storage-cursor';
8
+ import { useReplayOptions } from './use-replay-options';
9
+
10
+ export const useReplayManager = withMemo(() => {
11
+ const { from } = useReplayOptions();
12
+ const { get, cursor } = useReplayStorageCursor();
13
+
14
+ let timestamp = from;
15
+ let stopAcquire = 1;
16
+
17
+ const stream$ = new Subject<
18
+ [ReturnType<typeof useReplayStorageBuffer<any>>, { timestamp: number; payload: any }]
19
+ >();
20
+
21
+ const processNext = async () => {
22
+ const storage = await cursor();
23
+
24
+ if (!storage || !storage.peek()) {
25
+ stream$.complete();
26
+
27
+ return false;
28
+ }
29
+
30
+ const sample = storage.dequeue();
31
+
32
+ timestamp = sample.timestamp;
33
+
34
+ stream$.next([storage, sample]);
35
+
36
+ return true;
37
+ };
38
+
39
+ const next = async () => {
40
+ if (await processNext()) {
41
+ if (stopAcquire === 0) {
42
+ setImmediate(next);
43
+ }
44
+ }
45
+ };
46
+
47
+ const tryContinue = () => {
48
+ if (stopAcquire == 0) {
49
+ return;
50
+ }
51
+
52
+ stopAcquire = Math.max(0, stopAcquire - 1);
53
+
54
+ if (stopAcquire != 0) {
55
+ return;
56
+ }
57
+
58
+ next();
59
+ };
60
+
61
+ return {
62
+ stream: stream$.asObservable(),
63
+ timestamp() {
64
+ return timestamp;
65
+ },
66
+ stop() {
67
+ stopAcquire++;
68
+ },
69
+ tryContinue,
70
+ watch<T>(dependencies: dependency[]): Observable<{ timestamp: number; payload: T }> {
71
+ const storage = get<T>(dependencies);
72
+
73
+ return defer(() => {
74
+ tryContinue();
75
+
76
+ return stream$.pipe(
77
+ filter(([cur]) => cur === storage),
78
+ map(([, it]) => ({ timestamp: it.timestamp, payload: it.payload as T }))
79
+ );
80
+ });
81
+ }
82
+ };
83
+ });
@@ -1,15 +1,20 @@
1
+ import exp from 'constants';
1
2
  import { from, lastValueFrom, tap } from 'rxjs';
2
3
 
3
4
  import { makeTestModule } from '@lib/make-test-module';
4
- import { useReplayCoordinator } from '@lib/replay/use-replay-coordinator';
5
- import { replayExecutionMode } from '@lib/use-execution-mode';
6
5
  import { dependency } from '@lib/use-hash';
7
6
 
8
7
  import { between } from '..';
9
8
  import { useReplay } from './use-replay';
10
9
  import { replayOptions } from './use-replay-options';
11
- import { useReplayReader } from './use-replay-reader';
12
- import { useReplayWriter } from './use-replay-writer';
10
+
11
+ describe(useReplay.name, () => {
12
+ test('happy path', () => {
13
+ expect(true).toBe(true);
14
+ });
15
+ });
16
+
17
+ /*
13
18
 
14
19
  describe.skip(useReplayCoordinator.name, () => {
15
20
  let fixtures: Awaited<ReturnType<typeof getFixtures>>;
@@ -130,3 +135,4 @@ async function getFixtures() {
130
135
  }
131
136
  };
132
137
  }
138
+ */
@@ -1,34 +1,28 @@
1
- import { concatMap, map, Observable } from 'rxjs';
1
+ import { Observable, tap } from 'rxjs';
2
2
 
3
- import { useReplayCoordinator } from '@lib/replay/use-replay-coordinator';
4
3
  import { useExecutionMode } from '@lib/use-execution-mode';
5
4
  import { dependency } from '@lib/use-hash';
6
5
 
7
- import { useReplayWriter } from './use-replay-writer';
6
+ import { useReplayStorage } from './storage/use-replay-storage';
7
+ import { useReplayManager } from './use-replay-manager';
8
8
 
9
- export const useReplay = <T>(
9
+ export function useReplay<T>(
10
10
  input: Observable<{ timestamp: number; payload: T }>,
11
11
  dependencies: dependency[]
12
- ) => {
12
+ ) {
13
13
  const { isReplay, recording } = useExecutionMode();
14
14
 
15
15
  if (isReplay) {
16
- const { subscribe } = useReplayCoordinator();
16
+ const { watch } = useReplayManager();
17
17
 
18
- return subscribe(dependencies).pipe(
19
- map(it => it as unknown as { timestamp: number; payload: T })
20
- );
18
+ return watch<T>(dependencies);
21
19
  }
22
20
 
23
21
  if (recording) {
24
- const writer = useReplayWriter(dependencies);
25
- return input.pipe(
26
- concatMap(async it => {
27
- await writer([it]);
28
- return it;
29
- })
30
- );
22
+ const { save } = useReplayStorage<T>(dependencies);
23
+
24
+ return input.pipe(tap(it => save([it])));
31
25
  }
32
26
 
33
27
  return input;
34
- };
28
+ }
@@ -0,0 +1,20 @@
1
+ import { from, last, map, Subject } from 'rxjs';
2
+
3
+ import { useExecutionMode } from '@lib/use-execution-mode';
4
+
5
+ import { useReplayManager } from './use-replay-manager';
6
+
7
+ export function whenReplayFinished() {
8
+ const { isReplay } = useExecutionMode();
9
+
10
+ if (!isReplay) {
11
+ return new Subject<boolean>().asObservable();
12
+ }
13
+
14
+ const { stream } = useReplayManager();
15
+
16
+ return from(stream).pipe(
17
+ last(),
18
+ map(() => true)
19
+ );
20
+ }
@@ -1,8 +1,8 @@
1
1
  import { useSession } from '@lib/session';
2
2
  import { useStorage } from '@lib/storage';
3
- import { use } from '@lib/use';
3
+ import { withMemo } from '@lib/with-memo';
4
4
 
5
- export const useSessionStorage = use(() => {
5
+ export const useSessionStorage = withMemo(() => {
6
6
  const { id } = useSession();
7
7
 
8
8
  return useStorage(['session', id]);
@@ -1,5 +1,17 @@
1
- import { use } from '@lib/use';
1
+ import { Dependency, useContext } from '@lib/module';
2
2
 
3
- export const useSession = use(() => ({
4
- id: 'ttt' //Date.now()
5
- }));
3
+ const token = Symbol('session-options');
4
+
5
+ type SessionOptions = {
6
+ id: string;
7
+ };
8
+
9
+ /**
10
+ * Will return current replay execution options.
11
+ */
12
+ export const useSession = () => useContext<SessionOptions>(token);
13
+
14
+ useSession.options = (options: SessionOptions): Dependency => ({
15
+ provide: token,
16
+ useValue: options
17
+ });
@@ -16,54 +16,9 @@ Decimal.prototype.toCeil = function (decimalPlaces: number) {
16
16
  };
17
17
 
18
18
  export class decimal extends Decimal {}
19
- /*
20
- decimal.prototype.toJSON = function () {
21
- return '444';
22
- };
23
- */
24
19
 
25
20
  export function d(value: Decimal.Value) {
26
21
  return new decimal(value);
27
22
  }
28
23
 
29
24
  d.Zero = new decimal(0);
30
-
31
- export function weightedMean(values: decimal[], weights: decimal[]): decimal {
32
- const result = values
33
- .map((value, i) => {
34
- const weight = weights[i];
35
- const sum = value.mul(weight);
36
- return [sum, weight];
37
- })
38
- .reduce((p, c) => [p[0].add(c[0]), p[1].add(c[1])], [d.Zero, d.Zero]);
39
-
40
- if (!result[1]) {
41
- return d.Zero;
42
- }
43
-
44
- return result[0].div(result[1]);
45
- }
46
-
47
- export function pnl(entryRate: decimal, exitRate: decimal, amount: decimal) {
48
- return exitRate.div(entryRate).minus(1).mul(amount);
49
- }
50
-
51
- /**
52
- *
53
- * @param timestamp
54
- * @param timeframe
55
- * @returns nearest timestamp to the given timeframe
56
- */
57
- export function candledown(timestamp: number, timeframe: number): number {
58
- return timestamp - (timestamp % timeframe);
59
- }
60
-
61
- /**
62
- *
63
- * @param timestamp
64
- * @param timeframe
65
- * @returns nearest timestamp to the given timeframe
66
- */
67
- export function candleup(timestamp: number, timeframe: number): number {
68
- return candledown(timestamp, timeframe) + timeframe;
69
- }
@@ -1,13 +1,8 @@
1
- import { makeTestModule, mockedFunc } from '@lib/make-test-module';
1
+ import { makeTestModule } from '@lib/make-test-module';
2
2
  import { useExecutionMode } from '@lib/use-execution-mode';
3
3
 
4
4
  import { useSimulator } from './use-simulator';
5
5
 
6
- jest.mock('@lib/use-execution-mode', () => ({
7
- ...jest.requireActual('@lib/use-execution-mode'),
8
- useExecutionMode: jest.fn()
9
- }));
10
-
11
6
  describe(useSimulator.name, () => {
12
7
  let fixtures: Awaited<ReturnType<typeof getFixtures>>;
13
8
 
@@ -15,22 +10,16 @@ describe(useSimulator.name, () => {
15
10
  fixtures = await getFixtures();
16
11
  });
17
12
 
18
- afterEach(() => fixtures.clear());
19
-
20
- test('get real value when simulator mode disabled', () => {
21
- const { act } = fixtures;
22
-
23
- fixtures.givenSimulationEnabled(false);
13
+ test('get real value when simulator mode disabled', async () => {
14
+ const { act } = await fixtures.givenModule(false);
24
15
 
25
16
  const value = act(() => useSimulator('simulator', 'real'));
26
17
 
27
18
  expect(value).toBe('real');
28
19
  });
29
20
 
30
- test('get simulation value when simulator mode enabled', () => {
31
- const { act } = fixtures;
32
-
33
- fixtures.givenSimulationEnabled(true);
21
+ test('get simulation value when simulator mode enabled', async () => {
22
+ const { act } = await fixtures.givenModule(true);
34
23
 
35
24
  const value = act(() => useSimulator('simulator', 'real'));
36
25
 
@@ -39,16 +28,11 @@ describe(useSimulator.name, () => {
39
28
  });
40
29
 
41
30
  async function getFixtures() {
42
- const { act } = await makeTestModule([]);
43
-
44
31
  return {
45
- act,
46
- givenSimulationEnabled(isSimulation: boolean) {
47
- mockedFunc(useExecutionMode).mockReturnValue({
48
- isSimulation,
49
- recording: false
50
- } as any);
51
- },
52
- clear: jest.clearAllMocks
32
+ async givenModule(isSimulation: boolean) {
33
+ return isSimulation
34
+ ? await makeTestModule([useExecutionMode.paperOptions({ recording: false })])
35
+ : await makeTestModule([useExecutionMode.liveOptions({ recording: false })]);
36
+ }
53
37
  };
54
38
  }
@@ -1,4 +1,5 @@
1
1
  export * from './storage';
2
+ export * from './use-cache';
2
3
  export * from './use-storage';
3
4
  export * from './use-storage-factory';
4
5
  export * from './in-memory';
@@ -1,4 +1,4 @@
1
- import { useContext } from '@lib/module';
1
+ import { Dependency, useContext } from '@lib/module';
2
2
  import { Storage } from '@lib/storage';
3
3
 
4
4
  const token = Symbol('storage-factory-token');
@@ -7,11 +7,11 @@ export interface StorageFactory {
7
7
  for(key: string): Storage;
8
8
  }
9
9
 
10
- export function storage(factory: StorageFactory) {
11
- return {
12
- provide: token,
13
- useValue: factory
14
- };
10
+ export function useStorageFactory() {
11
+ return useContext<StorageFactory>(token);
15
12
  }
16
13
 
17
- export const useStorageFactory = () => useContext<StorageFactory>(token);
14
+ useStorageFactory.options = (factory: StorageFactory): Dependency => ({
15
+ provide: token,
16
+ useValue: factory
17
+ });
@@ -1,9 +1,9 @@
1
- import { use } from '@lib/use';
2
1
  import { dependency, useHash } from '@lib/use-hash';
2
+ import { withMemo } from '@lib/with-memo';
3
3
 
4
4
  import { useStorageFactory } from './use-storage-factory';
5
5
 
6
- export const useStorage = use((dependencies: dependency[]) => {
6
+ export const useStorage = withMemo((dependencies: dependency[]) => {
7
7
  const key = useHash(dependencies);
8
8
  const factory = useStorageFactory();
9
9
 
@@ -0,0 +1,42 @@
1
+ import { of } from 'rxjs';
2
+
3
+ import { Dependency } from './module';
4
+ import { after, before, behavior, strategy } from './strategy';
5
+
6
+ describe(strategy.name, () => {
7
+ let fixtures: ReturnType<typeof getFixtures>;
8
+
9
+ beforeEach(() => {
10
+ fixtures = getFixtures();
11
+ });
12
+
13
+ test('happy path', () => {
14
+ const sut = strategy(() => {
15
+ before(() => of('before'));
16
+ behavior(() => of('behavior 1'));
17
+ behavior(() => of('behavior 2'));
18
+ after(() => of('after'));
19
+
20
+ return fixtures.given.dependencies();
21
+ });
22
+
23
+ expect(sut.dependencies).toEqual(
24
+ expect.arrayContaining(fixtures.given.dependencies())
25
+ );
26
+ expect(sut.description).toEqual({
27
+ before: [expect.any(Function)],
28
+ behavior: [expect.any(Function), expect.any(Function)],
29
+ after: [expect.any(Function)]
30
+ });
31
+ });
32
+ });
33
+
34
+ function getFixtures() {
35
+ return {
36
+ given: {
37
+ dependencies(): Dependency[] {
38
+ return [];
39
+ }
40
+ }
41
+ };
42
+ }
@@ -0,0 +1,36 @@
1
+ import { Observable, of } from 'rxjs';
2
+
3
+ import { Dependency } from './module';
4
+
5
+ export type Descriptor = () => Observable<unknown>;
6
+
7
+ export let before: (descriptor: Descriptor) => void;
8
+ export let behavior: (descriptor: Descriptor) => void;
9
+ export let after: (descriptor: Descriptor) => void;
10
+
11
+ export function strategy(descriptor: () => Dependency[]) {
12
+ const description = {
13
+ before: Array.of<Descriptor>(),
14
+ behavior: Array.of<Descriptor>(),
15
+ after: Array.of<Descriptor>()
16
+ };
17
+
18
+ before = descriptor => description.before.push(descriptor);
19
+ behavior = descriptor => description.behavior.push(descriptor);
20
+ after = descriptor => description.after.push(descriptor);
21
+
22
+ const dependencies = descriptor();
23
+
24
+ if (!description.before.length) {
25
+ description.before.push(() => of(true));
26
+ }
27
+
28
+ if (!description.after.length) {
29
+ description.after.push(() => of(true));
30
+ }
31
+
32
+ return {
33
+ dependencies,
34
+ description
35
+ };
36
+ }