jspurefix 5.6.2 → 5.8.4

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.
@@ -1,71 +1,75 @@
1
- 8=FIX.4.4|9=0000117|35=A|49=init-comp|56=accept-comp|34=1|57=fix|52=20260415-11:40:31.094|98=0|108=30|141=Y|553=js-client|554=pwd-client|10=090|
2
- 8=FIX.4.4|9=0000117|35=A|49=accept-comp|56=init-comp|34=1|57=fix|52=20260415-11:40:31.100|98=0|108=30|141=Y|553=js-server|554=pwd-server|10=126|
3
- 8=FIX.4.4|9=0000079|35=2|49=init-comp|56=accept-comp|34=2|57=fix|52=20260415-11:40:31.101|7=1|16=1|10=214|
4
- 8=FIX.4.4|9=0000112|35=4|49=accept-comp|56=init-comp|34=1|57=fix|43=Y|52=20260415-11:40:31.106|122=20260415-11:40:31.106|123=Y|36=2|10=069|
5
- 8=FIX.4.4|9=0000075|35=5|49=init-comp|56=accept-comp|34=3|57=fix|52=20260415-11:40:33.104|58=5|10=196|
6
- 8=FIX.4.4|9=0000075|35=5|49=accept-comp|56=init-comp|34=2|57=fix|52=20260415-11:40:33.105|58=5|10=196|
7
- 8=FIX.4.4|9=0000117|35=A|49=init-comp|56=accept-comp|34=1|57=fix|52=20260415-11:40:35.911|98=0|108=30|141=Y|553=js-client|554=pwd-client|10=092|
8
- 8=FIX.4.4|9=0000117|35=A|49=accept-comp|56=init-comp|34=1|57=fix|52=20260415-11:40:35.913|98=0|108=30|141=Y|553=js-server|554=pwd-server|10=142|
9
- 8=FIX.4.4|9=0000079|35=2|49=init-comp|56=accept-comp|34=2|57=fix|52=20260415-11:40:35.913|7=1|16=0|10=228|
10
- 8=FIX.4.4|9=0000112|35=4|49=accept-comp|56=init-comp|34=1|57=fix|43=Y|52=20260415-11:40:35.916|122=20260415-11:40:35.916|123=Y|36=2|10=095|
11
- 8=FIX.4.4|9=0000075|35=5|49=init-comp|56=accept-comp|34=3|57=fix|52=20260415-11:40:37.914|58=5|10=209|
12
- 8=FIX.4.4|9=0000075|35=5|49=accept-comp|56=init-comp|34=2|57=fix|52=20260415-11:40:37.915|58=5|10=209|
13
- 8=FIX.4.4|9=0000117|35=A|49=init-comp|56=accept-comp|34=1|57=fix|52=20260415-11:40:40.385|98=0|108=30|141=Y|553=js-client|554=pwd-client|10=093|
14
- 8=FIX.4.4|9=0000117|35=A|49=accept-comp|56=init-comp|34=1|57=fix|52=20260415-11:40:40.386|98=0|108=30|141=Y|553=js-server|554=pwd-server|10=142|
15
- 8=FIX.4.4|9=0000117|35=A|49=init-comp|56=accept-comp|34=2|57=fix|52=20260415-11:40:40.387|98=0|108=30|141=Y|553=js-client|554=pwd-client|10=096|
16
- 8=FIX.4.4|9=0000117|35=A|49=init-comp|56=accept-comp|34=1|57=fix|52=20260415-11:40:40.907|98=0|108=30|141=Y|553=js-client|554=pwd-client|10=093|
17
- 8=FIX.4.4|9=0000117|35=A|49=accept-comp|56=init-comp|34=1|57=fix|52=20260415-11:40:40.908|98=0|108=30|141=Y|553=js-server|554=pwd-server|10=142|
18
- 8=FIX.4.4|9=0000075|35=5|49=init-comp|56=accept-comp|34=2|57=fix|52=20260415-11:40:41.910|58=5|10=199|
19
- 8=FIX.4.4|9=0000075|35=5|49=accept-comp|56=init-comp|34=2|57=fix|52=20260415-11:40:41.911|58=5|10=200|
20
- 8=FIX.4.4|9=0000117|35=A|49=init-comp|56=accept-comp|34=1|57=fix|52=20260415-11:40:44.639|98=0|108=30|141=Y|553=js-client|554=pwd-client|10=099|
21
- 8=FIX.4.4|9=0000117|35=A|49=accept-comp|56=init-comp|34=1|57=fix|52=20260415-11:40:44.641|98=0|108=30|141=Y|553=js-server|554=pwd-server|10=140|
22
- 8=FIX.4.4|9=0000075|35=5|49=init-comp|56=accept-comp|34=2|57=fix|52=20260415-11:40:45.642|58=5|10=205|
23
- 8=FIX.4.4|9=0000075|35=5|49=accept-comp|56=init-comp|34=2|57=fix|52=20260415-11:40:45.643|58=5|10=206|
24
- 8=FIX.4.4|9=0000117|35=A|49=init-comp|56=accept-comp|34=1|57=fix|52=20260415-11:40:48.417|98=0|108=30|141=Y|553=js-client|554=pwd-client|10=097|
25
- 8=FIX.4.4|9=0000117|35=A|49=accept-comp|56=init-comp|34=1|57=fix|52=20260415-11:40:48.419|98=0|108=30|141=Y|553=js-server|554=pwd-server|10=147|
26
- 8=FIX.4.4|9=0000075|35=5|49=init-comp|56=accept-comp|34=0|57=fix|52=20260415-11:40:49.420|58=5|10=201|
27
- 8=FIX.4.4|9=0000117|35=A|49=init-comp|56=accept-comp|34=1|57=fix|52=20260415-11:40:51.895|98=0|108=30|141=Y|553=js-client|554=pwd-client|10=101|
28
- 8=FIX.4.4|9=0000117|35=A|49=accept-comp|56=init-comp|34=5|57=fix|52=20260415-11:40:51.896|98=0|108=30|141=Y|553=js-server|554=pwd-server|10=154|
29
- 8=FIX.4.4|9=0000075|35=5|49=init-comp|56=accept-comp|34=2|57=fix|52=20260415-11:40:52.897|58=5|10=215|
30
- 8=FIX.4.4|9=0000075|35=5|49=accept-comp|56=init-comp|34=2|57=fix|52=20260415-11:40:52.898|58=5|10=216|
31
- 8=FIX.4.4|9=0000110|35=A|49=init-comp|56=accept-comp|34=1|57=fix|52=20260415-11:40:55.362|98=0|141=Y|553=js-client|554=pwd-client|10=162|
32
- 8=FIX.4.4|9=0000125|35=3|49=accept-comp|56=init-comp|34=1|57=fix|52=20260415-11:40:55.363|45=1|372=A|373=1|58=msgType A missing required tag 108|10=252|
33
- 8=FIX.4.4|9=0000117|35=A|49=init-comp|56=accept-comp|34=1|57=fix|52=20260415-11:40:59.986|98=0|108=30|141=Y|553=js-client|554=pwd-client|10=110|
34
- 8=FIX.4.4|9=0000117|35=A|49=accept-comp|56=init-comp|34=1|57=fix|52=20260415-11:40:59.988|98=0|108=30|141=Y|553=js-server|554=pwd-server|10=160|
1
+ 8=FIX.4.4|9=0000117|35=A|49=init-comp|56=accept-comp|34=1|57=fix|52=20260627-11:27:29.697|98=0|108=30|141=Y|553=js-client|554=pwd-client|10=116|
2
+ 8=FIX.4.4|9=0000117|35=A|49=accept-comp|56=init-comp|34=1|57=fix|52=20260627-11:27:29.702|98=0|108=30|141=Y|553=js-server|554=pwd-server|10=151|
3
+ 8=FIX.4.4|9=0000079|35=2|49=init-comp|56=accept-comp|34=2|57=fix|52=20260627-11:27:29.702|7=1|16=1|10=238|
4
+ 8=FIX.4.4|9=0000112|35=4|49=accept-comp|56=init-comp|34=1|57=fix|43=Y|52=20260627-11:27:29.707|122=20260627-11:27:29.707|123=Y|36=2|10=117|
5
+ 8=FIX.4.4|9=0000075|35=5|49=init-comp|56=accept-comp|34=3|57=fix|52=20260627-11:27:31.705|58=5|10=211|
6
+ 8=FIX.4.4|9=0000075|35=5|49=accept-comp|56=init-comp|34=2|57=fix|52=20260627-11:27:31.707|58=5|10=212|
7
+ 8=FIX.4.4|9=0000117|35=A|49=init-comp|56=accept-comp|34=1|57=fix|52=20260627-11:27:34.546|98=0|108=30|141=Y|553=js-client|554=pwd-client|10=105|
8
+ 8=FIX.4.4|9=0000117|35=A|49=accept-comp|56=init-comp|34=1|57=fix|52=20260627-11:27:34.548|98=0|108=30|141=Y|553=js-server|554=pwd-server|10=155|
9
+ 8=FIX.4.4|9=0000079|35=2|49=init-comp|56=accept-comp|34=2|57=fix|52=20260627-11:27:34.549|7=1|16=0|10=242|
10
+ 8=FIX.4.4|9=0000112|35=4|49=accept-comp|56=init-comp|34=1|57=fix|43=Y|52=20260627-11:27:34.551|122=20260627-11:27:34.551|123=Y|36=2|10=103|
11
+ 8=FIX.4.4|9=0000075|35=5|49=init-comp|56=accept-comp|34=3|57=fix|52=20260627-11:27:36.550|58=5|10=214|
12
+ 8=FIX.4.4|9=0000075|35=5|49=accept-comp|56=init-comp|34=2|57=fix|52=20260627-11:27:36.551|58=5|10=214|
13
+ 8=FIX.4.4|9=0000117|35=A|49=init-comp|56=accept-comp|34=1|57=fix|52=20260627-11:27:39.042|98=0|108=30|141=Y|553=js-client|554=pwd-client|10=101|
14
+ 8=FIX.4.4|9=0000117|35=A|49=accept-comp|56=init-comp|34=1|57=fix|52=20260627-11:27:39.044|98=0|108=30|141=Y|553=js-server|554=pwd-server|10=151|
15
+ 8=FIX.4.4|9=0000117|35=A|49=init-comp|56=accept-comp|34=2|57=fix|52=20260627-11:27:39.044|98=0|108=30|141=Y|553=js-client|554=pwd-client|10=104|
16
+ 8=FIX.4.4|9=0000117|35=A|49=init-comp|56=accept-comp|34=1|57=fix|52=20260627-11:27:39.579|98=0|108=30|141=Y|553=js-client|554=pwd-client|10=116|
17
+ 8=FIX.4.4|9=0000117|35=A|49=accept-comp|56=init-comp|34=1|57=fix|52=20260627-11:27:39.580|98=0|108=30|141=Y|553=js-server|554=pwd-server|10=156|
18
+ 8=FIX.4.4|9=0000075|35=5|49=init-comp|56=accept-comp|34=2|57=fix|52=20260627-11:27:40.582|58=5|10=213|
19
+ 8=FIX.4.4|9=0000075|35=5|49=accept-comp|56=init-comp|34=2|57=fix|52=20260627-11:27:40.583|58=5|10=214|
20
+ 8=FIX.4.4|9=0000117|35=A|49=init-comp|56=accept-comp|34=1|57=fix|52=20260627-11:27:43.284|98=0|108=30|141=Y|553=js-client|554=pwd-client|10=104|
21
+ 8=FIX.4.4|9=0000117|35=A|49=accept-comp|56=init-comp|34=1|57=fix|52=20260627-11:27:43.285|98=0|108=30|141=Y|553=js-server|554=pwd-server|10=153|
22
+ 8=FIX.4.4|9=0000075|35=5|49=init-comp|56=accept-comp|34=2|57=fix|52=20260627-11:27:44.287|58=5|10=219|
23
+ 8=FIX.4.4|9=0000075|35=5|49=accept-comp|56=init-comp|34=2|57=fix|52=20260627-11:27:44.288|58=5|10=220|
24
+ 8=FIX.4.4|9=0000117|35=A|49=init-comp|56=accept-comp|34=1|57=fix|52=20260627-11:27:47.058|98=0|108=30|141=Y|553=js-client|554=pwd-client|10=107|
25
+ 8=FIX.4.4|9=0000117|35=A|49=accept-comp|56=init-comp|34=1|57=fix|52=20260627-11:27:47.059|98=0|108=30|141=Y|553=js-server|554=pwd-server|10=156|
26
+ 8=FIX.4.4|9=0000075|35=5|49=init-comp|56=accept-comp|34=0|57=fix|52=20260627-11:27:48.061|58=5|10=211|
27
+ 8=FIX.4.4|9=0000117|35=A|49=init-comp|56=accept-comp|34=1|57=fix|52=20260627-11:27:50.563|98=0|108=30|141=Y|553=js-client|554=pwd-client|10=102|
28
+ 8=FIX.4.4|9=0000117|35=A|49=accept-comp|56=init-comp|34=5|57=fix|52=20260627-11:27:50.564|98=0|108=30|141=Y|553=js-server|554=pwd-server|10=155|
29
+ 8=FIX.4.4|9=0000075|35=5|49=init-comp|56=accept-comp|34=2|57=fix|52=20260627-11:27:51.565|58=5|10=216|
30
+ 8=FIX.4.4|9=0000075|35=5|49=accept-comp|56=init-comp|34=2|57=fix|52=20260627-11:27:51.566|58=5|10=217|
31
+ 8=FIX.4.4|9=0000110|35=A|49=init-comp|56=accept-comp|34=1|57=fix|52=20260627-11:27:54.044|98=0|141=Y|553=js-client|554=pwd-client|10=168|
32
+ 8=FIX.4.4|9=0000125|35=3|49=accept-comp|56=init-comp|34=1|57=fix|52=20260627-11:27:54.045|45=1|372=A|373=1|58=msgType A missing required tag 108|10=002|
33
+ 8=FIX.4.4|9=0000117|35=A|49=init-comp|56=accept-comp|34=1|57=fix|52=20260627-11:27:58.638|98=0|108=30|141=Y|553=js-client|554=pwd-client|10=113|
34
+ 8=FIX.4.4|9=0000117|35=A|49=accept-comp|56=init-comp|34=1|57=fix|52=20260627-11:27:58.640|98=0|108=30|141=Y|553=js-server|554=pwd-server|10=154|
35
35
  8=FIX4.4|9=0000136|35=ZZ|49=init-comp|56=accept-comp|34=2|57=fix|52=20180902-12:25:28.980|98=0|108=30|141=Y|553=js-client|554=pwd-client|10=177|
