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
package/README.md CHANGED
@@ -220,8 +220,8 @@ Additionally, make sure to include the original message sequence and the duplica
220
220
 
221
221
  ```typescript
222
222
  {
223
- ...messageBodyData,
224
- StandardHeader: { PossDupFlag: true, MsgSeqNum: sequenceNumber},
223
+ ...messageBodyData,
224
+ StandardHeader: { PossDupFlag: true, MsgSeqNum: sequenceNumber},
225
225
  }
226
226
 
227
227
  ```
@@ -300,47 +300,47 @@ the method onApplicationMsg is called when a message is received. In this case
300
300
 
301
301
  ```typescript
302
302
  constructor (public readonly config: IJsFixConfig) {
303
- super(config)
304
- this.logReceivedMsgs = true
305
- this.reports = new Dictionary<ITradeCaptureReport>()
306
- this.fixLog = config.logFactory.plain(`jsfix.${config.description.application.name}.txt`)
307
- this.logger = config.logFactory.logger(`${this.me}:TradeCaptureClient`)
308
- }
303
+ super(config)
304
+ this.logReceivedMsgs = true
305
+ this.reports = new Dictionary<ITradeCaptureReport>()
306
+ this.fixLog = config.logFactory.plain(`jsfix.${config.description.application.name}.txt`)
307
+ this.logger = config.logFactory.logger(`${this.me}:TradeCaptureClient`)
308
+ }
309
309
 
310
- protected onApplicationMsg (msgType: string, view: MsgView): void {
311
- this.logger.info(`${view.toJson()}`)
312
- switch (msgType) {
313
- case MsgType.TradeCaptureReport: {
314
- // create an object and cast to the interface
315
- const tc: ITradeCaptureReport = view.toObject()
316
- this.reports.addUpdate(tc.TradeReportID, tc)
317
- this.logger.info(`[reports: ${this.reports.count()}] received tc ExecID = ${tc.ExecID} TradeReportID = ${tc.TradeReportID} Symbol = ${tc.Instrument.Symbol} ${tc.LastQty} @ ${tc.LastPx}`)
318
- break
319
- }
310
+ protected onApplicationMsg (msgType: string, view: MsgView): void {
311
+ this.logger.info(`${view.toJson()}`)
312
+ switch (msgType) {
313
+ case MsgType.TradeCaptureReport: {
314
+ // create an object and cast to the interface
315
+ const tc: ITradeCaptureReport = view.toObject()
316
+ this.reports.addUpdate(tc.TradeReportID, tc)
317
+ this.logger.info(`[reports: ${this.reports.count()}] received tc ExecID = ${tc.ExecID} TradeReportID = ${tc.TradeReportID} Symbol = ${tc.Instrument.Symbol} ${tc.LastQty} @ ${tc.LastPx}`)
318
+ break
319
+ }
320
320
 
321
- case MsgType.TradeCaptureReportRequestAck: {
322
- const tc: ITradeCaptureReportRequestAck = view.toObject()
323
- this.logger.info(`received tcr ack ${tc.TradeRequestID} ${tc.TradeRequestStatus}`)
324
- break
325
- }
321
+ case MsgType.TradeCaptureReportRequestAck: {
322
+ const tc: ITradeCaptureReportRequestAck = view.toObject()
323
+ this.logger.info(`received tcr ack ${tc.TradeRequestID} ${tc.TradeRequestStatus}`)
324
+ break
326
325
  }
327
326
  }
327
+ }
328
328
  ```
329
329
 
330
330
  the client onReady method is called when a connection is made and logon established and confirmed. In this case, client sends a trade capture request to the server.
331
331
 
