jspurefix 2.2.1 → 3.0.0

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 (639) hide show
  1. package/.eslintrc +30 -0
  2. package/README.md +297 -249
  3. package/data/session/test-http-initiator.json +2 -2
  4. package/dist/buffer/ascii/ascii-chars.js.map +1 -1
  5. package/dist/buffer/ascii/ascii-encoder.js +9 -5
  6. package/dist/buffer/ascii/ascii-encoder.js.map +1 -1
  7. package/dist/buffer/ascii/ascii-parser-state.d.ts +2 -2
  8. package/dist/buffer/ascii/ascii-parser-state.js +1 -1
  9. package/dist/buffer/ascii/ascii-parser-state.js.map +1 -1
  10. package/dist/buffer/ascii/ascii-parser.d.ts +2 -2
  11. package/dist/buffer/ascii/ascii-parser.js +17 -11
  12. package/dist/buffer/ascii/ascii-parser.js.map +1 -1
  13. package/dist/buffer/ascii/ascii-segment-parser.d.ts +1 -1
  14. package/dist/buffer/ascii/ascii-segment-parser.js +11 -3
  15. package/dist/buffer/ascii/ascii-segment-parser.js.map +1 -1
  16. package/dist/buffer/ascii/ascii-view.d.ts +3 -3
  17. package/dist/buffer/ascii/ascii-view.js +18 -0
  18. package/dist/buffer/ascii/ascii-view.js.map +1 -1
  19. package/dist/buffer/ascii/itime-formatter.d.ts +12 -12
  20. package/dist/buffer/ascii/itime-formatter.js.map +1 -1
  21. package/dist/buffer/ascii/time-formatter.d.ts +6 -6
  22. package/dist/buffer/ascii/time-formatter.js.map +1 -1
  23. package/dist/buffer/elastic-buffer.d.ts +1 -1
  24. package/dist/buffer/elastic-buffer.js +2 -2
  25. package/dist/buffer/elastic-buffer.js.map +1 -1
  26. package/dist/buffer/encode-proxy.js +1 -1
  27. package/dist/buffer/encode-proxy.js.map +1 -1
  28. package/dist/buffer/encoder-state.d.ts +2 -2
  29. package/dist/buffer/encoder-state.js +4 -1
  30. package/dist/buffer/encoder-state.js.map +1 -1
  31. package/dist/buffer/fixml/fixml-encoder.js +4 -2
  32. package/dist/buffer/fixml/fixml-encoder.js.map +1 -1
  33. package/dist/buffer/fixml/fixml-parser.js +61 -39
  34. package/dist/buffer/fixml/fixml-parser.js.map +1 -1
  35. package/dist/buffer/fixml/fixml-view.js +3 -3
  36. package/dist/buffer/fixml/fixml-view.js.map +1 -1
  37. package/dist/buffer/fixml/populated-attributes.js.map +1 -1
  38. package/dist/buffer/msg-encoder.js +2 -1
  39. package/dist/buffer/msg-encoder.js.map +1 -1
  40. package/dist/buffer/msg-view.d.ts +9 -9
  41. package/dist/buffer/msg-view.js +58 -25
  42. package/dist/buffer/msg-view.js.map +1 -1
  43. package/dist/buffer/segment/segment-description.d.ts +4 -4
  44. package/dist/buffer/segment/segment-description.js +7 -5
  45. package/dist/buffer/segment/segment-description.js.map +1 -1
  46. package/dist/buffer/segment/segment-summary.js +2 -1
  47. package/dist/buffer/segment/segment-summary.js.map +1 -1
  48. package/dist/buffer/structure.d.ts +1 -1
  49. package/dist/buffer/structure.js +1 -2
  50. package/dist/buffer/structure.js.map +1 -1
  51. package/dist/buffer/time-format-template.js.map +1 -1
  52. package/dist/collections/collection.d.ts +3 -7
  53. package/dist/collections/collection.js.map +1 -1
  54. package/dist/collections/dictionary.d.ts +1 -1
  55. package/dist/collections/dictionary.js +2 -1
  56. package/dist/collections/dictionary.js.map +1 -1
  57. package/dist/config/empty-log-factory.js.map +1 -1
  58. package/dist/config/get-js-fx-logger.d.ts +1 -3
  59. package/dist/config/get-js-fx-logger.js.map +1 -1
  60. package/dist/config/js-fix-config.d.ts +3 -3
  61. package/dist/config/js-fix-config.js.map +1 -1
  62. package/dist/config/js-fix-logger.d.ts +5 -5
  63. package/dist/config/js-fix-logger.js.map +1 -1
  64. package/dist/config/js-fix-winston-log-factory.d.ts +1 -1
  65. package/dist/config/js-fix-winston-log-factory.js.map +1 -1
  66. package/dist/config/winston-logger.js +7 -7
  67. package/dist/config/winston-logger.js.map +1 -1
  68. package/dist/dict-parser.js +27 -21
  69. package/dist/dict-parser.js.map +1 -1
  70. package/dist/dictionary/compiler/compiler-settings.js.map +1 -1
  71. package/dist/dictionary/compiler/compiler-type.js.map +1 -1
  72. package/dist/dictionary/compiler/enum-compiler.d.ts +2 -2
  73. package/dist/dictionary/compiler/enum-compiler.js +7 -10
  74. package/dist/dictionary/compiler/enum-compiler.js.map +1 -1
  75. package/dist/dictionary/compiler/msg-compiler.js +9 -10
  76. package/dist/dictionary/compiler/msg-compiler.js.map +1 -1
  77. package/dist/dictionary/compiler/standard-snippet.d.ts +1 -1
  78. package/dist/dictionary/compiler/standard-snippet.js +11 -10
  79. package/dist/dictionary/compiler/standard-snippet.js.map +1 -1
  80. package/dist/dictionary/contained/contained-component-field.d.ts +2 -2
  81. package/dist/dictionary/contained/contained-component-field.js +1 -1
  82. package/dist/dictionary/contained/contained-component-field.js.map +1 -1
  83. package/dist/dictionary/contained/contained-field-dispatcher.d.ts +3 -9
  84. package/dist/dictionary/contained/contained-field-dispatcher.js.map +1 -1
  85. package/dist/dictionary/contained/contained-field-set.d.ts +4 -4
  86. package/dist/dictionary/contained/contained-field-set.js +1 -1
  87. package/dist/dictionary/contained/contained-field-set.js.map +1 -1
  88. package/dist/dictionary/contained/contained-field.d.ts +1 -0
  89. package/dist/dictionary/contained/contained-field.js +3 -0
  90. package/dist/dictionary/contained/contained-field.js.map +1 -1
  91. package/dist/dictionary/contained/contained-group-field.d.ts +2 -2
  92. package/dist/dictionary/contained/contained-group-field.js +1 -1
  93. package/dist/dictionary/contained/contained-group-field.js.map +1 -1
  94. package/dist/dictionary/contained/contained-simple-field.d.ts +2 -2
  95. package/dist/dictionary/contained/contained-simple-field.js +1 -1
  96. package/dist/dictionary/contained/contained-simple-field.js.map +1 -1
  97. package/dist/dictionary/contained/field-dispatcher.d.ts +3 -9
  98. package/dist/dictionary/contained/field-dispatcher.js.map +1 -1
  99. package/dist/dictionary/contained/fields-dispatch.js +0 -1
  100. package/dist/dictionary/contained/fields-dispatch.js.map +1 -1
  101. package/dist/dictionary/definition/component-field-definition.d.ts +3 -3
  102. package/dist/dictionary/definition/component-field-definition.js +1 -1
  103. package/dist/dictionary/definition/component-field-definition.js.map +1 -1
  104. package/dist/dictionary/definition/fix-definitions.d.ts +3 -3
  105. package/dist/dictionary/definition/fix-definitions.js +3 -2
  106. package/dist/dictionary/definition/fix-definitions.js.map +1 -1
  107. package/dist/dictionary/definition/group-field-definition.d.ts +4 -4
  108. package/dist/dictionary/definition/group-field-definition.js +1 -1
  109. package/dist/dictionary/definition/group-field-definition.js.map +1 -1
  110. package/dist/dictionary/definition/message-definition.d.ts +2 -2
  111. package/dist/dictionary/definition/message-definition.js.map +1 -1
  112. package/dist/dictionary/definition/simple-field-definition.d.ts +4 -4
  113. package/dist/dictionary/definition/simple-field-definition.js +3 -2
  114. package/dist/dictionary/definition/simple-field-definition.js.map +1 -1
  115. package/dist/dictionary/dict-primitive.d.ts +1 -1
  116. package/dist/dictionary/dict-primitive.js.map +1 -1
  117. package/dist/dictionary/field-enum.js.map +1 -1
  118. package/dist/dictionary/fix-versions.js.map +1 -1
  119. package/dist/dictionary/parser/fix-repository/repository-xml-parser.js +20 -18
  120. package/dist/dictionary/parser/fix-repository/repository-xml-parser.js.map +1 -1
  121. package/dist/dictionary/parser/fix-repository/repository.js +24 -16
  122. package/dist/dictionary/parser/fix-repository/repository.js.map +1 -1
  123. package/dist/dictionary/parser/fixml/components-parser.d.ts +1 -1
  124. package/dist/dictionary/parser/fixml/components-parser.js +24 -15
  125. package/dist/dictionary/parser/fixml/components-parser.js.map +1 -1
  126. package/dist/dictionary/parser/fixml/fields-parser.d.ts +1 -1
  127. package/dist/dictionary/parser/fixml/fields-parser.js +5 -5
  128. package/dist/dictionary/parser/fixml/fields-parser.js.map +1 -1
  129. package/dist/dictionary/parser/fixml/fix-xsd-parser.js +3 -2
  130. package/dist/dictionary/parser/fixml/fix-xsd-parser.js.map +1 -1
  131. package/dist/dictionary/parser/fixml/include-graph.d.ts +1 -1
  132. package/dist/dictionary/parser/fixml/include-graph.js +58 -48
  133. package/dist/dictionary/parser/fixml/include-graph.js.map +1 -1
  134. package/dist/dictionary/parser/fixml/xsd-parser.d.ts +1 -1
  135. package/dist/dictionary/parser/fixml/xsd-parser.js +34 -23
  136. package/dist/dictionary/parser/fixml/xsd-parser.js.map +1 -1
  137. package/dist/dictionary/parser/quickfix/field-definition-parser.js +0 -2
  138. package/dist/dictionary/parser/quickfix/field-definition-parser.js.map +1 -1
  139. package/dist/dictionary/parser/quickfix/field-set-parser.js +3 -2
  140. package/dist/dictionary/parser/quickfix/field-set-parser.js.map +1 -1
  141. package/dist/dictionary/parser/quickfix/message-parser.js +10 -5
  142. package/dist/dictionary/parser/quickfix/message-parser.js.map +1 -1
  143. package/dist/dictionary/parser/quickfix/node-parser.js +14 -8
  144. package/dist/dictionary/parser/quickfix/node-parser.js.map +1 -1
  145. package/dist/dictionary/parser/quickfix/parse-context.d.ts +5 -5
  146. package/dist/dictionary/parser/quickfix/parse-context.js.map +1 -1
  147. package/dist/dictionary/parser/quickfix/quick-fix-xml-file-parser.js +22 -19
  148. package/dist/dictionary/parser/quickfix/quick-fix-xml-file-parser.js.map +1 -1
  149. package/dist/dictionary/set-reduce.js.map +1 -1
  150. package/dist/dictionary/type-dispatcher.d.ts +3 -9
  151. package/dist/dictionary/type-dispatcher.js.map +1 -1
  152. package/dist/dictionary/version-util.js +8 -8
  153. package/dist/dictionary/version-util.js.map +1 -1
  154. package/dist/jsfix-cmd.d.ts +3 -1
  155. package/dist/jsfix-cmd.js +134 -99
  156. package/dist/jsfix-cmd.js.map +1 -1
  157. package/dist/runtime/make-config.js +34 -14
  158. package/dist/runtime/make-config.js.map +1 -1
  159. package/dist/runtime/session-container.d.ts +3 -2
  160. package/dist/runtime/session-container.js +36 -16
  161. package/dist/runtime/session-container.js.map +1 -1
  162. package/dist/runtime/session-launcher.d.ts +10 -6
  163. package/dist/runtime/session-launcher.js +80 -43
  164. package/dist/runtime/session-launcher.js.map +1 -1
  165. package/dist/sample/http/oms/app.js +37 -7
  166. package/dist/sample/http/oms/app.js.map +1 -1
  167. package/dist/sample/http/oms/http-client.js +4 -2
  168. package/dist/sample/http/oms/http-client.js.map +1 -1
  169. package/dist/sample/http/oms/http-server.js +7 -1
  170. package/dist/sample/http/oms/http-server.js.map +1 -1
  171. package/dist/sample/http/oms/oms-factory.js +4 -3
  172. package/dist/sample/http/oms/oms-factory.js.map +1 -1
  173. package/dist/sample/tcp/qf-md/app.js +3 -3
  174. package/dist/sample/tcp/qf-md/app.js.map +1 -1
  175. package/dist/sample/tcp/qf-md/md-client.js +2 -1
  176. package/dist/sample/tcp/qf-md/md-client.js.map +1 -1
  177. package/dist/sample/tcp/qf-md/md-factory.js.map +1 -1
  178. package/dist/sample/tcp/qf-md/md-server.d.ts +1 -1
  179. package/dist/sample/tcp/qf-md/md-server.js +2 -1
  180. package/dist/sample/tcp/qf-md/md-server.js.map +1 -1
  181. package/dist/sample/tcp/recovering-skeleton/app.js +29 -16
  182. package/dist/sample/tcp/recovering-skeleton/app.js.map +1 -1
  183. package/dist/sample/tcp/recovering-skeleton/respawn-acceptor.d.ts +9 -1
  184. package/dist/sample/tcp/recovering-skeleton/respawn-acceptor.js +51 -2
  185. package/dist/sample/tcp/recovering-skeleton/respawn-acceptor.js.map +1 -1
  186. package/dist/sample/tcp/recovering-skeleton/skeleton-client.js +2 -1
  187. package/dist/sample/tcp/recovering-skeleton/skeleton-client.js.map +1 -1
  188. package/dist/sample/tcp/recovering-skeleton/skeleton-server.js +4 -3
  189. package/dist/sample/tcp/recovering-skeleton/skeleton-server.js.map +1 -1
  190. package/dist/sample/tcp/skeleton/app.js.map +1 -1
  191. package/dist/sample/tcp/skeleton/skeleton-session.js +7 -4
  192. package/dist/sample/tcp/skeleton/skeleton-session.js.map +1 -1
  193. package/dist/sample/tcp/tls-trade-capture/app.js.map +1 -1
  194. package/dist/sample/tcp/trade-capture/app-launcher.js +3 -3
  195. package/dist/sample/tcp/trade-capture/app-launcher.js.map +1 -1
  196. package/dist/sample/tcp/trade-capture/trade-capture-client.d.ts +1 -1
  197. package/dist/sample/tcp/trade-capture/trade-capture-client.js +2 -1
  198. package/dist/sample/tcp/trade-capture/trade-capture-client.js.map +1 -1
  199. package/dist/sample/tcp/trade-capture/trade-capture-server.js +7 -2
  200. package/dist/sample/tcp/trade-capture/trade-capture-server.js.map +1 -1
  201. package/dist/sample/tcp/trade-capture/trade-factory.js.map +1 -1
  202. package/dist/store/fix-msg-ascii-store-resend.js +18 -7
  203. package/dist/store/fix-msg-ascii-store-resend.js.map +1 -1
  204. package/dist/store/fix-msg-memory-store.d.ts +3 -3
  205. package/dist/store/fix-msg-memory-store.js +93 -69
  206. package/dist/store/fix-msg-memory-store.js.map +1 -1
  207. package/dist/store/fix-msg-store-record.d.ts +6 -6
  208. package/dist/store/fix-msg-store-record.js +2 -1
  209. package/dist/store/fix-msg-store-record.js.map +1 -1
  210. package/dist/store/fix-msg-store-state.js.map +1 -1
  211. package/dist/store/fix-msg-store.d.ts +7 -7
  212. package/dist/store/fix-msg-store.js.map +1 -1
  213. package/dist/test/ascii/ascii-encoder.test.js +93 -63
  214. package/dist/test/ascii/ascii-encoder.test.js.map +1 -1
  215. package/dist/test/ascii/ascii-parser.test.js +28 -24
  216. package/dist/test/ascii/ascii-parser.test.js.map +1 -1
  217. package/dist/test/ascii/ascii-segment.test.js +16 -11
  218. package/dist/test/ascii/ascii-segment.test.js.map +1 -1
  219. package/dist/test/ascii/ascii-store-replay.test.js +1 -1
  220. package/dist/test/ascii/ascii-store-replay.test.js.map +1 -1
  221. package/dist/test/ascii/ascii-tag-pos.test.js +7 -3
  222. package/dist/test/ascii/ascii-tag-pos.test.js.map +1 -1
  223. package/dist/test/ascii/execution-report.test.js +80 -72
  224. package/dist/test/ascii/execution-report.test.js.map +1 -1
  225. package/dist/test/ascii/fix-log-replay.test.js +1 -1
  226. package/dist/test/ascii/fix-log-replay.test.js.map +1 -1
  227. package/dist/test/ascii/fix-repo-dict.test.js +58 -55
  228. package/dist/test/ascii/fix-repo-dict.test.js.map +1 -1
  229. package/dist/test/ascii/includes.test.js +1 -1
  230. package/dist/test/ascii/includes.test.js.map +1 -1
  231. package/dist/test/ascii/logon.test.js +3 -3
  232. package/dist/test/ascii/logon.test.js.map +1 -1
  233. package/dist/test/ascii/memory-store.test.js +3 -3
  234. package/dist/test/ascii/memory-store.test.js.map +1 -1
  235. package/dist/test/ascii/qf-full-msg.test.js +19 -16
  236. package/dist/test/ascii/qf-full-msg.test.js.map +1 -1
  237. package/dist/test/ascii/repo-full-ascii-msg.test.js +11 -11
  238. package/dist/test/ascii/repo-full-ascii-msg.test.js.map +1 -1
  239. package/dist/test/ascii/session-state.test.js.map +1 -1
  240. package/dist/test/ascii/session.test.js +59 -42
  241. package/dist/test/ascii/session.test.js.map +1 -1
  242. package/dist/test/ascii/view-decode.test.js +30 -22
  243. package/dist/test/ascii/view-decode.test.js.map +1 -1
  244. package/dist/test/encode-proxy.test.js +29 -29
  245. package/dist/test/encode-proxy.test.js.map +1 -1
  246. package/dist/test/env/experiment.js +5 -5
  247. package/dist/test/env/experiment.js.map +1 -1
  248. package/dist/test/env/parsing-result.d.ts +3 -3
  249. package/dist/test/env/parsing-result.js.map +1 -1
  250. package/dist/test/env/setup.d.ts +2 -2
  251. package/dist/test/env/setup.js +13 -11
  252. package/dist/test/env/setup.js.map +1 -1
  253. package/dist/test/env/skeleton-runner.d.ts +1 -1
  254. package/dist/test/env/skeleton-runner.js +16 -16
  255. package/dist/test/env/skeleton-runner.js.map +1 -1
  256. package/dist/test/env/test-recovery.d.ts +3 -3
  257. package/dist/test/env/test-recovery.js +1 -1
  258. package/dist/test/env/test-recovery.js.map +1 -1
  259. package/dist/test/env/to-views.d.ts +1 -1
  260. package/dist/test/env/to-views.js +2 -2
  261. package/dist/test/env/to-views.js.map +1 -1
  262. package/dist/test/fixml/fixml-alloc-parse.test.js +32 -15
  263. package/dist/test/fixml/fixml-alloc-parse.test.js.map +1 -1
  264. package/dist/test/fixml/fixml-mkt-data-fut-parse.test.js +2 -2
  265. package/dist/test/fixml/fixml-mkt-data-fut-parse.test.js.map +1 -1
  266. package/dist/test/fixml/fixml-mkt-data-settle-parse.test.js +2 -1
  267. package/dist/test/fixml/fixml-mkt-data-settle-parse.test.js.map +1 -1
  268. package/dist/test/fixml/fixml-tc-bi-lateral-parse.test.js +19 -12
  269. package/dist/test/fixml/fixml-tc-bi-lateral-parse.test.js.map +1 -1
  270. package/dist/test/fixml/repo-full-fixml-msg.test.js +2 -2
  271. package/dist/test/fixml/repo-full-fixml-msg.test.js.map +1 -1
  272. package/dist/transport/ascii/ascii-msg-transmitter.d.ts +1 -1
  273. package/dist/transport/ascii/ascii-msg-transmitter.js +18 -8
  274. package/dist/transport/ascii/ascii-msg-transmitter.js.map +1 -1
  275. package/dist/transport/ascii/ascii-session-msg-factory.d.ts +3 -3
  276. package/dist/transport/ascii/ascii-session-msg-factory.js +4 -2
  277. package/dist/transport/ascii/ascii-session-msg-factory.js.map +1 -1
  278. package/dist/transport/ascii/ascii-session.d.ts +1 -1
  279. package/dist/transport/ascii/ascii-session.js +34 -16
  280. package/dist/transport/ascii/ascii-session.js.map +1 -1
  281. package/dist/transport/duplex/http-duplex.js +10 -8
  282. package/dist/transport/duplex/http-duplex.js.map +1 -1
  283. package/dist/transport/duplex/string-duplex.js +2 -2
  284. package/dist/transport/duplex/string-duplex.js.map +1 -1
  285. package/dist/transport/factory/msg-transport.js +21 -10
  286. package/dist/transport/factory/msg-transport.js.map +1 -1
  287. package/dist/transport/fix-acceptor.d.ts +3 -3
  288. package/dist/transport/fix-acceptor.js.map +1 -1
  289. package/dist/transport/fix-entity.d.ts +1 -1
  290. package/dist/transport/fix-entity.js.map +1 -1
  291. package/dist/transport/fix-initiator.d.ts +2 -2
  292. package/dist/transport/fix-initiator.js.map +1 -1
  293. package/dist/transport/fixml/fixml-msg-transmitter.d.ts +1 -1
  294. package/dist/transport/fixml/fixml-msg-transmitter.js +4 -2
  295. package/dist/transport/fixml/fixml-msg-transmitter.js.map +1 -1
  296. package/dist/transport/fixml/fixml-session-msg-factory.d.ts +1 -1
  297. package/dist/transport/fixml/fixml-session-msg-factory.js.map +1 -1
  298. package/dist/transport/fixml/fixml-session.js +7 -3
  299. package/dist/transport/fixml/fixml-session.js.map +1 -1
  300. package/dist/transport/http/html-options.d.ts +2 -2
  301. package/dist/transport/http/html-options.js.map +1 -1
  302. package/dist/transport/http/html-route.js.map +1 -1
  303. package/dist/transport/http/http-acceptor-listener.js +27 -23
  304. package/dist/transport/http/http-acceptor-listener.js.map +1 -1
  305. package/dist/transport/http/http-acceptor.d.ts +2 -2
  306. package/dist/transport/http/http-acceptor.js +52 -41
  307. package/dist/transport/http/http-acceptor.js.map +1 -1
  308. package/dist/transport/http/http-adapter.d.ts +3 -3
  309. package/dist/transport/http/http-adapter.js.map +1 -1
  310. package/dist/transport/http/http-initiator.js +35 -23
  311. package/dist/transport/http/http-initiator.js.map +1 -1
  312. package/dist/transport/http/http-json-sample-adapter.d.ts +4 -4
  313. package/dist/transport/http/http-json-sample-adapter.js +16 -11
  314. package/dist/transport/http/http-json-sample-adapter.js.map +1 -1
  315. package/dist/transport/http/http-transaction.js.map +1 -1
  316. package/dist/transport/http/http-transport-description.js.map +1 -1
  317. package/dist/transport/msg-application.js.map +1 -1
  318. package/dist/transport/msg-transmitter.d.ts +1 -1
  319. package/dist/transport/msg-transmitter.js +2 -2
  320. package/dist/transport/msg-transmitter.js.map +1 -1
  321. package/dist/transport/session/a-session-msg-factory.d.ts +3 -5
  322. package/dist/transport/session/a-session-msg-factory.js.map +1 -1
  323. package/dist/transport/session/fix-session-state.d.ts +8 -5
  324. package/dist/transport/session/fix-session-state.js +21 -16
  325. package/dist/transport/session/fix-session-state.js.map +1 -1
  326. package/dist/transport/session/fix-session.d.ts +19 -6
  327. package/dist/transport/session/fix-session.js +197 -110
  328. package/dist/transport/session/fix-session.js.map +1 -1
  329. package/dist/transport/session/make-fix-session.d.ts +1 -3
  330. package/dist/transport/session/make-fix-session.js.map +1 -1
  331. package/dist/transport/session/session-description.d.ts +1 -1
  332. package/dist/transport/session/session-description.js.map +1 -1
  333. package/dist/transport/session/session-msg-factory.d.ts +9 -9
  334. package/dist/transport/session/session-msg-factory.js.map +1 -1
  335. package/dist/transport/tcp/recovering-tcp-initiator.d.ts +4 -2
  336. package/dist/transport/tcp/recovering-tcp-initiator.js +62 -30
  337. package/dist/transport/tcp/recovering-tcp-initiator.js.map +1 -1
  338. package/dist/transport/tcp/tcp-acceptor-listener.js +28 -25
  339. package/dist/transport/tcp/tcp-acceptor-listener.js.map +1 -1
  340. package/dist/transport/tcp/tcp-acceptor.d.ts +2 -2
  341. package/dist/transport/tcp/tcp-acceptor.js +23 -15
  342. package/dist/transport/tcp/tcp-acceptor.js.map +1 -1
  343. package/dist/transport/tcp/tcp-initiator-connector.js +39 -30
  344. package/dist/transport/tcp/tcp-initiator-connector.js.map +1 -1
  345. package/dist/transport/tcp/tcp-initiator.d.ts +1 -1
  346. package/dist/transport/tcp/tcp-initiator.js +130 -104
  347. package/dist/transport/tcp/tcp-initiator.js.map +1 -1
  348. package/dist/transport/tcp/tcp-transport-description.js.map +1 -1
  349. package/dist/transport/tcp/tls-options-factory.d.ts +3 -3
  350. package/dist/transport/tcp/tls-options-factory.js +10 -3
  351. package/dist/transport/tcp/tls-options-factory.js.map +1 -1
  352. package/dist/transport/tcp/tls-options.d.ts +6 -2
  353. package/dist/transport/tcp/tls-options.js.map +1 -1
  354. package/dist/util/json-helper.js +2 -1
  355. package/dist/util/json-helper.js.map +1 -1
  356. package/dist/util/message-generator.d.ts +1 -1
  357. package/dist/util/message-generator.js +1 -1
  358. package/dist/util/message-generator.js.map +1 -1
  359. package/package.json +53 -48
  360. package/src/buffer/ascii/ascii-chars.ts +0 -1
  361. package/src/buffer/ascii/ascii-encoder.ts +18 -16
  362. package/src/buffer/ascii/ascii-parser-state.ts +4 -4
  363. package/src/buffer/ascii/ascii-parser.ts +16 -13
  364. package/src/buffer/ascii/ascii-segment-parser.ts +16 -15
  365. package/src/buffer/ascii/ascii-view.ts +22 -14
  366. package/src/buffer/ascii/itime-formatter.ts +12 -12
  367. package/src/buffer/ascii/time-formatter.ts +11 -12
  368. package/src/buffer/elastic-buffer.ts +5 -6
  369. package/src/buffer/encode-proxy.ts +6 -5
  370. package/src/buffer/encoder-state.ts +7 -3
  371. package/src/buffer/fixml/fixml-encoder.ts +10 -10
  372. package/src/buffer/fixml/fixml-parser.ts +80 -60
  373. package/src/buffer/fixml/fixml-view.ts +6 -7
  374. package/src/buffer/fixml/populated-attributes.ts +1 -1
  375. package/src/buffer/msg-encoder.ts +2 -1
  376. package/src/buffer/msg-view.ts +73 -53
  377. package/src/buffer/segment/segment-description.ts +13 -13
  378. package/src/buffer/segment/segment-summary.ts +3 -2
  379. package/src/buffer/structure.ts +6 -6
  380. package/src/buffer/time-format-template.ts +1 -1
  381. package/src/collections/collection.ts +2 -6
  382. package/src/collections/dictionary.ts +4 -5
  383. package/src/config/empty-log-factory.ts +1 -0
  384. package/src/config/get-js-fx-logger.ts +1 -2
  385. package/src/config/js-fix-config.ts +6 -6
  386. package/src/config/js-fix-logger.ts +14 -9
  387. package/src/config/js-fix-winston-log-factory.ts +2 -1
  388. package/src/config/winston-logger.ts +9 -7
  389. package/src/dictionary/compiler/compiler-settings.ts +5 -5
  390. package/src/dictionary/compiler/compiler-type.ts +1 -1
  391. package/src/dictionary/compiler/enum-compiler.ts +14 -16
  392. package/src/dictionary/compiler/msg-compiler.ts +15 -17
  393. package/src/dictionary/compiler/standard-snippet.ts +28 -27
  394. package/src/dictionary/contained/contained-component-field.ts +5 -4
  395. package/src/dictionary/contained/contained-field-dispatcher.ts +3 -3
  396. package/src/dictionary/contained/contained-field-set.ts +21 -21
  397. package/src/dictionary/contained/contained-field.ts +4 -1
  398. package/src/dictionary/contained/contained-group-field.ts +4 -4
  399. package/src/dictionary/contained/contained-simple-field.ts +5 -5
  400. package/src/dictionary/contained/field-dispatcher.ts +3 -3
  401. package/src/dictionary/contained/fields-dispatch.ts +0 -1
  402. package/src/dictionary/definition/component-field-definition.ts +4 -4
  403. package/src/dictionary/definition/fix-definitions.ts +8 -8
  404. package/src/dictionary/definition/group-field-definition.ts +5 -5
  405. package/src/dictionary/definition/message-definition.ts +4 -4
  406. package/src/dictionary/definition/simple-field-definition.ts +9 -9
  407. package/src/dictionary/dict-primitive.ts +2 -2
  408. package/src/dictionary/field-enum.ts +3 -2
  409. package/src/dictionary/fix-versions.ts +10 -10
  410. package/src/dictionary/parser/fix-repository/repository-xml-parser.ts +7 -8
  411. package/src/dictionary/parser/fix-repository/repository.ts +38 -30
  412. package/src/dictionary/parser/fixml/components-parser.ts +57 -51
  413. package/src/dictionary/parser/fixml/fields-parser.ts +9 -10
  414. package/src/dictionary/parser/fixml/fix-xsd-parser.ts +2 -3
  415. package/src/dictionary/parser/fixml/include-graph.ts +26 -21
  416. package/src/dictionary/parser/fixml/xsd-parser.ts +5 -5
  417. package/src/dictionary/parser/quickfix/field-definition-parser.ts +3 -5
  418. package/src/dictionary/parser/quickfix/field-set-parser.ts +2 -2
  419. package/src/dictionary/parser/quickfix/message-parser.ts +9 -6
  420. package/src/dictionary/parser/quickfix/node-parser.ts +20 -18
  421. package/src/dictionary/parser/quickfix/parse-context.ts +4 -4
  422. package/src/dictionary/parser/quickfix/quick-fix-xml-file-parser.ts +13 -15
  423. package/src/dictionary/set-reduce.ts +4 -3
  424. package/src/dictionary/type-dispatcher.ts +3 -3
  425. package/src/dictionary/version-util.ts +8 -8
  426. package/src/jsfix-cmd.ts +82 -58
  427. package/src/runtime/make-config.ts +15 -10
  428. package/src/runtime/session-container.ts +26 -18
  429. package/src/runtime/session-launcher.ts +58 -30
  430. package/src/sample/http/oms/app.ts +24 -7
  431. package/src/sample/http/oms/http-client.ts +3 -3
  432. package/src/sample/http/oms/http-server.ts +7 -1
  433. package/src/sample/http/oms/oms-factory.ts +3 -3
  434. package/src/sample/tcp/qf-md/app.ts +3 -3
  435. package/src/sample/tcp/qf-md/md-client.ts +1 -1
  436. package/src/sample/tcp/qf-md/md-factory.ts +3 -2
  437. package/src/sample/tcp/qf-md/md-server.ts +2 -2
  438. package/src/sample/tcp/recovering-skeleton/app.ts +37 -20
  439. package/src/sample/tcp/recovering-skeleton/respawn-acceptor.ts +66 -4
  440. package/src/sample/tcp/recovering-skeleton/skeleton-client.ts +2 -2
  441. package/src/sample/tcp/recovering-skeleton/skeleton-server.ts +4 -4
  442. package/src/sample/tcp/skeleton/app.ts +1 -1
  443. package/src/sample/tcp/skeleton/skeleton-session.ts +7 -7
  444. package/src/sample/tcp/tls-trade-capture/app.ts +1 -1
  445. package/src/sample/tcp/trade-capture/app-launcher.ts +4 -4
  446. package/src/sample/tcp/trade-capture/trade-capture-client.ts +7 -5
  447. package/src/sample/tcp/trade-capture/trade-capture-server.ts +10 -5
  448. package/src/sample/tcp/trade-capture/trade-factory.ts +1 -1
  449. package/src/store/fix-msg-ascii-store-resend.ts +5 -6
  450. package/src/store/fix-msg-memory-store.ts +22 -21
  451. package/src/store/fix-msg-store-record.ts +8 -8
  452. package/src/store/fix-msg-store-state.ts +2 -2
  453. package/src/store/fix-msg-store.ts +7 -7
  454. package/src/transport/ascii/ascii-msg-transmitter.ts +20 -14
  455. package/src/transport/ascii/ascii-session-msg-factory.ts +5 -6
  456. package/src/transport/ascii/ascii-session.ts +40 -29
  457. package/src/transport/duplex/http-duplex.ts +11 -9
  458. package/src/transport/duplex/string-duplex.ts +4 -5
  459. package/src/transport/factory/msg-transport.ts +5 -6
  460. package/src/transport/fix-acceptor.ts +2 -2
  461. package/src/transport/fix-entity.ts +1 -1
  462. package/src/transport/fix-initiator.ts +1 -1
  463. package/src/transport/fixml/fixml-msg-transmitter.ts +4 -3
  464. package/src/transport/fixml/fixml-session-msg-factory.ts +1 -2
  465. package/src/transport/fixml/fixml-session.ts +7 -6
  466. package/src/transport/http/html-options.ts +5 -5
  467. package/src/transport/http/html-route.ts +1 -1
  468. package/src/transport/http/http-acceptor-listener.ts +6 -4
  469. package/src/transport/http/http-acceptor.ts +36 -34
  470. package/src/transport/http/http-adapter.ts +3 -3
  471. package/src/transport/http/http-initiator.ts +22 -16
  472. package/src/transport/http/http-json-sample-adapter.ts +17 -16
  473. package/src/transport/http/http-transaction.ts +1 -1
  474. package/src/transport/http/http-transport-description.ts +1 -1
  475. package/src/transport/msg-application.ts +4 -4
  476. package/src/transport/msg-transmitter.ts +5 -5
  477. package/src/transport/session/a-session-msg-factory.ts +2 -3
  478. package/src/transport/session/fix-session-state.ts +24 -18
  479. package/src/transport/session/fix-session.ts +169 -96
  480. package/src/transport/session/make-fix-session.ts +1 -2
  481. package/src/transport/session/session-description.ts +2 -2
  482. package/src/transport/session/session-msg-factory.ts +9 -9
  483. package/src/transport/tcp/recovering-tcp-initiator.ts +39 -21
  484. package/src/transport/tcp/tcp-acceptor-listener.ts +4 -3
  485. package/src/transport/tcp/tcp-acceptor.ts +23 -22
  486. package/src/transport/tcp/tcp-initiator-connector.ts +16 -10
  487. package/src/transport/tcp/tcp-initiator.ts +57 -46
  488. package/src/transport/tcp/tcp-transport-description.ts +1 -1
  489. package/src/transport/tcp/tls-options-factory.ts +21 -8
  490. package/src/transport/tcp/tls-options.ts +11 -7
  491. package/src/util/json-helper.ts +6 -5
  492. package/src/util/message-generator.ts +6 -7
  493. package/tsconfig.json +2 -0
  494. package/.eslintrc.js +0 -6
  495. package/dist/buffer/ascii-chars.d.ts +0 -22
  496. package/dist/buffer/ascii-chars.js +0 -29
  497. package/dist/buffer/ascii-chars.js.map +0 -1
  498. package/dist/buffer/segment-description.d.ts +0 -33
  499. package/dist/buffer/segment-description.js +0 -80
  500. package/dist/buffer/segment-description.js.map +0 -1
  501. package/dist/buffer/segment-summary.d.ts +0 -13
  502. package/dist/buffer/segment-summary.js +0 -20
  503. package/dist/buffer/segment-summary.js.map +0 -1
  504. package/dist/buffer/tag-pos.d.ts +0 -12
  505. package/dist/buffer/tag-pos.js +0 -55
  506. package/dist/buffer/tag-pos.js.map +0 -1
  507. package/dist/buffer/tags.d.ts +0 -32
  508. package/dist/buffer/tags.js +0 -135
  509. package/dist/buffer/tags.js.map +0 -1
  510. package/dist/dictionary/fields-dispatch.d.ts +0 -13
  511. package/dist/dictionary/fields-dispatch.js +0 -40
  512. package/dist/dictionary/fields-dispatch.js.map +0 -1
  513. package/dist/sample/launcher.d.ts +0 -12
  514. package/dist/sample/launcher.js +0 -63
  515. package/dist/sample/launcher.js.map +0 -1
  516. package/dist/test/ascii-encoder.test.d.ts +0 -1
  517. package/dist/test/ascii-encoder.test.js +0 -529
  518. package/dist/test/ascii-encoder.test.js.map +0 -1
  519. package/dist/test/ascii-parser.test.d.ts +0 -1
  520. package/dist/test/ascii-parser.test.js +0 -142
  521. package/dist/test/ascii-parser.test.js.map +0 -1
  522. package/dist/test/ascii-segment.test.d.ts +0 -1
  523. package/dist/test/ascii-segment.test.js +0 -107
  524. package/dist/test/ascii-segment.test.js.map +0 -1
  525. package/dist/test/ascii-store-replay.test.d.ts +0 -1
  526. package/dist/test/ascii-store-replay.test.js +0 -121
  527. package/dist/test/ascii-store-replay.test.js.map +0 -1
  528. package/dist/test/ascii-tag-pos.test.d.ts +0 -1
  529. package/dist/test/ascii-tag-pos.test.js +0 -105
  530. package/dist/test/ascii-tag-pos.test.js.map +0 -1
  531. package/dist/test/execution-report.test.d.ts +0 -1
  532. package/dist/test/execution-report.test.js +0 -490
  533. package/dist/test/execution-report.test.js.map +0 -1
  534. package/dist/test/fix-log-replay.test.d.ts +0 -1
  535. package/dist/test/fix-log-replay.test.js +0 -45
  536. package/dist/test/fix-log-replay.test.js.map +0 -1
  537. package/dist/test/fix-repo-dict.test.d.ts +0 -1
  538. package/dist/test/fix-repo-dict.test.js +0 -127
  539. package/dist/test/fix-repo-dict.test.js.map +0 -1
  540. package/dist/test/fixml-alloc-parse.test.d.ts +0 -1
  541. package/dist/test/fixml-alloc-parse.test.js +0 -160
  542. package/dist/test/fixml-alloc-parse.test.js.map +0 -1
  543. package/dist/test/fixml-mkt-data-fut-parse.test.d.ts +0 -1
  544. package/dist/test/fixml-mkt-data-fut-parse.test.js +0 -60
  545. package/dist/test/fixml-mkt-data-fut-parse.test.js.map +0 -1
  546. package/dist/test/fixml-mkt-data-settle-parse.test.d.ts +0 -1
  547. package/dist/test/fixml-mkt-data-settle-parse.test.js +0 -33
  548. package/dist/test/fixml-mkt-data-settle-parse.test.js.map +0 -1
  549. package/dist/test/fixml-tc-bi-lateral-parse.test.d.ts +0 -1
  550. package/dist/test/fixml-tc-bi-lateral-parse.test.js +0 -96
  551. package/dist/test/fixml-tc-bi-lateral-parse.test.js.map +0 -1
  552. package/dist/test/includes.test.d.ts +0 -1
  553. package/dist/test/includes.test.js +0 -42
  554. package/dist/test/includes.test.js.map +0 -1
  555. package/dist/test/logon.test.d.ts +0 -1
  556. package/dist/test/logon.test.js +0 -93
  557. package/dist/test/logon.test.js.map +0 -1
  558. package/dist/test/memory-store.test.d.ts +0 -1
  559. package/dist/test/memory-store.test.js +0 -75
  560. package/dist/test/memory-store.test.js.map +0 -1
  561. package/dist/test/qf-full-msg.test.d.ts +0 -1
  562. package/dist/test/qf-full-msg.test.js +0 -76
  563. package/dist/test/qf-full-msg.test.js.map +0 -1
  564. package/dist/test/repo-full-ascii-msg.test.d.ts +0 -1
  565. package/dist/test/repo-full-ascii-msg.test.js +0 -82
  566. package/dist/test/repo-full-ascii-msg.test.js.map +0 -1
  567. package/dist/test/repo-full-fixml-msg.test.d.ts +0 -1
  568. package/dist/test/repo-full-fixml-msg.test.js +0 -136
  569. package/dist/test/repo-full-fixml-msg.test.js.map +0 -1
  570. package/dist/test/session-state.test.d.ts +0 -1
  571. package/dist/test/session-state.test.js +0 -74
  572. package/dist/test/session-state.test.js.map +0 -1
  573. package/dist/test/session.test.d.ts +0 -1
  574. package/dist/test/session.test.js +0 -412
  575. package/dist/test/session.test.js.map +0 -1
  576. package/dist/test/time-formatter.test.d.ts +0 -1
  577. package/dist/test/time-formatter.test.js +0 -78
  578. package/dist/test/time-formatter.test.js.map +0 -1
  579. package/dist/test/to-views.d.ts +0 -11
  580. package/dist/test/to-views.js +0 -55
  581. package/dist/test/to-views.js.map +0 -1
  582. package/dist/test/view-decode.test.d.ts +0 -1
  583. package/dist/test/view-decode.test.js +0 -208
  584. package/dist/test/view-decode.test.js.map +0 -1
  585. package/dist/transport/a-session-msg-factory.d.ts +0 -23
  586. package/dist/transport/a-session-msg-factory.js +0 -58
  587. package/dist/transport/a-session-msg-factory.js.map +0 -1
  588. package/dist/transport/ascii-session-msg-factory.d.ts +0 -16
  589. package/dist/transport/ascii-session-msg-factory.js +0 -47
  590. package/dist/transport/ascii-session-msg-factory.js.map +0 -1
  591. package/dist/transport/fix-msg-factory.d.ts +0 -15
  592. package/dist/transport/fix-msg-factory.js +0 -3
  593. package/dist/transport/fix-msg-factory.js.map +0 -1
  594. package/dist/transport/fix-session-state-args.d.ts +0 -8
  595. package/dist/transport/fix-session-state-args.js +0 -3
  596. package/dist/transport/fix-session-state-args.js.map +0 -1
  597. package/dist/transport/fix-session-state.d.ts +0 -32
  598. package/dist/transport/fix-session-state.js +0 -133
  599. package/dist/transport/fix-session-state.js.map +0 -1
  600. package/dist/transport/fix-session.d.ts +0 -50
  601. package/dist/transport/fix-session.js +0 -290
  602. package/dist/transport/fix-session.js.map +0 -1
  603. package/dist/transport/fixml/acceptor.d.ts +0 -3
  604. package/dist/transport/fixml/acceptor.js +0 -38
  605. package/dist/transport/fixml/acceptor.js.map +0 -1
  606. package/dist/transport/fixml-session-msg-factory.d.ts +0 -13
  607. package/dist/transport/fixml-session-msg-factory.js +0 -68
  608. package/dist/transport/fixml-session-msg-factory.js.map +0 -1
  609. package/dist/transport/make-config.d.ts +0 -4
  610. package/dist/transport/make-config.js +0 -31
  611. package/dist/transport/make-config.js.map +0 -1
  612. package/dist/transport/make-fix-session.d.ts +0 -5
  613. package/dist/transport/make-fix-session.js +0 -3
  614. package/dist/transport/make-fix-session.js.map +0 -1
  615. package/dist/transport/make-fixl-session.d.ts +0 -5
  616. package/dist/transport/make-fixl-session.js +0 -3
  617. package/dist/transport/make-fixl-session.js.map +0 -1
  618. package/dist/transport/msg-transport.d.ts +0 -14
  619. package/dist/transport/msg-transport.js +0 -57
  620. package/dist/transport/msg-transport.js.map +0 -1
  621. package/dist/transport/session-description.d.ts +0 -64
  622. package/dist/transport/session-description.js +0 -3
  623. package/dist/transport/session-description.js.map +0 -1
  624. package/dist/transport/session-msg-factory.d.ts +0 -6
  625. package/dist/transport/session-msg-factory.js +0 -13
  626. package/dist/transport/session-msg-factory.js.map +0 -1
  627. package/dist/transport/session-state.d.ts +0 -25
  628. package/dist/transport/session-state.js +0 -30
  629. package/dist/transport/session-state.js.map +0 -1
  630. package/dist/transport/tcp/acceptor.d.ts +0 -3
  631. package/dist/transport/tcp/acceptor.js +0 -40
  632. package/dist/transport/tcp/acceptor.js.map +0 -1
  633. package/dist/transport/tcp/initiator.d.ts +0 -3
  634. package/dist/transport/tcp/initiator.js +0 -67
  635. package/dist/transport/tcp/initiator.js.map +0 -1
  636. package/dist/util/dictionary-definitions.d.ts +0 -8
  637. package/dist/util/dictionary-definitions.js +0 -51
  638. package/dist/util/dictionary-definitions.js.map +0 -1
  639. package/tslint.json +0 -3