36
- 8=FIX.4.4|9=0000111|35=3|49=accept-comp|56=init-comp|34=2|57=fix|52=20260415-11:40:59.990|45=2|372=ZZ|373=11|58=msgType ZZ unknown|10=154|
37
- 8=FIX.4.4|9=0000075|35=5|49=init-comp|56=accept-comp|34=3|57=fix|52=20260415-11:41:01.989|58=5|10=213|
38
- 8=FIX.4.4|9=0000075|35=5|49=accept-comp|56=init-comp|34=3|57=fix|52=20260415-11:41:01.991|58=5|10=206|
39
- 8=FIX.4.4|9=0000117|35=A|49=init-comp|56=accept-comp|34=1|57=fix|52=20260415-11:41:04.741|98=0|108=30|141=Y|553=js-client|554=pwd-client|10=090|
40
- 8=FIX.4.4|9=0000117|35=A|49=accept-comp|56=init-comp|34=1|57=fix|52=20260415-11:41:04.743|98=0|108=30|141=Y|553=js-server|554=pwd-server|10=140|
36
+ 8=FIX.4.4|9=0000111|35=3|49=accept-comp|56=init-comp|34=2|57=fix|52=20260627-11:27:58.641|45=2|372=ZZ|373=11|58=msgType ZZ unknown|10=156|
37
+ 8=FIX.4.4|9=0000075|35=5|49=init-comp|56=accept-comp|34=3|57=fix|52=20260627-11:28:00.642|58=5|10=208|
38
+ 8=FIX.4.4|9=0000075|35=5|49=accept-comp|56=init-comp|34=3|57=fix|52=20260627-11:28:00.643|58=5|10=209|
39
+ 8=FIX.4.4|9=0000117|35=A|49=init-comp|56=accept-comp|34=1|57=fix|52=20260627-11:28:03.398|98=0|108=30|141=Y|553=js-client|554=pwd-client|10=107|
40
+ 8=FIX.4.4|9=0000117|35=A|49=accept-comp|56=init-comp|34=1|57=fix|52=20260627-11:28:03.400|98=0|108=30|141=Y|553=js-server|554=pwd-server|10=139|
41
41
  8=FIX4.4|9=0000123|35=0|49=init-comp|56=accept-comp|34=2|57=fix|52=20180902-12:25:59.161|999=Sun, 02 Sep 2018 12:25:59 GMT|10=95|