332
332
  ```typescript
333
333
  protected onReady (view: MsgView): void {
334
- this.logger.info('ready')
335
- const tcr: ITradeCaptureReportRequest = TradeFactory.tradeCaptureReportRequest('all-trades', new Date())
336
- // send request to server
337
- this.send(MsgType.TradeCaptureReportRequest, tcr)
338
- const logoutSeconds = 32
339
- this.logger.info(`will logout after ${logoutSeconds}`)
340
- setTimeout(() => {
341
- this.done()
342
- }, logoutSeconds * 1000)
343
- }
334
+ this.logger.info('ready')
335
+ const tcr: ITradeCaptureReportRequest = TradeFactory.tradeCaptureReportRequest('all-trades', new Date())
336
+ // send request to server
337
+ this.send(MsgType.TradeCaptureReportRequest, tcr)
338
+ const logoutSeconds = 32
339
+ this.logger.info(`will logout after ${logoutSeconds}`)
340
+ setTimeout(() => {
341
+ this.done()
342
+ }, logoutSeconds * 1000)
343
+ }
344
344
 
345
345
  ```
346
346
 
@@ -348,55 +348,56 @@ the client onReady method is called when a connection is made and logon establis
348
348
 
349
349
  see src/test/view-decode.test.ts
350
350
 
351
+
351
352
  note that a view can only be used within a callback context unless it is cloned. Once returned, the memory is re-used for next message. It is intended to convert to an object or parsed into an application specific message.
352
353
 
353
354
  fetch a group view
354
355
 
355
356
  ```typescript
356
357
  const noMDEntriesView: MsgView = view.getView('NoMDEntries')
357
- const mmEntryView: MsgView = noMDEntriesView.getGroupInstance(1)
358
+ const mmEntryView: MsgView = noMDEntriesView.getGroupInstance(1)
358
359
 
359
- const mmEntryExpireTimeAsString: string = mmEntryView.getString('ExpireTime')
360
- expect(mmEntryExpireTimeAsString).toEqual('20180608-20:53:14.000')
361
- expect(mmEntryView.getString(126)).toEqual('20180608-20:53:14.000')
360
+ const mmEntryExpireTimeAsString: string = mmEntryView.getString('ExpireTime')
361
+ expect(mmEntryExpireTimeAsString).toEqual('20180608-20:53:14.000')
362
+ expect(mmEntryView.getString(126)).toEqual('20180608-20:53:14.000')
362
363
  ```
363
364
 
364
365
  fetch single tags
365
366
 
366
367
  ```typescript
367
368
  const erView: MsgView = views[0]
368
- expect(erView.getString(35)).toEqual('8')
369
- expect(erView.getString('MsgType')).toEqual('8')
370
- expect(erView.getString(8)).toEqual('FIX4.4')
371
- expect(erView.getTyped(9)).toEqual(6542)
372
- expect(erView.getTyped('TotNumReports')).toEqual(19404)
373
- expect(erView.getTyped('StrikePrice')).toEqual(52639)
369
+ expect(erView.getString(35)).toEqual('8')
370
+ expect(erView.getString('MsgType')).toEqual('8')
371
+ expect(erView.getString(8)).toEqual('FIX4.4')
372
+ expect(erView.getTyped(9)).toEqual(6542)
373
+ expect(erView.getTyped('TotNumReports')).toEqual(19404)
374
+ expect(erView.getTyped('StrikePrice')).toEqual(52639)
374
375
  ```
375
376
 
376
377
  fetch repeated tag
377
378
 
378
379
  ```typescript
379
380
  const erView: MsgView = views[0]
380
- expect(erView.getStrings('PartyID')).toEqual(['magna.', 'iaculis', 'vitae,'])
381
+ expect(erView.getStrings('PartyID')).toEqual(['magna.', 'iaculis', 'vitae,'])
381
382
  ```
382
383
 
383
384
  fetch a set of tags
384
385
 
385
386
  ```typescript
386
387
  const [a, b, c, d] = view.getTypedTags([8, 9, 35, 49])
387
- expect(a).toEqual('FIX4.4')
388
- expect(b).toEqual(2955)
389
- expect(c).toEqual('W')
390
- expect(d).toEqual('sender-10')
388
+ expect(a).toEqual('FIX4.4')
389
+ expect(b).toEqual(2955)
390
+ expect(c).toEqual('W')
391
+ expect(d).toEqual('sender-10')
391
392
  ```
392
393
 
393
394
  convert view into an object which can be used alongside an interface for intellisense.
394
395
 
