@quantform/core 0.6.6 → 0.7.0-beta.10

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/errored.d.ts +2 -0
  52. package/dist/errored.d.ts.map +1 -0
  53. package/dist/{domain/component.js → errored.js} +2 -0
  54. package/dist/exclude.d.ts +3 -0
  55. package/dist/exclude.d.ts.map +1 -0
  56. package/dist/exclude.js +8 -0
  57. package/dist/index.d.ts +25 -27
  58. package/dist/index.d.ts.map +1 -1
  59. package/dist/index.js +25 -66
  60. package/dist/{domain → instrument/commission}/commission.d.ts +1 -1
  61. package/dist/instrument/commission/commission.d.ts.map +1 -0
  62. package/dist/{domain → instrument/commission}/commission.js +2 -2
  63. package/dist/instrument/commission/commission.spec.d.ts +2 -0
  64. package/dist/instrument/commission/commission.spec.d.ts.map +1 -0
  65. package/dist/instrument/commission/commission.spec.js +30 -0
  66. package/dist/instrument/index.d.ts +3 -0
  67. package/dist/instrument/index.d.ts.map +1 -0
  68. package/dist/{adapter → instrument}/index.js +2 -4
  69. package/dist/{domain → instrument}/instrument.d.ts +4 -4
  70. package/dist/instrument/instrument.d.ts.map +1 -0
  71. package/dist/{domain → instrument}/instrument.js +8 -5
  72. package/dist/instrument/instrument.spec.d.ts +2 -0
  73. package/dist/instrument/instrument.spec.d.ts.map +1 -0
  74. package/dist/instrument/instrument.spec.js +51 -0
  75. package/dist/make-test-module.d.ts +13 -0
  76. package/dist/make-test-module.d.ts.map +1 -0
  77. package/dist/make-test-module.js +46 -0
  78. package/dist/module.d.ts +57 -0
  79. package/dist/module.d.ts.map +1 -0
  80. package/dist/module.js +136 -0
  81. package/dist/module.spec.d.ts +2 -0
  82. package/dist/module.spec.d.ts.map +1 -0
  83. package/dist/module.spec.js +86 -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 +53 -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/errored.ts +1 -0
  246. package/src/exclude.ts +9 -0
  247. package/src/index.ts +27 -80
  248. package/src/{domain → instrument/commission}/commission.spec.ts +4 -3
  249. package/src/{domain → instrument/commission}/commission.ts +1 -1
  250. package/src/instrument/index.ts +2 -0
  251. package/src/{domain → instrument}/instrument.spec.ts +11 -6
  252. package/src/{domain → instrument}/instrument.ts +12 -8
  253. package/src/make-test-module.ts +46 -0
  254. package/src/module.spec.ts +74 -0
  255. package/src/module.ts +156 -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 +60 -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,5 +1,5 @@
1
- import { d, now } from '../shared';
2
- import { Ohlc } from './ohlc';
1
+ import { Ohlc } from '@lib/component';
2
+ import { d, now } from '@lib/shared';
3
3
 