42
- 8=FIX.4.4|9=0000146|35=3|49=accept-comp|56=init-comp|34=2|57=fix|52=20260415-11:41:04.745|45=2|372=0|373=5|58=msgType 0 checksum failed. received = 95 computed = 143|10=064|
43
- 8=FIX.4.4|9=0000075|35=5|49=init-comp|56=accept-comp|34=3|57=fix|52=20260415-11:41:06.744|58=5|10=207|
44
- 8=FIX.4.4|9=0000075|35=5|49=accept-comp|56=init-comp|34=3|57=fix|52=20260415-11:41:06.745|58=5|10=208|
45
- 8=FIX.4.4|9=0000117|35=A|49=init-comp|56=accept-comp|34=1|57=fix|52=20260415-11:41:13.228|98=0|108=30|141=Y|553=js-client|554=pwd-client|10=090|
46
- 8=FIX.4.4|9=0000117|35=A|49=accept-comp|56=init-comp|34=1|57=fix|52=20260415-11:41:13.229|98=0|108=30|141=Y|553=js-server|554=pwd-server|10=139|
42
+ 8=FIX.4.4|9=0000146|35=3|49=accept-comp|56=init-comp|34=2|57=fix|52=20260627-11:28:03.403|45=2|372=0|373=5|58=msgType 0 checksum failed. received = 95 computed = 143|10=064|
43
+ 8=FIX.4.4|9=0000075|35=5|49=init-comp|56=accept-comp|34=3|57=fix|52=20260627-11:28:05.403|58=5|10=208|
44
+ 8=FIX.4.4|9=0000075|35=5|49=accept-comp|56=init-comp|34=3|57=fix|52=20260627-11:28:05.404|58=5|10=209|
45
+ 8=FIX.4.4|9=0000117|35=A|49=init-comp|56=accept-comp|34=1|57=fix|52=20260627-11:28:11.905|98=0|108=30|141=Y|553=js-client|554=pwd-client|10=100|
46
+ 8=FIX.4.4|9=0000117|35=A|49=accept-comp|56=init-comp|34=1|57=fix|52=20260627-11:28:11.906|98=0|108=30|141=Y|553=js-server|554=pwd-server|10=149|
47
47
  8=FIX4.4|9=0000123|35=0|49=init-not!|56=accept-comp|34=2|57=fix|52=20180902-12:25:59.161|112=Sun, 02 Sep 2018 12:25:59 GMT|10=95|