395
396
  ```typescript
396
397
  import { ITradeCaptureReport } from '../../../types/FIX4.4/repo/trade_capture_report'
397
- import { ITradeCaptureReportRequest } from '../../../types/FIX4.4/repo/trade_capture_report_request'
398
+ import { ITradeCaptureReportRequest } from '../../../types/FIX4.4/repo/trade_capture_report_request'
398
399
 
399
- const tc: ITradeCaptureReport = view.toObject()
400
+ const tc: ITradeCaptureReport = view.toObject()
400
401
  ```
401
402
 
402
403
  from data/examples/FIX.4.4/quickfix/execution-report
@@ -405,24 +406,24 @@ get first in group fetched from object where group is array
405
406
 
406
407
  ```typescript
407
408
  import { IUndInstrmtGrp } from '../types/FIX4.4/quickfix/set/und_instrmt_grp'
408
- import { IUnderlyingInstrument } from '../types/FIX4.4/quickfix/set/underlying_instrument'
409
- const erView: MsgView = views[0]
410
- const undInstrmtGrpView: MsgView = erView.getView('UndInstrmtGrp')
411
- const undInstrmtGrpViewAsObject: IUndInstrmtGrp = undInstrmtGrpView.toObject()
412
- expect(undInstrmtGrpViewAsObject.NoUnderlyings.length).toEqual(2)
413
- const underlying0: IUnderlyingInstrument = undInstrmtGrpViewAsObject.NoUnderlyings[0].UnderlyingInstrument
414
- expect(underlying0.UnderlyingSymbol).toEqual('massa.')
409
+ import { IUnderlyingInstrument } from '../types/FIX4.4/quickfix/set/underlying_instrument'
410
+ const erView: MsgView = views[0]
411
+ const undInstrmtGrpView: MsgView = erView.getView('UndInstrmtGrp')
412
+ const undInstrmtGrpViewAsObject: IUndInstrmtGrp = undInstrmtGrpView.toObject()
413
+ expect(undInstrmtGrpViewAsObject.NoUnderlyings.length).toEqual(2)
414
+ const underlying0: IUnderlyingInstrument = undInstrmtGrpViewAsObject.NoUnderlyings[0].UnderlyingInstrument
415
+ expect(underlying0.UnderlyingSymbol).toEqual('massa.')
415
416
  ```
416
417
 
417
418
  fetch nested structure in one call
418
419
 
419
420
  ```typescript
420
421
  const legGrpView = view.getView('InstrmtLegGrp.NoLegs')
421
- expect(legGrpView).toBeTruthy()
422
- const legGrp: IInstrumentLeg[] = legGrpView.toObject()
423
- expect(legGrp).toBeTruthy()
424
- expect(Array.isArray(legGrp))
425
- expect(legGrp.length).toEqual(2)
422
+ expect(legGrpView).toBeTruthy()
423
+ const legGrp: IInstrumentLeg[] = legGrpView.toObject()
424
+ expect(legGrp).toBeTruthy()
425
+ expect(Array.isArray(legGrp))
426
+ expect(legGrp.length).toEqual(2)
426
427
  ```
427
428
 
428
429
  get a tokenised view of tags in view
@@ -435,7 +436,7 @@ get a component from parent - this is very low cost
435
436
 
436
437
  ```typescript
437
438
  const instrumentView: MsgView = view.getView('Instrument')
438
- const instrumentObject: IInstrument = view.getView('Instrument').toObject()
439
+ const instrumentObject: IInstrument = view.getView('Instrument').toObject()
439
440
  ```
440
441
 
441
442
  ## FIXML
@@ -444,46 +445,46 @@ Please see sample code src/sample/http for an example of how fixml can be used.
444
445
 
