jspurefix 1.3.0 → 2.0.2

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 (1038) hide show
  1. package/.eslintrc.js +6 -0
  2. package/README.md +5 -2
  3. package/appveyor.yml +3 -0
  4. package/data/session/genkey.ps1 +179 -0
  5. package/dist/a-session-msg-factory.d.ts +0 -0
  6. package/dist/a-session-msg-factory.js +1 -0
  7. package/dist/a-session-msg-factory.js.map +1 -0
  8. package/dist/ascii-encoder.test.d.ts +0 -0
  9. package/dist/ascii-encoder.test.js +1 -0
  10. package/dist/ascii-encoder.test.js.map +1 -0
  11. package/dist/ascii-parser.test.d.ts +0 -0
  12. package/dist/ascii-parser.test.js +1 -0
  13. package/dist/ascii-parser.test.js.map +1 -0
  14. package/dist/ascii-segment.test.d.ts +0 -0
  15. package/dist/ascii-segment.test.js +1 -0
  16. package/dist/ascii-segment.test.js.map +1 -0
  17. package/dist/ascii-store-replay.test.d.ts +0 -0
  18. package/dist/ascii-store-replay.test.js +1 -0
  19. package/dist/ascii-store-replay.test.js.map +1 -0
  20. package/dist/ascii-tag-pos.test.d.ts +0 -0
  21. package/dist/ascii-tag-pos.test.js +1 -0
  22. package/dist/ascii-tag-pos.test.js.map +1 -0
  23. package/dist/buffer/{ascii-chars.d.ts → ascii/ascii-chars.d.ts} +0 -0
  24. package/dist/buffer/{ascii-chars.js → ascii/ascii-chars.js} +0 -0
  25. package/dist/buffer/ascii/ascii-chars.js.map +1 -0
  26. package/dist/buffer/ascii/ascii-encoder.d.ts +5 -3
  27. package/dist/buffer/ascii/ascii-encoder.js +81 -47
  28. package/dist/buffer/ascii/ascii-encoder.js.map +1 -1
  29. package/dist/buffer/ascii/ascii-parser-state.d.ts +3 -10
  30. package/dist/buffer/ascii/ascii-parser-state.js +37 -25
  31. package/dist/buffer/ascii/ascii-parser-state.js.map +1 -1
  32. package/dist/buffer/ascii/ascii-parser.d.ts +7 -7
  33. package/dist/buffer/ascii/ascii-parser.js +50 -24
  34. package/dist/buffer/ascii/ascii-parser.js.map +1 -1
  35. package/dist/buffer/ascii/ascii-segment-parser.d.ts +2 -2
  36. package/dist/buffer/ascii/ascii-segment-parser.js +34 -13
  37. package/dist/buffer/ascii/ascii-segment-parser.js.map +1 -1
  38. package/dist/buffer/ascii/ascii-view.d.ts +2 -4
  39. package/dist/buffer/ascii/ascii-view.js +11 -15
  40. package/dist/buffer/ascii/ascii-view.js.map +1 -1
  41. package/dist/buffer/ascii/index.d.ts +1 -0
  42. package/dist/buffer/ascii/index.js +1 -0
  43. package/dist/buffer/ascii/index.js.map +1 -1
  44. package/dist/buffer/ascii/parse-state.d.ts +8 -0
  45. package/dist/buffer/ascii/parse-state.js +13 -0
  46. package/dist/buffer/ascii/parse-state.js.map +1 -0
  47. package/dist/buffer/ascii/time-formatter.js +1 -1
  48. package/dist/buffer/ascii/time-formatter.js.map +1 -1
  49. package/dist/buffer/elastic-buffer.js +28 -7
  50. package/dist/buffer/elastic-buffer.js.map +1 -1
  51. package/dist/buffer/encode-proxy.d.ts +1 -1
  52. package/dist/buffer/encode-proxy.js +16 -17
  53. package/dist/buffer/encode-proxy.js.map +1 -1
  54. package/dist/buffer/fixml/fixml-encoder.d.ts +2 -1
  55. package/dist/buffer/fixml/fixml-encoder.js +43 -20
  56. package/dist/buffer/fixml/fixml-encoder.js.map +1 -1
  57. package/dist/buffer/fixml/fixml-parser.js +47 -24
  58. package/dist/buffer/fixml/fixml-parser.js.map +1 -1
  59. package/dist/buffer/fixml/fixml-view.d.ts +2 -2
  60. package/dist/buffer/fixml/fixml-view.js +13 -13
  61. package/dist/buffer/fixml/fixml-view.js.map +1 -1
  62. package/dist/buffer/fixml/populated-attributes.d.ts +5 -0
  63. package/dist/buffer/fixml/populated-attributes.js +3 -0
  64. package/dist/buffer/fixml/populated-attributes.js.map +1 -0
  65. package/dist/buffer/index.d.ts +4 -8
  66. package/dist/buffer/index.js +4 -8
  67. package/dist/buffer/index.js.map +1 -1
  68. package/dist/buffer/msg-encoder.d.ts +2 -1
  69. package/dist/buffer/msg-encoder.js.map +1 -1
  70. package/dist/buffer/msg-view.d.ts +3 -3
  71. package/dist/buffer/msg-view.js +8 -5
  72. package/dist/buffer/msg-view.js.map +1 -1
  73. package/dist/buffer/segment/segment-description.d.ts +26 -0
  74. package/dist/buffer/segment/segment-description.js +72 -0
  75. package/dist/buffer/segment/segment-description.js.map +1 -0
  76. package/dist/buffer/segment/segment-summary.d.ts +13 -0
  77. package/dist/buffer/segment/segment-summary.js +20 -0
  78. package/dist/buffer/segment/segment-summary.js.map +1 -0
  79. package/dist/buffer/segment/segment-type.d.ts +8 -0
  80. package/dist/buffer/segment/segment-type.js +13 -0
  81. package/dist/buffer/segment/segment-type.js.map +1 -0
  82. package/dist/buffer/segment-description.d.ts +2 -9
  83. package/dist/buffer/segment-description.js +5 -13
  84. package/dist/buffer/segment-description.js.map +1 -1
  85. package/dist/buffer/segment-type.d.ts +8 -0
  86. package/dist/buffer/segment-type.js +13 -0
  87. package/dist/buffer/segment-type.js.map +1 -0
  88. package/dist/buffer/structure.d.ts +3 -3
  89. package/dist/buffer/structure.js +1 -1
  90. package/dist/buffer/structure.js.map +1 -1
  91. package/dist/buffer/tag/tag-pos.d.ts +12 -0
  92. package/dist/buffer/tag/tag-pos.js +55 -0
  93. package/dist/buffer/tag/tag-pos.js.map +1 -0
  94. package/dist/buffer/tag/tag-type.d.ts +13 -0
  95. package/dist/buffer/tag/tag-type.js +18 -0
  96. package/dist/buffer/tag/tag-type.js.map +1 -0
  97. package/dist/buffer/tag/tags.d.ts +21 -0
  98. package/dist/buffer/tag/tags.js +122 -0
  99. package/dist/buffer/tag/tags.js.map +1 -0
  100. package/dist/buffer/tag-type.d.ts +13 -0
  101. package/dist/buffer/tag-type.js +18 -0
  102. package/dist/buffer/tag-type.js.map +1 -0
  103. package/dist/buffer/tags.d.ts +3 -14
  104. package/dist/buffer/tags.js +23 -36
  105. package/dist/buffer/tags.js.map +1 -1
  106. package/dist/config/get-js-fx-logger.d.ts +4 -0
  107. package/dist/{transport/make-fixl-session.js → config/get-js-fx-logger.js} +1 -1
  108. package/dist/config/get-js-fx-logger.js.map +1 -0
  109. package/dist/config/index.d.ts +1 -0
  110. package/dist/config/index.js +1 -0
  111. package/dist/config/index.js.map +1 -1
  112. package/dist/config/js-fix-config.d.ts +4 -1
  113. package/dist/config/js-fix-config.js +3 -3
  114. package/dist/config/js-fix-config.js.map +1 -1
  115. package/dist/config/js-fix-logger.d.ts +0 -3
  116. package/dist/config/js-fix-logger.js.map +1 -1
  117. package/dist/dict-parser.js +29 -24
  118. package/dist/dict-parser.js.map +1 -1
  119. package/dist/dictionary/compiler/compiler-type.js +7 -7
  120. package/dist/dictionary/compiler/compiler-type.js.map +1 -1
  121. package/dist/dictionary/compiler/enum-compiler.d.ts +1 -0
  122. package/dist/dictionary/compiler/enum-compiler.js +11 -1
  123. package/dist/dictionary/compiler/enum-compiler.js.map +1 -1
  124. package/dist/dictionary/compiler/msg-compiler.js +8 -6
  125. package/dist/dictionary/compiler/msg-compiler.js.map +1 -1
  126. package/dist/dictionary/contained/contained-component-field.js +2 -1
  127. package/dist/dictionary/contained/contained-component-field.js.map +1 -1
  128. package/dist/dictionary/contained/contained-field-dispatch.d.ts +1 -14
  129. package/dist/dictionary/contained/contained-field-dispatch.js +4 -4
  130. package/dist/dictionary/contained/contained-field-dispatch.js.map +1 -1
  131. package/dist/dictionary/contained/contained-field-dispatcher.d.ts +14 -0
  132. package/dist/dictionary/contained/contained-field-dispatcher.js +3 -0
  133. package/dist/dictionary/contained/contained-field-dispatcher.js.map +1 -0
  134. package/dist/dictionary/contained/contained-field-set.d.ts +1 -1
  135. package/dist/dictionary/contained/contained-field-set.js +12 -11
  136. package/dist/dictionary/contained/contained-field-set.js.map +1 -1
  137. package/dist/dictionary/contained/contained-field-type.d.ts +5 -0
  138. package/dist/dictionary/contained/contained-field-type.js +10 -0
  139. package/dist/dictionary/contained/contained-field-type.js.map +1 -0
  140. package/dist/dictionary/contained/contained-field.d.ts +1 -5
  141. package/dist/dictionary/contained/contained-field.js +1 -7
  142. package/dist/dictionary/contained/contained-field.js.map +1 -1
  143. package/dist/dictionary/contained/contained-group-field.js +2 -1
  144. package/dist/dictionary/contained/contained-group-field.js.map +1 -1
  145. package/dist/dictionary/contained/contained-simple-field.js +2 -1
  146. package/dist/dictionary/contained/contained-simple-field.js.map +1 -1
  147. package/dist/dictionary/{fields-dispatch.d.ts → contained/field-dispatcher.d.ts} +3 -2
  148. package/dist/dictionary/contained/field-dispatcher.js +3 -0
  149. package/dist/dictionary/contained/field-dispatcher.js.map +1 -0
  150. package/dist/dictionary/contained/fields-dispatch.d.ts +6 -0
  151. package/dist/dictionary/contained/fields-dispatch.js +42 -0
  152. package/dist/dictionary/contained/fields-dispatch.js.map +1 -0
  153. package/dist/dictionary/contained/index.d.ts +2 -0
  154. package/dist/dictionary/contained/index.js +2 -0
  155. package/dist/dictionary/contained/index.js.map +1 -1
  156. package/dist/dictionary/contained-set-type.d.ts +5 -0
  157. package/dist/dictionary/contained-set-type.js +10 -0
  158. package/dist/dictionary/contained-set-type.js.map +1 -0
  159. package/dist/dictionary/definition/component-field-definition.js +2 -2
  160. package/dist/dictionary/definition/component-field-definition.js.map +1 -1
  161. package/dist/dictionary/definition/fix-definitions.d.ts +2 -1
  162. package/dist/dictionary/definition/fix-definitions.js.map +1 -1
  163. package/dist/dictionary/definition/group-field-definition.js +2 -2
  164. package/dist/dictionary/definition/group-field-definition.js.map +1 -1
  165. package/dist/dictionary/definition/index.d.ts +0 -1
  166. package/dist/dictionary/definition/index.js +0 -1
  167. package/dist/dictionary/definition/index.js.map +1 -1
  168. package/dist/dictionary/definition/message-definition.js +2 -2
  169. package/dist/dictionary/definition/message-definition.js.map +1 -1
  170. package/dist/dictionary/definition/simple-field-definition.d.ts +1 -1
  171. package/dist/dictionary/definition/simple-field-definition.js +5 -4
  172. package/dist/dictionary/definition/simple-field-definition.js.map +1 -1
  173. package/dist/dictionary/dict-primitive.d.ts +0 -11
  174. package/dist/dictionary/dict-primitive.js +0 -7
  175. package/dist/dictionary/dict-primitive.js.map +1 -1
  176. package/dist/dictionary/fix-definition-source.d.ts +6 -0
  177. package/dist/dictionary/fix-definition-source.js +11 -0
  178. package/dist/dictionary/fix-definition-source.js.map +1 -0
  179. package/dist/dictionary/fix-versions.d.ts +0 -9
  180. package/dist/dictionary/fix-versions.js +1 -39
  181. package/dist/dictionary/fix-versions.js.map +1 -1
  182. package/dist/dictionary/index.d.ts +1 -5
  183. package/dist/dictionary/index.js +1 -5
  184. package/dist/dictionary/index.js.map +1 -1
  185. package/dist/dictionary/parser/fix-repository/abbreviations-parser.d.ts +1 -3
  186. package/dist/dictionary/parser/fix-repository/abbreviations-parser.js +2 -3
  187. package/dist/dictionary/parser/fix-repository/abbreviations-parser.js.map +1 -1
  188. package/dist/dictionary/parser/fix-repository/base-parser.d.ts +2 -4
  189. package/dist/dictionary/parser/fix-repository/base-parser.js +1 -2
  190. package/dist/dictionary/parser/fix-repository/base-parser.js.map +1 -1
  191. package/dist/dictionary/parser/fix-repository/components-parser.d.ts +1 -3
  192. package/dist/dictionary/parser/fix-repository/components-parser.js +2 -3
  193. package/dist/dictionary/parser/fix-repository/components-parser.js.map +1 -1
  194. package/dist/dictionary/parser/fix-repository/data-types-parser.d.ts +1 -3
  195. package/dist/dictionary/parser/fix-repository/data-types-parser.js +2 -3
  196. package/dist/dictionary/parser/fix-repository/data-types-parser.js.map +1 -1
  197. package/dist/dictionary/parser/fix-repository/enums-parser.d.ts +1 -3
  198. package/dist/dictionary/parser/fix-repository/enums-parser.js +2 -3
  199. package/dist/dictionary/parser/fix-repository/enums-parser.js.map +1 -1
  200. package/dist/dictionary/parser/fix-repository/fields-parser.d.ts +1 -3
  201. package/dist/dictionary/parser/fix-repository/fields-parser.js +2 -3
  202. package/dist/dictionary/parser/fix-repository/fields-parser.js.map +1 -1
  203. package/dist/dictionary/parser/fix-repository/messages-parser.d.ts +1 -3
  204. package/dist/dictionary/parser/fix-repository/messages-parser.js +2 -3
  205. package/dist/dictionary/parser/fix-repository/messages-parser.js.map +1 -1
  206. package/dist/dictionary/parser/fix-repository/msg-contents-parser.d.ts +1 -3
  207. package/dist/dictionary/parser/fix-repository/msg-contents-parser.js +2 -3
  208. package/dist/dictionary/parser/fix-repository/msg-contents-parser.js.map +1 -1
  209. package/dist/dictionary/parser/fix-repository/repository-abbreviation.d.ts +5 -0
  210. package/dist/dictionary/parser/fix-repository/repository-abbreviation.js +3 -0
  211. package/dist/dictionary/parser/fix-repository/repository-abbreviation.js.map +1 -0
  212. package/dist/dictionary/parser/fix-repository/repository-component.d.ts +10 -0
  213. package/dist/dictionary/parser/fix-repository/repository-component.js +3 -0
  214. package/dist/dictionary/parser/fix-repository/repository-component.js.map +1 -0
  215. package/dist/dictionary/parser/fix-repository/repository-data-type.d.ts +6 -0
  216. package/dist/dictionary/parser/fix-repository/repository-data-type.js +3 -0
  217. package/dist/dictionary/parser/fix-repository/repository-data-type.js.map +1 -0
  218. package/dist/dictionary/parser/fix-repository/repository-enum.d.ts +7 -0
  219. package/dist/dictionary/parser/fix-repository/repository-enum.js +3 -0
  220. package/dist/dictionary/parser/fix-repository/repository-enum.js.map +1 -0
  221. package/dist/dictionary/parser/fix-repository/repository-field.d.ts +11 -0
  222. package/dist/dictionary/parser/fix-repository/repository-field.js +3 -0
  223. package/dist/dictionary/parser/fix-repository/repository-field.js.map +1 -0
  224. package/dist/dictionary/parser/fix-repository/repository-message.d.ts +11 -0
  225. package/dist/dictionary/parser/fix-repository/repository-message.js +3 -0
  226. package/dist/dictionary/parser/fix-repository/repository-message.js.map +1 -0
  227. package/dist/dictionary/parser/fix-repository/repository-msg-content.d.ts +9 -0
  228. package/dist/dictionary/parser/fix-repository/repository-msg-content.js +3 -0
  229. package/dist/dictionary/parser/fix-repository/repository-msg-content.js.map +1 -0
  230. package/dist/dictionary/parser/fix-repository/repository-msg.d.ts +0 -0
  231. package/dist/dictionary/parser/fix-repository/repository-msg.js +1 -0
  232. package/dist/dictionary/parser/fix-repository/repository-msg.js.map +1 -0
  233. package/dist/dictionary/parser/fix-repository/repository-type.d.ts +0 -53
  234. package/dist/dictionary/parser/fix-repository/repository-type.js +0 -2
  235. package/dist/dictionary/parser/fix-repository/repository-type.js.map +1 -1
  236. package/dist/dictionary/parser/fix-repository/repository-xml-parser.js +9 -9
  237. package/dist/dictionary/parser/fix-repository/repository-xml-parser.js.map +1 -1
  238. package/dist/dictionary/parser/fix-repository/repository.d.ts +12 -1
  239. package/dist/dictionary/parser/fix-repository/repository.js +50 -28
  240. package/dist/dictionary/parser/fix-repository/repository.js.map +1 -1
  241. package/dist/dictionary/parser/fixml/components-parser.d.ts +1 -1
  242. package/dist/dictionary/parser/fixml/components-parser.js.map +1 -1
  243. package/dist/dictionary/parser/fixml/fields-parser.d.ts +1 -1
  244. package/dist/dictionary/parser/fixml/fields-parser.js.map +1 -1
  245. package/dist/dictionary/parser/fixml/fix-xsd-parser.js +3 -2
  246. package/dist/dictionary/parser/fixml/fix-xsd-parser.js.map +1 -1
  247. package/dist/dictionary/parser/fixml/include-graph.js.map +1 -1
  248. package/dist/dictionary/parser/fixml/xsd-parser.d.ts +1 -1
  249. package/dist/dictionary/parser/fixml/xsd-parser.js.map +1 -1
  250. package/dist/dictionary/parser/quickfix/field-definition-parser.d.ts +4 -4
  251. package/dist/dictionary/parser/quickfix/field-definition-parser.js +3 -3
  252. package/dist/dictionary/parser/quickfix/field-definition-parser.js.map +1 -1
  253. package/dist/dictionary/parser/quickfix/field-set-parser.d.ts +4 -4
  254. package/dist/dictionary/parser/quickfix/field-set-parser.js +3 -3
  255. package/dist/dictionary/parser/quickfix/field-set-parser.js.map +1 -1
  256. package/dist/dictionary/parser/quickfix/message-parser.d.ts +4 -4
  257. package/dist/dictionary/parser/quickfix/message-parser.js +3 -3
  258. package/dist/dictionary/parser/quickfix/message-parser.js.map +1 -1
  259. package/dist/dictionary/parser/quickfix/node-parser.d.ts +4 -5
  260. package/dist/dictionary/parser/quickfix/node-parser.js +4 -4
  261. package/dist/dictionary/parser/quickfix/node-parser.js.map +1 -1
  262. package/dist/dictionary/parser/quickfix/parse-state.d.ts +8 -0
  263. package/dist/dictionary/parser/quickfix/parse-state.js +13 -0
  264. package/dist/dictionary/parser/quickfix/parse-state.js.map +1 -0
  265. package/dist/dictionary/parser/quickfix/quick-fix-xml-file-parser.d.ts +1 -9
  266. package/dist/dictionary/parser/quickfix/quick-fix-xml-file-parser.js +27 -34
  267. package/dist/dictionary/parser/quickfix/quick-fix-xml-file-parser.js.map +1 -1
  268. package/dist/dictionary/sax-node.d.ts +6 -0
  269. package/dist/dictionary/sax-node.js +3 -0
  270. package/dist/dictionary/sax-node.js.map +1 -0
  271. package/dist/dictionary/set-reduce.d.ts +5 -12
  272. package/dist/dictionary/set-reduce.js +28 -26
  273. package/dist/dictionary/set-reduce.js.map +1 -1
  274. package/dist/dictionary/type-dispatcher.d.ts +12 -0
  275. package/dist/dictionary/type-dispatcher.js +3 -0
  276. package/dist/dictionary/type-dispatcher.js.map +1 -0
  277. package/dist/dictionary/version-util.d.ts +4 -0
  278. package/dist/dictionary/version-util.js +36 -0
  279. package/dist/dictionary/version-util.js.map +1 -0
  280. package/dist/execution-report.test.d.ts +0 -0
  281. package/dist/execution-report.test.js +1 -0
  282. package/dist/execution-report.test.js.map +1 -0
  283. package/dist/experiment.d.ts +0 -0
  284. package/dist/experiment.js +1 -0
  285. package/dist/experiment.js.map +1 -0
  286. package/dist/fix-repo-dict.test.d.ts +0 -0
  287. package/dist/fix-repo-dict.test.js +1 -0
  288. package/dist/fix-repo-dict.test.js.map +1 -0
  289. package/dist/fix-session-state-args.d.ts +0 -0
  290. package/dist/fix-session-state-args.js +1 -0
  291. package/dist/fix-session-state-args.js.map +1 -0
  292. package/dist/fix-session-state.d.ts +0 -0
  293. package/dist/fix-session-state.js +1 -0
  294. package/dist/fix-session-state.js.map +1 -0
  295. package/dist/fix-session.d.ts +0 -0
  296. package/dist/fix-session.js +1 -0
  297. package/dist/fix-session.js.map +1 -0
  298. package/dist/fix.txt +1 -0
  299. package/dist/fixml-alloc-parse.test.d.ts +0 -0
  300. package/dist/fixml-alloc-parse.test.js +1 -0
  301. package/dist/fixml-alloc-parse.test.js.map +1 -0
  302. package/dist/fixml-mkt-data-fut-parse.test.d.ts +0 -0
  303. package/dist/fixml-mkt-data-fut-parse.test.js +1 -0
  304. package/dist/fixml-mkt-data-fut-parse.test.js.map +1 -0
  305. package/dist/fixml-mkt-data-settle-parse.test.d.ts +0 -0
  306. package/dist/fixml-mkt-data-settle-parse.test.js +1 -0
  307. package/dist/fixml-mkt-data-settle-parse.test.js.map +1 -0
  308. package/dist/fixml-tc-bi-lateral-parse.test.d.ts +0 -0
  309. package/dist/fixml-tc-bi-lateral-parse.test.js +1 -0
  310. package/dist/fixml-tc-bi-lateral-parse.test.js.map +1 -0
  311. package/dist/includes.test.d.ts +0 -0
  312. package/dist/includes.test.js +1 -0
  313. package/dist/includes.test.js.map +1 -0
  314. package/dist/index.d.ts +1 -0
  315. package/dist/index.js +1 -0
  316. package/dist/index.js.map +1 -1
  317. package/dist/jsfix-cmd.d.ts +5 -0
  318. package/dist/jsfix-cmd.js +27 -20
  319. package/dist/jsfix-cmd.js.map +1 -1
  320. package/dist/launcher.d.ts +0 -0
  321. package/dist/launcher.js +1 -0
  322. package/dist/launcher.js.map +1 -0
  323. package/dist/logon.test.d.ts +0 -0
  324. package/dist/logon.test.js +1 -0
  325. package/dist/logon.test.js.map +1 -0
  326. package/dist/make-fix-session.d.ts +0 -0
  327. package/dist/make-fix-session.js +1 -0
  328. package/dist/make-fix-session.js.map +1 -0
  329. package/dist/memory-store.test.d.ts +0 -0
  330. package/dist/memory-store.test.js +1 -0
  331. package/dist/memory-store.test.js.map +1 -0
  332. package/dist/object.json +691 -0
  333. package/dist/qf-full-msg.test.d.ts +0 -0
  334. package/dist/qf-full-msg.test.js +1 -0
  335. package/dist/qf-full-msg.test.js.map +1 -0
  336. package/dist/repo-full-ascii-msg.test.d.ts +0 -0
  337. package/dist/repo-full-ascii-msg.test.js +1 -0
  338. package/dist/repo-full-ascii-msg.test.js.map +1 -0
  339. package/dist/runtime/DITokens.d.ts +20 -0
  340. package/dist/runtime/DITokens.js +25 -0
  341. package/dist/runtime/DITokens.js.map +1 -0
  342. package/dist/runtime/app-launcher.d.ts +27 -0
  343. package/dist/runtime/app-launcher.js +131 -0
  344. package/dist/runtime/app-launcher.js.map +1 -0
  345. package/dist/runtime/di-tokens.d.ts +28 -0
  346. package/dist/runtime/di-tokens.js +33 -0
  347. package/dist/runtime/di-tokens.js.map +1 -0
  348. package/dist/runtime/engine-factory.d.ts +4 -0
  349. package/dist/runtime/engine-factory.js +3 -0
  350. package/dist/runtime/engine-factory.js.map +1 -0
  351. package/dist/runtime/index.d.ts +5 -0
  352. package/dist/runtime/index.js +18 -0
  353. package/dist/runtime/index.js.map +1 -0
  354. package/dist/runtime/launcher.d.ts +29 -0
  355. package/dist/runtime/launcher.js +131 -0
  356. package/dist/runtime/launcher.js.map +1 -0
  357. package/dist/runtime/make-config.d.ts +11 -0
  358. package/dist/runtime/make-config.js +57 -0
  359. package/dist/runtime/make-config.js.map +1 -0
  360. package/dist/runtime/session-container.d.ts +16 -0
  361. package/dist/runtime/session-container.js +168 -0
  362. package/dist/runtime/session-container.js.map +1 -0
  363. package/dist/runtime/session-launcher.d.ts +27 -0
  364. package/dist/runtime/session-launcher.js +131 -0
  365. package/dist/runtime/session-launcher.js.map +1 -0
  366. package/dist/sample/http/oms/app.d.ts +1 -1
  367. package/dist/sample/http/oms/app.js +16 -14
  368. package/dist/sample/http/oms/app.js.map +1 -1
  369. package/dist/sample/http/oms/http-client.js +22 -2
  370. package/dist/sample/http/oms/http-client.js.map +1 -1
  371. package/dist/sample/http/oms/http-server.js +21 -2
  372. package/dist/sample/http/oms/http-server.js.map +1 -1
  373. package/dist/sample/launcher.d.ts +21 -4
  374. package/dist/sample/launcher.js +87 -19
  375. package/dist/sample/launcher.js.map +1 -1
  376. package/dist/sample/tcp/qf-md/app.d.ts +1 -1
  377. package/dist/sample/tcp/qf-md/app.js +11 -11
  378. package/dist/sample/tcp/qf-md/app.js.map +1 -1
  379. package/dist/sample/tcp/qf-md/md-client.js +21 -2
  380. package/dist/sample/tcp/qf-md/md-client.js.map +1 -1
  381. package/dist/sample/tcp/qf-md/md-server.js +20 -2
  382. package/dist/sample/tcp/qf-md/md-server.js.map +1 -1
  383. package/dist/sample/tcp/recovering-skeleton/app.d.ts +1 -1
  384. package/dist/sample/tcp/recovering-skeleton/app.js +36 -16
  385. package/dist/sample/tcp/recovering-skeleton/app.js.map +1 -1
  386. package/dist/sample/tcp/recovering-skeleton/respawn-acceptor.d.ts +3 -1
  387. package/dist/sample/tcp/recovering-skeleton/respawn-acceptor.js +30 -8
  388. package/dist/sample/tcp/recovering-skeleton/respawn-acceptor.js.map +1 -1
  389. package/dist/sample/tcp/recovering-skeleton/skeleton-client.d.ts +1 -1
  390. package/dist/sample/tcp/recovering-skeleton/skeleton-client.js +22 -3
  391. package/dist/sample/tcp/recovering-skeleton/skeleton-client.js.map +1 -1
  392. package/dist/sample/tcp/recovering-skeleton/skeleton-server.js +21 -2
  393. package/dist/sample/tcp/recovering-skeleton/skeleton-server.js.map +1 -1
  394. package/dist/sample/tcp/skeleton/app.d.ts +1 -1
  395. package/dist/sample/tcp/skeleton/app.js +8 -13
  396. package/dist/sample/tcp/skeleton/app.js.map +1 -1
  397. package/dist/sample/tcp/skeleton/skeleton-session.d.ts +5 -1
  398. package/dist/sample/tcp/skeleton/skeleton-session.js +45 -4
  399. package/dist/sample/tcp/skeleton/skeleton-session.js.map +1 -1
  400. package/dist/sample/tcp/tls-trade-capture/app.d.ts +1 -1
  401. package/dist/sample/tcp/tls-trade-capture/app.js +4 -24
  402. package/dist/sample/tcp/tls-trade-capture/app.js.map +1 -1
  403. package/dist/sample/tcp/trade-capture/app-launcher.d.ts +6 -0
  404. package/dist/sample/tcp/trade-capture/app-launcher.js +21 -0
  405. package/dist/sample/tcp/trade-capture/app-launcher.js.map +1 -0
  406. package/dist/sample/tcp/trade-capture/app-launher.d.ts +0 -0
  407. package/dist/sample/tcp/trade-capture/app-launher.js +1 -0
  408. package/dist/sample/tcp/trade-capture/app-launher.js.map +1 -0
  409. package/dist/sample/tcp/trade-capture/app.d.ts +1 -1
  410. package/dist/sample/tcp/trade-capture/app.js +4 -21
  411. package/dist/sample/tcp/trade-capture/app.js.map +1 -1
  412. package/dist/sample/tcp/trade-capture/jsfix.test_client.txt +11 -0
  413. package/dist/sample/tcp/trade-capture/jsfix.test_server.txt +10 -0
  414. package/dist/sample/tcp/trade-capture/trade-capture-client.d.ts +1 -0
  415. package/dist/sample/tcp/trade-capture/trade-capture-client.js +7 -3
  416. package/dist/sample/tcp/trade-capture/trade-capture-client.js.map +1 -1
  417. package/dist/sample/tcp/trade-capture/trade-capture-server.js.map +1 -1
  418. package/dist/sample/tcp/trade-capture/trade-factory.js +7 -1
  419. package/dist/sample/tcp/trade-capture/trade-factory.js.map +1 -1
  420. package/dist/segment-description.d.ts +0 -0
  421. package/dist/segment-description.js +1 -0
  422. package/dist/segment-description.js.map +1 -0
  423. package/dist/segment-summary.d.ts +0 -0
  424. package/dist/segment-summary.js +1 -0
  425. package/dist/segment-summary.js.map +1 -0
  426. package/dist/segment-type.d.ts +0 -0
  427. package/dist/segment-type.js +1 -0
  428. package/dist/segment-type.js.map +1 -0
  429. package/dist/session-description.d.ts +0 -0
  430. package/dist/session-description.js +1 -0
  431. package/dist/session-description.js.map +1 -0
  432. package/dist/session-msg-factory.d.ts +0 -0
  433. package/dist/session-msg-factory.js +1 -0
  434. package/dist/session-msg-factory.js.map +1 -0
  435. package/dist/session-state.d.ts +0 -0
  436. package/dist/session-state.js +1 -0
  437. package/dist/session-state.js.map +1 -0
  438. package/dist/session-state.test.d.ts +0 -0
  439. package/dist/session-state.test.js +1 -0
  440. package/dist/session-state.test.js.map +1 -0
  441. package/dist/session.test.d.ts +0 -0
  442. package/dist/session.test.js +1 -0
  443. package/dist/session.test.js.map +1 -0
  444. package/dist/setup.d.ts +0 -0
  445. package/dist/setup.js +1 -0
  446. package/dist/setup.js.map +1 -0
  447. package/dist/skeleton-runner.d.ts +0 -0
  448. package/dist/skeleton-runner.js +1 -0
  449. package/dist/skeleton-runner.js.map +1 -0
  450. package/dist/store/fix-msg-ascii-store-resend.d.ts +1 -1
  451. package/dist/store/fix-msg-ascii-store-resend.js +5 -3
  452. package/dist/store/fix-msg-ascii-store-resend.js.map +1 -1
  453. package/dist/store/fix-msg-memory-store.d.ts +1 -1
  454. package/dist/store/fix-msg-memory-store.js.map +1 -1
  455. package/dist/store/fix-msg-store-record.d.ts +2 -0
  456. package/dist/store/fix-msg-store-record.js +4 -0
  457. package/dist/store/fix-msg-store-record.js.map +1 -1
  458. package/dist/store/fix-msg-store-state.d.ts +6 -0
  459. package/dist/store/fix-msg-store-state.js +3 -0
  460. package/dist/store/fix-msg-store-state.js.map +1 -0
  461. package/dist/store/fix-msg-store.d.ts +1 -6
  462. package/dist/store/fix-msg-store.js.map +1 -1
  463. package/dist/structure.json +631 -0
  464. package/dist/tag-pos.d.ts +0 -0
  465. package/dist/tag-pos.js +1 -0
  466. package/dist/tag-pos.js.map +1 -0
  467. package/dist/tag-type.d.ts +0 -0
  468. package/dist/tag-type.js +1 -0
  469. package/dist/tag-type.js.map +1 -0
  470. package/dist/tags.d.ts +0 -0
  471. package/dist/tags.js +1 -0
  472. package/dist/tags.js.map +1 -0
  473. package/dist/test/ascii/ascii-encoder.test.d.ts +1 -0
  474. package/dist/test/ascii/ascii-encoder.test.js +507 -0
  475. package/dist/test/ascii/ascii-encoder.test.js.map +1 -0
  476. package/dist/test/ascii/ascii-parser.test.d.ts +1 -0
  477. package/dist/test/ascii/ascii-parser.test.js +123 -0
  478. package/dist/test/ascii/ascii-parser.test.js.map +1 -0
  479. package/dist/test/ascii/ascii-segment.test.d.ts +1 -0
  480. package/dist/test/ascii/ascii-segment.test.js +86 -0
  481. package/dist/test/ascii/ascii-segment.test.js.map +1 -0
  482. package/dist/test/ascii/ascii-store-replay.test.d.ts +1 -0
  483. package/dist/test/ascii/ascii-store-replay.test.js +92 -0
  484. package/dist/test/ascii/ascii-store-replay.test.js.map +1 -0
  485. package/dist/test/ascii/ascii-tag-pos.test.d.ts +1 -0
  486. package/dist/test/ascii/ascii-tag-pos.test.js +105 -0
  487. package/dist/test/ascii/ascii-tag-pos.test.js.map +1 -0
  488. package/dist/test/ascii/execution-report.test.d.ts +1 -0
  489. package/dist/test/ascii/execution-report.test.js +489 -0
  490. package/dist/test/ascii/execution-report.test.js.map +1 -0
  491. package/dist/test/ascii/fix-log-replay.test.d.ts +1 -0
  492. package/dist/test/ascii/fix-log-replay.test.js +47 -0
  493. package/dist/test/ascii/fix-log-replay.test.js.map +1 -0
  494. package/dist/test/ascii/fix-repo-dict.test.d.ts +1 -0
  495. package/dist/test/ascii/fix-repo-dict.test.js +128 -0
  496. package/dist/test/ascii/fix-repo-dict.test.js.map +1 -0
  497. package/dist/test/ascii/includes.test.d.ts +1 -0
  498. package/dist/test/ascii/includes.test.js +43 -0
  499. package/dist/test/ascii/includes.test.js.map +1 -0
  500. package/dist/test/ascii/logon.test.d.ts +1 -0
  501. package/dist/test/ascii/logon.test.js +91 -0
  502. package/dist/test/ascii/logon.test.js.map +1 -0
  503. package/dist/test/ascii/memory-store.test.d.ts +1 -0
  504. package/dist/test/ascii/memory-store.test.js +75 -0
  505. package/dist/test/ascii/memory-store.test.js.map +1 -0
  506. package/dist/test/ascii/qf-full-msg.test.d.ts +1 -0
  507. package/dist/test/ascii/qf-full-msg.test.js +81 -0
  508. package/dist/test/ascii/qf-full-msg.test.js.map +1 -0
  509. package/dist/test/ascii/repo-full-ascii-msg.test.d.ts +1 -0
  510. package/dist/test/ascii/repo-full-ascii-msg.test.js +87 -0
  511. package/dist/test/ascii/repo-full-ascii-msg.test.js.map +1 -0
  512. package/dist/test/ascii/session-state.test.d.ts +1 -0
  513. package/dist/test/ascii/session-state.test.js +73 -0
  514. package/dist/test/ascii/session-state.test.js.map +1 -0
  515. package/dist/test/ascii/session.test.d.ts +1 -0
  516. package/dist/test/ascii/session.test.js +280 -0
  517. package/dist/test/ascii/session.test.js.map +1 -0
  518. package/dist/test/ascii/time-formatter.test.d.ts +1 -0
  519. package/dist/test/ascii/time-formatter.test.js +80 -0
  520. package/dist/test/ascii/time-formatter.test.js.map +1 -0
  521. package/dist/test/ascii/view-decode.test.d.ts +1 -0
  522. package/dist/test/ascii/view-decode.test.js +183 -0
  523. package/dist/test/ascii/view-decode.test.js.map +1 -0
  524. package/dist/test/ascii-encoder.test.d.ts +1 -1
  525. package/dist/test/ascii-encoder.test.js +51 -48
  526. package/dist/test/ascii-encoder.test.js.map +1 -1
  527. package/dist/test/ascii-parser.test.d.ts +1 -1
  528. package/dist/test/ascii-parser.test.js +31 -48
  529. package/dist/test/ascii-parser.test.js.map +1 -1
  530. package/dist/test/ascii-segment.test.d.ts +1 -1
  531. package/dist/test/ascii-segment.test.js +19 -39
  532. package/dist/test/ascii-segment.test.js.map +1 -1
  533. package/dist/test/ascii-store-replay.test.d.ts +1 -1
  534. package/dist/test/ascii-store-replay.test.js +12 -41
  535. package/dist/test/ascii-store-replay.test.js.map +1 -1
  536. package/dist/test/ascii-tag-pos.test.d.ts +1 -1
  537. package/dist/test/ascii-tag-pos.test.js +8 -8
  538. package/dist/test/ascii-tag-pos.test.js.map +1 -1
  539. package/dist/test/elastic-buffer.test.d.ts +1 -1
  540. package/dist/test/elastic-buffer.test.js +3 -1
  541. package/dist/test/elastic-buffer.test.js.map +1 -1
  542. package/dist/test/encode-proxy.test.d.ts +1 -1
  543. package/dist/test/encode-proxy.test.js +9 -9
  544. package/dist/test/encode-proxy.test.js.map +1 -1
  545. package/dist/test/env/experiment.d.ts +23 -0
  546. package/dist/test/env/experiment.js +33 -0
  547. package/dist/test/env/experiment.js.map +1 -0
  548. package/dist/test/env/parsing-result.d.ts +10 -0
  549. package/dist/test/env/parsing-result.js +14 -0
  550. package/dist/test/env/parsing-result.js.map +1 -0
  551. package/dist/test/env/setup.d.ts +39 -0
  552. package/dist/test/env/setup.js +98 -0
  553. package/dist/test/env/setup.js.map +1 -0
  554. package/dist/test/env/skeleton-runner.d.ts +15 -0
  555. package/dist/test/env/skeleton-runner.js +108 -0
  556. package/dist/test/env/skeleton-runner.js.map +1 -0
  557. package/dist/test/env/test-recovery.d.ts +13 -0
  558. package/dist/test/env/test-recovery.js +41 -0
  559. package/dist/test/env/test-recovery.js.map +1 -0
  560. package/dist/test/env/to-views.d.ts +11 -0
  561. package/dist/test/env/to-views.js +56 -0
  562. package/dist/test/env/to-views.js.map +1 -0
  563. package/dist/test/execution-report.test.d.ts +1 -1
  564. package/dist/test/execution-report.test.js +53 -49
  565. package/dist/test/execution-report.test.js.map +1 -1
  566. package/dist/test/experiment.d.ts +23 -0
  567. package/dist/test/experiment.js +33 -0
  568. package/dist/test/experiment.js.map +1 -0
  569. package/dist/test/expieriment.d.ts +23 -0
  570. package/dist/test/expieriment.js +33 -0
  571. package/dist/test/expieriment.js.map +1 -0
  572. package/dist/test/fix-log-replay.test.d.ts +1 -1
  573. package/dist/test/fix-log-replay.test.js +7 -5
  574. package/dist/test/fix-log-replay.test.js.map +1 -1
  575. package/dist/test/fix-repo-dict.test.d.ts +1 -1
  576. package/dist/test/fix-repo-dict.test.js +6 -5
  577. package/dist/test/fix-repo-dict.test.js.map +1 -1
  578. package/dist/test/fixml/fixml-alloc-parse.test.d.ts +1 -0
  579. package/dist/test/fixml/fixml-alloc-parse.test.js +161 -0
  580. package/dist/test/fixml/fixml-alloc-parse.test.js.map +1 -0
  581. package/dist/test/fixml/fixml-mkt-data-fut-parse.test.d.ts +1 -0
  582. package/dist/test/fixml/fixml-mkt-data-fut-parse.test.js +61 -0
  583. package/dist/test/fixml/fixml-mkt-data-fut-parse.test.js.map +1 -0
  584. package/dist/test/fixml/fixml-mkt-data-settle-parse.test.d.ts +1 -0
  585. package/dist/test/fixml/fixml-mkt-data-settle-parse.test.js +34 -0
  586. package/dist/test/fixml/fixml-mkt-data-settle-parse.test.js.map +1 -0
  587. package/dist/test/fixml/fixml-tc-bi-lateral-parse.test.d.ts +1 -0
  588. package/dist/test/fixml/fixml-tc-bi-lateral-parse.test.js +97 -0
  589. package/dist/test/fixml/fixml-tc-bi-lateral-parse.test.js.map +1 -0
  590. package/dist/test/fixml/repo-full-fixml-msg.test.d.ts +1 -0
  591. package/dist/test/fixml/repo-full-fixml-msg.test.js +143 -0
  592. package/dist/test/fixml/repo-full-fixml-msg.test.js.map +1 -0
  593. package/dist/test/fixml-alloc-parse.test.d.ts +1 -1
  594. package/dist/test/fixml-alloc-parse.test.js +2 -1
  595. package/dist/test/fixml-alloc-parse.test.js.map +1 -1
  596. package/dist/test/fixml-mkt-data-fut-parse.test.d.ts +1 -1
  597. package/dist/test/fixml-mkt-data-fut-parse.test.js +2 -1
  598. package/dist/test/fixml-mkt-data-fut-parse.test.js.map +1 -1
  599. package/dist/test/fixml-mkt-data-settle-parse.test.d.ts +1 -1
  600. package/dist/test/fixml-mkt-data-settle-parse.test.js +2 -1
  601. package/dist/test/fixml-mkt-data-settle-parse.test.js.map +1 -1
  602. package/dist/test/fixml-tc-bi-lateral-parse.test.d.ts +1 -1
  603. package/dist/test/fixml-tc-bi-lateral-parse.test.js +2 -1
  604. package/dist/test/fixml-tc-bi-lateral-parse.test.js.map +1 -1
  605. package/dist/test/includes.test.d.ts +1 -1
  606. package/dist/test/includes.test.js +1 -0
  607. package/dist/test/includes.test.js.map +1 -1
  608. package/dist/test/logon.test.d.ts +1 -1
  609. package/dist/test/logon.test.js +11 -11
  610. package/dist/test/logon.test.js.map +1 -1
  611. package/dist/test/memory-store.test.d.ts +1 -1
  612. package/dist/test/memory-store.test.js +11 -8
  613. package/dist/test/memory-store.test.js.map +1 -1
  614. package/dist/test/qf-full-msg.test.d.ts +1 -1
  615. package/dist/test/qf-full-msg.test.js +25 -20
  616. package/dist/test/qf-full-msg.test.js.map +1 -1
  617. package/dist/test/repo-full-ascii-msg.test.d.ts +1 -1
  618. package/dist/test/repo-full-ascii-msg.test.js +22 -17
  619. package/dist/test/repo-full-ascii-msg.test.js.map +1 -1
  620. package/dist/test/repo-full-fixml-msg.test.d.ts +1 -1
  621. package/dist/test/repo-full-fixml-msg.test.js +21 -18
  622. package/dist/test/repo-full-fixml-msg.test.js.map +1 -1
  623. package/dist/test/session-state.test.d.ts +1 -1
  624. package/dist/test/session-state.test.js +1 -0
  625. package/dist/test/session-state.test.js.map +1 -1
  626. package/dist/test/session.test.d.ts +1 -1
  627. package/dist/test/session.test.js +152 -164
  628. package/dist/test/session.test.js.map +1 -1
  629. package/dist/test/setup.d.ts +45 -0
  630. package/dist/test/setup.js +102 -0
  631. package/dist/test/setup.js.map +1 -0
  632. package/dist/test/skeleton-runner.d.ts +15 -0
  633. package/dist/test/skeleton-runner.js +108 -0
  634. package/dist/test/skeleton-runner.js.map +1 -0
  635. package/dist/test/time-formatter.test.d.ts +1 -1
  636. package/dist/test/time-formatter.test.js +3 -1
  637. package/dist/test/time-formatter.test.js.map +1 -1
  638. package/dist/test/to-views.d.ts +1 -1
  639. package/dist/test/to-views.js +5 -4
  640. package/dist/test/to-views.js.map +1 -1
  641. package/dist/test/view-decode.test.d.ts +1 -1
  642. package/dist/test/view-decode.test.js +9 -34
  643. package/dist/test/view-decode.test.js.map +1 -1
  644. package/dist/time-formatter.test.d.ts +0 -0
  645. package/dist/time-formatter.test.js +1 -0
  646. package/dist/time-formatter.test.js.map +1 -0
  647. package/dist/to-views.d.ts +0 -0
  648. package/dist/to-views.js +1 -0
  649. package/dist/to-views.js.map +1 -0
  650. package/dist/token.txt +248 -0
  651. package/dist/transport/FixEntity.d.ts +8 -0
  652. package/dist/transport/FixEntity.js +12 -0
  653. package/dist/transport/FixEntity.js.map +1 -0
  654. package/dist/transport/a-session-msg-factory.d.ts +2 -2
  655. package/dist/transport/a-session-msg-factory.js.map +1 -1
  656. package/dist/transport/ascii/ascii-msg-transmitter.js +31 -9
  657. package/dist/transport/ascii/ascii-msg-transmitter.js.map +1 -1
  658. package/dist/transport/ascii/ascii-session-msg-factory.d.ts +2 -2
  659. package/dist/transport/ascii/ascii-session-msg-factory.js +1 -1
  660. package/dist/transport/ascii/ascii-session-msg-factory.js.map +1 -1
  661. package/dist/transport/ascii/ascii-session.d.ts +9 -1
  662. package/dist/transport/ascii/ascii-session.js +86 -35
  663. package/dist/transport/ascii/ascii-session.js.map +1 -1
  664. package/dist/transport/ascii/index.d.ts +0 -1
  665. package/dist/transport/ascii/index.js +0 -1
  666. package/dist/transport/ascii/index.js.map +1 -1
  667. package/dist/transport/duplex/http-duplex.d.ts +1 -1
  668. package/dist/transport/duplex/http-duplex.js +2 -2
  669. package/dist/transport/duplex/http-duplex.js.map +1 -1
  670. package/dist/transport/duplex/tcp-duplex.js +22 -2
  671. package/dist/transport/duplex/tcp-duplex.js.map +1 -1
  672. package/dist/transport/factory/index.d.ts +1 -0
  673. package/dist/transport/factory/index.js +14 -0
  674. package/dist/transport/factory/index.js.map +1 -0
  675. package/dist/transport/{msg-transport.d.ts → factory/msg-transport.d.ts} +4 -4
  676. package/dist/transport/factory/msg-transport.js +61 -0
  677. package/dist/transport/factory/msg-transport.js.map +1 -0
  678. package/dist/transport/fix-acceptor.d.ts +2 -2
  679. package/dist/transport/fix-acceptor.js.map +1 -1
  680. package/dist/transport/fix-entity.d.ts +8 -0
  681. package/dist/transport/fix-entity.js +12 -0
  682. package/dist/transport/fix-entity.js.map +1 -0
  683. package/dist/transport/fix-initiator.d.ts +2 -2
  684. package/dist/transport/fix-initiator.js.map +1 -1
  685. package/dist/transport/fix-msg-factory.d.ts +1 -1
  686. package/dist/transport/fix-msg-factory.js.map +1 -1
  687. package/dist/transport/fix-session-state-args.d.ts +8 -0
  688. package/dist/transport/fix-session-state-args.js +3 -0
  689. package/dist/transport/fix-session-state-args.js.map +1 -0
  690. package/dist/transport/fix-session-state.d.ts +3 -41
  691. package/dist/transport/fix-session-state.js +21 -51
  692. package/dist/transport/fix-session-state.js.map +1 -1
  693. package/dist/transport/fix-session.d.ts +9 -2
  694. package/dist/transport/fix-session.js +113 -58
  695. package/dist/transport/fix-session.js.map +1 -1
  696. package/dist/transport/fixml/fixml-msg-transmitter.js +23 -5
  697. package/dist/transport/fixml/fixml-msg-transmitter.js.map +1 -1
  698. package/dist/transport/fixml/fixml-session-msg-factory.d.ts +2 -2
  699. package/dist/transport/fixml/fixml-session-msg-factory.js +1 -1
  700. package/dist/transport/fixml/fixml-session-msg-factory.js.map +1 -1
  701. package/dist/transport/fixml/fixml-session.d.ts +1 -1
  702. package/dist/transport/fixml/fixml-session.js +3 -3
  703. package/dist/transport/fixml/fixml-session.js.map +1 -1
  704. package/dist/transport/fixml/index.d.ts +0 -2
  705. package/dist/transport/fixml/index.js +0 -2
  706. package/dist/transport/fixml/index.js.map +1 -1
  707. package/dist/transport/http/html-options.d.ts +8 -0
  708. package/dist/transport/http/html-options.js +3 -0
  709. package/dist/transport/http/html-options.js.map +1 -0
  710. package/dist/transport/http/html-route.d.ts +5 -0
  711. package/dist/transport/http/html-route.js +3 -0
  712. package/dist/transport/http/html-route.js.map +1 -0
  713. package/dist/transport/http/http-acceptor-listener.d.ts +7 -0
  714. package/dist/transport/http/http-acceptor-listener.js +68 -0
  715. package/dist/transport/http/http-acceptor-listener.js.map +1 -0
  716. package/dist/transport/http/http-acceptor.js +31 -11
  717. package/dist/transport/http/http-acceptor.js.map +1 -1
  718. package/dist/transport/http/http-adapter.d.ts +7 -0
  719. package/dist/transport/http/http-adapter.js +3 -0
  720. package/dist/transport/http/http-adapter.js.map +1 -0
  721. package/dist/transport/http/http-initiator.d.ts +9 -3
  722. package/dist/transport/http/http-initiator.js +57 -26
  723. package/dist/transport/http/http-initiator.js.map +1 -1
  724. package/dist/transport/http/http-json-sample-adapter.d.ts +2 -1
  725. package/dist/transport/http/http-json-sample-adapter.js +21 -2
  726. package/dist/transport/http/http-json-sample-adapter.js.map +1 -1
  727. package/dist/transport/http/http-transaction.d.ts +1 -1
  728. package/dist/transport/http/http-transaction.js.map +1 -1
  729. package/dist/transport/http/http-transport-description.d.ts +8 -0
  730. package/dist/transport/http/http-transport-description.js +3 -0
  731. package/dist/transport/http/http-transport-description.js.map +1 -0
  732. package/dist/transport/http/index.d.ts +1 -0
  733. package/dist/transport/http/index.js +1 -0
  734. package/dist/transport/http/index.js.map +1 -1
  735. package/dist/transport/index.d.ts +11 -10
  736. package/dist/transport/index.js +11 -10
  737. package/dist/transport/index.js.map +1 -1
  738. package/dist/transport/{make-fixl-session.d.ts → make-fix-session.d.ts} +0 -0
  739. package/dist/transport/make-fix-session.js +3 -0
  740. package/dist/transport/make-fix-session.js.map +1 -0
  741. package/dist/transport/msg-application.d.ts +12 -0
  742. package/dist/transport/msg-application.js +3 -0
  743. package/dist/transport/msg-application.js.map +1 -0
  744. package/dist/transport/msg-transmitter.d.ts +5 -5
  745. package/dist/transport/msg-transmitter.js +2 -3
  746. package/dist/transport/msg-transmitter.js.map +1 -1
  747. package/dist/transport/session/a-session-msg-factory.d.ts +23 -0
  748. package/dist/transport/session/a-session-msg-factory.js +58 -0
  749. package/dist/transport/session/a-session-msg-factory.js.map +1 -0
  750. package/dist/transport/session/fix-session-state-args.d.ts +8 -0
  751. package/dist/transport/session/fix-session-state-args.js +3 -0
  752. package/dist/transport/session/fix-session-state-args.js.map +1 -0
  753. package/dist/transport/session/fix-session-state.d.ts +32 -0
  754. package/dist/transport/session/fix-session-state.js +133 -0
  755. package/dist/transport/session/fix-session-state.js.map +1 -0
  756. package/dist/transport/session/fix-session.d.ts +50 -0
  757. package/dist/transport/session/fix-session.js +291 -0
  758. package/dist/transport/session/fix-session.js.map +1 -0
  759. package/dist/transport/session/make-fix-session.d.ts +5 -0
  760. package/dist/transport/session/make-fix-session.js +3 -0
  761. package/dist/transport/session/make-fix-session.js.map +1 -0
  762. package/dist/transport/session/session-description.d.ts +17 -0
  763. package/dist/transport/session/session-description.js +3 -0
  764. package/dist/transport/session/session-description.js.map +1 -0
  765. package/dist/transport/session/session-msg-factory.d.ts +15 -0
  766. package/dist/transport/session/session-msg-factory.js +3 -0
  767. package/dist/transport/session/session-msg-factory.js.map +1 -0
  768. package/dist/transport/session/session-state.d.ts +25 -0
  769. package/dist/transport/session/session-state.js +30 -0
  770. package/dist/transport/session/session-state.js.map +1 -0
  771. package/dist/transport/session-description.d.ts +1 -48
  772. package/dist/transport/session-description.js.map +1 -1
  773. package/dist/transport/session-msg-factory.d.ts +14 -5
  774. package/dist/transport/session-msg-factory.js +0 -10
  775. package/dist/transport/session-msg-factory.js.map +1 -1
  776. package/dist/transport/session-state.d.ts +25 -0
  777. package/dist/transport/session-state.js +30 -0
  778. package/dist/transport/session-state.js.map +1 -0
  779. package/dist/transport/tcp/index.d.ts +3 -2
  780. package/dist/transport/tcp/index.js +3 -2
  781. package/dist/transport/tcp/index.js.map +1 -1
  782. package/dist/transport/tcp/recovering-tcp-initiator.d.ts +7 -9
  783. package/dist/transport/tcp/recovering-tcp-initiator.js +41 -16
  784. package/dist/transport/tcp/recovering-tcp-initiator.js.map +1 -1
  785. package/dist/transport/tcp/tcp-acceptor-listener.d.ts +7 -0
  786. package/dist/transport/tcp/tcp-acceptor-listener.js +70 -0
  787. package/dist/transport/tcp/tcp-acceptor-listener.js.map +1 -0
  788. package/dist/transport/tcp/tcp-acceptor.d.ts +7 -0
  789. package/dist/transport/tcp/tcp-acceptor.js +79 -43
  790. package/dist/transport/tcp/tcp-acceptor.js.map +1 -1
  791. package/dist/transport/tcp/tcp-initiator-connector.d.ts +10 -0
  792. package/dist/transport/tcp/tcp-initiator-connector.js +97 -0
  793. package/dist/transport/tcp/tcp-initiator-connector.js.map +1 -0
  794. package/dist/transport/tcp/tcp-initiator.d.ts +4 -2
  795. package/dist/transport/tcp/tcp-initiator.js +82 -36
  796. package/dist/transport/tcp/tcp-initiator.js.map +1 -1
  797. package/dist/transport/tcp/tcp-transport-description.d.ts +6 -0
  798. package/dist/transport/tcp/tcp-transport-description.js +3 -0
  799. package/dist/transport/tcp/tcp-transport-description.js.map +1 -0
  800. package/dist/transport/tcp/tls-options-factory.d.ts +9 -0
  801. package/dist/transport/tcp/tls-options-factory.js +53 -0
  802. package/dist/transport/tcp/tls-options-factory.js.map +1 -0
  803. package/dist/transport/tcp/tls-options.d.ts +10 -5
  804. package/dist/transport/tcp/tls-options.js +0 -49
  805. package/dist/transport/tcp/tls-options.js.map +1 -1
  806. package/dist/transport/tick-action.d.ts +8 -0
  807. package/dist/transport/tick-action.js +13 -0
  808. package/dist/transport/tick-action.js.map +1 -0
  809. package/dist/util/definition-factory.d.ts +10 -0
  810. package/dist/util/definition-factory.js +56 -0
  811. package/dist/util/definition-factory.js.map +1 -0
  812. package/dist/util/dictionary-path.d.ts +4 -0
  813. package/dist/util/dictionary-path.js +3 -0
  814. package/dist/util/dictionary-path.js.map +1 -0
  815. package/dist/util/index.d.ts +1 -1
  816. package/dist/util/index.js +1 -1
  817. package/dist/util/index.js.map +1 -1
  818. package/dist/util/json-helper.d.ts +3 -1
  819. package/dist/util/json-helper.js +13 -12
  820. package/dist/util/json-helper.js.map +1 -1
  821. package/dist/util/message-generator.d.ts +1 -1
  822. package/dist/util/message-generator.js +16 -15
  823. package/dist/util/message-generator.js.map +1 -1
  824. package/dist/util/replay.d.ts +6 -3
  825. package/dist/util/replay.js +24 -26
  826. package/dist/util/replay.js.map +1 -1
  827. package/package.json +23 -17
  828. package/script/build.cmd +1 -0
  829. package/script/build.sh +1 -0
  830. package/script/genkey.ps1 +179 -179
  831. package/script/test.cmd +3 -0
  832. package/src/buffer/{ascii-chars.ts → ascii/ascii-chars.ts} +0 -0
  833. package/src/buffer/ascii/ascii-encoder.ts +78 -37
  834. package/src/buffer/ascii/ascii-parser-state.ts +7 -12
  835. package/src/buffer/ascii/ascii-parser.ts +23 -16
  836. package/src/buffer/ascii/ascii-segment-parser.ts +14 -8
  837. package/src/buffer/ascii/ascii-view.ts +4 -9
  838. package/src/buffer/ascii/index.ts +1 -0
  839. package/src/buffer/ascii/parse-state.ts +8 -0
  840. package/src/buffer/ascii/time-formatter.ts +3 -3
  841. package/src/buffer/elastic-buffer.ts +7 -2
  842. package/src/buffer/encode-proxy.ts +10 -5
  843. package/src/buffer/fixml/fixml-encoder.ts +15 -11
  844. package/src/buffer/fixml/fixml-parser.ts +16 -6
  845. package/src/buffer/fixml/fixml-view.ts +4 -4
  846. package/src/buffer/fixml/populated-attributes.ts +6 -0
  847. package/src/buffer/index.ts +4 -8
  848. package/src/buffer/msg-encoder.ts +2 -1
  849. package/src/buffer/msg-view.ts +13 -6
  850. package/src/buffer/{segment-description.ts → segment/segment-description.ts} +4 -11
  851. package/src/buffer/{segment-summary.ts → segment/segment-summary.ts} +0 -0
  852. package/src/buffer/segment/segment-type.ts +8 -0
  853. package/src/buffer/structure.ts +3 -3
  854. package/src/buffer/{tag-pos.ts → tag/tag-pos.ts} +0 -0
  855. package/src/buffer/tag/tag-type.ts +13 -0
  856. package/src/buffer/{tags.ts → tag/tags.ts} +4 -16
  857. package/src/config/get-js-fx-logger.ts +4 -0
  858. package/src/config/index.ts +1 -0
  859. package/src/config/js-fix-config.ts +5 -2
  860. package/src/config/js-fix-logger.ts +0 -3
  861. package/src/dictionary/compiler/compiler-type.ts +3 -3
  862. package/src/dictionary/compiler/enum-compiler.ts +12 -1
  863. package/src/dictionary/compiler/msg-compiler.ts +8 -7
  864. package/src/dictionary/contained/contained-component-field.ts +2 -1
  865. package/src/dictionary/contained/contained-field-dispatch.ts +3 -7
  866. package/src/dictionary/contained/contained-field-dispatcher.ts +9 -0
  867. package/src/dictionary/contained/contained-field-set.ts +5 -3
  868. package/src/dictionary/contained/contained-field-type.ts +5 -0
  869. package/src/dictionary/contained/contained-field.ts +1 -6
  870. package/src/dictionary/contained/contained-group-field.ts +2 -1
  871. package/src/dictionary/contained/contained-simple-field.ts +2 -1
  872. package/src/dictionary/contained/field-dispatcher.ts +9 -0
  873. package/src/dictionary/contained/fields-dispatch.ts +46 -0
  874. package/src/dictionary/contained/index.ts +2 -0
  875. package/src/dictionary/contained-set-type.ts +5 -0
  876. package/src/dictionary/definition/component-field-definition.ts +1 -1
  877. package/src/dictionary/definition/fix-definitions.ts +2 -1
  878. package/src/dictionary/definition/group-field-definition.ts +1 -1
  879. package/src/dictionary/definition/index.ts +0 -1
  880. package/src/dictionary/definition/message-definition.ts +1 -1
  881. package/src/dictionary/definition/simple-field-definition.ts +3 -1
  882. package/src/dictionary/dict-primitive.ts +0 -13
  883. package/src/dictionary/fix-definition-source.ts +6 -0
  884. package/src/dictionary/fix-versions.ts +0 -32
  885. package/src/dictionary/index.ts +1 -5
  886. package/src/dictionary/parser/fix-repository/abbreviations-parser.ts +2 -3
  887. package/src/dictionary/parser/fix-repository/base-parser.ts +2 -3
  888. package/src/dictionary/parser/fix-repository/components-parser.ts +2 -3
  889. package/src/dictionary/parser/fix-repository/data-types-parser.ts +2 -3
  890. package/src/dictionary/parser/fix-repository/enums-parser.ts +2 -3
  891. package/src/dictionary/parser/fix-repository/fields-parser.ts +2 -3
  892. package/src/dictionary/parser/fix-repository/messages-parser.ts +2 -3
  893. package/src/dictionary/parser/fix-repository/msg-contents-parser.ts +2 -3
  894. package/src/dictionary/parser/fix-repository/repository-abbreviation.ts +6 -0
  895. package/src/dictionary/parser/fix-repository/repository-component.ts +11 -0
  896. package/src/dictionary/parser/fix-repository/repository-data-type.ts +7 -0
  897. package/src/dictionary/parser/fix-repository/repository-enum.ts +8 -0
  898. package/src/dictionary/parser/fix-repository/repository-field.ts +12 -0
  899. package/src/dictionary/parser/fix-repository/repository-message.ts +12 -0
  900. package/src/dictionary/parser/fix-repository/repository-msg-content.ts +10 -0
  901. package/src/dictionary/parser/fix-repository/repository-type.ts +0 -59
  902. package/src/dictionary/parser/fix-repository/repository-xml-parser.ts +10 -9
  903. package/src/dictionary/parser/fix-repository/repository.ts +69 -38
  904. package/src/dictionary/parser/fixml/components-parser.ts +6 -3
  905. package/src/dictionary/parser/fixml/fields-parser.ts +1 -1
  906. package/src/dictionary/parser/fixml/fix-xsd-parser.ts +2 -1
  907. package/src/dictionary/parser/fixml/include-graph.ts +2 -1
  908. package/src/dictionary/parser/fixml/xsd-parser.ts +2 -1
  909. package/src/dictionary/parser/quickfix/field-definition-parser.ts +4 -5
  910. package/src/dictionary/parser/quickfix/field-set-parser.ts +4 -5
  911. package/src/dictionary/parser/quickfix/message-parser.ts +4 -5
  912. package/src/dictionary/parser/quickfix/node-parser.ts +3 -6
  913. package/src/dictionary/parser/quickfix/parse-state.ts +8 -0
  914. package/src/dictionary/parser/quickfix/quick-fix-xml-file-parser.ts +9 -15
  915. package/src/dictionary/sax-node.ts +7 -0
  916. package/src/dictionary/set-reduce.ts +30 -31
  917. package/src/dictionary/type-dispatcher.ts +7 -0
  918. package/src/dictionary/version-util.ts +25 -0
  919. package/src/index.ts +1 -0
  920. package/src/jsfix-cmd.ts +31 -16
  921. package/src/runtime/di-tokens.ts +48 -0
  922. package/src/runtime/engine-factory.ts +5 -0
  923. package/src/runtime/index.ts +5 -0
  924. package/src/runtime/make-config.ts +35 -0
  925. package/src/runtime/session-container.ts +180 -0
  926. package/src/runtime/session-launcher.ts +127 -0
  927. package/src/sample/http/oms/app.ts +20 -14
  928. package/src/sample/http/oms/http-client.ts +5 -2
  929. package/src/sample/http/oms/http-server.ts +5 -1
  930. package/src/sample/tcp/qf-md/app.ts +12 -12
  931. package/src/sample/tcp/qf-md/md-client.ts +4 -1
  932. package/src/sample/tcp/qf-md/md-server.ts +3 -1
  933. package/src/sample/tcp/recovering-skeleton/app.ts +37 -15
  934. package/src/sample/tcp/recovering-skeleton/respawn-acceptor.ts +16 -9
  935. package/src/sample/tcp/recovering-skeleton/skeleton-client.ts +4 -2
  936. package/src/sample/tcp/recovering-skeleton/skeleton-server.ts +4 -2
  937. package/src/sample/tcp/skeleton/app.ts +10 -15
  938. package/src/sample/tcp/skeleton/skeleton-session.ts +29 -3
  939. package/src/sample/tcp/tls-trade-capture/app.ts +8 -31
  940. package/src/sample/tcp/trade-capture/app-launcher.ts +22 -0
  941. package/src/sample/tcp/trade-capture/app.ts +3 -26
  942. package/src/sample/tcp/trade-capture/trade-capture-client.ts +10 -4
  943. package/src/sample/tcp/trade-capture/trade-capture-server.ts +2 -1
  944. package/src/sample/tcp/trade-capture/trade-factory.ts +7 -1
  945. package/src/store/fix-msg-ascii-store-resend.ts +6 -4
  946. package/src/store/fix-msg-memory-store.ts +1 -1
  947. package/src/store/fix-msg-store-record.ts +7 -0
  948. package/src/store/fix-msg-store-state.ts +6 -0
  949. package/src/store/fix-msg-store.ts +1 -7
  950. package/src/transport/ascii/ascii-msg-transmitter.ts +15 -8
  951. package/src/transport/ascii/ascii-session-msg-factory.ts +2 -2
  952. package/src/transport/ascii/ascii-session.ts +84 -25
  953. package/src/transport/ascii/index.ts +0 -1
  954. package/src/transport/duplex/http-duplex.ts +3 -3
  955. package/src/transport/duplex/tcp-duplex.ts +4 -1
  956. package/src/transport/factory/index.ts +1 -0
  957. package/src/transport/factory/msg-transport.ts +55 -0
  958. package/src/transport/fix-acceptor.ts +2 -2
  959. package/src/transport/fix-entity.ts +9 -0
  960. package/src/transport/fix-initiator.ts +2 -2
  961. package/src/transport/fixml/fixml-msg-transmitter.ts +8 -4
  962. package/src/transport/fixml/fixml-session-msg-factory.ts +2 -2
  963. package/src/transport/fixml/fixml-session.ts +2 -2
  964. package/src/transport/fixml/index.ts +0 -2
  965. package/src/transport/http/html-options.ts +8 -0
  966. package/src/transport/http/html-route.ts +6 -0
  967. package/src/transport/http/http-acceptor-listener.ts +42 -0
  968. package/src/transport/http/http-acceptor.ts +12 -8
  969. package/src/transport/http/http-adapter.ts +7 -0
  970. package/src/transport/http/http-initiator.ts +40 -25
  971. package/src/transport/http/http-json-sample-adapter.ts +7 -2
  972. package/src/transport/http/http-transaction.ts +1 -1
  973. package/src/transport/http/http-transport-description.ts +9 -0
  974. package/src/transport/http/index.ts +1 -0
  975. package/src/transport/index.ts +11 -10
  976. package/src/transport/msg-application.ts +13 -0
  977. package/src/transport/msg-transmitter.ts +5 -5
  978. package/src/transport/{a-session-msg-factory.ts → session/a-session-msg-factory.ts} +4 -4
  979. package/src/transport/session/fix-session-state-args.ts +9 -0
  980. package/src/transport/{fix-session-state.ts → session/fix-session-state.ts} +8 -45
  981. package/src/transport/{fix-session.ts → session/fix-session.ts} +108 -44
  982. package/src/transport/{make-fixl-session.ts → session/make-fix-session.ts} +1 -1
  983. package/src/transport/session/session-description.ts +18 -0
  984. package/src/transport/{fix-msg-factory.ts → session/session-msg-factory.ts} +2 -2
  985. package/src/transport/session/session-state.ts +25 -0
  986. package/src/transport/tcp/index.ts +3 -2
  987. package/src/transport/tcp/recovering-tcp-initiator.ts +24 -13
  988. package/src/transport/tcp/tcp-acceptor-listener.ts +45 -0
  989. package/src/transport/tcp/tcp-acceptor.ts +65 -40
  990. package/src/transport/tcp/tcp-initiator-connector.ts +71 -0
  991. package/src/transport/tcp/tcp-initiator.ts +71 -42
  992. package/src/transport/tcp/tcp-transport-description.ts +7 -0
  993. package/src/transport/tcp/tls-options-factory.ts +55 -0
  994. package/src/transport/tcp/tls-options.ts +9 -51
  995. package/src/transport/tick-action.ts +8 -0
  996. package/src/util/definition-factory.ts +47 -0
  997. package/src/util/dictionary-path.ts +4 -0
  998. package/src/util/index.ts +1 -1
  999. package/src/util/json-helper.ts +14 -4
  1000. package/src/util/message-generator.ts +6 -3
  1001. package/src/util/replay.ts +26 -21
  1002. package/tsconfig.json +2 -0
  1003. package/dist/buffer/ascii-chars.js.map +0 -1
  1004. package/dist/dictionary/fields-dispatch.js +0 -40
  1005. package/dist/dictionary/fields-dispatch.js.map +0 -1
  1006. package/dist/transport/ascii-session-msg-factory.d.ts +0 -16
  1007. package/dist/transport/ascii-session-msg-factory.js +0 -47
  1008. package/dist/transport/ascii-session-msg-factory.js.map +0 -1
  1009. package/dist/transport/fixml/acceptor.d.ts +0 -3
  1010. package/dist/transport/fixml/acceptor.js +0 -38
  1011. package/dist/transport/fixml/acceptor.js.map +0 -1
  1012. package/dist/transport/fixml-session-msg-factory.d.ts +0 -13
  1013. package/dist/transport/fixml-session-msg-factory.js +0 -68
  1014. package/dist/transport/fixml-session-msg-factory.js.map +0 -1
  1015. package/dist/transport/make-config.d.ts +0 -4
  1016. package/dist/transport/make-config.js +0 -31
  1017. package/dist/transport/make-config.js.map +0 -1
  1018. package/dist/transport/make-fixl-session.js.map +0 -1
  1019. package/dist/transport/msg-transport.js +0 -57
  1020. package/dist/transport/msg-transport.js.map +0 -1
  1021. package/dist/transport/tcp/acceptor.d.ts +0 -3
  1022. package/dist/transport/tcp/acceptor.js +0 -40
  1023. package/dist/transport/tcp/acceptor.js.map +0 -1
  1024. package/dist/transport/tcp/initiator.d.ts +0 -3
  1025. package/dist/transport/tcp/initiator.js +0 -67
  1026. package/dist/transport/tcp/initiator.js.map +0 -1
  1027. package/dist/util/dictionary-definitions.d.ts +0 -8
  1028. package/dist/util/dictionary-definitions.js +0 -51
  1029. package/dist/util/dictionary-definitions.js.map +0 -1
  1030. package/src/dictionary/fields-dispatch.ts +0 -45
  1031. package/src/sample/launcher.ts +0 -56
  1032. package/src/transport/fixml/acceptor.ts +0 -29
  1033. package/src/transport/make-config.ts +0 -19
  1034. package/src/transport/msg-transport.ts +0 -67
  1035. package/src/transport/session-description.ts +0 -70
  1036. package/src/transport/tcp/acceptor.ts +0 -31
  1037. package/src/transport/tcp/initiator.ts +0 -59
  1038. package/src/util/dictionary-definitions.ts +0 -41