48
- 8=FIX.4.4|9=0000145|35=3|49=accept-comp|56=init-comp|34=2|57=fix|52=20260415-11:41:13.230|45=2|372=0|373=5|58=msgType 0 checksum failed. received = 95 computed = 59|10=010|
49
- 8=FIX.4.4|9=0000075|35=5|49=init-comp|56=accept-comp|34=3|57=fix|52=20260415-11:41:15.229|58=5|10=205|
50
- 8=FIX.4.4|9=0000075|35=5|49=accept-comp|56=init-comp|34=3|57=fix|52=20260415-11:41:15.230|58=5|10=197|
51
- 8=FIX.4.4|9=0000116|35=A|49=init-comp|56=accept-comp|34=1|57=fix|52=20260415-11:41:17.695|98=0|108=2|141=Y|553=js-client|554=pwd-client|10=052|
52
- 8=FIX.4.4|9=0000117|35=A|49=accept-comp|56=init-comp|34=1|57=fix|52=20260415-11:41:17.696|98=0|108=30|141=Y|553=js-server|554=pwd-server|10=151|
53
- 8=FIX.4.4|9=0000104|35=0|49=init-comp|56=accept-comp|34=2|57=fix|52=20260415-11:41:19.702|112=Wed, 15 Apr 2026 11:41:19 GMT|10=126|
54
- 8=FIX.4.4|9=0000104|35=0|49=init-comp|56=accept-comp|34=3|57=fix|52=20260415-11:41:21.707|112=Wed, 15 Apr 2026 11:41:21 GMT|10=118|
55
- 8=FIX.4.4|9=0000075|35=5|49=init-comp|56=accept-comp|34=4|57=fix|52=20260415-11:41:23.696|58=5|10=213|
56
- 8=FIX.4.4|9=0000075|35=5|49=accept-comp|56=init-comp|34=2|57=fix|52=20260415-11:41:23.697|58=5|10=212|
57
- 8=FIX.4.4|9=0000117|35=A|49=init-comp|56=accept-comp|34=1|57=fix|52=20260415-11:41:26.158|98=0|108=30|141=Y|553=js-client|554=pwd-client|10=096|
58
- 8=FIX.4.4|9=0000116|35=A|49=accept-comp|56=init-comp|34=1|57=fix|52=20260415-11:41:26.159|98=0|108=2|141=Y|553=js-server|554=pwd-server|10=095|
59
- 8=FIX.4.4|9=0000104|35=0|49=accept-comp|56=init-comp|34=2|57=fix|52=20260415-11:41:28.163|112=Wed, 15 Apr 2026 11:41:28 GMT|10=127|
60
- 8=FIX.4.4|9=0000104|35=0|49=accept-comp|56=init-comp|34=3|57=fix|52=20260415-11:41:30.167|112=Wed, 15 Apr 2026 11:41:30 GMT|10=118|
61
- 8=FIX.4.4|9=0000104|35=0|49=accept-comp|56=init-comp|34=4|57=fix|52=20260415-11:41:32.170|112=Wed, 15 Apr 2026 11:41:32 GMT|10=117|
62
- 8=FIX.4.4|9=0000075|35=5|49=init-comp|56=accept-comp|34=2|57=fix|52=20260415-11:41:34.159|58=5|10=207|
63
- 8=FIX.4.4|9=0000075|35=5|49=accept-comp|56=init-comp|34=5|57=fix|52=20260415-11:41:34.160|58=5|10=202|
64
- 8=FIX.4.4|9=0000116|35=A|49=init-comp|56=accept-comp|34=1|57=fix|52=20260415-11:41:36.865|98=0|108=2|141=Y|553=js-client|554=pwd-client|10=052|
65
- 8=FIX.4.4|9=0000116|35=A|49=accept-comp|56=init-comp|34=1|57=fix|52=20260415-11:41:36.866|98=0|108=5|141=Y|553=js-server|554=pwd-server|10=104|
66
- 8=FIX.4.4|9=0000104|35=0|49=init-comp|56=accept-comp|34=2|57=fix|52=20260415-11:41:38.871|112=Wed, 15 Apr 2026 11:41:38 GMT|10=135|
67
- 8=FIX.4.4|9=0000104|35=0|49=init-comp|56=accept-comp|34=3|57=fix|52=20260415-11:41:40.874|112=Wed, 15 Apr 2026 11:41:40 GMT|10=125|
68
- 8=FIX.4.4|9=0000104|35=0|49=accept-comp|56=init-comp|34=2|57=fix|52=20260415-11:41:41.876|112=Wed, 15 Apr 2026 11:41:41 GMT|10=128|
69
- 8=FIX.4.4|9=0000104|35=0|49=init-comp|56=accept-comp|34=4|57=fix|52=20260415-11:41:42.878|112=Wed, 15 Apr 2026 11:41:42 GMT|10=134|
70
- 8=FIX.4.4|9=0000075|35=5|49=init-comp|56=accept-comp|34=5|57=fix|52=20260415-11:41:44.867|58=5|10=217|
71
- 8=FIX.4.4|9=0000075|35=5|49=accept-comp|56=init-comp|34=3|57=fix|52=20260415-11:41:44.868|58=5|10=216|
48
+ 8=FIX.4.4|9=0000145|35=3|49=accept-comp|56=init-comp|34=2|57=fix|52=20260627-11:28:11.907|45=2|372=0|373=5|58=msgType 0 checksum failed. received = 95 computed = 59|10=029|
49
+ 8=FIX.4.4|9=0000075|35=5|49=init-comp|56=accept-comp|34=3|57=fix|52=20260627-11:28:13.906|58=5|10=215|
50
+ 8=FIX.4.4|9=0000075|35=5|49=accept-comp|56=init-comp|34=3|57=fix|52=20260627-11:28:13.907|58=5|10=216|
51
+ 8=FIX.4.4|9=0000116|35=A|49=init-comp|56=accept-comp|34=1|57=fix|52=20260627-11:28:16.395|98=0|108=2|141=Y|553=js-client|554=pwd-client|10=058|
52
+ 8=FIX.4.4|9=0000117|35=A|49=accept-comp|56=init-comp|34=1|57=fix|52=20260627-11:28:16.396|98=0|108=30|141=Y|553=js-server|554=pwd-server|10=157|
53
+ 8=FIX.4.4|9=0000104|35=0|49=init-comp|56=accept-comp|34=2|57=fix|52=20260627-11:28:18.402|112=Sat, 27 Jun 2026 11:28:18 GMT|10=157|
54
+ 8=FIX.4.4|9=0000104|35=0|49=init-comp|56=accept-comp|34=3|57=fix|52=20260627-11:28:20.404|112=Sat, 27 Jun 2026 11:28:20 GMT|10=146|
55
+ 8=FIX.4.4|9=0000075|35=5|49=init-comp|56=accept-comp|34=4|57=fix|52=20260627-11:28:22.398|58=5|10=221|
56
+ 8=FIX.4.4|9=0000075|35=5|49=accept-comp|56=init-comp|34=2|57=fix|52=20260627-11:28:22.399|58=5|10=220|
57
+ 8=FIX.4.4|9=0000117|35=A|49=init-comp|56=accept-comp|34=1|57=fix|52=20260627-11:28:24.881|98=0|108=30|141=Y|553=js-client|554=pwd-client|10=107|
58
+ 8=FIX.4.4|9=0000116|35=A|49=accept-comp|56=init-comp|34=1|57=fix|52=20260627-11:28:24.882|98=0|108=2|141=Y|553=js-server|554=pwd-server|10=106|
59
+ 8=FIX.4.4|9=0000104|35=0|49=accept-comp|56=init-comp|34=2|57=fix|52=20260627-11:28:26.887|112=Sat, 27 Jun 2026 11:28:26 GMT|10=172|
60
+ 8=FIX.4.4|9=0000104|35=0|49=accept-comp|56=init-comp|34=3|57=fix|52=20260627-11:28:28.892|112=Sat, 27 Jun 2026 11:28:28 GMT|10=173|
61
+ 8=FIX.4.4|9=0000104|35=0|49=accept-comp|56=init-comp|34=4|57=fix|52=20260627-11:28:30.895|112=Sat, 27 Jun 2026 11:28:30 GMT|10=163|
62
+ 8=FIX.4.4|9=0000075|35=5|49=init-comp|56=accept-comp|34=2|57=fix|52=20260627-11:28:32.883|58=5|10=219|
63
+ 8=FIX.4.4|9=0000075|35=5|49=accept-comp|56=init-comp|34=5|57=fix|52=20260627-11:28:32.884|58=5|10=223|
64
+ 8=FIX.4.4|9=0000116|35=A|49=init-comp|56=accept-comp|34=1|57=fix|52=20260627-11:28:35.599|98=0|108=2|141=Y|553=js-client|554=pwd-client|10=065|
65
+ 8=FIX.4.4|9=0000116|35=A|49=accept-comp|56=init-comp|34=1|57=fix|52=20260627-11:28:35.600|98=0|108=5|141=Y|553=js-server|554=pwd-server|10=099|
66
+ 8=FIX.4.4|9=0000104|35=0|49=init-comp|56=accept-comp|34=2|57=fix|52=20260627-11:28:37.604|112=Sat, 27 Jun 2026 11:28:37 GMT|10=163|
67
+ 8=FIX.4.4|9=0000104|35=0|49=init-comp|56=accept-comp|34=3|57=fix|52=20260627-11:28:39.608|112=Sat, 27 Jun 2026 11:28:39 GMT|10=172|
68
+ 8=FIX.4.4|9=0000104|35=0|49=accept-comp|56=init-comp|34=2|57=fix|52=20260627-11:28:40.609|112=Sat, 27 Jun 2026 11:28:40 GMT|10=156|
69
+ 8=FIX.4.4|9=0000104|35=0|49=init-comp|56=accept-comp|34=4|57=fix|52=20260627-11:28:41.611|112=Sat, 27 Jun 2026 11:28:41 GMT|10=153|
70
+ 8=FIX.4.4|9=0000075|35=5|49=init-comp|56=accept-comp|34=5|57=fix|52=20260627-11:28:43.602|58=5|10=213|
71
+ 8=FIX.4.4|9=0000075|35=5|49=accept-comp|56=init-comp|34=3|57=fix|52=20260627-11:28:43.602|58=5|10=211|
72
+ 8=FIX.4.4|9=0000117|35=A|49=init-comp|56=accept-comp|34=1|57=fix|52=20260627-11:30:11.370|98=0|108=30|141=Y|553=js-client|554=pwd-client|10=089|
73
+ 8=FIX.4.4|9=0000117|35=A|49=accept-comp|56=init-comp|34=1|57=fix|52=20260627-11:30:11.380|98=0|108=30|141=Y|553=js-server|554=pwd-server|10=138|
74
+ 8=FIX.4.4|9=0000075|35=5|49=init-comp|56=accept-comp|34=2|57=fix|52=20260627-11:30:12.383|58=5|10=205|
75
+ 8=FIX.4.4|9=0000075|35=5|49=accept-comp|56=init-comp|34=2|57=fix|52=20260627-11:30:12.385|58=5|10=207|
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "jspurefix",
3
- "version": "5.6.2",
3
+ "version": "5.8.4",
4
4
  "description": "pure node js fix engine",