445
446
  ```typescript
446
447
  protected onReady (view: MsgView): void {
447
- this.logger.info('onReady')
448
- const logoutSeconds = this.logoutSeconds
449
- const req = this.factory.createOrder('IBM', Side.Buy, 10000, 100.12)
450
- this.send('NewOrderSingle', req)
451
- this.logger.info(`will logout after ${logoutSeconds}`)
452
- setTimeout(() => {
453
- this.done()
454
- }, 11 * 1000)
455
- }
448
+ this.logger.info('onReady')
449
+ const logoutSeconds = this.logoutSeconds
450
+ const req = this.factory.createOrder('IBM', Side.Buy, 10000, 100.12)
451
+ this.send('NewOrderSingle', req)
452
+ this.logger.info(`will logout after ${logoutSeconds}`)
453
+ setTimeout(() => {
454
+ this.done()
455
+ }, 11 * 1000)
456
+ }
456
457
 
457
- public createOrder (symbol: string, side: Side, qty: number, price: number): INewOrderSingle {
458
- const id: number = this.id++
459
- return {
460
- ClOrdID: `Cli${id}`,
461
- Account: this.account,
462
- Side: side,
463
- Price: price,
464
- OrdType: OrdType.Limit,
465
- OrderQtyData: {
466
- OrderQty: qty
467
- } as IOrderQtyData,
468
- Instrument: {
469
- Symbol: symbol,
470
- SecurityID: '459200101',
471
- SecurityIDSource: SecurityIDSource.IsinNumber
472
- } as IInstrument,
473
- TimeInForce: TimeInForce.GoodTillCancelGtc
474
- } as INewOrderSingle
475
- }
458
+ public createOrder (symbol: string, side: Side, qty: number, price: number): INewOrderSingle {
459
+ const id: number = this.id++
460
+ return {
461
+ ClOrdID: `Cli${id}`,
462
+ Account: this.account,
463
+ Side: side,
464
+ Price: price,
465
+ OrdType: OrdType.Limit,
466
+ OrderQtyData: {
467
+ OrderQty: qty
468
+ } as IOrderQtyData,
469
+ Instrument: {
470
+ Symbol: symbol,
471
+ SecurityID: '459200101',
472
+ SecurityIDSource: SecurityIDSource.IsinNumber
473
+ } as IInstrument,
474
+ TimeInForce: TimeInForce.GoodTillCancelGtc
475
+ } as INewOrderSingle
476
+ }
476
477
  ```
477
478
 
478
479
  this renders to this message sent over http
479
480
 
480
481
  ```xml
481
482
  <FIXML>
482
- <Order ID="Cli1" Acct="TradersRUs" Side="1" Typ="2" Px="100.12" TmInForce="1">
483
- <Hdr SID="accept-comp" TID="init-comp" SSub="user123" TSub="INC"/>
484
- <Instrmt Sym="IBM" ID="459200101" Src="4"/>
485
- <OrdQty Qty="10000"/>
486
- </Order>
483
+ <Order ID="Cli1" Acct="TradersRUs" Side="1" Typ="2" Px="100.12" TmInForce="1">
484
+ <Hdr SID="accept-comp" TID="init-comp" SSub="user123" TSub="INC"/>
485
+ <Instrmt Sym="IBM" ID="459200101" Src="4"/>
486
+ <OrdQty Qty="10000"/>
487
+ </Order>
487
488
  </FIXML>
488
489
  ```
489
490
 
@@ -491,57 +492,57 @@ the server receives this message and sends back an execution report :-
491
492
 