4
4
  describe('Ohlc', () => {
5
5
  test('should construct a ohlc', () => {
@@ -1,4 +1,4 @@
1
- import { decimal, timestamp } from '../shared';
1
+ import { decimal, timestamp } from '@lib/shared';
2
2
 
3
3
  export class Ohlc {
4
4
  constructor(
@@ -8,7 +8,7 @@ export class Ohlc {
8
8
  public low: decimal,
9
9
  public close: decimal,
10
10
  public volume?: decimal
11
- ) { }
11
+ ) {}
12
12
 
13
13
  apply(value: decimal) {
14
14
  this.high = decimal.max(this.high, value);
package/src/core.ts ADDED
@@ -0,0 +1,14 @@
1
+ import { Dependency } from '@lib/module';
2
+ import { memo } from '@lib/use-memo';
3
+
4
+ import { InMemoryStorageFactory } from './storage';
5
+ import { storage } from './storage/use-storage-factory';
6
+ import { paperExecutionMode } from './use-execution-mode';
7
+
8
+ export function core(): Dependency[] {
9
+ return [
10
+ memo(),
11
+ paperExecutionMode({ recording: false }),
12
+ storage(new InMemoryStorageFactory())
13
+ ];
14
+ }
package/src/defined.ts ADDED
@@ -0,0 +1,6 @@
1
+ import { filter, Observable } from 'rxjs';
2
+
3
+ export function defined<T>() {
4
+ return (observable: Observable<T | undefined | null>) =>
5
+ observable.pipe(filter(it => it !== undefined && it !== null));
6
+ }
package/src/errored.ts ADDED
@@ -0,0 +1 @@
1
+ export const errored = Symbol.for('errored');
package/src/exclude.ts ADDED
@@ -0,0 +1,9 @@
1
+ import { filter, map, Observable } from 'rxjs';
2
+
3
+ export function exclude<T, S extends symbol>(s: S) {
4
+ return (observable: Observable<T | S>) =>
5
+ observable.pipe(
6
+ filter(it => it !== s),
7
+ map(it => it as Exclude<T, typeof s>)
8
+ );
9
+ }
package/src/index.ts CHANGED
@@ -1,80 +1,27 @@
1
- import chalk from 'chalk';
2
- import { finalize, forkJoin, Observable, of, switchMap } from 'rxjs';
3
-
4
- import { Session, SessionBuilder, SessionFeature } from './domain';
5
- export * from './adapter';
6
- export * from './domain';
7
- export * from './shared';
8
- export * from './storage';
9
- export * from './store';
10
-
11
- import { Logger } from './shared';
12
-
13
- const registry: Record<string, () => Array<SessionFeature>> = {};
14
-
15
- export type SessionHook = (session: Session) => Observable<any>;
16
-
17
- /**
18
- * Describes a single strategy logic
19
- */
20
- export let rule: (name: string | undefined, describe: SessionHook) => void;
21
-
22
- /**
23
- *
24
- */
25
- export let beforeAll: (describe: SessionHook) => void;
26
-
27
- /**
28
- *
29
- * @param name
30
- * @param describe
31
- */
32
- export function describe(name: string, describe: () => Array<SessionFeature>) {
33
- registry[name] = describe;
34
- }
35
-
36
- /**
37
- *
38
- * @param name
39
- * @param builder
40
- * @returns
41
- */
42
- export async function spawn(name: string, builder: SessionBuilder) {
43
- const describe = registry[name];
44
- if (!describe) {
45
- throw new Error(`missing strategy: ${name}`);
46
- }
47
-
48
- const ruleHooks = new Array<SessionHook>();
49
- const beforeAllHooks = new Array<SessionHook>();
50
-
51
- beforeAll = (describe: SessionHook) => {
52
- beforeAllHooks.push(describe);
53
- };
54
-
55
- rule = (ruleName: string | undefined, describe: SessionHook) => {
56
- if (ruleName) {
57
- Logger.info(name, `${chalk.italic(ruleName)} rule found`);
58
- }
59
-
60
- ruleHooks.push(describe);
61
- };
62
-
63
- for (const feature of describe()) {
64
- feature(builder);
65
- }
66
-
67
- return (session: Session) => {
68
- const beforeAll$ = beforeAllHooks.map(it => it(session));
69
- const rule$ = ruleHooks.map(it => it(session));
70
-
71
- if (!beforeAll$.length) {
72
- beforeAll$.push(of(true));
73
- }
74
-
75
- return forkJoin(beforeAll$).pipe(
76
- switchMap(() => forkJoin(rule$)),
77
- finalize(() => session.dispose())
78
- );
79
- };
80
- }
1
+ export * from '@lib/component';
2
+ export * from '@lib/shared';
3
+ export * from '@lib/storage';
4
+ export * from '@lib/module';
5
+ export * from '@lib/use-memo';
6
+ export * from '@lib/use-timestamp';
7
+ export * from '@lib/simulator';
8
+ export * from '@lib/make-test-module';
9
+ export * from '@lib/core';
10
+ export * from '@lib/use-state';
11
+ export * from '@lib/replay/use-replay-coordinator';
12
+ export * from '@lib/use-execution-mode';
13
+ export * from '@lib/storage/use-storage';
14
+ export * from '@lib/storage/use-cache';
15
+ export * from '@lib/use-logger';
16
+ export * from '@lib/replay';
17
+ export * from '@lib/replay/use-replay-coordinator';
18
+ export * from '@lib/use-socket';
19
+ export * from '@lib/use-request';
20
+ export * from '@lib/defined';
21
+ export * from '@lib/as-readonly';
22
+ export * from '@lib/use';
23
+ export * from '@lib/session';
24
+ export * from '@lib/exclude';
25
+ export * from '@lib/use-lock';
26
+ export * from '@lib/strat';
27
+ export * from '@lib/errored';
@@ -1,7 +1,8 @@
1
- import { d } from '../shared';
2
- import { commissionPercentOf } from './commission';
1
+ import { d } from '@lib/shared';
3
2
 
4
- describe('Commission', () => {
3
+ import { Commission, commissionPercentOf } from './commission';
4
+
5
+ describe(Commission.name, () => {
5
6
  test('should construct a Commission', () => {
6
7
  const sut = commissionPercentOf({
7
8
  maker: d(0.1),
@@ -1,4 +1,4 @@
1
- import { d, decimal } from '../shared';
1
+ import { d, decimal } from '@lib/shared';
2
2
 
3
3
  export class Commission {
4
4
  static readonly Zero = commissionPercentOf({ maker: d.Zero, taker: d.Zero });
@@ -0,0 +1,2 @@
1
+ export * from '@lib/instrument/instrument';
2
+ export * from '@lib/instrument/commission/commission';
@@ -1,9 +1,14 @@
1
- import { d } from '../shared';
2
- import { Asset, assetOf } from './asset';
3
- import { commissionPercentOf } from './commission';
4
- import { Instrument, instrumentOf } from './instrument';
1
+ import {
2
+ Asset,
3
+ assetOf,
4
+ commissionPercentOf,
5
+ Instrument,
6
+ instrumentOf,
7
+ InstrumentSelector
8
+ } from '@lib/component';
9
+ import { d } from '@lib/shared';
5
10
 
6
- describe('Instrument', () => {
11
+ describe(Instrument.name, () => {
7
12
  test('should construct a instrument', () => {
8
13
  const sut = new Instrument(
9
14
  0,
@@ -24,7 +29,7 @@ describe('Instrument', () => {
24
29
  });
25
30
  });
26
31
 
27
- describe('InstrumentSelector', () => {
32
+ describe(InstrumentSelector.name, () => {
28
33
  test('should construct a instrument selector', () => {
29
34
  const sut = instrumentOf('xyz:abc-def');
30
35
 
@@ -1,7 +1,7 @@
1
- import { Asset, AssetSelector, AssetSelectorSeparator } from './asset';
2
- import { Commission } from './commission';
3
- import { Component } from './component';
4
- import { adapterMismatchError, invalidInstrumentSelectorError } from './error';
1
+ import { Asset, AssetSelector, AssetSelectorSeparator } from '@lib/asset';
2
+ import { AdapterMismatchError, InvalidInstrumentSelectorError } from '@lib/component';
3
+
4
+ import { Commission } from './commission/commission';
5
5
 
6
6
  export const InstrumentSelectorSeparator = '-';
7
7
 
@@ -16,12 +16,16 @@ export class InstrumentSelector {
16
16
 
17
17
  this.id = `${this.base.id}${InstrumentSelectorSeparator}${this.quote.name}`;
18
18
  }
19
+
20
+ toString() {
21
+ return this.id;
22
+ }
19
23
  }
20
24
 
21
25
  /**
22
26
  * Represents trading market which is made up by two trading assets (base and quoted).
23
27
  */
24
- export class Instrument extends InstrumentSelector implements Component {
28
+ export class Instrument extends InstrumentSelector {
25
29
  readonly cross: Instrument | undefined;
26
30
  leverage: number | undefined = undefined;
27
31
 
@@ -35,7 +39,7 @@ export class Instrument extends InstrumentSelector implements Component {
35
39
  super(base.name, quote.name, base.adapterName);
36
40
 
37
41
  if (base.adapterName != quote.adapterName) {
38
- throw adapterMismatchError();
42
+ throw new AdapterMismatchError();
39
43
  }
40
44
  }
41
45
  }
@@ -43,12 +47,12 @@ export class Instrument extends InstrumentSelector implements Component {
43
47
  export function instrumentOf(selector: string): InstrumentSelector {
44
48
  const [adapterName, asset, ...rest] = selector.split(AssetSelectorSeparator);
45
49
  if (!adapterName || !asset || rest.length) {
46
- throw invalidInstrumentSelectorError(selector);
50
+ throw new InvalidInstrumentSelectorError(selector);
47
51
  }
48
52
 
49
53
  const [baseAssetName, quoteAssetName] = asset.split(InstrumentSelectorSeparator);
50
54
  if (!baseAssetName || !quoteAssetName) {
51
- throw invalidInstrumentSelectorError(selector);
55
+ throw new InvalidInstrumentSelectorError(selector);
52
56
  }
53
57
 
54
58
  return new InstrumentSelector(baseAssetName, quoteAssetName, adapterName);
@@ -0,0 +1,46 @@
1
+ import { Observable, tap } from 'rxjs';
2
+
3
+ import { core } from '@lib/core';
4
+ import { Dependency, Module } from '@lib/module';
5
+
6
+ export async function makeTestModule(dependencies: Dependency[]) {
7
+ const module = new Module([...core(), ...dependencies]);
8
+
9
+ const { act } = await module.awake();
10
+
11
+ return {
12
+ act,
13
+ get: module.get.bind(module)
14
+ };
15
+ }
16
+
17
+ type MockableFunction = (...args: any[]) => any;
18
+
19
+ export const mockedFunc = <Func extends MockableFunction>(mockedFunc: Func) =>
20
+ mockedFunc as jest.MockedFunction<typeof mockedFunc>;
21
+
22
+ export function toArray<T>(observable: Observable<T>) {
23
+ const array = Array.of<T>();
24
+
25
+ const clone = (it: T): T => {
26
+ if (typeof it === 'symbol') {
27
+ return it;
28
+ }
29
+
30
+ if (Array.isArray(it)) {
31
+ return it.map(it => clone(it)) as T;
32
+ }
33
+
34
+ if (typeof it === 'object') {
35
+ return { ...it };
36
+ }
37
+
38
+ return it;
39
+ };
40
+
41
+ observable.pipe(tap(it => array.push(clone(it)))).subscribe();
42
+
43
+ return array;
44
+ }
45
+
46
+ export type InferObservableType<T> = T extends Observable<infer U> ? U : never;
@@ -0,0 +1,74 @@
1
+ import { Dependency, Module, provider } from '@lib/module';
2
+
3
+ describe(Module.name, () => {
4
+ let fixtures: ReturnType<typeof getFixtures>;
5
+
6
+ beforeEach(() => {
7
+ fixtures = getFixtures();
8
+ });
9
+
10
+ test('builds empty module', async () => {
11
+ const module = fixtures.givenModuleCreated([]);
12
+ fixtures.whenModuleBuilt(module);
13
+ });
14
+
15
+ test('builds module and resolves single value dependency', async () => {
16
+ const definition = fixtures.definitions.singleValue;
17
+ const module = fixtures.givenModuleCreated(definition);
18
+ fixtures.whenModuleBuilt(module);
19
+ fixtures.thenCanResolveDependencies(module, definition);
20
+ });
21
+
22
+ test('builds module and resolves single class dependency', async () => {
23
+ const definition = fixtures.definitions.singleClass;
24
+ const module = fixtures.givenModuleCreated(definition);
25
+ fixtures.whenModuleBuilt(module);
26
+ fixtures.thenCanResolveDependencies(module, definition);
27
+ });
28
+
29
+ test('builds module and resolves many class dependencies', async () => {
30
+ const definition = fixtures.definitions.manyClass;
31
+ const module = fixtures.givenModuleCreated(definition);
32
+ fixtures.whenModuleBuilt(module);
33
+ fixtures.thenCanResolveDependencies(module, definition);
34
+ });
35
+ });
36
+
37
+ function getFixtures() {
38
+ return {
39
+ definitions: {
40
+ singleClass: [
41
+ {
42
+ provide: FakeService,
43
+ useClass: FakeService
44
+ }
45
+ ],
46
+ manyClass: [
47
+ {
48
+ provide: FakeService,
49
+ useClass: FakeService
50
+ },
51
+ {
52
+ provide: FakeService,
53
+ useClass: FakeService
54
+ }
55
+ ],
56
+ singleValue: [
57
+ {
58
+ provide: FakeService,
59
+ useValue: new FakeService()
60
+ }
61
+ ]
62
+ },
63
+ givenModuleCreated: (dependencies: Dependency[]) => new Module(dependencies),
64
+ whenModuleBuilt: (module: Module) => module.awake(),
65
+ thenCanResolveDependencies: (module: Module, dependencies: Dependency[]) => {
66
+ dependencies.forEach(it => {
67
+ expect(module.get<FakeService>(it.provide)).toBeTruthy();
68
+ });
69
+ }
70
+ };
71
+ }
72
+
73
+ @provider()
74
+ class FakeService {}
package/src/module.ts ADDED
@@ -0,0 +1,156 @@
1
+ import 'reflect-metadata';
2
+
3
+ import { AsyncLocalStorage } from 'node:async_hooks';
4
+ import {
5
+ container,
6
+ DependencyContainer,
7
+ inject,
8
+ injectable,
9
+ injectAll,
10
+ InjectionToken,
11
+ Lifecycle
12
+ } from 'tsyringe';
13
+
14
+ export const provider = injectable;
15
+ export const provide = inject;
16
+ export const provideAll = injectAll;
17
+
18
+ export type Dependency = {
19
+ provide: InjectionToken;
20
+ useClass?: any;
21
+ useValue?: any;
22
+ };
23
+
24
+ function noModuleError() {
25
+ return new Error('Please do not use dependency injection outside of hooks context.');
26
+ }
27
+
28
+ function withModuleError() {
29
+ return new Error('Please do not use with hooks in context.');
30
+ }
31
+
32
+ function notInitializedModuleError() {
33
+ return new Error('You need to initialize a module before use.');
34
+ }
35
+
36
+ function missingInjectionTokenError(token: InjectionToken) {
37
+ return new Error(`Unable to resolve unregistered dependency: ${token.toString()}`);
38
+ }
39
+
40
+ /**
41
+ *
42
+ */
43
+ const moduleLocalStorage = new AsyncLocalStorage();
44
+
45
+ /**
46
+ * Hook to get access to current execution module dependencies.
47
+ */
48
+ export const useContext = <T>(token: InjectionToken<T>) => {
49
+ const module = moduleLocalStorage.getStore() as Module | undefined;
50
+
51
+ if (!module) {
52
+ throw noModuleError();
53
+ }
54
+
55
+ return module.get<T>(token);
56
+ };
57
+
58
+ /**
59
+ * Hook to get access to current execution module dependencies.
60
+ */
61
+ export const throwWithContext = () => {
62
+ if (moduleLocalStorage.getStore()) {
63
+ throw withModuleError();
64
+ }
65
+ };
66
+
67
+ /**
68
+ * A module is a collection of services, values, and factories that can be
69
+ * registered with a dependency container.
70
+ */
71
+ export class Module {
72
+ private container?: DependencyContainer;
73
+
74
+ constructor(private readonly dependencies: Dependency[]) {}
75
+
76
+ /**
77
+ * Builds and initializes dependencies.
78
+ */
79
+ async awake(): Promise<{ act: <T>(func: () => T) => T }> {
80
+ this.container = this.buildContainer();
81
+
82
+ return {
83
+ /**
84
+ * Associate callback function with current executing module
85
+ */
86
+ act: <T>(func: () => T) => moduleLocalStorage.run(this, func)
87
+ };
88
+ }
89
+
90
+ /**
91
+ * Disposes all dependencies instantiated by this module.
92
+ * @returns
93
+ */
94
+ dispose() {
95
+ if (!this.container) {
96
+ return;
97
+ }
98
+
99
+ this.container = undefined;
100
+ }
101
+
102
+ /**
103
+ * Builds a new instance of dependency container based on module definition.
104
+ * @returns
105
+ */
106
+ protected buildContainer(): DependencyContainer {
107
+ const childContainer = container.createChildContainer();
108
+
109
+ this.dependencies.forEach(it => {
110
+ if (it.useValue) {
111
+ childContainer.register(it.provide, { useValue: it.useValue });
112
+ } else {
113
+ childContainer.register(it.provide, it.useClass ?? it.provide, {
114
+ lifecycle: Lifecycle.Singleton
115
+ });
116
+ }
117
+ });
118
+
119
+ return childContainer;
120
+ }
121
+
122
+ /**
123
+ * Resolves a dependency from the module.
124
+ * @param token represents the identifier for the dependency that you want to
125
+ * resolve from the container.
126
+ * @returns instance of the dependency.
127
+ */
128
+ get<T>(token: InjectionToken<T>): T {
129
+ if (!this.container) {
130
+ throw notInitializedModuleError();
131
+ }
132
+
133
+ if (!this.container.isRegistered(token)) {
134
+ throw missingInjectionTokenError(token);
135
+ }
136
+
137
+ return this.container.resolve<T>(token);
138
+ }
139
+
140
+ /**
141
+ * Resolves a collection of dependencies from the module.
142
+ * @param token
143
+ * @returns
144
+ */
145
+ getAll<T>(token: InjectionToken<T>): T[] {
146
+ if (!this.container) {
147
+ throw notInitializedModuleError();
148
+ }
149
+
150
+ if (!this.container.isRegistered(token)) {
151
+ throw missingInjectionTokenError(token);
152
+ }
153
+
154
+ return container.resolveAll<T>(token);
155
+ }
156
+ }
@@ -0,0 +1,6 @@
1
+ export * from './use-replay';
2
+ export * from './use-replay-coordinator';
3
+ export * from './use-replay-options';
4
+ export * from './use-replay-reader';
5
+ export * from './use-replay-writer';
6
+ export * from './with-replay';