5
5
  "keywords": [
6
6
  "typescript",
@@ -44,8 +44,8 @@
44
44
  "repo44-bench-tc": "node dist/jsfix-cmd jsfix-cmd --dict=repo44 --fix=data/examples/FIX.4.4/repo/trade-capture/fix.txt --benchmark --delimiter=\"|\" --repeats=30000",
45
45
  "repo44-bench-sd": "node dist/jsfix-cmd --dict=repo44 --fix=data/examples/FIX.4.4/repo/security-definition/fix.txt --benchmark --delimiter=\"|\" --repeats=150000",
46
46
  "repo44-bench-lo": "node dist/jsfix-cmd --dict=repo44 --fix=data/examples/FIX.4.4/repo/logon/fix.txt --benchmark --delimiter=\"|\" --repeats=250000",
47
- "qf-bench-lo": "node dist/jsfix-cmd --session=data/session/test-initiator.json --fix=data/examples/FIX.4.4/quickfix/logon/fix.txt --benchmark --delimiter=\"|\" --repeats=250000",
48
- "qf-bench-hb": "node dist/jsfix-cmd --session=data/session/test-initiator.json --fix=data/examples/FIX.4.4/quickfix/heartbeat/fix.txt --benchmark --delimiter=\"|\" --repeats=250000",
47
+ "qf-bench-lo": "node dist/jsfix-cmd --session=data/session/test-initiator.json --fix=data/examples/FIX.4.4/quickfix/logon/fix.txt --benchmark --delimiter=\"|\" --repeats=1000000",
48
+ "qf-bench-hb": "node dist/jsfix-cmd --session=data/session/test-initiator.json --fix=data/examples/FIX.4.4/quickfix/heartbeat/fix.txt --benchmark --delimiter=\"|\" --repeats=1000000",
49
49
  "fixml": "node dist/jsfix-cmd --dict=repofixml",
50
50
  "tcp-qf-md": "node dist/sample/tcp/qf-md/app",
51
51
  "tcp-tls-tc": "node dist/sample/tcp/tls-trade-capture/app",
@@ -74,9 +74,9 @@
74
74
  "author": "",
75
75
  "license": "MIT",
76
76
  "dependencies": {
77
- "@jest/globals": "^30.3.0",
77
+ "@jest/globals": "^30.4.1",
78
78
  "align-text": "^1.0.2",
79
- "axios": "^1.14.0",
79
+ "axios": "^1.16.1",
80
80
  "express": "^5.2.1",
81
81
  "lodash": "^4.18.1",
82
82
  "mathjs": "^15.2.0",
@@ -87,10 +87,9 @@
87
87
  "reflect-metadata": "^0.2.2",
88
88
  "sax": "^1.6.0",
89
89
  "tsyringe": "^4.10.0",
90
- "uuid": "^9.0.1",
91
90
  "winston": "^3.19.0",
92
91
  "word-wrap": "^1.2.5",
93
- "yauzl": "^3.3.0"
92
+ "yauzl": "^3.3.1"
94
93
  },
95
94
  "devDependencies": {
96
95
  "@stylistic/eslint-plugin": "^5.10.0",
@@ -100,17 +99,16 @@
100
99
  "@types/lodash": "^4.17.24",
101
100
  "@types/mathjs": "^9.4.2",
102
101
  "@types/minimist": "^1.2.5",
103
- "@types/node": "^25.5.2",
102
+ "@types/node": "^25.9.1",
104
103
  "@types/request-promise-native": "^1.0.21",
105
104
  "@types/sax": "^1.2.7",
106
- "@types/uuid": "^9.0.8",
107
105
  "@types/winston": "^2.4.4",
108
106
  "eslint": "^9.39.4",
109
107
  "eslint-config-love": "^151.0.0",
110
- "jest": "^30.3.0",
108
+ "jest": "^30.4.2",
111
109
  "madge": "^8.0.0",
112
110
  "standard": "^17.1.2",
113
- "ts-jest": "^29.4.9",
114
- "typescript": "^6.0.2"
111
+ "ts-jest": "^29.4.11",
112
+ "typescript": "^6.0.3"
115
113
  }
116
114
  }