492
493
  ```typescript
493
494
  protected onApplicationMsg (msgType: string, view: MsgView): void {
494
- // dispatch messages
495
- this.logger.info(view.toJson())
496
- switch (msgType) {
497
- case 'Order': {
498
- const order: INewOrderSingle = view.toObject()
499
- this.logger.info(`received order id ${order.ClOrdID}`)
500
- const fill: IExecutionReport = this.factory.fillOrder(order)
501
- this.send('ExecutionReport', fill)
502
- }
495
+ // dispatch messages
496
+ this.logger.info(view.toJson())
497
+ switch (msgType) {
498
+ case 'Order': {
499
+ const order: INewOrderSingle = view.toObject()
500
+ this.logger.info(`received order id ${order.ClOrdID}`)
501
+ const fill: IExecutionReport = this.factory.fillOrder(order)
502
+ this.send('ExecutionReport', fill)
503
503
  }
504
504
  }
505
+ }
505
506
 
506
- public fillOrder (order: INewOrderSingle): IExecutionReport {
507
- const id: number = this.execId++
508
- return {
509
- ClOrdID: order.ClOrdID,
510
- OrdType: order.OrdType,
511
- TransactTime: new Date(),
512
- AvgPx: order.Price,
513
- LeavesQty: 0,
514
- LastPx: order.Price,
515
- ExecType: ExecType.OrderStatus,
516
- OrdStatus: OrdStatus.Filled,
517
- ExecID: `exec${id}`,
518
- Side: order.Side,
519
- Price: order.Price,
520
- OrderQtyData: {
521
- OrderQty: order.OrderQtyData.OrderQty
522
- } as IOrderQtyData,
523
- Instrument: {
524
- Symbol: order.Instrument.Symbol,
525
- SecurityID: order.Instrument.SecurityID,
526
- SecurityIDSource: SecurityIDSource.IsinNumber
527
- } as IInstrument
528
- } as IExecutionReport
529
- }
507
+ public fillOrder (order: INewOrderSingle): IExecutionReport {
508
+ const id: number = this.execId++
509
+ return {
510
+ ClOrdID: order.ClOrdID,
511
+ OrdType: order.OrdType,
512
+ TransactTime: new Date(),
513
+ AvgPx: order.Price,
514
+ LeavesQty: 0,
515
+ LastPx: order.Price,
516
+ ExecType: ExecType.OrderStatus,
517
+ OrdStatus: OrdStatus.Filled,
518
+ ExecID: `exec${id}`,
519
+ Side: order.Side,
520
+ Price: order.Price,
521
+ OrderQtyData: {
522
+ OrderQty: order.OrderQtyData.OrderQty
523
+ } as IOrderQtyData,
524
+ Instrument: {
525
+ Symbol: order.Instrument.Symbol,
526
+ SecurityID: order.Instrument.SecurityID,
527
+ SecurityIDSource: SecurityIDSource.IsinNumber
528
+ } as IInstrument
529
+ } as IExecutionReport
530
+ }
530
531
  ```
531
532
 
532
533
  the fixml is sent back to the client :-
533
534
 
534
535
  ```xml
535
536
  <FIXML>
536
- <ExecRpt ID="Cli1" ExecID="exec1" ExecTyp="I" Stat="2" Side="1" Typ="2" Px="100.12" LastPx="100.12" LeavesQty="0" AvgPx="100.12" TxnTm="2018-10-07T12:16:12.584">
537
- <Hdr SID="accept-comp" TID="init-comp" TSub="fix"/>
538
- <Instrmt Sym="IBM" ID="459200101" Src="4"/>
539
- <OrdQty Qty="10000"/>
540
- </ExecRpt>
537
+ <ExecRpt ID="Cli1" ExecID="exec1" ExecTyp="I" Stat="2" Side="1" Typ="2" Px="100.12" LastPx="100.12" LeavesQty="0" AvgPx="100.12" TxnTm="2018-10-07T12:16:12.584">
538
+ <Hdr SID="accept-comp" TID="init-comp" TSub="fix"/>
539
+ <Instrmt Sym="IBM" ID="459200101" Src="4"/>
540
+ <OrdQty Qty="10000"/>
541
+ </ExecRpt>
541
542
  </FIXML>
542
543
  ```
543
544
 
544
- ## performance on Windows Intel Core I7-4770 @ 3.5 GHz
545
+ ## Performance
545
546
 
546
547
  These messages have been randomly generated with command line tool. They are syntactically valid.
547
548
 
@@ -550,9 +551,14 @@ These messages have been randomly generated with command line tool. They are syn
550
551
  ```shell
551
552
  npm run repo44-bench-er
552
553
  ```
553
-
554
+ ### performance on Windows Intel Core I7-4770 @ 3.5 GHz
554
555
  ```shell
555
556
  [8]: repeats = 250000, fields = 58, length = 604 chars, elapsed ms 3658, 14.632 micros per msg
557
+ [8]: iterations = 80000, fields = 646, length = 6572 chars, elapsed ms 16499, 206.23749999999998 micros per msg
558
+ ```
559
+ ### performance on Windows 12th Gen Intel(R) Core(TM) i7-12700H 2.30 GHz
560
+ ```shell
561
+ [8]: iterations = 80000, fields = 646, length = 6572 chars, elapsed ms 7476, 93.45 micros per msg
556
562
  ```
557
563
 