package/.eslintrc.js ADDED
@@ -0,0 +1,6 @@
1
+ module.exports = {
2
+ extends: 'standard-with-typescript',
3
+ parserOptions: {
4
+ project: './tsconfig.json'
5
+ }
6
+ }
package/README.md CHANGED
@@ -27,7 +27,7 @@ compiled typescript is now included. Install the package from npm:
27
27
 
28
28
  ```shell
29
29
  npm install jspurefix
30
- npm run unzip-repo
30
+ cd node_modules/jspurefix && npm run unzip-repo
31
31
  ```
32
32
 
33
33
  see our [demo application](https://github.com/TimelordUK/jspf-demo/)
@@ -203,6 +203,7 @@ i.e. include field BodyLengthChars which defaults to 7 characters if omitted.
203
203
 
204
204
  If the message sequences are persisted over multiple sessions and are not reset on logon (ie. `"ResetSeqNumFlag": false,`),
205
205
  then the previously used sequence numbers can be set as follows:
206
+
206
207
  ```json
207
208
  {
208
209
  "ResetSeqNumFlag": false,
@@ -213,9 +214,10 @@ then the previously used sequence numbers can be set as follows:
213
214
 
214
215
  ## resending messages
215
216
 
216
- By default, the library will not resend past messages as this requires persisting messages which depending on the volume,
217
+ By default, the library will not resend past messages as this requires persisting messages which depending on the volume,
217
218
  may also require a database. If you want to support resending you must override `AsciiSession.onResendRequest()` with a resending logic.
218
219
  Additionally, make sure to include the original message sequence and the duplicate message flag in the FIX object:
220
+
219
221
  ```typescript
220
222
  {
221
223
  ...messageBodyData,
@@ -225,6 +227,7 @@ Additionally, make sure to include the original message sequence and the duplica
225
227
  ```
226
228
 
227
229
  ### Example
230
+
228
231
  ```json
229
232
  {
230
233
  "ClOrdID": "acceptor-order-id",
package/appveyor.yml CHANGED
@@ -47,7 +47,10 @@ for:
47
47
  - sh: script/build.sh
48
48
 
49
49
  test_script:
50
+ - sh: "npm run repo44-bench-er"
50
51
  - sh: "npm run tcp-tc"
51
52
  - sh: "npm run http-oms"
53
+ - sh: "npm run tcp-qf-md"
54
+ - sh: "npm run tcp-rec-sk"
52
55
  - sh: "npm test"
53
56
 
@@ -0,0 +1,179 @@
1
+
2
+ function read-or-default {
3
+ Param
4
+ (
5
+ [Parameter(Mandatory=$true, Position=0)]
6
+ [string] $text,
7
+ [Parameter(Mandatory=$true, Position=1)]
8
+ [string] $default
9
+ )
10
+ $a = Read-Host "$text [$default]"
11
+ if ($a.Length -eq 0) {
12
+ $a = $default
13
+ }
14
+ $a
15
+ }
16
+ Function Test-CommandExists {
17
+ Param ($command)
18
+ $oldPreference = $ErrorActionPreference
19
+ $ErrorActionPreference = ‘stop’
20
+ try {
21
+ if (Get-Command $command) {
22
+ 1
23
+ }
24
+ }
25
+ Catch {
26
+ 0
27
+ }
28
+ Finally {
29
+ $ErrorActionPreference = $oldPreference
30
+ }
31
+ } #end function test-CommandExists
32
+
33
+ if (-Not (Test-CommandExists "openssl")) {
34
+ Write-Output "openssl does not appear to be in path."
35
+ exit -1
36
+ }
37
+
38
+ function New-Folder {
39
+ param (
40
+ [Parameter(Mandatory=$true, Position=0)]
41
+ [string] $name
42
+ )
43
+ if (-Not (Test-Path -PathType Container $Name)) {
44
+ New-Item -Type Directory -p $Name
45
+ }
46
+ }
47
+
48
+ $ROOTPATH = read-or-default "rootpath" "."
49
+
50
+ $PATH_CA = "$ROOTPATH/certs/ca"
51
+ $PATH_SERVER = "$ROOTPATH/certs/server"
52
+ $PATH_CLIENT = "$ROOTPATH/certs/client"
53
+ $PATH_TMP = "$ROOTPATH/certs/tmp"
54
+
55
+ New-Folder($PATH_CA)
56
+ New-Folder($PATH_SERVER)
57
+ New-Folder($PATH_CLIENT)
58
+ New-Folder($PATH_TMP)
59
+
60
+ Write-Output ""
61
+ Write-Output " _____ _ __ _____ _ _ "
62
+ Write-Output " / ___| | |/ _| / ___(_) | | "
63
+ Write-Output " \ \`--. ___| | |_ ______\ \`--. _ __ _ _ __ ___ __| | "
64
+ Write-Output " \`--. \/ _ \ | _|______|\`--. \ |/ _\` | '_ \ / _ \/ _\` | "
65
+ Write-Output " /\__/ / __/ | | /\__/ / | (_| | | | | __/ (_| | "
66
+ Write-Output " \____/ \___|_|_| \____/|_|\__, |_| |_|\___|\__,_| "
67
+ Write-Output " __/ | "
68
+ Write-Output " |___/ "
69
+ Write-Output " _____ _ _____ _ "
70
+ Write-Output " / __ \ | | | __ \ | | "
71
+ Write-Output " | / \/ ___ _ __| |_ ___ | | \/ ___ _ __ ___ _ __ __ _| |_ ___ _ __ "
72
+ Write-Output " | | / _ \ '__| __/ __| | | __ / _ \ '_ \ / _ \ '__/ _\` | __/ _ \| '__| "
73
+ Write-Output " | \__/\ __/ | | |_\__ \ | |_\ \ __/ | | | __/ | | (_| | || (_) | | "
74
+ Write-Output " \____/\___|_| \__|___/ \____/\___|_| |_|\___|_| \__,_|\__\___/|_| "
75
+ Write-Output " "
76
+ Write-Output ""
77
+
78
+ Write-Output ""
79
+ Write-Output " Global conf "
80
+ Write-Output ""
81
+
82
+ $RSABITS = read-or-default "RSA bit length" "4096"
83
+ $EXPIREDAYS = read-or-default "Expire days" "365"
84
+
85
+ $PASSWORD = "."
86
+ while ($PASSWORD.Length -lt 4) {
87
+ $PASSWORD = read-or-default "Password for certs" "jspurefix"
88
+ if ($PASSWORD.Length -lt 4) {
89
+ Write-Output "Password length cannot be lower than 4 chars"
90
+ }
91
+ }
92
+
93
+ Write-Output ""
94
+ Write-Output " OpenSSL conf "
95
+ Write-Output ""
96
+
97
+ # Classic openssl prompt
98
+
99
+ $GK_C = read-or-default "(C) Country Name (2 letter code)" "US"
100
+ $GK_ST = read-or-default "(ST) State or Province Name (full name)" "."
101
+ $GK_L = read-or-default "(L) Locality Name (eg, city)" "city"
102
+ $GK_O = read-or-default "(O) Organization Name (eg, company)" "ACME Signing Authority Inc"
103
+ $GK_OU = read-or-default "(OU) Organizational Unit Name (eg, section) " "."
104
+ $GK_CN = read-or-default "(CN) Common Name (eg, your name or your server's hostname) " "localhost"
105
+
106
+ $GK_emailAddress = Read-Host "(emailAddress) Email Address []:"
107
+ if ($GK_emailAddress.Length -gt 0) {
108
+ $GK_emailAddress = "/emailAddress=$GK_emailAddress"
109
+ }
110
+
111
+ Write-Output "Please enter the following 'extra' attributes"
112
+ Write-Output "to be sent with your certificate request"
113
+ $GK_unstructuredName = Read-Host "(unstructuredName) An optional company name []:"
114
+ if ($GK_unstructuredName.Length -gt 0) {
115
+ $GK_unstructuredName = "/unstructuredName=$GK_unstructuredName"
116
+ }
117
+
118
+ $OTHER_FIELDS = ""
119
+ $ADD_OTHER_FIELD = "Y"
120
+ while ($ADD_OTHER_FIELD -eq "y" || $ADD_OTHER_FIELD -eq "Y") {
121
+ $ADD_OTHER_FIELD = read-or-default "Add other field [y/N]" "N"
122
+ if ($ADD_OTHER_FIELD -eq "y" || $ADD_OTHER_FIELD -eq "Y") {
123
+ $OTHER_FIELD_NAME = Read-Host "Field name: "
124
+ $OTHER_FIELD_VALUE = Read-Host "Field value: "
125
+ if ($OTHER_FIELD_VALUE.Length -eq 0) {
126
+ OTHER_FIELD_VALUE="."
127
+ }
128
+ $OTHER_FIELDS = "$OTHER_FIELDS/$OTHER_FIELD_NAME=$OTHER_FIELD_VALUE"
129
+ }
130
+ }
131
+
132
+ Write-Output ""
133
+ Write-Output "Generate certs "
134
+ Write-Output ""
135
+
136
+ # CA
137
+ Write-Output ""
138
+ Write-Output "CA"
139
+ Write-Output ""
140
+
141
+ openssl genrsa -des3 -passout "pass:$PASSWORD" -out "$PATH_CA/ca.key" $RSABITS
142
+
143
+ # Create Authority Certificate
144
+ openssl req -new -x509 -days "$EXPIREDAYS" -key "$PATH_CA/ca.key" -out "$PATH_CA/ca.crt" -passin "pass:$PASSWORD" -subj "/C=$GK_C/ST=$GK_ST/L=$GK_L/O=$GK_O/OU=$GK_OU/CN=.$GK_unstructuredName$GK_emailAddress$GK_subjectAltName$OTHER_FIELDS"
145
+
146
+ # SERVER
147
+ Write-Output ""
148
+ Write-Output "Server"
149
+ Write-Output ""
150
+
151
+ # Generate server key
152
+ openssl genrsa -out "$PATH_SERVER/server.key" $RSABITS
153
+
154
+ # Generate server cert
155
+ openssl req -new -key "$PATH_SERVER/server.key" -out "$PATH_TMP/server.csr" -passout "pass:$PASSWORD" -subj "/C=$GK_C/ST=$GK_ST/L=$GK_L/O=$GK_O/OU=$GK_OU/CN=$GK_CN$GK_unstructuredName$GK_emailAddress$GK_subjectAltName$OTHER_FIELDS"
156
+
157
+ # Sign server cert with self-signed cert
158
+ openssl x509 -req -days "$EXPIREDAYS" -passin "pass:$PASSWORD" -in "$PATH_TMP/server.csr" -CA "$PATH_CA/ca.crt" -CAkey "$PATH_CA/ca.key" -set_serial 01 -out "$PATH_SERVER/server.crt"
159
+
160
+ # CLIENT
161
+
162
+ Write-Output ""
163
+ Write-Output "Client"
164
+ Write-Output ""
165
+
166
+ openssl genrsa -out "$PATH_CLIENT/client.key" $RSABITS
167
+
168
+ openssl req -new -key "$PATH_CLIENT/client.key" -out "$PATH_TMP/client.csr" -passout "pass:$PASSWORD" -subj "/C=$GK_C/ST=$GK_ST/L=$GK_L/O=$GK_O/OU=$GK_OU/CN=CLIENT$GK_unstructuredName$GK_emailAddress$GK_subjectAltName$OTHER_FIELDS"
169
+
170
+ openssl x509 -req -days 365 -passin "pass:$PASSWORD" -in "$PATH_TMP/client.csr" -CA "$PATH_CA/ca.crt" -CAkey "$PATH_CA/ca.key" -set_serial 01 -out "$PATH_CLIENT/client.crt"
171
+
172
+ # Clean tmp dir
173
+
174
+ Remove-Item -Recurse $PATH_TMP
175
+
176
+ Write-Output ""
177
+ Write-Output "Done !"
178
+
179
+ exit 0
File without changes
@@ -0,0 +1 @@
1
+ //# sourceMappingURL=a-session-msg-factory.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"a-session-msg-factory.js","sourceRoot":"","sources":["../src/transport/a-session-msg-factory.ts"],"names":[],"mappings":"","sourcesContent":[""]}
File without changes
@@ -0,0 +1 @@
1
+ //# sourceMappingURL=ascii-encoder.test.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"ascii-encoder.test.js","sourceRoot":"","sources":["../src/test/ascii-encoder.test.ts"],"names":[],"mappings":"","sourcesContent":[""]}
File without changes
@@ -0,0 +1 @@
1
+ //# sourceMappingURL=ascii-parser.test.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"ascii-parser.test.js","sourceRoot":"","sources":["../src/test/ascii-parser.test.ts"],"names":[],"mappings":"","sourcesContent":[""]}
File without changes
@@ -0,0 +1 @@
1
+ //# sourceMappingURL=ascii-segment.test.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"ascii-segment.test.js","sourceRoot":"","sources":["../src/test/ascii-segment.test.ts"],"names":[],"mappings":"","sourcesContent":[""]}
File without changes
@@ -0,0 +1 @@
1
+ //# sourceMappingURL=ascii-store-replay.test.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"ascii-store-replay.test.js","sourceRoot":"","sources":["../src/test/ascii-store-replay.test.ts"],"names":[],"mappings":"","sourcesContent":[""]}
File without changes
@@ -0,0 +1 @@
1
+ //# sourceMappingURL=ascii-tag-pos.test.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"ascii-tag-pos.test.js","sourceRoot":"","sources":["../src/test/ascii-tag-pos.test.ts"],"names":[],"mappings":"","sourcesContent":[""]}
@@ -0,0 +1 @@
1
+ {"version":3,"file":"ascii-chars.js","sourceRoot":"","sources":["../../../src/buffer/ascii/ascii-chars.ts"],"names":[],"mappings":";;;AAAA,MAAsB,UAAU;IAsBvB,MAAM,CAAC,SAAS,CAAE,CAAS;QAChC,OAAO,CAAC,CAAC,UAAU,CAAC,CAAC,CAAC,CAAA;IACxB,CAAC;;AAxBH,gCAyBC;AAvBwB,gBAAK,GAAW,GAAG,CAAC,UAAU,CAAC,CAAC,CAAC,CAAA;AACjC,gBAAK,GAAW,GAAG,CAAC,UAAU,CAAC,CAAC,CAAC,CAAA;AACjC,uBAAY,GAAW,GAAG,CAAC,UAAU,CAAC,CAAC,CAAC,CAAA;AACxC,eAAI,GAAW,GAAG,CAAC,UAAU,CAAC,CAAC,CAAC,CAAA;AAChC,cAAG,GAAW,IAAI,CAAC,UAAU,CAAC,CAAC,CAAC,CAAA;AAChC,gBAAK,GAAW,GAAG,CAAC,UAAU,CAAC,CAAC,CAAC,CAAA;AACjC,iBAAM,GAAW,GAAG,CAAC,UAAU,CAAC,CAAC,CAAC,CAAA;AAClC,eAAI,GAAW,GAAG,CAAC,UAAU,CAAC,CAAC,CAAC,CAAA;AAChC,gBAAK,GAAW,GAAG,CAAC,UAAU,CAAC,CAAC,CAAC,CAAA;AACjC,YAAC,GAAW,GAAG,CAAC,UAAU,CAAC,CAAC,CAAC,CAAA;AAC7B,YAAC,GAAW,GAAG,CAAC,UAAU,CAAC,CAAC,CAAC,CAAA;AAC7B,eAAI,GAAW,GAAG,CAAC,UAAU,CAAC,CAAC,CAAC,CAAA;AAChC,eAAI,GAAW,GAAG,CAAC,UAAU,CAAC,CAAC,CAAC,CAAA;AAChC,cAAG,GAAW,GAAG,CAAC,UAAU,CAAC,CAAC,CAAC,CAAA;AAC/B,aAAE,GAAW,GAAG,CAAC,UAAU,CAAC,CAAC,CAAC,CAAA;AAC9B,aAAE,GAAW,GAAG,CAAC,UAAU,CAAC,CAAC,CAAC,CAAA;AAC9B,gBAAK,GAAW,GAAG,CAAC,UAAU,CAAC,CAAC,CAAC,CAAA;AACjC,aAAE,GAAW,IAAI,CAAC,UAAU,CAAC,CAAC,CAAC,CAAA;AAC/B,cAAG,GAAW,GAAG,CAAA","sourcesContent":["export abstract class AsciiChars {\r\n\r\n public static readonly Minus: number = '-'.charCodeAt(0)\r\n public static readonly Equal: number = '='.charCodeAt(0)\r\n public static readonly ForwardSlash: number = '/'.charCodeAt(0)\r\n public static readonly Plus: number = '+'.charCodeAt(0)\r\n public static readonly Tab: number = '\\t'.charCodeAt(0)\r\n public static readonly Colon: number = ':'.charCodeAt(0)\r\n public static readonly Hyphen: number = '-'.charCodeAt(0)\r\n public static readonly Pipe: number = '|'.charCodeAt(0)\r\n public static readonly Carat: number = '^'.charCodeAt(0)\r\n public static readonly N: number = 'N'.charCodeAt(0)\r\n public static readonly Y: number = 'Y'.charCodeAt(0)\r\n public static readonly Zero: number = '0'.charCodeAt(0)\r\n public static readonly Nine: number = '9'.charCodeAt(0)\r\n public static readonly Dot: number = '.'.charCodeAt(0)\r\n public static readonly Eq: number = '='.charCodeAt(0)\r\n public static readonly Dq: number = '\"'.charCodeAt(0)\r\n public static readonly Space: number = ' '.charCodeAt(0)\r\n public static readonly Cr: number = '\\n'.charCodeAt(0)\r\n public static readonly Soh: number = 0x1\r\n\r\n public static firstChar (s: string): number {\r\n return s.charCodeAt(0)\r\n }\r\n}\r\n"]}
@@ -1,10 +1,11 @@
1
1
  /// <reference types="node" />
2
2
  import { ILooseObject } from '../../collections/collection';
3
- import { ContainedFieldSet, FixDefinitions } from '../../dictionary';
3
+ import { ContainedFieldSet } from '../../dictionary/contained';
4
+ import { FixDefinitions } from '../../dictionary/definition';
4
5
  import { MsgEncoder } from '../msg-encoder';
5
6
  import { ElasticBuffer } from '../elastic-buffer';
6
7
  import { ITimeFormatter } from './itime-formatter';
7
- import { Tags } from '../tags';
8
+ import { Tags } from '../tag/tags';
8
9
  export declare class AsciiEncoder extends MsgEncoder {
9
10
  readonly buffer: ElasticBuffer;
10
11
  readonly definitions: FixDefinitions;
@@ -14,11 +15,12 @@ export declare class AsciiEncoder extends MsgEncoder {
14
15
  bodyLengthPos: number;
15
16
  msgTypePos: number;
16
17
  tags: Tags;
18
+ checkGroups: boolean;
17
19
  constructor(buffer: ElasticBuffer, definitions: FixDefinitions, timeFormatter?: ITimeFormatter, delimiter?: number, logDelimiter?: number);
18
20
  trim(): Buffer;
19
- private static checkGroupInstanceHasDelimiter;
20
21
  reset(): void;
21
22
  encodeSet(objectToEncode: ILooseObject, set: ContainedFieldSet): void;
23
+ private encodeObject;
22
24
  private getFields;
23
25
  private encodeInstances;
24
26
  private WriteTagEquals;
@@ -1,11 +1,12 @@
1
1
  "use strict";
2
2
  Object.defineProperty(exports, "__esModule", { value: true });
3
3
  exports.AsciiEncoder = void 0;
4
- const dictionary_1 = require("../../dictionary");
4
+ const contained_1 = require("../../dictionary/contained");
5
5
  const msg_encoder_1 = require("../msg-encoder");
6
6
  const time_formatter_1 = require("./time-formatter");
7
- const ascii_chars_1 = require("../ascii-chars");
8
- const tags_1 = require("../tags");
7
+ const ascii_chars_1 = require("./ascii-chars");
8
+ const tags_1 = require("../tag/tags");
9
+ const tag_type_1 = require("../tag/tag-type");
9
10
  class AsciiEncoder extends msg_encoder_1.MsgEncoder {
10
11
  constructor(buffer, definitions, timeFormatter = new time_formatter_1.TimeFormatter(buffer), delimiter = ascii_chars_1.AsciiChars.Soh, logDelimiter = ascii_chars_1.AsciiChars.Pipe) {
11
12
  super(definitions);
@@ -14,6 +15,7 @@ class AsciiEncoder extends msg_encoder_1.MsgEncoder {
14
15
  this.timeFormatter = timeFormatter;
15
16
  this.delimiter = delimiter;
16
17
  this.logDelimiter = logDelimiter;
18
+ this.checkGroups = true;
17
19
  this.tags = new tags_1.Tags(definitions);
18
20
  }
19
21
  trim() {
@@ -29,44 +31,32 @@ class AsciiEncoder extends msg_encoder_1.MsgEncoder {
29
31
  }
30
32
  return b;
31
33
  }
32
- static checkGroupInstanceHasDelimiter(gf, instance) {
33
- const delimiterField = gf.definition.firstSimple;
34
- if (!delimiterField) {
35
- throw new Error(`group definition has delimiter field ${delimiterField.definition.name}`);
36
- }
37
- while (instance != null) {
38
- if (instance[delimiterField.definition.name] != null) {
39
- return true;
40
- }
41
- const first = gf.definition.fields[0];
42
- switch (first.type) {
43
- case dictionary_1.ContainedFieldType.Component: {
44
- const cf = first;
45
- instance = instance[cf.definition.name];
46
- break;
47
- }
48
- default:
49
- instance = null;
50
- }
51
- }
52
- }
53
34
  reset() {
54
35
  this.buffer.reset();
55
36
  this.tags.reset();
56
37
  }
57
38
  encodeSet(objectToEncode, set) {
39
+ const summary = new AsciiEncodeSetSummary();
40
+ this.encodeObject(objectToEncode, set, summary);
41
+ }
42
+ encodeObject(objectToEncode, set, state) {
58
43
  const fields = this.getFields(set, objectToEncode);
59
- (0, dictionary_1.dispatchFields)(fields, {
44
+ new contained_1.FieldsDispatch().dispatchFields(fields, {
60
45
  simple: (sf) => {
61
46
  const val = objectToEncode[sf.name];
62
47
  if (val != null && val !== '') {
48
+ if (state.count === 0) {
49
+ state.firstSimple = sf;
50
+ }
51
+ state.lastSimple = sf;
52
+ state.count++;
63
53
  this.encodeSimple(objectToEncode, set, sf, val);
64
54
  }
65
55
  },
66
56
  component: (cf) => {
67
57
  const instance = objectToEncode[cf.definition.name];
68
58
  if (instance) {
69
- this.encodeSet(instance, cf.definition);
59
+ this.encodeObject(instance, cf.definition, state);
70
60
  }
71
61
  },
72
62
  group: (gf) => {
@@ -95,19 +85,21 @@ class AsciiEncoder extends msg_encoder_1.MsgEncoder {
95
85
  throw new Error(`expected array instance for group ${noOfField.name}`);
96
86
  }
97
87
  if (instances) {
88
+ const validator = new GroupValidator(gf);
89
+ const test = validator.test;
98
90
  this.WriteTagEquals(noOfField.tag);
99
91
  const posValBegin = buffer.getPos();
100
92
  buffer.writeWholeNumber(instances.length);
101
93
  this.writeDelimiter(posValBegin, noOfField.tag);
102
- instances.forEach((i) => {
103
- if (AsciiEncoder.checkGroupInstanceHasDelimiter(gf, i)) {
104
- this.encodeSet(i, gf.definition);
105
- }
106
- else {
107
- const delimiter = gf.definition.firstSimple;
108
- throw new Error(`group instance with no delimiter field ${delimiter.definition.name}`);
94
+ for (let field = 0; field < instances.length; ++field) {
95
+ const instance = instances[field];
96
+ test.reset();
97
+ const summary = validator.getSummary(field);
98
+ this.encodeObject(instance, gf.definition, summary);
99
+ if (this.checkGroups) {
100
+ validator.assertInstanceValid(field);
109
101
  }
110
- });
102
+ }
111
103
  }
112
104
  }
113
105
  WriteTagEquals(tag) {
@@ -132,7 +124,7 @@ class AsciiEncoder extends msg_encoder_1.MsgEncoder {
132
124
  let tagType;
133
125
  if (typeof val === 'string') {
134
126
  switch (definition.tagType) {
135
- case tags_1.TagType.Boolean: {
127
+ case tag_type_1.TagType.Boolean: {
136
128
  tagType = definition.tagType;
137
129
  const vs = val;
138
130
  const first = vs.length > 0 ? vs.charAt(0) : 'N';
@@ -140,7 +132,7 @@ class AsciiEncoder extends msg_encoder_1.MsgEncoder {
140
132
  break;
141
133
  }
142
134
  default: {
143
- tagType = tags_1.TagType.String;
135
+ tagType = tag_type_1.TagType.String;
144
136
  }
145
137
  }
146
138
  }
@@ -148,7 +140,7 @@ class AsciiEncoder extends msg_encoder_1.MsgEncoder {
148
140
  tagType = definition.tagType;
149
141
  }
150
142
  switch (tagType) {
151
- case tags_1.TagType.RawData: {
143
+ case tag_type_1.TagType.RawData: {
152
144
  break;
153
145
  }
154
146
  default: {
@@ -158,40 +150,40 @@ class AsciiEncoder extends msg_encoder_1.MsgEncoder {
158
150
  }
159
151
  }
160
152
  switch (tagType) {
161
- case tags_1.TagType.String: {
153
+ case tag_type_1.TagType.String: {
162
154
  buffer.writeString(val);
163
155
  break;
164
156
  }
165
- case tags_1.TagType.Float: {
157
+ case tag_type_1.TagType.Float: {
166
158
  buffer.writeNumber(val);
167
159
  break;
168
160
  }
169
- case tags_1.TagType.Int:
170
- case tags_1.TagType.Length: {
161
+ case tag_type_1.TagType.Int:
162
+ case tag_type_1.TagType.Length: {
171
163
  buffer.writeWholeNumber(val);
172
164
  break;
173
165
  }
174
- case tags_1.TagType.Boolean: {
166
+ case tag_type_1.TagType.Boolean: {
175
167
  buffer.writeBoolean(val);
176
168
  break;
177
169
  }
178
- case tags_1.TagType.UtcTimestamp: {
170
+ case tag_type_1.TagType.UtcTimestamp: {
179
171
  tf.writeUtcTimestamp(val);
180
172
  break;
181
173
  }
182
- case tags_1.TagType.UtcTimeOnly: {
174
+ case tag_type_1.TagType.UtcTimeOnly: {
183
175
  tf.writeUtcTime(val);
184
176
  break;
185
177
  }
186
- case tags_1.TagType.UtcDateOnly: {
178
+ case tag_type_1.TagType.UtcDateOnly: {
187
179
  tf.writeUtcDate(val);
188
180
  break;
189
181
  }
190
- case tags_1.TagType.LocalDate: {
182
+ case tag_type_1.TagType.LocalDate: {
191
183
  tf.writeLocalDate(val);
192
184
  break;
193
185
  }
194
- case tags_1.TagType.RawData: {
186
+ case tag_type_1.TagType.RawData: {
195
187
  const b = val;
196
188
  const lenField = set.fields[sf.position - 1];
197
189
  if (o[lenField.name] == null) {
@@ -221,4 +213,46 @@ class AsciiEncoder extends msg_encoder_1.MsgEncoder {
221
213
  }
222
214
  }
223
215
  exports.AsciiEncoder = AsciiEncoder;
216
+ class GroupValidator {
217
+ constructor(gf, first = new AsciiEncodeSetSummary(), test = new AsciiEncodeSetSummary()) {
218
+ this.gf = gf;
219
+ this.first = first;
220
+ this.test = test;
221
+ }
222
+ getSummary(field) {
223
+ return field === 0 ? this.first : this.test;
224
+ }
225
+ assertInstanceValid(field) {
226
+ const first = this.first;
227
+ const test = this.test;
228
+ if (field === 0 && first.empty()) {
229
+ throw new Error(`first group instance has no delimeter present ${this.gf.name}`);
230
+ }
231
+ if (field > 0 && test.empty()) {
232
+ throw new Error(`group instance [${field}] has no delimeter present ${this.gf.name}`);
233
+ }
234
+ if (field > 0) {
235
+ const firstTag = first.firstSimple.definition.tag;
236
+ const tag = test.firstSimple.definition.tag;
237
+ if (firstTag !== tag) {
238
+ throw new Error(`group instance [${field}] inconsisent delimeter ${tag} expected tag ${firstTag}`);
239
+ }
240
+ }
241
+ }
242
+ }
243
+ class AsciiEncodeSetSummary {
244
+ constructor(firstSimple = null, lastSimple = null, count = 0) {
245
+ this.firstSimple = firstSimple;
246
+ this.lastSimple = lastSimple;
247
+ this.count = count;
248
+ }
249
+ reset() {
250
+ this.firstSimple = null;
251
+ this.lastSimple = null;
252
+ this.count = 0;
253
+ }
254
+ empty() {
255
+ return this.firstSimple === null || this.count === 0;
256
+ }
257
+ }
224
258
  //# sourceMappingURL=ascii-encoder.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"ascii-encoder.js","sourceRoot":"","sources":["../../../src/buffer/ascii/ascii-encoder.ts"],"names":[],"mappings":"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","sourcesContent":["import { ILooseObject } from '../../collections/collection'\r\nimport { ContainedGroupField, ContainedSimpleField, ContainedFieldSet, ContainedField,\r\n ContainedFieldType, ContainedComponentField, SimpleFieldDefinition,\r\n FixDefinitions, dispatchFields } from '../../dictionary'\r\nimport { MsgEncoder } from '../msg-encoder'\r\nimport { ElasticBuffer } from '../elastic-buffer'\r\nimport { TimeFormatter } from './time-formatter'\r\nimport { ITimeFormatter } from './itime-formatter'\r\nimport { AsciiChars } from '../ascii-chars'\r\nimport { Tags, TagType } from '../tags'\r\n\r\nexport class AsciiEncoder extends MsgEncoder {\r\n\r\n public bodyLengthPos: number\r\n public msgTypePos: number\r\n public tags: Tags\r\n\r\n constructor (public readonly buffer: ElasticBuffer,\r\n public readonly definitions: FixDefinitions,\r\n public readonly timeFormatter: ITimeFormatter = new TimeFormatter(buffer),\r\n public readonly delimiter: number = AsciiChars.Soh,\r\n public readonly logDelimiter: number = AsciiChars.Pipe) {\r\n super(definitions)\r\n this.tags = new Tags(definitions)\r\n }\r\n\r\n public trim (): Buffer {\r\n const b = this.buffer.copy()\r\n const delimiter = this.delimiter\r\n const logDelimiter = this.logDelimiter\r\n const tags = this.tags\r\n if (delimiter !== logDelimiter) {\r\n for (let p = 0; p < tags.nextTagPos; ++p) {\r\n const tagPos = tags.tagPos[p]\r\n b.writeUInt8(delimiter, tagPos.start + tagPos.len)\r\n }\r\n }\r\n\r\n return b\r\n }\r\n\r\n private static checkGroupInstanceHasDelimiter (gf: ContainedGroupField, instance: ILooseObject): boolean {\r\n const delimiterField: ContainedSimpleField = gf.definition.firstSimple\r\n if (!delimiterField) {\r\n throw new Error(`group definition has delimiter field ${delimiterField.definition.name}`)\r\n }\r\n // may have a group represented by a component where first simple field is further down.\r\n while (instance != null) {\r\n if (instance[delimiterField.definition.name] != null) {\r\n return true\r\n }\r\n const first = gf.definition.fields[0]\r\n switch (first.type) {\r\n case ContainedFieldType.Component: {\r\n const cf: ContainedComponentField = first as ContainedComponentField\r\n instance = instance[cf.definition.name]\r\n break\r\n }\r\n default:\r\n instance = null\r\n }\r\n }\r\n }\r\n\r\n // only reset tags after entire message is encoded - <hdr>body<trl>\r\n\r\n public reset (): void {\r\n this.buffer.reset()\r\n this.tags.reset()\r\n }\r\n\r\n public encodeSet (objectToEncode: ILooseObject, set: ContainedFieldSet): void {\r\n const fields: ContainedField[] = this.getFields(set, objectToEncode)\r\n dispatchFields(fields, {\r\n simple: (sf: ContainedSimpleField) => {\r\n const val: any = objectToEncode[sf.name]\r\n // Empty strings are omitted as they result in empty values for tags, which are considered malformed.\r\n if (val != null && val !== '') {\r\n this.encodeSimple(objectToEncode, set, sf, val)\r\n }\r\n },\r\n component: (cf: ContainedComponentField) => {\r\n const instance: ILooseObject = objectToEncode[cf.definition.name]\r\n if (instance) {\r\n this.encodeSet(instance, cf.definition)\r\n }\r\n },\r\n group: (gf: ContainedGroupField) => {\r\n this.encodeInstances(objectToEncode, gf)\r\n }\r\n })\r\n }\r\n\r\n private getFields (set: ContainedFieldSet, o: ILooseObject): ContainedField[] {\r\n const keys: string[] = Object.keys(o)\r\n let j: number = 0\r\n const fields: ContainedField[] = keys.reduce((a: ContainedField[], current: string) => {\r\n const field: ContainedField = set.localNameToField.get(current)\r\n if (field) {\r\n a[j++] = field\r\n }\r\n return a\r\n }, new Array(keys.length))\r\n fields.sort((a: ContainedField, b: ContainedField) => a.position - b.position)\r\n return fields\r\n }\r\n\r\n private encodeInstances (o: ILooseObject, gf: ContainedGroupField): void {\r\n const noOfField: SimpleFieldDefinition = gf.definition.noOfField\r\n const instances: ILooseObject[] = o[gf.name] || o[noOfField.name]\r\n const buffer = this.buffer\r\n if (!Array.isArray(instances)) {\r\n throw new Error(`expected array instance for group ${noOfField.name}`)\r\n }\r\n if (instances) {\r\n // a repeated group has number of instances at the start of group\r\n this.WriteTagEquals(noOfField.tag)\r\n const posValBegin = buffer.getPos()\r\n buffer.writeWholeNumber(instances.length)\r\n this.writeDelimiter(posValBegin, noOfField.tag)\r\n instances.forEach((i: ILooseObject) => {\r\n if (AsciiEncoder.checkGroupInstanceHasDelimiter(gf, i)) {\r\n this.encodeSet(i, gf.definition)\r\n } else {\r\n const delimiter: ContainedSimpleField = gf.definition.firstSimple\r\n throw new Error(`group instance with no delimiter field ${delimiter.definition.name}`)\r\n }\r\n })\r\n }\r\n }\r\n\r\n private WriteTagEquals (tag: number): void {\r\n const buffer = this.buffer\r\n buffer.writeWholeNumber(tag)\r\n buffer.writeChar(AsciiChars.Equal)\r\n }\r\n\r\n private writeDelimiter (posValBegin: number, tag: number): void {\r\n const delimiter = this.logDelimiter\r\n const buffer = this.buffer\r\n this.tags.store(posValBegin, buffer.getPos() - posValBegin, tag)\r\n buffer.writeChar(delimiter)\r\n }\r\n\r\n private encodeSimple (o: ILooseObject, set: ContainedFieldSet, sf: ContainedSimpleField, val: any): void {\r\n const definition = sf.definition\r\n const tag: number = definition.tag\r\n const buffer = this.buffer\r\n const delimiter = this.logDelimiter\r\n const tf = this.timeFormatter\r\n const pos = buffer.getPos()\r\n let posValBegin = 0\r\n\r\n let tagType: TagType\r\n if (typeof val === 'string') {\r\n switch (definition.tagType) {\r\n case TagType.Boolean: {\r\n tagType = definition.tagType\r\n const vs: string = val\r\n const first: string = vs.length > 0 ? vs.charAt(0) : 'N'\r\n val = first === 'Y' || first === 'T'\r\n break\r\n }\r\n default: {\r\n tagType = TagType.String\r\n }\r\n }\r\n } else {\r\n tagType = definition.tagType\r\n }\r\n\r\n switch (tagType) {\r\n\r\n case TagType.RawData: {\r\n // may need to first write raw message length (see below)\r\n break\r\n }\r\n\r\n default: {\r\n this.WriteTagEquals(tag)\r\n posValBegin = buffer.getPos()\r\n break\r\n }\r\n }\r\n\r\n switch (tagType) {\r\n case TagType.String: {\r\n buffer.writeString(val as string)\r\n break\r\n }\r\n\r\n case TagType.Float: {\r\n buffer.writeNumber(val as number)\r\n break\r\n }\r\n\r\n case TagType.Int:\r\n case TagType.Length: {\r\n buffer.writeWholeNumber(val as number)\r\n break\r\n }\r\n\r\n case TagType.Boolean: {\r\n buffer.writeBoolean(val as boolean)\r\n break\r\n }\r\n\r\n case TagType.UtcTimestamp: {\r\n tf.writeUtcTimestamp(val as Date)\r\n break\r\n }\r\n\r\n case TagType.UtcTimeOnly: {\r\n tf.writeUtcTime(val as Date)\r\n break\r\n }\r\n\r\n case TagType.UtcDateOnly: {\r\n tf.writeUtcDate(val as Date)\r\n break\r\n }\r\n\r\n case TagType.LocalDate: {\r\n tf.writeLocalDate(val as Date)\r\n break\r\n }\r\n\r\n case TagType.RawData: {\r\n const b = val as Buffer\r\n const lenField: ContainedSimpleField = set.fields[sf.position - 1] as ContainedSimpleField\r\n if (o[lenField.name] == null) {\r\n this.WriteTagEquals(lenField.definition.tag)\r\n buffer.writeWholeNumber(b.length)\r\n buffer.writeChar(delimiter)\r\n }\r\n this.WriteTagEquals(tag)\r\n buffer.writeBuffer(b)\r\n posValBegin = buffer.getPos()\r\n break\r\n }\r\n\r\n default: {\r\n buffer.writeString(val as string)\r\n break\r\n }\r\n }\r\n\r\n this.writeDelimiter(posValBegin, tag)\r\n\r\n switch (tag) {\r\n case Tags.BodyLengthTag:\r\n this.bodyLengthPos = pos + 2\r\n break\r\n\r\n case Tags.MsgTag:\r\n this.msgTypePos = pos\r\n break\r\n }\r\n }\r\n}\r\n"]}
1
+ {"version":3,"file":"ascii-encoder.js","sourceRoot":"","sources":["../../../src/buffer/ascii/ascii-encoder.ts"],"names":[],"mappings":"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","sourcesContent":["import { ILooseObject } from '../../collections/collection'\r\nimport {\r\n ContainedGroupField, ContainedSimpleField,\r\n ContainedFieldSet, ContainedField,\r\n ContainedComponentField, FieldsDispatch\r\n} from '../../dictionary/contained'\r\nimport { SimpleFieldDefinition, FixDefinitions } from '../../dictionary/definition'\r\nimport { MsgEncoder } from '../msg-encoder'\r\nimport { ElasticBuffer } from '../elastic-buffer'\r\nimport { TimeFormatter } from './time-formatter'\r\nimport { ITimeFormatter } from './itime-formatter'\r\nimport { AsciiChars } from './ascii-chars'\r\nimport { Tags } from '../tag/tags'\r\nimport { TagType } from '../tag/tag-type'\r\n\r\nexport class AsciiEncoder extends MsgEncoder {\r\n\r\n public bodyLengthPos: number\r\n public msgTypePos: number\r\n public tags: Tags\r\n public checkGroups: boolean = true\r\n\r\n constructor (public readonly buffer: ElasticBuffer,\r\n public readonly definitions: FixDefinitions,\r\n public readonly timeFormatter: ITimeFormatter = new TimeFormatter(buffer),\r\n public readonly delimiter: number = AsciiChars.Soh,\r\n public readonly logDelimiter: number = AsciiChars.Pipe) {\r\n super(definitions)\r\n this.tags = new Tags(definitions)\r\n }\r\n\r\n public trim (): Buffer {\r\n const b = this.buffer.copy()\r\n const delimiter = this.delimiter\r\n const logDelimiter = this.logDelimiter\r\n const tags = this.tags\r\n if (delimiter !== logDelimiter) {\r\n for (let p = 0; p < tags.nextTagPos; ++p) {\r\n const tagPos = tags.tagPos[p]\r\n b.writeUInt8(delimiter, tagPos.start + tagPos.len)\r\n }\r\n }\r\n\r\n return b\r\n }\r\n\r\n // only reset tags after entire message is encoded - <hdr>body<trl>\r\n\r\n public reset (): void {\r\n this.buffer.reset()\r\n this.tags.reset()\r\n }\r\n\r\n public encodeSet (objectToEncode: ILooseObject, set: ContainedFieldSet): void {\r\n const summary: AsciiEncodeSetSummary = new AsciiEncodeSetSummary()\r\n this.encodeObject(objectToEncode, set, summary)\r\n }\r\n\r\n private encodeObject (objectToEncode: ILooseObject, set: ContainedFieldSet, state: AsciiEncodeSetSummary): void {\r\n const fields: ContainedField[] = this.getFields(set, objectToEncode)\r\n new FieldsDispatch().dispatchFields(fields, {\r\n simple: (sf: ContainedSimpleField) => {\r\n const val: any = objectToEncode[sf.name]\r\n // Empty strings are omitted as they result in empty values for tags, which are considered malformed.\r\n if (val != null && val !== '') {\r\n if (state.count === 0) {\r\n state.firstSimple = sf\r\n }\r\n state.lastSimple = sf\r\n state.count++\r\n this.encodeSimple(objectToEncode, set, sf, val)\r\n }\r\n },\r\n component: (cf: ContainedComponentField) => {\r\n const instance: ILooseObject = objectToEncode[cf.definition.name]\r\n if (instance) {\r\n this.encodeObject(instance, cf.definition, state)\r\n }\r\n },\r\n group: (gf: ContainedGroupField) => {\r\n this.encodeInstances(objectToEncode, gf)\r\n }\r\n })\r\n }\r\n\r\n private getFields (set: ContainedFieldSet, o: ILooseObject): ContainedField[] {\r\n const keys: string[] = Object.keys(o)\r\n let j: number = 0\r\n const fields: ContainedField[] = keys.reduce((a: ContainedField[], current: string) => {\r\n const field: ContainedField = set.localNameToField.get(current)\r\n if (field) {\r\n a[j++] = field\r\n }\r\n return a\r\n }, new Array(keys.length))\r\n fields.sort((a: ContainedField, b: ContainedField) => a.position - b.position)\r\n return fields\r\n }\r\n\r\n private encodeInstances (o: ILooseObject, gf: ContainedGroupField): void {\r\n const noOfField: SimpleFieldDefinition = gf.definition.noOfField\r\n const instances: ILooseObject[] = o[gf.name] || o[noOfField.name]\r\n\r\n const buffer = this.buffer\r\n if (!Array.isArray(instances)) {\r\n throw new Error(`expected array instance for group ${noOfField.name}`)\r\n }\r\n if (instances) {\r\n const validator = new GroupValidator(gf)\r\n const test: AsciiEncodeSetSummary = validator.test\r\n\r\n // a repeated group has number of instances at the start of group\r\n this.WriteTagEquals(noOfField.tag)\r\n const posValBegin = buffer.getPos()\r\n buffer.writeWholeNumber(instances.length)\r\n this.writeDelimiter(posValBegin, noOfField.tag)\r\n for (let field = 0; field < instances.length; ++field) {\r\n const instance: ILooseObject = instances[field]\r\n test.reset()\r\n const summary = validator.getSummary(field)\r\n this.encodeObject(instance, gf.definition, summary)\r\n if (this.checkGroups) {\r\n validator.assertInstanceValid(field)\r\n }\r\n }\r\n }\r\n }\r\n\r\n private WriteTagEquals (tag: number): void {\r\n const buffer = this.buffer\r\n buffer.writeWholeNumber(tag)\r\n buffer.writeChar(AsciiChars.Equal)\r\n }\r\n\r\n private writeDelimiter (posValBegin: number, tag: number): void {\r\n const delimiter = this.logDelimiter\r\n const buffer = this.buffer\r\n this.tags.store(posValBegin, buffer.getPos() - posValBegin, tag)\r\n buffer.writeChar(delimiter)\r\n }\r\n\r\n private encodeSimple (o: ILooseObject, set: ContainedFieldSet, sf: ContainedSimpleField, val: any): void {\r\n const definition = sf.definition\r\n const tag: number = definition.tag\r\n const buffer = this.buffer\r\n const delimiter = this.logDelimiter\r\n const tf = this.timeFormatter\r\n const pos = buffer.getPos()\r\n let posValBegin = 0\r\n\r\n let tagType: TagType\r\n if (typeof val === 'string') {\r\n switch (definition.tagType) {\r\n case TagType.Boolean: {\r\n tagType = definition.tagType\r\n const vs: string = val\r\n const first: string = vs.length > 0 ? vs.charAt(0) : 'N'\r\n val = first === 'Y' || first === 'T'\r\n break\r\n }\r\n default: {\r\n tagType = TagType.String\r\n }\r\n }\r\n } else {\r\n tagType = definition.tagType\r\n }\r\n\r\n switch (tagType) {\r\n\r\n case TagType.RawData: {\r\n // may need to first write raw message length (see below)\r\n break\r\n }\r\n\r\n default: {\r\n this.WriteTagEquals(tag)\r\n posValBegin = buffer.getPos()\r\n break\r\n }\r\n }\r\n\r\n switch (tagType) {\r\n case TagType.String: {\r\n buffer.writeString(val as string)\r\n break\r\n }\r\n\r\n case TagType.Float: {\r\n buffer.writeNumber(val as number)\r\n break\r\n }\r\n\r\n case TagType.Int:\r\n case TagType.Length: {\r\n buffer.writeWholeNumber(val as number)\r\n break\r\n }\r\n\r\n case TagType.Boolean: {\r\n buffer.writeBoolean(val as boolean)\r\n break\r\n }\r\n\r\n case TagType.UtcTimestamp: {\r\n tf.writeUtcTimestamp(val as Date)\r\n break\r\n }\r\n\r\n case TagType.UtcTimeOnly: {\r\n tf.writeUtcTime(val as Date)\r\n break\r\n }\r\n\r\n case TagType.UtcDateOnly: {\r\n tf.writeUtcDate(val as Date)\r\n break\r\n }\r\n\r\n case TagType.LocalDate: {\r\n tf.writeLocalDate(val as Date)\r\n break\r\n }\r\n\r\n case TagType.RawData: {\r\n const b = val as Buffer\r\n const lenField: ContainedSimpleField = set.fields[sf.position - 1] as ContainedSimpleField\r\n if (o[lenField.name] == null) {\r\n this.WriteTagEquals(lenField.definition.tag)\r\n buffer.writeWholeNumber(b.length)\r\n buffer.writeChar(delimiter)\r\n }\r\n this.WriteTagEquals(tag)\r\n buffer.writeBuffer(b)\r\n posValBegin = buffer.getPos()\r\n break\r\n }\r\n\r\n default: {\r\n buffer.writeString(val as string)\r\n break\r\n }\r\n }\r\n\r\n this.writeDelimiter(posValBegin, tag)\r\n\r\n switch (tag) {\r\n case Tags.BodyLengthTag:\r\n this.bodyLengthPos = pos + 2\r\n break\r\n\r\n case Tags.MsgTag:\r\n this.msgTypePos = pos\r\n break\r\n }\r\n }\r\n}\r\n\r\nclass GroupValidator {\r\n constructor (public readonly gf: ContainedGroupField,\r\n public readonly first: AsciiEncodeSetSummary = new AsciiEncodeSetSummary(),\r\n public readonly test: AsciiEncodeSetSummary = new AsciiEncodeSetSummary()) {\r\n }\r\n\r\n getSummary (field: number) {\r\n return field === 0 ? this.first : this.test\r\n }\r\n\r\n assertInstanceValid (field: number): void {\r\n const first = this.first\r\n const test = this.test\r\n if (field === 0 && first.empty()) {\r\n throw new Error(`first group instance has no delimeter present ${this.gf.name}`)\r\n }\r\n if (field > 0 && test.empty()) {\r\n throw new Error(`group instance [${field}] has no delimeter present ${this.gf.name}`)\r\n }\r\n if (field > 0) {\r\n const firstTag = first.firstSimple.definition.tag\r\n const tag = test.firstSimple.definition.tag\r\n if (firstTag !== tag) {\r\n throw new Error(`group instance [${field}] inconsisent delimeter ${tag} expected tag ${firstTag}`)\r\n }\r\n }\r\n }\r\n}\r\n\r\nclass AsciiEncodeSetSummary {\r\n constructor (public firstSimple: ContainedSimpleField = null,\r\n public lastSimple: ContainedSimpleField = null,\r\n public count: number = 0) {\r\n }\r\n public reset (): void {\r\n this.firstSimple = null\r\n this.lastSimple = null\r\n this.count = 0\r\n }\r\n public empty (): boolean {\r\n return this.firstSimple === null || this.count === 0\r\n }\r\n}\r\n"]}