@@ -6,7 +6,6 @@ import { FixSession } from '../session/fix-session'
6
6
  import { SessionState } from '../session/session-state'
7
7
 
8
8
  export abstract class FixmlSession extends FixSession {
9
-
10
9
  protected constructor (public readonly config: IJsFixConfig) {
11
10
  super(config)
12
11
  this.requestLogoutType = 'UserReq'
@@ -15,7 +14,6 @@ export abstract class FixmlSession extends FixSession {
15
14
  }
16
15
 
17
16
  protected onMsg (msgType: string, view: MsgView): void {
18
-
19
17
  switch (msgType) {
20
18
  case 'UserReq':
21
19
  case 'UserRsp': {
@@ -66,16 +64,19 @@ export abstract class FixmlSession extends FixSession {
66
64
  }
67
65
  }
68
66
 
69
- private peerLogon (view: MsgView) {
67
+ private peerLogon (view: MsgView): void {
70
68
  const logger = this.sessionLogger
71
69
  const state = this.sessionState
72
70
  state.state = SessionState.InitiationLogonReceived
73
71
  state.peerCompId = view.getTyped(MsgTag.SenderCompID)
74
72
  if (this.acceptor) {
75
- const reqId: string = view.getString('UserReqID')
76
- this.send('UserRsp', this.config.factory.logon(reqId, true))
73
+ const reqId: string = view.getString('UserReqID') ?? 'req'
74
+ const o = this?.config?.factory?.logon(reqId, true)
75
+ if (o) {
76
+ this.send('UserRsp', o)
77
+ }
77
78
  }
78
- logger.info(`system ready, inform app`)
79
+ logger.info('system ready, inform app')
79
80
  this.onReady(view)
80
81
  }
81
82
  }
@@ -1,8 +1,8 @@
1
1
  export interface IHtmlOptions {
2
- method: string,
3
- uri: string,
4
- json: boolean,
5
- body: any,
6
- headers: any,
2
+ method: string
3
+ url: string
4
+ json: boolean
5
+ data: any
6
+ headers: any
7
7
  resolveWithFullResponse: boolean
8
8
  }
@@ -1,6 +1,6 @@
1
1
  import { IHtmlOptions } from './html-options'
2
2
 
3
3
  export interface IHtmlRoute {
4
- name: string,
4
+ name: string
5
5
  value: IHtmlOptions
6
6
  }
@@ -12,8 +12,9 @@ export class HttpAcceptorListener extends FixEntity {
12
12
  constructor (@inject(DITokens.IJsFixConfig) public readonly config: IJsFixConfig) {
13
13
  super(config)
14
14
  }
15
- start (): Promise<any> {
16
- return new Promise<any>(async (accept, reject) => {
15
+
16
+ async start (): Promise<any> {
17
+ return new Promise<any>(async (resolve, reject) => {
17
18
  const logger = this.config.logFactory.logger('acceptor')
18
19
  const sessionContainer = this.config.sessionContainer
19
20
  if (!sessionContainer.isRegistered(DITokens.FixSession)) {
@@ -24,15 +25,16 @@ export class HttpAcceptorListener extends FixEntity {
24
25
  acceptor.on('transport', (t: MsgTransport) => {
25
26
  logger.info(`creates new transport using DI token ${DITokens.FixSession}.`)
26
27
  const acceptorSession = sessionContainer.resolve<FixSession>(DITokens.FixSession)
28
+ this.emit('session', acceptorSession, t)
27
29
  acceptorSession.run(t).then(() => {
28
30
  logger.info('ends')
29
31
  acceptor.close(() => {
30
32
  logger.info('acceptor closed.')
31
- accept(true)
33
+ resolve(true)
32
34
  })
33
35
  }).catch((e: Error) => {
34
36
  logger.error(e)
35
- logger.info(e.stack)
37
+ logger.info(e?.stack ?? '')
36
38
  reject(e)
37
39
  })
38
40
  })
@@ -14,16 +14,16 @@ import { DITokens } from '../../runtime/di-tokens'
14
14
 
15
15
  @injectable()
16
16
  export class HttpAcceptor extends FixAcceptor {
17
- private app: express.Express = express()
17
+ private readonly app: express.Express = express()
18
18
  private server: http.Server
19
19
  private readonly logger: IJsFixLogger
20
20
  private readonly router: express.Router
21
21
  private nextId: number = 0
22
- private keys: Dictionary<MsgTransport> = new Dictionary()
22
+ private readonly keys: Dictionary<MsgTransport> = new Dictionary()
23
23
 
24
24
  constructor (@inject(DITokens.IJsFixConfig) public readonly config: IJsFixConfig) {
25
- super(config.description.application)
26
- this.logger = config.logFactory.logger(`${config.description.application.name}:HttpAcceptor`)
25
+ super(config?.description?.application ?? null)
26
+ this.logger = config.logFactory.logger(`${config?.description?.application?.name}:HttpAcceptor`)
27
27
  this.logger.info('creating http server')
28
28
  this.router = express.Router()
29
29
  this.router.use(bodyParser.json())
@@ -33,21 +33,21 @@ export class HttpAcceptor extends FixAcceptor {
33
33
 
34
34
  public listen (): void {
35
35
  const app = this.config.description.application
36
- const port = app.http.port
36
+ const port = app?.http?.port ?? 0
37
37
  const logger = this.logger
38
38
  logger.info(`start to listen ${port}`)
39
39
  this.server = this.app.listen(port, () => {
40
- logger.info(`app listening at http://localhost:${port}${app.http.uri}`)
40
+ logger.info(`app listening at http://localhost:${port}${app?.http?.uri}`)
41
41
  })
42
- this.server.on('error', ((err: Error) => {
42
+ this.server.on('error', (err: Error) => {
43
43
  logger.error(err)
44
44
  this.emit('error', err)
45
- }))
45
+ })
46
46
  }
47
47
 
48
48
  public close (callback?: (err?: Error) => void): void {
49
49
  const app = this.config.description.application
50
- const port = app.http.port
50
+ const port = app?.http?.port
51
51
  this.logger.info(`close listener on port ${port}`)
52
52
  this.server.close(callback)
53
53
  }
@@ -69,36 +69,36 @@ export class HttpAcceptor extends FixAcceptor {
69
69
  this.logger.info(`transport ${tid} ends total transports = ${keys.length}`)
70
70
  }
71
71
 
72
- private respond (duplex: FixDuplex, res: express.Response, token: string = null): Promise<any> {
73
- return new Promise<any>((accept, reject) => {
74
- res.setHeader('Content-Type', 'application/json')
72
+ private async respond (duplex: FixDuplex, response: express.Response, token: string | null = null): Promise<any> {
73
+ return new Promise<any>((resolve, reject) => {
74
+ response.setHeader('Content-Type', 'application/json')
75
75
  const timer = setTimeout(() => {
76
- const businessReject = `<FIXML><BizMsgRej BizRejRsn="4" Txt="no response from application"/></FIXML>`
76
+ const businessReject = '<FIXML><BizMsgRej BizRejRsn="4" Txt="no response from application"/></FIXML>'
77
77
  const b = Buffer.from(businessReject, 'utf-8')
78
78
  duplex.writable.removeListener('data', transmit)
79
- res.send(b)
79
+ response.send(b)
80
80
  reject(new Error('no response'))
81
81
  }, 5000)
82
82
 
83
- const transmit = (d: Buffer) => {
83
+ const transmit = (d: Buffer): void => {
84
84
  this.logger.info('responding to request')
85
85
  clearTimeout(timer)
86
86
  if (token) {
87
- res.setHeader('authorization', token)
87
+ response.setHeader('authorization', token)
88
88
  }
89
89
  duplex.writable.removeListener('data', transmit)
90
- res.send(d)
91
- accept(true)
90
+ response.send(d)
91
+ resolve(true)
92
92
  }
93
93
 
94
94
  duplex.writable.on('data', transmit)
95
95
  })
96
96
  }
97
97
 
98
- private async logon (req: express.Request, res: express.Response) {
98
+ private async logon (req: express.Request, res: express.Response): Promise<void> {
99
99
  const body: IFixmlRequest = req.body
100
100
  const id = this.nextId++
101
- this.logger.info(JSON.stringify(body, null,4))
101
+ this.logger.info(JSON.stringify(body, null, 4))
102
102
  // check hand back session key
103
103
  const d = new StringDuplex()
104
104
  const transport = new MsgTransport(id, this.config, d)
@@ -111,28 +111,30 @@ export class HttpAcceptor extends FixAcceptor {
111
111
  d.readable.push(body.fixml)
112
112
  }
113
113
 
114
- private async logout (req: express.Request, res: express.Response) {
114
+ private async logout (req: express.Request, res: express.Response): Promise<void> {
115
115
  const headers = req.headers
116
116
  const body: IFixmlRequest = req.body
117
- const t: MsgTransport = this.keys.get(headers.authorization)
117
+ const t: MsgTransport | null = this.keys.get(headers?.authorization ?? '')
118
118
  if (t) {
119
119
  const token = req.headers.authorization
120
- this.harvestTransport(token, t.id)
121
- const d = t.duplex
122
- this.respond(d, res, token).then(() => {
123
- this.logger.info('responded to logout')
124
- t.end()
125
- }).catch((e: Error) => {
126
- this.logger.error(e)
127
- })
128
- d.readable.push(body.fixml)
120
+ if (token) {
121
+ this.harvestTransport(token, t.id)
122
+ const d = t.duplex
123
+ this.respond(d, res, token).then(() => {
124
+ this.logger.info('responded to logout')
125
+ t.end()
126
+ }).catch((e: Error) => {
127
+ this.logger.error(e)
128
+ })
129
+ d.readable.push(body.fixml)
130
+ }
129
131
  }
130
132
  }
131
133
 
132
134
  private subscribe (): void {
133
135
  const router = this.router
134
136
  const app = this.config.description.application
135
- const root = app.http.uri
137
+ const root = app?.http?.uri
136
138
  const authorise = `${root}authorise`
137
139
  const query = `${root}query`
138
140
  this.logger.info(`uri: authorise ${authorise}, query ${query}`)
@@ -149,9 +151,9 @@ export class HttpAcceptor extends FixAcceptor {
149
151
  router.get(query, async (req: express.Request, res: express.Response) => {
150
152
  const headers = req.headers
151
153
  const body: IFixmlRequest = req.body
152
- const t: MsgTransport = this.keys.get(headers.authorization)
154
+ const t: MsgTransport | null = this.keys.get(headers.authorization ?? '') ?? null
153
155
  if (!t) {
154
- this.logger.info(`received request with no token`)
156
+ this.logger.info('received request with no token')
155
157
  res.send({
156
158
  error: 'no key with query'
157
159
  })
@@ -1,7 +1,7 @@
1
1
  import { IHtmlOptions } from './html-options'
2
2
 
3
3
  export interface IHttpAdapter {
4
- getOptions (data: Buffer): IHtmlOptions
5
- beginMessage (msgType: string): void
6
- endMessage (m: any): Buffer
4
+ getOptions: (data: Buffer) => IHtmlOptions | null
5
+ beginMessage: (msgType: string) => void
6
+ endMessage: (m: any) => Buffer
7
7
  }
@@ -14,16 +14,16 @@ export class HttpInitiator extends FixEntity {
14
14
  this.logger = config.logFactory.logger('initiator')
15
15
  }
16
16
 
17
- start (): Promise<any> {
18
- return this.connect(this.config)
17
+ async start (): Promise<any> {
18
+ return await this.connect(this.config)
19
19
  }
20
20
 
21
- // the adapter will be provided on config
22
- connect (config: IJsFixConfig): Promise<any> {
23
- return new Promise<any>(async (accept, reject) => {
24
- const adapter = config.description.application.http.adapter
21
+ // the adapter will be provided on config
22
+ async connect (config: IJsFixConfig): Promise<any> {
23
+ return await new Promise<any>(async (resolve, reject) => {
24
+ const adapter = config?.description?.application?.http?.adapter
25
25
  if (!adapter) {
26
- reject('http initiator needs config.description.application.http.adapter')
26
+ reject(new Error('http initiator needs config.description.application.http.adapter'))
27
27
  }
28
28
  const sessionContainer = this.config.sessionContainer
29
29
  if (!sessionContainer.isRegistered(DITokens.FixSession)) {
@@ -32,15 +32,21 @@ export class HttpInitiator extends FixEntity {
32
32
  this.logger.info(`create session with DI Token ${DITokens.FixSession}`)
33
33
  const initiatorSession = sessionContainer.resolve<FixSession>(DITokens.FixSession)
34
34
  this.logger.info('connecting ...')
35
- const initiatorTransport: MsgTransport = new MsgTransport(0, config, new HttpDuplex(adapter))
36
- this.logger.info('... connected, run session')
37
- initiatorSession.run(initiatorTransport).then(() => {
38
- this.logger.info('ends')
39
- accept(true)
40
- }).catch((e: Error) => {
41
- this.logger.error(e)
42
- reject(e)
43
- })
35
+ const initiatorTransport: MsgTransport | null = adapter
36
+ ? new MsgTransport(0, config, new HttpDuplex(adapter))
37
+ : null
38
+ if (!initiatorTransport) {
39
+ reject(new Error('no initiatorTransport for http'))
40
+ } else {
41
+ this.logger.info('... connected, run session')
42
+ initiatorSession.run(initiatorTransport).then(() => {
43
+ this.logger.info('ends')
44
+ resolve(true)
45
+ }).catch((e: Error) => {
46
+ this.logger.error(e)
47
+ reject(e)
48
+ })
49
+ }
44
50
  })
45
51
  }
46
52
  }
@@ -9,14 +9,14 @@ import { DITokens } from '../../runtime/di-tokens'
9
9
 
10
10
  @injectable()
11
11
  export class HttpJsonSampleAdapter implements IHttpAdapter {
12
- private logger: IJsFixLogger
13
- private queue: HttpTransaction[] = []
14
- private token: string = null
15
- private routes: Dictionary<IHtmlRoute> = new Dictionary()
12
+ private readonly logger: IJsFixLogger
13
+ private readonly queue: HttpTransaction[] = []
14
+ private token: string | null = null
15
+ private readonly routes: Dictionary<IHtmlRoute> = new Dictionary()
16
16
  constructor (@inject(DITokens.IJsFixConfig) public readonly config: IJsFixConfig) {
17
17
  this.logger = config.logFactory.logger('http.adapter')
18
18
  const routes = this.routes
19
- const options = config.description.application.http.options
19
+ const options = config?.description?.application?.http?.options
20
20
  if (!options) {
21
21
  return
22
22
  }
@@ -26,17 +26,18 @@ export class HttpJsonSampleAdapter implements IHttpAdapter {
26
26
  this.logger.info(`instance created routes ${routes.count()}`)
27
27
  }
28
28
 
29
- public getOptions (data: Buffer): IHtmlOptions {
29
+ public getOptions (data: Buffer): IHtmlOptions | null {
30
30
  const q = this.queue
31
31
  if (q.length === 0) {
32
32
  return null
33
33
  }
34
- const next: HttpTransaction = q.shift()
34
+ const next: HttpTransaction | null = q.shift() ?? null
35
+ if (next == null) return null
35
36
  const options = next.options
36
- options.body = {
37
+ options.data = {
37
38
  fixml: data.toString()
38
39
  }
39
- this.logger.info(`${next.msgType}: ${next.options.method} ${next.options.uri} ${data.length}`)
40
+ this.logger.info(`${next.msgType}: ${next.options.method} ${next.options.url} ${data.length}`)
40
41
  return options
41
42
  }
42
43
 
@@ -47,19 +48,19 @@ export class HttpJsonSampleAdapter implements IHttpAdapter {
47
48
  this.token = headers.authorization
48
49
  this.logger.info(`receive token ${this.token}`)
49
50
  }
50
- return m.body
51
+ return m.data
51
52
  }
52
53
 
53
54
  beginMessage (msgType: string): void {
54
55
  // build options based on type
55
56
  const routes = this.routes
56
- const route = routes.get(msgType) || routes.get('default')
57
+ const route = routes.get(msgType) ?? routes.get('default')
57
58
  const options = {
58
- method: route.value.method,
59
- uri: route.value.uri,
60
- json: route.value.json,
61
- resolveWithFullResponse: route.value.resolveWithFullResponse,
62
- headers: route.value.headers
59
+ method: route?.value.method,
60
+ url: route?.value.url,
61
+ json: route?.value.json,
62
+ resolveWithFullResponse: route?.value.resolveWithFullResponse,
63
+ headers: route?.value.headers
63
64
  } as IHtmlOptions
64
65
  const headers = options.headers
65
66
  if (headers) {
@@ -2,6 +2,6 @@ import { IHtmlOptions } from './html-options'
2
2
 
3
3
  export class HttpTransaction {
4
4
  constructor (public readonly msgType: string,
5
- public readonly options: IHtmlOptions) {
5
+ public readonly options: IHtmlOptions) {
6
6
  }
7
7
  }
@@ -3,7 +3,7 @@ import { IHttpAdapter } from './http-adapter'
3
3
 
4
4
  export interface IHttpTransportDescription {
5
5
  readonly port: number
6
- readonly uri: string,
6
+ readonly uri: string
7
7
  readonly options: IHtmlRoute[]
8
8
  adapter: IHttpAdapter
9
9
  }
@@ -3,11 +3,11 @@ import { IHttpTransportDescription } from './http/http-transport-description'
3
3
 
4
4
  export interface IMsgApplication {
5
5
  readonly name: string
6
- readonly type: string,
6
+ readonly type: string
7
7
  readonly resilient: boolean
8
8
  readonly reconnectSeconds: number
9
- readonly tcp?: ITcpTransportDescription,
10
- readonly http?: IHttpTransportDescription,
11
- readonly protocol: string,
9
+ readonly tcp?: ITcpTransportDescription
10
+ readonly http?: IHttpTransportDescription
11
+ readonly protocol: string
12
12
  readonly dictionary: string
13
13
  }
@@ -11,8 +11,8 @@ export abstract class MsgTransmitter extends events.EventEmitter {
11
11
  public encoder: MsgEncoder
12
12
 
13
13
  protected constructor (public readonly buffer: ElasticBuffer,
14
- public readonly definitions: FixDefinitions,
15
- public readonly session: ISessionDescription) {
14
+ public readonly definitions: FixDefinitions,
15
+ public readonly session: ISessionDescription) {
16
16
  super()
17
17
  this.encodeStream = this.encoderStream()
18
18
  this.encodeStream.on('error', (e: Error) => {
@@ -28,7 +28,7 @@ export abstract class MsgTransmitter extends events.EventEmitter {
28
28
  this.encodeStream.write(new MsgPayload(msgType, obj))
29
29
  }
30
30
 
31
- public abstract encodeMessage (msgType: string, obj: ILooseObject): void
31
+ public abstract encodeMessage (msgType: string, obj: ILooseObject): any
32
32
 
33
33
  // read fix messages from one side, encode buffers on other ready to pipe
34
34
  // to output stream, say a socket
@@ -41,11 +41,11 @@ export abstract class MsgTransmitter extends events.EventEmitter {
41
41
  try {
42
42
  const msgType = payload.msgType
43
43
  transmitter.encoder.reset()
44
- transmitter.encodeMessage(msgType, payload.obj)
44
+ const state = transmitter.encodeMessage(msgType, payload.obj)
45
45
  payload.encoded = transmitter.encoder.trim()
46
46
  this.push(payload.encoded)
47
47
  const encodedTxt = transmitter.buffer.toString()
48
- transmitter.emit('encoded', msgType, encodedTxt)
48
+ transmitter.emit('encoded', msgType, encodedTxt, state)
49
49
  done()
50
50
  } catch (e) {
51
51
  done(e)
@@ -13,12 +13,11 @@ import {
13
13
  ITestRequest
14
14
  } from '../../types/FIX4.4/repo'
15
15
 
16
- export interface ObjectMutator { (description: ISessionDescription, type: string, o: ILooseObject): ILooseObject
17
- }
16
+ export type ObjectMutator = (description: ISessionDescription, type: string, o: ILooseObject) => ILooseObject
18
17
 
19
18
  export abstract class ASessionMsgFactory implements ISessionMsgFactory {
20
19
  public isAscii: boolean
21
- constructor (public readonly description: ISessionDescription, public mutator: ObjectMutator = null) {
20
+ protected constructor (public readonly description: ISessionDescription, public mutator: ObjectMutator | null = null) {
22
21
  }
23
22
 
24
23
  public reject (msgType: string, seqNo: number, msg: string, reason: number): ILooseObject {
@@ -3,14 +3,15 @@ import moment = require('moment')
3
3
  import { TickAction } from '../tick-action'
4
4
  import { IFixSessionStateArgs } from './fix-session-state-args'
5
5
  import { SessionState } from './session-state'
6
+ import { ILooseObject } from '../../collections/collection'
6
7
 
7
8
  export class FixSessionState {
8
9
  public nextTickAction: TickAction = TickAction.Nothing
9
10
 
10
- public lastReceivedAt: Date = null
11
- public LastSentAt: Date = null
12
- public lastTestRequestAt: Date = null
13
- public logoutSentAt: Date = null
11
+ public lastReceivedAt: Date | null = null
12
+ public LastSentAt: Date | null = null
13
+ public lastTestRequestAt: Date | null = null
14
+ public logoutSentAt: Date | null = null
14
15
  public now: Date = new Date()
15
16
  public compId: string = ''
16
17
  public peerCompId: string = ''
@@ -24,8 +25,9 @@ export class FixSessionState {
24
25
  private secondsSinceLogoutSent: number = -1
25
26
  private secondsSinceSent: number = -1
26
27
  private secondsSinceReceive: number = -1
28
+ public lastHeader: ILooseObject | null = null
27
29
 
28
- public reset (resetSeqNo: boolean): void {
30
+ public reset (lastPeerMsgSeqNum: number = 0): void {
29
31
  this.lastReceivedAt = null
30
32
  this.LastSentAt = null
31
33
  this.lastTestRequestAt = null
@@ -35,16 +37,17 @@ export class FixSessionState {
35
37
  this.peerHeartBeatSecs = 0
36
38
  this.logoutSentAt = null
37
39
  this.nextTickAction = TickAction.Nothing
38
- if (resetSeqNo) {
39
- this.lastPeerMsgSeqNum = 0
40
- }
40
+ this.lastPeerMsgSeqNum = lastPeerMsgSeqNum
41
+ this.lastHeader = null
41
42
  }
42
43
 
43
- public constructor ({ heartBeat,
44
- state = SessionState.Idle,
45
- waitLogoutConfirmSeconds = 5,
46
- stopSeconds = 2,
47
- lastPeerMsgSeqNum = 0 }: IFixSessionStateArgs) {
44
+ public constructor ({
45
+ heartBeat,
46
+ state = SessionState.Idle,
47
+ waitLogoutConfirmSeconds = 5,
48
+ stopSeconds = 2,
49
+ lastPeerMsgSeqNum = 0
50
+ }: IFixSessionStateArgs) {
48
51
  this.heartBeat = heartBeat
49
52
  this.state = state
50
53
  this.waitLogoutConfirmSeconds = waitLogoutConfirmSeconds
@@ -52,15 +55,18 @@ export class FixSessionState {
52
55
  this.lastPeerMsgSeqNum = lastPeerMsgSeqNum
53
56
  }
54
57
 
55
- private static dateAsString (d: Date) {
58
+ private static dateAsString (d: Date | null): string {
56
59
  if (!d) {
57
60
  return 'null'
58
61
  }
59
62
  return moment(d).format('HH:mm:ss.SSS')
60
63
  }
61
64
 
62
- public toString (): string {
65
+ public lastSentSeqNum (): number {
66
+ return this?.lastHeader?.MsgSeqNum ?? 0
67
+ }
63
68
 
69
+ public toString (): string {
64
70
  const buffer = new ElasticBuffer(1024)
65
71
 
66
72
  buffer.writeString(`compId = ${this.compId}, `)
@@ -79,6 +85,7 @@ export class FixSessionState {
79
85
  buffer.writeString(`peerHeartBeatSecs = ${this.peerHeartBeatSecs}, `)
80
86
  buffer.writeString(`peerCompId = ${this.peerCompId}, `)
81
87
  buffer.writeString(`lastPeerMsgSeqNum = ${this.lastPeerMsgSeqNum}, `)
88
+ buffer.writeString(`LastSentSeqNum = ${this.lastSentSeqNum()}, `)
82
89
  buffer.writeString(`secondsSinceLogoutSent = ${this.secondsSinceLogoutSent}, `)
83
90
  buffer.writeString(`secondsSinceSent = ${this.secondsSinceSent}, `)
84
91
  buffer.writeString(`secondsSinceReceive = ${this.secondsSinceReceive}`)
@@ -91,7 +98,6 @@ export class FixSessionState {
91
98
  this.calcState()
92
99
 
93
100
  switch (this.state) {
94
-
95
101
  case SessionState.PeerLogonRejected: {
96
102
  if (this.secondsSinceSent >= this.stopSeconds) {
97
103
  this.nextTickAction = TickAction.Stop
@@ -154,7 +160,7 @@ export class FixSessionState {
154
160
  const time = this.now.getTime()
155
161
  this.nextTickAction = TickAction.Nothing
156
162
  this.secondsSinceLogoutSent = this.logoutSentAt ? (time - this.logoutSentAt.getTime()) / 1000 : -1
157
- this.secondsSinceSent = (time - this.LastSentAt.getTime()) / 1000
158
- this.secondsSinceReceive = (time - this.lastReceivedAt.getTime()) / 1000
163
+ this.secondsSinceSent = this.LastSentAt != null ? (time - this.LastSentAt.getTime()) / 1000 : 0
164
+ this.secondsSinceReceive = this.lastReceivedAt != null ? (time - this.lastReceivedAt.getTime()) / 1000 : 0
159
165
  }
160
166
  }