558
564
  ### data/examples/FIX.4.4/repo/security-definition/fix.txt
@@ -561,8 +567,14 @@ npm run repo44-bench-er
561
567
  npm run repo44-bench-sd
562
568
  ```
563
569
 
570
+ ### performance on Windows Intel Core I7-4770 @ 3.5 GHz
564
571
  ```shell
565
572
  [d]: repeats = 150000, fields = 223, length = 2233 chars, elapsed ms 7962, 53.080000000000005 micros per msg
573
+ d]: iterations = 150000, fields = 229, length = 2466 chars, elapsed ms 8672, 57.81333333333333 micros per msg
574
+ ```
575
+ ### performance on Windows 12th Gen Intel(R) Core(TM) i7-12700H 2.30 GHz
576
+ ```
577
+ [d]: iterations = 150000, fields = 229, length = 2466 chars, elapsed ms 4628, 30.85333333333333 micros per msg
566
578
  ```
567
579
 
568
580
  ### data/examples/FIX.4.4/repo/trade-capture/fix.txt
@@ -570,9 +582,45 @@ npm run repo44-bench-sd
570
582
  ```shell
571
583
  npm run repo44-bench-tc
572
584
  ```
573
-
585
+ ### performance on Windows Intel Core I7-4770 @ 3.5 GHz
574
586
  ```shell
575
587
  [AE]: repeats = 30000, fields = 613, length = 5818 chars, elapsed ms 5206, 173.53333333333333 micros per msg
588
+ [AE]: iterations = 30000, fields = 578, length = 5741 chars, elapsed ms 5245, 174.83333333333334 micros per msg```
589
+ ```
590
+
591
+ ### performance on Windows 12th Gen Intel(R) Core(TM) i7-12700H 2.30 GHz
592
+ ```shell
593
+ [AE]: iterations = 30000, fields = 578, length = 5741 chars, elapsed ms 2725, 90.83333333333333 micros per msg```
594
+ ```
595
+
596
+ ### data/examples/FIX.4.4/quickfix/heartbeat/fix.txt
597
+
598
+ ```shell
599
+ npm run qf-bench-hb
600
+ ```
601
+
602
+ ### performance on Windows Intel Core I7-4770 @ 3.5 GHz
603
+ ```shell
604
+ [0]: iterations = 250000, fields = 10, length = 131 chars, elapsed ms 950, 3.8 micros per msg
605
+ ```
606
+ ### performance on Windows 12th Gen Intel(R) Core(TM) i7-12700H 2.30 GHz
607
+ ```shell
608
+ [0]: iterations = 250000, fields = 10, length = 131 chars, elapsed ms 468, 1.8719999999999999 micros per msg
609
+ ````
610
+
611
+ ### data/examples/FIX.4.4/quickfix/logon/fix.txt
612
+
613
+ ```shell
614
+ npm run qf-bench-lo
615
+ ```
616
+
617
+ ### performance on Windows Intel Core I7-4770 @ 3.5 GHz
618
+ ```shell
619
+ [A]: iterations = 250000, fields = 22, length = 214 chars, elapsed ms 1466, 5.864 micros per msg
620
+ ```
621
+ ### performance on Windows 12th Gen Intel(R) Core(TM) i7-12700H 2.30 GHz
622
+ ```shell
623
+ [A]: iterations = 250000, fields = 22, length = 214 chars, elapsed ms 693, 2.7720000000000002 micros per msg
576
624
  ```
577
625
 
578
626
  ## Log parsing
@@ -604,12 +652,12 @@ npm run cmd -- --dict=repo44 --fix=data/examples/FIX.4.4/jsfix.test_client.txt -
604
652
  ```json
605
653
  messages 13 elapsed ms 8
606
654
  {
607
- "0": 1,
608
- "5": 2,
609
- "A": 2,
610
- "AD": 1,
611
- "AQ": 2,
612
- "AE": 5
655
+ "0": 1,
656
+ "5": 2,
657
+ "A": 2,
658
+ "AD": 1,
659
+ "AQ": 2,
660
+ "AE": 5
613
661
  }
614
662
  ```
615
663
 