@@ -30,7 +30,8 @@ export class AsciiParser extends MsgParser {
30
30
 
31
31
  constructor (@inject(DITokens.IJsFixConfig) public readonly config: IJsFixConfig,
32
32
  @inject(DITokens.readStream) public readonly readStream: Readable | null,
33
- @inject(DITokens.ParseBuffer) protected readonly receivingBuffer: ElasticBuffer) {
33
+ @inject(DITokens.ParseBuffer) protected readonly receivingBuffer: ElasticBuffer,
34
+ @inject(DITokens.maxMessageLen) public readonly maxMessageLen: number = 160 * 1024) {
34
35
  super()
35
36
 
36
37
  this.delimiter = config.delimiter ?? AsciiChars.Soh
@@ -38,7 +39,7 @@ export class AsciiParser extends MsgParser {
38
39
  this.id = AsciiParser.nextId++
39
40
  this.segmentParser = config.sessionContainer.resolve<AsciiSegmentParser>(AsciiSegmentParser)
40
41
  this.state = config.sessionContainer.resolve<AsciiParserState>(AsciiParserState)
41
- this.state.locations = new Tags(this.receivingBuffer.size / 10)
42
+ this.state.locations = new Tags(this.receivingBuffer.size / 10, this.maxMessageLen)
42
43
  this.state.definitions = this.config.definitions
43
44
  this.state.beginMessage()
44
45
  if (readStream !== null) {
@@ -8,10 +8,11 @@ export class Tags {
8
8
  public static readonly CheckSumTag: number = MsgTag.CheckSum
9
9
  public static readonly MsgTag: number = MsgTag.MsgType
10
10
 
11
- public tagPos: TagPos[] = new Array(this.startingLength)
11
+ public tagPos: TagPos[] = new Array(Math.min(this.startingLength, this.maxLength))
12
12
  public nextTagPos: number = 0
13
13
 
14
- constructor (public readonly startingLength: number = 30 * 1000) {
14
+ constructor (public readonly startingLength: number = 30 * 1000,
15
+ public readonly maxLength: number = 1024 * 1024) {
15
16
  }
16
17
 
17
18
  public static toJSType (tagType: TagType): string {
@@ -101,7 +102,7 @@ export class Tags {
101
102
 
102
103
  public clone (): Tags {
103
104
  const next: number = this.nextTagPos
104
- const cloned: Tags = new Tags(next)
105
+ const cloned: Tags = new Tags(next, this.maxLength)
105
106
  cloned.nextTagPos = next
106
107
  for (let i = 0; i < next; ++i) {
107
108
  cloned.tagPos[i] = this.tagPos[i].clone()
@@ -128,7 +129,10 @@ export class Tags {
128
129
  }
129
130
 
130
131
  private expand (): void {
131
- const size = this.tagPos.length * 2
132
+ if (this.tagPos.length >= this.maxLength) {
133
+ throw new Error(`tag count exceeds maximum of ${this.maxLength} - message too large or stream misaligned`)
134
+ }
135
+ const size = Math.min(this.tagPos.length * 2, this.maxLength)
132
136
  const tagPos = new Array(size)
133
137
  for (let i = 0; i < this.tagPos.length; ++i) {
134
138
  tagPos[i] = this.tagPos[i]
@@ -101,7 +101,9 @@ export abstract class AsciiSession extends FixSession {
101
101
  this.sessionLogger.info('logon with ResetSeqNumFlag=Y, accepting regardless of sequence')
102
102
  const seqNo = view.getTyped(MsgTag.MsgSeqNum) as number
103
103
  this.sessionState.lastPeerMsgSeqNum = seqNo
104
- this.coordinator.onMessageReceived(seqNo, false)
104
+ this.coordinator.onMessageReceived(seqNo, false).catch((e: Error) => {
105
+ this.sessionLogger.warning(`coordinator.onMessageReceived store persist failed: ${e.message}`)
106
+ })
105
107
  return true
106
108
  }
107
109
  }
@@ -119,7 +121,9 @@ export abstract class AsciiSession extends FixSession {
119
121
  const possDupFlag = view.getTyped(MsgTag.PossDupFlag) as boolean | undefined
120
122
  if (possDupFlag === true) {
121
123
  this.sessionLogger.debug(`message '${msgType}' has PossDupFlag=Y, bypassing sequence check`)
122
- this.coordinator.onMessageReceived(seqNo, true)
124
+ this.coordinator.onMessageReceived(seqNo, true).catch((e: Error) => {
125
+ this.sessionLogger.warning(`coordinator.onMessageReceived store persist failed: ${e.message}`)
126
+ })
123
127
  return true
124
128
  }
125
129
  // Check if this is a delayed message that fills a pending gap range.
@@ -127,7 +131,9 @@ export abstract class AsciiSession extends FixSession {
127
131
  const inPendingGapRange = pendingRequests.some(p => seqNo >= p.begin && seqNo <= p.end)
128
132
  if (inPendingGapRange) {
129
133
  this.sessionLogger.info(`accepting delayed message seq ${seqNo} (in pending gap range)`)
130
- this.coordinator.onMessageReceived(seqNo, false)
134
+ this.coordinator.onMessageReceived(seqNo, false).catch((e: Error) => {
135
+ this.sessionLogger.warning(`coordinator.onMessageReceived store persist failed: ${e.message}`)
136
+ })
131
137
  return true
132
138
  }
133
139
  // serious problem ... drop immediately
@@ -171,7 +177,9 @@ export abstract class AsciiSession extends FixSession {
171
177
 
172
178
  // Update sequence state regardless — the gap-triggering message is valid.
173
179
  state.lastPeerMsgSeqNum = seqNo
174
- this.coordinator.onMessageReceived(seqNo, false)
180
+ this.coordinator.onMessageReceived(seqNo, false).catch((e: Error) => {
181
+ this.sessionLogger.warning(`coordinator.onMessageReceived store persist failed: ${e.message}`)
182
+ })
175
183
 
176
184
  // Logon and ResendRequest were already fully handled above (peerLogon / onResendRequest).
177
185
  // Don't return true for them — they must not be dispatched to onSessionMsg again.
@@ -182,7 +190,9 @@ export abstract class AsciiSession extends FixSession {
182
190
  } else {
183
191
  ret = true
184
192
  state.lastPeerMsgSeqNum = seqNo
185
- this.coordinator.onMessageReceived(seqNo, false)
193
+ this.coordinator.onMessageReceived(seqNo, false).catch((e: Error) => {
194
+ this.sessionLogger.warning(`coordinator.onMessageReceived store persist failed: ${e.message}`)
195
+ })
186
196
  }
187
197
 
188
198
  // Reset timeout recovery on successful message receipt
@@ -320,6 +330,28 @@ export abstract class AsciiSession extends FixSession {
320
330
  this.sessionLogger.info('coordinator reset transient state for reconnect')
321
331
  }
322
332
 
333
+ protected override async onPreLogon (): Promise<void> {
334
+ if (!this.config.description.ResetSeqNumFlag) return
335
+
336
+ this.sessionLogger.info('initiator has ResetSeqNumFlag=Y, resetting sequences before logon')
337
+ await this.coordinator.resetSession('initiator ResetSeqNumFlag=Y')
338
+
339
+ const transmitter = this.transport?.transmitter as AsciiMsgTransmitter | undefined
340
+ if (transmitter) {
341
+ transmitter.msgSeqNum = this.coordinator.nextSenderSeqNum
342
+ }
343
+ this.sessionState.lastPeerMsgSeqNum = this.coordinator.lastProcessedPeerSeqNum
344
+
345
+ if (this.store) {
346
+ this.store.clear().catch((e: Error) => {
347
+ this.sessionLogger.warning(`store.clear failed: ${e.message}`)
348
+ })
349
+ this.resender = new FixMsgAsciiStoreResend(this.store, this.config)
350
+ }
351
+
352
+ this.sessionLogger.info(`pre-logon reset complete: encoderSeqNum=${transmitter?.msgSeqNum}`)
353
+ }
354
+
323
355
  protected override txOnEncoded (msgType: string, data: string, hdr: ILooseObject): void {
324
356
  super.txOnEncoded(msgType, data, hdr)
325
357
  // Store the encoded message in the session store for recovery/resend
@@ -419,7 +451,9 @@ export abstract class AsciiSession extends FixSession {
419
451
  // expect newSeqNo to be the next message's sequence number.
420
452
  this.sessionState.lastPeerMsgSeqNum = newSeqNo - 1
421
453
  // Notify coordinator to update expected target and clear pending resend requests
422
- this.coordinator.onGapFillReceived(gapFillSeq, newSeqNo)
454
+ this.coordinator.onGapFillReceived(gapFillSeq, newSeqNo).catch((e: Error) => {
455
+ this.sessionLogger.warning(`coordinator.onGapFillReceived store persist failed: ${e.message}`)
456
+ })
423
457
  break
424
458
  }
425
459
 
@@ -504,7 +538,9 @@ export abstract class AsciiSession extends FixSession {
504
538
 
505
539
  // Fire-and-forget the async coordinator call (store updates resolve on next microtask)
506
540
  // but compute the expected values synchronously since we know the reset outcome
507
- this.coordinator.handlePeerReset(peerSeqNum, weAlsoReset)
541
+ this.coordinator.handlePeerReset(peerSeqNum, weAlsoReset).catch((e: Error) => {
542
+ this.sessionLogger.warning(`coordinator.handlePeerReset store persist failed: ${e.message}`)
543
+ })
508
544
  if (transmitter) {
509
545
  transmitter.msgSeqNum = savedEncoderSeqNum ?? 1
510
546
  }
@@ -512,7 +548,9 @@ export abstract class AsciiSession extends FixSession {
512
548
 
513
549
  // Recreate resender with empty store
514
550
  if (this.store) {
515
- this.store.clear()
551
+ this.store.clear().catch((e: Error) => {
552
+ this.sessionLogger.warning(`store.clear failed: ${e.message}`)
553
+ })
516
554
  this.resender = new FixMsgAsciiStoreResend(this.store, this.config)
517
555
  }
518
556
  logger.info(`reset complete: encoderSeqNum=${transmitter?.msgSeqNum}, lastPeerMsgSeqNum=${peerSeqNum}`)
@@ -535,14 +573,18 @@ export abstract class AsciiSession extends FixSession {
535
573
  if (weReset && resetSeqNumFlag !== true) {
536
574
  logger.info('acceptor sending ResetSeqNumFlag=Y (peer sent N), resetting sequences')
537
575
  // Fire-and-forget async coordinator call, set values synchronously
538
- this.coordinator.resetAsAcceptor()
576
+ this.coordinator.resetAsAcceptor().catch((e: Error) => {
577
+ this.sessionLogger.warning(`coordinator.resetAsAcceptor store persist failed: ${e.message}`)
578
+ })
539
579
  const transmitter = this.transport?.transmitter as AsciiMsgTransmitter | undefined
540
580
  if (transmitter) {
541
581
  transmitter.msgSeqNum = 1
542
582
  }
543
583
  this.sessionState.lastPeerMsgSeqNum = 0
544
584
  if (this.store) {
545
- this.store.clear()
585
+ this.store.clear().catch((e: Error) => {
586
+ this.sessionLogger.warning(`store.clear failed: ${e.message}`)
587
+ })
546
588
  this.resender = new FixMsgAsciiStoreResend(this.store, this.config)
547
589
  }
548
590
  }
@@ -7,7 +7,7 @@ import { FixDuplex, StringDuplex, StringDuplexTraits } from '../duplex'
7
7
  import express = require('express')
8
8
  import * as bodyParser from 'body-parser'
9
9
  import * as http from 'http'
10
- import { v4 as uuidv4 } from 'uuid'
10
+ import { randomUUID } from 'crypto'
11
11
  import { inject, injectable } from 'tsyringe'
12
12
  import { DITokens } from '../../runtime/di-tokens'
13
13
 
@@ -54,7 +54,7 @@ export class HttpAcceptor extends FixAcceptor {
54
54
  private saveTransport (tid: number, transport: MsgTransport): string {
55
55
  this.transports[tid] = transport
56
56
  const keys: string[] = Object.keys(this.transports)
57
- const a = uuidv4()
57
+ const a = randomUUID()
58
58
  this.keys.set(a, transport)
59
59
  this.logger.info(`new transport id = ${tid} token = ${a} created total transports = ${keys.length}`)
60
60
  this.emit('transport', transport)
@@ -95,6 +95,11 @@ export abstract class FixSession extends events.EventEmitter {
95
95
 
96
96
  private async waitPromise (): Promise<number> {
97
97
  const logger = this.sessionLogger
98
+ if (this.initiator) {
99
+ // Hook for subclasses to reset sequences when ResetSeqNumFlag=Y is configured —
100
+ // must run after the store is loaded, before sendLogon stamps a seq num.
101
+ await this.onPreLogon()
102
+ }
98
103
  return await new Promise<any>((resolve, reject) => {
99
104
  if (this.initiator) {
100
105
  logger.debug(`initiator sending logon state = ${this.stateString()}`)
@@ -398,6 +403,15 @@ export abstract class FixSession extends events.EventEmitter {
398
403
  // Override in subclass to reset coordinator/transient state
399
404
  }
400
405
 
406
+ /**
407
+ * Called for initiators after the store is loaded but before the Logon is sent.
408
+ * Override to reset sequences/store when ResetSeqNumFlag=Y so the Logon goes out
409
+ * with MsgSeqNum=1 instead of the recovered sender seq num.
410
+ */
411
+ protected async onPreLogon (): Promise<void> {
412
+ // Default no-op
413
+ }
414
+
401
415
  protected stop (error: Error | null = null): void {
402
416
  if (this.sessionState.state === SessionState.Stopped) {
403
417
  return