jspurefix 5.10.1 → 5.10.3
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.
- package/ATDL_PLAN.md +109 -0
- package/WORKLOG.md +108 -13
- package/dist/dictionary/compiler/standard-snippet.js +2 -2
- package/dist/dictionary/compiler/standard-snippet.js.map +1 -1
- package/dist/jsfix-cmd.js +2 -2
- package/dist/jsfix-cmd.js.map +1 -1
- package/dist/runtime/session-container.js +11 -8
- package/dist/runtime/session-container.js.map +1 -1
- package/dist/runtime/session-launcher.d.ts +2 -0
- package/dist/runtime/session-launcher.js +10 -1
- package/dist/runtime/session-launcher.js.map +1 -1
- package/dist/transport/duplex/http-duplex.d.ts +1 -1
- package/dist/transport/duplex/http-duplex.js +2 -5
- package/dist/transport/duplex/http-duplex.js.map +1 -1
- package/docs/acceptor.md +32 -0
- package/jsfix.test_client.txt +62 -62
- package/jsfix.test_server.txt +72 -72
- package/package.json +1 -3
- package/src/dictionary/compiler/standard-snippet.ts +2 -2
- package/src/jsfix-cmd.ts +2 -2
- package/src/runtime/session-container.ts +12 -4
- package/src/runtime/session-launcher.ts +29 -1
- package/src/transport/duplex/http-duplex.ts +4 -2
package/jsfix.test_server.txt
CHANGED
|
@@ -1,75 +1,75 @@
|
|
|
1
|
-
8=FIX.4.4|9=0000117|35=A|49=init-comp|56=accept-comp|34=1|57=fix|52=
|
|
2
|
-
8=FIX.4.4|9=0000117|35=A|49=accept-comp|56=init-comp|34=1|57=fix|52=
|
|
3
|
-
8=FIX.4.4|9=0000079|35=2|49=init-comp|56=accept-comp|34=2|57=fix|52=
|
|
4
|
-
8=FIX.4.4|9=0000112|35=4|49=accept-comp|56=init-comp|34=1|57=fix|43=Y|52=
|
|
5
|
-
8=FIX.4.4|9=0000075|35=5|49=init-comp|56=accept-comp|34=3|57=fix|52=
|
|
6
|
-
8=FIX.4.4|9=0000075|35=5|49=accept-comp|56=init-comp|34=2|57=fix|52=
|
|
7
|
-
8=FIX.4.4|9=0000117|35=A|49=init-comp|56=accept-comp|34=1|57=fix|52=
|
|
8
|
-
8=FIX.4.4|9=0000117|35=A|49=accept-comp|56=init-comp|34=1|57=fix|52=
|
|
9
|
-
8=FIX.4.4|9=0000079|35=2|49=init-comp|56=accept-comp|34=2|57=fix|52=
|
|
10
|
-
8=FIX.4.4|9=0000112|35=4|49=accept-comp|56=init-comp|34=1|57=fix|43=Y|52=
|
|
11
|
-
8=FIX.4.4|9=0000075|35=5|49=init-comp|56=accept-comp|34=3|57=fix|52=
|
|
12
|
-
8=FIX.4.4|9=0000075|35=5|49=accept-comp|56=init-comp|34=2|57=fix|52=
|
|
13
|
-
8=FIX.4.4|9=0000117|35=A|49=init-comp|56=accept-comp|34=1|57=fix|52=
|
|
14
|
-
8=FIX.4.4|9=0000117|35=A|49=accept-comp|56=init-comp|34=1|57=fix|52=
|
|
15
|
-
8=FIX.4.4|9=0000117|35=A|49=init-comp|56=accept-comp|34=2|57=fix|52=
|
|
16
|
-
8=FIX.4.4|9=0000117|35=A|49=init-comp|56=accept-comp|34=1|57=fix|52=
|
|
17
|
-
8=FIX.4.4|9=0000117|35=A|49=accept-comp|56=init-comp|34=1|57=fix|52=
|
|
18
|
-
8=FIX.4.4|9=0000075|35=5|49=init-comp|56=accept-comp|34=2|57=fix|52=
|
|
19
|
-
8=FIX.4.4|9=0000075|35=5|49=accept-comp|56=init-comp|34=2|57=fix|52=
|
|
20
|
-
8=FIX.4.4|9=0000117|35=A|49=init-comp|56=accept-comp|34=1|57=fix|52=
|
|
21
|
-
8=FIX.4.4|9=0000117|35=A|49=accept-comp|56=init-comp|34=1|57=fix|52=
|
|
22
|
-
8=FIX.4.4|9=0000075|35=5|49=init-comp|56=accept-comp|34=2|57=fix|52=
|
|
23
|
-
8=FIX.4.4|9=0000075|35=5|49=accept-comp|56=init-comp|34=2|57=fix|52=
|
|
24
|
-
8=FIX.4.4|9=0000117|35=A|49=init-comp|56=accept-comp|34=1|57=fix|52=
|
|
25
|
-
8=FIX.4.4|9=0000117|35=A|49=accept-comp|56=init-comp|34=1|57=fix|52=
|
|
26
|
-
8=FIX.4.4|9=0000075|35=5|49=init-comp|56=accept-comp|34=0|57=fix|52=
|
|
27
|
-
8=FIX.4.4|9=0000117|35=A|49=init-comp|56=accept-comp|34=1|57=fix|52=
|
|
28
|
-
8=FIX.4.4|9=0000117|35=A|49=accept-comp|56=init-comp|34=5|57=fix|52=
|
|
29
|
-
8=FIX.4.4|9=0000075|35=5|49=init-comp|56=accept-comp|34=2|57=fix|52=
|
|
30
|
-
8=FIX.4.4|9=0000075|35=5|49=accept-comp|56=init-comp|34=2|57=fix|52=
|
|
31
|
-
8=FIX.4.4|9=0000110|35=A|49=init-comp|56=accept-comp|34=1|57=fix|52=
|
|
32
|
-
8=FIX.4.4|9=0000125|35=3|49=accept-comp|56=init-comp|34=1|57=fix|52=
|
|
33
|
-
8=FIX.4.4|9=0000117|35=A|49=init-comp|56=accept-comp|34=1|57=fix|52=
|
|
34
|
-
8=FIX.4.4|9=0000117|35=A|49=accept-comp|56=init-comp|34=1|57=fix|52=
|
|
1
|
+
8=FIX.4.4|9=0000117|35=A|49=init-comp|56=accept-comp|34=1|57=fix|52=20260810-16:58:32.371|98=0|108=30|141=Y|553=js-client|554=pwd-client|10=102|
|
|
2
|
+
8=FIX.4.4|9=0000117|35=A|49=accept-comp|56=init-comp|34=1|57=fix|52=20260810-16:58:32.376|98=0|108=30|141=Y|553=js-server|554=pwd-server|10=155|
|
|
3
|
+
8=FIX.4.4|9=0000079|35=2|49=init-comp|56=accept-comp|34=2|57=fix|52=20260810-16:58:32.377|7=1|16=1|10=243|
|
|
4
|
+
8=FIX.4.4|9=0000112|35=4|49=accept-comp|56=init-comp|34=1|57=fix|43=Y|52=20260810-16:58:32.381|122=20260810-16:58:32.381|123=Y|36=2|10=107|
|
|
5
|
+
8=FIX.4.4|9=0000075|35=5|49=init-comp|56=accept-comp|34=3|57=fix|52=20260810-16:58:34.379|58=5|10=224|
|
|
6
|
+
8=FIX.4.4|9=0000075|35=5|49=accept-comp|56=init-comp|34=2|57=fix|52=20260810-16:58:34.380|58=5|10=215|
|
|
7
|
+
8=FIX.4.4|9=0000117|35=A|49=init-comp|56=accept-comp|34=1|57=fix|52=20260810-16:58:37.184|98=0|108=30|141=Y|553=js-client|554=pwd-client|10=109|
|
|
8
|
+
8=FIX.4.4|9=0000117|35=A|49=accept-comp|56=init-comp|34=1|57=fix|52=20260810-16:58:37.186|98=0|108=30|141=Y|553=js-server|554=pwd-server|10=159|
|
|
9
|
+
8=FIX.4.4|9=0000079|35=2|49=init-comp|56=accept-comp|34=2|57=fix|52=20260810-16:58:37.187|7=1|16=0|10=246|
|
|
10
|
+
8=FIX.4.4|9=0000112|35=4|49=accept-comp|56=init-comp|34=1|57=fix|43=Y|52=20260810-16:58:37.189|122=20260810-16:58:37.189|123=Y|36=2|10=129|
|
|
11
|
+
8=FIX.4.4|9=0000075|35=5|49=init-comp|56=accept-comp|34=3|57=fix|52=20260810-16:58:39.189|58=5|10=228|
|
|
12
|
+
8=FIX.4.4|9=0000075|35=5|49=accept-comp|56=init-comp|34=2|57=fix|52=20260810-16:58:39.190|58=5|10=219|
|
|
13
|
+
8=FIX.4.4|9=0000117|35=A|49=init-comp|56=accept-comp|34=1|57=fix|52=20260810-16:58:41.673|98=0|108=30|141=Y|553=js-client|554=pwd-client|10=107|
|
|
14
|
+
8=FIX.4.4|9=0000117|35=A|49=accept-comp|56=init-comp|34=1|57=fix|52=20260810-16:58:41.674|98=0|108=30|141=Y|553=js-server|554=pwd-server|10=156|
|
|
15
|
+
8=FIX.4.4|9=0000117|35=A|49=init-comp|56=accept-comp|34=2|57=fix|52=20260810-16:58:41.675|98=0|108=30|141=Y|553=js-client|554=pwd-client|10=110|
|
|
16
|
+
8=FIX.4.4|9=0000117|35=A|49=init-comp|56=accept-comp|34=1|57=fix|52=20260810-16:58:42.221|98=0|108=30|141=Y|553=js-client|554=pwd-client|10=097|
|
|
17
|
+
8=FIX.4.4|9=0000117|35=A|49=accept-comp|56=init-comp|34=1|57=fix|52=20260810-16:58:42.222|98=0|108=30|141=Y|553=js-server|554=pwd-server|10=146|
|
|
18
|
+
8=FIX.4.4|9=0000075|35=5|49=init-comp|56=accept-comp|34=2|57=fix|52=20260810-16:58:43.224|58=5|10=212|
|
|
19
|
+
8=FIX.4.4|9=0000075|35=5|49=accept-comp|56=init-comp|34=2|57=fix|52=20260810-16:58:43.225|58=5|10=213|
|
|
20
|
+
8=FIX.4.4|9=0000117|35=A|49=init-comp|56=accept-comp|34=1|57=fix|52=20260810-16:58:45.999|98=0|108=30|141=Y|553=js-client|554=pwd-client|10=122|
|
|
21
|
+
8=FIX.4.4|9=0000117|35=A|49=accept-comp|56=init-comp|34=1|57=fix|52=20260810-16:58:46.001|98=0|108=30|141=Y|553=js-server|554=pwd-server|10=145|
|
|
22
|
+
8=FIX.4.4|9=0000075|35=5|49=init-comp|56=accept-comp|34=2|57=fix|52=20260810-16:58:47.003|58=5|10=211|
|
|
23
|
+
8=FIX.4.4|9=0000075|35=5|49=accept-comp|56=init-comp|34=2|57=fix|52=20260810-16:58:47.004|58=5|10=212|
|
|
24
|
+
8=FIX.4.4|9=0000117|35=A|49=init-comp|56=accept-comp|34=1|57=fix|52=20260810-16:58:49.778|98=0|108=30|141=Y|553=js-client|554=pwd-client|10=121|
|
|
25
|
+
8=FIX.4.4|9=0000117|35=A|49=accept-comp|56=init-comp|34=1|57=fix|52=20260810-16:58:49.780|98=0|108=30|141=Y|553=js-server|554=pwd-server|10=162|
|
|
26
|
+
8=FIX.4.4|9=0000075|35=5|49=init-comp|56=accept-comp|34=0|57=fix|52=20260810-16:58:50.781|58=5|10=216|
|
|
27
|
+
8=FIX.4.4|9=0000117|35=A|49=init-comp|56=accept-comp|34=1|57=fix|52=20260810-16:58:53.307|98=0|108=30|141=Y|553=js-client|554=pwd-client|10=104|
|
|
28
|
+
8=FIX.4.4|9=0000117|35=A|49=accept-comp|56=init-comp|34=5|57=fix|52=20260810-16:58:53.308|98=0|108=30|141=Y|553=js-server|554=pwd-server|10=157|
|
|
29
|
+
8=FIX.4.4|9=0000075|35=5|49=init-comp|56=accept-comp|34=2|57=fix|52=20260810-16:58:54.310|58=5|10=210|
|
|
30
|
+
8=FIX.4.4|9=0000075|35=5|49=accept-comp|56=init-comp|34=2|57=fix|52=20260810-16:58:54.311|58=5|10=211|
|
|
31
|
+
8=FIX.4.4|9=0000110|35=A|49=init-comp|56=accept-comp|34=1|57=fix|52=20260810-16:58:56.796|98=0|141=Y|553=js-client|554=pwd-client|10=187|
|
|
32
|
+
8=FIX.4.4|9=0000125|35=3|49=accept-comp|56=init-comp|34=1|57=fix|52=20260810-16:58:56.797|45=1|372=A|373=1|58=msgType A missing required tag 108|10=021|
|
|
33
|
+
8=FIX.4.4|9=0000117|35=A|49=init-comp|56=accept-comp|34=1|57=fix|52=20260810-16:59:01.408|98=0|108=30|141=Y|553=js-client|554=pwd-client|10=100|
|
|
34
|
+
8=FIX.4.4|9=0000117|35=A|49=accept-comp|56=init-comp|34=1|57=fix|52=20260810-16:59:01.410|98=0|108=30|141=Y|553=js-server|554=pwd-server|10=141|
|
|
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=
|
|
37
|
-
8=FIX.4.4|9=0000075|35=5|49=init-comp|56=accept-comp|34=3|57=fix|52=
|
|
38
|
-
8=FIX.4.4|9=0000075|35=5|49=accept-comp|56=init-comp|34=3|57=fix|52=
|
|
39
|
-
8=FIX.4.4|9=0000117|35=A|49=init-comp|56=accept-comp|34=1|57=fix|52=
|
|
40
|
-
8=FIX.4.4|9=0000117|35=A|49=accept-comp|56=init-comp|34=1|57=fix|52=
|
|
36
|
+
8=FIX.4.4|9=0000111|35=3|49=accept-comp|56=init-comp|34=2|57=fix|52=20260810-16:59:01.412|45=2|372=ZZ|373=11|58=msgType ZZ unknown|10=144|
|
|
37
|
+
8=FIX.4.4|9=0000075|35=5|49=init-comp|56=accept-comp|34=3|57=fix|52=20260810-16:59:03.411|58=5|10=208|
|
|
38
|
+
8=FIX.4.4|9=0000075|35=5|49=accept-comp|56=init-comp|34=3|57=fix|52=20260810-16:59:03.412|58=5|10=209|
|
|
39
|
+
8=FIX.4.4|9=0000117|35=A|49=init-comp|56=accept-comp|34=1|57=fix|52=20260810-16:59:06.170|98=0|108=30|141=Y|553=js-client|554=pwd-client|10=101|
|
|
40
|
+
8=FIX.4.4|9=0000117|35=A|49=accept-comp|56=init-comp|34=1|57=fix|52=20260810-16:59:06.171|98=0|108=30|141=Y|553=js-server|554=pwd-server|10=150|
|
|
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=
|
|
43
|
-
8=FIX.4.4|9=0000075|35=5|49=init-comp|56=accept-comp|34=3|57=fix|52=
|
|
44
|
-
8=FIX.4.4|9=0000075|35=5|49=accept-comp|56=init-comp|34=3|57=fix|52=
|
|
45
|
-
8=FIX.4.4|9=0000117|35=A|49=init-comp|56=accept-comp|34=1|57=fix|52=
|
|
46
|
-
8=FIX.4.4|9=0000117|35=A|49=accept-comp|56=init-comp|34=1|57=fix|52=
|
|
42
|
+
8=FIX.4.4|9=0000146|35=3|49=accept-comp|56=init-comp|34=2|57=fix|52=20260810-16:59:06.173|45=2|372=0|373=5|58=msgType 0 checksum failed. received = 95 computed = 143|10=074|
|
|
43
|
+
8=FIX.4.4|9=0000075|35=5|49=init-comp|56=accept-comp|34=3|57=fix|52=20260810-16:59:08.173|58=5|10=218|
|
|
44
|
+
8=FIX.4.4|9=0000075|35=5|49=accept-comp|56=init-comp|34=3|57=fix|52=20260810-16:59:08.174|58=5|10=219|
|
|
45
|
+
8=FIX.4.4|9=0000117|35=A|49=init-comp|56=accept-comp|34=1|57=fix|52=20260810-16:59:14.686|98=0|108=30|141=Y|553=js-client|554=pwd-client|10=112|
|
|
46
|
+
8=FIX.4.4|9=0000117|35=A|49=accept-comp|56=init-comp|34=1|57=fix|52=20260810-16:59:14.687|98=0|108=30|141=Y|553=js-server|554=pwd-server|10=161|
|
|
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=
|
|
49
|
-
8=FIX.4.4|9=0000075|35=5|49=init-comp|56=accept-comp|34=3|57=fix|52=
|
|
50
|
-
8=FIX.4.4|9=0000075|35=5|49=accept-comp|56=init-comp|34=3|57=fix|52=
|
|
51
|
-
8=FIX.4.4|9=0000116|35=A|49=init-comp|56=accept-comp|34=1|57=fix|52=
|
|
52
|
-
8=FIX.4.4|9=0000117|35=A|49=accept-comp|56=init-comp|34=1|57=fix|52=
|
|
53
|
-
8=FIX.4.4|9=0000104|35=0|49=init-comp|56=accept-comp|34=2|57=fix|52=
|
|
54
|
-
8=FIX.4.4|9=0000104|35=0|49=init-comp|56=accept-comp|34=3|57=fix|52=
|
|
55
|
-
8=FIX.4.4|9=0000075|35=5|49=init-comp|56=accept-comp|34=4|57=fix|52=
|
|
56
|
-
8=FIX.4.4|9=0000075|35=5|49=accept-comp|56=init-comp|34=2|57=fix|52=
|
|
57
|
-
8=FIX.4.4|9=0000117|35=A|49=init-comp|56=accept-comp|34=1|57=fix|52=
|
|
58
|
-
8=FIX.4.4|9=0000116|35=A|49=accept-comp|56=init-comp|34=1|57=fix|52=
|
|
59
|
-
8=FIX.4.4|9=0000104|35=0|49=accept-comp|56=init-comp|34=2|57=fix|52=
|
|
60
|
-
8=FIX.4.4|9=0000104|35=0|49=accept-comp|56=init-comp|34=3|57=fix|52=
|
|
61
|
-
8=FIX.4.4|9=0000104|35=0|49=accept-comp|56=init-comp|34=4|57=fix|52=
|
|
62
|
-
8=FIX.4.4|9=0000075|35=5|49=init-comp|56=accept-comp|34=2|57=fix|52=
|
|
63
|
-
8=FIX.4.4|9=0000075|35=5|49=accept-comp|56=init-comp|34=5|57=fix|52=
|
|
64
|
-
8=FIX.4.4|9=0000116|35=A|49=init-comp|56=accept-comp|34=1|57=fix|52=
|
|
65
|
-
8=FIX.4.4|9=0000116|35=A|49=accept-comp|56=init-comp|34=1|57=fix|52=
|
|
66
|
-
8=FIX.4.4|9=0000104|35=0|49=init-comp|56=accept-comp|34=2|57=fix|52=
|
|
67
|
-
8=FIX.4.4|9=0000104|35=0|49=init-comp|56=accept-comp|34=3|57=fix|52=
|
|
68
|
-
8=FIX.4.4|9=0000104|35=0|49=accept-comp|56=init-comp|34=2|57=fix|52=
|
|
69
|
-
8=FIX.4.4|9=0000104|35=0|49=init-comp|56=accept-comp|34=4|57=fix|52=
|
|
70
|
-
8=FIX.4.4|9=0000075|35=5|49=init-comp|56=accept-comp|34=5|57=fix|52=
|
|
71
|
-
8=FIX.4.4|9=0000075|35=5|49=accept-comp|56=init-comp|34=3|57=fix|52=
|
|
72
|
-
8=FIX.4.4|9=0000117|35=A|49=init-comp|56=accept-comp|34=1|57=fix|52=
|
|
73
|
-
8=FIX.4.4|9=0000117|35=A|49=accept-comp|56=init-comp|34=1|57=fix|52=
|
|
74
|
-
8=FIX.4.4|9=0000075|35=5|49=init-comp|56=accept-comp|34=2|57=fix|52=
|
|
75
|
-
8=FIX.4.4|9=0000075|35=5|49=accept-comp|56=init-comp|34=2|57=fix|52=
|
|
48
|
+
8=FIX.4.4|9=0000145|35=3|49=accept-comp|56=init-comp|34=2|57=fix|52=20260810-16:59:14.689|45=2|372=0|373=5|58=msgType 0 checksum failed. received = 95 computed = 59|10=042|
|
|
49
|
+
8=FIX.4.4|9=0000075|35=5|49=init-comp|56=accept-comp|34=3|57=fix|52=20260810-16:59:16.689|58=5|10=229|
|
|
50
|
+
8=FIX.4.4|9=0000075|35=5|49=accept-comp|56=init-comp|34=3|57=fix|52=20260810-16:59:16.690|58=5|10=221|
|
|
51
|
+
8=FIX.4.4|9=0000116|35=A|49=init-comp|56=accept-comp|34=1|57=fix|52=20260810-16:59:19.174|98=0|108=2|141=Y|553=js-client|554=pwd-client|10=059|
|
|
52
|
+
8=FIX.4.4|9=0000117|35=A|49=accept-comp|56=init-comp|34=1|57=fix|52=20260810-16:59:19.175|98=0|108=30|141=Y|553=js-server|554=pwd-server|10=158|
|
|
53
|
+
8=FIX.4.4|9=0000104|35=0|49=init-comp|56=accept-comp|34=2|57=fix|52=20260810-16:59:21.180|112=Mon, 10 Aug 2026 16:59:21 GMT|10=138|
|
|
54
|
+
8=FIX.4.4|9=0000104|35=0|49=init-comp|56=accept-comp|34=3|57=fix|52=20260810-16:59:23.184|112=Mon, 10 Aug 2026 16:59:23 GMT|10=147|
|
|
55
|
+
8=FIX.4.4|9=0000075|35=5|49=init-comp|56=accept-comp|34=4|57=fix|52=20260810-16:59:25.176|58=5|10=221|
|
|
56
|
+
8=FIX.4.4|9=0000075|35=5|49=accept-comp|56=init-comp|34=2|57=fix|52=20260810-16:59:25.177|58=5|10=220|
|
|
57
|
+
8=FIX.4.4|9=0000117|35=A|49=init-comp|56=accept-comp|34=1|57=fix|52=20260810-16:59:27.658|98=0|108=30|141=Y|553=js-client|554=pwd-client|10=115|
|
|
58
|
+
8=FIX.4.4|9=0000116|35=A|49=accept-comp|56=init-comp|34=1|57=fix|52=20260810-16:59:27.659|98=0|108=2|141=Y|553=js-server|554=pwd-server|10=114|
|
|
59
|
+
8=FIX.4.4|9=0000104|35=0|49=accept-comp|56=init-comp|34=2|57=fix|52=20260810-16:59:29.663|112=Mon, 10 Aug 2026 16:59:29 GMT|10=160|
|
|
60
|
+
8=FIX.4.4|9=0000104|35=0|49=accept-comp|56=init-comp|34=3|57=fix|52=20260810-16:59:31.666|112=Mon, 10 Aug 2026 16:59:31 GMT|10=150|
|
|
61
|
+
8=FIX.4.4|9=0000104|35=0|49=accept-comp|56=init-comp|34=4|57=fix|52=20260810-16:59:33.669|112=Mon, 10 Aug 2026 16:59:33 GMT|10=158|
|
|
62
|
+
8=FIX.4.4|9=0000075|35=5|49=init-comp|56=accept-comp|34=2|57=fix|52=20260810-16:59:35.659|58=5|10=226|
|
|
63
|
+
8=FIX.4.4|9=0000075|35=5|49=accept-comp|56=init-comp|34=5|57=fix|52=20260810-16:59:35.660|58=5|10=221|
|
|
64
|
+
8=FIX.4.4|9=0000116|35=A|49=init-comp|56=accept-comp|34=1|57=fix|52=20260810-16:59:38.419|98=0|108=2|141=Y|553=js-client|554=pwd-client|10=062|
|
|
65
|
+
8=FIX.4.4|9=0000116|35=A|49=accept-comp|56=init-comp|34=1|57=fix|52=20260810-16:59:38.420|98=0|108=5|141=Y|553=js-server|554=pwd-server|10=105|
|
|
66
|
+
8=FIX.4.4|9=0000104|35=0|49=init-comp|56=accept-comp|34=2|57=fix|52=20260810-16:59:40.424|112=Mon, 10 Aug 2026 16:59:40 GMT|10=141|
|
|
67
|
+
8=FIX.4.4|9=0000104|35=0|49=init-comp|56=accept-comp|34=3|57=fix|52=20260810-16:59:42.428|112=Mon, 10 Aug 2026 16:59:42 GMT|10=150|
|
|
68
|
+
8=FIX.4.4|9=0000104|35=0|49=accept-comp|56=init-comp|34=2|57=fix|52=20260810-16:59:43.430|112=Mon, 10 Aug 2026 16:59:43 GMT|10=144|
|
|
69
|
+
8=FIX.4.4|9=0000104|35=0|49=init-comp|56=accept-comp|34=4|57=fix|52=20260810-16:59:44.432|112=Mon, 10 Aug 2026 16:59:44 GMT|10=150|
|
|
70
|
+
8=FIX.4.4|9=0000075|35=5|49=init-comp|56=accept-comp|34=5|57=fix|52=20260810-16:59:46.420|58=5|10=217|
|
|
71
|
+
8=FIX.4.4|9=0000075|35=5|49=accept-comp|56=init-comp|34=3|57=fix|52=20260810-16:59:46.423|58=5|10=218|
|
|
72
|
+
8=FIX.4.4|9=0000117|35=A|49=init-comp|56=accept-comp|34=1|57=fix|52=20260810-17:01:54.797|98=0|108=30|141=Y|553=js-client|554=pwd-client|10=107|
|
|
73
|
+
8=FIX.4.4|9=0000117|35=A|49=accept-comp|56=init-comp|34=1|57=fix|52=20260810-17:01:54.806|98=0|108=30|141=Y|553=js-server|554=pwd-server|10=146|
|
|
74
|
+
8=FIX.4.4|9=0000075|35=5|49=init-comp|56=accept-comp|34=2|57=fix|52=20260810-17:01:55.809|58=5|10=213|
|
|
75
|
+
8=FIX.4.4|9=0000075|35=5|49=accept-comp|56=init-comp|34=2|57=fix|52=20260810-17:01:55.811|58=5|10=206|
|
package/package.json
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "jspurefix",
|
|
3
|
-
"version": "5.10.
|
|
3
|
+
"version": "5.10.3",
|
|
4
4
|
"description": "pure node js fix engine",
|
|
5
5
|
"keywords": [
|
|
6
6
|
"typescript",
|
|
@@ -83,7 +83,6 @@
|
|
|
83
83
|
"author": "",
|
|
84
84
|
"license": "MIT",
|
|
85
85
|
"dependencies": {
|
|
86
|
-
"align-text": "^1.0.2",
|
|
87
86
|
"axios": "^1.19.0",
|
|
88
87
|
"express": "^5.2.1",
|
|
89
88
|
"lodash": "^4.18.1",
|
|
@@ -91,7 +90,6 @@
|
|
|
91
90
|
"minimist": "^1.2.8",
|
|
92
91
|
"minimist-options": "^4.1.0",
|
|
93
92
|
"moment": "^2.30.1",
|
|
94
|
-
"node-fs-extra": "^0.8.2",
|
|
95
93
|
"reflect-metadata": "^0.2.2",
|
|
96
94
|
"sax": "^1.6.1",
|
|
97
95
|
"tsyringe": "^4.10.0",
|
|
@@ -6,8 +6,8 @@ export class StandardSnippet {
|
|
|
6
6
|
}
|
|
7
7
|
|
|
8
8
|
private static rhsJustify (txt: string, width: number): string {
|
|
9
|
-
const
|
|
10
|
-
return
|
|
9
|
+
const pad = ' '.repeat(Math.max(0, width))
|
|
10
|
+
return txt.split(/\r\n|\n/).map(line => pad + line).join('\n')
|
|
11
11
|
}
|
|
12
12
|
|
|
13
13
|
// import { camelName } from './component/name_underscore'
|
package/src/jsfix-cmd.ts
CHANGED
|
@@ -21,7 +21,7 @@ import { DITokens } from './runtime/di-tokens'
|
|
|
21
21
|
import buildOptions from 'minimist-options'
|
|
22
22
|
import { QuickFixXmlFileBuilder } from './dictionary/parser/quickfix/quick-fix-xml-file-builder'
|
|
23
23
|
|
|
24
|
-
const fs = require('
|
|
24
|
+
const fs = require('fs')
|
|
25
25
|
|
|
26
26
|
const options = buildOptions({
|
|
27
27
|
dict: {
|
|
@@ -439,7 +439,7 @@ export class JsfixCmd {
|
|
|
439
439
|
|
|
440
440
|
async ensureExists (path: string): Promise<any> {
|
|
441
441
|
return await new Promise<any>((resolve, reject) => {
|
|
442
|
-
fs.
|
|
442
|
+
fs.mkdir(path, { recursive: true }, (err: Error) => {
|
|
443
443
|
if (err) {
|
|
444
444
|
reject(err)
|
|
445
445
|
} else {
|
|
@@ -8,7 +8,6 @@ import {
|
|
|
8
8
|
TcpAcceptorListener, RecoveringTcpInitiator,
|
|
9
9
|
TcpInitiatorConnector, TcpInitiator
|
|
10
10
|
} from '../transport/tcp'
|
|
11
|
-
import { HttpInitiator, HttpAcceptorListener, HttpJsonSampleAdapter } from '../transport/http'
|
|
12
11
|
import { ISessionMsgFactory, MsgTransmitter, ISessionDescription } from '../transport'
|
|
13
12
|
import { AsciiMsgTransmitter } from '../transport/ascii/ascii-msg-transmitter'
|
|
14
13
|
import { FixmlMsgTransmitter } from '../transport/fixml/fixml-msg-transmitter'
|
|
@@ -18,7 +17,15 @@ import { ElasticBuffer, MsgEncoder, MsgParser } from '../buffer'
|
|
|
18
17
|
import { AsciiParser, AsciiParserState, AsciiSegmentParser } from '../buffer/ascii'
|
|
19
18
|
import { FixmlEncoder, FiXmlParser } from '../buffer/fixml'
|
|
20
19
|
import { FixEntity } from '../transport/fix-entity'
|
|
21
|
-
import { IHttpAdapter } from '../transport/http/http-adapter'
|
|
20
|
+
import type { IHttpAdapter } from '../transport/http/http-adapter'
|
|
21
|
+
|
|
22
|
+
/**
|
|
23
|
+
* The http transport pulls in express. Only a fixml session registers it, so resolve
|
|
24
|
+
* it on demand - an ascii application should neither load that tree nor inherit it.
|
|
25
|
+
*/
|
|
26
|
+
function httpTransport (): typeof import('../transport/http') {
|
|
27
|
+
return require('../transport/http')
|
|
28
|
+
}
|
|
22
29
|
|
|
23
30
|
/**
|
|
24
31
|
* Supplies the session message factory for a description. Return null to accept the
|
|
@@ -165,10 +172,11 @@ export class SessionContainer {
|
|
|
165
172
|
useClass: FixmlEncoder
|
|
166
173
|
})
|
|
167
174
|
sessionContainer.registerInstance<ElasticBuffer>(DITokens.TransmitBuffer, new ElasticBuffer(sendSize))
|
|
168
|
-
|
|
175
|
+
const { HttpInitiator, HttpAcceptorListener, HttpJsonSampleAdapter } = httpTransport()
|
|
176
|
+
sessionContainer.register(HttpAcceptorListener, {
|
|
169
177
|
useClass: HttpAcceptorListener
|
|
170
178
|
})
|
|
171
|
-
sessionContainer.register
|
|
179
|
+
sessionContainer.register(HttpInitiator, {
|
|
172
180
|
useClass: HttpInitiator
|
|
173
181
|
})
|
|
174
182
|
if (this.isInitiator(description)) {
|
|
@@ -57,11 +57,18 @@ export abstract class SessionLauncher {
|
|
|
57
57
|
}
|
|
58
58
|
|
|
59
59
|
private acceptorEntity: FixEntity | null = null
|
|
60
|
+
private stopRequested: boolean = false
|
|
60
61
|
|
|
61
62
|
protected async getAcceptor (sessionContainer: DependencyContainer): Promise<any> {
|
|
62
63
|
if (sessionContainer.isRegistered<FixEntity>(DITokens.FixEntity)) {
|
|
63
64
|
const entity = sessionContainer.resolve<FixEntity>(DITokens.FixEntity)
|
|
64
65
|
this.acceptorEntity = entity
|
|
66
|
+
// a stop can arrive while the container is still being built - the listener has
|
|
67
|
+
// no existence yet to close, so honour the request by never opening it
|
|
68
|
+
if (this.stopRequested) {
|
|
69
|
+
this.logger.info('stop requested before the acceptor started - not listening')
|
|
70
|
+
return this.empty()
|
|
71
|
+
}
|
|
65
72
|
return entity.start()
|
|
66
73
|
} else {
|
|
67
74
|
return this.empty()
|
|
@@ -87,6 +94,27 @@ export abstract class SessionLauncher {
|
|
|
87
94
|
return null
|
|
88
95
|
}
|
|
89
96
|
|
|
97
|
+
/**
|
|
98
|
+
* Stop what this launcher started - in practice, close the acceptor's listener.
|
|
99
|
+
*
|
|
100
|
+
* An acceptor is meant to outlive any one counterparty, so nothing closes its
|
|
101
|
+
* listener on its own. That is right for a venue and wrong for an application
|
|
102
|
+
* which knows it is finished: the listening socket alone keeps node alive, long
|
|
103
|
+
* after every session has logged out and every transport has been harvested.
|
|
104
|
+
*
|
|
105
|
+
* Until now the only caller was the both-roles branch of setup() below, which an
|
|
106
|
+
* application cannot reach once it gives the acceptor a launcher of its own - the
|
|
107
|
+
* usual arrangement as soon as more than one client is involved. There was then
|
|
108
|
+
* no way to shut a listener down short of killing the process.
|
|
109
|
+
*
|
|
110
|
+
* Safe before start (the request is remembered and the listener never opens), and
|
|
111
|
+
* safe to call twice. run() resolves once the listener has closed.
|
|
112
|
+
*/
|
|
113
|
+
public stop (): void {
|
|
114
|
+
this.stopRequested = true
|
|
115
|
+
this.stopAcceptor()
|
|
116
|
+
}
|
|
117
|
+
|
|
90
118
|
public async run (): Promise<boolean> {
|
|
91
119
|
return await new Promise<any>((resolve, reject) => {
|
|
92
120
|
const logger = this.logger
|
|
@@ -188,7 +216,7 @@ export abstract class SessionLauncher {
|
|
|
188
216
|
// stop the acceptor so the process can exit cleanly.
|
|
189
217
|
await client
|
|
190
218
|
this.logger.info('client finished, stopping acceptor')
|
|
191
|
-
this.
|
|
219
|
+
this.stop()
|
|
192
220
|
return true
|
|
193
221
|
}
|
|
194
222
|
return await Promise.all([server, client])
|
|
@@ -1,7 +1,6 @@
|
|
|
1
1
|
import { FixDuplex } from './fix-duplex'
|
|
2
2
|
import { Readable, Writable } from 'stream'
|
|
3
|
-
import
|
|
4
|
-
import { IHttpAdapter } from '../http/http-adapter'
|
|
3
|
+
import type { IHttpAdapter } from '../http/http-adapter'
|
|
5
4
|
|
|
6
5
|
export class HttpDuplex extends FixDuplex {
|
|
7
6
|
public constructor (public readonly adapter: IHttpAdapter) {
|
|
@@ -29,6 +28,9 @@ export class HttpDuplex extends FixDuplex {
|
|
|
29
28
|
const adapter = this.adapter
|
|
30
29
|
const options = adapter.getOptions(data)
|
|
31
30
|
if (options) {
|
|
31
|
+
// resolved here rather than at module scope - this file is on the barrel
|
|
32
|
+
// export, and an ascii application should not load axios to reach it
|
|
33
|
+
const axios = require('axios').default
|
|
32
34
|
axios(options).then((message: any) => {
|
|
33
35
|
const body = adapter.endMessage(message)
|
|
34
36
|
forward.push(body)
|