@@ -622,12 +670,12 @@ npm run cmd -- --dict=repo44 --fix=data/examples/FIX.4.4/jsfix.test_client.txt -
622
670
  ```json
623
671
  messages 13 elapsed ms 0
624
672
  {
625
- "0": 1,
626
- "5": 2,
627
- "A": 2,
628
- "AD": 1,
629
- "AQ": 2,
630
- "AE": 5
673
+ "0": 1,
674
+ "5": 2,
675
+ "A": 2,
676
+ "AD": 1,
677
+ "AQ": 2,
678
+ "AE": 5
631
679
  }
632
680
  ```
633
681
 
@@ -639,27 +687,27 @@ npm run cmd -- --dict=repo44 --fix=data/examples/FIX.4.4/jsfix.test_client.txt -
639
687
 
640
688
  ```json
641
689
  {
642
- "StandardHeader": {
643
- "BeginString": "FIX4.4",
644
- "BodyLength": 135,
645
- "MsgType": "AD",
646
- "SenderCompID": "init-comp",
647
- "TargetCompID": "accept-comp",
648
- "MsgSeqNum": 2,
649
- "TargetSubID": "fix",
650
- "SendingTime": "2018-09-23T16:07:04.763Z"
651
- },
652
- "TradeRequestID": "all-trades",
653
- "TradeRequestType": 0,
654
- "SubscriptionRequestType": "1",
655
- "TrdCapDtGrp": [
656
- {
657
- "TradeDate": "2018-09-22T23:00:00.000Z"
658
- }
659
- ],
660
- "StandardTrailer": {
661
- "CheckSum": "250"
690
+ "StandardHeader": {
691
+ "BeginString": "FIX4.4",
692
+ "BodyLength": 135,
693
+ "MsgType": "AD",
694
+ "SenderCompID": "init-comp",
695
+ "TargetCompID": "accept-comp",
696
+ "MsgSeqNum": 2,
697
+ "TargetSubID": "fix",
698
+ "SendingTime": "2018-09-23T16:07:04.763Z"
699
+ },
700
+ "TradeRequestID": "all-trades",
701
+ "TradeRequestType": 0,
702
+ "SubscriptionRequestType": "1",
703
+ "TrdCapDtGrp": [
704
+ {
705
+ "TradeDate": "2018-09-22T23:00:00.000Z"
662
706
  }
707
+ ],
708
+ "StandardTrailer": {
709
+ "CheckSum": "250"
710
+ }
663
711
  }
664
712
  ```
665
713
 
@@ -667,34 +715,34 @@ as above where --type=AE --objects
667
715
 
668
716
  ```json
669
717
  {
670
- "StandardHeader": {
671
- "BeginString": "FIX4.4",
672
- "BodyLength": 213,
673
- "MsgType": "AE",
674
- "SenderCompID": "accept-comp",
675
- "TargetCompID": "init-comp",
676
- "MsgSeqNum": 4,
677
- "TargetSubID": "fix",
678
- "SendingTime": "2018-09-23T16:07:04.986Z"
679
- },
680
- "TradeReportID": "100001",
681
- "TradeReportTransType": 0,
682
- "TradeReportType": 0,
683
- "TrdType": 0,
684
- "ExecID": "600001",
685
- "OrdStatus": "2",
686
- "PreviouslyReported": false,
687
- "Instrument": {
688
- "Symbol": "Gold",
689
- "SecurityID": "Gold.INC"
690
- },
691
- "LastQty": 107,
692
- "LastPx": 45.38,
693
- "TradeDate": "2018-09-22T23:00:00.000Z",
694
- "TransactTime": "2018-09-23T16:07:04.776Z",
695
- "StandardTrailer": {
696
- "CheckSum": "54"
697
- }
718
+ "StandardHeader": {
719
+ "BeginString": "FIX4.4",
720
+ "BodyLength": 213,
721
+ "MsgType": "AE",
722
+ "SenderCompID": "accept-comp",
723
+ "TargetCompID": "init-comp",
724
+ "MsgSeqNum": 4,
725
+ "TargetSubID": "fix",
726
+ "SendingTime": "2018-09-23T16:07:04.986Z"
727
+ },
728
+ "TradeReportID": "100001",
729
+ "TradeReportTransType": 0,
730
+ "TradeReportType": 0,
731
+ "TrdType": 0,
732
+ "ExecID": "600001",
733
+ "OrdStatus": "2",
734
+ "PreviouslyReported": false,
735
+ "Instrument": {
736
+ "Symbol": "Gold",
737
+ "SecurityID": "Gold.INC"
738
+ },
739
+ "LastQty": 107,
740
+ "LastPx": 45.38,
741
+ "TradeDate": "2018-09-22T23:00:00.000Z",
742
+ "TransactTime": "2018-09-23T16:07:04.776Z",
743
+ "StandardTrailer": {
744
+ "CheckSum": "54"
745
+ }
698
746
  }
699
747
  ```
700
748
 
@@ -706,57 +754,57 @@ npm run cmd -- --dict=repo44 --fix=data/examples/FIX.4.4/jsfix.test_client.txt -
706
754
 
707
755
  ```json
708
756
  [
709
- {
710
- "name": "StandardHeader",
711
- "depth": 2,
712
- "startTag": 8,
713
- "startPosition": 0,
714
- "endTag": 52,
715
- "endPosition": 7,
716
- "delimiterTag": 0,
717
- "delimiterPositions": []
718
- },
719
- {
720
- "name": "TrdCapDtGrp",
721
- "depth": 1,
722
- "startTag": 580,
723
- "startPosition": 11,
724
- "endTag": 75,
725
- "endPosition": 12,
726
- "delimiterTag": 75,
727
- "delimiterPositions": [
728
- 12
729
- ]
730
- },
731
- {
732
- "name": "StandardTrailer",
733
- "depth": 1,
734
- "startTag": 10,
735
- "startPosition": 13,
736
- "endTag": 10,
737
- "endPosition": 13,
738
- "delimiterTag": 0,
739
- "delimiterPositions": []
740
- },
741
- {
742
- "name": "TradeCaptureReportRequest",
743
- "depth": 1,
744
- "startTag": 8,
745
- "startPosition": 0,
746
- "endTag": 10,
747
- "endPosition": 13,
748
- "delimiterTag": 0,
749
- "delimiterPositions": []
750
- },
751
- {
752
- "name": "StandardTrailer",
753
- "depth": 0,
754
- "startTag": 10,
755
- "startPosition": 14,
756
- "endTag": 10,
757
- "endPosition": 13,
758
- "delimiterTag": 0,
759
- "delimiterPositions": []
760
- }
757
+ {
758
+ "name": "StandardHeader",
759
+ "depth": 2,
760
+ "startTag": 8,
761
+ "startPosition": 0,
762
+ "endTag": 52,
763
+ "endPosition": 7,
764
+ "delimiterTag": 0,
765
+ "delimiterPositions": []
766
+ },
767
+ {
768
+ "name": "TrdCapDtGrp",
769
+ "depth": 1,
770
+ "startTag": 580,
771
+ "startPosition": 11,
772
+ "endTag": 75,
773
+ "endPosition": 12,
774
+ "delimiterTag": 75,
775
+ "delimiterPositions": [
776
+ 12
777
+ ]
778
+ },
779
+ {
780
+ "name": "StandardTrailer",
781
+ "depth": 1,
782
+ "startTag": 10,
783
+ "startPosition": 13,
784
+ "endTag": 10,
785
+ "endPosition": 13,
786
+ "delimiterTag": 0,
787
+ "delimiterPositions": []
788
+ },
789
+ {
790
+ "name": "TradeCaptureReportRequest",
791
+ "depth": 1,
792
+ "startTag": 8,
793
+ "startPosition": 0,
794
+ "endTag": 10,
795
+ "endPosition": 13,
796
+ "delimiterTag": 0,
797
+ "delimiterPositions": []
798
+ },
799
+ {
800
+ "name": "StandardTrailer",
801
+ "depth": 0,
802
+ "startTag": 10,
803
+ "startPosition": 14,
804
+ "endTag": 10,
805
+ "endPosition": 13,
806
+ "delimiterTag": 0,
807
+ "delimiterPositions": []
808
+ }
761
809
  ]
762
810
  ```